summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTE2
-rw-r--r--ChangeLog.422943
-rw-r--r--INSTALL.REPO2
-rw-r--r--Makefile.in4
-rw-r--r--README2
-rw-r--r--admin/MAINTAINERS4
-rw-r--r--admin/admin.el5
-rw-r--r--admin/authors.el273
-rw-r--r--admin/find-gc.el2
-rw-r--r--admin/gitmerge.el2
-rwxr-xr-xadmin/merge-gnulib13
-rw-r--r--admin/notes/elpa2
-rw-r--r--admin/notes/emba40
-rw-r--r--admin/notes/git-workflow10
-rwxr-xr-xadmin/notes/tree-sitter/build-module/batch.sh29
-rwxr-xr-xadmin/notes/tree-sitter/build-module/build.sh92
-rwxr-xr-xbuild-aux/config.guess4
-rwxr-xr-xbuild-aux/config.sub6
-rwxr-xr-xbuild-aux/update-copyright4
-rw-r--r--configure.ac77
-rw-r--r--doc/emacs/files.texi26
-rw-r--r--doc/emacs/help.texi10
-rw-r--r--doc/emacs/mini.texi10
-rw-r--r--doc/emacs/misc.texi41
-rw-r--r--doc/emacs/programs.texi85
-rw-r--r--doc/emacs/text.texi4
-rw-r--r--doc/lispref/eval.texi17
-rw-r--r--doc/lispref/files.texi38
-rw-r--r--doc/lispref/functions.texi13
-rw-r--r--doc/lispref/help.texi26
-rw-r--r--doc/lispref/internals.texi21
-rw-r--r--doc/lispref/lists.texi2
-rw-r--r--doc/lispref/minibuf.texi10
-rw-r--r--doc/lispref/modes.texi7
-rw-r--r--doc/lispref/os.texi10
-rw-r--r--doc/lispref/parsing.texi50
-rw-r--r--doc/lispref/positions.texi34
-rw-r--r--doc/lispref/sequences.texi52
-rw-r--r--doc/lispref/variables.texi6
-rw-r--r--doc/misc/calc.texi13
-rw-r--r--doc/misc/cc-mode.texi38
-rw-r--r--doc/misc/erc.texi2
-rw-r--r--doc/misc/eshell.texi144
-rw-r--r--doc/misc/eww.texi7
-rw-r--r--doc/misc/flymake.texi39
-rw-r--r--doc/misc/gnus.texi23
-rw-r--r--doc/misc/mh-e.texi2
-rw-r--r--doc/misc/modus-themes.org5038
-rw-r--r--doc/misc/newsticker.texi9
-rw-r--r--doc/misc/rcirc.texi8
-rw-r--r--doc/misc/sc.texi4
-rw-r--r--doc/misc/texinfo.tex1080
-rw-r--r--doc/misc/tramp.texi135
-rw-r--r--doc/misc/trampver.texi4
-rw-r--r--etc/AUTHORS1345
-rw-r--r--etc/DEBUG22
-rw-r--r--etc/EGLOT-NEWS63
-rw-r--r--etc/ERC-NEWS177
-rw-r--r--etc/NEWS5027
-rw-r--r--etc/NEWS.294940
-rw-r--r--etc/PROBLEMS24
-rw-r--r--etc/images/symbols/README43
-rw-r--r--etc/images/symbols/check-mark_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/check-mark_16.svg3
-rw-r--r--etc/images/symbols/chevron_down_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/chevron_down_16.svg3
-rw-r--r--etc/images/symbols/chevron_left_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/chevron_left_16.svg3
-rw-r--r--etc/images/symbols/chevron_right_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/chevron_right_16.svg3
-rw-r--r--etc/images/symbols/chevron_up_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/chevron_up_16.svg3
-rw-r--r--etc/images/symbols/cross_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/cross_16.svg3
-rw-r--r--etc/images/symbols/cross_circle_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/cross_circle_16.svg3
-rw-r--r--etc/images/symbols/cross_circle_fill_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/cross_circle_fill_16.svg3
-rw-r--r--etc/images/symbols/heart_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/heart_16.svg3
-rw-r--r--etc/images/symbols/heart_fill_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/heart_fill_16.svg3
-rw-r--r--etc/images/symbols/heart_half_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/heart_half_16.svg3
-rw-r--r--etc/images/symbols/menu_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/menu_16.svg3
-rw-r--r--etc/images/symbols/minus_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/minus_16.svg3
-rw-r--r--etc/images/symbols/minus_circle_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/minus_circle_16.svg3
-rw-r--r--etc/images/symbols/minus_circle_fill_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/minus_circle_fill_16.svg3
-rw-r--r--etc/images/symbols/plus_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/plus_16.svg3
-rw-r--r--etc/images/symbols/plus_circle_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/plus_circle_16.svg3
-rw-r--r--etc/images/symbols/plus_circle_fill_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/plus_circle_fill_16.svg3
-rw-r--r--etc/images/symbols/star_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/star_16.svg3
-rw-r--r--etc/images/symbols/star_fill_16.pbmbin0 -> 41 bytes
-rw-r--r--etc/images/symbols/star_fill_16.svg3
-rw-r--r--etc/images/symbols/star_half_16.pbmbin0 -> 72 bytes
-rw-r--r--etc/images/symbols/star_half_16.svg3
-rw-r--r--etc/publicsuffix.txt158
-rw-r--r--etc/refcards/ru-refcard.tex2
-rw-r--r--etc/themes/modus-operandi-deuteranopia-theme.el419
-rw-r--r--etc/themes/modus-operandi-theme.el388
-rw-r--r--etc/themes/modus-operandi-tinted-theme.el416
-rw-r--r--etc/themes/modus-themes.el9779
-rw-r--r--etc/themes/modus-vivendi-deuteranopia-theme.el418
-rw-r--r--etc/themes/modus-vivendi-theme.el390
-rw-r--r--etc/themes/modus-vivendi-tinted-theme.el416
-rw-r--r--leim/SKK-DIC/SKK-JISYO.L4
-rw-r--r--lib-src/Makefile.in16
-rw-r--r--lib-src/ebrowse.c5
-rw-r--r--lib-src/etags.c2
-rw-r--r--lib-src/movemail.c3
-rw-r--r--lib-src/update-game-score.c6
-rw-r--r--lib/_Noreturn.h5
-rw-r--r--lib/alloca.in.h4
-rw-r--r--lib/attribute.h2
-rw-r--r--lib/binary-io.h3
-rw-r--r--lib/c-ctype.h3
-rw-r--r--lib/c-strcasecmp.c3
-rw-r--r--lib/c-strncasecmp.c3
-rw-r--r--lib/careadlinkat.c4
-rw-r--r--lib/cdefs.h40
-rw-r--r--lib/cloexec.c3
-rw-r--r--lib/close-stream.c3
-rw-r--r--lib/diffseq.h4
-rw-r--r--lib/dup2.c3
-rw-r--r--lib/file-has-acl.c121
-rw-r--r--lib/filemode.h4
-rw-r--r--lib/fpending.c6
-rw-r--r--lib/fpending.h4
-rw-r--r--lib/fsusage.c4
-rw-r--r--lib/getgroups.c3
-rw-r--r--lib/getloadavg.c4
-rw-r--r--lib/getopt-pfx-core.h2
-rw-r--r--lib/gettext.h4
-rw-r--r--lib/gettime.c3
-rw-r--r--lib/gettimeofday.c3
-rw-r--r--lib/gnulib.mk.in120
-rw-r--r--lib/group-member.c4
-rw-r--r--lib/inttypes.in.h34
-rw-r--r--lib/libc-config.h22
-rw-r--r--lib/limits.in.h17
-rw-r--r--lib/malloc.c3
-rw-r--r--lib/md5-stream.c4
-rw-r--r--lib/md5.c4
-rw-r--r--lib/md5.h4
-rw-r--r--lib/memmem.c4
-rw-r--r--lib/memrchr.c4
-rw-r--r--lib/memset_explicit.c55
-rw-r--r--lib/nanosleep.c3
-rw-r--r--lib/openat-proc.c27
-rw-r--r--lib/qcopy-acl.c36
-rw-r--r--lib/save-cwd.h4
-rw-r--r--lib/sha1.c3
-rw-r--r--lib/sig2str.c3
-rw-r--r--lib/stdalign.in.h133
-rw-r--r--lib/stdio-impl.h8
-rw-r--r--lib/stdio.in.h25
-rw-r--r--lib/stdlib.in.h144
-rw-r--r--lib/string.in.h83
-rw-r--r--lib/strtoimax.c4
-rw-r--r--lib/strtol.c4
-rw-r--r--lib/strtoll.c4
-rw-r--r--lib/sys_stat.in.h8
-rw-r--r--lib/time.in.h33
-rw-r--r--lib/time_r.c3
-rw-r--r--lib/unistd.in.h98
-rw-r--r--lib/verify.h45
-rw-r--r--lib/xalloc-oversized.h3
-rw-r--r--lisp/Makefile.in2
-rw-r--r--lisp/abbrev.el2
-rw-r--r--lisp/allout.el2
-rw-r--r--lisp/apropos.el245
-rw-r--r--lisp/bindings.el2
-rw-r--r--lisp/bs.el97
-rw-r--r--lisp/calc/calc-ext.el5
-rw-r--r--lisp/calc/calc-help.el238
-rw-r--r--lisp/calc/calc-misc.el44
-rw-r--r--lisp/calc/calc-units.el42
-rw-r--r--lisp/calc/calc.el11
-rw-r--r--lisp/calendar/appt.el2
-rw-r--r--lisp/calendar/cal-dst.el12
-rw-r--r--lisp/calendar/diary-lib.el2
-rw-r--r--lisp/calendar/iso8601.el16
-rw-r--r--lisp/calendar/lunar.el57
-rw-r--r--lisp/calendar/solar.el10
-rw-r--r--lisp/cedet/semantic.el27
-rw-r--r--lisp/cedet/semantic/complete.el2
-rw-r--r--lisp/cedet/semantic/decorate/include.el8
-rw-r--r--lisp/cedet/semantic/lex-spp.el2
-rw-r--r--lisp/cedet/semantic/lex.el2
-rw-r--r--lisp/comint.el13
-rw-r--r--lisp/cus-edit.el6
-rw-r--r--lisp/cus-start.el1
-rw-r--r--lisp/custom.el1
-rw-r--r--lisp/descr-text.el2
-rw-r--r--lisp/desktop.el2
-rw-r--r--lisp/dired-aux.el2
-rw-r--r--lisp/dired-x.el6
-rw-r--r--lisp/dired.el24
-rw-r--r--lisp/doc-view.el25
-rw-r--r--lisp/electric.el4
-rw-r--r--lisp/elide-head.el55
-rw-r--r--lisp/emacs-lisp/byte-opt.el2135
-rw-r--r--lisp/emacs-lisp/byte-run.el20
-rw-r--r--lisp/emacs-lisp/bytecomp.el329
-rw-r--r--lisp/emacs-lisp/cconv.el82
-rw-r--r--lisp/emacs-lisp/cl-extra.el2
-rw-r--r--lisp/emacs-lisp/cl-lib.el3
-rw-r--r--lisp/emacs-lisp/cl-macs.el106
-rw-r--r--lisp/emacs-lisp/comp.el28
-rw-r--r--lisp/emacs-lisp/easy-mmode.el10
-rw-r--r--lisp/emacs-lisp/edebug.el154
-rw-r--r--lisp/emacs-lisp/eieio.el5
-rw-r--r--lisp/emacs-lisp/eldoc.el203
-rw-r--r--lisp/emacs-lisp/ert-x.el4
-rw-r--r--lisp/emacs-lisp/gv.el6
-rw-r--r--lisp/emacs-lisp/lisp.el1
-rw-r--r--lisp/emacs-lisp/macroexp.el60
-rw-r--r--lisp/emacs-lisp/nadvice.el30
-rw-r--r--lisp/emacs-lisp/oclosure.el2
-rw-r--r--lisp/emacs-lisp/package-vc.el12
-rw-r--r--lisp/emacs-lisp/package.el33
-rw-r--r--lisp/emacs-lisp/pcase.el2
-rw-r--r--lisp/emacs-lisp/range.el8
-rw-r--r--lisp/emacs-lisp/regexp-opt.el1
-rw-r--r--lisp/emacs-lisp/shortdoc.el148
-rw-r--r--lisp/emacs-lisp/subr-x.el7
-rw-r--r--lisp/emacs-lisp/unsafep.el2
-rw-r--r--lisp/emulation/viper-cmd.el56
-rw-r--r--lisp/env.el1
-rw-r--r--lisp/erc/erc-backend.el127
-rw-r--r--lisp/erc/erc-button.el216
-rw-r--r--lisp/erc/erc-capab.el1
-rw-r--r--lisp/erc/erc-common.el221
-rw-r--r--lisp/erc/erc-compat.el77
-rw-r--r--lisp/erc/erc-dcc.el64
-rw-r--r--lisp/erc/erc-fill.el380
-rw-r--r--lisp/erc/erc-goodies.el272
-rw-r--r--lisp/erc/erc-ibuffer.el1
-rw-r--r--lisp/erc/erc-imenu.el23
-rw-r--r--lisp/erc/erc-log.el9
-rw-r--r--lisp/erc/erc-match.el33
-rw-r--r--lisp/erc/erc-networks.el22
-rw-r--r--lisp/erc/erc-page.el4
-rw-r--r--lisp/erc/erc-pcomplete.el2
-rw-r--r--lisp/erc/erc-sasl.el9
-rw-r--r--lisp/erc/erc-services.el1
-rw-r--r--lisp/erc/erc-sound.el1
-rw-r--r--lisp/erc/erc-speedbar.el1
-rw-r--r--lisp/erc/erc-stamp.el239
-rw-r--r--lisp/erc/erc-track.el6
-rw-r--r--lisp/erc/erc.el547
-rw-r--r--lisp/eshell/em-alias.el4
-rw-r--r--lisp/eshell/em-banner.el1
-rw-r--r--lisp/eshell/em-basic.el5
-rw-r--r--lisp/eshell/em-cmpl.el145
-rw-r--r--lisp/eshell/em-dirs.el54
-rw-r--r--lisp/eshell/em-elecslash.el2
-rw-r--r--lisp/eshell/em-extpipe.el15
-rw-r--r--lisp/eshell/em-glob.el15
-rw-r--r--lisp/eshell/em-hist.el14
-rw-r--r--lisp/eshell/em-ls.el31
-rw-r--r--lisp/eshell/em-pred.el2
-rw-r--r--lisp/eshell/em-prompt.el119
-rw-r--r--lisp/eshell/em-rebind.el7
-rw-r--r--lisp/eshell/em-smart.el5
-rw-r--r--lisp/eshell/em-term.el1
-rw-r--r--lisp/eshell/em-tramp.el3
-rw-r--r--lisp/eshell/em-unix.el23
-rw-r--r--lisp/eshell/em-xtra.el2
-rw-r--r--lisp/eshell/esh-arg.el192
-rw-r--r--lisp/eshell/esh-cmd.el331
-rw-r--r--lisp/eshell/esh-io.el180
-rw-r--r--lisp/eshell/esh-mode.el81
-rw-r--r--lisp/eshell/esh-module.el32
-rw-r--r--lisp/eshell/esh-opt.el9
-rw-r--r--lisp/eshell/esh-proc.el34
-rw-r--r--lisp/eshell/esh-util.el63
-rw-r--r--lisp/eshell/esh-var.el367
-rw-r--r--lisp/eshell/eshell.el91
-rw-r--r--lisp/files.el91
-rw-r--r--lisp/find-dired.el9
-rw-r--r--lisp/frame.el12
-rw-r--r--lisp/gnus/gnus-art.el13
-rw-r--r--lisp/gnus/gnus-eform.el13
-rw-r--r--lisp/gnus/gnus-group.el3
-rw-r--r--lisp/gnus/gnus-icalendar.el2
-rw-r--r--lisp/gnus/gnus-registry.el2
-rw-r--r--lisp/gnus/gnus-search.el89
-rw-r--r--lisp/gnus/gnus-start.el3
-rw-r--r--lisp/gnus/gnus-sum.el139
-rw-r--r--lisp/gnus/gnus.el1
-rw-r--r--lisp/gnus/mail-source.el87
-rw-r--r--lisp/gnus/message.el7
-rw-r--r--lisp/gnus/mml.el13
-rw-r--r--lisp/gnus/nndiary.el11
-rw-r--r--lisp/gnus/nnimap.el14
-rw-r--r--lisp/gnus/nnselect.el829
-rw-r--r--lisp/help-fns.el12
-rw-r--r--lisp/ibuf-ext.el93
-rw-r--r--lisp/icomplete.el14
-rw-r--r--lisp/ido.el7
-rw-r--r--lisp/image-mode.el2
-rw-r--r--lisp/image.el2
-rw-r--r--lisp/image/exif.el21
-rw-r--r--lisp/image/image-dired.el23
-rw-r--r--lisp/imenu.el25
-rw-r--r--lisp/international/emoji.el266
-rw-r--r--lisp/international/mule-conf.el14
-rw-r--r--lisp/international/textsec.el3
-rw-r--r--lisp/jsonrpc.el14
-rw-r--r--lisp/kmacro.el45
-rw-r--r--lisp/ldefs-boot.el239
-rw-r--r--lisp/macros.el16
-rw-r--r--lisp/mail/feedmail.el78
-rw-r--r--lisp/mail/mailclient.el193
-rw-r--r--lisp/mail/rmail.el18
-rw-r--r--lisp/mail/rmailout.el5
-rw-r--r--lisp/mail/smtpmail.el87
-rw-r--r--lisp/mail/yenc.el4
-rw-r--r--lisp/man.el27
-rw-r--r--lisp/mh-e/mh-identity.el2
-rw-r--r--lisp/mh-e/mh-print.el3
-rw-r--r--lisp/minibuffer.el6
-rw-r--r--lisp/mouse.el20
-rw-r--r--lisp/mwheel.el13
-rw-r--r--lisp/net/ange-ftp.el34
-rw-r--r--lisp/net/dbus.el6
-rw-r--r--lisp/net/eudcb-mab.el3
-rw-r--r--lisp/net/eww.el19
-rw-r--r--lisp/net/gnutls.el10
-rw-r--r--lisp/net/mailcap.el2
-rw-r--r--lisp/net/newst-backend.el20
-rw-r--r--lisp/net/newst-ticker.el69
-rw-r--r--lisp/net/rcirc.el21
-rw-r--r--lisp/net/sieve-manage.el26
-rw-r--r--lisp/net/soap-client.el2
-rw-r--r--lisp/net/tramp-adb.el176
-rw-r--r--lisp/net/tramp-archive.el92
-rw-r--r--lisp/net/tramp-cache.el7
-rw-r--r--lisp/net/tramp-cmds.el20
-rw-r--r--lisp/net/tramp-compat.el238
-rw-r--r--lisp/net/tramp-container.el88
-rw-r--r--lisp/net/tramp-crypt.el113
-rw-r--r--lisp/net/tramp-fuse.el64
-rw-r--r--lisp/net/tramp-gvfs.el324
-rw-r--r--lisp/net/tramp-integration.el36
-rw-r--r--lisp/net/tramp-rclone.el7
-rw-r--r--lisp/net/tramp-sh.el691
-rw-r--r--lisp/net/tramp-smb.el375
-rw-r--r--lisp/net/tramp-sshfs.el12
-rw-r--r--lisp/net/tramp-sudoedit.el228
-rw-r--r--lisp/net/tramp.el914
-rw-r--r--lisp/net/trampver.el18
-rw-r--r--lisp/org/ob-core.el3
-rw-r--r--lisp/org/org-table.el2
-rw-r--r--lisp/pcmpl-gnu.el269
-rw-r--r--lisp/pcomplete.el38
-rw-r--r--lisp/proced.el156
-rw-r--r--lisp/progmodes/antlr-mode.el2
-rw-r--r--lisp/progmodes/c-ts-mode.el39
-rw-r--r--lisp/progmodes/cc-defs.el151
-rw-r--r--lisp/progmodes/cc-engine.el858
-rw-r--r--lisp/progmodes/cc-fonts.el66
-rw-r--r--lisp/progmodes/cc-langs.el21
-rw-r--r--lisp/progmodes/cc-vars.el5
-rw-r--r--lisp/progmodes/compile.el35
-rw-r--r--lisp/progmodes/cperl-mode.el5
-rw-r--r--lisp/progmodes/csharp-mode.el5
-rw-r--r--lisp/progmodes/dockerfile-ts-mode.el4
-rw-r--r--lisp/progmodes/ebnf-otz.el3
-rw-r--r--lisp/progmodes/eglot.el692
-rw-r--r--lisp/progmodes/elisp-mode.el4
-rw-r--r--lisp/progmodes/elixir-ts-mode.el681
-rw-r--r--lisp/progmodes/flymake.el118
-rw-r--r--lisp/progmodes/gdb-mi.el69
-rw-r--r--lisp/progmodes/go-ts-mode.el50
-rw-r--r--lisp/progmodes/grep.el66
-rw-r--r--lisp/progmodes/gud.el296
-rw-r--r--lisp/progmodes/heex-ts-mode.el185
-rw-r--r--lisp/progmodes/hideif.el374
-rw-r--r--lisp/progmodes/java-ts-mode.el28
-rw-r--r--lisp/progmodes/js.el60
-rw-r--r--lisp/progmodes/json-ts-mode.el2
-rw-r--r--lisp/progmodes/make-mode.el10
-rw-r--r--lisp/progmodes/prog-mode.el35
-rw-r--r--lisp/progmodes/project.el51
-rw-r--r--lisp/progmodes/prolog.el4
-rw-r--r--lisp/progmodes/ruby-mode.el173
-rw-r--r--lisp/progmodes/ruby-ts-mode.el48
-rw-r--r--lisp/progmodes/sh-script.el29
-rw-r--r--lisp/progmodes/typescript-ts-mode.el69
-rw-r--r--lisp/progmodes/verilog-mode.el1591
-rw-r--r--lisp/progmodes/xref.el2
-rw-r--r--lisp/reveal.el18
-rw-r--r--lisp/saveplace.el163
-rw-r--r--lisp/server.el160
-rw-r--r--lisp/shell.el40
-rw-r--r--lisp/simple.el154
-rw-r--r--lisp/speedbar.el75
-rw-r--r--lisp/startup.el2
-rw-r--r--lisp/strokes.el42
-rw-r--r--lisp/subr.el155
-rw-r--r--lisp/tab-bar.el177
-rw-r--r--lisp/term.el1
-rw-r--r--lisp/textmodes/html-ts-mode.el134
-rw-r--r--lisp/textmodes/paragraphs.el15
-rw-r--r--lisp/textmodes/reftex-index.el27
-rw-r--r--lisp/textmodes/reftex-ref.el2
-rw-r--r--lisp/textmodes/table.el4
-rw-r--r--lisp/thingatpt.el2
-rw-r--r--lisp/time.el6
-rw-r--r--lisp/treesit.el378
-rw-r--r--lisp/url/url-domsuf.el22
-rw-r--r--lisp/url/url-future.el5
-rw-r--r--lisp/url/url-gw.el57
-rw-r--r--lisp/url/url-mailto.el4
-rw-r--r--lisp/use-package/bind-key.el19
-rw-r--r--lisp/userlock.el13
-rw-r--r--lisp/vc/diff-mode.el34
-rw-r--r--lisp/vc/emerge.el2
-rw-r--r--lisp/vc/vc-git.el228
-rw-r--r--lisp/vc/vc.el35
-rw-r--r--lisp/whitespace.el35
-rw-r--r--lisp/window.el9
-rw-r--r--lisp/woman.el4
-rw-r--r--m4/acl.m416
-rw-r--r--m4/alloca.m44
-rw-r--r--m4/assert_h.m418
-rw-r--r--m4/canonicalize.m48
-rw-r--r--m4/clock_time.m415
-rw-r--r--m4/d-type.m43
-rw-r--r--m4/dup2.m43
-rw-r--r--m4/euidaccess.m413
-rw-r--r--m4/extensions.m411
-rw-r--r--m4/faccessat.m47
-rw-r--r--m4/fchmodat.m44
-rw-r--r--m4/fdopendir.m414
-rw-r--r--m4/filemode.m43
-rw-r--r--m4/fsusage.m43
-rw-r--r--m4/futimens.m47
-rw-r--r--m4/getgroups.m43
-rw-r--r--m4/getloadavg.m418
-rw-r--r--m4/getrandom.m422
-rw-r--r--m4/gettime.m447
-rw-r--r--m4/gettimeofday.m43
-rw-r--r--m4/gnulib-common.m4582
-rw-r--r--m4/gnulib-comp.m454
-rw-r--r--m4/group-member.m43
-rw-r--r--m4/inttypes.m46
-rw-r--r--m4/largefile.m4327
-rw-r--r--m4/limits-h.m41
-rw-r--r--m4/lstat.m45
-rw-r--r--m4/malloc.m44
-rw-r--r--m4/mempcpy.m411
-rw-r--r--m4/memrchr.m44
-rw-r--r--m4/memset_explicit.m420
-rw-r--r--m4/mkostemp.m47
-rw-r--r--m4/mktime.m44
-rw-r--r--m4/nanosleep.m412
-rw-r--r--m4/nproc.m46
-rw-r--r--m4/nstrftime.m43
-rw-r--r--m4/pathmax.m44
-rw-r--r--m4/pipe2.m49
-rw-r--r--m4/pselect.m44
-rw-r--r--m4/pthread_sigmask.m415
-rw-r--r--m4/readlink.m48
-rw-r--r--m4/readlinkat.m47
-rw-r--r--m4/realloc.m44
-rw-r--r--m4/sig2str.m43
-rw-r--r--m4/ssize_t.m43
-rw-r--r--m4/stat-time.m44
-rw-r--r--m4/stdalign.m4176
-rw-r--r--m4/stddef_h.m411
-rw-r--r--m4/stdio_h.m414
-rw-r--r--m4/stdlib_h.m413
-rw-r--r--m4/stpcpy.m47
-rw-r--r--m4/string_h.m49
-rw-r--r--m4/strnlen.m44
-rw-r--r--m4/strtoimax.m43
-rw-r--r--m4/strtoll.m43
-rw-r--r--m4/symlink.m44
-rw-r--r--m4/time_h.m48
-rw-r--r--m4/timegm.m47
-rw-r--r--m4/timer_time.m415
-rw-r--r--m4/timespec.m43
-rw-r--r--m4/unistd_h.m47
-rw-r--r--m4/utimens.m48
-rw-r--r--m4/utimensat.m47
-rw-r--r--m4/xattr.m453
-rw-r--r--msdos/autogen/Makefile.in6
-rw-r--r--msdos/sed1v2.inp8
-rw-r--r--msdos/sed2v2.inp2
-rw-r--r--msdos/sed3v2.inp5
-rw-r--r--msdos/sedlibmk.inp5
-rw-r--r--nt/INSTALL.W642
-rw-r--r--nt/README.W322
-rw-r--r--nt/mingw-cfg.site3
-rw-r--r--src/Makefile.in13
-rw-r--r--src/alloc.c280
-rw-r--r--src/buffer.c33
-rw-r--r--src/buffer.h3
-rw-r--r--src/coding.c6
-rw-r--r--src/comp.c2
-rw-r--r--src/data.c130
-rw-r--r--src/dispnew.c2
-rw-r--r--src/doc.c34
-rw-r--r--src/emacs-module.h.in15
-rw-r--r--src/emacs.c3
-rw-r--r--src/eval.c43
-rw-r--r--src/fileio.c174
-rw-r--r--src/floatfns.c7
-rw-r--r--src/fns.c51
-rw-r--r--src/frame.c51
-rw-r--r--src/frame.h15
-rw-r--r--src/gnutls.c164
-rw-r--r--src/gtkutil.c6
-rw-r--r--src/haikufont.c27
-rw-r--r--src/insdel.c38
-rw-r--r--src/itree.c2
-rw-r--r--src/itree.h9
-rw-r--r--src/lisp.h15
-rw-r--r--src/lread.c292
-rw-r--r--src/macros.c6
-rw-r--r--src/module-env-29.h3
-rw-r--r--src/module-env-30.h3
-rw-r--r--src/nsterm.m14
-rw-r--r--src/pdumper.c2
-rw-r--r--src/profiler.c145
-rw-r--r--src/regex-emacs.c43
-rw-r--r--src/syntax.c50
-rw-r--r--src/syntax.h24
-rw-r--r--src/sysdep.c7
-rw-r--r--src/textconv.c313
-rw-r--r--src/textconv.h109
-rw-r--r--src/treesit.c793
-rw-r--r--src/w32heap.c4
-rw-r--r--src/window.c15
-rw-r--r--src/xdisp.c85
-rw-r--r--src/xfns.c349
-rw-r--r--src/xftfont.c6
-rw-r--r--src/xselect.c932
-rw-r--r--src/xterm.c894
-rw-r--r--src/xterm.h84
-rw-r--r--test/Makefile.in6
-rw-r--r--test/infra/Dockerfile.emba23
-rw-r--r--test/infra/gitlab-ci.yml27
-rw-r--r--test/lisp/auth-source-tests.el15
-rw-r--r--test/lisp/calendar/lunar-tests.el6
-rw-r--r--test/lisp/dired-aux-tests.el11
-rw-r--r--test/lisp/dired-tests.el4
-rw-r--r--test/lisp/elide-head-tests.el106
-rw-r--r--test/lisp/emacs-lisp/bytecomp-tests.el240
-rw-r--r--test/lisp/emacs-lisp/cconv-tests.el25
-rw-r--r--test/lisp/emacs-lisp/cl-lib-tests.el5
-rw-r--r--test/lisp/emacs-lisp/ert-tests.el28
-rw-r--r--test/lisp/emacs-lisp/multisession-tests.el2
-rw-r--r--test/lisp/emacs-lisp/nadvice-tests.el38
-rw-r--r--test/lisp/emacs-lisp/shortdoc-tests.el43
-rw-r--r--test/lisp/erc/erc-dcc-tests.el69
-rw-r--r--test/lisp/erc/erc-fill-tests.el313
-rw-r--r--test/lisp/erc/erc-goodies-tests.el334
-rw-r--r--test/lisp/erc/erc-networks-tests.el10
-rw-r--r--test/lisp/erc/erc-scenarios-base-auto-recon.el141
-rw-r--r--test/lisp/erc/erc-scenarios-base-local-module-modes.el211
-rw-r--r--test/lisp/erc/erc-scenarios-base-local-modules.el99
-rw-r--r--test/lisp/erc/erc-scenarios-base-misc-regressions.el44
-rw-r--r--test/lisp/erc/erc-scenarios-base-renick.el43
-rw-r--r--test/lisp/erc/erc-scenarios-misc.el34
-rw-r--r--test/lisp/erc/erc-scenarios-sasl.el64
-rw-r--r--test/lisp/erc/erc-services-tests.el225
-rw-r--r--test/lisp/erc/erc-stamp-tests.el265
-rw-r--r--test/lisp/erc/erc-tests.el924
-rw-r--r--test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld1
-rw-r--r--test/lisp/erc/resources/base/commands/motd.eld48
-rw-r--r--test/lisp/erc/resources/base/reconnect/just-eof.eld3
-rw-r--r--test/lisp/erc/resources/base/reconnect/just-ping.eld4
-rw-r--r--test/lisp/erc/resources/base/reconnect/ping-pong.eld6
-rw-r--r--test/lisp/erc/resources/base/reconnect/unexpected-disconnect.eld24
-rw-r--r--test/lisp/erc/resources/base/renick/regain/normal-again.eld56
-rw-r--r--test/lisp/erc/resources/base/renick/regain/normal.eld53
-rw-r--r--test/lisp/erc/resources/erc-scenarios-common.el1
-rw-r--r--test/lisp/erc/resources/fill/snapshots/merge-01-start.eld1
-rw-r--r--test/lisp/erc/resources/fill/snapshots/merge-02-right.eld1
-rw-r--r--test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld1
-rw-r--r--test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld1
-rw-r--r--test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld1
-rw-r--r--test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld1
-rw-r--r--test/lisp/erc/resources/sasl/plain-overlong-aligned.eld39
-rw-r--r--test/lisp/erc/resources/sasl/plain-overlong-split.eld39
-rw-r--r--test/lisp/eshell/em-alias-tests.el9
-rw-r--r--test/lisp/eshell/em-cmpl-tests.el352
-rw-r--r--test/lisp/eshell/em-extpipe-tests.el2
-rw-r--r--test/lisp/eshell/em-prompt-tests.el120
-rw-r--r--test/lisp/eshell/em-script-tests.el32
-rw-r--r--test/lisp/eshell/em-tramp-tests.el92
-rw-r--r--test/lisp/eshell/esh-arg-tests.el30
-rw-r--r--test/lisp/eshell/esh-cmd-tests.el81
-rw-r--r--test/lisp/eshell/esh-io-tests.el85
-rw-r--r--test/lisp/eshell/esh-proc-tests.el53
-rw-r--r--test/lisp/eshell/esh-util-tests.el65
-rw-r--r--test/lisp/eshell/esh-var-tests.el313
-rw-r--r--test/lisp/eshell/eshell-tests-helpers.el29
-rw-r--r--test/lisp/eshell/eshell-tests-unload.el99
-rw-r--r--test/lisp/eshell/eshell-tests.el93
-rw-r--r--test/lisp/gnus/mml-sec-tests.el51
-rw-r--r--test/lisp/help-fns-tests.el4
-rw-r--r--test/lisp/hl-line-tests.el8
-rw-r--r--test/lisp/jsonrpc-tests.el2
-rw-r--r--test/lisp/net/tramp-archive-tests.el44
-rw-r--r--test/lisp/net/tramp-tests.el1017
-rw-r--r--test/lisp/proced-tests.el122
-rw-r--r--test/lisp/progmodes/eglot-tests.el287
-rw-r--r--test/lisp/progmodes/elisp-mode-tests.el5
-rw-r--r--test/lisp/progmodes/elixir-ts-mode-resources/indent.erts350
-rw-r--r--test/lisp/progmodes/elixir-ts-mode-tests.el31
-rw-r--r--test/lisp/progmodes/grep-tests.el14
-rw-r--r--test/lisp/progmodes/heex-ts-mode-resources/indent.erts47
-rw-r--r--test/lisp/progmodes/heex-ts-mode-tests.el31
-rw-r--r--test/lisp/progmodes/java-ts-mode-resources/indent.erts112
-rw-r--r--test/lisp/progmodes/java-ts-mode-resources/movement.erts154
-rw-r--r--test/lisp/progmodes/java-ts-mode-tests.el35
-rw-r--r--test/lisp/progmodes/sh-script-tests.el18
-rw-r--r--test/lisp/progmodes/typescript-ts-mode-resources/indent.erts73
-rw-r--r--test/lisp/progmodes/typescript-ts-mode-tests.el31
-rw-r--r--test/lisp/simple-tests.el6
-rw-r--r--test/lisp/subr-tests.el47
-rw-r--r--test/lisp/thingatpt-tests.el33
-rw-r--r--test/lisp/url/url-domsuf-tests.el4
-rw-r--r--test/lisp/url/url-future-tests.el2
-rw-r--r--test/lisp/whitespace-tests.el18
-rwxr-xr-xtest/manual/indent/shell.sh1
-rw-r--r--test/manual/noverlay/itree-tests.c182
-rw-r--r--test/src/comp-resources/comp-test-funcs.el13
-rw-r--r--test/src/comp-tests.el2
-rw-r--r--test/src/data-tests.el36
-rw-r--r--test/src/eval-tests.el35
-rw-r--r--test/src/fns-tests.el41
-rw-r--r--test/src/lread-tests.el35
-rw-r--r--test/src/process-tests.el2
-rw-r--r--test/src/regex-emacs-tests.el4
-rw-r--r--test/src/treesit-tests.el118
-rw-r--r--test/src/undo-tests.el72
650 files changed, 54390 insertions, 39665 deletions
diff --git a/CONTRIBUTE b/CONTRIBUTE
index 82e5b0a1018..f56ba1df630 100644
--- a/CONTRIBUTE
+++ b/CONTRIBUTE
@@ -18,7 +18,7 @@ To configure Git for Emacs development, you can run the following:
The following shell commands then build and run Emacs from scratch:
- git clone git://git.sv.gnu.org/emacs.git
+ git clone https://git.savannah.gnu.org/git/emacs.git
cd emacs
./autogen.sh
./configure
diff --git a/ChangeLog.4 b/ChangeLog.4
index 106444e41a7..4deb6da94fb 100644
--- a/ChangeLog.4
+++ b/ChangeLog.4
@@ -1,8 +1,8 @@
-2023-04-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/ldefs-boot.el: Regenerate.
-2023-04-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Bump Emacs version to 29.0.90
@@ -11,7 +11,7 @@
* nt/README.W32:
* msdos/sed2v2.inp: Bump version to 29.0.90.
-2023-04-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix some cases of incomplete code's indentation [c/c++-ts-mode]
@@ -20,14 +20,14 @@
to indent against (bug#62717).
(c-ts-base-mode): Set up advice for local treesit-indent-function.
-2023-04-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-search: Pipe the list of files through 'file-regular-p'
* lisp/progmodes/project.el (project-search): Pipe the list of
files through 'file-regular-p' to skip directories (bug#62735).
-2023-04-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update ChangeLog and AUTHORS for Emacs 29
@@ -39,7 +39,7 @@
* Makefile.in (PREFERRED_BRANCH): Update to emacs-29.
(CHANGELOG_HISTORY_INDEX_MAX): Bump to 4.
-2023-04-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Backport: Eglot: no more tests based on Pylsp (bug#62694)
@@ -64,7 +64,7 @@
(cherry picked from commit fc8230f3362b12955152f48565a6c670b4c4cc88)
-2023-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'C-h k' for "Paste from Kill Menu" in context menus
@@ -72,7 +72,7 @@
symbols, not just integers, to prevent "C-h c" from interpreting
them as character keys. (Bug#62626)
-2023-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve the documentation of the XDS support
@@ -87,7 +87,7 @@
(x-dnd-save-direct, x-dnd-save-direct-immediately): Rename the
second argument to FILENAME. Doc fix.
-2023-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow reindentation of images inserted by 'mm-inline-image'
@@ -95,14 +95,14 @@
to put the image 'display' property, so that indentation commands
don't destroy the image inadvertently. (Bug#62637)
-2023-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "C-h k" and "C-h c" with Paste from Kill Menu
* lisp/subr.el (event-basic-type, event-modifiers): Return nil if
EVENT is a string. (Bug#62626)
-2023-04-08 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Change cursor color on NS port when it matches the face background
@@ -114,7 +114,7 @@
background of a glyph string, apply the logic mentioned
above. (Bug#62573)
-2023-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of image-related commands
@@ -130,7 +130,7 @@
* etc/NEWS: Rearrange entries relevant to image commands.
-2023-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix handling of sliced images
@@ -145,14 +145,14 @@
(image-crop): Don't try using stock MS-Widows convert.exe
program. Use 'image--get-image' to support sliced images.
-2023-04-08 garid3000 <garidzorigoo@gmail.com>
+2023-04-15 garid3000 <garidzorigoo@gmail.com>
Add cyrillic-mongolian input method
* lisp/leim/quail/cyrillic.el (cyrillic-mongolian): New input
method. (Bug#56617)
-2023-04-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Jsonrpc: don't bind inhibit-read-only to t so early
@@ -167,7 +167,7 @@
* lisp/jsonrpc.el (jsonrpc--process-filter): Don't bind
inhibit-read-only so early.
-2023-04-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow active region when IM is used
@@ -175,7 +175,7 @@
deactivate-mark to allow setting active region in the minibuffer
when an input method is used. (Bug#62709)
-2023-04-06 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add emoji-zoom-reset
@@ -184,7 +184,7 @@
* lisp/international/mule-cmds.el (ctl-x-map): Add emoji-zoom-reset.
* etc/NEWS: Announce new command.
-2023-04-06 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Make emoji-zoom-{increase,decrease} set text properties correctly
@@ -193,7 +193,7 @@
having two :height properties, which appeared to work by
accident, and don't error at eob. (Bug#62675)
-2023-04-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix transforming sliced images
@@ -202,7 +202,7 @@
(image-mouse-decrease-size, image-mouse-increase-size)
(image-decrease-size, image-increase-size): Doc fixes.
-2023-04-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt EMBA scripts.
@@ -211,7 +211,7 @@
* test/infra/gitlab-ci.yml (build-image-gnustep, test-gnustep): Uncomment.
-2023-04-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Another terminology fix in ELisp reference manual
@@ -219,32 +219,32 @@
* doc/lispref/commands.texi (Motion Events, Event Examples):
'track-mouse' is a macro, not a special form.
-2023-04-04 Shynur <one.last.kiss@outlook.com> (tiny change)
+2023-04-15 Shynur <one.last.kiss@outlook.com> (tiny change)
Correct terminology in Elisp Reference Manual
* doc/lispref/functions.texi (Function Names): 'defun' is a macro, not
a special form. (Bug#62661)
-2023-04-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Comment out GNUSTEP jobs on EMBA (again)
* test/infra/gitlab-ci.yml (build-image-gnustep, test-gnustep):
Comment out jobs due to bug#62210.
-2023-04-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix regexp string escaping mistake in vhdl-mode.el (bug#62508)
* lisp/progmodes/vhdl-mode.el (vhdl-compiler-alist): Quote brackets
correctly.
-2023-04-02 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.3-2-gf2949d
-2023-04-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: don't watch directories that don't exist
@@ -257,7 +257,7 @@
* lisp/progmodes/eglot.el (eglot-register-capability
workspace/didChangeWatchedFiles): Check if directories exist.
-2023-04-02 Eshel Yaron <me@eshelyaron.com>
+2023-04-15 Eshel Yaron <me@eshelyaron.com>
Preserve peer information for web page in eww-readable
@@ -268,11 +268,11 @@
* lisp/net/eww.el (eww-readable): Preserve eww-data's :peer
property. (Bug#62574)
-2023-04-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/subr.el (use-dialog-box-p): Fix conditions for GUI dialogs.
-2023-04-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix ModelSim error regexp in vhdl-mode
@@ -280,7 +280,7 @@
error regexp. Suggested by Reto Zimmermann <reto@gnu.org>.
(Bug#62508)
-2023-04-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document enhancements in handling of echo-area messages
@@ -291,7 +291,7 @@
Improve the documentation of functions dealing with display of
echo-area messages.
-2023-04-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix new Eshell tests on MS-Windows
@@ -299,7 +299,7 @@
(eshell-test/eshell-command/background-pipeline): Allow for ".exe"
in the program's name. This fixes these tests on MS-Windows.
-2023-03-31 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix using background commands in 'eshell-command'
@@ -315,13 +315,13 @@
(eshell-test/eshell-command/background)
(eshell-test/eshell-command/background-pipeline): New tests.
-2023-03-31 Shynur <one.last.kiss@outlook.com> (tiny change)
+2023-04-15 Shynur <one.last.kiss@outlook.com> (tiny change)
Fix typo in section 14.1 of Emacs Manual
* doc/emacs/display.texi (Scrolling): Fix typo. (Bug#62569)
-2023-03-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: unbreak eglot-extend-to-xref on w32
@@ -339,14 +339,14 @@
* lisp/progmodes/eglot.el (eglot--uri-to-path): Use
w32-long-file-name.
-2023-03-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: ensure server shutdown turns off eglot-inlay-hints-mode
* lisp/progmodes/eglot.el (eglot--managed-mode-off): Turn off
eglot-inlay-hints-mode.
-2023-03-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add two typescript-ts-mode faces (bug#62429)
@@ -356,7 +356,7 @@
(typescript-ts-mode--font-lock-settings): Use new faces.
(tsx-ts-mode): Mention the new faces in the docstring.
-2023-03-30 Shynur <one.last.kiss@outlook.com> (tiny change)
+2023-04-15 Shynur <one.last.kiss@outlook.com> (tiny change)
Fix scrolling window when point moves up
@@ -366,7 +366,7 @@
'scroll-step' and 'scroll-conservatively' when scrolling with
'previous-line'. (Bug#62530)
-2023-03-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'defcustom's :set keyword
@@ -374,7 +374,7 @@
* doc/lispref/customize.texi (Variable Definitions): Improve the
documentation of the :set keyword in 'defcustom'.
-2023-03-29 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Comp fix calls to redefined primtives with op-bytecode (bug#61917)
@@ -384,7 +384,7 @@
* lisp/emacs-lisp/comp.el (comp--func-arity): New function.
(comp-emit-set-call-subr): Make use of `comp--func-arity'.
-2023-03-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix duplicate defcustom in eww.el
@@ -392,18 +392,18 @@
from 'eww-download-directory'; all users changed. Doc fix.
(Bug#62531)
-2023-03-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix indentation regression in 'C-h l'
* lisp/help.el (view-lossage): Fix indentation of commands
when the key sequence includes a semicolon. (Bug#62453)
-2023-03-29 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* doc/misc/tramp.texi (Remote shell setup): Clarify use of ssh RemoteCommand.
-2023-03-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'read-choice' and related symbols
@@ -412,7 +412,7 @@
(read-char-choice-with-read-key, y-or-n-p-use-read-key): Improve
documentation of these functions and variables.
-2023-03-28 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Revert "Comp fix calls to redefined primtives with op-bytecode (bug#61917)"
@@ -421,7 +421,7 @@
These patch series caused a number of regression and more analysis is
required.
-2023-03-28 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Revert "* lisp/emacs-lisp/comp.el (comp-emit-set-call-subr): Improve..."
@@ -430,25 +430,25 @@
These patch series caused a number of regression and more analysis is
required.
-2023-03-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Skip ruby-ts-imenu-index test if needed
* test/lisp/progmodes/ruby-ts-mode-tests.el (ruby-ts-imenu-index):
Add check for treesitter.
-2023-03-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Eglot Tramp tests on EMBA
* test/lisp/progmodes/eglot-tests.el (eglot--call-with-tramp-test):
Bind `tramp-allow-unsafe-temporary-files' with t. (Bug#62289)
-2023-03-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/Dockerfile.emba (emacs-gnustep): Instrument "make V=1 ...".
-2023-03-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix accidental backward-incompatible change (bug#62417)
@@ -464,7 +464,7 @@
* lisp/window.el (display-buffer-alist): Adjust docstring.
(display-buffer-assq-regexp): Make good on promise of display-buffer-alist.
-2023-03-26 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix/simplify Imenu index generation
@@ -481,22 +481,22 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el (ruby-ts-imenu-index):
New test.
-2023-03-26 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--align-chain): Use 'equal' to check for an exact match
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--align-chain): Use
'equal' to check for an exact match rather than substring.
-2023-03-26 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Update to Transient v0.3.7-218-g3dbb22a
-2023-03-26 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.2
-2023-03-26 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Skip failing tests on Cygwin with native compilation (bug#62450)
@@ -507,7 +507,7 @@
* test/lisp/emacs-lisp/benchmark-tests.el (benchmark-tests): Skip
on Cygwin with native-compilation.
-2023-03-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix GNUSTEP tests on EMBA
@@ -517,40 +517,40 @@
* test/infra/gitlab-ci.yml (build-image-gnustep)
(test-gnustep): Uncomment jobs.
-2023-03-26 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
Fix primary selection modification during `term-mouse-paste' (bug#58608)
* lisp/term.el (term-mouse-paste): Prevent the primary selection from
being changed in the process of sending it to the inferior process.
-2023-03-26 Xi Lu <lx@shellcodes.org>
+2023-04-15 Xi Lu <lx@shellcodes.org>
Add 'eww-default-download-directory'.
* lisp/net/eww.el (eww-default-download-directory): New defcustom.
(eww--download-directory): Use it. (Bug#62435)
-2023-03-26 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
* doc/lispref/modes.texi: Improve docs for obsolete '%m' construct
Bug #57080.
-2023-03-26 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
Improve docs for global-mode-string / %M construct
* src/xdisp.c (global-mode-string): Update docstring.
* doc/lispref/modes.texi: Update manual.
-2023-03-26 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
* src/buffer.c (mode-line-format): Document %o and %q constructs
Missed from commit b0b02ca7f3e06d0f092df6f81babd1277bf93b0f.
-2023-03-26 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
* src/buffer.c (mode-line-format): Remove docs for obsolete %t construct
@@ -567,7 +567,7 @@
[3] commit 05c652517317d10690aaf0a6aa0bc876382b9d82
[4] commit 8549f9e89bd9288c4c709d183a5bf8f07dbeed3d
-2023-03-25 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Improve indenting "case" in Python
@@ -577,11 +577,11 @@
(python-info-dedenter-opening-block-positions-7)
(python-info-dedenter-statement-p-6): New tests. (Bug#62092)
-2023-03-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/Dockerfile.emba (emacs-native-comp): Add zlib1g-dev.
-2023-03-25 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Fix failure of fns-tests-collate-strings on Cygwin
@@ -591,7 +591,7 @@
Note: The test will still fail on Cygwin releases < 3.5
because of a Cygwin bug. (Bug#62420)
-2023-03-25 Aaron L. Zeng <azeng@janestreet.com> (tiny change)
+2023-04-15 Aaron L. Zeng <azeng@janestreet.com> (tiny change)
* lisp/savehist.el (savehist-save): Preserve shared structure
@@ -602,7 +602,7 @@
* lisp/savehist.el (savehist-save): Enable 'print-circle'.
(Bug#62364)
-2023-03-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp manual
@@ -610,7 +610,7 @@
be used.
(Ssh setup): Extend for MS Windows and ssh.
-2023-03-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix system time sampling on MS-Windows
@@ -618,7 +618,7 @@
call tzset to make sure we pick up all the changes of time zone,
working around the MS CRT caching.
-2023-03-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit_ensure_parsed (bug#62333)
@@ -626,13 +626,13 @@
treesit_sync_visible_region runs, because as the comment says,
treesit_sync_visible_region might modify need_reparse.
-2023-03-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/help-fns.el (find-lisp-object-file-name): Fix bug#62376 part2
Nowadays `loaddefs.el` are byte-compiled, so adjust pattern accordingly
-2023-03-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve "Bugs" in the Emacs manual
@@ -641,7 +641,7 @@
(Contributing, Coding Standards): Improve wording, structure,
markup, and indexing. (Bug#62320)
-2023-03-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix Eglot progress reporting
@@ -650,14 +650,14 @@
* lisp/progmodes/eglot.el (eglot-handle-notification $/progress): Rework.
-2023-03-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Fix :predicate handling in globalized minor modes
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
Fix a thinko. (Bug#62376)
-2023-03-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow showing prefix commands in Help buffers
@@ -668,7 +668,7 @@
* etc/NEWS: Document 'describe-bindings-show-prefix-commands'.
-2023-03-23 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix toolbar item validation in the NS port
@@ -678,7 +678,7 @@
particular, the problem with having the "Save" icon on the tool
bar enabled at Emacs startup. (Bug#62234)
-2023-03-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use libgccjit-10-dev on EMBA
@@ -688,7 +688,7 @@
* test/infra/gitlab-ci.yml (build-native-comp-speed2)
(test-native-comp-speed2): Uncomment jobs.
-2023-03-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline--fix-buttons-after-change): Add save-match-data.
@@ -696,13 +696,13 @@
Otherwise it breaks functions that make changes in the buffer, such as
for example, successive calls to delete-region in smerge-keep-n, etc.
-2023-03-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Align concatenated strings to the first sibling in c-ts-mode
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Change rule.
-2023-03-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Only fill the current paragraph in c-ts-common--fill-block-comment
@@ -710,14 +710,14 @@
(c-ts-common--fill-block-comment): Shrink the filled region to the
paragraph at point.
-2023-03-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add missing indent rule for c-ts-mode
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): New rule for case.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
-2023-03-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve docstring of treesit-parent-while (bug#62301)
@@ -725,7 +725,7 @@
docstring for treesit-parent-until and treesit-parent-while.
* lisp/treesit.el (treesit-parent-while): Improve docstring.
-2023-03-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: report window/workDoneProgress capability to language server
@@ -736,21 +736,21 @@
* lisp/progmodes/eglot.el (eglot-client-capabilities): Actually
report workDoneProgress.
-2023-03-21 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (comp-emit-set-call-subr): Improve 263d6c38539
-2023-03-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Expand defvar-keymap documentation
* doc/lispref/keymaps.texi (Creating Keymaps): Describe the :repeat keyword.
-2023-03-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/treesit.el (treesit-end-of-defun): Guard arg against nil (bug#62158).
-2023-03-20 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Comp fix calls to redefined primtives with op-bytecode (bug#61917)
@@ -758,28 +758,28 @@
of calls to redefined primtives with dedicated op-bytecode.
* test/src/comp-tests.el (61917-1): New test.
-2023-03-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Warn package authors away from keymap-unset with REMOVE
* doc/lispref/keymaps.texi (Changing Key Bindings): Ask package
authors to not use the REMOVE argument to `keymap-unset'.
-2023-03-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Comment out jobs on EMBA
* test/infra/gitlab-ci.yml: Comment out jobs due to bug#62210 and
bug#62211.
-2023-03-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve defvar-keymap docstring.
* lisp/keymap.el (defvar-keymap): Improve description of ':enter' and
':exit' usage for ':repeat' keyword.
-2023-03-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve warning about changing the string returned by symbol-name
@@ -787,24 +787,24 @@
* doc/lispref/symbols.texi (Creating Symbols): Improve warning.
-2023-03-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix visiting XBM/XPM files when 'c-ts-mode' is active
* lisp/progmodes/c-ts-mode.el (treesit-ready-p): Fix association
for XBM/XPM files in 'auto-mode-alist'. (Bug#62276)
-2023-03-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/mpc.el (mpc-format): Fix oversight in commit 48b6cec61cf
-2023-03-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Bail early from eglot--apply-text-edits if nothing to do
* lisp/progmodes/eglot.el (eglot--apply-text-edits): Early return.
-2023-03-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve ergonomics of Eglot's inlay hints
@@ -821,7 +821,7 @@
here.
(eglot--update-hints-1): Rework.
-2023-03-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Protect against too large size of 'recent-keys' vector
@@ -829,15 +829,15 @@
(Flossage_size): Don't allow specifying too large lossage-size.
Fix data types. (Bug#62277)
-2023-03-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp.el (tramp-yn-prompt-regexp): Fix regexp.
-2023-03-18 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1-48-g92471e
-2023-03-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge confusing duplicate sections on commands in Eglot manual
@@ -846,7 +846,7 @@
* doc/misc/eglot.texi (Eglot Features): Don't describe commands here.
(Eglot Commands): Describe commands here.
-2023-03-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't take over mouse-1 binding on Eglot diagnostics (bug#62157)
@@ -858,11 +858,11 @@
(eglot-diagnostics-map): New variable.
(eglot-code-actions-at-mouse): New command.
-2023-03-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/progmodes/eglot.el (eglot--connect): Improve Tramp workaround.
-2023-03-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Avoid slowdowns in xmltok-scan-attributes
@@ -870,7 +870,7 @@
to 10000 characters, to avoid slowdowns due to the quadratic
complexity of the regexp. Suggested by Stefan Monnier.
-2023-03-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Eliminate duplicate function c-list-of-strings
@@ -885,7 +885,7 @@
(idl-font-lock-extra-types, pike-font-lock-extra-types): In the autoload
cookies, replace c-list-of-strings with c-string-list-p.
-2023-03-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Allow lists of strings as safe values for *-font-lock-extra-types
@@ -896,14 +896,14 @@
into each of thes defcustoms for c-list-of-string.
(Top level): Add an autoload entry for each of the above.
-2023-03-18 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add tests for Bug#62207
* test/src/keymap-tests.el (keymap-unset-test-remove-and-inheritance):
New test.
-2023-03-18 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix 'find-ls-option-default-ls' for BSD/MacOS (bug#62096)
@@ -912,13 +912,13 @@
Darwin/MacOS. Tested on OpenBSD and MacOS. Do not merge
to master.
-2023-03-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Enhance section about troubleshooting in Eglot manual.
* doc/misc/eglot.texi (Troubleshooting Eglot): Parially rewrite.
-2023-03-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix Eglot's snippet insertion to follow the manual
@@ -934,7 +934,7 @@
(eglot--snippet-expansion-fn): Turn on yas-minor-mod eon demand.
(eglot-completion-at-point): Simplify.
-2023-03-17 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Reset abbrevs-changed after saving abbrevs (bug#62208)
@@ -942,21 +942,21 @@
saving abbrevs.
* test/lisp/abbrev-tests.el (abbrev--possibly-save-test): New test.
-2023-03-17 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Document `keymap-unset' in lispref
* doc/lispref/keymaps.texi (Changing Key Bindings): Document
keymap-unset.
-2023-03-17 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Don't add a key binding when REMOVE is non-nil
* src/keymap.c (store_in_keymap): Don't add a nil keybinding if we've
been asked to remove a non-existent binding. (Bug#62207)
-2023-03-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the documentation of various aspects of adding Xref history
@@ -974,7 +974,7 @@
Explain the difference between 'C-M-,' and 'M-.'. Improve
wording (Bug#62229)
-2023-03-16 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix python-fill-paragraph problems on filling strings (bug#62142)
@@ -992,7 +992,7 @@
(python-info-triple-quoted-string-p-2)
(python-info-triple-quoted-string-p-3): New tests.
-2023-03-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Also exempt eglot-inlay-hints-mode from desktop.el's fumblings
@@ -1001,14 +1001,14 @@
* lisp/progmodes/eglot.el (desktop): Also exempt
eglot-inlay-hints-mode from desktop.el fumblings.
-2023-03-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Refer to EWW instead of w3 and w3m
* doc/misc/idlwave.texi (Help with HTML Documentation): Refer to EWW
instead of w3 and w3m.
-2023-03-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix Eglot's command generation for code actions
@@ -1020,7 +1020,7 @@
* lisp/progmodes/eglot.el (eglot--code-action): Pass INTERACTIVE=t to
eglot-code-action call.
-2023-03-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Emphasize emacs-29-specificity in this version of lisp/progmodes/eglot.el
@@ -1036,7 +1036,7 @@
(Package-Requires): Remove. Everything required is already in Emacs
29.
-2023-03-16 USAMI Kenta <tadsan@zonu.me>
+2023-04-15 USAMI Kenta <tadsan@zonu.me>
Fix quoting of font-family in 'hfy-family'
@@ -1071,7 +1071,7 @@
* lisp/htmlfontify.el (hfy-family): Quote 'font-family'. (Bug#62054)
-2023-03-15 Michael Eliachevitch <m.eliachevitch@posteo.de> (tiny change)
+2023-04-15 Michael Eliachevitch <m.eliachevitch@posteo.de> (tiny change)
Document how to construct JSONRPC arrays in Eglot manual
@@ -1083,19 +1083,19 @@
(User-specific configuration): Tweaks.
(JSONRPC objects in Elisp): Mention JSON arrays. Tweak example.
-2023-03-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/Dockerfile.emba: Use debian:bullseye.
-2023-03-15 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* configure.ac: Fix native comp compatibility check (bug#61960)
-2023-03-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/Dockerfile.emba: Install clangd.
-2023-03-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove 'package-vc--query-spec'
@@ -1104,7 +1104,7 @@
(package-vc--query-spec): Remove function.
(package-vc--clone): Do not call 'package-vc--query-spec'.
-2023-03-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Do not store :lisp-dir in package descriptors
@@ -1118,7 +1118,7 @@
either provided by a package archive or stored in
'package-vc-selected-packages'.
-2023-03-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Use 'package-vc-selected-packages' to store package specs
@@ -1131,25 +1131,25 @@
(package-vc--unpack): Add unknown package specifications to
'package-vc-selected-packages'
-2023-03-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/xref.el: Bump the version.
-2023-03-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/xref.el (xref--xref-buffer-mode): Split up 'setq-local'.
xref.el needs to support 26.1, but an arbitrary number of variables
in 'setq-local' was added in Emacs 27.1 (bug#62162).
-2023-03-13 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Fix import of keys in buffer created by epa-search-keys
* lisp/epa-ks.el (epa-ks--query-url): Add operation parameter.
(epa-ks--fetch-key, epa-search-keys): Use it.
-2023-03-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix connection-local variables settings
@@ -1169,7 +1169,7 @@
* test/lisp/net/tramp-tests.el (tramp-test34-connection-local-variables)
(tramp-test34-explicit-shell-file-name): Fix tests.
-2023-03-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Bump Eglot version to 1.12
@@ -1179,7 +1179,7 @@
* lisp/progmodes/eglot.el: Bump versions.
-2023-03-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Update Eglot's manual about eglot-workspace-configuration
@@ -1195,7 +1195,7 @@
(User-specific configuration): Mention possibility of globally
setting eglot-workspace-configuration.
-2023-03-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Amend last Eglot commit (bug#62065)
@@ -1204,7 +1204,7 @@
* lisp/progmodes/eglot.el (eglot-ensure): Don't check this-command.
-2023-03-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make eglot-ensure's post-command-hook run a bit later (bug#62065)
@@ -1238,7 +1238,7 @@
* lisp/progmodes/eglot.el (eglot-ensure): Use buffer-local post-command-hook.
-2023-03-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of disabled-command help text
@@ -1248,14 +1248,14 @@
window to the size of the help text), and the help text is fully
visible when Emacs prompts for input. (Bug#62146)
-2023-03-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove mention of old dotted-list reader quirk from manual
* doc/lispref/objects.texi (Dotted Pair Notation):
The (. X) reader peculiarity is no more (bug#62020).
-2023-03-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix value history shown for 'gc-cons-percentage'
@@ -1268,7 +1268,7 @@
* src/emacs.c (main): Increase 'gc-cons-percentage' in batch mode
only if we are not initializing (a.k.a. "dumping") Emacs.
-2023-03-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
TRework fix for bug#62106
@@ -1278,14 +1278,14 @@
unsaved user options, and it is less invasive than
`customize-save-variable'.
-2023-03-11 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add missing indentation rule for rust-ts-mode (Bug#62109)
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--indent-rules): Add
missing rule.
-2023-03-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix bug#62106
@@ -1294,14 +1294,14 @@
Use `customize-save-variable' instead of `customize-set-variable'.
(Bug#62106)
-2023-03-11 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add missing rust-ts-mode highlight query for scoped_type_identifiers
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--font-lock-settings):
Add missing query.
-2023-03-11 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Make "case" keyword a dedenter in Python
@@ -1310,7 +1310,7 @@
* test/lisp/progmodes/python-tests.el (python-indent-dedenters-9):
New test.
-2023-03-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix decoding non-ASCII file names in zip archives on MS-Windows
@@ -1318,14 +1318,14 @@
override archive-file-name-coding-system for files compressed
on MS-Windows, and use the local console encoding instead.
-2023-03-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix copying binary files from zip archives
* lisp/arc-mode.el (archive-copy-file): Prevent any coding
conversions when writing output files. (Bug#62091)
-2023-03-10 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Skip ruby-ts-syntax-propertize-symbol unless treesitter is available
@@ -1333,14 +1333,14 @@
test/lisp/progmodes/ruby-ts-mode-tests.el (ruby-ts-syntax-propertize-symbol):
Add check for treesitter.
-2023-03-10 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Fix enums and unions appearing as structs in c-ts-base-mode's imenu
* lisp/progmodes/c-ts-mode.el (c-ts-base-mode): Separate enums and unions out
from structs.
-2023-03-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fine-tune s-p-f on symbols (bug#62086)
@@ -1353,7 +1353,7 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el
(ruby-ts-syntax-propertize-symbol): New test.
-2023-03-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
python-info-dedenter-opening-block-positions: Fix to support "bare" match
@@ -1364,7 +1364,7 @@
* test/lisp/progmodes/python-tests.el
(python-indent-after-bare-match): Another test (bug#62031).
-2023-03-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Autoload Eglot helper funtion eglot--debbugs-or-github-bug-uri
@@ -1375,7 +1375,7 @@
* lisp/progmodes/eglot.el (eglot--debbugs-or-github-bug-uri):
autoload, but in progn.
-2023-03-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add chapter on advanced server configuration to Eglot manual
@@ -1383,7 +1383,7 @@
(Setting Up LSP Servers): Rework.
(Advanced server configuration): New chapter.
-2023-03-09 Vincenzo Pupillo <v.pupillo@gmail.com> (tiny change)
+2023-04-15 Vincenzo Pupillo <v.pupillo@gmail.com> (tiny change)
java-ts-mode: detect if text_block is supported.
@@ -1397,7 +1397,7 @@
return the right query string
(java-ts-mode--font-lock-settings): Use it
-2023-03-09 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Revert workaround introduced in Bug#56271
@@ -1405,7 +1405,7 @@
(python-nav-end-of-block): Revert workaround introduced in Bug#56271
as the bug is fixedin Bug#58780.
-2023-03-09 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix searching for end of string in python-nav-end-of-statement
@@ -1415,14 +1415,14 @@
(python-nav-end-of-statement-4, python-info-current-defun-4): New
tests. (Bug#58780)
-2023-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix libwebp check for some webp installations
* configure.ac: Look for WebPGetInfo; if it is not there, look
for libwebpdecoder as well. (bug#61988)
-2023-03-08 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Avoid potential infloop
@@ -1430,7 +1430,7 @@
(python-info-dedenter-opening-block-positions):
Avoid potential infloop (bug#62031).
-2023-03-08 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Lele Gaifax <lele@metapensiero.it>
Don't misindent 'else:' after 'if re.match:' in Python
@@ -1442,28 +1442,28 @@
* test/lisp/progmodes/python-tests.el (python-indent-after-re-match):
New test.
-2023-03-08 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Make sure `default-directory' exists before spawning processes (bug#62004)
* lisp/emacs-lisp/comp.el (comp-final, comp-run-async-workers): Bind
`default-directory' to `invocation-directory'.
-2023-03-08 Ulrich Müller <ulm@gentoo.org>
+2023-04-15 Ulrich Müller <ulm@gentoo.org>
Fix sed expression in install-etc make target
* Makefile.in (install-etc): Fix sed expression for emacsclient
desktop files. (Bug#62045)
-2023-03-08 Ulrich Müller <ulm@gentoo.org>
+2023-04-15 Ulrich Müller <ulm@gentoo.org>
Avoid using bash in the emacsclient desktop file
* etc/emacsclient-mail.desktop (Exec): Use sh and sed instead
of bash, because the latter may not be available everywhere.
-2023-03-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of the 'line-height' text property
@@ -1471,14 +1471,14 @@
documentation of the value t of 'line-height' text property.
(Bug#62048)
-2023-03-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add 'declare' specs to with- and without-restriction
* lisp/subr.el (with-restriction):
(without-restriction): Add 'declare' specs.
-2023-03-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix empty line indentation in c-ts-mode (bug#61997)
@@ -1490,13 +1490,13 @@
* lisp/treesit.el (treesit-simple-indent-presets): Support null as
a value for NODE-TYPE in the 'match' matcher.
-2023-03-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter indent preset prev-line (bug#61998)
* lisp/treesit.el (treesit-simple-indent-presets): Fix return value.
-2023-03-07 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Revert 'forward-sentence-default-function' to return point (bug#62027)
@@ -1505,7 +1505,7 @@
position of point.
(count-sentences): Adapt to this change.
-2023-03-07 Ulrich Müller <ulm@gentoo.org>
+2023-04-15 Ulrich Müller <ulm@gentoo.org>
Fix Elisp code injection vulnerability in emacsclient-mail.desktop
@@ -1524,7 +1524,7 @@
* etc/emacsclient-mail.desktop (Exec): Escape backslash and
double-quote characters.
-2023-03-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix problem with debuginfod queries in "M-x gdb"
@@ -1537,7 +1537,7 @@
* etc/NEWS: Announce the change.
-2023-03-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix regression in Fido mode (bug#62015)
@@ -1591,18 +1591,18 @@
* lisp/icomplete.el (icomplete--fido-ccd): New helper.
(icomplete--fido-mode-setup): Use it.
-2023-03-06 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix `emacs-lisp-native-compile-and-load' for (bug#61917)
* lisp/progmodes/elisp-mode.el (emacs-lisp-native-compile-and-load):
Don't load if no compialtion happened.
-2023-03-06 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (comp-prettyformat-insn): Fix (bug#61917)
-2023-03-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Fix configuration of webp libraries"
@@ -1612,14 +1612,14 @@
installed, since we don't use the functions from it, at least
not in libwebp 1.2.1.
-2023-03-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix configuration of webp libraries
* configure.ac: Link with libwebpdecoder along with
libwebpdemux. (bug#61988)
-2023-03-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation
@@ -1630,7 +1630,7 @@
* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts: Add an
"#elif" to the test.
-2023-03-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation
@@ -1642,7 +1642,7 @@
* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts:
New test.
-2023-03-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation
@@ -1652,11 +1652,11 @@
the sibling if it doesn't start on it's own line.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
-2023-03-05 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1-40-g3d817c
-2023-03-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add string-interpolation feature to bash-ts-mode
@@ -1664,14 +1664,14 @@
(bash-ts-mode): Add string-interpolation feature.
(sh-mode--treesit-settings): Add rule for string-interpolation feature.
-2023-03-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix tramp-sh-handle-insert-directory
* lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory): Remove also
//DIRED-OPTIONS// line when there is no //DIRED// line.
-2023-03-05 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Warn when certain primitives are redefined (bug#61880)
@@ -1679,7 +1679,7 @@
(comp-subr-trampoline-install): Warn when a sensitive primitive is
being redefined.
-2023-03-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode preproc directive indentation
@@ -1696,7 +1696,7 @@
(c-ts-mode--indent-styles): New rules.
* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts: New test.
-2023-03-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More robustly unspoof HOME in Eglot tests (bug#61637)
@@ -1718,7 +1718,7 @@
* test/lisp/progmodes/eglot-tests.el (eglot--call-with-fixture):
More robustly unspoof HOME.
-2023-03-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Turn on Eglot inlay hints by default
@@ -1732,7 +1732,7 @@
(eglot-inlay-hints-mode): Instead of warning about missing
:inlayHintProvider, turn off eglot-inlay-hints-mode.
-2023-03-04 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Update ts modes missed in 4c16fd3a512 to use column-0
@@ -1740,7 +1740,7 @@
* lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules):
Change point-min anchor to column-0.
-2023-03-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Robustify Eglot for "transient" projects
@@ -1765,7 +1765,7 @@
* lisp/progmodes/eglot.el (eglot--current-project): Use
expand-file-name.
-2023-03-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'normal-mode' in buffers that don't visit files
@@ -1775,7 +1775,7 @@
'normal-mode' in buffers not visiting files. (Bug#61925)
* lisp/files.el (hack-local-variables): Doc fix.
-2023-03-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change tree-sitter indent anchor 'point-min' to 'column-0'
@@ -1791,14 +1791,14 @@
* lisp/treesit.el (treesit-simple-indent-presets): Change point-min to
column-0.
-2023-03-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix go-ts-mode multi-line string indentation (bug#61923)
* lisp/progmodes/go-ts-mode.el:
(go-ts-mode--indent-rules): Add indent rule for multi-line sting.
-2023-03-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove Eglot activation check from find-file-hook
@@ -1813,7 +1813,7 @@
* lisp/progmodes/eglot.el (find-file-hook): No need to add
eglot--maybe-activate-editing-mode here.
-2023-03-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/intervals.c (set_intervals_multibyte_1): Fix bug#61887
@@ -1821,7 +1821,7 @@
`delete_interval` only deletes one interval, so make sure we don't end
up with some stale child of `i`.
-2023-03-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Revert inadvertent change to lisp/icomplete.el in previous commit
@@ -1839,7 +1839,7 @@
* lisp/icomplete.el (icomplete--vertical-minibuffer-setup): Remove
truncate-lines.
-2023-03-03 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Revert previous change in go-ts-mode.el
@@ -1850,7 +1850,7 @@
* lisp/progmodes/go-ts-mode.el (treesit-ready-p): Revert change.
-2023-03-03 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Release ERC 5.5
@@ -1861,7 +1861,7 @@
Emacs 29.1.
(erc-version): Update value to 5.5.
-2023-03-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't create GUI frames in batch sessions
@@ -1876,21 +1876,21 @@
* lisp/frame.el (make-frame): Always create a terminal frame in batch
sessions.
-2023-03-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor copyedits of documentation of OClosures
* doc/lispref/functions.texi (OClosures): Improve wording,
indexing, and markup; add details.
-2023-03-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: pay better attention to hints' paddingLeft/Right (bug#61924)
* lisp/progmodes/eglot.el (eglot--update-hints-1): Consider
:json-false, which is a non-nil value.
-2023-03-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation for statement after preproc (bug#61893)
@@ -1908,7 +1908,7 @@
(c-ts-mode--anchor-prev-sibling): Add special case for preproc
directives.
-2023-03-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix c/c++-ts-mode's mode lighter
@@ -1916,20 +1916,20 @@
trailing blank from comment-start when indicating the comment
style on the mode line.
-2023-03-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: use shell-file-name in eglot--cmd (bug#61748)
* lisp/progmodes/eglot.el (eglot--cmd): Use shell-file-name.
-2023-03-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid signaling errors in url-basic-auth when password is nil
* lisp/url/url-auth.el (url-basic-auth): Handle nil PASS.
Suggested by Ellis Kenyo <me@elken.dev>. (Bug#61411)
-2023-03-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix wdired-tests on MS-Windows
@@ -1941,7 +1941,7 @@
(wdired-test-bug34915, wdired-test-bug61510): Skip if symlinks
fail.
-2023-03-02 Andrew De Angelis <bobodeangelis@gmail.com>
+2023-04-15 Andrew De Angelis <bobodeangelis@gmail.com>
Improvements to xwidget on macOS (bug#60703)
@@ -1970,13 +1970,13 @@
* lisp/xwidget.el (xwidget-webkit-current-url): Message URL rather
than return value of 'kill-new' (which is always nil).
-2023-03-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/progmodes/go-ts-mode.el: Use treesit-language-available-p.
treesit-ready-p does more checks than language grammar availability.
-2023-03-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don’t signal warning when loading go-ts-mode.el without grammar
@@ -1984,7 +1984,7 @@
treesit-ready-p, so that it doesn't signal a warning if
go-mod (tree-sitter grammar) is not available.
-2023-03-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode empty line indentation (bug#61893)
@@ -1993,7 +1993,7 @@
indenting an empty line.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
-2023-03-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve tree-sitter's prev-sibling indent anchor
@@ -2004,14 +2004,14 @@
* lisp/treesit.el (treesit-simple-indent-presets): Add an or form to
handle more cases.
-2023-03-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* lisp/icomplete.el (fido-mode): Enable in-buffer completion (bug#45763).
Backport:
(cherry picked from commit b5c13032538377b0037c745715613693a1580f81)
-2023-03-01 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/icomplete.el: Fix in-buffer completion.
@@ -2023,11 +2023,11 @@
Backport:
(cherry picked from commit a7a984c0ebebb891e2052d8416544f0bd7002007)
-2023-03-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/profiler.c (malloc_probe): Make it safe for GC (bug#60237)
-2023-03-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Fix bug#61847
@@ -2036,7 +2036,7 @@
Also check for `cl-defmethod` since `cl-prin1` can't be loaded before
that anyway.
-2023-03-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Don't disable eldoc when doing edebug"
@@ -2046,7 +2046,7 @@
to show. Bug#56459 needs to be fixed in some more complex
way.
-2023-03-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: work around Tramp instability bug#61350
@@ -2057,7 +2057,7 @@
(use-tramp-ssh-controlmaster-options): Forward declare
(eglot--connect): Set variables to unconditionally disable ControlMaster.
-2023-03-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-indent-region
@@ -2068,7 +2068,7 @@
* lisp/treesit.el (treesit-indent-region): Handle the case where
ANCHOR or OFFSET is nil specially.
-2023-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Replace C++ comments with C style equivalents
@@ -2076,7 +2076,7 @@
* src/bytecode.c (exec_byte_code):
* src/xdisp.c (face_at_pos): Do not use C++-style comments!
-2023-02-28 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: fix M-x eglot-show-workspace-configuration (bug#61866)
@@ -2098,7 +2098,7 @@
(eglot--workspace-configuration-plist): Rework.
(eglot-handle-request): Simplify.
-2023-02-28 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-mode: Fix method call indentation in rhs of multiple assignment
@@ -2107,18 +2107,18 @@
* test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add case.
-2023-02-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp.el (tramp-remote-path): Improve docstring.
-2023-02-28 Felix <felix.dick@web.de> (tiny change)
+2023-04-15 Felix <felix.dick@web.de> (tiny change)
Minor change in 'dired--find-possibly-alternative-file'
* lisp/dired.el (dired--find-possibly-alternative-file): Don't
kill the buffer if the directory is shown in other windows.
-2023-02-28 Felix <felix.dick@web.de> (tiny change)
+2023-04-15 Felix <felix.dick@web.de> (tiny change)
Implement prefix arg for 'c-ts-mode-toggle-comment-style'
@@ -2126,14 +2126,14 @@
Actually implement the optional numeric arg mentioned in the
docstring.
-2023-02-28 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Defaults to zero for image-dired--number-of-thumbnails
* lisp/image/image-dired.el (image-dired--number-of-thumbnails):
Defaults zero to avoid wrong type argument error. (Bug#61734)
-2023-02-27 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Rename the newly added -ref- faces to -use-
@@ -2141,7 +2141,7 @@
(font-lock-property-use-face): Rename from font-lock-variable-ref-face
and font-lock-property-ref-face. Update all references (bug#61655).
-2023-02-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: support multiple labels in same inlay hint
@@ -2152,7 +2152,7 @@
InlayHintLabelPart.
(eglot--update-hints-1): Support multiple labels for same hint.
-2023-02-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: don't paint hints outside requested region (bug#61812)
@@ -2160,7 +2160,7 @@
(eglot--update-hints-1): Return early if hint is outside the
requested inlay hint range.
-2023-02-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: protect against unintended field text motion (bug#61726)
@@ -2173,14 +2173,14 @@
(eglot-handle-notification, eglot--xref-make-match)
(eglot-completion-at-point): Use it.
-2023-02-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix description of 'desktop-save-mode'
* doc/emacs/misc.texi (Saving Emacs Sessions): Adjust to changes
in 'desktop-path'. Reported by Petteri Hintsanen <petterih@iki.fi>.
-2023-02-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Adjust tree-sitter defun navigation (bug#61617)
@@ -2223,7 +2223,7 @@
(treesit--ert-defun-navigation-top-level-master): Change tests to
reflect the new expectation.
-2023-02-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Simplify c-ts-mode--top-level-label-matcher
@@ -2231,7 +2231,7 @@
(c-ts-mode--top-level-label-matcher): Make more assumptions and remove
the loop, so it's faster in large files.
-2023-02-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
New tree-sitter indent anchor standalone-parent used by c-ts-mode
@@ -2268,7 +2268,7 @@
* lisp/treesit.el:
(treesit-simple-indent-presets): New anchor standalone-parent.
-2023-02-26 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-smie-rules: Fix misindentation of a method call after assignment
@@ -2279,11 +2279,11 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-after-operator-indent.rb:
Add corresponding example.
-2023-02-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lib-src/etags.c (process_file_name): Free malloc'ed vars (bug#61819).
-2023-02-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: rename and redocument encoding-related functions (bug#61726)
@@ -2307,7 +2307,7 @@
* test/lisp/progmodes/eglot-tests.el (eglot-test-lsp-abiding-column)
(eglot-test-lsp-abiding-column-1): Use new function/variable names.
-2023-02-26 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Eglot: support positionEncoding LSP capability (bug#61726)
@@ -2317,7 +2317,7 @@
(eglot--managed-mode): Set 'eglot-current-column-function' and
'eglot-move-to-bytewise-column' appropriately.
-2023-02-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Augusto Stoffel <arstoffel@gmail.com>
Eglot: use faster strategy for moving to LSP positions (bug#61726)
@@ -2326,28 +2326,28 @@
* lisp/progmodes/eglot.el (eglot-move-to-lsp-abiding-column): Rewrite.
-2023-02-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix mule-tests in UTF-8 locales
* test/lisp/international/mule-tests.el
(sgml-html-meta-no-post-less-than-10lines): Fix test condition.
-2023-02-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'vertical-motion' when display strings are around
* src/indent.c (Fvertical_motion): Correct bidi-related condition
for character position, when we didn't move vertically. (Bug#61636)
-2023-02-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
python-ts-mode: Fix single-quote string fontification
* lisp/progmodes/python.el (python--treesit-fontify-string):
Look for ', not just ", as opening delimiter (bug#61796).
-2023-02-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix infloop in bidi.c
@@ -2357,7 +2357,7 @@
embeddings. Failure to reset isolate_level will cause us infloop
when we see a PDI. Reported by Matt Beshara <m@mfa.pw>.
-2023-02-25 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Check the anchor along with the offset in treesit-indent-region
@@ -2365,7 +2365,7 @@
having a non-nil offset is not enough, we need a non-nil anchor as
well.
-2023-02-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Align to prev sibling for c-ts-mode indentation
@@ -2377,7 +2377,7 @@
rest to their previous sibling. Remove bracketless statement rules
that I forgot to remove previously.
-2023-02-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-common-statement-offset and c-ts-common--node-is
@@ -2387,7 +2387,7 @@
(c-ts-common-statement-offset): Do indent a level if the "if" in the
"else if" is on an independent line.
-2023-02-24 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
typescript-ts-mode: Highlight non-shorthand destructuring bindings
@@ -2395,7 +2395,7 @@
(typescript-ts-mode--font-lock-settings): Highlight non-shorthand
variable bindings in object destructuring.
-2023-02-24 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add more/finer faces for tree-sitter
@@ -2459,21 +2459,21 @@
* lisp/textmodes/yaml-ts-mode.el
(yaml-ts-mode--font-lock-settings): Same.
-2023-02-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid crashes in batch mode due to lack of frame face cache
* src/xfaces.c (Finternal_merge_in_global_face): Handle frames
with no face cache.
-2023-02-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add Tramp version integrated in Emacs 28.3
* lisp/net/trampver.el (customize-package-emacs-version-alist):
Add Tramp version integrated in Emacs 28.3.
-2023-02-24 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Avoid reusing :lisp-dir twice in 'package-vc--main-file'
@@ -2483,7 +2483,7 @@
This avoid appending the contents of :lisp-dir twice, in case it is
specified both in pkg-spec and pkg-desc.
-2023-02-24 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure right package-desc-type before installing package
@@ -2491,7 +2491,7 @@
code from 'package-vc-install'.
(package-vc-install): Remove copying. (Bug#61669)
-2023-02-24 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Restore invisibility of symlink target on exiting wdired-mode
@@ -2500,7 +2500,7 @@
* test/lisp/wdired-tests.el (wdired-test-bug61510): New test.
-2023-02-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: fix jit-lock inlay hint bugs
@@ -2544,7 +2544,7 @@
* lisp/progmodes/eglot.el (eglot--update-hints): Fix bugs.
-2023-02-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: fix inlay hint with label collection instead of string
@@ -2553,7 +2553,7 @@
* lisp/progmodes/eglot.el (eglot--update-hints-1): Fix bug when
inlay hint contains collection of labels.
-2023-02-24 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix insertion of keyboard macro containing named keys
@@ -2568,7 +2568,7 @@
(Bug#61700)
-2023-02-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: simplify inlay hints implementation with jit-lock
@@ -2601,7 +2601,7 @@
(eglot--update-hints): Add function.
(eglot-inlay-hints-mode): Simplify.
-2023-02-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: update inlay hints on window configuration changes
@@ -2609,7 +2609,7 @@
(eglot--inlay-hints-after-window-config-change): New helper.
(eglot-inlay-hints-mode): Use it.
-2023-02-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: display completion label when safe
@@ -2631,7 +2631,7 @@
* lisp/progmodes/eglot.el (eglot-completion-at-point): Adjust.
-2023-02-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of VC commands, including in Dired
@@ -2645,14 +2645,14 @@
* lisp/vc/vc.el (vc-print-log, vc-log-search, vc-log-mergebase)
(vc-log-view-type, vc-print-root-log, vc-next-action): Doc fixes.
-2023-02-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/maintaining.texi: More mentions of marked files in Dired.
(Basic VC Editing, Old Revisions, VC Change Log): Add more mentions of
ability to include the marked files to the VC fileset in Dired (bug#61712).
-2023-02-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: implement inlay hints (bug#61412, bug#61066)
@@ -2720,7 +2720,7 @@
* doc/misc/eglot.texi (Eglot Features): Mention inlay hints.
(Eglot Variables): Mention eglot-lazy-inlay-hints.
-2023-02-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: run eglot-managed-mode-hook after LSP didOpen
@@ -2732,14 +2732,14 @@
Run eglot-managed-mode-hook here.
(eglot--managed-mode): Not here.
-2023-02-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: restore eldoc-documentation-functions on shutdown
* lisp/progmodes/eglot.el (eglot--managed-mode): Restore
eldoc-documentation-functions when shutting down eglot.
-2023-02-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: simplify capability-checking code
@@ -2750,7 +2750,7 @@
(eglot-format, eglot-completion-at-point, eglot-rename)
(eglot-code-actions): Use new eglot--server-capable-or-lose.
-2023-02-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: go back to setting eldoc-documentation-strategy again
@@ -2782,7 +2782,7 @@
* lisp/progmodes/eglot.el (eglot--managed-mode): Set
eldoc-documentation-strategy to eldoc-documentation-compose.
-2023-02-22 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Yield to erc-move-to-prompt before unhiding prompt
@@ -2794,11 +2794,11 @@
* test/lisp/erc/erc-tests.el (erc-hide-prompt): Use `erc--target'
instead of `erc-default-recipients' because this is new code.
-2023-02-22 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
* lisp/progmodes/python.el (python--import-sources): Fix regexp (bug#61648)
-2023-02-22 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Do not error out on non image file (bug#61639)
@@ -2806,7 +2806,7 @@
(image-dired-display-thumbs): Do not insert non image file and do not
display image-dired buffer if it is empty.
-2023-02-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Explain effect of variable-pitch fonts on fill-column
@@ -2817,48 +2817,48 @@
variable-pitch fonts with 'fill-column' and its indicator.
(Bug#61677)
-2023-02-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid division by zero in get_narrowed_* functions
* src/xdisp.c (get_narrowed_width, get_narrowed_len): Return at
least 1 as the value. (Bug#61704)
-2023-02-21 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
* etc/NEWS: Mention new buffer display action alist entries
-2023-02-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix build --without-xdbe
* src/xterm.c (x_end_cr_clip, handle_one_xevent): Condition
double-buffering code on HAVE_XDBE. (Bug#61667)
-2023-02-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve dnd-direct-save-remote-files docstring
* lisp/dnd.el (dnd-direct-save-remote-files): Reword.
-2023-02-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add 'process-status' to process shortdoc
* lisp/emacs-lisp/shortdoc.el (process): Add 'process-status'.
-2023-02-21 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (comp--trampoline-abs-filename): Improve 5d0b45cd67b
-2023-02-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve text about deleting windows
* doc/emacs/windows.texi (Change Window): Improve grammar around
'delete-window-choose-selected'.
-2023-02-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Make 'emacs-news-cycle-tag' work at all levels
@@ -2867,7 +2867,7 @@
* test/lisp/textmodes/emacs-news-mode-resources/cycle-tag.erts
(Point-Char): Add tests for 2 and 4 '*' levels.
-2023-02-21 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Repair mistake in a previous edmacro-sanitize-string change
@@ -2879,7 +2879,7 @@
(cherry picked from commit 4eefadad0670ad1c3da2505d734e528d54c76bef)
-2023-02-20 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
regex-emacs.c: Reduce the use of backtracking a bit further
@@ -2892,7 +2892,7 @@
* test/src/regex-emacs-tests.el (regexp-tests-backtrack-optimization):
Add a few tests.
-2023-02-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: respect user's Eldoc configuration by default
@@ -2934,7 +2934,7 @@
* lisp/progmodes/eglot.el (eglot--managed-mode): Don't set Eldoc
variables greedily.
-2023-02-20 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Make the native compiler always use `make-temp-file' for temporary files
@@ -2943,11 +2943,11 @@
`make-temp-file-internal'.
* lisp/emacs-lisp/comp.el (comp--trampoline-abs-filename): Likewise.
-2023-02-20 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Update to Transient v0.3.7-216-gfe40342
-2023-02-20 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add declaration_list to c-ts-common-indent-type-regexp-alist
@@ -2956,25 +2956,25 @@
* test/lisp/progmodes/c-ts-mode-resources/indent.erts (Code): Add a
test case.
-2023-02-20 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Typescript-ts-mode: Add switch case handling
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): New rules.
-2023-02-20 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix object initializer for csharp-mode (bug#61541)
* lisp/progmodes/csharp-mode.el (csharp-guess-basic-syntax): Make sure
we check the openers as well as closers.
-2023-02-20 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1-34-geea8da
-2023-02-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve tree-sitter indent anchor prev-adaptive-prefix (bug#61314)
@@ -2998,7 +2998,7 @@
this-line-has-prefix, base what anchor to return on the value of
this-line-has-prefix and whether the prev line has a prefix.
-2023-02-19 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Adjust jsx indentation
@@ -3015,7 +3015,7 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-base-mode): Add more indent-chars and layout rules.
-2023-02-19 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Cleanup preproc indent for c-ts-mode (bug#61558)
@@ -3025,7 +3025,7 @@
(c-ts-mode--preproc-offset): New helper anchor function to calculate
indent offset.
-2023-02-19 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add comment style toggle for c-ts-mode (bug#61550)
@@ -3036,14 +3036,14 @@
(c-ts-mode): Set modeline.
(c++-ts-mode): Set modeline.
-2023-02-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/simple.el (choose-completion): Check for completion-in-region-mode.
Don't use base-affixes when completion-use-base-affixes is non-nil
in completion-in-region-mode (bug#61535).
-2023-02-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
rust-ts-mode--font-lock-settings: Avoid the explicit 'default' face
@@ -3055,11 +3055,11 @@
Replace the catch-all query for 'variable' with an enumeration of
possible parent nodes.
-2023-02-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el: Bump the version.
-2023-02-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
xref--insert-xrefs: Use 'shadow' for the line number colon
@@ -3068,13 +3068,13 @@
(cherry picked from commit d6d25a3c221e566de4df5319181e9ba9a8df285e)
-2023-02-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/xref.el (xref--insert-xrefs): Remove extra space (bug#61340).
(cherry picked from commit 643a11c6e5defc0a34da1a53b64aa1e097298923)
-2023-02-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Backport: Fix xref-clear-marker-stack refactoring mistake
@@ -3083,7 +3083,7 @@
(cherry picked from commit dfdc0f5fb7b10e737c3c8e2bdb1eb873a1e91bd7)
-2023-02-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -3093,20 +3093,20 @@
# Conflicts:
# etc/NEWS
-2023-02-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
4a77fcb1478 Update ChangeLog and AUTHORS for Emacs 28.3
-2023-02-19 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
More doc on image-dired-dired-* (bug#61624)
* doc/emacs/dired.texi (Image-Dired): Some fixes and more
documentation about image-dired-dired-* commands.
-2023-02-19 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Eglot: improve treatment of completion items without :sortText (bug#61532)
@@ -3116,7 +3116,7 @@
* lisp/progmodes/eglot.el (eglot-completion-at-point): Simplify.
-2023-02-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix invocation of File->Close from the menu bar
@@ -3128,28 +3128,28 @@
CHOICES and don't display the prompt in the echo area if GUI
dialog is used. Use 'use-dialog-box-p'. (Bug#61553)
-2023-02-19 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Update thumbnail buffer's header more
* lisp/image/image-dired.el (image-dired-display-thumbs): Call
image-dired--update-header-line. (Bug#61508)
-2023-02-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit-query-validate): Fix reusing the output buffer
* lisp/treesit.el (treesit-query-validate): Fix the "Buffer is
read-only" error when an output buffer already exists.
-2023-02-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(rust-ts-mode--font-lock-settings): Highlight closure parameters
* lisp/progmodes/rust-ts-mode.el
(rust-ts-mode--font-lock-settings): Highlight closure parameters.
-2023-02-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix `native-comp-enable-subr-trampolines' semantic
@@ -3157,14 +3157,14 @@
`native-comp-enable-subr-trampolines' relative to
`invocation-directory'.
-2023-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'just-one-space' and 'delete-horizontal-space'
* lisp/simple.el (just-one-space, delete-horizontal-space):
Mention the effect of prefix argument. (Bug#61609)
-2023-02-18 martin rudalics <rudalics@gmx.at>
+2023-04-15 martin rudalics <rudalics@gmx.at>
Fix 'display-buffer-use-least-recent-window'
@@ -3185,7 +3185,7 @@
(The Zen of Buffer Display): Improve and update documentation of
window selection and display facilities.
-2023-02-18 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix point moving when calling python-shell-send-region
@@ -3197,21 +3197,21 @@
(python-shell-buffer-substring-*): Use
`python-tests-should-not-move'. (Bug#61463)
-2023-02-18 Omar Polo <op@omarpolo.com>
+2023-04-15 Omar Polo <op@omarpolo.com>
(project-try-vc): Remove unused defvar/require
* lisp/progmodes/project.el (project-try-vc):
Remove unused defvar/require (bug#61577).
-2023-02-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete redundant question from Gnus FAQ
* doc/misc/gnus-faq.texi (FAQ 1-2): Delete redundant question.
(FAQ 1-1, FAQ 1-3): Adjust accordingly.
-2023-02-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Slightly improve hashcash documentation
@@ -3220,7 +3220,7 @@
* lisp/gnus/message.el (message-generate-hashcash): Improve
docstring.
-2023-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix cursor motion when there's line-prefix and display string at BOL
@@ -3228,7 +3228,7 @@
'wrap-prefix' when the screen line has a display string at its
beginning. (Bug#61580)
-2023-02-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix comment in treesit_record_change (bug#61369)
@@ -3264,14 +3264,14 @@
* src/treesit.c (treesit_record_change): Update comment.
-2023-02-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Spell out RPN abbreviation in Calc manual intro
* doc/misc/calc.texi (What is Calc, Demonstration of Calc)
(RPN Tutorial): Spell out "Reverse Polish notation" abbreviation.
-2023-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix some uses of 'use-dialog-box'
@@ -3281,14 +3281,14 @@
'last-nonmenu-event' being nil as a mouse event, for the purpose
of using dialog boxes.
-2023-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix hi-lock-tests when 'use-dialog-box' is non-nil
* test/lisp/hi-lock-tests.el (hi-lock-case-fold)
(hi-lock-unhighlight): Bind 'use-dialog-box' to nil.
-2023-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix regression due to change in face sort order by 'face-list'
@@ -3296,18 +3296,18 @@
the face list, which is no longer necessary, since 'face-list's
sorting order has been reversed recently. (Bug#61521)
-2023-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/files.el (file-equal-p): Work around Haiku stat bug.
-2023-02-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(project-vc-backend-markers-alist): Add entry for vc-got
* lisp/progmodes/project.el (project-vc-backend-markers-alist):
Add entry for vc-got (bug#61577). Bump the version.
-2023-02-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project.el: Extract backend->marker association for a defvar
@@ -3315,7 +3315,7 @@
Extract from 'project-try-vc'.
(project-try-vc): Update accordingly (bug#61577).
-2023-02-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't completely clip into visible range in treesit_record_change
@@ -3332,15 +3332,15 @@
accommodate more text, rather than pushing text at the end to keep the
size of the visible region.
-2023-02-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/treesit.el (treesit-node-at): Update docstring (bug#61529).
-2023-02-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/calc/calc.el (calc-mode): Improve docstring.
-2023-02-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bump Emacs version to 28.3
@@ -3349,28 +3349,28 @@
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 28.3.
-2023-02-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update ChangeLog and AUTHORS for Emacs 28.3
* ChangeLog.3:
* etc/AUTHORS: Update for Emacs 28.3.
-2023-02-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update HISTORY for Emacs 28.3
-2023-02-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update NEWS for Emacs 28.3
* etc/NEWS: Update for Emacs 28.3.
-2023-02-17 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Merge 'emacs-29' into 'feature/inhibit-native-comp-cleanup'
-2023-02-17 Eli Zaretskii <eliz@gnu.org> (tiny change)
+2023-04-15 Eli Zaretskii <eliz@gnu.org> (tiny change)
Fix order of faces in 'face-list'
@@ -3378,7 +3378,7 @@
decreasing order of face IDs. Patch by Brennan Vincent
<brennan@umanwizard.com>. (Bug#61521)
-2023-02-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow 'icon-title-format' to have the value t
@@ -3392,7 +3392,7 @@
(Basic Parameters): Fix the documentation of the 'title' and
'name' frame parameters.
-2023-02-16 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add electric indent for preproc directives
@@ -3416,7 +3416,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): New rule.
(c-ts-base-mode): Add # to electric-indent-chars.
-2023-02-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Rename 'emacs-news-toggle-tag' to 'emacs-news-cycle-tag'
@@ -3429,7 +3429,7 @@
Rename test from 'emacs-news-toggle-tag', and call
'emacs-news-cycle-tag' with new resource file name.
-2023-02-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add menu to news-mode
@@ -3437,7 +3437,7 @@
for 'emacs-news-delete-temporary-markers'.
(emacs-news-mode-menu): Add menu for common actions.
-2023-02-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Attempt to recognise if a VC package has no Elisp files
@@ -3447,7 +3447,7 @@
ones listed in 'package-vc-non-code-file-names', offering to abort the
installation if none are found.
-2023-02-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix mule-tests under en_US.UTF-8 locale
@@ -3458,14 +3458,14 @@
(sgml-html-meta-auto-coding-function): Fix comparison when
buffer-file-coding-system is of type 'charset'.
-2023-02-15 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Move block closer above declaration_list rule (bug#61531)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Move rule
above the previous rule.
-2023-02-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements in c-ts-mode and docs
@@ -3474,28 +3474,28 @@
* doc/emacs/programs.texi (C Indent): Mention "C-u TAB".
-2023-02-15 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add super node as a keyword
* lisp/progmodes/java-ts-mode.el
(java-ts-mode--font-lock-settings): Add new node.
-2023-02-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete perplexing paragraph from Gnus manual
* doc/misc/gnus.texi (Exiting Gnus): Delete a confusing paragraph,
that may or may not have been intended as a joke. (Bug#61325)
-2023-02-14 ~kby <kby@tilde.team> (tiny change)
+2023-04-15 ~kby <kby@tilde.team> (tiny change)
Eglot: check server capability before sending didSave (bug#61478)
* lisp/progmodes/eglot.el (eglot--signal-textDocument/didSave): check
server capability.
-2023-02-14 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Fix rust-ts-mode type and module highlighting (Bug#61302)
@@ -3503,7 +3503,7 @@
Specify import queries to avoid clashing with scoped identifiers in
the code. Highlight attributes with font-lock-preprocessor-face.
-2023-02-14 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
rust-ts-mode: Highlight variable reassignments
@@ -3514,7 +3514,7 @@
queries to match the 'pattern' child node right away. Add
highlights for 'assignment.
-2023-02-14 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve backward compatibility of save-restriction
@@ -3539,7 +3539,7 @@
* lisp/emacs-lisp/bytecomp.el (byte-compile-save-restriction):
Decrement unbinding count.
-2023-02-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Don't indent template_string contents (bug#61503)
@@ -3547,25 +3547,25 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): Add new rule.
-2023-02-14 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
csharp-ts-mode: fontify compiler directives (bug#61512)
lisp/progmodes/csharp-mode.el: Add tree-sitter-queries for known C#
compiler-directives.
-2023-02-14 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Update to Transient v0.3.7-209-gdab1dfa
-2023-02-14 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Generate trampolines in a temporary directory if no other option is viable
* lisp/emacs-lisp/comp.el (comp--trampoline-abs-filename): Use
temporary file if no other option is viable.
-2023-02-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Rename with/without-narrowing to with/without-restriction
@@ -3584,7 +3584,7 @@
internal--without-narrowing. All callers and documentation
changed.
-2023-02-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el: Rename internal function and variable (bug#60980)
@@ -3593,14 +3593,14 @@
(repeat--clear-prev): Rename internal function from
'repeat--exit'.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix previous change
* lisp/emacs-lisp/generate-lisp-file.el (generate-lisp-file-trailer):
Fix previous change b6e2799aa1c.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Rename native-comp-deferred-compilation-deny-list
@@ -3610,7 +3610,7 @@
native-comp-jit-compilation-deny-list.
(native-comp-deferred-compilation-deny-list): Mark it obsolete.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Rename native-comp-deferred-compilation into native-comp-jit-compilation
@@ -3631,7 +3631,7 @@
* lisp/emacs-lisp/generate-lisp-file.el
(generate-lisp-file-trailer): Likewise.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Rename comp-enable-subr-trampolines into native-comp-enable-subr-trampolines
@@ -3652,11 +3652,11 @@
* lisp/emacs-lisp/comp.el (comp-subr-trampoline-install)
(comp--trampoline-abs-filename): Likewise.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (native-comp-never-optimize-functions): Improve doc
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Support `comp-enable-subr-trampolines' as string value
@@ -3668,18 +3668,18 @@
* src/data.c (Ffset): Use Vcomp_enable_subr_trampolines now.
-2023-02-13 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge branch 'scratch/fix-locked-narrowing'
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Some more `inhibit-native-compile' clean-up
* lisp/emacs-lisp/generate-lisp-file.el (generate-lisp-file-trailer):
Use `native-comp-deferred-compilation'.
-2023-02-13 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Minor improvements to labeled narrowing
@@ -3695,19 +3695,19 @@
* doc/lispref/commands.texi (Command Overview): Use @pxref.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Revert "Add new variable 'inhibit-native-compilation'"
This reverts commit 5fec9182dbeffa88cef6651d8c798ef9665d6681.
-2023-02-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Revert "Rename to inhibit-automatic-native-compilation"
This reverts commit f97993ee667f9be7589825f3a4fbc095d6944ec6.
-2023-02-13 Ulrich Müller <ulm@gentoo.org>
+2023-04-15 Ulrich Müller <ulm@gentoo.org>
Fix spurious display of eclipses in Calendar
@@ -3716,7 +3716,7 @@
* test/lisp/calendar/lunar-tests.el (lunar-test-eclipse-check)
(lunar-test-phase-list): Update tests.
-2023-02-12 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix indentation for closing bracket in c-ts-mode (bug#61398)
@@ -3725,23 +3725,23 @@
(c-ts-base-mode): Add move block type.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New tests.
-2023-02-12 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1-31-gaf1bb1
-2023-02-12 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* src/.gdbinit (nextcons): Amend $.u.cdr to $.u.s.u.cdr (bug#61453).
(cherry picked from commit dde023b63ab82c38d33815409de5552f5bf349d1)
-2023-02-12 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add lambda_expression to c-ts-common-indent-type-regexp-alist
* lisp/progmodes/java-ts-mode.el (java-ts-mode): Tweak regexp.
-2023-02-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Tolerate missing elpa-packages.eld files
@@ -3757,7 +3757,7 @@
about a missing elpa-packages.eld to begin with, we satisfy ourselves
with printing out a message and continuing on.
-2023-02-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid warning about 'load-path' in non-interactive sessions
@@ -3765,14 +3765,14 @@
'user-emacs-directory' in 'load-path' only in interactive
sessions. (Bug#61014)
-2023-02-12 Ulrich Müller <ulm@gentoo.org>
+2023-04-15 Ulrich Müller <ulm@gentoo.org>
Support webkit2gtk-4.1
* configure.ac: Check for webkit2gtk API version 4.1 first, then
fall back to 4.0.
-2023-02-10 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Save and restore the absence of narrowing locks
@@ -3781,7 +3781,7 @@
(narrowing_locks_restore): Remove the narrowing locks if the
buffer had no narrowing locks.
-2023-02-10 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
bug-reference: prevent match-data clobbering (bug#61395)
@@ -3789,7 +3789,7 @@
to syntax-ppss in save-match-data since it can clobber our
match-data (bug#61395).
-2023-02-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename LIMIT to DEPTH in tree-sitter functions (bug#61231)
@@ -3800,7 +3800,7 @@
* src/treesit.c (Ftreesit_search_subtree)
(Ftreesit_induce_sparse_tree): Change LIMIT to DEPTH.
-2023-02-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add 'live' property to treesit-node-check (bug#61235)
@@ -3809,11 +3809,11 @@
(Ftreesit_node_check): Add 'live' property.
* test/src/treesit-tests.el (treesit-node-api): Add tests.
-2023-02-09 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Update to Transient v0.3.7-205-gb8ad0da
-2023-02-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'rmail-summary-output'
@@ -3821,7 +3821,7 @@
messages when 'rmail-output-reset-deleted-flag' is non-nil.
(Bug#61380)
-2023-02-09 Nicolas Martyanoff <nicolas@n16f.net>
+2023-04-15 Nicolas Martyanoff <nicolas@n16f.net>
lisp-mode: add docstring recognition for more common lisp symbols
@@ -3829,25 +3829,25 @@
(define-setf-expander, deftype): Add the 'doc-string-elt'
property for proper docstring highlighting in Common Lisp.
-2023-02-09 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Update to Transient v0.3.7-204-gecff8c2
-2023-02-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix Scala entry in Eglot's DB of LSP servers
* lisp/progmodes/eglot.el (eglot-server-programs): Support Scala
LSP named "metals", in addition to "metals-emacs". (Bug#61312)
-2023-02-08 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Also don't reindent 'identifier' when inside ERROR
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
Also don't reindent 'identifier' when inside ERROR.
-2023-02-08 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix indentation inside empty if/unless/case/def
@@ -3857,13 +3857,13 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el
(ruby-ts-indent-empty-if-else): New test.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add an extensive test for labeled (locked) narrowing
* test/src/buffer-tests.el (test-labeled-narrowing): New test.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Update the documentation about labeled (locked) narrowing
@@ -3907,7 +3907,7 @@
that the buffer is narrowed around 'pre-command-hook' and
'post-command-hook' when the buffer text includes very long lines.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Rename two long line optimizations variables
@@ -3920,7 +3920,7 @@
* src/keyboard.c (safe_run_hooks_maybe_narrowed): Use the new
names.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add specific symbols for narrowings
@@ -3930,14 +3930,14 @@
* src/keyboard.c (syms_of_keyboard): Define symbol.
(safe_run_hooks_maybe_narrowed): Use it.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add 'without-narrowing' macro
* lisp/subr.el (without-narrowing): New macro, companion (and
almost identical) to 'with-narrowing'.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Make 'narrowing-lock' and 'narrowing-unlock' internal
@@ -3950,7 +3950,7 @@
* lisp/subr.el (internal--with-narrowing): Use the new name.
-2023-02-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix 'save-restriction' for narrowing locks
@@ -3968,34 +3968,34 @@
* src/comp.c (helper_save_restriction): Save and restore narrowing
locks.
-2023-02-08 LensPlaysGames <lensplaysgames@gmail.com> (tiny change)
+2023-04-15 LensPlaysGames <lensplaysgames@gmail.com> (tiny change)
* lisp/iimage.el (iimage-mode-buffer): Handle multiple regexps.
Go to the beginning of the buffer before searching every regexp in
iimage-mode-image-regex-alist.
-2023-02-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/edmacro.el (edit-kbd-macro): Fix thinko (bug#61333)
Backported from commit 2273cdb40e1939f7c29a669f6a64e6a27738c1a5.
-2023-02-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix crashes inside 'xfree' called from treesit.c
* src/treesit.c (treesit_load_language): Always xstrdup 'c_name',
to avoid crashes inside xfree. (Bug#61351)
-2023-02-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make java-ts-mode use the c-ts-common-indent-type-regexp-alist
* lisp/progmodes/java-ts-mode.el:
(java-ts-mode): Setup c-ts-common-indent-type-regexp-alist.
-2023-02-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation
@@ -4026,7 +4026,7 @@
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
-2023-02-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation
@@ -4036,7 +4036,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Add rules.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: Add tests
-2023-02-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation (bug#61291)
@@ -4048,7 +4048,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): New rule.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
-2023-02-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(eglot-completion-at-point): Return correct values in :company-kind
@@ -4057,7 +4057,7 @@
The convention is to use kebab case rather than plain downcasing.
Reported in https://github.com/company-mode/company-mode/issues/1370.
-2023-02-06 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Tighten and simplify typescript compilation-mode regexps (bug#61104)
@@ -4067,7 +4067,7 @@
In collaboration with Jostein Kjønigsen.
-2023-02-06 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Clarify bug-reference-auto-setup-functions docstring.
@@ -4075,11 +4075,11 @@
Add clarification to docstring that this variable is for packages, not
for users.
-2023-02-06 Aleksandr Vityazev <avityazev@posteo.org>
+2023-04-15 Aleksandr Vityazev <avityazev@posteo.org>
* lisp/treesit.el (treesit): Fix shortdoc example form (bug#61318).
-2023-02-06 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Use c-ts-common-statement-offset in java-ts-mode (bug#61142)
@@ -4096,7 +4096,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Add indent
rules for bracketless statements.
-2023-02-06 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add array_initializer to java-ts-mode
@@ -4114,14 +4114,14 @@
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): New
matcher.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
go-ts-mode: Highlight variable declarations
* lisp/progmodes/go-ts-mode.el (go-ts-mode--font-lock-settings):
Highlight variable declarations in 'definition' feature.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
go-ts-mode: Fix highlighting of function name in call_expression
@@ -4129,14 +4129,14 @@
Remove :override from the 'property' rules and move them above
'variable' (bug#61302). Just like in rust-ts-mode.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
c-ts-mode: Highlight "property functions" as functions
* lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings):
Highlight "property functions" as functions (bug#61302).
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
rust-ts-mode: Fix highlighting of function name in call_expression
@@ -4144,7 +4144,7 @@
Remove :override from the 'property' rules and move them above
'variable' (bug#61302).
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
rust-ts-mode--font-lock-settings: Improve consistency
@@ -4153,7 +4153,7 @@
as type. The existing rules will handle it when it does look like a
type (capitalized).
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Make sure 'M-x show-paren-local-mode' turns on right away
@@ -4161,7 +4161,7 @@
'show-paren-function'.
(show-paren-local-mode): Use it in the :variable getter (bug#61098).
-2023-02-05 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Add to bug-reference-auto-setup-functions after its declaring defvar
@@ -4172,13 +4172,13 @@
* lisp/progmodes/bug-reference.el (bug-reference-auto-setup-functions):
Add to bug-reference-auto-setup-functions after its declaring defvar.
-2023-02-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc.el (vc-find-revision-no-save): Fix parens (bug#61256).
Move '(setq failed nil)' from UNWINDFORMS of 'unwind-protect' to BODYFORM.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix inability to turn show-paren-local-mode on manually (bug#61098)
@@ -4187,7 +4187,7 @@
show-paren-predicate check in show-paren-function also checks
whether a local (non-nil) value of this variable exists.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
rust-ts-mode: Highlight variable declarations
@@ -4199,11 +4199,11 @@
Rename from 'rust-ts-mode--fontify-parameter'. Check the id node's
parent to avoid touching type identifiers.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
rust-ts-mode--indent-rules: Indent to 0 at top level
-2023-02-05 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Ensure upper bound of font-lock region is less than point-max
@@ -4213,7 +4213,7 @@
* lisp/font-lock.el (font-lock-default-fontify-region): Set `end' to point-max
if it is greater that it.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Highlight more complex function parameters
@@ -4221,7 +4221,7 @@
(rust-ts-mode--fontify-parameter): New function.
(rust-ts-mode--font-lock-settings): Use it.
-2023-02-05 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
No longer use transient in isearch-emoji-by-name
@@ -4233,7 +4233,7 @@
and returns a list of the glyph and all derivations, if any.
(emoji--choose-emoji): Use 'emoji--read-emoji'.
-2023-02-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Make highlighting more regular across TS modes (bug#61205)
@@ -4256,21 +4256,21 @@
(rust-ts-mode--font-lock-settings): Same. And also change "scoped
identifiers" highlights to only match capitalized names.
-2023-02-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document 'plistp'
* doc/lispref/lists.texi (Property Lists): Document 'plistp'.
(Bug#61293)
-2023-02-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of raised/lowered composed text
* src/xdisp.c (fill_gstring_glyph_string): Adjust the base line of
the glyph string due to subscript/superscript. (Bug#61290)
-2023-02-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix installation of tree-sitter grammar on MS-Windows
@@ -4278,14 +4278,14 @@
failure on MS-Windows when the old DLL is still being used.
(Bug#61289)
-2023-02-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update the Emacs FAQ for Emacs 29
* doc/misc/efaq.texi (New in Emacs 29, History of Emacs): Add new
section about Emacs 29.
-2023-02-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix byte-compilation of *-ts-mode.el files
@@ -4293,7 +4293,7 @@
use, to prevent failure in byte-compiling modes which require this
file. (Bug#61282)
-2023-02-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make c-ts-mode-set-style's effect local (bug#61245)
@@ -4311,7 +4311,7 @@
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: Use
c-ts-mode-set-style.
-2023-02-04 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
c-ts-mode: Highlight name in parameter declarations
@@ -4320,7 +4320,7 @@
(c-ts-mode--fontify-declarator): Check that identifier was found.
Some declarations can miss identifier name.
-2023-02-04 Davide Masserut <dm@mssdvd.com>
+2023-04-15 Davide Masserut <dm@mssdvd.com>
Fix switch statement indentation for go-ts-mode (bug#61238)
@@ -4332,14 +4332,14 @@
* test/lisp/progmodes/go-ts-mode-tests.el: New file with go-ts-mode
tests.
-2023-02-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix bidi reordering of sequence of whitespace characters before a TAB
* src/bidi.c (bidi_level_of_next_char): Test the current level
only for characters whose original type is BN. (Bug#61269)
-2023-02-04 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add tests for compilation support for TypeScript (bug#61104)
@@ -4347,21 +4347,21 @@
(compile-tests--test-regexps-data): Add new test-cases.
(compile-test-error-regexps): Increase expected errors
-2023-02-04 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Add support for TypeScript compilation to compile.el (bug#61104)
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Add regexps.
-2023-02-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Don't clobber match data in 'y-or-n-p'
* lisp/subr.el (y-or-n-p): Avoid clobbering caller's match data.
(Bug#61091)
-2023-02-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Refine the previous change
@@ -4373,7 +4373,7 @@
Differentiate the %r{} literals from /.../ ones -- tree-sitter
parses them exactly the same.
-2023-02-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add syntax-propertize-function to ruby-ts-mode
@@ -4383,7 +4383,7 @@
(ruby-ts--parser-after-change): New function.
(ruby-ts-mode): Use both of them.
-2023-02-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'header-line-indent-mode'
@@ -4400,7 +4400,7 @@
* etc/NEWS: Enhance the announcement of 'header-line-indent-mode'.
-2023-02-03 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't casemap erc-sasl-user when set to :nick
@@ -4413,7 +4413,7 @@
leaving such preparation in the hands of the server. This bug was
introduced with changes new to ERC 5.5 and Emacs 29 (bug#29108).
-2023-02-03 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve keymap-global-set and keymap-local-set interactive use fix
@@ -4422,7 +4422,7 @@
specification to a string. Add `advertised-calling-convention'
declarations. (Bug#61149)
-2023-02-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make c-ts-mode indent tests side-effect-free
@@ -4442,7 +4442,7 @@
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: Use
c-ts-mode-set-local-style to set the indent style locally.
-2023-02-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Call treesit_record_change in insert_from_gap_1
@@ -4459,7 +4459,7 @@
* admin/notes/tree-sitter/treesit_record_change: New file.
-2023-02-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use c-ts-common-statement-offset for closing brackets too
@@ -4472,7 +4472,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Use
c-ts-common-statement-offset for closing brackets.
-2023-02-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements in sqlite.c
@@ -4482,7 +4482,7 @@
call. Patch by Helmut Eller <eller.helmut@gmail.com>.
(Bug#61165)
-2023-02-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit_predicate_match): Match node text against regexp without consing
@@ -4498,7 +4498,7 @@
Remove function.
(ruby-ts--font-lock-settings): Use the regexp with :match directly.
-2023-02-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of gdb-mi's dedicated windows
@@ -4506,7 +4506,7 @@
buffer and commands to show individual specialized windows.
Improve indexing.
-2023-02-02 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Avoid spurious pause in kill-ring-save (Bug#60841)
@@ -4536,28 +4536,28 @@
a documented valid value for that attribute.
* etc/NEWS: Announce user option.
-2023-02-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Change the default of 'treesit-defun-tactic' for 'c-ts-mode'
* lisp/progmodes/c-ts-mode.el (c-ts-mode): Set
'treesit-defun-tactic' as appropriate for C. (Bug#61208)
-2023-02-02 Eli Zaretskii <eliz@gnu.org> (tiny change)
+2023-04-15 Eli Zaretskii <eliz@gnu.org> (tiny change)
Fix docstring fontification of CL's 'defstruct'
* lisp/emacs-lisp/lisp-mode.el (defstruct): Set 'doc-string'
property. Patch by Nicolas Martyanoff <nicolas@n16f.net>.
-2023-02-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Teach 'hs-minor-mode' about tree-sitter based modes
* lisp/progmodes/hideshow.el (hs-special-modes-alist): Teach
'hs-minor-mode' about tree-sitter based modes. (Bug#61232)
-2023-02-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'repeat-mode' and related variables
@@ -4579,7 +4579,7 @@
* doc/emacs/basic.texi (Repeating): Clarify and improve wording of
'repeat-mode' documentation.
-2023-02-01 Nicolas Martyanoff <nicolas@n16f.net>
+2023-04-15 Nicolas Martyanoff <nicolas@n16f.net>
(eshell--complete-commands-list): Fix regression in fix to bug#48995
@@ -4588,43 +4588,43 @@
* lisp/eshell/em-cmpl.el (eshell--complete-commands-list):
Fix misuse of `completion-table-dynamic` when completing a file name.
-2023-02-01 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/basic.texi (Repeating): Mention describe-repeat-maps (bug#61183).
* lisp/repeat.el (describe-repeat-maps): Add more explanation to
the docstring. Suggested by Robert Pluim <rpluim@gmail.com>.
-2023-02-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Unbreak the MS-Windows build
* src/treesit.c (ts_query_pattern_count) [WINDOWSNT]: Load from
the library and define as macro.
-2023-01-31 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(Ftreesit_query_capture): Cache list of predicates for given pattern index
* src/treesit.c (Ftreesit_query_capture):
Cache list of predicates for given pattern index (bug#60953).
-2023-01-31 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* lisp/keymap.el (keymap-global-unset): Correct prompt
-2023-01-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix cursor-in-echo-area on TTY frames
* src/dispnew.c (update_frame_1): Fix off-by-one error when
positioning the cursor in the echo-area. (Bug#61184)
-2023-01-30 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Update to Transient v0.3.7-196-gb91f509
-2023-01-30 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix a coding bug in c-make-keywords-re. This should fix bug #61135
@@ -4632,14 +4632,14 @@
result regexp when argument ADORN is `appendable'. This fully fixes a bug
which was half-fixed on 2019-01-22.
-2023-01-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el (isearch-emoji-by-name): Disable derived emoji (bug#60740).
Let-bind emoji--derived to nil to avoid the subsequent selection
of derived emoji that fails in transient.el.
-2023-01-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix keymap inheritance in descendants of 'c-ts-base-mode'
@@ -4647,7 +4647,7 @@
'c-ts-mode-map'.
(c-ts-base-mode): Adjust accordingly. (Bug#60983)
-2023-01-30 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix interactive use of `keymap-local-set' and `keymap-global-set'
@@ -4655,18 +4655,18 @@
read key sequence to a string when called interactively. Based on a
patch from Stephen Berman <stephen.berman@gmx.net>. (Bug#61149)
-2023-01-30 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix password prompt in Tramp (do not merge)
* lisp/net/tramp.el (tramp-password-prompt-regexp):
Allow alternative trailing colons. (Bug#61168)
-2023-01-29 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1-23-gc45a05
-2023-01-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document tree-sitter features in the user manual
@@ -4683,7 +4683,7 @@
(Parser-based Font Lock): New subsections.
* doc/emacs/emacs.texi (Top): Update top-level menu.
-2023-01-29 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Fix dockerfile-ts-mode line continuation indentation (bug#61131)
@@ -4713,7 +4713,7 @@
(dockerfile-ts-mode--line-continuation-p)
(dockerfile-ts-mode--line-continuation-anchor): New functions.
-2023-01-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use treesit-subtree-stat to determine treesit--font-lock-fast-mode
@@ -4724,14 +4724,14 @@
(treesit-font-lock-fontify-region): Enable fast mode based on the
result of treesit-subtree-stat.
-2023-01-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-subtree-stat
* src/treesit.c (Ftreesit_subtree_stat): New function.
* lisp/treesit.el (treesit): Add to shortdoc.
-2023-01-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Move c-ts-mode--statement-offset to c-ts-common.el
@@ -4758,7 +4758,7 @@
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: Make the test
more challenging.
-2023-01-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix <> syntax in rust-ts-mode
@@ -4770,14 +4770,14 @@
(rust-ts-mode--syntax-propertize): New function.
(rust-ts-mode): Set up syntax-propertize-function.
-2023-01-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix spurious errors on Windows when deleting temporary *.eln files
* lisp/emacs-lisp/comp.el (comp--native-compile): On MS-Windows,
ignore errors when deleting a temporary .eln file. (Bug#60996)
-2023-01-28 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix java class member without access modifier (bug#61115)
@@ -4802,7 +4802,7 @@
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): Add new
rule to match edge case of field_declaration indentation.
-2023-01-28 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Make treesit-font-lock-level a defcustom
@@ -4810,7 +4810,7 @@
new defcustom.
(treesit-font-lock-level): Turn it into a defcustom.
-2023-01-28 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add c-ts-mode-set-style and :set for c-ts-mode-indent-style
@@ -4823,7 +4823,7 @@
(c-ts-mode--get-indent-style): New function renamed from
'c-ts-mode--set-indent-style'.
-2023-01-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Minor documentation improvements for outline-minor-mode (bug#61062)
@@ -4832,14 +4832,14 @@
* etc/NEWS: Mention outline-minor-mode for two modes.
-2023-01-28 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
python.el: Use correct regexp when enabling python-ts-mode
* lisp/progmodes/python.el: Use "python[0-9.]*" regexp for
'interpreter-mode-alist', and not 'auto-mode-alist'. (Bug#61090)
-2023-01-27 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Make project-current not error out inside non-existent dirs
@@ -4849,7 +4849,7 @@
* test/lisp/progmodes/project-tests.el
(project-vc-nonexistent-directory-no-error): New test.
-2023-01-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'shell-command-dont-erase-buffer'
@@ -4859,7 +4859,7 @@
affects what is displayed in the echo area after the command.
(Bug#61100)
-2023-01-27 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fix errors in fontification of JavaScript import-statements (bug#61083)
@@ -4880,7 +4880,7 @@
* lisp/progmodes/js.el (js--treesit-font-lock-settings): Add new
import_clause rules that adhere to the comment above.
-2023-01-27 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fix fontification TypeScript of import-statements (bug#61081)
@@ -4913,7 +4913,7 @@
(typescript-ts-mode--font-lock-settings): Tweak import_clause rules to
adhere to the comment above.
-2023-01-26 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Work around package.el transitive dependency bug
@@ -4926,7 +4926,7 @@
the version already required by Project, for the benefit of
Emacs 28 (bug#61048).
-2023-01-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix xt-mouse on terminals that report UTF-8 encoded coordinates
@@ -4935,7 +4935,7 @@
Panteleev <git@cy.md> and Jared Finder <jared@finder.org>.
(Bug#61022)
-2023-01-26 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Fix go-ts-mode indentation and set indent offset to 8 (Bug#61006)
@@ -4944,14 +4944,14 @@
(go-ts-mode--indent-rules): Add indentation for parameters and
interfaces.
-2023-01-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix doc strings of window-splitting commands
* lisp/window.el (split-window-below, split-window-right): Doc
fixes. (Bug#60886)
-2023-01-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix indentation for c-ts-mode (bug#61026)
@@ -4972,7 +4972,7 @@
(c-ts-base-mode): Use the new function.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New tests.
-2023-01-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix call to treesit_record_change in insdel.c
@@ -4982,39 +4982,39 @@
* src/insdel.c (insert_from_buffer): Move to here.
(insert_from_buffer_1): Remove call to treesit_record_change.
-2023-01-26 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add support for building tree-sitter modules with MinGW
* admin/notes/tree-sitter/build-module/build.sh: Add support for
building tree-sitter modules with MinGW.
-2023-01-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp.el (tramp-wrong-passwd-regexp): Fix regexp.
-2023-01-25 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/text.texi (Outline Minor Mode): New node split from "Outline Mode"
(Outline Mode): Move all outline-minor-mode related information to the
new node "Outline Minor Mode" (bug#61062).
-2023-01-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Don't reindent when "class" or "def" is under "ERROR"
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
Don't reindent when "class" or "def" is under "ERROR" (bug#61017).
-2023-01-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
treesit-install-language-grammar: Provide default repo url
* lisp/treesit.el (treesit--check-repo-url): New function.
(treesit--install-language-grammar-build-recipe): Use it (bug#61051).
-2023-01-25 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix Dired face for directory symlinks
@@ -5022,7 +5022,7 @@
symlinks with the value of dired-directory-face rather than its name
as a (nonexistent) face (bug#60977).
-2023-01-25 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Pacify --without-x unused function warning
@@ -5030,13 +5030,13 @@
[HAVE_WINDOW_SYSTEM] (font_maybe_unset_attribute): ...to here, since
the function is used only when we HAVE_WINDOW_SYSTEM (bug#61049).
-2023-01-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Announce outline.el keymaps
* etc/NEWS: Announce new keymaps.
-2023-01-25 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fix fontification of function-valued variables (bug#61053)
@@ -5044,14 +5044,14 @@
(typescript-ts-mode--font-lock-settings): Remove overrides and reorder
the variable_declarator rule.
-2023-01-25 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add new java indent rules
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): Check
for enum_body_declarations and switch_label.
-2023-01-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Handle relative file names in vc-resynch-window and vc-resynch-buffer
@@ -5060,7 +5060,7 @@
use `expand-file-name' in `vc-root-dir'. This fixes the case of
refreshing the buffers after typing `C-x v = C-x v u' (bug#60897).
-2023-01-24 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use named keymaps for outline buttons
@@ -5073,7 +5073,7 @@
(outline--create-button-icons, outline--insert-button): Move
keymaps to separate variables.
-2023-01-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc-bzr.el (vc-bzr--pushpull): Return buffer's process.
@@ -5082,7 +5082,7 @@
* lisp/vc/vc.el (vc-pull-and-push): Expand docstring about
prerequisites for backend to support this command (bug#60569).
-2023-01-23 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Change the default value of objc-font-lock-extra-types to nil
@@ -5095,7 +5095,7 @@
* etc/NEWS: Mention the change in default value of objc-font-lock-extra-types,
and how to get the old behavior back.
-2023-01-23 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't try to make a pipe process for remote processes in Eshell
@@ -5108,22 +5108,22 @@
* test/lisp/eshell/esh-proc-tests.el
(esh-var-test/output/remote-redirect): New test.
-2023-01-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/startup.el (command-line): Fix warning message. (Bug#61014)
-2023-01-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/find-dired.el (find-dired): Fix bug where M-p skips first history item.
Don't apply "skip first duplicate history item" trick when find-args
used as initial input is nil.
-2023-01-22 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1-16-ge37e9b
-2023-01-22 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--predefined-variables): Fix the $` and $' entries
@@ -5132,11 +5132,11 @@
Reported by Mattias Engdegård.
-2023-01-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/find-dired.el (find-dired-with-command): Quote find-command-history.
-2023-01-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Generalize vc-pull-and-push to support more backends (bug#60569)
@@ -5145,7 +5145,7 @@
* lisp/vc/vc.el (vc-pull-and-push): Add code from vc-git-pull-and-push.
-2023-01-22 Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
+2023-04-15 Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
Add test suite for sgml-html-meta-auto-coding-function
@@ -5156,7 +5156,7 @@
(sgml-html-meta-no-post-less-than-10lines)
(sgml-html-meta-no-post-10lines, sgml-html-meta-utf-8-with-bom): Add.
-2023-01-22 Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
+2023-04-15 Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
Fix decoding HTML files from archives
@@ -5167,7 +5167,7 @@
This is the same fix as in #df7ed10e for
sgml-xml-auto-coding-function.
-2023-01-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid crashes in batch Emacs sub-processes on MS-Windows
@@ -5177,7 +5177,7 @@
* src/w32fns.c (emacs_abort): Don't show GUI Abort dialogs in
non-interactive sessions. (Bug#60556)
-2023-01-22 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Tweak BSD style indentation (bug#60984)
@@ -5188,21 +5188,21 @@
* test/lisp/progmodes/c-ts-mode-tests.el
(c-ts-mode-test-indentation-bsd): Add a test for the new style.
-2023-01-22 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix typo of exposed symbol name
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Remove
double hyphen.
-2023-01-22 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix typo after move to common lib (bug#61001)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Use correct
preset.
-2023-01-21 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix two additional cases with ruby-method-call-indent=nil
@@ -5212,14 +5212,14 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-method-call-indent.rb:
Add examples.
-2023-01-21 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-mode.el: Expand some docstrings with examples
* lisp/progmodes/ruby-mode.el (ruby-align-chained-calls)
(ruby-method-params-indent): Expand docstrings with examples.
-2023-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes for Haiku
@@ -5227,7 +5227,7 @@
* lisp/simple.el (normal-erase-is-backspace-setup-frame): Add
support for Haiku.
-2023-01-21 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Move c-like common utils into own library (bug#60961)
@@ -5259,7 +5259,7 @@
(typescript-ts-mode--indent-rules): Refer to the new symbols.
(typescript-ts-base-mode): Use new function.
-2023-01-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix file-regular-p in Tramp
@@ -5272,21 +5272,21 @@
* lisp/net/tramp.el (tramp-handle-file-regular-p): Fix symlink
case. (Bug#60943)
-2023-01-21 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix typo in c-ts-mode (bug#60932)
* lisp/progmodes/c-ts-mode.el (c-ts-mode-indent-block-type-regexp):
enumerator, not enumeratior.
-2023-01-20 Mike Kupfer <kupfer@rawbw.com>
+2023-04-15 Mike Kupfer <kupfer@rawbw.com>
MH-E: handle removal of mhparam libdir from nmh 1.8
* lisp/mh-e/mh-e.el (mh-variant-nmh-info): If "libdir" doesn't
work, try "libexecdir" (Bug#60952) (SF#491).
-2023-01-20 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Use point-min to anchor top-level constructs (bug#60602)
@@ -5297,18 +5297,18 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): New anchor.
-2023-01-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/org/ob-ruby.el: Fix outdated comments.
-2023-01-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(project-try-vc): Add string-start and string-end anchors to marker-re
* lisp/progmodes/project.el (project-try-vc):
Add string-start and string-end anchors to marker-re (bug#60956).
-2023-01-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Make `keymap-set-after' work for menus
@@ -5322,7 +5322,7 @@
(keymap-set-after-menus): New test. Check that we can insert a menu
item after a specific entry.
-2023-01-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use `key-parse' in `keymap-lookup'
@@ -5333,21 +5333,21 @@
* test/src/keymap-tests.el (keymap-set-after-menus): Test the
`keymap-set-after' API.
-2023-01-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve `keymap-set-after' documentation
* doc/lispref/keymaps.texi (Changing Key Bindings): Mention `key-valid-p'
(Modifying Menus): Correct description of KEY arg.
-2023-01-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Handle after arg correctly in `keymap-set-after'
* lisp/keymap.el (keymap-set-after): AFTER: t means the same as nil,
so just change it to nil. (Bug#60867)
-2023-01-20 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't load erc-goodies atop erc.el
@@ -5359,7 +5359,7 @@
requiring `erc-goodies' at the very end of ERC's main library. Special
thanks to Libera.Chat user jrm for reporting this bug.
-2023-01-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make tree-sitter based modes optional
@@ -5382,7 +5382,7 @@
for tree-sitter based modes be conditional on the tree-sitter and
grammar libraries being available. (Bug#60559)
-2023-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Claw back half of the performance drop from last change
@@ -5390,7 +5390,7 @@
New function.
(ruby-ts--font-lock-settings): Use it instead of :match.
-2023-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts-mode): Rename 'builtin-functions' to 'builtin-function'
@@ -5398,7 +5398,7 @@
(ruby-ts-mode): Rename 'builtin-functions' to 'builtin-function',
for consistency with similar features.
-2023-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Highlight builtin methods
@@ -5419,7 +5419,7 @@
(ruby-ts--predefined-variables): Unrelated to the rest of the
patch, add string-start and string-end anchors.
-2023-01-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indent (bug#60873)
@@ -5427,7 +5427,7 @@
(c-ts-mode--statement-offset): Handle the edge case.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: Add a test.
-2023-01-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix various problems in treesit-explore-mode (bug#60800)
@@ -5439,7 +5439,7 @@
2. Make sure desktop-save doesn't save the explorer buffer.
3. Kill the explorer buffer when the source buffer is killed.
-2023-01-19 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Fix an oversight in advice.el
@@ -5449,21 +5449,21 @@
* lisp/emacs-lisp/advice.el (ad-read-advised-function): Adjust to
handle the new type of elements of `ad-advised-functions'.
-2023-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit-simple-indent-presets): Have n-p-gp check for grandparent's presence
* lisp/treesit.el (treesit-simple-indent-presets): Have n-p-gp
check for grandparent's presence before checking its type.
-2023-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-toggle-block: Fix in ruby-ts-mode
* lisp/progmodes/ruby-mode.el (ruby-toggle-block): Make it work
with ruby-ts-mode. ruby-forward-sexp checks ruby-use-smie.
-2023-01-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--indent-rules): Indent inside empty parens properly
@@ -5473,14 +5473,14 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el
(ruby-ts-indent-call-no-args): Add test.
-2023-01-19 Kai Tetzlaff <emacs@tetzco.de>
+2023-04-15 Kai Tetzlaff <emacs@tetzco.de>
Fix bug in 'sieve-manage--append-to-log'
* lisp/net/sieve-manage.el (sieve-manage--append-to-log): Fix
log buffer creation. (Bug#54154) Do not merge to master.
-2023-01-19 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Prevent two classes of "type" prematurely entering c-found-types
@@ -5493,14 +5493,14 @@
being entered into c-found-types. In CASE 19, likewise set unsafe-maybe, to
inhibit bar entering c-found-types.
-2023-01-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Use font-lock-constant-face for true/false/nil
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--font-lock-settings):
Use font-lock-constant-face for true/false/nil.
-2023-01-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--indent-rules): Add a rule for continuation of a hash pair
@@ -5509,7 +5509,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb: Add examples.
-2023-01-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--parent-call-or-bol): Handle more cases with nested literals
@@ -5518,7 +5518,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb: Add examples.
-2023-01-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--statement-container-regexp): Remove "parenthesized_statements"
@@ -5529,7 +5529,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb: Add examples.
-2023-01-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Handle indent in parenless calls much closer to ruby-mode
@@ -5545,7 +5545,7 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el:
Run indent test for ruby-parenless-call-arguments-indent.rb.
-2023-01-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix split-window-below for the case when split-window-keep-point is nil.
@@ -5555,7 +5555,7 @@
only for the selected window.
(split-window-below, split-window-right): Improve docstrings (bug#60886)
-2023-01-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Rebind in read-regexp-map ‘M-c’ to ‘M-s c’ compatible with search-map
@@ -5569,7 +5569,7 @@
(read-regexp-toggle-case-fold): Rename from read-regexp-toggle-case-folding
to more standard name.
-2023-01-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc-dir.el: Make keys ‘% m’ and ‘* %’ compatible with Dired
@@ -5579,7 +5579,7 @@
* doc/emacs/maintaining.texi (VC Directory Commands): Replace ‘%’
with ‘% m’ and ‘* %’. Mention vc-dir-mark-registered-files.
-2023-01-18 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Use proper types for Eshell warnings
@@ -5587,7 +5587,7 @@
* lisp/eshell/em-basic.el (eshell/echo): Don't use ':warning'; that's a
warning level, not a warning type.
-2023-01-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve the documentation of 'auto-mode-alist' search
@@ -5595,7 +5595,7 @@
"recursive extension stripping" using 'auto-mode-alist'.
(Bug#60930)
-2023-01-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Revert "Revert "Add c-or-c++-ts-mode (bug#59613)""
@@ -5604,7 +5604,7 @@
Aaaactually, we need this, otherwise we can't use tree-sitter based C
mode for header files.
-2023-01-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make it harder to misactivate tree-sitter font-lock fast mode
@@ -5619,7 +5619,7 @@
(treesit--font-lock-notifier): Only activate fast mode after 5
offenses.
-2023-01-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Obey the option ruby-method-call-indent
@@ -5633,7 +5633,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb:
Add explicit value for ruby-method-call-indent.
-2023-01-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Obey the option ruby-after-operator-indent
@@ -5647,7 +5647,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb:
Make sure indentation vars are at their default values.
-2023-01-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix indent after operator or conditional
@@ -5663,7 +5663,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb:
Add examples.
-2023-01-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix/change indentation of a continuation method call
@@ -5673,7 +5673,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb:
New examples.
-2023-01-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix indent inside parenthesized_expr and else/end after unless
@@ -5684,7 +5684,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby-ts.rb:
New examples.
-2023-01-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Fix the rules for hanging arrays and hashes
@@ -5697,7 +5697,7 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el: Use it here.
-2023-01-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add more detail about how to invoke Eshell commands
@@ -5709,7 +5709,7 @@
about priority of commands in command form.
(Arguments): Add a cross reference to the Invocation node.
-2023-01-17 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: On removal of "typedef", remove pertinent types from c-found-types
@@ -5743,7 +5743,7 @@
(c-before-change): Call c-before-change-de-typedef.
(c-after-change): Call c-after-change-de-typedef.
-2023-01-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't preserve non-module minor modes in erc-open
@@ -5763,7 +5763,7 @@
`erc-module' symbol property to be defined for mode symbols and
aliases. (Bug#60784.)
-2023-01-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Use correct buffer for local-module vars in erc-open
@@ -5786,14 +5786,14 @@
(erc-scenarios-base-local-modules--var-persistence) Add slightly hacky
test case with promise to improve later when splitting the file.
-2023-01-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of warnings on w32 console
* lisp/emacs-lisp/warnings.el (warnings-suppress): Use alternative
symbol for TTY frames on MS-Windows.
-2023-01-17 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix buffer-list-update-hook for indirect buffers
@@ -5813,7 +5813,7 @@
inhibited. Check that all three buffer hooks, not just
kill-buffer-query-functions, are inhibited.
-2023-01-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-node-first-child-for-pos (bug#60127)
@@ -5824,7 +5824,7 @@
* src/treesit.c (treesit_cursor_first_child_for_byte): New function.
(Ftreesit_node_first_child_for_pos): Use the new function.
-2023-01-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix hfy-exclude-file-rules (bug#60562)
@@ -5835,7 +5835,7 @@
Better doc string.
* lisp/htmlfontify.el (hfy-list-files): Simplify regexp argument.
-2023-01-16 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Prevent ids in temporary "declarators" getting into c-found-types
@@ -5847,7 +5847,7 @@
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1) (CASE 6): When a
'maybe type triggers this case, set `unsafe-maybe' to non-nil.
-2023-01-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix M-x eglot prompt when connection already exists (bug#60557)
@@ -5871,7 +5871,7 @@
* lisp/progmodes/eglot.el (eglot): Rework.
-2023-01-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter indent preset function (bug#60270)
@@ -5880,7 +5880,7 @@
no prefix.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
-2023-01-15 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Support the option ruby-block-indent
@@ -5891,7 +5891,7 @@
* test/lisp/progmodes/ruby-ts-mode-tests.el:
Run indent test for ruby-block-indent.rb.
-2023-01-15 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Improve indentation for jsx
@@ -5900,37 +5900,37 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): Use more parent anchors.
-2023-01-15 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
* lisp/subr.el (while-let): Fix docs if-let->if-let* (bug#60758).
-2023-01-15 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Revert "* lisp/subr.el (while-let): Use if-let, not if-let* (bug#60758)."
This reverts commit 083badc9c122a802080552e7771e78ee47c01e3c.
-2023-01-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bump use-package version for Emacs 29.1
* lisp/use-package/use-package.el: Bump version to 2.4.5.
-2023-01-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve error message from sqlite-mode.el
* lisp/sqlite-mode.el (sqlite-mode-open-file): Add error
checking. (Bug#60490)
-2023-01-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode block comment indentation (bug#60270)
* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--comment-2nd-line-anchor): Handle another edge case.
-2023-01-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode label indent
@@ -5939,7 +5939,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Fix.
(c-ts-mode--top-level-label-matcher): Fix.
-2023-01-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix statement indent for c-ts-mode (bug#59686) (bug#60280)
@@ -5954,7 +5954,7 @@
(c-ts-mode--statement-offset)
(c-ts-mode--close-bracket-offset): New offset functions.
-2023-01-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Allow offset in tree-sitter indent rules to be functions
@@ -5964,7 +5964,7 @@
* lisp/treesit.el (treesit-simple-indent): Try evaluating OFFSET as a
function if it's not integer nor variable.
-2023-01-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Support filling line comments in c-ts-mode
@@ -5978,14 +5978,14 @@
c-ts-mode--fill-block-comment.
(c-ts-mode--fill-block-comment): New extracted function.
-2023-01-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix expansion of wildcards in ls-lisp.el
* lisp/ls-lisp.el (ls-lisp--dired): Fix error message text.
Handle the case of a wildcard specifying directories. (Bug#60819)
-2023-01-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix messages displayed when diary is shown
@@ -5993,14 +5993,14 @@
"...done" message only if there's no important message in the
echo-area. (Bug#60795)
-2023-01-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add constructor_declaration as java-ts-mode defun
* lisp/progmodes/java-ts-mode.el (java-ts-mode): Extend
treesit-defun-type-regexp.
-2023-01-14 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Further improvement for non-string values in pcomplete
@@ -6009,7 +6009,7 @@
argument. Return the value, even when it is not a string, when
index is 'last'. Fixes bug#60464.
-2023-01-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix the case in first-completion revealed by minibuffer-tests
@@ -6019,7 +6019,7 @@
* test/lisp/minibuffer-tests.el (completions-header-format-test):
Revert the recent change.
-2023-01-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix indent and font-lock for annotation_type
@@ -6028,7 +6028,7 @@
(java-ts-mode--font-lock-settings): Add rule for name in
annotation_type_element_declaration.
-2023-01-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
apropos.el: Fix bug#60628
@@ -6038,14 +6038,14 @@
a newline (since that's not the case any more since commit
900b09c0235d54d5), but be more careful not to burp on false positives.
-2023-01-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix indentation of some declarations and statements
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): Add new
rules so that we don't anchor at col 0.
-2023-01-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix indentation of object_expressions in csharp-ts-mode
@@ -6053,7 +6053,7 @@
sure the opening brace is indented at parent-bol, and everything else
is indented.
-2023-01-14 Xi Lu <lx@shellcodes.org>
+2023-04-15 Xi Lu <lx@shellcodes.org>
Replace 'hfy-find-cmd' with 'directory-files-recursively'.
@@ -6062,7 +6062,7 @@
* lisp/htmlfontify.el (hfy-exclude-file-rules): New defcustom.
(hfy-list-files): Reimplement using 'directory-files-recursively'.
-2023-01-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Disable and document 'doc-view-mupdf-use-svg' (bug#58041)
@@ -6070,7 +6070,7 @@
* etc/NEWS: Document. Patch by Visuwesh <visuweshm@gmail.com>.
Do not merge to master.
-2023-01-14 Eshel Yaron <me@eshelyaron.com> (tiny change)
+2023-04-15 Eshel Yaron <me@eshelyaron.com> (tiny change)
Eglot: don't use "nil" as minibuffer initial input
@@ -6082,7 +6082,7 @@
* lisp/progmodes/eglot.el (eglot--guess-contact): Tweak prompt for
major mode. (Bug#60379)
-2023-01-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix dependency bug when building lwlib
@@ -6092,7 +6092,7 @@
Makefiles" that caused lwlib/*.o to not be rebuilt sometimes
when that was needed.
-2023-01-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix use of build_pure_c_string in treesit.c
@@ -6134,14 +6134,14 @@
(syms_of_treesit): Initialize new variables.
-2023-01-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/subr.el (combine-change-calls-1): Fix bug#60467
Don't stop at timestamps. Strip them for now, to be on the safe side.
Don't merge into `master` where we'll use a better fix.
-2023-01-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt tramp-tests.el (do not merge with master)
@@ -6149,14 +6149,14 @@
Rename from `tramp--test-docker-p'. Handle also "podman" method.
Adapt callees.
-2023-01-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix minibuffer-completion tests
* test/lisp/minibuffer-tests.el (completions-header-format-test):
Fix the test which first fired, and then drew the target...
-2023-01-13 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add c-ts-mode tests
@@ -6166,7 +6166,7 @@
* test/lisp/progmodes/c-ts-mode-tests.el: New file with c-ts-mode
tests.
-2023-01-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode--fill-paragraph
@@ -6179,7 +6179,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--fill-paragraph): Fix the
case where there are words before the /*, like the example above.
-2023-01-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix minor issues with 'pp' and related commands
@@ -6190,7 +6190,7 @@
(pp-eval-expression, pp-macroexpand-expression): Honor
'pp-use-max-width'. (Bug#58687)
-2023-01-12 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Equal now recognizes tree-sitter nodes (bug#60659)
@@ -6203,18 +6203,18 @@
(Ftreesit_node_eq): Factor out. Update docstring.
* src/treesit.h (treesit_node_eq): Declare new function.
-2023-01-12 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode comment indentation (bug#60270)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Move the
star rule up.
-2023-01-12 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
* lisp/subr.el (while-let): Use if-let, not if-let* (bug#60758).
-2023-01-12 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
* lisp/simple.el (next-completion): Handle first completion specially.
@@ -6224,7 +6224,7 @@
setting/checking the special text-property 'first-completion' that
is nil at the first call (bug#60411).
-2023-01-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix encoding with 'utf-8-auto'
@@ -6238,18 +6238,18 @@
'with-coding-priority' instead of 'prefer-coding-system', as the
latter has global persistent effect and affects further tests.
-2023-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Report cursor correctly on PGTK when there is a margin
* src/pgtkterm.c (pgtk_draw_window_cursor): Adjust frame_x by
the margin width as well.
-2023-01-11 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6.1
-2023-01-11 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add support for annotation_type_declaration
@@ -6258,7 +6258,7 @@
(java-ts-mode--font-lock-settings): Add font-locking to the type
feature.
-2023-01-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS: Mention incompatible changes in 'outline-minor-mode-cycle-map'.
@@ -6270,7 +6270,7 @@
(outline-minor-mode): Move margin-cycling keys to
'outline-minor-mode-cycle-map'.
-2023-01-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure VC package names are not empty
@@ -6279,14 +6279,14 @@
(package-vc-install): Avoid generating an empty file name, if a URL
ends with a slash, and raise an error if the package name is empty.
-2023-01-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Handle missing package description when unpacking vc packages
* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Create a dummy
descriptor if PKG-DESC is nil.
-2023-01-10 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: partially revert commit from 2022-10-04
@@ -6298,20 +6298,20 @@
property. This allows the full font-lock mechanism to fontify the buffer
correctly.
-2023-01-10 Manuel Uberti <manuel.uberti@inventati.org>
+2023-04-15 Manuel Uberti <manuel.uberti@inventati.org>
Fix reftex-citation docstring (bug#60710)
* lisp/textmodes/reftex-cite.el (reftex-citation): Fix spelling.
-2023-01-10 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve 'describe-char-fold-equivalences' docstring
* lisp/char-fold.el (describe-char-fold-equivalences): Explain what
the output looks like.
-2023-01-10 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Remove obsolete server buffers on MOTD in erc-track
@@ -6330,13 +6330,13 @@
* test/lisp/erc/resources/networks/merge-server/track.eld: New test
data. (Bug#60560.)
-2023-01-10 Manuel Uberti <manuel.uberti@inventati.org>
+2023-04-15 Manuel Uberti <manuel.uberti@inventati.org>
Fix completion-auto-help docstring (bug#60709)
* lisp/minibuffer.el (completion-auto-help): Remove extra period.
-2023-01-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode comment indent
@@ -6344,7 +6344,7 @@
(c-ts-mode--comment-2nd-line-matcher): Also make sure PARENT is a
comment node.
-2023-01-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Highlight identifier in import statements in js-ts-mode
@@ -6354,14 +6354,14 @@
* lisp/progmodes/js.el:
(js--treesit-font-lock-settings): Add import query.
-2023-01-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't print named tree-sitter nodes with parenthesizes (bug#60696)
* src/print.c (print_vectorlike): Use empty string as delimiters if
the node is named.
-2023-01-09 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification for import-statements in typescript-ts-mode
@@ -6371,7 +6371,7 @@
(typescript-ts-mode--font-lock-settings): Add rules to highlight the
actual imports in import-statements.
-2023-01-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode indentation for 2nd line in block comment (bug#60270)
@@ -6393,14 +6393,14 @@
prev-adaptive-prefix doesn't handle the comment-start-skip case (i.e,
2nd line) anymore. (Handled by the new matcher.)
-2023-01-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/diff-mode.el (diff-font-lock-keywords): Check for limit.
This check is necessary since 'diff-beginning-of-hunk' can move
not only backwards, but also forwards (bug#60660).
-2023-01-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Minor improvement for tree-sitter explorer
@@ -6416,7 +6416,7 @@
* lisp/treesit.el (treesit--explorer-refresh): See above.
-2023-01-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make sure NODE is not the root node in tree-sitter indent (bug#60602)
@@ -6436,7 +6436,7 @@
* lisp/treesit.el (treesit-indent-function): Update docstring.
(treesit--indent-1): Make sure NODE is not the root.
-2023-01-08 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix label indent of GNU and Linux style in c-ts-mode (bug#60543)
@@ -6447,7 +6447,7 @@
style.
(c-ts-mode--top-level-label-matcher): New function.
-2023-01-08 Evgeni Kolev <evgenysw@gmail.com>
+2023-04-15 Evgeni Kolev <evgenysw@gmail.com>
Improve go-ts-mode Imenu, navigation and electric pair (bug#60407)
@@ -6468,7 +6468,7 @@
(go-ts-mode): Improve Imenu settings, navigation, add Electric Pair
mode settings.
-2023-01-08 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Revert "Add c-or-c++-ts-mode (bug#59613)"
@@ -6476,7 +6476,7 @@
I forgot about the feature freeze, sorry :-)
-2023-01-08 Benson Chu <bensonchu457@gmail.com> (tiny change)
+2023-04-15 Benson Chu <bensonchu457@gmail.com> (tiny change)
Add back renamed function 'font-lock-fontify-syntactically-region'
@@ -6489,7 +6489,7 @@
* lisp/font-lock.el (font-lock-fontify-syntactically-region):
Add function back, remove its obsolete alias.
-2023-01-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve options and docs of M-x command completion
@@ -6499,11 +6499,11 @@
(execute-extended-command): Mention
'read-extended-command-predicate' in the doc string. (Bug#60645)
-2023-01-07 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6-90-ga6523f
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix string fontification on python-ts-mode (bug#60599)
@@ -6511,7 +6511,7 @@
(python--treesit-fontify-string): Generalize and skip anything
before the first quote character.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix string-interpolation feature of python-ts-mode (bug#60599)
@@ -6520,14 +6520,14 @@
(python--treesit-settings): Use the new function for
string-interpolation.
-2023-01-07 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add indentation rule for concatenated_string (bug#60572)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Indent to
parent-bol.
-2023-01-07 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fix highlighting of variable-declarations in typescript-ts-mode
@@ -6540,7 +6540,7 @@
* lisp/progmodes/typescript-ts-mode.el:
(typescript-ts-mode--font-lock-settings): See above.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix label indentation for Linux style in c-ts-mode (bug#60543)
@@ -6554,7 +6554,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Indent label
to column 1 in Linux style.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove duplicate entries in c-ts-mode's Imenu
@@ -6566,7 +6566,7 @@
(c-ts-mode--defun-for-class-in-imenu-p): New function.
* lisp/progmodes/c-ts-mode.el (c-ts-base-mode): Use the new function.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix use of treesit-ready-p in c/c++-ts-mode
@@ -6574,7 +6574,7 @@
(c-ts-mode)
(c++-ts-mode): Put setup code in a when form.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add documentation for c/c++-ts-mode (bug#60443)
@@ -6584,7 +6584,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode)
(c++-ts-mode): Update docstring.
-2023-01-07 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts--font-lock-settings): Improve highlighting in patterns
@@ -6593,7 +6593,7 @@
variable in the usual case; highlight keys when no value;
highlight the "as pattern" variable.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Optionally include the namespace in c-ts-mode--declarator-identifier
@@ -6603,7 +6603,7 @@
(c-ts-mode--declarator-identifier): New parameter QUALIFIED.
(c-ts-mode--defun-name): Use qualified identifier.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Support namespaces in c++-ts-mode (bug#60397)
@@ -6614,7 +6614,7 @@
(c-ts-base-mode): Add namespace_definition to
treesit-defun-type-regexp.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode--looking-at-star
@@ -6624,7 +6624,7 @@
the character after point but character after BOL. Otherwise
indentation is wrong when point is not at BOL.
-2023-01-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add c-or-c++-ts-mode (bug#59613)
@@ -6633,7 +6633,7 @@
(c-or-c++-ts-mode): New mode.
* etc/NEWS: Mention c-or-c++-ts-mode.
-2023-01-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document the 'definition-name' property.
@@ -6643,14 +6643,14 @@
use 'definition-name' when generating function definitions at run
time. (Bug#60568)
-2023-01-07 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit-simple-indent-presets): Do that for 'or' as well.
* lisp/treesit.el
(treesit-simple-indent-presets): Do that for 'or' as well.
-2023-01-07 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix 'python-shell-buffer-substring' when START is in middle of 1st line
@@ -6660,7 +6660,7 @@
* test/lisp/progmodes/python-tests.el
(python-shell-buffer-substring-18): New test.
-2023-01-07 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Rearrange the "Saving Emacs Sessions" section of the user manual
@@ -6668,14 +6668,14 @@
node more logically with main behavior and important features
near the top. (Bug#60600)
-2023-01-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit-simple-indent-presets): Ensure 'and' works for anchors too
* lisp/treesit.el (treesit-simple-indent-presets):
Rewrite to return the last successful evaluation, not just t.
-2023-01-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit--indent-rules-optimize): Optimize 'and' and 'or' matcher forms
@@ -6684,7 +6684,7 @@
matcher inside (as is the case in ruby-ts--indent-rules, many
times over), this yields a significant performance boost.
-2023-01-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(treesit-simple-indent-presets): Short-circuit 'and' and 'or'
@@ -6692,7 +6692,7 @@
Short-circuit the 'and' and 'or' matchers. To avoid calling all
fns after one returned nil or truthy value, respectively.
-2023-01-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(font-lock-regexp-face): New face
@@ -6706,7 +6706,7 @@
* etc/NEWS: Mention the addition.
-2023-01-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Unify the string interpolation delimiters face across ts modes
@@ -6717,7 +6717,7 @@
Use font-lock-misc-punctuation-face for string interpolation
delimiters.
-2023-01-06 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Highlight more kinds of parameters
@@ -6728,7 +6728,7 @@
Move the 'symbol' matchers lower to make 'hash_key_symbol' lower
priority than hash keys in match patterns.
-2023-01-06 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix `pr-interface'
@@ -6741,7 +6741,7 @@
* test/lisp/wid-edit-tests.el (widget-test-handle-spurious-inline):
Add test to ensure that unnecessary :inline is allowed.
-2023-01-06 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Further generic-related improvements in csharp-ts-mode (bug#60376)
@@ -6750,7 +6750,7 @@
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
New rules.
-2023-01-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Highlight method and block parameters
@@ -6758,7 +6758,7 @@
Add rules for method and block parameters.
(ruby-ts-mode): Add corresponding feature.
-2023-01-05 Perry Smith <pedz@easesoftware.com>
+2023-04-15 Perry Smith <pedz@easesoftware.com>
ruby-ts-mode: Highlight variable assignments
@@ -6768,14 +6768,14 @@
the level 3 for consistency with other ts modes.
Update the Commentary as well.
-2023-01-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Move 'self' and 'super' from constants to keywords
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--font-lock-settings):
Move 'self' and 'super' from constants to keywords.
-2023-01-05 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts-mode): Split font-lock feature 'builtin' into two
@@ -6789,7 +6789,7 @@
(ruby-ts--predefined-constants, ruby-ts--predefined-variables):
Fix docstrings.
-2023-01-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violation due to fill-column indicator face
@@ -6797,7 +6797,7 @@
iterator metrics for the stretch glyph, the one unaffected by the
'fill-column-indicator' face. (Bug#60580)
-2023-01-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/cedet/semantic/symref/grep.el: Support ts-modes (bug#60525)
@@ -6805,7 +6805,7 @@
c-mode -> c-ts-mode, c++-mode -> c++-ts-mode, ruby-mode -> ruby-ts-mode,
python-mode -> python-ts-mode.
-2023-01-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make 'toml-ts-mode' optional
@@ -6814,18 +6814,18 @@
* lisp/textmodes/toml-ts-mode.el (auto-mode-alist): Don't autoload
the addition of 'toml-ts-mode'. (Bug#60559)
-2023-01-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix bug in Tramp multi-hop
* lisp/net/tramp.el (tramp-compute-multi-hops): Make check for
host name more robust. (Bug#60499)
-2023-01-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/files.el (find-sibling-rules): Fix docstring.
-2023-01-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Tree-sitter doc fixes (bug#60524)
@@ -6843,7 +6843,7 @@
duplicated from CONDITION.
(treesit)<define-short-documentation-group>: Fix function names.
-2023-01-04 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fontify C++ function definitions in c-ts-mode (bug#60529)
@@ -6854,7 +6854,7 @@
identifier in a function declarator is buried inside
"qualifier_identifier" nodes.
-2023-01-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(ruby-ts-add-log-current-function): Fix when between two methods
@@ -6872,11 +6872,11 @@
(ruby-add-log-current-method-outside-of-method):
Mirror that change.
-2023-01-03 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
* lisp/vc/vc-git.el (vc-git-checkin): Pass vc-git-diff-switches.
-2023-01-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Extract common code into ruby-base-mode to derive from
@@ -6890,7 +6890,7 @@
* lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode):
Derive from ruby-base-mode. Remove duplicating settings.
-2023-01-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Indentation fixes
@@ -6899,7 +6899,7 @@
(ruby-ts--indent-rules): Indent the curly block closer the same
way as the 'do ... end' closer.
-2023-01-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts--font-lock-settings: Use more standard faces
@@ -6907,7 +6907,7 @@
Use more standard faces for regexp literals and string
interpolation delimiters (following js-ts-mode).
-2023-01-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Standardize the string literal highlights
@@ -6917,14 +6917,14 @@
for symbol array literals, %i().
Combine the matchers for string content and heredocs.
-2023-01-02 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Improve fontification in java-ts-mode (bug#60492)
* lisp/progmodes/java-ts-mode.el (java-ts-mode--font-lock-settings):
Add expression_statement with only identifier support.
-2023-01-02 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fontification improvements in typescript-ts-mode (bug#60500)
@@ -6937,7 +6937,7 @@
(typescript-ts-mode--font-lock-settings): Update rules.
(typescript-ts-mode, tsx-ts-mode): Update feature list.
-2023-01-02 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification consistency in js-ts-mode (bug#60503)
@@ -6945,21 +6945,21 @@
declared parameters in functions, methods and arrow-expressions as
variables.
-2023-01-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(typescript/tsx-ts-mode): Split font-lock feature list into 4 values
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode)
(tsx-ts-mode): Split font-lock feature list into 4 values.
-2023-01-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
js-ts-mode: Move 'string-interpolation' to font-lock level 3
* lisp/progmodes/js.el (js-ts-mode):
Move 'string-interpolation' to font-lock level 3.
-2023-01-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix shrinking of the tab-bar
@@ -6971,7 +6971,7 @@
tab-bar lines degenerate to zero due to integer division.
(Bug#60210)
-2023-01-02 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Fix default-port regression in erc-select-read-args
@@ -6987,11 +6987,11 @@
password prompt and sometimes a non-TLS port when `erc' called
interactively. (Bug#60428.)
-2023-01-01 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6-81-g563a43
-2023-01-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Remove some currently unused functions
@@ -6999,14 +6999,14 @@
(ruby-ts--ancestor-start, ruby-ts--ancestor-is):
Remove some currently unused functions.
-2023-01-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-ts-mode: Highlight singleton method definitions and setters
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--font-lock-settings):
Highlight singleton method definitions and setters.
-2023-01-01 Perry Smith <pedz@easesoftware.com>
+2023-04-15 Perry Smith <pedz@easesoftware.com>
Dmitry Gutov <dgutov@yandex.ru>
Add ruby-ts-mode
@@ -7020,7 +7020,7 @@
* lisp/progmodes/eglot.el (eglot-server-programs):
Add ruby-ts-mode to the Ruby entry.
-2023-01-01 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix fontification of C++ reference return types (bug#60441)
@@ -7028,7 +7028,7 @@
reference_declarator nodes the same as pointer_declarator nodes when
calculating the identifier to fontify.
-2023-01-01 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Adjust function-call fontification in csharp-ts-mode (bug#60376)
@@ -7043,7 +7043,7 @@
Change rules.
(csharp-ts-mode): Update feature list.
-2023-01-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Rewrite Antinews in ELisp manual for Emacs 29
@@ -7051,14 +7051,14 @@
* doc/lispref/elisp.texi (Top): Update the top-level menu for
Antinews.
-2023-01-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update Antinews in the user manual for Emacs 29
* doc/emacs/anti.texi (Antinews): Rewrite for Emacs 29.
* doc/emacs/emacs.texi (Top): Adjust the top-level menu.
-2023-01-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix shortdoc-tests failure with respect to regexp-opt-charset
@@ -7066,7 +7066,7 @@
`regexp-opt-charset` is not autoloaded, and whether `regexp-opt` is
preloaded is configuration-dependent.
-2023-01-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'isearch-open-overlay-temporary'
@@ -7074,7 +7074,7 @@
the overlay passed to the 'isearch-open-invisible-temporary'
function cannot be deleted too early. (Bug#60399)
-2023-01-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document 'use-package' in the 2 main manuals
@@ -7082,7 +7082,7 @@
* doc/lispref/loading.texi (Named Features): Document 'use-package'
and its most important features.
-2022-12-31 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Build recipe interactively in treesit-install-language-grammar
@@ -7093,7 +7093,7 @@
New functions.
(treesit-install-language-grammar): Use the new function.
-2022-12-31 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Tweak csharp-mode font-lock-settings (bug#60376)
@@ -7101,14 +7101,14 @@
Rearrange features.
(csharp-ts-mode): Rearrange features.
-2022-12-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert a recent change which causes errors
* lisp/subr.el (buffer-match-p): Undo last change, as it causes an
error in a timer function of show-paren-mode.
-2022-12-31 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix misspelled functions in shortdoc groups
@@ -7117,7 +7117,7 @@
* test/lisp/emacs-lisp/shortdoc-tests.el (subr-x): Require.
(shortdoc-all-functions-fboundp): New test.
-2022-12-31 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Simplify introduction of use-package manual
@@ -7125,7 +7125,7 @@
the package, since the macro is autoloaded; also correct the macro's
name. (Bug#60366)
-2022-12-31 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix python-shell-buffer-substring when retrieving a single statement
@@ -7138,7 +7138,7 @@
(python-shell-buffer-substring-16, python-shell-buffer-substring-17):
New tests. (Bug#60142)
-2022-12-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Show tree-sitter query source when signaling query error
@@ -7147,7 +7147,7 @@
(treesit_ensure_query_compiled)
(Ftreesit_query_capture): Add query source.
-2022-12-30 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add version tags and mention the new options in NEWS
@@ -7157,7 +7157,7 @@
(ruby-after-operator-indent, ruby-method-call-indent)
(ruby-parenless-call-arguments-indent): Add version tags.
-2022-12-30 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add new options for Ruby code indentation
@@ -7177,7 +7177,7 @@
* test/lisp/progmodes/ruby-mode-tests.el: Add indentation tests for new files.
-2022-12-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-install-language-grammar
@@ -7189,7 +7189,7 @@
(treesit--call-process-signal)
(treesit--install-language-grammar-1): New functions.
-2022-12-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-language-abi-version
@@ -7200,7 +7200,7 @@
* src/treesit.c (Ftreesit_library_abi_version): Rename.
(Ftreesit_language_abi_version): New function.
-2022-12-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change "language definition" to "language grammar" in manual.
@@ -7216,24 +7216,24 @@
* doc/lispref/parsing.texi:
* lisp/treesit.el: Change "language definition" to "language grammar".
-2022-12-30 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/lisp/net/tramp-tests.el (tramp-test32-shell-command): Fix test.
* lisp/eshell/em-tramp.el (tramp): Require also at runtime. (Bug#60402)
-2022-12-30 Roland Winkler <winkler@gnu.org>
+2023-04-15 Roland Winkler <winkler@gnu.org>
lisp/textmodes/bibtex.el: fix bibtex-beginning-of-entry (bug#56636)
lisp/textmodes/bibtex.el (bibtex-beginning-of-entry):
use bibtex-any-entry-maybe-empty-head (bug#56636)
-2022-12-30 Roland Winkler <winkler@gnu.org>
+2023-04-15 Roland Winkler <winkler@gnu.org>
lisp/textmodes/bibtex.el: Treat $ as punctuation in BibTeX fields (bug#50202)
-2022-12-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Clarify the documentation of 'set-face-attribute'
@@ -7246,7 +7246,7 @@
with that of the docstring, whose changes were discussed in
bug#57499 but not included in the manual.
-2022-12-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Handle non-string values in pcomplete
@@ -7255,7 +7255,7 @@
return the string the user typed in, and attach the value as a
text property to that string. Fixes bug#59956 and bug#60021.
-2022-12-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix completion when completion-auto-select is set
@@ -7263,24 +7263,24 @@
"Complete, but not unique" messages when completion-auto-select is
set. Fixes bug#60359.
-2022-12-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add color fontification in css-ts-mode (bug#60405)
* lisp/textmodes/css-mode.el (css-ts-mode): Add color fontification
and syntax-propertize-function.
-2022-12-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/hi-lock.el (hi-lock--regexps-at-point): Fix bug (bug#60241).
Handle two cases: when a pattern is a regexp or a function.
-2022-12-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* src/keyboard.c (echo_add_key): Use recently rebound C-h key C-q (bug#60249)
-2022-12-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in treesit.c with --enable-checking
@@ -7289,14 +7289,14 @@
positions before converting them to byte-positions, to avoid
assertion violations in buf_charpos_to_bytepos.
-2022-12-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Clean up treesit-default-defun-skipper and add comments
* lisp/treesit.el (treesit-default-defun-skipper): Clean up, fix some
small issue, add comment.
-2022-12-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode bracket indentation (bug#60398)
@@ -7304,7 +7304,7 @@
anchor.
(c-ts-mode--bracket-children-anchor): New anchor function.
-2022-12-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Clean up font-lock rules in js-ts-mode
@@ -7325,7 +7325,7 @@
(js--treesit-fontify-assignment-lhs): New functions.
(js-ts-mode): Update feature list.
-2022-12-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix syntax for < and > in c++-ts-mode (bug#60351)
@@ -7338,7 +7338,7 @@
(c-ts-mode--syntax-propertize): New function.
(c++-ts-mode): Remove syntax table. Setup syntax-propertize-function.
-2022-12-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Call tree-sitter parser notifier on the first parse
@@ -7346,7 +7346,7 @@
old_tree.
(treesit_ensure_parsed): Remove check for NULL tree.
-2022-12-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter parser notifier recursion
@@ -7356,7 +7356,7 @@
circuit to the very beginning. Move the call to
treesit_call_after_change_functions to the very end.
-2022-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/help.el: Use 'C-h C-q' to toggle 'help-quick' window (bug#60249).
@@ -7366,7 +7366,7 @@
(help-quit-or-quick): Remove command.
(help-for-help): Replace help-quick-or-quit with help-quick-toggle.
-2022-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el: Small fixes.
@@ -7377,7 +7377,7 @@
(isearch-delete-char): Use 'isearch-invisible' instead of 'search-invisible'
since the users might change the current value with 'M-s i'.
-2022-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/diff-mode.el (diff-minor-mode-prefix): Replace "ESC" with "\e".
@@ -7385,30 +7385,30 @@
But actually now 'key-description' is used in 'diff-minor-mode-map'
to convert "\e" to "ESC".
-2022-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/display.texi (Text Scale): Improve section about repeating keys.
Mention that it's possible to use repeating keys without the modifiers
and copy an example from etc/NEWS.
-2022-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (repeat-echo-function): Suggest 'add-function' in docstring.
(bug#60353)
-2022-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el (tab-line-cache-key-default): More cache keys (bug#60340).
Move more cache keys here from 'tab-line-format' to give users more freedom.
-2022-12-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* etc/package-keyring.gpg: Update with new key
-2022-12-28 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Warn of absent networks module in ERC
@@ -7439,7 +7439,7 @@
* test/lisp/erc/resources/networks/no-module/basic.eld: New test data
file. (Bug#60331.)
-2022-12-28 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Avoid "already compiled" warning in erc-compat
@@ -7448,7 +7448,7 @@
noisy in tests. Ditch closed-over vars via HOF instead of suppressing
because compiling emits "unused lexical" warning on Emacs 27.
-2022-12-28 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
(python--treesit-settings): Remove duplicate matcher
@@ -7456,7 +7456,7 @@
duplicate matcher (which found itself under 'function' in addition
to 'definition').
-2022-12-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make last change of w32 GUI dialogs conditional and reversible
@@ -7470,7 +7470,7 @@
* etc/NEWS: Announce the change.
-2022-12-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter typos
@@ -7479,7 +7479,7 @@
* test/src/treesit-tests.el (treesit-defun-navigation-nested-4): Fix
typo.
-2022-12-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Update tree-sitter major modes to use the new Imenu facility
@@ -7520,7 +7520,7 @@
(toml-ts-mode--imenu): Remove functions.
(toml-ts-mode): Setup Imenu.
-2022-12-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter helper functions for Imenu
@@ -7541,7 +7541,7 @@
(treesit-simple-imenu): New functions.
(treesit-major-mode-setup): Setup Imenu.
-2022-12-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit--things-around (bug#60355)
@@ -7558,7 +7558,7 @@
(treesit--ert-defun-navigation-elixir-program): New variable.
(treesit-defun-navigation-nested-4): New test.
-2022-12-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve treesit-node-top-level and treesit-parent-until
@@ -7566,18 +7566,18 @@
predicate function. Add an optional argument INCLUDE-NODE.
(treesit-parent-until): Add an optional argument INCLUDE-NODE.
-2022-12-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/w32menu.c (simple_dialog_show): Use MB_YESNOCANCEL style.
-2022-12-27 Xi Lu <lx@shellcodes.org>
+2023-04-15 Xi Lu <lx@shellcodes.org>
Fix htmlfontify.el command injection vulnerability.
* lisp/htmlfontify.el (hfy-text-p): Fix command injection
vulnerability. (Bug#60295)
-2022-12-27 Rudolf Adamkovič <salutis@me.com>
+2023-04-15 Rudolf Adamkovič <salutis@me.com>
Improve support for Scheme R6RS and R7RS libraries (bug#54704)
@@ -7590,7 +7590,7 @@
Imenu recognize the members nested (and so indented) inside of
'library' (R6RS) or 'define-library' (R7RS) forms.
-2022-12-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add a new tree-sitter query predicate 'pred'
@@ -7635,7 +7635,7 @@
helper function.
(treesit-query-api): Test #pred predicate.
-2022-12-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve gnutls-min-prime-bits docstring
@@ -7645,7 +7645,7 @@
bits. These days, the default is nil, which means to let GnuTLS
decide the value. (See also `nsm-protocol-check--dhe-prime-kx`.)
-2022-12-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve handling of tab-bar height.
@@ -7653,7 +7653,7 @@
not 'grow-only', also consider the case when the tab-bar height
needs to shrink. Fixes bug#60210.
-2022-12-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Simplify last change (bug#60311)
@@ -7666,7 +7666,7 @@
* lisp/subr.el (json-available-p): Simplify.
-2022-12-26 Mattias Engdegård <mattias.engdegard@gmail.com>
+2023-04-15 Mattias Engdegård <mattias.engdegard@gmail.com>
Fix 'json-available-p' on MS-Windows
@@ -7678,7 +7678,7 @@
* lisp/subr.el (json-available-p): Rewrite.
-2022-12-26 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
loaddefs-gen: Group results by absolute file name
@@ -7695,7 +7695,7 @@
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Expand file
names when grouping loaddef files.
-2022-12-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix imenu for c-ts-mode (bug#60296)
@@ -7703,7 +7703,7 @@
c-ts-mode--defun-valid-p to filter out nested matches.
(c-ts-mode--defun-valid-p): Handle more types of nodes.
-2022-12-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Clean up python-ts-mode font-lock features
@@ -7714,7 +7714,7 @@
(python--treesit-fontify-variable): New functions.
(python-ts-mode): Add function and variable feature.
-2022-12-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add comment indent and filling to other tree-sitter major modes
@@ -7740,14 +7740,14 @@
(typescript-ts-mode--indent-rules): New indent rules.
(typescript-ts-base-mode): Use new setup function.
-2022-12-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add maintainer stub for tree-sitter files
* lisp/treesit.el:
* src/treesit.c: Add maintainer.
-2022-12-25 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Remove remaining mentions of 'eval-current-buffer'
@@ -7757,11 +7757,11 @@
Remove remaining mentions of 'eval-current-buffer', obsoleted in
Emacs 22 and removed in Emacs 26.
-2022-12-25 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6-61-g63e073f
-2022-12-25 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add heuristic to locate lisp code in source packages
@@ -7770,7 +7770,7 @@
(Bug#60155)
-2022-12-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Further generalize treesit-defun functions
@@ -7787,7 +7787,7 @@
(treesit-defun-at-point): Adjust for the new signature of
treesit-thing-at-point.
-2022-12-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Generalize treesit-defun functions to "things"
@@ -7803,7 +7803,7 @@
(treesit-thing-at-point): Generalized from treesit-defun-at-point.
(treesit-defun-at-point): Use treesit-thing-at-point to do tht work.
-2022-12-25 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Reorder optional arguments to 'package-vc-install'
@@ -7811,7 +7811,7 @@
Update 'package-vc-install' invocation.
(package-vc-install): Reorder and update documentation.
-2022-12-25 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Handle missing dependencies for source packages
@@ -7825,7 +7825,7 @@
note which packages couldn't be found, and warn the user that these
will be missing.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode imenu defun name (bug#60296)
@@ -7837,14 +7837,14 @@
(c-ts-mode--fontify-defun): Extract out.
(c-ts-mode--defun-name): Use the new function.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit--children-covering-range-recurse (bug#60301)
* lisp/treesit.el (treesit--children-covering-range-recurse): Always
return a list of node.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Support treesit-defun-name in tree-sitter major modes
@@ -7881,7 +7881,7 @@
(toml-ts-mode--imenu-1): Extract into new function.
(toml-ts-mode): Setup treesit-defun-name-function.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-defun-name and friends
@@ -7903,7 +7903,7 @@
(treesit-defun-name): New functions.
(treesit-major-mode-setup): Setup add-log-current-defun-function.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-node-at/on guess language at point
@@ -7916,11 +7916,11 @@
(treesit-node-on): Guess language at point. Update docstring.
(treesit-buffer-root-node): Update docstring.
-2022-12-24 Óscar Fuentes <ofv@wanadoo.es>
+2023-04-15 Óscar Fuentes <ofv@wanadoo.es>
* nt/INSTALL.W64: update instructions for setting up W64 environment
-2022-12-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "; Bump minimum supported Windows version for MinGW64 to Windows 10."
@@ -7929,7 +7929,7 @@
is the minimum supported version, even though MinGW-w64 switched
to Windows 10 as the default target in January 2022.
-2022-12-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix definition of CNS 11643-15 charset
@@ -7938,7 +7938,7 @@
* lisp/international/characters.el: Add chinese-cns11643-15 to
charsets whose characters have categories c and C.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve c-ts-mode block comment indent (bug#60270)
@@ -7955,7 +7955,7 @@
(c-ts-mode--looking-at-star): New matcher.
(c-ts-mode--comment-start-after-first-star): New anchor.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix block comment indent and filling for c-ts-mode (bug#59763)
@@ -7972,7 +7972,7 @@
(c-ts-base-mode): Setup paragraph-start, adaptive-fill, etc.
* lisp/treesit.el (treesit-simple-indent-presets): Add new preset.
-2022-12-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit_cursor_helper (bug#60267)
@@ -8009,35 +8009,35 @@
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Use the new signature.
-2022-12-24 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix restart-emacs alarms (Bug#60220)
* src/emacs.c (Fkill_emacs): Turn timers off before execing,
so that the re-execed Emacs doesn’t get a timer alarm.
-2022-12-24 Florian Weimer <fweimer@redhat.com>
+2023-04-15 Florian Weimer <fweimer@redhat.com>
Fix alternate stack test in configure
* configure.ac (emacs_cv_alternate_stack): Include <stdlib.h>
for 'malloc's prototype.
-2022-12-24 Xi Lu <lx@shellcodes.org>
+2023-04-15 Xi Lu <lx@shellcodes.org>
Add more functions to "string" shortdoc
* lisp/emacs-lisp/shortdoc.el: Add 'string-or-null-p',
'char-or-string-p', 'char-uppercase-p'. (Bug#60279)
-2022-12-24 Yaraslau Tamashevich <yaraslau.tamashevich@gmail.com> (tiny change)
+2023-04-15 Yaraslau Tamashevich <yaraslau.tamashevich@gmail.com> (tiny change)
Make the Contour terminal an alias of xterm-256color
* lisp/faces.el (term-file-aliases): Make the Contour terminal an
alias of xterm-256color. (Bug#60278)
-2022-12-24 glacials <ben@twos.dev> (tiny change)
+2023-04-15 glacials <ben@twos.dev> (tiny change)
Correct wrong info in (info)Go to node
@@ -8049,14 +8049,14 @@
* doc/misc/info.texi (Go to node): Fix inaccurate information.
(Bug#60263)
-2022-12-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix typo in TUTORIAL.fr (bug#60261)
* etc/tutorials/TUTORIAL.fr: Fix typo. Reported by
Clément Escude--Cotinat <clement.escudecotinat@yahoo.fr>.
-2022-12-24 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add some diff-fixup-modifs tests
@@ -8065,7 +8065,7 @@
* test/lisp/vc/diff-mode-tests.el (diff-mode-test-fixups-empty-hunks):
Ditto for patches with empty hunks. (Bug#60259)
-2022-12-24 Ulrich Müller <ulm@gentoo.org>
+2023-04-15 Ulrich Müller <ulm@gentoo.org>
Fix quoted argument in emacsclient-mail.desktop Exec key
@@ -8087,7 +8087,7 @@
* etc/emacsclient.desktop (Exec): Use `sh` rather than `placeholder`
as the command name of the shell wrapper. (Bug#60204)
-2022-12-24 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
ert-x: Move window selection logic to its own macro
@@ -8103,21 +8103,21 @@
(ert-test-with-buffer-selected/return-value): Add tests.
(Bug#60189)
-2022-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash after X error
* src/xdisp.c (redisplay_internal): Catch another crash if
gcscrollbars after an X error.
-2022-12-23 Xi Lu <lx@shellcodes.org>
+2023-04-15 Xi Lu <lx@shellcodes.org>
Fix ruby-mode.el local command injection vulnerability (bug#60268)
* lisp/progmodes/ruby-mode.el
(ruby-find-library-file): Fix local command injection vulnerability.
-2022-12-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "C-h k" in recursive minibuffers
@@ -8127,7 +8127,7 @@
this function, see commit c1cead89f5f. Call posn-at-point with
the minibuffer-window when in the minibuffer. (Bug#60252)
-2022-12-22 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
vc-git-checkin: Don't try to apply an empty patch
@@ -8136,7 +8136,7 @@
(cherry picked from commit 1424342225ef5b18c630364dd88e004f4ebb1c7f)
-2022-12-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Update Tramp version (don't merge with master)
@@ -8145,14 +8145,14 @@
(customize-package-emacs-version-alist):
Adapt Tramp version integrated in Emacs 29.1.
-2022-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: eglot--servers-by-xrefed-file doesn't need to be value-weak
* lisp/progmodes/eglot.el (eglot--servers-by-xrefed-file): Doesn't
need to be weak.
-2022-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prevent stale servers when using eglot-extend-to-xref
@@ -8177,11 +8177,11 @@
(eglot--on-shutdown): Make sure to cleanup
eglot--servers-by-xrefed-file.
-2022-12-22 Xi Lu <lx@shellcodes.org>
+2023-04-15 Xi Lu <lx@shellcodes.org>
* etc/tutorials/TUTORIAL.cn: Fix typos. (Bug#60221)
-2022-12-22 Benson Chu <bensonchu457@gmail.com> (tiny change)
+2023-04-15 Benson Chu <bensonchu457@gmail.com> (tiny change)
Add alias for removed font-lock function
@@ -8192,13 +8192,13 @@
* lisp/font-lock.el (font-lock-fontify-syntactically-region): Add
obsolete alias for the renamed function.
-2022-12-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Set beginning/end-of-defun-function in treesit-major-mode-setup
* lisp/treesit.el (treesit-major-mode-setup): Set them.
-2022-12-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-defun-at-point and fix c-ts-mode-indent-defun
@@ -8206,7 +8206,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode-indent-defun): Implement with
treesit-defun-at-point.
-2022-12-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use the new keyword ':repeat' in repeatable keymaps.
@@ -8231,7 +8231,7 @@
* lisp/keymap.el (defvar-keymap): Check for 'props'
that is used in 'defvar-form'.
-2022-12-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
When redirecting in Eshell, check for "/dev/null" specifically
@@ -8246,28 +8246,28 @@
* lisp/eshell/esh-io.el (eshell-set-output-handle): Use "/dev/null"
literally.
-2022-12-21 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Invoke spawed Emacs processes with '-Q' when native compiling (bug#60208)
* lisp/emacs-lisp/comp.el (comp-final): Invoke spawned Emacs with '-Q'.
(comp-run-async-workers): Likewise.
-2022-12-21 montag451 <montag451@laposte.net> (tiny change)
+2023-04-15 montag451 <montag451@laposte.net> (tiny change)
Fix Eshell electric slash when used from the root directory of a remote host
* lisp/eshell/em-elecslash.el (eshell-electric-forward-slash): Insert
the remote prefix as determined by 'file-remote-p'.
-2022-12-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the --without-all build with tree-sitter
* configure.ac (HAVE_TREE_SITTER): Set NEED_DYNLIB=yes, since
tree-sitter support requires dynlib.o. (Bug#60061)
-2022-12-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix write-region to null device on MS-Windows
@@ -8275,7 +8275,7 @@
from fsync -- this means fsync is not supported for this file.
Happens, for example, with the null device. (Bug#59545)
-2022-12-21 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
message: Do not default to eudc-capf-complete yet
@@ -8283,7 +8283,7 @@
eudc-capf-complete to the buffer-local value of
completion-at-point-functions. (Bug#59314)
-2022-12-21 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
whitespace: Avoid mutating original buffer's markers in clones
@@ -8301,7 +8301,7 @@
(whitespace-tests--indirect-clone-markers)
(whitespace-tests--regular-clone-markers): New tests.
-2022-12-20 Charl P. Botha <cpbotha@vxlabs.com> (tiny change)
+2023-04-15 Charl P. Botha <cpbotha@vxlabs.com> (tiny change)
Fix empty pairs in js tree-sitter imenu alist (bug#59945)
@@ -8317,7 +8317,7 @@
* lisp/progmodes/js.el (js--treesit-imenu): Don't add nil indexes.
-2022-12-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el: Fix repeat-keep-prefix to allow customizing it to non-nil.
@@ -8334,24 +8334,24 @@
* test/lisp/repeat-tests.el (repeat-tests-keep-prefix):
Uncomment test case that is fixed now in bug#51281 and bug#55986.
-2022-12-20 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Correct capitalization of Lisp in the manual (bug#60222)
* doc/lispref/compile.texi (Native-Compilation Functions): Fix typo.
-2022-12-20 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
eglot.el: Add vscode-json-languageserver to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add the
alternative name of the vcscode JSON server. (Bug#60198)
-2022-12-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/project.el (project--read-file-cpd-relative): Optimize.
-2022-12-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-method-params-indent: New user option
@@ -8373,14 +8373,14 @@
Disable the :expensive-test tag, because neither runs for "longer
than some few seconds", both take significantly below 1s.
-2022-12-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/project.el: Filter out empty strings from history (bug#58447)
(project--read-file-cpd-relative): Do not include empty strings (when
prefix has the same length as the string).
-2022-12-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix storing email into nnmail by Gnus
@@ -8389,7 +8389,7 @@
disrupting email workflows due to possibly-invalid headers.
Reported by Florian Weimer <fweimer@redhat.com>.
-2022-12-19 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
whitespace: Fix unintended change in buffer modification status
@@ -8403,7 +8403,7 @@
* test/lisp/whitespace-tests.el
(whitespace-tests--empty-bob-eob-modified): Add a regression test.
-2022-12-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make emacsclient add abbreviated file names to file-name-history
@@ -8411,7 +8411,7 @@
'file-name-history--add' to add the visited files to history.
(Bug#60097)
-2022-12-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Repair setopt test after error demotion to warning
@@ -8419,7 +8419,7 @@
Check for a warrning instead of an error in attempt to call `setopt`
with a value that does not match the declared type (bug#60162).
-2022-12-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-mode: Support endless singleton method definitions too
@@ -8429,7 +8429,7 @@
* test/lisp/progmodes/ruby-mode-resources/ruby.rb (Bar#foo=):
Update example.
-2022-12-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove comment-start-skip preset in tree-sitter indentation engine
@@ -8446,7 +8446,7 @@
* doc/lispref/parsing.texi (Tree-sitter major modes): Remove
treesit-comment-start/end.
-2022-12-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix recent change in tramp-smb.el
@@ -8458,14 +8458,14 @@
* lisp/net/tramp.el (tramp-file-name-for-operation):
Rearrange `make-directory-internal'.
-2022-12-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make tramp-archive autoloads robust for older Emacs versions
* lisp/net/tramp-archive.el (tramp-archive-file-name-regexp):
Use `eval-when-compile'. Set it explicitly for older Emacs versions.
-2022-12-18 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-mode: Support endless methods (bug#54702)
@@ -8482,20 +8482,20 @@
* test/lisp/progmodes/ruby-mode-resources/ruby.rb: New examples.
-2022-12-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/cus-edit.el (setopt--set): Warn instead of rasing an error
(Bug#60162)
-2022-12-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow customising windmove user options with an empty prefix
* lisp/windmove.el (windmove--default-keybindings-type): Handle nil
as a prefix value. (Bug#60161)
-2022-12-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve and extend admin/git-bisect-start
@@ -8510,7 +8510,7 @@
* admin/notes/repo (Bisecting): Adapt the explanation of the
script accordingly.
-2022-12-18 Andrea Monaco <andrea.monaco@autistici.org>
+2023-04-15 Andrea Monaco <andrea.monaco@autistici.org>
Make 'rmail-summary-by-thread' faster
@@ -8521,13 +8521,13 @@
from 'rmail-summary-fill-message-parents-vector' and rewritten.
(rmail-summary-direct-descendants): Function deleted.
-2022-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS build
* src/lread.c (syms_of_lread): Make the MS-DOS build work again.
-2022-12-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid crashes in PGTK build due to signal in 'note_mouse_highlight'
@@ -8537,7 +8537,7 @@
'get-char-property' and friends with invalid position, which will
just signal an error and do nothing useful. (Bug#60144)
-2022-12-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix MS-Windows build broken by recent treesit.c changes
@@ -8546,7 +8546,7 @@
functions.
(ts_node_parent): Delete boilerplate of unused function.
-2022-12-17 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix wrong capture in typescript-ts-mode (bug#60167)
@@ -8569,7 +8569,7 @@
(typescript-ts-mode--font-lock-settings): Make the variable capture
only capture the identifier, and not the whole expression.
-2022-12-17 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add rust-ts-mode (Bug#60136)
@@ -8578,7 +8578,7 @@
* lisp/progmodes/rust-ts-mode.el: New major mode with
tree-sitter support.
-2022-12-17 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Indentation fixes for jsx/tsx (bug#60169)
@@ -8586,14 +8586,14 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): Simplify the rules.
-2022-12-17 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix treesit-query-validate problem with view-mode
* lisp/treesit.el (treesit-query-validate): Move the (view-mode) into
the correct scope.
-2022-12-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use cursor API in treesit-node-parent
@@ -8603,7 +8603,7 @@
* src/treesit.c (Ftreesit_node_parent): Use the new cursor API.
-2022-12-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Switch to use cursor API in treesit.c
@@ -8632,7 +8632,7 @@
(treesit-search-backward-named-only)
(treesit-cursor-helper-with-missing-node): New tests.
-2022-12-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit_assume_true and treesit_cursor_helper
@@ -8643,7 +8643,7 @@
* src/treesit.c (treesit_assume_true)
(treesit_cursor_helper): New functions.
-2022-12-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove file-exists-in-trash-p
@@ -8651,18 +8651,18 @@
not suitable for users. All uses replaced by file-attributes,
which is good enough here.
-2022-12-17 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6-49-g47d129
-2022-12-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Don’t assume make-directory handler returns nil
* lisp/files.el (make-directory): Ignore what the make-directory
handler returns, as its return value was not documented in Emacs 28.
-2022-12-17 Paul Eggert <eggert@penguin.cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@penguin.cs.ucla.edu>
Fix copy-directory bug when dest dir exists
@@ -8674,7 +8674,7 @@
* test/lisp/files-tests.el (files-tests-copy-directory):
Test for the bug.
-2022-12-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
make-directory now returns t if dir already exists
@@ -8691,7 +8691,7 @@
* test/lisp/files-tests.el (files-tests-make-directory):
Test new return-value convention.
-2022-12-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use make-directory handlers uniformly
@@ -8723,21 +8723,21 @@
Remove, as this test incorrectly assumes that make-directory-internal
must support handlers.
-2022-12-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'file-exists-p'
* doc/lispref/files.texi (Testing Accessibility): Document better
how to test for existing dangling symlinks. (Bug#60146)
-2022-12-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix resizing of mini-windows by 'set-minibuffer-message'
* src/xdisp.c (redisplay_window): Always resize mini-windows
displaying the active minibuffer. (Bug#60015)
-2022-12-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Prevent Abort dialogs from async-compiling jobs on Windows
@@ -8746,14 +8746,14 @@
compilation, by passing w32-disable-abort-dialog=t on their
command line.
-2022-12-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'window-max-chars-per-line' when there are no fringes
* lisp/window.el (window-max-chars-per-line): Fix the way we
account for the fringes by calling 'window-fringes'. (Bug#59963)
-2022-12-16 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-mode: Recognize instance or global var as first arg in parenless call
@@ -8762,14 +8762,14 @@
* test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add example.
-2022-12-16 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix end-of-defun in ruby-mode
* lisp/progmodes/ruby-mode.el (ruby-beginning-of-defun):
Return t in case of success.
-2022-12-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove treesit-defun-prefer-top-level and friends
@@ -8779,7 +8779,7 @@
* lisp/treesit.el (treesit-defun-prefer-top-level)
(treesit--defun-maybe-top-level): Remove.
-2022-12-16 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add yaml-ts-mode (Bug#60105)
@@ -8790,27 +8790,27 @@
tree-sitter support.
* lisp/progmodes/eglot.el (eglot-server-programs): Add it.
-2022-12-16 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fix indentation in json-ts-mode (bug#60123)
* lisp/progmodes/json-ts-mode.el
(json-ts--indent-rules): Add indentation rules for arrays.
-2022-12-16 Eli Zaretskii <eliz@gnu.org> (tiny change)
+2023-04-15 Eli Zaretskii <eliz@gnu.org> (tiny change)
New input method 'cyrillic-chuvash'
* lisp/leim/quail/cyrillic.el ("cyrillic-chuvash"): New input
method, contributed by flashymittens@tutanota.com. (Bug#60023)
-2022-12-16 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Backport: ; * lisp/bs.el: Small doc and whitespace fixes
(cherry picked from commit 8624734504af4572525665c713a47e1b6f439a2c)
-2022-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "alist-get testfn argument evaluation correction"
@@ -8819,7 +8819,7 @@
Please don't install unnecessary improvements on the release
branch.
-2022-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Elide broken but unnecessary `if` optimisations"
@@ -8828,7 +8828,7 @@
Please don't install anything on the release branch that is
not a clear bugfix for a known bug.
-2022-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Use equal and member instead of eq and memq"
@@ -8837,7 +8837,7 @@
Please don't install anything on the release branch that is not
strictly necessary fro Emacs 29.
-2022-12-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use equal and member instead of eq and memq
@@ -8855,7 +8855,7 @@
In some cases this change corrects evident bugs, in others it is
mostly cosmetic.
-2022-12-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Elide broken but unnecessary `if` optimisations
@@ -8873,7 +8873,7 @@
(if X nil t) -> (if (not X) t nil) -> (if (not X) t) -> (not X)
(if X t nil) -> (if X t) -> (not (not X))
-2022-12-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
alist-get testfn argument evaluation correction
@@ -8882,11 +8882,11 @@
Reduce the macro-expansion to include a call to either assoc or assq,
not both; this reduces the generated code size in some cases.
-2022-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/term/xterm.el (xterm-function-map): Add M-SPC. (Bug#60077)
-2022-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix moving to trash files that overwrite dangling symlinks there
@@ -8894,7 +8894,7 @@
(move-file-to-trash): Use it instead of 'file-exists-p' when
testing whether the file exist in the trash. (Bug#59986)
-2022-12-16 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix SVG scaling (bug#59802)
@@ -8904,7 +8904,7 @@
* src/image.c (svg_load_image): Compute a percentage dimension with
the other known dimension.
-2022-12-16 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Fix some naming issues involving query buffers in ERC
@@ -8925,7 +8925,7 @@
* test/lisp/erc/resources/base/assoc/queries/netnick.eld: New file.
* test/lisp/erc/resources/base/assoc/queries/non-erc.eld: New file.
-2022-12-16 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Increment erc-debug-irc-protocol-version to 2
@@ -8934,7 +8934,7 @@
(erc-log-irc-protocol): Don't bother redacting incoming messages.
(Bug#59284.)
-2022-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
A better fix for bug#60096
@@ -8947,14 +8947,14 @@
valid buffer, even if 'get-scratch-buffer-create' signals an
error.
-2022-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Bump Eglot version to 1.10
* lisp/progmodes/eglot.el (Version): Bump to 1.10
(Package-Requires): Bump required versions of jsonrpc and project.
-2022-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: fix discrepant eglot-guess-contact/eglot-command-history
@@ -8972,7 +8972,7 @@
* lisp/progmodes/eglot.el (eglot-command-history): Rename from
eglot--command-history.
-2022-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Avoid recursive process filters in lisp/jsonrpc.el (bug#60088)
@@ -9003,14 +9003,14 @@
* lisp/jsonrpc.el (jsonrpc--process-filter): Rework.
(Version): Bump to 1.0.16.
-2022-12-15 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add lambda_expression-rule to java-ts-mode (bug#60091)
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): New
rule.
-2022-12-15 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
eglot: Add support for new language server csharp-ls
@@ -9020,7 +9020,7 @@
* lisp/progmodes/eglot.el: Add new C# language server
csharp-ls. (Bug#60089)
-2022-12-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use the new tree-sitter commands
@@ -9034,7 +9034,7 @@
(treesit-major-mode-setup): Setup remap for beginning/end-of-defun
commands.
-2022-12-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add "function" feature to python-ts-mode (bug#59977)
@@ -9042,7 +9042,7 @@
(python-ts-mode): Add feature. And fix indentation for the
python-indent-guess-indent-offset code.
-2022-12-15 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add go-ts-mode and go-mod-ts-mode (Bug#60025)
@@ -9053,14 +9053,14 @@
* lisp/progmodes/go-ts-mode.el: New major modes with
tree-sitter support.
-2022-12-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add basic support for hideshow in python-ts-mode (bug#60044)
* lisp/progmodes/python.el (python-base-mode): Add setup for
python-ts-mode.
-2022-12-15 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add "this" keyword to java-ts-mode (bug#60086)
@@ -9068,7 +9068,7 @@
(java-ts-mode--font-lock-settings): Add the node to the keyword
feature.
-2022-12-15 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
When completing relative project file names, use relative history
@@ -9080,7 +9080,7 @@
This includes both filtering by common-parent-directory prefix and
mapping into relative names.
-2022-12-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid segfaults due to invalid selected-window's buffer
@@ -9090,35 +9090,35 @@
substitute-command-keys on initial-scratch-message, to avoid
signaling an error in rare cases. (Bug#60096)
-2022-12-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Revert 21b387c39bd with last-minute hasty changes (bug#60048).
* lisp/simple.el (completion-list-mode-map): Unbind [up] and [down].
(previous-line-completion, next-line-completion): Remove.
-2022-12-15 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Replace an erroneous eq with an equal in cc-defs.el
* lisp/progmodes/cc-defs.el (c-looking-at-non-alphnumspace): Replace eq with
equal in the XEmacs branch.
-2022-12-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el ([tab-bar]): Use 'make-sparse-keymap' instead of 'ignore'.
This helps to avoid the error in 'where-is-internal' that should
not call :filter unnecessarily (bug#9923).
-2022-12-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
compile.el: Fix regression with nb of errors in modeline
* lisp/progmodes/compile.el (compilation-mode-line-errors): Mark it as
risky-local, like `defconst` used to do for us.
-2022-12-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Make tab-bar-tab-group-format-function backwards-compatible (bug#60073)
@@ -9126,7 +9126,7 @@
with wrong-number-of-arguments for backwards-compatibility.
(tab-bar-tab-group-format-default): Simplify.
-2022-12-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
+2023-04-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Make tab-bar-tab-group-format-function also handle current group
@@ -9135,7 +9135,7 @@
(tab-bar-tab-group-format-default): Update function to also handle
current group tab (bug#60073).
-2022-12-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure package directories for source packages from checkouts
@@ -9143,22 +9143,22 @@
Set the :dir entry, since `package-vc--unpack-1' assumes the field is
set, as is the case when invoking `package-vc--unpack'.
-2022-12-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/README (SELECTOR): Add eglot-tests.el to remote file using libraries.
-2022-12-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix bug#60060 in Tramp
* lisp/net/tramp-sh.el (tramp-sh-handle-file-local-copy):
Delete `tmpfile' in case of error. (Bug#60060)
-2022-12-15 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
* .gitignore: Ignore GDB history files.
-2022-12-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Mention 'tree-sitter' in user manual and NEWS
@@ -9167,7 +9167,7 @@
* etc/NEWS: Mention tree-sitter in the Installation Changes
section.
-2022-12-14 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix ruby-add-log-current-method after nested class definition
@@ -9184,7 +9184,7 @@
(ruby-add-log-current-method-after-inner-class-outside-methods-with-text):
New tests.
-2022-12-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add indent rules to js/typescript/tsx-ts-mode (bug#60074)
@@ -9193,7 +9193,7 @@
jsx_fragment.
* lisp/progmodes/js.el (js--treesit-indent-rules): Add the same rules.
-2022-12-14 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification in csharp-ts-mode (bug#59897)
@@ -9205,7 +9205,7 @@
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Add new rule.
-2022-12-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Revert "Add expression for generic_name in csharp-ts-mode"
@@ -9214,7 +9214,7 @@
This reverts commit 647b6a8099f414e5a7b162efd3658e174064dfe7.
-2022-12-14 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Introduce support for TOML config-format
@@ -9231,7 +9231,7 @@
[1] https://toml.io/en/
[2] https://toml.io/en/v1.0.0
-2022-12-14 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Fix handling of % when searching in .tex or .dtx files
@@ -9239,14 +9239,14 @@
when building the regexp for searching only in .dtx files.
(AUCTeX bug#59638)
-2022-12-14 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Treat C++ classes as defuns in C Tree-sitter mode (bug#60047)
* lisp/progmodes/c-ts-mode.el (c-ts-base-mode): Add "class_specifier"
as a node of type "defun".
-2022-12-14 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add < and > to the syntax table in c++-ts-mode (bug#60049)
@@ -9255,14 +9255,14 @@
delimiters (C++ templates).
(c++-ts-mode): Use the new syntax table.
-2022-12-14 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontifications in Typescript mode
* lisp/progmodes/typescript-ts-mode.el: Improve fontification of
variables. (Bug#59831)
-2022-12-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update the documentation of overlays (bug#59996)
@@ -9281,7 +9281,7 @@
* etc/NEWS: Mention incompatible aspects of overlay
reimplementation.
-2022-12-14 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't send erc-sasl-user as USER command argument
@@ -9299,7 +9299,7 @@
parameter of "USER" command to reflect nick when `erc-sasl-user' is
set to `:user'. (Bug#59976.)
-2022-12-14 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Set erc-network to a "given" ID instead of failing
@@ -9322,7 +9322,7 @@
* test/lisp/erc/resources/networks/announced-missing/foonet.eld:
Remove "mode" match pattern.
-2022-12-14 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Limit casemapping to appropriate ranges in ERC
@@ -9337,7 +9337,7 @@
* test/lisp/erc/erc-tests.el (erc-downcase): Add cases showing
mappings outside of the ASCII range. (Bug#59976.)
-2022-12-14 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Actually accept non-symbols as IDs in erc-open
@@ -9353,7 +9353,7 @@
(erc-scenarios-common-assert-initial-buf-name): Adjust helper to allow
for non-symbol IDs. (Bug#59976.)
-2022-12-14 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Respect a nil erc-session-password when reconnecting
@@ -9367,7 +9367,7 @@
* test/lisp/erc/resources/services/auth-source/recon.eld: Add new test
data file. (Bug#59858.)
-2022-12-14 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add dedicated auth-source section in ERC manual
@@ -9387,7 +9387,7 @@
erc-auth-source-join-function): Re-link auth-source info node in doc
strings.
-2022-12-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Better shortdoc examples
@@ -9397,7 +9397,7 @@
well-defined results, such as `eq` on strings or floats.
Edit other examples for better illustrating each respective operation.
-2022-12-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Shortdoc: read and evaluate strings after :eval
@@ -9405,7 +9405,7 @@
If the parameter of :eval is a string then read, evaluate and print
the result. This was always the intention and is documented behaviour.
-2022-12-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp tests in eglot-tests, prefix tests uniquely
@@ -9417,11 +9417,11 @@
:expensive-test.
(all): Prefix all tests with `eglot-test-' uniquely.
-2022-12-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc-git.el (vc-git-checkin): Use make-nearby-temp-file (bug#60011)
-2022-12-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete temp files after icalendar tests
@@ -9429,7 +9429,7 @@
(icalendar-tests--get-error-string-for-export): Make sure we clean up
temporary files after test.
-2022-12-13 Kai Ma <justksqsf@gmail.com> (tiny change)
+2023-04-15 Kai Ma <justksqsf@gmail.com> (tiny change)
Fix syntax tables of tree-sitter modes (bug#59807)
@@ -9444,11 +9444,11 @@
xx
-2022-12-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/Makefile.in (need_emacsver): Add use-package.
-2022-12-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix bug when calling `rgrep` non-interactively
@@ -9456,7 +9456,7 @@
non-interactively requires running it interactively
first. (Bug#60024)
-2022-12-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp specific tests in eglot-tests.el
@@ -9469,11 +9469,11 @@
Use `ert-remote-temporary-file-directory'. Skip if needed.
(eglot--tramp-test, eglot--tramp-test-2): Don't skip.
-2022-12-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/textmodes/texinfo.el (texinfo-flymake): Improve docstring.
-2022-12-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Support a function in the BUFFER-LIST arg of list-buffers-noselect (bug#59935)
@@ -9488,7 +9488,7 @@
'buffer-list-function' used by both legacy code and the new version
of list-buffers-noselect that supports its arg BUFFER-LIST as a function.
-2022-12-13 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Don't allow lazy highlight from recursive minibuffers
@@ -9497,7 +9497,7 @@
* lisp/isearch.el (minibuffer-lazy-highlight-setup): Don't activate
when starting a recursive minibuffer.
-2022-12-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve resetting face attributes when looking for suitable fonts
@@ -9508,14 +9508,14 @@
'font_maybe_unset_attribute' only if the value is neither nil nor
t. (Bug#59347)
-2022-12-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add lexical-binding to example package header
* doc/lispref/package.texi (Simple Packages): Add lexical-binding
cookie to example package header.
-2022-12-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add improved tree-sitter navigation
@@ -9566,7 +9566,7 @@
(treesit-defun-navigation-nested-3)
(treesit-defun-navigation-top-level): New tests.
-2022-12-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add cross-reference to flush-lines
@@ -9574,7 +9574,7 @@
cross-references between commands, using the names
'(kill|delete)-matching-lines' for symmetry. (Bug#59934)
-2022-12-12 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Use font-lock-number-face for numeric values in csharp-mode
@@ -9582,13 +9582,13 @@
* lisp/progmodes/csharp-mode.el: update fontification code.
-2022-12-12 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Make treesit-query-validate create a read-only buffer
* lisp/treesit.el: use view-mode for generated validation buffer.
-2022-12-12 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Improve dockerfile-ts-mode imenu generation (Bug#59979)
@@ -9596,14 +9596,14 @@
Declare.
(dockerfile-ts-mode--imenu-1): Use stage name if available.
-2022-12-12 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add "->" to python--treesit-operators (bug#59968)
* lisp/progmodes/python.el (python--treesit-operators): Add "->", used
to specify the return types of functions in Python.
-2022-12-12 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Align C++ access specifiers to their enclosing class/struct/union
@@ -9617,7 +9617,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Align access
specifiers to their enclosing class/struct/union.
-2022-12-12 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add cmake-ts-mode
@@ -9628,7 +9628,7 @@
tree-sitter support.
* lisp/progmodes/eglot.el (eglot-server-programs): Add it.
-2022-12-12 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Tweak various ts-mode's indent and fontification (bug#59931)
@@ -9644,7 +9644,7 @@
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-base-mode):
Prefer top-level navigation.
-2022-12-12 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add expression for generic_name in csharp-ts-mode (bug#59897)
@@ -9663,7 +9663,7 @@
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Add new query that makes the mentioned example work.
-2022-12-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Fix the value 'insert' of outline-minor-mode-use-buttons.
@@ -9674,14 +9674,14 @@
* lisp/progmodes/xref.el (xref--xref-buffer-mode):
Change outline-minor-mode-use-buttons from t to 'insert'.
-2022-12-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (completions-group-separator): Revert f7816c94b6.
Change face attribute from :underline back to :strike-through.
https://lists.gnu.org/archive/html/emacs-devel/2022-10/msg01792.html
-2022-12-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Skip Eglot rust-analyzer tests if 'cargo' isn't available
@@ -9689,7 +9689,7 @@
(project-wide-diagnostics-rust-analyzer)
(diagnostic-tags-unnecessary-code): Skip unless "cargo" is found.
-2022-12-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
use-package.texi: New section "Manual installation"
@@ -9697,7 +9697,7 @@
(Load path, Manual autoloads): Make into subsections of above new
section.
-2022-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Revert "Improve last change to xfaces.c" (05ece1eb8b)"
@@ -9706,7 +9706,7 @@
Not only does it make debugging Emacs harder for users, that change is
unsafe for the Haiku port.
-2022-12-11 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Revert "Improve last change to xfaces.c" (05ece1eb8b)
@@ -9714,14 +9714,14 @@
See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59347#331.
-2022-12-11 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Do not pare arguments unnecessarily.
* lisp/pcomplete.el (pcomplete-here-using-help): Do not pare
arguments. Fixes bug#59803.
-2022-12-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add automated tests for Eglot
@@ -9733,14 +9733,14 @@
* test/lisp/progmodes/eglot-tests.el: New file.
-2022-12-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: allow skipping compile-time warnings about LSP interfaces
* lisp/progmodes/eglot.el (eglot-strict-mode): Add 'no-unknown-interfaces'.
(eglot--check-object): Honour new eglot-strict-mode value.
-2022-12-11 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add customizale faces for tree-sitter explorer
@@ -9749,7 +9749,7 @@
(treesit--explorer-draw-node): Use the new faces.
(treesit-explore-mode): Change playground to explorer.
-2022-12-11 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix error message when installing non-existent package
@@ -9757,7 +9757,7 @@
trailing dash to package name in non-existent package
error. (Bug#59923)
-2022-12-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Don't use diff-mode buffer as a patch when it's visiting a file (bug#59962)
@@ -9766,7 +9766,7 @@
a file with a diff might be committed to VCS. So don't use it as a patch
to commit with 'C-x v v'.
-2022-12-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix pcase rx patterns using rx-let bindings (bug#59814)
@@ -9776,7 +9776,7 @@
(rx--to-expr): ...here.
* test/lisp/emacs-lisp/rx-tests.el (rx-let-pcase): New test.
-2022-12-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix use-package-defaults defcustom type (bug#59941)
@@ -9784,11 +9784,11 @@
Enlarge type to allow for keywords such as :ensure and :pin to be
added later, remedying a failure in test-custom-opts.
-2022-12-11 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
* lisp/language/indian.el: Improve Brahmi composition rules. (bug#58957)
-2022-12-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve last change to xfaces.c
@@ -9799,7 +9799,7 @@
there is no reason any user should have to think about bitmasks
in Emacs lisp.
-2022-12-10 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Actually improve detection of long lines
@@ -9812,7 +9812,7 @@
* src/buffer.c (Fget_buffer_create):
Revert 1c837c42c2, which was misguided.
-2022-12-10 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Unset the weight/slant/width in the spec when realizing a font
@@ -9841,25 +9841,25 @@
(syms_of_xfaces): New variable
'realize-gui-face-ignored-spec-attributes'.
-2022-12-10 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.6-31-g954a95
-2022-12-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix infloop in 'shell-resync-dirs' with tcsh
* lisp/shell.el (shell-resync-dirs): Remove trailing slash from
output of 'dirs', for csh/tcsh's sake. (Bug#59804)
-2022-12-10 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure 'package-vc--version' always returns a version
* lisp/emacs-lisp/package-vc.el (package-vc--version): Return "0" even
if the main file exists, but lacks version headers.
-2022-12-10 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure 'package-vc--main-file' always returns an existing file
@@ -9867,14 +9867,14 @@
(package-vc--main-file): If the expected file name is missing, try and
find the closest match.
-2022-12-10 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Check if package already exists before installing from checkout
* lisp/emacs-lisp/package-vc.el (package-vc-install-from-checkout):
Copy check from 'package-vc--unpack'.
-2022-12-10 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Refresh the package quickstart file in package-vc
@@ -9882,7 +9882,7 @@
`package--quickstart-maybe-refresh', just as
`package-install-from-buffer' does. (bug#59728)
-2022-12-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make indirect buffers use tree-sitter parsers of their base buffer
@@ -9896,21 +9896,21 @@
* doc/lispref/parsing.texi (Using Parser): Update manual.
* test/src/treesit-tests.el (treesit-indirect-buffer): New test.
-2022-12-09 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Fontify "this" as a keyword in c++-ts-mode (bug#59924)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings):
Following c++-mode, fontify as a keyword instead of a constant.
-2022-12-09 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add class_body indentation for typescript (bug#59680)
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): New indent rule.
-2022-12-09 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Make more granular defun-type-regexp (bug#59873)
@@ -9921,7 +9921,7 @@
* lisp/progmodes/java-ts-mode.el (java-ts-mode): Use regexp-opt to
distinguish more granularly.
-2022-12-09 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add dockerfile-ts-mode (Bug#59894)
@@ -9933,7 +9933,7 @@
tree-sitter support.
* lisp/progmodes/eglot.el (eglot-server-programs): Add it.
-2022-12-09 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Fix fontification of method-invocations in js-ts-mode (bug#59904)
@@ -9941,14 +9941,14 @@
for property in front of function names, so function names override
property.
-2022-12-09 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix escape-sequence feature in typescript-ts-mode (bug#59906)
* lisp/progmodes/typescript-ts-mode.el: (typescript-ts-mode,
tsx-ts-mode): Use escape-sequence feature.
-2022-12-09 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification in csharp-ts-mode (bug#59909)
@@ -9958,7 +9958,7 @@
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings)
(csharp-ts-mode): Add new features
-2022-12-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Use 'project--value-in-dir' for 'project-vc-include-untracked' too
@@ -9966,7 +9966,7 @@
'project--value-in-dir' for 'project-vc-include-untracked' too.
So that is can be reliably set through dir-locals.
-2022-12-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update Turkish Hello
@@ -9974,13 +9974,13 @@
* lisp/language/european.el ("Turkish"): Add a Turkish Hello.
Suggested by YUSUF ALPER ÇIKIŞIR <yusufcikisir@std.iyte.edu.tr>.
-2022-12-09 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Support newer glib versions (Bug#59061)
* lib-src/seccomp-filter.c (main): Allow pidfd_open system call
-2022-12-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Bring back the project--value-in-dir logic
@@ -10001,7 +10001,7 @@
* test/lisp/progmodes/project-resources/foo:
* test/lisp/progmodes/project-resources/etc: New files.
-2022-12-09 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Backport: Enable native speed 2 EMBA build and tests and disable speed 0
@@ -10012,18 +10012,18 @@
(cherry picked from commit 06bf218f69a62d5d5c8d3b3767d7db8d9fb4bb9f)
-2022-12-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/test-jobs.yml: Regenerate for the new use-package subdirectory.
-2022-12-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt manual names in emacs-news-mode
* lisp/textmodes/emacs-news-mode.el (emacs-news--buttonize):
Allow hyphen in manual names.
-2022-12-09 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Respect some spaces in auth-source-pass--match-regexp
@@ -10039,7 +10039,7 @@
(auth-source-pass-extra-query-keywords--suffixed-user): Add spaces
to users and hosts of some example entries. (Bug#58985.)
-2022-12-09 dannyfreeman <danny@dfreeman.email>
+2023-04-15 dannyfreeman <danny@dfreeman.email>
João Távora <joaotavora@gmail.com>
Eglot: Handle LSP progress with Emacs progress reporters (bug#59149)
@@ -10066,7 +10066,7 @@
* doc/misc/eglot.texi (Customizing Eglot): Describe new variable.
-2022-12-09 dannyfreeman <danny@dfreeman.email>
+2023-04-15 dannyfreeman <danny@dfreeman.email>
João Távora <joaotavora@gmail.com>
Eglot: cleanup whitespace and indentation
@@ -10074,7 +10074,7 @@
* lisp/progmodes/eglot.el: Misc whitespace fixes.
-2022-12-09 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Better test-custom-opts diagnostics
@@ -10086,7 +10086,7 @@
(cus-test-apropos, cus-test-errors-display, cus-test-opts):
Use new format.
-2022-12-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
New script admin/check-man-pages
@@ -10094,7 +10094,7 @@
for errors. (Bug#59631)
* admin/make-tarball.txt: Document when to use the above script.
-2022-12-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve :delight keyword example in use-package manual
@@ -10104,7 +10104,7 @@
Resolves https://github.com/jwiegley/use-package/issues/835
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Clarify :after keyword in use-package docstring
@@ -10113,7 +10113,7 @@
Resolves https://github.com/jwiegley/use-package/issues/825
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add conditional loading examples to use-package manual
@@ -10122,7 +10122,7 @@
Resolves https://github.com/jwiegley/use-package/issues/693
-2022-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "; * src/emacs.c (main): Improvements to last change."
@@ -10131,7 +10131,7 @@
library initializer is used to set the malloc functions on startup, so
they are not dumped.
-2022-12-08 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
server-eval-at: Don't call server--file-name
@@ -10139,21 +10139,21 @@
the server file. The recent change to call server--file-name meant
that the SERVER argument to server-eval-at was ignored.
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge branch 'feature/use-package' into emacs-29
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* etc/USE-PACKAGE-NEWS: Delete file.
Ref: https://lists.gnu.org/r/emacs-devel/2022-11/msg01535.html
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* admin/git-bisect-start: Prune use-package merge commits.
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update use-package defgroups
@@ -10162,7 +10162,7 @@
* lisp/use-package/use-package-ensure.el (use-package-ensure): Add
:link, :version and :group to defgroups.
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Drop key-chord.el support from use-package
@@ -10172,7 +10172,7 @@
* doc/misc/use-package.texi (use-package-chords): Delete section.
Ref: https://lists.gnu.org/r/emacs-devel/2022-12/msg00052.html
-2022-12-08 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Remove unneeded (require 'edebug) from which-func.el
@@ -10180,14 +10180,14 @@
code from an attempted fix to bug#49592, installed in 55cc8b040b
(2022-08-08) and left behind after 48b0f2606b (2022-08-23).
-2022-12-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Change use-package custom :group to `initialization`
* lisp/use-package/use-package-core.el (use-package): Move
defgroup to custom :group 'initialization'.
-2022-12-08 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Treat escaped newlines in Eshell as the empty string
@@ -10214,7 +10214,7 @@
* doc/misc/eshell.texi (Arguments): Explain escaping logic in more
detail (bug#59622).
-2022-12-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
use-package: Improve :mode keyword documentation
@@ -10223,40 +10223,40 @@
Resolves https://github.com/jwiegley/use-package/issues/996
-2022-12-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve bind-keys* and override-global-mode docstrings
* lisp/use-package/bind-key.el (bind-keys*): Add docstring.
(override-global-mode) Improve docstring.
-2022-12-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash on Windows 9X
* src/emacs.c (main): Call init_bignum before init_window_once.
-2022-12-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add recursion limit to treesit--children-covering-range-recurse
* lisp/treesit.el (treesit--children-covering-range-recurse): Add
limit.
-2022-12-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve tree-sitter fontification in edge-cases (bug#59738)
* lisp/treesit.el (treesit-font-lock-fontify-region): Use
treesit--children-covering-range-recurse.
-2022-12-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new use-package manual
* doc/misc/use-package.texi: Rewrite manual.
-2022-12-07 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add c-ts-mode-indent-defun (bug#59662)
@@ -10265,7 +10265,7 @@
* lisp/progmodes/c-ts-mode.el (c-ts-mode-indent-defun): New function.
(c-ts-mode-map): New mode map that uses said function.
-2022-12-07 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix syntax-table for tree-sitter modes
@@ -10285,14 +10285,14 @@
(typescript-ts-mode--syntax-table): Add new entries.
* lisp/textmodes/css-mode.el (css-ts-mode): Add new entries.
-2022-12-07 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
c++-ts-mode: Highlight nullptr as a constant
* lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): Add
nullptr.
-2022-12-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve parameter checking in tree-sitter functions
@@ -10307,7 +10307,7 @@
* test/src/treesit-tests.el (treesit-node-api)
(treesit-query-api): Add tests for out-of-range error.
-2022-12-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix comint-tests on MS-Windows
@@ -10318,7 +10318,7 @@
(w32-native-executable-p, w32-native-executable-find): New
functions.
-2022-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use new external-completion.el in Eglot
@@ -10331,7 +10331,7 @@
(completion-category-overrides): No longer set it.
("Backend Completion"): Delete section.
-2022-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't override completion-category-defaults in fido-mode
@@ -10343,7 +10343,7 @@
* lisp/icomplete.el (icomplete--fido-mode-setup): Don't set
completion-category-defaults here.
-2022-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add lisp/external-completion.el for completions from external tools
@@ -10371,7 +10371,7 @@
* etc/NEWS: (Lisp Changes in Emacs 29.1): Mention
external-completion-table.
-2022-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot: fix setting of flymake-list-only-diagnostics (bug#59824)
@@ -10385,17 +10385,17 @@
* lisp/progmodes/eglot.el (eglot-handle-notification): Reset
flymake-list-only-diagnostics
-2022-12-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* test/src/sqlite-tests.el (sqlite-version): Declare.
-2022-12-06 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Outline deprecation plans in NEWS
* etc/NEWS (EUDC): Mention deprecation plans.
-2022-12-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix admin/notes/tree-sitter/build-module/build.sh (bug#59789)
@@ -10417,18 +10417,18 @@
* admin/notes/tree-sitter/build-module/batch.sh (languages): Add tsx.
-2022-12-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/eww.texi (Overview): Improve introduction.
-2022-12-06 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Consistent fontification of using-directives in csharp-ts-mode
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
New rules.
-2022-12-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fontify some keywords in type face in c-ts-mode
@@ -10436,14 +10436,14 @@
(c-ts-mode--type-keywords): New variables.
(c-ts-mode--font-lock-settings): New rule.
-2022-12-06 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix etags builds on non-Windows non-MS-DOS machines
* lib-src/etags.c: In this file, MSDOS is always defined but can be
either `true` or `false`, so don't used `defined MSDOS` as a condition.
-2022-12-06 lu4nx <lx@shellcodes.org>
+2023-04-15 lu4nx <lx@shellcodes.org>
Fix etags local command injection vulnerability
@@ -10451,7 +10451,7 @@
(process_file_name): Use it to quote file names passed to the
shell. (Bug#59817)
-2022-12-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid crashes in a build --without-modules
@@ -10459,7 +10459,7 @@
'dynamic-library-suffixes' outside of the HAVE_MODULES
conditional. (Bug#59832)
-2022-12-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'add-display-text-property' when OBJECT is non-nil
@@ -10469,7 +10469,7 @@
* test/lisp/emacs-lisp/subr-x-tests.el
(subr-x-test-add-display-text-property): Add test for this case.
-2022-12-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Do not run slow tests on EMBA
@@ -10480,7 +10480,7 @@
* test/lisp/international/ucs-normalize-tests.el
(ucs-normalize-part1): Skip also on EMBA.
-2022-12-06 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Lisp reader undefined behaviour excision
@@ -10491,7 +10491,7 @@
The `|` was just a weak attempt at micro-optimisation in any case;
sorry about that.
-2022-12-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-query-capture
@@ -10512,7 +10512,7 @@
position. Also added parentheses wround "beg_byte - visible_beg" in
the call to ts_query_cursor_set_byte_range (i.e., style change).
-2022-12-05 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification of typescript-ts-mode (bug#59831)
@@ -10523,7 +10523,7 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--font-lock-settings): Add fontification rules.
-2022-12-05 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add back pair feature in json-ts-mode fontification (bug#59833)
@@ -10531,14 +10531,14 @@
Add back in removed pair feature. Also alphabetize features.
(json-ts-mode): Use the new feature.
-2022-12-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix mouse clicks on a non-selected frame
* lisp/mouse-drag.el (mouse-drag-drag): Skip switch-frame events
while tracking mouse. (Bug#59785)
-2022-12-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve treesit-fontify-with-override
@@ -10561,7 +10561,7 @@
* lisp/progmodes/python.el (python--treesit-fontify-string): Use the
new signature.
-2022-12-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Make killing a non-last client work the same no matter the auto-stop setting
@@ -10576,7 +10576,7 @@
'server-stop-automatically' behavior in this function, rather than
calling 'server-stop-automatically--handle-delete-frame'.
-2022-12-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use the function 'window-system' on the tab-bar/tab-line (bug#59620)
@@ -10585,7 +10585,7 @@
* lisp/tab-line.el (tab-line-format-template): Replace the variable
'window-system' with the function call '(window-system)'.
-2022-12-04 Tom Gillespie <tgbugs@gmail.com>
+2023-04-15 Tom Gillespie <tgbugs@gmail.com>
Restore font-lock-type-face for lisp mode &symbols
@@ -10597,7 +10597,7 @@
a498e5f83 by restoring the type face to font-lock-type-face as
consistent with the comments.
-2022-12-04 Kai Ma <justksqsf@gmail.com> (tiny change)
+2023-04-15 Kai Ma <justksqsf@gmail.com> (tiny change)
Prevent a segfault when deleting a fullscreen frame on NextStep.
@@ -10608,14 +10608,14 @@
leak of the EmacsView object! (Bug#59794)
Do not merge to master.
-2022-12-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix markup in ERC manual
* doc/misc/erc.texi (SASL): Use @table instead of simulating it
with @indentedblock. Fix markup. (Bug#59815)
-2022-12-03 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix comment-start-skip in tree-sitter modes (bug#59690)
@@ -10627,7 +10627,7 @@
* lisp/progmodes/typescript-ts-mode.el (tsx-ts-mode): Remove the group
from the regexp.
-2022-12-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up Unicode normalisation tests by a factor of 5
@@ -10643,14 +10643,14 @@
Run only over the Unicode code space.
Hoist `with-current-buffer` to reduce overhead.
-2022-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "C-h k" when clicking on another frame
* lisp/help.el (help--analyze-key): Don't barf if the key sequence
includes a switch-frame event. (Bug#59785)
-2022-12-03 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Fix and expand tests broken by commit 2772ebe366 of 2022-11-28
@@ -10662,7 +10662,7 @@
Check that the last directory in `native-comp-eln-load-path' is
not affected by `native-compile-prune-cache'.
-2022-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix handling of relative directories in "--init-directory=DIR"
@@ -10670,14 +10670,14 @@
names in '--init-directory' relative to the directory from
which Emacs is started. (Bug#59795)
-2022-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make sure 'user-emacs-directory' ends in a slash
* lisp/startup.el (command-line): Make sure 'user-emacs-directory'
has the form of a directory.
-2022-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix gud-minor-mode-menu
@@ -10686,7 +10686,7 @@
still using it in gud.el. (Bug#59769) (Bug#59605)
Do not merge to master.
-2022-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Make easy-mmode-defmap obsolete and adjust only caller"
@@ -10696,14 +10696,14 @@
Do not merge to master.
-2022-12-03 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
vc-git-print-log: Don't assume vc-git-log-switches is a list
* lisp/vc/vc-git.el (vc-git-print-log): Call ensure-list on
vc-git-log-switches to handle the case where it's a singular string.
-2022-12-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix use-package tests
@@ -10711,7 +10711,7 @@
* test/lisp/use-package/use-package-tests.el: Remove local
variables section. Require 'ert' and fix copyright header.
-2022-12-02 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix server-tests run noninteractively (bug#59742)
@@ -10723,14 +10723,14 @@
(server-tests/server-force-stop/keeps-frames): Delete created frame so
that it doesn't cause trouble for other tests.
-2022-12-02 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Use file-name-nondirectory to determine default project-name
* lisp/progmodes/project.el (project-name):
Use file-name-nondirectory instead of file-name-base (bug#59756).
-2022-12-02 Yikai Zhao <yikai@z1k.dev>
+2023-04-15 Yikai Zhao <yikai@z1k.dev>
Speed up auto-completion in 'sh-script-mode'
@@ -10740,7 +10740,7 @@
(sh-completion-at-point-function): Use
'sh--cmd-completion-table-gen'. (Bug#59678)
-2022-12-02 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Fix error editing multisession variables (bug#59710)
@@ -10748,14 +10748,14 @@
Do not use `bound-and-true-p' on a non-symbol. This reverts
commit bd586121ac21e046f60f75eeb0200866c38d6f9f.
-2022-12-02 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Add tsx-ts-mode to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add
tsx-ts-mode. (Bug#59770)
-2022-12-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-format-align-right): Fix alignment on TTY frames.
@@ -10763,7 +10763,7 @@
since the `right' spec doesn't work on TTY frames when windows are split
horizontally (bug#59620).
-2022-12-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix the width of margins for icons in outline-minor-mode (bug#59719)
@@ -10779,7 +10779,7 @@
(outline-minor-mode): Calculate the number of columns for margins
to fit the icons.
-2022-12-01 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add new TypeScript mode tsx-ts-mode
@@ -10806,21 +10806,21 @@
* etc/NEWS: Mention the new mode.
-2022-12-01 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add case and match to python--treesit-keywords (bug#59720)
* lisp/progmodes/python.el (python--treesit-keywords): Add "case" and
"match" keywords.
-2022-12-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-files (VC-aware): Make sure the VC backend is loaded
* lisp/progmodes/project.el (project-files):
Make sure the VC backend is loaded (bug#59734).
-2022-12-01 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
term--update-term-menu: Add the menu to term-terminal-menu
@@ -10834,14 +10834,14 @@
term-terminal-menu, instead of implicitly trying to add it to every
local keymap.
-2022-12-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve detection of very long lines
* src/xdisp.c (redisplay_window): Recheck for long lines if the
restriction has changed. (Bug#56682)
-2022-12-01 Laurence Warne <laurencewarne@gmail.com>
+2023-04-15 Laurence Warne <laurencewarne@gmail.com>
Add colors to Proced (bug#59407)
@@ -10887,7 +10887,7 @@
(proced-format-user): New function to color the user a process
belongs to.
-2022-12-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Update project docs and NEWS
@@ -10895,7 +10895,7 @@
* etc/NEWS: Mention new option (bug#41572).
-2022-12-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update publicsuffix.txt from upstream
@@ -10905,7 +10905,7 @@
(cherry picked from commit de00aef3e151e0eefe20feda74cf90578e8ff109)
-2022-12-01 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Add highlighting Python operators (bug#59629)
@@ -10942,7 +10942,7 @@
expectations to include faces for operators.
(python-font-lock-operator-1, python-font-lock-operator-2): New tests.
-2022-12-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix compilation of Org 9.6 on MS-Windows
@@ -10950,11 +10950,11 @@
invoke "command x11idle" on MS-Windows and MS-DOS. This fixes a
hang during byte-compilation of Org.
-2022-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* doc/lispref/frames.texi (Input Focus): Clarify for XInput 2 support.
-2022-12-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix types in various defcustom declarations
@@ -10966,7 +10966,7 @@
* lisp/progmodes/project.el (project-vc-extra-root-markers):
Fix incorrect or invalid types.
-2022-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes and memory leaks during display deinitialization
@@ -10979,7 +10979,7 @@
(x_delete_terminal): Delete all terminals. Free the scratch
cursor GC.
-2022-11-30 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
New user option: project-vc-extra-root-markers
@@ -10998,21 +10998,21 @@
New tests.
(project-tests--this-file): New variable.
-2022-11-30 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add inline to c-ts-mode--keywords
* lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Add "inline", a
keyword available since C99 to define inline functions in C.
-2022-11-30 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Remove duplicate "friend" from c-ts-mode--keywords
* lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Remove duplicate
keyword.
-2022-11-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-defun-prefer-top-level more flexible
@@ -11020,7 +11020,7 @@
* lisp/treesit.el (treesit-defun-prefer-top-level): Update docstring.
(treesit--defun-maybe-top-level): Change to accept new format.
-2022-11-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode defun movement (bug#59628)
@@ -11030,7 +11030,7 @@
(c-ts-mode)
(c++-ts-mode): Set end-of-defun-function.
-2022-11-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Keep tabs of the same group together (bug#59721)
@@ -11038,25 +11038,25 @@
'(tab-bar-move-tab-to-group)'. Improve docstring.
(tab-bar-change-tab-group): Improve docstring.
-2022-11-30 muffinmad <andreyk.mad@gmail.com>
+2023-04-15 muffinmad <andreyk.mad@gmail.com>
Insert news for installed packages only
* lisp/emacs-lisp/package.el (describe-package-1): Check package is
installed and "news" is a regular file. (Bug#59684)
-2022-11-30 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-current: Improve the docstring
* lisp/progmodes/project.el (project-current):
Improve the docstring (bug#59722).
-2022-11-30 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/Makefile.in (INFO_COMMON): Add use-package.
-2022-11-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Org regexp style fixes
@@ -11065,7 +11065,7 @@
* lisp/org/org-persist.el (org-persist-load:index):
Replace line-start with string-start when the latter is meant.
-2022-11-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Skip one python test case on macOS
@@ -11075,7 +11075,7 @@
(cherry picked from commit db042b7591ea9da5e169704e5b32bd99c4ea7adf)
-2022-11-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Sink python indent offset guessing to avoid test failure
@@ -11089,13 +11089,13 @@
(python-mode): ...to here...
(python-ts-mode): ...and here.
-2022-11-29 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
* etc/NEWS: Announce Org update.
Update to Org 9.6-3-ga4d38e
-2022-11-29 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Fix interactive selection of emacs-lock mode, broken by 2a4b0da28c
@@ -11104,14 +11104,14 @@
(emacs-lock-mode): Pass also `current-prefix-arg' to
`emacs-lock--set-mode'.
-2022-11-29 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix typo in flag to load Emacs-specific LLDB commands
* src/.lldbinit: Fix typo in flag to parse .lldbinit files from the
current directory. (Bug#59702)
-2022-11-29 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Prevent lone ids being parsed as types unless in decl arglists
@@ -11121,25 +11121,25 @@
last invocation of c-fdoc-shift-type-backward before CASE 1, additionally
test CONTEXT not being an arglist or BACKUP-AT-TYPE being non-nil.
-2022-11-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Allow csharp-mode in c-default-style
* lisp/progmodes/cc-vars.el (c-default-style):
Add csharp-mode to the type. This fixes test-custom-opts.
-2022-11-29 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
In project-find-file, add abbreviated file names to history
* lisp/progmodes/project.el (project--read-file-cpd-relative):
Use 'abbreviate-file-name' (bug#58447).
-2022-11-29 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/project.el (project-vc-name): Fix the :type form (bug#48747).
-2022-11-29 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp cleanup
@@ -11150,7 +11150,7 @@
* lisp/net/tramp-archive.el (tramp-archive-file-name-handler-alist):
Ignore `memory-info'.
-2022-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow be-resources to fail
@@ -11158,7 +11158,7 @@
(main): Return 0 on failure as well, but print the blurb.
Problem reported by the Haiku packager.
-2022-11-29 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Simplify erc-sasl's auth-source API
@@ -11176,11 +11176,11 @@
Massage tests to conform to simplified `erc-sasl-password'
API. (Bug#29108.)
-2022-11-28 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
* doc/misc/erc.texi: Revise SASL and modules chapters.
-2022-11-28 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add erc-sasl-auth-source-function to cached options
@@ -11194,14 +11194,14 @@
`erc-sasl-auth-source-function' in `erc-sasl--options' under the
`authfn' key.
-2022-11-28 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification in csharp-ts-mode
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Improve rules for variables, new-expressions, and catch statements.
-2022-11-28 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve fontification in typescript-ts-mode
@@ -11211,7 +11211,7 @@
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--font-lock-settings): Change patterns.
-2022-11-28 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add more font-lock settings to css-ts-mode
@@ -11219,7 +11219,7 @@
font-lock features 'query', 'keyword', 'operator' and 'bracket'.
(css-ts-mode): Use new features.
-2022-11-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Reparse tree-sitter tree when buffer restriction changes
@@ -11229,14 +11229,14 @@
* src/treesit.c (treesit_ensure_parsed): Move
treesit_sync_visible_region in front of the check for need_reparse.
-2022-11-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix GUD item on the menu bar in source buffers
* lisp/progmodes/gud.el (alist-get): Restore gud-minor-mode menu
on the menu bar. (Bug#59605)
-2022-11-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Cut the emacs-29 release branch
@@ -11250,14 +11250,14 @@
* lisp/cus-edit.el (customize-changed-options-previous-release):
Bump last version to 28.2.
-2022-11-28 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Do not prune native-compiled system directories (bug#59658)
* lisp/emacs-lisp/comp.el (native-compile-prune-cache):
Skip last directory in `native-comp-eln-load-path'.
-2022-11-28 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix display of long completions.
@@ -11265,18 +11265,18 @@
"at least 2 columns", which is not possible when completion
strings are long, e.g. with completions-detailed set.
-2022-11-27 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Do not enter locked narrowing when it would span the whole buffer
* src/xdisp.c (handle_fontified_prop):
* src/keyboard.c (safe_run_hooks_maybe_narrowed): Add condition.
-2022-11-27 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el (xref--outdated-p): Fix broken docstring.
-2022-11-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Catch more cases in info--ensure-not-in-directory-node
@@ -11285,14 +11285,14 @@
absolute file name.
Problem reported by Eli Zaretskii <eliz@gnu.org>.
-2022-11-27 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix incompatible -t and -r options in emacsclient
* lib-src/emacsclient.c (decode_options): Do not allow -t and -r
together.
-2022-11-27 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Minor improvements to locked narrowing
@@ -11304,7 +11304,7 @@
* src/keyboard.c (safe_run_hooks_maybe_narrowed): Do not use
locked narrowing if the region size is <= 0.
-2022-11-27 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove treesit-comment-start/end and use comment-start/end-skip
@@ -11330,23 +11330,23 @@
(treesit-comment-end): Remove variables.
(treesit-simple-indent-presets): Use comment-start/end-skip instead.
-2022-11-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/revert-for-copyright
GitHub-reference: https://github.com/jwiegley/use-package/issues/1026
-2022-11-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/revert-for-copyright2
GitHub-reference: https://github.com/jwiegley/use-package/issues/1027
-2022-11-27 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge branch 'feature/improved-locked-narrowing'
-2022-11-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the new ctags test
@@ -11355,7 +11355,7 @@
* .gitignore: Ignore CTAGS*.sorted files.
-2022-11-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend memory-info for remote systems
@@ -11389,7 +11389,7 @@
* test/lisp/net/tramp-tests.el (tramp-test31-memory-info): New test.
-2022-11-27 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Consistently refer to VC packages as such
@@ -11398,7 +11398,7 @@
* lisp/emacs-lisp/package.el: Replace instances of "source package" in
comments and docstrings.
-2022-11-27 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Fix xref interaction with which-func (bug#59575)
@@ -11407,7 +11407,7 @@
(xref--xref-buffer-mode): Assign it buffer-locally to
`add-log-current-defun-function'.
-2022-11-27 lu4nx <lx@shellcodes.org>
+2023-04-15 lu4nx <lx@shellcodes.org>
Fixed ctags local command execute vulnerability
@@ -11423,7 +11423,7 @@
* test/manual/etags/crlf: New file
* test/manual/etags/Makefile: Add `ctags -u` test cases
-2022-11-27 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Fix xref to correctly display Windows absolute filenames
@@ -11431,11 +11431,11 @@
Use `file-name-absolute-p' instead of faking it. (Discussed
in bug#59628.)
-2022-11-27 Shohei YOSHIDA <syohex@gmail.com>
+2023-04-15 Shohei YOSHIDA <syohex@gmail.com>
* lib-src/emacsclient.c (print_help_and_exit): Fix --timeout.
-2022-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make frame synchronization more robust
@@ -11445,7 +11445,7 @@
* src/xterm.h (struct x_output, FRAME_X_DRAW_JUST_HUNG): New
flag.
-2022-11-27 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Remove compatibility code in csharp-mode
@@ -11454,27 +11454,27 @@
(version=): Remove compatibility hack for string handling in CC Mode
in Emacs 27.1. (Bug#59602)
-2022-11-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Revert "Add: 'local' keyword"
This reverts commit 620fe443c2e7598191cb5d6c6a41064471edb57c.
-2022-11-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Remove tests lacking a copyright assignment for now
* use-package-tests.el (use-package-test/pre-post-hooks-with-:config)
(use-package-test/pre-post-hooks-without-:config): Remove tests.
-2022-11-27 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add js-ts-mode to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add js-ts-mode as
an alternative. (Bug#59252)
-2022-11-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve describe-text-properties display
@@ -11482,13 +11482,13 @@
space with the 'help-argument-name' face. This improves display
slightly when that face has an underline.
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Simplify narrowing_locks_restore
* src/editfns.c (narrowing_locks_restore): Simplify.
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve handling of killed buffers in locked narrowings
@@ -11500,7 +11500,7 @@
(reset_outermost_narrowings, unwind_reset_outermost_narrowing):
Remove killed buffers from the 'narrowing_locks' alist.
-2022-11-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make typescript-ts-mode not fallback to js-mode
@@ -11511,7 +11511,7 @@
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode): Remove
the fallback code.
-2022-11-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make bash-ts-mode fall back to sh-mode if the file isn't in Bash
@@ -11522,14 +11522,14 @@
(sh--redirect-recursing): New variable.
(sh--redirect-bash-ts-mode): New function.
-2022-11-26 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Correctly fontify types in typeof() expression in csharp-ts-mode
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Add new pattern.
-2022-11-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Reorganize treesit-font-lock-feaure-list's to the new level scheme
@@ -11542,7 +11542,7 @@
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode):
Reorganized treesit-font-lock-feature-list.
-2022-11-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-font-lock-level
@@ -11554,7 +11554,7 @@
(treesit-font-lock-settings): Change docstring.
(treesit-font-lock-recompute-features): Use the new variable.
-2022-11-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add default limit for tree-sitter recursive tree-traversing function
@@ -11567,7 +11567,7 @@
* doc/lispref/parsing.texi (Retrieving Nodes): Update manual.
-2022-11-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Partially fix some python tests (bug#59477)
@@ -11588,7 +11588,7 @@
* lisp/progmodes/python.el (python-mode): Add the missing setup.
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Minor improvements for locked narrowing
@@ -11599,7 +11599,7 @@
* lisp/subr.el (with-narrowing, internal--with-narrowing):
Simplify, use a single helper function with an optional argument.
-2022-11-26 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve robustness of server.el tests
@@ -11623,7 +11623,7 @@
(server-tests/emacsclient/create-frame): ... use it.
(server-tests/server-start/stop-prompt-with-client): Simplify.
-2022-11-26 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Remove mentions of create-directory nnmaildir setting
@@ -11632,11 +11632,11 @@
and supplanted by 'target-prefix. Remove check for old parameter.
* doc/misc/gnus.texi (Maildir): Delete mention from manual.
-2022-11-26 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Docstring improvements
@@ -11644,7 +11644,7 @@
* src/keyboard.c (syms_of_keyboard):
Docstring improvements.
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Docstring improvements
@@ -11653,7 +11653,7 @@
* src/buffer.c (syms_of_buffer):
Docstring improvements.
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Further improvements to narrowing locks
@@ -11668,7 +11668,7 @@
(narrowing_locks_restore): Use XCAR/XCDR/XSETCAR instead of
Fcar/Fcdr/Fsetcar.
-2022-11-26 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve locked narrowing around low-level hooks.
@@ -11694,21 +11694,21 @@
* src/editfns.c: (Fsave_restriction): Update docstring.
-2022-11-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Mention new programming language support in manual
* doc/emacs/programs.texi (Program Modes): Mention newly added support
for C#, TypeScript and JSON.
-2022-11-26 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
In project-find-file and the like, add absolute file name to history
* lisp/progmodes/project.el (project--read-file-cpd-relative): Add
absolute file name to history.
-2022-11-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of some posn-* functions
@@ -11717,7 +11717,7 @@
* doc/lispref/commands.texi (Click Events): More accurate
documentation of what are DX and DY in POSITION.
-2022-11-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix generation of autoloads on MS-Windows
@@ -11725,7 +11725,7 @@
(loaddefs-generate--file-load-name): Handle the case when FILE and
OUTFILE don't share any common ancestor directory. (Bug#59507)
-2022-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce wasted cycles in x*.c
@@ -11733,7 +11733,7 @@
* src/xselect.c (x_own_selection, x_get_local_selection)
(x_clear_frame_selections): Call CAR and CDR, not Fcar and Fcdr.
-2022-11-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use substitute-command-keys in Info-index error
@@ -11741,27 +11741,27 @@
function using substitute-command-keys for error message.
(Info-index, Info-virtual-index): Use it.
-2022-11-26 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
eglot-server-programs: ts-mode -> typescript-ts-mode
* lisp/progmodes/eglot.el (eglot-server-programs): Fix name of
'typescript-ts-mode' after rename from 'ts-mode'. (Bug#59589)
-2022-11-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter assertion error (bug#59574)
* src/treesit.c (treesit_sync_visible_region): Initialize
visible_beg/end when tree is NULL.
-2022-11-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename treesit_ensure_position_synced to treesit_sync_visible_region
* src/treesit.c: Rename to better convey the purpose of the function.
-2022-11-25 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Rename ts-mode to typescript-ts-mode
@@ -11770,21 +11770,21 @@
* etc/NEWS: Mention the new mode name.
Ref: https://lists.gnu.org/r/emacs-devel/2022-11/msg01587.html
-2022-11-25 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Rename ts-mode.el to typescript-ts-mode.el
* lisp/progmodes/ts-mode.el: Move from here...
* lisp/progmodes/typescript-ts-mode.el: ...to here.
-2022-11-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix no-accept-focus handling for embedded frames
* src/xterm.c (handle_one_xevent): Don't focus embedded frames
on click if they have `no-accept-focus' set.
-2022-11-25 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Save and restore narrowing locks in 'save-restriction'.
@@ -11794,7 +11794,7 @@
* lisp/subr.el (with-narrowing-1): Simplify.
-2022-11-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Drop project--value-in-dir
@@ -11811,7 +11811,7 @@
(project--vc-merge-submodules-p, project--value-in-dir):
Delete functions.
-2022-11-25 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Generic 'with-narrowing' macro.
@@ -11819,7 +11819,7 @@
'with-locked-narrowing' one. Suggested by Stefan Monnier.
(with-narrowing-1, with-narrowing-2): Helper functions.
-2022-11-25 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Reworked locked narrowing.
@@ -11844,7 +11844,7 @@
* lisp/subr.el (with-locked-narrowing): Improved macro, with a helper
function.
-2022-11-25 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Disable auth-source-pass-extra-query-keywords by default
@@ -11862,7 +11862,7 @@
username more email-like.
(Bug#58985.)
-2022-11-25 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add sqlite library version string retrieval function (bug#58766)
@@ -11874,7 +11874,7 @@
* test/src/sqlite-tests.el (sqlite-returning): `RETURNING` was added
in sqlite 3.35; skip the test for older versions.
-2022-11-25 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix regex errors in csharp-mode
@@ -11884,7 +11884,7 @@
(csharp-compilation-re-xbuild-warning): Make regex match regex for
xbuild-error.
-2022-11-25 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix the "asymmetry rule" for fontifying a type followed by *
@@ -11896,14 +11896,14 @@
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): Fix CASE 17.5 as
above.
-2022-11-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Remove unused parameter from image_create_pix_container
* src/image.c (image_create_pix_container): Remove unused
frame parameter. Update callers.
-2022-11-25 Daanturo <daanturo@gmail.com>
+2023-04-15 Daanturo <daanturo@gmail.com>
Show package name in package-vc--unpack prompt
@@ -11911,7 +11911,7 @@
package name when asking whether to overwrite its previous
checkout. (Bug#59548)
-2022-11-24 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't explicitly delete client frames when killing Emacs anyway
@@ -11929,14 +11929,14 @@
* test/lisp/server-tests.el
(server-tests/server-force-stop/keeps-frames): New test.
-2022-11-24 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
+2023-04-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Make ibuffer directory filter buffer aware
* lisp/ibuf-ext.el (define-ibuffer-filter): Make ibuffer directory
filter buffer aware for buffer not visiting files. (Bug#59165)
-2022-11-24 Ackerley Tng <ackerleytng@google.com>
+2023-04-15 Ackerley Tng <ackerleytng@google.com>
Add support for window-local xref history
@@ -11951,7 +11951,7 @@
(xref-clear-marker-stack, xref-marker-stack-empty-p)
(xref-forward-history-empty-p): Use it.
-2022-11-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bind Buffer-menu-view-other-window to "O"
@@ -11959,7 +11959,7 @@
'Buffer-menu-view-other-window' to "O".
(Buffer-menu-mode): Clean up docstring. (Bug#59280)
-2022-11-24 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
+2023-04-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Allow goto-address-at-point to use secondary browser
@@ -11967,53 +11967,53 @@
`browse-url-button-open-url', so a prefix argument uses
`browse-url-secondary-browser-function'. (Bug#59443)
-2022-11-24 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix easy menu separator in oldXMenu
* lisp/emacs-lisp/easymenu.el (easy-menu-convert-item-1): Replace a
string of dash with a menu separator as the doc says. (Bug#59370)
-2022-11-24 Jostein Kjønigsen <jostein@kjonigsen.net>
+2023-04-15 Jostein Kjønigsen <jostein@kjonigsen.net>
Improve csharp-ts-mode fontification
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Add more pattern for definition feature.
-2022-11-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve python-ts-mode fontification (bug#59534)
* lisp/progmodes/python.el (python--treesit-operators): Add operators.
(python--treesit-fontify-string): Fontify BOF docstrings.
-2022-11-24 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Work around lsp-mode compatibility bug
* src/timefns.c (Ftime_subtract): Respect current-time-list when
args are eq (Bug#59506).
-2022-11-24 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Add more tree-sitter modes to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add python-ts-mode
and bash-ts-mode. (Bug#59550)
-2022-11-24 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* src/emacs.c (usage_message): Add missing --init-directory entry
-2022-11-24 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Add tree-sitter-based modes to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add
tree-sitter-based major modes. (Bug#59229)
-2022-11-24 Ulf Jasper <ulf.jasper@web.de>
+2023-04-15 Ulf Jasper <ulf.jasper@web.de>
icalendar: Adjust tests after fixing parsing of sexp entries (bug#56241)
@@ -12022,14 +12022,14 @@
* test/lisp/calendar/icalendar-tests.el (icalendar-real-world):
Disable testcase for exporting sexp entries that has now become invalid.
-2022-11-24 hokomo <hokomo@airmail.cc> (tiny change)
+2023-04-15 hokomo <hokomo@airmail.cc> (tiny change)
icalendar.el: Fix parsing of sexp entries (bug#56241)
* lisp/calendar/icalendar.el (icalendar--convert-sexp-to-ical): Use
read-from-string for parsing sexp entries (bug#56241).
-2022-11-24 dannyfreeman <danny@dfreeman.email>
+2023-04-15 dannyfreeman <danny@dfreeman.email>
Eglot: don't confuse URLs and windows file paths
@@ -12037,7 +12037,7 @@
* lisp/progmodes/eglot.el (eglot--path-to-uri): Check for windows path
-2022-11-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove fboundp check in eglot--connect
@@ -12047,7 +12047,7 @@
* lisp/progmodes/eglot.el (eglot--connect): Don't fboundp
project-name.
-2022-11-24 Marcin Pajkowski <marcin.pajkowski@gmail.com> (tiny change)
+2023-04-15 Marcin Pajkowski <marcin.pajkowski@gmail.com> (tiny change)
Eglot: Advertise completion.resolveSupport capabilities
@@ -12058,7 +12058,7 @@
* lisp/progmodes/eglot.el (eglot-client-capabilities): Advertise
resolveSupport. (bug#59465)
-2022-11-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add new SI prefixes
@@ -12069,11 +12069,11 @@
prefixes Ri and Qi (robi and quebi) in `file-size-human-readable` for
free.)
-2022-11-24 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge master into feature/improved-locked-narrowing.
-2022-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reentrancy problem/crash in xterm.c
@@ -12082,14 +12082,14 @@
protected section.
(x_focus_frame): Block input around critical section.
-2022-11-24 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Fix trashing of symlink that points at a directory
* lisp/files.el (move-file-to-trash): Redefine is-directory so
that it is false for symlinks.
-2022-11-24 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Fix cross-filesystem directory trashing (Bug#58721)
@@ -12097,7 +12097,7 @@
the same name as something that's already in the trash, copy it into
the trash folder and then delete it, rather than using rename-file.
-2022-11-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Make it scroll fast over buffers with only #define's
@@ -12110,7 +12110,7 @@
* lisp/progmodes/cc-mode.el (c-fl-decl-end): New forward limit LIM+ used in
c-forward-declarator and c-forward-over-token.
-2022-11-24 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Fix face issues in show-paren context overlay (bug#59527)
@@ -12121,7 +12121,7 @@
context lines are font-locked before taking the
buffer-substring (fixes problem 1 of bug#59527).
-2022-11-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in treesit.c when editing non-ASCII
@@ -12129,7 +12129,7 @@
initializing 'lisp_parser'. This avoids assertion violations when
the buffer has non-ASCII characters.
-2022-11-24 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Improve LDAP and BBDB tests
@@ -12137,7 +12137,7 @@
reliable.
* test/lisp/net/eudc-resources/bbdb: Add another test contact.
-2022-11-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add an error fontification heuristic to c-ts-mode
@@ -12145,14 +12145,14 @@
function.
(c-ts-fontify-error): New function.
-2022-11-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't always filter out captured tree-sitter nodes outside of region
* lisp/treesit.el (treesit-font-lock-fontify-region): If the capture
name is a function, don't filter.
-2022-11-23 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-switch-project: Use a different fix for bug#58784
@@ -12162,7 +12162,7 @@
(project-current): Refer to it.
(project-switch-project): Bind it. Drop the temp buffer (bug#58784).
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add test scenarios for local ERC modules
@@ -12173,7 +12173,7 @@
* test/lisp/erc/resources/base/local-modules/third.eld: New file.
(Bug#57955.)
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Accept functions in place of passwords in ERC
@@ -12206,7 +12206,7 @@
* test/lisp/erc/erc-tests.el (erc--debug-irc-protocol-mask-secrets):
Add test for masking secrets with `erc--unfun' and friends.
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add non-IRCv3 SASL module to ERC
@@ -12232,7 +12232,7 @@
* test/lisp/erc/resources/sasl/scram-sha-256.eld: New file.
* test/lisp/erc/resources/sasl/external.eld: New file.
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Call erc-login indirectly via new generic wrapper
@@ -12241,7 +12241,7 @@
(erc-process-sentinel, erc-server-connect): Call
`erc--register-connection' instead of `erc-login'.
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Support local ERC modules in erc-mode buffers
@@ -12285,7 +12285,7 @@
(define-erc-module--global, define-erc-module--local): Add tests
asserting module-creation macro. (Bug#57955.)
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Make erc--server-reconnecting non-buffer-local
@@ -12299,7 +12299,7 @@
* lisp/erc/erc.el (erc--cmd-reconnect): Clean up some assertions.
(Bug#57955.)
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't set erc-networks--id until network is known
@@ -12331,7 +12331,7 @@
erc-scenarios-base-association-nick-bumped-mandated-renick): Update to
reflect more liberal association behavior when renamed by IRCd.
-2022-11-23 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add GS2 authorization to sasl-scram-rfc
@@ -12344,7 +12344,7 @@
Also remove whitespace when base64-encoding, as per RFC 5802.
(Bug#57956.)
-2022-11-23 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add csharp-mode and csharp-ts-mode
@@ -12352,7 +12352,7 @@
* lisp/progmodes/csharp-mode.el (csharp-mode, csharp-ts-mode): New
major modes.
-2022-11-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't skip nested defuns in python-ts-mode defun navigation
@@ -12366,7 +12366,7 @@
* lisp/progmodes/python.el (python-ts-mode): Use tree-sitter's default
navigation function.
-2022-11-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
More flexible tree-sitter defun navigation
@@ -12379,7 +12379,7 @@
(treesit-beginning-of-defun)
(treesit-end-of-defun): Use treesit--defun-maybe-top-level.
-2022-11-23 Ulf Jasper <ulf.jasper@web.de>
+2023-04-15 Ulf Jasper <ulf.jasper@web.de>
icalendar.el: Add test(s) for bug#56241
@@ -12387,7 +12387,7 @@
(icalendar-tests--get-error-string-for-export): new.
* icalendar-tests.el (icalendar-export-bug-56241-dotted-pair): new
-2022-11-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
New commands previous-line-completion and next-line-completion (bug#59486)
@@ -12397,7 +12397,7 @@
`previous-line-completion' in the docstring.
(previous-line-completion, next-line-completion): New commands.
-2022-11-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Don't break when loading VC packages on older Emacs versions
@@ -12407,7 +12407,7 @@
* lisp/emacs-lisp/package.el (package-desc): Remove special handling
for "vc annotated" versions. (bug#59404)
-2022-11-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/help.el (describe-bindings): Use the outline-default-rules feature.
@@ -12415,21 +12415,21 @@
to match "Key translations", instead of searching and hiding this section
explicitly.
-2022-11-23 lu4nx <lx@shellcodes.org> (tiny change)
+2023-04-15 lu4nx <lx@shellcodes.org> (tiny change)
Support Racket programs in 'etags'
* lib-src/ctags.c (Scheme_suffixes): Add the Racket language
extension ".rkt".
-2022-11-23 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
xref--search-property: Jump over entries hidden by outline-minor-mode
* lisp/progmodes/xref.el (xref--search-property):
Jump over entries hidden by e.g. outline-minor-mode (bug#49731).
-2022-11-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid signaling args-out-of-range in mouse.el
@@ -12437,7 +12437,7 @@
signaling args-out-of-range errors when mode-line format uses
min-width 'display' property. (Bug#59452)
-2022-11-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of locale-specific string comparison
@@ -12445,7 +12445,7 @@
* src/fns.c (Fstring_collate_equalp): Improve documentation of
'string-collate-equalp' and 'string-collate-lessp'. (Bug#59275)
-2022-11-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix error signaled by mouse-highlight on mode line
@@ -12453,7 +12453,7 @@
signaling args-out-of-range errors when mode-line format uses
min-width 'display' property. (Bug#59452)
-2022-11-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve last change to xterm.c
@@ -12462,7 +12462,7 @@
* src/xterm.c (x_display_set_last_user_time, handle_one_xevent):
New functions.
-2022-11-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Restore tramp-achive's Emacs 26 compatibility
@@ -12472,7 +12472,7 @@
* test/lisp/net/tramp-tests.el (tramp-test48-unload): Special case
of `tramp-register-archive-file-name-handler'.
-2022-11-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: 'S-<down-mouse-1>' on buffer buttons cycles all outlines.
@@ -12481,7 +12481,7 @@
Ignore 'S-<down-mouse-1>'. Don't hard-code 'help-echo' since it should be
customizable by the ':help-echo' keyword in 'define-icon'.
-2022-11-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/xref.el: Support outline-minor-mode (bug#49731)
@@ -12491,7 +12491,7 @@
outline headings are xref groups, and their lines can be hidden by
outline commands.
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Tweak python-ts-mode fontification (bug#59470)
@@ -12499,7 +12499,7 @@
the @ and the identifier of a decorator, not the argument list (if
there is any).
-2022-11-22 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Utilize new font-lock faces for more tree-sitter modes (Bug#59397)
@@ -12524,14 +12524,14 @@
operator font-lock faces.
(ts-mode): Add them to the feature list and alphabetize.
-2022-11-22 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add a way to override project name for project-vc backend
* lisp/progmodes/project.el (project-vc-name): New user option.
(project-name): Override for VC project backend (bug#48747).
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-update-ranges
@@ -12539,17 +12539,17 @@
(treesit-update-ranges): Now clips the range within (point-min)
and (point-max), so the new range we use are not out-of-range.
-2022-11-22 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
* lisp/progmodes/eglot.el (eglot--connect): Use project-name
As discussed in bug#48747.
-2022-11-22 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
* lisp/progmodes/project.el (project-name): New
-2022-11-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'treesit-max-buffer-size' and its use
@@ -12562,14 +12562,14 @@
* src/treesit.c (treesit_check_buffer_size): Measure buffer size
in bytes.
-2022-11-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add '\lll' for VERY MUCH LESS-THAN to TeX input method
* lisp/leim/quail/latin-ltx.el (latin-ltx--define-rules): Add '\lll'
translation for U+22D8. (Bug#59476)
-2022-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adjust x_display_set_last_user_time for Xlib sign-extension
@@ -12578,7 +12578,7 @@
then break x_display_set_last_user_time after 24 days, as Time
is unsigned long for historical reasons. (bug#59480)
-2022-11-22 Ihor Radchenko <yantar92@posteo.net>
+2023-04-15 Ihor Radchenko <yantar92@posteo.net>
Improve the doc string of 'string-collate-lessp'
@@ -12587,13 +12587,13 @@
system does not implement string collation for the
specified locale. (Bug#59275)
-2022-11-22 Sam James <sam@gentoo.org>
+2023-04-15 Sam James <sam@gentoo.org>
Fix tree-sitter build using non-bash /bin/sh (bug#59460)
* configure.ac: Don't use '==' in comparisons.
-2022-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid potentially expensive XFlush and fix ordering
@@ -12601,7 +12601,7 @@
request being made.
(x_lower_frame): Fix ordering wrt to xwidget view lowering.
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Separate tree-sitter and non-tree-sitter variant of sh-mode
@@ -12618,7 +12618,7 @@
(sh-base-mode): New mode.
(bash-ts-mode): New mode.
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit_record_change in casify_region
@@ -12626,7 +12626,7 @@
* src/casefiddle.c: Always record changes.
-2022-11-22 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Tweak faces in Java and TypeScript
@@ -12644,7 +12644,7 @@
* lisp/progmodes/ts-mode.el (ts-mode--font-lock-settings, ts-mode):
Add in bracket and delimiter'.
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
treesit-font-lock-recompute-features now has two modes of operation
@@ -12659,7 +12659,7 @@
* lisp/treesit.el (treesit-font-lock-recompute-features): See above
description.
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Tweak c-ts-mode fontification
@@ -12677,11 +12677,11 @@
(c-ts-mode--fontify-variable): New function.
(c-ts-mode--base-mode): Add & remove features.
-2022-11-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-max-buffer-size): Enlarge value.
-2022-11-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't refer to deleted variable 'gnus-parameter-to-list-alist'
@@ -12689,7 +12689,7 @@
* lisp/gnus/message.el (message-recipients-without-full-name):
Don't refer to deleted variable 'gnus-parameter-to-list-alist'.
-2022-11-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Refresh menus in gnus.texi
@@ -12697,7 +12697,7 @@
* doc/misc/gnus.texi (Top, Starting Up, Article Treatment)
(The Gnus Diary Library, Searching, nnmairix): Refresh menus.
-2022-11-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve wording and markup in gnus-faq.texi
@@ -12709,11 +12709,11 @@
(FAQ 7-2, FAQ 7-3, FAQ 7-3, FAQ 7-4, FAQ 8-1, FAQ 8-5, FAQ 9-1):
Improve markup and reflow some paragraphs.
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Merge remote-tracking branch 'savannah/master' into feature/tree-sitter
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Allow major modes to tweak tree-sitter fontification
@@ -12724,7 +12724,7 @@
(treesit-font-lock-fontify-region): Use the new variable.
* lisp/textmodes/css-mode.el (css-ts-mode): Use the new variable.
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Further tweak tree-sitter fontification heuristics
@@ -12740,7 +12740,7 @@
default (reasons in comments). Measure the query time and activate
the fast mode if query time is long.
-2022-11-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Activate direct asynchronous processes for Tramp container methods
@@ -12759,18 +12759,18 @@
* test/lisp/net/tramp-tests.el (tramp-methods) <mock>:
Add `tramp-direct-async'.
-2022-11-21 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Make sed invocation in Makefile POSIX-compliant
* Makefile.in: Add a semicolon before the closing brace, which is
required by POSIX. Fixes bug#59444.
-2022-11-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/forms.el (forms-mode): Prefer setq-local.
-2022-11-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make instructions for updating ancient filesets obsolete
@@ -12778,14 +12778,14 @@
information for filesets older than 2001 obsolete. Note that this
dates back to before filesets.el was even added to Emacs.
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use constant face for labels in c-ts-mode
* lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): Use
constant face for labels.
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add separate keymaps for js/python/css-ts-mode
@@ -12793,14 +12793,14 @@
* lisp/progmodes/python.el (python-ts-mode-map)
* lisp/textmodes/css-mode.el (css-ts-mode-map): New keymap.
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Tweak python-ts-mode fontification
* lisp/progmodes/python.el (python--treesit-fontify-string): Make the
matching condition for docstrings more specific.
-2022-11-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter fontification heuristic
@@ -12814,11 +12814,11 @@
(treesit-font-lock-fontify-region): Use the new function. Only do
heuristic 2 when the node is large.
-2022-11-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/woman.el (woman-mode-map): Prefer defvar-keymap.
-2022-11-21 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-search-function): New variable (bug#53981).
@@ -12842,11 +12842,11 @@
(shortdoc--display-function): Add text property outline-level.
(shortdoc-mode): Set buffer-local outline-search-function and outline-level.
-2022-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/treesit.c (treesit_load_language): Fix uninitialized uses.
-2022-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid usage of intern_c_string in treesit.c
@@ -12854,27 +12854,27 @@
when the naming makes sense.
(syms_of_treesit): Add new defsyms QCanchor, QCequal, QCmatch.
-2022-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stylistic fixes to treesit.c
* src/treesit.c (treesit_make_ranges):
(Ftreesit_parser_set_included_ranges): Fix coding style.
-2022-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix MS-DOS build
* msdos/sed1v2.inp: Edit out tree-sitter stuff.
-2022-11-20 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add another heuristic to speed up tree-sitter fontification
* lisp/treesit.el (treesit-font-lock-fontify-region): Use
treesit--children-covering-range to reduce the node size.
-2022-11-20 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Limit recursion level for tree-sitter imenu functions
@@ -12890,7 +12890,7 @@
* lisp/textmodes/css-mode.el (css--treesit-imenu): Add limit to
treesit-induce-sparse-tree.
-2022-11-20 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve tree-sitter fontification on large buffers
@@ -12902,7 +12902,7 @@
* lisp/treesit.el (treesit-font-lock-fontify-region): Use the result
of treesit-node-on instead of the root node.
-2022-11-20 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Delete eglot spinner; not useful
@@ -12910,7 +12910,7 @@
(eglot--mode-line-format): Don't include spinner in mode-line.
(eglot--signal-textDocument/didChange): Don't set spinner.
-2022-11-20 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Avoid native compiler setting user-init-file to warnings.el (bug#59358)
@@ -12919,7 +12919,7 @@
Fload while loading the init file that sets `user-init-file'
to a bogus value.
-2022-11-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Rename 'elisp-eval-buffer' to 'elisp-eval-region-or-buffer' (bug#59350)
@@ -12928,18 +12928,18 @@
(emacs-lisp-mode-map, lisp-interaction-mode-map): Rebind 'C-c C-e'
from elisp-eval-buffer to elisp-eval-region-or-buffer.
-2022-11-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Disable display-line-numbers-mode in string-pixel-width (bug#59311)
* lisp/emacs-lisp/subr-x.el (string-pixel-width):
Turn off display-line-numbers-mode when it's enabled.
-2022-11-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* doc/misc/Makefile.in (INFO_COMMON): Sort alphabetically.
-2022-11-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Rework tramp-archive autoloads
@@ -12950,7 +12950,7 @@
(tramp-register-archive-autoload-file-name-handler): Rename from
`tramp-register-archive-file-name-handler'. Adapt callees.
-2022-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Coalesce duplicate scroll valuator handling code
@@ -12961,14 +12961,14 @@
(xi_populate_device_from_info, xi_handle_new_classes): Factor
out duplicate code to that function.
-2022-11-20 Laurence Warne <laurencewarne@gmail.com>
+2023-04-15 Laurence Warne <laurencewarne@gmail.com>
Cancel proced auto update timer if no proced buffers are open
* lisp/proced.el (proced-auto-update-timer): Cancel timer if no proced
buffers are open.
-2022-11-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Advise against using too-high GC thresholds
@@ -12977,14 +12977,14 @@
<gc-cons-percentage>: Advise against enlarging the GC thresholds
more than needed and for prolonged periods of time.
-2022-11-20 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
+2023-04-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Handle error in bookmark-relocate when filename is nil
* lisp/bookmark.el (bookmark-relocate): Handle error when
filename is nil. (Bug#59326)
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix uses of treesit-ready-p
@@ -12997,7 +12997,7 @@
* lisp/progmodes/sh-script.el (sh-mode)
* lisp/progmodes/ts-mode.el (ts-mode): Remove the MODE argument.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove treesit-settings
@@ -13009,7 +13009,7 @@
(treesit--setting-for-mode): Remove function.
(treesit-ready-p): Don't check for user preference in treesit-settings.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove tree-sitter setup from js-json-mode
@@ -13017,7 +13017,7 @@
(js--json-treesit-indent-rules): Remove variables.
(js-json-mode): Remove tree-sitter setup.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter comment indentation for C-like languages
@@ -13045,7 +13045,7 @@
* doc/lispref/modes.texi (Parser-based Indentation)
* doc/lispref/parsing.texi (Tree-sitter major modes): Update manual.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Separate native and tree-sitter variant of js-mode
@@ -13055,7 +13055,7 @@
(js-ts-mode): New mode. Now it doesn't use any cc-mode feature,
meaning it looses comment filling.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Merge function/class-name features in python-mode
@@ -13065,7 +13065,7 @@
(python-ts-mode): Merge function-name and class-name features into
definition.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Split python-mode into native and tree-sitter variant
@@ -13074,7 +13074,7 @@
(python-mode): Change to inherit from python-base-mode.
(python-ts-mode): New mode that sets up tree-sitter.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Expand css-ts-mode and merge it into css-mode
@@ -13089,7 +13089,7 @@
(css-mode): Inherit from css-base-mode, and move some setup to
css-base-mode.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change tree-sitter indent preset 'match' to count on all nodes
@@ -13099,7 +13099,7 @@
* lisp/treesit.el (treesit-simple-indent-presets): Change to count on
both named and anonymous nodes.
-2022-11-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix encoding and display of messages sent by server to emacsclient
@@ -13111,7 +13111,7 @@
MS-Windows when the client is invoked as 'emacsclientw', since
stderr goes to the bit bucket in that case.
-2022-11-19 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Add BBDB test
@@ -13119,7 +13119,7 @@
slapd check.
(eudcb-bbdb): New test.
-2022-11-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix global face scaling bug due to rounding.
@@ -13131,24 +13131,24 @@
(text-scale-adjust): Update the docstring to clarify the difference
with 'global-text-scale-adjust'.
-2022-11-19 Brent Westbrook <bwestbr2@go.olemiss.edu>
+2023-04-15 Brent Westbrook <bwestbr2@go.olemiss.edu>
EUDC: Fix a void-variable error
* lisp/net/eudcb-mailabbrev.el (eudc-mailabbrev-query-internal):
Check if symbol is bound before taking its value. (Bug#59369)
-2022-11-19 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/emacs-lisp/package.el (package-maintainers): Improve error handling
-2022-11-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* Makefile.in: Escape literal asterisks in regexps
Discovered by Po Lu.
-2022-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error trapping in x_set_mouse_color
@@ -13157,13 +13157,13 @@
trap errors around FreeCursor requests, since some of the IDs
may not name valid cursors.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use keyword-face for declaration commands in tree-sitter sh-mode
* lisp/progmodes/sh-script.el: Change builtin to keyword.
-2022-11-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix python-mode tree-sitter fontification
@@ -13175,7 +13175,7 @@
the string node rather than the quote node.
(python--treesit-settings): Capture string node.
-2022-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fixes to fast mouse position reporting
@@ -13185,7 +13185,7 @@
scroll bar coordinates correctly.
(XTmouse_position): Call it.
-2022-11-19 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Add LDAP tests
@@ -13194,7 +13194,7 @@
* test/lisp/net/eudc-resources/dc=gnu,dc=org: New files.
* test/lisp/net/eudc-tests.el (eudcb-ldap): New test.
-2022-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix automatic DPI adjustment and add workarounds for some systems
@@ -13241,7 +13241,7 @@
Cairo. (bug#59371, bug#59347, bug#59283, bug#59271, bug#59285,
bug#59306.)
-2022-11-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#59371
@@ -13250,7 +13250,7 @@
default_font_parameter and face-set-after-frame-default.
(bug#59371)
-2022-11-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix earlier changes to keyboard.c
@@ -13259,14 +13259,14 @@
system frames if there is no menu bar window or the click lies
outside.
-2022-11-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build with ext menu bar
* src/keyboard.c (make_lispy_event): Don't access
menu_bar_window when !HAVE_EXT_MENU_BAR.
-2022-11-18 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix click position to menu bar entry with no-toolkit
@@ -13275,7 +13275,7 @@
* src/xdisp.c (x_y_to_hpos_vpos): Not static anymore.
* src/dispextern.h: Export x_y_to_hpos_vpos.
-2022-11-18 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Revert eudc-server-hotlist default change
@@ -13283,7 +13283,7 @@
* lisp/net/eudc-vars.el (eudc-server-hotlist): Set to nil.
(Bug#59314)
-2022-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree: Make sure a deleted overlay has NULL pointer fields
@@ -13292,11 +13292,11 @@
* src/itree.c (itree_insert_node): Uncomment the assertion accordingly.
-2022-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/bytecomp.el (byte-compile-dynamic-variable-bind): Typo
-2022-11-18 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve 'defvar-keymap' docstring
@@ -13304,14 +13304,14 @@
* lisp/keymap.el (defvar-keymap): Improve description of ':repeat'
keyword.
-2022-11-18 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Silence rmailsum byte compiler warnings
* lisp/mail/rmailsum.el (rmail-summary-by-thread): Prefix unused
lambda args with '_'.
-2022-11-18 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use boolean values directly in rmailsum
@@ -13327,7 +13327,7 @@
'rmail-summary-currently-displayed-msgs' and similar directly instead
of comparing them to t and nil.
-2022-11-18 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Avoid `user-init-file' being set to an eln file (bug#59334)
@@ -13335,7 +13335,7 @@
point `user-init-file' to the source file if the init file was
native-compiled.
-2022-11-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix simple-tests when run noninteractively
@@ -13344,18 +13344,18 @@
Bind text-quoting-style explicitly to ensure consistent behaviour
whether or not the test is run interactively.
-2022-11-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Avoid raw control characters in grm-wy-boot.el
* lisp/cedet/semantic/grm-wy-boot.el
(semantic-grammar-wy--parse-table): Don't use raw control characters.
-2022-11-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (describe-repeat-maps): More outlines and page separators.
-2022-11-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add knob to make `mouse-position' faster on X
@@ -13366,7 +13366,7 @@
(syms_of_xterm): Add new variable to enable them.
* src/xterm.h (struct x_display_info): Update commentary.
-2022-11-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Get rid of the old iterator code
@@ -13399,7 +13399,7 @@
* src/buffer.c (overlays_in, next_overlay_change, overlay_touches_p):
Don't call `ITREE_FOREACH_ABORT` any more.
-2022-11-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Make the iterator reentrant (bug#59183)
@@ -13434,25 +13434,25 @@
* src/emacs.c (main): No need to `init_itree` any more.
(Fdump_emacs): No need to `forget_itree` any more.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/emacs-lisp/package-vc.el: Autoload package-vc-update{,-all}
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure 'package-vc-prepare-patch' runs in the right directory
* lisp/emacs-lisp/package-vc.el (package-vc-prepare-patch): Bind
'default-directory'.p
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Avoid duplicate source packages in 'package-alist'
* lisp/emacs-lisp/package-vc.el (package-vc--unpack-1): Remove all
other source packages before installing the new package description.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix issues related to 'package-vc-install-from-checkout'
@@ -13462,53 +13462,53 @@
of 'package-lisp-dir'.
(package-vc-install-from-checkout): Fix file name handling.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow the direct installation of package specifications
* lisp/emacs-lisp/package-vc.el (package-vc-install): Handle package
specifications as an argument.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Only fetch elpa-packages.eld when necessary
* lisp/emacs-lisp/package-vc.el: Remove hook from
'package-refresh-contents-hook'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove duplicate package descriptions after updating
* lisp/emacs-lisp/package-vc.el (package-vc--unpack-1): Ensure there
is always just one instance of a package description in 'package-alist'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove temporary .texi files if used to build documentation
* lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
Remember if a temporary file was generated and delete it afterwards.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix the behaviour of 'byte-compile-ignore-files'
* lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Negate the
'string-match-p' check. (Bug#59139)
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add missing elpa-package.eld to package test resources
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Avoid destructive manipulation of 'package-vc--archive-spec-alist'
* lisp/emacs-lisp/package-vc.el (package-vc--desc->spec): Replace
'mapcar' with 'apply'. This is done to avoid unintentional cycles.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Improve robustness of 'package-vc-update'
@@ -13517,11 +13517,11 @@
always removed and that 'vc-pull' is always called in the right
directory.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/vc/vc.el (vc-default-last-change): Use 'vc-call'
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have 'vc-prepare-patch' handle prefix arguments.
@@ -13532,34 +13532,34 @@
(vc-prepare-patch): Pull logic out to
'vc-prepare-patch-prompt-revisions'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Explain that 'package-vc-install' doesn't remove tarball packages
* lisp/emacs-lisp/package-vc.el (package-vc-install): Expand documentation.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Mention package name when package is lacking VC data
* lisp/emacs-lisp/package-vc.el (package-vc-install): Add package name.
(package-vc-checkout): Add package name.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add new command 'package-vc-update-all'
* lisp/emacs-lisp/package-vc.el (package-vc-update-all): Add command
(package-vc-update): Add an assertion to verify this.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Raise 'wrong-type-argument' when installing package nil
* lisp/emacs-lisp/package-vc.el (package-vc-install): Check if the
package is nil.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have 'package-vc-selected-packages' consider all installed packages
@@ -13567,7 +13567,7 @@
(package-vc-install-selected-packages): Consider more than just one
value in `package-alist', in case there are multiple installations.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix indefinite loading of asynchronous downloads
@@ -13575,27 +13575,27 @@
the archive that is actually being downloaded to
'package--downloads-in-progress'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix edebug spec for 'package--with-response-buffer'
* lisp/emacs-lisp/package.el (package--with-response-buffer): Add a
spec that makes the macro debuggable.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Improve robustness of documentation generation
* lisp/emacs-lisp/package-vc.el (package-vc--build-documentation): Log
output and display error messages if anything goes wrong.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove unused variable in 'package-vc--unpack'
* lisp/emacs-lisp/package-vc.el (package-vc--unpack): Remove 'url'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Move package spec documentation to 'package-vc-selected-packages'
@@ -13603,14 +13603,14 @@
documentation.
(package-vc--archive-spec-alist): Remove documentation.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix type error in package-vc prompt function
* lisp/emacs-lisp/package-vc.el (package-vc--read-package-name): Pass
(not allow-url) as REQUIRE-MATCH, not as INITIAL-INPUT.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Rename 'package-vc-refresh' to 'package-vc-rebuild'
@@ -13622,7 +13622,7 @@
'package-refresh-contents'. Thanks to Rudolf Adamkovič for the
suggestion.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Track 'default-directory' while updating source packages
@@ -13630,7 +13630,7 @@
directory to the identifier list, in case the remaining
'vc-do-command' arguments are all read-time constants.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Respect :lisp-dir in package specs by loading a sub-directory
@@ -13642,14 +13642,14 @@
* lisp/emacs-lisp/package.el (package--delete-directory): Check if a
directory is a symbolic link.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix generation of documentation for source packages
* lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
Call "makeinfo" before "install-info"
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove references to internal symbols from public docstrings
@@ -13658,14 +13658,14 @@
(package-vc-install): Unmention 'package-vc--guess-backend' in favour
of 'package-vc-heuristic-alist'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Expand 'package-vc--unpack-1' documentation
* lisp/emacs-lisp/package-vc.el (package-vc--unpack-1): Explain what
the function does.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Clarify 'package-vc--build-documentation' docstring
@@ -13674,7 +13674,7 @@
As suggested by Eli Zaretskii.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix the docstring for 'package-vc--version'
@@ -13684,7 +13684,7 @@
It seems like this was just copied over from 'package-vc-commit', for
no good reason.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix 'package-vc-selected-packages' documentation
@@ -13692,7 +13692,7 @@
reference to non-existent function and add an explanation that the
value won't override an existing source package installation.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Mark 'package-vc-update' as interactive
@@ -13710,7 +13710,7 @@
(package-vc-refresh): Use 'package-vc--read-package-desc'.
(package-vc-prepare-patch): Use 'package-vc--read-package-desc'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Autoload 'package-vc-install-selected-packages'
@@ -13719,14 +13719,14 @@
(package-vc-selected-packages): Set
:initialize to 'custom-initialize-default'.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Mark 'package-vc-install-selected-packages' as interactive
* lisp/emacs-lisp/package-vc.el (package-vc-ensure-packages): Add an
interactive spec.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Rename '-ensure-packages' to -install-selected-packages'
@@ -13735,7 +13735,7 @@
to 'package-vc-install-selected-packages'.
(package-vc-selected-packages): Call renamed function.
-2022-11-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Handle strings as keys in 'package-vc-ensure-packages'
@@ -13744,7 +13744,7 @@
As requested by Rudolf Adamkovič.
-2022-11-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Avoid raw control characters in two files
@@ -13754,7 +13754,7 @@
* test/lisp/subr-tests.el (test-keymap-parse-macros): Don't use
raw control characters.
-2022-11-17 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Utilize new font-lock faces for C/C++ and Python tree-sitter use
@@ -13767,7 +13767,7 @@
property, operator, bracket, and delimiter font-lock faces.
(python-mode): Add them to the feature list.
-2022-11-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improvements to the tree-sitter setup in sh-script.el
@@ -13778,7 +13778,7 @@
(sh-mode--treesit-settings): Change feature names. Simplify
declaration-command feature.
-2022-11-17 João P. L. de Carvalho <jaopaulolc@gmail.com>
+2023-04-15 João P. L. de Carvalho <jaopaulolc@gmail.com>
Initial fontification in sh-mode with tree-sitter
@@ -13790,24 +13790,24 @@
(sh-mode--treesit-other-keywords)
(sh-mode--treesit-fontify-decl-command): New functions.
-2022-11-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (describe-repeat-maps): Use fill-region-as-paragraph.
-2022-11-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/package-requires
GitHub-reference: https://github.com/jwiegley/use-package/issues/1024
-2022-11-17 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use mapc instead of mapcar when walking rmail threads
* lisp/mail/rmailsum.el (rmail-summary--walk-thread-message-recursively):
Use `mapc' instead of `mapcar'; we don't care about the results.
-2022-11-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Add new "stateless" iterator code and post-order traversal
@@ -13827,7 +13827,7 @@
* src/itree.h (enum itree_order): New value for post-order traversals.
-2022-11-17 Andrea Monaco <andrea.monaco@autistici.org>
+2023-04-15 Andrea Monaco <andrea.monaco@autistici.org>
New Rmail summary "by thread"
@@ -13843,7 +13843,7 @@
* etc/NEWS: Announce the new Rmail features.
-2022-11-17 Andrea Monaco <andrea.monaco@autistici.org>
+2023-04-15 Andrea Monaco <andrea.monaco@autistici.org>
Improve progressive summaries in Rmail
@@ -13859,7 +13859,7 @@
(rmail-summary-by-senders): Call 'rmail-summary-exists' to verify
that the summary is usable.
-2022-11-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of recent treesit changes
@@ -13871,13 +13871,13 @@
wording and punctuation.
(Using Parser): Improve indexing and wording.
-2022-11-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add package keyword from finder-known-keywords
Fix Package-Requires for bind-{chord,key}.el
-2022-11-17 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Make implicit int types following specifiers fontify correctly
@@ -13894,14 +13894,14 @@
* lisp/progmodes/cc-langs.el (c-maybe-typeless-specifier-re): New lang
const/var.
-2022-11-17 Jan Stranik <jan@stranik.org>
+2023-04-15 Jan Stranik <jan@stranik.org>
Support multi-line C++11 strings in Ebrowse
* lib-src/ebrowse.c (yylex): Support C++11 multi-line strings.
(bug#58847)
-2022-11-17 Laurence Warne <laurencewarne@gmail.com>
+2023-04-15 Laurence Warne <laurencewarne@gmail.com>
Make VSIZE and RSS human-readable in Proced buffers
@@ -13909,18 +13909,18 @@
(proced-grammar-alist): Use proced-format-memory to format
VSIZE and RSS. (Bug#59272)
-2022-11-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/progmodes/eglot.el (eglot-server-programs): Remove Intelephense.
-2022-11-17 USAMI Kenta <zonuexe+tadsan@zonu.me>
+2023-04-15 USAMI Kenta <zonuexe+tadsan@zonu.me>
Add Eglot alternatives for PHP language servers
* lisp/progmodes/eglot.el (eglot-server-programs): Add alternatives
for PHP.
-2022-11-17 Olivier Certner <olce.emacs@certner.fr>
+2023-04-15 Olivier Certner <olce.emacs@certner.fr>
ediff: Merges with ancestor: Fix computation of hunks and proposed merge
@@ -13944,33 +13944,33 @@
(Bug#59182)
-2022-11-17 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
shell: Add repeat-map for shell-{forward,backward}-prompt
* lisp/shell.el (shell-repeat-map): New defvar. (Bug#59144)
-2022-11-17 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
esh-mode: Add repeat-map for eshell-{forward,backward}-argument
* lisp/eshell/esh-mode.el (eshell-command-repeat-map): New defvar.
(Bug#59144)
-2022-11-17 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
em-prompt: Add repeat-map for eshell-{next,previous}-prompt
* lisp/eshell/em-prompt.el (eshell-prompt-repeat-map): New keymap.
(Bug#59144)
-2022-11-17 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
comint: Add repeat-map for comint-{next,previous}-prompt
* lisp/comint.el (comint-repeat-map): New keymap. (Bug#59144)
-2022-11-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of mode line when the right divider is used
@@ -13982,11 +13982,11 @@
(display_mode_line): Widen the last glyph to account for adding
the right box line to it. (Bug#5930)
-2022-11-17 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
* lisp/emacs-lisp/shortdoc.el (sequence): Don't use cl-lib (bug#59319)
-2022-11-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -13995,18 +13995,18 @@
# Conflicts:
# doc/emacs/custom.texi
-2022-11-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in window.el
* lisp/window.el (other-window-repeat-map)
(resize-window-repeat-map): Prefer defvar-keymap.
-2022-11-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/keymap.el (defvar-keymap): Don't use pcase.
-2022-11-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/keymap.el (defvar-keymap): Add support for repeat-mode.
@@ -14015,7 +14015,7 @@
according to ':repeat (:enter (commands ...) :exit (commands ...))'.
https://lists.gnu.org/archive/html/emacs-devel/2022-11/msg00968.html
-2022-11-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (describe-repeat-maps): Improve the output.
@@ -14023,7 +14023,7 @@
enter and exit repeat-map. Use default outline headings.
https://lists.gnu.org/archive/html/emacs-devel/2022-11/msg00969.html
-2022-11-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix treatment of input focus on MPX setups
@@ -14034,7 +14034,7 @@
(x_focus_frame): Use x_set_input_focus instead of
XSetInputFocus.
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Improve new connections in erc-handle-irc-url
@@ -14065,7 +14065,7 @@
* test/lisp/erc/resources/join/legacy/foonet.eld: Relax
timeout. (Bug#56514.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add optional server param to erc-networks--determine
@@ -14074,7 +14074,7 @@
* test/lisp/erc/erc-networks-tests.el (erc-networks--determine): Add
test. (Bug#56514.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Default to TLS port when calling erc-tls from lisp
@@ -14087,7 +14087,7 @@
* test/lisp/erc/erc-tests.el (erc-tls): Add simplistic test focusing
on default parameters. (Bug#56514.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Refactor erc-select-read-args
@@ -14105,7 +14105,7 @@
reading user input during interactive invocations of entry points.
(Bug#56514.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Accommodate ircs:// URLs in url-irc and browse-url
@@ -14130,7 +14130,7 @@
* etc/NEWS: Mention select browse-url and url-irc
changes. (Bug#56514.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Warn of future breaking change to erc-response.tags
@@ -14144,7 +14144,7 @@
(erc-parse-server-response): Call `erc--parse-message-tags'.
(Bug#58797.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Improve auto-reconnect visibility in ERC
@@ -14185,7 +14185,7 @@
(erc-scenarios-base-cancel-reconnect): Add new test case for canceling
reconnect timers. (Bug#58840.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Support auth-source-pass in ERC
@@ -14208,7 +14208,7 @@
erc--auth-source-search--pass-overrides): Remove `ert-skip' guard.
(Bug#58985.)
-2022-11-17 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Make auth-source-pass behave more like other backends
@@ -14251,7 +14251,7 @@
Special thanks to Akib Azmain Turja <akib@disroot.org> for helping
improve this patch.
-2022-11-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Enable/disable 'server-mode' when starting/stopping the server
@@ -14262,24 +14262,24 @@
* test/lisp/server-tests.el: New file (bug#58909).
-2022-11-16 Karl Fogel <kfogel@red-bean.com>
+2023-04-15 Karl Fogel <kfogel@red-bean.com>
Fix two typos in a doc string
-2022-11-16 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Fix eudc-capf-message-expand-name nil result
* lisp/net/eudc-capf.el (eudc-capf-message-expand-name): Return
nil if EUDC query returns no results. (Bug#59314)
-2022-11-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-search-forward not matching leaf nodes
* src/treesit.c: Match against NODE at start of the loop.
-2022-11-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Tweaks on c-ts-mode fontification rules
@@ -14301,7 +14301,7 @@
(c-ts-mode--fontify-declarator): New function.
(c-ts-mode): Update feature-list.
-2022-11-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix c-ts-mode-imenu
@@ -14309,7 +14309,7 @@
its name, ignore the node.
(c-ts-mode--imenu): Don't include a category if it's empty.
-2022-11-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Allow checking for outdated nodes in tree-sitter
@@ -14320,7 +14320,7 @@
* src/treesit.c (Ftreesit_node_check): Add new property 'outdated'.
* test/src/treesit-tests.el (treesit-node-check): Add tests.
-2022-11-16 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-explore-mode
@@ -14346,7 +14346,7 @@
(treesit--explorer-tree-mode)
(treesit-explore-mode): New modes.
-2022-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/itree.c: Use more uniform names starting with `itree_`
@@ -14361,37 +14361,37 @@
(itree_insert_node): Rename from `interval_tree_insert`.
(itree_node_intersects): Rename from `interval_node_insert`.
-2022-11-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/dir-locals
GitHub-reference: https://github.com/jwiegley/use-package/issues/1023
-2022-11-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/fix-headers
GitHub-reference: https://github.com/jwiegley/use-package/issues/1022
-2022-11-16 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Call xref--analyze with correct project
* lisp/progmodes/xref.el (xref-show-definitions-buffer-at-bottom):
Call xref--analyze with correct project.
-2022-11-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add .dir-locals.el
-2022-11-16 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
+2023-04-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Add flat-button to docstring of 'set-face-attribute'
* lisp/faces.el (set-face-attribute): Add 'flat-button' to
COLOR and STYLE sections of docstring. (Bug#59266)
-2022-11-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Reduce buffer-tests noisiness even more
@@ -14401,7 +14401,7 @@
(test-buffer-modifications, test-restore-buffer-modified-p): Shut
up auto-save messages. (Bug#59028)
-2022-11-16 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Reduce buffer-tests noisiness when run in batch mode.
@@ -14410,7 +14410,7 @@
failures. (bug#59028)
(overlay-tests-start-recording-modification-hooks): ditto.
-2022-11-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Set vc-prepare-patches-separately to nil in .dir-locals.el
@@ -14418,13 +14418,13 @@
See https://lists.gnu.org/archive/html/emacs-devel/2022-11/msg00973.html.
-2022-11-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete redundant headers
Normalize GPLv3 license statements
-2022-11-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -14435,7 +14435,7 @@
# doc/emacs/custom.texi
# doc/emacs/mark.texi
-2022-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix calculation of tab bar lines during automatic height adjustment
@@ -14446,24 +14446,24 @@
* src/xfns.c (x_change_tab_bar_height): Do not round tab bar
height up. (bug#59285, bug#59271)
-2022-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error trapping in x_focus_frame
* src/xterm.c (x_focus_frame): Improve commentary. Dno not trap
errors around x_get_server_time.
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jwiegley/revert-1019-johnw/multi-keymap
GitHub-reference: https://github.com/jwiegley/use-package/issues/1021
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Allow multiple keymaps in :map argument"
-2022-11-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
New command 'project-list-buffers' bound to 'C-x p C-b' (bug#59153)
@@ -14479,7 +14479,7 @@
'project-list-buffers'.
(project-list-buffers): New command.
-2022-11-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add emacs-devel-specific font-lock rules to c-ts-mode
@@ -14489,47 +14489,47 @@
Additional font-lock rules.
(c-ts-mode--fontify-defun): New function.
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jwiegley/johnw/multi-keymap
GitHub-reference: https://github.com/jwiegley/use-package/issues/1019
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge remote-tracking branch 'origin/master' into pr-830
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/texinfo-wip
GitHub-reference: https://github.com/jwiegley/use-package/issues/1018
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge branch 'master' into texinfo-wip
-2022-11-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/gnu-elpa
GitHub-reference: https://github.com/jwiegley/use-package/issues/1017
-2022-11-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the MS-Windows build due to use of a new TS function
* src/treesit.c (ts_tree_get_changed_ranges) [WINDOWSNT]: Define,
load from the library, and call through a function pointer.
-2022-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change again
* src/frame.c (Freconsider_frame_fonts): Apply value of default
face again. (bug#59283)
-2022-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More fixes to last change
@@ -14538,7 +14538,7 @@
* src/frame.c (Freconsider_frame_fonts): New function.
(syms_of_frame): Add new function.
-2022-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recent Cairo xsettings changes
@@ -14553,7 +14553,7 @@
obtain the default font settings on Cairo. (bug#58912,
bug#59283, bug#59271)
-2022-11-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make tree-sitter fontification automatically update
@@ -14568,7 +14568,7 @@
(treesit-major-mode-setup): Register fontifier with every existing
parser.
-2022-11-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove the contextual hack in tree-sitter fontification
@@ -14586,7 +14586,7 @@
(treesit-font-lock-fontify-region): Remove code processing contextual
nodes.
-2022-11-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Allow tree-sitter to notify parse-tree changes
@@ -14599,26 +14599,26 @@
(Ftreesit_parser_remove_notifier): New functions.
* src/treesit.h (Lisp_TS_Parser): New field after_change_functions.
-2022-11-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix makeinfo warnings
Resolves https://github.com/jwiegley/use-package/issues/962
-2022-11-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Extract out treesit_make_ranges
* src/treesit.c (treesit_make_ranges): New function.
(Ftreesit_parser_included_ranges): Use treesit_make_ranges.
-2022-11-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use two spaces to end sentences
Recommend GNU ELPA over MELPA
-2022-11-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use substitute-command-keys for buffer-menu help
@@ -14628,44 +14628,44 @@
(Buffer-menu-delete): Advertise key binding as 'd'.
(Buffer-menu-this-window): Advertise key binding as 'f'.
-2022-11-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
manual: Regenerate texi file
-2022-11-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add face to key bindings suggested by M-x
* lisp/simple.el (execute-extended-command--describe-binding-msg):
Use 'help-key-binding' face for keybinding.
-2022-11-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/checkdoc
GitHub-reference: https://github.com/jwiegley/use-package/issues/1015
-2022-11-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/ci
GitHub-reference: https://github.com/jwiegley/use-package/issues/1013
-2022-11-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't highlight syntax error in c-ts-mode
* lisp/progmodes/c-ts-mode.el (c-ts-mode--base-mode): Remove error
feature.
-2022-11-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Explain how to bind keys to non-ASCII sequences
* doc/emacs/custom.texi (Init Rebinding): Explain how to use `kbd'
when binding keys to non-ASCII sequences.
-2022-11-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make C-x 5 o work on GNOME Shell-like Wayland compositors
@@ -14684,7 +14684,7 @@
* src/pgtkterm.h (struct pgtk_output): New field
`last_user_time'.
-2022-11-14 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Prevent over-eager recognition of a variable as a found type
@@ -14698,7 +14698,7 @@
* lisp/progmodes/cc-engine.el (c-forward-decl-or-cast-1): CASE 18 - set
unsafe-maybe to t, when needed.
-2022-11-14 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix some inconsistencies in *-ts-modes
@@ -14720,7 +14720,7 @@
(ts-mode--font-lock-settings): Whitespace cleanup.
(ts-mode): Add electric-indent.
-2022-11-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove feature that checks whether tree-sitter node "has changes"
@@ -14736,7 +14736,7 @@
remove the branch for "has-changes".
(syms_of_treesit): Remove has-changes.
-2022-11-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes upon trying to focus a child frame on click
@@ -14744,31 +14744,31 @@
override-redirect frames. Explain why.
(x_focus_frame): Catch errors around XSetInputFocus.
-2022-11-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Various checkdoc fixes
-2022-11-13 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Hardcode "-name" instead of using find-name-arg
* lisp/progmodes/project.el (project--files-in-directory):
Hardcode "-name" instead of using find-name-arg (bug#59023).
-2022-11-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from bhankas/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/1011
-2022-11-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix building on Emacs 24.3
This fixes the following error:
use-package-core.el:60:32:Error: Cannot open load file: subr-x
-2022-11-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix tests on Emacs 26 or older
@@ -14777,7 +14777,7 @@
In toplevel form:
bind-key.el:549:1:Error: the function ‘mapcan’ is not known to be defined.
-2022-11-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (set-message-functions): New user option.
@@ -14792,7 +14792,7 @@
(multi-message-separator, multi-message-list): New variables.
(set-multi-message): New function.
-2022-11-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix suggest-key-bindings displaying key as command
@@ -14803,7 +14803,7 @@
* test/lisp/simple-tests.el
(simple-execute-extended-command--describe-binding-msg): New test.
-2022-11-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: More improvements for tab-bar-auto-width (bug#59208)
@@ -14811,7 +14811,7 @@
Prevent from going into infinite loops. More optimizations.
(tab-bar-format-align-right): Use add-face-text-property, not propertize.
-2022-11-13 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Eglot: fix null scopeUri regression in workspace/configuration
@@ -14824,35 +14824,35 @@
A nil return value must now be handled in the caller, do that for the
workspace/configuration handler to avoid an uncaught error.
-2022-11-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
New test for execute-extended-command helper defun
* test/lisp/simple-tests.el
(simple-execute-extended-command--shorter): New test.
-2022-11-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in sql.el
* lisp/progmodes/sql.el (sql-interactive-mode-map, sql-mode-map):
Prefer defvar-keymap.
-2022-11-13 Davide Masserut <dm@mssdvd.com>
+2023-04-15 Davide Masserut <dm@mssdvd.com>
Add new Go modes to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add new major modes
for Go to be used with gopls. (Bug#59245)
-2022-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#59075
* src/nsimage.m (ns_can_use_native_image_api): Do not use native
image APIs for SVG images when RSVG is present. (bug#59075)
-2022-11-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix crash on MS-Windows due to memory-allocation problem in treesit.c
@@ -14862,7 +14862,7 @@
whereas 'strdup' uses the default implementation in the MS-Windows
C runtime library.
-2022-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix warnings without XCB or XFixes
@@ -14871,7 +14871,7 @@
the compiler still emitted warnings despite the ((void)
SAFE_ALLOCA (0)) statement.
-2022-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent non-local exits from ns-in-echo-area
@@ -14881,7 +14881,7 @@
([EmacsView firstRectForCharacterRange:]): Call them instead.
(syms_of_nsterm): New defsym.
-2022-11-12 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve tree-sitter imenu for c-mode and js-mode
@@ -14896,14 +14896,14 @@
(js--treesit-imenu-1): Use the name alone for labels.
(js--treesit-imenu): Categorize menu entries.
-2022-11-12 Michal Dubiel <majkijin@gmail.com> (tiny change)
+2023-04-15 Michal Dubiel <majkijin@gmail.com> (tiny change)
eglot: Support signature labels without a function name
* lisp/progmodes/eglot.el (eglot--sig-info): Support signature labels
without a function name. (Bug#58777)
-2022-11-12 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add tree-sitter modes for C-like languages
@@ -14914,29 +14914,29 @@
* lisp/progmodes/json-ts-mode.el: New major mode with tree-sitter support.
* lisp/progmodes/css-ts-mode.el: New major mode with tree-sitter support.
-2022-11-12 Morgan Smith <Morgan.J.Smith@outlook.com>
+2023-04-15 Morgan Smith <Morgan.J.Smith@outlook.com>
vc-git: Ensure git doesn't try to colorize stashes
* lisp/vc/vc-git.el (vc-git-stash-show): Add --color=never to git
flags. (Bug#59158)
-2022-11-12 Shohei YOSHIDA <syohex@gmail.com>
+2023-04-15 Shohei YOSHIDA <syohex@gmail.com>
Add cperl-mode to eglot-server-programs
-2022-11-12 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
.dir-locals.el (C entry). Add NO_INLINE to c-noise-macro-names
-2022-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly handle key map updates on Haiku
* src/haiku_support.cc (MessageReceived): Handle
B_KEY_MAP_LOADED by clearing the previous keymap.
-2022-11-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document that 'transient-mark-mode' is off in batch mode
@@ -14944,7 +14944,7 @@
belatedly, that 'transient-mark-mode' is turned on by default only
in interactive sessions. (Bug#59201)
-2022-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle request serial wraparound more correctly
@@ -14956,14 +14956,14 @@
(x_clean_failable_requests, x_stop_ignoring_errors): Use those
functions to perform request serial comparison.
-2022-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix implementation of MULTIPLE
* src/xselect.c (x_handle_selection_request): Make sure the type
of a reply to a MULTIPLE request is ATOM_PAIR.
-2022-11-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix recent changes in documentation
@@ -14975,22 +14975,22 @@
changed.
(Retrieving Nodes): Fix wording and markup.
-2022-11-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/lispref/intro.texi: Fix PDF output without VERSION. (Bug#59199)
-2022-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/xwidget.el: Improve Commentary.
-2022-11-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in cus-theme.el
* lisp/cus-theme.el (custom-new-theme-mode-map)
(custom-theme-choose-mode-map): Prefer defvar-keymap.
-2022-11-11 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve treesit-node-at
@@ -14999,20 +14999,20 @@
return the node that a user would expect in various circumstances.
* test/src/treesit-tests.el (treesit-node-at): New test.
-2022-11-11 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project--buffer-list: Remove as unused
* lisp/progmodes/project.el (project--buffer-list):
Remove as unused (pointed out in bug#59153 by Juri).
-2022-11-11 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Mention obsolete gnus/nnir package in Gnus manual
* doc/misc/gnus.texi (nnir): Provide some hints for upgrade.
-2022-11-11 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Make Eglot consider FileSystemWatcher.kind when watching files
@@ -15028,7 +15028,7 @@
value of 7, which is computed from taking the bitwise OR operation
WatchKind.Create (1) | WatchKind.Change (2) | WatchKind.Delete (4).
-2022-11-11 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix &key parameters called without arguments (bug#58714)
@@ -15036,7 +15036,7 @@
argument.
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-&key-arguments): New test.
-2022-11-11 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
eglot: Remove menu entry for manual
@@ -15044,7 +15044,7 @@
eglot info manual instead of the less exhaustive README.
(eglot-menu): Remove entry for reading the manual. (Bug#58892)
-2022-11-10 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Remove redundant library installation instructions
@@ -15061,7 +15061,7 @@
* lisp/vc/smerge-mode.el: Remove redundant installation instructions
for packages bundled with Emacs.
-2022-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Slightly adjust EWMH frame activation code for child frames
@@ -15071,18 +15071,18 @@
focus and the child frame do not share the same toplevel) or
focus transfers from child frames to their toplevel parents.
-2022-11-10 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/progmodes/hideshow.el: Improve Commentary.
-2022-11-10 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in hideshow.el
* lisp/progmodes/hideshow.el (hs-minor-mode-map): Prefer
defvar-keymap.
-2022-11-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
In end-of-defun, terminate early if no further defun exists
@@ -15095,7 +15095,7 @@
clarifying the return value.
(end-of-defun): Terminate early if beginning-of-defun-raw returns nil.
-2022-11-10 dannyfreeman <danny@dfreeman.email>
+2023-04-15 dannyfreeman <danny@dfreeman.email>
Eglot: Only handle URIs with the file:// scheme (bug#58790)
@@ -15118,7 +15118,7 @@
* lisp/progmodes/eglot.el (eglot--path-to-uri): Noop if already an
URI. (eglot--uri-to-path): Only handle file:// URIs
-2022-11-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve Eglot's docstrings and manual
@@ -15132,21 +15132,21 @@
* lisp/progmodes/eglot.el (eglot-server-programs): Mention
eglot-alternatives in eglot-server-program's docstring.
-2022-11-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Utilize new face font-lock-escape-face in python-mode
* lisp/progmodes/python.el (python--treesit-settings): Use
font-lock-escape-face rather than font-lock-constant-face.
-2022-11-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Accept older versions of tree-sitter library
* configure.ac: Accept a tree-sitter library as long as it provides
ts_set_allocator.
-2022-11-10 Evgeni Kolev <evgenysw@gmail.com>
+2023-04-15 Evgeni Kolev <evgenysw@gmail.com>
Ignore errors when shutting down all LSP servers (bug#59146)
@@ -15158,21 +15158,21 @@
* eglot.el (eglot-shutdown-all): Ignore errors when shutting down
servers, converting errors to messages.
-2022-11-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Don't reset the inbox buffer's modified status in Rmail
* lisp/mail/rmail.el (rmail-get-new-mail-1): Don't mark the buffer
unmodified if it was modified before getting new mail. (Bug#59108)
-2022-11-10 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Support 'texlab' LSP server in Eglot OOTB
* lisp/progmodes/eglot.el (eglot-server-programs): Add support for
'texlab' LSP server for tex-mode and similar languages.
-2022-11-10 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Add to /etc/NEWS a mention of the new C++20 support in CC Mode
@@ -15180,7 +15180,7 @@
* lisp/progmodes/cc-defs.el (c-version): Update to 5.35.2.
-2022-11-10 Randy Taylor <dev@rjt.dev>
+2023-04-15 Randy Taylor <dev@rjt.dev>
Add more font-lock faces (Bug#58940)
@@ -15194,7 +15194,7 @@
* doc/lispref/modes.texi (Faces for Font Lock): Document them.
* etc/NEWS: Mention them.
-2022-11-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix initialization of module functions
@@ -15202,7 +15202,7 @@
initialization of module functions. Suggested by Richard Copley
<rcopley@gmail.com>. (Bug#59104)
-2022-11-10 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix indentation for multi-line block start in Python mode
@@ -15212,20 +15212,20 @@
* test/lisp/progmodes/python-tests.el
(python-info-dedenter-opening-block-positions-6): New test. (Bug#59009)
-2022-11-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid dumping core upon SIGHUP in non-interactive sessions
* src/emacs.c (terminate_due_to_signal): Don't special-case
SIGINT. Patch by Paul Eggert <eggert@cs.ucla.edu>. (Bug#58956)
-2022-11-10 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/progmodes/cc-mode.el (c-fl-decl-start): Fix off-by-one error.
This fixes bug #59070.
-2022-11-10 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
+2023-04-15 Gabriel do Nascimento Ribeiro <gabriel376@hotmail.com>
Make 'dired-hide-details-mode' work after 'dired-hide-subdir'
@@ -15234,7 +15234,7 @@
* test/lisp/dired-tests.el (dired-test-bugXXXX): New test.
-2022-11-10 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Rewrite the `kill-buffer-delete-auto-save' tests (bug#59028)
@@ -15254,14 +15254,14 @@
of the old `test-kill-buffer-auto-save-delete'.
(test-kill-buffer-auto-save-delete-yes): Ditto for the "no" half.
-2022-11-10 Nicolas Graner <nicolas@graner.name>
+2023-04-15 Nicolas Graner <nicolas@graner.name>
Better support for 'textarea' and 'select' tags in EWW
* lisp/net/eww.el (eww-tag-textarea, eww-tag-select): Don't miss
'textarea' and 'select' tags. (Bug#58973)
-2022-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Be a little more paranoid about XI 2.0 implementations
@@ -15269,7 +15269,7 @@
(xi_disable_devices): Do not restore valuator values if the
valuator info has a mode of Relative and a value of 0.0.
-2022-11-09 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
Make 't' in bs-mode be more defensive
@@ -15280,11 +15280,11 @@
by Eli Zaretskii in commit 794fbd1c07 of 2022-02-24.
Thanks to Bob Rogers <rogers@rgrjr.com> for noticing.
-2022-11-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* configure.ac: Change required tree-sitter version to 0.20.2.
-2022-11-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make tree-sitter node type match case-sensitive
@@ -15295,7 +15295,7 @@
(Ftreesit_search_forward)
(Ftreesit_induce_sparse_tree): Update docstring.
-2022-11-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
New function fast_c_string_match and fast_c_string_match_internal
@@ -15308,14 +15308,14 @@
(fast_c_string_match_ignore_case): Change to thin wrapper.
* src/search.c (fast_c_string_match_internal): New function.
-2022-11-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter shortdoc
* lisp/treesit.el (treesit--generate-shortdoc-examples): New function.
(treesit): New shortdoc group.
-2022-11-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Mimic existing python-mode beg/end-of-defun behavior better
@@ -15324,18 +15324,18 @@
* lisp/progmodes/python.el (python-mode): Use custom beg/end-of-defun
functions.
-2022-11-09 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Optimize c-bs-interval, changing its value from 5000 to 2000
* lisp/progmodes/cc-engine.el (c-bs-interval): This optimization speeds
forward scrolling in a C Mode buffer by ~2.4%, backward scrolling by ~1.8%.
-2022-11-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-auto-width): Add selected-frame to the cache key.
-2022-11-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in matrix_row
@@ -15343,18 +15343,18 @@
violations when the cursor's VPOS winds up being invalid for the
window. (Bug#59147)
-2022-11-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/thread.el (thread-list-mode-map): Prefer defvar-keymap.
-2022-11-09 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Delete emacs < 26.2 workaround in eglot--apply-text-edits
* lisp/progmodes/eglot.el (eglot--apply-text-edits): Delete emacs <
26.2 workaround; fixes bug in ada-mode test.
-2022-11-09 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Teach thing-at-point to recognize bracketed IPv6 URLs
@@ -15364,14 +15364,14 @@
* test/lisp/thingatpt-tests.el (thing-at-point-test-data): Add cases
for IPv6 URLs. Bug#56514.
-2022-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make the PGTK port display a loud warning when run under X
* src/pgtkterm.c (pgtk_display_x_warning): New function.
(pgtk_term_init): Call it.
-2022-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
"Fix" iconification handling on PGTK
@@ -15382,31 +15382,31 @@
visibility as correctly as possible under Wayland while
iconified. (bug#55836)
-2022-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid use of `uint' type in XKB code
* src/xterm.c (x_find_modifier_meanings, handle_one_xevent): Use
`unsigned int' instead of `uint'.
-2022-11-09 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/lread.c (syms_of_lread): Drop unused capture group.
-2022-11-09 Nicholas Vollmer <iarchivedmywholelife@gmail.com>
+2023-04-15 Nicholas Vollmer <iarchivedmywholelife@gmail.com>
bytecomp.el (byte-recompile-directory): Fix negated ignore logic
Previous logic would only compile files which matched the
byte-compile-ignore-files regular expression. (Bug#59115)
-2022-11-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-auto-width): Use 'frame-inner-width'.
* lisp/tab-bar.el (tab-bar-get-buffer-tab): Add optional arg 'all-tabs'.
-2022-11-08 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
EUDC: Add ecomplete and mailabbrev backends
@@ -15432,18 +15432,18 @@
(eudc-test-make-address, eudcb-ecomplete, eudcb-mailabbrev): New
test cases.
-2022-11-08 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Deprecate eudc-server variable
* lisp/net/eudc-vars.el (eudc-server): Deprecate variable for
Emacs 29.1.
-2022-11-08 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
* lisp/progmodes/eglot.el (eglot--pos-to-lsp-position): Improve comment
-2022-11-08 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Improve accuracy of recognition of bitfields
@@ -15452,7 +15452,7 @@
identifier) followed by a semicolon or comma before concluding we have a
bitfield.
-2022-11-08 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Don't use @w around @xref in ede.texi
@@ -15473,7 +15473,7 @@
ede-compilation-program, ede-compiler, ede-object-compiler,
ede-linker): Remove @w around @xref.
-2022-11-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some duplicate event group conversion code
@@ -15481,7 +15481,7 @@
Move keyboard event state over.
(handle_one_xevent): Use it where necessary.
-2022-11-08 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Stabilize the fontification in the presence of "register" keywords
@@ -15493,7 +15493,7 @@
c-promote-possible-types to 'just-one rather than t around the call to
c-forward-type.
-2022-11-07 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Add eudc-ignore-options-file customization
@@ -15508,14 +15508,14 @@
(eudc-bookmark-server): Likewise.
(eudc-save-options): Likewise. (Bug#56154)
-2022-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing SAFE_FREE on XI 2.0 servers
* src/xterm.c (xi_populate_device_from_info): Add missing
SAFE_FREE.
-2022-11-07 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix infinite loop in c-brace-stack-at.
@@ -15526,14 +15526,14 @@
c-beginning-of-current-token unless the previous c-syntactic-re-search-forward
has succeeded at least once.
-2022-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid invalid values showing up in scroll valuators
* src/xterm.c (xi_populate_device_from_info): Reset emacs_value
when invalid_p is cleared.
-2022-11-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter indent preset "point-min"
@@ -15541,7 +15541,7 @@
* lisp/treesit.el (treesit-simple-indent-presets): Add preset. Update
docstring.
-2022-11-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit--indent-rules-optimize
@@ -15549,13 +15549,13 @@
(treesit-major-mode-setup): Optimize indent rules when setting up for
major mode.
-2022-11-07 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-minor-mode): Ensure margins are either 0 or 1.
This check is necessary to make it idempotent to multiple calls.
-2022-11-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(itree_insert_gap, itree_delete_gap): Minor optimization
@@ -15571,7 +15571,7 @@
* src/itree.c (itree_insert_gap, itree_delete_gap): Check `limit` for
all nodes, rather than only when following a `left` pointer.
-2022-11-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -15579,48 +15579,48 @@
5779df0c5b ; * doc/lispref/searching.texi: Remove reference to Posix....
46929f6b73 ; Improve documentation of character classes in regexps
-2022-11-06 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Revert "* lisp/vc/vc-git.el (vc-git--rev-parse): Allow abbreviating commits"
This reverts commit 307ad210040251ea0de2e7f453350c4497bda874.
-2022-11-06 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Fix sql-{beginning,end}-of-statement counting
* lisp/progmodes/sql.el (sql-beginning-of-statement, sql-end-of-statement):
Do not count statement separators if inside a string.
-2022-11-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in octave.el
* lisp/progmodes/octave.el (octave-mode-map): Prefer
defvar-keymap.
-2022-11-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix failing eshell alias tests
* test/lisp/eshell/esh-var-tests.el (esh-var-test/alias/function)
(esh-var-test/alias/symbol-pair): Fix tests. (Bug#59062)
-2022-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Pacify -Wnull-dereference"
This reverts commit dad452552bebf832e737ebb946b5eea6cd57f63f.
Please don't assume I write such code by omission.
-2022-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix splash screen display on NS and Haiku with native image APIs
* src/image.c (syms_of_image): Add Qsvg image type if SVG is
also supported by native image APIs.
-2022-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Pacify -Wnull-dereference
@@ -15628,7 +15628,7 @@
not FACE_FROM_ID_OR_NULL, when the next line proceeds to
immediately dereference the face.
-2022-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Write more commentary on XI2 device management
@@ -15640,21 +15640,21 @@
(x_term_init): Set dpyinfo->xi2_version before calling
x_cache_xi_devices.
-2022-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix face extension when Org narrows the buffer
* src/xdisp.c (extend_face_to_end_of_line): Make sure glyph rows
at ZV use the default face for extension. (Bug#59065)
-2022-11-06 Davide Masserut <dm@mssdvd.com>
+2023-04-15 Davide Masserut <dm@mssdvd.com>
Bind "DEL" in dictionary-mode
* lisp/net/dictionary.el (dictionary-mode-map): Bind DEL to
'scroll-down-command'. (Bug#58986)
-2022-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of Edebug overwriting buffer point
@@ -15662,7 +15662,7 @@
(Edebug Options): More details about Edebug changing buffer point
position. Reported by Alan Mackenzie <acm@muc.de>.
-2022-11-06 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-fixed-width-max): Change :type from cons to list.
@@ -15671,7 +15671,7 @@
(tab-bar-fixed-width-min): Change :type from cons to list.
(tab-bar-fixed-width): Use the list instead of cons.
-2022-11-06 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
itree.c and buffer-tests.el: Incorporate code review feedback
@@ -15681,7 +15681,7 @@
(test-overlay-insert-before-markers-at-end): ditto.
(test-overlay-insert-before-markers-empty): ditto.
-2022-11-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix incorrect tree-sitter fontification
@@ -15689,7 +15689,7 @@
node is outside of the region between START and END, don't fontify it.
Wrap fontification code in a when form.
-2022-11-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Allow tree-sitter indent offset to be a variable
@@ -15702,20 +15702,20 @@
* lisp/treesit.el (treesit-simple-indent-rules): Change docstring.
(treesit-simple-indent): Allow offset to be a variable.
-2022-11-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't indent empty lines in treesit-indent-region
* lisp/treesit.el (treesit-indent-region): Wrap the old code in an if
form that checks whether we are at an empty line. Add comments.
-2022-11-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-language-at work in more situations
even if treesit-language-at-point-function is nil.
-2022-11-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
buffer.c: evaporate overlays in all indirect buffers
@@ -15736,7 +15736,7 @@
* test/src/buffer-tests.el (buffer-tests--overlays-indirect-evaporate):
Remove the `:expected-result :failed` attribute.
-2022-11-05 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Add a test for overlay evaporation across indirect buffers
@@ -15744,7 +15744,7 @@
Test evaporation of overlays triggered by deleting text in base
and in indirect buffers. Test doesn't pass at the moment.
-2022-11-05 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Minor tweaks to the fix for `insert-before-markers' overlay fix
@@ -15754,7 +15754,7 @@
chars.
* src/itree.c: document BEFORE_MARKERS.
-2022-11-05 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Tweak the overlay related `insert-before-markers' tests
@@ -15771,11 +15771,11 @@
(test-overlay-insert-before-markers-non-empty): Delete, replaced by
the two tests above.
-2022-11-05 Brian Cully <bjc@kublai.com>
+2023-04-15 Brian Cully <bjc@kublai.com>
lisp/eshell/em-tramp.el: Rename 'TRAMP' to 'Tramp'.
-2022-11-05 Brian Cully <bjc@kublai.com>
+2023-04-15 Brian Cully <bjc@kublai.com>
Add the "doas" alias to eshell.
@@ -15790,7 +15790,7 @@
* etc/NEWS: mention new 'doas' eshell command.
* doc/misc/eshell.texi: add 'doas' command documentation.
-2022-11-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS: Remove remark implemented by 'vc-default-checkin-patch'.
@@ -15798,25 +15798,25 @@
* lisp/tab-bar.el (tab-bar-fixed-width): Improve width calculations.
-2022-11-05 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Rephrase 'package-vc-ensure-packages' docstring
* lisp/emacs-lisp/package-vc.el (package-vc-ensure-packages): Make it
easier to read.
-2022-11-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/jka-compr.el (jka-compr-load): Add MUST-SUFFIX argument.
-2022-11-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the unexec build
* src/itree.c (forget_itree): New function.
* src/emacs.c (Fdump_emacs): Call 'forget_itree'.
-2022-11-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix warnings in sqlite.c in the MS-Windows build
@@ -15825,21 +15825,21 @@
(sqlite_prepare_errdata) [SQLITE_VERSION_NUMBER >= 3007015]: Use
the original code if sqlite3_errstr is available.
-2022-11-05 Nicolas Graner <nicolas@graner.name>
+2023-04-15 Nicolas Graner <nicolas@graner.name>
Avoid error when forwarding messages from Rmail
* lisp/gnus/message.el (message-mail): Verify that In-Reply-To has
a string value before matching it with a regexp. (Bug#59007)
-2022-11-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sqlite.c build with SQlite in Fedora 9
* src/sqlite.c (sqlite_prepare_errdata): Use sqlite3_errmsg
instead of sqlite3_errstr.
-2022-11-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify XI scroll class reporting code
@@ -15850,11 +15850,11 @@
(xi_handle_device_changed): Move class parsing logic there to
avoid duplicating code.
-2022-11-05 Payas Relekar <relekarpayas@gmail.com>
+2023-04-15 Payas Relekar <relekarpayas@gmail.com>
Bump version to 2.4.4
-2022-11-04 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Move ERC's core dependencies to separate file
@@ -15958,7 +15958,7 @@
* test/lisp/erc/erc-tests.el (erc--meta--backend-dependencies):
Remove obsolete test. Don't require `erc-networks'. Bug#56340.
-2022-11-04 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Offer completions for GET subcommand flags in erc-dcc
@@ -15970,41 +15970,41 @@
pcomplete/erc-mode/DCC--get-2flags-reverse): Add helper and tests for
completing /DCC GET switches.
-2022-11-04 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
* lisp/erc/erc.el (erc-cmd-RECONNECT): Fix macro arg.
-2022-11-04 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-kill-buffer-conditions: Tweak
* lisp/progmodes/project.el (project-kill-buffer-conditions): Tweak.
-2022-11-04 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Configure clang-format to use tabs
* .clang-format (UseTab): Set to "Always", to match
the (indent-tabs-mode . t) in .dir-locals.el. (Bug#59027)
-2022-11-04 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Print "decrypted" rot13 text is buffer is read-only
* lisp/rot13.el (rot13-region): Add fallback if buffer is read-only
* doc/emacs/rmail.texi (Rmail Rot13): Document new behaviour.
-2022-11-04 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/net/rcirc.el (rcirc-print): Replace misjudged assertion
-2022-11-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/textmodes/css-mode.el (css-mode-map): Prefer defvar-keymap.
* lisp/dired-aux.el (dired-check-process): Use progress reporter.
-2022-11-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use progress reporter in cpp.el
@@ -16014,11 +16014,11 @@
of 'make-progress-reporter'.
(cpp-message-min-time-interval): Doc fix.
-2022-11-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/progmodes/cpp.el (cpp-edit-mode-map): Prefer defvar-keymap.
-2022-11-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -Wanalyzer-null-dereference
@@ -16027,20 +16027,20 @@
* src/buffer.c (Fmove_overlay): Prefer BASE_EQ to EQ in a place
where they’re equivalent because the only symbol allowed here is nil.
-2022-11-04 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge branch 'feature/package+vc'
* lisp/emacs-lisp/package-vc.el: Expand commentary
-2022-11-04 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Link to Manual from the package-vc group
* lisp/emacs-lisp/package-vc.el (package-vc): Add 'custom-manual'
link.
-2022-11-04 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Document 'package-vc-selected-packages'
@@ -16053,14 +16053,14 @@
(package-vc-selected-packages): Call 'package-vc-ensure-packages' from
custom setter.
-2022-11-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-indent-error
* lisp/treesit.el (treesit-indent-error): New error.
(treesit--simple-indent-eval): Signal treesit-indent-error.
-2022-11-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Revise tree-sitter facility for multi-language buffers
@@ -16077,11 +16077,11 @@
(treesit-indent-region): Only update ranges in a region.
* test/src/treesit-tests.el (treesit-range): New test.
-2022-11-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/simple.el (function-documentation): Fix bug#59014
-2022-11-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix calling file name handler for `load'.
@@ -16093,7 +16093,7 @@
* test/lisp/net/tramp-tests.el (tramp-test27-load): Extend test.
-2022-11-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Normalize some syntax table definitions
@@ -16103,13 +16103,13 @@
* lisp/progmodes/dcl-mode.el (dcl-mode-syntax-table): Normalize
definitions to better follow modern ELisp conventions.
-2022-11-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/progmodes/dcl-mode.el (dcl-mode-map): Prefer defvar-keymap.
* admin/authors.el: Don't recommend deprecated fgrep.
-2022-11-04 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix manual noverlay tests
@@ -16168,7 +16168,7 @@
(main): Run suite as CK_ENV to allow specifying desired verbosity in
the environment.
-2022-11-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid using too up-to-date values when restoring valuators
@@ -16176,7 +16176,7 @@
(xi_handle_device_changed): If the device changed event provides
scroll valuators, then use the values in there. (bug#58980)
-2022-11-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-fixed-width): New user option.
@@ -16188,14 +16188,14 @@
https://lists.gnu.org/archive/html/emacs-devel/2022-10/msg02067.html
-2022-11-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
8cae9d8bd8 ; * doc/emacs/search.texi (Lax Search): Improve wording. ...
e01e8a8f84 ; * lisp/dired-aux.el (dired-show-file-type): Doc fix.
-2022-11-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-parser-set-included-ranges
@@ -16207,7 +16207,7 @@
(Ftreesit_parser_included_ranges): Check has_range.
* src/treesit.h (Lisp_TS_Parser): Add has_range.
-2022-11-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Minor tightening
@@ -16215,7 +16215,7 @@
(init_itree): Make sure it's not allocated before we overwrite it.
(itree_insert_gap): Tweak the end-loop.
-2022-11-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree: Reproduce markers's behavior more faithfully (bug#58928)
@@ -16238,39 +16238,39 @@
* test/src/buffer-tests.el (test-overlay-insert-before-markers-empty)
(test-overlay-insert-before-markers-non-empty): New tests.
-2022-11-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-buffers: Describe the default implementation
* lisp/progmodes/project.el (project-buffers):
Describe what the default implementation is doing (bug#58784).
-2022-11-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-kill-buffer-conditions: Skip Gnus modes as well
* lisp/progmodes/project.el (project-kill-buffer-conditions):
Skip Gnus modes as well (bug#58839).
-2022-11-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-kill-buffer-conditions: Skip hidden ones
* lisp/progmodes/project.el (project-kill-buffer-conditions):
Make exception for "hidden" buffers (bug#58839).
-2022-11-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix initialization of scroll valuator emacs_value
* src/xterm.c (xi_handle_device_changed): Initialize emacs_value
to 0, not DBL_MIN. (bug#58980)
-2022-11-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Autoload all entry functions
-2022-11-03 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add contextual tree-sitter font-lock to ts-mode and js-mode
@@ -16278,7 +16278,7 @@
* lisp/progmodes/ts-mode.el (ts-mode--font-lock-settings): Capture
commend and strings. Add empty lines.
-2022-11-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Only strip newlines when stringifying a value for Eshell
@@ -16288,7 +16288,7 @@
* test/lisp/eshell/esh-util-tests.el: New file.
-2022-11-03 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Minor change to tree-sitter imenu function of js-mode
@@ -16297,11 +16297,11 @@
* lisp/progmodes/js.el (js--treesit-imenu-type-alist): Add space.
(js--treesit-imenu-label): Remove space.
-2022-11-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/emacs-lisp/package-vc.el (package-vc-version): Use main file
-2022-11-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add command 'package-vc-checkout'
@@ -16312,7 +16312,7 @@
(package-vc-unpack): Extract functionality out to 'package-vc-clone'.
(package-vc-checkout): Add command.
-2022-11-03 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve suppression of bogus macOS warnings
@@ -16320,7 +16320,7 @@
as the false alarms appear even if --disable-gcc-warnings is given
(Bug#58966).
-2022-11-03 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix overlays order in Flyspell (bug#58970)
@@ -16332,7 +16332,7 @@
* lisp/textmodes/flyspell.el (flyspell-auto-correct-previous-word):
Sort overlays returned from 'overlays-in' descending by 'overlay-start'.
-2022-11-03 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Port interval trees to --enable-checking=structs
@@ -16379,18 +16379,18 @@
and #error message.
(dump_overlay, dump_buffer): Update HASH (bug#58975).
-2022-11-03 Juanma Barranquero <lekktu@gmail.com>
+2023-04-15 Juanma Barranquero <lekktu@gmail.com>
* src/gnutls.c (Fgnutls_available_p): Avoid duplicating capabilities.
-2022-11-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in profiler.el
* lisp/profiler.el (profiler-report-mode-map): Prefer
defvar-keymap.
-2022-11-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Further simplify valuator reset code
@@ -16399,14 +16399,14 @@
(handle_one_xevent): Don't check frames; reset on all XI_Enter
and XI_Leave events.
-2022-11-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More style fixes to tree-sitter code
* src/treesit.c (treesit_node_uptodate_p):
* src/treesit.h: Fix coding style.
-2022-11-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to last tree-sitter change
@@ -16414,7 +16414,7 @@
variable.
(Ftreesit_query_expand): Revert change to behavior.
-2022-11-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stylistic changes to tree-sitter code
@@ -16457,14 +16457,14 @@
* src/treesit.h: Make declaration coding style consistent.
-2022-11-03 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Suppress deprecation warnings on macOS (bug#58966)
* configure.ac (CHECK_LISP_OBJECT_TYPE): Add
-Wno-deprecated-declarations for darwin.
-2022-11-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'text-property-search-backward' with 1-char long properties
@@ -16473,7 +16473,7 @@
text-property value at point. This fixes searches backward when
the property is on a single character position. (Bug#58937)
-2022-11-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Check for outdated tree-sitter node when printing
@@ -16482,7 +16482,7 @@
(treesit_node_uptodate_p): New function.
* src/treesit.h: Declare new function.
-2022-11-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Pass region start and end to tree-sitter fontification functions
@@ -16494,7 +16494,7 @@
(treesit-font-lock-fontify-region): Pass START and END to
fontification functions.
-2022-11-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add handling of contextual entities in tree-sitter font-lock
@@ -16507,7 +16507,7 @@
"contextual".
* doc/lispref/modes.texi (Parser-based Font Lock): Update manual.
-2022-11-02 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Initialize child signal handling before posix_spawn too.
@@ -16518,7 +16518,7 @@
outside the critical section.
* src/process.c (child_signal_init): Now extern.
-2022-11-02 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change signature of tree-sitter font-lock functions
@@ -16542,7 +16542,7 @@
* lisp/treesit.el (treesit-font-lock-rules): Update docstring.
(treesit-font-lock-fontify-region): Remove START and END arguments.
-2022-11-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add the parameter :noquery to open-network-stream (bug#58948)
@@ -16555,11 +16555,11 @@
eglot--inferior-bootstrap to use in open-network-stream call, like
`:noquery t' is passed to make-process in other places.
-2022-11-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/man.el (Man-mode-map): Prefer defvar-keymap.
-2022-11-02 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Track file name in 'package--downloads-in-progress'
@@ -16569,7 +16569,7 @@
(package--download-one-archive): Cons the file name onto the archive.
(package--download-and-read-archives): Remove 'cl-pushnew' call.
-2022-11-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve commentary in some parts of xterm.c
@@ -16578,13 +16578,13 @@
selection tracking as well. All callers changed.
(x_focus_changed): Document where this code is used.
-2022-11-02 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove unused local in simple_search
* src/search.c (simple_search): Remove unused local.
-2022-11-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
src/buffer.c: Fix interaction between overlays & indirect buffers (bug#58928)
@@ -16596,7 +16596,7 @@
* test/src/buffer-tests.el (buffer-tests--overlays-indirect-bug58928):
New test.
-2022-11-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-switch-project: Avoid altering default-directory in cb
@@ -16604,14 +16604,14 @@
Avoid altering default-directory in the current buffer, even
temporarily (bug#58784).
-2022-11-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
vc-svn-ignore-completion-table: Ignore empty lines
* lisp/vc/vc-svn.el (vc-svn-ignore-completion-table):
Make sure to ignore empty lines (bug#58889).
-2022-11-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix string fontification for tree-sitter python-mode
@@ -16624,7 +16624,7 @@
(python--treesit-settings): Capture both leading and ending quote in a
string.
-2022-11-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't print buffer when printing tree-sitter node and parser
@@ -16635,14 +16635,14 @@
* src/print.c (print_vectorlike): Remove printing of buffer, add
printing of node position.
-2022-11-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Allow user to add/remove tree-sitter font-lock features
* lisp/treesit.el (treesit-font-lock-recompute-features): Add
ADD-LIST, REMOVE-LIST argument.
-2022-11-01 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Query on the root node in tree-sitter font-lock
@@ -16656,7 +16656,7 @@
* lisp/treesit.el (treesit-font-lock-fontify-region): Query the root
node rather than the smallest node.
-2022-11-01 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add a script to ease bisecting.
@@ -16666,28 +16666,28 @@
* admin/emake: Add a Copyright blurb.
-2022-11-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/dbus.el (dbus-debug): Declare. (Bug#58865)
-2022-11-01 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure 'package-vc-update' runs 'package-vc-unpack-1' only once
* lisp/emacs-lisp/package-vc.el (package-vc-update): Use
'vc-sourced-packages-list' and other hacks.
-2022-11-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_term_init): Fix last change.
-2022-11-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leak on Lucid build
* src/xterm.c (x_term_init): Rectify wrong fix for bug#18403.
-2022-11-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -16698,13 +16698,13 @@
# Conflicts:
# src/search.c
-2022-11-01 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Preven a buffer-overflow (bug#58850)
* src/print.c (print_vectorlike): Don't use sprintf.
-2022-11-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update publicsuffix.txt from upstream
@@ -16712,7 +16712,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-10-29 17:48:52 UTC.
-2022-11-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leaks of XImage structures in image.c
@@ -16722,11 +16722,11 @@
XDestroyImage, since otherwise only the image data is freed.
(image_from_emacs_colors): Rename variables to make more sense.
-2022-10-31 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Fix eglot-shutdown-all: Match current eglot-shutdown signature
-2022-10-31 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use treesit-fontify-with-override in tree-sitter functions
@@ -16734,7 +16734,7 @@
* lisp/progmodes/python.el (python--treesit-fontify-string): Use
treesit-fontify-with-override.
-2022-10-31 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add an argument OVERRIDE to tree-sitter font-lock functions
@@ -16749,27 +16749,27 @@
(treesit-font-lock-fontify-region): Extract out into
treesit-fontify-with-override.
-2022-10-31 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix tramp-handle-file-newer-than-file-p
* lisp/net/tramp.el (tramp-handle-file-newer-than-file-p): Don't use
fractions of seconds. (Bug#58842)
-2022-10-31 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in cus-edit.el
* lisp/cus-edit.el (custom-mode-map, custom-mode-link-map): Prefer
defvar-keymap.
-2022-10-31 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/emacs-lisp/multisession.el: Add Commentary. (Bug#58845)
* lisp/vcursor.el (vcursor-map): Prefer defvar-keymap.
-2022-10-31 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow specifying and pinning source packages to be installed
@@ -16777,7 +16777,7 @@
custom setter for 'package-vc-selected-packages'.
(package-vc-selected-packages): Add user option.
-2022-10-31 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use tree-sitter for font-lock's syntactic function (optionally)
@@ -16808,7 +16808,7 @@
font-lock-fontify-syntactically-function. And we can let font-lock do
it's thing.
-2022-10-31 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve python tree-sitter's string fontification
@@ -16818,7 +16818,7 @@
(python--treesit-settings): Use python--treesit-fontify-string for
every occasion.
-2022-10-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tresit--font-lock-verbose
@@ -16826,13 +16826,13 @@
(treesit-font-lock-fontify-region): Take tresit--font-lock-verbose
into account. Return jit-lock-bounds.
-2022-10-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Set jit-lock-contextually in treesit-major-mode-setup
* lisp/treesit.el (treesit-major-mode-setup): Set jit-lock-contextually.
-2022-10-30 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix semantic-symref-perform-search when dir contains a space
@@ -16842,25 +16842,25 @@
expanding the template to substitute for the current dir.
(semantic-symref-parse-tool-output-one-line): Use it (bug#55016)
-2022-10-30 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Speed up vc-default-checkin-patch a little
* lisp/vc/vc.el (vc-default-checkin-patch): Drop some
'revert-buffer' calls to speed up the process a little (bug#52349).
-2022-10-30 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in simula.el
* lisp/progmodes/simula.el (simula-mode-map): Prefer
defvar-keymap.
-2022-10-30 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge remote-tracking branch 'origin/master' into feature/package+vc
-2022-10-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el: Allow user-defined cache-key function (bug#57848)
@@ -16868,18 +16868,18 @@
(tab-line-cache-key-function): New variable.
(tab-line-format): Funcall tab-line-cache-key-function.
-2022-10-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el: Escape %-constructs in tab names (bug#57848)
(tab-line-tab-name-format-default): Replace % with %% in tab name
to escape %-constructs from processing by mode-line-format.
-2022-10-30 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge master into feature/improved-locked-narrowing.
-2022-10-30 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have 'last-change' accept a line number instead of a range
@@ -16889,25 +16889,25 @@
* lisp/vc/vc.el (vc-default-last-change): Update signature and use
'annotate-command'.
-2022-10-30 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Display a message after installing source packages
* lisp/emacs-lisp/package-vc.el (package-vc-unpack-1): Print message
and return t.
-2022-10-30 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Prefer "Package-Version" over "Version" if available
* lisp/emacs-lisp/package-vc.el (package-vc-release-rev): Search for
both in sequence.
-2022-10-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/url/url-util.el (url-insert-entities-in-string): Simplify
-2022-10-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
dom-print: Fix missing entities quoting
@@ -16920,7 +16920,7 @@
(dom-set-attribute): Add at beginning rather than at end (slightly
more efficient and less destructive).
-2022-10-30 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
elide-head: Make trailing "/" in URL optional
@@ -16929,7 +16929,7 @@
* test/lisp/elide-head-tests.el
(elide-head--test-headers-to-hide/gpl3-5): New test.
-2022-10-30 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Make previous-buffer and next-buffer repeatable
@@ -16937,7 +16937,7 @@
* lisp/bindings.el (previous-buffer, next-buffer): Mark as
repeatable. (Bug#58800)
-2022-10-30 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Extract last source package release from local VCS data
@@ -16960,7 +16960,7 @@
This attempts to replicate the behaviour of elpa-admin.el's
"elpaa--get-last-release-commit".
-2022-10-30 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Make winner key sequences repeatable in repeat-mode
@@ -16968,14 +16968,14 @@
(winner-undo, winner-redo): Put 'repeat-map' property with
'winner-repeat-map'. (Bug#58799)
-2022-10-30 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in etags.el
* lisp/progmodes/etags.el (select-tags-table-mode-map): Prefer
defvar-keymap.
-2022-10-30 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Fix set-language-info-alist when multiple PARENTS are given
@@ -16984,7 +16984,7 @@
(set-language-info-alist): ...here. Do not mess up the keymaps when
multiple parents are given in PARENTS. (Bug#58376)
-2022-10-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Minibuffer follows selected tabs (bug#58728)
@@ -16994,7 +16994,7 @@
(tab-bar-history-back, tab-bar-history-forward): Set set-window-configuration
arg DONT-SET-MINIWINDOW to t.
-2022-10-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Plug big leaks upon display IO error
@@ -17004,7 +17004,7 @@
* src/xterm.c (x_delete_terminal): Always free xkb desc and
modmap.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Separate python tree-sitter fontification into features
@@ -17015,7 +17015,7 @@
* lisp/progmodes/python.el (python--treesit-settings): Separate.
(python-mode): Set features.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix byte-compile warning in treesit.el
@@ -17041,14 +17041,14 @@
* lisp/treesit.el (treesit-simple-indent-presets): Change byte-compile
to plain evaluation.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Not return noindent in treesit-indent
* lisp/treesit.el (treesit-indent): Don't return noindent.
(treesit-defun-type-regexp): Return (nil . nil) rather than nil.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-node-top-level
@@ -17065,7 +17065,7 @@
(treesit-end-of-defun): Replace treesit--find-top-level-match with
treesit-node-top-level.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Reflect recent change in tree-sitter manual sections
@@ -17076,27 +17076,27 @@
* doc/lispref/parsing.texi (Tree-sitter major modes): Remove
treesit-mode and global-treesit-mode, explain setup guideline.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix parent-bol preset for tree-sitter indent
* lisp/treesit.el (treesit-simple-indent-presets): Return point rather
than column.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Keep cursor position in treesit-indent
* lisp/treesit.el (treesit-indent): Create a marker and jump back to
that marker after indentation.
-2022-10-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from andreyorst/face-spec-set-third-argument
GitHub-reference: https://github.com/jwiegley/use-package/issues/1009
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove hack in js-mode's tree-sitter indentation rules
@@ -17104,7 +17104,7 @@
function.
(js--treesit-indent-rules): Replace with new rule.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Refine handling of node at point in treesit-indent
@@ -17116,7 +17116,7 @@
always the smallest node above NODE that spans BOL.
(treesit-indent): Don't use save-excurtion, no one else does.
-2022-10-29 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-indent-region
@@ -17129,7 +17129,7 @@
gives wrong indentation when the ANHOR line doesn't have correct
indent yet.
-2022-10-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Set 'native-comp-debug' to zero on MS-Windows
@@ -17142,14 +17142,14 @@
reset the value back to zero, and gain smaller *.eln files on
MS-Windows.
-2022-10-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in ps-mode.el
* lisp/progmodes/ps-mode.el (ps-mode-map, ps-run-mode-map): Prefer
defvar-keymap.
-2022-10-29 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Fix the subr-arity returned by native compiled functions with lots of args
@@ -17166,7 +17166,7 @@
* src/lisp.h (DEFUN): Amend the comment about MANY.
-2022-10-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make Dired header clickable on non-Posix systems as well
@@ -17174,27 +17174,27 @@
MS-Windows and MS-DOS absolute directory names with drive letters
and UNCs. (Bug#21973)
-2022-10-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Display the Dired buffer as unmodified initially
* lisp/dired.el (dired-readin): Make sure a newly-created Dired
buffer is shown as unmodified. (Bug#58863)
-2022-10-29 Andrey Listopadov <andreyorst@gmail.com> (tiny change)
+2023-04-15 Andrey Listopadov <andreyorst@gmail.com> (tiny change)
Allow passing the SPEC-TYPE argument via :custom-face
GitHub-reference: https://github.com/jwiegley/use-package/issues/1008
-2022-10-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix another GCC warning
* src/nsterm.m (ns_draw_glyphless_glyph_string_foreground): Fix
another compiler warning.
-2022-10-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash destroying NS frame tool bar
@@ -17203,7 +17203,7 @@
([EmacsWindow dealloc]): Detach tool bar before dealloc'ing
window. (bug#58857)
-2022-10-29 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
c-get-fontification-context: Refine the last non-default arm of the cond
@@ -17215,14 +17215,14 @@
accuracy. Set a c-type text property value c-decl-arg-start to speed up
future calls. Reindent the entire function.
-2022-10-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in help.el
* lisp/help.el (help-key): New function.
(help-map): Prefer defvar-keymap.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove test of treesit-language-at
@@ -17232,28 +17232,28 @@
* test/src/treesit-tests.el (treesit-parser-supplemental): Remove the
test.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in page-ext.el
* lisp/textmodes/page-ext.el (pages--ctl-x-ctl-p-map)
(pages-directory-mode-map): Prefer defvar-keymap.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Byte-compile treesit-simple-indent-presets
* lisp/treesit.el (treesit-simple-indent-presets): Byte-compile these
functions.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change
* src/itree.c (struct itree_iterator):
(itree_iterator_next): Fix some fields and const confusion.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-indent-region
@@ -17264,13 +17264,13 @@
(treesit-indent-region): New functions.
(treesit-major-mode-setup): Setup indent-region-function.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix function declarations in itree headers
* src/itree.h: Make all declarations `extern'.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding style of latest feature branch merge
@@ -17289,21 +17289,21 @@
(itree_iterator_next, itree_iterator_narrow): Tabify. Fix
comment and code coding style.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Include Cairo FreeType header when available
* src/xsettings.c: Include cairo-ft.h if CAIRO_HAS_FT_FONT.
(bug#58830)
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make Emacs compile without tree-sitter library
* lisp/treesit.el: Add function declaration forms.
* src/emacs.c: Always include syms_of_treesit.
-2022-10-28 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add in new font lock features in js/ts-mode
@@ -17330,35 +17330,35 @@
(ts-mode--font-lock-settings, ts-mode): Add in the new features.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* configure.ac (emacs_config_features): Change to TREE_SITTER
Last commit on this line has a wrong changelog, the subject should be
emacs_config_features, not WINDOW_SYSTEM_OBJ.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix warning in xsettings.c
* src/xsettings.c [USE_CAIRO]: Include cairo-ft.h.
Thanks to Vincent Bernat <bernat@luffy.cx>.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Remove redundant requires from make-mode.el
* lisp/progmodes/make-mode.el (imenu, dabbrev, add-log): Remove
redundant requires.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use new sit-for calling convention in zone.el
* lisp/play/zone.el (zone-exploding-remove): Don't use obsolete
calling convention for 'sit-for'.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Minor doc fixes in make-mode.el
@@ -17367,14 +17367,14 @@
(makefile-backslash-region): Minor doc fixes.
(makefile-browse): Use substitute-command-keys.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in make-mode.el
* lisp/progmodes/make-mode.el (makefile-mode-map)
(makefile-browser-map): Prefer defvar-keymap.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer make-temp-name in make-mode.el
@@ -17383,14 +17383,14 @@
'make-temp-name'. Simplify.
(makefile-save-temporary): Don't use above obsolete function.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Ensure temp file is deleted in makefile overview
* lisp/progmodes/make-mode.el (makefile-create-up-to-date-overview):
Ensure temp file is always deleted.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -17399,13 +17399,13 @@
# Conflicts:
# lisp/whitespace.el
-2022-10-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from bhankas/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/1007
-2022-10-28 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Explicitly handle :vc-backend in a package specification
@@ -17414,7 +17414,7 @@
(package-vc-unpack): Check for :vc-backend in both PKG-SPEC and the
archive specification data.
-2022-10-28 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ensure that package specifications are always fetched
@@ -17423,13 +17423,13 @@
(package-vc-install): Use new function.
(package-vc-link-directory): Use new function.
-2022-10-28 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow specifying the VC backend used by 'package-vc-install'
* lisp/emacs-lisp/package-vc.el (package-vc-install): Add argument BACKEND.
-2022-10-28 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Update handling for new elpa-packages.eld format
@@ -17440,7 +17440,7 @@
metadata.
(package-vc-unpack): Check archive metadata.
-2022-10-28 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fontify cast types without adding them to c-found-types
@@ -17463,7 +17463,7 @@
(c-per-++---match, c-per-&*+--match, c-per-\(-match): New
c-lang-defconsts/vars extracted from `c-primary-expr-regexp-details'.
-2022-10-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cconv.el: Fix regression in cconv-tests-interactive-closure-bug51695
@@ -17490,25 +17490,25 @@
(cconv-tests-interactive-closure-bug51695): Test specifically the
interpreted case.
-2022-10-28 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
* lisp/transient.el: Update to package version v0.3.7-173-g81b29ca
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve Drag and Drop preamble in the Lisp reference manual
* doc/lispref/frames.texi (Drag and Drop): Reword contents and
clear up some ambiguities and redundancies.
-2022-10-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Minor doc fixes in treesit.el
* lisp/treesit.el (treesit-font-lock-rules)
(treesit-font-lock-settings): Minor doc fixes.
-2022-10-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/re-builder.el: Cosmetic changes
@@ -17522,7 +17522,7 @@
(reb-update-regexp): Always update `reb-regexp-src` (it's harmless),
rather than only when it's necessary (reduces the need for advice in pcre.el).
-2022-10-28 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Include more information in error data for sqlite errors
@@ -17541,7 +17541,7 @@
(sqlite-execute, sqlite-select): Use new function.
(sqlite-locked-error): Derive from 'sqlite-error'.
-2022-10-28 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix wrong fontification of enum foo bar; in Objective C Mode
@@ -17550,11 +17550,11 @@
* lisp/progmodes/cc-langs.el (c-type-prefix-kwds): Add the missing entry for
objc.
-2022-10-28 Payas Relekar <relekarpayas@gmail.com>
+2023-04-15 Payas Relekar <relekarpayas@gmail.com>
Bump version to 2.4.3
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify scroll valuator reset handling
@@ -17566,7 +17566,7 @@
hitting server bugs. Now, valuators are reset upon all crossing
events.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some xwidgets code
@@ -17574,28 +17574,28 @@
style and remove extra ifdefs. Also avoid redundant frame
lookups in some cases.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Haiku subprocess support
* src/callproc.c: Disable posix_spawn on Haiku until some things
are fixed.
-2022-10-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build without Cairo FreeType and fontconfig support
* src/xsettings.c (apply_xft_settings): Don't enable Xft code
unless Cairo FreeType support is present. (bug#58830)
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Reflect tree-sitter indent rule presets change in manual
* doc/lispref/modes.texi (Parser-based Indentation): String
equivalence checks are changed to regexp matching.
-2022-10-28 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Improve tree-sitter indent rules in ts-mode and js-mode
@@ -17603,14 +17603,14 @@
* lisp/progmodes/ts-mode.el (ts-mode--indent-rules): Add more rules.
(ts-mode): Create parser.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add some js-mode tree-sitter indent rules
* lisp/progmodes/js.el (js--treesit-indent-rules): Add rules and a let
form.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove tree-sitter-indent's integration with cc-mode
@@ -17626,11 +17626,11 @@
(treesit-simple-indent): Remove cc-mode integration. Display error
message when no rules matches.
-2022-10-28 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* configure.ac (WINDOW_SYSTEM_OBJ): Move tree-sitter placement.
-2022-10-28 Wamm K. D <jaft.r@outlook.com>
+2023-04-15 Wamm K. D <jaft.r@outlook.com>
Fix failing test for package Hierarchy
@@ -17639,18 +17639,18 @@
* test/lisp/emacs-lisp/hierarchy-tests.el (hierarchy-delayed-add-trees):
Fix typo.
-2022-10-28 Vincent Bernat <bernat@luffy.cx> (tiny change)
+2023-04-15 Vincent Bernat <bernat@luffy.cx> (tiny change)
Fix detection of DPI changes in builds without Xft
* src/xsettings.c (apply_xft_settings) [!HAVE_XFT]: Support
XSETTINGS changes in non-XFT builds. (Bug#43128)
-2022-10-28 Payas Relekar <relekarpayas@gmail.com>
+2023-04-15 Payas Relekar <relekarpayas@gmail.com>
bind-key.el: Bump version for ELPA
-2022-10-28 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update to modus-themes version 3.0.0
@@ -17704,13 +17704,13 @@
Complete release notes: <https://protesilaos.com/codelog/2022-10-28-modus-themes-3-0-0/>.
-2022-10-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from andreyorst/face-spec-set
GitHub-reference: https://github.com/jwiegley/use-package/issues/1004
-2022-10-27 Wamm K. D <jaft.r@outlook.com>
+2023-04-15 Wamm K. D <jaft.r@outlook.com>
Allow Hierarchy to delay computation of children
@@ -17728,7 +17728,7 @@
* test/lisp/emacs-lisp/hierarchy-tests.el: Add tests for
delayed-children functionality.
-2022-10-27 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Disable completion/ElDoc/FFAP when Python program is running
@@ -17745,7 +17745,7 @@
(python-eldoc--get-doc-at-point-while-running-1): New tests.
(Bug#58713)
-2022-10-27 Andrea Monaco <andrea.monaco@autistici.org>
+2023-04-15 Andrea Monaco <andrea.monaco@autistici.org>
Allow applying Rmail summary filters consecutively
@@ -17762,13 +17762,13 @@
* etc/NEWS: Announce the change.
-2022-10-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Allow applying filters to summary consecutively"
This reverts commit c8b9ba5fa1bf3a20b9b08a553ad088ca33f3d1ba.
-2022-10-27 Andrea Monaco <andrea.monaco@autistici.org>
+2023-04-15 Andrea Monaco <andrea.monaco@autistici.org>
Allow applying filters to summary consecutively
@@ -17783,7 +17783,7 @@
* etc/NEWS: Announce the change.
-2022-10-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid recentering when point enters invisible text at BOL
@@ -17791,36 +17791,36 @@
point is inside invisible text at beginning of a glyph row.
(Bug#58793)
-2022-10-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Minor copy-edits in tree-sitter docs
* doc/lispref/parsing.texi (Parsing Program Source): Improve wording.
-2022-10-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reporting of iconic state on old window managers
* src/xterm.c (x_handle_wm_state): Handle IconicState if the
window manager does not support _NET_WM_STATE_HIDDEN.
-2022-10-27 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Fix auto-insert-alist ada-mode entry to match current ELPA ada-mode
-2022-10-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from bhankas/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/1006
-2022-10-26 Payas Relekar <relekarpayas@gmail.com>
+2023-04-15 Payas Relekar <relekarpayas@gmail.com>
Update version to 2.4.2
In preparation for inclusion to GNU ELPA.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Plug tree-sitter-simple-indent into c-offset-alist
@@ -17836,11 +17836,11 @@
first-sibling now returns the actual first sibling rather than the
first named sibling.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-node-top-level-p): New argument TYPE.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Generalize js--treesit-imenu-top-level-p
@@ -17848,14 +17848,14 @@
(js--treesit-font-lock-settings): Fix usage.
* lisp/treesit.el (treesit-node-top-level-p): Move to here.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter navigation support to python-mode
* lisp/progmodes/python.el (python-mode): Set
treesit-defun-type-regexp.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter imenu support for js-mode and ts-mode
@@ -17868,7 +17868,7 @@
(js--treesit-imenu-1)
(js--treesit-imenu): New functions.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter navigation
@@ -17877,7 +17877,7 @@
condition forms.
(treesit-beginning-of-defun): Fix traverse direction.
-2022-10-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix typo in textsec-restriction-level
@@ -17885,27 +17885,27 @@
* test/lisp/international/textsec-tests.el (test-restriction-level):
Fix typo in symbol name `moderately-restrictive'.
-2022-10-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Declare variable Info-minibuf-history
* lisp/info.el (Info-minibuf-history): Declare variable.
(Bug#58786)
-2022-10-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from bhankas/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/1005
-2022-10-26 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Compare addresses case-insensitively in message-update-smtp-method-header
* lisp/gnus/message.el (message-update-smtp-method-header): Compare
addresses case-insensitively.
-2022-10-26 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
c-find-decl-spots: Replace an arbitrary search limit by a parameter
@@ -17915,7 +17915,7 @@
* lisp/progmodes/cc-engine.el (c-find-decl-spots): Replace the limit argument
to two calls of c-forward-syntactic-ws by the parameter `cfd-limit'.
-2022-10-26 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Make completion-category-overrides choices dynamic
@@ -17926,7 +17926,7 @@
(completion--styles-type): Use it.
-2022-10-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix rare problems with current-column when text is invisible
@@ -17934,7 +17934,7 @@
compositions when the position to check for composition happens to
be inside invisible text. (Bug#58791)
-2022-10-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent gui_consider_frame_title from restoring dead top frames
@@ -17946,7 +17946,7 @@
(gui_consider_frame_title): Rearrange code to be more
understandable.
-2022-10-26 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Pacify recent unused/ignored lexvar warnings
@@ -17972,21 +17972,21 @@
constant.
* lisp/files.el (hack-local-variables-filter): Remove unused lexvar.
-2022-10-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some event handling code
* src/xterm.c (handle_one_xevent): Use dpyinfo where
FRAME_DISPLAY_INFO could be substituted for it.
-2022-10-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Modernize `auto-revert-notify-exclude-dir-regexp'
* lisp/autorevert.el (auto-revert-notify-exclude-dir-regexp): Use `rx'
and `mounted-file-systems'.
-2022-10-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Dynamic validation of styles in completion-category-overrides
@@ -18001,7 +18001,7 @@
Add an "Other" case that accepts any symbol which is then validated
dynamically against completion-styles-alist.
-2022-10-26 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add support for :release-rev in 'package-vc-archive-spec-alist'
@@ -18009,7 +18009,7 @@
Update docstring.
(package-vc-install): Use :release-rev if invoked with a prefix argument.
-2022-10-26 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow nil as a valid value for 'ecomplete-filter-regexp'
@@ -18017,7 +18017,7 @@
Reported by Mattias Engdegård.
-2022-10-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Haiku build for recent changes to system headers
@@ -18025,7 +18025,7 @@
posix_spawn_file_actions_addchdir on Haiku; it links but does
not work.
-2022-10-26 Andrea Corallo <andrea.corallo@arm.com>
+2023-04-15 Andrea Corallo <andrea.corallo@arm.com>
Set `comp-no-spawn' earlier using -no-comp-spawn
@@ -18035,25 +18035,25 @@
* lisp/emacs-lisp/comp.el (comp-run-async-workers, comp-final):
Use '-no-comp-spawn'.
-2022-10-26 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* src/treesit.c (treesit_search_dfs): Fix traverse algorithm.
-2022-10-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* src/treesit.c (treesit_search_forward): Fix traverses algorithm.
-2022-10-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Don't disable parse cache in tree-sitter activated js-mode
* lisp/progmodes/js.el (js-mode): Move parse cache setup back.
-2022-10-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-simple-indent-rules): Make buffer-local.
-2022-10-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-language-at
@@ -18064,7 +18064,7 @@
one-by-one.
* doc/lispref/parsing.texi (Multiple Languages): Update manual.
-2022-10-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
vc-hg-checkin-patch: Add implementation for Hg
@@ -18073,7 +18073,7 @@
https://lists.gnu.org/archive/html/emacs-devel/2022-10/msg01533.html.
(vc-hg--extract-headers): Extract from vc-hg-checkin.
-2022-10-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
New tree-sitter toggle scheme
@@ -18109,7 +18109,7 @@
* lisp/progmodes/ts-mode.el: Move tree-sitter setup into the
conditional branch.
-2022-10-25 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
Ignore non-base64 junk when decoding MIME
@@ -18121,11 +18121,11 @@
* lisp/gnus/mm-bodies.el (mm-decode-content-transfer-encoding):
Ignore any junk when decoding base64.
-2022-10-25 João Guerra <joca.bt@gmail.com> (tiny change)
+2023-04-15 João Guerra <joca.bt@gmail.com> (tiny change)
* lisp/tab-line.el (tab-line-auto-hscroll): Set word-wrap to nil (bug#58740).
-2022-10-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(Ffunction): Make interpreted closures safe for space
@@ -18183,7 +18183,7 @@
(eval_sub, Ffuncall): Improve error info for `excessive_lisp_nesting`.
(internal-filter-closure-env-function): New defvar.
-2022-10-25 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Move required options out of ldap-ldapsearch-args
@@ -18191,14 +18191,14 @@
"-LLL" and "-tt" options as they're required for the code to work
properly.
-2022-10-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
eglot: Prefer ensure-list on Emacs 28 or later
* lisp/progmodes/eglot.el (eglot--ensure-list): Make into alias
for 'ensure-list' on Emacs 28 or later.
-2022-10-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle context changes in Tramp kubernetes method
@@ -18221,14 +18221,14 @@
* lisp/net/tramp.el (tramp-methods): Adapt docstring.
-2022-10-25 Payas Relekar <relekarpayas@gmail.com>
+2023-04-15 Payas Relekar <relekarpayas@gmail.com>
Update copyright for submission to ELPA
- Update year to 2022
- Set copyright to Free Software Foundation, Inc.
-2022-10-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix eglot defcustom types
@@ -18237,7 +18237,7 @@
(eglot-sync-connect): Split boolean into 'nil' and 't' and add descriptions.
(eglot-confirm-server-initiated-edits): Change 'symbol' type to 'const'.
-2022-10-25 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Test face name variables are bound before using them in cc-fonts.el
@@ -18252,11 +18252,11 @@
(c-reference-face-name): Use font-lock-constant face in preference to
c-label-face-name.
-2022-10-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* lisp/progmodes/eglot.el: Remove not very funny joke.
-2022-10-25 Lin Sun <sunlin7@hotmail.com>
+2023-04-15 Lin Sun <sunlin7@hotmail.com>
lisp.h: Remove unnecessary preprocessor conditions
@@ -18264,7 +18264,7 @@
of gflags.will_dump_, which gets in the way when Emacs
is built without any dumping method. (Bug#58708)
-2022-10-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix drag-and-drop bugs on Lucid build
@@ -18283,7 +18283,7 @@
(handle_one_xevent): Fix coding style.
* src/xterm.h: Update prototypes.
-2022-10-25 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
eglot-server-programs: Account for new ts-mode
@@ -18293,7 +18293,7 @@
* lisp/progmodes/eglot.el (eglot-server-programs): Add new major mode
to be used with the typescript-language-server. (Bug#58769)
-2022-10-25 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
eglot-server-programs: Account for new js-json-mode
@@ -18308,7 +18308,7 @@
json-language-server info before the entry for js-mode, and add on
js-json-mode. (Bug#58769)
-2022-10-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve the eglot info documentation
@@ -18318,27 +18318,27 @@
(Customizing Eglot): Grammar fixes.
(Troubleshooting Eglot): Improve text.
-2022-10-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix M-x eglot breakage due to typo
* lisp/progmodes/eglot.el (eglot): Fix bug.
-2022-10-25 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
* lisp/progmodes/eglot.el (eglot): Ensure managed-major-mode is a list
-2022-10-24 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/progmodes/ts-mode.el (ts-mode): Fix font-lock setup.
-2022-10-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/compile.el (compilation-mode-line-errors): Use `defvar`
This is not really a constant, e.g. it's modified in `grep.el`.
-2022-10-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Unbreak the build broken by tab-bar.el changes
@@ -18355,13 +18355,13 @@
tab-bar.el:174:18: Warning: reference to free variable `tab-bar-close'
* lisp/tab-bar.el (eval-when-compile): Require 'icons.
-2022-10-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* doc/lispref/searching.texi (Rx Constructs): Elaborate intent.
Suggested by Michael Heerdegen (bug#58727).
-2022-10-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix focus stealing in the Emacs server for old window managers
@@ -18369,7 +18369,7 @@
to non-EWMH focus as well. Otherwise frames get raised but not
focused.
-2022-10-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Clarify RX... semantics in manual (bug#58727)
@@ -18378,7 +18378,7 @@
* doc/lispref/searching.texi (Rx Constructs): Explain implicit
concatenation of `RX...`.
-2022-10-24 Martin Jerabek <om@mailservice.ms> (tiny change)
+2023-04-15 Martin Jerabek <om@mailservice.ms> (tiny change)
Repair nXML handling of URIs with hex escapes (bug#58718)
@@ -18387,7 +18387,7 @@
(rng-uri-unescape-unibyte, rng-uri-unescape-unibyte-match):
Convert hex-encoded character to string.
-2022-10-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix regexp matching with atomic strings and optimised backtracking
@@ -18405,7 +18405,7 @@
(re_match_2_internal): Use it for proper atomic pattern treatment.
* test/src/regex-emacs-tests.el (regexp-atomic-failure): New test.
-2022-10-24 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Remove erroneous @w in yank-media cross ref
@@ -18414,7 +18414,7 @@
* doc/emacs/killing.texi (Clipboard): Remove @w around @pxref.
-2022-10-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Use customizable button icons (bug#51309, bug#51648)
@@ -18430,22 +18430,22 @@
* lisp/emacs-lisp/icons.el (icons--create)<image>: Allow to easy
add new image props by using 'apply' on them. Add :margin.
-2022-10-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (completions-group-separator): Update :version.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-node-at): Remove argument LARGEST.
LARGEST returns the root node at BOB, finding the smallest node at
point and search upward is a better practice.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-parser-range-on): New function.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-beginning/end-of-defun
@@ -18455,7 +18455,7 @@
(treesit-beginning-of-defun): Goes to the top-level match.
(treesit-end-of-defun): Simply move to the end of current match.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-search-forward-goto accept a NODE argument
@@ -18471,7 +18471,7 @@
* lisp/treesit.el (treesit-search-forward-goto): Accept a NODE
argument.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-node-at return the last leaf node at EOB
@@ -18479,7 +18479,7 @@
* lisp/treesit.el (treesit-node-at): Add a (when node) form just to be
explicit, return the last leaf node if there is no node after POS.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-node-child and fiends accept negative index
@@ -18488,11 +18488,11 @@
(Ftreesit_node_field_name_for_child): Accept and process negative
index.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-node-at): Add LARGEST argument.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change function signiture of treesit search functions
@@ -18518,11 +18518,11 @@
* src/treesit.c (Ftreesit_search_subtree)
(Ftreesit_search_forward): Swap BACKWARD and ALL.
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* doc/emacs/package.texi (Package from Source): Clarify prose
-2022-10-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Pre-compute some frequent data for button icons (bug#57813)
@@ -18540,11 +18540,11 @@
* lisp/minibuffer.el (completions-group-separator): Change face
attribute :strike-through to :underline.
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
;Fix typo "pacakge" -> "package"
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Extract separate function 'package-vc-guess-backend'
@@ -18554,18 +18554,18 @@
(package-vc-sourced-packages-list): Use it.
(package-vc-install): Use it.
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
;Fix typo "heusitic" -> "heuristic"
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Use user option 'package-vc-default-backend' when cloning
* lisp/emacs-lisp/package-vc.el (package-vc-unpack): Respect
'package-vc-default-backend'.
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Immediately check out the right branch or revision
@@ -18577,21 +18577,21 @@
* lisp/vc/vc-svn.el: Handle REV.
* lisp/vc/vc.el: Make BACKEND optional and add REV.
-2022-10-23 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Fix compiler warning about possible null pointer dereference
* src/itree.c (interval_tree_remove_fix): Use 'eassert' to both check
for non-null and suppress a compiler warning.
-2022-10-23 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add auxiliary function to query package specifications
* lisp/emacs-lisp/package-vc.el (package-vc-query-spec): Add
inline function.
-2022-10-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce duplicate code for creating "special windows"
@@ -18601,7 +18601,7 @@
Also write a comment explaining what user time windows are.
* src/xterm.h: Fix style of `x_parse_color' prototype.
-2022-10-23 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix infinite loop in treesit-search-forward-goto
@@ -18613,19 +18613,19 @@
to loop.
(Ftreesit_search_forward): Change docstring, remove UP argument.
-2022-10-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
f1f4a0c9d2 ; * doc/lispref/display.texi (Progress): Correct typo. (B...
-2022-10-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
626525c29f ; Remove reference to non-existent Flymake function from m...
-2022-10-22 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Fix `get-pos-property' for the new overlay implementation.
@@ -18640,7 +18640,7 @@
(Fget_pos_property): Deal with 'overlays_around' returning out of
range overlays.
-2022-10-22 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Add `get-pos-property' tests covering bug#58706
@@ -18649,7 +18649,7 @@
(get-pos-property-overlay-past-rear-advance): ditto.
(get-pos-property-overlay-at-narrowed-end): ditto.
-2022-10-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Resolve FIXME's in tree-sitter manual sections
@@ -18660,7 +18660,7 @@
* doc/lispref/modes.texi (Parser-based Font Lock):
* doc/lispref/parsing.texi (Language Definitions): Resolve FIXME's.
-2022-10-22 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Improve error reporting of EUDC plist functions
@@ -18671,7 +18671,7 @@
(eudc-plist-member, eudc-plist-get, eudc-lax-plist-get):
Update tests accordingly.
-2022-10-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Use 'outline-cycle' on buttons for 'RET' like 'TAB' uses.
@@ -18681,7 +18681,7 @@
Move overlay keymap to outline--make-button-overlay and replace
bindings outline-hide-subtree/outline-show-subtree with outline-cycle.
-2022-10-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Unify outline-minor-mode-use-buttons with in-margins/insert values (bug#57813)
@@ -18709,11 +18709,11 @@
Handle values of outline-minor-mode-use-buttons instead of using
many variables.
-2022-10-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/info.el (Info-toc-build): Remove message not needed anymore (bug#58634)
-2022-10-22 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Audit some plist uses with new predicate argument
@@ -18786,7 +18786,7 @@
(test-plist): Move to plist section. Also test with a predicate
argument.
-2022-10-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clean up tree-sitter sections of the ELisp manual
@@ -18798,7 +18798,7 @@
* lisp/treesit.el (treesit-node-at, treesit-language-at): Rename
argument POINT to POS.
-2022-10-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Further fixes to menu event processing on no-toolkit builds
@@ -18808,11 +18808,11 @@
not on MS-DOS.
(x_menu_show): Set popup_activated_flag under X.
-2022-10-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* admin/notes/repo: Document feature and scratch branches.
-2022-10-21 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Fix a narrow-to-region vs. overlays-at bug
@@ -18832,11 +18832,11 @@
* test/src/buffer-tests.el (sorted-overlays): Add a spot test for
this.
-2022-10-21 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-font-lock-enable): Add function back.
-2022-10-21 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Fix handling of overlays that begin at END in 'overlays_in'
@@ -18855,13 +18855,13 @@
edge conditions.
(test-overlays-in-empty-range-bug58672): Simple test for one case.
-2022-10-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Rephrase initial paragraph in "Package from Source" section
* doc/emacs/package.texi (Package from Source): Clarify motivation.
-2022-10-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Request "elpa-packages.eld" instead of "elpa-packages"
@@ -18869,13 +18869,13 @@
(package-vc--read-archive-data): Apply change.
(package-vc--download-and-read-archives): Apply change.
-2022-10-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove 'package-vc-install' alias 'package-checkout'
* lisp/emacs-lisp/package-vc.el (package-checkout): Remove it.
-2022-10-21 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
+2023-04-15 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
Bindat (src, strz): Operate on vectors too
@@ -18886,7 +18886,7 @@
(bindat-test--str-simple-array-unpack,bindat-test--str-combined-array-unpack):
New tests.
-2022-10-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix various menu problems
@@ -18899,7 +18899,7 @@
can be generated by menu grabs.
(x_wm_set_size_hint): Fix Motif build warning.
-2022-10-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve and extend documentation of ElDoc
@@ -18922,7 +18922,7 @@
more commands and variables.
* doc/emacs/maintaining.texi (Maintaining): Improve indexing.
-2022-10-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix delivery of window manager ping events during menu
@@ -18934,14 +18934,14 @@
(x_menu_dispatch_event): New function.
(x_menu_show): Set it as the XMenu event handler.
-2022-10-21 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Fix last change in perl-mode
* lisp/progmodes/perl-mode.el (perl--syntax-exp-intro-regexp): Escape
$. Reported by Mattias Engdegård.
-2022-10-21 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Add the "nil" language server to eglot-server-programs
@@ -18950,7 +18950,7 @@
and more actively updated. (Bug#58676)
Ref: https://github.com/oxalica/nil
-2022-10-21 Brian Leung <leungbk@posteo.net>
+2023-04-15 Brian Leung <leungbk@posteo.net>
Add lua-language-server to eglot-server-programs
@@ -18959,14 +18959,14 @@
developed and more popular than the lua-lsp server, so prioritize
that. (Bug#58676)
-2022-10-20 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have 'package-vc-link-directory' use name if given
* lisp/emacs-lisp/package-vc.el (package-vc-link-directory): Use the
NAME argument.
-2022-10-20 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Build documentation like elpa-admin.el
@@ -18974,36 +18974,36 @@
function to build a documentation file.
(package-vc-unpack-1): Use 'package-vc-build-documentation'.
-2022-10-20 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge remote-tracking branch 'origin/master' into feature/package+vc
-2022-10-20 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Fix ldapsearch output parsing in ldap-search-internal
* lisp/net/ldap.el (ldap-search-internal): When parsing output, make
sure that file:// matched before opening the file. (bug#58605)
-2022-10-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add Eglot to the menu bar
* lisp/progmodes/eglot.el (eglot): Improve the doc string.
* lisp/menu-bar.el (menu-bar-tools-menu): Add Eglot to the menu.
-2022-10-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Mention Eglot in the Emacs user manual
* doc/emacs/maintaining.texi (Xref):
* doc/emacs/programs.texi (Symbol Completion, Imenu): Mention Eglot.
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch 'feature/eglot2emacs'
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Minor fixes to doc/misc/eglot.texi
@@ -19011,11 +19011,11 @@
markup of eglot-{}
(Quick Start): Fix section cross reference.
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* lisp/info-look.el (mapc): Add Eglot manual's index.
-2022-10-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around problems setting input focus when a frame is in the background
@@ -19025,15 +19025,15 @@
various workarounds for window manager "focus stealing
prevention". (bug#57012)
-2022-10-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/PROBLEMS: Document window manager focus problems.
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch 'feature/eglot-texi-manual' into feature/eglot2emacs
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Revert "eglot.texi: Make example more realistic"
@@ -19044,7 +19044,7 @@
This reverts commit 16986a9cc42ef4de580456f4acc5feba682ac8b1.
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix Eglot manual's description of eglot-workspace-configuration
@@ -19053,7 +19053,7 @@
arbitrarily complex and correctly identify nil as the Elisp
equivalent to JSON null.
-2022-10-20 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Improve HERE document detection in perl-mode
@@ -19066,7 +19066,7 @@
* test/lisp/progmodes/cperl-mode-resources/here-docs.pl: Add more tests.
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Expose eglot-{} to be used in eglot-workspace-configuration
@@ -19074,13 +19074,13 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1084
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rework header of eglot.el
* eglot.el (Commentary): Rework.
-2022-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Do use eglot-connect-timeout if eglot-sync-connect is t
@@ -19089,51 +19089,51 @@
* eglot.el (eglot--connect): Use eglot-connect-timeout in the case
eglot-sync-connect is t.
-2022-10-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
eglot.texi: Explain where to find third-party packages
* doc/misc/eglot.texi (Eglot Features): Improve description on
third-party packages.
-2022-10-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
eglot.texi: Make example more realistic
* doc/misc/eglot.texi (Eglot and Buffers): Prefer more realistic
*.c instead of *.foo in example.
-2022-10-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
eglot.texi: Move sentence on LSP Servers earlier
* doc/misc/eglot.texi (Setting Up LSP Servers): Move explanation
on the (lack of) need for customizing servers earlier.
-2022-10-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/Makefile.in (INFO_COMMON): Add eglot.
-2022-10-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in modula2.el
* lisp/progmodes/modula2.el (m2-mode-map): Prefer defvar-keymap.
-2022-10-20 Rudolf Adamkovič <salutis@me.com>
+2023-04-15 Rudolf Adamkovič <salutis@me.com>
Add 'slovak-querty' input method (bug#58642)
* lisp/leim/quail/slovak.el ("slovak-querty"): New input method.
* etc/NEWS: Mention the new 'slovak-querty' input method.
-2022-10-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
4b2c83eeaf ; * doc/lispref/modes.texi (Defining Minor Modes): Explain...
-2022-10-19 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Rename all exported itree.h functions with the itree_ prefix
@@ -19147,7 +19147,7 @@
* src/itree.c: ditto.
* src/itree.h: ditto.
-2022-10-19 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Prefix all itree.h type names with itree_
@@ -19163,7 +19163,7 @@
* src/textprop.c: ditto.
* src/xdisp.c: ditto.
-2022-10-19 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Revert "mark_overlays: Use the normal ITREE_FOREACH"
@@ -19177,7 +19177,7 @@
isn't that GC itself is risky, it is that GC can call ELisp by way of
a hook, and running ELisp during iteration is risks nested iteration.
-2022-10-19 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Remove the ITREE_NULL macro and use NULL everywhere.
@@ -19185,7 +19185,7 @@
* src/itree.c (check_subtree): Use NULL everywhere.
* src/pdumper.c (dump_buffer): ditto.
-2022-10-19 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Revise the toggle scheme of tree-sitter (again)
@@ -19245,14 +19245,14 @@
(ts-mode): Setup tree-sitter variables and then turn on treesit-mode
or move to js-mode.
-2022-10-19 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix async native compilation (bug#58637)
* lisp/emacs-lisp/comp.el (comp--native-compile): Fix gate condition.
(comp-run-async-workers): Add assetion.
-2022-10-19 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Cease adding types to found-types too eagerly
@@ -19274,7 +19274,7 @@
unconditionally to nil to prevent a second identifier being wrongly marked as
a type.
-2022-10-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix various builds
@@ -19284,20 +19284,20 @@
on Release 6 XIM.
(x_get_keyboard_modifiers): Adjust for build without XCB.
-2022-10-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build warning without XKB, Xmb, and XInput 2
* src/xterm.c (handle_one_xevent): Avoid defining
USE_SAFE_ALLOCA when SAFE_ALLOCA is not actually used.
-2022-10-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove spurious trailing ':' in doc/misc/eglot.texi
* doc/misc/eglot.texi (Customizing Eglot): Remove spurious ':'.
-2022-10-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak some node names in doc/misc/eglot.texi
@@ -19306,7 +19306,7 @@
* doc/misc/eglot.texi: Rework node names.
-2022-10-19 Arun Isaac <arunisaac@systemreboot.net>
+2023-04-15 Arun Isaac <arunisaac@systemreboot.net>
Add tamil99 input method (bug#58070)
@@ -19314,7 +19314,7 @@
("tamil99"): New input method.
* etc/NEWS: Mention new tamil99 input method.
-2022-10-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add admin/emacs-shell-lib for shared bash code
@@ -19326,17 +19326,17 @@
* admin/update_autogen:
* admin/upload-manuals: Simplify and improve using above new library.
-2022-10-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lib-src/rcs2log: Add fallback for $TMPDIR.
-2022-10-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
efd3ef3ceb ; * src/window.c: Fix some comments. (Bug#58550)
-2022-10-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(sit-for): Add compiler-macro to warn about obsolete calling convention
@@ -19345,21 +19345,21 @@
* lisp/play/zone.el (zone, zone-pgm-jitter, zone-pgm-whack-chars):
(zone-remove-text): Avoid obsolete calling convention.
-2022-10-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add a new section to tree-sitter's manual node
* doc/lispref/parsing.texi (Parsing Program Source): New section
Tree-sitter major modes.
-2022-10-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Remove modifications to the list of ignored files in source packages
* lisp/emacs-lisp/package-vc.el (package-vc-unpack-1): Remove
'vc-ignore' calls.
-2022-10-18 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add more granular features in font-locking
@@ -19376,7 +19376,7 @@
* lisp/progmodes/ts-mode.el (ts-mode--font-lock-settings): New defvar
renamed from 'ts-mode--settings'.
-2022-10-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Use 'elpa-packages' files for VC metadata
@@ -19402,7 +19402,7 @@
'package-refresh-contents' using a hook.
(package-refresh-contents): Use 'package-refresh-contents-hook'.
-2022-10-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename tree-sitter group to treesit
@@ -19410,18 +19410,18 @@
(treesit-mode)
(global-treesit-mode): Use treesit group.
-2022-10-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el: Add commentary.
-2022-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix functions.texi syntax error
* doc/lispref/functions.texi (Function Documentation): Fix syntax
error.
-2022-10-18 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Install new toggle scheme for tree-sitter
@@ -19460,18 +19460,18 @@
* lisp/progmodes/ts-mode.el (ts-mode): Use treesit-ready-p.
-2022-10-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
functions.texi: Fix bug#58602
* doc/lispref/functions.texi (Function Documentation): Document
`:documentation` and `function-documentation`.
-2022-10-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge remote-tracking branch 'origin/master' into feature/package+vc
-2022-10-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have 'vc-clone' return a directory
@@ -19481,7 +19481,7 @@
* lisp/vc/vc-svn.el (vc-svn-clone): Return directory.
* lisp/vc/vc.el (vc-clone): Ensure the backend returns directory.
-2022-10-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-minor-mode-insert-buttons): New defvar-local.
@@ -19498,7 +19498,7 @@
outline-regexp for leading spaces because now spaces are not added
in the NEWS buffer.
-2022-10-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Use one character wide strings for margins (bug#57813)
@@ -19507,24 +19507,24 @@
for margins that are 1-column wide.
(outline-minor-mode): Force display of margins only for the selected buffer.
-2022-10-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp.el (tramp-file-name-equal-p): Fix docstring.
* etc/NEWS: Adapt connection-local variables entries.
-2022-10-18 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
* .gitignore: Unignore the tests/manual directory. (Bug#58611)
-2022-10-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(byte-compile--first-symbol-with-pos): Fix bug#58601
* lisp/emacs-lisp/bytecomp.el: Require `subr-x`.
(byte-compile--first-symbol-with-pos): Avoid inf-loops on circular data.
-2022-10-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More minor fixes to doc/misc/eglot.texi
@@ -19546,7 +19546,7 @@
each other. Clarify semantics of
eglot-confirm-server-initiated-edits.
-2022-10-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Minor stylistic fixes to introduction of doc/misc/eglot.texi
@@ -19554,34 +19554,34 @@
(Top): Fix sentence structure in top-level
introduction.
-2022-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
Fix previous loaddefs-gen fix
-2022-10-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add new Texinfo manual for the Eglot LSP client
* doc/misc/eglot.texi: New file.
-2022-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix faulty loaddefs detection
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--emacs-batch): Fix faulty loaddefs detection.
-2022-10-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/progmodes/cc-defs.el Remove setting of inhibit-point-motion-hooks
-2022-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-10-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Prevent potential native compilation infinite recursions
@@ -19589,14 +19589,14 @@
(comp-subr-trampoline-install, comp-final, comp-run-async-workers)
(comp--native-compile): Update.
-2022-10-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Print the correct $PATH when Eshell's 'which' fails to find a command
* lisp/eshell/esh-cmd.el (eshell/which): Use 'eshell-get-path'
(bug#20008).
-2022-10-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve handling of $PATH in Eshell for remote directories
@@ -19639,7 +19639,7 @@
* etc/NEWS: Announce this change (bug#57556).
-2022-10-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow setting the values of variable aliases in Eshell
@@ -19674,7 +19674,7 @@
documentation.
(Variables): Expand documentation of how to get/set variables.
-2022-10-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add helpers to dynamically assign connection-local values
@@ -19702,7 +19702,7 @@
* etc/NEWS: Announce 'setq-connection-local'.
-2022-10-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve ‘random’ doc re nonces
@@ -19710,7 +19710,7 @@
random seed, entropy pools, and why one shouldn’t use ‘random’ for
nonces. See Bug#58472.
-2022-10-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#58584
@@ -19719,7 +19719,7 @@
(handle_one_xevent): In that case, drop the event and don't let
it reach GTK.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change free to xfree in treesit.el
@@ -19728,14 +19728,14 @@
* src/treesit.c (Ftreesit_parser_set_included_ranges): Change free to
xfree.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change malloc to xmalloc in treesit.c
* src/treesit.c (Ftreesit_parser_set_included_ranges): Change malloc
to xmalloc.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix casts to uint32_t in treesit.c
@@ -19750,7 +19750,7 @@
(Ftreesit_parser_included_ranges): Add check for buffer size.
(Ftreesit_query_capture): Add assertion.
-2022-10-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Follow-up fixes for vc-default-checkin-patch
@@ -19760,7 +19760,7 @@
files back, not just the first one. Bug#52349,
https://lists.gnu.org/archive/html/emacs-devel/2022-10/msg01446.html.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Simplify error reported by loading tree-sitter language definition
@@ -19786,7 +19786,7 @@
* src/treesit.c (treesit_load_language): Add base_candidates, remove
error_list, report base_candidates rather than error_list.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Skip tree-sitter tests unless language definition is available
@@ -19798,14 +19798,14 @@
(treesit-multi-lang)
(treesit-node-supplemental): Add skip-unless form.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix memory leak in ts_load_language
* src/treesit.c (ts_load_language): Move initialization of c_name down
and free it right after use.
-2022-10-17 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Don't fontify as types variables with the same names as struct tags
@@ -19818,14 +19818,14 @@
* lisp/progmodes/cc-langs.el (c-self-contained-typename-kwds
(c-self-contained-typename-key): New language consts and variable.
-2022-10-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in fortran.el
* lisp/progmodes/fortran.el (fortran-mode-map): Prefer
defvar-keymap.
-2022-10-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update version information in Gnus manual
@@ -19834,7 +19834,7 @@
(Ma Gnus): Explain that Gnus is now developed together with
Emacs. (Bug#58161)
-2022-10-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/itree.c: Eliminate all prototypes for static functions
@@ -19843,7 +19843,7 @@
redundant prototypes.
While at it, fix a few places where the used more than 80 column.
-2022-10-17 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Silence recent comp-tests.el lexvar warnings
@@ -19855,7 +19855,7 @@
(test-native-compile-prune-cache/dont-delete-in-parent-of-cache):
Simplify file name expansion.
-2022-10-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make sure the treesit path variables are lists
@@ -19863,7 +19863,7 @@
(treesit_find_override_name): Make sure the lists we use are
really lists.
-2022-10-17 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Rename itree iterators with itree_iterator prefix
@@ -19876,7 +19876,7 @@
* src/itree.c: Use new names everywhere.
* src/eval.c: ditto.
-2022-10-17 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Delete the itree_null sentinel node, use NULL everywhere.
@@ -19908,14 +19908,14 @@
(interval_tree_transplant): New function that something I think is
more like a full transplantation. (names are hard)
-2022-10-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve native-compile-prune-cache messages
* lisp/emacs-lisp/comp.el (native-compile-prune-cache): Quote name of
pruned directory.
-2022-10-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't prune *.eln files in parent of eln-load-path
@@ -19925,13 +19925,13 @@
(test-native-compile-prune-cache/dont-delete-in-parent-of-cache):
New test.
-2022-10-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add tests for native-compile-prune-cache
* test/lisp/comp-tests.el: New file.
-2022-10-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pieces of code being too expensive over slow network connections
@@ -19966,7 +19966,7 @@
(struct x_display_info): New fields for selection monitoring.
Also, record the fixes extension base.
-2022-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix spurious "Compilation finished" native-comp messages
@@ -19976,7 +19976,7 @@
turned out that all the files we considered nativecomping were
skipped.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix js/ts tree-sitter template_string font-lock
@@ -19987,11 +19987,11 @@
* lisp/progmodes/ts-mode.el (ts-mode--settings): Fontify
template_strings with js--fontify-template-string.
-2022-10-17 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-font-lock-rules): Warn about :feature.
-2022-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid having the async compile log saying it's compiling loaddefs
@@ -20006,20 +20006,20 @@
* lisp/emacs-lisp/comp.el (native-compile-async-skip-p): Use the data.
-2022-10-17 Andrey Listopadov <andreyorst@gmail.com> (tiny change)
+2023-04-15 Andrey Listopadov <andreyorst@gmail.com> (tiny change)
Use face-spec-set instead of custom-set-faces
GitHub-reference: https://github.com/jwiegley/use-package/issues/934
-2022-10-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make `message-canlock-generate' faster
* lisp/gnus/message.el (message-canlock-generate): Improve performance
by several orders of magnitude.
-2022-10-16 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add default implementation for 'checkin-patch'
@@ -20028,18 +20028,18 @@
The first attempt was here:
https://lists.gnu.org/archive/html/emacs-devel/2022-08/msg01464.html
-2022-10-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* src/keyboard.c (echo_add_key): Mention quick-help
-2022-10-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Only clone packages if necessary
* lisp/emacs-lisp/package-vc.el (package-vc-unpack): Check if
directory exists before cloning.
-2022-10-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic: Fix `advertised-calling-convention` declarations
@@ -20056,14 +20056,14 @@
* test/lisp/emacs-lisp/cl-generic-tests.el (cl-generic-tests--acc): New fun.
(cl-generic-tests--advertised-calling-convention-bug58563): New test.
-2022-10-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Attempt to infer the package subject if missing
* lisp/emacs-lisp/package-vc.el (package-vc-main-file): Add function.
(package-vc-generate-description-file): Infer the subject.
-2022-10-16 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Move and rename Python completion ERTs
@@ -20078,7 +20078,7 @@
(python-completion-at-point-native-with-eldoc-1): Renamed tests
(bug#58565).
-2022-10-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support MinGW build on MS-Windows
@@ -20120,20 +20120,20 @@
* configure.ac (TREE_SITTER): Support the MinGW build.
(TREE_SITTER_OBJ): Remove.
-2022-10-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in ansi-osc.el
* lisp/ansi-osc.el (ansi-osc-hyperlink-map): Prefer defvar-keymap.
-2022-10-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Mark source packages as always updatable
* lisp/emacs-lisp/package.el (package--updateable-packages): Add check
for source packages.
-2022-10-16 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Delete 'package-contact-maintainer'
@@ -20141,33 +20141,33 @@
* etc/NEWS: Remove mention.
* lisp/emacs-lisp/package.el: Remove the command.
-2022-10-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make help-for-help echo key on failure
* lisp/help-macro.el (make-help-screen): Echo key on failure.
-2022-10-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bind "home"/"end" in help-for-help
* lisp/help-macro.el (make-help-screen): Bind "home"/"end" keys to
scrolling up/down.
-2022-10-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't ding when exiting help-for-help with C-g
* lisp/help-macro.el (make-help-screen): Don't ding on "C-g".
-2022-10-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clear misleading message in help-quit-or-quick
* lisp/help.el (help-quit-or-quick): Clear misleading message
(bug#58542).
-2022-10-16 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix invalid search bound error in python-shell-completion-at-point
@@ -20177,14 +20177,14 @@
(python-shell-completion-shell-buffer-native-1): New tests
(bug#58548).
-2022-10-16 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Signal an error in dictionary lookup if there's no word at point
* lisp/net/dictionary.el (dictionary-lookup-definition): Signal an
error when there is no word at point (bug#58552).
-2022-10-16 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Disable completion when PDB is active in Python Shell buffer
@@ -20193,7 +20193,7 @@
* test/lisp/progmodes/python-tests.el (python-shell-completion-pdb-1):
New test (bug#58562).
-2022-10-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -20206,14 +20206,14 @@
# Conflicts:
# doc/emacs/custom.texi
-2022-10-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Expand 'random' testsuite
* test/src/fns-tests.el (ert): Require.
(fns-tests-random): Expand test.
-2022-10-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adapt last change to Haiku port
@@ -20226,7 +20226,7 @@
* src/haikuterm.h (struct haiku_output):
(FRAME_COMPLETE_P): Synchronize logic with X.
-2022-10-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix multiple sources of flicker under X
@@ -20252,21 +20252,21 @@
* src/xterm.h (struct x_output): New flag `complete'.
(FRAME_X_COMPLETE_P): New macro.
-2022-10-15 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Update ts-mode font-lock to work with tree-sitter's :feature
* lisp/progmodes/ts-mode.el (ts-mode--settings): Add :feature flag.
(ts-mode): Set treesit-font-lock-feature-list.
-2022-10-15 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix ‘make bootstrap’ when the *.m4 files change
This should help avoid problems like Bug#58535.
* Makefile.in (bootstrap-clean): Also remove autom4te.cache.
-2022-10-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Minor Tramp fixes
@@ -20275,26 +20275,26 @@
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-expand-file-name):
Check, that there's really a Tramp file name.
-2022-10-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge branch 'master' into feature/package+vc
* lisp/vc/vc-git.el (vc-git-symbolic-commit): Use --no-undefined
-2022-10-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/vc/vc-git.el (vc-git-symbolic-commit): Add argument FORCE
(Bug#57400)
-2022-10-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/vc/vc-git.el (vc-git--rev-parse): Allow abbreviating commits
* lisp/vc/vc-git.el (vc-git-working-revision): Use abbreviated comment
references. (Bug#57400)
-2022-10-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Handle ;;;###theme-autoload comments in etc/themes
@@ -20302,7 +20302,7 @@
Extract the autoloads and have them loaded along with loaddefs.el.
* etc/NEWS: Mention the new feature. (Bug#57639)
-2022-10-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Tag themes with properties
@@ -20337,14 +20337,14 @@
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Handle 'defcustom's by extracting the properties. (Bug#57639)
-2022-10-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add no-byte-compile to the ".dir-locals.el" auto-insert template
* lisp/autoinsert.el (auto-insert-alist): Add the no-byte-compile
cookie to the ".dir-locals.el" template.
-2022-10-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete broken link to Network Theory Ltd.
@@ -20353,7 +20353,7 @@
published anything new for over a decade.
* doc/misc/org.org (Summary): Remove broken link to Network Theory Ltd.
-2022-10-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix encoding and decoding of process I/O in Eshell on Windows
@@ -20361,7 +20361,7 @@
encoding and decoding of text to/from the subprocess for
MS-Windows. (Bug#58281)
-2022-10-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove redundant call to expensive function XOpenDisplay
@@ -20369,21 +20369,21 @@
network connection by an order of magnitude on no toolkit builds
by avoiding a redundant call to XOpenDisplay.
-2022-10-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XDS file name expansion
* lisp/x-dnd.el (x-dnd-handle-xds-drop): Expand file names
again. That code was mistakenly removed.
-2022-10-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use file-size-human-readable in memory-report--format
* lisp/emacs-lisp/memory-report.el (memory-report--format): Use
file-size-human-readable.
-2022-10-14 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Update image-circular-tests.el
@@ -20395,7 +20395,7 @@
(image-test-circular-specs): Ditto. Wrap overly wide docstring.
Mark as failing since shortly after its introduction (bug#36403#63).
-2022-10-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
src/textprop.c (get_char_property_and_overlay): Fix bug#58479
@@ -20406,7 +20406,7 @@
* test/src/buffer-tests.el (buffer-tests--overlay-bug58479): New test.
* src/buffer.h (buffer_has_overlays): Avoid `interval_tree_size`.
-2022-10-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Rename `file-attribute-file-number' to `file-attribute-file-identifier'
@@ -20420,7 +20420,7 @@
* src/dired.c (Ffile_attributes):
Rename `file-attribute-file-number' to `file-attribute-file-identifier'.
-2022-10-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document how to control where the *.eln files are written
@@ -20430,7 +20430,7 @@
'native-comp-eln-load-path' in determining where *.eln files are
written.
-2022-10-14 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Correctly fontify C++'s operator"" _tag (...)
@@ -20451,7 +20451,7 @@
* lisp/progmodes/cc-langs.el (c-overloadable-operators): Add "" to this list.
(c-sub-colon-type-list-re): New lang-const and lang-var.
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add a quick-help menu
@@ -20463,11 +20463,11 @@
lisp/help.el (help-for-help): Mention 'help-quit-or-quick'.
* etc/NEWS (https): Mention 'help-quit'.
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/net/rcirc.el (rcirc-bridged-nick): Inherit from highlight
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow filtering what items are added to Ecomplete
@@ -20475,7 +20475,7 @@
* lisp/ecomplete.el (ecomplete-filter-regexp): Add new option.
(ecomplete-add-item): Respect new option. (bug#58487)
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Prevent .dir-locals.el from being byte-compiled
@@ -20484,33 +20484,33 @@
file.
* .dir-locals.el: Add 'no-byte-compile'. (Bug#58486)
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/net/rcirc.el (rcirc-generate-log-filename): Append ".log"
(Bug#54718)
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Prepare all inline patches at once
* lisp/vc/vc.el (vc-prepare-patch): Remove the usage of
'recursive-edit' when 'vc-prepare-patches-separately' is non-nil.
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow reordering commits in 'vc-prepare-patch' prompt
* lisp/vc/vc.el (vc-prepare-patch): Use marked log-view commits as
initial input.
-2022-10-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Mention that vc-prepare-patch can interact with a log-view
* lisp/play/zone.el (zone): Allow selecting a program
-2022-10-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add cross-reference to alternative syntaxes for Unicode
@@ -20520,14 +20520,14 @@
* doc/emacs/custom.texi (Init Non-ASCII): Add cross reference to
"General Escape Syntax" in the Emacs Lisp Reference Manual.
-2022-10-14 Reuben Thomas <rrt@sc3d.org>
+2023-04-15 Reuben Thomas <rrt@sc3d.org>
Do perl documentation lookups case-insensitively, like man
* lisp/progmodes/cperl-mode.el (cperl-perldoc): add -i to the perldoc
command.
-2022-10-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#56153
@@ -20540,7 +20540,7 @@
([EmacsView windowDidChangeBackingProperties:]): Fix new Mac
OS deprecation.
-2022-10-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid redundant creation of XRender pictures
@@ -20549,13 +20549,13 @@
(x_draw_image_foreground, x_draw_image_foreground_1): Pass
destination where appropriate.
-2022-10-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
85e47d9a9e ; Continued cleanup of "-hooks"
-2022-10-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Update tree-sitter manual to reflect the previous commit
@@ -20565,7 +20565,7 @@
* doc/lispref/parsing.texi: Add the missing closing bracket in
@code{(t . nil)}.
-2022-10-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rework tree-sitter font-lock
@@ -20585,13 +20585,13 @@
treesit-font-lock-recompute-features. And improve the font-lock-mode
workaround.
-2022-10-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* doc/lispref/parsing.texi: Add manual for treesit-query-language.
* src/treesit.c (Ftreesit_query_language): New function.
-2022-10-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Clarify structure of file-attribute's device number
@@ -20613,33 +20613,33 @@
* src/dired.c (Ffile_attributes): Fix docstring.
-2022-10-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve checks for recent "File exists" fixup
* src/fileio.c (Finsert_file_contents): Add an assertion (bug#42431).
-2022-10-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make `info' treat "\n" in node names as "\s"
* lisp/info.el (info): Treat "\n" in node name as "\s". (Bug#57936)
-2022-10-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Shrink client list window structure
* src/xterm.c (struct x_client_list_window): Rearrange members
for better alignment.
-2022-10-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify recent "File exists" fix
* src/fileio.c (Finsert_file_contents):
Simplify previous change that fixed bug#42431.
-2022-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix hl-line-mode/global-hl-line-mode logic again
@@ -20647,14 +20647,14 @@
(hl-line-mode 1) work again when global-hl-line-mode is on
(bug#58478).
-2022-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix browse-url-emacs for file: URLs on Windows
* lisp/net/browse-url.el (browse-url-emacs): Fix up
file:///c:/foo/bar URLs on windows (bug#58464).
-2022-10-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Rearrange button/margin functions.
@@ -20662,14 +20662,14 @@
(outline--insert-open-button, outline--insert-close-button)
(outline--fix-up-all-buttons): Move to the section "Button/margin indicators".
-2022-10-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline--fix-buttons-after-change): New function.
(outline-minor-mode): Use it.
(outline--make-margin-overlay): Remove inhibit-read-only.
-2022-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix misleading "File exists, but cannot be read" in browse-url-emacs
@@ -20678,13 +20678,13 @@
via handlers -- in that case, modtime isn't necessarily set, and
if there's a handler, it should take care of this (bug#42431).
-2022-10-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
4b4b093ab3 ; * admin/make-tarball.txt: Fix typo.
-2022-10-12 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
src/frame.c (do_switch_frame): Fix bug#58343
@@ -20694,46 +20694,46 @@
Use it instead of `selected_frame`. Adjust all callers.
* src/lisp.h (move_minibuffers_onto_frame): Adjust declaration.
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* etc/NEWS: Mention package-vc additions
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Document package-vc
* doc/emacs/package.texi (Package Files): Add new node.
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow specifying a package name for 'package-vc-link-directory'
* lisp/emacs-lisp/package-vc.el (package-vc-link-directory): Add argument NAME
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/emacs-lisp/package-vc.el (package-vc-refresh): Add function.
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Rename 'package-vc-link-project' to 'package-vc-link-directory'
* lisp/emacs-lisp/package-vc.el (package-vc-link-project): Rename it.
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Run 'package-vc-unpack-1' after updating source packages
* lisp/emacs-lisp/package-vc.el (package-vc-update): Call
'package-vc-unpack-1'.
-2022-10-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from conao3/add-commands-keyword
GitHub-reference: https://github.com/jwiegley/use-package/issues/917
-2022-10-12 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Better signal data for treesit-load-language-error
@@ -20742,7 +20742,7 @@
language not available.
* doc/lispref/parsing.texi: Document the signal data in detail.
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add new command to install a package via symbolic linking
@@ -20750,14 +20750,14 @@
(package-vc-unpack): Use 'package-vc-unpack-1'.
(package-vc-link-project): Add new command.
-2022-10-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Native-Compilation Variables slightly
* doc/lispref/compile.texi (Native-Compilation Variables): Clarify
trampoline bit (bug#58429).
-2022-10-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Only use 'package-vc-repository-store' if necessary
@@ -20766,7 +20766,7 @@
* lisp/emacs-lisp/package.el (package--delete-directory): Adapt
accordingly.
-2022-10-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve makefile-imake-mode
@@ -20775,14 +20775,14 @@
CPP keywords, and don't require comments to start at BOL.
(makefile-imake-mode): Set comment-start to some sensible value.
-2022-10-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix thinko in read-string-from-buffer
* lisp/textmodes/string-edit.el (string-edit-done): Return an empty
string when the user has entered no text.
-2022-10-12 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix Python completion when point in shell buffer is before prompt
@@ -20791,7 +20791,7 @@
* test/lisp/progmodes/python-tests.el (python-shell-completion-2):
(python-shell-completion-native-2): New tests (bug#58441).
-2022-10-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop relying on Xt hack to set window manager hints
@@ -20803,7 +20803,7 @@
* src/xterm.c (x_wm_set_size_hint): Set size hints the usual way
if Xt did not set them. (bug#58412)
-2022-10-12 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add TypeScript support with tree-sitter
@@ -20812,13 +20812,13 @@
support for TSX as well as TypeScript. If we cannot find tree-sitter,
we default to using js-mode.
-2022-10-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
3787d0b11a ; * doc/lispref/windows.texi (Window Hooks): Fix markup (b...
-2022-10-11 Andrea Corallo <andrea.corallo@arm.com>
+2023-04-15 Andrea Corallo <andrea.corallo@arm.com>
Add trampoline AOT compilation target (bug#58318)
@@ -20827,14 +20827,14 @@
* lisp/emacs-lisp/comp.el (comp-compile-all-trampolines): New
function.
-2022-10-11 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix byte-compile warning for js--treesit-defun-type-regexp
* lisp/progmodes/js.el (js--treesit-defun-type-regexp): Move before
js--treesit-beginning-of-defun.
-2022-10-11 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Lazily compile tree-sitter query
@@ -20870,7 +20870,7 @@
a lisp query requires the language symbol, but in this function we
only have TSLanguage.
-2022-10-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c (check_tree): Simplify
@@ -20885,25 +20885,25 @@
before `interval_tree_remove_fix`. Move update of `size`
field accordingly.
-2022-10-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Also avoid setting _NET_WM_USER_TIME on crossing
* src/xterm.c (handle_one_xevent): Stop setting user time prop
on crossing events.
-2022-10-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): actually bump to 1.9
-2022-10-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make read-string-from-buffer and string-edit mention each other
* lisp/textmodes/string-edit.el (read-string-from-buffer)
(string-edit): Mention each other in the doc strings.
-2022-10-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up scrolling when lines are very long and truncated
@@ -20916,7 +20916,7 @@
method, if lines in the buffer are very long and truncated on
display.
-2022-10-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some more unnecessary calls to block_input
@@ -20925,7 +20925,7 @@
(x_after_update_window_line): Remove and add calls to
block_input as required.
-2022-10-10 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Stop reading and writing the itree_null.parent field entirely.
@@ -20948,7 +20948,7 @@
(interval_tree_transplant): Avoid an assignment to itree_null.parent
through source->parent.
-2022-10-10 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Simplify itree_null initialization
@@ -20959,7 +20959,7 @@
(itree_init): remove initialization code, call eassert(null_is_sane())
(check_tree_common): call eassert (null_is_sane())
-2022-10-10 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Check red-black invariants in most places
@@ -20973,7 +20973,7 @@
(interval_tree_insert): check_tree -> check_tree_common with
allow_red_red=true.
-2022-10-10 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Improve check_subtree
@@ -20985,7 +20985,7 @@
limiting to interval_tree_max_height(tree) levels is enough to
traverses the complete tree.
-2022-10-10 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Accommodate missing spec values in erc-format-message
@@ -20996,14 +20996,14 @@
been relying on the old behavior to gracefully handle malformed server
messages. This commit tries to regain that functionality.
-2022-10-10 Philipp Stephani <p.stephani2@gmail.com>
+2023-04-15 Philipp Stephani <p.stephani2@gmail.com>
Add gettid to seccomp-filter
* lib-src/seccomp-filter.c (main): gettid is necessary on RHEL 9.0
(bug#56359).
-2022-10-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the view-remove-frame-by-deleting variable
@@ -21011,7 +21011,7 @@
that hasn't been used since 2011 -- 357f93d245344 reworked the
code and stopped using it (bug#58413).
-2022-10-10 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix Python completion failure under certain conditions
@@ -21024,7 +21024,7 @@
(python-shell-completion-native-with-ffap-1)
(python-shell-completion-native-with-eldoc-1): New tests (bug#58389).
-2022-10-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve error message from sqlite-execute
@@ -21033,20 +21033,20 @@
execute and select.
(Fsqlite_select): Factored out from here.
-2022-10-10 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't prompt when killing an Emacs client if it's the last client
* lisp/server.el (server-kill-emacs-query-function): Ignore the
current client (if any) when checking for live clients (bug#58404).
-2022-10-10 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix typo in Makefile.in
* src/Makefile.in (TREE_SITTER_CFLAGS): Set the correct C flags.
-2022-10-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp completion on MS Windows
@@ -21055,7 +21055,7 @@
(tramp-build-completion-file-name-regexp):
Use `tramp-prefix-format' instead of `tramp-prefix-regexp'. (Bug#558133)
-2022-10-10 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port bwrap/allows-stdout test to Ubuntu 22.04.1
@@ -21085,7 +21085,7 @@
causes the test to pass. Perhaps a fancier, more accurate patch
could be written by someone who has the time.
-2022-10-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make treesit-node-at faster
@@ -21093,7 +21093,7 @@
treesit-node-first-child-for-pos. This is both faster for large
buffers and simpler. Also remove the TODO comment.
-2022-10-10 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix typo in treesit--check-manual-covarage
@@ -21101,17 +21101,17 @@
function name and also lookup the correct library in
`find-library-name'
-2022-10-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve treesit-search-forward-goto so it doens't stuck at EOF
* lisp/treesit.el (treesit-search-forward-goto): Handle the edge case.
-2022-10-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* admin/notes/tree-sitter/starter-guide (Navigation): Improve demo.
-2022-10-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix js--treesit-beginning/end-of-defun
@@ -21122,7 +21122,7 @@
(js-treesit--defun-query): Remove variable.
(js--treesit-defun-type-regexp): Add variable.
-2022-10-10 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Add tree-sitter functionality to js-mode
@@ -21155,7 +21155,7 @@
(js-mode, js-json-mode, js-jsx-mode): Add support for tree-sitter
functionalities.
-2022-10-10 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter build script in admin/notes
@@ -21163,21 +21163,21 @@
* admin/notes/tree-sitter/build-module/build.sh: change
typescript to tsx.
-2022-10-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a test for sqlite "insert ... returning"
* test/src/sqlite-tests.el (sqlite-returning): Add a test for
"insert ... returning".
-2022-10-10 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix `vc-prepare-patch' docstring
* lisp/vc/vc.el (vc-prepare-patch): Correct description of
`vc-prepare-patches-separately'.
-2022-10-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Support "insert into ... returning ..." in sqlite-execute
@@ -21185,19 +21185,19 @@
* src/sqlite.c (Fsqlite_execute): Support syntax like "insert into
... returning ..." (bug#58390).
-2022-10-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some indentation in Fsqlite_execute
* src/sqlite.c (Fsqlite_execute): Fix indentation.
-2022-10-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename custom group treesit to tree-sitter
* lisp/treesit.el (treesit): Rename.
-2022-10-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add :version tag for new tree-sitter custom options
@@ -21205,14 +21205,14 @@
* lisp/treesit.el (treesit):
(treesit-max-buffer-size): Add version tag.
-2022-10-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make python tree-sitter font-lock support decoration levels
* lisp/progmodes/python.el (python--treesit-settings): Stratify into
three levels.
-2022-10-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Make tree-sitter font-lock support decoration levels
@@ -21225,14 +21225,14 @@
(treesit-font-lock-rules): Support :level. Relayout the let form.
(treesit-font-lock-fontify-region): Support :level.
-2022-10-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add note on tree-sitter's naming convention
* admin/notes/tree-sitter/starter-guide: Add note.
* doc/lispref/parsing.texi: Add note.
-2022-10-09 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Tighten up handling of `otick`
@@ -21280,7 +21280,7 @@
(interval_tree_insert): Remove declaration.
(itree_insert_node): New declaration.
-2022-10-09 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Rename 'package-vc-fetch' to 'package-vc-install'
@@ -21288,7 +21288,7 @@
symmetry with 'package-install'.
(package-checkout): Follow the previous rename.
-2022-10-09 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Try to speed up extended command shorthand computation
@@ -21299,7 +21299,7 @@
up complicated cases while the slowdown of simple cases is still
accetable.
-2022-10-09 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Set the PARENTS argument for language environments
@@ -21308,20 +21308,20 @@
* lisp/language/misc-lang.el
(set-language-info-alist): Add PARENTS argument. (Bug#58376)
-2022-10-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make Fsqlite_select error data better
* src/sqlite.c (Fsqlite_select): Add more the more specific error
text to the error data (bug#58363).
-2022-10-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up Fsqlite_select slightly
* src/sqlite.c (Fsqlite_select): Clean up code slightly.
-2022-10-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix user time handling bug on GNOME Shell and Metacity
@@ -21333,7 +21333,7 @@
(handle_one_xevent): Avoid setting the user time property on
LeaveNotify and XI_Leave events.
-2022-10-09 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Use `interval_tree_inherit_offset`
@@ -21347,13 +21347,13 @@
(recurse_check_tree): Don't check RB invariants.
(itree_limits_are_stable): Delete function (subsumed by `check_tree`).
-2022-10-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
32ef7550ed ; Improve documentation of 'file-in-directory-p'
-2022-10-08 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Debug check overlay tree invariants
@@ -21363,13 +21363,13 @@
(interval_tree_remove): ditto.
(interval_tree_insert_fix): ditto.
-2022-10-08 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Comment change: explain inheriting "dirty" offsets
handles inheriting offsets from dirty nodes.
-2022-10-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/url/url-file.el (url-file): Don't bind `coding-system-for-read`
@@ -21378,7 +21378,7 @@
the code (in `url-file-asynch-callback`) is already careful to
use `insert-file-contents-literally`.
-2022-10-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Restrict string-lessp vectorisation to safe architectures
@@ -21386,25 +21386,25 @@
(Fstring_lessp): Only use word operations where safe, because string
data from purespace may be unaligned.
-2022-10-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Better Lisp_String comments
* src/lisp.h (struct Lisp_String): Comments improved.
* src/pdumper.c (dump_string): Update hash (comment change only).
-2022-10-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improved format string error message (bug#58168)
* src/editfns.c (styled_format): Better message when the conversion
char is non-ASCII from a unibyte format string.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/emacs-lisp/package-vc.el: Autoload 'package-vc-prepare-patch'
-2022-10-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
package.el: Understand a few more variations in tarball formats
@@ -21416,7 +21416,7 @@
* test/lisp/emacs-lisp/package-resources/ustar-withsub-0.1.tar:
* test/lisp/emacs-lisp/package-resources/v7-withsub-0.1.tar: New files.
-2022-10-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make sqlite-select signal errors when there's an error
@@ -21424,7 +21424,7 @@
(Fsqlite_select): Signal an error when there's an error preparing
the statement.
-2022-10-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix vtable-insert-object line insertion
@@ -21432,35 +21432,35 @@
correct ellipsis values (bug#58370).
(vtable--insert-line): Don't bug out on missing optional arguments.
-2022-10-08 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Fix misleading prompt in vc-git-create-tag
* lisp/vc/vc-git.el (vc-git-create-tag): Actually pass the DEFAULT
argument to vc-read-revision (bug#58378).
-2022-10-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in etc/TODO
-2022-10-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* etc/TODO (Wishlist items): Add libarchive(3) integration.
-2022-10-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention seq-keep in shortdoc
* lisp/emacs-lisp/shortdoc.el (sequence): Mention seq-keep.
-2022-10-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix docstring of eglot-list-connections-mode
* eglot.el (eglot-list-connections-mode): Fix mistaken reference
to similar non-Eglot code.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Clone packages into a separate directory
@@ -21472,11 +21472,11 @@
(package-delete): Invoke 'package--delete-directory' with an
additional argument.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/emacs-lisp/package.el (package-report-bug): Use 'file-in-directory-p'
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Extend package-vc heuristics to multiple source forges
@@ -21485,14 +21485,14 @@
(package-vc-heusitic-alist): Add support for multiple VC backends.
(package-vc-sourced-packages-list): Use 'package-vc-heusitic-alist'
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Use 'package-vc-p' in package-vc.el
* package-vc.el (package-vc-commit): Use it instead of 'eq'.
(package-vc-version): Use it instead of 'eq'.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add a package-vc command for submitting ptches
@@ -21502,7 +21502,7 @@
* lisp/emacs-lisp/package.el (package-maintainers): Add an optional
NO-ERROR argument.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Extract package maintainer guessing code into a separate function
@@ -21510,7 +21510,7 @@
(package-contact-maintainer): Use it.
(package-report-bug): Use it.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add an inline procedure for checking for source packages
@@ -21525,11 +21525,11 @@
(package--remove-hidden): Use it.
(package-menu--print-info-simple): Use it.
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge branch 'master' into feature/package+vc
-2022-10-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add a VC command to prepare patches
@@ -21549,7 +21549,7 @@
(vc-default-prepare-patch): Add a default implementation.
(vc-prepare-patch): Add command. (Bug#57400)
-2022-10-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop passing CurrentTime to SetInputFocus
@@ -21558,7 +21558,7 @@
correctly.
(x_focus_frame): Do not perform actions prohibited by the ICCCM.
-2022-10-08 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Coptic script (bug#58330)
@@ -21571,13 +21571,13 @@
* etc/HELLO: Add a Coptic greeting.
* etc/NEWS: Announce the new language environment.
-2022-10-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
cfb1e21844 Update name of hs-mouse-toggle-hiding in Emacs manual
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree: Try and detect non-local exits during itree iterations
@@ -21585,13 +21585,13 @@
* src/eval.c (signal_or_quit): Use it.
* src/itree.h (itree_busy_p): Declare it.
-2022-10-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in bibtex.el
* lisp/textmodes/bibtex.el (bibtex-mode-map): Prefer defvar-keymap.
-2022-10-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix setting the wallpaper with "swaybg" and "wbg"
@@ -21611,7 +21611,7 @@
(wallpaper-set/calls-init-action)
(wallpaper-set/calls-wallpaper-set-function): New tests.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
subr.el (inhibit-point-motion-hooks): Mark it as obsolete
@@ -21628,7 +21628,7 @@
obsolete in the docstring any more.
* lisp/simple.el (line-move-1, line-move-finish): Silence warnings.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/isearch.el (isearch-search): Don't bind `inhibit-point-motion-hooks`
@@ -21636,7 +21636,7 @@
"because we might have to search inside invisible and intangible text".
So it's been redundant since Emacs-25 changed the default to t.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
verilog-mode.el: Don't bind `inhibit-point-motion-hooks`
@@ -21649,7 +21649,7 @@
binding `before/after-change-functions` as well while we're at it,
since `inhibit-modification-hooks` already covers it in Emacs≥25.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(nxml-with-invisible-motion): Delete macro.
@@ -21661,11 +21661,11 @@
* lisp/nxml/rng-valid.el (rng-do-some-validation):
* lisp/nxml/rng-nxml.el (rng-set-state-after): Don't use it.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/pcomplete.el (pcomplete-arg): Simplify
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(line-move-1): Obey `inhibit-point-motion-hooks`
@@ -21686,14 +21686,14 @@
* lisp/simple.el (line-move-1): Obey `inhibit-point-motion-hooks`
(line-move-finish): New optional arg `not-ipmh`.
-2022-10-07 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Use a bool instead of a bitfield
* src/itree.c (struct interval_generator): use a bool instead of a
bitfield, since space is not an issue.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
org.el: Improve bindings of `inhibit-*` vars
@@ -21706,7 +21706,7 @@
`inhibit-modification-hooks` around code which doesn't modify the
buffer anyway.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Remove aliases of `with-silent-modifications`
@@ -21737,7 +21737,7 @@
* lisp/progmodes/hideshow.el (hs-life-goes-on): Don't
let-bind `inhibit-point-motion-hooks`.
-2022-10-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Remove redundant let-bindings of `inhibit-point-motion-hooks`
@@ -21795,21 +21795,21 @@
* lisp/textmodes/table.el (table--point-entered/left-cell-function):
Remove let-binding of `inhibit-point-motion-hooks`.
-2022-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update name of hs-mouse-toggle-hiding in Emacs manual
* doc/emacs/programs.texi (Hideshow): Update the name of
hs-mouse-toggle-hiding (bug#58331).
-2022-10-07 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Handle successive mime sections in decoding.
rmailsum.el (rmail-epa-decode):Handle blank lines at start.
Handle both ending delim and another starting delim.
-2022-10-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up string-lessp for multibyte strings
@@ -21822,14 +21822,14 @@
* src/fns.c (Fstring_lessp): Quickly skip the common prefix by
comparing words.
-2022-10-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Clearer byte-compiler arity warnings (bug#58319)
* lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-signature-string):
Replace '3+' and '3-4' with '3 or more' and '3 or 4', respectively.
-2022-10-07 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
comint-fontify-input: Don't fontify output as input, different approach
@@ -21837,31 +21837,31 @@
with field=output before inserting it into buffer to prevent
comint-fontify-input from fontifying it (bug#58169).
-2022-10-07 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Revert "comint-fl: Prevent fontification of output as input"
This reverts commit 90744ff0be581b69cedea1194b7e78265bdb67a4.
-2022-10-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/dired.el (dired-make-relative): Make change less aggressive.
-2022-10-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle IM server disconnects during preedit
* src/xterm.c (x_maybe_clear_preedit): New function.
(xim_destroy_callback): Call that function.
-2022-10-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve package-check-signature docstring
* lisp/emacs-lisp/package.el (package-check-signature): Improve
docstring.
-2022-10-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add a :toggle option for tree-sitter font-lock
@@ -21877,25 +21877,25 @@
easier to understand.
(treesit-font-lock-fontify-region): Handle :toggle.
-2022-10-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
5f8849425c Fix typo in `(emacs) Lisp Doc'
f0a06364fb Fix references to 'default-indent-new-line'
-2022-10-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* src/treesit.c (syms_of_treesit): Add Streesit_language_version.
-2022-10-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Better support for remote file names in dired
* lisp/dired.el (dired-make-relative): Expand DIR anyway, because
it could also be an abbreviated remote file name. (Bug#58300)
-2022-10-06 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add a generic bug reporting command for packages
@@ -21903,7 +21903,7 @@
'package-report-bug'.
(package-report-bug): Add new command.
-2022-10-06 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/vc/vc-svn.el (vc-svn-clone): Add 'clone' implementation
@@ -21913,11 +21913,11 @@
* lisp/vc/vc-hg.el (vc-hg-clone): Add 'clone' implementation
-2022-10-06 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Merge branch 'master' into feature/tree-sitter
-2022-10-06 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Pass correct environment name to `reftex-label'
@@ -21925,11 +21925,11 @@
"figure" to `reftex-label' when inserting a figure float.
(bug#58329)
-2022-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
etc/NEWS: Fix typo in seq-keep entry.
-2022-10-06 Justus Winter <justus@sequoia-pgp.org>
+2023-04-15 Justus Winter <justus@sequoia-pgp.org>
Replace aging OpenPGP artifacts in gnus' mml-sec tests.
@@ -21940,7 +21940,7 @@
problem once the old algorithms are rejected by contemporary
implementations (bug#58301).
-2022-10-06 Justus Winter <justus@sequoia-pgp.org>
+2023-04-15 Justus Winter <justus@sequoia-pgp.org>
Replace aging OpenPGP artifacts in the package-resources tests.
@@ -21953,7 +21953,7 @@
problem once the old algorithms are rejected by contemporary
implementations.
-2022-10-06 Justus Winter <justus@sequoia-pgp.org>
+2023-04-15 Justus Winter <justus@sequoia-pgp.org>
Replace aging OpenPGP artifacts in the epg tests.
@@ -21966,7 +21966,7 @@
problem once the old algorithms are rejected by contemporary
implementations.
-2022-10-06 Justus Winter <justus@sequoia-pgp.org>
+2023-04-15 Justus Winter <justus@sequoia-pgp.org>
Fix epg's reliance on an implicit GnuPG command.
@@ -21974,7 +21974,7 @@
signatures. Make that operation explicit. Happily, this aligns how
gpg and gpgsm is invoked, so it actually makes the code simpler.
-2022-10-06 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix BSD battery mode over TRAMP (bug#58307)
@@ -21983,7 +21983,7 @@
(battery-bsd-apm): Use it instead of `shell-command-to-string'
(bug#58307).
-2022-10-06 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Fix calling `package-reinstall' just after quick initialization.
@@ -21993,20 +21993,20 @@
`package-reinstall' as the first thing done after package "quick
init" (Bug#53527).
-2022-10-06 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Add missing staticpro (bug#58327)
* src/window.c (init_window_once): staticpro old_selected_window.
-2022-10-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix typo in `(emacs) Lisp Doc'
* doc/emacs/programs.texi (Lisp Doc): Fix reference to
'eldoc-echo-area-display-truncation-message'. (Bug#58324)
-2022-10-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix references to 'default-indent-new-line'
@@ -22014,15 +22014,15 @@
(Multi-Line Comments): Fix references to
'default-indent-new-line'. (Bug#58325)
-2022-10-06 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Inhibit GC in probably_quit (bug#58042)
-2022-10-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* etc/NEWS: Document how to continue using 'linum'. (Bug#58220)
-2022-10-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Get rid of the trick using null->parent
@@ -22033,11 +22033,11 @@
(interval_tree_remove): Manually keep track of the `broken` node's
parent to pass it to `interval_tree_remove_fix`.
-2022-10-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/itree.c (interval_tree_remove_fix): Move before first use
-2022-10-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to IM locale handling
@@ -22045,7 +22045,7 @@
* src/xterm.c (x_term_init): If the X library doesn't support
the current locale, don't set up input methods.
-2022-10-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Fix corner case errors in offsets
@@ -22073,7 +22073,7 @@
`otick` is uptodate. Skip the unneeded increments when the offset is 0.
(interval_tree_insert_fix): Add sanity check that we indeed have 2 reds.
-2022-10-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix nsmenu crash when exiting popup dialog
@@ -22081,15 +22081,15 @@
(ns_popup_dialog): Call discard_menu_items after
unuse_menu_items. (bug#58296)
-2022-10-05 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* etc/NEWS: Add instructions for replacing 'linum'. (Bug#58220)
-2022-10-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Merge branch 'master' into feature/tree-sitter
-2022-10-05 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter admin notes
@@ -22118,7 +22118,7 @@
* admin/notes/tree-sitter/html-manual/build-manual.sh: New file.
* admin/notes/tree-sitter/html-manual/manual.css: New file.
-2022-10-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Fix incomplete update of `limit`s in corner cases
@@ -22145,7 +22145,7 @@
* src/itree.h (interval_tree_contains): Remove declaration.
-2022-10-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make eglot-code-actions usable non-interactively
@@ -22154,7 +22154,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1070
-2022-10-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add half-baked m-x eglot-list-connections
@@ -22165,13 +22165,13 @@
* eglot.el (eglot-list-connections-mode, eglot-list-connections):
New mode and function.
-2022-10-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (repeat-exit): Add autoload cookie.
* etc/tutorials/TUTORIAL.uk: Fix typos.
-2022-10-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Clarify how the sentinel is used
@@ -22183,21 +22183,21 @@
(interval_tree_remove): Do it explicitly before the call in those two
places where it can happen.
-2022-10-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp manual
* doc/misc/tramp.texi (Inline methods): Method "kubernetes" does
not support user names.
-2022-10-05 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
New command 'world-clock-copy-time-as-kill'
* lisp/time.el (world-clock-copy-time-as-kill): New command.
(world-clock-mode-map): Bind above new command to "w".
-2022-10-05 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add face help-key-binding in help-char echo
@@ -22205,7 +22205,7 @@
"?" key in 'help-char' echo. (Bug#57906)
(syms_of_keyboard) <Qhelp_key_binding>: New DEFSYM.
-2022-10-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Remove some unnecessary `tree` arguments
@@ -22214,7 +22214,7 @@
(interval_node_set_region, interval_tree_remove)
(interval_tree_insert_gap, interval_tree_delete_gap): Adjust callers.
-2022-10-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug in "macintization" of x_draw_glyph_string
@@ -22222,7 +22222,7 @@
drawing code ommitted during "macintization" to convert the X function
into NS code. Reported by Qiantan Hong <qthong@stanford.edu>.
-2022-10-04 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Add tramp-kubernetes integration
@@ -22236,17 +22236,17 @@
(tramp-kubernetes-method): New defconst.
(tramp-kubernetes--completion-function): New function.
-2022-10-04 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Rename lisp/net/tramp-docker.el to lisp/net/tramp-container.el
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add :override flag for python tree-sitter font-lock settings
* lisp/progmodes/python.el (python--treesit-settings): Add :override.
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add :override flag for tree-sitter font-lock
@@ -22256,7 +22256,7 @@
(treesit-font-lock-fontify-region): Handle :override. Also set
inhibit-point-motion-hooks to t.
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix python tree-sitter font-lock
@@ -22265,14 +22265,14 @@
* lisp/progmodes/python.el (python--treesit-keywords): Add operators.
(python--treesit-settings): Add lhs attribute.
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-language-version
* doc/lispref/parsing.texi (Language Definitions): Update manual.
* src/treesit.c (Ftreesit_language_version): New function
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve documentation of tree-sitter search functions
@@ -22282,7 +22282,7 @@
(treesit-induce-sparse-tree): Mention case-insensitivity.
* lisp/treesit.el (treesit-simple-indent): Mention case-insensitivity.
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Ignore some capture name in treesit-font-lock-fontify-region
@@ -22291,7 +22291,7 @@
that are not face nor function.
(treesit-font-lock-rules): Update docstring.
-2022-10-04 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove treesit-query-in
@@ -22302,7 +22302,7 @@
* src/treesit.c (Ftreesit_query_capture): Accept parser and language
symbol as NODE.
-2022-10-04 Vibhav Pant <vibhavp@gmail.com>
+2023-04-15 Vibhav Pant <vibhavp@gmail.com>
Add comment explaining gcc_jit_context_new_bitcast usage.
@@ -22310,7 +22310,7 @@
comp.c: Add declaration for gcc_jit_type_is_pointer.
-2022-10-04 Vibhav Pant <vibhavp@gmail.com>
+2023-04-15 Vibhav Pant <vibhavp@gmail.com>
src/comp.c: Use libgccjit's bitcast API for type coercion, when available.
@@ -22321,25 +22321,25 @@
* (emit_coerce): Use gcc_jit_context_new_bitcast to coerce types, when
available.
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Put all seq.el news into one section
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add 'seq-keep'
* doc/lispref/sequences.texi (Sequence Functions): Document it.
* lisp/emacs-lisp/seq.el (seq-keep): New function (bug#58278).
-2022-10-04 Brian Cully <bjc@kublai.com>
+2023-04-15 Brian Cully <bjc@kublai.com>
Add method description for podman in Tramp
* doc/misc/tramp.texi (Inline methods): Adapt docker method.
Describe podman method.
-2022-10-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rename "eglot -> eglot" in docstrings
@@ -22350,7 +22350,7 @@
(eglot--mode-line-format, eglot-xref-backend)
(eglot-imenu): Rename "EGLOT" -> "Eglot"
-2022-10-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -22359,13 +22359,13 @@
# Conflicts:
# src/emacs.c
-2022-10-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
78c262e1c2 ; * lisp/progmodes/glasses.el (glasses-face): Expand the d...
-2022-10-04 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: A new operator and some new keywords for C++20
@@ -22374,11 +22374,11 @@
(c-primitive-type-kwds): Add char8_t for C++.
(c-decl-hangon-kwds, c-paren-nontype-kwds): Add alignas for C++.
-2022-10-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* etc/NEWS: Mention new Tramp method "podman". Fix typos.
-2022-10-04 Brian Cully <bjc@kublai.com>
+2023-04-15 Brian Cully <bjc@kublai.com>
Provide Podman containers on their own method in Tramp
@@ -22388,12 +22388,12 @@
(top): Update comments to refer to Docker-alike where necessary.
Add description for how to use the podman method.
-2022-10-04 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/emacs.c (load_pdump): Propery handle case when executable
wasn't found.
-2022-10-04 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Optimize c-fontify-new-found-type and amend a debug spec
@@ -22404,7 +22404,7 @@
* lisp/progmodes/cc-defs.el (cc-eval-when-compile): Amend the debug spec from
t to (&rest body), in line with the fix to bug #16184.
-2022-10-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Improve manual display tests of undisplayable chars (bug#58168)"
@@ -22412,11 +22412,11 @@
Please don't rush installing changes that are still being
discussed.
-2022-10-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/subr.el (y-or-n-p): Use substitute-command-keys.
-2022-10-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Shorten several long names
@@ -22434,7 +22434,7 @@
* doc/emacs/dired.texi (Image-Dired): Update documentation for the
above changes, and improve indexing.
-2022-10-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improve manual display tests of undisplayable chars (bug#58168)
@@ -22449,14 +22449,14 @@
(test-redisplay-5): Fix likely typo (#x3fffc) of raw byte value.
(test-redisplay-6): New.
-2022-10-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Fix arrow keys in thumbs buffer
* lisp/image/image-dired.el (image-dired-thumbnail-mode-map): Also
remap 'left-char' and 'right-char'.
-2022-10-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix recent changes for Ukrainian language
@@ -22464,7 +22464,7 @@
* lisp/language/cyrillic.el ("Ukrainian"): Fix greetings and
remove redundant Ukrainian entry in cyrillic.el.
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make cropping of images work in message-mode
@@ -22473,7 +22473,7 @@
(message--image-part-string): ... here for reuse.
(message--update-image-crop): Update the cropped data.
-2022-10-04 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Make c-forward-declarator move over a suffix after parens, e.g. const
@@ -22489,7 +22489,7 @@
* lisp/progmodes/cc-mode.el (c-fl-decl-end): Handle being in a multi-line
string. Move forward over token after declarator.
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move image commands to the 'i' sub map
@@ -22500,14 +22500,14 @@
repeatable.
(image--delayed-change-size): New function.
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the arguments in tags--compat-initialize
* lisp/progmodes/etags.el (tags--compat-initialize): Fix argument
order -- swap the last two arguments (bug#58272).
-2022-10-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update Ukrainian language info alist
@@ -22515,7 +22515,7 @@
Ukraine" with "hello". See
www.gnu.org/prep/maintain/html_node/Other-Politics.html.
-2022-10-04 Denys Nykula <vegan@libre.net.ua>
+2023-04-15 Denys Nykula <vegan@libre.net.ua>
Add Ukrainian tutorial
@@ -22526,25 +22526,25 @@
* etc/NEWS:
* etc/tutorials/TUTORIAL.translators: Attribute my work (bug#55250).
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix NEWS item about obsoleting the `eq' gv
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `eq' obsolete as a generalized variable
* lisp/emacs-lisp/gv.el (eq): Make obsolete as a generalized
variable.
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention cond/if as generalized variables in the manual
* doc/lispref/variables.texi (Setting Generalized Variables):
Mention cond and if (bug#52290).
-2022-10-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in STRING_CHAR
@@ -22553,7 +22553,7 @@
unibyte strings. This avoids assertion violation in
'string_char_and_length'.
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make loaddefs-generate more resilient
@@ -22561,25 +22561,25 @@
out when there's an existing loaddefs file that's not formatted
properly (bug#58280).
-2022-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't bug out in advice--make-docstring when there's not doc string
* lisp/emacs-lisp/nadvice.el (advice--make-docstring): Don't bug
out on functions with no documentation (bug#58284).
-2022-10-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid errors in interactive calls of 'calendar-goto-day-of-year'
* lisp/calendar/cal-move.el (calendar-goto-day-of-year): Fix the
default value of DAY; doc fix. (Bug#58283)
-2022-10-04 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* etc/NEWS: Clarify confusing Image-Dired entry. (Bug#58279)
-2022-10-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix deiconification handling on FVWM and possibly other window managers
@@ -22590,7 +22590,7 @@
messages, and use them for signalling deiconification.
(bug#58164)
-2022-10-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -22602,14 +22602,14 @@
# Conflicts:
# src/emacs.c
-2022-10-03 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (repeat-exit-key): Replace type 'key-sequence' with 'key'.
(repeat-post-hook, repeat-echo-message-string): Add backward-compatibility
code for repeat-exit-key to keep support for 'key-sequence' type (bug#55986).
-2022-10-03 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (repeat-exit): New command.
@@ -22619,24 +22619,24 @@
Also use repeat--exit.
(repeat--exit): New internal function.
-2022-10-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/textmodes/tex-mode.el (tex--redirect-to-submode): Fix last change
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve messaging in ecomplete-remove
* lisp/ecomplete.el (ecomplete-remove): Make messaging better.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in last help-fns--insert-menu-bindings change
* lisp/help-fns.el (help-fns--insert-menu-bindings): Fix typo in
last change.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve help-fns--insert-menu-bindings formatting
@@ -22644,7 +22644,7 @@
work better for menus that turn out to not be reachable after all
-- i.e., don't insert " and " before the heading in certain cases.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add commands to edit/remove ecomplete entries
@@ -22653,7 +22653,7 @@
(ecomplete--prompt-type): New functions.
(ecomplete-edit, ecomplete-remove): New commands.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename to inhibit-automatic-native-compilation
@@ -22668,7 +22668,7 @@
* doc/lispref/compile.texi (Native-Compilation Variables): Rename
inhibit-native-compilation to inhibit-automatic-native-compilation.
-2022-10-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
files.el (major-mode-remap-alist): New custom var (bug#58075)
@@ -22684,7 +22684,7 @@
* lisp/textmodes/tex-mode.el (tex--guess-mode): Simplify.
(tex--redirect-to-submode): Obey `major-mode-remap-alist`.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new variable 'inhibit-native-compilation'
@@ -22706,7 +22706,7 @@
inhibit-native-compilation.
(maybe_defer_native_compilation): Use it.
-2022-10-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding systems used for X input methods
@@ -22732,7 +22732,7 @@
* src/xterm.h (struct x_display_info): New field `xim_coding'.
(FRAME_X_XIM_CODING): New macro.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add --with-native-compilation=aot configuration option
@@ -22741,7 +22741,7 @@
* lisp/Makefile.in: Use the setting from configure.
-2022-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "keymap.el: Ease up support for non-`kbd` formats."
@@ -22752,7 +22752,7 @@
interface with easy-to-understand semantics that
give good feedback on valid/invalid key sequences.
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve auto-insert-mode documentation
@@ -22760,21 +22760,21 @@
(auto-insert-directory): Doc fix; the directory does not have to end
in slash.
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix documentation of 'TAB' in cc-mode
* doc/emacs/programs.texi (C Indent): Fix documentation of 'TAB'
in cc-mode. (Bug#58258)
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix 'org-export-dispatch' command name in manual
* doc/emacs/text.texi (Org Authoring): Fix 'org-export-dispatch'
command name. (Bug#58260)
-2022-10-02 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port TZ settings to POSIX
@@ -22784,28 +22784,28 @@
Use the POSIX standard TZ=UTC0 rather than the GNU extension
TZ=UTC to set the time zone to UTC.
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Actually delete markers in dired-do-flagged-delete
* lisp/dired.el (dired-do-flagged-delete): Actually delete
markers. (Bug#58256)
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix more overly long docstrings in eieio
* lisp/emacs-lisp/eieio.el (defclass): Fix more overly long
docstrings. (Bug#58252)
-2022-10-02 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Don’t truncate seccomp-filter diagnostic
* lib-src/seccomp-filter.c (fail): Do not truncate diagnostic
arbitrarily to 1000 bytes when ERROR is nonzero.
-2022-10-02 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer static_assert to verify in seccomp-filter
@@ -22816,7 +22816,7 @@
* lib-src/seccomp-filter.c: Do not include verify.h.
Prefer static_assert to verify.
-2022-10-02 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Suppress irritating/misleading message in make bootstrap about old .elc files
@@ -22831,18 +22831,18 @@
match, don't output the message about the source file being newer than the
file being loaded.
-2022-10-02 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* .gitignore: Add lib/assert.h (Bug#58254).
-2022-10-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc-git.el (vc-git-checkin): Add more checks for vc-git-patch-string
Check that vc-git-patch-string contains the same changes that already exists
in the staged area when files were added/removed by vc commands (bug#52349).
-2022-10-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
In vc-git-log-incoming use the repository in the command "fetch" (bug#50340)
@@ -22856,14 +22856,14 @@
vc-log-incoming and vc-log-outgoing, use the term "remote location"
instead of "repository".
-2022-10-02 Peter Münster <pm@a16n.net>
+2023-04-15 Peter Münster <pm@a16n.net>
Delete thumbs in image-dired-do-flagged-delete after confirmation
* lisp/image/image-dired.el (image-dired-do-flagged-delete): Remove
thumbnails only after confirming deletion of the files. (Bug#58255)
-2022-10-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (repeat<defgroup>): New customization group.
@@ -22872,7 +22872,7 @@
(repeat-check-key, repeat-echo-function, repeat-mode):
Change group to 'repeat'.
-2022-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
keymap.el: Ease up support for non-`kbd` formats.
@@ -22888,7 +22888,7 @@
* lisp/outline.el (outline-minor-mode): Use it.
-2022-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree: Use a single iterator object
@@ -22915,7 +22915,7 @@
(interval_tree_iter_start): Use the global `iter`.
(interval_generator_create): Make it work with a NULL argument.
-2022-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
mark_overlays: Use the normal ITREE_FOREACH
@@ -22927,11 +22927,11 @@
* src/alloc.c (mark_overlays): Delete function.
(mark_buffer): Use ITREE_FOREACH.
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/files.el (after-find-file): Use substitute-command-keys.
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix overly wide docstrings generated by eieio
@@ -22939,7 +22939,7 @@
(eieio-make-child-predicate, eieio-defclass-internal): Don't generate
overly wide docstrings. (Bug#58252)
-2022-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Remove `tree` field from iterator
@@ -22955,14 +22955,14 @@
(interval_tree_inherit_offset): Prefer parent==NULL rather than
node==root to avoid accessing the tree object.
-2022-10-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Kill URL buffer in url-insert-file-contents-literally
* lisp/url/url-handlers.el (url-insert-file-contents-literally):
Kill the URL buffer after use.
-2022-10-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix coding system problems in gnus-read-ephemeral-bug-group
@@ -22973,7 +22973,7 @@
* lisp/url/url-handlers.el (url-insert-file-literally): New function.
(url-insert): Allow forcing no-decode.
-2022-10-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Decrease use of the word "Emacsen" in Tramp docs
@@ -22983,31 +22983,31 @@
* lisp/net/tramp.el: Don't say "Emacsen" when a different wording
would be clearer.
-2022-10-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
perform-replace doc string fix
* lisp/replace.el (perform-replace): Fix doc string (bug#58177).
-2022-10-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix point movement when indenting in sieve-mode
* lisp/net/sieve-mode.el (sieve-mode-indent-function): Fix point
movement when point is at the start of the line (bug#58202).
-2022-10-02 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/emacs.c (load_pdump): Fix use of xpalloc.
-2022-10-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violation in 'xpalloc'
* src/emacs.c (load_pdump): Ensure the 3rd argument of xpalloc is
always positive. (Bug#58232)
-2022-10-02 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Gothic script (bug#58194)
@@ -23020,11 +23020,11 @@
* etc/HELLO: Add Gothic greetings.
* etc/NEWS: Announce the new language environment.
-2022-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge remote-tracking branch 'origin/feature/noverlay' into noverlay
-2022-10-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
New ITREE_FOREACH macro
@@ -23052,7 +23052,7 @@
(buffer_overlay_iter_finish, buffer_overlay_iter_narrow):
Delete declarations.
-2022-10-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only rely on EWMH window activation if possible
@@ -23062,7 +23062,7 @@
_NET_ACTIVE_WINDOW, just use it; anything else may confuse the
window manager.
-2022-10-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Revert "Decrease use of the word "Emacsen" in docs"
@@ -23070,7 +23070,7 @@
Ref. https://lists.gnu.org/r/emacs-devel/2022-10/msg00016.html
-2022-10-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp cleanup
@@ -23083,7 +23083,7 @@
(tramp-get-remote-tmpdir): Revert previous patch, it isn't needed
anymore.
-2022-10-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update publicsuffix.txt from upstream
@@ -23091,7 +23091,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-09-27 20:39:13 UTC.
-2022-10-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use a version for the Tramp cache
@@ -23102,7 +23102,7 @@
* lisp/net/tramp-cmds.el (tramp-cleanup-all-connections):
Re-initialize the cache version.
-2022-10-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Decrease use of the word "Emacsen" in docs
@@ -23130,7 +23130,7 @@
* lisp/shadowfile.el:
* lisp/winner.el: Don't use the word "Emacsen".
-2022-10-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -23140,28 +23140,28 @@
# Conflicts:
# etc/NEWS
-2022-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make mailcap--regexp-quote-type more resilient
* lisp/net/mailcap.el (mailcap--regexp-quote-type): Make more
resilient in the presence of junk.
-2022-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make "git pull" output slightly prettier
* lisp/vc/vc-git.el (vc-git--pushpull): Translate ^M in output
(bug#58199).
-2022-10-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix vertical motion in some rare bidi situations
* src/xdisp.c (move_it_by_lines): Handle the case where we
didn't move vertically at all.
-2022-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make mailcap consistent about regexp-quoting minors
@@ -23173,7 +23173,7 @@
application/vnd\.ms-excel and application/vnd.ms-excel (etc),
making prompting confusing.
-2022-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix url-retrieve-synchronously on very short timeouts
@@ -23181,14 +23181,14 @@
process buffer unless we made one (bug#58218). This makes HTTP
free connection marking work on premature timeouts.
-2022-10-01 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Define ansi-osc customization group
* lisp/ansi-osc.el (ansi-osc): Define ansi-osc customization group
(ansi-osc-for-compilation-buffer): Fix wrong group
-2022-10-01 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Rename osc.el to ansi-osc.el (bug#58200)
@@ -23197,7 +23197,7 @@
* test/lisp/osc-tests.el: Move from here...
* test/lisp/ansi-osc-tests.el: ...to here.
-2022-10-01 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update to Modus themes stable version 2.7.0
@@ -23220,25 +23220,25 @@
Release notes: <https://protesilaos.com/codelog/2022-10-01-modus-themes-2-7-0/>.
-2022-10-01 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Make it compile with ITREE_DEBUG defined
* src/buffer.c (make_lispy_interval_node): Use make_fixnum.
(overlay_tree): Use ITREE_NULL.
-2022-10-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'C-a' and 'C-e' under 'visual-line-mode'
* src/xdisp.c (move_it_vertically_backward): Fix last change.
(Bug#58210)
-2022-09-30 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.c: Improve division between tree and iterator
@@ -23266,7 +23266,7 @@
`file`, and `line`, moved to `interval_generator`.
(interval_generator_narrow): Replace `interval_tree_iter_narrow`.
-2022-09-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change tree-sitter indent anchor preset 'prev-line'
@@ -23274,21 +23274,21 @@
* lisp/treesit.el (treesit-simple-indent-presets): Change prev-line to
mean bol of prev-line.
-2022-09-30 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter manuals
* doc/lispref/modes.texi: Fix typos, reword, etc.
* doc/lispref/parsing.texi: Fix typos, reword, etc.
-2022-09-30 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix connection property incompatibility in Tramp
* lisp/net/tramp.el (tramp-get-remote-tmpdir): Remove obsolete
connection property "tmpdir". (Bug#57800)
-2022-09-30 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Rename comint-fl-* to comint-fontify-input-* and mention it in NEWS
@@ -23313,7 +23313,7 @@
* etc/NEWS: Mention the new modes and how to disable or enable
them (bug#58169).
-2022-09-30 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
comint-fl: Prevent fontification of output as input
@@ -23321,7 +23321,7 @@
fontification of inserted process output before marking it with the
'output' filed property (bug#58169).
-2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further with-locale-environment refresh fixes
@@ -23330,7 +23330,7 @@
refresh.
(set-locale-environment): Inhibit refresh in more paths (bug#58193).
-2022-09-30 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Add vc-edit-next-command
@@ -23342,21 +23342,21 @@
* etc/NEWS:
* doc/emacs/vc1-xtra.texi (Editing Shell Commands): Document it.
-2022-09-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Rectify string= documentation
* doc/lispref/strings.texi (Text Comparison): Describe the current
behaviour since about 20 years back.
-2022-09-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Strengthen string-lessp tests
* test/src/fns-tests.el (fns-tests--string-lessp-cases)
(fns-tests-string-lessp): Check more cases, and in a more robust way.
-2022-09-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up string-lessp further
@@ -23364,7 +23364,7 @@
multibyte strings as well. Specialise loops on argument
multibyteness.
-2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't refresh the frame in with-locale-environment
@@ -23373,14 +23373,14 @@
(set-locale-environment): Allow inhibiting the refresh.
* lisp/international/mule.el (set-terminal-coding-system): Ditto.
-2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make gnus-user-agent less verbose
* lisp/gnus/gnus.el (gnus-user-agent): Don't include the Emacs/OS
version for privacy reasons (bug#58171).
-2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the `dictionary' parent defgroup
@@ -23388,7 +23388,7 @@
doesn't exist, so put it in the same parent group that `ispell'
uses (bug#58178).
-2022-09-30 Jose A. Ortega Ruiz <jao@gnu.org>
+2023-04-15 Jose A. Ortega Ruiz <jao@gnu.org>
docview: fixes for imenu generation
@@ -23400,14 +23400,14 @@
(doc-view--imenu-subtree): Fix for nested imenus (bug introduced in
commit fe002cc8ce) (bug#58180).
-2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix rename-visited-file when renaming to a directory name
* lisp/files.el (rename-visited-file): Allow renaming to a
directory file name (bug#58182).
-2022-09-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve message-sendmail-f-is-evil documentation
@@ -23417,7 +23417,7 @@
* lisp/mail/feedmail.el (feedmail-sendmail-f-doesnt-sell-me-out):
Refer to message-sendmail-f-is-evil (bug#58185).
-2022-09-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix some issues with vertical-motion in bidi-reordered text
@@ -23427,7 +23427,7 @@
* src/xdisp.c (move_it_vertically_backward): Adjust NLINES to
compensate for its increasing when DY == 0.
-2022-09-30 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Remove the per-tree null node
@@ -23440,7 +23440,7 @@
* src/itree.c: Use ITREE_NULL insteads of a tree's null.
* src/pdumper.c (dump_buffer): Use ITREE_NULL.
-2022-09-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix calculation of frame times when X server time overflows
@@ -23449,7 +23449,7 @@
the monotonic time is not the server time due to the latter
overflowing.
-2022-09-30 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Toto script (bug#58181)
@@ -23461,14 +23461,14 @@
* etc/NEWS: Announce the new language environment.
-2022-09-30 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
64e8cc14b5 ; * lisp/image.el (create-image): Fix last change in doc s...
f3e3632394 Update some Gnus documentation in the Emacs manual
-2022-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree: Remove the `visited` flag from the tree nodes
@@ -23488,7 +23488,7 @@
* src/itree.h (struct interval_node): Remove `visited` field.
* src/pdumper.c (dump_interval_node): Adjust accordingly.
-2022-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
free_buffer_overlays: Move nearer to its sole caller
@@ -23498,11 +23498,11 @@
* src/itree.c (interval_tree_iter_narrow, interval_tree_iter_finish)
(interval_tree_iter_next): Prefer `eassert`.
-2022-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/itree.c (interval_tree_iter_start): Improve error message
-2022-09-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix loading wallpaper.el on MS-Windows
@@ -23511,7 +23511,7 @@
'wallpaper--find-setter' returns nil, e.g. on MS-Windows.
(Bug#58167)
-2022-09-29 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Refactor c-forward-delarator and callers
@@ -23541,7 +23541,7 @@
c-forward-declarator which now moves over arglists. Amend better to handle
certain syntactically invalid constructs in C++.
-2022-09-29 Peter Münster <pm@a16n.net>
+2023-04-15 Peter Münster <pm@a16n.net>
New command image-dired-do-flagged-delete
@@ -23552,7 +23552,7 @@
(image-dired-thumbnail-mode-map): Bind "x" to
'image-dired-do-flagged-delete'.
-2022-09-29 Peter Münster <pm@a16n.net>
+2023-04-15 Peter Münster <pm@a16n.net>
image-dired-delete-char: Don't disturb formatting
@@ -23560,7 +23560,7 @@
the expected formatting of the thumbnail buffer (always one
space/newline after a thumbnail).
-2022-09-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
wallpaper-set: Get monitor name on non-graphical display
@@ -23571,14 +23571,14 @@
(wallpaper-default-set-function): Improve debugging output.
Ref. https://lists.gnu.org/r/emacs-devel/2022-09/msg01910.html
-2022-09-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prompt for wallpaper width/height only when needed
* lisp/image/wallpaper.el (wallpaper--format-arg): Don't prompt for
width and height unless the values are actually used.
-2022-09-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make format-spec accept function substitutions
@@ -23589,7 +23589,7 @@
* test/lisp/format-spec-tests.el (format-spec/function): New test.
Ref. https://lists.gnu.org/r/emacs-devel/2022-09/msg01875.html
-2022-09-29 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Wancho script (bug#58159)
@@ -23602,35 +23602,35 @@
* etc/HELLO: Add a Wancho greeting.
* etc/NEWS: Announce the new language environment.
-2022-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
alloc.c: Avoid nested overlay iterations (bug#58158)
* src/alloc.c (mark_overlays): New function.
(mark_buffer): Use it instead of using the overlay iterator.
-2022-09-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Remove Emacs 21 compat code for gnus-user-agent
* lisp/gnus/gnus.el (gnus-user-agent): No longer convert old
(< 2005-01-10) symbol type values.
-2022-09-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update some Gnus documentation in the Emacs manual
* doc/emacs/misc.texi (Gnus Group Buffer, Gnus Summary Buffer):
Update documentation (bug#58145).
-2022-09-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak while-let definition
* lisp/subr.el (while-let): Use if-let* since we don't need/want
the backwards compat of if-let.
-2022-09-29 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Mende Kikakui script (bug#58151)
@@ -23644,27 +23644,27 @@
* etc/HELLO: Add Mende Kikakui greeting.
* etc/NEWS: Announce the new language environment.
-2022-09-29 Jacob First <jacob.first@member.fsf.org>
+2023-04-15 Jacob First <jacob.first@member.fsf.org>
bind-keys supports passing a list of keymaps as :map argument
Fix bind-chords docs: :map argument may be a list of keymaps
-2022-09-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
cf38e1c393 Clarify image file search
fc212364ce ; Fix typo.
-2022-09-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Pacify compiler warning in xterm.c
* src/xterm.c (handle_one_xevent): Mark gen_help_time UNINIT.
Reported by Lars Ingebrigtsen <larsi@gnus.org>.
-2022-09-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS build
@@ -23676,7 +23676,7 @@
(assert.h): Edit command group into individual commands appending
to assert.h-t.
-2022-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
itree.[ch]: Add sanity checks, comments, and minor tweaks
@@ -23701,7 +23701,7 @@
* src/pdumper.c (dump_interval_node): Adjust to the
`color` -> `red` change.
-2022-09-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clarify image file search
@@ -23709,39 +23709,39 @@
* lisp/image.el (create-image): Clarify that non-absolute image
files are searched along 'image-load-path'. (Bug#52931)
-2022-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/lispref/functions.texi (Declare Form) <compiler-macro>: Re-rephrase
-2022-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/lispref/functions.texi (Declare Form) <compiler-macro>: Rephrase
See bug#57397.
-2022-09-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge remote-tracking branch 'origin/scratch/noverlay-wip' into noverlay
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* .mailmap: Fixes for Emacs 29.
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
8033947fe2 .mailcap: Some additional fixes.
b1e92c59ed Avoid assertion violations in 'pop_it'
-2022-09-28 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Avoid nested iteration over intervals (bug#58144)
* src/xdisp.c (strings_with_newlines): Call
buffer_overlay_iter_finish.
-2022-09-28 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Remove hard-coded path to pwd in Makefiles.
@@ -23751,7 +23751,7 @@
* nt/Makefile.in: Replace hard-coded calls to /bin/pwd by calls
to 'pwd -P'. Fixes bug#58080.
-2022-09-28 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Add debugging help for nested iterators (nug#58144)
@@ -23766,18 +23766,18 @@
interval_tree_insert_gap): Pass __FILE__ and __LINE__ to iter_start.
(interval_tree_iter_start): Record file and line info in tree.
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
.mailcap: Some additional fixes.
-2022-09-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in 'pop_it'
* src/xdisp.c (pop_it): Avoid assertion violations when handling
lists or vectors of display properties. (Bug#58122)
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -23790,7 +23790,7 @@
# Conflicts:
# src/font.c
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add .mailmap for proper git log output
@@ -23802,7 +23802,7 @@
* .mailmap: New file.
-2022-09-28 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Adlam script (bug#58111)
@@ -23815,7 +23815,7 @@
* etc/HELLO: Add Adlam greeting.
* etc/NEWS: Announce the new language environment.
-2022-09-28 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Improve Gurmukhi composition rules (Bug#58098)
@@ -23824,7 +23824,7 @@
* lisp/international/fontset.el (script-representative-chars)
(setup-default-fontset): Support Chess Symbols.
-2022-09-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Apply root window coordinate optimizations to crossing events as well
@@ -23836,17 +23836,17 @@
apply them to crossing events as well as recommended by the
ICCCM.
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/files.el (auto-mode-alist): Add entry for ".mailmap".
-2022-09-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify eww--rescale-images code
* lisp/net/eww.el (eww--rescale-images): Simplify code.
-2022-09-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new macro 'while-let'
@@ -23854,7 +23854,7 @@
when-let/if-let/while-let.
* lisp/subr.el (while-let): New macro.
-2022-09-28 Jose A. Ortega Ruiz <jao@gnu.org>
+2023-04-15 Jose A. Ortega Ruiz <jao@gnu.org>
docview: new customization options for imenu
@@ -23865,7 +23865,7 @@
* lisp/doc-view.el (doc-view--pdf-outline): clean up whitespace
markers '\r' and '\t' in imenu item titles (bug#58131).
-2022-09-28 Lin Sun <sunlin7@hotmail.com>
+2023-04-15 Lin Sun <sunlin7@hotmail.com>
package-update would always re-install package
@@ -23873,7 +23873,7 @@
version comparison between available packages and archived
packages (bug#58129).
-2022-09-28 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Follow #target links in eww without re-rendering
@@ -23881,7 +23881,7 @@
of re-rendering to follow #target links in the same page. (bug#58118)
(eww-link-keymap): Bind <mouse-2> to eww-follow-link as well.
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: End thumbnail file names with ".jpg"
@@ -23893,7 +23893,7 @@
change.
* etc/NEWS: Announce the above change.
-2022-09-28 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Standardize XPM files
@@ -23906,11 +23906,11 @@
* etc/images/mh-logo.xpm:
* etc/images/unchecked.xpm: Normalize file headers.
-2022-09-28 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix last change
-2022-09-28 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port better to C23 bool+true+false keywords
@@ -23932,18 +23932,18 @@
Don’t include <stdbool.h> if C23 or later, or if
it has already been included.
-2022-09-28 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-09-27 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Maintaining ChangeLog history: add more details
* admin/notes/repo (Maintaining ChangeLog history): Add more details.
See <https://debbugs.gnu.org/58092#37>.
-2022-09-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make image-dired-dired-toggle-marked-thumbs faster
@@ -23951,14 +23951,14 @@
(image-dired-dired-toggle-marked-thumbs): Don't show progress, since
it makes things slower.
-2022-09-27 Lin Sun <sunlin7@hotmail.com>
+2023-04-15 Lin Sun <sunlin7@hotmail.com>
Load compiled "calc-loaddefs", if any
* lisp/calc/calc.el ("calc-loaddefs"): Load the .elc file (if it
exists) (bug#58127).
-2022-09-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Fix header line when file is missing
@@ -23966,11 +23966,11 @@
(image-dired-format-properties-string): Don't error when file has
been deleted.
-2022-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/files.el (file-backup-file-names): Don't burp if dir doesn't exist
-2022-09-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add back useful information from gnus-coding.texi
@@ -23978,15 +23978,15 @@
* lisp/net/pop3.el: Improve Commentary by adding back text from
deleted file gnus-coding.texi.
-2022-09-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/emacs/ack.texi (Acknowledgments): Update maintainers.
-2022-09-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove gnus-coding.text (bug#58119)
-2022-09-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some tramp-docker.el adaptions
@@ -23994,11 +23994,11 @@
Add ;;;###tramp-autoload cookie. Make implementation more robust.
(tramp-methods) Use `tramp-default-remote-shell'.
-2022-09-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* etc/NEWS.23: Belatedly announce 'format-spec'.
-2022-09-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Document the new "XRandR 1.5" value
@@ -24007,7 +24007,7 @@
* doc/lispref/frames.texi (Multiple Terminals): Document the new
"XRandR 1.5" value.
-2022-09-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve doc of `x-window-property'
@@ -24015,7 +24015,7 @@
document where to obtain documentation for standardized window
properties.
-2022-09-27 Jose A. Ortega Ruiz <jao@gnu.org>
+2023-04-15 Jose A. Ortega Ruiz <jao@gnu.org>
docview: imenu access to table of contents
@@ -24032,7 +24032,7 @@
* doc/emacs/misc.texi: documentation for the new functionality
(bug#58103).
-2022-09-27 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
ert-x: Improve realism of `ert-with-test-buffer-selected'
@@ -24040,7 +24040,7 @@
`inhibit-read-only' and `buffer-read-only' to nil when executing the
body to provide a more realistic test environment.
-2022-09-27 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix macOS build (bug#58108)
@@ -24050,11 +24050,11 @@
* src/itree.c: Fix copyright.
* src/itree.h: Fix copyright.
-2022-09-27 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/progmodes/cc-defs.el (c-let*-maybe-max-specpdl-size): Fix glitches
-2022-09-27 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Don't bind max-specpdl-size when it doesn't exist or is obsolete
@@ -24063,14 +24063,14 @@
* lisp/progmodes/cc-defs.el (c-let*-maybe-max-specpdl-size): New macro.
(c-get-lang-constant): Use the new macro in place of let*.
-2022-09-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Avoid uninitialized variable warning
* src/composite.c (composition_gstring_adjust_zero_width): Simplify
last change with respect to an exit condition.
-2022-09-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Optimize coordinate translation during event handling
@@ -24091,7 +24091,7 @@
* src/xterm.h (struct x_output): New fields for keeping track of
the root window offset of the edit window.
-2022-09-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Adjust zero-width grapheme clusters so they are displayed (Bug#50951)
@@ -24099,28 +24099,28 @@
* src/composite.h: Declare it.
* src/font.c (Ffont_shape_gstring): Use it before putting gstring to cache.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix OBOE in image-dired--with-marked
* lisp/image/image-dired.el (image-dired--with-marked): Fix off-by-one
error.
-2022-09-26 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
vc-filter-command-function: Abbreviate default value
* lisp/vc/vc-dispatcher.el (vc-filter-command-function): Abbreviate
`(lambda (&rest args) args)' as just `list'.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Get rid of default wallpaper-setter constructor
* lisp/image/wallpaper.el (wallpaper-setter): Actually get rid of
the default constructor.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Set XFCE wallpaper also in single-workspace-mode
@@ -24135,7 +24135,7 @@
(wallpaper-xfce-command-args): New function.
(wallpaper--default-setters): Use above new function for XFCE.
-2022-09-26 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Handle C++20 concepts
@@ -24167,21 +24167,21 @@
* lisp/progmodes/cc-mode.el (c-fl-decl-start): Fix an off by one error. Use
equal rather than eq to compare two syntax contexts.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't auto-resize image if echo area is non-empty
* lisp/image-mode.el (image-fit-to-window): Don't auto-resize
image if there's a message in the echo area.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Display a message when wallpaper was set
* lisp/image/wallpaper.el (wallpaper-default-set-function): Display a
message when the wallpaper was successfully set.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix setting the wallpaper in XFCE
@@ -24198,7 +24198,7 @@
(wallpaper--format-arg/monitor, wallpaper--format-arg/workspace):
New tests.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Rewrite wallpaper.el to use a cl-defstruct
@@ -24218,7 +24218,7 @@
(wallpaper--find-command-args/return-list)
(wallpaper--image-file-regexp/return-string): New tests.
-2022-09-26 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Add log-edit-summary-separator face (bug#58092)
@@ -24227,14 +24227,14 @@
named face.
* etc/NEWS: Announce the new face.
-2022-09-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Autoload image-dired-thumbnail-storage :safe property
* lisp/image/image-dired.el (image-dired-thumbnail-storage):
Autoload :safe property.
-2022-09-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix (thing-at-point 'url) in eww forms
@@ -24245,7 +24245,7 @@
shr-tab-stop instead of shr-url so that we can be more general.
(shr-urlify): Mark all links as tabbable-to.
-2022-09-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make clojure-lsp handle more major modes at once
@@ -24255,35 +24255,35 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/682
-2022-09-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rescale images along with text in eww with `C-x C-+'
* lisp/net/eww.el (eww--rescale-images): Also rescale images when
using `C-x C-+' etc (bug#58047).
-2022-09-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix percentage width computation in vtable
* lisp/emacs-lisp/vtable.el (vtable--compute-width): Fix
percentage computation (bug#58067).
-2022-09-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Keep point in eww after hitting `g'
* lisp/net/eww.el (eww-retrieve): Keep point after hitting `g'
(bug#58076).
-2022-09-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix whitespace-mode in read-only buffers
* lisp/whitespace.el (whitespace--update-bob-eob): Don't bug out
in read-only buffers (bug#58082).
-2022-09-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add support for "single server, multiple modes"
@@ -24325,7 +24325,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/681
-2022-09-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Shoosh byte-compilation warnings about line numbering functions
@@ -24337,24 +24337,24 @@
(eglot--xref-make-match): Use line-beginning-position,
line-end-position, line-number-at-pos
-2022-09-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/buffer.c (overlays_in): Fix confusion Z-vs-ZV
This fixes test failures in `test-overlays-in-2` and `test-remove-overlays`.
-2022-09-25 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Make average width computation on ftcr more permissive (Bug#43058)
* src/ftcrfont.c (ftcrfont_open): Use only non-zero width glyphs for
computing average width.
-2022-09-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge 'master' into noverlay
-2022-09-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
tex-mode.el: Don't override AUCTeX modes
@@ -24362,7 +24362,7 @@
Only define them as aliases in `lisp/loaddefs.el` so we don't
override AUCTeX's own definitions when we load `tex-mode.el`.
-2022-09-25 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Boolean constant detection additions
@@ -24370,7 +24370,7 @@
`set` is boolean identity in its second argument.
(byte-compile-trueconstp): `set-marker` is always true.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Refactor system specific code in wallpaper.el
@@ -24388,14 +24388,14 @@
(wallpaper--find-command, wallpaper--find-command-arguments):
Do nothing on MS-Windows and Haiku.
-2022-09-25 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't crash in copy-alist with non-list argument
* src/fns.c (Fcopy_alist): Check argument type.
* test/src/fns-tests.el (fns--copy-alist): New test.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add reasonable default to wallpaper-set
@@ -24405,7 +24405,7 @@
(wallpaper-set): Use above new function to set a default.
* test/lisp/image/wallpaper-tests.el: New file.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add :buffer argument to ert-with-temp-file
@@ -24413,7 +24413,7 @@
argument :buffer SYMBOL to visit the file with `find-file-literally'
before running the body, and cleaning up after.
-2022-09-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement font-use-system-font on Haiku
@@ -24450,7 +24450,7 @@
(syms_of_xsettings): Replace calls to intern with a static
string.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
wallpaper: URI-encode gsettings argument
@@ -24458,7 +24458,7 @@
(wallpaper-command-args, wallpaper-set): URI-encode gsettings
argument.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve shortdoc documentation
@@ -24469,7 +24469,7 @@
(shortdoc-next, shortdoc-previous)
(shortdoc-next-section, shortdoc-previous-section): Doc fixes.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make image-dired-thumb-name more portable
@@ -24480,14 +24480,14 @@
(image-dired-thumb-name/image-dired)
(image-dired-thumb-name/per-directory): Expand tests.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix shortdoc movement commands
* lisp/emacs-lisp/shortdoc.el (shortdoc--goto-section): Don't skip
over current function or section when searching.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new command 'shortdoc-copy-function-as-kill'
@@ -24495,22 +24495,22 @@
(shortdoc-copy-function-as-kill): New command.
(shortdoc-mode-map): Bind above new command to "w".
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* etc/NEWS.22: Belatedly announce 'dired-copy-filename-as-kill'.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bind "N"/"P" to next/prev section in shortdoc
* lisp/emacs-lisp/shortdoc.el (shortdoc-mode-map): Bind "N" and
"P" to 'shortdoc-next-section' and 'shortdoc-previous-section'.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/bookmark.el (bookmark-rename): Improve prompt.
-2022-09-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new command image-dired-copy-filename-as-kill
@@ -24518,13 +24518,13 @@
(image-dired-copy-filename-as-kill): New command.
(image-dired-thumbnail-mode-map): Bind above new command to "w".
-2022-09-25 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* lisp/net/rcirc.el (rcirc-print): Remove 'fill-region' call
See Bug#57376.
-2022-09-25 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add formatting commands to rcirc
@@ -24539,7 +24539,7 @@
(rcirc-mode-map): Bind formatting commands.
(rcirc-multiline-minor-mode-map): Bind formatting commands.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-induce-sparse-tree
@@ -24550,7 +24550,7 @@
children list.
(ts_build_sparse_tree): Add comment.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve treesit-search-forward-goto
@@ -24558,13 +24558,13 @@
* lisp/treesit.el (treesit-search-forward-goto): Instead of taking a
node, use the node at point, and make sure we make progress.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-search-forward
* src/treesit.c (ts_search_forward): Fix return value.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Update and enable treesit-imenu function in python.el
@@ -24577,7 +24577,7 @@
(python-mode): Enable treesit-imenu. Also fix indentation for
which-func code.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add the treesit-search functions that supplant the removed ones
@@ -24603,7 +24603,7 @@
(Ftreesit_induce_sparse_tree): Add functions.
* test/src/treesit-tests.el (treesit-node-supplemental): Add comments.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove treesit-traverse functions
@@ -24623,14 +24623,14 @@
(treesit-end-of-defun): Remove functions.
* test/src/treesit-tests.el: Remove comments.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Accept nil as NODE in treesit-node-text
* lisp/treesit.el (treesit-node-text): Just wrap function body
in (when ...).
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change make_string to build_string in treesit.c
@@ -24638,14 +24638,14 @@
(Ftreesit_node_field_name_for_child): Change make_string to
build_string.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve printing treesit nodes
* src/print.c (print_vectorlike): Instead of position, print the type
of the node.
-2022-09-25 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename treesit-expand-query/pattern
@@ -24655,7 +24655,7 @@
(make_ts_query): Use new name.
* test/src/treesit-tests.el (treesit-query-api): Fix name.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak window handling in vc-pull-and-push
@@ -24667,7 +24667,7 @@
window asynchronously on the "pull" because that gets in the way
of doing other things.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Add faces for header line
@@ -24679,7 +24679,7 @@
(image-dired-thumb-mark, image-dired-thumb-flagged): Move
definition further down.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Add new %-format specifiers for header line
@@ -24698,7 +24698,7 @@
(image-dired-dired-display-properties): Support above new format
specifiers.
-2022-09-24 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Generalize & simplify implementation of user edits to VC commands
@@ -24711,11 +24711,11 @@
* lisp/vc/vc.el (vc-print-branch-log): Use vc-filter-command-function
in place of vc-pre-command-functions and vc-want-edit-command-p.
-2022-09-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/emacs-lisp/icons.el (icons--create): Use default rotation 0 (bug#57813)
-2022-09-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt tramp-docker integration
@@ -24738,7 +24738,7 @@
`tramp--with-startup'.
(tramp-unload-hook): Unload `tramp-docker'.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Move menu definitions to keymaps
@@ -24749,13 +24749,13 @@
* lisp/image/image-dired-dired.el(image-dired-minor-mode-map):
...here.
-2022-09-24 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Ensure no memory leaks of glyph_matrix
each glyph_matrix only when it's NULL. (Bug#58028)
-2022-09-24 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
hideshow.el: Improve hs-toggle-hiding behavior
@@ -24774,11 +24774,11 @@
(hideshow-toggle-hiding-1): New test.
(hideshow-mouse-toggle-hiding-1): New test (bug#52092).
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove "manual" package--builtin-versions updates
@@ -24787,11 +24787,11 @@
package--builtin-versions "manually", because loaddefs-gen does
this correctly now.
-2022-09-24 Brian Cully <bjc@kublai.com>
+2023-04-15 Brian Cully <bjc@kublai.com>
* lisp/net/tramp-docker.el: New file.
-2022-09-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(event-start/end): Fix part of bug#52092
@@ -24801,25 +24801,25 @@
* lisp/subr.el (event--posn-at-point): New function.
(event-start, event-end): Use it.
-2022-09-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge branch 'emacs-28'
-2022-09-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/hideshow.el (hs-toggle-hiding): Fix `interactive` form
This fixes the first part of bug#52092, which is a regression
introduced by commit d0e9113de97.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dired-do-rename refuse to rename . and ..
* lisp/dired-aux.el (dired-do-rename): Refuse to rename . and ..
(bug#52004). This used to error out after renaming.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new command vc-pull-and-push
@@ -24845,14 +24845,14 @@
* lisp/vc/vc.el (vc-pull-and-push): New command (bug#51964).
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak binding of `+' in vc-dir
* lisp/vc/vc-dir.el (vc-dir-mode-map): Point to the actual
function instead of the alias. This makes *Help* more helpful.
-2022-09-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode. Make AWK Mode work with electric-pair-mode
@@ -24870,7 +24870,7 @@
* lisp/progmodes/cc-awk.el (c-awk-syntax-tablify-string): Set
c-open-string-opener when an unbalanced string is detected.
-2022-09-24 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
docview: Use svg images when using mupdf for conversion
@@ -24881,14 +24881,14 @@
(doc-view-set-up-single-converter): Produce svg images when using
mupdf (bug#58041).
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Prefer command remapping
* lisp/image/image-dired.el (image-dired-thumbnail-mode-map):
Prefer command remapping to binding keys directly.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Fix C-a/C-e in thumbnail buffer
@@ -24903,14 +24903,14 @@
(image-dired-thumbnail-mode-map): Remap 'move-beginning-of-line'
and 'move-beginning-of-line' to above new commands.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make thumbs.el obsolete
* lisp/obsolete/thumbs.el: Add Obsolete-since.
* etc/NEWS: Announce obsoletion of thumbs.el. (Bug#57779)
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Move thumbs.el to lisp/obsolete
@@ -24919,7 +24919,7 @@
* lisp/obsolete/thumbs.el:
* test/lisp/obsolete/thumbs-tests.el: ...to here. (Bug#57779)
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Regenerate old thumbnails when needed
@@ -24930,7 +24930,7 @@
(image-dired-display-thumbs): Use above function to simplify and
regenerate the thumbnail if it's outdated.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Improve performance of marking commands
@@ -24942,14 +24942,14 @@
'image-dired-thumb-update-marks'. Update all callers and make the
old name into an obsolete alias.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Mark 'per-directory' as :safe
* lisp/image/image-dired.el (image-dired-thumbnail-storage): Mark
'per-directory' value as :safe.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new macro image-dired--with-dired-buffer
@@ -24966,7 +24966,7 @@
(image-dired-thumb-update-marks): Avoid triggering above new error
handling.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how :override advice is formatted in *Help*
@@ -24974,7 +24974,7 @@
:overrides specially (bug#57974).
(advice--make-docstring): Put overrides at the front.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename file-name-directory
@@ -24983,7 +24983,7 @@
* lisp/files.el (file-name-parent-directory): Rename from
`file-name-directory' (bug#58039).
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that cus-load doesn't add things twice
@@ -24991,20 +24991,20 @@
* lisp/custom.el (custom--add-custom-loads): New function.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
`append' doc string clarification
* src/fns.c (Fappend): Clarify whether arguments are copied.
-2022-09-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify message-newline-and-reformat doc string
* lisp/gnus/message.el (message-newline-and-reformat): Clarify the
DWIM-ness in the doc string (bug#57986).
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve image-dired-thumbnail-display-external
@@ -25013,18 +25013,18 @@
(image-dired-thumbnail-display-external): Correctly handle
external viewers with spaces or flags.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/emacs-lisp/shortdoc.el (file-name): Improve examples.
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Use command substitution for tags bindings
* lisp/image/image-dired-tags.el
(image-dired-dired-edit-comment-and-tags): Use substitute-command-keys
-2022-09-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Various code clean ups
@@ -25038,7 +25038,7 @@
docstring.
(image-dired-comment-thumbnail): Fix interactive declaration.
-2022-09-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix blunder in eglot--guess-contact
@@ -25047,7 +25047,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/940
-2022-09-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce complexity of scroll bar window protection code
@@ -25069,7 +25069,7 @@
* src/xterm.h (struct x_display_info): Likewise.
-2022-09-24 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
New Flymake backend using the shellcheck program
@@ -25084,7 +25084,7 @@
backend.
(sh-mode): Add it to 'flymake-diagnostic-functions'.
-2022-09-23 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
vc-git--pushpull: Restore handling of vc-git-program
@@ -25093,14 +25093,14 @@
vc-git-program, and don't ignore user edits to the git program name
when PROMPT.
-2022-09-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/eieio.el (defclass): Fix bug#51068
Accept (defclass <class> <superclasses> (.. <slotname> ..)) without
having to wrap the slot name within parentheses.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Rewrite and extend slideshow feature
@@ -25115,7 +25115,7 @@
* lisp/image/image-dired.el (image-dired--slideshow-stop): Add support
for pausing, and going backwards and forwards during slideshow.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Mark two slideshow defuns as internal
@@ -25124,7 +25124,7 @@
'image-dired--slideshow-step' and 'image-dired--slideshow-stop'.
Update callers and make old names into obsolete aliases.
-2022-09-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cconv.el: Fix interactive closure bug#51695
@@ -25146,7 +25146,7 @@
* test/lisp/emacs-lisp/cconv-tests.el
(cconv-tests-interactive-closure-bug51695): New test.
-2022-09-23 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make Gnus respect mode-line-buffer-identification-keymap
@@ -25159,7 +25159,7 @@
* lisp/gnus/gnus-srvr.el (gnus-browse-foreign-server): Add missing
'gnus-modeline-buffer-identification' call (bug#57977).
-2022-09-23 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make bounding box of 'image-crop' more noticeable
@@ -25167,14 +25167,14 @@
selected region to make the bounding-box more noticable in images
which are mostly white (bug#58004).
-2022-09-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't overwrite cus-load dependencies
* lisp/cus-dep.el (custom-make-dependencies): Don't overwrite
elements added by packages (bug#58015).
-2022-09-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make loaddefs-gen register parent :groups from defcustom
@@ -25182,7 +25182,7 @@
(loaddefs-generate--make-autoload): Also register parent :groups from
`defgroup' entries (bug#58015).
-2022-09-23 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix syntax check in python-info-looking-at-beginning-of-defun
@@ -25193,21 +25193,21 @@
(python-end-of-defun-1, python-info-looking-at-beginning-of-defun-3):
New tests (bug#58023).
-2022-09-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Inhibit image-crop when there's overlays
* lisp/image/image-crop.el (image-crop): Don't mess with overlays,
because they're a pain to reconstruct (bug#58027).
-2022-09-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Delete the correct region after cropping an image
* lisp/image/image-crop.el (image-crop): Delete the correct region
after editing (bug#58027).
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Disable 'image-map' in thumbnail buffer
@@ -25217,18 +25217,18 @@
* lisp/image/image-dired.el (image-dired-insert-thumbnail): Disable
`image-map' in thumbnail buffer.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update manual for recent image-dired changes
* doc/emacs/dired.texi (Image-Dired): Update to reflect recent
changes.
-2022-09-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/files.el (risky-local-variable): Remove max-specpdl-size.
-2022-09-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove max-specpdl-size overrun test
@@ -25239,18 +25239,18 @@
hitting the max-lisp-eval-depth limit instead.)
This silences an obsoletion warning.
-2022-09-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/bookmark.el (bookmark-make-record): Fix thinko.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve prompt of 'image-dired' command
* lisp/image/image-dired.el (image-dired-show-all-from-dir):
Improve prompt.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Rename 'image-dired-db-file' to 'image-dired-tags-db-file'
@@ -25258,14 +25258,14 @@
from 'image-dired-db-file'. Update all uses and make old name
into an obsolete variable alias.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
60ac12d21f Fix shaping with bitmap-only fonts on HarfBuzz 5.2.0 (Bug#...
9f65e52362 ; Minor copyedits of elisp.texi
-2022-09-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix more toolkit scroll bar window protection issues
@@ -25276,7 +25276,7 @@
* src/xterm.h (struct x_display_info): New field
`first_valid_scroll_bar_req'.
-2022-09-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Autoload wallpaper-set
@@ -25285,7 +25285,7 @@
* lisp/image/image-dired.el (wallpaper):
* lisp/thumbs.el (wallpaper): Don't require.
-2022-09-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support Noto Emoji font as fallback
@@ -25296,14 +25296,14 @@
* lisp/international/fontset.el (setup-default-fontset): Support
black-and-white Noto Emoji font as fallback for Emoji display.
-2022-09-23 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Fix shaping with bitmap-only fonts on HarfBuzz 5.2.0 (Bug#57976)
* src/ftcrfont.c (ftcrhbfont_begin_hb_font): Undo last change for
HarfBuzz 5.2.0.
-2022-09-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support several new DEs in wallpaper.el
@@ -25312,7 +25312,7 @@
Pantheon, Budgie, LXQt, and LXDE. Also add support for Lubuntu,
Xubuntu, and Pop!_OS.
-2022-09-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Obsolete two unused functions
@@ -25320,7 +25320,7 @@
(image-dired-associated-dired-buffer-window): Make obsolete; they are
currently unused.
-2022-09-22 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Utilize tree-sitter in python.el
@@ -25335,7 +25335,7 @@
(python-info-treesit-current-defun): New functions.
(python-mode): Enable tree-sitter font-lock and which-func.
-2022-09-22 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't rewrite `set` to `setq` of lexical variables
@@ -25352,21 +25352,21 @@
* test/lisp/emacs-lisp/bytecomp-resources/warn-variable-set-nonvariable.el:
Remove obsolete test.
-2022-09-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Improve minor mode docstring
* lisp/image/image-dired-dired.el (image-dired-minor-mode):
Improve docstring.
-2022-09-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Remove redundant keybindings
* lisp/image/image-dired-dired.el (image-dired-minor-mode-map):
Don't redundantly bind keys that are already bound in dired.
-2022-09-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix failing image-dired test
@@ -25376,14 +25376,14 @@
(image-dired-thumb-name/image-dired)
(image-dired-thumb-name/per-directory): New tests.
-2022-09-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add X-Hashcash to the end of mail headers
* lisp/mail/hashcash.el (mail-add-payment): Move headers to the end of
the headers.
-2022-09-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve don't save bookmark context from encrypted files
@@ -25401,14 +25401,14 @@
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-p): Add them to
`bookmark-inhibit-context-functions'.
-2022-09-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around rare crash when turning scroll wheel
* src/xterm.c (handle_one_xevent): Don't allow devices to be
added twice handling hierarcy events.
-2022-09-21 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Add support for user edits to VC command arguments
@@ -25424,7 +25424,7 @@
* lisp/vc/vc.el (vc-print-branch-log): A non-nil prefix argument now
means vc-want-edit-command-p is bound to a non-nil value (bug#57807).
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer command remapping in image-dired-minor-mode
@@ -25432,37 +25432,37 @@
Prefer command remapping.
(image-dired-minor-mode): Improve docstring.
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Obsolete image-mode--images-in-directory
* lisp/image-mode.el (image-mode--images-in-directory): Make
unused function obsolete.
-2022-09-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Update version tag of rmail-retry-ignored-headers
* lisp/mail/rmail.el (rmail-retry-ignored-headers): Set :version to "29.1".
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* test/lisp/image/image-dired-util-tests.el: New file.
-2022-09-21 Richard Stallman <rms@gnu.org>
+2023-04-15 Richard Stallman <rms@gnu.org>
Add more headers to default value of rmail-retry-ignored-headers.
* rmail.el (rmail-retry-ignored-headers): Add more headers to default.
Don't bother with `purecopy'. Split value readably.
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new function xdg-session-type to xdg.el
* lisp/xdg.el (xdg-session-type): New function.
-2022-09-21 Thuna <thuna.cing@gmail.com> (tiny change)
+2023-04-15 Thuna <thuna.cing@gmail.com> (tiny change)
Correct the usage of `image-file-name-regexps'
@@ -25470,7 +25470,7 @@
`image-file-name-regexps' as a list of regexps (as documented) in
addition to a regexp string (bug#57971).
-2022-09-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling of nil device names
@@ -25479,7 +25479,7 @@
* lisp/term/x-win.el (x-device-class): Handle `nil'
correctly. (bug#57969)
-2022-09-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Small adjustments to precision pixel scrolling
@@ -25491,7 +25491,7 @@
(pixel-scroll-interpolate-down, pixel-scroll-interpolate-up):
Fix usage of function.
-2022-09-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve scroll interpolation in pixel-s-precision-mode
@@ -25503,7 +25503,7 @@
(pixel-scroll-interpolate-down, pixel-scroll-interpolate-up):
Pass factor of 0 to scroll exactly 1 page.
-2022-09-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make emacs-build-description into a command
@@ -25512,7 +25512,7 @@
(emacs-build-description): Rename from
`emacs-bug--system-description' and make into a command.
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -25526,18 +25526,18 @@
c2595b8dcc ; * src/font.h (struct font_driver): Comment fix.
97b928ce09 MacOS ld warning from native compilation (bug#57849)
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* admin/gitmerge.el (gitmerge): Use substitute-command-keys.
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bind 'n'/'p' in gitmerge-mode to line scroll
* admin/gitmerge.el (gitmerge-mode-map): Bind 'n' and 'p' to
'next-line' and 'previous-line'.
-2022-09-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix substitute-command-keys for global binding lookup
@@ -25550,7 +25550,7 @@
test/lisp/help-tests.el (help-tests-substitute-command-keys/keymap-change):
Add testcase for specific map overriding advertised-binding.
-2022-09-21 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: More improvements for buttons/margins (bug#57813)
@@ -25562,28 +25562,28 @@
and move such overlay removal after the call of 'outline-show-all'
that might trigger overlay addition.
-2022-09-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Support the customize-mode command
* lisp/image/image-dired.el (image-dired-thumbnail-mode)
(image-dired-display-image-mode): Add custom group 'image-dired'.
-2022-09-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix minor thinko in focus tracking logic
* src/xterm.c (xi_handle_focus_change): Prefer explicit focus to
implicit focus.
-2022-09-20 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Improve treesit-query-capture
* src/treesit.c (Ftreesit_query_capture): Add a suggestion in the
signal message.
-2022-09-20 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-query-validate
@@ -25591,7 +25591,7 @@
treesit-query-expand so this function works on both sexp and string
query, as expected.
-2022-09-20 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename treesit-expand-query/pattern
@@ -25600,7 +25600,7 @@
(treesit-expand-query): Rename to treesit-query-expand.
(make_ts_query): Use new name.
-2022-09-20 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Recognize the backslash operator in perl-mode
@@ -25613,7 +25613,7 @@
* test/lisp/progmodes/cperl-mode-resources/cperl-bug-11996.pl: New
file.
-2022-09-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make linum.el obsolete
@@ -25624,18 +25624,18 @@
* etc/TODO:
* lisp/faces.el: Don't mention linum.el.
-2022-09-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Move linum.el to lisp/obsolete
* lisp/linum.el: Move from here...
* lisp/obsolete/linum.el: ...to here. (Bug#57412)
-2022-09-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/ede.texi (Extending EDE): Fix reference.
-2022-09-20 Philip Kaludercic <philip@icterid>
+2023-04-15 Philip Kaludercic <philip@icterid>
Have rcirc handle bridge bots
@@ -25648,7 +25648,7 @@
(rcirc-bridged-nick): Add new face.
(rcirc-markup-bridge-bots): Add new function.
-2022-09-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Bind margin mouse event to cycle outlines (bug#57813)
@@ -25665,7 +25665,7 @@
(outline--insert-open-button, outline--insert-close-button):
Remove temporary attempts to bind margin-local mouse events.
-2022-09-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Allow keymap to override advertised-binding in docstrings
@@ -25681,7 +25681,7 @@
* lisp/help.el (substitute-command-keys): Restrict the initial key
lookup to the specified keymap (if there is one). (Bug#51384)
-2022-09-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Specify keymap in gnus-custom-mode docstring
@@ -25689,27 +25689,27 @@
otherwise the bindings are looked up in the global map (where they
don't exist).
-2022-09-20 Drew Adams <drew.adams@oracle.com>
+2023-04-15 Drew Adams <drew.adams@oracle.com>
Tweak how use-region-p works with `use-empty-active-region'
* lisp/simple.el (use-region-p): Don't report non-nil if the user
has just clicked mouse-1 without extending the region (bug#51874).
-2022-09-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Attempt to clarify Input Focus documentation
* doc/lispref/frames.texi (Input Focus): Try to clarify the
documentation (bug#51862).
-2022-09-20 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve display of advices on build failures.
* Makefile.in: Use three leading '*' characters, and redirect to stderr.
-2022-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/textmodes/tex-mode.el (tex-mode): Fix AUCTeX regression
@@ -25718,7 +25718,7 @@
AUCTeX installs its own advice to redefine `tex-mode`, and that
advice used to take precedence before commit 6075a7c5ae3fa456cd.
-2022-09-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Wrap max-specpdl-size with with-no-warnings in Tramp
@@ -25726,28 +25726,28 @@
* lisp/net/tramp-gvfs.el (max-specpdl-size): Wrap with
`with-no-warnings'.
-2022-09-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add vc-annotate-switches to manual
* doc/emacs/maintaining.texi (Old Revisions): Add description of
`vc-annotate-switches' and `vc-BACKEND-annotate-switches'.
-2022-09-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention compilation in the Package Installation node
* doc/emacs/package.texi (Package Installation): Mention that
packages are compiled (bug#51660).
-2022-09-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow hl-line-mode so work when global-hl-line-mode is active
* lisp/hl-line.el (hl-line-mode): Allow switching off the global
mode in the current buffer (bug#51580).
-2022-09-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Get fewer false positives for :keyword and &options
@@ -25756,21 +25756,21 @@
&options (bug#51574).
(lisp-fdefs): Use it.
-2022-09-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Obsolete unused variable in debug.el
* lisp/emacs-lisp/debug.el (debugger-previous-backtrace): Make
unused variable obsolete.
-2022-09-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further ffap-read-file-or-url tweaks
* lisp/ffap.el (ffap-read-file-or-url): Make this work for URLs
again if you're using `ido-everywhere' (bug#57943).
-2022-09-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Remove mention of non-existent `annotate-switches'
@@ -25778,14 +25778,14 @@
`annotate-switches'. As far as I can tell this has never existed in
Emacs.
-2022-09-20 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Mention that src/macuvs.h sometimes needs committing
* admin/notes/unicode: src/macuvs.h is generated, but needs to be
committed sometimes.
-2022-09-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use "set -o nounset" in bash scripts
@@ -25795,13 +25795,13 @@
* admin/update_autogen:
* admin/upload-manuals: Use "set -o nounset".
-2022-09-20 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Revert "Allow nil value for filter-buffer-substring-function"
This reverts commit a7c65fc6660878e244432a5b25fb3a4ff20e8604.
-2022-09-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove intern calls with a static string from haiku*.c
@@ -25811,7 +25811,7 @@
* src/haikuterm.c (haiku_term_init, syms_of_haikuterm): Replace
intern with real predefined symbols.
-2022-09-19 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Bury new ERC buffers by default
@@ -25828,7 +25828,7 @@
* etc/ERC-NEWS: Update existing display-buffers section for 5.5.
(Bug#51753)
-2022-09-19 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Offer to regexp-quote new items in erc-match commands
@@ -25849,13 +25849,13 @@
* test/lisp/erc/erc-match-tests.el: New file. (Bug#56450)
-2022-09-19 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't record undo history in erc-protocol buffers
* lisp/erc/erc.el (erc-log-irc-protocol): Disable undo history.
-2022-09-19 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Stabilize channels variant of erc-reuse-buffers test
@@ -25871,13 +25871,13 @@
* test/lisp/erc-tests.el (erc-ring-previous-command): Remove
unnecessary `goto-char'.
-2022-09-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-generic.el (cl--generic-lambda): Fix bug#57903
Fall back to old slower calling convention in dynbound code (bug#56596).
-2022-09-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-open): Revert 'text' back to " open ".
@@ -25885,14 +25885,14 @@
(outline-close-rtl): Remove 'text' since it's inherited from the parent
'outline-close'.
-2022-09-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve advices on build failures.
* Makefile.in: Mention "make extraclean; make". Mention mailing the
bugtracker among the possible choices. Fix typo.
-2022-09-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-minor-mode-use-margins): New user option.
@@ -25924,7 +25924,7 @@
* doc/emacs/text.texi (Outline Mode): Mention outline-minor-mode-use-margins.
-2022-09-19 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Minor touch-ups of some recent OSC stuff
@@ -25933,7 +25933,7 @@
* lisp/osc.el: Fix some comments.
-2022-09-19 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
perl-mode: / is a regexp match if there's nothing before it
@@ -25942,7 +25942,7 @@
* test/lisp/progmodes/cperl-mode-tests.el (cperl-test-bug-997): New
test.
-2022-09-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Abolish max-specpdl-size (bug#57911)
@@ -25989,7 +25989,7 @@
* src/fileio.c (Fdo_auto_save):
Remove references to and modifications of max-specpdl-size.
-2022-09-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Revert "fix jdtls support"
@@ -25997,7 +25997,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1008
-2022-09-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't use three-argument plist-get
@@ -26006,7 +26006,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1024
-2022-09-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Allow nil value for filter-buffer-substring-function
@@ -26015,7 +26015,7 @@
(filter-buffer-substring-function): Doc fix; improve and update for
above change.
-2022-09-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support imenu in emacs-news-mode
@@ -26025,7 +26025,7 @@
* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common): Use
above new variable to add imenu support.
-2022-09-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'posn-at-point' around several 'display' properties
@@ -26033,13 +26033,13 @@
by a display property, and its neighbors are also hidden.
(Bug#45915)
-2022-09-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/misc/eieio.texi (Introduction, Generics): Remove outdated limits
Reported by Hokomo <hokomo@airmail.cc>.
-2022-09-19 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Improve check for misleading 'cl-case' cases (Bug#57915).
@@ -26047,7 +26047,7 @@
form (quote FOO), not just (quote).
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-no-warning): New unit test.
-2022-09-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Revert change in Tramp inotifywait
@@ -26056,7 +26056,7 @@
* test/lisp/filenotify-tests.el: Deactivate instrumentation.
-2022-09-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer DE specific commands to set wallpaper
@@ -26064,13 +26064,13 @@
order to prioritize desktop environment specific commands before
general Wayland commands like "wbg" or even "swaybg". (Bug#57781)
-2022-09-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Avoid an unnecessary call to intern
* src/doc.c (Fdocumentation): Prefer DEFSYM to using intern directly.
-2022-09-19 Daniel Pettersson <daniel@dpettersson.net> (tiny change)
+2023-04-15 Daniel Pettersson <daniel@dpettersson.net> (tiny change)
Fix eshell directory and executable completion on action t
@@ -26078,7 +26078,7 @@
function (bug#57905).
(eshell--complete-commands-list): Use it.
-2022-09-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't save bookmark context from encrypted files
@@ -26088,28 +26088,28 @@
* lisp/epa-hook.el (epa-file-name-p): New function.
-2022-09-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Revert 60de98f6f0 and b2d419ed5b.
-2022-09-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* Makefile.in: Readd warnings about "git clean -fdx"
-2022-09-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "; * Makefile.in: Partly revert 5b3c4004a9."
This reverts commit e54da280ff4bf458c437f87dd64e848cdc75479c.
-2022-09-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
make gen-clean remove some newly-added generated files
* admin/unidata/Makefile.in (gen-clean): Remove some newly-added
generated files.
-2022-09-19 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
MacOS ld warning from native compilation (bug#57849)
@@ -26117,7 +26117,7 @@
on Darwin systems.
* etc/NEWS: Describe change.
-2022-09-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -26125,7 +26125,7 @@
c200098dde ; * src/intervals.c (get_local_map): Fix commentary.
69cc3d38bc Fix Tramp error with eshell integration
-2022-09-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove calls to intern with a static string from code that runs on X
@@ -26141,7 +26141,7 @@
* src/xsmfns.c (Fhandle_save_session, syms_of_xsmfns): Remove
calls to intern with a static string.
-2022-09-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of intern calls to static strings in xterm.c
@@ -26149,7 +26149,7 @@
interning concat.
(syms_of_xterm): New defsym Qconcat.
-2022-09-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GC protection of scroll bar windows
@@ -26160,7 +26160,7 @@
event to be put on the keyboard buffer. Reported by martin
rudalics <rudalics@gmx.at>.
-2022-09-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Display a help message when building Emacs failed.
@@ -26176,7 +26176,7 @@
* GNUmakefile (bootstrap): Use the new 'bootstrap-all' target.
-2022-09-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer using DEFSYMs to intern with wrong_type_argument
@@ -26188,7 +26188,7 @@
* src/font.c (Ffontp): Prefer using above new DEFSYMs to using intern
directly.
-2022-09-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Minor Tramp cleanups
@@ -26197,7 +26197,7 @@
* lisp/net/tramp-integration.el (info-lookup-maybe-add-help):
Fix `rx' call.
-2022-09-18 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Turn gv-synthetic-place into a function
@@ -26206,17 +26206,17 @@
* lisp/emacs-lisp/gv.el (gv-synthetic-place): Make a function and add
trivial compiler macro to avoid decreasing efficiency.
-2022-09-18 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Add NEWS entry for osc.el (bug#57821)
-2022-09-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix osc.el compilation warning
* lisp/osc.el (compilation-filter-start): Avoid compilation warning.
-2022-09-18 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
OSC escape sequences filter for compilation buffer
@@ -26227,7 +26227,7 @@
(osc-compilation-filter): Implement OSC escape sequence handling for
compilation output (bug#57821).
-2022-09-18 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Handle OSC command to set window title
@@ -26238,7 +26238,7 @@
(osc-window-title-handler): Copy text from OSC command 2 to
osc-window-title (bug#57821).
-2022-09-18 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Extract support of OSC escape sequences from comint
@@ -26259,48 +26259,48 @@
(osc-hyperlink-handler): Clone from comint-osc-hyperlink-handler.
* test/lisp/osc-tests.el (osc): Test osc-apply-region (bug#57821).
-2022-09-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the initial-frame-alist doc string
* lisp/frame.el (initial-frame-alist): Clarify how to set this
variable (bug#57890).
-2022-09-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore the point after aborting an image crop
* lisp/image/image-crop.el (image-crop): Restore point after
aborted cropping (bug#57874).
-2022-09-18 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
pulse-momentary-highlight-one-line: Act on visual line
* lisp/cedet/pulse.el (pulse-momentary-highlight-one-line): Act on
entire visual line, ignoring fields etc (bug#57876).
-2022-09-18 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Remap 'up-list' in python-mode-map
* lisp/progmodes/python.el (python-mode-map): Remap 'up-list' to
'python-nav-up-list' (bug#57885).
-2022-09-18 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Add new command python-shell-restart
* lisp/progmodes/python.el (python-shell-restart): New command (bug#57885).
-2022-09-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp error with eshell integration
* lisp/net/tramp-integration.el (tramp-eshell-directory-change):
Respect local `default-directory'. (Bug#57556)
-2022-09-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Don't require subr-x
@@ -26308,7 +26308,7 @@
* lisp/image/image-dired.el (subr-x): Don't require, since string-join
is now autoloaded.
-2022-09-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't return hash tables from e-w-configuration-plist
@@ -26318,7 +26318,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1033
-2022-09-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Allow eglot-workspace-configuration to be a plist
@@ -26339,7 +26339,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/790
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1033
-2022-09-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't exceed max-specdl-size in big go projects
@@ -26360,7 +26360,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/633
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/1067
-2022-09-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove what should be unnecessary calls to block_input
@@ -26368,41 +26368,41 @@
This function is not reentrant and is always called with input
blocked.
-2022-09-18 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix possible null pointer access
* src/term.c (Ftty__output_buffer_size): Handle case of
decode_tty_terminal returning NULL.
-2022-09-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
50bb9ec84c ; * admin/admin.el (make-news-html-file): Fix typo.
-2022-09-17 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
vc-do-command: Actually include "torsocks" in the command
* lisp/vc/vc-dispatcher.el (vc-do-command): When vc-tor is non-nil,
actually include "torsocks" in the command to be run (bug#57870).
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Display image on double click
* lisp/image/image-dired.el (image-dired-thumbnail-mode-map):
Display image on 'double-mouse-1'.
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Remove spurious message on C-<mouse-1>
* lisp/image/image-dired.el (image-dired-thumbnail-mode-map): Fix
spurious message about C-<down-mouse-1> being undefined.
-2022-09-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Allow :initializationoptions in eglot-server-programs
@@ -26432,14 +26432,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/940
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Increase image-dired-thumb-size to 128
* lisp/image/image-dired.el (image-dired-thumb-size): Increase default
to 128.
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Change some custom types to natnum
@@ -26448,7 +26448,7 @@
(image-dired-thumbs-per-row, image-dired-thumb-width)
(image-dired-thumb-height): Change :type to natnum.
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make `image-dired-thumb-(height|width)' obsolete
@@ -26464,7 +26464,7 @@
'image-dired-thumb-size' and make old name into an obsolete alias.
Update all callers.
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Simplify image-dired-thumbnail-storage customization
@@ -26474,18 +26474,18 @@
* lisp/image/image-dired-util.el (image-dired-thumb-name): Handle
above new default value.
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/image/image-dired.el: Bump version for Emacs 29.
-2022-09-17 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Fix rare shaping problems with Urdu and Arabic
* src/composite.c (fill_gstring_body): Clear unused slots of the
gstring. (Bug#50951)
-2022-09-17 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Optimize tty display updates (bug#57727)
@@ -26501,7 +26501,7 @@
output_buffer_size.
* etc/NEWS: Describe the change.
-2022-09-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix recent filenotify-tests changes
@@ -26511,21 +26511,21 @@
* test/lisp/filenotify-tests.el (file-notify-test11-symlinks):
Adapt test.
-2022-09-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Autoload string-join
* lisp/emacs-lisp/subr-x.el (string-join): Autoload since it's
being used more now.
-2022-09-17 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Further improvements to admin/emake.
* admin/emake: Better parsing of script options. Add a --quieter option,
which removes everything except errors.
-2022-09-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Adjust last commit about workspace configuration
@@ -26537,14 +26537,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/790
GitHub-reference: per https://github.com/joaotavora/eglot/issues/590
-2022-09-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix MPX focus tracking upon frame deletion
* src/xterm.c (x_free_frame_resources): Consider focus change
after.
-2022-09-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix running spell-checking in remote buffers
@@ -26552,7 +26552,7 @@
Don't use remote 'default-directory' when running the speller.
(Bug#57649)
-2022-09-17 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Update Unicode support to Unicode version 15.0.0 (bug#57846)
@@ -26596,7 +26596,7 @@
* etc/NEWS: Announce support for Unicode 15.0.
-2022-09-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -26609,7 +26609,7 @@
# Conflicts:
# etc/NEWS
-2022-09-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rework readme.md about workspace configuration again
@@ -26622,7 +26622,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/590
-2022-09-16 Fredrik Bergroth <fbergroth@gmail.com>
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com>
Add eglot-show-configuration to debug workspace configurations
@@ -26630,14 +26630,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/590
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Simplify regexp in make-news-html-file
* admin/admin.el (make-news-html-file): Simplify regexp.
Suggested by Mattias Engdegård <mattiase@acm.org>.
-2022-09-16 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Various improvements to admin/emake.
@@ -26646,7 +26646,7 @@
(useful for emake check for example), --no-check (useful for quicker
builds during development) and --no-fast.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support XFCE in wallpaper.el
@@ -26654,7 +26654,7 @@
(wallpaper-command): Support XFCE. (Bug#57781)
Thanks to Thierry Volpiatto <thievol@posteo.net>.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Accept more wide function signatures in docstrings
@@ -26665,7 +26665,7 @@
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-ignore-function-signature.el:
New file.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Add support for PDF files (Bug#26432)
@@ -26679,7 +26679,7 @@
(image-dired-show-all-from-dir): Use above new function instead of
'image-file-name-regexp'.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Print command when debugging
@@ -26688,14 +26688,14 @@
* lisp/image/image-dired-util.el (image-dired-debug): Rename from
'image-dired-debug-message'.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete mystery code from cperl-mode.el
* lisp/progmodes/cperl-mode.el: Delete commented out code referring to
some 'edit-var-mode-alist' that we don't think is used for anything.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete some commented out code in cperl-mode.el
@@ -26708,7 +26708,7 @@
* lisp/progmodes/cperl-mode.el: Delete code commented out since 1999:
a slightly different, duplicate definition of `cperl-ps-print-init'.
-2022-09-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Fix last occurrence of `font-lock-reference-face`
@@ -26718,11 +26718,11 @@
Redirect reference to obsolete `font-lock-reference-face` to
`font-lock-constant-face`.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* admin/admin.el (make-news-html-file): Set id on correct tag.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add version headlines to HTML NEWS export
@@ -26731,11 +26731,11 @@
* admin/admin.el (admin--org-export-headers-format)
(make-news-html-file): Add XX.Y version headlines with an HTML anchor.
-2022-09-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/subr.el (list-of-strings-p): Declare pure and error-free
-2022-09-16 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Optimize performance of S-TAB (bug#57813)
@@ -26745,7 +26745,7 @@
(outline--fix-up-all-buttons): Check invisible outlines explicitly instead of
using slow outline--cycle-state.
-2022-09-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Enable `dont-follow' for inotify file notifications
@@ -26760,14 +26760,14 @@
* test/lisp/filenotify-tests.el (file-notify-test11-symlinks)
(file-notify-test11-symlinks-remote): New tests.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use substitute-command-keys in some vc messages
* lisp/vc/vc-dispatcher.el (vc-start-logentry):
* lisp/vc/vc.el (vc-steal-lock): Use substitute-command-keys.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -26781,7 +26781,7 @@
# Conflicts:
# etc/NEWS
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve HTML export of NEWS file
@@ -26790,7 +26790,7 @@
(admin--require-external-package): New function.
(make-news-html-file): Improve HTML export.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add command to delete temporary markers in NEWS
@@ -26798,14 +26798,14 @@
(emacs-news-delete-temporary-markers): New command.
* admin/make-tarball.txt: Update instructions.
-2022-09-16 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
cc-fonts.el: Eliminate an Emacs compiler warning introduced yesterday.
* lisp/progmodes/cc-fonts.el (top level): Introduce a cc-bytecomp-defvar for
font-lock-reference-face.
-2022-09-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Faster and more robust list-of-strings-p
@@ -26813,7 +26813,7 @@
and don't crash on dotted lists.
* test/lisp/subr-tests.el (test-list-of-strings-p): Extend test.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete "etc/NEWS*.html" from .gitignore
@@ -26821,14 +26821,14 @@
don't include it in a tarball by mistake.
* .gitignore: Don't ignore "etc/NEWS*.html".
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Recommend NonGNU ELPA over MELPA
* doc/misc/org.org (Using CDLaTeX to enter math, Footnotes): Recommend
NonGNU ELPA over MELPA.
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix *Help* output for native-comp functions from IELM
@@ -26837,31 +26837,31 @@
instance, created by calling `native-compile' in IELM) are in C
source (bug#57819).
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Inhibit image-mode resizing in the minibuffer
* lisp/image-mode.el (image-fit-to-window): Don't resize when in
the minibuffer (bug#57823).
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix cperl list indentation problem
* lisp/progmodes/cperl-mode.el (cperl-calculate-indent): Indent
foo:bar() in lists correctly (bug#57829).
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in picture.el
* lisp/textmodes/picture.el (picture-mode-map): Prefer defvar-keymap.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Minor doc fixes in picture.el
@@ -26874,7 +26874,7 @@
(picture-yank-rectangle-from-register, picture-insert-rectangle)
(picture-draw-rectangle): Minor doc fixes.
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't use autoloaded functions for safe-local-variable
@@ -26888,17 +26888,17 @@
* lisp/vc/vc-git.el (vc-git-annotate-switches): Remove.
(vc-git-annotate-switches): Open-code the check.
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new predicate list-of-strings-p
* lisp/subr.el (list-of-strings-p): New function.
-2022-09-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/textmodes/page-ext.el: Improve Commentary.
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix sorting of backends in vc-responsible-backend
@@ -26906,7 +26906,7 @@
names, expand them first so that we get consistent sorting of ~/
etc (bug#57777).
-2022-09-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix icon spec for outline icons
@@ -26914,7 +26914,7 @@
(outline-close): Fix listing of multiple images. Reported by
Lars Ingebrigtsen <larsi@gnus.org>.
-2022-09-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename `image-elide' to `image-cut' and add more bindings
@@ -26928,7 +26928,7 @@
(image-crop--crop-image-update): Add commands to switch to
move/square modes.
-2022-09-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix wrong source window being generated for XDND leave events
@@ -26936,7 +26936,7 @@
x_dnd_last_seen_toplevel remain at its old value until any
XdndLeave event was definitely sent.
-2022-09-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid asserting for fontset validity before it is used
@@ -26944,7 +26944,7 @@
fontset is really used. Suggested by Eli Zaretskii
<eliz@gnu.org>
-2022-09-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add portable versions of the outline SVGs
@@ -26955,7 +26955,7 @@
* etc/images/outline-close.pbm: New images used on systems
without librsvg.
-2022-09-16 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add outline open/close images (bug#57813)
@@ -26967,13 +26967,13 @@
* lisp/emacs-lisp/icons.el (icons--create): Add :ascent 'center'.
-2022-09-16 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix crash in GC on macOS (bug#57751)
* src/nsterm.m ([EmacsView windowDidMove:]): Initialize input_event.
-2022-09-15 Peter Münster <pm@a16n.net>
+2023-04-15 Peter Münster <pm@a16n.net>
image-dired: Fix thumbnail options for gm
@@ -26981,7 +26981,7 @@
(image-dired-cmd-create-standard-thumbnail-options): Fix options for
"gm" (GraphicsMagick). (Bug#52200)
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve image-dired-display-properties-format
@@ -26989,21 +26989,21 @@
(image-dired-display-properties-format): Change default format,
improve docstring and add :safe property
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Show header line on start
* lisp/image/image-dired.el (image-dired-show-all-from-dir): Update
header line, to ensure that it is immediately visible on start.
-2022-09-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
combine-change-calls-1: Fix case where `body` also changes other bufs
* lisp/subr.el (combine-change-calls-1): Only set the current buffer's part
of the `*-change-functions` hooks.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Fix performance bug with mouse click
@@ -27015,7 +27015,7 @@
(image-dired-mouse-toggle-mark-1): Fix performance bug by setting
above new optional argument to nil. (Bug#53599)
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make image-dired-toggle-mark-thumb-original-file obsolete
@@ -27024,7 +27024,7 @@
(image-dired-mouse-toggle-mark-1): Don't use above obsolete
function.
-2022-09-15 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Include nil as valid wallpaper-commmand
@@ -27032,7 +27032,7 @@
Include nil in the type since that is a valid value for the variable,
and may be the default value. This should fix test-custom-opts.
-2022-09-15 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Handle C++20 modules
@@ -27056,7 +27056,7 @@
(c-import-<>-kwds, c-module-kwds): New c-lang-consts.
(c-module-key): New c-lang-const/var.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Document MS-Windows support in wallpaper.el
@@ -27064,14 +27064,14 @@
(wallpaper-command, wallpaper-command-args, wallpaper-set):
Document MS-Windows support.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve error when wallpaper-command is nil
* lisp/image/wallpaper.el (wallpaper-set): Improve the error message
when 'wallpaper-command' is nil.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support macOS in wallpaper.el
@@ -27079,7 +27079,7 @@
(wallpaper-command): Support macOS using "osascript".
(wallpaper-set): Display image name when wallpaper-debug is t.
-2022-09-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix outline image icon display (bug#57813)
@@ -27087,7 +27087,7 @@
image display with string display when image exists.
(outline--fix-up-all-buttons): Optimize.
-2022-09-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Implement support for 'wallpaper-set' on MS-Windows
@@ -27102,7 +27102,7 @@
* etc/NEWS: Update and simplify wording of the 'wallpaper-set'
entry.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add rudimentary font-locking to edit-abbrevs-mode
@@ -27110,7 +27110,7 @@
(edit-abbrevs-mode-font-lock-keywords): New defvar.
(edit-abbrevs-mode): Support font-locking.
-2022-09-15 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use `eql` or `eq` instead of `=` in some places
@@ -27129,7 +27129,7 @@
affect the resulting code. We compare numbers with `eql` and
characters with `eq` as a matter of style.
-2022-09-15 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify and shrink reader buffers
@@ -27145,7 +27145,7 @@
(read0): Reduce buffer to something suitable for most identifiers and
numbers.
-2022-09-15 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
mapconcat fast path with `identity` function argument
@@ -27156,35 +27156,35 @@
* src/fns.c (Fmapconcat): Speed up execution when the function
argument is `identity`.
-2022-09-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More fixes for XDND proxy support
* src/xterm.c (handle_one_xevent): Check replies against
toplevel, not proxy.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use substitute-command-keys in proced-help
* lisp/proced.el (proced-help-string, proced-help): Use
substitute-command-keys.
-2022-09-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "; Fix doc string of 'loaddefs-generate'"
This reverts commit 5fe9a1a85ae6d54196031157a735352f6ab655ff.
It included unrelated changes.
-2022-09-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
5543aea1b2 Automate exporting etc/NEWS to HTML
23a91163ed * Makefile.in (uninstall): Remove the *.eln files. (Bug#5...
-2022-09-14 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow using a symbol as an index into an alist in Eshell
@@ -27195,7 +27195,7 @@
(esh-var-test/quoted-interp-var-assoc): Add checks for indexing via
symbol (bug#57787).
-2022-09-14 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Use '^' key for detach command bindings
@@ -27203,7 +27203,7 @@
Bind tab-window-detach to C-x w ^ t.
* lisp/window.el (window-prefix-map): Bind tab-detach to C-x t ^ f.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add image-transform-reset-to-original to manual
@@ -27211,14 +27211,14 @@
Add 'image-transform-reset-to-original'.
Suggested by Juri Linkov <juri@linkov.net>.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support fbsetbg in wallpaper.el
* lisp/image/wallpaper.el (wallpaper--default-commands)
(wallpaper-command): Add "fbsetbg".
-2022-09-14 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
pcomplete: Generate completions from --help messages
@@ -27240,7 +27240,7 @@
* test/lisp/pcomplete-tests.el (pcomplete-test-parse-gpg-help,
pcomplete-test-parse-git-help): Tests for the new functions.
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow specifying the color to use in image-elide
@@ -27249,14 +27249,14 @@
(image-elide): Prompt for a color.
(image-crop--crop-image-update): Pass the color along.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Automate exporting etc/NEWS to HTML
* admin/admin.el (make-news-html-file): New function.
* .gitignore: Ignore generated "etc/NEWS*.html" file.
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make image-crop variables into user options
@@ -27265,38 +27265,38 @@
(image-crop-elide-command, image-crop-crop-command): Make into
defcustoms.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support hsetroot in wallpaper.el
* lisp/image/wallpaper.el (wallpaper--default-commands)
(wallpaper-command): Add "hsetroot".
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up Emacs build by autoloading vc-git-annotate-switches-safe-p
* lisp/vc/vc-git.el (vc-git-annotate-switches-safe-p): Put the
definition into the loaddefs file.
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix image-mode.el compilation
* lisp/image/image-crop.el (text-property-search): Require.
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make image cropping work in image-mode buffers
* lisp/image-mode.el (image-mode): Update the buffer text after
cropping (bug#57793).
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't alter the buffer contents in image-crop by default
@@ -27309,7 +27309,7 @@
(image-crop--default-buffer-text): New default action -- don't
alter the buffer contents (bug#57793).
-2022-09-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Raise default max-specpdl-size and max-lisp-eval-depth
@@ -27325,7 +27325,7 @@
* doc/lispref/eval.texi (Eval):
* doc/lispref/variables.texi (Local Variables): Document new values.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Rename image transform commands to be less confusing
@@ -27339,7 +27339,7 @@
(Bug#51451)
* doc/emacs/files.texi (Image Mode): Update for above change.
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the save-match-data from shell-command
@@ -27347,14 +27347,14 @@
we're (in many cases) altering the match data earlier in the
function anyway (bug#57795).
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix textsec-suspicious foreground color
* lisp/international/textsec-check.el (textsec-suspicious): Set
the foreground, too (bug#57796).
-2022-09-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Also use eww URL transformers in the actual links
@@ -27364,7 +27364,7 @@
* lisp/net/shr.el (shr-url-transformer): New variable.
(shr-tag-a): Use it.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new command image-mode-wallpaper-set
@@ -27372,25 +27372,25 @@
(image-mode-wallpaper-set): New command.
(image-mode-map): Bind above new command to "W".
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add :type to wallpaper-command
* lisp/image/wallpaper.el (wallpaper-command): Make it easier to
customize by adding a :type declaration covering all supported values.
-2022-09-14 Evan Klitzke <evan@eklitzke.org> (tiny change)
+2023-04-15 Evan Klitzke <evan@eklitzke.org> (tiny change)
Add consteval and constinit keywords to cc-mode
* lisp/progmodes/cc-langs.el (c-modifier-kwds): Add consteval and
constinit keywords (introduced in C++20) (bug#51092).
-2022-09-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* Makefile.in (uninstall): Remove the *.eln files. (Bug#57771)
-2022-09-14 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix more misleading cl-case quoting in tests
@@ -27399,7 +27399,7 @@
(so-long-tests-assert-active, so-long-tests-assert-reverted): Remove
misleading quoting in cl-case clauses (bug#51368).
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make it easier to customize wallpaper command
@@ -27416,7 +27416,7 @@
(wallpaper-set): Use above new defcustoms to set the wallpaper.
Suggested by Eli Zaretskii <eliz@gnu.org>.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve wallpaper.el docs for recent changes
@@ -27424,7 +27424,7 @@
external command is needed on Haiku.
* etc/NEWS: Update entry on wallpaper.el.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Allow setting wallpaper from TTY
@@ -27434,11 +27434,11 @@
New variables.
(wallpaper--get-height-or-width): New helper function.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/image/wallpaper.el (wallpaper-commands): Add xwallpaper.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support recent KDE Plasma in wallpaper.el
@@ -27446,7 +27446,7 @@
Plasma.
(wallpaper--check-command): New cl-defmethod.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix desktop environment check on Ubuntu
@@ -27455,14 +27455,14 @@
XDG_CURRENT_DESKTOP directly. This fixes things on e.g. Ubuntu, where
XDG_CURRENT_DESKTOP might contain a string like "ubuntu:GNOME".
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new function xdg-current-desktop to xdg.el
* lisp/xdg.el (xdg-current-desktop): New function.
* test/lisp/xdg-tests.el (xdg-current-desktop): New test.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve messages in image-crop.el
@@ -27470,7 +27470,7 @@
(image-crop--crop-image-1): Improve messages and include the name
of the current operation.
-2022-09-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement wallpaper.el support for Haiku
@@ -27488,35 +27488,35 @@
(Fhaiku_send_message): New functions.
(syms_of_haikuselect): Add defsubrs.
-2022-09-14 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support wbg in wallpaper.el (Bug#57781)
* lisp/image/wallpaper.el (wallpaper-commands): Add "wbg".
(wallpaper--check-command): New cl-defmethod for "wbg".
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix recently-added cl-macs tests
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-error)
(cl-case-warning): Fix warning matches.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make help-fns--generalized-variable more resilient
* lisp/help-fns.el (help-fns--generalized-variable): Don't bug out
when a key binding isn't a symbol.
-2022-09-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Prefer defvar-keymap for repeat-map in outline.el
* lisp/outline.el (outline-navigation-repeat-map)
(outline-editing-repeat-map): Prefer defvar-keymap.
-2022-09-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port alignas definition to C23
@@ -27524,13 +27524,13 @@
macro, so do not rely on it. Instead, do not define alignas if C23
or later, or if C++11 or later.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix wallpaper.el build warning
* lisp/image/wallpaper.el (require): Fix build warning.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix help--analyze-key problem when not called from menu"
@@ -27539,7 +27539,7 @@
This should not be needed -- perhaps it was triggered by
an ephemeral code change in my running Emacs.
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use wallpaper-set in thumbs.el
@@ -27553,7 +27553,7 @@
(thumbs-before-setroot-hook, thumbs-after-setroot-hook): Make
obsolete.
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new command image-dired-set-wallpaper
@@ -27561,20 +27561,20 @@
(image-dired-set-wallpaper): New command.
(image-dired-thumbnail-mode-map): Bind above new command to "W".
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new library wallpaper.el
* lisp/image/wallpaper.el: New file.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove a nil cl-case case
* lisp/emacs-lisp/testcover.el (testcover-coverage-combine):
Remove the nil case, which will never match (bug#51368).
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some misleading quoting in cl-case
@@ -27587,11 +27587,11 @@
(dnd-begin-file-drag):
(dnd-begin-drag-files): Fix misleading quoting in cl-case (bug#51368).
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-09-13 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Have 'cl-case' warn about suspicious cases
@@ -27602,7 +27602,7 @@
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-warning): New unit
test (bug#51368).
-2022-09-13 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Signal an error if a fallback cl-case is misplaced
@@ -27613,21 +27613,21 @@
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-case-warning): New unit
test (bug#51368).
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move imagep in image.c from the debugging section
* lisp/simple.el (imagep): Remove.
* src/image.c (Fimagep): Always define.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix help--analyze-key problem when not called from menu
* lisp/help.el (help--analyze-key): Don't bug out when not called
from the menu.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new commands 'image-crop' and 'image-elide'
@@ -27637,13 +27637,13 @@
* lisp/image/image-crop.el: New file (bug#51331).
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function imagep
* lisp/simple.el (imagep): New function.
-2022-09-13 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix whitespace-tests on macOS
@@ -27651,7 +27651,7 @@
(whitespace-tests--empty-eob): Use C-a/C-e instead of
<home>/<end> (bug#57763).
-2022-09-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
comp-tests.el: Enable compilation again
@@ -27663,7 +27663,7 @@
Don't quote the type expressions.
(comp-tests-type-spec-tests): Quote them here instead.
-2022-09-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix last change in image.c
@@ -27673,7 +27673,7 @@
reason if librsvg happens to return an empty message text.
(syms_of_image): Don't DEFSYM string-trim-right. (Bug#57755)
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in several cases
@@ -27705,7 +27705,7 @@
* lisp/wid-edit.el (widget-key-sequence-map): Prefer defvar-keymap in
some easy-to-convert cases.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Enable undo in eww buffers
@@ -27715,7 +27715,7 @@
* lisp/net/shr.el (shr-image-fetched): Inhibit undo tracking.
-2022-09-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Indirect Buffers manual improvement
@@ -27724,7 +27724,7 @@
clone-indirect-buffer-other-window here since they do the pretty
much the same (bug#57753).
-2022-09-13 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Avoid double svg error reporting and segfaults
@@ -27735,14 +27735,14 @@
* test/manual/image-tests.el (image-tests-load-image/svg-too-big)
(image-tests-load-image/svg-invalid): Test it (bug#57755).
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in pixel-scroll-precision-mode-map
* lisp/pixel-scroll.el (pixel-scroll-precision-mode-map): Prefer
defvar-keymap.
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in tab-line.el
@@ -27750,7 +27750,7 @@
(tab-line-tab-close-map, tab-line-left-map, tab-line-right-map):
Prefer defvar-keymap.
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in lisp/epa*.el
@@ -27758,38 +27758,38 @@
* lisp/epa.el (epa-key-list-mode-map, epa-key-mode-map): Prefer
defvar-keymap.
-2022-09-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frames with explicit parent being unmapped after parent shuts down
* src/xterm.c (handle_one_xevent): Delete leftover _XEMBED_INFO
property after parent shuts down.
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
86f0601392 ; * admin/notes/www: Fix typos.
2cdb9d03fd ; * admin/make-tarball.txt: Minor clarifications.
-2022-09-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
739b5d0e52 Update HISTORY for Emacs 28.2
-2022-09-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* Version 28.2 released.
-2022-09-12 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix comp-tests.el problem after reconfiguring
* test/src/comp-tests.el: Do not byte-compile, as the .elc
file would be machine-dependent (bug#51104).
-2022-09-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Document the recently added branch commands (bug#50344)
@@ -27803,14 +27803,14 @@
"c" from vc-create-tag to vc-create-branch, and "s" from
vc-retrieve-tag to vc-switch-branch.
-2022-09-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc.el (vc-print-branch-log): Fix interactive spec.
For reading vc-read-revision in the interactive spec use the same 'backend'
and 'rootdir' as in the body of the same function.
-2022-09-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
'C-x v b' prefix key is used for branch commands to create/switch/print branch
@@ -27828,7 +27828,7 @@
* lisp/vc/vc-git.el (vc-git-create-tag): For a new branch read
its start-point. Ask a confirmation if modified files exist.
-2022-09-12 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Add new C-x w prefix map
@@ -27836,7 +27836,7 @@
(ctl-x-map): Unbind split-root-window-below and
split-root-window-right. Bind window-prefix-map to C-x w.
-2022-09-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Skip manual GIF metadata test on MS-Windows
@@ -27845,7 +27845,7 @@
(image-tests-image-metadata/gif): Skip test on MS-Windows when
using native image API. (Bug#57691)
-2022-09-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't overwrite error message in `x' in package.el
@@ -27854,14 +27854,14 @@
(package-menu-execute): Don't overwrite the error message(s) with
a success message (bug#51201).
-2022-09-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove some XEmacs references in speedbar.el
* lisp/speedbar.el (speedbar-toggle-etags): Remove some references
to etags support being XEmacs specific (bug#51102).
-2022-09-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document :vert-only tool bar property
@@ -27870,7 +27870,7 @@
what it intended to do didn't really make that much sense either,
so perhaps the prop should just be renamed :image-only?
-2022-09-12 Arthur Miller <arthur.miller@live.com>
+2023-04-15 Arthur Miller <arthur.miller@live.com>
Remove edebug props in edebug-remove-instrumentation
@@ -27879,14 +27879,14 @@
(edebug-remove-instrumentation): Use it to remove pros added while
running edebug.
-2022-09-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix length issues in gnus-cloud-make-chunk
* lisp/gnus/gnus-cloud.el (gnus-cloud-make-chunk): Make buffer
unibyte (bug#50988).
-2022-09-12 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Consider key=val labels when renumbering
@@ -27897,31 +27897,31 @@
* test/lisp/textmodes/reftex-tests.el
(reftex-renumber-simple-labels): New Test.
-2022-09-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp test
* lisp/net/tramp-compat.el (tramp-compat-rx):
Add `tramp-autoload' function property.
-2022-09-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix focus restoration upon x_mouse_leave again
* src/xterm.c (x_mouse_leave): Call xi_handle_focus_change after
changing the implicit focus.
-2022-09-11 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update HISTORY for Emacs 28.2
* etc/HISTORY: Update for the Emacs 28.2 release.
-2022-09-11 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el: Bump the version.
-2022-09-11 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Restrict replace-*-in-region to the bounds defined by caller
@@ -27931,7 +27931,7 @@
* test/lisp/subr-tests.el (test-replace-string-in-region): Add
regression tests (bug#57733).
-2022-09-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Disable Tramp cache for relative file names
@@ -27945,7 +27945,7 @@
`tramp-cache-undefined'.
(tramp-flush-file-function): Revert last change.
-2022-09-11 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
whitespace: Redo BoB/EoB empty line highlighting
@@ -27964,7 +27964,7 @@
whitespace--fu, whitespace-tests--empty-bob,
whitespace-tests--empty-eob): Add tests.
-2022-09-11 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
whitespace: Include empty final line in BoB empty match
@@ -27972,14 +27972,14 @@
last line trailing whitespace in the BoB empty line match to ensure
that those characters get highlighted.
-2022-09-11 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
whitespace: Reset `whitespace-buffer-changed' when refontifying
* lisp/whitespace.el (whitespace-post-command-hook): Add missing reset
of `whitespace-buffer-changed' back to nil between commands.
-2022-09-11 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
ert-x: New `ert-with-test-buffer-selected' convenience macro
@@ -27990,19 +27990,19 @@
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-test-test-buffer-selected/*): Add tests.
-2022-09-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Revert "Add new command 'toggle-theme'"
This reverts commit f31b9d86a67f1b3fd70339f277dff52478890351.
-2022-09-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Revert "Add new user option 'custom-ensure-single-theme'"
This reverts commit b4dbf7184cd68ecd8d1a27fbc1407be0eae7e64c.
-2022-09-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add new user option 'custom-ensure-single-theme'
@@ -28010,7 +28010,7 @@
* lisp/custom.el (custom-ensure-single-active-theme): Add it.
(load-theme): Use it.
-2022-09-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add new command 'toggle-theme'
@@ -28024,7 +28024,7 @@
* lisp/cus-theme.el (describe-theme-1): Say if a theme has a dual.
* lisp/custom.el (toggle-theme): Add new command.
-2022-09-11 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Improve some shell highlight doc strings
@@ -28034,7 +28034,7 @@
* lisp/ielm.el (ielm-comint-fl-enable):
* lisp/comint.el: (comint--fl-fontify-region): Improve doc strings.
-2022-09-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make it easier to clear the Motif drag window for debugging
@@ -28045,21 +28045,21 @@
communicate via the Motif protocol after a defective/old client
sets the drag window without setting the disconnect mode.
-2022-09-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc.el (vc-diff-patch-string): Fix arg in revert-buffer-function.
-2022-09-11 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
* lisp/vc/vc.el (vc-deduce-backend): Handle eshell-mode.
-2022-09-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from sdwolfz/native-compiler-warning
GitHub-reference: https://github.com/jwiegley/use-package/issues/998
-2022-09-10 Codruț Constantin Gușoi <mail+git@codrut.pro>
+2023-04-15 Codruț Constantin Gușoi <mail+git@codrut.pro>
Fix emacs native compilation warning for bind-key
@@ -28073,14 +28073,14 @@
usage of unescaped single quotes (use \= or different quoting)
```
-2022-09-10 ookami <mail@ookami.one> (tiny change)
+2023-04-15 ookami <mail@ookami.one> (tiny change)
Fix project-remember-projects-under when recursing
* lisp/progmodes/project.el (project-remember-projects-under):
Actually recurse into directories (bug#57714).
-2022-09-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Ensure, that Tramp cache works over absolute file names
@@ -28132,7 +28132,7 @@
* lisp/net/tramp-sudoedit.el (tramp-sudoedit-handle-make-symbolic-link):
Do not check remoteness of TARGET anymore.
-2022-09-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compliance with the XDND specification when dropping on a proxy
@@ -28145,14 +28145,14 @@
(x_connection_closed): Give the right toplevel to the client
message sending functions.
-2022-09-10 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Make wdired match dired with symlink permissions
* lisp/wdired.el (wdired-do-perm-changes): Do not follow symlinks,
to be consistent with plain dired (bug#50189).
-2022-09-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `format-prompt' use `substitute-command-keys'
@@ -28160,14 +28160,14 @@
* lisp/minibuffer.el (format-prompt): Run through
`substitute-command-keys' (bug#51040).
-2022-09-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix diff-mode.el compilation warnings
* lisp/vc/diff-mode.el (diff-auto-refine-mode): Suppress
byte-compile warnings.
-2022-09-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New function substitute-quotes
@@ -28188,7 +28188,7 @@
* lisp/progmodes/octave.el (octave-help): Use the new function
instead of 'substitute-command-keys'.
-2022-09-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fixes for 'text-quoting-style'
@@ -28200,25 +28200,25 @@
not read the value of this variable directly; use Ftext_quoting_style
instead (bug#51040).
-2022-09-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make a flymake.texi code example more resilient
* doc/misc/flymake.texi (An annotated example backend): Make the
example code resilient wrt. narrowed buffers (bug#51437).
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* src/w32image.c (w32_can_use_native_image_api): Fix comment.
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support outline-minor-mode in emacs-authors-mode
* lisp/textmodes/emacs-authors-mode.el (emacs-authors-mode):
Support and enable outline-minor-mode.
-2022-09-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix several printfs for 32 bit systems
@@ -28227,24 +28227,24 @@
* src/alloc.c (check_pure_size): Use right length modifier when
printing ptrdiff_t.
-2022-09-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from CeleritasCelery/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/743
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/subr.el (string-split): New alias for split-string.
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Set vc-git-annotate-switches to "-w" in .dir-locals.el
* .dir-locals.el: Set vc-git-annotate-switches to "-w".
Ref: https://lists.gnu.org/r/emacs-devel/2022-09/msg00453.html
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Accept "-w" as safe value for vc-git-annotate-switches
@@ -28253,7 +28253,7 @@
(vc-git-annotate-switches): Use above new predicate function to
check if it's :safe.
-2022-09-09 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Prefer documentchanges to changes in server-initiated edits
@@ -28268,7 +28268,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/704
-2022-09-09 jgart <47760695+jgarte@users.noreply.github.com> (tiny change)
+2023-04-15 jgart <47760695+jgarte@users.noreply.github.com> (tiny change)
Add support for jedi-language-server (again)
@@ -28280,7 +28280,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/961
-2022-09-09 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix problem with Glib 2.73.2+ and SIGCHLD handler
@@ -28288,13 +28288,13 @@
* src/process.c (init_process_emacs) [HAVE_GLIB && !WINDOWSNT]:
Adjust to Glib 2.73.2 behavior change on Linux kernel 5.3+.
-2022-09-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from sdwolfz/native-compiler-warning
GitHub-reference: https://github.com/jwiegley/use-package/issues/997
-2022-09-09 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Input indentation for M-x shell
@@ -28308,7 +28308,7 @@
* lisp/shell.el (shell-mode): Set up input indentation according to
sh-mode (bug#51940).
-2022-09-09 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Highlight non-existent commands in M-x shell
@@ -28332,7 +28332,7 @@
(shell-highlight-undef-reset-mode): New functions and buffer local
variables (bug#51940).
-2022-09-09 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Input fontification for M-x ielm
@@ -28341,7 +28341,7 @@
(ielm-indirect-setup-hook): New hook.
(inferior-emacs-lisp-mode): Set up and enable input fontification.
-2022-09-09 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Input fontification for M-x shell
@@ -28364,7 +28364,7 @@
* lisp/shell.el (shell-mode): Set up input indentation according to
sh-mode (bug#51940).
-2022-09-09 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Implement a general input fontification mechanism for comint modes
@@ -28378,14 +28378,14 @@
* lisp/shell.el (shell-mode): Set up input indentation according to
sh-mode (bug#51940).
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix "warn-lambda-malformed-interactive-spec.el" even more
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-lambda-malformed-interactive-spec.el"): Adjust test further.
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't bind `s' in the normal backtrace map
@@ -28396,7 +28396,7 @@
* lisp/emacs-lisp/edebug.el (edebug-pop-to-backtrace): Use it.
(edebug-backtrace-mode-map, edebug-backtrace-mode): New mode.
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update a bytecomp test
@@ -28404,14 +28404,14 @@
("warn-lambda-malformed-interactive-spec.el"): Update test to code
change.
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in byte-compile-lambda warning
* lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Fix typo in
message (bug#57690).
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix --without-x compilation warnings
@@ -28419,7 +28419,7 @@
* lisp/image/image-dired-external.el (clear-image-cache): Fix
compilation warning (bug#57695).
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix tramp-loaddefs compilation"
@@ -28427,14 +28427,14 @@
The cookie seemed to go to lisp/loaddefs.el for a reason, but a bootstrap is needed.
-2022-09-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix tramp-loaddefs compilation
* lisp/net/tramp-compat.el: Fix build by putting tramp-compat-rx
in the right loaddefs file.
-2022-09-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make use of rx in Tramp backward compatoble
@@ -28460,14 +28460,14 @@
* test/lisp/net/tramp-archive-tests.el:
* test/lisp/net/tramp-tests.el: Use `tramp-compat-rx' where indicated.
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix SVG loading test for old librsvg 2.40.1
* test/manual/image-tests.el (image-tests-load-image/svg-invalid): Fix
test for old librsvg 2.40.1. (Bug#57691)
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't warn about some deleted variables in rst.el
@@ -28478,7 +28478,7 @@
(rst-level-4-face, rst-level-5-face, rst-level-6-face): Don't issue
obsoletion warnings for variables deleted in 24.3.
-2022-09-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete variable window-system-version obsolete since 24.3
@@ -28497,7 +28497,7 @@
* lisp/textmodes/artist.el (artist-submit-bug-report): Don't use
above deleted variable.
-2022-09-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete many items obsolete since 24.3
@@ -28605,14 +28605,14 @@
* admin/cus-test.el (cus-test-get-options):
* lisp/pcomplete.el: Doc fixes; don't mention removed items.
-2022-09-09 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Display error in emacsclient if setsockopt failed
* lib-src/emacsclient.c (set_tcp_socket, set_socket_timeout): Display
an error message if setsockopt failed.
-2022-09-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some redundant calls to x_ignore_errors_for_next_request
@@ -28620,7 +28620,7 @@
Wrap some requests in x_ignore_errors_for_next_request instead
of calling it each time.
-2022-09-09 Codruț Constantin Gușoi <mail+git@codrut.pro>
+2023-04-15 Codruț Constantin Gușoi <mail+git@codrut.pro>
Fix emacs native compilation warning
@@ -28636,7 +28636,7 @@
emacs-lisp-native-compile-and-load` before and after the changes to see the
warning is removed.
-2022-09-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove long-broken TESTRM interface
@@ -28644,20 +28644,20 @@
(fatal, main): Delete functions and code block. They don't work
and rely on XLIB_ILLEGAL_ACCESS.
-2022-09-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in proced.el
* lisp/proced.el (proced-mode-map): Prefer defvar-keymap.
-2022-09-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Set indent-tabs-mode for lisp-data-mode in .dir-locals.el
* .dir-locals.el (lisp-data-mode): Enforce existing indent-tabs-mode
policy.
-2022-09-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Display librsvg error when loading bad SVG
@@ -28666,7 +28666,7 @@
* test/manual/image-tests.el
(image-tests-load-image/svg-invalid): New test.
-2022-09-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't return poorly supported "special elements" in eglot-imenu
@@ -28697,14 +28697,14 @@
* NEWS.md: Mention change
-2022-09-08 Richard Stallman <rms@gnu.org>
+2023-04-15 Richard Stallman <rms@gnu.org>
Decode base64 attachments revealed by decryption.
* lisp/mail/rmail.el (rmail-epa-decode): New function.
(rmail-epa-decrypt): Call rmail-epa-decode.
-2022-09-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -28717,11 +28717,11 @@
# doc/emacs/misc.texi
# etc/NEWS
-2022-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/keyboard.c (safe_run_hook_funcall): Fix thinko
-2022-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/keyboard.c (safe_run_hook_funcall): Fix recent regression
@@ -28729,7 +28729,7 @@
later reused (and assumed unchanged) by the caller.
https://lists.gnu.org/archive/html/emacs-devel/2022-09/msg00329.html
-2022-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
test: Remove redundant "" arg to `mapconcat`
@@ -28750,7 +28750,7 @@
* test/lisp/ansi-color-tests.el (ansi-color-incomplete-sequences-test):
Remove redundant "" arg to `mapconcat`.
-2022-09-08 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add node-only parameter to treesit-query-capture
@@ -28759,11 +28759,11 @@
* lisp/treesit.el (treesit-query-in): Add node-only.
* src/treesit.c (Ftreesit_query_capture): Add node-only.
-2022-09-08 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-can-enable-p): Minor fix.
-2022-09-08 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
Add new user option ecomplete-auto-select
@@ -28771,7 +28771,7 @@
(bug#53935).
(ecomplete-display-matches): Use it.
-2022-09-08 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Add prefix argument to outline-cycle-buffer
@@ -28779,18 +28779,18 @@
headings up to a given level. Handle the case where the top
heading level is not 1.
-2022-09-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix diff-add-log-use-relative-names prompting
* lisp/vc/diff-mode.el (diff-add-log-use-relative-names): Autoload
to avoid prompting when set via dir-locals.
-2022-09-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* src/xrdb.c (main) [TESTRM]: Replace gets with fgets.
-2022-09-08 Manuel Uberti <manuel.uberti@inventati.org>
+2023-04-15 Manuel Uberti <manuel.uberti@inventati.org>
Fix jdtls support
@@ -28800,7 +28800,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/1008
-2022-09-08 Artem Pyanykh <arr@fb.com> (tiny change)
+2023-04-15 Artem Pyanykh <arr@fb.com> (tiny change)
Add marksman server for markdown
@@ -28810,7 +28810,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/1013
-2022-09-08 Sam James <sam@gentoo.org> (tiny change)
+2023-04-15 Sam James <sam@gentoo.org> (tiny change)
Recognize zstandard (.zst) compressed Info files
@@ -28818,7 +28818,7 @@
from the zstd compression tool. This allows reading Info pages
compressed with 'zstd'. (Bug#57636)
-2022-09-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make call of remote `id' more performant in Tramp
@@ -28859,7 +28859,7 @@
* test/lisp/net/tramp-tests.el (tramp--test-deftest-with-perl):
Suppress also remote `id'.
-2022-09-08 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add new user option 'diff-add-log-use-relative-names'
@@ -28869,7 +28869,7 @@
(diff-add-log-current-defuns): Use new option.
* doc/emacs/maintaining.texi (Log Buffer): Mention new option.
-2022-09-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid selecting for excessive output configuration events
@@ -28878,7 +28878,7 @@
itself, and output property changes will otherwise lead to 2
second freezes over connections with high network latency.
-2022-09-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bump Emacs version to 28.2
@@ -28887,14 +28887,14 @@
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 28.2.
-2022-09-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
dired-guess: Support zstandard archives
* lisp/dired-aux.el (dired-guess-shell-alist-default): Support
zstandard archives.
-2022-09-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Move some tests to test/manual/image-tests.el
@@ -28902,7 +28902,7 @@
* test/manual/image-tests.el: ...to here.
Suggested by Eli Zaretskii <eliz@gnu.org>.
-2022-09-07 Morgan Smith <Morgan.J.Smith@outlook.com>
+2023-04-15 Morgan Smith <Morgan.J.Smith@outlook.com>
image-dired: Fix moving forward when marking files
@@ -28910,7 +28910,7 @@
movement consistent regardless of the value of
image-dired-marking-shows-next. (Bug#57651)
-2022-09-07 Morgan Smith <Morgan.J.Smith@outlook.com>
+2023-04-15 Morgan Smith <Morgan.J.Smith@outlook.com>
Make image-dired-rotate-original-{left,right} respect marks
@@ -28918,14 +28918,14 @@
(image-dired-rotate-original-right): Rotate all marked
files. (Bug#57651)
-2022-09-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix tree-sitter manual entry for treesit-should-enable-p
* doc/lispref/parsing.texi: Move two entries in the front to "Using
Parser" section, replacing the old entry.
-2022-09-07 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in icomplete.el
@@ -28933,7 +28933,7 @@
(icomplete-fido-mode-map)
(icomplete-vertical-mode-minibuffer-map): Prefer defvar-keymap.
-2022-09-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove treesit-disabled-modes and change treesit-should-enable-p
@@ -28950,7 +28950,7 @@
(treesit-should-enable-p): Change to treesit-can-enable-p and remove
checks of treesit-disabled-modes.
-2022-09-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add manual entry for tree-sitter search functions
@@ -28961,7 +28961,7 @@
* lisp/treesit.el (treesit-search-forward, treesit-search-beginning)
(treesit-search-end): Minor docstring fix-up.
-2022-09-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter font-lock settings helper function/macro
@@ -28982,14 +28982,14 @@
treesit-font-lock-settings, treesit-font-lock-rules,
treesit-font-lock-defaults.
-2022-09-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improve save-match-data hygiene
* lisp/subr.el (save-match-data): Use uninterned variable symbol.
Remove outdated comments.
-2022-09-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add instructions to 'standard-display-by-replacement-char'
@@ -28997,7 +28997,7 @@
preamble to the generated code with instructions. Suggested by
Richard Stallman <rms@gnu.org>.
-2022-09-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Don't follow symlinks in w32notify file watches
@@ -29006,7 +29006,7 @@
* src/w32.c (symlinks_supported): New function.
* src/w32.h (symlinks_supported): Add prototype.
-2022-09-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify dolist and dotimes
@@ -29020,11 +29020,11 @@
bindings generated by the macros, and discard the alternative code
versions for non-lexbind code. Use sensible variable names.
-2022-09-07 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Untabify rcirc.el
-2022-09-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix nsfont breakage since 6b1ed2f2c99a1c2da56c5f434570c438cad6576d
@@ -29033,7 +29033,7 @@
(ns_descriptor_to_entity): Fix reporting of spacing on fonts.
(ns_findfonts): Fix coding style.
-2022-09-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reenable reporting of frame movement on NS
@@ -29041,14 +29041,14 @@
generate MOVE_FRAME_EVENTS, and use kbd_buffer_store_event
instead.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve image-tests.el Commentary
* test/src/image-tests.el: Doc fix; explain how to run from
command line.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update ChangeLog and AUTHORS for Emacs 28.2
@@ -29056,37 +29056,37 @@
* etc/AUTHORS:
* etc/NEWS: Update for Emacs 28.2.
-2022-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/jit-lock.el (jit-lock-function): Update comment
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/idlwave.texi (Troubleshooting): Don't say "Emacsen".
-2022-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/jit-lock.el (jit-lock-function): Don't fontify invisible text
See bug#57447. This can speed up fontification significantly when using
things like outline-mode.
-2022-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* etc/NEWS.28: Mention `make-closure`
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/mh-e.texi (Getting MH-E): Update.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't mention ancient Gnus versions in MH-E manual
* doc/misc/mh-e.texi (Preface, Reading PGP, Procmail): Don't mention
pre-2000 versions of Gnus.
-2022-09-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the MS-Windows build
@@ -29095,7 +29095,7 @@
(set_socket_timeout) [WINDOWSNT]: Protect against too-large values
of timeout.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't mention very old Emacs versions in docs
@@ -29104,11 +29104,11 @@
* doc/misc/viper.texi (Loading Viper): Delete references to
very old versions of Emacs.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/semantic.texi: Delete unused macro.
-2022-09-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly handle frame synchronization on fullscreen KWin
@@ -29119,7 +29119,7 @@
`_NET_WM_BYPASS_COMPOSITOR'.
* src/xterm.h (struct x_display_info): Likewise.
-2022-09-06 Kai Tetzlaff <emacs@tetzco.de>
+2023-04-15 Kai Tetzlaff <emacs@tetzco.de>
Fix (mostly multibyte) issues in sieve-manage.el (Bug#54154)
@@ -29169,14 +29169,14 @@
(sieve-manage-open):
(sieve-manage-send): Improve logging.
-2022-09-06 Kai Tetzlaff <emacs@tetzco.de>
+2023-04-15 Kai Tetzlaff <emacs@tetzco.de>
Improve robustnes of `sieve-manage-quit' in case of errors
* lisp/net/sieve.el (sieve-manage-quit): Avoid killing buffers it's
not supposed to touch (bug#54154).
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add tests for opening different image formats
@@ -29192,14 +29192,14 @@
(image-tests-load-image/xbm)
(image-tests-load-image/xpm): New tests.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix interactive image.c tests
* test/src/image-tests.el (image-tests-image-metadata/gif)
(image-tests-image-metadata/webp): Fix tests.
-2022-09-06 Drew Adams <drew.adams@oracle.com>
+2023-04-15 Drew Adams <drew.adams@oracle.com>
Add some new find-lisp commands
@@ -29211,7 +29211,7 @@
the new command.
(find-lisp-format): Make symlink output more regular.
-2022-09-06 Laurence Warne <laurencewarne@gmail.com>
+2023-04-15 Laurence Warne <laurencewarne@gmail.com>
Apply syntax highlighting for all python f-strings
@@ -29219,7 +29219,7 @@
(python--font-lock-f-strings): Edit functions to use a regular
expression matching all f-strings (bug#56757).
-2022-09-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use secondary groups when checking permissions in Tramp (Bug#57044)
@@ -29258,7 +29258,7 @@
* test/lisp/net/tramp-archive-tests.el:
* test/lisp/net/tramp-tests.el: Use `blank' in `rx' forms.
-2022-09-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make ffap-file-finder work again
@@ -29268,14 +29268,14 @@
* lisp/ido.el (ido-everywhere): Add an interstitial to fulfil
ffap-file-handler semantics.
-2022-09-06 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
ecbdb3b0ad * lisp/server.el: Improve Commentary.
ee5c591249 Explain how the font appearance can be fine-tuned in fbterm.
-2022-09-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-symbol-macrolet: Fix recent regression
@@ -29307,7 +29307,7 @@
* test/lisp/emacs-lisp/cl-macs-tests.el
(cl-macs-test--symbol-macrolet): Add a test case.
-2022-09-05 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new --timeout flag to emacsclient
@@ -29323,14 +29323,14 @@
* doc/man/emacsclient.1: Document the above new option.
* etc/NEWS: Announce it.
-2022-09-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Disable failing cl-lib-symbol-macrolet-hide test for now
* test/lisp/emacs-lisp/cl-lib-tests.el
(cl-lib-symbol-macrolet-hide): Disable until code is fixed.
-2022-09-05 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Simplify describe-function.
@@ -29339,14 +29339,14 @@
(help-fns--key-bindings): but use it directly there instead.
This simplifies 1d1158397b.
-2022-09-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fit the re-builder window to the buffer
* lisp/emacs-lisp/re-builder.el (re-builder): Fit the height to
the buffer (bug#56772).
-2022-09-05 Hugo Heagren <hugo@heagren.com>
+2023-04-15 Hugo Heagren <hugo@heagren.com>
Add new functions for splitting the root window
@@ -29375,7 +29375,7 @@
* doc/lispref/windows.texi (Splitting Windows): Add documentation for
`split-root-window-below' (bug#56791).
-2022-09-05 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Font lock long Git commit summary lines
@@ -29390,11 +29390,11 @@
* etc/NEWS (VC): Document the change.
* .dir-locals.el: Set vc-git-log-edit-summary-target-len.
-2022-09-05 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/server.el: Improve Commentary.
-2022-09-05 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Explain how the font appearance can be fine-tuned in fbterm.
@@ -29402,14 +29402,14 @@
Xft font specifications with which the font appearance can be
fine-tuned.
-2022-09-05 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
5713c730f2 Update to Org 9.5.5
aad38d6010 * lisp/emacs-lisp/comp.el (comp-run-async-workers): Fail m...
-2022-09-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash while converting empty vector to X data
@@ -29417,7 +29417,7 @@
vector represents INTEGER data, instead of blindly trying to
aref it's first element.
-2022-09-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Let external Eshell processes send stdout and stderr to different places
@@ -29432,7 +29432,7 @@
(esh-proc-test/output/stderr-to-buffer)
(esh-proc-test/exit-status/with-stderr-pipe): New tests (bug#21605).
-2022-09-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Put Eshell's bookkeeping data for external processes on the process object
@@ -29461,7 +29461,7 @@
(esh-proc-test/kill-process/background-prompt): ... this, and use
'eshell-wait-for-subprocess' instead of 'sit-for'.
-2022-09-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add support for more kinds of redirect operators in Eshell
@@ -29493,7 +29493,7 @@
* etc/NEWS: Announce this change.
-2022-09-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow checking specific Eshell handles for interactive output
@@ -29506,7 +29506,7 @@
* lisp/eshell/em-term.el (eshell-visual-command-p): Check for
interactivity of both stdout and stderr.
-2022-09-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Simplify Eshell handle functions and add tests/documentation
@@ -29534,7 +29534,7 @@
argument types.
(Input/Output): Expand documentation for redirection and pipelines.
-2022-09-04 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Add basic test coverage for overlay modification hooks
@@ -29544,14 +29544,14 @@
(overlay-tests-get-recorded-modification-hooks): New function
(bug#57150).
-2022-09-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify that the region is in the Emacs manual
* doc/emacs/mark.texi (Mark): Try to clarify what's so special
about Emacs' regions (bug#50950).
-2022-09-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark some filenotify tests unstable on EMBA
@@ -29559,18 +29559,18 @@
(file-notify-test09-watched-file-in-watched-dir): Mark as unstable
on EMBA, because they seem to fail regularly.
-2022-09-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix comment in tramp.el
-2022-09-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Don't replace the first character with an arrow in outline-minor-mode
* lisp/outline.el (outline--make-button-overlay): Add the first character
to the displayed outline button (bug#56820).
-2022-09-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use use-region-beginning/end in replacement commands (bug#45607)
@@ -29586,7 +29586,7 @@
* lisp/simple.el (use-region-noncontiguous-p): New function.
(region-noncontiguous-p): Return more meaningful value.
-2022-09-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a basic widget type for buffer predicates
@@ -29594,7 +29594,7 @@
* lisp/outline.el (outline-minor-mode-use-buttons): Use it.
* lisp/wid-edit.el (buffer-predicate): New widget type.
-2022-09-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix earlier change to xterm.c
@@ -29602,7 +29602,7 @@
the call to x_new_focus_frame does with the core focus, and do
the equivalent with the XInput 2 focus.
-2022-09-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix rx forms in Tramp
@@ -29645,7 +29645,7 @@
* test/lisp/net/tramp-tests.el (tramp-test17-insert-directory)
(tramp--test-share-p): Simplify rx forms.
-2022-09-04 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Add new function `seq-positions'
@@ -29658,7 +29658,7 @@
* test/lisp/emacs-lisp/seq-tests.el (test-seq-positions): Test it
(bug#57548).
-2022-09-04 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Add Python import management commands
@@ -29670,7 +29670,7 @@
(python-remove-import, python-sort-imports, python-fix-imports): New
interactive commands (bug#57574).
-2022-09-04 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Python shells dedicated to a project
@@ -29683,7 +29683,7 @@
(python-shell-get-buffer): Adapt to project-dedicated shells
(bug#56997).
-2022-09-04 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Add new function `seq-remove-at-position'
@@ -29696,7 +29696,7 @@
* test/lisp/emacs-lisp/seq-tests.el (test-seq-remove-at-position):
Test it.
-2022-09-04 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Improve documentation of several functions in seq.el
@@ -29710,21 +29710,21 @@
(seq-difference): Use more standard wording in the docstrings
(bug#57561).
-2022-09-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename the Mice node in the Emacs manual
* doc/emacs/commands.texi (User Input, Keys): Rename "Mice" to
Mouse Input.
-2022-09-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some help-fns test failures
* lisp/help-fns.el (help-fns--key-bindings): Fix test failures
from recent change.
-2022-09-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
New command to facilitate text-mode display of unsupported chars
@@ -29733,18 +29733,18 @@
* etc/NEWS: Announce it.
-2022-09-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix update of Dired display when it was called on a cons cell
* lisp/dired.el (dired-internal-do-deletions): Make sure that FN's
directory entry is updated on display. (Bug#57565)
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/term/linux.el (gpm-mouse-enable): Remove left-over declaration
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
gv.el and cl-macs.el: Fix bug#57397
@@ -29755,11 +29755,11 @@
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-test--symbol-macrolet):
Add new testcase.
-2022-09-03 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.5
-2022-09-03 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Look up keybindings in correct buffer in describe-function.
@@ -29769,7 +29769,7 @@
was invoked as argument to 'help-fns--key-bindings'.
Fixes bug#57568.
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Fail more gracefully
@@ -29777,7 +29777,7 @@
`~/.emacs.d/eln-cache` directory.
Fixes bug#57562. See also Debian's bug #1017739.
-2022-09-03 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Update error message to reflect variable rename
@@ -29786,14 +29786,14 @@
[ According to the Git metadata, this commit 8436e0bee9cf7a was already
merged from `emacs-28`, yet the code says it was not. :-( ]
-2022-09-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix indexing of mouse-wheel events
* doc/emacs/frames.texi (Mouse Commands): Add index entries for
wheel events.
-2022-09-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "* doc/emacs/commands.texi (Mice): Improve indexing."
@@ -29802,7 +29802,7 @@
The index entries it added don't belong to the place where they were
added.
-2022-09-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
lisp/emacs-lisp/seq.el: remove unnecessary compatibility code
@@ -29810,21 +29810,21 @@
Simplify unnecessarily guarded code, as this file will only ever be
used with the same version of Emacs.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/emacs/commands.texi (Mice): Improve indexing.
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge branch 'master' of git+ssh://git.sv.gnu.org/srv/git/emacs
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/macroexp.el (macroexp--compiler-macro): Soften message
Clarify that the error is "harmless".
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-macs.el: Use `define-symbol-prop` (bug#50869)
@@ -29832,17 +29832,17 @@
`define-symbol-prop` over `put` so `unload-feature` can undo
those definitions.
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/loadhist.el (loadhist-unload-element): Remove auxiliary function info
See bug#50869.
-2022-09-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/help-fns.el (find-lisp-object-file-name): Revert last change
-2022-09-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation of scroll wheel event types in new Mice node
@@ -29850,7 +29850,7 @@
scroll wheel event types; fix doc for Emacs 29 and describe
horizontal wheel movement.
-2022-09-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around another X server bug in crossing event dispatch
@@ -29859,7 +29859,7 @@
(x_mouse_leave): Avoid invalid reads of
dpyinfo->x_focus_event_frame on input extension builds.
-2022-09-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a Mice node in the Emacs manual
@@ -29867,18 +29867,18 @@
document mouse buttons.
(Mice): New node (bug#50948).
-2022-09-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* subr.el (buffer-match-p): Use 'pcase' (bug#57502)
-2022-09-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention M-x list-packages in the Help node in the Emacs manual
* doc/emacs/help.texi (Help): Mention listing packages
(bug#50936).
-2022-09-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Inhibit nativecomp of loaddefs files
@@ -29888,7 +29888,7 @@
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--rubric):
Inhibit native-comp, because it's not very useful for loaddefs files.
-2022-09-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around potential X server bug
@@ -29897,7 +29897,7 @@
supposed to deliver them to us, and it messes up MPX focus
tracking. (bug#57468)
-2022-09-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Teach 'max-char' about the Unicode code range
@@ -29912,20 +29912,20 @@
* doc/lispref/nonascii.texi (Character Codes): Update the
documentation of 'max-char'.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Increase image-dired-show-all-from-dir-max-files to 1000
* lisp/image/image-dired.el
(image-dired-show-all-from-dir-max-files): Increase to 1000.
-2022-09-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix image-dired-util.el compile warning
* lisp/image/image-dired-util.el (require): Require for cl-case.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new defgroup image-dired-dired
@@ -29936,7 +29936,7 @@
(image-dired-dired-append-when-browsing)
(image-dired-dired-disp-props): Use above new defgroup.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Minor cleanups
@@ -29956,7 +29956,7 @@
* lisp/image/image-dired.el (image-dired-line-up-dynamic)
(image-dired-display-window-width): Don't use above obsolete function.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Prefer defvar-keymap
@@ -29967,7 +29967,7 @@
(image-dired-thumbnail-mode-map)
(image-dired-display-image-mode-map): Prefer defvar-keymap.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Add new defgroup image-dired-external
@@ -29988,7 +29988,7 @@
(image-dired-cmd-write-exif-data-program)
(image-dired-cmd-write-exif-data-options): Use above new defgroup.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Make HTML gallery generation obsolete
@@ -30002,7 +30002,7 @@
(image-dired--create-gallery-lists, image-dired--hidden-p)
(image-dired-gallery-generate): Make obsolete.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
image-dired: Do more interactive mode tagging
@@ -30043,7 +30043,7 @@
* lisp/image/image-dired.el (image-dired-delete-marked): Signal error
if not in image-dired-thumbnail-mode.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Split image-dired.el into several files (part 2/2)
@@ -30064,7 +30064,7 @@
* lisp/image/image-dired.el: Trim files down to keep only one copy of
each definition.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Split image-dired.el into several files (part 1/2)
@@ -30087,7 +30087,7 @@
* test/lisp/image-dired-tests.el: Move from here...
* test/lisp/image/image-dired-tests.el: ...to here.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make "rlogin" method obsolete in url*.el
@@ -30111,13 +30111,13 @@
(Gateways in general, Customization): Don't mention "rlogin"
method.
-2022-09-03 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
d89e65c638 Update acknowledgments
-2022-09-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update acknowledgments
@@ -30125,7 +30125,7 @@
* doc/emacs/emacs.texi (Acknowledgments): Add several names from
Author: headers.
-2022-09-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make some versions in docs match package version
@@ -30135,14 +30135,14 @@
* doc/misc/viper.texi: Fix version to match package.
* lisp/emulation/viper.el: Make version match variable.
-2022-09-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
917da2641e Minor doc fix; improve sorting of VC backends
89695bce3e Clarify the doc string of 'set-face-attribute'
-2022-09-02 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Display a warning for some uses of nil in face attributes.
@@ -30151,7 +30151,7 @@
(Finternal_set_lisp_face_attribute): Use the macro for the attributes
:foreground, :distant-foreground and :background.
-2022-09-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/help-fns.el: Minor fixes
@@ -30161,20 +30161,20 @@
(help-fns--describe-function-or-command-prompt): Allow the user to
insist on choosing a function even if it appears not to exist.
-2022-09-02 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use `format-prompt' in `describe-char-fold-equivalences'
* lisp/char-fold.el (describe-char-fold-equivalences): Use `format-prompt'.
-2022-09-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix define-minor-mode :keymap obsoletion warning
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Fix some
warning.
-2022-09-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make minibuffer-eldef-shorten-default obsolete
@@ -30183,7 +30183,7 @@
* doc/emacs/mini.texi (Basic Minibuffer): Delete above obsolete
variable (bug#50935).
-2022-09-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Default show-paren-mode to off in special-mode buffers
@@ -30196,7 +30196,7 @@
(show-paren-mode): Mention it.
(show-paren-function): Use it.
-2022-09-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up ispell "look"-related variables
@@ -30208,28 +30208,28 @@
that had a "-r" (regexp interface) never took off -- it's not
present in GNU/Linux or Macos, at least, as far as we can tell.
-2022-09-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix quotes in mailcap-add-mailcap-entry doc string
* lisp/net/mailcap.el (mailcap-add-mailcap-entry): Fix usage of
quotes.
-2022-09-02 Felix Dietrich <felix.dietrich@sperrhaken.name>
+2023-04-15 Felix Dietrich <felix.dietrich@sperrhaken.name>
Restructure ‘mailcap-add-mailcap-entry’
* lisp/net/mailcap.el (mailcap-add-mailcap-entry):
Restructure mailcap-add-mailcap-entry to improve readability.
-2022-09-02 Felix Dietrich <felix.dietrich@sperrhaken.name>
+2023-04-15 Felix Dietrich <felix.dietrich@sperrhaken.name>
Add tests for ‘mailcap-add-mailcap-entry’
* test/lisp/net/mailcap-tests.el:
Add tests for ‘mailcap-add-mailcap-entry’
-2022-09-02 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use frame-monitor-attributes in gamegrid
@@ -30237,7 +30237,7 @@
`frame-monitor-attributes' to get the frame attributes directly
instead of iterating over `display-monitor-attributes-list'.
-2022-09-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes when embedding Emacs in a nonexistent parent
@@ -30251,7 +30251,7 @@
(x_embed_frame): New function.
* src/xterm.h (FRAME_X_EMBEDDED_P): Fix coding style.
-2022-09-02 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Make single char entry easier for `describe-char-fold-equivalences'
@@ -30259,34 +30259,34 @@
docstring. Pass t for 'allow-single' arg in call to
`read-char-by-name' so that single characters can be entered directly.
-2022-09-02 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Allow easy entry of single chars in `read-char-by-name'
* lisp/international/mule-cmds.el (read-char-by-name): Add optional
'allow-single' argument, meaning to accept single chars as themselves.
-2022-09-02 Fabrice Bauzac-Stehly <noon@mykolab.com>
+2023-04-15 Fabrice Bauzac-Stehly <noon@mykolab.com>
ldap-host-parameters-alist: Add auth-source option
* lisp/net/ldap.el (ldap-host-parameters-alist): Add auth-source
to checklist.
-2022-09-01 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Under no-X builds, allow any value for 'fringe-bitmap' options
* lisp/cus-edit.el (fringe-bitmap): Always match under no-X.
-2022-09-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#57476 for Xt builds
* src/xterm.c (handle_one_xevent): Add similar event mode check
to code under USE_X_TOOLKIT conditional. (bug#57476)
-2022-09-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make easy-mmode-define-keymap obsolete
@@ -30294,14 +30294,14 @@
obsolete.
(define-minor-mode): Add comment.
-2022-09-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make easy-mmode-defmap obsolete and adjust only caller
* lisp/emacs-lisp/easy-mmode.el (easy-mmode-defmap): Make obsolete.
* lisp/progmodes/gud.el (gud-menu-map): Use easy-menu-define.
-2022-09-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix outline-minor-mode-map
@@ -30309,7 +30309,7 @@
easy-mmode-define-keymap, since it doesn't handle :inherit
correctly (bug#57512).
-2022-09-01 Daanturo <daanturo@gmail.com>
+2023-04-15 Daanturo <daanturo@gmail.com>
Make file-parent-directory more efficient
@@ -30317,14 +30317,14 @@
file-equal-p to compare the found parent and the child
(bug#56355). This is much faster.
-2022-09-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Minor doc fix; improve sorting of VC backends
* doc/emacs/maintaining.texi (Version Control Systems): Minor doc fix;
rearrange list to put git, cvs and subversion at the top.
-2022-09-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clarify the doc string of 'set-face-attribute'
@@ -30332,7 +30332,7 @@
resetting attribute values to 'unspecified' for future frames.
(Bug#57499)
-2022-09-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Better `take` and `ntake` bignum argument handling
@@ -30340,7 +30340,7 @@
as most-positive-fixnum which results in better error checking
of improper lists.
-2022-09-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -30360,7 +30360,7 @@
# lisp/international/characters.el
# src/xdisp.c
-2022-09-01 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update publicsuffix.txt from upstream
@@ -30368,7 +30368,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-08-25 13:54:14 UTC.
-2022-08-31 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't fail Eshell ERT tests when an internal signal gets raised
@@ -30379,7 +30379,7 @@
Ref: https://lists.gnu.org/archive/html/emacs-devel/2022-08/msg01452.html
-2022-08-31 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
C++ Mode: Fontify functions correctly with commas in template expressions
@@ -30403,7 +30403,7 @@
c-<>-c-types-set text property, along with c-type, from the region being
fontified.
-2022-08-31 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix describe-char-fold-equivalences for composed characters
@@ -30411,14 +30411,14 @@
`get-char-code-property' across all the component codepoints of the
equivalent character rather than just the first one.
-2022-08-31 ookami <mail@ookami.one> (tiny change)
+2023-04-15 ookami <mail@ookami.one> (tiny change)
Fix semantic-find-file-noselect binding of recentf-exclude
* lisp/cedet/semantic/fw.el (semantic-find-file-noselect):
recentf-exclude should be a list (bug#57489).
-2022-08-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Gently nudge Xt into always setting size hints
@@ -30429,14 +30429,14 @@
* src/xterm.c (x_wm_set_size_hint): Don't change flags if flags
is 0.
-2022-08-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#57476
* src/xterm.c (handle_one_xevent): Don't reset valuators on certain
crossing events, for the benefit of xfwm4. (bug#57476)
-2022-08-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
t-mouse.el: Make sure we apply the setting to new terminals
@@ -30445,7 +30445,7 @@
* lisp/term/linux.el (terminal-init-linux): Remove gpm-specific code,
not neded any more.
-2022-08-30 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Enable 256 colors in fbterm.
@@ -30454,7 +30454,7 @@
* doc/misc/efaq.texi (Emacs in a Linux console): Document the TERM
environment variable with which the new file is used.
-2022-08-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix 744ed0ceeed7472a160fea7154939cf641205577 from bug#57082 (bug#57176)
@@ -30463,7 +30463,7 @@
* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common): Fix regexp.
-2022-08-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
One more fix for find-file.el
@@ -30471,7 +30471,7 @@
instead of 'concat', which doesn't DTRT with absolute file names.
(ff-other-file-alist): Yet another doc fix. (Bug#57325)
-2022-08-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Accept bignum arguments in `take` and `ntake`
@@ -30479,7 +30479,7 @@
completeness.
* test/src/fns-tests.el (fns--take-ntake): Add test cases.
-2022-08-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix junk data being returned with incremental selection transfers
@@ -30489,7 +30489,7 @@
(x_get_window_property_as_lisp_data): Adjust call to
receive_incremental_selection.
-2022-08-30 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (package-vc-unpack): Fix 'vc-ignore' call
@@ -30497,13 +30497,13 @@
default-directory is set to the package root, otherwise the file is
ignored in some other repository, that probably doesn't exist.
-2022-08-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix char-fold compilation warning
* lisp/char-fold.el (require): Get string-join definition.
-2022-08-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/char-fold.el (describe-char-fold-equivalences): New command.
@@ -30512,7 +30512,7 @@
Suggested by Robert Pluim <rpluim@gmail.com>.
https://lists.gnu.org/archive/html/emacs-devel/2022-07/msg00864.html
-2022-08-29 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Handle 'eshell-pipe-broken' when evaluating Lisp forms in Eshell
@@ -30528,7 +30528,7 @@
Ref: https://lists.gnu.org/archive/html/emacs-devel/2022-08/msg00524.html
-2022-08-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Recommend using fbterm in the Linux console.
@@ -30537,18 +30537,18 @@
* etc/PROBLEMS (Linux console problems...): Mention the new FAQ node.
-2022-08-29 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Merge remote-tracking branch 'origin/master' into feature/tree-sitter
-2022-08-29 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve point-at-{bol,eol} obsoletion message
* lisp/subr.el (point-at-eol, point-at-bol): Mention 'pos-eol' and
'pos-bol' in obsoletion message.
-2022-08-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix reader memory leak upon error (bug#56623)
@@ -30557,14 +30557,14 @@
* src/lread.c (read_stack_reset): New.
(read0): Reset read stack when unwinding from an error.
-2022-08-29 Jake Moss <jake.moss@uq.net.au> (tiny change)
+2023-04-15 Jake Moss <jake.moss@uq.net.au> (tiny change)
Show gdb-mi disassembly over tramp
* lisp/progmodes/gdb-mi.el (gdb-invalidate-disassembly): Show
gdb-mi disassembly over tramp (bug#57464).
-2022-08-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Work around `&' dired command when using the fish shell
@@ -30572,11 +30572,11 @@
&wait; this apparently makes the `&' command work with the fish
shell (bug#57472).
-2022-08-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/find-file.el (ff-other-file-alist): Doc fix. (Bug#57325)
-2022-08-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix point adjustment in recreated *Messages* buffers
@@ -30587,7 +30587,7 @@
it's killed, will have the same type of the window-point marker.
(Bug#57466)
-2022-08-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/keyboard.c (safe_run_hooks*): Simplify and generalize
@@ -30595,14 +30595,14 @@
arbitrary `nargs`.
(safe_run_hooks_error): Remove unneeded assertion.
-2022-08-29 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Do not connect unreachable remote hosts in recentf
* lisp/recentf.el (recentf-expand-file-name): Protect against
stalled remote hosts. (Bug#57336)
-2022-08-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Unify floating point handling when reading XI motion events
@@ -30610,7 +30610,7 @@
recommended, instead of just truncating them. Also fixes
weird "jitter" during drag-and-drop on some clients.
-2022-08-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
'C-c C-d' on vc-log buffer shows the diff from 'vc-log-fileset' (bug#52349)
@@ -30622,7 +30622,7 @@
* lisp/vc/vc.el (vc-diff): New optional arg ‘fileset’.
If non-nil, use instead of vc-deduce-fileset.
-2022-08-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
'C-x v v' on a diff buffer commits it as a patch (bug#52349)
@@ -30650,7 +30650,7 @@
Call vc-start-logentry with 'patch-string'.
(vc-diff-patch-string): New function.
-2022-08-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Revert parts of 3f076a8e44 that caused test failures
@@ -30660,18 +30660,18 @@
truncated-partial-width-window-p. This change caused test failures
in lisp/ls-lisp-tests.log and lisp/emacs-lisp/edebug-tests.log.
-2022-08-28 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Fix data for files-tests-bug-21454 on Cygwin
* test/lisp/files-tests.el (files-tests-bug-21454): Fix test data
to reflect the fact that Cygwin supports UNC paths.
-2022-08-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/info.el (Info-mode): Support the Linux console better.
-2022-08-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve the documentation of glyphless-character display
@@ -30682,7 +30682,7 @@
* doc/lispref/display.texi (Glyphless Chars): Index
'glyphless-char' face.
-2022-08-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix two issues in xterm.c
@@ -30690,7 +30690,7 @@
have a vendor-specific prefix.
(x_query_pointer_1): Fix leak of button mask.
-2022-08-27 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use truncated-partial-width-window-p in more places (bug#56815)
@@ -30705,7 +30705,7 @@
* src/indent.c (scan_for_column): Bring the logic of using
truncated-partial-width-window-p closer to what the display engine does.
-2022-08-27 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use a list of text properties to search in symlink filenames in Wdired
@@ -30718,28 +30718,28 @@
* lisp/isearch.el (isearch-search-fun-in-text-property):
Support a list of text properties (bug#57293).
-2022-08-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dynamic info-lookup more backwards-compatible
* lisp/info-look.el (info-lookup--expand-info): Don't try to
expand elements that aren't functions (bug#57446).
-2022-08-27 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix webp detection on some Macos systems
* configure.ac (HAVE_RSVG): Make webp detection work with Macos
10.3/Homebrew (bug#57420).
-2022-08-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix regression with cursor motion in Magit buffers
* lisp/simple.el (line-move): Condition movement optimizations on
presence of very long lines. (Bug#57433)
-2022-08-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix antialias face attribute when text is scaled
@@ -30766,7 +30766,7 @@
text is scaled. This reverts part of the changes installed in
commit bf0d3f7. (Bug#37473)
-2022-08-27 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Remove double evaluation of self-quoting function in cc-langs.el
@@ -30775,7 +30775,7 @@
* lisp/progmodes/cc-langs.el (c-init-language-vars): Add a #' after the
funcall.
-2022-08-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support "replacement characters" on TTY frames
@@ -30795,7 +30795,7 @@
* lisp/faces.el (glyphless-char): Make the face stand out on TTY
frames that don't support the underline attribute.
-2022-08-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'glyphless-char-display'
@@ -30803,7 +30803,7 @@
(gui_produce_glyphs, lookup_glyphless_char_display): Fix
indentation.
-2022-08-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when handling "swallowed" generic events
@@ -30812,14 +30812,14 @@
* src/xterm.c (handle_one_xevent): Don't abort if must_free_data
and xi_event is NULL; this is an Xlib bug.
-2022-08-26 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
xref-matches-in-files: Use with-connection-local-variables
* lisp/progmodes/xref.el (xref-matches-in-files):
Use with-connection-local-variables (bug#57385).
-2022-08-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Use shr as default for mm-text-html-renderer
@@ -30827,14 +30827,14 @@
default to avoid a nil value.
Problem reported by Mattias Engdegård <mattiase@acm.org>.
-2022-08-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify the :box attributes in Face Attributes lispref node
* doc/lispref/display.texi (Face Attributes): Mention that the
elements are optional (bug#50699).
-2022-08-26 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fontify correctly a brace list element followed only
by syntactic WS
@@ -30847,7 +30847,7 @@
than rejecting it as an invalid declarator. Also reindent
a section of this function.
-2022-08-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use `rx' in Tramp where possible
@@ -30909,7 +30909,7 @@
* test/lisp/net/tramp-tests.el: Use `rx' where possible.
(tramp-test01-file-name-syntax): Adapt test.
-2022-08-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the *Ido COmpletions* buffer fit the window to the buffer
@@ -30918,7 +30918,7 @@
buffer is displayed (bug#50671). This means that we're defaulting
to fit-window-to-buffer.
-2022-08-26 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
New option 'thrifty' for Man-notify-method
@@ -30926,14 +30926,14 @@
method.
(Man-notify-method): Explain what 'thrifty' does (bug#57408).
-2022-08-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Delete blank lines at the start of the cited text in message-indent-citation
* lisp/gnus/message.el (message-indent-citation): Fix thinko in
the fix for the previous thinko.
-2022-08-26 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix recent gamegrid.el change for nox build
@@ -30941,7 +30941,7 @@
image-scaling-factor as special before dynamically binding it, for
the sake of --without-x builds which do not preload lisp/image.el.
-2022-08-26 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Pacify obsolete gv warnings in xt-mouse-tests.el
@@ -30949,7 +30949,7 @@
deprecated generalized variables frame-width and frame-height with
direct calls to set-frame-width and set-frame-height, respectively.
-2022-08-26 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Kill the buffer for the temp file after using '$<command>' in Eshell
@@ -30958,13 +30958,13 @@
Ref: https://lists.gnu.org/archive/html/bug-gnu-emacs/2022-08/msg01444.html
-2022-08-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
e3b8577525 ; * etc/DEBUG: Fix wording of "X protocol errors" section.
-2022-08-26 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -30972,7 +30972,7 @@
92e90297f9 * lisp/wdired.el: Doc fix; don't mention obsolete variable.
2ccefef4c7 * lisp/progmodes/etags.el (next-file): Minor doc fix.
-2022-08-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Restore old code in x_sync_trigger_fence
@@ -30982,11 +30982,11 @@
asynchronously), and is much more recognizable for people coming from
other programs.
-2022-08-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-08-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix overflows in HAVE_XSYNC timestamp handling
@@ -31011,14 +31011,14 @@
(x_display_set_last_user_time):
Use 0 more consistently to represent missing timestamps.
-2022-08-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix unlikely core dump with Xaw
* lwlib/lwlib-Xaw.c (make_dialog): Don’t dump core if calloc fails.
Caught with --enable-gcc-warnings.
-2022-08-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/cc-langs.el (c-make-no-parens-syntax-table): Fix bug#57065
@@ -31027,7 +31027,7 @@
function is not self-evaluating, such as when it's a symbol or
a value of the form (closure ...).
-2022-08-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve explanation of init file in FAQ
@@ -31038,7 +31038,7 @@
also updating the FAQ.
Ref: https://lists.gnu.org/r/emacs-devel/2022-08/msg01056.html
-2022-08-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't refer to Emacs 24.3 or older in FAQ
@@ -31052,7 +31052,7 @@
price; it is currently incorrect and is likely to be incorrect again
in the future.
-2022-08-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Treat smtp-auth method from auth-info as a symbol
@@ -31066,7 +31066,7 @@
Do not merge to master
-2022-08-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/wdired.el: Improve "Commentary" section.
@@ -31074,7 +31074,7 @@
* lisp/progmodes/etags.el (next-file): Minor doc fix.
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new user option grep-command-position
@@ -31082,32 +31082,32 @@
(grep-command-position): New user option.
(grep): Use it (bug#50502).
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document how :map and :scale interacts in image maps
* doc/lispref/display.texi (Image Descriptors): Mention problems
with scaling (bug#50487).
-2022-08-25 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix generalized variable documentation for recent change
* doc/lispref/variables.texi (Setting Generalized Variables): Delete
obsolete generalized variable 'frame-width'.
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make a prefix go to the previous error
* lisp/textmodes/flyspell.el (flyspell-goto-next-error): Make a
prefix find the previous error (bug#50443).
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention C-x C-q + revert change in NEWS
-2022-08-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Treat smtp-auth method from auth-info as a symbol
@@ -31119,7 +31119,7 @@
* lisp/mail/smtpmail.el (smtpmail-try-auth-methods): Call
`intern-soft' on the smtp-auth key's value. (Bug#57373)
-2022-08-25 Kien Nguyen <kien.n.quang@gmail.com>
+2023-04-15 Kien Nguyen <kien.n.quang@gmail.com>
Allow symlink creation on MS-Windows without Administrator privileges
@@ -31127,7 +31127,7 @@
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE flag when available.
(Bug#57386)
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix warning about obsoleted generalized variables
@@ -31135,14 +31135,14 @@
Autoload so that the call here from gv.el (about obsolete
generalized variables) doesn't bug out (bug#57394).
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make frame-width obsolete as a generalized variable
* lisp/emacs-lisp/gv.el (frame-width): Make obsolete as
generalized variable.
-2022-08-25 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix instrumented eval-defun not printing "Edebug:" to the echo area
@@ -31153,11 +31153,11 @@
* test/lisp/progmodes/elisp-mode-tests.el
(eval-defun-prints-edebug-when-instrumented): Add a new test.
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add hideshow-test.el file (bug#56635)
-2022-08-25 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Add Python blocks support for hideshow
@@ -31179,7 +31179,7 @@
(python-hideshow-hide-all-3, python-hideshow-hide-block-1): New
tests (bug#56635).
-2022-08-25 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Extend `hs-special-modes-alist' for languages such as Python
@@ -31199,7 +31199,7 @@
* test/lisp/progmodes/hideshow-tests.el: New test file (bug#56635).
-2022-08-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow not deleting the config.cache file with "make FAST=true bootstrap"
@@ -31211,7 +31211,7 @@
* admin/emake (cores): Adjust.
-2022-08-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Minor fixes in tramp-tests.el
@@ -31221,11 +31221,11 @@
or lasted too long.
(tramp--test-shell-file-name): Do not depend on `tramp--test-adb-p'.
-2022-08-25 Andreas Schwab <schwab@suse.de>
+2023-04-15 Andreas Schwab <schwab@suse.de>
* configure.ac: Move AC_LANG_PUSH/POP out of AC_CACHE_CHECK. (Bug#57380)
-2022-08-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix various problems with mouse highlight on XI2 builds
@@ -31237,14 +31237,14 @@
* src/xterm.h (struct xi_device_t): New fields
`last_motion_window', `last_motion_x' and `last_motion_y'.
-2022-08-24 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
vc-merge: Look for 'merge-file' instead of 'merge'
* lisp/vc/vc.el (vc-merge):
Look for 'merge-file' in second clause (bug#50258).
-2022-08-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
C++ Mode - Fontify "class Foo {\n ~Foo() noexcept;" correctly
@@ -31258,7 +31258,7 @@
`c-not-decl' to the values of c-type which are erased at the start of a
fontification.
-2022-08-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix handling of UNCs in 'parse-colon-path
@@ -31269,7 +31269,7 @@
expected results.
(files-colon-path): Add a new test pattern.
-2022-08-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fontify args correctly when arglist closing ) is not on the same line
@@ -31284,7 +31284,7 @@
starting inside a [ or (. Tidy up the handling of syntactic whitespace at the
end of the buffer.
-2022-08-24 Santiago Calandrino <san@disroot.org> (tiny change)
+2023-04-15 Santiago Calandrino <san@disroot.org> (tiny change)
Fix string padding in gdb-mi
@@ -31293,14 +31293,14 @@
(gdb-pad-string): Unobsolete.
(gdb-table-string): Re-fix string padding.
-2022-08-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't lose read-only marking when reverting a view-mode buffer
* lisp/view.el (view--enable): Don't lose read-only-ness when
reverting (bug#35166).
-2022-08-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
When reverting, preserve the readedness state set by `C-x C-q'
@@ -31309,7 +31309,7 @@
* lisp/simple.el (read-only-mode): Use it.
-2022-08-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix input extension focus tracking with some window managers
@@ -31318,21 +31318,21 @@
detect focus changes when XInput 2 is enabled. The X server
will tell us the actual truth if the focus really did change.
-2022-08-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make mh-colors-available-p obsolete
* lisp/mh-e/mh-utils.el (mh-colors-available-p): Redefine as
obsolete function alias for 'display-color-p'.
-2022-08-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer saying "init file" to ".emacs" in FAQ
* doc/misc/efaq.texi: Prefer saying "init file" to
".emacs". (Bug#49424)
-2022-08-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use substitute-command-keys in a few more places
@@ -31341,7 +31341,7 @@
* lisp/progmodes/cperl-mode.el (cperl-narrow-to-here-doc): Use
substitute-command-keys.
-2022-08-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Move generalized variable `substring' doc to elisp manual
@@ -31350,7 +31350,7 @@
* doc/lispref/variables.texi (Setting Generalized Variables):
...to here.
-2022-08-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Move generalized variable docs to elisp manual
@@ -31360,7 +31360,7 @@
* doc/lispref/variables.texi (Setting Generalized Variables):
...to here. These variables have already been moved to gv.el.
-2022-08-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Update documentation for obsolete generalized variables
@@ -31368,11 +31368,11 @@
variables from list.
* etc/NEWS: Fix sorting of obsolete generalized variables.
-2022-08-23 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge master into feature/improved-locked-narrowing.
-2022-08-23 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve detection of long lines.
@@ -31388,11 +31388,11 @@
* src/pdumper.c (dump_buffer): Dump the new field.
-2022-08-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entry about obsoleted generalized variables
-2022-08-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make XEmacs compat alias face-background-pixmap obsolete
@@ -31406,20 +31406,20 @@
* doc/misc/cl.texi (Setf Extensions): Refer to above new generalized
variable instead of the obsolete one.
-2022-08-23 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/elisp-mode.el (elisp--local-variables-1): Fix bug#50034
Don't burp if the arg list of a function is not actually a list.
-2022-08-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make Emacs 20 compat alias obsolete in eudcb-ldap.el
* lisp/net/eudcb-ldap.el (eudc-ldap-get-host-parameter): Make
Emacs 20 compat alias obsolete.
-2022-08-23 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix pixel-scroll-precision in a corner case
@@ -31428,7 +31428,7 @@
(pixel-scroll-precision-scroll-up): Handle case that window is one line high
(bug#57349)
-2022-08-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make frame synchronization conditional on clock_gettime
@@ -31439,7 +31439,7 @@
* src/xterm.h (struct x_output): Define out vsync code when
!HAVE_CLOCK_GETTIME. (bug#57346)
-2022-08-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make frame synchronization conditional on clock_gettime
@@ -31450,14 +31450,14 @@
* src/xterm.h (struct x_output): Define out vsync code when
!HAVE_CLOCK_GETTIME.
-2022-08-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Disable a lisp-mode test that now fails
* test/lisp/emacs-lisp/lisp-mode-tests.el
(test-lisp-current-defun-name): Comment-out now-failing tests.
-2022-08-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert the changes to lisp-current-defun-name
@@ -31467,14 +31467,14 @@
that, say, `make-obsolete-variable' is about the second symbol and
not the first.
-2022-08-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't mention obsolete generalized variables in *Help*
* lisp/help-fns.el (help-fns--generalized-variable): Don't mention
obsolete ones.
-2022-08-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make buffer-local-value obsolete as a generalized variable
@@ -31486,20 +31486,20 @@
(buffer-local-value): Make obsolete as a generalized variable
since the semantics are unclear (bug#26624).
-2022-08-23 Thierry Volpiatto <thievol@posteo.net>
+2023-04-15 Thierry Volpiatto <thievol@posteo.net>
Fix wdired with (dired '(dir f1 f2 ...))
* lisp/wdired.el (wdired-finish-edit): Fix wdired with (dired
'(dir f1 f2 ...)) (bug#57334).
-2022-08-23 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
1dd0a5c5db ; * doc/misc/htmlfontify.texi: Fix version.
-2022-08-22 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Fix completion-predicate of Python shell commands
@@ -31507,7 +31507,7 @@
(python-shell--completion-predicate): New completion predicate
function. (Bug#57184)
-2022-08-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make point-at-eol and point-at-bol obsolete
@@ -31516,7 +31516,7 @@
'pos-eol'/'line-end-position'. Update callers.
Ref: https://lists.gnu.org/r/emacs-devel/2022-08/msg00853.html
-2022-08-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow disabling the input extension at runtime on GTK 3
@@ -31524,7 +31524,7 @@
(x_term_init): Do not enable the input extension should that
fail.
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some no-X build warnings
@@ -31540,7 +31540,7 @@
* lisp/emacs-lisp/icons.el (icons--create): Avoid warnings on no-X
builds.
-2022-08-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
auth-source: Fix wrong-type-argument when searching secret services
@@ -31553,14 +31553,14 @@
* lisp/auth-source.el (auth-source-secrets-search):
Ensure attributes are string. (Bug#55199)
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Link the "f" interactive spec to `read-file-name' in the manual
* doc/lispref/commands.texi (Interactive Codes): Link to the
Reading File Names node.
-2022-08-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use the attributes of frame's monitor for gamegrid
@@ -31568,7 +31568,7 @@
monitor where the current frame is displayed rather than the primary
monitor.
-2022-08-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer pos-bol and pos-eol in tabulated-list.el
@@ -31577,21 +31577,21 @@
(tabulated-list-set-col, tabulated-list-previous-column): Prefer
pos-bol and pos-eol.
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make ispell-find-hunspell-dictionaries more resilient
* lisp/textmodes/ispell.el (ispell-find-hunspell-dictionaries):
Try harder to find the dictionary (bug#49982).
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix indent-tabs-mode globality
* lisp/simple.el (indent-tabs-mode): This is not a global mode, so
don't claim it is (bug#49971).
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the size of elements the same in pgtk and X in tetris
@@ -31601,7 +31601,7 @@
both X and pgtk (bug#49937).
(gamegrid-make-glyph): Inhibit image scaling.
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove probably debugging code in reb-fontify-string-re
@@ -31609,7 +31609,7 @@
code that looks like left-over debugging code. This fixes a
compilation warning.
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make start/end in libxml-parse-html-region optional
@@ -31619,25 +31619,25 @@
(Flibxml_parse_html_region, Flibxml_parse_xml_region): Make
start/end optional.
-2022-08-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix defcustom type of auto-save-file-name-transforms
* lisp/files.el (auto-save-file-name-transforms): Fix the
defcustom type (bug#57321).
-2022-08-22 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
LLDB support: handle unsorted enum member lists
* etc/emacs_lldb.py (enumerator_name): Handle the case that enum
member list is not sorted by value.
-2022-08-22 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Fix some type spec
-2022-08-22 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -31646,14 +31646,14 @@
c3087b59f0 ; * lisp/find-file.el (ff-other-file-alist): Another doc f...
1e1263b00b * lisp/find-file.el (ff-other-file-alist): Doc fix. (Bug#...
-2022-08-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix child frame focus for MPX environments
* src/xterm.c (handle_one_xevent): Set child frame click-to
focus on the pointer device's attachment.
-2022-08-21 Gonzalo Larumbe <gonzalomlarumbe@gmail.com>
+2023-04-15 Gonzalo Larumbe <gonzalomlarumbe@gmail.com>
Fix more lexical-binding fallout in vhdl-speedbar-insert-hierarchy
@@ -31661,14 +31661,14 @@
Check the input arguments, not the dynamically bound `end-arglist'
(bug#57327).
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make *Help* display info about generalized variables
* lisp/help-fns.el (help-fns--generalized-variable): New function
to document generalized variables.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Make the generalized buffer-local-variable obsolete"
@@ -31676,11 +31676,11 @@
This led to the local modes not working.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the generalized buffer-local-variable obsolete
@@ -31697,11 +31697,11 @@
* lisp/emacs-lisp/gv.el (make-obsolete-generalized-variable): Move
to allow usage.
-2022-08-21 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.4-19-g4dff42
-2022-08-21 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Minor improvements to locked narrowing.
@@ -31710,14 +31710,14 @@
* src/editfns.c (Fwiden, Fnarrowing_lock): Docstring improvements.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust autorevert tests to recent change
* test/lisp/autorevert-tests.el (auto-revert--wait-for-revert):
Adjust test to code change.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make many seldom-used generalized variables obsolete
@@ -31737,7 +31737,7 @@
* lisp/org/oc-basic.el (org-cite-basic--set-keymap): Adjust
buffer-substring generalized variable usage.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make it possible to mark generalized variables as obsolete
@@ -31754,7 +31754,7 @@
variables (bug#49730).
(make-obsolete-generalized-variable): New function.
-2022-08-21 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Better way to protect redisplay routines from locked narrowings.
@@ -31767,27 +31767,27 @@
Update docstring.
(Fnarrowing_lock): Update docstring.
-2022-08-21 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Revert 4f19e1a5d1
-2022-08-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/find-file.el (ff-other-file-alist): Doc fix. (Bug#57325)
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention delete-line in shortdoc
* lisp/emacs-lisp/shortdoc.el (buffer): Mention delete-line.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify `delete-line'
* lisp/subr.el (delete-line): Simplify.
-2022-08-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer pos-bol and pos-eol in bookmark.el
@@ -31795,21 +31795,21 @@
(bookmark--remove-fringe-mark, bookmark-kill-line)
(bookmark--jump-via): Prefer pos-bol and pos-eol.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove a newline from the end of an error message
* src/pdumper.c (dump_native_comp_unit): Remove newline from end
of error message.
-2022-08-21 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix eshell-pipe-broken signalling
* lisp/eshell/esh-io.el (eshell-output-object-to-target):
Second argument to `signal` should be a list.
-2022-08-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Mark another esh-proc test as unstable
@@ -31817,7 +31817,7 @@
(esh-proc-test/pipeline-connection-type/middle): Mark test as unstable
as it fails quite a lot.
-2022-08-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer pos-bol and pos-eol in tests
@@ -31872,21 +31872,21 @@
* test/src/undo-tests.el (undo-test-skip-invalidated-markers): Prefer
pos-bol and pos-eol.
-2022-08-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't end autorevert message with a period
* lisp/autorevert.el (auto-revert-handler): Don't end message with
a period.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak emacs-bug--system-description
* lisp/mail/emacsbug.el (emacs-bug--system-description): Fill the
commonly-overlong Emacs version bit.
-2022-08-21 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Update function properties and optimisations
@@ -31898,21 +31898,21 @@
* lisp/emacs-lisp/byte-opt.el (side-effect-free-fns):
Mark pos-bol and pos-eol as side-effect-free.
-2022-08-21 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/emacs-lisp/shortdoc.el (buffer): Add missing functions
Add preceding-char and char-before because following-char and
char-after were already there.
-2022-08-21 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix src-depending-on-lisp target
* Makefile.in (src-depending-on-lisp): Pass BIN_DESTDIR and
ELN_DESTDIR to make -C src (bug#57309).
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark esh-proc test as unstable
@@ -31920,7 +31920,7 @@
(esh-proc-test/pipeline-connection-type/last): Mark test as
unstable as it fails quite a lot.
-2022-08-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename newly-added eol/bol functions to pos-eol/pos-bol
@@ -31929,21 +31929,21 @@
* src/editfns.c (Fpos_bol): Rename from Fpos.
(Fpos_eol): Rename from Feol.
-2022-08-21 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix mode line redisplay bug when locked narrowing is in effect.
* src/xdisp.c (decode_mode_spec): Use the actual narrowing bounds when
redisplay is called while a locked narrowing is in effect.
-2022-08-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor optimization to x_query_pointer_1
* src/xterm.c (x_query_pointer_1): Clear client pointer if it
disappeared.
-2022-08-20 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix user narrowing handling.
@@ -31952,7 +31952,7 @@
(Fwiden, Fnarrow_to_region): Set and reset the variable.
(Fnarrowing_lock): Use it.
-2022-08-20 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improved locked narrowing.
@@ -31973,11 +31973,11 @@
* lisp/subr.el (with-locked-narrowing): New macro.
-2022-08-20 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (package-vc-unpack): Ignore dir files
-2022-08-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't use the system-file-manager icon in the toolbar
@@ -31986,7 +31986,7 @@
n:system-file-manager, because it's larger than the other Gtk
icons in some themes (bug#56627).
-2022-08-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make conf-javaprop-mode only claim that # lines are comments
@@ -31996,18 +31996,18 @@
(conf-javaprop-mode): Adjust doc string to just mention #
comments.
-2022-08-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak admin/emacs output
-2022-08-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp's manual
* doc/misc/tramp.texi (Frequently Asked Questions):
Improve recommendations for speeding up.
-2022-08-20 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Fix typos in modus-themes.org
@@ -32017,25 +32017,25 @@
(Custom Org emphasis faces, Note on git-gutter in Doom Emacs): Fix
typographic errors.
-2022-08-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when the keymap changes
* src/xterm.c (handle_one_xevent): Call
XkbRefreshKeyboardMapping first before trying to update the map.
-2022-08-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Move `while` syntax check from optimiser to macroexpand
* lisp/emacs-lisp/byte-opt.el (byte-optimize-while): Move check...
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all): ...here.
-2022-08-19 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (package-vc-unpack): Mark packages as selected
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix return value of help--key-description-fontified
@@ -32049,7 +32049,7 @@
* test/lisp/help-tests.el (help--key-description-fontified): New test.
(with-substitute-command-keys-test): Fix indentation.
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Display new keybinding in obsolete command warning
@@ -32057,25 +32057,25 @@
* lisp/simple.el (command-execute): When warning about an obsolete
command, display the keybinding for the new command.
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/bookmark.el (bookmark-menu-heading): Delete face.
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Ignore variable Info-fontify, deleted in 22.1
* lisp/info.el (Info-mode-hook): Don't obey variable Info-fontify,
deleted in Emacs 22.1.
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make two compat aliases obsolete in cc-defs.el
* lisp/progmodes/cc-defs.el (c-regexp-opt, c-regexp-opt-depth):
Make compat alias obsolete.
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete two functions obsolete since Emacs 23
@@ -32092,7 +32092,7 @@
(set-process-filter-multibyte): Delete obsoletion.
* lisp/erc/erc-dcc.el (erc-dcc-server): Don't use obsolete functions.
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -32103,7 +32103,7 @@
# Conflicts:
# etc/NEWS
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Resurrect obsoletion warning for two functions
@@ -32114,39 +32114,39 @@
(set-process-filter-multibyte): Resurrect obsoletion warning.
* etc/NEWS: Don't announce their deletion.
-2022-08-19 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* src/window.c (select_window): Fix assert for buffer = non-active minibuffer
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in doc-view.el
* lisp/doc-view.el (doc-view-mode-map, doc-view-minor-mode-map)
(doc-view-presentation-mode-map): Prefer defvar-keymap.
-2022-08-19 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve 'ns-read-file-name' docstring
* src/nsfns.m (Fns_read_file_name): Use '-' instead of '_' when naming
args.
-2022-08-19 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Mark only VS-16 as emoji
* admin/unidata/blocks.awk: Only mark U+FE0F as belonging to the
'emoji' script. (Bug#57072)
-2022-08-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix underscores in argument names in ns-win
* lisp/term/ns-win.el (x-file-dialog): Don't use underscores in
argument names.
-2022-08-19 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
python.el: Add completion-predicate symbol property to commands
@@ -32157,7 +32157,7 @@
appropriate completion-predicate properties.
(python--completion-predicate): New function.
-2022-08-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new functions eol and bol
@@ -32172,7 +32172,7 @@
(Feol): New defun.
(Fline_end_position): Use `eol'.
-2022-08-19 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
python-mode: Remove special outline-heading-end-regexp
@@ -32182,7 +32182,7 @@
* lisp/progmodes/python.el (python-mode): Remove buffer-local setting
of outline-heading-end-regexp. (Bug#53913)
-2022-08-19 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
python.el: Adjustments to Flymake backend
@@ -32191,7 +32191,7 @@
(python-flymake-command-output-pattern): Make compatible with recent
versions of pyflakes. (Bug#53913)
-2022-08-19 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
python-check-command: Don't use absolute file names
@@ -32201,14 +32201,14 @@
* lisp/progmodes/python.el (python-check-command): Don't use absolute
file names. (Bug#53913)
-2022-08-19 Paul A. Patience <paul@apatience.com> (tiny change)
+2023-04-15 Paul A. Patience <paul@apatience.com> (tiny change)
Fix mis-spelling of c-awk-old-ByLL and really make it buffer-local
* lisp/progmodes/cc-awk.el (c-awk-old-ByLL): Make the
correct variable buffer-local (bug#57294).
-2022-08-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/edmacro.el (edmacro-sanitize-for-string): Fix condition.
@@ -32216,21 +32216,21 @@
vector of keys representing a prefix, where bit 7 isn't likely to be
set when higher bits are set, but it silences a (justified) warning.
-2022-08-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix region-extract-function compilation warning
* lisp/simple.el (region-extract-function): Clean up the logic
slightly to avoid a warning.
-2022-08-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix ns-win.el (x-file-dialog) declaration
* lisp/term/ns-win.el (x-file-dialog): Give the function the same
signature here as other definitions.
-2022-08-19 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update the modus-themes to their 2.6.0 version
@@ -32259,14 +32259,14 @@
Detailed release notes:
<https://protesilaos.com/codelog/2022-08-19-modus-themes-2-6-0/>.
-2022-08-19 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Find libgccjit on macOS with Homebrew differently
* configure.ac (MAC_LIBS): Find libgccjit's directory slightly
differently for brew installations.
-2022-08-19 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* src/pdumper.c (dump_native_comp_unit): Error if CU is not fixed-up
@@ -32274,33 +32274,33 @@
* src/pdumper.c (Fdump_emacs_portable): Check and warn for pure space overflow
-2022-08-19 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Remove treesit manual entries for deleted functions
* doc/lispref/parsing.texi: Remove documentation for
treesit-get-parser-create and treesit-get-parser.
-2022-08-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Remove use-package-font-lock-keywords"
This reverts commit 4938167bfffcf08279445827d2eaae78c9557675.
-2022-08-19 Morgan Smith <Morgan.J.Smith@outlook.com>
+2023-04-15 Morgan Smith <Morgan.J.Smith@outlook.com>
Speed up image-dired-display-image
* lisp/image-dired.el (image-dired-display-image): Open file literally
so we don't run image-mode twice. (Bug#57281)
-2022-08-19 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
e64d811b51 Improve image-mode-as-hex docstring
-2022-08-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix more calls to XQueryPointer for MPX
@@ -32313,13 +32313,13 @@
x_query_pointer_1 with the right device instead of
XQueryPointer.
-2022-08-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from belak/remove-extra-font-lock-keywords
GitHub-reference: https://github.com/jwiegley/use-package/issues/859
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve obsoletion of image-transform-fit-to-{height,width}
@@ -32327,32 +32327,32 @@
(image-transform-fit-to-width): Change obsoletion to refer to new
command 'image-transform-fit-to-window'.
-2022-08-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Rename `comp--typeof-builtin-types'
* lisp/emacs-lisp/comp-cstr.el (comp--typeof-builtin-types): Rename.
(comp-normalize-valset, comp-common-supertype-2): Update.
-2022-08-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp-cstr.el (comp--all-builtin-types): Remove
-2022-08-18 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Adjust the environment name for the minted package
* lisp/textmodes/reftex-vars.el (reftex-label-alist-builtin): Fix
the name of the environment which can contain a \label macro.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve image-mode-as-hex docstring
* lisp/image-mode.el: Fix typos.
(image-mode-as-hex): Doc fix; say that it uses 'hexl-mode' and reflow.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Do interactive mode tagging in image-mode.el
@@ -32370,7 +32370,7 @@
(image-transform-original, image-transform-reset): Add interactive tag
for image-mode.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make toggling between image, hex and text more consistent
@@ -32380,7 +32380,7 @@
(image-mode-as-hex, image-mode-as-text): Enable image-minor-mode also
in hexl-mode, which adds the "C-c C-x" keybinding for easier toggling.
-2022-08-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New command image-transform-set-percent
@@ -32388,14 +32388,14 @@
(image-mode-map): Bind above new command to "s p".
* doc/emacs/files.texi (Image Mode): Document it.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Prefer defvar-keymap in image-mode.el
* lisp/image-mode.el (image-mode-map, image-minor-mode-map):
Prefer defvar-keymap.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -32404,39 +32404,39 @@
254ba1d3e5 * lisp/image-mode.el: Improve commentary.
ac43ac1af9 cl-reduce doc string improvement
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/image-mode.el (image-mode-as-hex): Fix toggle instructions.
-2022-08-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix encoding problem in tramp-sh.el
* lisp/net/tramp-sh.el (tramp-sh-handle-file-local-copy):
Compute inline coding only if needed.
-2022-08-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/misc/cl.texi (Macro Bindings): Fix bug#57263
Update `cl-symbol-macrolet` according to the change in response to bug#26073.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/image-mode.el: Improve commentary.
-2022-08-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix string-to-syntax signature in comp-known-type-specifiers
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers):
`string-to-syntax` can return nil.
-2022-08-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Fix some type
-2022-08-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
More non-nil-returning functions in source optimisation
@@ -32447,7 +32447,7 @@
* lisp/emacs-lisp/byte-opt.el (byte-compile-trueconstp):
Extend list of functions and fix a typo (logxor).
-2022-08-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Copy-edit doc strings and comments wrt bignum and fixnum
@@ -32465,7 +32465,7 @@
* src/pgtkselect.c:
* src/xselect.c: Edit comments.
-2022-08-18 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix Python indentation of block continuation
@@ -32475,7 +32475,7 @@
* test/lisp/progmodes/python-tests.el
(python-indent-after-backslash-6): New test (bug#57262).
-2022-08-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make GEN message from loaddefs-generate nicer
@@ -32483,14 +32483,14 @@
informational GEN file relative to the stated directory
(bug#57265). This makes the message nicer for ELPA packages.
-2022-08-18 Colin Woodbury <colin@fosskers.ca>
+2023-04-15 Colin Woodbury <colin@fosskers.ca>
cl-reduce doc string improvement
* lisp/emacs-lisp/cl-seq.el (cl-reduce): Explain what happens when
using :from-end (bug#57273).
-2022-08-18 Gerd Möllmann <gerd.moellmann@gmail.com>
+2023-04-15 Gerd Möllmann <gerd.moellmann@gmail.com>
Rebuild the Emacs executable if loaddefs.el has changed
@@ -32498,14 +32498,14 @@
whether we need to rebuild the Emacs executable if loaddefs.el has
been updated.
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve update-directory-autoloads deprecation message
* lisp/obsolete/autoload.el (update-directory-autoloads): Improve
deprecation message. (Bug#57276)
-2022-08-18 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve cryptic syntax switch message in re-builder
@@ -32514,11 +32514,11 @@
* lisp/emacs-lisp/re-builder.el (reb-change-syntax): ...to here.
Change it to be less cryptic.
-2022-08-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/loadup.el: Always fix-up all loaded compilation units
-2022-08-18 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Expose `comp-loaded-comp-units-h'
@@ -32526,7 +32526,7 @@
(syms_of_comp): Define `comp-loaded-comp-units-h'.
(register_native_comp_unit, Fnative_elisp_load): Use it.
-2022-08-18 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Add treesit-parser-delete
@@ -32545,11 +32545,11 @@
(Qtreesit_parser_deleted): New error.
* src/treesit.h (Lisp_TS_Parser): New field 'deleted'.
-2022-08-18 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge remote-tracking branch 'origin/master' into feature/package+vc
-2022-08-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS build
@@ -32557,7 +32557,7 @@
* msdos/sedlibmk.inp (STDCKDINT_H)
(GL_GENERATE_STDCKDINT_H_CONDITION): Update these variables too.
-2022-08-18 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix broken build on Solaris 10 emacs_spawn
@@ -32565,19 +32565,19 @@
pty_flag no longer exists. Use pty_in && std_in >= 0,
which at least compiles.
-2022-08-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-08-17 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/bytecomp.el (byte-compile-log-1): Create buffer if necessary
-2022-08-17 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/progmodes/cc-defs.el (c-safe-scan-lists): Evaluate LIMIT just once
-2022-08-17 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix Linux APM BIOS flag testing in battery.el
@@ -32587,14 +32587,14 @@
* lisp/battery.el (battery-linux-proc-apm): Treat result of logand
as a number, not boolean.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Shorten new manual section "Shell Command Guessing"
* doc/emacs/dired.texi (Shell Command Guessing): Don't document
unimportant details, and improve wording to be shorter.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Assume dired-guess is now always available
@@ -32604,7 +32604,7 @@
(dired-do-shell-command): Doc fix; dired-guess is always available.
* lisp/dired.el (dired-do-man): Don't require dired-x.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Move dired-guess commands from dired-x to dired
@@ -32637,25 +32637,25 @@
above changes.
* etc/NEWS: Announce the above change.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make compat function cperl-putback-char obsolete
* lisp/progmodes/cperl-mode.el (cperl-putback-char): Make
obsolete. Update callers.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* lisp/progmodes/cperl-mode.el: Improve commentary.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't check if autoloaded functions are fboundp
* lisp/progmodes/cperl-mode.el (cperl-menu, cperl-init-faces):
Assume some autoloaded ps-print.el functions are always there.
-2022-08-17 Brendan O'Dea <bod@debian.org>
+2023-04-15 Brendan O'Dea <bod@debian.org>
em-unix.el: only pass -H option to grep
@@ -32663,7 +32663,7 @@
breaks agrep/glimpse etc (bug#57247).
(eshell/grep, eshell/egrep, eshell/fgrep): Instead add it here.
-2022-08-17 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Enhance Python font-lock to support multilines
@@ -32681,7 +32681,7 @@
(python-mode): Set `python-font-lock-extend-region' to
`font-lock-extend-after-change-region-function'.
-2022-08-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Add Python blocks support for hideshow"
@@ -32689,7 +32689,7 @@
This led to test failures.
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix some recently introduced byte-compiler warnings
@@ -32698,7 +32698,7 @@
* lisp/net/eudc-export.el (eudc-batch-export-records-to-bbdb):
Fix buglet.
-2022-08-17 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Add Python blocks support for hideshow
@@ -32720,7 +32720,7 @@
(python-hideshow-hide-all-3, python-hideshow-hide-block-1): New
tests (bug#56635).
-2022-08-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Merge from origin/emacs-28
@@ -32728,7 +32728,7 @@
dd077ebded Revert "; * doc/lispintro/emacs-lisp-intro.texi: Fix typo."
362c9ab879 * doc/misc/gnus.texi (Article Washing): Fix Links URL.
-2022-08-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid disabling device multiple times while handling XI attachment events
@@ -32736,15 +32736,15 @@
notice it has been disabled while handling XISlaveDetached or
XISlaveAttached.
-2022-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/buffer.c (Frename_buffer): Fix bug#56693
-2022-08-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/dired.el (dired-mark-if): Evaluate MSG once to avoid warning.
-2022-08-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improved `null` (alias `not`) optimisation
@@ -32752,7 +32752,7 @@
* lisp/emacs-lisp/byte-opt.el (byte-optimize-not): New.
-2022-08-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improved `and` and `or` optimisation
@@ -32760,7 +32760,7 @@
Rewrite. Avoid branching on arguments statically known to be true or
false, and hoist code out to an unconditional prefix when possible.
-2022-08-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improved `if` and `while` optimisation
@@ -32775,7 +32775,7 @@
(byte-optimize-if): Add transformations above and refactor.
(byte-optimize-while): Better static nil-detection.
-2022-08-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improved static detection of nil and non-nil expressions
@@ -32784,11 +32784,11 @@
nil or non-nil result in more cases. These functions have grown and
are no longer defsubst.
-2022-08-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix autoload in tramp.el
-2022-08-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle root permissions on remote files
@@ -32807,14 +32807,14 @@
(ramp-default-user-alist, tramp-find-shell):
* lisp/net/tramp-sudoedit.el (tramp-default-user-alist): Use them.
-2022-08-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
dired-do-shell-command doc string clarification
* lisp/dired-aux.el (dired-do-shell-command): Clarify doc string
(bug#57228).
-2022-08-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Advertise obsolete library pgg.el less
@@ -32831,7 +32831,7 @@
from 'mh-identity-gpg-default-user-id', and make the old name into
obsolete variable alias. Update all uses.
-2022-08-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XInput hierarchy events not being delivered in daemon mode
@@ -32841,7 +32841,7 @@
* src/xterm.c (xi_select_hierarchy_events, x_term_init): Select
those here instead, on the default root window.
-2022-08-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make message-delete-line obsolete
@@ -32851,20 +32851,20 @@
(message-send-mail-with-mh, message-generate-headers)
(message-fill-field-general): Adjust callers.
-2022-08-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix buffer-start cleanup in message-indent-citation
* lisp/gnus/message.el (message-indent-citation): Fix thinko in loop.
-2022-08-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Don't look for long lines beyond the narrowed region
* src/xdisp.c (redisplay_window): Don't scan for newlines outside
the current buffer's restriction.
-2022-08-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Revert "; * doc/lispintro/emacs-lisp-intro.texi: Fix typo."
@@ -32872,7 +32872,7 @@
This was not a typo, but incorrectly matching parens in Info-mode.
-2022-08-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Modernize spam section in Gnus manual slightly
@@ -32885,11 +32885,11 @@
(The problem of spam): Use example.org in example.
(SpamAssassin, Hashcash): Improve wording.
-2022-08-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/gnus.texi (Article Washing): Fix Links URL.
-2022-08-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Delete implicit XEmacs references from Gnus manual
@@ -32897,7 +32897,7 @@
Delete some implicit references to XEmacs.
(RSS): Fix default value.
-2022-08-16 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Make the bookmark fringe icon look like a bookmark
@@ -32928,7 +32928,7 @@
* etc/NEWS: Announce this change (bug#56896).
-2022-08-15 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix non-interactive use of conditionals in Eshell
@@ -32948,7 +32948,7 @@
(esh-cmd-test/unless-else-statement-ext-cmd): Use
'eshell-command-result-equal'.
-2022-08-15 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add 'eshell-command-result-equal' with an ERT explainer
@@ -32963,7 +32963,7 @@
* test/lisp/eshell/esh-var-tests.el
* test/lisp/eshell/eshell-tests.el: Use 'eshell-command-result-equal'.
-2022-08-15 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Provide ERT explainer for 'eshell-match-command-output'
@@ -32990,7 +32990,7 @@
* test/lisp/eshell/eshell-tests-helpers.el
* test/lisp/eshell/eshell-tests.el: Use 'eshell-match-command-output'.
-2022-08-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid lowering child frames below scroll bars on X
@@ -32998,21 +32998,21 @@
(x_lower_frame): Avoid calling XLowerFrame when there is a
parent with scroll bars.
-2022-08-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* doc/misc/gnus.texi (Troubleshooting): Update section.
-2022-08-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/lispref/functions.texi (What Is a Function): Improve further
-2022-08-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from realcomplex/override-global-mode-fix
GitHub-reference: https://github.com/jwiegley/use-package/issues/993
-2022-08-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Produce TAGS in 'lib' as well and include them in src/TAGS
@@ -33020,7 +33020,7 @@
($(lib)/TAGS): New target.
(tags): Depend on $(lib)/TAGS.
-2022-08-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix tmpdir handling in Tramp for Android sshd
@@ -33029,28 +33029,28 @@
* lisp/net/tramp.el (tramp-get-remote-tmpdir): Cache result in
temporary connection property.
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up message-sort-headers code slightly
* lisp/gnus/message.el (message-sort-headers): Simplify code by
removing always-true `if' statement.
-2022-08-15 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix `python-nav-forward-block' moving backward under certain conditions
* lisp/progmodes/python.el (python-nav-forward-block): Add check
for not moving backward (bug#57223).
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix fix_command for non-symbol functions
* src/callint.c (fix_command): Don't bug out on commands that
aren't symbols (like lambdas, for instance).
-2022-08-15 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Enhance safe_run_hooks_1 and safe_run_hook_funcall to handle more arguments
@@ -33060,7 +33060,7 @@
functions so that nargs == 3 or 4 is handled as well as nargs == 2. This
allows them to be used to call hooks with 1 or 2 arguments.
-2022-08-15 Yury Kholodkov <yurykholodkov@gmail.com> (tiny change)
+2023-04-15 Yury Kholodkov <yurykholodkov@gmail.com> (tiny change)
Fix variable types in warnings-suppress
@@ -33068,14 +33068,14 @@
these user options is a list of lists of symbols, not a list of
symbols (bug#57183).
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make eshell-mode more resilient towards `mode-line-format'
* lisp/eshell/esh-mode.el (eshell-mode): `mode-line-format' can be
a string (bug#57185). In that case, don't alter anything.
-2022-08-15 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Pacify warnings from gcc 12 in encode_coding_object
@@ -33084,14 +33084,14 @@
done in decode_coding_object. The fix is correct because saved_pt is
used as a sentinel before saved_pt_byte is used (bug#57219).
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up the exclusion logic in loaddefs-generate
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Allow
excluding files completely (bug#57144).
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak autoloads of defsubsts containing spaces/control chars
@@ -33100,18 +33100,18 @@
trailing spaces if we're autoloading a defsubst containing
"\\`[ \t\n\r]*\\'".
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove Gnus Compatibility manual section
* doc/misc/gnus.texi (Compatibility): Remove outdated section
(bug#57178).
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further lisp-current-defun-name tweaks
@@ -33119,7 +33119,7 @@
tweaks to make (autoload 'foo) work again. Perhaps this should
all be reverted to the original version and then given a new rething.
-2022-08-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make update-directory-autoloads available by default again
@@ -33131,14 +33131,14 @@
obsoletion form.
(batch-update-autoloads): Fix warning.
-2022-08-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
9d0dba44da ; * doc/lispintro/emacs-lisp-intro.texi: Fix typo.
0e336fa51f ; Improve documentation of minibuffer history wrt completion
-2022-08-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix uninitialized variable false-positives
@@ -33146,14 +33146,14 @@
(x_dnd_free_toplevels): Mark dpy and recs UNINIT, since GCC
thinks they can be used uninitialized. (bug#57208)
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make message-mark-active-p obsolete in favor of mark-active
* lisp/gnus/message.el (message-mark-active-p): Make obsolete in
favor of 'mark-active'. Update callers.
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make gnus-uu-view-with-metamail obsolete
@@ -33164,7 +33164,7 @@
* doc/misc/gnus.texi (Other Decode Variables): Don't document
above obsolete variable.
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't use obsolete library as example in Elisp Intro
@@ -33172,7 +33172,7 @@
(Sorting, Files List): Don't use obsolete library makesum.el as
example.
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make gnus-iswitchb-completing-read obsolete
@@ -33181,7 +33181,7 @@
(gnus-completing-read-function): Don't advertise above obsolete
function.
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't advertise obsolete library html2text.el
@@ -33192,7 +33192,7 @@
* lisp/gnus/mm-decode.el (mm-text-html-renderer): Don't advertise
obsolete library html2text.el.
-2022-08-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve timefns speed on integers
@@ -33200,24 +33200,24 @@
Speed up when SPECIFIED_TIME is an integer.
(time_cmp) [FASTER_TIMEFNS]: Speed up when comparing integers.
-2022-08-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Decode time conses before floats
* src/timefns.c (decode_lisp_time): Test for conses before floats,
as conses are more common.
-2022-08-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Work around Bug#57211
* src/buffer.c (Fgenerate_new_buffer_name): Allocate a bigger buffer.
-2022-08-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* doc/lispref/functions.texi: Fix capitalization.
-2022-08-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix selection preservation bug when USE_XCB
@@ -33225,11 +33225,11 @@
wrong ‘tem’ value. Found by GCC -Wanalyzer-use-of-uninitialized-value.
Move decl of local to make the (former) bug more obvious.
-2022-08-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/ring.el (ring): Define as a type
-2022-08-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(compiled-function-p): New function (bug#56648)
@@ -33255,7 +33255,7 @@
* lisp/help-fns.el (help-fns-function-description-header): Use `functionp`.
(help-fns--var-safe-local): Use `compiled-function-p`.
-2022-08-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp code cleanup
@@ -33276,17 +33276,17 @@
(tramp-get-ls-command): Check, that argument "--color=never" has
the intended effect.
-2022-08-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/cedet/ede/emacs.el (ede-emacs-load): Delete obsolete name arg
* lisp/calendar/time-date.el (seconds-to-time): Use the original arg list
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/Makefile.in (elnlisp): Delete autoload.eln from list.
-2022-08-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make Gnus FAQ more contemporary
@@ -33301,14 +33301,14 @@
risks causing confusion; our docs never mean anything but "GNU Emacs"
when we say "Emacs".
-2022-08-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Strength-reduce apply with (list ...) as tail argument
* lisp/emacs-lisp/byte-opt.el (byte-optimize-apply):
Transform (apply F ... (list X ...)) -> (funcall F ... X ...)
-2022-08-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify code using take, ntake and butlast
@@ -33317,7 +33317,7 @@
* lisp/emacs-lisp/ert.el (ert-summarize-tests-batch-and-exit):
Simplify.
-2022-08-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Further speedups of redisplay of long and truncated lines
@@ -33341,7 +33341,7 @@
* etc/NEWS: Announce 'long-line-optimizations-p'.
-2022-08-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More fixes to MPX drag-and-drop interaction
@@ -33350,7 +33350,7 @@
(handle_one_xevent): Verify deviceid in more places; also test
keyboard device before swallowing F1.
-2022-08-13 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Document time-convert FORM argument as mandatory
@@ -33361,14 +33361,14 @@
* src/timefns.c (Ftime_convert): Describe FORM argument as required
as per the advertised calling convention.
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve time-convert docstring formatting for readability
* src/timefns.c (Ftime_convert): Doc fix; improve formatting for
readability.
-2022-08-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
nadvice.el: Avoid exponential blow up in interactive-form recursion
@@ -33380,7 +33380,7 @@
(oclosure-interactive-form): Use `advice--interactive-form` rather than
`commandp` since we'd call `advice--interactive-form` afterwards anyway.
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update Gnus Installation FAQ
@@ -33388,7 +33388,7 @@
(FAQ 1-5): Update to reflect that Gnus is no longer released
separately from Emacs. Delete FAQ on Gnus 5.10, released in May 2003.
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make many gnus version variables obsolete
@@ -33413,14 +33413,14 @@
* lisp/gnus/nnvirtual.el (nnvirtual-version): Make obsolete in
favor of emacs-version.
-2022-08-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
js.el: Tweak last change
* lisp/progmodes/js.el (js-json-mode): Use a function as value of
`syntax-propertize-function`.
-2022-08-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up display of long lines under 'truncate-lines'
@@ -33438,7 +33438,7 @@
* etc/NEWS: Announce 'large-hscroll-threshold'.
-2022-08-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new value `dont-save' to `deactivate-mark'
@@ -33450,25 +33450,25 @@
* src/keyboard.c (syms_of_keyboard): Update doc string of
`deactivate-mark'.
-2022-08-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak outline symbol icons
* lisp/outline.el (outline-close, outline-open): Use icons of the
same size in Symbola.
-2022-08-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow EXCLUDED-FILES in loaddefs-generate to be relative
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Allow the
excluded files to be relative (bug#57144).
-2022-08-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't hide final dump in admin/emake
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ps-mode-version variable obsolete
@@ -33476,14 +33476,14 @@
(ps-mode-show-version, ps-mode-submit-bug-report): Don't use above
obsolete variable.
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make htmlfontify-version variable obsolete
* lisp/htmlfontify.el (htmlfontify-version): Make obolete.
(hfy-meta-tags): Don't use above obsolete variable.
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete many references to Emacs 23 or older from docs
@@ -33504,7 +33504,7 @@
* doc/misc/viper.texi (Viper Specials): Delete references to Emacs 23
or older.
-2022-08-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent selection converter from signalling if buffer is narrowed
@@ -33512,7 +33512,7 @@
outside the accessible portion of the buffer, don't return
anything.
-2022-08-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix a recently-added Eshell test on MS-Windows
@@ -33521,7 +33521,7 @@
MS-Windows by making sure the internal 'format' command
is invoked. (Bug#57129)
-2022-08-13 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Make '$?' and '$$' variables more consistent in Eshell
@@ -33558,7 +33558,7 @@
* etc/NEWS: Announce this change (bug#57129).
-2022-08-13 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow using dollar expansions in Eshell conditionals
@@ -33577,7 +33577,7 @@
* doc/misc/eshell.texi (Control Flow): Update documentation for
conditionals (bug#57129).
-2022-08-13 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Only set Eshell execution result metavariables when non-nil
@@ -33619,7 +33619,7 @@
(Control Flow): ... to here, and add documentation for other control
flow forms.
-2022-08-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -33627,7 +33627,7 @@
e746fc2e7b Delete stale comments from Lisp Intro manual
77613b9217 ; Delete redundant installation instructions from ebnf2ps.el
-2022-08-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve MPX interaction with drag-and-drop
@@ -33644,7 +33644,7 @@
(frame_set_mouse_pixel_position): Use internal client pointer
record.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Hide local variable section in emacs-news-modes
@@ -33660,14 +33660,14 @@
(emacs-news--mode-common): Call 'emacs-etc--hide-local-variables'
to hide local variables section.
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't update loaddefs.el timestamps uselessly in loaddefs-generate
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Don't
re-write the loaddefs.el file when there's no reason to.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Support imenu in emacs-authors-mode
@@ -33675,7 +33675,7 @@
(emacs-authors-imenu-generic-expression): New variable.
(emacs-authors-mode): Add imenu support.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename etc-authors-mode to emacs-authors-mode
@@ -33684,14 +33684,14 @@
* admin/authors.el: (Bug#57105)
* etc/AUTHORS: Use 'emacs-authors' instead of 'etc-authors'.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename etc-authors-mode.el to emacs-authors-mode.el
* lisp/textmodes/etc-authors-mode.el: Move from here...
* lisp/textmodes/emacs-authors-mode.el: ...to here. (Bug#57105)
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete references to deleted library hilit19.el
@@ -33700,21 +33700,21 @@
* lisp/ps-print.el:
* lisp/vc/ediff.el: Delete references to hilit19.el.
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix emacs-news-view-mode-map inheritance
* lisp/textmodes/emacs-news-mode.el (emacs-news-view-mode-map):
Fix inheritance from `special-mode-map' (bug#57100).
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify bookmark-set prompt
* lisp/bookmark.el (bookmark-set): Clarify prompt further
(bug#57128).
-2022-08-12 Harald Jörg <haj@posteo.de>
+2023-04-15 Harald Jörg <haj@posteo.de>
gud.el: invoke 'perldb' with '-E' instead of '-e'
@@ -33723,29 +33723,29 @@
* etc/NEWS ('perldb' now recognizes '-E') New entry in section 'Gud'
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove some more outdated Gnus manual stuff
* doc/misc/gnus.texi (Mail Source Customization): Remove more
outdated text (bug#57156).
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove (gnus) Gnus Development manual section
* doc/misc/gnus.texi (Gnus Development): Remove outdated section
(bug#57156).
-2022-08-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (package-vc-fetch): Autoload it
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* doc/misc/gnus.texi (Emacsen): Delete section.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make some more cedet version variables obsolete
@@ -33755,11 +33755,11 @@
* lisp/cedet/semantic/db-file.el (semanticdb-file-version): Don't
use above obsolete variable semantic-version.
-2022-08-12 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge remote-tracking branch 'origin/master' into feature/package+vc
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete stale comments from Lisp Intro manual
@@ -33767,7 +33767,7 @@
(print-elements-of-list, Miscellaneous): Delete some references to
Emacs 22.
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify face-at-point doc string and add (thing-at-point 'face)
@@ -33778,39 +33778,39 @@
(thing-at-point-provider-alist, thing-at-point): Mention it in the
doc strings.
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further seq-uniq speed-ups for lists
* lisp/emacs-lisp/seq.el (seq-uniq): Speed up more for long lists
(bug#57079).
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make finder-mode inherit special-mode
* lisp/finder.el (finder-mode): Inherit special-mode.
(finder-mode-map): Inherit special-mode-map.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/finder.el (finder-summary): Improve formatting.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use help-key-binding face in package list help
* lisp/emacs-lisp/package.el (package--prettify-quick-help-key):
Use help-key-binding face.
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make cedet version variables obsolete
* lisp/cedet/cedet.el (cedet-version, cedet-packages): Make
obsolete.
-2022-08-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Default outline-minor-mode-use-buttons to only happen in *Help*
@@ -33820,14 +33820,14 @@
changed again to have some other mechanism to opt in in certain
modes, but it's not clear what that mechanism should look like.
-2022-08-12 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Reverse the outline arrows
* lisp/outline.el (outline-open): Reverse the arrows to match
arrows in Customize (bug#57082).
-2022-08-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -33835,14 +33835,14 @@
31af0f4eb7 Don't list Emacs as requirement for built-in package
ae348b719e Fix wrong metrics for bitmap-only fonts with HarfBuzz 5
-2022-08-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent SelectionNotify etc from reaching GTK 3
* src/xterm.c (handle_one_xevent): Prevent selection events from
reaching GTK if they are destined for an Emacs window.
-2022-08-11 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
New debugging facility: backtraces from errors in Lisp called from redisplay
@@ -33876,7 +33876,7 @@
* src/xdisp.c (run_window_scroll_functions): Replace a call to
run_hook_with_args_2 with one to safe_run_hooks_2.
-2022-08-11 Axel Svensson <mail@axelsvensson.com> (tiny change)
+2023-04-15 Axel Svensson <mail@axelsvensson.com> (tiny change)
Support the full range of variation selectors
@@ -33889,14 +33889,14 @@
* doc/lispref/display.texi (Glyphless Chars): Document more
variation selectors.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ad-version variable obsolete
* lisp/emacs-lisp/advice.el (ad-version): Make obsolete in favor
of emacs-version. It has not been bumped since 1994.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ebnf-version variable obsolete
@@ -33904,7 +33904,7 @@
(ebnf-setup, ebnf-begin-file, ebnf-eps-finish-and-write): Don't
use above obsolete variable.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ps-print-version variable obsolete
@@ -33915,7 +33915,7 @@
(pr-help-message, pr-interface-help-message)
(pr-create-interface): Don't use above obsolete variable.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make pr-version variable obsolete
@@ -33923,21 +33923,21 @@
(pr-help-message, pr-interface-help-message, pr-setup)
(pr-create-interface): Don't use above obsolete variable.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't list Emacs as requirement for built-in package
* doc/misc/htmlfontify.texi (Requirements): Don't list Emacs as
requirement for built-in package.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't show status message in Helper-describe-bindings
* lisp/emacs-lisp/helper.el (Helper-describe-bindings): Don't show
status message.
-2022-08-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add "send patches" note to package-vc TODO section
@@ -33945,7 +33945,7 @@
* package.el (package--get-activatable-pkg): Prefer source packages
-2022-08-11 Ulf Jasper <ulf.jasper@web.de>
+2023-04-15 Ulf Jasper <ulf.jasper@web.de>
newsticker: fix bug#57045
@@ -33953,25 +33953,25 @@
(newsticker--treeview-list-items-with-age) (newsticker-treeview-update):
Fix issues with changing sort order in virtual feed 'all' (Bug#57045).
-2022-08-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow updating source packages
* lisp/emacs-lisp/package-vc.el (package-vc-update): Add new function.
* lisp/emacs-lisp/package.el (package-update): Use 'package-vc-update'.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/vc/emerge.el (emerge-show-file-name): Make obsolete.
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make emerge-define-key-if-possible obsolete
* lisp/vc/emerge.el (emerge-define-key-if-possible): Make unused
function obsolete.
-2022-08-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Ignore files in .elpaignore during byte compilation
@@ -33979,22 +33979,22 @@
(package--compile): Bind 'byte-compile-ignore-files' to the result of
'package--parse-elpaignore'.
-2022-08-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (package-vc-unpack): Detect TeXinfo manuals
-2022-08-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/lisp/net/tramp-tests.el (tramp--test-utf8): Adapt test.
-2022-08-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow ignoring files during byte compilation
* bytecomp.el (byte-compile-ignore-files): Add new variable.
(byte-recompile-directory): Respect 'byte-compile-ignore-files'.
-2022-08-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Fix wrong metrics for bitmap-only fonts with HarfBuzz 5
@@ -34002,7 +34002,7 @@
position unit value on HarfBuzz 5 and later regardless of whether the
font is bitmap-only or not. (Bug#57066)
-2022-08-11 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Guess Git repositories from the URL header
@@ -34011,17 +34011,17 @@
'package-vc-probable-repository-regexp'.
(package-vc-fetch): Use 'package-vc-sourced-packages-list'.
-2022-08-11 realcomplex <koenvg@posteo.net> (tiny change)
+2023-04-15 realcomplex <koenvg@posteo.net> (tiny change)
Go back to making `override-global-mode` non-global
-2022-08-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
648acc8848 ; Fix @setfilename in calc.texi
-2022-08-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adjust client pointer upon help event
@@ -34029,14 +34029,14 @@
set do_help and make it the client pointer so that tooltips show
up under the right pointer.
-2022-08-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'describe-char' in "C" locale
* lisp/descr-text.el (describe-char): Avoid assertions if
'buffer-file-coding-system' is nil. (Bug#57066)
-2022-08-10 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Improve the bengali-probhat input method
@@ -34045,14 +34045,14 @@
keyboard and also shows more useful help. Reported by Akib Azmain
Turja <akib@disroot.org>.
-2022-08-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some undesirable frame focus changes
* src/xterm.c (handle_one_xevent): Only detach upon actual
device tree change.
-2022-08-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make gdb-pad-string obsolete in favor of string-pad
@@ -34060,7 +34060,7 @@
(gdb-pad-string): Make obsolete in favor of 'string-pad'. Update
callers.
-2022-08-10 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Extend LAP optimisations to more operations
@@ -34079,14 +34079,14 @@
list4 and listN. Stack manipulation is safe because unbind cannot
read or modify stack entries.
-2022-08-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warning in wisent/comp.el
* lisp/cedet/semantic/wisent/comp.el (require): string-pad is used
run-time.
-2022-08-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in vc/*.el
@@ -34102,7 +34102,7 @@
(vc-hg-extra-menu-map):
* lisp/vc/vc-hooks.el (vc-prefix-map): Prefer defvar-keymap.
-2022-08-10 Koen van Greevenbroek <koen@localhost.com> (tiny change)
+2023-04-15 Koen van Greevenbroek <koen@localhost.com> (tiny change)
Make sure that bind-key's `override-global-mode` is initially on
@@ -34116,14 +34116,14 @@
With `:init-value t` now missing, the minor mode isn't enabled by
default, and `bind-key*` appears not to work.
-2022-08-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete dead code in checkdoc.el
* lisp/emacs-lisp/checkdoc.el: Delete code commented out since
1997.
-2022-08-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespacing issues in array.el
@@ -34132,7 +34132,7 @@
from 'limit-index', 'current-line', 'move-to-column-untabify', and
'untabify-backward'. Update callers.
-2022-08-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -34140,14 +34140,14 @@
628df15da5 ; * doc/misc/viper.texi (Rudimentary Changes): Avoid alias.
85de996bbb * lisp/vc/diff-mode.el: Don't mention XEmacs.
-2022-08-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve MPX interaction with xwidgets and drag-and-drop
* src/xterm.c (handle_one_xevent): Handle focus interaction in
more places.
-2022-08-09 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
js--font-lock-keywords-2: Remove the 'for each' matcher
@@ -34157,7 +34157,7 @@
Mozilla's dialect of JavaScript (added in version 1.5), and has
been deprecated for a decade now.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make wisent-pad-string obsolete in favor of string-pad
@@ -34165,25 +34165,25 @@
obsolete in favor of 'string-pad'. Update callers.
(subr-x): Require when compiling.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make unused function filesets-ormap obsolete
* lisp/filesets.el (filesets-ormap): Simplify and make obsolete in
favor of 'seq-drop-while'.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make filesets-filter-list obsolete in favor of seq-filter
* lisp/filesets.el (filesets-filter-list): Make obsolete in favor
of 'seq-filter'. Update callers.
-2022-08-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid having language environments interpreted as sections
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make rng-collapse-space obsolete
@@ -34191,14 +34191,14 @@
of 'string-clean-whitespace'. Update callers.
Suggested by Lars Ingebrigtsen <larsi@gnus.org>.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve wording when documenting other TRAMP syntaxes
* doc/misc/tramp.texi (Change file name syntax): Improve wording.
(Bug#57061)
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid using aliases for color functions
@@ -34212,27 +34212,27 @@
* lisp/woman.el (woman-fontify): Avoid using aliases for
color-defined-p, display-color-p, and color-values.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some compat code from ps-print.el
* lisp/ps-print.el (ps-print-color-p): Assume color-values is
fboundp; it always is.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/vc/pcvs-util.el (cvs-partition): Simplify.
* lisp/nxml/rng-util.el (rng-collapse-space): Simplify.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make rng-blank-p obsolete in favor of string-blank-p
* lisp/nxml/rng-util.el (rng-blank-p): Make obsolete in favor of
string-blank-p. Update callers.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Autoload string-blank-p
@@ -34240,31 +34240,31 @@
* lisp/net/eudc.el (subr-x): Don't require.
* lisp/emacs-lisp/subr-x.el (string-blank-p): Autoload.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/ibuf-ext.el (ibuffer-remove-alist): Simplify.
-2022-08-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use new convenience functions in replace-string
* lisp/replace.el (replace-string): Use new convenience functions.
-2022-08-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add use-region-beginning and use-region-end
* lisp/simple.el (use-region-beginning, use-region-end): New functions.
(use-region-p): Mention them in the doc strings (bug#45607).
-2022-08-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (replace-highlight): Optimize for large buffers (bug#56815)
Let-bind isearch-lazy-count and lazy-highlight-buffer to nil to avoid
revisiting all matches in the whole buffer after every replacement.
-2022-08-09 Andrea Greselin <greselin.andrea@gmail.com>
+2023-04-15 Andrea Greselin <greselin.andrea@gmail.com>
Add new user option electric-quote-replace-consecutive
@@ -34272,7 +34272,7 @@
option (bug#57057).
(electric-quote-post-self-insert-function): Use it.
-2022-08-09 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Make outline buttons work in NEWS
@@ -34286,7 +34286,7 @@
* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common):
Adjust outline regexp.
-2022-08-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Make compat alias check-ispell-version obsolete"
@@ -34295,21 +34295,21 @@
That alias is in no way obsolete, and was added for a different
reason.
-2022-08-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further lisp-current-defun-name tweaks
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Tweak so
that cl-defmethod and friends work again.
-2022-08-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a faster seq-uniq for lists
* lisp/emacs-lisp/seq.el (seq-uniq): Add a faster method for lists
(bug#57079).
-2022-08-09 Laurence Warne <laurencewarne@gmail.com>
+2023-04-15 Laurence Warne <laurencewarne@gmail.com>
Fix python escape code fontification for multi-line literals
@@ -34321,7 +34321,7 @@
(python-rx): Accept one to three octal digits in octal escape codes
instead of always three
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ibuffer-aif obsolete in favor of if-let
@@ -34332,7 +34332,7 @@
(ibuffer-toggle-marks, ibuffer-map-lines): Prefer 'when-let'
to above obsolete macro.
-2022-08-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Further Tramp fixes for Android 12
@@ -34344,7 +34344,7 @@
* test/lisp/net/tramp-tests.el (tramp-test22-file-times): Adapt test.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve message regarding missing LEIM
@@ -34353,14 +34353,14 @@
* lisp/international/quail.el (quail-use-package): Explain that LEIM
is installed together with Emacs.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve readability of list-input-methods
* lisp/international/mule-diag.el: Make screen more readable by
improving the formatting.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Replace utility functions with seq-uniq
@@ -34368,7 +34368,7 @@
* lisp/ibuf-ext.el (ibuffer-remove-duplicates): Redefine as
obsolete function alias for 'seq-uniq'. Update callers.
-2022-08-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the loaddefs.el file slightly shorter
@@ -34378,14 +34378,14 @@
values from the `autoloads' forms. This makes the loaddefs.el
file about 12K shorter.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ibuffer-awhen obsolete in favor of when-let
* lisp/ibuf-macs.el (ibuffer-awhen): Make obsolete in favor of
'when-let'. Update callers.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ibuffer-split-list obsolete in favor of seq-group-by
@@ -34394,25 +34394,25 @@
(ibuffer-generate-filter-groups): Don't use above obsolete
function.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make compat alias check-ispell-version obsolete
* lisp/textmodes/ispell.el (check-ispell-version): Make compat
alias obsolete.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/ibuffer.el (ibuffer): Use substitute-command-keys for help.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make compat alias image-refresh obsolete
* lisp/image.el (image-refresh): Make compat alias obsolete.
Update callers.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make compat aliases obsolete in fortran.el
@@ -34420,11 +34420,11 @@
(fortran-auto-fill-mode): Make compat aliases obsolete; update
callers.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/isearch.el (isearch-mode-help): Make compat alias obsolete.
-2022-08-09 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Allow the insertion of long strings of letters in reasonable time
@@ -34435,7 +34435,7 @@
* lisp/progmodes/cc-langs.el (c-symbol-key): Replace a "*" by "\\{,1000\\}" in
a regexp.
-2022-08-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Factor out some duplicate code from handle_one_xevent
@@ -34444,13 +34444,13 @@
instead of copypasting the same block of code over and over
again.
-2022-08-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
d91ffdbec2 Don't mention XEmacs toolbar in ediff manual
-2022-08-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling of XI_DeviceChanged events
@@ -34460,14 +34460,14 @@
to that function, and make it specifically query for the device
information. (bug#57020)
-2022-08-08 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Another lisp-current-defun-name tweak
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Avoid error
when edebug spec is the symbol t.
-2022-08-08 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add separate tiny major mode for JSON
@@ -34478,13 +34478,13 @@
* lisp/progmodes/js.el (js--class-decl-matcher):
Skip work if there are no frameworks enabled.
-2022-08-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsiiformes/quote-quote
GitHub-reference: https://github.com/jwiegley/use-package/issues/990
-2022-08-08 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Quote single quotes in docstrings or use different quoting
@@ -34492,11 +34492,11 @@
Warning: docstring has wrong usage of unescaped single
quotes (use \= or different quoting)
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/vc/diff-mode.el: Don't mention XEmacs.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention XEmacs toolbar in ediff manual
@@ -34504,24 +34504,24 @@
specific toolbar support for now. This can be changed back once the
toolbar is ported to Emacs.
-2022-08-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsiiformes/cleanup-manual
GitHub-reference: https://github.com/jwiegley/use-package/issues/968
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/progmodes/antlr-mode.el: Remove remnants of XEmacs support.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove XEmacs specific symbol from gnus-user-agent
* lisp/gnus/gnus.el (gnus-user-agent): Remove XEmacs specific
'codename' symbol.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from mh-alias.el
@@ -34529,28 +34529,28 @@
function.
(multi-prompt): Don't require XEmacs specific library.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up fix_command code slightly
* src/callint.c (fix_command): Remove superfluous check.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
select-active-regions doc string improvement
* src/keyboard.c (syms_of_keyboard): Mention
post-select-region-hook.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Do some NEWS tagging
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/obsolete/makesum.el: Add "Obsolete-since" header.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make makesum.el obsolete
@@ -34560,21 +34560,21 @@
* test/lisp/makesum-tests.el: Move from here...
* test/lisp/obsolete/makesum-tests.el: ...to here.
-2022-08-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/print.c (struct print_buffer): Revert gratuitous format change.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS note about interactive-args
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update TODO about fix_command
* etc/TODO: Remove bit about fix_command, which has now been fixed.
-2022-08-08 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Improve collecting of citation keys
@@ -34587,21 +34587,21 @@
* test/lisp/textmodes/reftex-tests.el
(reftex-all-used-citation-keys): New test.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up fix_command slightly
* src/callint.c (fix_command): Remove now-unused parameter.
(Fcall_interactively): Ditto.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further lisp-current-defun-name tweaks
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Further
tweaks to finding the symbol being defined (defalias).
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow specifying how args are to be stored in `command-history'
@@ -34618,7 +34618,7 @@
longer works since interactive specs are byte-compiled) and
instead rely on `interactive-args'.
-2022-08-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make which-func-mode output less junk
@@ -34627,11 +34627,11 @@
returning the top-level symbol if there isn't a define-like form
(bug#49592).
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* test/lisp/emacs-lisp/nadvice-tests.el: Re-add no-byte-compile.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove redundant local variables in tests
@@ -34641,17 +34641,17 @@
* test/src/coding-tests.el: Pacify byte-compiler without using local
variable.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Revert "Don't autoload obsolete library tpu-extras.el"
This reverts commit 77bf50cb330807039cc84138fb84870bd6d532e2.
-2022-08-08 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
manual: Regenerate texi file
-2022-08-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Group print buffer state in a struct
@@ -34661,7 +34661,7 @@
* src/print.c: (print_free_buffer, print_unwind)
(print_prepare, print_finish, printchar, strout): Adapt users.
-2022-08-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Turn large macros in print.c to functions
@@ -34674,7 +34674,7 @@
(Fwrite_char, write_string, Fterpri, Fprin1, Fprin1_to_string)
(Fprinc, Fprint): Adapt callers.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove no-byte-compile cookie from some libraries
@@ -34687,7 +34687,7 @@
* test/src/font-tests.el: Remove no-byte-compile cookie.
* test/src/font-tests.el (font-parse-explain): Fix warning.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't autoload obsolete library tpu-extras.el
@@ -34696,7 +34696,7 @@
* lisp/obsolete/tpu-extras.el: Don't set generated-autoload-file
to tpu-edt.el.
-2022-08-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Clean up some local variable sections
@@ -34708,13 +34708,13 @@
* lisp/gnus/nnmaildir.el: Remove local variables that conflicts with
Emacs defaults.
-2022-08-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix warnings outside XI2 builds
* src/xterm.c (x_query_pointer): Juggle some definitions around.
-2022-08-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of pointer focus under the input extension
@@ -34734,7 +34734,7 @@
* src/xterm.h (struct xi_device_t): New field `attachment'.
(struct x_display_info): New field `client_pointer_device'.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Minor cleanups in ediff-*.el
@@ -34754,104 +34754,104 @@
* lisp/vc/ediff-util.el:
* lisp/vc/ediff-wind.el: Remove superfluous defvars.
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from conao3/fix-declare-style
GitHub-reference: https://github.com/jwiegley/use-package/issues/760
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/ensure-system-packages-use-package-as-one
GitHub-reference: https://github.com/jwiegley/use-package/issues/774
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/use-package-hook-handler-flatten-mode-symbols
GitHub-reference: https://github.com/jwiegley/use-package/issues/775
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/use-package-chords-autoloading-and-mapping-improvements
GitHub-reference: https://github.com/jwiegley/use-package/issues/778
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from matzebond/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/787
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from wcy123/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/822
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ediff-window-display-p obsolete
* lisp/vc/ediff-init.el (ediff-window-display-p): Redefine as
obsolete function alias for 'display-graphic-p'.
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phst/lex
GitHub-reference: https://github.com/jwiegley/use-package/issues/848
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phst/flet
GitHub-reference: https://github.com/jwiegley/use-package/issues/849
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from conao3/add-custom-face-description
GitHub-reference: https://github.com/jwiegley/use-package/issues/863
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from iaeerfung/master
GitHub-reference: https://github.com/jwiegley/use-package/issues/912
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from wyuenho/set-default-use-package-enable-imenu-support
GitHub-reference: https://github.com/jwiegley/use-package/issues/920
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from wyuenho/statistics-sorting
GitHub-reference: https://github.com/jwiegley/use-package/issues/921
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from Hugo-Heagren/bind-keys-repeat-map
GitHub-reference: https://github.com/jwiegley/use-package/issues/974
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from danielpza/add-update-custom-package
GitHub-reference: https://github.com/jwiegley/use-package/issues/930
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsiiformes/silencio
GitHub-reference: https://github.com/jwiegley/use-package/issues/936
-2022-08-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Pacify a gcc warning in xi_handle_focus_change
@@ -34864,33 +34864,33 @@
12564 | ie.device = source->name;
| ~~~~~~^~~~~~
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from DamienCassou/update-texi
GitHub-reference: https://github.com/jwiegley/use-package/issues/979
-2022-08-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from skangas/fix-typo
GitHub-reference: https://github.com/jwiegley/use-package/issues/987
-2022-08-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp error message
* lisp/net/tramp-sh.el (tramp-sh-handle-file-local-copy):
Simplify for empty files. Better error message. (Bug#56879)
-2022-08-07 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix blank/comment line handling in python-nav-beginning-of-block
* lisp/progmodes/python.el (python-nav-beginning-of-block): Fix
handling of blank/comment line right after block start (bug#57038).
-2022-08-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'vertical-motion' in bidi-reordered text
@@ -34900,14 +34900,14 @@
(move_it_by_lines): Fix logic of detection when going by lines
overshoots.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ediff-file-remote-p obsolete in favor of file-remote-p
* lisp/vc/ediff-init.el (ediff-file-remote-p): Make into obsolete
function alias for file-remote-p. Update callers.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Declare unused function ediff-user-grabbed-mouse obsolete
@@ -34926,31 +34926,31 @@
* lisp/vc/ediff-util.el (ediff-setup): Don't add above obsolete
function to pre-command-hook.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make compat function custom-reset-variables obsolete
* lisp/custom.el (custom-reset-variables): Make unused XEmacs compat
function obsolete.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove workaround for XEmacs bug in ediff-util.el
* lisp/vc/ediff-util.el (ediff-make-empty-tmp-file): Remove
workaround for XEmacs bug.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lib-src/etags.c: Remove XEmacs support.
-2022-08-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify lisp/Makefile.in comment
* lisp/Makefile.in: Clarify comment.
-2022-08-07 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix looping in patch from yesterday
@@ -34958,14 +34958,14 @@
(c-after-change-mark-abnormal-strings): Check (eobp) in loops advancing over
escaped newlines.
-2022-08-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak autoloads lisp/Makefile.in dependencies
* lisp/Makefile.in (autoloads): Adjust the dependencies to what
they were before, and update the comments.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve how url-http displays status messages
@@ -34980,7 +34980,7 @@
(url-http-chunked-encoding-after-change-function):
Remove ineffectual calls to 'url-display-percentage'.
-2022-08-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -34991,7 +34991,7 @@
7ff60c62a9 ; * admin/make-tarball.txt: Fix last change.
2fd5590d0c ; * lisp/play/fortune.el (fortune-ask-file): Doc fix.
-2022-08-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Cease emitting negative file offsets for user variables
@@ -35003,7 +35003,7 @@
Don't emit negative position when doc string starts with `*`.
* src/lread.c (get_lazy_string): Explain.
-2022-08-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use struct for saved strings in the reader
@@ -35016,7 +35016,7 @@
* src/lread.c (Fload, skip_lazy_string, get_lazy_string):
Adapt code.
-2022-08-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Make force-load-doc-strings work again
@@ -35033,7 +35033,7 @@
* test/src/lread-tests.el (lread-force-load-doc-strings):
New test.
-2022-08-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Improve X event timestamp tracking"
@@ -35042,7 +35042,7 @@
This change was installed without answering several important
questions.
-2022-08-06 Daniel Colascione <dancol@dancol.org>
+2023-04-15 Daniel Colascione <dancol@dancol.org>
Improve X event timestamp tracking
@@ -35082,18 +35082,18 @@
(server-switch-buffer): Call frame-note-oob-interaction when user
requests frame be raised.
-2022-08-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly set user time on GTK+ for key press events
* src/xterm.c (x_set_gtk_user_time): New function.
(handle_one_xevent): Call that after key press event on GTK+.
-2022-08-06 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
* lisp/transient.el: Update to package version v0.3.7-158-gc09b34e
-2022-08-06 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Optimize font-locking stanzas for long raw strings.
@@ -35110,7 +35110,7 @@
(c-after-change-mark-abnormal-strings): Replace complicated regexp searches
for end of logical line with basic Lisp functions.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Finish up obsoletion of mh-compat.el
@@ -35118,7 +35118,7 @@
* lisp/mh-e/mh-e.el (mh-compat): Don't require.
* lisp/mh-e/mh-utils.el (mailabbrev): Require.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make mh-compat.el obsolete
@@ -35128,25 +35128,25 @@
* lisp/mh-e/mh-compat.el: Move from here...
* lisp/obsolete/mh-compat.el: ...to here.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move mh-flet macro to mh-acros.el
* lisp/mh-e/mh-compat.el (mh-flet): Move from here...
* lisp/mh-e/mh-acros.el (mh-flet): ...to here.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make compat macro mh-display-completion-list obsolete
* lisp/mh-e/mh-compat.el (mh-display-completion-list): Make compat
macro obsolete. Update callers.
-2022-08-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* etc/PROBLEMS: Problems with Alacritty and Emoji. (Bug#56952)
-2022-08-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp for Android 12
@@ -35162,7 +35162,7 @@
* test/lisp/net/tramp-tests.el (tramp-test17-insert-directory)
(tramp-test22-file-times): Adapt tests.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespacing problem in allout.el
@@ -35172,7 +35172,7 @@
'allout-outlinify-sticky'.
(allout-mode): Doc fix.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix defvar-keymap example in elisp manual
@@ -35181,7 +35181,7 @@
* doc/lispref/modes.texi (Example Major Modes): Fix example to
match code.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make indented-text-mode alias obsolete
@@ -35194,14 +35194,14 @@
* lisp/vc/ediff-util.el (ediff-choose-syntax-table): Don't mention or
use above obsolete alias.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make {close,replace}-rectangle compat aliases obsolete
* lisp/rect.el (close-rectangle, replace-rectangle): Make compat
aliases obsolete.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention test failures on Ubuntu 16.04 in PROBLEMS
@@ -35210,14 +35210,14 @@
entry. It's rather cosmetic.
* etc/PROBLEMS: Delete entry on test failures on Ubuntu 16.04.
-2022-08-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
New function 'composition-sort-rules'
* src/composite.c (Fcomposition_sort_rules)
(compare_composition_rules): New functions.
-2022-08-06 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
* doc/misc/transient.texi: Update to transient v0.3.7-156-ga5562cb
@@ -35266,7 +35266,7 @@
one-of markup issue in the texinfo file; those are relatively simple
to backport in comparison.
-2022-08-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up display of Arabic
@@ -35274,7 +35274,7 @@
some of the Arabic composition rules to ZWJ and ZWNJ cells. This
speeds up display of Arabic by a factor of 2. (Bug#56682)
-2022-08-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix C-n/C-p inside bidirectional text
@@ -35286,13 +35286,13 @@
row occupied by point, take into account the bidi iteration
direction.
-2022-08-06 YugaEgo <yet@ego.team>
+2023-04-15 YugaEgo <yet@ego.team>
Link from (emacs)Init Syntax to (elisp)Introduction
* doc/emacs/custom.texi (Init Syntax): Link to the ELisp manual (Bug#56870)
-2022-08-06 lWarne <laurencewarne@gmail.com>
+2023-04-15 lWarne <laurencewarne@gmail.com>
Fontify python escape sequences in literals
@@ -35304,54 +35304,54 @@
* test/lisp/progmodes/python-tests.el: Add tests for new
fontification (bug#57004).
-2022-08-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mh-e.texi syntax (from previous change)
* doc/misc/mh-e.texi (Viewing): Add closing brace to @footnote.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* etc/PROBLEMS: Delete entry on 20+ years old version of X-Symbol.
* admin/check-doc-strings: Remove XEmacs support.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention removed XEmacs support in reftex manual
* doc/misc/reftex.texi (Installation, Imprint): Don't mention
removed XEmacs support.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention removed XEmacs support in mh-e manual
* doc/misc/mh-e.texi (Preface, Incorporating Mail, Viewing)
(Tool Bar, Tool Bar): Remove any reference to XEmacs.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make alias widget-visibility-value-create obsolete
* lisp/wid-edit.el (widget-visibility-value-create): Make compat
alias obsolete.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make an rmail compat alias obsolete
* lisp/mail/rmailsum.el (rmail-summary-output-to-rmail-file): Make
compat alias obsolete.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make compat alias ede-toplevel-project-or-nil obsolete
* lisp/cedet/ede/files.el (ede-toplevel-project-or-nil): Make
compat alias obsolete.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Drop support for XEmacs package func-menu from idlwave
@@ -35360,24 +35360,24 @@
* doc/misc/idlwave.texi (Introduction, Motion Commands): Remove
any mention of func-menu.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make face-doc-string aliases obsolete
* lisp/faces.el (face-doc-string, set-face-doc-string): Make
aliases obsolete.
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* admin/update_autogen: Fix generating ldefs-boot.el.
* admin/update_autogen: Fix refreshing grammar-wy.el.
-2022-08-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Put no-byte-compile cookie back in ldefs-boot.el
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention removed XEmacs support in idlwave manual
@@ -35385,49 +35385,49 @@
(Syntax Highlighting, Windows and macOS, Troubleshooting): Delete
most references to XEmacs. Support for it was deleted in 28.1.
-2022-08-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly initialize values after a new device is enabled
* src/xterm.c (handle_one_xevent): Initialize new device to
zero. (bug#57011)
-2022-08-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/puresize.h (BASE_PURESIZE): Bump the value. (Bug#57007)
-2022-08-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f3b9bccb45 * lisp/play/fortune.el: Doc fixes.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve XI focus handling for entry and exit events
* src/xterm.c (handle_one_xevent): Skip useless
x_detect_focus_change calls in more cases.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/callproc.c (emacs_spawn): Fix Mac OS X build.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix signature of `seconds-to-time'
* lisp/calendar/time-date.el (seconds-to-time): Fix after change
to time-convert.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve XI focus handling
* src/xterm.c (handle_one_xevent): Skip useless
x_detect_focus_change calls in some cases.
-2022-08-05 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add STREAM argument to 'process-tty-name'
@@ -35444,7 +35444,7 @@
* etc/NEWS: Announce this change.
-2022-08-05 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow creating processes where only one of stdin or stdout is a PTY
@@ -35502,7 +35502,7 @@
* etc/NEWS: Announce this change (bug#56025).
-2022-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
time-convert): Deprecate calls without an explicit FORM arg
@@ -35515,13 +35515,13 @@
* lisp/gnus/nnrss.el (nnrss-normalize-date):
* lisp/epa-ks.el (epa-ks--parse-buffer): Silence corresponding warnings.
-2022-08-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that leim-list.el is built
* lisp/Makefile.in: Ensure that leim-list.el is built (bug#56998).
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Allow newline after def*-form for definition-prefix
@@ -35530,18 +35530,18 @@
(loaddefs-generate--compute-prefixes): Allow newline after the "(def*"
form. (Bug#57000)
-2022-08-05 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Add variable end-of-defun-moves-to-eol
* lisp/emacs-lisp/lisp.el (end-of-defun-moves-to-eol): New variable.
(end-of-defun): Use it.
-2022-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/keyboard.c (timer_check_2): Replace redundant test with assertion
-2022-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
timer.el: Avoid repeated timers
@@ -35552,11 +35552,11 @@
* lisp/emacs-lisp/timer.el (timer--activate): Signal an error if we try
to re-add a timer that's already on the timer-list.
-2022-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
bytecomp.el: Update comments referring to `make-docfile`
-2022-08-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in 'back_to_previous_visible_line_start'
@@ -35566,7 +35566,7 @@
(back_to_previous_visible_line_start): When long-line
optimizations are in effect, we may end up not on a newline.
-2022-08-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
bytecomp.el: Further simplifications enabled by commit 59732a83c8875c
@@ -35574,21 +35574,21 @@
insert a \n before the #@ docstrings since make-docfile doesn't scan
.elc files any more.
-2022-08-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix lisp/Makefile.in autoloads dependency
* lisp/Makefile.in (autoloads): Ensure that loaddefs-gen.elc
exists before making autoloads.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ange-ftp-re-read-dir compat alias obsolete
* lisp/net/ange-ftp.el (ange-ftp-re-read-dir): Make alias obsolete.
Update callers.
-2022-08-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make loaddefs.el dependencies more explicit in src/Makefile.in
@@ -35596,14 +35596,14 @@
since that file may be deleted, but the loaddefs.elc file still
exists. This causes problems in nativecomp builds.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename object-sort-list to srecode-object-sort-list
* lisp/cedet/srecode/table.el (srecode-object-sort-list): Rename
from 'object-sort-list'. Retain old name as an obsolete alias.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problems in viper.el
@@ -35615,7 +35615,7 @@
'set-viper-state-in-major-mode'. Retain old name as an obsolete
alias.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problems in xscheme.el
@@ -35625,7 +35625,7 @@
(xscheme-verify-buffer): Rename from 'verify-xscheme-buffer'.
Retain old name as an obsolete alias.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problem in saveplace.el
@@ -35633,34 +35633,34 @@
'load-save-place-alist-from-file'. Retain old name as an obsolete
alias. Update callers.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make two perl-mode aliases obsolete
* lisp/progmodes/perl-mode.el (indent-perl-exp)
(mark-perl-function): Make obsolete.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problem in ede/custom.el
* lisp/cedet/ede/custom.el (ede-eieio-old-variables): Rename from
'ede-eieio-old-variables'. Retain old name as an obsolete alias.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* test/lisp/env-tests.el: New file.
* lisp/play/fortune.el: Doc fixes.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix oldXMenu grab handling
* src/xmenu.c (x_menu_translate_generic_event, pop_down_menu):
Clear grab correctly on individual XI2 devices.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve C-x C-q in emacs-news-mode
@@ -35670,7 +35670,7 @@
(emacs-news-mode): Disable button-mode and make buffer
read-write.
-2022-08-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve multi-pointer X support
@@ -35678,13 +35678,13 @@
* src/xterm.c (xi_handle_interaction): New function.
(handle_one_xevent): Call it in the appropriate places.
-2022-08-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f484da5fcb * doc/lispref/loading.texi (Autoload by Prefix): Fix typo.
-2022-08-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve input extension focus handling with multiple master devices
@@ -35700,7 +35700,7 @@
* src/xterm.h (struct xi_device_t): New fields for focus
tracking. Add comments describing fields.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in mail/*.el
@@ -35711,7 +35711,7 @@
(sc-electric-mode-map, sc-minibuffer-local-completion-map)
(sc-minibuffer-local-map): Prefer defvar-keymap.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Whitespace fix in gdb-mi.el
@@ -35719,7 +35719,7 @@
(gdb-memory-prev-page): Change tab after "defvar" to space, to avoid
potential bugs in tooling.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Be more lax when picking up prefixes for loaddefs
@@ -35729,22 +35729,22 @@
Before this change, such a definition would be wrongly picked up as
the symbol "nil".
-2022-08-04 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* lisp/Makefile.in (distclean): Also remove loaddefs.elc.
-2022-08-04 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge branch 'feature/long-lines-improvements'
-2022-08-04 Peder O. Klingenberg <peder@klingenberg.no>
+2023-04-15 Peder O. Klingenberg <peder@klingenberg.no>
* lisp/org/org.el: Fix load of compiled or compressed org-loaddefs
* lisp/org/org.el (eq): Fix load of compiled or compressed
org-loaddefs (bug#56982).
-2022-08-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp for backward compatibility
@@ -35753,14 +35753,14 @@
* lisp/net/tramp.el (tramp-parse-netrc): Use it. (Bug#56976)
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that updated loaddefs files are byte-compiled
* lisp/Makefile.in: Add autoloads as an ordering-only dependency
to compile-main so that newly updated loaddefs files are byte-compiled.
-2022-08-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix last Tramp change, especially for bug#56963
@@ -35772,42 +35772,42 @@
* lisp/net/tramp.el (tramp-file-name-unify): Unquote file name in time.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Suppress compilation warnings in netrc.el
* lisp/obsolete/netrc.el (netrc-machine-user-or-password)
(netrc-credentials): Suppress some warnings.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Document obsoletion of netrc-parse better
* lisp/obsolete/netrc.el (netrc-parse): Add 'obsolete' declaration
pointing to 'auth-source-netrc-parse-all' for documentation purposes.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Clean up output of make-command-summary slightly
* lisp/makesum.el (make-command-summary): Don't print today's date
or status messages.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move netrc tests to auth-source-tests.el
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add obsolete-since header to netrc.el
* lisp/obsolete/netrc.el: Add obsolete-since header (bug#56976).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move netrc.el to lisp/obsolete/
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use auth-source in tramp-parse-netrc
@@ -35816,30 +35816,30 @@
* lisp/net/tramp.el (tramp-parse-netrc): Don't use netrc-parse,
because it's going to be made obsolete (bug#56976).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add obsolete-since line to autoload.el and adjust comments
* lisp/obsolete/autoload.el: Add obsolete-since line.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move autoload.el to lisp/obsolete/
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust autoload require in cus-dep.el
* lisp/cus-dep.el (loaddefs-gen): Don't require autoload, because
none of the functions are used.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't require netrc in nnimap.el
* lisp/gnus/nnimap.el (netrc): Don't require, since it's not used.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function auth-source-netrc-parse-all
@@ -35848,7 +35848,7 @@
(auth-source-netrc-parse): Partially revert behaviour in previous
change -- require :allow-null to match.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Minor cleanups in autoload.el/loaddefs-gen.el
@@ -35863,27 +35863,27 @@
(package-autoload-ensure-default-file): Don't warn about
soon-to-be obsolete functon.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Minor checkdoc.el clean up
* lisp/emacs-lisp/checkdoc.el (generate-autoload-cookie): This is
no longer used, so remove reference.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust admin/emacs for new autoloads
* admin/emake: Adjust for new autoloads.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow auth-source-netrc-parse to return all lines
* lisp/auth-source.el (auth-source-netrc-parse): If host/user/port
is nil, don't require those to match.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up nntp-send-authinfo after removing obsolete variable
@@ -35893,25 +35893,25 @@
don't parse the .authinfo file twice, but just rely on the
auth-source functions (bug#56972).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add define-keymap to autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Ignore `define-keymap', too (bug#56973).
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add define-key-after to autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add define-key-after and define-ibuffer-sorter.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* doc/lispref/loading.texi (Autoload by Prefix): Fix typo.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problem in meta-mode.el
@@ -35920,33 +35920,33 @@
from 'font-lock-match-meta-declaration-item-and-skip-to-next'.
Retain old name as an obsolete alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add more autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add define-ibuffer-column.
-2022-08-04 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* eww.el (eww-browse): Raise error if there are no arguments
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/find-dired.el (lookfor-dired): Make obsolete.
-2022-08-04 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge branch 'master' into feature/long-lines-improvements
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename recently added macro to follow conventions
* lisp/eshell/em-extpipe.el (eshell-extpipe--or-with-catch):
Rename from 'em-extpipe--or-with-catch'.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problem in dired-aux.el
@@ -35954,7 +35954,7 @@
Rename from 'minibuffer-default-add-dired-shell-commands'. Retain
old name as an obsolete alias.
-2022-08-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp test
@@ -35962,46 +35962,46 @@
Ignore autoload functions in `tramp-file-name' structure tests,
since `tramp-file-name-handler' is also autoloaded.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename timep to type-break-timep
* lisp/type-break.el (type-break-timep): Rename from 'timep'.
Retain old name as an obsolete alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace problem in mpc.el
* lisp/mpc.el (mpc-tag-browser-tagtypes): Rename from
'tag-browser-tagtypes'. Retain old name as an obsolete alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename set-woman-file-regexp to woman-set-file-regexp
* lisp/woman.el (woman-set-file-regexp): Rename from
'set-woman-file-regexp'. Retain old name as an obsolete alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename alphabetp to hangul-alphabetp
* lisp/leim/quail/hangul.el (hangul-alphabetp): Rename from
'alphabetp'. Retain old name as an obsolete alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make trivial convenience defsubst notzerop obsolete
* lisp/leim/quail/hangul.el (notzerop): Make obsolete. Adjust
callers.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add more autoload-ignored-definitions defs
@@ -36009,17 +36009,17 @@
Add more definition forms that shouldn't trigger prefix
registration (bug#56970).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
url-about.el: Add obsolete-since
* lisp/obsolete/url-about.el: Add obsolete-since.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make url-about.el obsolete (bug#56885)
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix about:protocols in EWW"
@@ -36027,7 +36027,7 @@
We're making this obsolete instead.
-2022-08-04 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve Bidi with long lines.
@@ -36042,7 +36042,7 @@
* src/xdisp.c (init_iterator): Set it.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix eww--download-directory naming
@@ -36050,7 +36050,7 @@
(eww-download-directory): Rename function that was mistakenly
named "erc--" (bug#56969).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up some prefix registration problems in doc strings
@@ -36060,7 +36060,7 @@
* lisp/battery.el (battery-update-functions): Avoid triggering the
`register-definition-prefixes' in doc strings (bug#56968).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix double-encoding attachment headers in single-part rfc2047
@@ -36068,7 +36068,7 @@
double-encode Content-Disposition in mails with no other body
(bug#56906).
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename make-doctor-variables to doctor-make-variables
@@ -36076,14 +36076,14 @@
'make-doctor-variables'. Retain old name as an obsolete function
alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename nil-blank-string to eshell-nil-blank-string
* lisp/eshell/em-unix.el (eshell-nil-blank-string): Rename from
'nil-blank-string'. Retain old name as an obsolete function alias.
-2022-08-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename pod2man-program to cperl-pod2man-program
@@ -36091,7 +36091,7 @@
from 'pod2man-program'. Retain old name as an obsolete
variable alias.
-2022-08-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix about:protocols in EWW
@@ -36102,7 +36102,7 @@
* lisp/url/url-http.el (url-http--get-referer): Refrain from
looking for a referrer if the lastloc had no host.
-2022-08-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly implement refresh synchronization fences
@@ -36118,21 +36118,21 @@
`_NET_WM_SYNC_FENCES'.
(struct x_output): New field `sync_fences'.
-2022-08-04 Kira Bruneau <kira.bruneau@gmail.com>
+2023-04-15 Kira Bruneau <kira.bruneau@gmail.com>
Fix ignored-local-variable-values for non-primitive values
* lisp/files.el (hack-local-variables-filter): Fix
`ignored-local-variable-values' for non-primitive values (bug#56957).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make flyspell-check-word-p work better with delete-selection-mode
* lisp/textmodes/flyspell.el (flyspell-check-word-p): Deactivate
the region immediately (bug#53773).
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust documentation for make-docfile
@@ -36141,20 +36141,20 @@
Adjust the documentation.
* lisp/loadup.el: Adjust commentary.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove outdated TODO item about make-docfile and .el files
* etc/TODO: Remove outdated item about make-docfile and .el files.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust src/Makefile.in comments about make-docfile
* src/Makefile.in ($(etc)/DOC): Remove comment aboout make-docfile
being run twice (because it no longer is).
-2022-08-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce code duplication in XI scroll bar code
@@ -36163,7 +36163,7 @@
(x_create_horizontal_toolkit_scroll_bar, x_scroll_bar_create):
Factor out input extension code there.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust loaddefs-generate--print-form comments
@@ -36171,7 +36171,7 @@
Adjust doc string and comments now that make-docfile doesn't scan
this.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove read_string_literal purify doc string hack
@@ -36180,7 +36180,7 @@
.elc files), remove the hack that make this return 0 when the
string starts with "\\n".
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove VCSWITNESS dependency, since we're always rescanning now
@@ -36189,18 +36189,18 @@
* src/Makefile.in ($(lispsource)/loaddefs.el): Remove VCSWITNESS
dependency.
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-08-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Still mark ldefs-boot.el as non-byte-compilable
* lisp/Makefile.in (ldefs-boot.el): Mark ldefs-boot.el as
non-byte-compiled.
-2022-08-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid redundant calls to XFlush in x_make_frame_visible
@@ -36208,7 +36208,7 @@
not the output buffer was implictly flushed before issuing
XFlush.
-2022-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Revert "Revert part of 59732a83c8 to fix bug#52969"
@@ -36221,18 +36221,18 @@
(scan_lisp_file, skip_white, read_lisp_symbol, search_lisp_doc_at_eol):
Delete functions.
-2022-08-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Only suggest packages with VC metadata
* package-vc.el (package-vc-fetch): Filter out packages without :vc
information in the interactive specification.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/help.el (describe-map-tree, describe-map): Simplify.
-2022-08-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Reorganize Tramp
@@ -36354,7 +36354,7 @@
* test/lisp/net/tramp-tests.el (tramp-test10-write-region)
(tramp-test20-file-modes, tramp-test22-file-times): Extend tests.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Mark keys in apropos.el for substitute-command-keys
@@ -36364,7 +36364,7 @@
(apropos-widget, apropos-plist, apropos-library): Mark keys for
'substitute-command-keys'.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add face to mouse buttons in command substitutions
@@ -36374,7 +36374,7 @@
(help-tests-substitute-command-keys/literal-key-sequence): Expand
test for above change.
-2022-08-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Teach 'symbol-file' about .eln natively-compiled files
@@ -36387,25 +36387,25 @@
* doc/lispref/loading.texi (Where Defined): Document the new
optional argument of 'symbol-file'.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Do interactive mode tagging in apropos.el
* lisp/apropos.el (apropos-follow, apropos-next-symbol)
(apropos-previous-symbol): Tag for 'apropos-mode'.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove superfluous autoloads from url-util.el
* lisp/url/url-util.el (timezone-parse-date)
(timezone-make-date-arpa-standard): Remove superfluous autoloads.
-2022-08-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (package-vc-unpack): Delete using package--delete-directory
-2022-08-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Byte-compile the in-tree loaddefs.el files
@@ -36424,7 +36424,7 @@
($(etc)/DOC): Don't scan loaddefs.el for doc strings, since they
are now picked up from the .elc file (bug#53024).
-2022-08-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash on setting frame background color
@@ -36432,11 +36432,11 @@
window background, since this is now taken care of
automatically.
-2022-08-03 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add TODO section for package-vc
-2022-08-03 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to their version 2.5.0
@@ -36486,20 +36486,20 @@
Release notes: <https://protesilaos.com/codelog/2022-08-03-modus-themes-2-5-0/>.
-2022-08-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix #' quoting in uniquify-buffer-name-style doc string
* lisp/uniquify.el (uniquify-buffer-name-style): Fix wrong quoting.
-2022-08-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check for mis-quoted #' in doc strings during byte-compile
* lisp/emacs-lisp/bytecomp.el (byte-compile-docstring-style-warn):
Check for mis-quoted #' in doc strings, too.
-2022-08-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix quoting of #' in some doc strings
@@ -36508,11 +36508,11 @@
* lisp/emacs-lisp/edebug.el (edebug-read-special):
* lisp/dired-aux.el (dired-split): Fix quoting of #' in doc strings.
-2022-08-03 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
* lisp/transient.el: Update to package version v0.3.7-143-g1b0a8a7
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve obsoletion of trimming functions in url-util.el
@@ -36521,14 +36521,14 @@
(url-strip-leading-spaces): Redefine as obsolete function alias
for 'string-trim-left'.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use string-trim in newsticker--remove-whitespace
* lisp/net/newst-backend.el (newsticker--remove-whitespace): Use
string-trim.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some spurious references to XEmacs
@@ -36536,14 +36536,14 @@
* lisp/emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Don't
mention XEmacs.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove XEmacs compat code from reftex-ref.el
* lisp/textmodes/reftex-ref.el (reftex-latin1-to-ascii): Remove
XEmacs compat code.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove more XEmacs compat code from viper-util.el
@@ -36552,20 +36552,20 @@
(viper-get-visible-buffer-window): Make obsolete. Update caller.
(viper-key-press-events-to-chars): Make obsolete.
-2022-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
CEDET: Try and (re)fix bug#56902, in a better way
* lisp/cedet/semantic/complete.el (semantic-displayer-abstract):
Move definition before first use (in `semantic-displayer-focus-abstract`).
-2022-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Revert "; Fix last change (bug#56902)"
This reverts commit 99bbc1fa23c3a54f1cbd2c56c57773dd471b3ef3.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from url-util.el
@@ -36573,7 +36573,7 @@
* lisp/url/url-util.el (url-display-percentage): Remove XEmacs
compat code.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make url-util space trimming functions obsolete
@@ -36581,14 +36581,14 @@
(url-strip-leading-spaces): Make obsolete in favor of
'string-trim'. Update caller.
-2022-08-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f23d456039 * lisp/term.el: Doc fix; don't mention rlogin.
f522d2d90b ; * admin/make-tarball.txt: Minor tweaks.
-2022-08-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve X server time computation
@@ -36599,14 +36599,14 @@
* src/xterm.h (struct x_display_info): New field
`server_time_offset'.
-2022-08-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent GC threshold from exceeding fixnum limit during precision scrolling
* lisp/pixel-scroll.el (pixel-scroll-start-momentum): Prevent GC
threshold from exceeding most-positive-fixnum.
-2022-08-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add preparations for animation frame timing support
@@ -36621,7 +36621,7 @@
* src/xterm.h (struct x_display_info, struct x_output): New
fields and flags for clock handling and frame times.
-2022-08-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix window iconification, raising and lowering frames, etc
@@ -36630,7 +36630,7 @@
(x_free_frame_resources): Remove calls to XFlush where it is not
really necessary. Leave the calls that actually are intact.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid cl-cXXXr compat aliases
@@ -36640,36 +36640,36 @@
(cl--do-proclaim, cl-defstruct): Prefer using cXXXr functions
directly, instead of cl-cXXXr prefixed compat aliases.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* doc/misc/vtable.texi (Commands): Fix typo. (Bug#56899)
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in footnote.el
* lisp/mail/footnote.el (footnote-mode-map)
(footnote-minor-mode-map): Prefer defvar-keymap.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Obsolete unused variable footnote-use-message-mode
* lisp/mail/footnote.el (footnote-use-message-mode): Make
obsolete.
-2022-08-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve sendmail-program doc string
* lisp/mail/sendmail.el (sendmail-program): Document that the
program shouldn't output text (bug#56855).
-2022-08-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/xdisp.c (redisplay_window): Use BEG rather than hard coding 1
-2022-08-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
CEDET: Remove left-over uses of obsolete <class>-child-p predicates
@@ -36709,38 +36709,38 @@
* lisp/cedet/srecode/insert.el (srecord-compile-inserter-newline-p):
New method.
-2022-08-02 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have VC ignore auto generated files
* package-vc.el (package-vc-unpack): Generate autoloads and ignore
have the VCS ignore them (along with package description file).
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete obsolete variable nntp-authinfo-file
* lisp/gnus/nntp.el (nntp-authinfo-file): Delete variable obsolete
since 24.1.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/textmodes/sgml-mode.el (html-tag-alist): Add https.
* lisp/term.el: Doc fix; don't mention rlogin.
-2022-08-02 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Assume VC data is directly usable in 'package-archive-contents'
* package-vc.el (package-vc-fetch): Remove string parsing and
translation code.
-2022-08-02 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* package-vc.el (vc-clone): Remove superfluous declaration
-2022-08-02 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Signal error on duplicate key definitions
@@ -36753,7 +36753,7 @@
* test/src/keymap-tests.el (keymap-test-duplicate-definitions): Test
duplicate definition detection.
-2022-08-02 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Remove duplicate key definitions from keymaps
@@ -36769,14 +36769,14 @@
* etc/NEWS: Announce 'gnus-summary-up-thread' change.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
url-about: Ignore missing directories in load-path
* lisp/url/url-about.el (url-probe-protocols): Ignore missing
directories in load-path.
-2022-08-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix find-dired over tramp
@@ -36786,25 +36786,25 @@
(find-dired-sort-by-filename): Don't bug out on error messages
from find.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete function alias x-selection obsolete since 23.3
* lisp/select.el (x-selection): Delete function alias obsolete since
23.3.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/mail/binhex.el: Improve commentary.
-2022-08-02 Matt Armstrong <matt@rfc20.org>
+2023-04-15 Matt Armstrong <matt@rfc20.org>
Consider built-in packages to be installed
* lisp/emacs-lisp/package.el (package-installed-p): Check for built-in
packages before initialization. (bug#56877).
-2022-08-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't disable eldoc when doing edebug
@@ -36814,14 +36814,14 @@
that case, because edebug messaging is done after stepping, and
eldoc messaging is done after other movements.
-2022-08-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix url-dired obsoletion warning
* lisp/url/url-file.el (url-file): Don't use obsolete url-dired
function.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make url-dired.el obsolete (part 2/2)
@@ -36830,7 +36830,7 @@
* lisp/url/url-file.el (url-dired): Don't require.
* etc/NEWS: Announce its obsoletion.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make url-dired.el obsolete (part 1/2)
@@ -36840,41 +36840,41 @@
* lisp/url/url-dired.el: Move from here...
* lisp/obsolete/url-dired.el: ...to here.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make gnus-url-unhex into alias for url-unhex
* lisp/gnus/gnus-util.el (gnus-url-unhex): Make into obsolete function
alias for url-unhex; they are identical. Update callers.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add tests for url-{hexify,unhex}-string
* test/lisp/url/url-util-tests.el (url-unhex-string-tests)
(url-hexify-string-tests): New tests.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove extraneous defvars from edmacro.el
* lisp/edmacro.el (edmacro-fix-menu-commands): Remove extraneous
defvars; they are already declared above.
-2022-08-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Further reduce monitor change event duplication
* src/xterm.c (handle_one_xevent): Also don't store duplicate
events for ConfigureNotify events bound for the root window.
-2022-08-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
e6af4968f9 ; Update ChangeLog and AUTHORS
-2022-08-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid extra consing on monitor configuration change
@@ -36882,14 +36882,14 @@
(x_monitors_changed_cb, handle_one_xevent): Look through the
entire event queue to skip delivering monitor change events.
-2022-08-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warning in spam.el
* lisp/gnus/spam.el (spam-check-blackholes): Adjust now that
query-dig is obsolete.
-2022-08-01 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Wrap around the search on typing a letter (bug#56535)
@@ -36898,7 +36898,7 @@
* lisp/isearch.el (isearch-search-and-update): Try to repeat the search
on an error when isearch-wrap-pause is no/no-ding.
-2022-08-01 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix the bytecode incompatibility due to the change to 'narrow-to-region'.
@@ -36925,18 +36925,18 @@
* doc/lispref/positions.texi (Narrowing): Update the documentation.
-2022-08-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't bind non-existent command in picture-mode-map
* lisp/textmodes/picture.el (picture-mode-map): Remove ineffectual
binding of non-existent command.
-2022-08-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/eval.c (Fdefvaralias): Clarify error messages. (Bug#56863)
-2022-08-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer command remapping to substitute-key-definition
@@ -36945,11 +36945,11 @@
* lisp/textmodes/reftex-toc.el (reftex-toc-mode-map): Prefer command
remapping to 'substitute-key-definition'.
-2022-08-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/xdisp.c (get_visually_first_element): Fix a typo.
-2022-08-01 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Various improvements to long lines handling.
@@ -36962,7 +36962,7 @@
* src/composite.c (find_automatic_composition): Ditto.
-2022-08-01 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix forgotten initialization for long line optimizations.
@@ -36971,7 +36971,7 @@
* src/buffer.c (syms_of_buffer): Docstring clarification.
-2022-08-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix loaddefs quirk w.r.t. pinyin-convert
@@ -36980,25 +36980,25 @@
by loaddefs-gen, which will trigger re-compilation of Emacs since
pinyin.el is generated after Emacs is built.
-2022-08-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/dig.el: Improve Commentary.
-2022-08-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fix in eudc-hotlist.el
* lisp/net/eudc-hotlist.el (eudc-hotlist-mode): Doc fix; use command
substitution.
-2022-08-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespacing issue in dig.el
* lisp/net/dig.el (dig-query): Rename from 'query-dig'.
(query-dig): Make into obsolete function alias for 'dig-query'.
-2022-08-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of xsettings events
@@ -37007,7 +37007,7 @@
* src/xterm.c (handle_one_xevent): If it was, don't handle the
event any further.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve GCC pacification in xterm.c
@@ -37018,7 +37018,7 @@
2022-07-31 Paul Eggert <eggert@cs.ucla.edu>
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix time comparison in primitive-undo
@@ -37026,7 +37026,7 @@
The old code was a circa-2013 mistranslation of what used to be in
src/undo.c’s Fprimitive_undo.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use list-form timestamps in .nnmh-articles
@@ -37034,7 +37034,7 @@
timestamps into .nnmh-articles, even if current-time-list is nil.
That way, older Emacs versions can read them.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer ‘time-equal-p’ to ‘equal’ on timestamps
@@ -37065,7 +37065,7 @@
Prefer ‘time-equal-p’ to ‘equal’ when comparing
timestamps for equality.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify a few timestamps
@@ -37081,7 +37081,7 @@
Prefer an integer like 0 to a timestamp list like (0 0)
where either will do.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Omit some (current-time) calls
@@ -37093,11 +37093,11 @@
Prefer nil or omitted arg to (current-time) where this is better
or more-efficient.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* lisp/vc/vc.el: Remove stray comment hyphen.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix "cons up a storm" issue in type-break
@@ -37106,7 +37106,7 @@
(type-break-time-sum, type-break-keystroke-reset):
Use integer timestamps; that’s good enough for this module.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix year-285428751 bug in hanoi-unix-64
@@ -37114,11 +37114,11 @@
(hanoi-unix-64): Use integers, not floating point, to avoid
rounding errors for timestamps greater than 2**53.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* src/timefns.c (Ffloat_time): Fix doc string.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve time-equal-p etc. performance
@@ -37126,7 +37126,7 @@
change callers. Compare (X . Z) to (Y . Z) quickly if X and Y are
fixnums.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve float-time etc. performance
@@ -37139,7 +37139,7 @@
(Ffloat_time): If the specified time is a float,
simply return it.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Make time arithmetic more like comparison
@@ -37152,7 +37152,7 @@
nil; the caller now handles this.
(Ftime_subtract): Handle subtracting X from X specially.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix get-internal-runtime precision
@@ -37160,19 +37160,19 @@
(Fget_internal_run_time): Don’t generate more precision than the
underlying primitives.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
(time-equal-p nil X) returns nil
* src/timefns.c (Ftime_equal_p): nil compares unequal to non-nil.
-2022-08-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Tune blv_found
* src/lisp.h (blv_found): Prefer BASE_EQ to EQ where either will do.
-2022-08-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve frame synchronization support on Haiku
@@ -37214,7 +37214,7 @@
* src/haikuterm.h (MAKE_FRAME_DIRTY):
(FRAME_CR_CONTEXT): Don't dirty frames if not necessary.
-2022-08-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement primitive frame synchronization on Haiku
@@ -37235,11 +37235,11 @@
(haiku_set_use_frame_synchronization)
(haiku_frame_parm_handlers): New param handler.
-2022-08-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/cedet/ede/base.el (ede-project): Fix warning when loading EDE.
-2022-08-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -37247,7 +37247,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-07-28 15:23:34 UTC.
-2022-07-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make frame synchronization a frame parameter
@@ -37270,14 +37270,14 @@
* src/xterm.c (x_sync_wait_for_frame_drawn_event): Clear
parameter if sync fails.
-2022-07-31 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Move the computation of narrowing bounds for long line optimizations.
* src/xdisp.c (init_iterator): Move the computation from here...
(reseat): ... to here. Also recompute the position in certain cases.
-2022-07-31 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add locked narrowing around pre- and post-command-hook
@@ -37288,7 +37288,7 @@
* src/lisp.h: Prototype of the new function.
-2022-07-31 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Extract package-fetch and related functionality
@@ -37317,11 +37317,11 @@
(package--remove-hidden): Use "vc" instead of "source"
(package-menu--print-info-simple): Refactor according to other changes
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow specifying that loaddefs files shouldn't not be compiled
@@ -37329,7 +37329,7 @@
Allow specifying that we shouldn't include a no-compile cookie
(bug#53024).
-2022-07-31 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Declare `key-valid-p` and `readablep` as error-free
@@ -37338,14 +37338,14 @@
them correspondingly. Note that readablep is not pure since its
return value depends on ambient state.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ps-def.el obsolete (part 2/2)
* lisp/obsolete/ps-def.el: Add "Obsolete-since".
* lisp/ps-print.el (ps-def): Don't require.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ps-def.el obsolete (part 1/2)
@@ -37356,14 +37356,14 @@
* lisp/ps-def.el: Move from here...
* lisp/obsolete/ps-def.el: ...to here.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't make a custom-save-icons section if there's nothing to save
* lisp/cus-edit.el (custom-save-icons): Only make an entry when
there's something to save (bug#56860). Also autoload.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move some definitions from ps-def.el to ps-print.el
@@ -37376,7 +37376,7 @@
(ps-color-format, ps-float-format)
(ps-generate-postscript-with-faces1): ...to here.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some leftover compat code from ps-print
@@ -37389,18 +37389,18 @@
(ps-color-device): Make into obsolete function alias for
'display-color-p'. Update callers.
-2022-07-31 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Declare Tramp function for backward compatibility
* lisp/net/tramp.el (tramp-archive-file-name-handler):
* lisp/net/tramp-ftp.el (tramp-archive-file-name-handler): Declare.
-2022-07-31 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Merge remote-tracking branch 'origin/master' into feature/package+vc
-2022-07-31 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Reduce internal rx autoloads
@@ -37409,18 +37409,18 @@
(rx--pcase-macroexpander): Extract body into...
(rx--pcase-expand): ...a separate function, which is autoloaded.
-2022-07-31 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix electric paring in rcirc buffers
* rcirc.el (rcirc--electric-pair-inhibit): Add new predicate function.
(rcirc-mode): Use rcirc--electric-pair-inhibit.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/emacs-lisp/eieio-base.el (eieio-persistent-read): Simplify.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warnings in tramp-loaddefs.el
@@ -37439,14 +37439,14 @@
(tramp-set-completion-function)
(tramp-register-foreign-file-name-handler): Autoload.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix org.el byte-compile warning in org-loaddefs.el
* lisp/org/org.el (org-dynamic-block-define): Autoload because
it's referred to in org-loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix ede byte-compile warnings in loaddefs.el
@@ -37454,14 +37454,14 @@
* lisp/cedet/ede/auto.el (ede-add-project-autoload): Autoload
functions referred to by ede/loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove loaddefs debug code
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--rubric):
Remove code inadvertantly checked in.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix cl byte-compile warning in cl-loaddefs.el
@@ -37469,7 +37469,7 @@
(cl-struct-sequence-type, cl-struct-slot-offset): Autoload since
they are referred to by code in cl-loaddefs.el.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete additional items obsolete since 20, 21 and 22
@@ -37482,7 +37482,7 @@
(replace-count, replace-re-search-function): Doc fixes; adjust for
above deleted function.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix remaining byte-compile warnings in loaddefs.el
@@ -37491,21 +37491,21 @@
* lisp/emacs-lisp/package.el (package--activate-all): Autoload to
avoid byte-compilation warnings when byte-compiling loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix rx.el byte-compile warning in loaddefs.el
* lisp/emacs-lisp/rx.el (rx--to-expr, rx--pcase-transform):
Autoload to avoid warning when byte-compiling loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix sendmail.el byte-compile warning in loaddefs.el
* lisp/mail/sendmail.el (mail-send-and-exit): Autoload since it's
referred to by autoloaded code in loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
tramp fixes for byte-compiling loaddefs.el
@@ -37515,7 +37515,7 @@
* lisp/net/tramp.el (tramp-file-name-handler): Autoload to avoid
warning when byte-compiling loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix further package.el loaddefs byte-compile warnings
@@ -37525,7 +37525,7 @@
(package-activated-list): Autoload since we're assigning the
variable from a function completely autoloaded.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix loaddefs byte-compile warnings from grep.el
@@ -37533,21 +37533,21 @@
(grep-match-face): Autoload to avoid byte-compile warnings from
loaddefs.el.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix loaddefs byte-compile warning from package.el
* lisp/emacs-lisp/package.el (package-user-dir): :group has to be
explicit for autoloaded defcustoms.
-2022-07-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reformulate compile-command condition
* lisp/progmodes/compile.el: Reformulate to avoid a byte-compile
warning when compiling loaddefs.el.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete aliases obsolete since 21.1 and 22.1
@@ -37555,7 +37555,7 @@
* lisp/files.el (find-file-not-found-hooks): Delete variable aliases,
obsolete since 21.1 and 22.1 respectively.
-2022-07-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support keyboard input and display of U+1E9E
@@ -37563,7 +37563,7 @@
* lisp/international/iso-transl.el (iso-transl-char-map)
(iso-transl-language-alist): Add U+1E9E capital sharp S.
-2022-07-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -37571,7 +37571,7 @@
c95a34c960 * src/macfont.m (macfont_open): Initialize font->space_wid...
31a6a37d45 Improve indexing of keymap variables
-2022-07-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix NS unexec build
@@ -37582,7 +37582,7 @@
static heap exhausted: avail 67108864 used 67101824 failed
request 20480
-2022-07-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame synchronization with scroll bar movement
@@ -37604,7 +37604,7 @@
* src/xterm.h (struct scroll_bar): Remove `x_drawable' field.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete redisplay-end-trigger-functions and related defuns
@@ -37633,7 +37633,7 @@
above deleted variable.
* admin/coccinelle/window.cocci: Adjust for above changes.
-2022-07-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of column-related functions
@@ -37641,14 +37641,14 @@
* src/indent.c (Fcurrent_indentation, Fmove_to_column): Document
that column counting ignores invisible text. (Bug#56837)
-2022-07-30 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Fix native compiler handling of narrow-to-region
* lisp/emacs-lisp/comp.el (comp-limplify-lap-inst): Use auto for
byte-narrow-to-region.
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak icons.el emoji detection
@@ -37656,21 +37656,21 @@
character that's unlikely to appear in non-Emoji fonts. (Comment
left in place since this should be fixed in a less breakable way.)
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the symbol icons in outline.el more logical
* lisp/outline.el (outline-open, outline-close): Use symbols from
the same series so that it's more likely that they match up (bug#56823).
-2022-07-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make sure to preserve point across locked narrowing
* src/editfns.c (Fnarrow_to_region): Save the position of point
when locking the restriction, since this function can move point.
-2022-07-30 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Handle the optional argument of 'narrow-to-region' in byte-compiled code.
@@ -37678,7 +37678,7 @@
* src/bytecode.c (exec_byte_code): Get the optional argument.
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify mail-header address parsing doc strings
@@ -37686,35 +37686,35 @@
* lisp/mail/ietf-drums.el (ietf-drums-parse-address): Clarify what
these functions do (bug#56824).
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix outline-minor-mode-use-buttons defcustom type
* lisp/outline.el (outline-minor-mode-use-buttons): Fix wrong type.
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
buffer-match-p doc string clarification
* lisp/subr.el (buffer-match-p): Actually say that nil is a valid
value.
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust outline--use-buttons-p to buffer-match-p change
* lisp/outline.el (outline-minor-mode-use-buttons): Adjust doc string.
(outline--use-buttons-p): No longer any need to special-case t/nil.
-2022-07-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move a test from subr-tests to print-tests
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/apropos.el (apropos-documentation): Simplify.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid leaving temp buffers in bib-mode and refbib
@@ -37722,19 +37722,19 @@
* lisp/textmodes/refbib.el (r2b-capitalize-title): Use
with-temp-buffer.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in dns-mode-map
* lisp/textmodes/dns-mode.el (dns-mode-map): Prefer defvar-keymap.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in nroff-mode-map
* lisp/textmodes/nroff-mode.el (nroff-mode-map): Prefer defvar-keymap.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix namespace use in bib-mode.el
@@ -37745,18 +37745,18 @@
update uses.
(bib-mode-map): Prefer defvar-keymap.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ffap-newfile-prompt obsolete
* lisp/ffap.el (ffap-newfile-prompt): Obsolete in favor of
'find-file-not-found-functions'.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/ffap.el (ffap-url-regexp): Add gemini.
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make outline-view-change-hook obsolete
@@ -37764,11 +37764,11 @@
I.e. obsolete." But lazy-lock has been deleted.
* lisp/outline.el (outline-view-change-hook): Make obsolete.
-2022-07-30 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* src/macfont.m (macfont_open): Initialize font->space_width. (Bug#56808)
-2022-07-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve indexing of keymap variables
@@ -37778,14 +37778,14 @@
* doc/lispref/keymaps.texi (Translation Keymaps): Improve indexing
of keymaps. (Bug#56816)
-2022-07-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
e0f54c62ec CC Mode: fontify variables/functions after line comments e...
2c6a94c5b8 ; Correct the meaning of "cf." in tips.texi
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor improvements to precision scroll interpolation
@@ -37793,14 +37793,14 @@
cons threshold temporarily. This leads to a very noticable
improvement to animation speed.
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix failure caused by misreading the frame synchronization spec
* src/xterm.c (x_sync_update_begin): Ensure value % 4 is 1.
(x_sync_update_finish): Then, add 3.
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't freeze if the compositing manager crashes
@@ -37809,14 +37809,14 @@
(x_sync_wait_for_frame_drawn_event): Disable frame
synchronization if x_if_event times out after 1 second.
-2022-07-29 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: fontify variables/functions after line comments ending in spaces
* lisp/progmodes/cc-engine.el (c-forward-comment-minus-1): Take account of
spaces preceding a linefeed when scanning a putative line comment end.
-2022-07-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve narrowing when iterator has moved outside of narrowing bounds.
@@ -37833,25 +37833,25 @@
* src/composite.c (find_automatic_composition): Add argument
to 'get_narrowed_begv'.
-2022-07-29 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* subr.el (buffer-match-p): Add t as trivial a condition
-2022-07-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improvement for long line optimizations.
* src/xdisp.c (handle_fontified_prop): Also apply the forced
narrowing at BOB.
-2022-07-29 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Adapt native compiler to change in narrow-to-region
* lisp/emacs-lisp/comp.el (comp-limplify-lap-inst): Add third
argument nil for narrow-to-region.
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling of extended frame resize synchronization
@@ -37866,14 +37866,14 @@
* src/xterm.h (struct x_output): New field
`resize_counter_value'.
-2022-07-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix outline byte compilation warning from previous change
* lisp/outline.el (outline--use-buttons-p): Move around to fix
byte compilation warning.
-2022-07-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up the outline minor mode button logic
@@ -37883,7 +37883,7 @@
(outline-hide-subtree, outline--fix-up-all-buttons)
(outline-show-subtree): Use it.
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor additions to last change
@@ -37896,7 +37896,7 @@
(XTframe_up_to_date, handle_one_xevent): Minor redesign of frame
synchronization feature. Fix crash with overflow and checking.
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement monitor refresh rate synchronization on X
@@ -37918,18 +37918,18 @@
* src/xterm.h (struct x_output): New fields for frame dirtyness
and vsync.
-2022-07-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge branch 'feature/long-lines-and-font-locking'
-2022-07-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Further minor improvements of documentation
* src/xdisp.c (syms_of_xdisp) <fontification-functions>:
* etc/NEWS: Further minor wording improvements.
-2022-07-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements of recent documentation changes
@@ -37938,13 +37938,13 @@
* src/xdisp.c (syms_of_xdisp) <fontification-functions>:
* etc/NEWS: Clarify and improve wording of documentation changes.
-2022-07-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Also update after buffer flip caused by flush_frame
* src/xterm.c (x_flip_and_flush): Mark the end of a sync frame.
-2022-07-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement extended frame synchronization
@@ -37958,7 +37958,7 @@
* src/xterm.h (struct x_display_info): New atom.
(FRAME_X_COUNTER_VALUE): New macro.
-2022-07-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't offer meaningless selection targets during drag-and-drop
@@ -37966,7 +37966,7 @@
(selection-converter-alist): Register it as the availability
function for DND specific targets.
-2022-07-28 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Final documentation tweaks.
@@ -37975,7 +37975,7 @@
* src/xdisp.c (syms_of_xdisp): Mention the fact that restrictions
may be locked around 'fontification-functions'.
-2022-07-28 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Add an optional 'lock' parameter to 'narrow-to-region'
@@ -38004,11 +38004,11 @@
* doc/lispref/positions.texi (Narrowing): Document it.
-2022-07-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-prefix-map): Fix key broken by conversion.
-2022-07-28 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Cleanup `string-equal-ignore-case' declarations.
@@ -38024,11 +38024,11 @@
`pure' and `side-effect-free' declarations.
(string-equal-ignore-case): Make inline.
-2022-07-28 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
a couple more `string-equal-ignore-case' test cases
-2022-07-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Comment fixes for recent icon code
@@ -38036,7 +38036,7 @@
* lisp/emacs-lisp/icons.el: Remove comment.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete fast-lock.el and lazy-lock.el
@@ -38062,7 +38062,7 @@
* lisp/mail/rmail.el (rmail-variables): Don't inhibit obsolete
lazy-lock-mode and fast-lock-mode.
-2022-07-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix grab view persisting on Haiku after popup menu closes
@@ -38072,28 +38072,28 @@
* src/haiku_support.h: Update prototypes.
* src/haikumenu.c (haiku_menu_show): Call it here.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Convert ffap comments to tests
* test/lisp/ffap-tests.el (ffap-file-remote-p, ffap-machine-p):
New tests.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
ba54f7e39c ; * doc/lispref/windows.texi (Window Sizes): Another typo....
7990d0c36a ; * doc/lispref/windows.texi (Window Sizes): Fix a typo. ...
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
92e77873ad Update ChangeLog and AUTHORS for 28.1.91 pretest
093214402b ; * admin/authors.el (authors-aliases): Update.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -38104,7 +38104,7 @@
# Conflicts:
# doc/lispref/tips.texi
-2022-07-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use icons in warnings buffers
@@ -38114,7 +38114,7 @@
(warnings-suppress): New helper function.
(display-warning): Use it (bug#46025).
-2022-07-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use icons in outline
@@ -38134,7 +38134,7 @@
(outline--insert-open-button, outline--insert-close-button): Make
point movement better in *Help* buffers.
-2022-07-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for user-customizable icons
@@ -38164,7 +38164,7 @@
* test/lisp/emacs-lisp/icons-tests.el: Add some tests.
-2022-07-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly set marker position after specpdl is unwound during printing
@@ -38172,7 +38172,7 @@
wrong current_buffer. Reported by Lars Ingebrigtsen
<larsi@gnus.org>.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make quickurl.el obsolete (part 2/2)
@@ -38180,21 +38180,21 @@
* lisp/info.el (Info-file-list-for-emacs): Delete quickurl entry.
* doc/misc/autotype.texi (QuickURL): Delete section.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make net/quickurl.el obsolete (part 1/2)
* lisp/net/quickurl.el: Move from here...
* lisp/obsolete/quickurl.el: ...to here.
-2022-07-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't export print--unreadable-callback-buffer to lisp
* src/print.c (syms_of_print): Don't export
`print--unreadable-callback-buffer' to lisp.
-2022-07-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that we don't call print-unreadable-function from " prin1"
@@ -38204,7 +38204,7 @@
(syms_of_print): New internal `print--unreadable-callback-buffer'
variable.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Bump Emacs version to 28.1.91
@@ -38213,14 +38213,14 @@
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 28.1.91.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update ChangeLog and AUTHORS for 28.1.91 pretest
* ChangeLog.3:
* etc/AUTHORS: Update.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fixes: don't mention EFS
@@ -38232,20 +38232,20 @@
* lisp/url/url-file.el (url-file-find-possibly-compressed-file):
Doc fixes; don't mention XEmacs specific library EFS.
-2022-07-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor update of truncate-line optimization
* src/xdisp.c (forward_to_next_line_start): Look into display and
overlay strings only when lines are truncated on display.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New test ffap-replace-file-component
* test/lisp/ffap-tests.el (ffap-replace-file-component): New test.
-2022-07-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Minor doc fixes in ffap.el
@@ -38253,7 +38253,7 @@
(ffap-url-fetcher): Minor doc fixes. Adapt to new default; don't
mention defunct/missing library ffap-url.el.
-2022-07-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix minor problem with scroll bar grabs on Haiku
@@ -38261,7 +38261,7 @@
(MouseDown, MouseUp): Keep a counter of the mouse down events
received.
-2022-07-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions in mouse button handling on Haiku
@@ -38272,7 +38272,7 @@
(MouseDown, MouseUp): Pass the current message to BasicMouseUp
and BasicMouseDown.
-2022-07-28 Paul Pogonyshev <pogonyshev@gmail.com>
+2023-04-15 Paul Pogonyshev <pogonyshev@gmail.com>
Release the desktop lock in 'kill-emacs-hook'
@@ -38280,18 +38280,18 @@
(desktop--on-kill): New function, refactored from 'desktop-kill'.
(desktop-kill): Call 'desktop--on-kill'. (Bug#56800)
-2022-07-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_set_offset): Respect x-no-window-manager.
-2022-07-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove excessive synchronization from x_sync_with_move
* src/xterm.c (x_sync_with_move): Remove redundant XSync. The X
server always handles requests in order.
-2022-07-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Drop support for obsolete "Lisp Code Directory" from ffap
@@ -38301,7 +38301,7 @@
Directory".
(ffap-lcd): Make obsolete.
-2022-07-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Drop support for XEmacs package EFS
@@ -38315,20 +38315,20 @@
* lisp/speedbar.el (speedbar-check-vc): Drop support for XEmacs
package EFS.
-2022-07-27 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Make ffap-file-suffix obsolete
* lisp/ffap.el (ffap-file-suffix): Make obsolete in favor of
file-name-extension. Update callers.
-2022-07-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Remove Tramp instrumentation
* lisp/net/tramp.el (tramp-handle-shell-command): Modify sentinel handling.
-2022-07-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up Isearch in very long lines under line truncation
@@ -38337,11 +38337,11 @@
buffers with very long lines, to avoid falling back on slow
iteration. (Bug#56682)
-2022-07-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Further Tramp instrumentation
-2022-07-27 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add compat from GNU ELPA as a soft dependency in ERC
@@ -38366,7 +38366,7 @@
(erc-update-mode-line-buffer): Remove `string-replace' compat code.
(erc-message-english-PART): Remove `string-replace' compat code.
-2022-07-27 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Avoid mutating default value of erc-server-last-peers
@@ -38380,7 +38380,7 @@
(erc-server-PRIVMSG): Create a new `erc-server-last-peers' for easier
testing. (Bug#56449)
-2022-07-27 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Ensure erc-dcc-chat-setup runs in the right buffer
@@ -38389,7 +38389,7 @@
(erc-dcc--send-final-turbo-ack, erc-dcc-get-filter): Rename internal
variable formerly known as `erc-dcc--X-send-final-turbo-ack'.
-2022-07-27 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Fix CTCP regression in erc-server-PRIVMSG
@@ -38402,7 +38402,7 @@
* test/lisp/erc/resources/dcc/chat/accept-dcc.eld: New file.
* test/lisp/erc/resources/dcc/chat/accept.eld: New file.
-2022-07-27 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Allow non-IRC line delimiters with ERC test server
@@ -38417,7 +38417,7 @@
* test/lisp/erc/resources/erc-d/resources/foreign.eld: New file.
-2022-07-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix thinko in last change
@@ -38425,7 +38425,7 @@
Record unwind protect instead.
(PRINTFINISH): Stop freeing the print buffer. (bug#56773)
-2022-07-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
In Tramp, use `string-empty-p' and `string-equal-ignore-case' consequently
@@ -38438,14 +38438,14 @@
New defalias.
* lisp/net/tramp-gvfs.el (tramp-gvfs-handler-mounted-unmounted): Use it.
-2022-07-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update test-print-unreadable-function after fix
* test/lisp/subr-tests.el (test-print-unreadable-function): Update
test after fix.
-2022-07-27 YugaEgo <yet@ego.team>
+2023-04-15 YugaEgo <yet@ego.team>
Improve 'diff-whitespace-style' user option declaration
@@ -38457,7 +38457,7 @@
* etc/NEWS: Extend 'diff-whitespace-style' introduction.
(Bug#56679) (bug#56679).
-2022-07-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix invalid current buffer after print-unreadable-function signals
@@ -38465,13 +38465,13 @@
record_unwind_current_buffer instead.
(PRINTFINISH): Stop restoring `old'. (bug#56773)
-2022-07-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a test for python-mode comment/else problem
Based on a patch from kobarity <kobarity@gmail.com>
-2022-07-27 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Fix comment/else indentation problem in python-mode
@@ -38479,14 +38479,14 @@
(python-info-dedenter-opening-block-positions): Fix indentation of
"else" after a comment (bug#56742).
-2022-07-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame determination for XI touch events
* src/xterm.c (handle_one_xevent): Find touchscreen event
windows using x_window_to_frame.
-2022-07-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove workaround for some input method problems
@@ -38494,7 +38494,7 @@
workaround for some input method problems, since they cause more
problems than they fix. (bug#56782)
-2022-07-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix NS stretch glyph display
@@ -38504,7 +38504,7 @@
(ns_draw_glyph_string): New function. Port code from X and use
it instead. (bug#56787)
-2022-07-26 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: correct the calculation and handling of c-use-category.
@@ -38521,27 +38521,27 @@
(c-sc-parse-partial-sexp): Wrap c-use-category in (eval-when-compile ...) as
an optimization, preventing the XEmacs code also being generated.
-2022-07-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add missing @end defun to strings.texi
* doc/lispref/strings.texi (Text Comparison): Add missing @end defun.
-2022-07-26 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
restore and obsolete `gnus-string-equal' and `bibtex-string='
* lisp/gnus/gnus-util.el (gnus-string-equal): Restore and declare obsolete.
* lisp/textmodes/bibtex.el (bibtex-string=): Likewise.
-2022-07-26 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
avoid error when message-fetch-field returns nil
* gnus-art.el (article-hide-boring-headers): Use "" when
`message-fetch-field' returns `nil'
-2022-07-26 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
string-equal-ignore-case: new function
@@ -38595,7 +38595,7 @@
* test/lisp/subr-tests.el (string-comparison-test):
Add tests for `string-equal-ignore-case'.
-2022-07-26 Christian Garbs <mitch@cgarbs.de>
+2023-04-15 Christian Garbs <mitch@cgarbs.de>
João Távora <joaotavora@gmail.com>
Add out-of-box support for perl lsp server
@@ -38606,7 +38606,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/952
-2022-07-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't bind `M-X' when doing general completion
@@ -38619,14 +38619,14 @@
read-extended-command.
(read-extended-command-1): Use it.
-2022-07-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a test for print-unreadable-function
* test/lisp/subr-tests.el (test-print-unreadable-function): Add
failing test (bug#56773).
-2022-07-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add duplicate-dwim (bug#56418)
@@ -38640,7 +38640,7 @@
* test/lisp/misc-tests.el (misc--duplicate-dwim): New test.
* etc/NEWS: Announce.
-2022-07-26 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Teach 'network-lookup-address-info' to validate numeric addresses
@@ -38653,14 +38653,14 @@
(lookup-hints-values): Test new functionality.
* etc/NEWS: Announce change.
-2022-07-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix regression in last Tramp change
* lisp/net/tramp-sh.el (tramp-readlink-file-truename): Remove.
(tramp-sh-handle-file-truename): Revert implementation. (Bug#56774)
-2022-07-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix flicker when moving tooltips between frames during mouse drag-and-drop
@@ -38670,7 +38670,7 @@
* src/xfns.c (Fx_show_tip): Allow that but only between frames
on the same X display.
-2022-07-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle modifiers during Haiku DND wheel movement
@@ -38682,21 +38682,21 @@
wheel function.
(syms_of_haikuselect): Update doc strings.
-2022-07-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
970190b844 Avoid infloop in 'recenter'
a866674b2a Fix inaccuracies in "lax search" documentation
-2022-07-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some redundant checks in the DND code
* src/xterm.c (handle_one_xevent): Don't check tab_bar_p or
tool_bar_p before clearing last items during drag-and-drop.
-2022-07-25 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improvement for long lines in buffers with font locking.
@@ -38711,7 +38711,7 @@
* src/dispextern.h: Prototype of 'get_closer_narrowed_begv'.
Fix the prototypes of 'get_narrowed_begv' and 'get_narrowed_zv'.
-2022-07-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Note guideline for doc string expressions
@@ -38719,21 +38719,21 @@
Mention \\=' and \\=` and say that expressions like
(NAME TYPE RANGE) should not be quoted.
-2022-07-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid infloop in 'recenter'
* src/window.c (Frecenter): Avoid infinite loop in the minibuffer
under 'fido-vertical-mode'. (Bug#56765)
-2022-07-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix regexp in tramp-tests.el
* test/lisp/net/tramp-tests.el (tramp--test-enabled): Fix regexp
for Tramp test files.
-2022-07-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Make package-archives URL treatment slighty laxer
@@ -38743,41 +38743,41 @@
* lisp/emacs-lisp/package.el (package--with-response-buffer-1): Use
'url-expand-file-name' instead of 'concat'.
-2022-07-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Clean up more robustly in compile.el
* lisp/progmodes/compile.el (compilation-sentinel): Use
unwind-protect.
-2022-07-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix inaccuracies in "lax search" documentation
* doc/emacs/search.texi (Lax Search): Update the examples of
character folding in search. (Bug#56747)
-2022-07-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse face handling during frame reentry on Haiku
* src/haikuterm.c (haiku_read_socket): Clear
last_mouse_glyph_frame like on X.
-2022-07-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
ba70d0f77c Update to Org 9.5.4-17-g6e991f
-2022-07-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix typo in x-dnd-tests.el
* test/lisp/x-dnd-tests.el (x-begin-drag): Avoid extra leading /
in file names. (bug#56712)
-2022-07-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse face handling with tooltips
@@ -38787,26 +38787,26 @@
be restored if an EnterNotify is later sent on top of the same
glyph.
-2022-07-24 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.4-17-g6e991f
-2022-07-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge commit '7738854e09' to fix fallout of force-push in gnu elpa
-2022-07-24 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Fix the prompt for mh-mime-save-parts (SF#500)
* mh-mime.el (mh-mime-save-parts): Use the default argument to
read-directory-name; don't use format-prompt.
-2022-07-24 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
* mh-mime.el (mh-mime-save-parts): Restore default-directory (SF#498)
-2022-07-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Refactor Tramp
@@ -38921,7 +38921,7 @@
Remove superfluous test files.
(tramp-test21-file-links): Protect file name deletion.
-2022-07-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Throw errors in XDS handler directly
@@ -38932,14 +38932,14 @@
(x-dnd-tests-do-direct-save-internal): Bind it to t around
x-begin-drag. (bug#56712)
-2022-07-24 Paul Pogonyshev <pogonyshev@gmail.com>
+2023-04-15 Paul Pogonyshev <pogonyshev@gmail.com>
Don't exclude current dir in `package--reload-previously-loaded'
* lisp/emacs-lisp/package.el (package--reload-previously-loaded):
Don't exclude the current directory (bug#56614).
-2022-07-24 YugaEgo <yet@ego.team>
+2023-04-15 YugaEgo <yet@ego.team>
Add new user option 'diff-whitespace-style'
@@ -38948,7 +38948,7 @@
(top level): require 'whitespace.
(whitespace-style, whitespace-trailing-regexp): Remove defvars.
-2022-07-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -38960,7 +38960,7 @@
# Conflicts:
# lisp/help.el
-2022-07-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent exposing tooltip frames to Lisp code during drag-and-drop
@@ -38969,18 +38969,18 @@
NULL.
(handle_one_xevent): Ignore DND events to tooltip frames.
-2022-07-23 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el: Bump the version.
-2022-07-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Set `default-directory' of Tramp archive connection buffer
* lisp/net/tramp-archive.el (tramp-archive-file-name-handler):
Set `default-directory' of Tramp connection buffer. (Bug#56628)
-2022-07-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix `lsh` warning shortcomings (bug#56641)
@@ -38995,14 +38995,14 @@
* test/src/data-tests.el (data-tests-ash-lsh):
Suppress warning in tests of `lsh` itself.
-2022-07-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve display of columns on mode-line
* src/xdisp.c (decode_mode_spec): A better representation for
"unknown column number".
-2022-07-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Optimize 'set_vertical_scroll_bar' for long lines
@@ -39010,7 +39010,7 @@
being accurate about window_end_pos if long-line shortcuts
are in effect in the current buffer.
-2022-07-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid calling 'current_column' in buffers with long lines.
@@ -39020,7 +39020,7 @@
optimizations enabled, avoid calling 'current_column', which is
very slow in that case.
-2022-07-23 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Update pdumper.c after recent long lines changes
@@ -39033,7 +39033,7 @@
(dump_buffer) [CHECK_STRUCTS]: Update hash accordingly
for --enable-checking=structs.
-2022-07-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up redisplay of long truncated lines
@@ -39044,7 +39044,7 @@
iteration when none is needed. This speeds up redisplay of very
long lines under 'truncate-lines'.
-2022-07-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Correct symbol in error for failed CHECK_INTEGER (bug#56723)
@@ -39052,7 +39052,7 @@
* src/lisp.h (CHECK_INTEGER): Use integerp, not numberp.
-2022-07-23 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Support new "binary file matches" format in Ripgrep 13
@@ -39060,7 +39060,7 @@
Support new "binary file matches" format in Ripgrep 13
(bug#56624).
-2022-07-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove macOS region color code
@@ -39068,7 +39068,7 @@
Equivalent functionality is no longer available on free
operating systems.
-2022-07-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use `ash` instead of `lsh` in verilog-mode (bug#56641)
@@ -39076,14 +39076,14 @@
Use `ash`; the result will be the same because the first argument is
nonnegative.
-2022-07-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Warn about calls to `lsh` (bug#56641)
* lisp/subr.el (lsh): Warn when compiled; recommend `ash`.
* etc/NEWS: Add note.
-2022-07-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update the documentation of 'declare' forms
@@ -39092,14 +39092,14 @@
* doc/lispref/functions.texi (Declare Form): Document 'declare'
forms that were previously undocumented.
-2022-07-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Undo C parts of "Don't use the Gtk region face"
This reverts commit a24f710395f9777cb9f8b000300e5e9c892d7794, apart
from the change to faces.el and NEWS.
-2022-07-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't use the Gtk region face
@@ -39111,14 +39111,14 @@
* src/xfns.c (x_defined_color):
* src/pgtkterm.c (pgtk_defined_color): Don't call.
-2022-07-23 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix Python navigation problem with a line continuation using backslash
* lisp/progmodes/python.el (python-nav--beginning-of-defun): Fix
line continuation using backslash in nested defun (bug#56615).
-2022-07-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix bookmark support for Help functions in native-compilation builds
@@ -39130,14 +39130,14 @@
'describe-function--helper' instead of a lambda-function.
(Bug#56643)
-2022-07-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix wdired entry when there are hidden subdirs
* lisp/dired.el (dired--unhide): Allow `C-c C-q' to work when
there are hidden inserted subdirs (bug#56698).
-2022-07-23 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
New user option to disable deleting current input in comint mouse-2
@@ -39146,7 +39146,7 @@
deleting current input when insert an old input using mouse-2.
(comint-insert-input): Use it.
-2022-07-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use special-mode in eldoc--doc-buffer
@@ -39154,7 +39154,7 @@
`special-mode' to allow normal customizations of the buffer
(bug#56659).
-2022-07-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix PGTK DND after a source leaves without dropping anything
@@ -39162,35 +39162,35 @@
(pgtk-dnd-handle-gdk): Set flag upon drag-leave. Clear state
upon drag-motion if it is set.
-2022-07-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix off-by-one error in string-truncate-left
* lisp/emacs-lisp/subr-x.el (string-truncate-left): Fix off-by-one
error (bug#56685).
-2022-07-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle text scale and global text scale during DND wheel movement
* lisp/x-dnd.el (x-dnd-mwheel-scroll): Handle `text-scale' and
`global-text-scale' mwheel actions.
-2022-07-23 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Fix mode line mouse-1 binding when showing only column numbers
* lisp/bindings.el (mode-line-position): Fix the mouse-1 binding
when showing only column numbers (bug#56694).
-2022-07-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't bug out in src when there's no srcset
* lisp/net/shr.el (shr--preferred-image): Don't bug out when
there's no srcset.
-2022-07-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix srcset parsing in shr
@@ -39198,7 +39198,7 @@
parsing for easier testing.
(shr--parse-srcset): Don't misparse URLs with commas in them.
-2022-07-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve efficiency of DND tooltip movement
@@ -39206,7 +39206,7 @@
(x_dnd_update_tooltip_position): Save last tooltip X and Y
somewhere, so we don't move it upon client lists being updated.
-2022-07-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -39219,42 +39219,42 @@
25bc330a6d Make 'describe-function' say "byte-compiled" when appropriate
2b31e667be ;Improve documentation of locale-specific string comparison
-2022-07-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Adjust help-fns.el tests for recent change
* test/lisp/help-fns-tests.el (help-fns-test-lisp-defun)
(help-fns-test-lisp-defsubst): Adjust tests for recent change.
-2022-07-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in error message in native-compile-prune-cache
* lisp/emacs-lisp/comp.el (native-compile-prune-cache): Fix typo
(bug#56713).
-2022-07-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix spacing in *Help* buttons
* lisp/help-mode.el (help-xref--navigation-buttons): Fix spacing
before single [forward] button.
-2022-07-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Give a better error message in native-compile-prune-cache
* lisp/emacs-lisp/comp.el (native-compile-prune-cache): Give a
better error message in non-nativecomp builds.
-2022-07-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in 'handle_fontified_prop'
* src/xdisp.c (handle_fontified_prop): Avoid assertion violations
due to automatic narrowing. (Bug#56682)
-2022-07-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of scroll-bar in mini-windows
@@ -39262,25 +39262,25 @@
set correctly when displaying scroll bar of a mini-window.
(Bug#56692)
-2022-07-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* src/terminal.c (Fframe_terminal): Use active voice
-2022-07-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve 'terminal-live-p' docstring some more
* terminal.c (Fterminal_live_p): Improve description of arguments and
return value.
-2022-07-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#56692 questionably
* src/xdisp.c (set_vertical_scroll_bar): Don't recompute window
end of a mini window. (bug#56692)
-2022-07-22 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve font locking in buffers with long lines (bug#56682).
@@ -39297,25 +39297,25 @@
* src/editfns.c (syms_of_editfns): New variable and symbol 'inhibit-widen'.
(Fwiden): Do nothing when 'inhibit-widen' is non-nil.
-2022-07-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Explain how to override Author with VC
* CONTRIBUTE: Describe how to use Author header line and
'log-edit-setup-add-author'.
-2022-07-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve terminal-live-p docstring
* src/terminal.c (Fterminal_live_p): Explain what happens when the
argument is nil.
-2022-07-22 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* lisp/net/tramp-gvfs.el (tramp-gvfs-dbus-event-vector): Fix grammar
-2022-07-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling hscroll during drag-and-drop
@@ -39325,7 +39325,7 @@
* src/window.c (set_window_hscroll): Mark window as needing
redisplay if the hscroll really changed.
-2022-07-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix posn-timestamp of scroll bar events on GTK
@@ -39336,7 +39336,7 @@
(xg_scroll_callback, xg_end_scroll_callback): Set last user time
if possible.
-2022-07-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Always default eglot-strict-mode to nil
@@ -39347,7 +39347,7 @@
* eglot.el (eglot-strict-mode): default to nil.
-2022-07-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/help-mode.el (help-news): Use `view-file`
@@ -39355,7 +39355,7 @@
* lisp/progmodes/verilog-mode.el (verilog-surelint-off): Silence warning
-2022-07-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(compilation-parse-errors-function): Remove obsolete var
@@ -39374,7 +39374,7 @@
(compilation-parse-errors-function): Remove declaration, not used any more.
(prolog-parse-sicstus-compilation-errors): Remove function, not used any more.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Don't end messages with "."
@@ -39386,18 +39386,18 @@
(image-dired-modify-mark-on-thumb-original-file): Don't end messages
with "." to better comply with '(elisp) Programming Tips'.
-2022-07-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix reference to 'x-max-tooltip-size' in complete.el
* lisp/cedet/semantic/complete.el: Don't assume that
x-max-tooltip-size is a cons cell.
-2022-07-21 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Merge branch 'feature/fix-the-long-lines-display-bug'
-2022-07-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update buffer's chars-modified tick when inserting from gap
@@ -39407,11 +39407,11 @@
* test/src/buffer-tests.el (test-buffer-chars-modified-ticks): New
test.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/progmodes/cperl-mode.el: Don't mention obsolete archive.
-2022-07-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Apply tooltip assertions to all instances of x-show-tip
@@ -39424,70 +39424,70 @@
* src/xfns.c (Fx_show_tip):
(syms_of_xfns): Add assertion and adjust default values.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Minor doc fix in search-forward-help-for-help
* lisp/help.el (search-forward-help-for-help): Use command
substitution.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make bs-help obsolete in favor of describe-mode
* lisp/bs.el (bs-help): Make obsolete in favor of describe-mode.
Update uses.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make dictionary-help obsolete in favor of describe-mode
* lisp/net/dictionary.el (dictionary-help): Make obsolete in favor
of describe-mode. Update uses.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't list obsolete in "other commands" help section
* lisp/help-fns.el (help-fns--list-local-commands): Don't list
obsolete commands.
-2022-07-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make 'describe-function' say "byte-compiled" when appropriate
* lisp/help-fns.el (help-fns-function-description-header): Say
"byte-compiled" when describing byte-compiled functions.
-2022-07-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make sure we don't unknowingly truncate tooltip text
* src/w32fns.c (Fx_show_tip): Add assertion when the default
tooltip dimension limits are insufficient. (Bug#56561)
-2022-07-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid wasting bandwidth to set user time
* src/xterm.c (x_display_set_last_user_time): Don't change the
user time property if nothing actually changed.
-2022-07-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
;Improve documentation of locale-specific string comparison
* doc/lispref/strings.texi (Text Comparison): Mention the Unicode
collation rules and buffer-local case-tables.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make bubbles-quit obsolete in favor of quit-window
* lisp/play/bubbles.el (bubbles-quit): Make obsolete in favor of
quit-window. Update uses.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove superfluous installation instructions
@@ -39497,37 +39497,37 @@
* lisp/textmodes/remember.el:
* lisp/woman.el: Remove superfluous installation instructions.
-2022-07-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
ea44d7ddfc ; * lisp/mail/smtpmail.el (smtpmail-via-smtp): Explain wit...
-2022-07-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling screen resizes when built without RandR
* src/xterm.c (handle_one_xevent): Update DND tooltip position
upon ConfigureNotify for root window.
-2022-07-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Prefer defvar-keymap in xwidget.el"
This reverts commit daf2c3e23a45bff14f9d444d2d07455376d4b6da.
-2022-07-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in xwidget.el
* lisp/xwidget.el (xwidget-webkit-mode-map)
(xwidget-webkit-edit-mode-map): Prefer defvar-keymap.
-2022-07-20 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
* src/xdisp.c (redisplay_window): Small optimization.
-2022-07-20 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Further tweaks to long lines handling.
@@ -39546,21 +39546,21 @@
* etc/NEWS: Small improvement.
-2022-07-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse wheel DND scroll direction on Haiku
* lisp/term/haiku-win.el (haiku-handle-drag-wheel): Record the
last wheel direction. If it differs, clear the click counter.
-2022-07-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix error during startup in -nw sessions
* lisp/startup.el (normal-top-level, command-line-1): Don't mess
with fonts in a text-mode session. (Bug#56660)
-2022-07-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Gently discourage use of `lsh` (bug#56641)
@@ -39570,7 +39570,7 @@
Shortdoc is very helpful for finding the right function to use,
and `lsh` is just for compatibility at this point.
-2022-07-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix calculation of default highlightForeground in the lucid menu bar
@@ -39581,7 +39581,7 @@
when creating GCs. Reported by Colin Baxter
<m43cap@yandex.com>.
-2022-07-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -39590,7 +39590,7 @@
# Conflicts:
# test/lisp/net/tramp-tests.el
-2022-07-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement wheel movement during DND on Haiku
@@ -39612,7 +39612,7 @@
`haiku_note_drag_wheel' when appropriate.
* src/haikuterm.h: Update prototypes.
-2022-07-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in some trivial cases
@@ -39648,14 +39648,14 @@
* lisp/xwidget.el (xwidget-webkit-isearch-mode-map)
(xwidget-webkit-edit-mode-map): Prefer defvar-keymap.
-2022-07-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix setting user time upon scrolling self during DND
* src/xterm.c (handle_one_xevent): Set user time for emulated
scroll wheel events if Emacs ends up scrolled during DND.
-2022-07-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make eldoc-echo-area-prefer-doc-buffer consider all frames
@@ -39669,7 +39669,7 @@
* lisp/emacs-lisp/eldoc.el (eldoc--echo-area-prefer-doc-buffer-p):
Consider all frames.
-2022-07-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Ensure Eldoc buffer displays on interactive M-x eldoc
@@ -39677,7 +39677,7 @@
eldoc-doc-buffer with interactive set to t.
(Version): Bump to 1.13.0.
-2022-07-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Simplified and improved heuristic for long lines detection.
@@ -39698,31 +39698,31 @@
* src/xdisp.c (redisplay_window): Use the improved version of 'MODIFF'
for the heuristic.
-2022-07-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Revert commits 1ff69cc744 and 9a894206f6.
-2022-07-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix embarrassing paren-matching blunder in eglot.el
* eglot.el (eglot-handle-request workspace/applyEdit): Fix parens.
-2022-07-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reply more reasonably to server's workspace/applyedit
* eglot.el (eglot-handle-request): Return non-nil
(eglot--apply-workspace-edit): Signal jsonrpc-error, not error.
-2022-07-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Appease byte-compiler warnings about wrong use of quotes
* eglot.el (eglot-stay-out-of, eglot--code-action): Just give it
what it wants.
-2022-07-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot-workspace-configuration can be a function
@@ -39737,17 +39737,17 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/967
-2022-07-19 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* eudc.texi: Unquote setopt option names
-2022-07-19 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve the heuristic for long lines detection again.
* src/xdisp.c (redisplay_window): Improve the heuristic again.
-2022-07-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use `ash` instead of `lsh`
@@ -39757,7 +39757,7 @@
* lisp/x-dnd.el (x-dnd-handle-xdnd, x-dnd-handle-motif):
`lsh` is slower and has confusing semantics; avoid.
-2022-07-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in bindings.el
@@ -39767,7 +39767,7 @@
defvar-keymap.
(mode-specific-map): Minor doc fix.
-2022-07-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up `butlast`
@@ -39775,7 +39775,7 @@
* test/lisp/subr-tests.el (subr-tests--butlast-ref, subr-butlast):
Add test.
-2022-07-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -39785,14 +39785,14 @@
8f9993bb3f ; * src/buffer.c (syms_of_buffer) <mode-line-format>: Doc ...
fec4bb89f9 ; Fix typos (Bug#56550)
-2022-07-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document workaround for bug#56627
* etc/PROBLEMS: Document problems with GTK tool bar icons on
some icon themes. (bug#56627)
-2022-07-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(help-fns--first-release): Try and avoid false positives
@@ -39812,14 +39812,14 @@
least 2 spaces. Add previously missing '...' quotes around many of
the variables and functions described.
-2022-07-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix timestamp specified in wheel movement XDND events
* src/xterm.c (handle_one_xevent): Use the time of the wheel
event in XDND events sent in response to wheel movement.
-2022-07-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make drag-and-drop wheel movement work locally too on X
@@ -39835,29 +39835,29 @@
set new wheel movement flags
(syms_of_xterm): New variable `x-dnd-wheel-function'.
-2022-07-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/xdisp.c (set_vertical_scroll_bar): Remove stale comment.
-2022-07-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix calculation of the vertical scroll bar's thumb
* src/xdisp.c (set_vertical_scroll_bar): Compute window's end
position "by hand" if w->window_end_pos cannot be relied upon.
-2022-07-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
* etc/PROBLEMS: Remove the entry which is no longer relevant.
-2022-07-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use ntake also in tramp-adb.el
* lisp/net/tramp-adb.el (tramp-adb-handle-directory-files-and-attributes):
Use `tramp-compat-ntake'.
-2022-07-18 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
Additional query and results attributes in eudcb-macos-contacts.el
@@ -39870,7 +39870,7 @@
* etc/NEWS: announce wider query/result attribute set
* doc/misc/eudc.texi: more details on eudcb-mab.el's limitations
-2022-07-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve the heuristic for long lines detection.
@@ -39883,14 +39883,14 @@
* src/xdisp.c (mark_window_display_accurate_1): Set the field.
(redisplay_window): Use the field for long lines detection.
-2022-07-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Shorter and safer fix for the segfault.
* src/xdisp.c (get_visually_first_element): Shorter and safer fix for
the segfault. Improves the fix introduced in cc7f37b2a4.
-2022-07-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp new test macros
@@ -39898,7 +39898,7 @@
(tramp--test-deftest-with-perl, tramp--test-deftest-with-ls):
Skip for all methods but those from tramp-sh.el.
-2022-07-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use ntake in Tramp
@@ -39909,22 +39909,22 @@
* lisp/net/tramp-sh.el (tramp-sh-handle-directory-files-and-attributes):
* lisp/net/tramp-smb.el (tramp-smb-handle-directory-files): Use it.
-2022-07-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/rect.el (rectangle-mark-mode-map): Prefer defvar-keymap.
-2022-07-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix typo in NEWS title.
-2022-07-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Clarify `take` and `ntake` documentation (bug#56521)
* doc/lispref/lists.texi (List Elements): Describe `ntake` better.
* src/fns.c (Ftake, Fntake): Rephrase doc strings.
-2022-07-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up `seq-subseq` for lists (bug#56521)
@@ -39934,7 +39934,7 @@
* test/lisp/emacs-lisp/seq-tests.el (seq-tests--list-subseq-ref)
(test-seq-subseq): Test `seq-subseq` for lists more thoroughly.
-2022-07-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use `take` where clearly safe to do so (bug#56521)
@@ -39949,14 +39949,14 @@
We have the equivalence
(take N LIST) = (butlast LIST (- (length LIST) N)).
-2022-07-18 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Further improvements to long lines handling.
* src/xdisp.c (get_visually_first_element): Fix segfault.
(get_narrowed_begv): Specific improvement for character-only terminals.
-2022-07-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (minibuffer-complete-history): Define sorting by metadata
@@ -39964,7 +39964,7 @@
Use completion metadata to disable sorting of the completion table
(bug#56613)
-2022-07-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement last change on Haiku as well
@@ -39973,7 +39973,7 @@
* src/haikuselect.c (haiku_note_drag_motion): Use
redisplay_preserve_echo_area.
-2022-07-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Preserve echo area message when running DND mouse movement function
@@ -39981,7 +39981,7 @@
* src/xterm.c (x_dnd_begin_drag_and_drop): Redisplay with the
echo area preserved.
-2022-07-17 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
Derive `Info-mode' from `special-mode'
@@ -39990,7 +39990,7 @@
don't apply to special modes (such as `global-whitespace-mode' and
`global-display-fill-column-indicator-mode').
-2022-07-17 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
info-edit: Delay `ibuffer' var change until after `ibuffer' loads
@@ -39999,7 +39999,7 @@
loaded. This fixes a "(void-variable ibuffer-help-buffer-modes)"
error when `info-edit' is loaded before `ibuffer'.
-2022-07-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle virtual modifiers in the DND scrolling code
@@ -40009,21 +40009,21 @@
* src/xterm.c (x_get_keyboard_modifiers): New function.
* src/xterm.h: Update prototypes.
-2022-07-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/minibuffer.el (minibuffer-complete-history): Ensure a list of strings
-2022-07-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/subr.el (read-char-from-minibuffer, y-or-n-p): Simplify to use HIST=t.
-2022-07-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (minibuffer-complete-history): Check for history=t.
Signal a user error when the history is not a list (bug#56613).
-2022-07-17 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add `take` and `ntake` (bug#56521)
@@ -40039,7 +40039,7 @@
New test.
* etc/NEWS: Announce.
-2022-07-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix leaking of file descriptors due to pipe processes on MS-Windows
@@ -40050,28 +40050,28 @@
already exited, so that it would be possible to close descriptors
open by pipe processes for reading from the pipe. (Bug#56606)
-2022-07-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of tilt scroll and flip options during DND
* lisp/x-dnd.el (x-dnd-mwheel-scroll): New function.
(x-dnd-handle-xdnd): Use that instead of abusing mwheel.el.
-2022-07-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in mpc.el
* lisp/mpc.el (mpc-mode-map, mpc-tagbrowser-dir-mode-map)
(mpc-volume-map, mpc-songs-mode-map): Prefer defvar-keymap.
-2022-07-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C' in over tramp work in archive mode
* lisp/arc-mode.el (archive-copy-file): Make `C' in over tramp
work (bug#56574).
-2022-07-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix tab-bar resizing under 'auto-resize-tab-bars' = 'grow-only'
@@ -40082,14 +40082,14 @@
* lisp/tab-bar.el (tab-bar--update-tab-bar-lines): Support
'auto-resize-tab-bars' set to 'grow-only'.
-2022-07-17 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Ensure that directories exist when copying files from archive
* lisp/arc-mode.el (archive-copy-file): If the directory the file is
being extracted to does not exist, then create it (bug#56603).
-2022-07-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve error messaging when parent archive buffers are missing
@@ -40097,14 +40097,14 @@
* lisp/tar-mode.el (tar-subfile-save-buffer): Give a better error
message when the parent buffer is dead (bug#56605).
-2022-07-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f5218385c0 Fix obsoletion of nntp-authinfo-file
10b6919870 ; Fix typos
-2022-07-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle scrolling during XDND drag-and-drop
@@ -40118,7 +40118,7 @@
* src/xterm.c (x_dnd_send_position): Fix handling of mouse
rects.
-2022-07-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix drag-and-drop button button flags
@@ -40126,11 +40126,11 @@
regardless of version. Fix bit indices.
(handle_one_xevent): Likewise.
-2022-07-16 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix typo in e7b5912b23.
-2022-07-16 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improvements to long lines handling.
@@ -40158,14 +40158,14 @@
* etc/NEWS: Mention the 'long-line-threshold' variable.
-2022-07-16 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix python navigation problem with an empty line in nested defun
* lisp/progmodes/python.el (python-nav--beginning-of-defun): Fix
bug when point is on an empty line (bug#56600).
-2022-07-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix xref links in `C-h o'
@@ -40178,18 +40178,18 @@
here...
(help-xref--navigation-buttons): To here.
-2022-07-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New test for make_symbol_constant
* test/src/data-tests.el (data-tests-make_symbol_constant): New
test.
-2022-07-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/composite.c (find_automatic_composition): Fix off-by-one error.
-2022-07-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation of `posn-timestamp'
@@ -40197,14 +40197,14 @@
documentation of `posn-timestamp' by actually describing the
timestamp it returns.
-2022-07-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Update `eshell-variable-aliases-list` defcustom type
* lisp/eshell/esh-var.el (eshell-variable-aliases-list):
Add type for SIMPLE-FUNCTION value.
-2022-07-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Comment docstrings in tramp-test macros
@@ -40213,14 +40213,14 @@
(tramp--test-deftest-direct-async-process): Comment docstring,
it doesn't work this way. Use `tramp-test-vec' if appropriate.
-2022-07-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Weed out some false positives in help-fns--mention-first-release
* lisp/help-fns.el (help-fns--mention-first-release): Weed out
things that give too many false positives (bug#49062).
-2022-07-16 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Colored menu highlight in Lucid backend
@@ -40230,7 +40230,7 @@
of menu entries.
* doc/emacs/xresources.texi (Lucid Resources): Documentation.
-2022-07-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Decrease network traffic with some XDND programs
@@ -40243,7 +40243,7 @@
(x-dnd-handle-xdnd): Generate mouse rectangles consisting of the
object (glyph) under point.
-2022-07-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow ;;;###autoloading transient-define-prefix
@@ -40253,7 +40253,7 @@
* lisp/transient.el (transient-define-prefix): Autoload.
-2022-07-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Optimise `append` calls
@@ -40276,7 +40276,7 @@
* lisp/emacs-lisp/byte-opt.el: New.
-2022-07-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improved cons optimisation
@@ -40285,7 +40285,7 @@
(cons X (list Y...)) -> (list X Y...)
-2022-07-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Transform (list) -> nil in source optimiser
@@ -40295,7 +40295,7 @@
* lisp/emacs-lisp/byte-opt.el (byte-optimize-list): New.
-2022-07-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete obsolete variable gnus-secondary-servers
@@ -40305,19 +40305,19 @@
* lisp/gnus/gnus-int.el (gnus-start-news-server): Don't use above
deleted variable.
-2022-07-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix obsoletion of nntp-authinfo-file
* lisp/gnus/nntp.el (nntp-authinfo-file): Fix obsoletion.
-2022-07-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
db259d8fd3 Build Seccomp filter only if we have a 64-bit userspace (B...
-2022-07-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle XDND mouse rects synchronously
@@ -40328,11 +40328,11 @@
(handle_one_xevent): When handling XdndStatus, check if the
pending event is contained in the new mouse rect.
-2022-07-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/url/url-vars.el (url-mime-separator-chars): Fix last cosmetic change
-2022-07-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend tramp-tests
@@ -40360,32 +40360,32 @@
(tramp-test42-utf8-with-perl)
(tramp-test42-utf8-with-ls): Rewrite, using the new macros.
-2022-07-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/tar-mode.el (tar-mode-map): Prefer defvar-keymap.
-2022-07-15 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Build Seccomp filter only if we have a 64-bit userspace (Bug#56549)
* configure.ac (SIZEOF_LONG): New variable.
* lib-src/Makefile.in (SIZEOF_LONG): New variable; added conditional.
-2022-07-15 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
Fix ASAN error with fringe bitmap on NS
* src/nsterm.m (ns_define_fringe_bitmap): Correctly access fringe
bitmap data. (Bug#56553)
-2022-07-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix double unfocus during NS cursor display
* src/nsterm.m (ns_draw_window_cursor): Unfocus around calls to
draw_phys_cursor_glyph, then focus again later. (bug#56559)
-2022-07-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only preserve PRIMARY and CLIPBOARD selection ownership by default
@@ -40397,7 +40397,7 @@
(syms_of_xterm): Update doc string of
`x-auto-preserve-selections'.
-2022-07-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Be more conservative with the lsp identifier guess
@@ -40415,7 +40415,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/131
GitHub-reference: per https://github.com/joaotavora/eglot/issues/314
-2022-07-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Guess the "lsp identifier at point"
@@ -40426,7 +40426,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/131
GitHub-reference: per https://github.com/joaotavora/eglot/issues/314
-2022-07-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid infloop in redisplay when displaying a tooltip
@@ -40434,32 +40434,32 @@
indicates that the dimensions of the glyph matrix are
insufficient. (Bug#56561)
-2022-07-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how dired-copy-filename-as-kill handles file names with spaces
* lisp/dired.el (dired-copy-filename-as-kill): Quote files
containing spaces (bug#48657).
-2022-07-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust whitespace tests
-2022-07-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix whitespace-mode display table restoration logic
* lisp/whitespace.el (whitespace-display-char-on): Fix the saving
logic -- `whitespace-mode' is on by this point (bug#48583).
-2022-07-15 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Fix mailcap-user-mime-data doc string
* lisp/net/mailcap.el (mailcap-user-mime-data): Make the doc
string reflect the actual structure (bug#56568).
-2022-07-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak some details, fix some bugs
@@ -40476,7 +40476,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/131
-2022-07-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix generated drag-and-drop mouse rectangles
@@ -40491,7 +40491,7 @@
* src/xfns.c (Fx_translate_coordinates): New function.
(syms_of_xfns): New defsym.
-2022-07-15 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Extend support for debugging Emacs with LLDB
@@ -40499,21 +40499,21 @@
struct (--enable-lisp-type-checking). Enable Emacs type category by
default. Expand children in type summary for Lisp_Object.
-2022-07-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
6a05715552 Update the Samaritan's contact details in M-x doctor
d19834dfda ; Fix typos
-2022-07-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix sending button presses if the drop target specified a mouse rectangle
* src/xterm.c (x_dnd_send_position): Handle button presses
specially, ignoring mouse rectangles.
-2022-07-14 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Use notmuch thread:{} operator instead of performing two searches
@@ -40524,13 +40524,13 @@
searching for threads, wrap whole query in thread:{} operator, and
always use --output=files, never --output=threads (bug#56442).
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix --without-x build after previous image cache changes
* src/alloc.c (garbage_collect): Fix --without-all --without-x build.
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore how (read-from-minibuffer ... read-expression-map) worked
@@ -40540,7 +40540,7 @@
(read--expression-map): New map.
(read--expression): Use it.
-2022-07-14 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make gnus display webp images inline
@@ -40548,7 +40548,7 @@
* lisp/net/mailcap.el (mailcap-mime-extensions): Add webp mimetype
(bug#56552).
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make image-map commands work with inline image attachments in mm
@@ -40556,28 +40556,28 @@
point movement is more pleasant and so that image-map commands
work (bug#56554).
-2022-07-14 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
* lisp/image.el (put-image): Fix typo.
* lisp/image.el (put-image): Actually use the image-map keymap
(bug#56554).
-2022-07-14 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Use compose-mail in submit-emacs-patch
* lisp/mail/emacsbug.el (submit-emacs-patch): Prefer
compose-mail-other-window over message-mail-other-window (bug#56555).
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make ps-print-ensure-fontified obsolete
* lisp/ps-print.el (ps-print-ensure-fontified): Redefine as
obsolete function alias for font-lock-ensure. Update callers.
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Prune animation cache when images are no longer reachable
@@ -40590,7 +40590,7 @@
the identity of the list itself is apparently changed by some
callers.
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make image-cache-size also include the animation cache
@@ -40599,25 +40599,25 @@
(gif_load, webp_load): Ditto.
(Fimage_cache_size): Also report animation cache size (bug#56546).
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Prune the animation cache from gc
* src/alloc.c (garbage_collect): Prune animation cache
(bug#56546).
-2022-07-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/gtkutil.c (xg_free_frame_widgets): Avoid compiler warning.
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update the Samaritan's contact details in M-x doctor
* lisp/play/doctor.el (doctor-death): Update the Samaritans's contact
details; anon.twwells.com is no longer valid. Add link to Wikipedia.
-2022-07-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Cosmetic decisions guaranteed to tick off someone somewhere (tm)
@@ -40640,7 +40640,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/131
-2022-07-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Experiment with grouping in xref-backend-identifier-completion-table
@@ -40650,7 +40650,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/131
-2022-07-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make c-u m-. work half decently
@@ -40669,27 +40669,27 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/131
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence unused variable warning in a build --without-all
* src/xfns.c (Fx_double_buffered_p): Silence unused variable warning
in a build --without-all.
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Compress hashcash headers by default
* lisp/mail/hashcash.el (hashcash-extra-generate-parameters):
Use compression by default.
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Pacify -Wunused-macros in --without-all builds
* src/image.c (IMAGE_TYPE_INIT): Make conditional on image support.
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update the 'etags' test suite
@@ -40700,20 +40700,20 @@
* ETAGS_good_5:
* ETAGS_good_6: Adapt to recent changes in test sources.
-2022-07-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to restore the initial "daemon" frame when a display goes down
* src/xterm.c (x_try_restore_frame): New function.
(x_connection_closed): Call it if selected_frame is nil.
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
76878ce6a0 * etc/PROBLEMS: Describe problems with remote files. (Bug...
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -40724,7 +40724,7 @@
# test/src/comp-resources/comp-test-45603.el
# test/src/comp-tests.el
-2022-07-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make clear-image-cache clear the animation cache
@@ -40738,7 +40738,7 @@
(imagemagick_get_animation_cache): Ditto.
(image_prune_animation_caches): New function (bug#56546).
-2022-07-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -40752,17 +40752,17 @@
# lisp/emacs-lisp/byte-opt.el
# test/lisp/so-long-tests/spelling-tests.el
-2022-07-14 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Improve support for debugging Emacs with LLDB
* etc/emacs_lldb.py: Refactor and support more Lisp types.
-2022-07-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* etc/PROBLEMS: Describe problems with remote files. (Bug#56499)
-2022-07-14 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Add new customizable phonetic Tamil input method
@@ -40794,7 +40794,7 @@
* etc/NEWS: Announce the new input method.
-2022-07-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix killing Emacs upon display disconnect
@@ -40802,7 +40802,7 @@
be left alive without any frames on them, so take that into
account. (bug#56528)
-2022-07-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in tab-bar.el
@@ -40811,14 +40811,14 @@
(tab-bar-switch-repeat-map, tab-bar-move-repeat-map): Prefer
defvar-keymap.
-2022-07-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Remove uneffective test
* test/src/comp-tests.el (45603-1): Remove test.
* test/src/comp-resources/comp-test-45603.el: Delete.
-2022-07-13 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Mark async worker tmp file as utf-8-emacs-unix (bug#48029)
@@ -40828,18 +40828,18 @@
* test/src/comp-resources/comp-test-funcs.el
(comp-test-48029-nonascii-žžž-f): New function.
-2022-07-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/vc/vc-bzr.el (vc-bzr-program): Support breezy.
-2022-07-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make smtpmail try all auth methods
* lisp/mail/smtpmail.el (smtpmail-try-auth-methods): Try all valid
methods, even if one fails (bug#48562).
-2022-07-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recursive calls of x_connection_closed leading to dead terminal
@@ -40847,14 +40847,14 @@
the current display.
(x_io_error_quitter): Fix attributes. (bug#56528)
-2022-07-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp version integrated in Emacs 28.2
* lisp/net/trampver.el (customize-package-emacs-version-alist):
Adapt Tramp version integrated in Emacs 28.2.
-2022-07-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Make mouse-2 respect delete-selection mode"
@@ -40862,14 +40862,14 @@
This leads to unintended consequences for cua-mode, among others (bug#56530).
-2022-07-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make bibtex-mode not signal errors when used programmatically
* lisp/textmodes/bibtex.el (bibtex-mode): Ensure that the font
lock machinery is set up (bug#48447).
-2022-07-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp doc
@@ -40878,7 +40878,7 @@
* lisp/net/tramp.el (tramp-verbose): Fix docstring.
-2022-07-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make the rsh command obsolete
@@ -40886,7 +40886,7 @@
(telnet-connect-command, telnet-mode): Adjust documentation for
above change.
-2022-07-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement TIMESTAMP target for Haiku selections
@@ -40898,20 +40898,20 @@
(syms_of_haikuselect): Add new defsubr.
* src/haikuselect.h: Update prototypes.
-2022-07-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
a3dab1e621 Don't mention cl-cXXXr aliases in cl-lib manual
-2022-07-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
New user option 'webjump-use-internal-browser'
* lisp/net/webjump.el (webjump-use-internal-browser): New defcustom.
(webjump): Respect it. Reported by Youmu <condy0919@gmail.com>.
-2022-07-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix closing displays when preserving selections is enabled
@@ -40924,7 +40924,7 @@
(syms_of_xterm): New defsym `x-auto-preserve-selections'.
* src/xterm.h: Update prototypes.
-2022-07-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak image-converter-add-handler interface
@@ -40932,14 +40932,14 @@
* lisp/image/image-converter.el (image-convert): Let the converter
know whether it's a file or not.
-2022-07-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Autoload image-converter-add-handler
* lisp/image/image-converter.el (image-converter-add-handler):
Autoload.
-2022-07-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for viewing "images" such as Krita (.kra) files
@@ -40949,14 +40949,14 @@
function (bug#48415).
(image-convert): Use it.
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Drop obsolete rsh/rlogin from two user options
* lisp/net/ange-ftp.el (ange-ftp-gateway-program):
* lisp/net/imap.el (imap-shell-program): Drop obsolete "rsh"/"rlogin".
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make pcomplete/{rsh,rlogin} into alias for pcomplete/ssh
@@ -40964,14 +40964,14 @@
aliases for 'pcomplete/ssh', as "rsh" and "rlogin" is more often than
not aliases for "ssh" on modern machines.
-2022-07-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Remove rsh from Tramp manual, Overview section
* doc/misc/tramp.texi (Overview, Frequently Asked Questions):
Don't mention obsolete rsh and rcp.
-2022-07-12 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Ensure Eshell variable aliases properly handle indexing
@@ -40996,7 +40996,7 @@
(esh-var-test/last-arg-var-split-indices): Expand test to check
conversion behavior inside double quotes (bug#56509).
-2022-07-12 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow Eshell variable aliases to point to other aliases
@@ -41012,7 +41012,7 @@
(em-dirs-test/short-pwd-var): Adapt tests to check this case
(bug#56509).
-2022-07-12 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve tests/organization for built-in variables
@@ -41040,7 +41040,7 @@
(Variables): ... to here, and add documentation for missing built-in
variables.
-2022-07-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix buffer-stale-function fix
@@ -41049,14 +41049,14 @@
buffer-locally to the default value. This should have the same
effect, but is less confusing.
-2022-07-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce syncing when fetching selection names during frame deletion
* src/xterm.c (x_preserve_selections): Use XCB to asynchronously
fetch the selection owner.
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention cl-cXXXr aliases in cl-lib manual
@@ -41064,7 +41064,7 @@
mention 'cl-cXXXr' compatibility aliases for built-in 'cXXXr'
functions. They shouldn't be used in new code.
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make some rst.el compat aliases obsolete
@@ -41075,7 +41075,7 @@
(rst-toc-mode-mouse-goto-kill, rst-toc-quit-window): Make
compatibility aliases obsolete.
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make remote-shell-program default to ssh only
@@ -41084,13 +41084,13 @@
easy enough for users to customize them manually if they want to.
See also the discussion in: https://debbugs.gnu.org/56461
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Recognize gemini in thing-at-point
* lisp/thingatpt.el (thing-at-point-uri-schemes): Recognize gemini.
-2022-07-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Better gomoku X colour with bright background
@@ -41098,7 +41098,7 @@
crosses on bright background for better legibility.
(Red for naughts could be adjusted but seems just about bearable.)
-2022-07-12 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Expunge unused recompute-lucid-menubar, lucid-menu-bar-dirty-flag
@@ -41118,14 +41118,14 @@
* src/xmenu.c (set_frame_menubar): Remove calls to Qrecompute_lucid_menubar
contitional on Vlucid_menu_bar_dirty_flag.
-2022-07-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix preserving selections if `x-lost-selection-functions' signals
* src/xterm.c (x_preserve_selections): Get selection owner and
run lost selection hook separately.
-2022-07-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -41135,7 +41135,7 @@
0461021893 ; * lisp/emacs-lisp/comp.el (native-comp-speed): Explain t...
876317271b * lisp/find-dired.el (find-dired): Doc fix; add crossrefer...
-2022-07-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to save selections from being disowned during frame deletion
@@ -41147,22 +41147,22 @@
(syms_of_xterm): New variable `x-auto-preserve-selections'.
* src/xterm.h: Update prototypes.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/mail/mail-utils.el (mail-string-delete): Make obsolete.
-2022-07-11 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
etc/PROBLEMS: Describe issues with native compilation on Cygwin
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in thumbs.el
* lisp/thumbs.el (thumbs-mode-map, thumbs-view-image-mode-map):
Prefer defvar-keymap.
-2022-07-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove obsolete uses of obsolete functions
@@ -41173,7 +41173,7 @@
We don't try to equate unibyte and multibyte raw bytes in symbol
lookups elsewhere and there is no reason to do it here.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove dead branch from substitute-command-keys
@@ -41181,28 +41181,28 @@
where-is-internal will follow any remaps for us. Note also that the
test case for remapping still pass.
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `g' in `vc-annotate' not bug out
* lisp/vc/vc-annotate.el (vc-annotate): Don't bug out on `g'
(bug#48359).
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Only reset buffer-local buffer-stale-function in make-indirect-buffer
* src/buffer.c (Fmake_indirect_buffer): Don't set the global
buffer-stale-function (bug#48348).
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document the recent add-global-abbrev change
* doc/emacs/abbrevs.texi (Defining Abbrevs): Document that you can
use the active region.
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make add-mode-abbrev use the active region
@@ -41210,22 +41210,22 @@
(add-abbrev): If there's an active region, use that as the
expansion (bug#56496).
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/obsolete/rlogin.el: Add "Obsolete-since" line.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make net/rlogin.el obsolete
* lisp/net/rlogin.el: Move from here...
* lisp/obsolete/rlogin.el: ...to here. (Bug#56461)
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/.lldbinit: Fix copyright year.
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow commands that call `yes-or-no-p' to be repeatable again
@@ -41234,7 +41234,7 @@
function started using read-from-minibuffer.
* src/fns.c (Fyes_or_no_p): Ditto.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move EIEIO autoloads to the common loaddefs.el
@@ -41244,21 +41244,21 @@
* lisp/obsolete/eieio-compat.el: Remove generated-autoload-file
setting and don't require eieio-loaddefs.el.
-2022-07-11 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Support for debugging Emacs with LLDB
* (src/.lldbinit): New file.
* (etc/emacs_lldb.py): Module loaded from .lldbinit.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't create unused file rmail-loaddefs.el
* lisp/mail/undigest.el: Remove 'generated-autoload-file' local
variable. (Bug#56491)
-2022-07-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify str_to_multibyte and related code
@@ -41271,7 +41271,7 @@
(string_to_multibyte):
* src/print.c (print_string): Adapt calls.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fix; don't mention rlogin
@@ -41279,7 +41279,7 @@
* doc/misc/eshell.texi (Bugs and ideas): Don't mention
rlogin. (Bug#56461)
-2022-07-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve behavior of `lost-selection-mode' with multiple buffers
@@ -41295,14 +41295,14 @@
appropriate.
(syms_of_keyboard): New hook `post-select-region-hook'.
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix crm.el compilation warning
* lisp/emacs-lisp/crm.el (crm-default-separator): Move to avoid
compilation warning.
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't call home from test/src/process-tests.el
@@ -41310,25 +41310,25 @@
here...
* test/manual/process-callout-tests.el: ... to here (bug#55858).
-2022-07-11 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make mouse-2 respect delete-selection mode
* lisp/delsel.el: Make the mouse yank commands delete-selection-mode
aware (bug#56421).
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/emacs-lisp/package.el (define-package): Make obsolete.
-2022-07-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent setting user time if the WM doesn't support it
* src/xterm.c (x_update_frame_user_time_window): Don't set
_NET_WM_USER_TIME if it's not supported by the window manager.
-2022-07-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add test for the gradle-android compilation message pattern
@@ -41336,7 +41336,7 @@
* test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data):
(compile-test-error-regexps): Add test case (bug#56249).
-2022-07-11 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix memory leak in ns_draw_relief
@@ -41348,14 +41348,14 @@
nil caused a memory leak of NSColor instances (bug#56462). Call
ns_setup_relief_colors instead.
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Autoload named-let
* lisp/emacs-lisp/subr-x.el (named-let): Autoload `named-let' for
easier use (bug#56473).
-2022-07-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix `M-x lisp-fill-paragraph'
@@ -41363,7 +41363,7 @@
when called directly with `M-x lisp-fill-paragraph' instead of via
`M-q' (bug#56476).
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make crm-default-separator obsolete as per FIXME
@@ -41371,11 +41371,11 @@
obsolete variable alias for crm-separator.
(crm-separator): Update docstring for above change.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/find-dired.el (find-dired): Doc fix; add crossreference.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Re-add comment on autoloading cookies in preloaded files
@@ -41388,7 +41388,7 @@
* lisp/font-core.el (font-lock-defaults): Re-add autoload cookie,
despite the fact that this file is preloaded.
-2022-07-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer :risky defcustom keyword
@@ -41415,7 +41415,7 @@
:risky keyword argument to directly setting the 'risky-local-variable'
symbol property.
-2022-07-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify and speed up string-to-multibyte
@@ -41429,7 +41429,7 @@
(fns--string-to-unibyte-multibyte): ... this and strengthen, so that
the test covers string-to-multibyte reasonably well.
-2022-07-11 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Rename 'longlines-breakpoint-chars' to 'longlines-break-chars'
@@ -41438,7 +41438,7 @@
'longlines-breakpoint-chars' to 'longlines-break-chars'
(bug#56335).
-2022-07-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle errors sending selection decline events asynchronously
@@ -41448,15 +41448,15 @@
(x_stop_ignoring_errors): Export functions.
* src/xterm.h: Update prototypes.
-2022-07-10 Matthias Schmitt <male.schmitt@posteo.de>
+2023-04-15 Matthias Schmitt <male.schmitt@posteo.de>
Add: 'local' keyword
-2022-07-10 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* time-date.el (decoded-time-period): Rename TIME in docstring
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some ineffectual calls to purecopy
@@ -41482,7 +41482,7 @@
(mail-extr-x400-encoded-address-full-name-pattern): Remove
ineffectual calls to purecopy.
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename new option to browse-url-default-scheme
@@ -41490,7 +41490,7 @@
'browse-url-guess-default-scheme'. Update caller.
Suggested by Eli Zaretskii <eliz@gnu.org>.
-2022-07-10 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up string-to-unibyte
@@ -41500,7 +41500,7 @@
the unnecessary heap allocation. Write new, faster code.
* test/src/fns-tests.el (fns--string-to-unibyte): New test.
-2022-07-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp test environment on hydra.nixos.org
@@ -41513,7 +41513,7 @@
* test/lisp/shadowfile-tests.el:
* test/lisp/net/tramp-tests.el: Do not adapt `tramp-remote-path'.
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't use purecopy in dictionary.el
@@ -41523,17 +41523,17 @@
(dictionary-display-match-lines): Don't use purecopy; it has no
effect here.
-2022-07-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/dired.c (directory_files_internal): Update comment
-2022-07-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/dired.c (directory_files_internal): Fix bug#56469
Avoid concatenating encoded and decoded file names.
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New user option browse-url-guess-default-scheme
@@ -41541,18 +41541,18 @@
user option.
(browse-url-url-at-point): Use above new user option.
-2022-07-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* doc/misc/tramp.texi (Frequently Asked Questions): Fix formatting.
-2022-07-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to WM_DELETE_WINDOW handling
* src/xterm.c (handle_one_xevent): Only handle WM_DELETE_WINDOW
to toplevel windows, and set event timestamp.
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make browse-url.el support for plain "mozilla" obsolete
@@ -41564,11 +41564,11 @@
(browse-url--browser-defcustom-type, browse-url-default-browser):
Don't refer to above obsolete function 'browse-url-mozilla'.
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/browse-url.el: Improve commentary.
-2022-07-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the startup.el behavior when 'face-font-rescale-alist' is non-nil
@@ -41579,34 +41579,34 @@
Make the 'inhibit-startup-screen' and non-inhibit branches behave
the same in that case.
-2022-07-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build with old sqlite libraries
* src/sqlite.c (Fsqlite_open): Don't use SQLITE_OPEN_FULLMUTEX
if not defined.
-2022-07-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up 'find_automatic_composition'
* src/composite.c (find_automatic_composition): Limit search
backward in buffers to the first newline. Fix commentary.
-2022-07-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't sync for errors setting up DND targets and toplevels
* src/xterm.c (xm_setup_dnd_targets, x_dnd_free_toplevels)
(x_dnd_compute_toplevels): Avoid catching errors synchronously.
-2022-07-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
115261b323 ; Improve wording of recently-changed doc strings.
-2022-07-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `x-no-window-manager' cover user time as well
@@ -41614,11 +41614,11 @@
(x_wm_supports_1): Respect `x-no-window-manager'. This makes
testing some features easier.
-2022-07-09 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* test/Makefile.in (WRITE_LOG): Always be verbose on hydra.nixos.
-2022-07-09 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Make STRING_SET_MULTIBYTE an inline function
@@ -41627,25 +41627,25 @@
* src/composite.c (Fcomposition_get_gstring):
Prefer `make_multibyte_string` over Fconcat+STRING_SET_MULTIBYTE.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Exclude platform specific browsers from custom type
* lisp/net/browse-url.el (browse-url--browser-defcustom-type):
Don't include platform specific browsers on other platforms.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/eww.el (eww): Improve docstring.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make browse-url-default-browser fall back to EWW
* lisp/net/browse-url.el (browse-url-default-browser): Fall back
to EWW.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Drop support for the dead third-party w3 package
@@ -41675,7 +41675,7 @@
* lisp/msb.el (msb--few-menus, msb--very-many-menus): Check for
eww-mode instead of w3-mode.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve introductory section of TRAMP manual
@@ -41683,7 +41683,7 @@
without contrasting to Ange FTP. (Bug#56440)
(Frequently Asked Questions): Move information on Ange FTP here.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in net/*.el
@@ -41705,14 +41705,14 @@
* lisp/net/snmp-mode.el (snmp-mode-map):
* lisp/net/telnet.el (telnet-mode-map): Prefer defvar-keymap.
-2022-07-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid extra sync and atom name query on ending Motif DND
* src/xterm.c (handle_one_xevent): Use `x_dnd_action_symbol' to
set the Motif action instead.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete obsolete variable tooltip-use-echo-area
@@ -41722,13 +41722,13 @@
* lisp/progmodes/gud.el (gud-tooltip-process-output)
(gud-tooltip-tips): Don't use above deleted variable.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/woman.el (woman-fill-column): Increase default to 70.
* lisp/mh-e/mh-mime.el (mh-small-show-buffer-p): Double value.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete obsolete variable font-lock-maximum-size
@@ -41742,14 +41742,14 @@
* lisp/font-lock.el:
* lisp/info.el: Don't mention above deleted variable.
-2022-07-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in 'back_to_previous_visible_line_start'
* src/xdisp.c (back_to_previous_visible_line_start): Avoid
assertion violations when narrowed_begv is in effect.
-2022-07-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix segfault in composite.c
@@ -41757,7 +41757,7 @@
narrowed_begv if it's zero. This avoids segfault in
BACKWARD_CHAR, since zero is not a valid buffer position.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New command emacs-news-toggle-tag
@@ -41767,14 +41767,14 @@
* test/lisp/textmodes/emacs-news-mode-resources/toggle-tag.erts:
* test/lisp/textmodes/emacs-news-mode-tests.el: New files.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve ert-test-erts-file documentation
* lisp/emacs-lisp/ert.el (ert-test-erts-file): Improve docstring.
* doc/misc/ert.texi (erts files): Fix typo.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Bind M-G unconditionally in Dired
@@ -41785,7 +41785,7 @@
documentation of above command from here...
* doc/emacs/dired.texi (Subdirectory Motion): ...to here.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move dired-buffer-more-recently-used-p to dired.el
@@ -41793,7 +41793,7 @@
here...
* lisp/dired.el (dired-buffer-more-recently-used-p): ...to here.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete obsolete variable buffer-substring-filters
@@ -41803,7 +41803,7 @@
* doc/lispref/text.texi (Buffer Contents): Adjust documentation
for deleted variable.
-2022-07-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve drag-and-drop emulation time handling
@@ -41817,7 +41817,7 @@
display-specific to avoid interference when there are multiple
displays.
-2022-07-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions handling selection clear events on Haiku
@@ -41831,21 +41831,21 @@
* src/haikuselect.h: Update prototypes.
* src/systime.h: Define `Time' to an appropriate value on Haiku.
-2022-07-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
3442de2edd Doc fix; don't mention obsolete variable
c4e251103b ; * lisp/textmodes/rst.el: Update URLs.
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix redisplay after running selection hook on Haiku
* src/haikuselect.c (haiku_handle_selection_clear): Call
redisplay_preserve_echo_area.
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new minor mode to deactivate the region once PRIMARY is lost
@@ -41855,7 +41855,7 @@
* lisp/select.el (lost-selection-function): New function.
(lost-selection-mode): New global minor mode.
-2022-07-08 jgart <47760695+jgarte@users.noreply.github.com> (tiny change)
+2023-04-15 jgart <47760695+jgarte@users.noreply.github.com> (tiny change)
Add support for jedi-language-server
@@ -41867,7 +41867,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/961
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Speed up querying for window manager support
@@ -41877,11 +41877,11 @@
(x_wm_supports_1): First try net_supported_window. If it still
exists, don't ask for _NET_SUPPORTING_WM_CHECK.
-2022-07-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix typo in 1792cbaddc.
-2022-07-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Actually fix the long lines display bug (bug#56393).
@@ -41913,13 +41913,13 @@
* doc/emacs/emacs.texi (Top): Remove the entry for the Long Lines section.
-2022-07-08 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Revert commit 38b3780f6e.
Revert commits 9ea9533f17, c0c4600ece, 7b19ce51fc, 051d2a1e36 and eb6d2fb58d.
-2022-07-08 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Remove now unused parameter TRACK from do_switch_frame.
@@ -41930,14 +41930,14 @@
* src/minibuf.c (read_minibuf_unwind (twice))
* src/window.c (Fset_window_configuration): Remove argument TRACK.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fix; don't mention obsolete variable
* src/window.c (Fset_window_hscroll): Doc fix; don't mention obsolete
variable.
-2022-07-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el (isearch-search-fun-in-noncontiguous-region): New function.
@@ -41951,7 +41951,7 @@
(isearch--test-search-fun-in-text-property)
(isearch--test-search-fun-in-noncontiguous-region): New tests.
-2022-07-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Display the number of invisible matches for isearch-lazy-count (bug#40808)
@@ -41973,21 +41973,21 @@
* lisp/info.el (Info-isearch-filter): Check if search-invisible is t.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't mention moved variable in dired-x manual
* doc/misc/dired-x.texi (Technical Details): Remove mention of
'dired-clean-up-buffers-too'; it has been moved to dired.el.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete redundant defgroup dired-keys
* lisp/dired-x.el (dired-keys): Delete defgroup.
(dired-bind-vm): Move to :group dired-x.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move dired-do-relsymlink from dired-x.el to dired.el
@@ -42009,30 +42009,30 @@
* doc/emacs/dired.texi (Operating on Files)
(Transforming File Names): ...to here.
-2022-07-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/ruby-mode.el (ruby-mode): Set outline-regexp, outline-level.
Suggested by Yilkal Argaw <yilkalargawworkneh@gmail.com>.
-2022-07-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove unused member of internal struct
* src/fns.c (struct textprop_rec, concat_to_string): Remove `from`.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/dired.el (dired-jump-map): Bind also "j" to dired-jump.
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ensure correct position is returned after child frame movement
* src/xterm.c (x_set_offset): Synchronize child frame movement
correctly.
-2022-07-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix file-name-case-insensitive-p in ffap (bug#56443)
@@ -42045,7 +42045,7 @@
* test/src/fileio-tests.el (fileio-tests--identity-expand-handler)
(fileio--file-name-case-insensitive-p): New test.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove many items obsolete since 24.1
@@ -42168,14 +42168,14 @@
* lisp/mail/mailalias.el (mail-complete-alist): Doc fixes; don't refer
to above removed items.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Put safe-local-variable property on auto-insert
* lisp/autoinsert.el (auto-insert): Put safe-local-variable
property to allow disabling auto-inserting without a warning.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Stop ffap-machine-at-point from pinging random hosts
@@ -42188,7 +42188,7 @@
* lisp/ffap.el (ffap-machine-p-known): Change default to 'accept'.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add :safe property to ffap-machine-p-* variables
@@ -42197,13 +42197,13 @@
(ffap-machine-p-unknown): Add :safe property using above new
predicate.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add tests for mail-extr.el
* test/lisp/mail/mail-extr-tests.el: New file.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid obsolete initial-input argument in net-utils.el
@@ -42212,7 +42212,7 @@
(network-connection-to-service): Don't use obsolete initial-input
argument. Use 'format-prompt'. (Bug#56436)
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve behavior of sticky tooltips on Haiku
@@ -42225,7 +42225,7 @@
* src/haiku_support.h: Update prototypes.
* src/haikufns.c (Fx_show_tip): Update for renamed function.
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix flickering system tooltips on Haiku
@@ -42234,18 +42234,18 @@
(BView_set_and_show_sticky_tooltip):
* src/haikufns.c (haiku_hide_tip): Fix coding style.
-2022-07-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/xdisp.c (set_vertical_scroll_bar): Remove stale comment.
-2022-07-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix calculation of the vertical scroll bar's thumb
* src/xdisp.c (set_vertical_scroll_bar): Compute window's end
position "by hand" if w->window_end_pos cannot be relied upon.
-2022-07-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce synchronization setting frame alpha
@@ -42254,13 +42254,13 @@
the opacity property, which is much more expensive than changing
it.
-2022-07-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
2ac0ddc4ac ; * lisp/net/net-utils.el: Minor doc fixes.
-2022-07-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix returned action symbol upon "xterm" drop
@@ -42268,32 +42268,32 @@
x_dnd_action_symbol.
(x_dnd_begin_drag_and_drop): Don't clear it afterwards.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/emacs-lisp/ert.el (Commentary): Refer to the Info manual.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer keymap inheritance in shr-image-map
* lisp/net/shr.el (shr-image-map): Replace copy-keymap with
inheritance.
-2022-07-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make imenu--create-keymap more resilient
* lisp/imenu.el (imenu--create-keymap): Ignore nil items in the
alist (bug#56430).
-2022-07-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix buffer-tests
* test/src/buffer-tests.el (test-restore-buffer-modified-p): Don't
assume turning on auto-save-mode cannot auto-save immediately.
-2022-07-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Faster append and vconcat
@@ -42307,7 +42307,7 @@
streamlined from earlier combined code.
(concat2, concat3, Fappend, Fconcat, Fvconcat): Adjust calls.
-2022-07-07 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Remove obscure, obsolete code from do_switch_frame
@@ -42319,11 +42319,11 @@
* src/frame.c (do_switch_frame): Remove 53 lines of code.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/dig.el (dig): Provide default.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make net-utils-url at point funs obsolete in favor of ffap
@@ -42332,20 +42332,20 @@
'ffap-machine-at-point' and 'ffap-url-at-point'. Update callers.
* lisp/ffap.el (ffap-machine-at-point, ffap-url-at-point): Autoload.
-2022-07-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix selection disowning upon frame deletion on Wayland
* src/pgtkselect.c (pgtk_clear_frame_selections): Manually
disown cleared selections. (bug#56434)
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/eww.el (eww-browse-url): Add 'browser-kind' property.
* lisp/woman.el (woman): Fix comment; don't mention gnudoit.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make two XEmacs related variables obsolete
@@ -42353,7 +42353,7 @@
(browse-url-gnudoit-args): Make obsolete. The corresponding command
'browse-url-w3-gnudoit' is already obsolete since 25.1.
-2022-07-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK build
@@ -42361,7 +42361,7 @@
code for last change too. Reported by Norbert Koch
<viteno@netic.de>.
-2022-07-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prevent desktop.el from saving/restoring eglot--managed-mode
@@ -42376,7 +42376,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/990
-2022-07-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Apply any additionaltextedits unconditionally
@@ -42385,7 +42385,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/981
-2022-07-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix quitting out of selection converters during drag and drop
@@ -42394,7 +42394,7 @@
quit-flag is true immediately after a selection converter is
run.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Mark comint modes in net-utils.el as non-interactive
@@ -42402,7 +42402,7 @@
(smbclient-mode, network-connection-mode): Mark as non-interactive.
(nslookup-mode-map, ftp-mode-map): Prefer defvar-keymap.
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make 'run-dig' command obsolete in favor of 'dig'
@@ -42414,7 +42414,7 @@
(dig-invoke): Respect 'dig-program-options'.
(dig): Prompt for DNS server when given double prefix argument.
-2022-07-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix undo of changes in cloned indirect buffers
@@ -42434,11 +42434,11 @@
* src/lisp.h: Add prototype for 'buffer_visited_file_modtime'.
(Bug#56397)
-2022-07-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/dig.el (dig-exit): Mark for 'dig-mode'.
-2022-07-07 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make the Indian itrans methods more phonetic
@@ -42450,7 +42450,7 @@
translation rules to make the input method more phonetic.
(indian-tml-base-table, indian-tml-base-digits-table): Fix typo.
-2022-07-07 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Don't accumulate trailing newlines on every save of .dir-locals.el
@@ -42459,28 +42459,28 @@
(dir-locals-to-string): Remove newline to not add more newlines
on every save.
-2022-07-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix `trace-function' default buffer
* lisp/emacs-lisp/trace.el (trace--read-args): Don't use
format-prompt; instead, use DEF arg to read-buffer.
-2022-07-06 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
gnus-advanced-body: Fix return value
* gnus-logic.el (gnus-advanced-body): Return whether the search
succeeded, not the value of one of the cleanup forms.
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix NS build
* src/keyboard.c (process_special_events): Don't define copy and
moved events on the wrong toolkit.
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Port `x-lost-selection-functions' to Haiku
@@ -42509,14 +42509,14 @@
* src/keyboard.c (kbd_buffer_get_event, process_special_events)
(mark_kboards): Handle SELECTON_CLEAR_EVENTs correctly on Haiku.
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid excessive synchronization performing "xterm" drops
* src/xterm.c (x_dnd_do_unsupported_drop): Asynchronously catch
errors around XSendEvent.
-2022-07-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
End new .dir-locals.el files with a newline
@@ -42524,14 +42524,14 @@
newly created .dir-locals.el files. This avoids git complaining about
"No newline at end of file".
-2022-07-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Autoload safe local property for plstore-encrypt-to
* lisp/plstore.el (plstore-encrypt-to): Autoload 'safe-local-variable'
property for improved security.
-2022-07-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defcustom :safe to putting 'safe-local-variable'
@@ -42555,11 +42555,11 @@
* lisp/vc/vc-hooks.el (vc-follow-symlinks): Prefer defcustom :safe to
putting 'safe-local-variable'.
-2022-07-06 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/repeat.el (describe-repeat-maps): Handle non-symbol keymap (bug#21634).
-2022-07-06 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add new args MESSAGE and TIMEOUT to set-transient-map (bug#21634)
@@ -42574,7 +42574,7 @@
* doc/lispref/keymaps.texi (Controlling Active Maps): Mention new args
MESSAGE and TIMEOUT of set-transient-map.
-2022-07-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make some additional defcustom types more restrictive
@@ -42619,7 +42619,7 @@
* lisp/gnus/spam-stat.el (spam-stat-process-directory-age):
Use defcustom :type integer.
-2022-07-06 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix improvement of isearch in auto-narrow-mode.
@@ -42628,7 +42628,7 @@
(auto-narrow-pre-command-function, auto-narrow-post-command-function): Use the
new internal function.
-2022-07-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix missing :value with defcustom const :type
@@ -42644,7 +42644,7 @@
* lisp/progmodes/sh-script.el (sh-indent-after-continuation):
Fix missing :value with defcustom const :type.
-2022-07-06 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve isearch in auto-narrow-mode.
@@ -42654,7 +42654,7 @@
* lisp/files.el (auto-narrow--isearch-lazy-highlight): New internal variable.
(auto-narrow-pre-command-function, auto-narrow-post-command-function): Use it.
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix infinite looping around Haiku menus
@@ -42663,14 +42663,14 @@
* src/haikuterm.c (haiku_read_socket): Flush tooltip frames
after resize.
-2022-07-06 Davide Masserut <dm@mssdvd.com>
+2023-04-15 Davide Masserut <dm@mssdvd.com>
Send region to the subshell specified by the current file interpreter
* sh-script.el (sh-execute-region): Send region to the subshell
specified by the current file interpreter (bug#56406).
-2022-07-06 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Remove soft newlines in longlines-mode
@@ -42678,7 +42678,7 @@
from `buffer-substring-filters' to `filter-buffer-substring-function'.
Remove soft newlines in substring (bug#56335).
-2022-07-06 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Various improvements to auto-narrow mode.
@@ -42705,25 +42705,25 @@
* doc/emacs/display.texi (Auto-Narrowing): Improvement.
-2022-07-06 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
* lisp/erc/erc-track.el (erc-track-minor-mode-map): Doc fix.
-2022-07-06 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Use compatibility macro for ISUPPORT caching in ERC
* lisp/erc/erc-backend.el (erc--with-memoization): Defalias was a
kung-fu I've never seen before. (Bug#56340)
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop synchronizing after sending XEmbed events
* src/xterm.c (xembed_send_message): Don't sync and handle
errors, which is actually why the XSync call in the spec exists.
-2022-07-06 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Fix 'fit-frame-to-buffer' (Bug#56102)
@@ -42736,7 +42736,7 @@
* doc/lispref/windows.texi (Resizing Windows): Fix descriptions of
'fit-frame-to-buffer' and 'fit-frame-to-buffer-sizes'.
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS build
@@ -42744,7 +42744,7 @@
* src/process.c (Fsignal_names): Disable on MS-DOS and use
SIGNUM_BOUND, which is always provided by gnulib.
-2022-07-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Speed up interning XDS atoms
@@ -42754,20 +42754,20 @@
* src/xterm.h (struct x_display_info): New atoms
`XdndDirectSave0', `XdndActionDirectSave' and `text/plain'.
-2022-07-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
* admin/merge-gnulib (AVOIDED_MODULES): Add chmod.
-2022-07-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
6b5d829d9d Add index entry for "ignore case"
29e1459965 ; * lisp/files.el (remote-file-name-inhibit-cache): Minor ...
-2022-07-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Adjust better to Autoconf quoting style change
@@ -42783,7 +42783,7 @@
Use better Autoconf quoting.
* make-dist (version): Simplify.
-2022-07-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce duplicate code cleaning up DND processes
@@ -42791,14 +42791,14 @@
(x_dnd_cleanup_drag_and_drop, x_dnd_begin_drag_and_drop): Use
that instead of manually cleaning up properties and events.
-2022-07-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't select for unnecessary properties during DND
* src/xterm.c (x_dnd_begin_drag_and_drop): Don't select for
property changes when not using toplevels.
-2022-07-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix announcements of XDND mouse rectangles
@@ -42807,7 +42807,7 @@
* src/xterm.c (handle_one_xevent): Likewise. Also fix unpacking
of mouse rects.
-2022-07-05 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Actually fix the long lines display bug (bug#56393).
@@ -42861,39 +42861,39 @@
* doc/emacs/emacs.texi (Top): Remove the entry for the Long Lines section.
-2022-07-05 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* make-dist: Fix after recent configure.ac quoting changes.
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix custom-initialize-reset bootstrap error
* lisp/custom.el (custom-initialize-reset): Fix bootstrap problem
by avoiding when-let.
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix rcirc buffer name collisions
* lisp/net/rcirc.el (rcirc-handler-NICK): Avoid naming collisions
when renaming buffers (bug#45872).
-2022-07-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Mention remote-file-name-inhibit-auto-save-visited in Tramp manual
* doc/misc/tramp.texi (Auto-save File Lock and Backup):
Explain remote-file-name-inhibit-auto-save-visited.
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add index entry for "ignore case"
* doc/emacs/glossary.texi (Glossary): Add index entry for "ignore
case" pointing to "Case Folding".
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename new option to remote-file-name-inhibit-auto-save-visited
@@ -42902,11 +42902,11 @@
(auto-save-visited-mode): Adjust accordingly. (Bug#41333)
Suggested by Michael Albinus <michael.albinus@gmx.de>.
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Give a warning if setopt has been used with an invalid value
@@ -42917,14 +42917,14 @@
* lisp/wid-edit.el (widget-convert): Autoload.
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Re-fix narrowing problem in tramp-debug-buffer-command-completion-p
* lisp/net/tramp.el (tramp-debug-buffer-command-completion-p):
Respect narrowing also for end of substring. (Bug#56225)
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make some defcustom types more restrictive
@@ -42987,7 +42987,7 @@
* lisp/savehist.el (savehist-file-modes): Fix setting to nil value and
use :type natnum.
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't hard-code `M-c' in `read-regexp'
@@ -42995,21 +42995,21 @@
(read-regexp--case-fold, read-regexp-toggle-case-folding)
(read-regexp): Factor out to avoid hard-coding `M-c'.
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Documnt left/right mwheel events
* doc/lispref/commands.texi (Misc Events): Document left/right
mwheel events (bug#41722).
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention byte order marks in string-limit doc string
* lisp/emacs-lisp/subr-x.el (string-limit): Mention byte order
marks (bug#48324).
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New user option auto-save-visited-remote-files
@@ -43017,7 +43017,7 @@
(auto-save-visited-mode): Use above new variable to decide whether
or not to save remote files. (Bug#41333)
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New user option auto-save-visited-mode-predicate
@@ -43025,14 +43025,14 @@
(auto-save-visited-mode): Use above new variable as a predicate to
decide whether or not to save a buffer.
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Shorten name of recently added command to emacs-news-open-line
* lisp/textmodes/emacs-news-mode.el (emacs-news-open-line): Rename
from 'emacs-news-mode-open-line'.
-2022-07-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix manually disowning Emacs drag atoms
@@ -43040,7 +43040,7 @@
eventp->time is CurrentTime as well. This can happen with some
synthetic events.
-2022-07-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the interactive prefix from emoji-insert
@@ -43049,7 +43049,7 @@
`C-x 8 e s', and we're considering using the prefix to copy to the
kill ring.
-2022-07-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow immediately saving XDS drops
@@ -43063,7 +43063,7 @@
(x-dnd-save-direct-immediately): New function.
(x-dnd-handle-xds-drop): Fix nil values of selected file name.
-2022-07-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Quote configure.ac arguments more consistently
@@ -43074,20 +43074,20 @@
* configure.ac: Quote arguments more consistently,
as per the Autoconf manual.
-2022-07-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Don’t mishandle preset emacs_cv_lesstif
* configure.ac: Restore CFLAGS etc. correctly even when
emacs_cv_lesstif is already set on the command line.
-2022-07-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
d5e1424174 Expand docstrings related to auto-saving
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't take XCB socket every time we want the no of the next request
@@ -43096,7 +43096,7 @@
redundantly. Use NextRequest if it was immediately preceded by
XNextRequest, which updates dpy->request.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New command emacs-news-mode-open-line
@@ -43104,7 +43104,7 @@
(emacs-news-mode-open-line): New command.
(emacs-news-mode-map): Remap 'open-line' to above new command.
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve support for remote files in XDS
@@ -43113,7 +43113,7 @@
(x-dnd-save-direct): Handle remote file names normally.
(x-dnd-handle-xds-drop): Handle remote file names in URI.
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't overestimate supported input extension version on GTK 3
@@ -43121,7 +43121,7 @@
maximum version supported by libXi), set it back to
original_minor.
-2022-07-04 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
Add reverse mapping for EUDC attribute names
@@ -43130,21 +43130,21 @@
(eudc-translate-attribute-list): new optional parameter to
reverse the mapping direction
-2022-07-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(gnus-inverse-list-range-intersection): Update alias
* lisp/gnus/gnus-range.el (gnus-inverse-list-range-intersection):
Don't alias to an obsolete alias.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Expand docstrings related to auto-saving
* lisp/files.el (auto-save-visited-mode):
* lisp/simple.el (auto-save-mode): Expand docstring.
-2022-07-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix core dump with x-get-local-selection
@@ -43153,14 +43153,14 @@
This pacifies gcc -Wanalyzer-null-dereference, which found the
problem.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add quit-window entry to list-timers menu
* lisp/emacs-lisp/timer-list.el (timer-list-mode-map): Add
quit-window entry to menu.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in emacs-lisp/*.el
@@ -43181,7 +43181,7 @@
(tabulated-list-sort-button-map):
* lisp/emacs-lisp/timer-list.el (timer-list-mode-map):
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Document using make-composed-keymap with defvar-keymap
@@ -43191,25 +43191,25 @@
* lisp/help-mode.el (help-mode-map): Use defvar-keymap to make this
code match the above documentation change.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fix; quote keys in face-remap.el
* lisp/face-remap.el (text-scale-adjust, global-text-scale-adjust):
Doc fix; quote keys.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Inherit instead of copying keymap in bookmark.el
* lisp/bookmark.el (bookmark-rename): Inherit instead of copying
keymap.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/keymap.c (Fcopy_keymap): Document using defvar-keymap.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use substitute-command-keys in Helper-help
@@ -43217,7 +43217,7 @@
(Helper-help-options, Helper-help): Use substitute-command-keys.
(Helper-help-map): Prefer defvar-keymap.
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid code duplication converting XI event state in toolkit menu code
@@ -43227,14 +43227,14 @@
builds.
* src/xterm.h: Update prototypes.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix scrolling backwards in Helper-help
* lisp/emacs-lisp/helper.el (Helper-help-scroller): Fix scrolling
backwards.
-2022-07-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove some useless `eval-when-compile`
@@ -43255,7 +43255,7 @@
Eliminate `eval-when-compile` when the argument would be evaluated by
the compiler anyway.
-2022-07-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Replace lisp-mode-symbol-regexp with (rx lisp-mode-symbol)
@@ -43270,11 +43270,11 @@
* lisp/emacs-lisp/shorthands.el (shorthands-font-lock-shorthands):
Use lisp-mode-symbol instead of lisp-mode-symbol-regexp.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/progmodes/ebrowse.el (ebrowse-tree-mode): Fix typo.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove remaining Helper-help support from view-mode
@@ -43282,7 +43282,7 @@
(view--enable, view--disable): Delete remaining Helper-help support
code; view-mode stopped using it in 1995.
-2022-07-04 Daanturo <daanturo@gmail.com>
+2023-04-15 Daanturo <daanturo@gmail.com>
Add file-parent-directory function
@@ -43291,7 +43291,7 @@
* lisp/emacs-lisp/shortdoc.el: Add it to 'file-name' group.
* lisp/files.el: implementation (bug#56355).
-2022-07-04 Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
+2023-04-15 Benjamin Riefenstahl <b.riefenstahl@turtle-trading.net>
lisp/thumbs.el: Fix calling the "convert" command
@@ -43304,28 +43304,28 @@
passing the parameters directly, but the fallout was not handled
correctly.
-2022-07-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Preserve <title> in the Emacs manuals
* admin/admin.el (manual-html-fix-headers): Preserve the <title>
element (bug#48334).
-2022-07-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't bug out in manual-html-fix-index-2 on newer makeinfo versions
* admin/admin.el (manual-html-fix-index-2): Don't bug out if the
makeinfo version doesn't include <ul>.
-2022-07-04 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Exclude radio buttons when suggesting URI in eww
* lisp/net/eww.el (eww-links-at-point): Exclude radio links.
(bug#56366).
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New command help-fns-edit-mode-cancel
@@ -43333,7 +43333,7 @@
(help-fns--edit-value-mode-map): Bind it to 'C-c C-k'.
(help-fns-edit-variable): Advertise it in help text.
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle errors caused by ignoring errors with GDK's trap installed
@@ -43341,7 +43341,7 @@
(x_stop_ignoring_errors): Also tell GDK to ignore errors from
the following requests. (bug#56372)
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Always wait for XdndStatus before sending XdndDrop
@@ -43351,20 +43351,20 @@
of pending XdndStatus, to avoid race conditions where we don't
yet know the selected action.
-2022-07-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix accessing dpyinfo after it is deallocated
* src/xterm.c (x_connection_closed): Print disconnect error for
the last terminal before freeing it.
-2022-07-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
41472f3b6c Document 'jit-lock-debug-mode'
-2022-07-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display list of traps and handlers when crashing due to an X error
@@ -43372,7 +43372,7 @@
error handlers if not crashing due to an IO error.
(NO_INLINE): Include error serial in error message.
-2022-07-03 Florian Rommel <mail@florommel.de>
+2023-04-15 Florian Rommel <mail@florommel.de>
Add support for fullscreen values fullheight and fullwidth on PGTK
@@ -43383,21 +43383,21 @@
* configure.ac: Bump GTK version for PGTK
* etc/NEWS: Change GTK version in PGTK announcement
-2022-07-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some more error checking code to `x_stop_ignoring_errors'
* src/xterm.c (x_stop_ignoring_errors): Abort if no request was
actually made, making the state inconsistent.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Simplify lisp-el-font-lock-keywords-2 definition slightly
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
Simplify slightly.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Quote some literal keys to get help-key-binding face
@@ -43446,7 +43446,7 @@
* lisp/comint.el (comint-insert-previous-argument): Use regular
quotes.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use command substitutions instead of literal keys in some places
@@ -43459,41 +43459,41 @@
* lisp/textmodes/reftex-toc.el: Use command substitutions instead of
literal keys.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Normalize definition of erc-track-minor-mode-map
* lisp/erc/erc-track.el (erc-track-minor-mode-map): Normalize keymap
definition.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use substitute-command-keys in reftex-toc-show-help
* lisp/textmodes/reftex-toc.el (reftex-toc-help)
(reftex-toc-show-help): Use substitute-command-keys.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Font lock \\<> and \\{} command substitutions in docstrings
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
Support \\<> and \\{} command substitutions.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix warning in last commit
* lisp/calc/calc-misc.el (calc-dispatch-help): Fix warning.
-2022-07-03 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use more help-key-binding faces in repeat-mode message
* lisp/repeat.el (repeat-echo-message-string): Use
substitute-command-keys for repeat-exit-key as well.
-2022-07-03 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/mwheel.el: More fixes for global-text-scale (bug#48307)
@@ -43504,14 +43504,14 @@
Add mouse-wheel-down-alternate-event and mouse-wheel-up-alternate-event.
Allow a list of modifiers for 'text-scale'.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve calc-dispatch-help docstring
* lisp/calc/calc-misc.el (calc-dispatch-help): Use command
substitutions.
-2022-07-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp code cleanup
@@ -43535,14 +43535,14 @@
* test/lisp/net/tramp-tests.el (tramp--test-sh-no-ls--dired-p)
(tramp--test-with-proper-process-name-and-buffer): Code cleanup.
-2022-07-03 Florian Rommel <mail@florommel.de>
+2023-04-15 Florian Rommel <mail@florommel.de>
abort-redisplay: Add missing unbind_to in 'recenter'
* src/window.c (recenter): Add ubind_to before early return.
(Bug#56369)
-2022-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
lisp/elec-pair.el: Simplify last change
@@ -43554,20 +43554,20 @@
(electric-pair-syntax-info, electric-pair--balance-info):
Adjust calls accordingly.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix dired-goto-subdir prompt
* lisp/dired-aux.el (dired-goto-subdir): Fix prompt and improve
docstring. Add interactive mode tag for dired-mode.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix warnings in my last commit
* lisp/textmodes/emacs-news-mode.el (outline): Require.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve navigation keybindings in emacs-news-mode
@@ -43578,7 +43578,7 @@
(emacs-news-view-mode-map): New defvar-keymap; inherit from
'emacs-news-common-map'.
-2022-07-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix implementation of 'reset' face values
@@ -43587,7 +43587,7 @@
attributes when replacing 'reset' pseudo-values with real values.
(Bug#38771)
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move dired-clean-up-buffers-too to dired.el
@@ -43599,7 +43599,7 @@
(dired-clean-up-after-deletion): Adjust documentation.
* etc/NEWS: Announce the change.
-2022-07-03 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix `python-nav-beginning-of-defun' line continuation using backslash
@@ -43608,11 +43608,11 @@
(python-info-looking-at-beginning-of-defun): Add CHECK-STATEMENT
argument.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/dired-x.el (dired-omit-size-limit): Increase value.
-2022-07-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make string-limit with encoding return complete glyphs
@@ -43621,14 +43621,14 @@
charset designations (bug#48324). Also amend the algorithm to
return complete glyphs, not just complete code points.
-2022-07-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve performance when rejecting XI touch event
* src/xterm.c (handle_one_xevent): Avoid sync handling simple
error.
-2022-07-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix streaming problems in nnimap-retrieve-headers
@@ -43636,7 +43636,7 @@
UID FETCH commands, since the server may return the results
out-of-order (bug#56332).
-2022-07-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function `seq-split'
@@ -43646,7 +43646,7 @@
* lisp/emacs-lisp/shortdoc.el (sequence): Mention it.
-2022-07-03 Allen Li <darkfeline@felesatra.moe>
+2023-04-15 Allen Li <darkfeline@felesatra.moe>
elec-pair: Fix bug incorrectly hiding syntax-propertize-function
@@ -43667,18 +43667,18 @@
`electric-pair-text-syntax-table', to prevent cached syntax for the
original table from affecting things.
-2022-07-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve efficiency of `x_frame_highlight' and `x_frame_unhighlight'
* src/xterm.c (x_frame_highlight, x_frame_unhighlight): Don't
sync catching errors.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/dired.el (dired-do-eww): New command.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve dired-do-{info,man} error handling
@@ -43686,7 +43686,7 @@
'dired-get-file-for-visit' to get better error handling.
Interactive mode tagging.
-2022-07-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Implement pseudo-value 'reset' of face attrributes
@@ -43703,11 +43703,11 @@
'reset' as a value of any attribute except ':inherit'.
(Bug#38771)
-2022-07-03 James Thomas <jimjoe@gmx.net>
+2023-04-15 James Thomas <jimjoe@gmx.net>
* lisp/leim/quail/indian.el ("malayalam-mozhi"): Set DETERMINISTIC.
-2022-07-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix deadlocks with very old versions of libXi
@@ -43717,14 +43717,14 @@
* src/xterm.c (x_destroy_window): Free `xi_mask' with xfree in
that case.
-2022-07-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document 'jit-lock-debug-mode'
* doc/lispref/modes.texi (Other Font Lock Variables): Document
'jit-lock-debug-mode'.
-2022-07-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -43733,7 +43733,7 @@
c85f7c2e8a Don't refer to obsolete alias for insert-char
60ad45c5d2 Don't use obsolete face name in manoj-dark-theme
-2022-07-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Speed up receiving drops over slow connections
@@ -43752,7 +43752,7 @@
(syms_of_xterm): New variable `x-fast-protocol-requests'.
* src/xterm.h: Update prototypes.
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
REQUIRE-MATCH doc string clarification
@@ -43760,18 +43760,18 @@
* lisp/minibuffer.el (read-file-name): Clarify what the return
value is in the REQUIRE-MATCH function case.
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some typos in NEWS
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add sanity check for Emacsen distributed without .el files
* src/lread.c (maybe_swap_for_eln): Add sanity check for Emacsen
distributed without .el files (bug#48342).
-2022-07-02 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix a c-backward-token-2 call wrongly jumping back over macros.
@@ -43781,14 +43781,14 @@
c-backward-token-2, which could jump back too far leading to an infinite
loop, with a save-excursion to remember the point we've got to go back to.
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Filter out nul bytes when killing from a *grep* buffer
* lisp/progmodes/grep.el (grep-mode): Filter out the nul bytes
(bug#48321).
-2022-07-02 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Add more separators to longlines-mode
@@ -43806,32 +43806,32 @@
space, just remove it.
* etc/NEWS: New user option 'longlines-breakpoint-chars'
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Unobsolete longlines-mode (bug#18589)
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use help-key-binding face in text scale adjust messages
* lisp/face-remap.el (text-scale-adjust)
(global-text-scale-adjust): Use substitute-command-keys.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use help-key-binding face in repeat-mode message
* lisp/repeat.el (repeat-echo-message-string): Use
substitute-command-keys.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make dired-jump repeatable in repeat-mode
* lisp/dired.el (dired-jump-map): New variable.
(dired-jump): Put 'repeat-map' property with 'dired-jump-map'.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move dired-info and dired-man from dired-x to dired
@@ -43851,7 +43851,7 @@
'dired-do-man'.
* etc/NEWS: Announce the above changes.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in nxml/*.el
@@ -43860,7 +43860,7 @@
(nxml-outline-show-map, nxml-outline-hiding-tag-map)
(nxml-outline-showing-tag-map): Prefer defvar-keymap.
-2022-07-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error handling for XCB Xlib
@@ -43881,14 +43881,14 @@
(struct x_display_info): Make failable request variables the
right type.
-2022-07-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display disconnect when tooltip frame is alive
* src/xterm.c (x_connection_closed): Don't dereference nil when
loop finds a tooltip frame.
-2022-07-02 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Command for global adjustments to the default face
@@ -43907,21 +43907,21 @@
* etc/NEWS: Mention the new command and its bindings, and the new
user option.
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a comment about buffer_local_value/find_symbol_value
* src/data.c: Note that buffer_local_value is very similar
(bug#48281).
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow NUL characters in JSON input
* src/json.c (Fjson_parse_string, Fjson_parse_buffer): Allow NUL
characters in JSON (bug#48274).
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make comint-watch-for-password-prompt more resilient
@@ -43929,27 +43929,27 @@
send commands to the process after it's exited (bug#56336). (This
commonly happens when invoked via `M-&'.)
-2022-07-02 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Preserve connection-local settings in dired
* lisp/dired-aux.el (dired-shell-command):
Preserve connection-local settings. (Bug#56333)
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add native-compile-prune-cache command
* lisp/emacs-lisp/comp.el (native-compile-prune-cache): New
command (bug#48108).
-2022-07-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
native-comp-eln-load-path doc string fix
* src/comp.c (syms_of_comp): Fix grammar in doc string.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fixes; don't use obsolete names
@@ -43957,36 +43957,36 @@
* lisp/mh-e/mh-funcs.el (mh-kill-folder): Don't use obsolete
names.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't refer to obsolete alias for insert-char
* lisp/leim/quail/persian.el: Don't refer to obsolete alias for
insert-char.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't use obsolete face name in manoj-dark-theme
* etc/themes/manoj-dark-theme.el (change-log-acknowledgment): Don't
use obsolete/non-existent face name.
-2022-07-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/sheap.h (STATIC_HEAP_SIZE): Double the size of static heap.
-2022-07-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Completely get rid of races during Motif drag window creation
* src/xterm.c (x_special_window_exists_p): New function.
(xm_get_drag_window_1): Rework workflow and display grabbing.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/xfns.c (Fx_server_input_extension_version): Fix typo.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -44003,7 +44003,7 @@
# lisp/emacs-lisp/nadvice.el
# lisp/image/image-converter.el
-2022-07-02 Lele Gaifax <lele@metapensiero.it> (tiny change)
+2023-04-15 Lele Gaifax <lele@metapensiero.it> (tiny change)
Fix repeated "the"
@@ -44014,7 +44014,7 @@
(Fx_display_backing_store, Fx_display_visual_class):
* src/xterm.c: Fix repeated "the". (Bug#56341)
-2022-07-02 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Fix fallout from bug#50143
@@ -44022,14 +44022,14 @@
(indian-tml-base-digits-table): Add TAMIL OM sign and more Sanskrit
consonants to the table (bug#50143) (bug#56323).
-2022-07-02 Omar Polo <op@omarpolo.com>
+2023-04-15 Omar Polo <op@omarpolo.com>
Improve rcirc's CertFP documentation
* doc/misc/rcirc.texi: Clarify meaning of key and password
* lisp/net/rcirc.el (rcirc-authinfo): Add example
-2022-07-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix drag-and-drop from Chromium family browsers
@@ -44038,30 +44038,30 @@
`copy'.
(x-dnd-do-direct-save): Offer application/octet-stream as well.
-2022-07-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/ruler-mode.el (ruler-mode-map): Use defvar-keymap.
* lisp/epa-mail.el (epa-mail-mode-map): Use defvar-keymap.
-2022-07-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Font lock \\`' command substitutions in docstrings
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
Support \\`' command substitutions.
-2022-07-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add interactive XDS test
* test/lisp/dnd-tests.el (dnd-tests-direct-save): New test.
-2022-07-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* editfns.c (Fbyte_to_string): Use `make_unibyte_string`
-2022-07-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Return the correct action from the Lisp side of drag-and-drop
@@ -44083,39 +44083,39 @@
* src/xterm.h: Update declarations.
-2022-07-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use command substitution in kmacro.el
* lisp/kmacro.el (kmacro-bind-to-key, kmacro-view-macro-repeat):
Use command substitution.
-2022-07-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* doc/misc/erc.texi (Connecting): Fix typo.
-2022-07-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "C-u C-x =" for SPC
* lisp/descr-text.el (describe-char): Don't report 'nobreak-space'
face for SPC. (Bug#56337)
-2022-07-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix quoting of file names in 'ctags'
* lib-src/etags.c (main) [WINDOWSNT || MSDOS]: Quote file names
according to the rules of the system shells.
-2022-07-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for <mark> in shr
* lisp/net/shr.el (shr-mark): New face (bug#48211).
(shr-tag-mark): New function
-2022-07-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix elisp-byte-compile-buffer requirements
@@ -44124,13 +44124,13 @@
defined. (The byte compiler didn't catch this, because it's
defined in bytecomp.)
-2022-07-01 dick r. chiang <dick.r.chiang@gmail.com>
+2023-04-15 dick r. chiang <dick.r.chiang@gmail.com>
Fix typo in Property Search manual entry
* doc/lispref/text.texi (Property Search): Fix typo (bug#56329).
-2022-07-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make time-stamp-tests.el work in a Norwegian language enviroment
@@ -44146,7 +44146,7 @@
(time-stamp-string "%#3a" time)
=> "FRE"
-2022-07-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document XDS stuff
@@ -44155,7 +44155,7 @@
about XDS features.
* etc/NEWS: Tag entry.
-2022-07-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make it easier to debug nnimap-retrieve-headers
@@ -44163,21 +44163,21 @@
to ease debugging.
(nnimap-retrieve-headers): Use it.
-2022-07-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the emoji-zoom commands use a transient map for repetition
* lisp/international/emoji.el (emoji-zoom-increase)
(emoji-zoom-decrease): Use a transient map for convenience.
-2022-07-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Expand file names read from XDS functions
* lisp/x-dnd.el (x-dnd-handle-xds-drop): Expand file names
before use. Some GUI dialogs read un-expanded file names.
-2022-07-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent XdndPosition messages from rarely being sent out of band
@@ -44185,7 +44185,7 @@
`x_dnd_waiting_for_status_window' if a pending position message
was sent in reply to an XdndStatus event.
-2022-07-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Support receiving XDS drops correctly
@@ -44201,7 +44201,7 @@
(x-dnd-handle-octet-stream-for-drop):
(x-dnd-handle-xds-drop): New functions.
-2022-07-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -44209,7 +44209,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-06-29 19:13:08 UTC.
-2022-06-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add tests for XDS protocol support
@@ -44224,7 +44224,7 @@
(x-dnd-tests-do-direct-save-internal): New function.
(x-dnd-tests-do-direct-save): New test.
-2022-06-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix `clipboard-yank' inserting off the kill ring instead of CLIPBOARD
@@ -44235,7 +44235,7 @@
return nil if the last cut did not own the chosen
selection. (bug#56325)
-2022-06-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable middle click selection emulation during XDS
@@ -44252,7 +44252,7 @@
(x_dnd_begin_drag_and_drop): Handle recorded value.
(syms_of_xterm): New variable `x-dnd-use-unsupported-drop'.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Update ERC's Info doc with network-ID related changes
@@ -44264,7 +44264,7 @@
* etc/ERC-NEWS: Add new section for future 5.5 release.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Optionally prevent sending multiline input in ERC
@@ -44279,7 +44279,7 @@
(erc--check-prompt-input-for-excess-lines): Add test.
(Bug#54536)
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Improve ERC's handling of multiline prompt input
@@ -44320,7 +44320,7 @@
erc-send-whitespace-lines): Add tests.
(Bug#54536)
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Fix regression in erc-send-input-line
@@ -44333,7 +44333,7 @@
newline to more correctly simulate how it's actually called by
`erc-send-input'. (Bug#50008)
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Standardize auth-source queries in ERC
@@ -44409,7 +44409,7 @@
* test/lisp/erc/resources/join/auth-source/foonet.eld: New file.
(Bug#48598)
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Favor network identities in erc-join
@@ -44440,7 +44440,7 @@
* test/lisp/erc/resources/join/reconnect/foonet-again.eld: New file.
* test/lisp/erc/resources/join/reconnect/foonet.eld: New file.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't call erc-auto-query twice on PRIVMSG
@@ -44465,7 +44465,7 @@
(erc-scenarios-base-mask-target-routing): Add test for server masks.
* test/lisp/erc/resources/base/mask-target-routing/foonet.eld: New file.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Register erc-kill-buffer-function locally
@@ -44473,7 +44473,7 @@
loading file. Move to major-mode setup and make buffer-local instead.
Depends on tests in bug#48598.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add user-oriented test scenarios for ERC
@@ -44555,7 +44555,7 @@
file named test/lisp/erc/erc-scenarios-48598.el introduced by the
patch "Add user-oriented test scenarios for ERC".
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Address long-standing ERC buffer-naming issues
@@ -44703,7 +44703,7 @@
See bug#48598 for background on all of the above.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add ERC test server and related resources
@@ -44716,7 +44716,7 @@
* test/lisp/erc/erc-scenarios-internal.el: New file to serve as
discoverable proxy for erc-d-tests.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Discourage ill-defined use of buffer targets in ERC
@@ -44752,7 +44752,7 @@
whether a buffer needs joining. Prefer this to server liveliness, as
explained above.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add eventual replacement for erc-default-recipients
@@ -44768,7 +44768,7 @@
* lisp/erc/erc-backend.el (erc-server-NICK): Recreate `erc--target'
when necessary.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add helper to determine local channels in ERC
@@ -44779,7 +44779,7 @@
* test/lisp/erc/erc-tests.el (erc--valid-local-channel-p): Add test
for this helper.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Make ERC respect spaces in server passwords
@@ -44788,7 +44788,7 @@
often overloaded with other semantics imposed by various entities to
convey things like bouncer or services creds.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Recognize ASCII and strict CASEMAPPINGs in ERC
@@ -44798,7 +44798,7 @@
* test/lisp/erc/erc-tests.el: Add test for `erc-downcase'.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Update ISUPPORT handling in ERC
@@ -44834,7 +44834,7 @@
* test/lisp/erc/erc-tests.el: Add tests for the above mentioned
changes in erc-backend.el.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Require erc-networks in erc.el
@@ -44857,7 +44857,7 @@
guarded by `fboundp'. It now relies on the fact that its namesake
variable is set in target buffers as well.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't set erc-server-announced-name unless known
@@ -44874,7 +44874,7 @@
`erc-server-connected', which is always nil when connecting and
vice-versa.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Allow exemption from flood penalty in erc-backend
@@ -44887,7 +44887,7 @@
affected. See update #5 in the bug's email thread under the section
entitled "Riders" for an explanation.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Customize displaying of ERC buffers on reconnect
@@ -44903,7 +44903,7 @@
before resetting.
(Bug#51753)
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Remove duplicate ERC prompt on reconnect
@@ -44937,7 +44937,7 @@
buffer-prep boilerplate involving user input and the server process.
Shared with bug#54536.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Accept user keyword arg in ERC entry-point commands
@@ -44960,7 +44960,7 @@
explicit argument or user options.
(Bug#54824)
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Initialize erc-server-filter-data in erc-backend
@@ -44972,7 +44972,7 @@
invocations merely set up a target buffer and have no business
touching this variable.
-2022-06-30 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Rework mutual dependency between erc and erc-backend
@@ -44986,7 +44986,7 @@
utility test to scrape for unused vars that may accumulate over time.
(Bug#54825)
-2022-06-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fixes: don't refer to some obsolete items
@@ -44996,18 +44996,18 @@
* lisp/vc/diff-mode.el: Doc fix; don't refer to obsolete variables and
functions.
-2022-06-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove obsolete cust-print from elisp index
* doc/lispref/edebug.texi (Printing in Edebug): Remove obsolete
library "cust-print" from index.
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix define-obsolete-function-alias formatting in loaddefs-gen.el
@@ -45015,7 +45015,7 @@
Fix formatting of define-obsolete-function-alias statements
(bug#56292).
-2022-06-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(syntax-wholeline-max): New var
@@ -45032,11 +45032,11 @@
* lisp/font-lock.el (font-lock-extend-region-wholelines): Rewrite,
using `syntax-propertize-wholelines`.
-2022-06-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* admin/make-tarball.txt: Minor clarifications.
-2022-06-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't say that macro-expansion error is a warning
@@ -45044,18 +45044,18 @@
* lisp/emacs-lisp/macroexp.el (internal-macroexpand-for-load): Since
eager macro-expansion errors are no longer warnings, don't say so.
-2022-06-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/eshell/em-term.el (eshell-visual-commands): Add vim.
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Also add elisp-eval/byte-compile-buffer to lisp-interaction-mode
* lisp/progmodes/elisp-mode.el (lisp-interaction-mode-map): Also
add elisp-eval-buffer and elisp-byte-compile-buffer to this map.
-2022-06-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't change indentation rules for `>=` and `=`
@@ -45064,21 +45064,21 @@
no way to tell them apart.
Suggested by Michael Herdeegen.
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous elisp-byte-compile-buffer change
* lisp/progmodes/elisp-mode.el (elisp-byte-compile-buffer): Make
warnings point to the correct place.
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up warning links in elisp-byte-compile-buffer
* lisp/progmodes/elisp-mode.el (elisp-byte-compile-buffer): Make
warnings point to the correct place.
-2022-06-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New hook save-place-after-find-file-hook
@@ -45086,7 +45086,7 @@
* lisp/saveplace.el (save-place-after-find-file-hook): New hook.
(save-place-find-file-hook): Run new hook.
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make "eager macro-expansion" warning into an error
@@ -45098,11 +45098,11 @@
macro expansion for many years, so finally change that into an
error (bug#18154).
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Do NEWS tagging
-2022-06-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix external image conversion on MS-Windows
@@ -45111,27 +45111,27 @@
text or EOL conversions, since we are reading/writing binary
data. (Bug#56317)
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add find-function-setup-keys bindings for find-library commands
* lisp/emacs-lisp/find-func.el (find-function-setup-keys): Add `L'
bindings for the find-library family of commands (bug#51240).
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore temp-buffer-resize-mode behaviour wrt. [back] buttons
* lisp/help.el (help--window-setup): If temp-buffer-resize-mode, do
the window setup after adding [back] buttons (bug#56306).
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous server.el change
* lisp/server.el (server-process-filter): Fix typo in previous change.
-2022-06-30 Michael Shields <shields@msrl.com>
+2023-04-15 Michael Shields <shields@msrl.com>
Don't ignore emacsclient's --frame-parameters option when -t
@@ -45139,7 +45139,7 @@
was mistakenly missed when the patch was applied (bug#24147).
This also fixes bug#56309.
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new commands to elisp mode for eval/compilation
@@ -45148,14 +45148,14 @@
(elisp-eval-buffer, elisp-byte-compile-file)
(elisp-byte-compile-buffer): New commands.
-2022-06-30 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Clarify `version-control' in the Emacs manual
* doc/emacs/files.texi (Backup Names): Rephrase for greater
clarity (bug#56291).
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Recognize Gradle error messages in compile-mode
@@ -45163,17 +45163,17 @@
(compilation-error-regexp-alist-alist): Recognize Gradle errors
(bug#56249).
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add provide to testcover
* lisp/emacs-lisp/testcover.el (testcover): Provide (bug#55388).
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-06-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new commands to zoom emojis
@@ -45182,7 +45182,7 @@
* lisp/international/mule-cmds.el (ctl-x-map): Bind them.
-2022-06-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable unrelated drag-and-drop protocols during XDS drop
@@ -45196,7 +45196,7 @@
(handle_one_xevent): Respect new variable.
(syms_of_xterm): New variable `x-dnd-disable-motif-protocol'.
-2022-06-30 jicksaw <jicksaw@pm.me> (tiny change)
+2023-04-15 jicksaw <jicksaw@pm.me> (tiny change)
Reduce eldoc noise from hover messages
@@ -45216,7 +45216,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/514
-2022-06-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve compliance with the XDS and XDND protocols
@@ -45230,7 +45230,7 @@
(x-dnd-do-direct-save): Handle application/octet-stream, check
results.
-2022-06-29 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Use "Surname" instead of "Name" in prompts
@@ -45239,7 +45239,7 @@
* lisp/net/eudc.el (eudc-get-email): Prompt for surname.
* lisp/net/eudc.el (eudc-get-phone): Likewise.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix preservation of the original value of PRIMARY after dropping on xterm
@@ -45257,7 +45257,7 @@
* src/xterm.h: Update prototypes.
-2022-06-29 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Prevent field overlap when query form is reset
@@ -45265,11 +45265,11 @@
erasing buffer. Remove widget-after-change from
after-change-functions.
-2022-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/emacs/buffers.texi (Indirect Buffers): Mention modification hook quirk
-2022-06-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix hscrolling of :align-to when display-line-numbers is in effect
@@ -45284,11 +45284,11 @@
line number was not yet produced for the current glyph row.
(Bug#56176)
-2022-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/vc/diff-mode.el (diff--font-lock-prettify): Fix `diff-buffers` case
-2022-06-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
More robust `gnu` pattern (bug#56249)
@@ -45296,7 +45296,7 @@
Don't allow spaces in the file names, to avoid false matches.
Don't allow ad-hoc spaces preceding the program name either.
-2022-06-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Complete transition to rx for compilation `gnu` pattern
@@ -45304,14 +45304,14 @@
Change from a mixture of traditional regexp syntax and rx,
to make intentions clearer.
-2022-06-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/emacs-lisp/rx.el: Indent some rx constructs correctly.
This includes group-n, submatch-n, =, >=, ** and repeat, whose first 1
or 2 arguments are special.
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -45321,20 +45321,20 @@
# ChangeLog.3
# etc/AUTHORS
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
bf137fdbd2 ; * admin/make-tarball.txt: Small clarification.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling invalidated selection requests
* src/xselect.c (x_handle_selection_request): Correctly punt
when !dpyinfo.
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Bump Emacs version to 28.1.90
@@ -45343,14 +45343,14 @@
* msdos/sed2v2.inp:
* nt/README.W32: Bump Emacs version to 28.1.90.
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update ChangeLog and AUTHORS for 28.1.90 pretest
* ChangeLog.3:
* etc/AUTHORS: Update.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some bugs found while testing drag-and-drop
@@ -45360,7 +45360,7 @@
`dnd-indicate-insertion-point'. Bug found testing with "JX
Application Framework".
-2022-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(cl--generic-compiler): Revert last change
@@ -45380,14 +45380,14 @@
`cl-generic--oclosure-generalizer` for consistency with all
other generalizers.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update dnd-tests.el to make sure remote files are removed when Emacs quits
* test/lisp/dnd-tests.el (dnd-tests-begin-drag-files)
(dnd-tests-begin-file-drag): Test value of `kill-emacs-hook'.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement starting X Direct Save (XDS) drops
@@ -45415,7 +45415,7 @@
is set.
* src/xterm.h: Update prototypes.
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make two text-property-search tests easier to read
@@ -45424,14 +45424,14 @@
(text-property-search-backward/point-at-end): Rewrite to make tests
easier to read.
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Minor cleanup in dired-x-bind-find-file
* lisp/dired-x.el (dired-x-bind-find-file): Use 'format-message'
and 'keymap-set'.
-2022-06-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the eval-defun doc string
@@ -45439,7 +45439,7 @@
command actually does w.r.t. finding a form to evaluate
(bug#47747).
-2022-06-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that In-Reply-To is saved in drafts in Message
@@ -45448,13 +45448,13 @@
(message-setup-1): Pre-generate In-Reply-To so that it'll be saved
in drafts (bug#47639).
-2022-06-29 Tom Gillespie <tgbugs@gmail.com>
+2023-04-15 Tom Gillespie <tgbugs@gmail.com>
test/lisp/progmodes/python-tests.el: add test for nav end of block
Add test for python-nav-end-of-block to prevent regression of bug#56271.
-2022-06-29 Tom Gillespie <tgbugs@gmail.com>
+2023-04-15 Tom Gillespie <tgbugs@gmail.com>
lisp/progmodes/python.el (python-nav-end-of-block): prevent infinite loop
@@ -45464,7 +45464,7 @@
then it is possible for python-nav-end-of-block to enter an infinite
loop. (bug#56271)
-2022-06-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation-mode parsing of file names in Gradle errors
@@ -45472,11 +45472,11 @@
(compilation-error-regexp-alist-alist): Fix parsing of file names
in Gradle output (bug#56249).
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/pgtk-dnd.el (pgtk-dnd-use-offix-drop): Remove extra variable.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up failable requests in more places
@@ -45488,7 +45488,7 @@
(x_check_errors, x_had_errors_p): Clean up failable requests
here.
-2022-06-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle be:actions field in Haiku DND messages
@@ -45500,14 +45500,14 @@
(haiku-drag-and-drop): Use action returned by that function.
(x-begin-drag): Replace hard-coded enumerator.
-2022-06-29 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Ensure correct toggle menu item display
* lisp/menu-bar.el (menu-bar-make-toggle-command): Call
force-mode-line-update. (Bug#56155)
-2022-06-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -45518,7 +45518,7 @@
# Conflicts:
# etc/NEWS
-2022-06-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reported problem with drag-and-drop inside VirtualBox
@@ -45548,13 +45548,13 @@
(dnd-tests-begin-file-drag, dnd-tests-begin-drag-files): Set new
variable to nil during tests.
-2022-06-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous maintaining.texi change
* doc/emacs/maintaining.texi (Looking Up Identifiers): Fix typo.
-2022-06-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el (isearch-delete-char): Improve fix for bug#52248.
@@ -45562,13 +45562,13 @@
still close unnecessary overlays for the previous position.
(isearch-close-unnecessary-overlays): Rename arg BEG for consistency.
-2022-06-28 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
trouble.texi (Long Lines): Fix typo.
* doc/emacs/trouble.texi (Long Lines): Fix typo (bug#56283).
-2022-06-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Put the obsoletion earlier in the *Help* buffer
@@ -45578,7 +45578,7 @@
vital information.
(describe-variable): Ditto (bug#56251).
-2022-06-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve sxhash-equal documentation
@@ -45586,14 +45586,14 @@
sxhash-equal is for and what the caveats are.
* src/fns.c (Fsxhash_eql, Fsxhash_equal): Clarify doc string.
-2022-06-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using define-short-documentation-group without loading shortdoc
* lisp/emacs-lisp/shortdoc.el (define-short-documentation-group):
Allow using without loading shortdoc.el (bug#56260).
-2022-06-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp shall not trap unrelated D-Bus errors
@@ -45602,14 +45602,14 @@
(tramp-gvfs-dbus-event-vector): Fix docstring.
(tramp-gvfs-maybe-open-connection): Do not set it globally. (Bug#56162)
-2022-06-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Looking Up Identifiers in the manual
* doc/emacs/maintaining.texi (Looking Up Identifiers): Clarify the
text about C-M-, (bug#56261).
-2022-06-28 Zachary Kanfer <zkanfer@gmail.com>
+2023-04-15 Zachary Kanfer <zkanfer@gmail.com>
Add new command `rename-visited-file'
@@ -45617,7 +45617,7 @@
* lisp/files.el (rename-visited-file): New command (bug#56229).
-2022-06-28 Jim Meyering <meyering@fb.com> (tiny change)
+2023-04-15 Jim Meyering <meyering@fb.com> (tiny change)
Fix configure.ac quoting of AC_CHECK_LIB's 2nd arg
@@ -45629,28 +45629,28 @@
* configure.ac: Quote the second arg of each AC_CHECK_LIB invocation.
(Bug#56272)
-2022-06-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adjust x-clipboard-yank for recent selection ownership changes
* lisp/term/x-win.el (x-clipboard-yank): Don't own CLIPBOARD
inside kill-new.
-2022-06-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Fx_begin_drag
* src/xfns.c (Fx_begin_drag): Use FOR_EACH_TAIL instead of
iterating manually.
-2022-06-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Automatically detect cyclic lists in some Haiku functions
* src/haikuselect.c (haiku_lisp_to_message): Use FOR_EACH_TAIL
to iterate over message data.
-2022-06-28 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix hash table function return values in manual
@@ -45658,7 +45658,7 @@
values of puthash and clrhash with their respective
docstrings (bug#55562).
-2022-06-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -45667,29 +45667,29 @@
# Conflicts:
# etc/NEWS
-2022-06-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling "C-S-u" and such when using XKB
* src/xterm.c (handle_one_xevent): Don't rely on XKB for
consumed modifiers.
-2022-06-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Always use XKB to translate keysyms when no input method is available
* src/xterm.c (handle_one_xevent) [HAVE_XKB]: Also use XKB to
handle core KeyPress events.
-2022-06-27 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
* lisp/subr.el (plistp): Simplify (bug#47427).
-2022-06-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
"make clean" etc. problem now fixed on Solaris.
-2022-06-27 Gerd Möllmann <gerd@gnu.org>
+2023-04-15 Gerd Möllmann <gerd@gnu.org>
Prevent regexp cache entries from being GC'ed in more cases
@@ -45697,7 +45697,7 @@
(fast_c_string_match_ignore_case): Use freeze_pattern.
(Bug#56108)
-2022-06-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix deletion of composed text
@@ -45706,13 +45706,13 @@
'lgstring-glyph-boundary' to find where to end the deletion inside
an automatic composition. (Bug#56237)
-2022-06-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some missed Fplist_put adjustments in src/w32.c
* src/w32.c (serial_configure): Adjust some missed Fplist_put renames.
-2022-06-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new type predicate plistp
@@ -45720,14 +45720,14 @@
referred to in the error message from plist-put: "Debugger
entered--Lisp error: (wrong-type-argument plistp (a b c))".
-2022-06-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust plist calls in .m files
* src/nsterm.m (mod_of_kind):
* src/nsimage.m (ns_load_image): Adjust plist calls in .m files.
-2022-06-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow plist-get/plist-put/plist-member to take a comparison function
@@ -45806,18 +45806,18 @@
(test-plist): Remove lax-plist tests, since semantics have changed
(they no longer error out on cycles).
-2022-06-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entry about C-h v font locking
-2022-06-27 hokomo <hokomo@airmail.cc> (tiny change)
+2023-04-15 hokomo <hokomo@airmail.cc> (tiny change)
Fix detecting dotted pairs in icalendar-export-region
* lisp/calendar/icalendar.el (icalendar-export-region): Fix detecting
dotted pairs (bug#56241).
-2022-06-27 Allen Li <darkfeline@felesatra.moe>
+2023-04-15 Allen Li <darkfeline@felesatra.moe>
find-dired: Add find-dired-with-command
@@ -45833,7 +45833,7 @@
(find-dired-with-command): New command.
(find-dired): Rewritten with new command.
-2022-06-27 Allen Li <darkfeline@felesatra.moe>
+2023-04-15 Allen Li <darkfeline@felesatra.moe>
find-dired: Factor out find-dired--escaped-ls-option
@@ -45842,20 +45842,20 @@
* lisp/find-dired.el (find-dired--escaped-ls-option): New function.
(find-dired): Use find-dired--escaped-ls-option.
-2022-06-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix off-by-one error in Fsignal_names
* src/process.c (Fsignal_names): Fix off-by-one error.
-2022-06-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use correct background for image mask color on Haiku
* src/haikuterm.c (haiku_draw_image_glyph_string): Use adjusted
background for image mask.
-2022-06-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement stipples for images on Haiku
@@ -45868,7 +45868,7 @@
(haiku_draw_glyph_string): Fix conditions under which
row->stipple_p is set.
-2022-06-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -45876,36 +45876,36 @@
c66b90a534 Mention Solaris 10 'make clean' and 'make check'
ade34cf821 Mention further crashes on Solaris 10
-2022-06-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
a9d338818a ; elec-pair: Fix docstring typo (bug#56233)
-2022-06-26 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.4-3-g6dc785
-2022-06-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly convert event state in more places
* src/xterm.c (handle_one_xevent): Use `xi_convert_event_state'
to handle synthetic and xwidget button events.
-2022-06-26 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Mention Solaris 10 'make clean' and 'make check'
Mention further crashes on Solaris 10
-2022-06-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Minor clean up of previous Fsignal_names patch
* src/process.c (Fsignal_names): Clean up code slightly.
-2022-06-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `signal-process' allow completing over signal names
@@ -45914,14 +45914,14 @@
the signal names (bug#56239).
(Fsignal_names): New function.
-2022-06-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Font-lock variable values in *Help*
* lisp/help-fns.el (describe-variable): Font-lock the variable
value (bug#47363).
-2022-06-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Optimise away functions in for-effect context
@@ -45933,25 +45933,25 @@
point. In particular, their unwind function argument should be
not optimised for effect since it's a function.
-2022-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(oclosure-test-limits): Fix test failure when interpreted
* test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test-limits):
Make sure we bind `byte-compile-debug` dynamically.
-2022-06-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix re-composition under 'composition-break-at-point'
* src/xdisp.c (try_window_id): Disable this optimization if
'composition-break-at-point' is non-nil.
-2022-06-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/simple.el (delete-forward-char): Fix bug #56237.
-2022-06-26 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
When closing an Eshell process target, send EOF three times
@@ -45963,7 +45963,7 @@
This patch is adapted by one from Ken Brown, who uncovered the reason
for this bug (bug#56025).
-2022-06-26 Kjartan Óli Ágústsson <kjartanoli@outlook.com>
+2023-04-15 Kjartan Óli Ágústsson <kjartanoli@outlook.com>
Reconvert EPUB buffers when user CSS is changed
@@ -45974,7 +45974,7 @@
(doc-view--epub-stylesheet-watcher): Add defvar
(doc-view-custom-set-epub-user-stylesheet): Add defun (bug#55825).
-2022-06-26 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make <mouse-2> in mode line more careful as well
@@ -45982,7 +45982,7 @@
windows if the user didn't move the cursor off the
mode-line (bug#56198).
-2022-06-26 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Make <mouse-3> in the mode line more careful
@@ -45990,7 +45990,7 @@
the user hasn't moved point out of the mode line before releasing
the button (bug#56198).
-2022-06-26 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Avoid positional arguments to define-minor-mode
@@ -45998,7 +45998,7 @@
replace its old positional arguments. Starting with Emacs-28.1
a warning will be omitted if positional arguments are still used.
-2022-06-26 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Make Eshell globs ending in "/" match directories only
@@ -46014,7 +46014,7 @@
* etc/NEWS: Announce this change (bug#56227).
-2022-06-26 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Convert Eshell globs ahead of time instead of doing it repeatedly
@@ -46026,7 +46026,7 @@
* test/lisp/eshell-em-glob-tests.el (em-glob-test/match-dot-files):
New test.
-2022-06-26 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Optionally signal an error if an Eshell predicate fails to match anything
@@ -46042,7 +46042,7 @@
* doc/misc/eshell.texi (Bugs and ideas): Remove todo entry about this
change.
-2022-06-26 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix typo in signal-process-functions
@@ -46050,31 +46050,31 @@
to correct default variable in the ELisp manual.
* etc/NEWS: The same for the NEWS entry (bug#56234).
-2022-06-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update term-char-mode doc string
* lisp/term.el (term-char-mode): Update doc string.
-2022-06-26 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Fix Bug#56110 (switching from line-mode to char-mode)
* lisp/term.el (term-char-mode): Make `add-function' override the
correct place (the buffer local variable `term-input-sender').
-2022-06-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a recent Lisp mode filling test failure
* lisp/emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Restore the
"fill first line separately" logic.
-2022-06-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix typo in use-package docstring
-2022-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/syntax.el: Rework the handling of nested calls.
@@ -46096,7 +46096,7 @@
Don't bind `syntax-propertize--inhibit-flush` any more.
(syntax-ppss): Set `syntax-ppss--updated-cache` when applicable.
-2022-06-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't create HOME if it doesn't exist
@@ -46104,21 +46104,21 @@
doesn't exist (bug#47298). This returns us to Emacs 26.3
behaviour here.
-2022-06-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix narrowing problem in tramp-debug-buffer-command-completion-p
* lisp/net/tramp.el (tramp-debug-buffer-command-completion-p):
Respect narrowing. (Bug#56225)
-2022-06-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some more common predefined atoms
* src/xterm.c (x_intern_cached_atom, x_get_atom_name): Add
DRAWABLE, BITMAP, COLORMAP, CURSOR and FONT.
-2022-06-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix ispell-word on colorless TTY frames
@@ -46126,7 +46126,7 @@
(ispell-highlight-spelling-error-generic): Keep marker position of
END intact, deletion of text notwithstanding. (Bug#56219)
-2022-06-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop catching errors for some requests
@@ -46135,7 +46135,7 @@
`x_ignore_errors_for_next_request'. This results in a healthy
~30% speedup for the involved requests.
-2022-06-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle errors while sending client events asynchronously
@@ -46155,14 +46155,14 @@
(struct x_display_info): New field `failable_requests' and
associated next pointer.
-2022-06-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port ‘make clean’ to Solaris 10
* test/Makefile.in (CLEAN_XML_FILES): New macro.
(clean): Use it.
-2022-06-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port distribution tarball to Solaris 10
@@ -46175,14 +46175,14 @@
many diagnostics like “tar: ././@LongLink: typeflag 'L' not
recognized, converting to regular file”.
-2022-06-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port test SUBDIRS to Solaris 10
* test/Makefile.in (SUBDIRS): Port to traditional ‘find’, which
lacks -path.
-2022-06-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify Oracle Studio re xterm.c
@@ -46207,7 +46207,7 @@
to struct _XIM {}, pointer to char, pointer to char) returning
void”.
-2022-06-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify Oracle Studio re print_vectorlike
@@ -46217,7 +46217,7 @@
function(pointer to void) returning void”. Admittedly this is
not strictly conforming C code even with the cast.
-2022-06-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify Oracle Studio re Time_to_position
@@ -46225,14 +46225,14 @@
pacify Oracle Studio 12.6’s “warning: initializer will be
sign-extended”.
-2022-06-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `M-q' work on the first line of a multi-line string again
* lisp/emacs-lisp/lisp-mode.el (lisp-fill-paragraph): Exclude the
quote marks from the region so that filling works (bug#56197).
-2022-06-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update input_pending after deferring selection requests
@@ -46240,7 +46240,7 @@
moved, update input_pending. Bug found calling
`input-pending-p' inside the DND movement function.
-2022-06-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New command recentf-open
@@ -46253,13 +46253,13 @@
* doc/emacs/files.texi (File Conveniences): Update documentation.
-2022-06-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix subr-x fix that was missed when re-reverting
* lisp/replace.el (require): Fix subr-x build warning.
-2022-06-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't error out on invalid literal key substitutions
@@ -46281,7 +46281,7 @@
(help-tests-substitute-command-keys/literal-key-sequence-ignore-invalid):
New test.
-2022-06-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-fix build warnings about subr-x defsubsts
@@ -46295,7 +46295,7 @@
with a build problem where files.el is using the defsubst, but
requiring subr-x.el at compile time leads to load errors.
-2022-06-25 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Avoid recording passwords' chars
@@ -46305,7 +46305,7 @@
* lisp/subr.el (read-passwd): Use `inhibit--record-char' to
inhibit passwords recording.
-2022-06-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor optimization of the "abort redisplay" feature
@@ -46318,7 +46318,7 @@
'update_redisplay_ticks' if aborting too-long redisplay is
disabled. (Bug#45898)
-2022-06-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement image transform smoothing on Haiku
@@ -46329,14 +46329,14 @@
* src/haikuterm.c (haiku_draw_image_glyph_string):
* src/image.c (image_set_transform): Set it.
-2022-06-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix false positive due to 'max-redisplay-ticks' feature
* src/xdisp.c (redisplay_internal): Reset the tick count at end of
redisplay cycle. (Bug#45898)
-2022-06-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix non-XI2 build
@@ -46344,7 +46344,7 @@
passing it to RandR functions. Also, update out of date
comment.
-2022-06-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement "flip" image transforms on Haiku
@@ -46366,13 +46366,13 @@
* src/image.c (image_set_transform): Implement using affine
transforms on Haiku too.
-2022-06-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
1f6750b53a Avoid treating number as an enum in the org manual
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix some byte-compilation warnings about subr-x"
@@ -46380,7 +46380,7 @@
This led to build failures when doing bootstraps.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow toggling completion modes for `M-x' with `M-X'
@@ -46399,35 +46399,35 @@
This code is based on a patch by Felician Nemeth
<felician.nemeth@gmail.com>.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make ido sorting respect ido-case-fold
* lisp/ido.el (ido-file-lessp):
(ido-file-extension-lessp): Respect ido-case-fold (bug#47127).
-2022-06-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid treating number as an enum in the org manual
* doc/misc/org.org (The Agenda Dispatcher): Avoid treating number as
enum.
-2022-06-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make url-tramp-convert-tramp-to-url more robust
* lisp/url/url-tramp.el (url-tramp-convert-tramp-to-url):
Prevent errors from not existing Tramp methods.
-2022-06-24 Platon Pronko <platon7pronko@gmail.com> (tiny change)
+2023-04-15 Platon Pronko <platon7pronko@gmail.com> (tiny change)
Fix logic error in Tramp, setting file ownership
* lisp/net/tramp.el (tramp-skeleton-write-region): Fix logic in
changing file ownership. (Bug#56180)
-2022-06-24 Timo Taipalus <timo@taipalus.cc>
+2023-04-15 Timo Taipalus <timo@taipalus.cc>
Add support for image flipping
@@ -46443,7 +46443,7 @@
* doc/lispref/display.texi (Image Descriptors): Document :flip
(bug#47095).
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some byte-compilation warnings about subr-x
@@ -46453,14 +46453,14 @@
* lisp/isearch.el (require):
* lisp/files.el (require): Require subr-x when compiling.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix imenu popup syntax
* lisp/imenu.el (imenu--create-keymap): Fix menu syntax
(bug#56185).
-2022-06-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -46469,7 +46469,7 @@
# Conflicts:
# doc/misc/modus-themes.org
-2022-06-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix assertion violation when 'max-redisplay-ticks' is set too low
@@ -46477,11 +46477,11 @@
optimization in 'update_window' when redisplay of a window is
aborted. (Bug#56184)
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entry about kill-buffer change
-2022-06-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Bytecode opcode comments update
@@ -46494,7 +46494,7 @@
Bsave_current_buffer_OBSOLETE and Bsave_current_buffer_1 to
Bsave_current_buffer, reflecting the state since 1996.
-2022-06-24 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Reduce memory footprint of eglot--{}
@@ -46505,13 +46505,13 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/978
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update seq.el comment
* lisp/emacs-lisp/seq.el: Update comment.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow `kill-buffer' query to save the buffer first
@@ -46524,7 +46524,7 @@
user.
(syms_of_buffer): Define symbol.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Preload seq
@@ -46533,7 +46533,7 @@
seq being loaded -- for instance, visiting a .txt file or an .el
file, so this will speed up Emacs usage for basically everybody.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow read-multiple-choice to do long-form answers
@@ -46545,7 +46545,7 @@
(read-multiple-choice--short-answers): Refactored out from the
main function.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix cl-generic bootstrap problems
@@ -46568,7 +46568,7 @@
`cl-defmethod' in pre-loaded files, and this change fixes that (but
possibly not in the most self-evidently correct way).
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make warning about require/autoload while bootstrapping not error out
@@ -46577,14 +46577,14 @@
outputting the error about not being able to autoload/require
while bootstrapping.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make debug-early-backtrace more resilient
* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Allow
outputting backtraces during bootstrap.
-2022-06-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling of mouse motion across screens during drag-and-drop
@@ -46592,14 +46592,14 @@
(handle_one_xevent): Fill empty target if the event didn't come
from the same screen.
-2022-06-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous nnimap header fetching change
* lisp/gnus/nnimap.el (nnimap-retrieve-headers): Ensure that the
splitting works.
-2022-06-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge branch 'abort-redisplay'
@@ -46647,7 +46647,7 @@
* etc/NEWS: Announce 'max-redisplay-ticks'.
-2022-06-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve grabbing detection with multiple master devices (MPX)
@@ -46656,7 +46656,7 @@
* src/xterm.c (x_have_any_grab): New function.
(x_create_terminal): Define hook on XI2 builds.
-2022-06-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify XI event state conversion
@@ -46665,66 +46665,66 @@
(handle_one_xevent): Reduce duplicate code for converting XI
state and button state into X state.
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/browse-url.el: Doc fix; recommend keymap-* functions.
* lisp/recentf.el (recentf-auto-cleanup): Clarify docstring.
-2022-06-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove unused function in bytecomp.el
* lisp/emacs-lisp/bytecomp.el (byte-compile-delete-first): Remove.
-2022-06-23 Gerd Moellmann <gerd.moellmann@gmail.com>
+2023-04-15 Gerd Moellmann <gerd.moellmann@gmail.com>
Save desktop-save-mode when changed from menu
* lisp/menu-bar.el (menu-bar-options-save): Save desktop-save-mode
(bug#56156).
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Tag shortcut commands for recentf-dialog-mode
* lisp/recentf.el (recentf--shortcuts-keymap): Add interactive mode
tags for 'recentf-dialog-mode' specific commands.
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap and keymap-set in recentf.el
* lisp/recentf.el (recentf-mode-map): Prefer defvar-keymap.
(recentf--shortcuts-keymap): Prefer keymap-set.
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use shortened filenames in recentf-mode
* lisp/recentf.el (recentf-filename-handlers): Set to
'abbreviate-file-name' to get shortened names by default. (Bug#56123)
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Revert "Allow shortening filenames in recentf-mode menu"
This reverts commit 32906819addde1aa952d4718699d332d3a58b004.
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Revert "Use short file names by default in recentf menu"
This reverts commit ec9228eb81c0a89b18480dfff18cc9afdc3d0884.
-2022-06-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that nnimap doesn't send too long lines to the server
* lisp/gnus/nnimap.el (nnimap-retrieve-headers): Don't send
too-long lines to the server (bug#56138).
-2022-06-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to last change
@@ -46732,14 +46732,14 @@
when it is GdkAtom.
* src/pgtkterm.c (drag_leave): Initialize inev.ie.
-2022-06-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make DND from other GTK programs work on Wayland
* lisp/pgtk-dnd.el (pgtk-dnd-handle-gdk): Try to keep the
selection contents in extra-data during a motion event.
-2022-06-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dropping more data types on PGTK
@@ -46782,13 +46782,13 @@
* src/pgtkterm.h: Update prototypes, fix prototype coding style.
-2022-06-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
a3f294b37f Improve last change in autotype.texi
-2022-06-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't send XdndPosition before XdndStatus arrives
@@ -46798,7 +46798,7 @@
(x_dnd_begin_drag_and_drop): Clear new flags.
(handle_one_xevent): Respect those flags.
-2022-06-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update device-specific grab during drag-and-drop
@@ -46806,14 +46806,14 @@
(handle_one_xevent): Set device if DND is in progress and update
device->grab.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make recentf-elements obsolete
* lisp/recentf.el (recentf-elements): Make obsolete. Update
callers.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Convert several defsubst to defun in recentf.el
@@ -46830,7 +46830,7 @@
(recentf-show-basenames-descending): Change from defsubst to
defun.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Bind C-c C-c and C-c C-k in recentf-dialog-mode
@@ -46841,14 +46841,14 @@
(recentf-dialog-mode): Mark as non-interactive.
(recentf-edit-list): Display key binding.
-2022-06-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix dnd-tests-open-remote-url on EMBA
* test/lisp/dnd-tests.el (dnd-tests-open-remote-url): Check for
ftp client.
-2022-06-22 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
duplicate-line: fix optional argument and add test (bug#46621)
@@ -46859,7 +46859,7 @@
* lisp/misc.el (duplicate-line): Don't crash if called with no argument.
* test/lisp/misc-tests.el (misc--duplicate-line): New test.
-2022-06-22 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (strz): Null terminate fixed-length strings if there is room
@@ -46870,7 +46870,7 @@
* test/lisp/emacs-lisp/bindat-tests.el (bindat-test--str-strz-prealloc):
Update tests.
-2022-06-22 Gerd Moellmann <gerd.moellmann@gmail.com>
+2023-04-15 Gerd Moellmann <gerd.moellmann@gmail.com>
Prevent GC of window referenced from EmacsScroller
@@ -46879,14 +46879,14 @@
* src/alloc.c (garbage_collect) [MAVE_NS]: Call mark_nsterm.
(Bug#56095)
-2022-06-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve last change in autotype.texi
* doc/misc/autotype.texi (Autoinserting): Fix wording. Suggested
by Richard Stallman <rms@gnu.org>.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer Emacs mouse button event names to XEmacs names
@@ -46895,47 +46895,47 @@
(ediff-draw-dir-diffs, ediff-redraw-registry-buffer): Prefer Emacs
mouse button event names to XEmacs names.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/bs.el (bs-mode-map): Prefer defvar-keymap.
-2022-06-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix non-system-malloc build
* src/xterm.c (x_gc_free_ext_data_private): New function.
(x_gc_get_ext_data): Set it as the private data free function.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Do interactive mode tagging in edmacro.el
* lisp/edmacro.el (edmacro-finish-edit, edmacro-insert-key):
Add interactive mode tag for edmacro-mode.
-2022-06-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use short file names by default in recentf menu
* lisp/recentf.el (recentf-menu-filter): Set the default to
'recentf-show-abbreviated' to get short file names. (Bug#56123)
-2022-06-22 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Don't drop existing escape char in eshell
* lisp/eshell/em-term.el (eshell-exec-visual): Don't drop existing
escape char.
-2022-06-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_scroll_bar_note_movement): Fix no-toolkit build.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention the new Tetris user option
-2022-06-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Port x-selection-timeout to PGTK
@@ -46944,7 +46944,7 @@
selection timeout.
(syms_of_pgtkselect): New variable `pgtk-selection-timeout'.
-2022-06-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix setting user time for mouse movement events
@@ -46956,14 +46956,14 @@
* src/xterm.h (struct x_display_info): New field
`last_mouse_movement_time_send_event'.
-2022-06-21 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
A trivial optimization and a formatting fix
* lisp/subr.el (internal--compiler-macro-cXXr): Re-use `head' for `n'.
Fix indentation and line length.
-2022-06-21 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Merge from origin/emacs-28
@@ -46972,14 +46972,14 @@
3f66e2a903 * lisp/repeat.el (repeat-mode): Fix message format.
137539c125 Clarify autotype.texi text slightly
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix logic in previous Tetris change
* lisp/play/tetris.el (tetris-new-shape): Fix logic in previous
change.
-2022-06-21 Timothee Denizou <timothee.denizou@epita.fr> (tiny change)
+2023-04-15 Timothee Denizou <timothee.denizou@epita.fr> (tiny change)
Allow different randomization of shapes in Tetris
@@ -46991,14 +46991,14 @@
A piece is selected from the bag and removed each time we want a piece
When the bag is empty, refill the bag with the seven piece and shuffle it
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix shr--set-target-ids test for empty buffer
* lisp/net/shr.el (shr--set-target-ids): Fix the check for an
empty buffer (which may be narrowed).
-2022-06-21 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Fix autoload generation of iter-defun forms
@@ -47008,7 +47008,7 @@
Add `iter-defun' and `cl-iter-defun' to the list of "complex cases"
that are macro-expanded and recursed on.
-2022-06-21 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Document and test 'no-byte-compile' behavior.
@@ -47019,7 +47019,7 @@
* test/lisp/emacs-lisp/bytecomp-resources/no-byte-compile.el: New test
file.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix too-long ediff defface doc strings
@@ -47027,7 +47027,7 @@
(ediff-even-diff-Ancestor):
(ediff-odd-diff-Ancestor): Fix too-long doc strings.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check defface doc strings
@@ -47039,7 +47039,7 @@
(byte-compile-file-form-custom-declare-face): Add doc string
checking for defface.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Untabify doc strings before displaying in Customize
@@ -47047,11 +47047,11 @@
doc string since we'll be indenting it when displaying it (which
makes the tabs not align properly).
-2022-06-21 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Two typos captured on OpenBSD/clang
-2022-06-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recent change to xlwmenu.c
@@ -47062,7 +47062,7 @@
(XlwMenuDestroy):
(pop_up_menu): Record if the keyboard was grabbed.
-2022-06-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rewrite PGTK selection code from scratch
@@ -47101,14 +47101,14 @@
(enum selection_input_event): New struct. New macros for
accessing its fields.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous -batch change for gc-cons-percentage
* src/emacs.c (main): Reset the default for gc-cons-percentage in
interactive Emacs.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Increase gc-cons-percentage in -batch Emacs
@@ -47117,7 +47117,7 @@
* src/emacs.c (main): Use a gc-cons-percentage of 1.0 in
noninteractive Emacsen.
-2022-06-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp code cleanup
@@ -47126,7 +47126,7 @@
Improve handling of "process-name" and "process-buffer" connection
properties.
-2022-06-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Allow shortening filenames in recentf-mode menu
@@ -47136,39 +47136,39 @@
(recentf-menu-filter): Allow setting user option to new value
'recentf-show-abbreviated'.
-2022-06-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/repeat.el (repeat-mode): Fix message format.
-2022-06-21 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix nested defuns handling in `python-nav-beginning-of-defun'
* lisp/progmodes/python.el (python-nav--beginning-of-defun): Fix
handling of nested defuns (bug#56105).
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous describe-key change
* lisp/help.el (describe-function-orig-buffer): Ensure we bind
dynamically.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make describe-key do doc string command key substitution again
* lisp/help.el (describe-key): Do doc string command key
substitution (bug#56106).
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix fontification in describe-key
* lisp/help.el (describe-key): Use insert instead of princ so that
text properties on the key descriptions survive.
-2022-06-21 Kevin Brubeck Unhammer <unhammer@fsfe.org>
+2023-04-15 Kevin Brubeck Unhammer <unhammer@fsfe.org>
Speed up mail-extr in some configurations
@@ -47176,21 +47176,21 @@
(mail-extract-address-components): The buffer is already in
fundamental-mode, so don't re-enable it (bug#56113).
-2022-06-21 Earl Hyatt <okamsn@protonmail.com>
+2023-04-15 Earl Hyatt <okamsn@protonmail.com>
Clarify autotype.texi text slightly
* doc/misc/autotype.texi (Autoinserting): Make text slightly
clearer (bug#56118).
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename recently-introduced dired-omit-line-regexp user option
* lisp/dired-x.el (dired-omit-lines, dired-omit-mode): Rename
dired-omit-line-regexp to dired-omit-lines for consistency.
-2022-06-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make Lucid menus work from the keyboard also when uninstalled
@@ -47198,7 +47198,7 @@
* src/keyboard.c (syms_of_keyboard): New variable (bug#46990).
-2022-06-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow toggling antialiasing inside the Haiku font dialog
@@ -47221,20 +47221,20 @@
FSPEC_ANTIALIAS.
(Fx_select_font): Update accordingly.
-2022-06-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
2eb738f2b8 Support builds configured with a separate --bindir
cf4c204df8 * doc/misc/eww.texi (Overview, Basics): Fix typos.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add test for bug#56078 fix
* test/lisp/dnd-tests.el (dnd-tests-open-remote-url): New test.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove selection requests on the keyboard buffer when closing display
@@ -47246,7 +47246,7 @@
while the clipboard manager was sending an unreasonably high
number of requests.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Move selection delayed message to a better location
@@ -47257,18 +47257,18 @@
(x_get_foreign_selection): Add an atimer that displays the
message after a while.
-2022-06-20 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
* lisp/edmacro.el: Add missing (require 'seq).
-2022-06-20 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
term-set-escape-char: Remove old binding from term-raw-escape-map
* lisp/term.el (term-set-escape-char): When replacing the escape char,
remove the binding of the old escape char in term-raw-escape-map.
-2022-06-20 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Fix potential (goto-char nil) in byte-compile-warning-prefix
@@ -47276,7 +47276,7 @@
'or' form involving OFFSET with simply OFFSET. This prevents OFFSET from
possibly being nil in the first branch of the containing `if' form.
-2022-06-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support builds configured with a separate --bindir
@@ -47286,7 +47286,7 @@
This is needed to support builds with a separate --bindir
configure-time option and native-compilation. (Bug#55741)
-2022-06-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Issue a message if getting a selection takes a long time
@@ -47294,14 +47294,14 @@
selection takes a long time, issue a message after one second
(bug#46935).
-2022-06-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt url-tramp-tests
* test/lisp/url/url-tramp-tests.el (url-tramp-test-convert-url-to-tramp)
(url-tramp-test-convert-tramp-to-url): Adapt tests.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix x-selection-timeout if some keyboard input arrives while waiting
@@ -47312,26 +47312,26 @@
* src/xselect.c (x_get_foreign_selection): Add more debugging
code.
-2022-06-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in hi-lock.el
* lisp/hi-lock.el: Prefer keymap-set in documentation.
(hi-lock-map): Prefer defvar-keymap.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix ns-reg-to-script definition
* src/nsfont.m (syms_of_nsfont): Fix definition.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix running temacs on Haiku
* src/emacs.c (main): Run init_haiku_select at the right place.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix initialization of Haiku font driver
@@ -47343,7 +47343,7 @@
(syms_of_haikufont_for_pdumper): Register font driver globally.
(syms_of_haikufont): Call it in a pdumper hook.
-2022-06-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix problems with Tramp FTP and URL handler mode
@@ -47356,21 +47356,21 @@
* lisp/url/url-tramp.el (url-tramp-convert-url-to-tramp)
(url-tramp-convert-tramp-to-url): Make them more robust.
-2022-06-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore pinch events from the wrong window
* src/xterm.c (handle_one_xevent): Use x_window_to_frame to find
frames for pinch events.
-2022-06-20 David Ponce <da_vid@orange.fr>
+2023-04-15 David Ponce <da_vid@orange.fr>
Make images found through `find-image' be handled like `create-image'
* lisp/image.el (find-image): Use `create-image' so that we get
auto-scaling of images (bug#40978).
-2022-06-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using :width/:height as normal with xbm images
@@ -47381,11 +47381,11 @@
(xbm_image_p): Allow passing in :width/:height for display.
(xbm_load): Use :data-width/:data-height.
-2022-06-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* doc/misc/eww.texi (Overview, Basics): Fix typos.
-2022-06-20 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
whitespace: Redraw if indentation or line length changes
@@ -47399,7 +47399,7 @@
(whitespace--watched-vars): List of variables to watch.
(whitespace-unload-function): Un-watch the variables. (bug#56103).
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect `:antialias' on Haiku
@@ -47416,32 +47416,32 @@
antialiasing.
(syms_of_haikufont): New defsym `:indices'.
-2022-06-19 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
* src/treesit.c (make_ts_parser): Initialize timestamp field.
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't generate superfluous wheel events during drag and drop
* src/xterm.c (handle_one_xevent): Only set user time and don't
create wheel events if DND is in progress.
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix earlier change in xfaces.c for antialiasing in the mode line
* src/xfaces.c (realize_gui_face): Don't put QCantialias in
empty spec if it doesn't exist in the original.
-2022-06-19 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
xref-goto-xref: Set input focus in addition to selecting window
* lisp/progmodes/xref.el (xref--show-location): Set input focus in
addition to selecting displayed window (Bug#55983).
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow removing quotes around links in *Help* buffers
@@ -47449,21 +47449,21 @@
* lisp/help-mode.el (help-clean-buttons): New user option
(help-xref-button): Use it.
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak quoting in help-fns--compiler-macro
* lisp/help-fns.el (help-fns--compiler-macro): Fix quotes in help
text.
-2022-06-19 Pip Cet <pipcet@gmail.com>
+2023-04-15 Pip Cet <pipcet@gmail.com>
Fix bytecompiler infloop compiling infloops
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): Don't apply
optimization if we can't change anything (bug#46906).
-2022-06-19 Drew Adams <drew.adams@oracle.com>
+2023-04-15 Drew Adams <drew.adams@oracle.com>
Let `dired-omit-mode' match lines, as well as file names
@@ -47473,7 +47473,7 @@
(bug#46882).
(dired-omit-mode, dired-omit-expunge): Use the new user option.
-2022-06-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update font scaling documentation to not talk about "face height"
@@ -47489,7 +47489,7 @@
* doc/emacs/display.texi (Text Scale): Talk about font sized instead
of "face height" (bug#46853).
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow appending to the kill ring with mouse selections
@@ -47500,35 +47500,35 @@
(mouse-drag-track): Allow appending to kill ring with mouse
selections (bug#32747).
-2022-06-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix last change in tramp-adb-handle-make-process
* lisp/net/tramp-adb.el (tramp-adb-handle-make-process):
Fix process buffer management.
-2022-06-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix starting eshell with missing/invalid modules defined
* lisp/eshell/esh-mode.el (eshell-mode): Warn instead of failing to
start when 'eshell-modules-list' has invalid entries. (Bug#54976)
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make describe-repeat-maps fontify key bindings
* lisp/repeat.el (describe-repeat-maps): Fontify key bindings as
key bindings.
-2022-06-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Show warnings about aborted redisplay
* src/xdisp.c (redisplay_window_error): Show messages about
aborted redisplay of a window as delayed-warnings.
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More conservative fix for bug#37473
@@ -47536,7 +47536,7 @@
since the last change makes C-x C-+ lead to weight weirdness on
my machine.
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make M-S-x output better in mode that have bindings for `undefined'
@@ -47545,21 +47545,21 @@
(execute-extended-command-for-buffer): Make M-S-x output better
(bug#46665).
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Recognize \' as a quoted quote in MySQL
* lisp/progmodes/sql.el (sql-mode): Recognize \' as a quoted quote
in MySQL (bug#38302).
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't handle reverseVideo X resource specially
* lisp/term/x-win.el (window-system-initialization): Don't handle
reverseVideo specially (bug#32921).
-2022-06-19 Sébastien Miquel <sebastien.miquel@posteo.eu>
+2023-04-15 Sébastien Miquel <sebastien.miquel@posteo.eu>
Small fix in font-lock-extend-region-multiline
@@ -47567,14 +47567,14 @@
extend the region if `font-lock-multiline' starts at
`font-lock-end' (bug#46558).
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't lose antialiasing info when hitting `C-x C-+'
* src/xfaces.c (realize_gui_face): Don't lose antialiasing info
when hitting `C-x C-+' (bug#37473).
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix setting last user time during drag-and-drop
@@ -47583,7 +47583,7 @@
were other seen with sending selections to a clipboard
immediately afterwards on Irix 6.5.
-2022-06-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add rudimentary font-locking to edmacro-mode
@@ -47592,25 +47592,25 @@
(edit-kbd-macro): Use font-lock in 'edmacro-mode'. Minor
improvement to command substitution.
-2022-06-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/obsolete/eieio-compat.el: Add missing Obsolete-since line.
-2022-06-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in kmacro.el
* lisp/kmacro.el (kmacro-keymap, kmacro-step-edit-map): Prefer
defvar-keymap.
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix edebug parsing of .,
* lisp/emacs-lisp/edebug.el (edebug-next-token-class): Parse .,
correctly (bug#37653).
-2022-06-19 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Tune when to show "Quick Help" in Ediff mode-line
@@ -47619,14 +47619,14 @@
`ediff-use-long-help-message' instead of checking
`ediff-window-setup-function' (Bug#12840).
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make checkdoc-defun-info parsing slightly less wrong
* lisp/emacs-lisp/checkdoc.el (checkdoc-defun-info): Disregard
`interactive' in nested parts of the defun (bug#56052).
-2022-06-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update redisplay ticks for more operations, and misc modifications
@@ -47643,7 +47643,7 @@
* src/xdisp.c (syms_of_xdisp) <max_redisplay_ticks>: Update
recommended non-zero values.
-2022-06-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add mechanism for gradually phasing in new byte compilation warnings
@@ -47657,7 +47657,7 @@
(byte-compile-docstring-style-warn): Reinstate the Unicode quote
warning.
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore emulated mouse clicks during drag-and-drop
@@ -47665,20 +47665,20 @@
last mouse frame for emulated mouse events during a
drag-and-drop operation.
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes when the _EMACS_DRAG_ATOM is the wrong type
* src/xterm.c (xm_get_drag_atom_1): Don't use PropModeAppend if
rc != Success.
-2022-06-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
422f958030 Fix invalid defcustom :group when :predicate is used
-2022-06-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XDND from Firefox again
@@ -47687,7 +47687,7 @@
(x-dnd-handle-motif): Send reply if the user quit out of the
drop handler as well.
-2022-06-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Cache the Motif drag window to avoid fetching it every time
@@ -47700,7 +47700,7 @@
* src/xterm.h (struct x_display_info): New field
`motif_drag_window'.
-2022-06-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix timestamps recorded in Motif DND top level leave messages
@@ -47709,13 +47709,13 @@
(handle_one_xevent): Use correct time for lmsg.timestamp sent in
response to entering the return-frame.
-2022-06-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in edmacro.el
* lisp/edmacro.el (edmacro-mode-map): Prefer defvar-keymap.
-2022-06-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Respect no-face argument in literal key substitutions
@@ -47726,7 +47726,7 @@
from help-tests-substitute-key-bindings/face-help-key-binding.
(help-tests-substitute-key-bindings/help-key-binding-no-face): New test.
-2022-06-18 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix last tty-select-active-regions change
@@ -47737,7 +47737,7 @@
occurrences of xterm-select-active-regions to
tty-select-active-regions (bug#55883).
-2022-06-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Add accurate handling for backslash in C line and block comments
@@ -47754,7 +47754,7 @@
(c-before-font-lock-functions): Add c-after-change-fix-comment-escapes to the
C/Objc and C++ values.
-2022-06-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix test failures due to 'xterm-select-active-regions'
@@ -47762,7 +47762,7 @@
xterm-select-active-regions and move here from xterm.c.
(display-selections-p): Adjust to the above. (Bug#55883)
-2022-06-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
More aggressive bytecode split between top-level forms (bug#55972)
@@ -47772,14 +47772,14 @@
too large. In particular this helps compilation of
package-quickstart.el.
-2022-06-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix checkdoc--fix-y-or-n-p query
* lisp/emacs-lisp/checkdoc.el (checkdoc--fix-y-or-n-p): Fix the
query to match what's done (bug#56053).
-2022-06-18 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
Fix invalid defcustom :group when :predicate is used
@@ -47787,7 +47787,7 @@
invalid `:group' argument for the `-modes' defcustom that is created
when `:predicate' is used (bug#56049).
-2022-06-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Filter out NS non-key events from `where-is-internal'
@@ -47800,13 +47800,13 @@
* src/keymap.c (Fwhere_is_internal): Filter out key sequences that
are marked as being non-keys.
-2022-06-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unnecessary clearing of internal border on Haiku
* src/haikuterm.c (haiku_new_font): Don't clear internal border.
-2022-06-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow pretty-printing results from `C-x C-e' in edebug
@@ -47815,7 +47815,7 @@
* lisp/emacs-lisp/edebug.el (edebug-eval-expression): Allow
displaying the full value in a different buffer.
-2022-06-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix infinite loop in noise macro near end of buffer
@@ -47826,7 +47826,7 @@
* lisp/progmodes/cc-engine.el (c-forward-noise-clause): Check the return
value of c-forward-token-2 and act upon it when not zero.
-2022-06-18 Duncan Findlay <duncf@google.com>
+2023-04-15 Duncan Findlay <duncf@google.com>
Support `select-active-regions' with xterm
@@ -47843,7 +47843,7 @@
* lisp/term/xterm.el (xterm-select-active-regions): New
defcustom.
-2022-06-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update documentation
@@ -47855,14 +47855,14 @@
* etc/NEWS: Announce 'max-redisplay-ticks'.
-2022-06-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Don't count ticks too eagerly in syntax.c
* src/syntax.c (scan_sexps_forward): Don't increment redisplay
tick count of the loop didn't advance at all.
-2022-06-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow aborting redisplay stuck in 'parse-partial-sexp'
@@ -47876,7 +47876,7 @@
* src/syntax.c (scan_sexps_forward): Call 'update_redisplay_ticks'
after finishing the loop.
-2022-06-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Avoid "control-control-KEY" (bug#55738)
@@ -47892,7 +47892,7 @@
Use \0 and \r instead of ^@ and \C-m to represent NUL and RET
when combined with other modifiers.
-2022-06-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer URL commentary header in two files
@@ -47900,14 +47900,14 @@
* test/lisp/progmodes/cperl-mode-tests.el: Prefer URL commentary
header.
-2022-06-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Define docstring element for more forms in scheme-mode
* lisp/progmodes/scheme.el: Define docstring element for more
forms. (Bug#33117)
-2022-06-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused Haiku code
@@ -47919,20 +47919,20 @@
* src/haikuselect.c (init_haiku_select): New function.
* src/haikuselect.h: Update prototypes.
-2022-06-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix type mixup in haikuselect.c
* src/haikuselect.c (haiku_lisp_to_message): Fix variable mixup.
Found with --enable-check-lisp-object-type.
-2022-06-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
024bbcb35e Prune the Gnus FAQ of some outdated data
-2022-06-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -47941,7 +47941,7 @@
e0bac17bbc Mention face quirks after the final line in the lispref ma...
ad74677cf3 Delete reference to obsolete library complete.el
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent Lisp code or synthetic events from ruining the user time
@@ -47952,7 +47952,7 @@
(XTmouse_position):
(handle_one_xevent): Pass `send_event' whenever appropriate.
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix specifying named action lists in `x-begin-drag'
@@ -47963,13 +47963,13 @@
(x_dnd_begin_drag_and_drop): Bind it if there are multiple
actions.
-2022-06-17 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Fix double-free in treesit.c
* src/treesit.c (Ftreesit_query_capture): Remove free at the end.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Extend 'e' in edebug to pretty-print the values
@@ -47978,14 +47978,14 @@
* lisp/emacs-lisp/edebug.el (edebug-eval-expression): Allow
displaying the full value in a different buffer.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Prune the Gnus FAQ of some outdated data
* doc/misc/gnus-faq.texi (FAQ 9-2): Remove some outdated advice
(bug#56042).
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete another library obsolete since 24.1
@@ -47994,28 +47994,28 @@
* lisp/obsolete/pc-mode.el: Delete file. This library has been
obsolete since Emacs 24.1. (Bug#50999)
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add hacek variations to `C-x 8'
* lisp/international/iso-transl.el (iso-transl-char-map): Add
hacek characters on `C-x 8 ^ ^'.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Use full name for bookmark handler type
* lisp/image-dired.el (image-dired-bookmark-jump): Use full mode name
for bookmark handler type.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Set bookmark handler type for Eshell
* lisp/eshell/esh-mode.el (eshell-bookmark-jump): Set bookmark handler
type.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update bookmark tests for recent change
@@ -48025,20 +48025,20 @@
(bookmark-test-bmenu-send-edited-annotation/restore-focus): Update for
recent change.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix copy-from-above-command doc string type
* lisp/misc.el (copy-from-above-command): Fix doc string typo.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command `duplicate-line'
* lisp/misc.el (copy-from-above-command): Mention it.
(duplicate-line): New command (bug#46621).
-2022-06-17 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Slightly faster hash-table-keys and hash-table-values
@@ -48047,18 +48047,18 @@
* test/lisp/emacs-lisp/subr-x-tests.el
(subr-x--hash-table-keys-and-values): New test.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't quote numbers in byte-run--set-*
* lisp/emacs-lisp/byte-run.el (byte-run--set-doc-string)
(byte-run--set-indent): Don't quote numbers (bug#48145).
-2022-06-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix handling of "process-*" properties in Tramp
@@ -48073,7 +48073,7 @@
(tramp-smb-handle-set-file-acl)
(tramp-smb-handle-start-file-process): Use it. (Bug#55832)
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some declare-after-interactive functions
@@ -48085,11 +48085,11 @@
* lisp/ldefs-boot.el (view-return-to-alist-update): Fix warnings
about declare after interactive.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't quote the `when' form in obsoletions
@@ -48098,7 +48098,7 @@
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--print-form):
Adjust folding.
-2022-06-17 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Warn about misplaced or duplicated function/macro declarations
@@ -48114,7 +48114,7 @@
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-fun-attr-warn):
New test.
-2022-06-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Handle too long syntactic fontifications
@@ -48126,25 +48126,25 @@
was aborted due to slowness. This avoids assertion violations in
'scrolling_window' due to the wrong hash value.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix efaq-w32.texi build warning
* doc/misc/efaq-w32.texi (Other useful ports): Fix ordering to
match nodes (or should the nodes be moved instead?).
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update cl-struct-sequence-type doc string
* lisp/emacs-lisp/cl-macs.el (cl-struct-sequence-type): Fix doc
string to reflect what it does (bug#46523).
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix some command substitutions
@@ -48153,7 +48153,7 @@
(reftex-index-phrase-selection-or-word):
* lisp/textmodes/remember.el (remember): Fix command substitutions.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rename command to bookmark-edit-annotation-confirm
@@ -48162,7 +48162,7 @@
'bookmark-edit-annotation-cancel'. Make the old name into an
obsolete function alias.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve help-enable-variable-value-editing help
@@ -48170,7 +48170,7 @@
docstring to better explain what effect it has.
(help-fns-edit-variable): Use command substitution.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix command substitution in emacsbug.el
@@ -48178,14 +48178,14 @@
(submit-emacs-patch, report-emacs-bug): Fix command substitution.
Prefer keymap-set to define-key.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow editing all symbols in help-fns--editable-variable
* lisp/help-fns.el (help-fns--editable-variable): Allow editing
all symbols (bug#56038).
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve time parsing documentation
@@ -48193,18 +48193,18 @@
take/return timestamps and which ones take decoded time structures.
* src/timefns.c (Fdecode_time): Clarify TIME argument (bug#46505).
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make uce.el obsolete (bug#46472)
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix wdired marking of unsuccessfully renamed files
* lisp/wdired.el (wdired-finish-edit): Don't mark non-renamed
files as renamed (bug#46438).
-2022-06-17 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
buffer-match-p: Resolve backward compat concerns
@@ -48218,28 +48218,28 @@
(project--buffer-check): Revert the latest change.
(project--buffer-check): Add support for lambda predicates.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a tagging problem in tramp.texi
* doc/misc/tramp.texi (Frequently Asked Questions): Restore an
@end lisp removed by accident.
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce code duplication when setting user time window
* src/xterm.c (x_make_frame_visible): Use
`x_update_frame_user_time_window'.
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention face quirks after the final line in the lispref manual
* doc/lispref/display.texi (Face Attributes): Mention the quirks
about point after the final line (bug#56011).
-2022-06-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up shr-string-pixel-width
@@ -48248,7 +48248,7 @@
* lisp/net/shr.el (shr-string-pixel-width): Use
`string-pixel-width', which should be faster.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Cancel editing bookmark annotations with C-c C-k
@@ -48260,7 +48260,7 @@
(bookmark-edit-annotation--maybe-display-list): New macro.
(bookmark-send-edited-annotation): Use above new macro.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use command substitution in bookmark-edit-annotation
@@ -48269,11 +48269,11 @@
(bookmark-edit-annotation): Enter mode before inserting annotation
to get the correct command substitution.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/edmacro.el (edit-kbd-macro): Use command substitution.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete most libraries obsolete since 24.1 and 24.3
@@ -48296,25 +48296,25 @@
* lisp/textmodes/rst.el: Remove references to above obsolete
libraries.
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clarify doc of `x-display-set-last-user-time'
* src/xfns.c (Fx_display_last_user_time): Explain in more detail
the meaning of TERMINAL.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete reference to obsolete library complete.el
* doc/misc/tramp.texi (Frequently Asked Questions): Delete reference
to obsolete library complete.el.
-2022-06-17 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/fns.c (Fmapconcat): Better empty-string-or-nil detection.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix misplaced interactive spec
@@ -48326,7 +48326,7 @@
misplaced interactive spec.
(cedet-files-utest-list): Minor doc fix; improve formatting.
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve compatibility when receiving drops from early XDND programs
@@ -48335,21 +48335,21 @@
XdndFinished events. If less than 2, always use `copy' as
the selected action.
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix computation of screen width and height on Haiku
* src/haiku_support.cc (be_get_screen_dimensions): Use correct
macros to extract width and height.
-2022-06-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix instances of not using a usable Motif drag atom
* src/xterm.c (xm_get_drag_atom_1): If another frame owns an
atom, use it anyway.
-2022-06-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -48357,7 +48357,7 @@
5ddd0f1a35 * lisp/net/tramp.el (tramp-methods): Fix quoting in docstr...
b0c5accb99 Update MS Windows FAQ for MinGW64-w64/MSYS2
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve window manager user time reporting mode switching
@@ -48370,7 +48370,7 @@
* src/xterm.h (struct x_display_info): Remove
`last_user_check_time'.
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update last event time during DND operations
@@ -48382,7 +48382,7 @@
* src/xterm.c (x_set_last_user_time_from_lisp): New function.
* src/xterm.h: Update prototypes.
-2022-06-16 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Change treesit-parser-list from variable to function
@@ -48407,21 +48407,21 @@
* test/src/treesit-tests.el (treesit-basic-parsing): Use the new
function.
-2022-06-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/textmodes/artist.el: Minor doc fixes.
-2022-06-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/fns.c (Fmapconcat): Optimize the case where separator==""
-2022-06-16 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Add treesit test for previous change
* test/src/treesit-tests.el (treesit-cross-boundary): New test.
-2022-06-16 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Consolidate treesit parser create functions
@@ -48439,7 +48439,7 @@
(treesit-font-lock-fontify-region, treesit-search-forward)
(treesit-query-validate): Change to use treesit-parser-create.
-2022-06-16 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Fix treesit function ts_record_change and friends
@@ -48479,14 +48479,14 @@
(Ftreesit_parser_set_included_ranges): Ensure parsed before setting ranges.
(Ftreesit_parser_included_ranges): Add assertion.
-2022-06-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp test
* test/lisp/net/tramp-tests.el (tramp-test03-file-name-method-rules):
Remove superfluous checks.
-2022-06-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix disruption of windows' display by shr.el
@@ -48500,18 +48500,18 @@
resetting hscroll of windows we use temporarily for shr's
rendering job. (Bug#56008)
-2022-06-16 Michael Heerdegen <michael_heerdegen@web.de>
+2023-04-15 Michael Heerdegen <michael_heerdegen@web.de>
Allow number register insertion in Calc (Bug#55943)
* lisp/calc/calc-yank.el (calc-get-register): Convert number values to
strings.
-2022-06-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/fns.c (mapcar1): Test types in rough order of likelyhood.
-2022-06-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use BASE_EQ instead of EQ where obviously safe
@@ -48561,14 +48561,14 @@
can be a symbol with properties or at least one argument is a
non-symbol.
-2022-06-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make package-recompile delete all .elc files first
* lisp/emacs-lisp/package.el (package-recompile): Delete all .elc
files under the package directory.
-2022-06-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new package.el commands for recompilation
@@ -48577,11 +48577,11 @@
* lisp/emacs-lisp/package.el (package-recompile):
(package-recompile-all): New commands (bug#27253).
-2022-06-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp.el (tramp-methods): Fix quoting in docstring.
-2022-06-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up Org to Texinfo generation
@@ -48589,7 +48589,7 @@
threshold, to speed up .org=.texi conversion. Patch by Ihor
Radchenko <yantar92@gmail.com>.
-2022-06-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make artist-version variable obsolete
@@ -48597,14 +48597,14 @@
not been updated in nearly two decades; use the Emacs version instead.
(artist-submit-bug-report): Don't use above obsolete variable.
-2022-06-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap for artist-mode-map
* lisp/textmodes/artist.el (artist-mode-map): Prefer
defvar-keymap.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-cite-list-citations: Cache footnote-definition searches
@@ -48613,14 +48613,14 @@
label search hits. Do not make `org-element-map' accumulate unused
result.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-element-map: Avoid repetitive `plist-get' call
* lisp/org/org-element.el (org-element-map): Do not call `(plist-get info
:ignore-list)' on every iteration.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-export-data: Concatenate strings in temporary buffer for performance
@@ -48628,7 +48628,7 @@
data instead of `mapconcat'. Using buffer puts less load on garbage
collector.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-export-as: Do not update buffer settings when not modified
@@ -48638,21 +48638,21 @@
Also, disable folding checks. Folding is irrelevant inside export
buffer.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-export-resolve-id-link: Pre-cache all the ids in the parse tree
* lisp/org/ox.el (org-export-resolve-id-link): Pre-cache all the ids in
the parse tree for faster lookup.
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif drag-and-drop timestamps
* lisp/x-dnd.el (x-dnd-handle-motif): Pass timestamp when
retrieving DND selection value. Bug found on Solaris 2.6.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-export-resolve-fuzyy-link: Pre-cache all possible search cells
@@ -48661,7 +48661,7 @@
When matching, use the pre-processed info. Fix the :test function for
the cache hash table.
-2022-06-16 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
org-export-get-footnote-definition: Pre-cache references in parse tree
@@ -48669,21 +48669,21 @@
tree once to filter out all non-footnote elements. This speeds up
subsequent footnote definition searches.
-2022-06-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix check for window system with toolkit scrollbars
* configure.ac (USE_TOOLKIT_SCROLL_BARS): Add missing 'test' to
condition. (Bug#55970)
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix byte-swapping of Motif DND tables
* src/xterm.c (xm_read_targets_table_rec): Swap nitems first
before checking the length.
-2022-06-16 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Update MS Windows FAQ for MinGW64-w64/MSYS2
@@ -48698,7 +48698,7 @@
Fix link for MinGW homepage.
Remove entry for defunct UWIN project. (Bug#55930)
-2022-06-16 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (strz): Write null terminator after variable length string
@@ -48709,13 +48709,13 @@
* test/lisp/emacs-lisp/bindat-tests.el (bindat-test--str-strz-prealloc):
Update tests.
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix defcustom in last change
* lisp/x-dnd.el (x-dnd-use-offix-drop): Fix defcustom.
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of fallback drop protocols
@@ -48727,7 +48727,7 @@
(x-dnd-offix-id-to-name): Fix typo in doc string.
(x-dnd-handle-unsupported-drop): Implement new value.
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif DND after atom ownership is lost due to frame destruction
@@ -48736,14 +48736,14 @@
* src/xterm.h (struct x_display_info): New field
`motif_drag_atom_owner'.
-2022-06-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
4d7a936ac2 ; * src/fileio.c (Fset_file_modes): Improve previous change
32cff740e2 Describe 'set-file-modes' argument prompting
-2022-06-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve drag atom computation
@@ -48760,7 +48760,7 @@
* src/xterm.h (struct x_display_info): New field
`motif_drag_atom_time'.
-2022-06-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Streamline time decoding and conversion
@@ -48768,7 +48768,7 @@
* src/timefns.c (tzlookup, Fdecode_time): Use them.
(Ftime_convert): Convert to symbol once, instead of many times.
-2022-06-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Don’t test time functions for NaNs, INF
@@ -48777,7 +48777,7 @@
Don’t test time functions with infinities and NaNs,
which are not Lisp time values.
-2022-06-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer BASE_EQ in time-sensitive ops
@@ -48786,7 +48786,7 @@
(time_arith, time_cmp, Fdecode_time, Fencode_time)
(Ftime_convert): Prefer BASE_EQ to EQ where either will do.
-2022-06-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
icalendar-tests no longer assumes TZ = wall
@@ -48800,7 +48800,7 @@
function, you typically want something else” for a reason.
Instead, pass the zone arg to icalendar-test--format.
-2022-06-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle OffiX drop of multiple files
@@ -48809,7 +48809,7 @@
(x-dnd-handle-offix-files): New function.
(x-dnd-convert-to-offix): Fix conversion to DndTypeFiles.
-2022-06-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Comply with the Motif requirement for unique drag atoms
@@ -48829,29 +48829,29 @@
* src/xterm.h (struct x_display_info): New fields for new atoms
and their names.
-2022-06-15 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
* .dir-locals.el: Set emacs-lisp-docstring-fill-column.
-2022-06-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
* src/treesit.c (ts_check_range_argument): Check for point-min/max.
-2022-06-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust ibuffer test
* test/lisp/ibuffer-tests.el (ibuffer-format-qualifier): Adjust
test after recent formatting changes.
-2022-06-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow completing tags, parameters and values in html-mode
* lisp/textmodes/sgml-mode.el (html-mode--complete-at-point):
Allow completing tags, parameters and values (bug#29057).
-2022-06-15 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Do not display 'nil for 0-ary filter qualifier in ibuf
@@ -48859,7 +48859,7 @@
nil in header for 0-ary filter qualifier.
* lisp/ibuf-macs.el (define-ibuffer-filter): Also fix the message.
-2022-06-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in ibuffer.el
@@ -48869,7 +48869,7 @@
(ibuffer-mode-header-map, ibuffer-mode-filter-group-map): Prefer
defvar-keymap.
-2022-06-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement using the OffiX protocol for dropping
@@ -48882,14 +48882,14 @@
* src/xterm.c: Update commentary.
(x_term_init): Extend number of DND atoms allocated by default.
-2022-06-15 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Describe 'set-file-modes' argument prompting
* src/fileio.c (Fset_file_modes): Document that FILENAME is prompted
for. (Bug#55984)
-2022-06-15 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
whitespace.el: New whitespace style `lines-char'
@@ -48905,7 +48905,7 @@
highlights only the first character over the whitespace-line-column
limit (bug#55980).
-2022-06-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle receiving new OffiX protocol during drag-and-drop
@@ -48917,14 +48917,14 @@
(x-dnd-offix-id-to-name): New list.
(x-dnd-handle-offix-file, x-dnd-handle-offix): New functions.
-2022-06-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix ;;;###autoload scanning from (some) packages
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Fix autoloads scanning from packages.
-2022-06-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix file name quoting in tramp-smb.el
@@ -48944,7 +48944,7 @@
(tramp-smb-get-stat-capability): Use it.
(tramp-smb-get-localname): Remove superfluous test. (Bug#55855)
-2022-06-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp debugging
@@ -48952,21 +48952,21 @@
* lisp/net/tramp.el (tramp-backtrace): New optional arg FORCE.
-2022-06-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Update args of isearch-search-fun-in-text-property (bug#14013)
* lisp/isearch.el (isearch-search-fun-in-text-property): Swap signature args.
* lisp/dired-aux.el (dired-isearch-search-filenames): Update the call.
-2022-06-15 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
repeat-mode: Don't echo unset keys in help message
* repeat.el (repeat-echo-message-string): Check if the key is set.
(bug#55977)
-2022-06-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle coordinates for the old KDE drop protocol
@@ -48974,13 +48974,13 @@
(x_coords_from_dnd_message): Handle the old KDE protocol.
* src/xterm.h (struct x_display_info): New atoms.
-2022-06-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
850050ca5c Revert "Clarify what a Calc registeri in in calc-insert-re...
-2022-06-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
+2023-04-15 Yuan Fu <yuan@debian-BULLSEYE-live-builder-AMD64>
Fix compile warnings and errors in treesit.c
@@ -48988,7 +48988,7 @@
(Ftreesit_parser_set_included_ranges): Fix.
(Ftreesit_query_compile): Fix.
-2022-06-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix link action handling with Motif DND
@@ -48997,7 +48997,7 @@
(XM_DRAG_OPERATION_IS_LINK): New macro.
(handle_one_xevent): Use it instead.
-2022-06-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle coordinates from XM_DRAG_REASON_DRAG_MOTION replies
@@ -49005,13 +49005,13 @@
(xm_read_drag_motion_reply): New function.
(x_coords_from_dnd_message): Handle those messages as well.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Merge remote-tracking branch 'savannah/master' into feature/tree-sitter
Merge branch 'feature/tree-sitter-depth-control' into feature/tree-sitter
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add manual for treesit-traverse-forward and friends
@@ -49020,7 +49020,7 @@
treesit-traverse-forward.
* lisp/treesit.el (treesit-traverse-forward): Fix docstring.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Change treesit-check-query and mention it in documentation
@@ -49030,27 +49030,27 @@
* src/treesit.c (Ftreesit_query_capture, Ftreesit_query_compile):
Mention it.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add treesit-query-compile to manual
* doc/lispref/parsing.texi: Add treesit-query-compile.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add test for treesit-query-compile
* test/src/treesit-tests.el (treesit-query-api): Rename pattern to
query, and add treesit-query-compile into the mix.
-2022-06-14 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Add abbrev tables for minibuffer-mode and minibuffer-inactive-mode
* lisp/minibuffer.el (minibuffer-mode, minibuffer-inactive-mode): Add
an abbrev table for each of these modes (bug#55946).
-2022-06-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support callers which sometimes run unrelated to display code
@@ -49058,7 +49058,7 @@
with w == NULL if we are called outside of display engine code,
and don't update the tick count in that case.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Support compiled queries in treesit-query-capture
@@ -49074,11 +49074,11 @@
the query object conditonally.
(syms_of_treesit): New symbol.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* src/treesit.c (Ftreesit_query_p): New function.
-2022-06-14 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add new type treesit-compiled-query
@@ -49096,7 +49096,7 @@
New macros.
* src/print.c (print_vectorlike): Add printing for the new type.
-2022-06-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify byte-compiler assuming cconv normalisations
@@ -49106,7 +49106,7 @@
Simplify source optimisation and codegen code that can now rely on
normalised let/let* and unwind-protect forms.
-2022-06-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Run cconv for dynbound code as well
@@ -49120,7 +49120,7 @@
(cconv-analyze-form): In dynbound code, treat all variable bindings
as dynamic (lambda, let, let* and condition-case).
-2022-06-14 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Normalise setq during macro-expansion
@@ -49140,18 +49140,18 @@
* test/lisp/emacs-lisp/bytecomp-resources/warn-variable-setq-odd.el:
New files.
-2022-06-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Handle W = NULL in 'update_redisplay_ticks'
* src/xdisp.c (update_redisplay_ticks): If W == NULL, assume we
are iterating the current buffer.
-2022-06-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (read-regexp): Use minibuffer-message in the minibuffer.
-2022-06-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Restart tick counting every command
@@ -49162,7 +49162,7 @@
'windows_or_buffers_changed' to avoid trusting stale window data
like w->window_end_valid.
-2022-06-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add more characters with macron in C-x 8 map and latin input methods
@@ -49175,14 +49175,14 @@
(Bug#55668)
-2022-06-14 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Fix errors when aligning text in find-dired
* lisp/find-dired.el (find-dired-filter): Don't error out while
trying to align the text (by just removing that code) (bug#46218).
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make flymake-proc--delete-temp-directory slightly safer
@@ -49190,7 +49190,7 @@
(flymake-proc--delete-temp-directory): Temp dir name may be
abbreviatated, so expand it first (bug#46203).
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix .dir-local.el caching for symlinks
@@ -49198,21 +49198,21 @@
of the actual file, not the time stamp of the symlink (if
.dir-locals.el is a symlink) (bug#46122).
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Leave the contents on the *Backtrace* buffer on `q'
* lisp/emacs-lisp/debug.el (debug): Don't clear the contents of
the buffer on `q' (bug#55863).
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix gud parsing of empty jdb classpaths
* lisp/progmodes/gud.el (gud-jdb-marker-filter): Parse empty
classpaths (like classpath: []) correctly (bug#55957).
-2022-06-14 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Bind Cmd-t to menu-set-font on macOS
@@ -49222,14 +49222,14 @@
bind it to menu-set-font, which is also called by Options, Set Default
Font (bug#55967).
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using alists in ido completion and hitting TAB
* lisp/ido.el (ido-completion-help): Allow using an alist
COMPLETIONS (bug#46091).
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Clarify what a Calc registeri in in calc-insert-register"
@@ -49237,14 +49237,14 @@
This has been fixed in Emacs 29 by making it possible to use regular registers in calc.
-2022-06-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention how to only get syntactic font locking in the manual
* doc/lispref/modes.texi (Syntactic Font Lock): Note how to only
get syntactic font locking (bug#46039).
-2022-06-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp problem with non-essential
@@ -49254,28 +49254,28 @@
(tramp-get-home-directory, tramp-get-remote-uid)
(tramp-get-remote-gid): VEC can also be nil.
-2022-06-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mishandling of dnd-scroll-margin with scroll bar motion
* lisp/dnd.el (dnd-handle-movement): Ignore posns inside scroll
bars for now.
-2022-06-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (minibuffer-complete-history): New command.
(minibuffer-complete-defaults): New command.
https://lists.gnu.org/archive/html/emacs-devel/2022-06/msg00498.html
-2022-06-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/simple.el (completion-auto-wrap): Rename from completion-wrap-movement.
(next-completion): Use completion-auto-wrap.
https://lists.gnu.org/archive/html/emacs-devel/2022-06/msg00139.html
-2022-06-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix out of date parts in NS doc and keyboard bindings
@@ -49284,7 +49284,7 @@
concept index and document `ns-show-prefs'. (bug#55940)
* lisp/term/ns-win.el (global-map): Remove ns-popup-font-panel.
-2022-06-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle coordinates of Motif drop start messages
@@ -49293,20 +49293,20 @@
correct.
(x_coords_from_dnd_message): Read drop start messages as well.
-2022-06-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
73400e4002 Clarify what a Calc registeri in in calc-insert-register
-2022-06-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle coordinate extraction for more event types
* src/xterm.c (xm_read_drag_motion_message): New function.
(x_coords_from_dnd_message): Handle XM_DRAG_REASON_DRAG_MOTION.
-2022-06-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use coordinates provided by DND messages if available
@@ -49320,28 +49320,28 @@
x_handle_dnd_message.
* src/xterm.h: Update prototypes.
-2022-06-13 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project--git-submodules: Parse more strictly
* lisp/progmodes/project.el (project--git-submodules):
Don't mistake 'load-path' for 'path' (bug#55396).
-2022-06-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Default decoded-time dst slot to -1
* lisp/simple.el (decoded-time): Default dst slot to -1.
Improve related doc strings.
-2022-06-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Use the up-only parameter in treesit navigation functions
* lisp/treesit.el(treesit-inspect-node-at-point,
treesit-end-of-defun): Set up-only to t.
-2022-06-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add depth control for treesit traverse functions
@@ -49350,7 +49350,7 @@
(treesit-search-forward, treesit-search-beginning,
treesit-search-end): Add up-only parameter.
-2022-06-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix treesit-search-forward
@@ -49379,7 +49379,7 @@
* lisp/treesit.el (treesit-search-forward): Move the check.
-2022-06-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12.1.1 -Wanalyzer-use-of-uninitialized-value
@@ -49387,14 +49387,14 @@
Although I’m not sure this is needed, it doesn’t change
behavior (except possibly to make undefined behavior defined).
-2022-06-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12.1.1 in default developer build
* src/pdumper.c (pdumper_load): Use explicit memset to work around
GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105961>.
-2022-06-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/grep.el (grep-read-files): Combine files with aliases.
@@ -49402,35 +49402,35 @@
read-file-name-internal with a list of defaults from grep-files-aliases
(bug#55800).
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention \`M-x ...' in the lispref manual
* doc/lispref/help.texi (Keys in Documentation): Note \`M-x ...'
syntax.
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify what a Calc registeri in in calc-insert-register
* lisp/calc/calc-yank.el (calc-insert-register): Note that these
aren't normal registers (bug#55943).
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow saying \\=`M-x ...' in a doc string
* lisp/help.el (substitute-command-keys): Allow saying \\=`M-x
foo' in doc strings (and have it be fontified as a key binding).
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Massage In-Reply-To data in message-mail
* lisp/gnus/message.el (message-mail): Fix up Message-IDs from
Firefox (bug#55926).
-2022-06-13 Lassi Kortela <lassi@lassi.io> (tiny change)
+2023-04-15 Lassi Kortela <lassi@lassi.io> (tiny change)
Match complete words in dns-mode
@@ -49438,7 +49438,7 @@
complete words like SOA and not all words that contain the string
SOA (bug#55944).
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow `query-replace' to do exact replacement of the current item
@@ -49449,14 +49449,14 @@
(perform-replace): Allow editing a replacement with exact case
(bug#8504).
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add to mode cedilla characters to iso-transl-char-map
* lisp/international/iso-transl.el (iso-transl-char-map): Add some
more cedilla characters.
-2022-06-13 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Meetei Mayek script
@@ -49469,7 +49469,7 @@
* etc/HELLO: Add a Meetei Mayek greeting.
* etc/NEWS: Announce the new language environment.
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the ediff control panel mode line prettier
@@ -49478,14 +49478,14 @@
(ediff-make-wide-control-buffer-id): Make the informative part of
the mode line bold. (Code from Michael Heerdegen.)
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow rgrep users to indicate case folding easier
* lisp/progmodes/grep.el (rgrep): Allow the user to toggle case
sensitivity interactively (bug#16913).
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a `M-c' command to `read-regexp'
@@ -49494,7 +49494,7 @@
* lisp/replace.el (read-regexp): Add a `M-c' command to indicate
case folding (bug#16913).
-2022-06-13 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (strz): Error on null byte if packing variable-length string
@@ -49502,11 +49502,11 @@
encountered while packing a string to a variable-length strz field.
* test/lisp/emacs-lisp/bindat-tests.el (strz): Add tests (bug#55938).
-2022-06-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* files.el (auto-mode-alist): Add entry to `.eld` files
-2022-06-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `/ a' in *Package* filter by name
@@ -49514,14 +49514,14 @@
Filter by package name instead of by regexp, so that if the user
types "gnu", they won't get "nongnu", too (bug#55919).
-2022-06-13 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
* lisp/find-dired.el (find-dired): Make directory clickable.
* lisp/find-dired.el (find-dired): Make the directory line
clickable (bug#55906).
-2022-06-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect test function when performing local drag-and-drop
@@ -49539,13 +49539,13 @@
(syms_of_xterm): New defvar `x-dnd-native-test-function'.
* src/xterm.h: Update prototypes.
-2022-06-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
d6f080d3de ; * doc/man/etags.1: Bump man page date.
-2022-06-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve DND tooltip updating
@@ -49554,7 +49554,7 @@
(x_monitors_changed_cb, handle_one_xevent): Only update if a
change in monitor configuration really happened.
-2022-06-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Keep tooltip position in sync with monitor changes
@@ -49562,7 +49562,7 @@
(x_monitors_changed_cb):
(handle_one_xevent): Call that function on monitor change.
-2022-06-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix special DND event coordinates
@@ -49573,32 +49573,32 @@
(handle_one_xevent): Fix order of arguments to
x_dnd_note_self_drop.
-2022-06-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/icomplete.el: Consider a list in minibuffer-default (bug#55800)
* lisp/icomplete.el (icomplete--sorted-completions): Handle a string value
in the first element of the list of default values in minibuffer-default.
-2022-06-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Change the API of 'update_redisplay_ticks'
* src/xdisp.c (update_redisplay_ticks): Change the 2nd argument
to be 'struct window'; all callers changed.
-2022-06-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el (isearch-search-fun-in-text-property): Handle ^/$ specially.
When the regexp contains ^ or $ then use a temporary buffer to find matches
at the beginning/end of the region with the given text property (bug#14013).
-2022-06-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix a typo in a doc string.
-2022-06-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Initial implementation of "abort-redisplay" feature
@@ -49611,7 +49611,7 @@
void-variable error, and it gets in the way of aborting
redisplay via 'redisplay_window_error'.
-2022-06-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix encoding of multibyte ToolTalk filenames
@@ -49621,7 +49621,7 @@
* test/lisp/dnd-tests.el (dnd-tests-begin-file-drag): Add test.
-2022-06-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling of scroll bar clicks on Haiku
@@ -49642,7 +49642,7 @@
(haiku_read_socket): Handle button events on scroll bars as
scroll bar click events.
-2022-06-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use BASE_EQ when comparing with Qunbound
@@ -49693,14 +49693,14 @@
* src/xterm.c (x_draw_glyph_string, x_term_init):
Use BASE_EQ instead of EQ when comparing with Qunbound.
-2022-06-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make find-sibling-file-search non-private
* lisp/files.el (find-sibling-file-search): Rename to be non-private.
(find-sibling-file): Adjust call.
-2022-06-12 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Update docstring of eglot-events-buffer-size
@@ -49710,7 +49710,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/974
GitHub-reference: close https://github.com/joaotavora/eglot/issues/776
-2022-06-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "C-x C-d" with wildcard arguments
@@ -49718,7 +49718,7 @@
set to a valid value if the argument DIRNAME included wildcards.
(Bug#55877)
-2022-06-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix phantom drag-and-drop targets showing up in some programs
@@ -49728,7 +49728,7 @@
think its presence on the drag source means there are more than
3 targets.
-2022-06-12 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (str, strz): Reject non-ASCII, non-`eight-bit' characters
@@ -49738,29 +49738,29 @@
* doc/lispref/processes.texi (Bindat Types): Update documentation.
* test/lisp/emacs-lisp/bindat-tests.el (str) (strz): Add tests.
-2022-06-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't repetitively initialize type lists during DND
* src/xterm.c (x_dnd_send_enter): Only set XdndTypeList once.
(x_dnd_begin_drag_and_drop): Clear type list flag.
-2022-06-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
cbd2c87a5d ; Fix last change in whitespace.el.
52ad2b53cb Fix doc strings in whitespace.el
-2022-06-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/find-func.el (find-function-advised-original): Simplify
-2022-06-11 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* configure.ac (HAVE_TREE_SITTER): Not set TREE_SITTER_LIBS.
-2022-06-11 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Rename treesit-traverse-forward-depth-first
@@ -49769,18 +49769,18 @@
(treesit-traverse-forward, treesit-search-forward): Use
the new name.
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use cached monitor info during DND if available
* src/xterm.c (x_dnd_begin_drag_and_drop): Use previously cached
monitor attributes if they exist.
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/nsfns.m (ns_move_tooltip_to_mouse_location): Handle invisible frames.
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't rely on XdndAware on frames for dropping to work
@@ -49795,11 +49795,11 @@
(handle_one_xevent): Handle our own frames using those functions
instead.
-2022-06-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/fns.c (internal_equal): Use BASE_EQ where possible.
-2022-06-11 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Recognize processes as a CL type again
@@ -49809,21 +49809,21 @@
* lisp/emacs-lisp/cl-macs.el (cl-deftype-satisfies): Include process
as a type, to avoid cl-typep complaining about process objects.
-2022-06-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make new fileio test more reliable
* test/src/fileio-tests.el: Use a unibyte buffer to avoid length
confusion.
-2022-06-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Bump sh-imenu-generic-expression defcustom version
* lisp/progmodes/sh-script.el (sh-imenu-generic-expression): Bump
the :version since we changed the value.
-2022-06-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix loaddefs installation of packages with no autoloads
@@ -49831,7 +49831,7 @@
generate an output file if we have EXTRA-DATA. This fixes package
installation of packages with no ;;;###autoload forms.
-2022-06-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
fileio-tests.el (test-non-regular-insert): Fix thinko
@@ -49839,7 +49839,7 @@
from `test-non-regular-insert` and make it into a test rather than
a broken function. Oh, and make it work while at it.
-2022-06-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Bindat: Document `sint`; add `le` arg to `uint`; deprecate `uintr`
@@ -49856,7 +49856,7 @@
* test/lisp/emacs-lisp/bindat-tests.el (data-bindat-spec): Use the new
`le` arg of `uint` instead of `uintr`.
-2022-06-11 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Improve Lepcha composition rules and rename its native name
@@ -49865,14 +49865,14 @@
* etc/HELLO: Rename Lepcha script native name.
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix timestamp of special drop events
* src/xterm.c (x_dnd_send_drop): Set special event timestamp
to the timestamp of the drop instead of CurrentTime.
-2022-06-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow inserting parts of /dev/urandom with insert-file-contents
@@ -49880,7 +49880,7 @@
* src/fileio.c (Finsert_file_contents): Allow specifying END for
special files (bug#18370).
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some drag-and-drop handling on Haiku
@@ -49892,14 +49892,14 @@
(Fhaiku_drag_message): Only clear grab and hide tooltip if the
drag was successful.
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix initializers for Haiku scroll bars
* src/haiku_support.cc (class Emacs):
(class EmacsScrollBar): Fix initializers.
-2022-06-11 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
Support mksh-specific function names in imenu
@@ -49907,7 +49907,7 @@
mksh-specific function names to imenu-generic-expression
(bug#55889).
-2022-06-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further tweaks to how remapped commands are described
@@ -49923,14 +49923,14 @@
C-x x i ido-insert-buffer
(Remapped via <remap> <insert-buffer>)
-2022-06-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix doc strings in whitespace.el
* lisp/whitespace.el (whitespace-style, whitespace-action):
Untabify the doc strings. (Bug#55904)
-2022-06-11 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Lepcha script (bug#55869)
@@ -49944,14 +49944,14 @@
* etc/HELLO: Add a Lepcha greeting.
* etc/NEWS: Announce the new language environment.
-2022-06-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix queuing already-present selection requests
* src/xterm.c (x_defer_selection_requests): Move kbd_fetch_ptr
if possible and fix counter increment order.
-2022-06-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -49960,21 +49960,21 @@
22a832ad82 Mention the #f syntax from cl-prin1
3fd0854378 Fix file name quoting in tramp-smb.el (do not merge)
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle allocation errors when interning large amounts of atoms
* src/xfns.c (Fx_begin_drag): Catch BadAlloc errors around
XInternAtoms.
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crash handling keyboard input from non-frame windows
* src/xterm.c (handle_one_xevent): Use `dpyinfo' to access xkb
desc. (bug#55890)
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix cancelling DND upon a regular X error
@@ -49982,14 +49982,14 @@
a non-IO error, so don't avoid sending messages to clean stuff
up.
-2022-06-10 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
elisp-completion-at-point: Replace last usage of 'read'
* lisp/progmodes/elisp-mode.el (elisp-completion-at-point):
Replace the last remaining usage of 'read' (bug#55491).
-2022-06-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
New function isearch-search-fun-in-text-property (bug#14013).
@@ -49999,7 +49999,7 @@
* lisp/isearch.el (isearch-search-fun-in-text-property):
New function refactored from dired-isearch-search-filenames.
-2022-06-10 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't use 'list' command in Eshell command forms
@@ -50012,7 +50012,7 @@
(esh-var-test/quoted-interp-cmd-indices): Use 'listify' instead of
'list'.
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove extra call to XTranslateCoordinates when performing "xterm" drop
@@ -50020,7 +50020,7 @@
XdndSelection is lost, set subwindow, and simplify
XTranslateCoordinates loop.
-2022-06-10 Taiju HIGASHI <higashi@taiju.info>
+2023-04-15 Taiju HIGASHI <higashi@taiju.info>
Don't reduce vocabulary in ja-dic.el by default
@@ -50034,7 +50034,7 @@
(skkdic-convert): Add the "no-reduction" optional argument.
(batch-skkdic-convert): Add the "--no-reduction" command line argument.
-2022-06-10 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (strz): Fix documentation for strz with pre-allocated string
@@ -50042,21 +50042,21 @@
terminator is not written if `bindat-pack' is given a pre-allocated
string.
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Link find-sibling-file to ff-find-related-file in manual
* doc/emacs/files.texi (Visiting): Link to ff-find-related-file
documentation.
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix find-sibling-file doc string
* lisp/files.el (find-sibling-file): Remove incorrect statement
from doc string (bug#55879).
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make describe-prefix-bindings say when there are no matches
@@ -50064,7 +50064,7 @@
bindings under a prefix (bug#55875), for instance in `C-c C-h' in
a buffer with no `C-c' commands.
-2022-06-10 Ignacio Casso <ignaciocasso@hotmail.com>
+2023-04-15 Ignacio Casso <ignaciocasso@hotmail.com>
Fix issues with loading autoloaded defcustoms while bound
@@ -50079,14 +50079,14 @@
* src/data.c (Fdefault_boundp): Update doc string.
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't put trailing optional nil values into `command-history'
* src/callint.c (fix_command): Don't put trailing optional nil
values into `command-history' (bug#45333).
-2022-06-10 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix macOS parallel bootstrap error (bug#55846)
@@ -50094,18 +50094,18 @@
Change to a single-target rule to avoid the same actions being
executed in parallel.
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention the REQUIRE-MATCH extension in NEWS
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow specifying a wildcard argument to list-directory again
* lisp/files.el (list-directory): Allow specifying a wildcard
argument interactively again (bug#55877).
-2022-06-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow REQUIRE-MATCH to be a function
@@ -50117,7 +50117,7 @@
* src/minibuf.c (Fcompleting_read): Mention it.
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix receiving drops from drop-only Motif programs
@@ -50125,7 +50125,7 @@
(x-dnd-handle-motif): Recompute types and state on XmDROP_START
if no state already exists.
-2022-06-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of "etags -I"
@@ -50133,20 +50133,20 @@
* doc/emacs/maintaining.texi (Create Tags Table): Elaborate on the
importance of the '-I' option to 'etags'. (Bug#45246)
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Eliminate extra call to XTranslateCoordinates looking for drop target
* src/xterm.c (x_dnd_get_target_window): Translate coordinates
starting from the root window and avoid extra sync.
-2022-06-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
22a832ad82 Mention the #f syntax from cl-prin1
-2022-06-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -50160,13 +50160,13 @@
# Conflicts:
# lisp/files.el
-2022-06-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add tests for x-dnd Motif value parsing logic
* test/lisp/x-dnd-tests.el: New file.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't rely on TARGETS to read selection targets for Motif DND
@@ -50179,25 +50179,25 @@
(x-dnd-handle-motif): Read targets from the targets table
of the drag window instead of the selection's TARGET target.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes in x_tooltip_window_to_frame on GTK
* src/xterm.c (x_tooltip_window_to_frame): Ignore all non-X
frames instead of trying to get their tooltip window.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuselect.c (haiku_note_drag_motion): Only handle visible tip_f.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix DND tooltip handling with tooltip-reuse-hidden-frame
* src/xterm.c (x_dnd_update_tooltip_position): Don't move window
if tip_f is not visible.
-2022-06-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update the 'etags' test suite
@@ -50211,18 +50211,18 @@
* lib-src/etags.c (C_entries): Add commentary for resetting
bracelev. (Bug#45246)
-2022-06-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust browse-url test after previous browse-url change
-2022-06-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make browse-url-encode-url encode even less
* lisp/net/browse-url.el (browse-url-encode-url): Don't encode
dollar signs, because that's out of spec (bug#55873).
-2022-06-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve `C-h b' output for remapped commands.
@@ -50247,7 +50247,7 @@
<remap> <switch-to-buffer-other-window> ido-switch-buffer-other-window
C-x 4 b switch-to-buffer-other-window
-2022-06-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
New setting for mouse-drag-copy-region to not put "" onto kill ring
@@ -50256,7 +50256,7 @@
for not putting "" strings onto the kill ring.
(mouse-set-region, mouse-save-then-kill): Use the new value.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recalculation of `icon-title-format' after a frame is iconified
@@ -50271,14 +50271,14 @@
* src/xdisp.c (gui_consider_frame_title): Export (also in
dispextern.h). (bug#55850)
-2022-06-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention the #f syntax from cl-prin1
* doc/lispref/objects.texi (Special Read Syntax): Mention #f,
which is in cl-prin1 output (bug#55853).
-2022-06-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `line-number-at-pos' work more like in earlier Emacs versions
@@ -50287,7 +50287,7 @@
This isn't announced in the doc string, but makes function
compatible with the version in earlier Emacs versions.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Never return tooltip frames from ns-begin-drag
@@ -50295,14 +50295,14 @@
([EmacsWindow beginDrag:forPasteboard...]): Don't return frame
if tooltip.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle monitor attribute updates during drag-and-drop
* src/xterm.c (x_monitors_changed_cb):
(handle_one_xevent): Set x_dnd_monitors during monitor changes.
-2022-06-09 Stefan Baums <baums@stefanbaums.com>
+2023-04-15 Stefan Baums <baums@stefanbaums.com>
Add support for the Kharoshthi script
@@ -50314,21 +50314,21 @@
environment. Set up composition rules for Kharoshthi.
(Bug#55539)
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Satisfy GCC warnings on the GNUstep build
* src/nsfns.m (ns_move_tooltip_to_mouse_location):
* src/nsterm.m ([EmacsWindow draggedImage:movedTo:]): Pacify GCC.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable tooltip timeouts for drag-and-drop tooltips
* lisp/mouse.el (mouse-drag-and-drop-region-display-tooltip):
Don't time out the created tooltip.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `follow-tooltip' on NS as well
@@ -50347,7 +50347,7 @@
([EmacsWindow beginDrag:forPasteboard...]): New parameter
`followTooltip'.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Note caveats of `follow-tooltip' with system tooltips
@@ -50356,7 +50356,7 @@
* src/xfns.c (Fx_begin_drag): Say that follow-tooltip doesn't
work with system tooltips.
-2022-06-09 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat: Improve str, strz documentation
@@ -50364,7 +50364,7 @@
for the `str' and `strz' types to clarify expectations and explain
edge case behavior.
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `follow-tooltip' for DND on Haiku
@@ -50383,7 +50383,7 @@
if mouse moves onto a tooltip during DND.
* src/haikuterm.h: Update prototypes.
-2022-06-09 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Account for remapped faces in $COLUMNS and $LINES in Eshell
@@ -50417,14 +50417,14 @@
* etc/NEWS: Announce this change (bug#55696).
-2022-06-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "* src/comp.c (Fcomp_el_to_eln_filename): Update error message."
This reverts commit ec987e3e1786d06ffd306e5717b4d7fd118f05ac.
This change was installed on the emacs-28 branch instead.
-2022-06-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Allow C-x 4 4, C-x 5 5, C-x t t to handle commands that use switch-to-buffer
@@ -50436,17 +50436,17 @@
commands that use switch-to-buffer.
https://lists.gnu.org/archive/html/emacs-devel/2022-06/msg00483.html
-2022-06-09 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
* src/comp.c (Fcomp_el_to_eln_filename): Update error message.
-2022-06-09 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Update error message to reflect variable rename
* src/comp.c (Fcomp_el_to_eln_filename): Update error message. (Bug#55861)
-2022-06-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Also show mouse DND tooltip contents during interprogram drag-and-drop
@@ -50470,21 +50470,21 @@
(syms_of_xterm): Update staticpros.
* src/xterm.h: Update prototypes.
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix dnd-tests on builds without X
* test/lisp/dnd-tests.el (x-get-selection-internal): New
function declaration.
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore tooltip frames when looking for DND target
* src/xterm.c (x_dnd_get_target_window): When not using client
lists, look beneath any tooltip frame.
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make use of faster atom intern functions in xselect.c
@@ -50492,7 +50492,7 @@
(x_atom_to_symbol): Use x_get_atom_name and
x_intern_cached_atom.
-2022-06-08 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Fix error reporting in process-async-https-with-delay
@@ -50500,7 +50500,7 @@
'plist-get' instead of 'assq' in testing for a connection error.
The 'status' variable is a plist, not an alist. (Bug#55849)
-2022-06-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/rect.el: Return correct positions of region-beginning/end (bug#55234)
@@ -50509,20 +50509,20 @@
(rectangle--extract-region): Let-bind rectangle-mark-mode around
region-beginning and region-end to use the original functions.
-2022-06-08 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add more super and subscript characters to latin input methods
* lisp/leim/quail/latin-post.el ("latin-postfix", "latin-prefix"): Add
mssing super and subscript characters. (Bug#55722)
-2022-06-08 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add fractions to latin-post input method
* lisp/leim/quail/latin-post.el ("latin-postfix"): Add fractions.
-2022-06-08 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add more ways to enter trade mark and registered sign
@@ -50532,7 +50532,7 @@
and TRADE MARK.
* lisp/leim/quail/latin-pre.el ("latin-prefix"): Add TRADE MARK.
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow running some DND tests interactively
@@ -50549,7 +50549,7 @@
(dnd-tests-begin-file-drag, dnd-tests-begin-drag-files):
Temporarily skip these tests under X.
-2022-06-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Give ,@ a prefix syntax in elisp-mode"
@@ -50557,7 +50557,7 @@
This leads to hangs in edebug-tests.
-2022-06-08 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't split Eshell expansions by line when using split-subscript operator
@@ -50568,13 +50568,13 @@
(esh-var-test/interp-convert-var-split-indices): Expand test
(bug#55838).
-2022-06-08 Nicholas Vollmer <iarchivedmywholelife@gmail.com>
+2023-04-15 Nicholas Vollmer <iarchivedmywholelife@gmail.com>
* doc/man/emacs.1.in: Add --init-directory.
* doc/man/emacs.1.in: Document --init-directory (bug#55839).
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify XDND toplevel freeing code
@@ -50583,7 +50583,7 @@
an unwind function to free DND toplevels instead of doing that
manually everywhere.
-2022-06-08 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix last-modified meaning in bookmark.el
@@ -50593,25 +50593,25 @@
(bookmark-rename): Use `bookmark-update-last-modified' in
annotations editing, relocation and renaming.
-2022-06-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
icomplete-in-buffer doc fix
* lisp/icomplete.el (icomplete-in-buffer): dabbrev now uses
icomplete-in-buffer (bug#45764).
-2022-06-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* doc/misc/org.org: Remove spurious markup.
-2022-06-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make Tramp version check more robust
* lisp/net/trampver.el (tramp-repository-branch)
(tramp-repository-version): Check for "git" executable.
-2022-06-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Factor out test configuration for remote files
@@ -50642,7 +50642,7 @@
(tramp-test-temporary-file-directory): Remove. Replace all uses
by `ert-remote-temporary-file-directory'.
-2022-06-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Preserve doc string in `byte-compile` (bug#55830)
@@ -50652,7 +50652,7 @@
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-function-attributes): New test.
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make responding to selection requests work inside popups
@@ -50673,7 +50673,7 @@
* src/xterm.h (DEFER_SELECTIONS): New slug of code.
-2022-06-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix quitting in one go out of `mouse-drag-and-drop-region'
@@ -50681,14 +50681,14 @@
handle_interrupt is called inside the nested event loop upon a
quit event.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash with outdated selection requests
* src/xselect.c (x_handle_selection_request): Don't store into
stack if it wasn't previously pushed.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve drag-and-drop tests
@@ -50703,7 +50703,7 @@
(dnd-tests-begin-file-drag, dnd-tests-begin-drag-files): Verify
validity of file selection data.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More fixes to mouse event reporting during drag-and-drop
@@ -50712,7 +50712,7 @@
(handle_one_xevent): Keep track of dpyinfo->grabbed as well
inside the drag-and-drop event loop.
-2022-06-07 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
pcomplete-parse-arguments: Fix last change
@@ -50720,11 +50720,11 @@
Throw the previous value of 'pcomplete-stub' (a list) rather than
the newly constructed one (bug#50470).
-2022-06-07 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/vc1-xtra.texi (Customizing VC): Remove deprecated Mtn.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Give ,@ a prefix syntax in elisp-mode
@@ -50732,27 +50732,27 @@
Give ,@ a prefix syntax so that we can properly identify symbols
that follow it, i.e., ,@foo (bug#44418).
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Demote extended attribute errors in basic-save-buffer-2
* lisp/files.el (basic-save-buffer-2): Give demoted errors when
reading extended attributes that fail (bug#43723).
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
This is the first check-in after the loaddefs-gen.el rewrite.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove Mtn from vc-handled-backends
* lisp/vc/vc-hooks.el (vc-handled-backends): Remove the deprecate
vc-mtn backend.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix loaddefs-generate--rubric recorded name
@@ -50760,7 +50760,7 @@
the name that's recorded in the file -- this is only used by
loaddefs-gen now, I think.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make artist-mode work in zoomed buffers
@@ -50772,14 +50772,14 @@
(artist-mouse-draw-2points): Work better when the window is zoomed
(bug#46035).
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow posn-col-row to return data on a per-window basis
* doc/lispref/commands.texi (Accessing Mouse): Document it.
* lisp/subr.el (posn-col-row): Extend to use window data.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow hooks to alter the process in prolog-ensure-process
@@ -50787,7 +50787,7 @@
after starting the process, so that the mode hook can talk to the
process (bug#46003).
-2022-06-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
find-func.el: Fix bug#41104
@@ -50798,7 +50798,7 @@
* test/lisp/emacs-lisp/find-func-tests.el
(find-func-tests--find-library-verbose): Add test.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add selection stuff to DND tests
@@ -50810,7 +50810,7 @@
(dnd-tests-begin-text-drag): Add tests for the contents of
various selections.
-2022-06-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix debugging with GDB when a breakpoint has multiple locations
@@ -50822,7 +50822,7 @@
also any locations in multiple-location breakpoints, which are
supported since GDB 6.8.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding style of some Haiku files
@@ -50834,14 +50834,14 @@
confusingly named fields.
* src/haikuterm.c (haiku_read_socket): Update accordingly.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify mode line for vc-print-root-log
* lisp/vc/vc.el (vc-print-root-log): Don't display "from <file>"
(bug#45007).
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix more bugs with DND selection handling
@@ -50852,14 +50852,14 @@
XdndSelection is lost.
(handle_one_xevent): Likewise.
-2022-06-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify highlight-changes-rotate-faces doc string
* lisp/hilit-chg.el (highlight-changes-rotate-faces): Doc string
clarification (bug#44150).
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove mentions of GNOME MediaKeys from dbus documentation examples
@@ -50867,7 +50867,7 @@
* lisp/net/dbus.el (dbus-get-all-managed-objects): Remove
mentions of obsolete GNOME APIs from example text.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve compatibility with some clients of the Motif drop protocol
@@ -50888,21 +50888,21 @@
(syms_of_xterm): New defvar and associated defsym.
* src/xterm.h: Update prototypes.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new drag-and-drop test
* test/lisp/dnd-tests.el (dnd-tests-get-local-file-uri): New
test.
-2022-06-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leak of event data on GTK+ 2.x
* src/xterm.c (handle_one_xevent): Fix goto XI_OTHER for
valuator motion events generated on scroll bars.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update Haiku drag-and-drop code
@@ -50910,7 +50910,7 @@
dropping on places other than the text area (it doesn't work).
Also respect mouse-yank-at-point.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't allow dropping on invalid drop sites
@@ -50919,21 +50919,21 @@
(x-dnd-handle-xdnd, x-dnd-handle-motif): Don't pretend dropping
on the mode line is ok.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't display mouse face during mouse drag-and-drop
* lisp/mouse.el (mouse-drag-and-drop-region): Don't display
mouse face, since it leads to a lot of flicker.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes with very large Motif targets tables
* src/xterm.c (xm_setup_dnd_targets): Catch errors around
xm_write_targets_table lest we get a BadAlloc error.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix two crashes when a display connection is lost
@@ -50962,14 +50962,14 @@
* src/xterm.h: Update prototypes.
-2022-06-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix execute-extended-command help text for remapped commands
* lisp/simple.el (execute-extended-command): Don't provide
misleading help text for remapped commands (bug#23543).
-2022-06-06 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Allow using xref buttons in non-*Help* buffers
@@ -50977,7 +50977,7 @@
non-*Help* buffers (bug#8147) (but display the result in a *Help*
buffer).
-2022-06-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make find-file-noselect not pick buffers with broken symlinks
@@ -50985,20 +50985,20 @@
(find-file-noselect): Don't pick buffers with broken symlinks,
because that's too confusing (bug#41414).
-2022-06-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve scheme-mode syntax-rules indentation
* lisp/progmodes/scheme.el (syntax-rules): Indent syntax-rules
with a parameter better (bug#40869).
-2022-06-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve find-sibling-file error reporting
* lisp/files.el (find-sibling-file): Improve error reporting.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update comments in X error handling code
@@ -51011,7 +51011,7 @@
used to find an applicable error handler and to call
x_uncatch_errors_after_check.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add drag-and-drop API tests
@@ -51020,14 +51020,14 @@
(dnd-tests-begin-file-drag):
(dnd-tests-begin-drag-files): New tests.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of remote files during drag-and-drop
* lisp/dnd.el (dnd-begin-drag-files): Don't fail if one remote
file couldn't be downloaded.
-2022-06-06 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Test warning suppressions with lexical binding
@@ -51038,7 +51038,7 @@
for suppressing warnings when attempting to let-bind `nil`,
as that (1) doesn't work and (2) is a silly thing to do anyway.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix several more issues with running Lisp during drag-and-drop
@@ -51046,14 +51046,14 @@
and set mouse_moved flags during drag-and-drop so reading mouse
events from Lisp continues to work.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Signal an error XdndSelection was lost during drag-and-drop
* src/xselect.c (x_handle_selection_clear): Signal an error if
ownership of XdndSelection was lost during drag-and-drop.
-2022-06-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make mouse input work properly inside the debugger during DND
@@ -51062,7 +51062,7 @@
(handle_one_xevent): If the recursive edit level is higher than
when DND started, handle mouse events normally.
-2022-06-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-typep: Emit warning when using a type not known to be a type
@@ -51097,7 +51097,7 @@
there's an(other) error between loading `files.el` and loading
`minibuffer.el`.
-2022-06-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rework X selections to make it safe to run the debugger inside converters
@@ -51136,7 +51136,7 @@
* src/xterm.h: Update prototypes.
-2022-06-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
pcomplete.el: Fix part of bug#50470
@@ -51149,20 +51149,20 @@
of completions as is. Also, use `try-completions` to simplify the
previous code.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add nohandle-guide images for tree-widget
These are copies of the guide.* files
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-re-fix previous describe-function change
* lisp/help-fns.el (describe-function): Put back binding removed
by mistake in previous change.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix key binding buffer issue in describe-function better
@@ -51171,19 +51171,19 @@
instead of the key-buffer binding -- this will also make the
rendering results correct when hitting `g' and `l'.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify syntax-ppss doc string
* lisp/emacs-lisp/syntax.el (syntax-ppss): Clarify doc string.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify set-goal-column
* lisp/simple.el (set-goal-column): Simplify the code.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-h f' look up key bindings in the current buffer again
@@ -51191,7 +51191,7 @@
to look up key bindings in.
(describe-function-1): Use it.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the goal column work for the scrolling commands, too
@@ -51201,7 +51201,7 @@
* lisp/window.el (scroll-up-command, scroll-down-command): Make
the goal column take effect for these commands, too (bug#17346).
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move two more variables from autoload.el to loaddefs-gen.el
@@ -51209,7 +51209,7 @@
(generated-autoload-load-name): Move the remaining two autoload.el
variables used by loaddefs-gen.el from autoload.el.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make finder/cus-dep scraping use generate-lisp-file functions
@@ -51218,7 +51218,7 @@
generate-lisp-file functions directly instead of piggy-backing on
the autoload.el functions. (This is part of making autoload.el obsolete.)
-2022-06-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't generate separate autoload file for htmlfontify
@@ -51228,7 +51228,7 @@
* test/lisp/htmlfontify-tests.el (htmlfontify-autoload): Delete
test (bug#52400).
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename generate-file to generate-lisp-file
@@ -51245,7 +51245,7 @@
generate-file.el. Also rename some keyword parameters and require
a generator function.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add convenience functions for generating Emacs Lisp files
@@ -51265,14 +51265,14 @@
of the headers/trailers are usually forgotten when hand-coding
these.
-2022-06-05 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add a fallback font for Tamil Supplement characters
* lisp/international/fontset.el (setup-default-fontset): Add
and entry for "Noto Sans Tamil Supplement". (Bug#55807)
-2022-06-05 JD Smith <jdtsmith@gmail.com> (tiny change)
+2023-04-15 JD Smith <jdtsmith@gmail.com> (tiny change)
Make the Unicode tree widget prettier
@@ -51286,7 +51286,7 @@
(tree-widget):
(tree-widget-value-create): Use it.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command find-sibling-file
@@ -51295,7 +51295,7 @@
(find-sibling-rules, find-sibling-file): New user option and command.
(find-sibling-file--search): New helper function.
-2022-06-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file name encoding of Motif drop protocol file selections
@@ -51303,7 +51303,7 @@
(xselect-convert-to-dt-netfile): Encode in the file name coding
system instead of `raw-text-unix'.
-2022-06-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Extend file-expand-wildcards to allow regexps
@@ -51313,7 +51313,7 @@
* lisp/emacs-lisp/shortdoc.el (file): Expand the
file-expand-wildcards example.
-2022-06-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update documentation of 'aset' and 'store-substring'
@@ -51322,7 +51322,7 @@
have fewer or more bytes than the original. Add recommendations
regarding unibyte vs multibyte strings and characters. (Bug#55801)
-2022-06-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix drag-and-drop of files with multibyte filenames
@@ -51343,7 +51343,7 @@
(handle_one_xevent): Handle cases where hold_quit is nil inside
a selection event handler during DND.
-2022-06-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix sorting in ls-lisp.el under -v
@@ -51354,14 +51354,14 @@
* test/lisp/ls-lisp-tests.el (ls-lisp-test-bug55787): New test.
-2022-06-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug#55779
* src/xterm.c (x_update_opaque_region): Don't make GTK reset the
opaque region if F is a child frame.
-2022-06-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Better respect window manager stacking order
@@ -51373,7 +51373,7 @@
* src/xterm.h: Update prototypes.
-2022-06-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -51387,7 +51387,7 @@
5c74c25123 Remove from FAQ the MS-Windows info about BDF fonts
edb48646f2 Fix Display Property manual example
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix positioning of non-system tooltips on GTK builds
@@ -51395,13 +51395,13 @@
* src/xterm.c (handle_one_xevent): Set tooltip size immediately
on GTK builds.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adjust last change for GTK+ 2.x
* src/xterm.c (x_tooltip_window_to_frame): Fix build on GTK 2.x.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `mouse-position' work correctly with GTK tooltips
@@ -51410,11 +51410,11 @@
(XTmouse_position): Pass that, and if it turns out to be true,
look beneath the tooltip window.
-2022-06-04 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.4
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make loaddefs-generate--parse-file more robust
@@ -51422,7 +51422,7 @@
Ensure that we don't have an autoload cookie on the first column
inside a string.
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make skkdic-convert replacements literal
@@ -51432,13 +51432,13 @@
modification hooks", so this is mainly a stab in the dark at
fixing that, but it's also generally correct.)
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make vc-mtn obsolete
* lisp/obsolete/vc-mtn.el: Make obsolete (bug#6513).
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix failing shortdoc test
@@ -51446,7 +51446,7 @@
supposed to contain only examples of using the function in
question (as policed by the FAILED shortdoc-examples test).
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error during DND from both Emacs and GTK at the same time
@@ -51455,42 +51455,42 @@
MPX (multi-pointer X) is in use and the user tries to drag
from both GTK and Emacs at the same time using multiple seats.
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further raise-sexp doc string improvement
* lisp/emacs-lisp/lisp.el (raise-sexp): Fix the key binding syntax
in the doc string.
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the raise-sexp doc string
* lisp/emacs-lisp/lisp.el (raise-sexp): Try to explain what the
command does (bug#55788).
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix warnings introduced by the lisp-mode-autoload-regexp change
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs): The package name bit
in ###;;;foo-autoload may be missing, so do a lax match (bug#55784).
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a face to \\= doc string escapes
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs): Add a face to \\= doc
string escapes (bug#55783).
-2022-06-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further notes about quotation marks in the manual
* doc/lispref/tips.texi (Documentation Tips): Note that we
previously recommended using single quotation marks (bug#55780).
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow keyboard modifiers to control the action taken during dired DND
@@ -51503,11 +51503,11 @@
(dired-mouse-drag-files-map): Add C-down-mouse-1, M-down-mouse-1
and S-down-mouse-1.
-2022-06-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/emacs-lisp/shortdoc.el (string): Add `string-collate-lessp'.
-2022-06-04 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Grantha script (bug#55782)
@@ -51520,7 +51520,7 @@
* etc/HELLO: Add two Grantha greetings.
* etc/NEWS: Announce the new language environment.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file drag-and-drop on GNUstep
@@ -51529,7 +51529,7 @@
* src/nsterm.m: ([EmacsView performDragOperation:]): Handle
cases where plist is a string.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Support dragging multiple files on NS
@@ -51541,21 +51541,21 @@
* src/nsselect.m (ns_decode_data_to_pasteboard):
(Fns_begin_drag): Allow files to be a list of filenames as well.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix splurious drag-mouse-1 events after NS drag-and-drop
* src/nsterm.m ([EmacsWindow beginDrag:...]): Clear
dpyinfo->grabbed.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clear mouse face during drag-and-drop
* src/xterm.c (handle_one_xevent): Clear mouse face during drag
and drop, since note_mouse_highlight isn't called.
-2022-06-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clarify documentation of 'string-to-unibyte'
@@ -51563,14 +51563,14 @@
what 'string-to-unibyte' does. Reported by Richard Hansen
<rhansen@rhansen.org>. (Bug#55777)
-2022-06-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Another attempt to void compiler warnings on macOS (bug#55595)
* configure.ac (WERROR_CFLAGS): Use "-Wno-unknown-pragmas" with
Clang.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve doc of `mouse-drag-mode-line-buffer'
@@ -51579,7 +51579,7 @@
* etc/NEWS: Explain where that option is supported.
* lisp/mouse.el (mouse-drag-mode-line-buffer): Likewise.
-2022-06-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make XTmouse_position faster during dragging with lots of frames
@@ -51587,14 +51587,14 @@
(XTmouse_position): Use that to find tooltip frames underneath
the pointer instead.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leak of toplevel data
* src/xterm.c (x_dnd_compute_toplevels): Make sure to free
`data'.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leak of DND toplevels when return-frame is non-nil
@@ -51603,7 +51603,7 @@
(x_dnd_begin_drag_and_drop): Make this function reentrant from
the IO error handler.
-2022-06-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Post-review additions
@@ -51611,28 +51611,28 @@
Add :version.
(project--vc-list-files): Use 'and' instead of 'when'.
-2022-06-03 Jan Synáček <jan.synacek@gmail.com>
+2023-04-15 Jan Synáček <jan.synacek@gmail.com>
Add new user option project-vc-include-untracked
* doc/emacs/maintaining.texi (Projects): Document it.
* lisp/progmodes/project.el (project--vc-list-files): Use it.
-2022-06-03 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-query-replace-regexp: Filter out non-regular files
* lisp/progmodes/project.el (project-query-replace-regexp):
Filter out non-regular files (bug#55382).
-2022-06-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp test
* test/lisp/net/tramp-tests.el (tramp-test31-signal-process):
Skip on MS Windows.
-2022-06-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add remote file functions to shortdoc
@@ -51641,14 +51641,14 @@
(shortdoc): Configure shortdoc.el to recognize file name functions
for remote access.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix dired drag and drop actions
* lisp/dired.el (dired-mouse-drag): Make `link' values work
again.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle dragging multiple files on Haiku
@@ -51656,7 +51656,7 @@
(haiku-dnd-convert-file-name, x-begin-drag): Handle vector
values of selection data.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dragging multiple files from a Dired buffer
@@ -51677,14 +51677,14 @@
files
(a vector of file names):.
-2022-06-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't issue warnings for Unicode quotes for now
* lisp/emacs-lisp/bytecomp.el (byte-compile-docstring-style-warn):
Remove warning for "Unicode quotes" for now (bug#55780).
-2022-06-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert the `...' documentation back to actual usage
@@ -51692,7 +51692,7 @@
is really used now (bug#55780). ‘...’ is not really used in the
Emacs sources.
-2022-06-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Let ?\LF signal an error (bug#55738)
@@ -51703,7 +51703,7 @@
* test/src/lread-tests.el (lread-escaped-lf): Update test.
* etc/NEWS: Announce.
-2022-06-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix wrong value in idlwave-comment-indent-char
@@ -51713,7 +51713,7 @@
-1 most of the time, but will soon raise an error (bug#55738).
This doesn't matter much becaue this variable is unused.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new user option `mouse-drag-mode-line-buffer'
@@ -51722,7 +51722,7 @@
* lisp/mouse.el (mouse-drag-mode-line-buffer): New user option.
(mouse-drag-mode-line): Implement that option.
-2022-06-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add easier-to-use interfaces for initiating drag-and-drop
@@ -51741,7 +51741,7 @@
(dnd-begin-text-drag, dnd-begin-file-drag): New functions.
* src/xterm.c (x_dnd_begin_drag_and_drop): Add porting note.
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new user option battery-update-functions
@@ -51750,7 +51750,7 @@
(bug#55770).
(battery-update): Use it.
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove window-max-characters-per-line
@@ -51765,14 +51765,14 @@
* src/window.c (Fwindow_body_width): Adjust doc string.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK build
* src/xterm.c (x_dnd_begin_drag_and_drop) [USE_GTK]: Adjust call
to x_dnd_free_toplevels as well.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't call XSelectInput on a dying display when cancelling drag-and-drop
@@ -51782,7 +51782,7 @@
(handle_one_xevent): Change calls to `x_dnd_free_toplevels'.
(x_connection_closed, x_delete_terminal): Set it to false.
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make checkdoc-file-comments-engine match more ;;;### forms
@@ -51790,7 +51790,7 @@
the more general lisp-mode-autoload-regexp instead of
generate-autoload-cookie (i.e., also match ;;;###tramp-autoload).
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `M-x grep' work better with "git grep"
@@ -51798,7 +51798,7 @@
to avoid errors in output from "git grep" and similar commands
(bug#4359).
-2022-06-02 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Make ?\LF generate 10, not -1 (bug#55738)
@@ -51810,15 +51810,15 @@
and simplify.
* test/src/lread-tests.el (lread-escaped-lf): New test.
-2022-06-02 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/lread.c (skip_lazy_string): Fix uninitialised variable.
-2022-06-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/play/morse.el: Doc fixes.
-2022-06-02 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change)
+2023-04-15 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change)
Improve keystrokes in doc strings in some find-file functions
@@ -51827,7 +51827,7 @@
(find-file-other-frame): Include the correct keymap so that
keystrokes are displayed better (bug#55761).
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More gracefully handle errors during Motif drag window creation
@@ -51837,7 +51837,7 @@
XChangeProperty without leaking anything.
(x_error_handler): Fix coding style.
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix out-of-tree build problems with loaddefs.el
@@ -51851,7 +51851,7 @@
loaddefs-generate-batch can be used in general for packages etc.
(loaddefs-generate-batch): Remove the special code for Emacs builds.
-2022-06-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix segfaults when starting on 80x26 TTY frames
@@ -51861,14 +51861,14 @@
(adjust_frame_glyphs): Add assertions for when we fail to allocate
valid frame glyph matrices for a TTY frame.
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reinstate the Qload file name handler
* src/lread.c (Fload): Reinstate the Qload file name handler
(bug#12598). This makes loading non-ASCII elc.gz files work.
-2022-06-02 Frédéric Giquel <frederic.giquel@laposte.net> (tiny change)
+2023-04-15 Frédéric Giquel <frederic.giquel@laposte.net> (tiny change)
Use `read-process-output-max' when creating pipes on GNU/Linux
@@ -51876,41 +51876,41 @@
(create_process): Set the pipe size from `read-process-output-max'
(bug#55737).
-2022-06-02 yilkalargaw <yilkalargawworkneh@gmail.com>
+2023-04-15 yilkalargaw <yilkalargawworkneh@gmail.com>
Fix usage of absolute :height in manoj-dark-theme
* etc/themes/manoj-dark-theme.el (manoj-dark): Avoid using
absolute heights (bug#55759).
-2022-06-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up loaddefs-generate on slow disks
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Make file
update comparisons faster.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix rare crash when async input happens while creating xm drag window
* src/xterm.c (xm_get_drag_window): Work around XCloseDisplay
freezing upon being interrupted by a signal.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix macOS build
* src/nsterm.m (ns_mouse_position): Fix typos.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix potential NULL pointer dereference on NS
* src/nsterm.m (ns_mouse_position): Don't test f's tooltip-ness
if it's NULL.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix flickering tooltips with mouse DND without interprogram drag
@@ -51920,7 +51920,7 @@
special tooltip treatment to `dropping' as well as
`drag-source'.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tooltip frames leaking into mouse position on NS
@@ -51930,7 +51930,7 @@
([EmacsView mouseDown:]):
([EmacsView mouseMoved:]): Ignore events from tip frames.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle dropping text/uri-list on Haiku
@@ -51938,7 +51938,7 @@
extra whitespace.
(haiku-drag-and-drop): Handle "text/uri-list".
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix help-echo tooltips interfering with mouse drag-and-drop
@@ -51946,7 +51946,7 @@
tooltip-mode while mouse drag-and-drop is in progress. Also
restore state correctly in some more cases.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix flicker during mouse DND on Haiku as well
@@ -51954,13 +51954,13 @@
crossing if track-mouse is drag-source and the display is
grabbed.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix typos in last change
* src/xterm.c (handle_one_xevent): Fix typos.
-2022-06-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tooltips flickering on X during `mouse-drag-and-drop-region'
@@ -51971,7 +51971,7 @@
LeaveNotify if the display is grabbed and track-mouse is
drag-source.
-2022-06-01 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (strz): Fix wrong-type-argument error when unpacking
@@ -51980,7 +51980,7 @@
unspecified (variable) length.
* test/lisp/emacs-lisp/bindat-tests.el (strz): Mark test as passing.
-2022-06-01 Richard Hansen <rhansen@rhansen.org>
+2023-04-15 Richard Hansen <rhansen@rhansen.org>
bindat (strz): Fix off-by-one bug in computed length
@@ -51988,7 +51988,7 @@
computing packed string length.
* test/lisp/emacs-lisp/bindat-tests.el (strz): Mark tests as passing.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Motif drag-and-drop code
@@ -51997,14 +51997,14 @@
(enum xm_drop_site_status): Turn macros into enums.
(x_next_event_from_any_display): Fix initial value of rc.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix decoding of XdndStatus rectangles on 64-bit systems
* src/xterm.c (handle_one_xevent): Make data.l[2] and data.l[3]
unsigned.
-2022-06-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Revert "Fix reader char escape bugs (bug#55738)"
@@ -52012,7 +52012,7 @@
It may have caused bootstrap problems. Sorry about that.
-2022-06-01 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/simple.el (completion-setup-function): Use file-name-directory.
@@ -52021,7 +52021,7 @@
e.g. "/dir/prefix/" when completing "/dir/prefix".
OTOH, file-name-directory returns "/dir/" in such cases (bug#55743).
-2022-06-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid segfaults on MS-Windows when invoked with --version
@@ -52029,7 +52029,7 @@
'init_bignum' before calling 'format-time-string', as that is
needed for safe manipulation of bignums in timefns.c.
-2022-06-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix reader char escape bugs (bug#55738)
@@ -52048,7 +52048,7 @@
and simplify.
* test/src/lread-tests.el (lread-misc-2): New test.
-2022-06-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make files-tests.el more robust
@@ -52056,7 +52056,7 @@
(files-tests--with-temp-non-special-and-file-name-handler): Make
it more robust wrt parallel test jobs. (Bug#55706)
-2022-06-01 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
delete-selection-mode: Add user option to delete temporary regions only
@@ -52066,7 +52066,7 @@
* doc/emacs/mark.texi (Using Region): Document the new user option.
* etc/NEWS: Announce the new user option. (bug#55692)
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make it explicit that a couple of _s in lispref are underscores
@@ -52074,13 +52074,13 @@
* doc/lispref/control.texi (pcase Macro): Make it explicit that
it's an underscore (bug#55742).
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a comment to lisp/Makefile.in
* lisp/Makefile.in: Add FIXME comment.
-2022-06-01 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Place bookmarks without last-modified at the end
@@ -52088,7 +52088,7 @@
(bookmark-maybe-sort-alist): Fix sorting when there's no last
modified.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation of Lisp-level drag-and-drop features
@@ -52097,7 +52097,7 @@
drag-and-drop functionality, document what `dnd-protocol-alist'
actually means, and improve documentation on DND data types.
-2022-06-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make XEmacs compat code in gamegrid.el obsolete
@@ -52105,14 +52105,14 @@
XEmacs style glyph. (This is currently unused in the Emacs tree.)
(gamegrid-make-image-from-vector): Make obsolete.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that loaddefs-gen.elc is build before loaddefs.el is generated
* lisp/Makefile.in ($(lisp)/loaddefs.el): Make loaddefs.el depend
on loaddefs-gen.elc to ensure that it's built.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to x_next_event_from_any_display
@@ -52120,14 +52120,14 @@
XPending unless there is input to be read on the connection, and
don't call ConnectionNumber twice.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up the loaddefs-gen updating logic
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Only do the
updating logic if we're really updating.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix loaddefs generation"
@@ -52135,7 +52135,7 @@
This has been fixed in a different way.
-2022-06-01 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Hanifi Rohingya script (bug#55745)
@@ -52151,7 +52151,7 @@
* etc/HELLO: Add a Hanifi Rohingya greeting.
* etc/NEWS: Announce the new language environment.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Start the org -> texi conversion while doing byte compilation
@@ -52162,7 +52162,7 @@
compilation to make things more parallel. This shaves off about
ten seconds of a "make -j8" build.
-2022-06-01 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to their latest version
@@ -52218,7 +52218,7 @@
Release notes: <https://protesilaos.com/codelog/2022-06-01-modus-themes-2-4-0/>.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how loaddefs-gen decides whether to do a full update
@@ -52226,21 +52226,21 @@
complete build more often to avoid problems with going from old
loaddefs.el files to new ones.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif DND return value upon transfer failure
* src/xterm.c (handle_one_xevent): Make XmTRANSFER_FAILURE clear
DND action.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix loaddefs generation
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Prevent
one kind of string match error.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adjust last change to Haiku as well
@@ -52250,7 +52250,7 @@
(x-begin-drag): Handle alternative data specified in selection
local values.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up text/uri-list mess inside the Dired drag-and-drop code
@@ -52267,7 +52267,7 @@
properties (if it is a string) for a local value before using
tem itself.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix hangs when explicitly moving frames with input blocked
@@ -52275,7 +52275,7 @@
(x_sync_with_move): Use pselect to wait the 0.5 seconds instead
of wait_reading_process_output if input is blocked.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `allow-same-frame' for NS drag-and-drop
@@ -52290,21 +52290,21 @@
([EmacsWindow beginDrag:forPasteboard:withMode:returnFrameTo:]):
Likewise.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix creation of menu items without help text on Haiku
* src/haiku_support.cc (EmacsMenuItem): Don't mistakenly assume
help is non-NULL.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak MAIN_FIRST/ja-dic compilation
* lisp/Makefile.in (MAIN_FIRST): ja-dic-utl isn't used in the
conversion process, to don't compile it early.
-2022-06-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pselect usage mistakes
@@ -52312,21 +52312,21 @@
(x_wait_for_cell_change): Fix calls to pselect and tests against
return value.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't do OKURI-NASI until the conversion files have been compiled
* lisp/Makefile.in (generate-ja-dic): Byte-compile the ja-dic.el
file, too.
-2022-06-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Compile ja-dic files to speed OKURI-NASI up
* lisp/Makefile.in (MAIN_FIRST): Also compile ja-dic utils to
speed generation up.
-2022-06-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -52334,14 +52334,14 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-05-18 19:45:52 UTC.
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure byte compilation of the ja-dic.el file
* lisp/Makefile.in (generate-ja-dic): Byte-compile the ja-dic.el
file, too.
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reshuffle the generation of the OKURO-NASI entries to speed up build
@@ -52355,39 +52355,39 @@
compiled. On a AMD Ryzen 9 5950X 16-Core Processor this brings
compilation time on a "make -j32 bootstrap" down from 1m52s to 1m34s.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the GTK build
* src/xterm.c (x_wait_for_cell_change): Don't initialize rfds
on GTK.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve x_wait_for_cell_change
* src/xterm.c (x_wait_for_cell_change): Keep processing events
while still XPending.
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Note changes in ;;;### parsing
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the loaddefs updating logic
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Fix the
logic of updating -- we update per loaddefs file.
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix yank-in-context--transform after recent reversion
* lisp/simple.el (yank-in-context--transform): Fix call to
comment-region-default-1 after recent reverted patch.
-2022-05-31 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Add a last-modified field when a bookmark is set
@@ -52402,7 +52402,7 @@
(bookmark-maybe-sort-alist): sort in last-modified first order.
(bookmark-completing-read): use `bookmark-maybe-sort-alist'.
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Allow commenting out white space lines in latex-mode"
@@ -52410,7 +52410,7 @@
This was the wrong way to try to fix this -- see bug#55716.
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make partial loaddefs updates work again
@@ -52418,7 +52418,7 @@
the loaddefs section for the files that have changed. This makes
"git pull" (when few/no Lisp files have changed much faster).
-2022-05-31 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix handling of windows/buffers for non-nil completion-auto-select (bug#55712)
@@ -52434,14 +52434,14 @@
(next-completion): Add check for the minibuffer to support in-buffer
inline completions.
-2022-05-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Remove unused w32-* variables
* src/w32fns.c (syms_of_w32fns) <w32-bdf-filename-alist>
<w32-strict-fontnames>: Remove unused variables.
-2022-05-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Remove from FAQ the MS-Windows info about BDF fonts
@@ -52449,7 +52449,7 @@
specific steps, as BDF fonts are no longer supported on
MS-Windows. (Bug#55740)
-2022-05-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up generation of loaddefs files
@@ -52496,7 +52496,7 @@
* test/lisp/vc/vc-bzr-tests.el (vc-bzr-test-faulty-bzr-autoloads):
Use loaddefs instead of autoloads.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Convert FILE_NAME to refs on Haiku instead of text/uri-list
@@ -52506,14 +52506,14 @@
(haiku-dnd-convert-file-name): New function. Also handle remote
file names.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing part of recent changes to NS DND support
* lisp/term/ns-win.el (x-begin-drag): Implement `return-frame'
argument.
-2022-05-31 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Makasar and Lontara scripts (bug#55734)
@@ -52528,39 +52528,39 @@
* etc/HELLO: Add Makasar and Buginese greetings.
* etc/NEWS: Announce the new language environments.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Slightly optimize x_check_errors as well
* src/xterm.c (x_check_errors): Don't sync if no requests were
made since the error trap was installed.
-2022-05-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/play/handwrite.el: Minor doc fixes.
-2022-05-31 Antonio Ruiz <antonioruiz.math@gmail.com> (tiny change)
+2023-04-15 Antonio Ruiz <antonioruiz.math@gmail.com> (tiny change)
Make handwrite.el printing use more of the ps-print setup
* lisp/play/handwrite.el (handwrite): Allow ps-lpr-printer to be
computed at runtime (bug#55733).
-2022-05-31 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change)
+2023-04-15 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change)
Fix Display Property manual example
* doc/lispref/display.texi (Display Property): Fix syntax of
example (bug#55736).
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix replying to _NET_WM_PING during drag-and-drop
* src/xterm.c (handle_one_xevent): Test client window against
root window instead of using nonstandard event mask.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `return-frame' for DND on NS
@@ -52575,7 +52575,7 @@
([EmacsWindow beginDrag:forPasteboard:]): Update for
return-frame.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix autorelease pool "straddling" during DND on NS
@@ -52586,7 +52586,7 @@
([EmacsWindow beginDrag:forPasteboard:]): Block input around
dragImage.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 in x_get_current_wm_state
@@ -52594,49 +52594,49 @@
initialize reply_data to a non-null dummy value instead of to a
null one. This pacifies GCC 12 -Wanalyzer-null-dereference.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 in dump_queue_enqueue
* src/pdumper.c (dump_queue_enqueue): Use BASE_EQ, not EQ.
This pacifies GCC 12 -Wanalyzer-null-dereference.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Be more robust if doc file is corrupted
* src/doc.c (Fsnarf_documentation): Don’t dump core on a corrupted
doc file. Problem found by GCC 12 -Wanalyzer-null-argument.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 in Fmove_overlay
* src/buffer.c (Fmove_overlay): Use BASE_EQ, not EQ.
This pacifies GCC 12 -Wanalyzer-null-dereference.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 in Fx_show_tip
* src/xfns.c (Fx_show_tip): Use BASE_EQ, not EQ.
This pacifies GCC 12 -Wanalyzer-null-dereference.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 in xrdb.c
* src/xrdb.c (x_get_resource): Simply assign the return value.
This pacifies GCC 12 -Wanalyzer-use-of-uninitialized-value.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 false positive in ccl.c
* src/ccl.c: Suppress -Wanalyzer-use-of-uninitialized-value
in GCC 12 or later.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify CHAR_TABLE_REF_ASCII
@@ -52644,7 +52644,7 @@
for-loop. Redo an if-then-else to be an (!if)-else-then as this
is a bit cleaner, and it also works around GCC bug 105755.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Avoid undefined behavior in detect_coding routines
@@ -52656,14 +52656,14 @@
(detect_coding_system): Use consistent style with detect_coding
initialization.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 -fanalyzer in x_popup_menu_1
* src/menu.c (x_popup_menu_1): Rework to avoid unnecessary
initialization and test. This also pacifies GCC 12.
-2022-05-31 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 -Wanalyzer-use-of-uninitialized-value
@@ -52674,53 +52674,53 @@
the last slash was. This is a bit faster, and pacifies a GCC
false alarm.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes displaying menu help text on NS
* src/nsterm.m (ns_flush_display): Run event loop manually,
avoiding a double free of an autorelease pool.
-2022-05-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix processing of DND events on GTK
* src/xterm.c (x_dnd_begin_drag_and_drop): Clear `current_count'
and `current_hold_quit' after calling gtk_main_iteration.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix unused variables on GTK
* src/xterm.c (x_wait_for_cell_change): Fix unused variables
on GTK builds.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix initialization of `hold_quit' during DND
* src/xterm.c (x_dnd_begin_drag_and_drop): Use `EVENT_INIT'
instead of just setting type to NO_EVENT.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent events from being lost waiting for selections on GTK
* src/xterm.c (x_wait_for_cell_change): Use GTK to iterate the
main loop so events reach the toolkit.
-2022-05-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-05-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'debug-timer-check' on MS-Windows
* src/w32proc.c (w32_raise): New function.
* src/atimer.c (raise) [WINDOWSNT]: Redirect to 'w32_raise'.
-2022-05-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/project.el: Improve file-reading history and default values.
@@ -52728,7 +52728,7 @@
currently visited file as an alternative default value.
(project-find-file-in, project-find-dir): Use 'file-name-history' (bug#55267).
-2022-05-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Nonrecursive Lisp reader (bug#55676)
@@ -52760,7 +52760,7 @@
(read0): Rewrite to be nonrecursive.
* test/src/lread-tests.el (lread-deeply-nested, lread-misc): New tests.
-2022-05-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix atimer setting and overdue expiration (bug#55628)
@@ -52777,14 +52777,14 @@
debug-timer-check to fail, but that test is only run when Emacs is
built with enable-checking).
-2022-05-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add more subscript and superscript characters to "C-x 8"
* lisp/international/iso-transl.el (iso-transl-char-map): Add more
numerical superscript and subscript characters. (Bug#55722)
-2022-05-30 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Rejang script (bug#55718)
@@ -52798,7 +52798,7 @@
* etc/HELLO: Add a Rejang greeting.
* etc/NEWS: Announce the new language environment.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of `defvar-keymap' in flymake.el
@@ -52806,7 +52806,7 @@
(flymake-diagnostics-buffer-mode-map): Stop using
`defvar-keymap', since Flymake only requires Emacs 26.1.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix `dnd-indicate-insertion-point' on Mac OS
@@ -52816,7 +52816,7 @@
* src/nsterm.m ([EmacsView draggingUpdated:]): Redisplay here
instead.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update frame positions on Haiku after changing Z group
@@ -52824,7 +52824,7 @@
* src/haikufns.c (haiku_set_z_group): Ask for a position update,
since changing the Z group might change the feel of the window.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix cursor flushing inside minibuffers on NS
@@ -52832,7 +52832,7 @@
(ns_flush_display): New function.
(ns_redisplay_interface): Register `flush_display'.
-2022-05-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix hangs when x-get-selection is called inside a popup menu
@@ -52842,13 +52842,13 @@
* src/xterm.c (x_wait_for_cell_change): New function.
* src/xterm.h: Update prototypes.
-2022-05-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
1b7b69e764 Some Tramp cleanup on MS Windows
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to implement `dnd-indicate-insertion-point' on macOS
@@ -52858,7 +52858,7 @@
(syms_of_nsterm): Clean up old style defvars and add new
defvar for the DND drag function.
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Further clean up DND target handling
@@ -52871,28 +52871,28 @@
(x_connection_closed, x_delete_terminal): Stop calling
`x_set_dnd_targets' manually to free the targets list.
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when loading Postscript images
* src/xterm.c (handle_one_xevent): Catch errors around
`x_kill_gs_process'.
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XDrawPoint to clear relief rect corners
* xterm.c (x_clear_point): New function.
(x_draw_relief_rect): Use that instead.
-2022-05-29 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Document decoded-time-string issue on 6-elt args
* lisp/simple.el: Document problematic use of decoded-time-dst on
6-element args.
-2022-05-29 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
ISO 8601 strings sans "Z" don’t specify DST flag
@@ -52902,13 +52902,13 @@
* test/lisp/calendar/iso8601-tests.el (test-iso8601-combined)
(standard-test-time-of-day-zone): Adjust to new behavior.
-2022-05-29 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Doc fix for dst flag
* doc/lispref/os.texi (Time Conversion): Note Common Lisp dst differs.
-2022-05-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/shell.el (shell): Fix last change
@@ -52917,7 +52917,7 @@
While at it, make sure we set the `default-directory` of
the actual shell buffer after querying the user.
-2022-05-29 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Batak script (bug #55694)
@@ -52934,14 +52934,14 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix hfy-etags-cmd type
* lisp/htmlfontify.el (hfy-etags-cmd): Fix the type -- this
variable usually ends up being nil.
-2022-05-29 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix reference to help-enable-variable-value-editing
@@ -52949,12 +52949,12 @@
correct variable name.
* lisp/ldefs-boot.el (help-mode): Ditto (bug#55705).
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/tutorials/TUTORIAL.cn (INSTALLING PACKAGES): Translate
from English.
-2022-05-29 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some Tramp cleanup on MS Windows
@@ -52964,7 +52964,7 @@
* test/lisp/net/tramp-tests.el (tramp-test31-interrupt-process):
Skip on MS Windows.
-2022-05-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Traverse record literals in byte-compile--first-symbol-with-pos
@@ -52972,11 +52972,11 @@
Traverse record literals as well as vectors. Either is rather
pointless but there were some strong feelings about it.
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* admin/alloc-colors.c: Fix missing declaration.
-2022-05-29 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Make `count-words' count sentences.
@@ -52990,7 +52990,7 @@
* doc/emacs/basic.texi (Position Info): Update documentation for
sentence counting.
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Keep display mm width and height up to date after changes
@@ -53001,7 +53001,7 @@
* src/xterm.h (struct x_display_info): New fields
`screen_mm_width', `screen_mm_height'.
-2022-05-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make DND target list lifecycle a little clearer
@@ -53012,7 +53012,7 @@
(x_dnd_begin_drag_and_drop): Adjust to set targets here instead.
* src/xterm.h: Update prototypes.
-2022-05-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -53021,7 +53021,7 @@
fff770fb97 Fix a bad cross-reference in elisp.pdf
ebea3415b0 Fix documentation of 'string-pad'
-2022-05-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pending window changes in haiku_set_window_size
@@ -53029,14 +53029,14 @@
FRAME_RESIZED events, then call `do_pending_window_change'.
(haiku_read_socket): Allow waiting for FRAME_RESIZED events.
-2022-05-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve error trapping on X
* xterm.c (x_uncatch_errors, x_had_errors_p): Don't sync if no
request was made since the error trap was installed.
-2022-05-28 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix Python Hideshow problem with backslash escaped newlines
@@ -53045,14 +53045,14 @@
python-nav-*-defun to handle backslash escaped newlines
(bug#55690).
-2022-05-28 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
pp--insert-lisp: Don't bug out on certain forms at beginning of buffer
* pp.el (pp--insert): Check if point is in beginning of buffer before
calling `looking-back' (bug#55677).
-2022-05-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
with-connection-local-variables: Avoid code duplication
@@ -53068,7 +53068,7 @@
extracted from `with-connection-local-variables`.
(with-connection-local-variables): Use it.
-2022-05-28 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
do_switch_frame: before leaving mini-window, check other (mru) window is live
@@ -53082,7 +53082,7 @@
this ostensible window is an actual live window. Otherwise leave the
mini-window selected.
-2022-05-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix commands used to produce on-line HTML docs
@@ -53095,20 +53095,20 @@
Reported by "Facundo Lander via RT" <webmasters-comment@gnu.org>,
see gnu.org ticket #1840138.
-2022-05-28 Valenoern <valenoern@distributary.network> (tiny change)
+2023-04-15 Valenoern <valenoern@distributary.network> (tiny change)
Support html template tag in shr
* lisp/net/shr.el: Add shr-tag-template as a dummy tag.
-2022-05-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix native-comp of trampolines after previous change
* lisp/emacs-lisp/comp.el (comp--native-compile): Don't delete the
explicitly specified output file, just temp files.
-2022-05-28 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Sundanese script (bug#55686)
@@ -53124,14 +53124,14 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix a bad cross-reference in elisp.pdf
* doc/lispref/control.texi (pcase Macro): Fix a conditional
cross-reference (bug#55689).
-2022-05-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix dired drag-and-drop for certain Motif programs
@@ -53146,27 +53146,27 @@
(xselect-convert-to-dt-netfile): New functions.
(selection-converter-alist): New selection converter.
-2022-05-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'string-pad'
* doc/lispref/strings.texi (Creating Strings): Fix description of
'string-pad'. (Bug#55688)
-2022-05-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
d3cde28b03 Fix more occurrences of renamed kmacro-keymap command
bd5c95a90d Mention "unspecified-fg" and "unspecified-bg" in some doc ...
-2022-05-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more cursor bitmaps on Haiku
* src/haikufns.c (cursor_bitmaps_for_id): Add hourglass cursor.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation on what callers of `x-begin-drag' should do
@@ -53174,13 +53174,13 @@
* src/xfns.c (Fx_begin_drag): Improve documentation of how the
chosen action should be performed.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation of `x-begin-drag'
* src/xfns.c (Fx_begin_drag): Fix typos and improve wording.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve safety of various DND callbacks
@@ -53188,7 +53188,7 @@
events if DND is no longer in progress and don't call
x-dnd-movement-function.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame destruction issues and misuse of x_get_atom_name
@@ -53202,14 +53202,14 @@
* src/xterm.h: Update declarations.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build on earlier versions of Mac OS X
* src/nsselect.m (ns_decode_data_to_pasteboard): Respect
NS_USE_NSPasteboardTypeFileUrl.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add file dragging support to NS port
@@ -53221,7 +53221,7 @@
type.
(ns_lisp_to_pasteboard, Fns_begin_drag): Handle new type `file'.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve DND documentation
@@ -53229,34 +53229,34 @@
* src/xfns.c (Fx_begin_drag): Document that x-begin-drag may
return immediately if no mouse buttons are held down.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix x_dnd_movement_frame detection on GTK builds
* src/xterm.c (x_dnd_begin_drag_and_drop): Make sure movement
frame is on the correct display.
-2022-05-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove stray decl of nonexistent var
* src/lisp.h (symbols_with_pos_enabled): Remove decl.
-2022-05-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
decoded-time-set-defaults now leaves DST alone
* lisp/calendar/time-date.el (decoded-time-set-defaults):
Don’t mess with decoded-time-dst (Bug#55635).
-2022-05-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix unlikely null pointer dereference
* src/xselect.c (Fx_get_atom_name): Fix unlikely core dump when
build_string is called on a null pointer. Found by GCC -fanalyzer.
-2022-05-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Add ATTRIBUTE_DEALLOC to extern functions
@@ -53267,13 +53267,13 @@
Include stdlib.h so that ‘free’ is declared.
* src/xterm.h (x_get_atom_name): Add ATTRIBUTE_DEALLOC_FREE.
-2022-05-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -Wsuggest-attribute-malloc
* src/xterm.h (x_get_atom_name): Add ATTRIBUTE_MALLOC.
-2022-05-27 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix navigation in the *Completions* buffer and enable more tests (bug#54374)
@@ -53294,14 +53294,14 @@
(completion-auto-wrap-test, completions-header-format-test)
(completions-affixation-navigation-test): Uncomment fixed lines.
-2022-05-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Extend 'C-x 8 =' to produce characters with macron
* lisp/international/iso-transl.el (iso-transl-char-map): Add
several new sequences for characters with macron. (Bug#55668)
-2022-05-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/shell.el (shell): Query shell file name from `interactive`
@@ -53309,7 +53309,7 @@
and makes it easier to start a shell buffer running another shell than
your usual one.
-2022-05-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve font selection on MS-Windows
@@ -53323,27 +53323,27 @@
* src/w32font.c (add_font_entity_to_list): Fix USB values of Arial
Unicode MS font according to its actual coverage of scripts.
-2022-05-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make make-decoded-time use -1 for dst unless given
* lisp/calendar/time-date.el (make-decoded-time): DST -1 is the
value for "doesn't know", not nil (bug#55635).
-2022-05-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make package-update-all also refresh the list
* lisp/emacs-lisp/package.el (package-update-all): Also refresh
package list.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GNUstep build
* src/nsterm.h (NSPasteboardNameGeneral): Fix definition.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix NS drag and drop on macOS
@@ -53351,11 +53351,11 @@
* src/nsselect.m (Fns_begin_drag): Fix deprecation warnings and
selection/value mixup.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into x-window-xwidget
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement some drag and drop functions on NS
@@ -53377,11 +53377,11 @@
([EmacsWindow initWithEmacsFrame:fullscreen:screen:]): Clear that event.
([EmacsWindow dealloc]): Free last mouse event.
-2022-05-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/progmodes/asm-mode.el: Minor doc fixes.
-2022-05-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in some progmodes
@@ -53396,21 +53396,21 @@
* lisp/progmodes/mixal-mode.el (mixal-mode-map):
* lisp/progmodes/scheme.el (scheme-mode-map): Prefer defvar-keymap.
-2022-05-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler warning about x-pointer-invisible
* lisp/avoid.el (x-pointer-invisible): Declare to silence
byte-compiler.
-2022-05-27 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix more occurrences of renamed kmacro-keymap command
* doc/emacs/kmacro.texi (Basic Keyboard Macro): Fix documentation
after recent kmacro-redisplay command name change.
-2022-05-27 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Javanese script (bug#55667)
@@ -53424,18 +53424,18 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/PROBLEMS: Document problems with PGTK input methods.
-2022-05-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update comments in some X code
* src/xterm.c (x_parse_color): Update comment.
(syms_of_xterm): Add new debugging option too.
-2022-05-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Mention "unspecified-fg" and "unspecified-bg" in some doc strings
@@ -53444,21 +53444,21 @@
* lisp/color.el (color-name-to-rgb): Mention "unspecified-fg" and
"unspecified-bg" pseudo-colors on TTY frames. (Bug#55623)
-2022-05-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
9283508fb2 Fix format specifiers in tramp-adb.el
a9f17ccce3 ; Fix some doc typos and minor language issues
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XI scroll valuator reset on X Toolkit builds
* src/xterm.c (handle_one_xevent): Reset valuators on XI_Leave
if leave->event is an edit widget as well.
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve lookup efficiency of color cache and prevent leaking
@@ -53469,14 +53469,14 @@
* src/xterm.h (struct x_display_info): New field
`color_names_length'.
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle allocation errors when creating menu items on Haiku
* src/haiku_support.cc (class EmacsMenuItem): Don't abort on
failed strdup.
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix longjmp/siglongjmp mixup
@@ -53484,18 +53484,18 @@
(x_dnd_io_error_handler): Use `siglongjmp'. Reported by Ken
Brown <kbrown@cornell.edu>.
-2022-05-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
package-activate-all: Use the quickstart more conservatively
* lisp/emacs-lisp/package.el (package-activate-all): Don't use the
quickstart file if some packages have already been activated.
-2022-05-26 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Avoid duplicates in `package-activated-list'
@@ -53503,7 +53503,7 @@
`package-activate-all' twice leads to duplicates in
`package-activated-list' - avoid that.
-2022-05-26 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Test suite for Completions UI (bug#54374)
@@ -53513,7 +53513,7 @@
(completion-auto-wrap-test, completions-header-format-test)
(completions-affixation-navigation-test): New tests.
-2022-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
eval.c: New functions `defvar-1` and `defconst-1` (bug#55156)
@@ -53543,20 +53543,20 @@
* doc/lispref/variables.texi (Defining Variables): Adjust the doc of
`defvar` to reflect the actual semantics implemented.
-2022-05-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* test/lisp/files-resources/compile-utf8.el: Use lexical-binding
* etc/themes/leuven-dark-theme.el: Use lexical-binding
-2022-05-26 Hayden Shenk <hayden.shenk@zetier.com> (tiny change)
+2023-04-15 Hayden Shenk <hayden.shenk@zetier.com> (tiny change)
Fix format specifiers in tramp-adb.el
* lisp/net/tramp-adb.el (tramp-adb-get-device): Fix format
specifiers for port. (Bug#55651)
-2022-05-26 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Balinese script (bug#55648)
@@ -53572,7 +53572,7 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Faster and less recursive byte-compile--first-symbol-with-pos
@@ -53580,7 +53580,7 @@
(byte-compile--warning-source-offset):
Remove recursion for cdr-traversal of lists, and optimise (bug#55414).
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle alternate actions for Motif drop targets
@@ -53593,39 +53593,39 @@
(x_dnd_begin_drag_and_drop): Keep track of the set of
alternative drag-and-drop actions.
-2022-05-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make comp--native-compile delete the temp file it creates
* lisp/emacs-lisp/comp.el (comp--native-compile): Delete the
temporary files we create (bug#55611).
-2022-05-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make memory-report not bug out with symbols with positions
* lisp/emacs-lisp/memory-report.el (memory-report--object-size-1):
Don't bug out when there are symbols with positions.
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the `x_trace_wire' option
* src/xterm.c (x_trace_wire):
(x_term_init): Fix debugging code for modern C and Xlib.
-2022-05-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use x_get_atom_name for some more things
* src/xterm.c (x_dnd_send_unsupported_drop, x_dnd_send_drop):
Use x_get_atom_name instead of XGetAtomName.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xselect.c (Fx_register_dnd_atom): Use x_intern_cached_atom.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make X error checking more asynchronous
@@ -53645,20 +53645,20 @@
the X server and look for the error handler matching the display
and request serial when processing errors.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve x_get_atom_name for some predefined atoms
* src/xterm.c (x_get_atom_name): Handle XSETTINGS and cm atoms.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix 32-bit warnings again
* src/print.c (struct print_stack_entry): Make
u.list.tortoise_idx intmax_t.
-2022-05-25 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Limbu script (bug#55621)
@@ -53673,7 +53673,7 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -53696,11 +53696,11 @@
# etc/NEWS
# lisp/abbrev.el
-2022-05-25 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/subr.el (insert-for-yank): Add nil to run-hook-wrapped to keep looping.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Lower the roundtrip overhead of x-get-atom-name by 50% for common atoms
@@ -53711,7 +53711,7 @@
(x_get_atom_name): New function.
* src/xterm.h: Update prototypes.
-2022-05-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make yank-transform-functions into defvar
@@ -53719,7 +53719,7 @@
* lisp/simple.el (yank-transform-functions): Make into defvar
because it's not that useful as a user option.
-2022-05-25 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Reset 'eshell-in-pipeline-p' when interpolating commands
@@ -53730,7 +53730,7 @@
(eshell-test/subcommand-reset-in-pipeline)
(eshell-test/lisp-reset-in-pipeline): New tests (bug#55620).
-2022-05-25 Paul W. Rankin <pwr@bydasein.com>
+2023-04-15 Paul W. Rankin <pwr@bydasein.com>
Change variable which-func-unknown to "n/a"
@@ -53739,14 +53739,14 @@
indicate an error whereas the latter is more indicative that the
current function is not known.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more predefined atoms for the benefit of DND code
* src/xterm.c (x_intern_cached_atom): Handle `CARDINAL' and
`WINDOW' as well.
-2022-05-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap in url/*.el
@@ -53754,7 +53754,7 @@
* lisp/url/url-dired.el (url-dired-minor-mode-map): Prefer
defvar-keymap.
-2022-05-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some ancient Emacs compat code
@@ -53768,7 +53768,7 @@
* lisp/progmodes/cfengine.el (cfengine-fill-paragraph): Remove Emacs
21 compat code.
-2022-05-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve atom interning in `x-change-window-property'
@@ -53778,73 +53778,73 @@
`predefined_only'. All callers changed.
* src/xterm.h: Update prototypes.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix cursor color adjustment on Haiku
* src/haikufns.c (haiku_set_foreground_color): Maybe set cursor
color correctly if it was equal to the old foreground color.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't have edebug bug out if C-x is rebound
* lisp/emacs-lisp/edebug.el (edebug-global-prefix): Don't bug out
if C-x has been rebound (bug#55607).
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more atoms that don't need a roundtrip to intern
* src/xterm.c (x_intern_cached_atom): Handle dpyinfo atoms that
depend on the screen number and common selection atoms.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update edebug comments
* lisp/emacs-lisp/edebug.el: Update function name in comments
(bug#55607).
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix ert-run-tests-batch-and-exit doc string typo
* lisp/emacs-lisp/ert.el (ert-run-tests-batch-and-exit): Fix doc
string typo.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Autoload package-update-all
* lisp/emacs-lisp/package.el (package-update-all): Autoload and
tweak querying so that -f works.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compilation on GTK when Xrandr is not present
* src/xterm.c (x_term_init): Make term always present on GTK.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix comp-mvar doc string quoting
* lisp/emacs-lisp/comp.el (comp-mvar): Fix quoting of symbol in
doc string.
-2022-05-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove f90-mode regexp ambiguity (bug#17222)
* lisp/progmodes/f90.el (f90-font-lock-keywords-2):
Modify regexp to be better-behaved.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't use `format-message' to make doc strings in erc-backend
@@ -53853,13 +53853,13 @@
the doc string later when the user asks for help about the symbols
defined.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a byte compilation warning in electric.el
* lisp/electric.el (electric-quote-mode): Quote a naked ‘ character.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make byte compilation warn about wrong quoting in doc strings
@@ -53871,7 +53871,7 @@
(byte-compile-file-form-defvar-function, byte-compile-lambda)
(byte-compile-defvar, byte-compile-file-form-defalias): Adjust callers.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the final divergent single quote usages in doc strings
@@ -53884,7 +53884,7 @@
(semantic-orphaned-member-metaparent-type): Audit usages of single
quotes in doc strings.
-2022-05-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix interplay between string fences and electric-pair-mode.
@@ -53900,7 +53900,7 @@
(c-electric-brace, c-electric-lt-gt, c-electric-paren): Put the calls to
electric-pair-post-self-insert-function outside of c-with-string-fences.
-2022-05-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Make `yank-transform-functions` a proper hook
@@ -53908,14 +53908,14 @@
`yank-transform-functions`.
* lisp/simple.el (yank-transform-functions): Adjust accordingly.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix issue with nativecomp tests leaving files behind in /tmp
* test/src/comp-tests.el (comp-deftest): Ensure that no files are left
behind (bug#55611).
-2022-05-24 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Buhid and Tagbanwa scripts (bug#55610)
@@ -53932,14 +53932,14 @@
* etc/NEWS: Announce the new language environments and their
input methods.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up a test file in /tmp
* test/src/buffer-tests.el (test-restore-buffer-modified-p): Clean
up autosave file in /tmp.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more error checking to some X functions
@@ -53956,21 +53956,21 @@
* src/xterm.h: Update prototypes.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent errors when Lisp code asks for props of invalid windows
* src/xfns.c (Fx_window_property):
(Fx_window_property_attributes): Catch X errors.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle invalid NEWS files during describe-function
* src/help-fns.el (help-fns--first-release): Don't error if
searching for a heading fails.
-2022-05-24 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Keep subcommands in pipelines from clobbering the head/tail processes
@@ -53985,21 +53985,21 @@
* doc/misc/eshell.texi (Bugs and ideas): Remove item about piping to
process from loop; this commit fixes it (bug#55590).
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak remapping fix for set-transient-map
* lisp/subr.el (set-transient-map): The remapping doesn't have to
be in this map.
-2022-05-24 Štěpán Němec <stepnem@gmail.com>
+2023-04-15 Štěpán Němec <stepnem@gmail.com>
Add elisp-eldoc-var-docstring-with-value function
* lisp/progmodes/elisp-mode.el
(elisp-eldoc-var-docstring-with-value): New function (bug#55096).
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the nativecomp test eln directory more reliably be removed
@@ -54011,11 +54011,11 @@
* lisp/emacs-lisp/ert.el (ert-run-tests-batch-and-exit): Create
the nativecomp directory.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further audits of single quotes in Lisp doc strings
@@ -54048,7 +54048,7 @@
(ansi-color-names-vector): Audit use of various single quotes in
Lisp doc strings.
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Audit symbol quoting in Lisp doc strings
@@ -54062,14 +54062,14 @@
* lisp/emacs-lisp/byte-run.el (define-obsolete-variable-alias):
Audit symbol quoting in Lisp doc strings.
-2022-05-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add ".epub" to Tramp archive file suffixes.
* doc/misc/tramp.texi (Archive file names):
* lisp/net/tramp-archive.el (tramp-archive-suffixes): Add ".epub".
-2022-05-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Audit quoting symbols in C doc strings
@@ -54085,7 +54085,7 @@
* lib-src/make-docfile.c (scan_c_stream): Audit quoting symbols in C
doc strings.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow the user to fix `x-mouse-click-focus-ignore-position' on some systems
@@ -54093,18 +54093,18 @@
(syms_of_xterm): Update doc string and add new option to adjust
the focus click timeout.
-2022-05-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix use of wrong event structure handling XI_Enter events
* src/xterm.c (handle_one_xevent): Use `enter' instead of `xev'
to set the mouse click timeout.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/nsmenu.m (ns_menu_show): Use SAFE_ALLOCA.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to cursor color handling on Haiku
@@ -54117,7 +54117,7 @@
* src/haikuterm.c (haiku_merge_cursor_foreground): Fix color
equality test.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only send fallback MONITORS_CHANGED_EVENT when dimensions really changed
@@ -54125,7 +54125,7 @@
configure width and height are not the same as the previously
recorded ones.
-2022-05-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid compiler warnings on macOS (bug#55595)
@@ -54133,7 +54133,7 @@
* src/comp.c (load_comp_unit): Avoid Clang compilation warning.
-2022-05-23 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Less wrong printed circular list tail index (bug#55395)
@@ -54152,11 +54152,11 @@
* test/src/print-tests.el (print-test-rho, print-circular):
New test.
-2022-05-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/w32menu.c (w32_menu_show): Use SAFE_ALLOCA. (Bug#55068)
-2022-05-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix saveplace.el when desktop.el restores non-ASCII buffers
@@ -54164,34 +54164,34 @@
'coding-system-for-read' to nil, so that the 'coding:' cookie in
the save-place file takes effect. (Bug#55592)
-2022-05-23 Tino Calancha <tino.calancha@gmail.com>
+2023-04-15 Tino Calancha <tino.calancha@gmail.com>
zap-to-char: Fix interactive specification
* lisp/simple.el (zap-to-char): Include t in the list.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adapt last change to Haiku as well
* src/haikumenu.c (digest_menu_items, haiku_menu_show): Use
SAFE_ALLOCA for various temporary buffers.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix stack overflows with large popup menus
* src/xmenu.c (x_menu_show): Allocate various stacks with
SAFE_ALLOCA.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix default child-frame-border-width on PGTK
* src/pgtkfns.c (Fx_create_frame): Make default
`child-frame-border-width' nil. (bug#55588)
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve command-error-function discoverability
@@ -54199,7 +54199,7 @@
* src/keyboard.c (syms_of_keyboard): Add an example (bug#40750).
-2022-05-23 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Hanunoo script (bug#55581)
@@ -54214,21 +54214,21 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make remapped keys work in set-transient-map
* lisp/subr.el (set-transient-map): Make remapped keys work in
transient maps (bug#40096).
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding style of recent change
* src/emacs.c (main): Fix coding style by putting the = operator
on the right row.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement monitor change functions on Haiku
@@ -54246,7 +54246,7 @@
* src/haikuterm.c (haiku_read_socket): Handle new event.
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `d' in Dired skip dot files
@@ -54254,21 +54254,21 @@
makes `C-u 10 d' (etc) consistent with marking the next ten lines
with the mouse and then hitting `d'.
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Include development data in --version output
* src/emacs.c (main): Include development into in --version output
(bug#38657).
-2022-05-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (switch-to-buffer-other-tab): Use pop-to-buffer (bug#55582).
Replace display-buffer with pop-to-buffer that sets the current buffer
explicitly.
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow extending 'save-some-buffers'
@@ -54281,19 +54281,19 @@
(save-buffers-kill-emacs): Also use it to see if we have something
to save (bug#55579).
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make bootstrap remove more generated files
* Makefile.in (bootstrap-clean): Remove lisp/leim/ja-dic/.
-2022-05-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make bootstrap remove the native-lisp/ directory
* Makefile.in (bootstrap-clean): Remove the native-lisp/ directory.
-2022-05-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to PGTK child frames
@@ -54305,7 +54305,7 @@
child frames. There are no problems here.
* src/pgtkterm.c (pgtk_mouse_position): Clean up coding style.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement monitor change functions on GNUstep
@@ -54321,14 +54321,14 @@
([EmacsApp updateMonitors:]): New method.
(syms_of_nsterm): New staticpro.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle screen size changes if the RandR library isn't available
* src/xterm.c (handle_one_xevent): [!HAVE_XRANDR]: Store
MONITORS_CHANGED_EVENT upon root window reconfiguration.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix `gui-backend-selection-owner-p' on Haiku
@@ -54343,7 +54343,7 @@
(Fhaiku_selection_owner_p): Update selection counts as well.
* src/haikuselect.h: Update prototypes.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use GDK for handling monitor changes when built with GTK
@@ -54356,7 +54356,7 @@
* src/xterm.h (struct x_display_info): Enable
`last_monitor_attributes_list' on GTK builds as well.
-2022-05-22 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Recognize DCC SSEND when receiving files in erc-dcc
@@ -54370,7 +54370,7 @@
(erc-dcc-handle-ctcp-send): Set secure flag when a leading "S" appears
in the command type.
-2022-05-22 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Accommodate nonstandard turbo file senders in erc-dcc
@@ -54397,7 +54397,7 @@
* test/lisp/erc/erc-dcc-tests.el: Add new file.
(Bug#54458)
-2022-05-22 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Allow matching against string values in erc-dcc-member
@@ -54406,7 +54406,7 @@
(erc-dcc-do-GET-command): Pass file name when querying
`erc-dcc-member'. (Bug#54458)
-2022-05-22 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't send reports in erc-dcc-get-filter when nested
@@ -54414,7 +54414,7 @@
"received so far" receipt if another attempt is still ongoing.
(Bug#54458)
-2022-05-22 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Summarize failed transfers in erc-dcc
@@ -54425,11 +54425,11 @@
(erc-dcc-get-file): Tweak initialization of `erc-dcc-entry-data'.
(Bug#54458)
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/cedet/semantic/fw.el: Fix typo
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
mode-local: Revert the deprecation of buffer-local overrides
@@ -54443,7 +54443,7 @@
d2e0d1452b976a51579cf044257326850804c562, and
3294ad44ebcd024b4ada68d00bedca33acc52de6.
-2022-05-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bytecomp-test--with-suppressed-warnings test
@@ -54451,7 +54451,7 @@
(bytecomp-test--with-suppressed-warnings): Adjust test to change
in warning message.
-2022-05-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous warning suppression change
@@ -54461,14 +54461,14 @@
* lisp/cedet/semantic/fw.el (semantic-install-function-overrides):
The `wrong-args' warning is really called `callargs'.
-2022-05-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warning in semantic-install-function-overrides
* lisp/cedet/semantic/fw.el (semantic-install-function-overrides):
Suppress message about wrong number of arguments.
-2022-05-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow suppressing messages about the wrong number of arguments
@@ -54478,7 +54478,7 @@
(byte-compile-subr-wrong-args): Allow suppressing wrong number of
arguments.
-2022-05-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Enable keys M-down, M-up, M-RET for in-buffer completion
@@ -54497,7 +54497,7 @@
https://lists.gnu.org/archive/html/emacs-devel/2022-05/msg00916.html
-2022-05-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Restore string fence properties at each relevant external entry point
@@ -54529,28 +54529,28 @@
* lisp/progmodes/cc-guess.el (c-guess-region-no-install): These are all
"boundary" functions to CC Mode. Surround each by c-with-string-fences.
-2022-05-22 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Don't font-lock invalid invalid class/function names
* lisp/progmodes/python.el (python-font-lock-keywords-level-1):
Don't font-lock invalid invalid class/function names (bug#55573).
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
mode-local: Deprecate buffer-local overrides
* lisp/cedet/mode-local.el (mode-local-bind): Make all args mandatory.
Deprecate the use of a nil `mode` argument.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
semantic-install-function-overrides: Declare obsolete
* lisp/cedet/semantic/fw.el (semantic-install-function-overrides):
Declare obsolete.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
wisent.el: Prefer `define-mode-local-override`
@@ -54565,7 +54565,7 @@
* lisp/cedet/semantic/grm-wy-boot.el: Refresh.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
wisent/grammar.el: Prefer `define-mode-local-override`
@@ -54575,7 +54575,7 @@
(wisent-grammar-mode): Don't override them with
`semantic-install-function-overrides`.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cedet/html.el: Prefer `define-mode-local-override`
@@ -54584,7 +54584,7 @@
(semantic-default-html-setup): Don't override via
`semantic-install-function-overrides`.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
bovine/grammar.el: Prefer `define-mode-local-override`
@@ -54594,7 +54594,7 @@
(bovine-grammar-mode): Don't override them with
`semantic-install-function-overrides`.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cedet/texi.el: prefer `define-mode-local-override`
@@ -54603,7 +54603,7 @@
(semantic-default-texi-setup): Don't override them with
`semantic-install-function-overrides`.
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
comp.el: Cosmetic changes
@@ -54611,7 +54611,7 @@
(comp-run-async-workers): Don't set `buffer-read-only` directly.
(native--compile-async): Fix misuse of "path".
-2022-05-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Run `minibuffer-exit-hook` in the right buffer
@@ -54619,11 +54619,11 @@
and run the hook in that buffer.
(read_minibuf): Adjust accordingly.
-2022-05-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/window.el (display-buffer-avoid-small-windows): Fix :type.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Haiku code
@@ -54637,7 +54637,7 @@
* src/haikuterm.c (haiku_read_socket): Update comment.
-2022-05-22 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix two typos in comments in python.el
@@ -54645,7 +54645,7 @@
(python-font-lock-keywords-maximum-decoration): Fix typos in
comments (bug#55557).
-2022-05-22 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Fix submit-emacs-patch
@@ -54658,7 +54658,7 @@
* lisp/mail/emacsbug.el (submit-emacs-patch): Make sure point is in
the body before inserting new lines (bug#55571).
-2022-05-22 Lele Gaifax <lele@metapensiero.it>
+2023-04-15 Lele Gaifax <lele@metapensiero.it>
Properly indent Python PEP634 match/case blocks
@@ -54673,14 +54673,14 @@
python-indent-after-case-block): New tests to verify indentation of
"match" and "case" blocks (bug#55572).
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `display-monitors-changed-functions' on MS Windows
* src/w32term.c (w32_read_socket): Handle WM_DISPLAYCHANGE by
sending monitor change events.
-2022-05-22 Damien Cassou <damien@cassou.me>
+2023-04-15 Damien Cassou <damien@cassou.me>
Improve documentation of mail-user-agent.
@@ -54688,7 +54688,7 @@
* lisp/simple.el (mail-user-agent): Mention additional options
of non-bundled MUA. (Bug#5569)
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix uninitialized use of xm drag receiver data
@@ -54696,14 +54696,14 @@
protocol is invalid. Reported by Jashank Jeremy
<jashank@rulingia.com.au>.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build with --enable-check-lisp-object-type
* src/xterm.c (handle_one_xevent): Fix use of Fequal. Reported
by Jashank Jeremy <jashank@rulingia.com.au>.
-2022-05-22 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Tagalog script
@@ -54720,28 +54720,28 @@
input method.
(Bug#55529)
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix use-after-free in x_destroy_window
* src/xterm.c (x_destroy_window): Fix use after free of the
dpyinfo.
-2022-05-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix focus redirection to/from surrogate minibuffer frames on Haiku
* src/haikuterm.c (haiku_get_focus_frame): New function.
(haiku_create_terminal): Register new hook.
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GNUstep build
* src/nsfns.m (ns_implicitly_set_icon_type): Don't use UTType if
GNUstep.
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warnings on Mac OS X 10.12
@@ -54755,14 +54755,14 @@
initWithFrame:configuration:xwidget:]): Fix uses of obsolete
things.
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set display size upon RRScreenChangeNotify
* src/xterm.c (handle_one_xevent): Handle RRScreenChangeNotify
correctly.
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't unnecessarily call monitor change functions
@@ -54772,14 +54772,14 @@
* src/xterm.h (struct x_display_info): New field
`last_monitor_attributes_list'.
-2022-05-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
More fixes in abbrev.el doc strings
* lisp/abbrev.el (inverse-add-global-abbrev, inverse-add-mode-abbrev):
Document the effect of negative ARG. (Bug#55527)
-2022-05-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some cleanups in tramp-tests.el
@@ -54790,20 +54790,20 @@
(tramp--test-check-files): Delete directory recursively.
(tramp-test43-file-system-info): Make test more robust.
-2022-05-21 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix recently introduced Python font lock breakage of chained assignments
* lisp/progmodes/python.el (python-font-lock-assignment-matcher):
Fix fontification of chained assignments (bug#54992).
-2022-05-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge from origin/emacs-28
f836ed098f Some minor Tramp fixes
-2022-05-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new hooks when enabling and disabling themes
@@ -54811,21 +54811,21 @@
hooks (bug#37802).
(enable-theme, disable-theme): Call them.
-2022-05-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add note about Tramp completion to completion-styles doc string
* lisp/minibuffer.el (completion-styles): Add note about Tramp
completion (bug#37954).
-2022-05-21 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Remove mention of removed nnimap-nov-is-evil variable
* doc/misc/gnus.texi (Slow/Expensive Connection): Remove mention
of removed nnimap-nov-is-evil variable (bug#55556).
-2022-05-21 Tino Calancha <tino.calancha@gmail.com>
+2023-04-15 Tino Calancha <tino.calancha@gmail.com>
zap-to-char: case sensitive for upper-case characters
@@ -54844,7 +54844,7 @@
* test/lisp/simple-tests.el (with-zap-to-char-test): Add helper macro.
(simple-tests-zap-to-char): Add a test.
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve doc for `display-monitors-changed-functions'
@@ -54852,7 +54852,7 @@
retrieve the new monitor configuration inside
`display-monitor-attributes-list'.
-2022-05-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation strings and prompts in abbrev.el
@@ -54878,7 +54878,7 @@
(add-abbrev, inverse-add-abbrev): Improve the prompt text.
(Bug#55527)
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warnings in printer code on 32-bit systems
@@ -54888,7 +54888,7 @@
like it was before the nonrecursive printing was installed.
Also clarify what "Brent cycle detection" means in the comments.
-2022-05-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Compute frame workareas on Haiku
@@ -54904,7 +54904,7 @@
function.
(syms_of_haikufns): Register new subr.
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement monitor change hooks on NS
@@ -54914,7 +54914,7 @@
* nsterm.m (ns_displays_reconfigured): New function.
(ns_term_init): Register display reconfiguration callbacks.
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Call XRRUpdateConfiguration when the root window geometry changes
@@ -54922,7 +54922,7 @@
on RRScreenChangeNotify and upon ConfigureNotify events for the
root window.
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `display-monitors-changed-hook' on PGTK
@@ -54931,7 +54931,7 @@
(pgtk_monitors_changed_cb): New function.
(pgtk_term_init): Attach new signal handler.
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add a hook run upon monitor configuration changes
@@ -54952,7 +54952,7 @@
* src/xterm.h (struct x_display_info): Improve RandR version
detection.
-2022-05-20 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Restore the Fselect_window call in gui_consider_frame_title.
@@ -54975,7 +54975,7 @@
* src/xdisp.c (gui_consider_frame_title): Replace the Fselect_window call and
associated ancillary settings.
-2022-05-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove compat code; assume imenu.el exists
@@ -54986,28 +54986,28 @@
* lisp/speedbar.el (speedbar-use-imenu-flag): Remove compat code;
assume imenu.el exists.
-2022-05-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Advise against settings in the MS-Windows system registry
* doc/emacs/cmdargs.texi (MS-Windows Registry): Advise against
setting environment variables in the system registry. (Bug#16429)
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Check for allocation errors when setting XdndActionDescription
* src/xterm.c (x_dnd_begin_drag_and_drop): Check for BadAlloc
when setting action descriptions.
-2022-05-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document 'enriched-toggle-markup'
* etc/enriched.txt: Document the new 'enriched-toggle-markup'
command. (Bug#33855)
-2022-05-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option display-buffer-avoid-small-windows
@@ -55016,13 +55016,13 @@
option (bug#10186).
(get-lru-window): Use it.
-2022-05-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify select-active-regions doc string
* src/keyboard.c (syms_of_keyboard): Clarify doc string (bug#29889).
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions processing zoom events on Haiku
@@ -55033,14 +55033,14 @@
* src/haikuterm.c (haiku_read_socket): Use that instead of the
current frame's fullscreen mode.
-2022-05-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-fix previous `&' dired change
* lisp/dired-aux.el (dired-shell-stuff-it): Re-fix the previous
change -- the &wait was in the wrong place (bug#36331).
-2022-05-20 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add option to kill a shell buffer when the process ends
@@ -55048,14 +55048,14 @@
(shell): Respect 'shell-kill-buffer-on-quit'.
* NEWS: Mention 'shell-kill-buffer-on-quit'.
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix NS port warnings with GCC 12
* src/nsterm.m (ns_draw_glyphless_glyph_string_foreground):
Clear s->char2b after function returns.
-2022-05-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove flickering when toggling between different fullscreen states on Haiku
@@ -55066,7 +55066,7 @@
NONE.
(SetFullscreen): Use rect provided by ClearFullscreen instead.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor cleanups to X drag-and-drop code
@@ -55077,7 +55077,7 @@
(x_dnd_compute_toplevels): Don't hard-code the supported Motif
protocol version.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `cross-disabled-images' on Haiku
@@ -55089,7 +55089,7 @@
* src/image.c (image_pixmap_draw_cross, image_disable_image):
Implement drawing cross on Haiku.
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename compare-window-configurations and update doc
@@ -55103,14 +55103,14 @@
* src/window.c (Fwindow_configuration_equal_p): Rename (bug#14964).
-2022-05-19 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix typo and argument in treesit-beginning-of-defun, etc
* lisp/treesit.el (treesit-beginning-of-defun, treesit-end-of-defun):
Fix typo, add shield for argument.
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't have the tutorial ask to save if we haven't moved
@@ -55118,7 +55118,7 @@
hasn't moved point (bug#37326).
(help-with-tutorial): Set the start point.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement more data type conversions for Haiku selections
@@ -55128,7 +55128,7 @@
(Fhaiku_drag_message): Recognize `double' and `float' types.
(syms_of_haikuselect): New defsyms.
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix font-locking of (defun foo (function ...))
@@ -55136,7 +55136,7 @@
Don't colorize the `function' in (defun foo (function ...)) as a
special form (bug#37074).
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make diff--font-lock-prettify do less if we don't have a left fringe
@@ -55144,7 +55144,7 @@
insert/deletions from the buffer if we don't have a left fringe
(bug#37019).
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new command 'yank-in-context'
@@ -55156,21 +55156,21 @@
escaped-string-quote function.
* lisp/progmodes/sql.el (sql-mode): Define escaped-string-quote.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix session management detection of the first X display
* src/xterm.c (x_term_init): Check that there is no other
display in the chain instead of testing the terminal ID.
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify yank-transform-functions doc string
* lisp/simple.el (yank-transform-functions): Clarify calling
convention.
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make completion in emacs-lisp-mode intern fewer symbols
@@ -55178,21 +55178,21 @@
intern the string before point just to check whether we're looking
at `ignore-error' (bug#55491).
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `&' in dired be more consistent wrt. user input
* lisp/dired-aux.el (dired-do-async-shell-command): Mention that
commands here don't accept input.
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command 'enriched-toggle-markup'
* lisp/textmodes/enriched.el (enriched-toggle-markup): New command
(bug#33855).
-2022-05-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option 'yank-transform-functions'
@@ -55204,14 +55204,14 @@
* lisp/subr.el (insert-for-yank): Use it.
-2022-05-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Provide Oriya language-environment alongside Odia
* lisp/language/indian.el ("Oriya"): Add another name for the Odia
language-environment. (Bug#55493)
-2022-05-19 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Rename Oriya to Odia, and more
@@ -55230,7 +55230,7 @@
Add a Hindi greeting separate from the Devanagari one.
(Bug#55493)
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Whitelist some incorrectly labeled "color" fonts under Xft
@@ -55243,21 +55243,21 @@
* src/xftfont.c (syms_of_xftfont): New variable
`xft-color-font-whitelist'.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tooltip buffer flipping inside popup menus
* src/xterm.c (x_flip_and_flush): Don't ignore if
`inhibit-redisplay' but F is a tooltip frame. (bug#55519)
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error handling when allowing touch events
* src/xterm.c (handle_one_xevent): Catch errors correctly when
linking touch points.
-2022-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't ignore flymake-no-changes-timeout
@@ -55284,7 +55284,7 @@
Suggested-by: Jim Davis <jim.jd.davis@gmail.com>
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/508
-2022-05-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix Flymake diagnostics reporting in non-UTF-8 locales
@@ -55294,14 +55294,14 @@
needed because ELisp files use UTF-8 by default, but Flymake
doesn't know about that, since it isn't specific to ELisp.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix specifying terminal names to some functions on Haiku
* src/haikufns.c (haiku_display_info_for_name): Implement
correctly.
-2022-05-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Satisfy Valgrind when iconifying frames
@@ -55309,7 +55309,7 @@
WM_CHANGE_STATE message to 0 instead of leaving it
uninitialized.
-2022-05-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions processing frame fullscreen state on Haiku
@@ -55340,7 +55340,7 @@
* src/haikuterm.h (struct haiku_output): Remove flag `zoomed_p'
and add field `fullscreen_mode'.
-2022-05-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respond to changes to the size of the root window
@@ -55354,7 +55354,7 @@
(x_display_pixel_height, x_display_pixel_width): Make
prototypes.
-2022-05-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete entry on SPC completes file names from FAQ
@@ -55362,14 +55362,14 @@
node: this is about a change that took place over 15 years ago and is
not likely to be a FAQ these days.
-2022-05-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't refer to obsolete Ultrix support in FAQ
* doc/misc/efaq.texi (Meta key does not work in xterm): Delete
reference to Ultrix; that platform support was removed in Emacs 23.1.
-2022-05-18 Paul Eggert <eggert@day>
+2023-04-15 Paul Eggert <eggert@day>
Avoid formatting twice in flymake
@@ -55377,14 +55377,14 @@
message twice, as that can translate quotes we don't want
translated.
-2022-05-18 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Fix last change in minibuffer-lazy-highlight-setup
* lisp/isearch.el (minibuffer-lazy-highlight-setup): Apply advices
buffer-locally.
-2022-05-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new display-buffer-full-frame display action
@@ -55396,14 +55396,14 @@
(display-buffer--action-function-custom-type): Add.
(display-buffer): Mention it.
-2022-05-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention next-error-function in flymake-mode doc string
* lisp/progmodes/flymake.el (flymake-mode): Note that you can set
next-error-function (bug#32322).
-2022-05-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement gamma-correction on Haiku
@@ -55413,7 +55413,7 @@
* src/haikuterm.c (haiku_defined_color): Gamma-correct colors if
their pixels are being allocated.
-2022-05-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve previous apropos-documentation-check-elc-file change
@@ -55421,7 +55421,7 @@
comment to explain what's going on and expand to lisp-directory
(bug#55492).
-2022-05-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Fix M-x compile-defun when an interactive form is (list ...)
@@ -55436,7 +55436,7 @@
(byte-compile-make-closure): (Twice) strip symbols from positions in the doc
string expression. Add comments.
-2022-05-18 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Clean up and simplify 'quit-restore-window' code
@@ -55445,7 +55445,7 @@
(quit-restore-window): Use 'window--quit-restore-select-window'
instead of 'quit-restore-select-window'. Simplify code.
-2022-05-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Make printing mostly non-recursive (bug#55481)
@@ -55475,14 +55475,14 @@
* test/src/print-tests.el (print-deeply-nested):
New test.
-2022-05-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid dismissing GTK+ popup menus upon wheel movement
* src/xterm.c (handle_one_xevent): Don't forward XI button
events for wheel buttons to GTK+ when a popup menu is active.
-2022-05-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions when calculating Haiku frame geometry
@@ -55493,7 +55493,7 @@
* src/haikufns.c (frame_geometry): Lock window before asking for
its dimensions and frame.
-2022-05-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't allow moving fullscreen frames on Haiku
@@ -55501,14 +55501,14 @@
(haiku_set_offset): Prevent offset from changing in fullboth
frames.
-2022-05-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a crash when an X connection is dropped in some situations
* src/xterm.c (x_flip_and_flush): Don't try to flush if
`inhibit-redisplay' is t.
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix apropos-documentation with universal argument
@@ -55516,14 +55516,14 @@
.elc files in the load path (and don't bug out on deleted .elc
files) (bug#55492).
-2022-05-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Recommend Wikipedia over Usenet in FAQ
* doc/misc/efaq.texi (Origin of the term Emacs): Recommend
Wikipedia over Usenet to find out more about TECO.
-2022-05-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some ancient Emacs compat code
@@ -55534,27 +55534,27 @@
* lisp/textmodes/reftex.el (reftex-mode-menu):
* lisp/woman.el (woman-menu): Remove some ancient Emacs compat code.
-2022-05-17 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Update comment about comint-osc-handlers
* lisp/comint.el: Update comment about comint-osc-handlers.
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow running several commands in compilation-start
* lisp/progmodes/compile.el (compilation-start): Allow not erasing
the contents of the buffer (bug#28892).
-2022-05-17 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Use better word for "buffer" in Greek TUTORIAL (bug#55332)
* TUTORIAL.el_GR: Replace all instances of "αποσβεστήρας" with the
more accurate "ενταμιευτής".
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bogus future history entries for `M-x grep'
@@ -55566,48 +55566,48 @@
(mailcap-file-default-commands '("grep --color=auto -nH --null '' "))
=> ("/usr/bin/emacs -nw")
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix kmacro-keymap binding after previous change
* lisp/kmacro.el (kmacro-keymap): Fix binding after
kmacro-redisplay command name change.
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Explain more about jit-lock-mode calling conventions
* lisp/jit-lock.el (jit-lock-mode): Explicitly explain ARG
(bug#55451).
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add glossary entries for "interactively"
* doc/emacs/glossary.texi (Glossary): Mention "interactively" and
how it relates to the "command" concept (bug#55461).
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix pp-emacs-lisp-code printing of cons cells
* lisp/emacs-lisp/pp.el (pp--insert-lisp): Fix printing of cons
cells (bug#55478).
-2022-05-17 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Correct cycle-spacing-actions type
* lisp/simple.el (cycle-spacing-actions): Fix type for predefined
action with fixed numeric arg case.
-2022-05-17 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Clarify 'cycle-spacing-actions' docstring
* lisp/simple.el (cycle-spacing-actions): Clarify docstring.
-2022-05-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid race conditions when computing real frame positions on Haiku
@@ -55625,7 +55625,7 @@
* src/haikuterm.c (haiku_read_socket): Adjust accordingly.
-2022-05-17 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Modi script
@@ -55646,7 +55646,7 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the name of a kmacro command.
@@ -55655,7 +55655,7 @@
* etc/NEWS: Announce the change. (Bug#55471)
-2022-05-17 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Correct a rare error in the state cache
@@ -55664,7 +55664,7 @@
c-state-brace-pair-desert. Instead record the position at the beginning of
that macro.
-2022-05-17 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Correct indentation of opening brace in xdisp.c, which isn't at start of defun
@@ -55672,21 +55672,21 @@
substatement correctly. It's previous position, in column 0, caused
indentation errors in C Mode.
-2022-05-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix unused function warning on X
* src/xsettings.c (xg_settings_key_valid_p): Surround with
HAVE_PGTK and HAVE_GSETTINGS.
-2022-05-17 Pieter van Prooijen <pieter.van.prooijen@teloden.nl>
+2023-04-15 Pieter van Prooijen <pieter.van.prooijen@teloden.nl>
Fix font options compilation with gsettings disabled
* src/xsettings.c (xsettings_get_font_options): Return a font_options
even if gsettings is not enabled.
-2022-05-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rewrite Haiku frame geometry code to handle decorator frames
@@ -55715,7 +55715,7 @@
* src/haikuterm.h (struct haiku_output): New field `frame_x' and
`frame_y'.
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix package-quickstart breakage
@@ -55723,21 +55723,21 @@
around syntax-ppss now clobbering match data (but it's not clear
whether that's supposed to be allowed) (bug#55447).
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve Finternal__define_uninitialized_variable erroring
* src/eval.c (Finternal__define_uninitialized_variable): Say what
symbol we're bugging out on for easier debugging.
-2022-05-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix edebug-tests test failure after prin1 change
* lisp/emacs-lisp/ert-x.el (ert--make-print-advice): Fix test
failures in edebug-tests.
-2022-05-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some minor Tramp fixes
@@ -55750,7 +55750,7 @@
* lisp/net/tramp-gvfs.el (tramp-gvfs-handler-askquestion):
Keep regression tests running.
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove extra EmacsPopUpMenu class
@@ -55759,42 +55759,42 @@
(BPopUpMenu_new): Use BPopUpMenu directly.
(BMenu_add_title): Clean up coding style.
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more cursor bitmaps on Haiku
* src/haikufns.c (cursor_bitmaps_for_id): Add vertd, horizd and
hand bitmaps.
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Let XTread_socket read events for all non-DND displays
* src/xterm.c (XTread_socket): Allow reading events from
displays other than the DND display during drag-and-drop.
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix byte swapping of some drag-and-drop messages
* src/xterm.c (SWAPCARD16, SWAPCARD32): Actually swap the data
instead of just calling bswap_32/bswap_16.
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix detection of wheel movement during drag-and-drop
* src/xterm.c (x_dnd_send_position): Don't treat Button8 as the
mouse wheel.
-2022-05-16 kobarity <kobarity@gmail.com>
+2023-04-15 kobarity <kobarity@gmail.com>
Fix Python highlighting of some assignment statements
* lisp/progmodes/python.el (python-rx): Limit not-simple-operator
to a single line (bug#51362).
-2022-05-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option compilation-hidden-output
@@ -55804,7 +55804,7 @@
(compilation-filter): Use it.
(compilation--hide-output): New function.
-2022-05-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't expose Vprint_variable_mapping to Lisp
@@ -55815,7 +55815,7 @@
(print_bind_overrides): Call it.
(syms_of_print): Protect the mapping variable.
-2022-05-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Make TAB work in makefile mode when transient mark mode is on"
@@ -55824,7 +55824,7 @@
This change made hitting RET after an assignment insert a TAB character
(bug#55446).
-2022-05-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve newsticker file name handling and printing
@@ -55840,7 +55840,7 @@
rewritten by me, and has some contributions from Xavier Capaldi (which
doesn't need copyright assignment).
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document recent tooltip changes on NS
@@ -55848,14 +55848,14 @@
* etc/NEWS: Announce that non-system tooltips are now available
on Nextstep.
-2022-05-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve error checking in `haiku-roster-launch'
* src/haikuselect.c (Fhaiku_roster_launch): Signal error if
FILE-OR-TYPE doesn't exist or ARGS does not apply.
-2022-05-16 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Improve cycle-spacing and bind it to M-SPC by default
@@ -55876,7 +55876,7 @@
* etc/NEWS: Document that M-SPC is now cycle-spacing instead of
just-one-space.
-2022-05-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -55884,13 +55884,13 @@
007bf9a34c Hide temporary FUSE files in Tramp
5dbaddc729 ; Fix some typos
-2022-05-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
48201ce8de ; * lisp/electric.el (electric-indent-mode): Fix a typo.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve safety of handling unsupported drop events on X
@@ -55898,7 +55898,7 @@
* src/xterm.c (handle_one_xevent): Check that the event frame is
still live after calling arbitrary Lisp code.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Haiku code after file panel changes
@@ -55908,7 +55908,7 @@
* src/haikumenu.c (run_menu_bar_help_event): Ignore invalid help
events instead of aborting.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle pointer axes changing along with scroll valuators
@@ -55918,18 +55918,18 @@
scroll valuator was found but valuators were set when handling
motion events.
-2022-05-15 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.3-6-gef41f3
-2022-05-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Minor clarification of package-update-all docstring
* lisp/emacs-lisp/package.el (package-update-all): Clarify
docstring slightly. (Bug#55408)
-2022-05-15 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Make minibuffer lazy highlight setup buffer-local where appropriate
@@ -55939,7 +55939,7 @@
'isearch-filter-predicate' buffer-local, so that isearch in the
minibuffer is not affected by the region filter (bug#55110).
-2022-05-15 Simen Heggestøyl <simenheg@runbox.com>
+2023-04-15 Simen Heggestøyl <simenheg@runbox.com>
Recognize some more SCSS selectors
@@ -55949,21 +55949,21 @@
* test/lisp/textmodes/css-mode-resources/scss-selectors.txt: Add tests
for them.
-2022-05-15 Simen Heggestøyl <simenheg@runbox.com>
+2023-04-15 Simen Heggestøyl <simenheg@runbox.com>
Fix warning suppression in (S)CSS mode tests
* test/lisp/textmodes/css-mode-tests.el (css-mode-test-selectors)
(scss-mode-test-selectors): Fix warning suppression.
-2022-05-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix native-comp type of prin1-to-string
* lisp/emacs-lisp/comp.el (comp-known-type-specifiers): Fix type
of prin1-to-string.
-2022-05-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust more prin1-to-string callers
@@ -55975,7 +55975,7 @@
(emit_limple_insn):
(emit_static_object): Adjust prin1-to-string callers.
-2022-05-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add OVERRIDES argument to prin1/prin1-to-string
@@ -55994,7 +55994,7 @@
(print_bind_overrides, print_bind_all_defaults): New functions.
(Fprin1_to_string): Take an OVERRIDES parameter.
-2022-05-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Hide temporary FUSE files in Tramp
@@ -56002,14 +56002,14 @@
(tramp-fuse-handle-directory-files)
(tramp-fuse-handle-file-name-all-completions): Use it.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make Haiku stipple display slightly faster
* src/haikuterm.c (haiku_draw_stipple_background): Draw tiled
bitmap to end of stipple instead of the end of the frame.
-2022-05-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't freeze Emacs on colour codes in sccs-mode
@@ -56017,27 +56017,27 @@
freeze Emacs on #ffffff #ffffff, and be more strict in parsing
selectors (bug#53203).
-2022-05-15 Simen Heggestøyl <simenheg@runbox.com>
+2023-04-15 Simen Heggestøyl <simenheg@runbox.com>
Update CSS Multi-column Layout Module properties
* lisp/textmodes/css-mode.el (css-property-alist): Update CSS
Multi-column Layout Module properties.
-2022-05-15 Simen Heggestøyl <simenheg@runbox.com>
+2023-04-15 Simen Heggestøyl <simenheg@runbox.com>
Update CSS Box Alignment Module properties
* lisp/textmodes/css-mode.el (css-property-alist): Update properties.
-2022-05-15 Simen Heggestøyl <simenheg@runbox.com>
+2023-04-15 Simen Heggestøyl <simenheg@runbox.com>
Add `all` to CSS property list
* lisp/textmodes/css-mode.el (css-property-alist): Add new property
`all` from the CSS Cascading and Inheritance Level 3 module.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix use of more invalid keys in PGTK GSettings code
@@ -56045,7 +56045,7 @@
(apply_gsettings_font_rgba_order): Test for key existence before
using it.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve return value of `haiku-roster-launch'
@@ -56054,7 +56054,7 @@
application is already running.
(syms_of_haikuselect): New defsym.
-2022-05-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify Haiku cursor management code
@@ -56069,7 +56069,7 @@
(haiku_set_mouse_color):
* src/haikuterm.c (haiku_term_init): Adjust accordingly.
-2022-05-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix database related to some scripts
@@ -56080,7 +56080,7 @@
* src/w32font.c (syms_of_w32font): Fix typos in some script symbol
names.
-2022-05-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Syloti Nagri script
@@ -56096,7 +56096,7 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-15 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
describe-keymap: Suggest symbol at point
@@ -56104,13 +56104,13 @@
if it is a keymap. (Bug#55393)
* etc/NEWS: Announce change in behavior of 'describe-keymap'.
-2022-05-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
8370caa835 ; * lisp/electric.el (electric-indent-mode): Clarify doc (...
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allocate some buffers used during event handling safely
@@ -56118,7 +56118,7 @@
device disable data safely since they can potentially become
very large.
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes trying to access nonexistent key
@@ -56126,14 +56126,14 @@
(apply_gsettings_font_antialias): Test that `font-aliasing' is
actually available. (bug#55416)
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix scroll event translation for legacy button events
* src/xterm.c (handle_one_xevent): Don't treat emulated Button8
as a wheel event.
-2022-05-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code for display-graphic-p
@@ -56145,7 +56145,7 @@
* lisp/progmodes/cperl-mode.el (cperl-tags-hier-init): Remove XEmacs
compat code.
-2022-05-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete some compat code for very old Emacs versions
@@ -56158,11 +56158,11 @@
* lisp/gnus/nnmail.el (nnmail-fancy-expiry-target): Avoid using
obsolete name.
-2022-05-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
src/lisp.h (FOR_EACH_TAIL_SAFE): Typo
-2022-05-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make 'check-declare-directory' more portable
@@ -56170,7 +56170,7 @@
'directory-files-recursively' instead of running Find and Grep in
a subprocess. (Bug#55386)
-2022-05-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Drop ancient OEmacs support from vcursor.el
@@ -56179,21 +56179,21 @@
version of GNU Emacs V19.19" that worked "under plain MSDOS,
Windows, or DESQview/X".
-2022-05-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove Emacs 22 compat code from htmlfontify.el
* lisp/htmlfontify.el (hfy-prop-invisible-p): Redefine as obsolete
function alias for invisible-p. Update all callers.
-2022-05-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from org-mode
* lisp/org/org-clock.el (org-clock-select-task): Remove XEmacs
compat code.
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes for popup dialogs on macOS
@@ -56201,7 +56201,7 @@
([EmacsDialogPanel initWithTitle:isQuestion:]): Set command
title correctly.
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix processing of dialog box items on NS
@@ -56223,7 +56223,7 @@
* src/nsterm.h: Update prototypes.
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid unsafe alloca when looking up toplevels
@@ -56231,7 +56231,7 @@
alloca isn't safe when there are lots of toplevels or the window
manager is broken.
-2022-05-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix undigest-tests on MS-Windows
@@ -56247,7 +56247,7 @@
(rmail-undigest-test-multipart-mixed-digest): Force the temporary
mbox files to have Unix-style EOL format.
-2022-05-14 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
2022-05-14 Martin Rudalics <rudalics@gmx.at>
@@ -56255,7 +56255,7 @@
(quit-restore-window): Call 'quit-restore-select-window' to avoid
selecting inactive minibuffer window (Bug#55403).
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to restore valuator values when a device is enabled
@@ -56263,7 +56263,7 @@
(xi_populate_device_from_info): Figure out all the values of the
valuators and set the scroll valuators's current_value to it.
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Better fix for disappearing menu items on NS
@@ -56273,7 +56273,7 @@
(ns_update_menubar): Note the last frame to have updated the
menu bar.
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more cursor bitmaps on Haiku
@@ -56283,20 +56283,20 @@
(vertd_ptrmask_bits, hourglass_bits, hourglass_mask_bits): New
cursor bitmaps.
-2022-05-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
a769cbfcfb Fix lexical-binding fallout in vhdl-mode.el
-2022-05-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around deleting tooltip frames clearing menubars on NS
* src/frame.c (delete_frame): Update menu bars if a tooltip
frame was deleted on NS.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement non-system tooltips on NS
@@ -56315,7 +56315,7 @@
([EmacsWindow initWithEmacsFrame:fullscreen:screen:]): Handle
tooltip frames.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Put help-fns--compiler-macro last in the *Help* buffer
@@ -56323,7 +56323,7 @@
help-fns--compiler-macro the last entry (because it's not the most
interesting information).
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display class of tooltip frames on Haiku
@@ -56331,13 +56331,13 @@
class.
(syms_of_haikufns): New symbols `mono', `grayscale' and `color'.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore `with-help-window' return code
* lisp/help.el (help--window-setup): Return the correct thing.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the *Help* output for compiler macros and the like
@@ -56346,7 +56346,7 @@
* lisp/help-fns.el (help-fns--compiler-macro): Also output data on
other byte compilation things, and link to the manual (bug#23264).
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reenable frame sync for child frames after they're unparented
@@ -56355,14 +56355,14 @@
* src/xterm.c (handle_one_xevent): Enable frame synchronization
upon receiving a sync request event.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak querying in package-update-all
* lisp/emacs-lisp/package.el (package-update-all): Reverse the
QUERY logic to make calling more regular.
-2022-05-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Extract out treesit-search-forward
@@ -56373,11 +56373,11 @@
'treesit-traverse-defun' with 'treesit-search-forward' and fiends.
* test/src/treesit-tests.el: Add reminder for tests.
-2022-05-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
* lisp/treesit.el (treesit-node-at): Add check for nil node.
-2022-05-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add defun navigation
@@ -56386,7 +56386,7 @@
treesit-end-of-defun): New functions.
* test/src/treesit-tests.el: Add reminders for tests.
-2022-05-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
New node traversal functions
@@ -56397,7 +56397,7 @@
* test/src/treesit-tests.el (treesit-node-supplemental): Add reminders
for tests.
-2022-05-13 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Redefine treesit-node-at
@@ -56420,7 +56420,7 @@
treesit-indent): Use the new '-at' function.
* test/src/treesit-tests.el (treesit-node-supplemental): Update tests.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use ert-with-temp-file in undigest-tests.el
@@ -56432,21 +56432,21 @@
(rmail-undigest-test-rfc1521-mime-digest)
(rmail-undigest-test-multipart-mixed-digest): Use ert-with-temp-file.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't use obsolete yow library
* lisp/erc/erc.el (erc-quit-reason-zippy, erc-part-reason-zippy):
Don't use obsolete yow library.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from flyspell.el
* lisp/textmodes/flyspell.el (flyspell-display-next-corrections):
Remove XEmacs compat code.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from org-mode
@@ -56456,7 +56456,7 @@
* lisp/org/org.el (org-change-tag-in-region): Remove XEmacs compat
code.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from eudc-bob.el
@@ -56464,11 +56464,11 @@
into obsolete alias for display-graphic-p. Update all callers.
(eudc-bob-display-jpeg): Remove XEmacs compat code.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new minor mode `header-line-indent-mode'
@@ -56494,21 +56494,21 @@
* src/buffer.c (syms_of_buffer): Mention header-line-indent-mode.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert mistaken change in help-mode-setup
* lisp/help-mode.el (help-mode-setup): Revert mistakenly applied
change from cd87a5c7a.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't overwrite variables set by callback in help--window-setup
* lisp/help.el (help--window-setup): Initialize the buffer in the
correct order to avoid resetting variables set by the callback.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't clear out local variables in `with-help-window'
@@ -56522,11 +56522,11 @@
`with-temp-buffer-window'. Also don't clear out local variables,
because that makes things like `text-scale-mode' not work (bug#25979).
-2022-05-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/lispref/help.texi (Keys in Documentation): Typo in last change
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow substitute-command-keys to include menus in \{...} output
@@ -56534,7 +56534,7 @@
* lisp/help.el (substitute-command-keys): Add an argument to
include menus in the \{...-map} output (bug#24236).
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Include the number of dependencies in the install prompt
@@ -56542,14 +56542,14 @@
the info to the prompt (bug#23346).
(package--dependencies): New function.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow calling package-update-all from the command line
* lisp/emacs-lisp/package.el (package-update-all): Allow calling from
the command line with -f package-update-all without any queries.
-2022-05-13 Pieter van Prooijen <pieter.van.prooijen@teloden.nl>
+2023-04-15 Pieter van Prooijen <pieter.van.prooijen@teloden.nl>
Use gsettings font rendering entries for pgtk builds
@@ -56574,24 +56574,24 @@
(xsetting_get_font_options)
* src/xsettings.h (xsettings_get_font_options): New function.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a provide in epa-ks
* lisp/epa-ks.el (epa-ks): Add a provide (bug#55388).
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from pascal.el
* lisp/progmodes/pascal.el (pascal-outline-map): Remove XEmacs compat
code.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/language/thai-util.el (thai-word-mode-map): Prefer defvar-keymap.
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix dabbrev expansion after recent file-name buffer addition
@@ -56599,7 +56599,7 @@
file name buffer from dabbrev--friend-buffer-list, so that we
don't trip over the killed buffer later (bug introduced in 2d0085f756).
-2022-05-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make imenu-flush-cache into a function
@@ -56608,7 +56608,7 @@
* lisp/imenu.el (imenu-flush-cache): Make into a function, since
this isn't supposed to be used interactively.
-2022-05-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix lexical-binding fallout in vhdl-mode.el
@@ -56618,7 +56618,7 @@
(vhdl-speedbar-insert-hierarchy): Rename the PACK-ALIST argument
to PACKAGE-ALIST, to avoid shadowing the global variable.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow changing the face used for text and frame colors in tooltips
@@ -56628,7 +56628,7 @@
determine the foreground, background and border colors of the
tooltip frame respectively.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rely solely on device scaling for fonts on PGTK
@@ -56637,7 +56637,7 @@
(pgtk_term_init): Stop multiplying dpi by text scale.
(bug#55394)
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of image reliefs for tab bars on NS
@@ -56645,7 +56645,7 @@
Synchronize code with X.
(ns_dumpglyphs_image): Use that function instead, as on X.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor cleanups to PGTK code
@@ -56655,21 +56655,21 @@
(pgtk_term_init): Clean up coding style and fix scroll
increments.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve test for empty help-echo on NS menu bar items
* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Also check
if idx is valid.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display help-echo for popup menus on NS
* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Display
help echo for ordinary popup menus as well.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix extraneous quit events processing GTK native input inside popups
@@ -56678,7 +56678,7 @@
* src/xterm.c (x_filter_event): Clear `xg_pending_quit_event' if
a popup is active.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add more cursor bitmaps on Haiku
@@ -56688,13 +56688,13 @@
* src/haikugui.h (cross_ptr_bits, cross_ptrmask_bits)
(ibeam_ptr_bits, ibeam_ptrmask_bits): New cursor bitmaps.
-2022-05-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f03c5d81bd Fix ControlPath quoting in Tramp
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix disabling frame synchronization on child frames
@@ -56702,7 +56702,7 @@
synchronization on child frames, since the CM doesn't send
synchronization events to them.
-2022-05-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow setting cursor colors for custom cursors on Haiku
@@ -56712,7 +56712,7 @@
(haiku_set_mouse_color): If a color was specified, consult
`cursor_bitmaps_for_id' for user-specified cursors.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow actually setting cursor colors on Haiku
@@ -56733,18 +56733,18 @@
* src/haikuterm.c (haiku_defined_color): Clean up coding style.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix quitting during drag-and-drop when GTK native input is on
* src/xterm.c (x_dnd_begin_drag_and_drop): Also look in
`xg_pending_quit_event' when GTK native input is on.
-2022-05-12 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from gnulib
-2022-05-12 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC 12 in default developer build
@@ -56782,7 +56782,7 @@
(x_term_init): Use fixed-size auto array rather than alloca,
as the array is small; this also pacifies GCC 12.
-2022-05-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option 'sh-indent-statement-after-and'
@@ -56790,7 +56790,7 @@
user option (bug#22645).
(sh-smie-sh-rules): Use it.
-2022-05-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix ControlPath quoting in Tramp
@@ -56798,14 +56798,14 @@
Adapt docstring. Do not quote ControlPath. Reported by Daniel
Kessler <kesslerd@umich.edu>.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused RIF method
* src/haikuterm.c (haiku_update_window_end): Delete function.
(haiku_redisplay_interface): Remove RIF method.
-2022-05-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make prompt read-only in inferior-scheme-mode
@@ -56813,7 +56813,7 @@
read-only to be more consistent with other inferior modes
(bug#21118).
-2022-05-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix retrieving images that contain ) characters in shr
@@ -56821,7 +56821,7 @@
(shr-encode-url): Make obsolete. (This function makes no sense.)
(shr-tag-img): Don't call.
-2022-05-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve url-http debugging
@@ -56829,24 +56829,24 @@
headers we receive in the debug output.
* lisp/url/url-vars.el (url-extensions-header): Remove useless header.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build on Mac OS X 10.11
* src/nsterm.h (NSButtonTypeMomentaryPushIn): New define.
-2022-05-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/array.el (array-mode-map): Prefer defvar-keymap.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix searching the bitmap file path on Haiku
* src/image.c (image_create_bitmap_from_file): [HAVE_HAIKU]:
Look for the bitmap inside `x-bitmap-file-path' as well.
-2022-05-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp's write-region
@@ -56857,7 +56857,7 @@
* lisp/net/tramp.el (tramp-skeleton-write-region):
Set extended attributes.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix merging of anonymous faces with an `:extend' property on unexec
@@ -56867,7 +56867,7 @@
pdumper-specific section leaving the initialization of
`face_attr_sym' intact.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve mouse dragging
@@ -56875,7 +56875,7 @@
Respect foreground and background parameters.
(mouse-drag-and-drop-region): Enable fine grained tracking.
-2022-05-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make cursor display on Haiku consistent with X
@@ -56886,13 +56886,13 @@
(haiku_draw_window_cursor): Port code from X so bar cursors on
top of images are treated right.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix cperl-file-style defcustom type
* lisp/progmodes/cperl-mode.el (cperl-file-style): Fix the type.
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Haiku display opening code
@@ -56900,13 +56900,13 @@
(Fhaiku_frame_list_z_order): Improve error messages and fix
coding style.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command 'imenu-flush-cache'
* lisp/imenu.el (imenu-flush-cache): New command (bug#20589).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
New command 'package-update-all'
@@ -56915,14 +56915,14 @@
(package--updateable-packages): Factored out...
(package-update): ... from here.
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Port some stuff to XCB to avoid confusing Xlib behavior
* src/xterm.c (x_set_frame_alpha, handle_one_xevent): Port
retrieving the opacity property to XCB.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option switch-to-prev-buffer-skip-regexp
@@ -56931,7 +56931,7 @@
(switch-to-prev-buffer-skip-regexp): New user option (bug#19070).
(switch-to-prev-buffer-skip-p): Use it.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Bind TAB in indent-rigidly-map as a convenience
@@ -56939,28 +56939,28 @@
(indent-rigidly-map): Bind TAB so that `C-x TAB TAB...' does the
logical thing.
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only handle SelectionRequest events from the DND display during DND
* src/xterm.c (handle_one_xevent): Handle only SelectionRequest
events from the DND frame's display via hold_quit.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make message load eudc-capf more lazily
* lisp/gnus/message.el (eudc-capf): Remove require, because all
the relevant eudc-capf functions are autoloaded, apparently.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make anchored regexps work in image-dired-mark-tagged-files
* lisp/image-dired.el (image-dired-mark-tagged-files): Make
anchored regexps work (bug#55375).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix non-variable widgets in the 'H' command in Cus-mode
@@ -56969,7 +56969,7 @@
(custom-toggle-hide-all-widgets): Rename and work for all widget
types, not just variables.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust restore-buffer-modified-p autosaved logic
@@ -56980,7 +56980,7 @@
around `autosaved': It means "the buffer is modified, and also
autosaved".
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make C-u M-x apropos-user-option include buttons
@@ -56989,21 +56989,21 @@
(apropos-print-doc): Don't insert three spaces in the
non-apropos-multi-type case.
-2022-05-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(byte-compile-eval): Avoid some false positive "noruntime" warnings
* lisp/emacs-lisp/bytecomp.el (byte-compile-eval): Loosen the check
before refraining from adding a function to noruntime.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix regression in edmacro-finish-edit when parsing "none"
* lisp/edmacro.el (edmacro-finish-edit): Use `kbd' here because
we're comparing the result to a string (bug#55372).
-2022-05-11 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
functionp doc improvement
@@ -57011,7 +57011,7 @@
Document functionp a bit more carefully. It can return t
on non-functions.
-2022-05-11 Tino Calancha <tino.calancha@gmail.com>
+2023-04-15 Tino Calancha <tino.calancha@gmail.com>
char-uppercase-p: New predicate
@@ -57024,7 +57024,7 @@
* doc/lispref/display.texi (Size of Displayed Text): Document it.
* test/lisp/subr-tests.el (test-char-uppercase-p): Add a test.
-2022-05-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve handling of `tramp-set-file-uid-gid'
@@ -57034,21 +57034,21 @@
* test/lisp/net/tramp-tests.el (tramp-test27-load): Adapt test.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify precedence rules in Active Display Table manual node
* doc/lispref/display.texi (Active Display Table): Say what "takes
precedence" means here (bug#18546).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow giving switches to the program in `M-x term'
* lisp/term.el (term, ansi-term): Allow giving switches to the
program (bug#18105).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous cperl-file-style change
@@ -57056,11 +57056,11 @@
(cperl-mode): Add it to hack-local-variables-hook to really set
the cperl style.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option 'cperl-file-style'
@@ -57069,14 +57069,14 @@
(cperl-mode): Mention it.
(cperl-style-alist): Mention it.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix fontification of multi-line declarations in f90-mode
* lisp/progmodes/f90.el (f90-font-lock-keywords-2): Fontify
multi-line declarations (bug#17222).
-2022-05-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* etc/NEWS: Improve some entries.
@@ -57088,21 +57088,21 @@
* lisp/calendar/diary-lib.el (diary-mode-map): Prefer defvar-keymap.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add grep-files-aliases entry for .am files
* lisp/progmodes/grep.el (grep-files-aliases): Add an alias for
.am files (bug#16921).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make recent nicknames erc change more backwards-compatible
* lisp/erc/erc-button.el (erc-button-add-buttons): Make the
nicknames change more backwards-compatible (bug#16271).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command 'vc-dir-mark-by-regexp'
@@ -57110,7 +57110,7 @@
* lisp/vc/vc-dir.el (vc-dir-mode-map): Bind it to `%'.
(vc-dir-mark-by-regexp): New command (bug#16460).
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for changing pointer types on Haiku
@@ -57145,21 +57145,21 @@
* src/haikuterm.h: Update prototypes.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warning in gdb-mi.el
* lisp/progmodes/gdb-mi.el (gud-go): Fix compilation warning
introduced by previous change.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Bind gud-go and allow the prefix to enter arguments
* lisp/progmodes/gdb-mi.el (gdb): Bind gud-go to `C-c C-v' and
allow a prefix to enter arguments (bug#10106).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't signal errors in check-declare-directory
@@ -57167,14 +57167,14 @@
bug out if we don't find any files with declare-function:(bug#55354)
because this is a predicate function, and that's inconvenient.
-2022-05-11 Yoav Marco <yoavm448@gmail.com> (tiny change)
+2023-04-15 Yoav Marco <yoavm448@gmail.com> (tiny change)
(sqlite-mode--column-names): Suppport nested parens
* lisp/sqlite-mode.el (sqlite-mode--column-names): Make parsing
more resilient (bug#55363).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Add meta navigation keys to outline-minor-mode-cycle-map"
@@ -57182,14 +57182,14 @@
These key bindings are too intrusive.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't try to toggle untogglable widgets in custom-toggle-hide-all-variables
* lisp/cus-edit.el (custom-toggle-hide-all-variables): Only toggle
the widgets that can be toggled.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Warn about quoted symbols in defcustom choice/other forms
@@ -57198,7 +57198,7 @@
(byte-compile-nogroup-warn): Use it to warn about forms like
(choice (const :tag "foo" 'bar)).
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use `nicknames' instead if `'nicknames' in erc-button-alist
@@ -57207,11 +57207,11 @@
(bug#16271).
(erc-button-add-buttons): Adjust usage.
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-05-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix more defcustom :type errors
@@ -57219,7 +57219,7 @@
* lisp/vc/vc-rcs.el (vc-rcs-master-templates): Remove quote
characters inserted by mistake.
-2022-05-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remedy ineffective backslashes and fix regexps
@@ -57230,11 +57230,11 @@
* lisp/simple.el (scratch-buffer, get-scratch-buffer-create):
Remove ineffective backslashes.
-2022-05-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/lisp.h (FOR_EACH_TAIL_INTERNAL): Faster node comparison.
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse pointer avoidance in some configurations
@@ -57250,7 +57250,7 @@
invisible cursors.
* src/xterm.h: Update prototypes.
-2022-05-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/string-edit.el: Improvements for pop-to-buffer (bug#33007)
@@ -57258,21 +57258,21 @@
with fit-window-to-buffer after the buffer is filled with text.
(string-edit-done, string-edit-abort): Use (quit-window 'kill).
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make Haiku event buffer non-static
* src/haikuterm.c (haiku_read_socket): Don't make `buf' static
in case thread yielding happens inside.
-2022-05-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix event memory leak on Haiku
* src/haikuterm.c (haiku_read_socket): Allocate event buffer on
the stack.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame invalidation on Haiku
@@ -57283,7 +57283,7 @@
(haiku_draw_window_cursor, haiku_draw_fringe_bitmap): Fix region
invalidation.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to preserve font styles in the Haiku font dialog
@@ -57292,34 +57292,34 @@
exists in the new family as well, select it after adding the new
items.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make reliefs on Haiku more like X
* src/haikuterm.c (haiku_draw_relief_rect): Use frame background
(normal GC) for corners.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some MAYBE_UNUSED functions
* src/xterm.c (x_clear_area1): Wrap in the conditions where it
will actually be used.
-2022-05-10 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* src/eval.c (Ffunctionp): Clarify "function" in doc string.
* src/floatfns.c: Update comment.
-2022-05-10 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port libm configure-time test to Solaris 11.4
* configure.ac (LIB_MATH): Check all the math.h functions
that Emacs uses, not just sqrt (Bug#55294).
-2022-05-10 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
EUDC: Add completion-at-point support
@@ -57331,7 +57331,7 @@
describing the new `completion-at-point' mechanism in `message-mode'.
* etc/NEWS (EUDC): Describe the new `completion-at-point' method.
-2022-05-10 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Siddham script
@@ -57346,7 +57346,7 @@
* etc/NEWS: Announce the new language environment and its
input method. (Bug#55350)
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some quoting problems in defcustom :type
@@ -57356,14 +57356,14 @@
* lisp/eshell/em-hist.el (eshell-hist-ignoredups): Fix invalid
quoting in :type.
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command to toggle hiding all widgets in a Customize buffer
* lisp/cus-edit.el (custom-commands): Add menu entry.
(custom-toggle-hide-all-variables): New command (bug#15748).
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use fields on log-edit headers (which changes `C-a' behaviour)
@@ -57371,7 +57371,7 @@
headers so that `C-a' takes us to the start of the string, not the
line (bug#15645).
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make ispell-region/buffer push the mark of the final word
@@ -57380,13 +57380,13 @@
(ispell-process-line): Change the return value to include the
position of the final word.
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix markup in read-number doc string
* lisp/subr.el (read-number): Fix markup for the letter.
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow packages to alter menu entries in the Buffers menu
@@ -57394,34 +57394,34 @@
(menu-bar-buffers-menu-command-entries): Put the entries into the
defvar so that packages can modify it (bug#14244).
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve display of relief rectangles on NS
* src/nsterm.m (ns_draw_relief): Respect cursor color and draw
corners like X.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect `alpha-background' drawing relief corners
* src/xterm.c (x_draw_relief_rect): Respect background alpha for
corner rects.
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `apropos-variable' include values in output
* lisp/apropos.el (apropos-print): Include variable values in the
output (bug#13842).
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of depressed buttons
* src/xterm.c (x_draw_relief_rect): Fix typo.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve relief rect handling on Haiku
@@ -57431,7 +57431,7 @@
(haiku_draw_string_box, haiku_draw_image_relief): Adjust
accordingly.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix X11 relief background clearning when hwidth is larger than vwidth
@@ -57440,7 +57440,7 @@
(x_draw_relief_rect): Complete rewrite. Use more sensible
primitives.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve display of reliefs on NS
@@ -57449,21 +57449,21 @@
* src/nsterm.m (ns_draw_relief): Draw outer edges of box like on
X.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle deletion of opacity property too
* src/xterm.c (handle_one_xevent): Clear `alpha' frame parameter
when opacity prop is gone or invalid.
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around some broken programs when reading opacity prop
* src/xterm.c (handle_one_xevent): Accept some other types that
property is set to by thoughtless programs.
-2022-05-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bibtex-map-entries regression at bobp
@@ -57471,7 +57471,7 @@
introduced by c32e8b33f (bug#55342) -- don't fail when the first
entry is at bobp.
-2022-05-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -57480,7 +57480,7 @@
177718bc6d Update string-to-number documentation to bignum Emacs
74cc3b525f Fix doc string references to tags-loop-continue
-2022-05-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify Haiku selection code
@@ -57507,7 +57507,7 @@
* src/haikuselect.h: Update prototypes.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add more compilation-auto-jump-to-first-error options
@@ -57520,28 +57520,28 @@
(compilation-find-file-1): Factored out into own function.
(compilation-find-file): Factored out from here.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dabbrev use the buffer's file name as a source for completions
* lisp/dabbrev.el (dabbrev--find-expansion): Include the buffer's
file name in the completions (bug#8163).
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make imenu find defalias entries
* lisp/emacs-lisp/lisp-mode.el (lisp-imenu-generic-expression):
Also find defalias (bug#7855).
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify XDND code
* src/xfns.c (Fx_begin_drag): Use SAFE_ALLOCA_STRING and encode
strings in the right coding system.
-2022-05-09 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Factor out *scratch* initialization
@@ -57559,14 +57559,14 @@
* doc/lispref/os.texi (Summary: Sequence of Actions at Startup):
* NEWS (Incompatible changes in Emacs 29.1): Document the change.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entries for recent autosaved buffer modification status
* doc/lispref/buffers.texi (Buffer Modification): Note 'autosaved'
value.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reimplement recent with-silent-modifications auto-save changes
@@ -57584,7 +57584,7 @@
* src/fileio.c (Fdo_auto_save): Refill the doc string.
-2022-05-09 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Fix syntax descriptor comparison in python-indent-region
@@ -57592,7 +57592,7 @@
syntax descriptors with equal (bug#45328) (because comparing them with
eq will always be false).
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update alpha frame parameter when the window manager changes it
@@ -57606,14 +57606,14 @@
changes.
* src/xterm.h (struct x_output): New flag `alpha_identical_p'.
-2022-05-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Fix compilation warnings
* src/treesit.c: Add static keywords, remove unused variables, add
const qualifier.
-2022-05-09 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Remove call to nconc to improve performance
@@ -57623,7 +57623,7 @@
capture_range.
(Ftreesit_query_capture): Remove call to nconc.
-2022-05-09 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Use format string instead of concat
@@ -57633,7 +57633,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/948
-2022-05-09 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Sharada script
@@ -57648,7 +57648,7 @@
* etc/NEWS: Announce the new language environment and its
input method. (Bug#55328)
-2022-05-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp tests
@@ -57674,29 +57674,29 @@
(tramp-test39-make-lock-file-name)
(tramp-test39-detect-external-change): Extend tests.
-2022-05-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Remove the AUCTeX subsection from MS-Windows FAQ
* doc/misc/efaq-w32.texi (AUCTeX): Remove the subsection, it is no
longer useful. (Bug#55330)
-2022-05-09 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Shorten note about didactic space in TUTORIAL.el_GR (bug#55332)
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuterm.c (haiku_draw_fringe_bitmap): Set stipple flag.
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reading faces with a default value that is a symbol
* lisp/faces.el (read-face-name): Don't try to intern face if it
is already a symbol.
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix scroll optimizations being enabled for some rows with stipples
@@ -57708,14 +57708,14 @@
* src/xterm.c (x_draw_fringe_bitmap): Set row->stipple.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make ediff-show-diff-output work better on unsaved buffers
* lisp/vc/ediff-util.el (ediff-show-diff-output): Make the `D'
command work on unsaved buffers without a prefix (bug#45016).
-2022-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Allow non-interactive use of eldoc-doc-buffer
@@ -57723,7 +57723,7 @@
non-interactive use.
(Version): Bump minor.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Copy edits for the regexp sections in the manuals
@@ -57731,28 +57731,28 @@
* doc/emacs/search.texi (Regexps, Regexp Backslash): Copy edits
from Jay Bingham (bug#41970).
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect display scale factor drawing underwaves on Haiku
* src/haikuterm.c (haiku_get_scale_factor): New function.
(haiku_draw_underwave): Apply said factor.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add meta navigation keys to outline-minor-mode-cycle-map
* lisp/outline.el (outline-minor-mode-cycle-map): Add meta
navigate keys (bug#41129).
-2022-05-09 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Update AUCTeX FAQ entry
* doc/misc/efaq-w32.texi (AUCTeX): AUCTeX project isn't providing
pre-compiled versions for Windows anymore (bug#55330).
-2022-05-09 Vladimir Nikishkin <for.emacs-table.el-environment-patch_2022-05-09@lockywolf.net>
+2023-04-15 Vladimir Nikishkin <for.emacs-table.el-environment-patch_2022-05-09@lockywolf.net>
Add new user option table-latex-environment
@@ -57760,28 +57760,28 @@
option (bug#55333).
(table--generate-source-prologue): Use it.
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update string-to-number documentation to bignum Emacs
* doc/lispref/strings.texi (String Conversion): string-to-number
no longer converts integers to floating point numbers (bug#55334).
-2022-05-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix doc string references to tags-loop-continue
* lisp/vc/vc-dir.el (vc-dir-search, vc-dir-query-replace-regexp):
Fix reference to obsolete tags-loop-continue (bug#55311).
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file-based launching on Haiku
* src/haikuselect.c (Fhaiku_roster_launch): Canonicalize file
names before using them.
-2022-05-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use default external browser by default on Haiku
@@ -57796,20 +57796,20 @@
(Fhaiku_roster_launch): New function.
(syms_of_haikuselect): Update defsubrs.
-2022-05-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
1d012e0a62 Linux console: don't translate ESC TAB to `backtab' in inp...
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix stipple bitmap caching on Haiku
* src/image.c (image_create_bitmap_from_file): Set file name on
the bitmap rec on Haiku.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow disabling Motif drag protocol
@@ -57818,7 +57818,7 @@
new variable.
(syms_of_xterm): New variable `x-dnd-disable-motif-drag'.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow precision-scrolling nonselected windows when the minibuffer is resized
@@ -57837,7 +57837,7 @@
* src/xdisp.c (redisplay_window): Preserve the vscroll inside
force_start on frozen windows with that flag set. (bug#55312)
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions in handling of unsupported drops on X
@@ -57862,7 +57862,7 @@
* src/xterm.h: Update prototypes.
-2022-05-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix egregious thinko in eglot--uri-to-path
@@ -57877,7 +57877,7 @@
* eglot.el (eglot--uri-to-path): Fix thinko.
-2022-05-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Consider diagnostic.code when generating flymake diagnostics
@@ -57890,7 +57890,7 @@
* eglot.el (eglot-handle-notification): Consider Diagnostic.code.
-2022-05-08 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
remember-notes: Use pop-to-buffer-same-window not switch-to-buffer
@@ -57898,7 +57898,7 @@
pop-to-buffer-same-window rather than switch-to-buffer, to allow
customization via display-buffer-alist.
-2022-05-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Minor documentation improvements for completions commands and options
@@ -57907,7 +57907,7 @@
(Completion Options): Improve documentation of completions-format
and completions-sort.
-2022-05-08 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Add Greek translation of the tutorial
@@ -57920,7 +57920,7 @@
* lisp/language/greek.el (set-language-info-alist): Link to the
tutorial and include sample text.
-2022-05-08 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Tirhuta script
@@ -57935,18 +57935,18 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/oclosure.el (oclosure-define): Fix empty case
-2022-05-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't hang on trying to rename FIFOs between file systems
* src/fileio.c (Frename_file): Don't hang on trying to move FIFOs
(bug#34069).
-2022-05-08 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
dired-do-query-replace-regexp doc string fix
@@ -57956,14 +57956,14 @@
(cherry picked from commit 4c505203f9171886f47638779326e257a95a1d79)
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of fringes with stipples on X
* src/xterm.c (x_draw_fringe_bitmap): Set fill style and use
fill function correctly.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of fringes with stipples on Haiku
@@ -57972,7 +57972,7 @@
(haiku_draw_fringe_bitmap): Handle display of stipples if
present.
-2022-05-08 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix bug in c-parse-state. Fixes bug #55181.
@@ -57980,7 +57980,7 @@
literal, return the start of that literal as a "good pos", not the parameter
POS.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set stipple flag on PGTK as well
@@ -57989,7 +57989,7 @@
(pgtk_draw_fringe_bitmap):
(pgtk_defined_color): Fix coding style.
-2022-05-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow term-mode to send function keys to the underlying shell
@@ -57998,14 +57998,14 @@
(term-send-function-key): Send the function key to the underlying
shell (bug#29920).
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set stipple flags on Haiku as well
* src/haikuterm.c (haiku_draw_glyph_string): Set stipple flag
where stipples are actually drawn. (This is different from X.)
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable scrolling optimizations when a stipple is present
@@ -58022,7 +58022,7 @@
(x_draw_stretch_glyph_string, x_draw_glyph_string): Set
`stipple_p' if a stipple pattern was drawn.
-2022-05-08 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Linux console: don't translate ESC TAB to `backtab' in input-decode-map.
@@ -58036,7 +58036,7 @@
wrongly doing the same thing as M-TAB, giving tips about amending the Linux
keyboard layout.
-2022-05-08 Visuwesh <visuweshm@gmail.com>
+2023-04-15 Visuwesh <visuweshm@gmail.com>
dired-do-query-replace-regexp doc string fix
@@ -58044,7 +58044,7 @@
'fileloop-continue' instead of the obsolete command
'tags-loop-continue'.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes on ordinary menus on macOS
@@ -58053,14 +58053,14 @@
([EmacsMenu menu:willHighlightItem:]): Ignore if this is a
context menu.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bug in `pixel-scroll-precision-mode' on nonselected windows
* src/window.c (Fset_window_vscroll): Mark window for redisplay.
(bug#55299)
-2022-05-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle changed scp protocol in Tramp
@@ -58071,7 +58071,7 @@
* lisp/net/tramp.el (tramp-methods): Adapt docstring.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of invisible cursor alloc failures
@@ -58079,14 +58079,14 @@
allocation really fails. This happens when the X server has a
limit on the number of cursors that can be created.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file-based stipple on NS
* src/image.c (image_create_bitmap_from_file) [HAVE_NS]: Fix
loading XBM data from file.
-2022-05-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix selection dialog display on MS-Windows
@@ -58096,21 +58096,21 @@
(w32_dialog_in_progress): Indicate to 'w32_wnd_proc' that a
selection dialog is open. (Bug#55208)
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of hollow box cursor on NS
* src/nsterm.m (ns_draw_window_cursor): Fix verbatim
translations from X.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix setting stipple via `set-face-stipple'
* lisp/faces.el (face-valid-attribute-values): Return results
for `:stipple' in correct format.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement stipples for stretch glyphs
@@ -58121,7 +58121,7 @@
(haiku_draw_glyph_string): Handle stipple correctly when drawing
neighbors.
-2022-05-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fully implement stipples for text on Haiku
@@ -58145,7 +58145,7 @@
(image_create_bitmap_from_file, free_bitmap_record): Free and
set them accordingly.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement bitmap loading for faces on Haiku
@@ -58173,18 +58173,18 @@
* src/image.c (image_create_bitmap_from_data)
(image_create_bitmap_from_file): Implement on Haiku.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use correct event structures to fetch time on XI2
* src/xterm.c (handle_one_xevent): Don't use generic `xi_event'
to access the event time.
-2022-05-07 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* src/fns.c: Fix IDs in comments to match code.
-2022-05-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix Bengali composition rules
@@ -58192,7 +58192,7 @@
composition rules for U+09F0 and U+09FE. Patch from
समीर सिंह Sameer Singh <lumarzeli30@gmail.com>. (Bug#55303)
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make 'delete-process' into a command
@@ -58201,14 +58201,14 @@
* src/process.c (Fdelete_process): Allow calling interactively
(bug#10107).
-2022-05-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve Devanagari character composition rules
* lisp/language/indian.el (devanagari-composable-pattern): Add
rules for Vedic accents. Suggested by Madhu <enometh@meer.net>.
-2022-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(dabbrev-completion): Fix bug#45768
@@ -58221,7 +58221,7 @@
extracted from `dabbrev-completion`.
(dabbrev-completion): Use it.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some variables in the Haiku code
@@ -58230,7 +58230,7 @@
* src/haikuterm.h (haiku_frame_param_handlers): Move here
instead.
-2022-05-07 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
+2023-04-15 समीर सिंह Sameer Singh <lumarzeli30@gmail.com>
Add support for the Kaithi script
@@ -58245,7 +58245,7 @@
* etc/NEWS: Announce the new language environment and its
input method.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Explain better what the interactive prefix does in scroll-down/up
@@ -58253,21 +58253,21 @@
* lisp/image-mode.el (image-scroll-up, image-scroll-down):
Actually explain what the interactive prefix does (bug#44503).
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document the `x' DWIM action in the manual
* doc/emacs/package.texi (Package Menu): Mention the DWIM action
of the `x' command.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove tar-mode dabbrev-ignored-buffer-modes
* lisp/dabbrev.el (dabbrev-ignored-buffer-modes): Remove tar-mode
from the default, because it isn't really a binary mode.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `x' in package-menu-mode more DWIM
@@ -58275,7 +58275,7 @@
string more helpful.
(package-menu-execute): Make `x' when no files are installed DWIM.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve inferior-python-mode scroll behaviour
@@ -58283,14 +58283,14 @@
scroll-convervatively instead of trying to do this with a comint
filter (which produces flickering) (bug#31115).
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warnings in newer subr tests
* test/lisp/subr-tests.el (test-local-set-state): Fix compilation
warnings.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow dabbrev to ignore binary buffers
@@ -58301,14 +58301,14 @@
(dabbrev--filter-buffer-modes): New function.
(dabbrev--select-buffers, dabbrev--make-friend-buffer-list): Use it.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse face dismissal in some widget popups
* src/xterm.c (handle_one_xevent): Accept XINotifyUngrab as
well.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow inhibiting linkification in *Help* buffers
@@ -58316,14 +58316,14 @@
lisp/help-mode.el (help-make-xrefs): Implement a new \+ syntax to
inhibit buttonification.
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the icomplete-in-buffer doc string document more
* lisp/icomplete.el (icomplete-in-buffer): Note what this variable
does and doesn't do (bug#45768).
-2022-05-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid having font locking triggering unnecessary auto-saving
@@ -58332,7 +58332,7 @@
* src/buffer.c (Finternal__set_buffer_modified_tick): New function.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Cache color lookup failures as well
@@ -58340,7 +58340,7 @@
* src/xterm.h (struct color_name_cache_entry): New field
`valid'.
-2022-05-07 Yuan Fu <casouri@gmail.com>
+2023-04-15 Yuan Fu <casouri@gmail.com>
Add tree-sitter intergration
@@ -58380,14 +58380,14 @@
* src/treesit.h: New file.
* test/src/treesit-tests.el: New file.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix 32-bit Haiku build
* src/haiku_support.cc (MessageReceived): Fix type of
`old_what'.
-2022-05-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `sticky' frame parameter on Haiku
@@ -58396,14 +58396,14 @@
* src/haikufns.c (haiku_set_sticky, haiku_frame_parm_handlers):
New frame param handler.
-2022-05-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
afdf72eeb2 Fix bug#55274
5bfac7c774 Provide reference for OTF tags in the ELisp manual
-2022-05-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions in the Haiku file dialog
@@ -58415,7 +58415,7 @@
(be_popup_file_dialog): Use a separate looper to handle file
panel events.
-2022-05-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix freezes with some oddball menus
@@ -58424,7 +58424,7 @@
* src/xterm.c (handle_one_xevent): Check for sensitive
CascadeButton instead of row column type.
-2022-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(icomplete-exhibit): Fix use in-buffer
@@ -58433,21 +58433,21 @@
* lisp/icomplete.el (icomplete-exhibit): Don't presume the completion
field ends at `point-max`.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make elisp-mode-syntax-propertize tighter to reflect syntax
* lisp/progmodes/elisp-mode.el (elisp-mode-syntax-propertize): ?\N
and #s are case sensitive, so don't case-fold. (And adjust regexps.)
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make down-list signal an error if called inside a string
* lisp/emacs-lisp/lisp.el (down-list): Signal an error inside a
string (bug#5588).
-2022-05-06 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add char-folding of double quotes in isearch-fold-quotes-mode (bug#24510)
@@ -58457,7 +58457,7 @@
* test/lisp/subr-tests.el (test-local-set-state): Test values
after setting state.
-2022-05-06 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Fix handling of IMAP search strings
@@ -58465,7 +58465,7 @@
a misunderstanding of what `multibyte-string-p' means. The check was
actually supposed to be whether the string was non-ascii or not.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further log-view-file-next fix-ups
@@ -58474,7 +58474,7 @@
* lisp/vc/log-view.el (log-view-mode-menu): Disable menu entries
(bug#14531).
-2022-05-06 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Don't force Gnus cache usage in nnvirtual
@@ -58483,32 +58483,32 @@
`gnus-retrieve-headers' directly will use the cache if the user has
configured it.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix forward-sexp for Unicode names in Emacs Lisp mode
* lisp/progmodes/elisp-mode.el (elisp-mode-syntax-propertize):
Make forward-sexp work for Unicode character names (bug#23354).
-2022-05-06 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Handle elisp #-syntax better in Emacs Lisp mode
* elisp-mode.el (elisp-mode-syntax-propertize): New function.
(emacs-lisp-mode): Set it as syntax-propertize-function (bug#15998).
-2022-05-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix bug#55274
* lisp/dired-aux.el (dired-do-compress-to): Use `file-local-name'
for shell out-file. (Bug#55274)
-2022-05-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/smie.el (smie-auto-fill): Fix bug#19342
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Respect help-window-keep-selected in shortdoc buttons
@@ -58518,7 +58518,7 @@
* lisp/emacs-lisp/shortdoc.el (shortdoc-display-group): Allow
reusing the window.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move buffer-local-set-state to subr because it's used at runtime
@@ -58526,7 +58526,7 @@
(buffer-local-set-state--get, buffer-local-restore-state): Moved
from easy-mmode.el because they have to be available run-time.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make compilation-parse-errors more resilient
@@ -58534,21 +58534,21 @@
resilient in the presence of regexp alist not being completely set
up (bug#55282).
-2022-05-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve font specs generated by the Haiku font dialog
* src/haikufont.c (Fx_select_font): Use `nil' instead of
`unspecified' to be consistent with other font dialogs.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix inhibiting reading the user init file with "emacs -x"
* lisp/startup.el (command-line): Really inhibit loading the user
init file with "emacs -x".
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the P/N/M-p/M-n bindings from the general log-view map
@@ -58559,7 +58559,7 @@
* lisp/vc/vc-cvs.el (vc-cvs-log-view-mode): New modes that bind
the P/N/M-p/M-n commands (bug#14531).
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't override search-default-mode set by user in info/help
@@ -58567,7 +58567,7 @@
* lisp/help-mode.el (help-mode): Don't override isearch mode set
by the user.
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Char-fold quotation characters in *info* and *Help*
@@ -58576,11 +58576,11 @@
* lisp/isearch.el (isearch-fold-quotes-mode): New minor mode
(bug#24510).
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Autoload the buffer-local-set* things
@@ -58588,7 +58588,7 @@
(buffer-local-restore-state): Autoload. Perhaps it would be
better to move these functions to subr.el or something...
-2022-05-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new helper macros for minor modes to restore variables
@@ -58601,7 +58601,7 @@
* lisp/textmodes/word-wrap-mode.el (word-wrap-whitespace-mode):
Use it to simplify code.
-2022-05-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix thinko in tramp-skeleton-write-region
@@ -58609,7 +58609,7 @@
Flush cache in time. (Bug#55247)
(tramp-handle-lock-file): Suppress messages in `write-region'.
-2022-05-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix calculation of display resolution on Haiku
@@ -58625,21 +58625,21 @@
* src/haikuterm.c (haiku_term_init): Likewise.
-2022-05-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Provide reference for OTF tags in the ELisp manual
* doc/lispref/display.texi (Low-Level Font): Provide the canonical
reference URL for OTF tags.
-2022-05-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
69c56cbe6e ; * src/w32notify.c: Fix a typo in a comment.
3b9e60ba2f ; * src/window.c (Fset_window_start): Mention the effect o...
-2022-05-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix more problems with display of composite glyph strings on Haiku
@@ -58647,7 +58647,7 @@
(haiku_draw_composite_glyph_string_foreground): Fix pen size of
placeholder rectangle.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse face persisting inside Lucid menus on XI2
@@ -58657,11 +58657,11 @@
* src/xterm.c (x_mouse_leave): Enable on Lucid XI2 builds.
* src/xterm.h: Update prototypes.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lwlib/lwlib.c (lw_separator_p): Fix empty strings being separators.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu dismissal problems on Xt builds with XI2
@@ -58670,25 +58670,25 @@
(create_and_show_popup_menu): Replace some of the grab logic
with resetting the XI event mask instead.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix more issues with DND state on multiple displays
* src/xterm.c (handle_one_xevent): Don't update DND state on the
wrong display.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve safety of DND when Emacs is connected to multiple displays
* src/xterm.c (x_dnd_begin_drag_and_drop): Don't check movement
frame unless we know it comes from the right display.
-2022-05-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Gnulib update via admin/merge-gnulib
-2022-05-05 James N. V. Cash <james.nvc@gmail.com>
+2023-04-15 James N. V. Cash <james.nvc@gmail.com>
* lisp/emacs-lisp/crm.el: Set completion-list-insert-choice-function.
@@ -58696,14 +58696,14 @@
completion-list-insert-choice-function that handles string values of args.
https://lists.gnu.org/archive/html/emacs-devel/2022-05/msg00017.html
-2022-05-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/desktop.el: Enable tab-bar-mode after restoring frames with a tab bar.
(desktop-restore-frameset): Enable tab-bar-mode when a restored frame
contains the frame parameter tab-bar-lines (bug#55070).
-2022-05-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
timestamp doc minor improvements
@@ -58714,11 +58714,11 @@
IEEE-754 rules for them and whatever the code does, doesn’t matter
for timestamps anyway.
-2022-05-05 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* doc/emacs/misc.texi (Interactive Shell): Fix paren typo.
-2022-05-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a mistaken test case in test-undo-region
@@ -58726,7 +58726,7 @@
(bug#21523) -- the crossing-region case shouldn't be included,
either.
-2022-05-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Advertise OSC directory tracking more
@@ -58735,7 +58735,7 @@
* lisp/shell.el (shell-dirtrack-mode): Link to the OSC directory
tracking function.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set GC line width on more GCs
@@ -58743,7 +58743,7 @@
(x_draw_bar_cursor): Make created scratch GCs have a line-width
of 1.
-2022-05-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Sort completions in Info references/menu correctly
@@ -58751,28 +58751,28 @@
order they appear in the buffer (bug#54175).
(Info-menu-update): Ditto.
-2022-05-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Be more resilient towards errors during error handling
* src/print.c (print_error_message): Avoid infinite recursion if
`substitute-command-keys' bugs out (bug#55269).
-2022-05-05 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Avoid resizing mini buffer when displaying page numbers
* doc-view.el (doc-view-goto-page): Do not insert a newline at the end
of the "current info" if not necessary.
-2022-05-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Describe kmacro registers better
* lisp/kmacro.el (register-val-describe): Allow describing macros
that contain mouse events (bug#55266).
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Speed up opening fonts on Haiku
@@ -58789,7 +58789,7 @@
* src/haikufont.c (haikufont_pattern_to_entity, haikufont_open):
Use indices to open fonts if available in the extra data.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix font weight reporting on macOS
@@ -58799,7 +58799,7 @@
* src/nsterm.m (ns_font_desc_to_font_spec): Adjust accordingly.
(ns_create_font_panel_buttons): Try to fix button width.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve appearance of macOS font panel buttons
@@ -58807,7 +58807,7 @@
([EmacsView noteUserCancelledSelection]): New functions.
([EmacsView showFontPanel]): Use those buttons instead.
-2022-05-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add Tramp test
@@ -58818,21 +58818,21 @@
* test/lisp/net/tramp-resources/foo.tar.gz: New resource file.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix min size reporting of style pane in Haiku font dialogs
* src/haiku_support.cc (class DualLayoutView):
(MinSize): Implement correctly with both views.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use bswap_32 and bswap_16 in Motif DND code
* src/xterm.c (SWAPCARD32, SAPCARD16): Use glibc/gnulib
byte-swapping functions if checking is disabled.
-2022-05-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Take size into account when previewing fonts on Haiku
@@ -58842,7 +58842,7 @@
(EmacsFontSelectionDialog): Assign correct modification messages
to the size entry.
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow displaying font preview on Haiku
@@ -58854,7 +58854,7 @@
(EmacsFontSelectionDialog): New constructor.
(FrameResized): Resize the layout view instead.
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix device reporting from scroll bar events on X
@@ -58862,7 +58862,7 @@
`device'.
(handle_one_xevent): Set it appropriately as long as required.
-2022-05-04 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Transcription error
@@ -58870,7 +58870,7 @@
Indent.
(gnus-topic-update-topic-line): Insert missing fourth argument.
-2022-05-04 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Revert "server-execute: Initialize the *scratch* buffer"
@@ -58878,14 +58878,14 @@
To be replaced with factoring out *scratch* buffer initialization.
-2022-05-04 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Stop esh-var-tests leaving temp files behind
* test/lisp/eshell/esh-var-tests.el
(esh-var-test/quoted-interp-temp-cmd): Don't leave temporary files.
-2022-05-04 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Remove bogus mode check from gnus topic update functions
@@ -58896,7 +58896,7 @@
major mode. Revert to checking for 'gnus-group-mode, and use
`derived-mode-p' while we're at it.
-2022-05-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Use pixel-based alignment (bug#55207)
@@ -58904,7 +58904,7 @@
on the string with tab-bar face to get the width in pixels to align.
(tab-bar-format-global): Remove string-trim-right to keep padding-right.
-2022-05-04 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Remove unused lexvar in subr-x-tests.el
@@ -58912,15 +58912,15 @@
(test-with-buffer-unmodified-if-unchanged): Pacify unused lexvar
byte-compiler warning. Simplify slightly and reindent.
-2022-05-04 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* src/xterm.c (handle_one_xevent): Fix int/Lisp_Object mix-up.
-2022-05-04 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* etc/NEWS: Improve some NEWS entries
-2022-05-04 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* doc/emacs/killing.texi: Fix typos
@@ -58928,7 +58928,7 @@
'save-interprogram-paste-before-kill'. Ensure the reference to
"Yanking Media" is not split over two lines.
-2022-05-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix restoring desktop from TTY-saved sessions
@@ -58936,7 +58936,7 @@
of the restored frames for which we have geometry information
saved by a past GUI session. (Bug#55070)
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Turn on XInput 2 support by default
@@ -58951,21 +58951,21 @@
* configure.ac:
* etc/NEWS: Enable XInput 2 support by default.
-2022-05-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clarify the doc string of 'with-buffer-unmodified-if-unchanged'
* lisp/emacs-lisp/subr-x.el (with-buffer-unmodified-if-unchanged):
Describe better what is meant by "buffer changes". (Bug#4587)
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused variable in Haiku selection code
* src/haiku_select.cc (selection_state_flag):
* src/haikuselect.h: Remove variable.
-2022-05-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'bidi-class' property of unassigned codepoints
@@ -58979,28 +58979,28 @@
* lisp/international/characters.el (#xfb50, #xfdf0): Fix the
Arabic block characters. (Bug#55256)
-2022-05-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Flush the tool bar cache on all terminals when adding new entries
* lisp/tool-bar.el (tool-bar--flush-cache): Flush the cache for
the current tool bar on all terminals.
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly encode and decode filenames on NS
* src/nsfns.m (Fns_read_file_name): Run dir through ENCODE_FILE
and fname through DECODE_FILE.
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file name encoding on Haiku file dialogs
* src/haikufns.c (Fhaiku_read_file_name): Use ENCODE_FILE and
DECODE_FILE correctly.
-2022-05-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set initial size in the Haiku font dialog
@@ -59011,14 +59011,14 @@
* src/haikufont.c (Fx_select_font): Set font dialog size to the
pixel size of the current font.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Encode and decode filenames correctly on Haiku
* src/haikufns.c (Fhaiku_read_file_name): Decode file names
correctly.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Haiku file panel code
@@ -59043,11 +59043,11 @@
* src/haikuterm.c (struct unhandled_event): Delete struct.
(haiku_read_socket): Remove "unhandled events".
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (haiku_create_frame): Improve default border width.
-2022-05-03 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
server-execute: Initialize the *scratch* buffer
@@ -59055,7 +59055,7 @@
(server-execute): Initialize the *scratch* buffer in the same way that
the scratch-buffer command does, for consistency.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of placeholder composite string on Haiku
@@ -59063,7 +59063,7 @@
(haiku_draw_composite_glyph_string_foreground): Correct
translation of XDrawRectangle.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix event mask and source indication of _NET_WM_STATE messages
@@ -59072,25 +59072,25 @@
source indication set.
* src/xterm.h: Update prototypes.
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make some recently added tests actually run
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make with-buffer-unmodified-if-unchanged more efficient
* lisp/emacs-lisp/subr-x.el (with-buffer-unmodified-if-unchanged):
Make more efficient.
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make with-buffer-unmodified-if-unchanged more resilient
* lisp/emacs-lisp/subr-x.el (with-buffer-unmodified-if-unchanged):
Make more resilient.
-2022-05-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
with-buffer-unmodified-if-unchanged: Tweak the implementation
@@ -59099,18 +59099,18 @@
Use `restore-buffer-modified-p`.
Also mention that it's imperative that the current buffer is preserved.
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entry about incompatible sorting command behaviors
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make sorting not change buffer modification status always
* lisp/sort.el (sort-subr): Don't mark buffer modified if the
sorting didn't change anything (bug#4587).
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new macro with-buffer-unmodified-if-unchanged
@@ -59119,14 +59119,14 @@
* lisp/textmodes/fill.el (fill-paragraph): Macro code copied from
here. Adjust and use the macro.
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix thinko in recent tool bar caching logic
* lisp/tool-bar.el (tool-bar--cache-key): New function.
(tool-bar--flush-cache, tool-bar-make-keymap): Use it.
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make tool bar caching more sensible
@@ -59138,7 +59138,7 @@
(tool-bar-local-item, tool-bar-local-item-from-menu): Flush the
cache after altering the tool bar.
-2022-05-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow desktop to restore frames and windows on TTY frames
@@ -59163,7 +59163,7 @@
sessions, but disallow that when the selected frame is the
daemon's initial frame. (Bug#55070)
-2022-05-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve the behavior of concatenating parts of Eshell arguments
@@ -59188,7 +59188,7 @@
* etc/NEWS: Announce the change (bug#55236).
-2022-05-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Return a list of numbers if all lines of an Eshell subcommand are numeric
@@ -59204,7 +59204,7 @@
* etc/NEWS: Announce the change (bug#55236).
-2022-05-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Eshell variable expansion should always return strings inside quotes
@@ -59243,14 +59243,14 @@
* etc/NEWS (Eshell): Announce this change (bug#55236).
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make adding things to the tool bar show up on next redisplay
* lisp/tool-bar.el (tool-bar--flush-cache): New function.
(tool-bar-add-item): Flush the cache (bug#43397).
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command 'package-update'
@@ -59258,7 +59258,7 @@
* lisp/emacs-lisp/package.el (package-update): New command
(bug#18790).
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix key-parse problem with C-x ( ... sequences
@@ -59268,14 +59268,14 @@
This allows `key-parse' to have a less puzzling result while
maintaining backwards compatibility (bug#38775).
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make TAB work in makefile mode when transient mark mode is on
* lisp/progmodes/make-mode.el (makefile-mode): Insert a tab
instead of removing it (bug#37087).
-2022-05-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle file name handler in write-region's VISIT arg
@@ -59288,7 +59288,7 @@
* lisp/net/tramp-smb.el (tramp-smb-handle-write-region):
* lisp/net/tramp-sshfs.el (tramp-sshfs-handle-write-region): Use it.
-2022-05-03 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Rewrite sql-interactive-remove-continuation-prompt
@@ -59299,7 +59299,7 @@
string. Streamline logic, describe it in docstring.
* test/lisp/progmodes/sql-tests.el: Add tests
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make more buttons in *Help* respect `help-window-keep-selected'
@@ -59307,7 +59307,7 @@
(help-face-def): Also respect `help-window-keep-selected' like the
other commands.
-2022-05-03 rbrtb <104695105+rbrtb@users.noreply.github.com> (tiny change)
+2023-04-15 rbrtb <104695105+rbrtb@users.noreply.github.com> (tiny change)
Ensure exit-function of eglot-c-at-point runs on exact match
@@ -59322,25 +59322,25 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/941
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further mm-base64-line-p bug fixes
* lisp/gnus/mm-bodies.el (mm-base64-line-p): Fix parsing error
introduced by d90f54d.
-2022-05-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mm-base64-line-p logic
* lisp/gnus/mm-bodies.el (mm-base64-line-p): Don't claim that an
empty line is base64.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haiku_support.cc (DrawContent): Use right UI color.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make menu bar help text work on macOS as well
@@ -59351,21 +59351,21 @@
`show_help_echo' instead of storing an event into the keyboard
buffer.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix default font in macOS font dialogs
* src/nsterm.m ([EmacsView noteUserSelectedFont]): Use current
font if none was selected.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some font parsing problems on NS
* src/nsterm.m (ns_font_desc_to_font_spec): Fix processing of
condensed width.
-2022-05-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle GraphicsExpose events on scroll bars
@@ -59373,7 +59373,7 @@
events.
(handle_one_xevent): Give graphics exposures to scroll bars.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure rectangles are drawn correctly on X
@@ -59382,7 +59382,7 @@
* src/xfns.c (x_make_gc): Likewise.
* src/xterm.c (x_scroll_bar_expose): Comment out obsolete code.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix glyphless glyph display on Haiku
@@ -59390,7 +59390,7 @@
(haiku_draw_glyphless_glyph_string_foreground): Fix rectangle
width.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix font matching of "Fira Code Retina" and "Fira Code Regular" on Haiku
@@ -59398,7 +59398,7 @@
allow matches on fonts with an adstyle if none was specified in
the input pattern.
-2022-05-02 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Don't leave temp files behind from undigest-tests
@@ -59411,7 +59411,7 @@
(rmail-undigest-test-multipart-mixed-digest):
Delete temporary files at end.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up X11 double buffering code
@@ -59445,14 +59445,14 @@
* src/xterm.h (FRAME_X_DRAWABLE): Fix coding style.
-2022-05-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix punctuation in the Eshell manual
* doc/misc/eshell.texi (Argument Predication and Modification):
Fix whitespace.
-2022-05-02 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Load multiple bibliographies with multibib package
@@ -59462,28 +59462,28 @@
(reftex-locate-bibliography-files): Prevent possible duplications
in bibliography database files.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Wait for events from all displays in Xm dialogs even on XI2
* src/xfns.c (Fx_file_dialog): Always process events from all
displays.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the eval-in-debug error message prettier in non-recursive errors
* lisp/emacs-lisp/debug.el (debugger-eval-expression): Make the
error message (when recursive debugging is off) prettier.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make non-recursive error messages in edebug prettier
* lisp/emacs-lisp/edebug.el (edebug-eval-expression): Make the
error message (when recursive debugging is off) prettier.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix eldoc interaction with `when' and `unless'
@@ -59492,14 +59492,14 @@
the way it is (bug#27229). This also makes eldoc highlight the
arguments correctly.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a command to recreate the *scratch* buffer
* doc/emacs/building.texi (Lisp Interaction): Mention it.
* lisp/simple.el (scratch-buffer): New command.
-2022-05-02 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Fix handling double-click-time nil or t
@@ -59515,14 +59515,14 @@
* test/lisp/mouse-tests.el (mouse-test-mouse-double-click-time):
New test.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-fix Gcc header tokenization in Gnus
* lisp/gnus/gnus-msg.el (gnus-inews-do-gcc): Split the Gcc header
on commas, but allow group names to contain spaces (bug#55217).
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow reusing the *Help* window with `i'/`s/ commands
@@ -59537,7 +59537,7 @@
* lisp/info-look.el (info-lookup-symbol):
(info-lookup): Allow keeping the same window.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix inconsistencies in Haiku font selection dialog
@@ -59546,14 +59546,14 @@
* src/haikufont.c (haikufont_pattern_from_object): Set slant and
width using correct object.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow show-paren to show matching parentheses inside comments
* lisp/paren.el (show-paren--default): Improve blinking when
inside a comment (bug#5410).
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix handling of some weights in the Haiku font driver
@@ -59563,7 +59563,7 @@
(haikufont_lisp_to_weight): Make `ultralight' and `extralight'
mean the same thing.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use xref-goto-xref as the xref mouse binding
@@ -59571,14 +59571,14 @@
xref-goto-xref binding instead of select-and-show to be more
similar to grep buffers.
-2022-05-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the OMIT-NULLS + "" case in string-lines
* lisp/subr.el (string-lines): Respect OMIT-NULLS when given an
empty string.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve font dialog on macOS
@@ -59587,7 +59587,7 @@
([EmacsView noteUserSelectedFont]): New function.
([EmacsView showFontPanel]): Add explicit "OK" button on macOS.
-2022-05-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Default to currently selected font in Haiku font dialogs
@@ -59609,11 +59609,11 @@
font.
(syms_of_haikufont): New defsyms.
-2022-05-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/gnus/gnus-util.el (gnus-byte-compile): Use `lexical-binding`
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions with async input in some Haiku dialogs
@@ -59621,14 +59621,14 @@
* src/haikufont.c (Fx_select_font): Block sigio around system
calls.
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the macOS build
* src/nsterm.m (ns_font_desc_to_font_spec, syms_of_nsterm):
Define missing symbols that are only on GNUstep.
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make the NS font dialog return more correct values
@@ -59638,28 +59638,28 @@
([EmacsView showFontPanel]): Return selected font as a
font spec instead.
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix devices staying disabled in some cases
* src/xterm.c (handle_one_xevent): Process queued disables
before handling an XIDeviceEnabled situation.
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix string-lines return for ""
* lisp/subr.el (string-lines): Return the correct result on ""
(bug#55213).
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change string-lines semantics slightly
* lisp/subr.el (string-lines): Change the semantics slightly --
don't return an empty string for a trailing newline.
-2022-05-01 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Handle escaped characters in Eshell special references (e.g. buffers)
@@ -59672,7 +59672,7 @@
* test/lisp/eshell/eshell-tests.el (eshell-test/redirect-buffer)
(eshell-test/redirect-buffer-escaped): New tests (bug#55204).
-2022-05-01 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Handle escaped characters in Eshell argument predicates/modifiers
@@ -59682,7 +59682,7 @@
* test/lisp/eshell/em-pred-tests.el (em-pred-test/predicate-escaping):
New test (bug#55204).
-2022-05-01 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Use a common set of string delimiters for all Eshell predicates/modifiers
@@ -59716,11 +59716,11 @@
* etc/NEWS: Announce this change, and move the
'eshell-eval-using-options' entry to the Eshell section.
-2022-05-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/minibuffer.el (completion--replace): Fix bug#55205
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Replace NS code that implemented font panels in a different way
@@ -59744,7 +59744,7 @@
([EmacsView changeFont:]): Exit nested event loop
([EmacsView showFontPanel:]): New function.
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't enter the debugger from *Backtrace* or edebug on eval errors
@@ -59759,14 +59759,14 @@
This patch is based on a patch by Noam Postavsky.
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Correct Using Debugger lispref node
* doc/lispref/debugging.texi (Using Debugger): Make documentation
reflect reality (bug#36145).
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make scroll-other-window respect target window remappings
@@ -59774,7 +59774,7 @@
Moved from window.c and change implementation so that they respect
command remappings in the target window (bug#20236).
-2022-05-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'malloc-trim'
@@ -59782,7 +59782,7 @@
* etc/NEWS: Document which systems support 'malloc-trim'.
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function `malloc-trim'
@@ -59790,14 +59790,14 @@
* src/alloc.c (Fmalloc_trim): Add new function (bug#45200).
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix specifying zero as a size for fonts on Haiku
* src/haiku_support.cc (MessageReceived): Set `size_specified'
correctly.
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve display of Haiku font dialog
@@ -59810,7 +59810,7 @@
* src/haikuterm.c (haiku_update_size_hints): Stop setting min
size, since that doesn't work correctly on Haiku.
-2022-05-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the mm-decode-content-transfer-encoding overflow better
@@ -59818,11 +59818,11 @@
Use it.
(mm-base64-line-p): New function.
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/menu-bar.el (menu-bar-search-menu): Remove extra separator.
-2022-05-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Document 'help-window-select'
@@ -59830,7 +59830,7 @@
* doc/emacs/help.texi (Apropos, Help): Document
'help-window-select'; improve indexing. (Bug#46034)
-2022-05-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow specifying font size in the Haiku font selection dialog
@@ -59845,7 +59845,7 @@
* src/haikufont.c (Fx_select_font): Populate font spec with
size.
-2022-05-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -59853,7 +59853,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-04-30 19:52:14 UTC.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow quitting inside font selection dialogs on Haiku
@@ -59864,14 +59864,14 @@
* src/haikufont.c (haikufont_should_quit_popup): New function.
(Fx_select_font): Give said function to `be_select_font'.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow invoking fonts in the Haiku font dialog
* src/haiku_support.cc (MessageReceived): Handle invocations.
(EmacsFontSelectionDialog): Set style panel invocation message.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improvements to the Haiku font dialog
@@ -59883,25 +59883,25 @@
* src/haikufont.c (Fx_select_font): Respect
`exclude-proportional'.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Also fix some compiler warnings in xterm.c that didn't show up
* src/xterm.c (x_dnd_begin_drag_and_drop): Don't define unused
variable on GTK builds.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the GTK build
* src/xterm.c (x_dnd_begin_drag_and_drop): Let GTK handle events
again.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_dnd_begin_drag_and_drop): Fix typo.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix processing events from multiple displays during DND
@@ -59910,7 +59910,7 @@
(x_dnd_begin_drag_and_drop): Compute correct dpyinfo for
handle_one_xevent.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up X Windows tooltip code
@@ -59919,7 +59919,7 @@
instead. The code is unlikely to be hit as well, since tooltip
frames are typically deleted, not just hidden.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement font selection dialog on Haiku
@@ -59936,56 +59936,56 @@
* src/haikufont.c (Fx_select_font): New function.
(syms_of_haikufont): Define new subr.
-2022-04-30 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix failing image test on nox builds
* test/lisp/image-tests.el (image-supported-file-p/built-in): Skip
test in --without-x builds.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `M-x apropos' respect help-window-select
* lisp/apropos.el (apropos-print): Respect help-window-select.
(apropos): Mention it (bug#46034).
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make load-path-shadows-mode a special mode
* lisp/emacs-lisp/shadow.el (load-path-shadows-mode): Make the
mode inherit from special-mode so that the `q' command works.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation-max-output-line-length type
* lisp/progmodes/compile.el (compilation-max-output-line-length):
Fix the type.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid regexp overflow in mm-decode-content-transfer-encoding
* lisp/gnus/mm-bodies.el (mm-decode-content-transfer-encoding):
The base64 may be huge, so avoid backtracking (bug#55195).
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix Vx_show_tooltip_timeout in ns build, too
* src/nsfns.m (Fx_show_tip): Respect Vx_show_tooltip_timeout here,
too.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation after recent x-show-tooltip-timeout changes
* src/dispnew.c (syms_of_display): Move x-show-tooltip-timeout to
a common file to avoid breaking other systems.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the "retro" Gnus/Message tool bars
@@ -60007,11 +60007,11 @@
(message-tool-bar-gnome, message-tool-bar-retro)
(message-tool-bar-zap-list): Obsolete.
-2022-04-30 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* lisp/gnus/deuglify.el (gnus-article-outlook-rearrange-citation): Add autoload cookie.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use x-show-tooltip-timeout in all the implementations
@@ -60022,7 +60022,7 @@
* src/xfns.c (Fx_show_tip): Doc fix.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't hard code the default x-show-tip timeout
@@ -60030,7 +60030,7 @@
(syms_of_xfns): Add a new x-show-tooltip-timeout variable
(bug#23341).
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move the when-let family of macros to subr.el
@@ -60042,35 +60042,35 @@
uses these macros in functions that end up being called during
bootstrap.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid using if-let in subr.el
* lisp/subr.el (string-lines): Avoid using if-let (from subr-x) in
subr (bug#55194).
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the xref--button-map more regular
* lisp/progmodes/xref.el (xref--button-map): Remove the mouse-1
binding (bug#35353).
-2022-04-30 Jin Choi <jsc@alum.mit.edu> (tiny change)
+2023-04-15 Jin Choi <jsc@alum.mit.edu> (tiny change)
Make Python evaluation work more reliably
* lisp/progmodes/python.el (python-shell-buffer-substring): Make
more regions valid Python code (bug#55174).
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some cases of flicker on MS Windows
* src/w32term.c (w32_read_socket): Fix typo in check before
flipping buffers.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Truncate output from grep
@@ -60080,7 +60080,7 @@
(compilation-filter): Use it.
(compilation--insert-abbreviated-line): New function.
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make grep-mode-font-lock-keywords more efficient
@@ -60088,7 +60088,7 @@
regexp less greedy so that long lines don't take forever to
font-lock (bug#44983).
-2022-04-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a KEEP-NEWLINES argument to string-lines
@@ -60096,7 +60096,7 @@
* lisp/subr.el (string-lines): Add a KEEP-NEWLINES argument.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display updating inside the minibuffer on MS Windows
@@ -60107,25 +60107,25 @@
* src/w32term.c (w32_flip_buffers_if_dirty): New function.
* src/w32term.h: Update prototypes.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid server roundtrip on wheel events from scroll bars on XI2
* src/xterm.c (handle_one_xevent): Translate coordinates for
scroll bars correctly when handling XI2 wheel events.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* admin/CPP-DEFINES: Update for new features.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Process editres events not for frames correctly
* src/xterm.c (handle_one_xevent): Dispatch Editres events to
interested widgets.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Adjustments to double buffering on MS Windows
@@ -60147,7 +60147,7 @@
* src/w32xfns.c (get_frame_dc): Respect
`w32-disable-double-buffering'.
-2022-04-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix use of kp-decimal in 'vhdl-stutter-mode'
@@ -60155,7 +60155,7 @@
signaling an error when the user presses the kp-decimal key on the
numeric pad in 'vhdl-stutter-mode'. (Bug#55079)
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle exposure in the widget's expose proc on X
@@ -60173,7 +60173,7 @@
* src/xterm.c (handle_one_xevent): Handle exposure through the
widget instead.
-2022-04-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix releasing the mouse on top of the tool bar on MS Windows
@@ -60181,14 +60181,14 @@
specially for button up events if no tool bar item was
previously pressed.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix palette freeing on MS Windows with double buffering
* src/w32term.c (w32_release_paint_buffer): Also release target
DC palette.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement double buffering on MS Windows
@@ -60218,7 +60218,7 @@
(get_frame_dc, release_frame_dc): Return back buffer when
appropriate and set dirty flag.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent cursors from being set on tooltip frames on Haiku
@@ -60227,7 +60227,7 @@
Ignore tooltip frames. Otherwise, the cursor changes every time
a tooltip is mapped.
-2022-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
debug-early: Print bytecode in a more manageable way
@@ -60235,32 +60235,32 @@
Escape newlines to and bytecodes to make backtraces slightly more
readable. Use `cl-prin1` when available.
-2022-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Add `symbol-with-pos`
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix focus reversion of Motif menus on XI2
* src/xmenu.c (create_and_show_popup_menu): Stop setting input
focus on the menu window.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse face bugs on Motif
* src/xterm.c (handle_one_xevent): Fix handling LeaveNotify
events from Motif menus.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Check display when handling XdndFinished events
* src/xterm.c (handle_one_xevent): Check that the display is
actually the one we want before finishing DND.
-2022-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
CL types: Accept both `byte-code-function` and `compiled-function`
@@ -60274,7 +60274,7 @@
* lisp/emacs-lisp/cl-macs.el (byte-code-function, compiled-function, subr):
New types.
-2022-04-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* test/lisp/replace-tests.el (query-replace-tests): Add more tests (bug#54733)
@@ -60282,21 +60282,21 @@
(perform-replace--run-tests): New function.
(perform-replace-tests): New test function.
-2022-04-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify window-char-pixel-* code slightly
* lisp/window.el (window-char-pixel-width)
(window-char-pixel-height): Simplify code slightly.
-2022-04-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Explain effects of setting a zero-width fringe
* lisp/fringe.el (fringe-mode): Not non-obvious effects of setting
a fringe to zero width.
-2022-04-29 Titus von der Malsburg <malsburg@posteo.de>
+2023-04-15 Titus von der Malsburg <malsburg@posteo.de>
Add new functions for computing character metrics for windows
@@ -60309,7 +60309,7 @@
(window-char-pixel-height)
(window-max-characters-per-line): New functions (bug#19395).
-2022-04-29 Pip Cet <pipcet@gmail.com>
+2023-04-15 Pip Cet <pipcet@gmail.com>
Make timer_check even more resilient
@@ -60317,14 +60317,14 @@
copy of the timer list (bug#21380). This prevents an extremely
unlikely segfault.
-2022-04-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid binding mouse-1 in xref when mouse-1 doesn't follow links
* lisp/progmodes/xref.el (xref--button-map): Avoid binding mouse-1
when `mouse-1-click-follows-link' is nil (bug#35353).
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix colorspace calculations on Haiku
@@ -60344,7 +60344,7 @@
(Fx_display_visual_class): Handle grayscale colorspaces.
(syms_of_haikufns): New defsyms.
-2022-04-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add helper function to remove title bar when maximizing frames
@@ -60354,7 +60354,7 @@
* src/window.c (syms_of_window): Mention it.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle IO errors when creating Motif drag window
@@ -60362,7 +60362,7 @@
(xm_get_drag_window): Use that as the IO error handler when the
temporary display is open.
-2022-04-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file name selection conversion on Haiku
@@ -60370,7 +60370,7 @@
Register new encoder.
(haiku-select-encode-file-name): New function.
-2022-04-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some unneeded tests from the X double buffering code
@@ -60378,7 +60378,7 @@
(flush_dirty_back_buffer_on): Avoid testing for impossible
situations.
-2022-04-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Cancel DND correctly during display disconnect on a different display
@@ -60386,17 +60386,17 @@
(x_connection_closed): Send the messages to cancel DND if a
different display was disconnected.
-2022-04-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (XTflash): Check return value of pselect.
-2022-04-28 Eugene Ha <eha@posteo.de> (tiny change)
+2023-04-15 Eugene Ha <eha@posteo.de> (tiny change)
Find libgccjit.dylib on Homebrew Macos
* configure.ac: Also find libggcjit on Homebrew (bug#55173).
-2022-04-28 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify byte compiler etc. on org-compat, org-macs
@@ -60409,7 +60409,7 @@
pacify check-declare-file when run on org-macs.
* lisp/org/org-macs.el (org-time-convert-to-integer): Declare.
-2022-04-28 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Change current-time back to list form
@@ -60422,14 +60422,14 @@
CURRENT_TIME_LIST. All uses of CURRENT_TIME_LIST changed to
use current_time_list, and all documentation changed.
-2022-04-28 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Document \807 etc. in raw byte display
* doc/emacs/display.texi (Display Custom): Mention potential
confusion in raw byte display.
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Kill off more Gnus buffers on Gnus exit
@@ -60439,21 +60439,21 @@
* lisp/gnus/nntp.el (nntp-make-process-buffer): Ensure that we
kill these buffers on Gnus exit (bug#55167).
-2022-04-28 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Add Sefirot to Omer counting
* lisp/calendar/cal-hebrew.el (diary-hebrew-omer-sefirot): New variable.
(diary-hebrew-omer): Use it to show the sefirot.
-2022-04-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
# Conflicts:
# lisp/progmodes/xref.el
-2022-04-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add tests for image-supported-file-p
@@ -60463,11 +60463,11 @@
(image-supported-file-p/optional)
(image-supported-file-p/unsupported-returns-nil): New tests.
-2022-04-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/finder.el (finder-mode-map): Use defvar-keymap.
-2022-04-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of font- and face-related attribute functions
@@ -60482,11 +60482,11 @@
(Attribute Functions): Add cross-reference to the description of
face attributes.
-2022-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/nadvice.el: Fix bug#55149
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow inserting and selecting binary blobs from sqlite
@@ -60494,7 +60494,7 @@
data.
* src/sqlite.c (bind_values): Bind BLOB columns correctly (bug#54591).
-2022-04-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify buffer flipping code on Haiku
@@ -60503,21 +60503,21 @@
(haiku_read_socket): Use that instead of looping over each frame
at the end.
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document dired-keep-marker-copy more
* doc/emacs/dired.texi (Operating on Files): Mention
dired-keep-marker-copy.
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve dired-do-copy doc string
* lisp/dired-aux.el (dired-do-copy): Mention the
`dired-keep-marker-copy' variable in the doc string (bug#21746).
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document the non-effect of narrowing on get-text-property
@@ -60527,38 +60527,38 @@
* src/textprop.c (Ftext_properties_at, Fget_text_property):
Mention narrowing.
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add comment to linum-mode about being old
* lisp/linum.el (linum-mode): Link to display-line-numbers-mode
(bug#34639).
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix `g' in *grep* after `A' in Dired
* lisp/dired-aux.el (dired-do-find-regexp): Allow `g' to work in
the resulting grep buffer by not being destructive (bug#55157).
-2022-04-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix another help-fns--insert-menu-bindings parsing problem
* lisp/help-fns.el (help-fns--insert-menu-bindings): Fix keymap
traversal when elements are symbols.
-2022-04-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_term_init): Fix the non-GTK3 XI2 build.
-2022-04-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Revert previous change in test/Makefile.in
* test/Makefile.in (test_template): Revert previous change, it isn't needed.
-2022-04-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix handling of proportional fonts on MS-Windows
@@ -60569,13 +60569,13 @@
* lisp/textmodes/artist.el (artist-mode): Fix test for monospaced
fonts.
-2022-04-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK build
* src/xrdb.c (x_load_resources): Fix definitions of `helv'.
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop overriding default Motif colors with our own
@@ -60583,7 +60583,7 @@
defaults manually, let Motif set them itself. This makes
palettes provided by color servers work again.
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle display disconnects during DND
@@ -60592,7 +60592,7 @@
(x_connection_closed, x_delete_terminal): Handle display
disconnects during DND correctly.
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix target display checks during Motif DND
@@ -60600,7 +60600,7 @@
completion message is actually from the right display before
proceeding.
-2022-04-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
src/xdisp.c: Use same test in `redisplay_window` and `prepare_menu_bars`
@@ -60617,7 +60617,7 @@
(Fwindow_point): Use it.
* src/window.h (window_point): Declare it.
-2022-04-27 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
New user option 'calc-kill-line-numbering'
@@ -60627,28 +60627,28 @@
* etc/NEWS:
* doc/misc/calc.texi (Killing from the Stack): Document the change.
-2022-04-27 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: "linux" style: set indent-tabs-mode to t
* lisp/progmodes/cc-styles.el (c-style-alist): Add the setting of
indent-tabs-mode to "linux" style.
-2022-04-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve tramp-test46-read-password
* test/lisp/net/tramp-tests.el (tramp-test46-read-password): Add a
further check.
-2022-04-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Emulate 'clock' for MS-Windows
* src/w32.c (sys_clock): New function. (Bug#44674)
* nt/inc/ms-w32.h (clock): Redirect to sys_clock.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-M-x' use the original value of print-length while evalling
@@ -60656,7 +60656,7 @@
with the original values of print-level and print-length
(bug#135).
-2022-04-27 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Implement system_process_attributes on Cygwin
@@ -60666,18 +60666,18 @@
* etc/NEWS: Mention the change.
-2022-04-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Add new function current-cpu-time
* doc/lispref/os.texi (Time of Day): Document it.
* src/timefns.c (Fcurrent_cpu_time): New function (bug#44674).
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change parameter order for string-edit functions
@@ -60686,35 +60686,35 @@
they're more similar to `read-string'. Rename symbols throughout
the file from help-text to prompt.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add autoload cookies to string-edit
* lisp/textmodes/string-edit.el (string-edit)
(read-string-from-buffer): Autoload.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some typos in the recent holidays change
* lisp/calendar/holidays.el (holiday-available-holiday-lists): Fix
typos.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Give better error message in dired-toggle-read-only on nonexisting dirs
* lisp/dired.el (dired-toggle-read-only): Refuse to edit
non-existent directories (bug#23276).
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename holiday-lists to holiday-available-holyday-lists
* lisp/calendar/holidays.el (holiday-available-holyday-lists):
Give holiday-lists a better name.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Separate out the holiday lists into its own function
@@ -60722,21 +60722,21 @@
its own function so that it can be altered (bug#55140).
(list-holidays): Use it.
-2022-04-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make test/Makefile more robust
* test/Makefile.in (test_template): Do not fails if corresponding
source file doesn't exist.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add an instruction header line to string-edit
* lisp/textmodes/string-edit.el (string-edit): Add a header line
with instructions.
-2022-04-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make isearch respond to 'mouse-yank-at-point'
@@ -60746,7 +60746,7 @@
* lisp/mouse.el (mouse-yank-at-point): Mention it.
-2022-04-27 Tomasz Hołubowicz <45176912+alternateved@users.noreply.github.com> (tiny change)
+2023-04-15 Tomasz Hołubowicz <45176912+alternateved@users.noreply.github.com> (tiny change)
Add out-of-box support for purescript lsp server
@@ -60756,7 +60756,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/905
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Cleanups to PGTK code
@@ -60795,7 +60795,7 @@
* src/pgtkterm.h (struct pgtk_output): New field for tracking
relief color status, update prototypes.
-2022-04-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Ensure non-null :settings param in didchangeconfiguration notif
@@ -60803,7 +60803,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/936
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some unnecessary code
@@ -60811,11 +60811,11 @@
(SetUpDoubleBuffering): Remove `cspace' field since it's always
RGBA32.
-2022-04-27 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/help-fns.el (help-fns--insert-menu-bindings): Don't highlight heading.
-2022-04-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use org-time-convert-to-integer instead of by hand
@@ -60823,14 +60823,14 @@
Don’t assume list-format timestamps, by using
org-time-convert-to-integer instead of doing it by hand.
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix quitting application from the Deskbar on Haiku
* lisp/term/haiku-win.el (handle-save-session): Kill Emacs
afterwards.
-2022-04-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add simple session management support to Haiku
@@ -60854,21 +60854,21 @@
events.
(haiku_term_init): Check new port.
-2022-04-27 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Avoid change to desktop file format
* lisp/desktop.el (desktop--get-file-modtime): New function.
(desktop-save, desktop-read): Use it.
-2022-04-26 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Be more compatible with older desktops
* lisp/desktop.el (desktop-save): When comparing timestamps use
time-equal-p instead of ‘equal’.
-2022-04-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up pointer blanking code
@@ -60886,7 +60886,7 @@
* src/xterm.h (struct x_display_info): New field
`fixes_pointer_blanking'.
-2022-04-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
nadvice.el: Auto-generate the doc describing the "how" arg
@@ -60896,7 +60896,7 @@
(add-function, advice-add): Use it to auto-generate the table
describing the accepted values for `how`.
-2022-04-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
nadvice.el: Use OClosures
@@ -60916,7 +60916,7 @@
* test/lisp/emacs-lisp/nadvice-tests.el (advice-test-print): New test.
-2022-04-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
nadvice.el: Rename "where" to "how"
@@ -60926,7 +60926,7 @@
(add-function, advice-add): Rename `where` arg to `how`.
* lisp/emacs-lisp/cl-print.el (cl-print-object): Use `advice--how` name.
-2022-04-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Use `advice--cd*r` where applicable
@@ -60934,7 +60934,7 @@
* lisp/emacs-lisp/advice.el (ad-get-orig-definition):
* lisp/help.el (help-function-arglist): Use `advice--cd*r`.
-2022-04-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Pretty print OClosure slot accessors
@@ -60943,14 +60943,14 @@
* test/lisp/emacs-lisp/nadvice-tests.el (advice-test-call-interactively):
Avoid `defun` within a function.
-2022-04-26 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix gnus-html-image-cache-ttl FIXME
* lisp/gnus/gnus-html.el (gnus-html-image-cache-ttl):
Make it a seconds count.
-2022-04-26 Alex Schroeder <alex@gnu.org>
+2023-04-15 Alex Schroeder <alex@gnu.org>
Fix error in rcirc for IRC tags without values
@@ -60960,7 +60960,7 @@
nil, the STRING argument for the replace-regexp-in-string is nil,
which results in an error.
-2022-04-26 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
New generic function `oclosure-interactive-form`
@@ -60991,35 +60991,35 @@
* doc/lispref/commands.texi (Using Interactive):
Document `oclosure-interactive-form`.
-2022-04-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention caveats in the map-delete doc string
* lisp/emacs-lisp/map.el (map-delete): Mention how this has to be
used for lists (bug#25929).
-2022-04-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix EWMH window activation
* src/xterm.c (x_ewmh_activate_frame): Add missing fields of
message. (bug#55122)
-2022-04-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak interactive use of delete-windows-on
* lisp/window.el (delete-windows-on): Make prompting better, and
allow specifying only the current frame interactively (bug#34749).
-2022-04-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C RET' work in archive-mode
* lisp/arc-mode.el (archive-copy-file): Fix the default value
(when the user hits RET) (bug#55123).
-2022-04-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make new menu *Help* output be more resilient
@@ -61027,7 +61027,7 @@
the heading if it turns out that we actually find the menu.
(help-fns--insert-bindings): Tweak calling convention.
-2022-04-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option flymake-mode-line-lighter
@@ -61037,14 +61037,14 @@
option (bug#55115).
(flymake--mode-line-title): Use it.
-2022-04-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve documentation for t value for reusable-frames
* doc/lispref/windows.texi (Buffer Display Action Alists): Note
that the t value is rarely a good one (bug#55103).
-2022-04-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix event mask of activation client message
@@ -61053,11 +61053,11 @@
(x_ewmh_activate_frame): Fix event mask used to send message to
the root window.
-2022-04-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_scroll_run): Only flush GC if really necessary.
-2022-04-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix Ruby indentation with double splat as first block param
@@ -61065,7 +61065,7 @@
(ruby-smie--backward-token): Tokenize "**" separately from "|".
Problem reported at https://github.com/dgutov/robe/issues/136.
-2022-04-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Cache relief colors on Haiku since their computation is expensive
@@ -61076,14 +61076,14 @@
* src/haikuterm.h (struct haiku_output): New fields for caching
the last relief color.
-2022-04-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify misc/test-custom-opts
* lisp/gnus/gnus-html.el (gnus-html-image-cache-ttl):
Also allow it to be a cons of integers.
-2022-04-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic.el: Upcase formal args in `C-h o`
@@ -61095,14 +61095,14 @@
(cl--generic-upcase-formal-args): New function.
(cl--generic-describe): Use it.
-2022-04-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use (TICKS . HZ) for current-time etc.
* src/timefns.c (CURRENT_TIME_LIST): Change default to false.
All documentation changed.
-2022-04-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Support (encode-time (list s m h D M Y))
@@ -61110,7 +61110,7 @@
Requested by Max Nikulin for Org (bug#54764).
* test/src/timefns-tests.el (encode-time-alternate-apis): New test.
-2022-04-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change the display of menu bindings in *Help*
@@ -61118,14 +61118,14 @@
to describe menu entries more fully (bug#52870).
(help-fns--key-bindings): Use it.
-2022-04-25 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Fix type of word-wrap-whitespace-characters
* lisp/textmodes/word-wrap-mode.el (word-wrap-whitespace-characters):
Fix type.
-2022-04-25 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Po Lu <luangruo@yahoo.com>
Fix nsmenu compilation under macOS 10.6
@@ -61145,21 +61145,21 @@
(ns_frame_scale_factor):
([EmacsWindow setParentChildRelationships]): Fix macOS version stuff.
-2022-04-25 Karl Fogel <kfogel@red-bean.com>
+2023-04-15 Karl Fogel <kfogel@red-bean.com>
Update bookmark sort indicator at proper time
This follows up to my commit 8b071c77b0d7 of 2022-04-24. Thanks to
Manuel Giraud <manuel@ledu-giraud.fr> for reporting the buglet.
-2022-04-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make default Haiku tool bar color match system preferences
* lisp/faces.el (tool-bar): Use system bar color as the default
tool-bar background color on Haiku.
-2022-04-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move the Incremental Search menu one menu up
@@ -61167,7 +61167,7 @@
Search from the Search menu...
(menu-bar-edit-menu): ... one step up (bug#43308).
-2022-04-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Protect against the host name containing an alpha character
@@ -61175,7 +61175,7 @@
against the unlikely case that the host name contains an alpha
character (bug#14250).
-2022-04-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add test for Tramp password handling
@@ -61191,7 +61191,7 @@
* test/lisp/net/tramp-archive-tests.el (tramp-archive-test47-auto-load)
(tramp-archive-test47-delay-load): Rename.
-2022-04-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make flymake-show-buffer-diagnostics error out in non-Flymake buffers
@@ -61199,7 +61199,7 @@
Signal an error if run outside of a buffer with Flymake enabled
(bug#55097).
-2022-04-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up some string-edit.el strings
@@ -61208,7 +61208,7 @@
bindings.
(string-edit): Fix message at the end.
-2022-04-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Delete some unused functions on Haiku
@@ -61216,7 +61216,7 @@
(BWindow_workspaces):
* src/haiku_support.h: Remove unused functions and prototypes.
-2022-04-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of autorelease warnings during building on GNUstep
@@ -61225,35 +61225,35 @@
* src/nsterm.m (ns_term_shutdown): Setup autorelease when
objects might be autoreleased during building.
-2022-04-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/nsfns.m (Fns_list_colors): Fix autoreleasing.
-2022-04-24 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.3-3-gd54104
-2022-04-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set last user time during drag-and-drop
* src/xterm.c (XTmouse_position): Set last user time if
track-mouse is drag-source or dropping.
-2022-04-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix 32-bit Haiku build
* src/haiku_support.h (be_get_ui_color): Fix prototype.
-2022-04-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve indexing in "Programmed Completion"
* doc/lispref/minibuf.texi (Programmed Completion): Improve
indexing. (Bug#55095)
-2022-04-24 Karl Fogel <kfogel@red-bean.com>
+2023-04-15 Karl Fogel <kfogel@red-bean.com>
Improve sorting in the bookmark list buffer
@@ -61271,27 +61271,27 @@
(bookmark-bmenu-mode): Document the new behavior. Rename the
"Bookmark" column to "Bookmark Name" for clarity & documentabilty.
-2022-04-24 Aleksandr Vityazev <avityazev@posteo.org>
+2023-04-15 Aleksandr Vityazev <avityazev@posteo.org>
Fix typo in cl.texi example
* doc/misc/cl.texi (Argument Lists): Fix typo (bug#55092).
-2022-04-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use `C-c C-k' instead of `C-c C-d' to abort in string-edit
* lisp/textmodes/string-edit.el (string-edit-mode-map): Use `C-c
C-k' to abort.
-2022-04-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further help-fns--editable-variable fixes
* lisp/help-fns.el (help-fns--editable-variable): Don't bug out on
non-symbols.
-2022-04-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Provide help when doing (shell-command "... &") on buffer collisions
@@ -61299,14 +61299,14 @@
function (bug#13649).
(shell-command): Use it to provide fuller help.
-2022-04-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function `read-string-from-buffer'.
* doc/lispref/minibuf.texi (Text from Minibuffer): Document it.
* lisp/textmodes/string-edit.el: New file.
-2022-04-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow 'C-u C-h .' to describe button/widgets
@@ -61314,14 +61314,14 @@
* lisp/help-at-pt.el (display-local-help): Display button/widget
help (bug#54963).
-2022-04-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that the global sql-buffer variable is set
* lisp/progmodes/sql.el (sql-product-interactive): Set the
expected global value of sql-buffer (bug#55088).
-2022-04-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'set-fontset-font'
@@ -61330,11 +61330,11 @@
documentation of 'set-fontset-font'. Rename the arguments to be
more self-explanatory. (Bug#55086)
-2022-04-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/term/haiku-win.el (x-colors): Also update with system colors.
-2022-04-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow looking up window system colors on Haiku
@@ -61348,7 +61348,7 @@
(syms_of_haikufns): New defvar `haiku-allowed-ui-colors'.
* src/haikuterm.c (haiku_term_init): Fix coding style.
-2022-04-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix disabling double buffering on Haiku
@@ -61358,7 +61358,7 @@
(haiku_draw_relief_rect, haiku_draw_underwave): Clean up coding
style.
-2022-04-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Speed up color cache lookup on X
@@ -61369,7 +61369,7 @@
* src/xterm.h (struct x_display_info): Turn color cache into a
hash table and add appropriate fields.
-2022-04-23 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: New alignment function c-lineup-argcont-+
@@ -61383,19 +61383,19 @@
* doc/misc/cc-mode.texi (Operator Line-Up): Add a new piece for
c-lineup-argcont-+.
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
NEWS copy editing
Fix elc.gz loading test some more
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a failing test case for bug#12598
Author:
-2022-04-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Allow not clearing the echo area
@@ -61405,28 +61405,28 @@
* src/xdisp.c (clear_message): Respect the dont-clear-message
value.
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't have help-fns--editable-variable override link buttons
* lisp/help-fns.el (help-fns--editable-variable): Don't override
link buttons (bug#40774).
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention the case of the result in the try-completion doc string
* src/minibuf.c (Ftry_completion): Mention the case of the results
(bug#39484).
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make elisp-flymake-byte-compile clean up on failures
* lisp/progmodes/elisp-mode.el (elisp-flymake-byte-compile): Clean
up no matter what the exit status of the process is (bug#55056).
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't make a header if the user hasn't specified columns in vtable
@@ -61435,7 +61435,7 @@
(vtable-insert): Don't insert a header line or a header if the
user hasn't specified the columns (bug#55075).
-2022-04-23 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Fix prompts in sql-get-login again
@@ -61443,18 +61443,18 @@
everywhere.
(sql-get-login): Revert previous fix (bug#52546).
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-04-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new minor mode word-wrap-whitespace-mode
* doc/emacs/display.texi (Visual Line Mode): Document it.
* lisp/textmodes/word-wrap-mode.el: New minor mode.
-2022-04-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix key navigation of Lucid menus on XI2
@@ -61464,28 +61464,28 @@
* src/xterm.c (handle_one_xevent): Dispatch XI2 key events via
Xt when popup is active.
-2022-04-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix problem with Solaris ls in Tramp
* lisp/net/tramp-sh.el (tramp-sunos-unames): Move up.
(tramp-sh--quoting-style-options): Handle erroneous Solaris ls.
-2022-04-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid unnecessary calculations when handling button events during DND
* src/xterm.c (handle_one_xevent): Only calculate DND grab for
button release events.
-2022-04-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid clearing splash screen message during DND on Haiku
* src/haikuterm.c (haiku_read_socket): Respect any_help_event_p
when sending help events for DND.
-2022-04-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Byte compiler: Prevent special forms' symbols being replaced by bare symbols
@@ -61505,7 +61505,7 @@
a special form, rather than replacing the symbol with a bare symbol, e.g.
'cond.
-2022-04-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Byte compiler: correct output warning message positions (part 2)
@@ -61516,7 +61516,7 @@
* lisp/emacs-lisp/byte-run.el (byte-run--ssp-seen): Correct the doc string.
-2022-04-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further doc string quoting fixes
@@ -61533,7 +61533,7 @@
* lisp/emacs-lisp/pcase.el (pcase-setq): Further quoting fixes in
doc strings.
-2022-04-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Audit quoting the quote character in doc strings
@@ -61634,48 +61634,48 @@
quoted with \\=, and regularize 'foo to `foo', and quote strings
like "foo" instead of 'foo'.
-2022-04-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix map-into doc string example
* lisp/emacs-lisp/map.el (map-into): Fix quote quoting in example.
-2022-04-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-u C-x =' be more verbose about invisible characters
* lisp/descr-text.el (describe-text-properties-1): Note confusing
bits about invisible characters (bug#3400).
-2022-04-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow completion-ignore-case to be buffer-local
* lisp/minibuffer.el (completing-read-default): Use the value of
completion-ignore-case from the current buffer (bug#12615).
-2022-04-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix problem with (narrow-to-page 1) with point at point-max
* lisp/textmodes/page.el (forward-page): Make this work more
consistently if point is on bol (bug#20663).
-2022-04-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't transfer window attributes trying to find the XM drag window
* src/xterm.c (xm_get_drag_window): Select for impossible event
mask instead of asking for the window attributes.
-2022-04-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Another fix for non-ASCII 'overlay-arrow-string'
* src/xdisp.c (get_overlay_arrow_glyph_row): Fix yet another place
that assumed each character is a single byte.
-2022-04-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix default frame name on Haiku
@@ -61696,7 +61696,7 @@
* src/haikuterm.h (struct haiku_display_info): New field
`default_name'.
-2022-04-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add an option to disable XI2 for debugging purposes
@@ -61704,14 +61704,14 @@
`disableInputExtension', which means to skip setting up the X
input extension.
-2022-04-21 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Handle nil BOB button label
* lisp/net/eudc-bob.el (eudc-bob-make-button): Do not throw error
when label is nil.
-2022-04-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid a redisplay loop when 'overlay-arrow-string' is non-ASCII
@@ -61719,7 +61719,7 @@
character in 'overlay-arrow-string' is one byte long. Reported by
Yuri D'Elia <wavexx@thregr.org>.
-2022-04-21 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
New electric forward slash Eshell module
@@ -61729,7 +61729,7 @@
(Make / electric): Retitle to "Make / more electric", update, add
"@noindent", and standardize terminology.
-2022-04-21 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Bind 'imenu' to 'M-g i' globally
@@ -61742,7 +61742,7 @@
* doc/emacs/programs.texi (Imenu):
* lisp/progmodes/cperl-mode.el: Replace 'M-x imenu' with 'M-g i'.
-2022-04-21 Tino Calancha <tino.calancha@gmail.com>
+2023-04-15 Tino Calancha <tino.calancha@gmail.com>
Respect user-emacs-directory-warning in startup
@@ -61750,7 +61750,7 @@
accessible, delay to show a warning until all command line args
are processed (bug#25163).
-2022-04-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow searching for regexps with a prefix
@@ -61760,24 +61760,24 @@
(Info-apropos-matches): Allow taking a regexp.
(info-apropos): Prefix now means looking for a regexp.
-2022-04-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix indentation in copy-region-as-kill
* lisp/simple.el (copy-region-as-kill): Fix indendation.
-2022-04-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify cl-incf/decf doc strings
* lisp/emacs-lisp/cl-lib.el (cl-incf):
(cl-decf): Clarify that nil isn't a valid value for X (bug#31715).
-2022-04-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haiku_support.cc (gui_abort): Get rid of extern "C" declarations.
-2022-04-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add minimum instructions to 'query-replace' commands
@@ -61796,14 +61796,14 @@
instructions for dealing with matches, with a link to the command
that shows the full instructions. (Bug#55050)
-2022-04-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Link dired-do-find-regexp-and-replace to query-replace
* lisp/dired-aux.el (dired-do-find-regexp-and-replace): Link to
`query-replace' (bug#55050).
-2022-04-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Unbreak build with MinGW64.
@@ -61811,14 +61811,14 @@
less than _WIN32_WINNT_WINXP, i.e. for building with mingw.org's
MinGW.
-2022-04-21 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
gnus: fix %a in topic line
* lisp/gnus/gnus-topic.el (gnus-topic-insert-topic-line): Also
bind `entries'.
-2022-04-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up PGTK code some more
@@ -61853,7 +61853,7 @@
functions copied over from X and modified, and remove duplicate
definition of at least one function.
-2022-04-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't leave xm drag initiator info around
@@ -61861,13 +61861,13 @@
(x_begin_drag_and_drop): Don't confuse GTK+ 2.x by leaving drag
initiator info around after DND completes.
-2022-04-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
dbb2dd6939 ; Fix wording of "File Notifications" in the ELisp manual
-2022-04-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use a cache on Haiku to avoid constantly reading fonts during font lookup
@@ -61889,7 +61889,7 @@
* src/haikuterm.c (haiku_frame_up_to_date): Clear font lookup
cache every 50 updates.
-2022-04-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make some frame params work on Haiku tooltip frames
@@ -61897,21 +61897,21 @@
(BWindow_set_tooltip_decoration): Use RecomputeFeel instead of
setting window feel by hand.
-2022-04-20 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
More encode-time pitfall doc fixes
* doc/lispref/os.texi (Time Conversion): Improve discussion of
encode-time pitfalls based on comments by Max Nikulin (Bug#54764#63).
-2022-04-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'scheme-indent-function' property
* lisp/progmodes/scheme.el: Extend and clarify the commentary
regarding the 'scheme-indent-function' property of special forms.
-2022-04-20 Jean Abou Samra <jean@abou-samra.fr> (tiny change)
+2023-04-15 Jean Abou Samra <jean@abou-samra.fr> (tiny change)
Define indentation behavior for a few more special Scheme forms
@@ -61919,42 +61919,42 @@
property for 'and-let*', 'with-syntax', 'eval-when;, and
pattern matching macros. (Bug#55033)
-2022-04-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `below' z-group on Haiku
* src/haiku_support.cc (BWindow_set_z_group): Handle
Z_GROUP_BELOW by setting the B_AVOID_FRONT flag.
-2022-04-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure forward progress in bibtex-map-entries
* lisp/textmodes/bibtex.el (bibtex-map-entries): Ensure forward
progress (bug#55036).
-2022-04-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the outline level in the Emacs NEWS modes
* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common): Fix
the outline level (bug#54993).
-2022-04-20 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix build for --enable-checking=structs
* src/pdumper.c (dump_subr): Update Lisp_Subr hash after last change
of 2022-04-18 "Port struct Lisp_Subr to C99".
-2022-04-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reset Motif DND protocol numbers when writing targets table
* src/xterm.c (xm_setup_dnd_targets): Set header.protocol to 0
when writing table.
-2022-04-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `above' z-group on Haiku
@@ -61972,7 +61972,7 @@
like on X.
(haiku_frame_parm_handlers): Add `haiku_set_z_group'.
-2022-04-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix enabling menu bar multiple times on Haiku
@@ -61985,11 +61985,11 @@
* src/haikuterm.c (haiku_read_socket): Don't adjust height here
anymore.
-2022-04-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from gnulib
-2022-04-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -std=c99 with printf %p
@@ -61997,7 +61997,7 @@
to void * before printing it with %p, as the C standard
doesn’t bless printing function pointers with %p.
-2022-04-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -std=c99
@@ -62005,28 +62005,28 @@
%Lu for sscanf, as %llu is standard and %Lu is not, and the latter
can provoke warnings if gcc is used pedantically.
-2022-04-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Check for integer overflow when writing Motif targets tables
* src/xterm.c (xm_setup_dnd_targets): Check for integer overflow
when adding list to target table.
-2022-04-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous description of fallback order
* doc/emacs/custom.texi (Specifying File Variables): Document
fallback mode order.
-2022-04-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document how to specify fallback modes
* doc/emacs/custom.texi (Specifying File Variables): Document
fallback mode order.
-2022-04-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix regression with multiple mode: entries in the prop line
@@ -62034,7 +62034,7 @@
final mode: line (which is the same as having several mode: bits
in the header line.
-2022-04-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow several mode: elements in the local variable section
@@ -62043,7 +62043,7 @@
final mode: line (which is the same as having several mode: bits
in the header line.
-2022-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Fix GCC warnings when CHECK_LISP_OBJECT_TYPE
@@ -62053,7 +62053,7 @@
* src/bytecode.c (Fbyte_code): Fix Lisp_Object/int mixup.
-2022-04-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert prompting changes in viper-cmd
@@ -62062,14 +62062,14 @@
prompting changes done in 50512e3 -- the way viper prompts in
command mode is special (bug#55007).
-2022-04-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Be more resilient against invalid headers in mml-generate-mime
* lisp/gnus/mml.el (mml-generate-mime): Don't bug out when called
with invalid headers (bug#55014).
-2022-04-19 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix handling of intspecs as string by rcirc-define-command
@@ -62078,7 +62078,7 @@
list so that the result of its interpretation is passed as the first
argument of the command resulting from the macro expansion.
-2022-04-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix `x-mouse-click-focus-ignore-position' for odd coincidences across displays
@@ -62087,7 +62087,7 @@
(x_delete_display): Clear that display here if applicable.
(x_initialize): Likewise.
-2022-04-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix dimensions of console window of restarted Emacs on MS-Windows
@@ -62096,7 +62096,7 @@
dimensions of the restarted Emacs's console window to the same
values as that of the original Emacs.
-2022-04-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Deal with Motif drag window related races
@@ -62104,7 +62104,7 @@
(xm_get_drag_window): If a drag window was created and we have
the temp display grabbed, use that instead.
-2022-04-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor cleanups to Haiku menu code
@@ -62119,14 +62119,14 @@
* src/haikufont.c (haikufont_open, haikufont_close): Fix coding
style.
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change for GTK 2
* src/xfns.c (x_set_alpha_background):
* src/xterm.c (x_update_opaque_region): Move some ifdefs around.
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix opaque region treatment on GTK 3
@@ -62134,7 +62134,7 @@
* src/xterm.c (x_update_opaque_region): Update opaque region for
tooltip frames the correct way on GTK.
-2022-04-18 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port struct Lisp_Subr to C99
@@ -62142,7 +62142,7 @@
a feature missing from C99 and not supported by older OS X.
All uses changed.
-2022-04-18 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port module_bignum_count_max to strict C
@@ -62150,14 +62150,14 @@
this a macro, not an enum, since it might not fit into
int as C99 requires.
-2022-04-18 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Tell those using exclusively X not to use the PGTK port
* INSTALL (Alternative window systems): Tell those using exclusively X
not to use the PGTK port.
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of glyphless characters on Haiku
@@ -62166,17 +62166,17 @@
(haiku_draw_glyphless_glyph_string_foreground): Correctly
display glyphless character rectangle.
-2022-04-18 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use "@code{nil}" in documentation
-2022-04-18 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove obsolete footnote
Emacs no longer warns about timestamps like (1 . 1000).
-2022-04-18 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix glyphless glyph display on NS (bug#54970)
@@ -62187,7 +62187,7 @@
and also which glyphs are drawn.
(ns_glyph_metrics): Reverse ascent and descent.
-2022-04-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements in 'restart-emacs' on MS-Windows
@@ -62197,7 +62197,7 @@
* src/w32console.c (initialize_w32_display): Check errors in call
to GetConsoleCursorInfo.
-2022-04-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Byte compiler: correct output warning message positions
@@ -62209,14 +62209,14 @@
(byte-compile--warning-source-offset): Call the new function above rather than
the old one.
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make isearch-lax-whitespace a user option
* lisp/isearch.el (isearch-lax-whitespace): Make into a defcustom
(bug#20351).
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid hangs in python-mode with debug-on-error set
@@ -62225,7 +62225,7 @@
machinery, and if debug-on-error is set here, we'll hang Emacs
(bug#54996).
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make it easier to use Emacs as a script interpreter
@@ -62236,7 +62236,7 @@
* src/emacs.c (main): Transform -x to -scripteval.
(standard_args): Add -x (bug#20682).
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing Motif atoms
@@ -62245,7 +62245,7 @@
(syms_of_xselect): Optimize for XmTRANSFER_SUCCESS and
XmTRANSFER_FAILURE as well.
-2022-04-18 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Byte compiler: remove symbol positions from byte-switch tables
@@ -62255,14 +62255,14 @@
symbols with positions in byte-switch tables, by temporarily removing the
entries from the table, and reinserting them amended.
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up view-emacs-news code
* lisp/help.el (view-emacs-news): Remove workaround after fixing
mode: cookie error.
-2022-04-18 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
+2023-04-15 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
Unify local variable initialisation in url-http
@@ -62271,7 +62271,7 @@
declaring and initialising it the same way as the other related
ones (bug#54989).
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `restart-emacs' work when Emacs is started with --chdir
@@ -62283,13 +62283,13 @@
with relative executable names, and so that we attempt to restart
the same executable and not some other Emacs from PATH.
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve `restart-emacs' error reporting
* src/emacs.c (Fkill_emacs): Do better error reporting on restarting.
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make "restart" erroring slightly more reliable
@@ -62297,21 +62297,21 @@
errors -- we've already shut down Emacs at this point, so the
normal erroring machinery isn't reliable.
-2022-04-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix major-mode setting regression when there's a mode: cookie
* lisp/files.el (hack-local-variables): Fix regression in setting
the major mode when there are mode: cookies in the file (bug#54993).
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop skipping ShapeNotify events during DND on GTK+
* src/xterm.c (handle_one_xevent): Don't skip ShapeNotify events
because we can't send these events back to GDK manually.
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clarify computation of header line vpos
@@ -62319,7 +62319,7 @@
only if is both a tab and header line. Reported by Eli
Zaretskii <eliz@gnu.org>.
-2022-04-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'restart-emacs' in -nw mode on MS-Windows
@@ -62327,14 +62327,14 @@
(w32_reexec_emacs): Kludgey solution for restarting Emacs in the
"-nw" mode.
-2022-04-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix glyph skipping optimization when a tab line is enabled
* src/dispnew.c (update_text_area): Compute vpos of header line
correctly when window has tab line.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor cleanups to PGTK code
@@ -62358,7 +62358,7 @@
(pgtk_create_terminal): Clean up coding style.
* src/pgtkterm.h: Update prototypes.
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port sqlite.c to OS X 10.6.8 with Xcode 3.2.6
@@ -62367,7 +62367,7 @@
* src/sqlite.c (Fsqlite_open): Don’t assume SQLITE_OPEN_MEMORY
is defined.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Haiku menu bars when redisplay happens immediately after activation
@@ -62379,7 +62379,7 @@
* src/haikumenu.c (haiku_activate_menubar): Immediately activate
menu bar after replaying event.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Some minor fixes to Motif DND support
@@ -62387,37 +62387,37 @@
values if wrong byteorder.
(xm_setup_dnd_targets): Read LONG_MAX amount of drag targets.
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Merge from origin/emacs-28
65c04e7115 Update to Org 9.5.2-38-g682ccd
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Merge from origin/emacs-28
3cccf0a910 Don’t assume openat
-2022-04-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix Eshell predicate tests when running from 'make check'
* test/lisp/eshell/em-pred-tests.el (eshell-partial-let-func): Get
original function after macro-expansion.
-2022-04-17 Kyle Meyer <kyle@kyleam.com>
+2023-04-15 Kyle Meyer <kyle@kyleam.com>
Update to Org 9.5.2-38-g682ccd
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make desktop.el use local-minor-modes when saving
* lisp/desktop.el (desktop-buffer-info): Use a more reliable way
to get minor modes (bug#29972).
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Don’t assume openat
@@ -62433,7 +62433,7 @@
(emacs_open_noquit): Reimplement as per the old emacs_openat_noquit,
but use plain 'open'.
-2022-04-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve the support for the Brahmi script
@@ -62444,7 +62444,7 @@
* etc/NEWS: Mention the brahmi input method.
* etc/HELLO: Add a Brahmi greeting.
-2022-04-17 kobarity <kobarity@gmail.com> (tiny change)
+2023-04-15 kobarity <kobarity@gmail.com> (tiny change)
Fix fontifying type hints in python-mode
@@ -62452,7 +62452,7 @@
(python-font-lock-keywords-maximum-decoration): Avoid fontifying
type hints as variable names (bug#54992).
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow editing variable values in *Help* buffers
@@ -62464,7 +62464,7 @@
(help-fns--edit-value-mode-map, help-fns--edit-value-mode)
(help-fns-edit-mode-done): New mode and commands.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make :filters run in the correct buffer in describe-buffer-bindings
@@ -62476,7 +62476,7 @@
* src/keymap.c (Fdescribe_buffer_bindings): Pass in BUFFER to
describe-map-tree.
-2022-04-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'restart-emacs' on MS-Windows
@@ -62488,33 +62488,33 @@
(Fkill_emacs) [WINDOWSNT]: Call 'w32_reexec_emacs' instead of
'execvp'. (Bug#17036)
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a `restart-emacs' sanity check
* src/emacs.c (Fkill_emacs): Add a sanity check for argv.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle bad actual actions during DND
* src/xterm.c (x_dnd_begin_drag_and_drop): Behave correctly when
the target gives us a bad atom.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check whether we can restart in Fkill_emacs
* src/emacs.c (Fkill_emacs): Report an error if we can't restart.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Explain what "pending" means in isearch
* doc/emacs/search.texi (Regexp Search): Explain what "Pending"
usually means (bug#10148).
-2022-04-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Handle connection errors in rcirc-keepalive
@@ -62526,14 +62526,14 @@
(rcirc-send-string): Throw rcirc-closed-connection instead of a
generic error.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function `flush-standard-output'.
* doc/lispref/streams.texi (Output Functions): Document it.
* src/print.c (Fflush_standard_output): New function (bug#15180).
-2022-04-17 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Further improve buffer-match-p related documentation
@@ -62543,7 +62543,7 @@
* lisp/window.el (display-buffer-assq-regexp): Mention what happens
when no entry in the alist satisfies a condition.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new command `restart-emacs'
@@ -62564,7 +62564,7 @@
(read_key_sequence, quit_throw_to_read_char):
* src/eval.c (process_quit_flag): Adjust Fkill_emacs callers.
-2022-04-17 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
+2023-04-15 Nacho Barrientos <nacho.barrientos@cern.ch> (tiny change)
Fix chunked encoding connections in url-http
@@ -62625,57 +62625,57 @@
[0] https://datatracker.ietf.org/doc/html/rfc7230#section-4.1
[1] https://github.com/magit/ghub/issues/81
-2022-04-17 Oleh Krehel <ohwoeowho@gmail.com>
+2023-04-15 Oleh Krehel <ohwoeowho@gmail.com>
Remove duplicates from Info-read-node-name-2
* lisp/info.el (Info-read-node-name-2): Remove duplicates from
completions (bug#20365).
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix instructions on how to enable password-store
* doc/misc/auth.texi (Help for users): Give the correct
instructions on how to enable password store (bug#30900).
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify setopt NEWS entry
Do some NEWS tagging
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a doc string to xref-current-item
* lisp/progmodes/xref.el (xref-after-jump-hook): Link to it.
(xref-current-item): Add a doc string to the now-public variable.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify emacs-news--heading-p logic
* lisp/textmodes/emacs-news-mode.el (emacs-news--heading-p):
Clarify the logic.
-2022-04-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move some entries around in the NEWS file
Fix up the NEWS entry for emacs-news*-mode
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* src/filelock.c (Fcreate_lockfiles): Doc string fix.
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Merge from origin/emacs-28
4641bc1c55 Fix GC bug in filelock.c
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions waiting for menu bar resize events on Haiku
@@ -62688,7 +62688,7 @@
* src/haikuterm.h (struct haiku_output): New field
`wait_for_event_type'.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix race conditions waiting for menu bar resize events on Haiku
@@ -62701,7 +62701,7 @@
* src/haikuterm.h (struct haiku_output): New field
`wait_for_event_type'.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of unused flags on Haiku
@@ -62712,11 +62712,11 @@
* src/haikuterm.h (struct haiku_output): Delete
`menu_up_to_date_p'.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (haiku_free_frame_resources): Free saved menu event.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix hangs when clicking on Haiku menu bar to activate frame
@@ -62741,7 +62741,7 @@
* src/haikuterm.h (struct haiku_output): New field
`saved_menu_event'.
-2022-04-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix GC bug in filelock.c
@@ -62757,7 +62757,7 @@
(make_lock_file_name): Return the encoded name, not the original.
All callers changed.
-2022-04-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add 'G' argument predicate in Eshell
@@ -62769,7 +62769,7 @@
* doc/misc/eshell.texi (Argument Predication): Document 'G' predicate.
-2022-04-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add unit tests and documentation for Eshell predicates/modifiers
@@ -62792,7 +62792,7 @@
* doc/misc/eshell.texi (Argument Predication): New section.
-2022-04-17 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add unit tests and documentation for Eshell pattern-based globs
@@ -62804,14 +62804,14 @@
* doc/misc/eshell.texi (Globbing): Document pattern-based globs.
-2022-04-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure the ftcr font driver is used on Haiku when Cairo is enabled
* src/haikufont.c (syms_of_haikufont): [USE_BE_CAIRO]: Make sure
`ftcr' superseeds `haiku'.
-2022-04-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Document encode-time caveats
@@ -62829,7 +62829,7 @@
* src/timefns.c (Fencode_time): In doc string, mention date
arithmetic and tighten up the wording a bit.
-2022-04-16 Max Nikulin <manikulin@gmail.com>
+2023-04-15 Max Nikulin <manikulin@gmail.com>
Stress difference of new and old ways to call `encode-time'
@@ -62846,14 +62846,14 @@
purpose and limitations of the DST field are added after discussion with
Paul Eggert in (bug#54764).
-2022-04-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Restore pending_signals at a point in the DND event loop
* src/xterm.c (x_dnd_begin_drag_and_drop): Restore
pending_signals after unblock_input.
-2022-04-16 Earl Hyatt <okamsn@protonmail.com>
+2023-04-15 Earl Hyatt <okamsn@protonmail.com>
Add basic Texinfo support for Flymake.
@@ -62863,7 +62863,7 @@
texinfo--flymake-proc. Modify texinfo-mode to automatically add this
function to the hook flymake-diagnostic-functions.
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -62880,7 +62880,7 @@
# lisp/outline.el
# src/sysdep.c
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -62889,7 +62889,7 @@
5ee959aa87 Add a comment about cl-concatenate
ab2b822b9b Revert "Make cl-concatenate an alias of seq-concatenate"
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -62903,7 +62903,7 @@
# Conflicts:
# doc/misc/eww.texi
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -62914,7 +62914,7 @@
ff997ad786 Ensure local `default-directory' in Tramp when needed
4f27588a16 Clarify "idleness" in the ELisp manual
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -62922,17 +62922,17 @@
11a1f7817e Merge branch 'emacs-28' of git.sv.gnu.org:/srv/git/emacs i...
93974198b6 Commit missing file from previous commit
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
8c71ac606e Fix fallout from lexical-binding in vhdl-mode.el
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't leave `C-h N' in a text-mode derived mode
@@ -62940,21 +62940,21 @@
* lisp/textmodes/emacs-news-mode.el (emacs-news-view-mode): Split
into own mode to avoid confusion.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix button-buffer-map binding error
* lisp/button.el (button-buffer-map): Fix error in map rewriting
in previous commit.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new commands to go to headings/sections in the NEWS file
* lisp/textmodes/emacs-news-mode.el (emacs-news-find-heading)
(emacs-news-goto-section): New commands.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add emacs-news-previous-untagged-entry command
@@ -62962,7 +62962,7 @@
(emacs-news-next-untagged-entry): Allow searching backward.
(emacs-news-previous-untagged-entry): New command and keystroke.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fold some too-long NEWS lines
@@ -62970,18 +62970,18 @@
Do some NEWS tagging
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve exif-field discoverability
* lisp/image/exif.el (exif-parse-file, exif-parse-buffer): Link to
`exif-field'.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Do some NEWS tagging
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document project-kill-buffers-display-buffer-list
@@ -62991,54 +62991,54 @@
* lisp/progmodes/project.el (project-kill-buffers): Link to
project-kill-buffers-display-buffer-list.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document prefix to project-find-file
* doc/emacs/maintaining.texi (Project File Commands): Mention the
prefix in the project-find-file command.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix glyphless-display-mode indexing
* doc/lispref/display.texi (Glyphless Chars): Fix indexing.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document completions-sort
* doc/emacs/mini.texi (Completion Options): Document completions-sort.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention completion-wrap-movement in relevant commands
* lisp/simple.el (previous-completion, next-completion): Mention
`completion-wrap-movement'.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document minibuffer-completion-auto-choose/M-up/M-down
* doc/emacs/mini.texi (Completion Commands): Document
minibuffer-completion-auto-choose/M-up/M-down.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further IDNA/proxy url fixes
* lisp/url/url-http.el (url-http-create-request): Puny-encode
domains (bug#54921).
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Crosslink some buttonize function doc strings
* lisp/button.el (buttonize-region, buttonize): Crosslink doc
strings for discoverability.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve completion in `C-h R'
@@ -63046,13 +63046,13 @@
(info--filter-manual-names): Filter away duplicates and irrelevant
files.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify when mode tagging is used
* etc/NEWS: Clarify when mode tagging is used (bug#54964).
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further vcs-cvs/rcs-responsible-p updates from master
@@ -63068,7 +63068,7 @@
* lisp/vc/vc.el: Update comments.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make emacs-news-next-untagged-entry push the mark
@@ -63076,7 +63076,7 @@
(emacs-news-next-untagged-entry): Push the mark for easier
navigation back to where we were.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix NEWS tag commands
@@ -63084,24 +63084,24 @@
(emacs-news-next-untagged-entry): Fix logic.
(emacs-news-count-untagged-entries): Add new command and keystroke.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up emacs-news--buttonize
* lisp/textmodes/emacs-news-mode.el (emacs-news--buttonize):
Remove unnecessary check left over from previous version.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Bind TAB and <backtab> on buttons
* lisp/button.el (button-map): Inherit from 'button-buffer-map'.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new mode for editing and viewing the Emacs NEWS file
@@ -63111,7 +63111,7 @@
* lisp/textmodes/emacs-news-mode.el: New mode for editing and
viewing the Emacs NEWS file.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function buttonize-region
@@ -63119,7 +63119,7 @@
(button--properties): Factored out.
(buttonize): Use it.
-2022-04-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent race conditions with async input during drag-and-drop
@@ -63127,7 +63127,7 @@
drag-and-drop, otherwise the right hold_quit might not be used
for selection events.
-2022-04-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix builds on older versions of macOS
@@ -63141,7 +63141,7 @@
(cherry picked from commit 855e15dbf10a6aac42b860fdb28711f979e2bf22)
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve support for the Brahmi script
@@ -63152,7 +63152,7 @@
* etc/NEWS: Announce the new language environment.
-2022-04-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix builds on older versions of macOS
@@ -63164,7 +63164,7 @@
(system_process_attributes): Use alternative code or exclude features
when building on older macOS versions.
-2022-04-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Disable annoying Clang warnings
@@ -63172,20 +63172,20 @@
-Wimplicit-const-int-float-conversion and -Wint-in-bool-context, which
currently only have false positives.
-2022-04-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix ODF file detection in doc-view-mode
* lisp/doc-view.el (doc-view-set-doc-type): Fix ODF file detection
(bug#54947).
-2022-04-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build with toolkit scroll bars without XI2
* src/xterm.c (mark_xterm): Fix up ifdefs slightly.
-2022-04-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Protect windows from garbage collection when a ClientMessage is pending
@@ -63201,7 +63201,7 @@
* src/xterm.h (struct x_display_info): New fields for recording
a list of protected windows.
-2022-04-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of Outline minor mode options
@@ -63209,21 +63209,21 @@
(outline-minor-mode-cycle, outline-minor-mode-highlight)
(outline-cycle, outline-cycle-buffer): Doc fixes. (Bug#54967)
-2022-04-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some missing multilingual keys to Haiku
* src/haiku_support.cc (keysym_from_raw_char): Support keys
found on some East Asian keyboards.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle errors getting selection ownership when starting DND
* src/xterm.c (x_clear_dnd_targets): New function.
(x_dnd_begin_drag_and_drop): Handle errors in `x_own_selection'.
-2022-04-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve discoverability of 'insert-directory-program'
@@ -63232,7 +63232,7 @@
* lisp/dired.el (dired): Mention 'insert-directory-program' in the
doc string. (Bug#54962)
-2022-04-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Improve buffer-match-p documentation
@@ -63245,7 +63245,7 @@
(display-buffer): Pass the buffer directly to
display-buffer-assq-regexp,.
-2022-04-15 Troels Henriksen <athas@sigkill.dk> (tiny change)
+2023-04-15 Troels Henriksen <athas@sigkill.dk> (tiny change)
Add out-of-box support for futhark lsp server
@@ -63255,7 +63255,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/922
-2022-04-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add rcirc-cycle-completion-flag
@@ -63263,7 +63263,7 @@
* lisp/net/rcirc.el (rcirc-cycle-completion-flag): Add new option.
(rcirc-mode): Respect new option.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix default registry of Haiku font backend
@@ -63276,7 +63276,7 @@
`iso10646-1' as the default registry instead of `utf8', which is
not a registry.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Enable dragging resizing final column in vtable
@@ -63284,7 +63284,7 @@
divider after the final column, too, so that the size can be
dragged.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up keysyms from Haiku headers
@@ -63292,28 +63292,28 @@
numbers here and use those instead.
* src/haiku_support.h: Delete all the X11 keysym definitions.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add some mouse-face bits to vtable
* lisp/emacs-lisp/vtable.el (make-vtable)
(vtable--insert-header-line): Put mouse-face on draggable bits.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak sorting indicator placement in vtable
* lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Tweak
sorting indicator position.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the sorting indicator prettier in vtable
* lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Place
the sorting indicator flush right in the heading.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix dismissal of tooltips on Haiku
@@ -63321,7 +63321,7 @@
`accept_tooltip'.
(haiku_read_socket): Use it when handling MOUSE_MOTION events.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using faces for colors in vtable
@@ -63331,7 +63331,7 @@
(vtable--make-color-face, vtable--face-blend): New functions.
(vtable--insert-line): Adjust usage.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow dragging the divider in vtable
@@ -63342,7 +63342,7 @@
(vtable--drag-resize-column): Adjust to the in-buffer divider
dragging.
-2022-04-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix off-by-one error in text-property-search-backward
@@ -63351,7 +63351,7 @@
would result in not finding the previous (non-)match when at the
first character in a field.
-2022-04-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix cursor motion under truncate-lines with Flymake fringe indicator
@@ -63359,7 +63359,7 @@
as "images" for the purpose of vertical-motion logic dealing with
overshooting buffer positions. (Bug#54946)
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
More PGTK related cleanup
@@ -63391,7 +63391,7 @@
`pgtk_' ones. All callers changed.
* src/pgtkterm.h: Update prototypes.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some extraneous stuff in pgtkfns.c
@@ -63399,7 +63399,7 @@
version check.
(syms_of_pgtkfns): Delete left over defvar from NS port.
-2022-04-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Update project-kill-buffer-conditions to match buffer-match-p
@@ -63408,11 +63408,11 @@
(project--buffer-check): Have `major-mode' behave like `derived-mode'
did previously, and issue a warning of `derived-mode' is used.
-2022-04-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
* window.el (display-buffer-assq-regexp): Use buffer-match
-2022-04-15 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Generalise buffer matching from project.el
@@ -63420,14 +63420,14 @@
a condition.
(match-buffers): Returns all buffers that satisfy a condition.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix core string lookup with modifiers on XI2
* src/xterm.c (handle_one_xevent): Clean modifiers from
xkey.state before giving it to XLookupString.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up various bits of Haiku code
@@ -63449,14 +63449,14 @@
* src/haikuterm.c (haiku_read_socket): Clean up coding style and
fix a few latent bugs.
-2022-04-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing extern declarations to headers
* src/xterm.h (xi_device_from_id, xi_frame_selected_for): Add
`extern' declaration.
-2022-04-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make Haiku scroll bar behave more like other programs
@@ -63466,7 +63466,7 @@
(MouseDown): Set it to the current time + the system repeater
delay.
-2022-04-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port new tests to leap seconds or (TICKS . HZ)
@@ -63474,13 +63474,13 @@
Don’t assume leap seconds are ignored, or that timestamps are in
(HI LO) format.
-2022-04-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
New time-equal-p test
* test/src/timefns-tests.el (time-equal-p-NaN-NaN): New test.
-2022-04-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Properly wait for app thread exit on Haiku
@@ -63494,7 +63494,7 @@
function.
* src/haikuterm.h: Update prototypes.
-2022-04-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix calls to XKB functions without testing for server support
@@ -63502,7 +63502,7 @@
(x_dnd_begin_drag_and_drop): Never call XkbSelectEvents if the
X server doesn't have XKB.
-2022-04-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow dragging dividers in vtable
@@ -63510,7 +63510,7 @@
dragging dividers.
(vtable--drag-resize-column): Adjust function.
-2022-04-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix mouse clicks in hscrolled window with variable-height fonts
@@ -63518,7 +63518,7 @@
height of a screen-line that is completely hscrolled out of view.
Reported by Yasushi SHOJI <yasushi.shoji@gmail.com>.
-2022-04-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow resizing vtable columns by dragging
@@ -63530,28 +63530,28 @@
(vtable-widen-current-column): Rewrite to use
vtable-narrow-current-column.
-2022-04-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/gnus/gnus.el (toplevel autoloads): Fix file name
`score-mode` does not define `gnus-score-edit-all-score`, it's defined
in `gnus-score` instead.
-2022-04-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Have submit-emacs-patch prompt for patch file before subject
* emacsbug.el (submit-emacs-patch): Prompt for patch file and use that
to guess the subject.
-2022-04-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Avoid possibly unnecessary lisp_time_struct call
* timefns.c (time_cmp): Defer the calculation of the time struct, in
case A and B are eq to one another.
-2022-04-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Handle non-ASCII domains correctly in url-https-proxy-connect
@@ -63559,7 +63559,7 @@
(url-https-proxy-after-change-function): Handle IDNA domains
correctly.
-2022-04-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make vtable remember user-altered column widths
@@ -63567,7 +63567,7 @@
(vtable-widen-current-column): Store the size to that it's
respected on `g'.
-2022-04-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that commands like { work on all frames in vtable
@@ -63576,7 +63576,7 @@
(vtable-insert): Use it.
(vtable--widths): Ditto.
-2022-04-14 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
ldap-search-internal cleanup
@@ -63585,7 +63585,7 @@
(ldap-search-internal): Remove skipping of version output. Remove
redundand ws skipping.
-2022-04-14 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Fix eudc-get-attribute-list
@@ -63598,14 +63598,14 @@
* lisp/net/ldap.el (ldap-search-internal): Allow "size limit exceeded"
exit code. Allow empty attribute values.
-2022-04-14 Nobuyoshi Nakada <nobu.nakada@gmail.com>
+2023-04-15 Nobuyoshi Nakada <nobu.nakada@gmail.com>
Fix electric-help-map problem when help-char has meta-prefix
* lisp/ehelp.el (electric-help-map): Fix problem when help-char
has meta-prefix (bug#54932).
-2022-04-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make all vc-*-responsible-p functions return a string
@@ -63620,7 +63620,7 @@
Do not merge to master.
-2022-04-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix races with child frame locks on Haiku
@@ -63629,7 +63629,7 @@
(FrameMoved, WorkspacesChanged): Lock child frame data with that
macro instead.
-2022-04-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Keep track of keyboard state during drag and drop
@@ -63641,7 +63641,7 @@
if it is available.
(x_term_init): Reformat code a little.
-2022-04-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to menus on XI2
@@ -63657,7 +63657,7 @@
* src/xterm.h: Update prototypes.
(struct xi_device_t): Rename `master_p' to `use'.
-2022-04-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Describe problems with invoking Python on MS-Windows
@@ -63665,14 +63665,14 @@
interpreter due to the MS-Windows "App Execution Aliases" feature.
(Bug#54860)
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore XdndPosition events triggered by the wrong mouse button
* src/xterm.c (x_dnd_send_position): Don't send if button is set
but not a scroll wheel button.
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for Xdnd features introduced after version 5
@@ -63680,14 +63680,14 @@
(handle_one_xevent): Add support for sending button and keyboard
state during DND.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix describe-mode--minor-modes formatting issue
* lisp/help-fns.el (describe-mode--minor-modes): Fix multi-line
local-minor paragraph.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make vtable narrow/widen functions take a prefix
@@ -63695,20 +63695,20 @@
(vtable-widen-current-column): Allow using the prefix to say how
much to narrow/widen the columns.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Copy edit make-vtable code
* lisp/emacs-lisp/vtable.el (make-vtable): Clean up code slightly.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Edit some vtable doc strings
* lisp/emacs-lisp/vtable.el (make-vtable, vtable): Improve doc
strings.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further divider fixes for vtable
@@ -63717,21 +63717,21 @@
(vtable-narrow-current-column, vtable-widen-current-column): Don't
error out when being called on the divider.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore vtable.texi lines removed by accident
* doc/misc/vtable.texi (Introduction): Restore lines inadvertently
removed.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix dividers in vtable header lines
* lisp/emacs-lisp/vtable.el (vtable--insert-header-line): Put the
divider in the correct place in the header line.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow having dividers between columns in vtable
@@ -63741,7 +63741,7 @@
(vtable--insert-line, vtable--insert-header-line): Display the
divider.
-2022-04-13 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Document additions of cl-with-gensyms and cl-once-only
@@ -63751,7 +63751,7 @@
(Obsolete Setf Customization): Use cl-once-only rather than
macroexp-let2, and fix a quotation bug in one example.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow putting alternating colors on vtable rows
@@ -63762,14 +63762,14 @@
(vtable--insert-line): Take a line number argument and adjust
callers.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-h m' actually output the documentation for the major mode
* lisp/help-fns.el (describe-mode): Get the documentation for the
correct major mode.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new `vtable' face
@@ -63777,17 +63777,17 @@
* lisp/emacs-lisp/vtable.el (vtable): Add a new face.
-2022-04-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/comint.el (comint-dynamic-list-input-ring): Keep replaced text props.
* lisp/minibuffer.el (completions-header-format): Remove unused text prop.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-04-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp manual
@@ -63796,7 +63796,7 @@
Precise, that list-system-processes and process-attributes are
about system processes.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for column background colors in vtable
@@ -63806,18 +63806,18 @@
(make-vtable): Use it.
(vtable--insert-line): Insert the colors here.
-2022-04-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix format-seconds error in previous change
* lisp/calendar/time-date.el (format-seconds): Fix zero elision
when using fractional seconds.
-2022-04-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -63826,7 +63826,7 @@
# lisp/desktop.el
# lisp/dired.el
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make list-times not include zero elements
@@ -63837,14 +63837,14 @@
* lisp/emacs-lisp/timer-list.el (list-timers): Don't display
trailing zero bits.
-2022-04-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
A better fix for bug#54800
* lisp/calc/calc.el (calc-align-stack-window): Improve scrolling
when windows have non-integral dimensions.
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Move raw event selection on GTK+ 2 to a more appropriate place
@@ -63853,7 +63853,7 @@
* src/xterm.c (x_new_focus_frame): Select here instead, once a
frame becomes focused.
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix marking upgrades for packages from ELPA or NonGNU ELPA
@@ -63861,14 +63861,14 @@
inside ``external'' packages as well when searching for
upgrades. (bug#54117)
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix input availability detection during visible-bell
* src/xterm.c (XTflash): Exit pselect loop also if input becomes
available on f's display connection.
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor cleanups to Haiku windowing
@@ -63879,20 +63879,20 @@
* src/haikuterm.c (haiku_flash): Make input detection actually
work.
-2022-04-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix zoom rect computation for some deskbar positions on Haiku
* src/haiku_support.cc (CalculateZoomRect): Fix computation for
left top and right bottom.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a comment about cl-concatenate
* lisp/emacs-lisp/cl-extra.el (cl-concatenate): Add a comment.
-2022-04-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Make cl-concatenate an alias of seq-concatenate"
@@ -63901,13 +63901,13 @@
The commit made calls to cl-concatenate bug out, since
autoloading defalises doesn't work very well (bug#54901).
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change in configure.ac
* configure.ac: Test window system against "x11", not "x".
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Bump minimum GTK for PGTK builds
@@ -63918,7 +63918,7 @@
* src/pgtkterm.c (pgtk_any_window_to_frame): Remove version
check.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how `M-q' in emacs-lisp-mode works
@@ -63927,7 +63927,7 @@
(lisp--fill-line-simple): New function to do simple sexp-based
filling.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up PGTK code more
@@ -63945,7 +63945,7 @@
* src/pgtkterm.h (struct pgtk_display_info): Delete modifier
masks.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused flag on Haiku
@@ -63953,7 +63953,7 @@
* src/haikuterm.h (struct haiku_output): Delete mentions of
`explicit_parent'.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bit rot in the XEmbed code
@@ -63963,11 +63963,11 @@
correctly.
* src/xterm.h (struct x_display_info): Delete unused atom.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entry for `C-h m' change
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Redo `C-h m' output
@@ -63977,7 +63977,7 @@
then the major mode, and then global minor mode links, and then
all the minor modes.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `describe-mode' include a link to the major mode function
@@ -63985,7 +63985,7 @@
function so that the user can go to the manual more easily
(bug#575).
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix freezes when trying to accelerate menu bar on Haiku
@@ -64000,7 +64000,7 @@
* src/haikumenu.c (Fhaiku_menu_bar_open):
* src/haikuterm.c (haiku_read_socket): Update accordingly.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Provide a useful default to smime-CA-file
@@ -64008,7 +64008,7 @@
provide a default so that this will work automatically on many
systems (bug#20960).
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the SVG error message less verbose
@@ -64016,11 +64016,11 @@
error message, because this is commonly the entire SVG string, and
this will fill up the *Messages* buffer quickly.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention animated WebP images
-2022-04-12 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Fix eager macroexpansion cycle in cl-once-only
@@ -64028,14 +64028,14 @@
syntax, with no functional change, but such that the loop does not
expand into cl-psetq.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve DISPOSE_PREVIOUS in gif_load slightly
* src/image.c (gif_load): Tweak how DISPOSE_PREVIOUS is handled.
It's still not right, but it's less glaringly wrong.
-2022-04-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'window-text-pixel-size' when starting from a display property
@@ -64043,14 +64043,14 @@
there's a display property at START and 'move_it_to' overshoots.
(Bug#54862)
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix webp_load data lifetime issues
* src/image.c (webp_load): Take care of lifetime issues of the
image data we're iterating over for animated images.
-2022-04-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'window-text-pixel-width' when starting from display property
@@ -64058,7 +64058,7 @@
there's a display property at START, and move_it_to overshoots.
Do not merge to master. (Bug#54862)
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix keyboard event device attribution on GTK+ 2
@@ -64069,62 +64069,62 @@
* src/xterm.h (struct x_display_info): New flag
`pending_keystroke_time_special_p'.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix detection of Meta key in some cases
* src/xterm.c (x_find_modifier_meanings): Set found_meta_p
correctly.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix check for whether frames fit into gif images
* src/image.c (gif_load): Really check all frames that they fit.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some confusing names in xterm.c
* src/xterm.c (enum xm_targets_table_byte_order): Rename to
`xm_byte_order'. All uses changed.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Store less data in the gif animation cache
* src/image.c (gif_load): Only start a cache if we're have an
:index entry (which means that we're trying to animate something).
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix clicking on files in Dired when drag is enabled
* lisp/dired.el (dired-mouse-drag): Don't drag if the mouse
didn't move far enough.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Release resources in gif_load on errors
* src/image.c (webp_load): Clean up code slightly.
(gif_load): Really release resources on GIF parsing errors.
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Animate GIF images that don't have an explicit delay setting
* src/image.c (gif_load): Use the default delay for GIF images
that don't explicitly state a delay.
-2022-04-12 Olaf Trygve Berglihn <olafb@pvv.org> (tiny change)
+2023-04-15 Olaf Trygve Berglihn <olafb@pvv.org> (tiny change)
Add biblatex alias entry types for compability with bibtex
* lisp/textmodes/bibtex.el (bibtex-biblatex-entry-alist): Add
biblatex alias entry types for compability with bibtex (bug#54877).
-2022-04-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix thinko in the anim cache
@@ -64132,7 +64132,7 @@
of sync.
(anim_create_cache): Start from zero, not 1.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disallow drag and drop inside a menu-entry
@@ -64142,7 +64142,7 @@
signalling error and prevent activating drag-and-drop inside a
menu or popup. (It doesn't work.)
-2022-04-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt macOS defaults in Tramp's process-attributes implementation
@@ -64156,7 +64156,7 @@
* test/lisp/net/tramp-tests.el (tramp-test31-list-system-processes)
(tramp-test31-process-attributes): New tests.
-2022-04-12 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
process-attributes-ps-args / process-attributes-ps-format for Darwin
@@ -64167,24 +64167,24 @@
them to connection-local variables. Preset default "ps" profile
for Darwin.
-2022-04-12 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Add two classic Common Lisp macro-writing macros
* lisp/emacs-lisp/cl-macs.el (cl-with-gensyms, cl-once-only): New macros.
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some DISPLAY variable related bugs on PGTK
* src/callproc.c (getenv_internal, make_environment_block):
Don't set DISPLAY on non-X GDK backends. (bug#54844)
-2022-04-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (frame_set_mouse_pixel_position): Avoid server grab.
-2022-04-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't use native image APIs for some types on Haiku
@@ -64192,31 +64192,31 @@
types with animations when their respective libraries are
present.
-2022-04-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last tool bar bug on Haiku as well
* src/haikuterm.c (haiku_read_socket): Adapt last change to
Haiku.
-2022-04-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix selecting text and releasing the mouse buttons above the toolbar
* src/xterm.c (handle_one_xevent): Don't send ButtonRelease
events to tool bars if there is no selected tool bar item.
-2022-04-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/macroexp.el (macroexp-let2*): Allow common shorthand
* lisp/gnus/mm-encode.el (mm-default-file-encoding): Fix "when" arg
-2022-04-11 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use preferred chars among duplicates as per UTR#25 §25.
-2022-04-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/minibuffer.el (minibuffer-completion-auto-choose): New defcustom.
@@ -64227,7 +64227,7 @@
Use them for minibuffer-next-completion and minibuffer-previous-completion.
* lisp/simple.el (minibuffer-local-shell-command-map): Idem.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make normal image caching actually work when doing animated images
@@ -64236,14 +64236,14 @@
(lookup_image): Ditto.
(syms_of_image): Define some keywords.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make more IPV6 domains non-suspicious in textsec
* lisp/international/textsec.el (textsec--ipvx-address-p): Make
more IPV6 domains non-suspicious.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make gif_load work across architectures again
@@ -64252,7 +64252,7 @@
the entire thing to the ximg with PUT_PIXEL at the end. This
should work across platforms, which the previous version didn't.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "; * src/image.c (gif_load): Fix compilation error on MS-Windows."
@@ -64260,7 +64260,7 @@
This is fixed in a different way in a subsequent commit.
-2022-04-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Recognise hybrid IPv6/IPv4 addresses in textsec (bug#54624)
@@ -64271,20 +64271,20 @@
* test/lisp/international/textsec-tests.el (test-suspiction-domain):
Add test cases.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix anim_cache garbage collection
* src/image.c (struct anim_cache): Move earlier.
(mark_image_cache): Mark the Lisp_Object in the anim cache.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation errors when HAVE_GIF and not HAVE_WEBP
* src/image.c: Enable the cache functions when HAVE_GIF, too
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up GIF animations
@@ -64296,7 +64296,7 @@
(webp_destroy): New function.
(webp_load): Use it.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Refactor the webp cache code to allow usage by gif_load, too
@@ -64306,7 +64306,7 @@
implementation, too.
(webp_load): Adjust cache usage.
-2022-04-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix default-directory of buffers visiting files in renamed directories
@@ -64318,34 +64318,34 @@
benefit of files that were renamed/removed, because
file-in-directory-p returns nil in those cases. (Bug#54838)
-2022-04-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix event source attribution for GTK input methods
* src/gtkutil.c (xg_im_context_commit): Use pending keystroke
source if it exists.
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a kill-append regression
* lisp/simple.el (kill-append): Fix a regression when
kill-ring-max is zero (bug#54842).
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve gif_load error messages
* src/image.c (gif_load): Improve error reporting (bug#54848).
-2022-04-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure shell.el loading properly
* lisp/shell.el (subr-x): Require for string-chop-newline
(bug#54834).
-2022-04-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Always cascade from toplevel frames on Haiku
@@ -64354,7 +64354,7 @@
doesn't make sense to cascade from a frame that disappears when
it becomes deactivated.
-2022-04-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix IM event source attribution on GTK
@@ -64363,11 +64363,11 @@
* src/gtkutil.c (xg_widget_key_press_event_cb): Respect pending
keystroke time on XI2.
-2022-04-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_event): Make event attribution more accurate.
-2022-04-10 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Add lazy highlight when reading 'query-replace' arguments
@@ -64378,7 +64378,7 @@
used to be inlined in perform-replace but is useful elsewhere.
(perform-replace): Use 'replace--region-filter'.
-2022-04-10 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Rewrite the minibuffer lazy highlight feature
@@ -64397,17 +64397,17 @@
highlighting configuration variables as argument, and returns a
closure that is intended to run as part of the minibuffer setup.
-2022-04-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* doc/misc/eww.texi (Advanced): Correct outdated info (bug#54839).
-2022-04-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix markup in Drag and Drop
* doc/emacs/frames.texi (Drag and Drop): Fix markup.
-2022-04-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix WebP image support on MS-Windows
@@ -64424,7 +64424,7 @@
* lisp/term/w32-win.el (dynamic-library-alist): Add a member for
'webpdemux'.
-2022-04-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clean up the MSDOS port
@@ -64439,21 +64439,21 @@
(GL_GNULIB_SIGDESCR_NP): Define to 1, to get the prototypes from
Gnulib headers.
-2022-04-10 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Fix a ja-dic compilation warning
* leim/Makefile.in (${leimdir}/ja-dic/ja-dic.el): Increase
specpdl-size to avoid a compilation warning (bug#54816).
-2022-04-10 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix typo in next-error-find-buffer-function
* lisp/simple.el (next-error-find-buffer-function): Fix typo
(bug#54830).
-2022-04-10 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fix unwanted fontification of function call as function declaration
@@ -64463,14 +64463,14 @@
* lisp/progmodes/cc-engine.el (c-update-brace-stack): Replace "(" by ")" in a
`member' call.
-2022-04-10 Kaushal Modi <kaushal.modi@gmail.com>
+2023-04-15 Kaushal Modi <kaushal.modi@gmail.com>
Update docstrings for shortdoc.el FUNC lisp form API
* lisp/emacs-lisp/shortdoc.el (define-short-documentation-group):
Updated docstrings.
-2022-04-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Make shell-resync-dirs handle whitespace in directory names"
@@ -64480,7 +64480,7 @@
Do not merge to master; it has been fixed in a more encompassing way there.
-2022-04-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Attribute filtered events to the right source device
@@ -64490,7 +64490,7 @@
* src/xterm.h (struct x_display_info): New fields
`pending_keystroke_time' and `pending_keystroke_source'.
-2022-04-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for animated webp images
@@ -64506,28 +64506,28 @@
functions.
(webp_load): Support animated webp images (bug#54242).
-2022-04-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Allow non-interactive uses of minibuffer-next-completion
* lisp/minibuffer.el (minibuffer-previous-completion)
(minibuffer-next-completion): Use 1 for n by default.
-2022-04-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing details to filter event on XI2
* src/xterm.c (handle_one_xevent): Pass coordinates when
translating XI2 key events to core key events.
-2022-04-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update XI2 device use on slave attachment and detachment
* src/xterm.c (handle_one_xevent): Update whether device is a
master device when it's detached or attached.
-2022-04-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try harder to own DND selections
@@ -64536,34 +64536,34 @@
(x_dnd_begin_drag_and_drop): Try to own the selection if we do
have a local value.
-2022-04-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mode-line doc string
* lisp/faces.el (mode-line): Fix doc string.
-2022-04-09 Vincent Belaïche <vincentb1@users.sourceforge.net>
+2023-04-15 Vincent Belaïche <vincentb1@users.sourceforge.net>
ses-test Prefix used symbols by ses--
* test/lisp/ses-tests.el: Rename cell symbols of renamed cells so
that they are in the SES namespace, as recommended by Stefan.
-2022-04-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix scrolling of the stack window in Calc
* lisp/calc/calc.el (calc-align-stack-window): Fix off-by-one
error in computing the window-start point. (Bug#54800)
-2022-04-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix sql-mode comment-end parsing
* lisp/progmodes/sql.el (sql-mode): Fix /* ... -*/ parsing
(bug#54769).
-2022-04-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid sync when allowing touch events in handle_one_xevent
@@ -64571,7 +64571,7 @@
XIAllowTouchEvents.
(x_error_handler): Ignore Device errors here instead.
-2022-04-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle hierarchy events for updating scroll valuators correctly
@@ -64584,7 +64584,7 @@
(handle_one_xevent): Handle device enable and disable events in
a more detailed fashion.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix DND leave events not being sent to toplevel after returning frame
@@ -64592,14 +64592,14 @@
to send leave events to the previous toplevel when cancelling to
return a frame.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use right frame when computing mouse movement device
* src/keyboard.c (kbd_buffer_get_event): Use the frame on which
the mouse actually moved to compute the last mouse device.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor cleanups in X Windows drag-and-drop code
@@ -64609,14 +64609,14 @@
(x_dnd_send_leave, x_dnd_send_drop, x_send_scroll_bar_event):
Use NoEventMask instead of 0.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix source reporting for focus in and focus out events
* src/xterm.c (handle_one_xevent): Report source name for
FocusIn and FocusOut events.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up XI2 scroll valuator tracking code
@@ -64624,11 +64624,11 @@
a device instead of the device id.
(handle_one_xevent): Pass the previously found device.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (pgtk_set_cr_source_with_color): Fix default operator.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix subpixel AA with alpha-background on Cairo on X
@@ -64636,11 +64636,11 @@
(x_set_cr_source_with_gc_background): Set operator back to OVER
if alpha-background isn't to be respected.
-2022-04-08 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-04-08 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify clang -Wunused-variable
@@ -64648,7 +64648,7 @@
* src/process.c (Finternal_default_process_filter):
Remove unused local vars.
-2022-04-08 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
ebrowse dumping need not return int
@@ -64656,7 +64656,7 @@
int, since callers never actually use returned value. All uses
changed.
-2022-04-08 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix scrollbars on macOS 10.13 and below (bug#54623)
@@ -64674,7 +64674,7 @@
(ns_unfocus): Fix #ifs so that flushWindow is called on old macOS
versions as well as GNUstep.
-2022-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update and fix instructions and scripts for updating the Web pages
@@ -64688,14 +64688,14 @@
* etc/refcards/Makefile (pl-refcard.dvi): If mex.fmt cannot be
found, invoke 'mex' instead of 'tex'.
-2022-04-08 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix pacifying gcc -Wanalyzer-null-dereference
* src/xterm.c (handle_one_xevent): Use eassume not eassert.
eassert (X)’s suppress_checking does not let GCC assume X.
-2022-04-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Rename mark_stack to mark_c_stack
@@ -64707,7 +64707,7 @@
* src/lisp.h:
* src/thread.c (mark_one_thread): Rename mark_stack to mark_c_stack.
-2022-04-08 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Enable warnings when building as a developer with Clang
@@ -64717,28 +64717,28 @@
* configure.ac: Don't test Clang version as if it were GCC.
-2022-04-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve package.el error messages on too-old Emacsen
* lisp/emacs-lisp/package.el (package-compute-transaction): Give a
better error message on too-old Emacs versions (bug#54747).
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Recommend that the user turn off memory overcommit
* doc/emacs/trouble.texi (Memory Full): Tell the user that Emacs
behaves best with overcommit off, and how to turn it off.
-2022-04-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend tramp-archive-test45-auto-load
* test/lisp/net/tramp-archive-tests.el (tramp-archive-test45-auto-load):
Extend test.
-2022-04-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Ensure local `default-directory' in Tramp when needed
@@ -64746,7 +64746,7 @@
`default-directory' when calling `list-system-processes' and
`process-attributes'.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Interpolate scrolls coming from mice by default
@@ -64756,7 +64756,7 @@
(pixel-scroll-precision): If the class of the last event device
is `mouse', interpolate the next scroll.
-2022-04-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Ensure local `default-directory' when calling `process-attributes'.
@@ -64764,14 +64764,14 @@
* lisp/subr.el (memory-limit): Ensure local `default-directory'
when calling `process-attributes'.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GC marking of input events with devices
* src/keyboard.c (mark_kboards):
* src/pgtkterm.c (mark_pgtkterm): Mark `device' as well.
-2022-04-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clarify "idleness" in the ELisp manual
@@ -64779,7 +64779,7 @@
input with timeout doesn't make Emacs idle. Suggested by Ignacio
<ignaciocasso@hotmail.com>. (Bug#54371)
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement support for reporting device names on PGTK
@@ -64801,22 +64801,22 @@
(struct pgtk_display_info): New field `devices'. Delete lots of
unused macros and reformat comments.
-2022-04-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/term/x-win.el (x-device-class): Detect more keyboards.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore input extension errors caused by grabbing
* src/xterm.c (x_error_handler): Ignore GrabDevice and
UngrabDevice errors.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/term/x-win.el (x-device-class): Detect "USB USB Keykoard"s.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add code for determining the type of an input device
@@ -64827,13 +64827,13 @@
(device-class):
* lisp/term/x-win.el (x-device-class): New functions.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reporting of last-event-device for synthetic events
* src/keyboard.c (read_char): Clear `last-event-device' earlier.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make device reporting work for tool bar clicks
@@ -64844,25 +64844,25 @@
* src/xterm.c (handle_one_xevent): Pass device to tool bar click
logic.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Fix build warning on non-GTK builds.
-2022-04-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
lisp/simple.el: Use #' in new code
* lisp/simple.el (minibuffer-local-shell-command-map): Use #' to quote
function names.
-2022-04-07 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Display file mode information when diff font lock prettify enabled
* lisp/vc/diff-mode.el (diff--font-lock-prettify): Make regexp capture
file mode information.
-2022-04-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
OClosure: New function `function-documentation`
@@ -64882,7 +64882,7 @@
* test/lisp/emacs-lisp/oclosure-tests.el (oclosure-test):
Add test for accessor's docstrings.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Expose the name of an event's input device to Lisp
@@ -64912,7 +64912,7 @@
* src/xterm.h (struct xi_device_t): New field `name'.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget smooth scrolling when the default pointer is not a touchpad
@@ -64925,7 +64925,7 @@
(xwidget_motion_or_crossing, synthesize_focus_in_event): Set
parameter accordingly.
-2022-04-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify read-answer-short/use-short-answers action
@@ -64934,7 +64934,7 @@
* src/fns.c (Fyes_or_no_p): Mention `use-short-answers'.
-2022-04-07 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Encrypt some parameters in auth-source plstore backend
@@ -64946,7 +64946,7 @@
* lisp/auth-source.el (auth-source-plstore-create): Allow specifying
both unencrypted and encrypted extra parameters.
-2022-04-07 Jai Flack <jflack@disroot.org>
+2023-04-15 Jai Flack <jflack@disroot.org>
Add a mu backend for gnus-search
@@ -64962,7 +64962,7 @@
(gnus-search-indexed-extract): New method
(gnus-search-indexed-search-command): New method (bug#54662).
-2022-04-07 Jürgen Hötzel <juergen@archlinux.org>
+2023-04-15 Jürgen Hötzel <juergen@archlinux.org>
Use correct signal oldset in posix_spawn implementation
@@ -64980,11 +64980,11 @@
(cherry picked from commit 8103b060d89ac63a12c439087bd46c30da72cd97)
-2022-04-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp-integration.el: Don't require files-x.
-2022-04-07 Felix Dietrich <felix.dietrich@sperrhaken.name> (tiny change)
+2023-04-15 Felix Dietrich <felix.dietrich@sperrhaken.name> (tiny change)
Fix error in tramp-archive-autoload-file-name-handler
@@ -64998,13 +64998,13 @@
does not expect nil. Always returning nil is also false in
general.
-2022-04-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Commit missing file from previous commit (Do not merge with master)
Commit missing file from previous commit
-2022-04-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge with Tramp 2.5.2.3 (Do not merge with master)
@@ -65102,7 +65102,7 @@
(tramp--test-asynchronous-processes-p): New defun.
(tramp--test-hpux-p, tramp--test-macos-p): Protect against errors.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error when calling DND movement tracking function
@@ -65110,18 +65110,18 @@
x_dnd_movement_x and x_dnd_movement_y are wholenums before
caling posn-at-x-y.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (xm_write_targets_table): Remove extra XGrabServer pair.
-2022-04-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix DND bugs on GTK
* src/xterm.c (handle_one_xevent): Don't let some client
messages reach the toolkit.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove more code mindlessly copied from NS
@@ -65130,32 +65130,32 @@
* src/pgtkselect.h:
* src/pgtkterm.h: Delete `nxatoms_of_pgtkselect'.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix sending unsupported drops when there is no target but a toplevel
* src/xterm.c (handle_one_xevent): Send unsupported drops to
last seen toplevel if no target was found.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve doc of x-begin-drag
* doc/lispref/frames.texi (Drag and Drop): Fix typos and clarify
meaning of XdndActionPrivate.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Return an appropriate action when performing unsupported drop
* src/xterm.c (x_dnd_send_unsupported_drop): Set action to
XdndActionPrivate.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xselect.c (x_atom_to_symbol): Add XdndSelection.
-2022-04-06 Vincent Belaïche <vincentb1@users.sourceforge.net>
+2023-04-15 Vincent Belaïche <vincentb1@users.sourceforge.net>
Fix ses-tests.el
@@ -65165,13 +65165,13 @@
do any outer defvar, but set the defvar only under the
with-suppressed-warnings directive to silence the byte-compiler.
-2022-04-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/ses.el: Fix 80-column-docstring warnings
Also remove redundant `:group` args and prefer #' to quote function names.
-2022-04-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic.el: Fix bug#46722
@@ -65182,7 +65182,7 @@
Backport from `master` (cherrypick from commit 61f8f7f68f).
-2022-04-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Solve flymake diagnostics synchronization problems
@@ -65219,7 +65219,7 @@
(eglot-flymake-backend): Read eglot--diagnostics. Always report.
(eglot--report-to-flymake): Set eglot--diagnostics.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of extra sync looking up window through XTranslateCoordinates
@@ -65227,7 +65227,7 @@
well.
(x_dnd_get_target_window): Use that proxy.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Move some X11 drag and drop processing to Lisp
@@ -65244,7 +65244,7 @@
(syms_of_xterm): New variable `x-dnd-unsupported-drop-function'.
* src/xterm.h: Update prototypes.
-2022-04-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix minor-mode doc string quoting
@@ -65252,14 +65252,14 @@
double quoting of things like (default-value 'electric-pair-mode)
(bug#54746).
-2022-04-06 Davide Masserut <dm@mssdvd.com>
+2023-04-15 Davide Masserut <dm@mssdvd.com>
Make the Foot terminal an alias of xterm-256color
* lisp/faces.el (term-file-aliases): Make the foot terminal an alias
of xterm-256color (bug#54739).
-2022-04-06 Kien Nguyen <kien.n.quang@gmail.com>
+2023-04-15 Kien Nguyen <kien.n.quang@gmail.com>
Make file-name-split returns driver name as well in Windows
@@ -65268,14 +65268,14 @@
* lisp/net/browse-url.el (browse-url-file-url): Don't hexify colon
character in file path for Windows (bug#54721).
-2022-04-06 Davide Masserut <dm@mssdvd.com>
+2023-04-15 Davide Masserut <dm@mssdvd.com>
Add .bashrc detection to sh-mode
* lisp/progmodes/sh-script.el (sh-mode): Add .bashrc string-match
(bug#54727).
-2022-04-06 Markus Kopp <markus.kopp@student.uibk.ac.at>
+2023-04-15 Markus Kopp <markus.kopp@student.uibk.ac.at>
Use CUA functions to scroll pages with pixel-scroll-scroll-mode
@@ -65284,28 +65284,28 @@
`cua-scroll-down' to scroll if
`pixel-scroll-precision-interpolate-page' is off. (bug#54696)
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent races when trying to set Motif drag window
* src/xterm.c (xm_get_drag_window): Grab temp connection when
setting the drag window.
-2022-04-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Revert unneeded change in tramp-integration.el
* lisp/net/tramp-integration.el:
Apply `connection-local-set-profiles' w/o retrieving old values.
-2022-04-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix URL-related typos in comments and messages
* lisp/ffap.el (ffap-next): Fix typo in message.
* lisp/finder.el (finder-commentary): Fix typo in comment.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve safety of haiku-drag-message
@@ -65324,7 +65324,7 @@
(Fhaiku_drag_message): Set new frame variable.
* src/haikuterm.h: Update prototypes.
-2022-04-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up more PGTK code
@@ -65377,20 +65377,20 @@
doesn't make sense on PGTK.
(pgtk_delete_terminal): Remove misleading comment.
-2022-04-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/emacs.c (main): Improve accuracy of daemon warning message on PGTK.
* src/xterm.c (x_dnd_send_unsupported_drop): Also handle TEXT target.
-2022-04-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Preserve contents of PRIMARY when sending unsupported drop
* src/xterm.c (x_dnd_send_unsupported_drop): Set local value of
PRIMARY to the preexisting selection value, if any.
-2022-04-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port Org encode-time usage back to Emacs 25
@@ -65408,11 +65408,11 @@
from standalone Org. Problem reported by Max Nikulin (Bug#54731).
This reverts much of 2021-12-16T17:40:21Z!eggert@cs.ucla.edu.
-2022-04-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Assert that hold_quit is present instead.
-2022-04-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -Wanalyzer-null-dereference
@@ -65420,18 +65420,18 @@
it’s null. Potential problem found with gcc 11.2.1 20220127 (Red
Hat 11.2.1-9), when configured with --enable-gcc-warnings.
-2022-04-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Allow completion wrapping in minibuffer completion navigation commands
* lisp/minibuffer.el (minibuffer-previous-completion)
(minibuffer-next-completion): Don't set completion-wrap-movement.
-2022-04-05 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* test/lisp/ses-tests.el: Require ert-x, for ert-simulate-keys.
-2022-04-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
New commands for navigating completions from the minibuffer.
@@ -65450,7 +65450,7 @@
https://lists.gnu.org/archive/html/emacs-devel/2022-03/msg00335.html
-2022-04-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use base prefix and suffix instead of completion-base-position (bug#49931)
@@ -65466,21 +65466,21 @@
(completion-setup-function): Sync values of base-affixes and
completion-base-affixes.
-2022-04-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Choosing a completion with a prefix argument doesn't exit the minibuffer
* lisp/simple.el (choose-completion): New optional args NO-EXIT and NO-QUIT.
(bug#47417)
-2022-04-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix fallout from lexical-binding in vhdl-mode.el
* lisp/progmodes/vhdl-mode.el (vhdl-update-sensitivity-list): Fix
production of a list with embedded function calls. (Bug#54730)
-2022-04-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* test/lisp/replace-tests.el: New tests for query-replace (bug#54733)
@@ -65488,7 +65488,7 @@
(query-replace--perform-tests): New function.
(query-replace-tests, query-replace-search-function-tests): New ert-deftest.
-2022-04-05 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Reject invalid time-string in appt-add immediately
@@ -65496,7 +65496,7 @@
validity immediately after reading it rather than after reading all
the parameters. (Bug#54210)
-2022-04-05 Billy.Zheng <vil963@gmail.com> (tiny change)
+2023-04-15 Billy.Zheng <vil963@gmail.com> (tiny change)
João Távora
Update invocation for out-of-box dart ls support
@@ -65507,7 +65507,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/862
-2022-04-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle remote system processes
@@ -65568,7 +65568,7 @@
Support remote system processes.
(Qlist_system_processes, Qprocess_attributes): Declare symbols.
-2022-04-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Mark some data during drag-and-drop
@@ -65583,7 +65583,7 @@
(mark_xterm): Mark those frames.
* src/xterm.h: Update prototypes.
-2022-04-05 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Fix some details in completions
@@ -65596,7 +65596,7 @@
(switch-to-completions) : Simplify condition code and remove comment not
applicable anymore.
-2022-04-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dropping text to the root window
@@ -65605,7 +65605,7 @@
(handle_one_xevent): Send unsupported drops to the last toplevel
instead of the target window.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for dragging text onto windows that don't support any DND protocol
@@ -65623,11 +65623,11 @@
and use last seen toplevel instead of target for `return_frame'.
* src/xterm.h: Update prototypes.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* configure.ac (HAVE_GIF): Respect --with-gif on PGTK. (bug#54633)
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect new DND options when dragging to ourselves on Haiku
@@ -65644,18 +65644,18 @@
case.q
* src/haikuterm.h: Update prototypes.
-2022-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/cc-cmds.el (indent-new-comment-line): Delete advice
This piece of advice was effective only for Emacs<20.1 and old XEmacs
(at least older than Aug 2007).
-2022-04-04 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Update use-package.texi
-2022-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
OClosure: add support for `slot-value`
@@ -65675,7 +65675,7 @@
(oclosure-test): Make `name` field mutable.
(oclosure-test-slot-value): New test.
-2022-04-04 Vincent Belaïche <vincentb1@users.sourceforge.net>
+2023-04-15 Vincent Belaïche <vincentb1@users.sourceforge.net>
SES with case insensitive cell names for jumping.
@@ -65692,7 +65692,7 @@
(ses-jump-B2-lowcase, ses-jump-B2-lowcase-keys)
(ses-jump-B2-symbol, ses-jump-B2-renamed): New tests.
-2022-04-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Reduce GC mark-phase recursion by using explicit stack (bug#54698)
@@ -65716,7 +65716,7 @@
(mark_object, mark_objects):
Just push the object(s) and let process_mark_stack do the work.
-2022-04-04 Jürgen Hötzel <juergen@archlinux.org>
+2023-04-15 Jürgen Hötzel <juergen@archlinux.org>
Use correct signal oldset in posix_spawn implementation
@@ -65732,18 +65732,18 @@
(emacs_posix_spawn_init_attributes): Use correct oldset.
(emacs_posix_spawn_init): Remove intermediate function.
-2022-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
test/lisp/edmacro-tests.el: Adjust to recent changes
-2022-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
edmacro.el: Silence warnings due to kmacro changes
* lisp/edmacro.el (edit-kbd-macro): Use `kmacro-p` and kmacro accessors.
(edmacro-finish-edit): Use `kmacro-p` and the new `kmacro` constructor.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle mouse movement correctly during DND from one of our own frames
@@ -65761,7 +65761,7 @@
(syms_of_xterm): New defvar `x-dnd-movement-function'.
* src/xterm.h: Update prototypes.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix generation of extra DND events while dragging on Haiku
@@ -65771,18 +65771,18 @@
* src/haikuterm.c (haiku_read_socket): Don't store DND motion
events if DND is in progress.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c: Explain meaning of drag-and-drop state variables.
-2022-04-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further fixes for cl--generic-describe and (function ...)
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Fix the #'
problem for defmethods, too (bug#54628).
-2022-04-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Check textdocumentsync/willsave cap before sending it
@@ -65791,7 +65791,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/823
-2022-04-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Guess language-id if manually entering server program
@@ -65800,7 +65800,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/837
-2022-04-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak eglot mode-line menus
@@ -65815,7 +65815,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/792
-2022-04-04 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Rework eglot's mode-line
@@ -65834,7 +65834,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/792
-2022-04-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make eglot--plist-keys a simple (non-map.el) helper again
@@ -65848,7 +65848,7 @@
* eglot.el (eglot--plist-keys): Define in helpers section.
-2022-04-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Inline call0..8
@@ -65858,7 +65858,7 @@
* src/eval.c (call0, ..., call8): Move functions...
* src/lisp.h (call0, ..., call8): ...here and declare them inline.
-2022-04-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up comparisons between 2 fixnums
@@ -65871,7 +65871,7 @@
* src/fileio.c (Fcar_less_than_car):
Fast path for calls with 2 fixnum arguments.
-2022-04-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Rewrite string-greaterp and string> using string-lessp
@@ -65882,7 +65882,7 @@
* lisp/emacs-lisp/byte-opt.el (byte-optimize-string-greaterp): New.
(string-greaterp, string>): Set byte-optimizer.
-2022-04-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Faster `string-lessp` for unibyte arguments
@@ -65894,7 +65894,7 @@
* test/src/fns-tests.el (fns-tests--string-lessp-cases)
(fns-tests-string-lessp): New test.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect frame extents during drag and drop
@@ -65905,7 +65905,7 @@
frame extent.
(x_dnd_get_target_window): Likewise.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't baselessly ignore frames after passing through the root window
@@ -65913,7 +65913,7 @@
(handle_one_xevent): Don't rely on target not being None to set
x_dnd_return_frame to 2.
-2022-04-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve behavior of dragging text to windows on top of frames
@@ -65929,7 +65929,7 @@
(syms_of_xterm): New defsym `now'.
* src/xterm.h: Update prototypes.
-2022-04-03 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Replace list and vector sorting with TIMSORT algorithm
@@ -65942,7 +65942,7 @@
(sort_list, sort_vector): Use tim_sort.
* test/src/fns-tests.el (fns-tests-sort): New sorting unit tests.
-2022-04-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add optional GC marking function to specpdl unwind_ptr record
@@ -65957,22 +65957,22 @@
* src/lisp.h (unwind_ptr): Add a mark function pointer to the
SPECPDL_UNWIND_PTR case.
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_dnd_get_target_window): Look at root window proxies too.
-2022-04-03 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-undo-close-tab): Update tab-bar-lines (bug#54684)
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix various bugs with mouse dragging on Haiku
* src/haikuterm.c (haiku_mouse_position): Rewrite so that
different track-mouse types can be handled more consistently.
-2022-04-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update logs and HISTORY for Emacs 28.1
@@ -65980,7 +65980,7 @@
* etc/HISTORY:
* etc/AUTHORS: Update for Emacs 28.1 release.
-2022-04-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix handling of '\\' inside double-quotes in Eshell
@@ -65996,7 +65996,7 @@
* test/lisp/eshell/eshell-tests.el
(eshell-test/escape-special-quoted): Adapt test.
-2022-04-03 James Thomas <jimjoe@gmx.net>
+2023-04-15 James Thomas <jimjoe@gmx.net>
Ensure re-encoding after change in gnus-inews-do-gcc
@@ -66004,7 +66004,7 @@
body if it has been modified by gnus-gcc-pre-body-encode-hook
(bug#54687).
-2022-04-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Have global minor modes say so in the doc string
@@ -66013,7 +66013,7 @@
(easy-mmode--mode-docstring): Use it.
(define-minor-mode): Pass in the data.
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `drag-source' values of `track-mouse' on PGTK.
@@ -66023,14 +66023,14 @@
* src/pgtkterm.c (pgtk_mouse_position): Behave appropriately.
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `drag-source' values of track-mouse on NS
* src/nsterm.m (ns_mouse_position): Don't return frame when
appropriate.
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement (sort of) `drag-source' on Haiku
@@ -66038,7 +66038,7 @@
(haiku_mouse_position): Behave reasonably when track_mouse is
Qdrag_source.
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make dragging stuff to a window above a frame work
@@ -66055,21 +66055,21 @@
* src/xterm.c (XTmouse_position): Implement `drag-source'.
(mouse_or_wdesc_frame): Likewise.
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't touch WAYLAND_DISPLAY in browse-url
* lisp/net/browse-url.el (browse-url): Don't touch
WAYLAND_DISPLAY. (bug#53969)
-2022-04-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Look for DND proxies on the root window as well
* src/xterm.c (x_dnd_get_target_window): If nothing was found on
the COW, look at the root window.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement new DND features on GNUstep
@@ -66078,7 +66078,7 @@
* src/nsterm.m: ([EmacsView wantsPeriodicDraggingUpdates]):
([EmacsView draggingUpdated:]): New functions.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement new DND options on Haiku
@@ -66090,7 +66090,7 @@
* src/haikuterm.c (haiku_read_socket): Create special DND events
when the mouse moves with a drop message.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add user options to move point and scroll window during DND
@@ -66107,14 +66107,14 @@
(x-dnd-handle-motif): Call `dnd-handle-movement' when
appropriate.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif drag-and-drop on servers without XI2
* src/xterm.c (handle_one_xevent): Pass right flags to the
receiver when handling drops for core button events.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix incorrect usage of XM_DRAG_SIDE_EFFECT
@@ -66122,7 +66122,7 @@
(handle_one_xevent): Pass corret alt side effects and flags to
XM_DRAG_SIDE_EFFECT.
-2022-04-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bootstrap errors after previous easy-mmode change
@@ -66132,14 +66132,14 @@
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring):
Don't use string-empty-p because of bootstrap issues.
-2022-04-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix regression in tex alignment
* lisp/align.el (align-rules-list): Make alignment in tex mode
work better again (bug#54663).
-2022-04-02 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
em-extpipe: Catch eshell-incomplete thrown while parsing
@@ -66153,32 +66153,32 @@
(eshell-test/lisp-command-with-quote): New test for Bug#54603, thanks
to Jim Porter <jporterbugs@gmail.com> (bug#54603).
-2022-04-02 August Feng <au.fengster@gmail.com> (tiny change)
+2023-04-15 August Feng <au.fengster@gmail.com> (tiny change)
Add S-SPC key sequence to bookmark-bmenu-mode-map
* lisp/bookmark.el (bookmark-bmenu-mode-map): Add an S-SPC binding
for symmetry (bug#54672).
-2022-04-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Put the define-minor-mode boilerplate at the end of the doc strings
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Put
the boilerplate at the end of the doc string.
-2022-04-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further tweaks to cl--generic-describe
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Further
tweak the look of the implementation output.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/dired.el (dired-mouse-drag): Offer HOST_NAME as well.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when retrieving window property with invalid atom data
@@ -66188,21 +66188,21 @@
* src/xselect.c (x_atom_to_symbol): Catch errors around
XGetAtomName.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Compute size of structs with flexible arrays correctly in Motif DND code
* src/xterm.c (xm_read_targets_table_rec, xm_setup_dnd_targets):
Use FLEXSIZEOF instead of sizeof on struct xm_targets_table_rec.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error on mouse move over something not a window while dragging text
* lisp/mouse.el (mouse-drag-and-drop-region): Handle non-window
values of `posn-window' correctly.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new option `mouse-drag-and-drop-region-scroll-margin'
@@ -66212,7 +66212,7 @@
(mouse-drag-and-drop-region): Implement "scroll margin" like
behavior during mouse movement.
-2022-04-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement DELETE selection target for cross program drags
@@ -66221,7 +66221,7 @@
* lisp/select.el (xselect-convert-to-delete): Don't clear
selection contents if it's the XdndSelection.
-2022-04-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around dynamic drag bugs in modern Motif
@@ -66231,7 +66231,7 @@
parameters.
(syms_of_xterm): New variable `x-dnd-fix-motif-leave'.
-2022-04-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make Motif drag work on window managers that don't support client lists
@@ -66243,11 +66243,11 @@
(x_dnd_update_state, handle_one_xevent): Send toplevel leave
along with drops.
-2022-04-01 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el (xref-search-program): Fix typo.
-2022-04-01 Manuel Uberti <manuel.uberti@inventati.org>
+2023-04-15 Manuel Uberti <manuel.uberti@inventati.org>
Support ugrep in xref-search-program-alist
@@ -66255,7 +66255,7 @@
(xref-search-program-alist)
(xref-search-program): Add entries for ugrep (bug#54608).
-2022-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
kmacro: Represent it as an OClosure
@@ -66290,7 +66290,7 @@
(kmacro-tests-name-last-macro-bind-and-rebind): Strengthen the test a bit.
(kmacro-tests--cl-print): New test.
-2022-04-01 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
New user option 'font-lock-ignore'
@@ -66300,7 +66300,7 @@
implement the functionality described in 'font-lock-ignore'.
* doc/lispref/modes.texi: Describe 'font-lock-ignore'.
-2022-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic: Rework obsolescence checks for defmethod
@@ -66311,7 +66311,7 @@
* lisp/emacs-lisp/seq.el (seq-contains): Remove redundant
`with-suppressed-warnings`.
-2022-04-01 Ignacio <ignacio.decasso@imdea.org>
+2023-04-15 Ignacio <ignacio.decasso@imdea.org>
Better check for when clipboard or primary selection have changed
@@ -66327,7 +66327,7 @@
(gui--clipboard-selection-unchanged-p)
(gui--primary-selection-unchanged-p): New functions.
-2022-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
OClosure: Add support for defmethod dispatch
@@ -66349,7 +66349,7 @@
New generic function.
(oclosure-test): Add test for dispatch on oclosure types.
-2022-04-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement the Motif drag protocol
@@ -66370,7 +66370,7 @@
(x_free_frame_resources): Cancel Motif drag protocol operations
correctly.
-2022-04-01 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to their version 2.3.0
@@ -66447,14 +66447,14 @@
(modus-themes-faces, modus-themes-custom-variables): Update supported
faces and relevant variables.
-2022-04-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
More robust checks for directory buffers in image-mode
* lisp/image-mode.el (image-mode--directory-buffers): Apply more
robust checks for directory buffers. (Bug#54606)
-2022-04-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only read 16 bytes of motif drag receiver info
@@ -66462,7 +66462,7 @@
receiver info.
(handle_one_xevent): Fix default XM drop action.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify Haiku drag-and-drop implementation
@@ -66475,7 +66475,7 @@
* src/xdisp.c (note_mouse_highlight): Delete
`haiku_dnd_in_progress' variable.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Support Motif DND help
@@ -66485,7 +66485,7 @@
event F1 during the drag-and-drop session, and use help action
when dropping onto a Motif program if it is set.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make dropping files on Motif programs work
@@ -66496,7 +66496,7 @@
(xselect-convert-to-xm-file): New function.
(selection-converter-alist): Add new converters.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid extra sync if we didn't get the right wmstate
@@ -66504,21 +66504,21 @@
version.
(x_dnd_get_target_window): Optimize accordingly.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a build warning on the non-XI2 build
* src/xterm.c (xm_read_drop_start_reply): Take a const XEvent as
msg.
-2022-03-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix a bug in configure.ac that failed the --without-x build
* configure.ac (USE_TOOLKIT_SCROLL_BARS): Fix test for unsupported
scroll-bars configuration. (Bug#54629)
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif DND on window managers that don't support client lists
@@ -66528,7 +66528,7 @@
(x_dnd_get_target_window): Also return first toplevel window
found.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement missing parts of the Motif drag and drop protocol
@@ -66545,7 +66545,7 @@
(x_term_init): New atoms.
* src/xterm.h (struct x_display_info): New atoms.
-2022-03-31 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Protect against empty firsttriggercharacter strings
@@ -66555,7 +66555,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/906
-2022-03-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how functions are formatted in Implementation in *Help*
@@ -66564,7 +66564,7 @@
clarifies what we're talking about here, and avoids getting
(function ...) translated into #'...
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to treatment of `allow_current_frame'
@@ -66573,7 +66573,7 @@
(x_dnd_send_drop): Fix condition for returning
XdndActionPrivate.
-2022-03-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement Motif drop protocol
@@ -66605,7 +66605,7 @@
(x_term_init): New atoms for Motif DND support.
* src/xterm.h (struct x_display_info): Add new atoms.
-2022-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic: Use OClosures for `cl--generic-isnot-nnm-p`
@@ -66633,20 +66633,20 @@
(cl--generic-isnot-nnm-p): Rewrite using `oclosure-type`.
(cl--generic-method-info): Add support for new calling convention.
-2022-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
EIEIO tests: Fix failure when `eieio-core.el` is interpreted
* lisp/emacs-lisp/eieio-core.el (eieio--validate-slot-value)
(eieio--slot-name-index): Use the `cl--class` accessor functions.
-2022-03-30 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* src/pdumper.c (dump_get_max_page_size): Rename from 'dump_get_page_size'.
* src/pdumper.c: Remove getpagesize.h dependecy.
-2022-03-30 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend signal-process and proced.el
@@ -66673,7 +66673,7 @@
* test/lisp/net/tramp-tests.el (tramp-test31-signal-process): New test.
-2022-03-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove local copies of remote files created for drag-and-drop
@@ -66681,7 +66681,7 @@
file and save a record of any local copy created.
(dired-remove-last-dragged-local-file): New function.
-2022-03-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore mouse movement correctly on Haiku during drag and drop
@@ -66693,7 +66693,7 @@
* src/xdisp.c (note_mouse_highlight): Ignore if said variable is
true.
-2022-03-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent signals when dragging nonexistent files on Haiku
@@ -66705,28 +66705,28 @@
variable.
(syms_of_haikuselect): New variable `haiku-signal-invalid-refs'.
-2022-03-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disallow building with non-toolkit scroll bars on non-X systems
* configure.ac: Prevent building without toolkit scroll bars on
non-X systems, where they're not implemented. (bug#54629)
-2022-03-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid calling XGetAtomName in a loop when fetching monitor attributes
* src/xfns.c (x_get_monitor_attributes_xrandr): Avoid syncing on
each monitor when waiting for XGetAtomName when built with XCB.
-2022-03-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some optimizations to ShapeNotify handling
* src/xterm.c (handle_one_xevent): Do bounding rect
optimizations on ShapeNotify events as well.
-2022-03-29 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle process property `remote-command' in Tramp
@@ -66745,7 +66745,7 @@
(tramp--test-async-shell-command): Check process property
`remote-command'.
-2022-03-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
ipv6 addresses aren't suspicious
@@ -66754,7 +66754,7 @@
(textsec-domain-suspicious-p): Use it to say that ipv6 addresses
aren't suspicious (bug#54624).
-2022-03-29 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't use 'eshell-convert' when all we want is a number
@@ -66764,7 +66764,7 @@
* lisp/eshell/em-basic.el (eshell/umask): Simplify implementation and
be more careful about parsing numeric umasks to set.
-2022-03-29 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add tests for Eshell's umask command
@@ -66773,14 +66773,14 @@
test/lisp/eshell/em-basic-tests.el: New file.
-2022-03-29 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
Fix eww bookmark writing
* lisp/net/eww.el (eww-write-bookmarks): Ensure that the complete
bookmarks are written (bug#54612).
-2022-03-29 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Easier initializationoptions in eglot-server-programs
@@ -66796,7 +66796,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/901
-2022-03-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rewrite desktop workarea computation to avoid too many calls to XSync
@@ -66804,14 +66804,14 @@
using long_offset and long_length, since the data transfer is
usually negligible compared to the roundtrip delay.
-2022-03-29 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix typo in ERC DCC code in verbose mode
* lisp/erc/erc-dcc.el (erc-dcc-send-block): Typo causing incorrect
message when `erc-dcc-verbose` is set.
-2022-03-29 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak on-type-formatting code
@@ -66820,7 +66820,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/899
-2022-03-29 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Implement on-type-formatting support
@@ -66835,11 +66835,11 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/899
-2022-03-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/oclosure.el (oclosure--define): Autoload
-2022-03-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Specially decode more selection types on Haiku
@@ -66852,7 +66852,7 @@
(syms_of_haikuselect): New defsyms.
* src/haikuselect.h: Update prototypes.
-2022-03-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Temporarily fix the oclosure bootstrap
@@ -66860,14 +66860,14 @@
from source if `oclosure--define' is not defined during byte
compilation.
-2022-03-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't loop through useless region when searching for DND toplevel
* src/xterm.c (x_dnd_compute_toplevels): Optimize for the
bounding rect being the window dimensions.
-2022-03-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add search function to search within filenames in Dired and WDired (bug#14013)
@@ -66895,7 +66895,7 @@
in wdired-change-to-wdired-mode. Then replace-highlight can't use
dired-isearch-search-filenames.
-2022-03-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Add OClosures, a cross between functions and structs
@@ -66915,7 +66915,7 @@
captured variables.
(cconv-convert): Add case for `oclosure--fix-type`.
-2022-03-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix doc of `gui-get-selection' as to what is really valid as `data'
@@ -66923,7 +66923,7 @@
* lisp/select.el (gui-set-selection): Don't say `data' can be a
cons or list of two integers, since that's not supported.
-2022-03-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to Haiku selection support
@@ -66934,14 +66934,14 @@
(gui-backend-set-selection): Adjust for new airity.
* src/haikuselect.c (Fhaiku_selection_put): Fix arity.
-2022-03-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve portability of XCB configure checks
* configure.ac: Look for xcb_aux_sync in -lxcb-aux if it's not
in -lxcb-util.
-2022-03-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Do not register Tramp file name handlers twice
@@ -66949,7 +66949,7 @@
* lisp/net/tramp-archive.el (tramp-register-archive-file-name-handler):
Check, whether the real file name handler is already registered.
-2022-03-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid extra sync when fetching DND proxy window
@@ -66957,7 +66957,7 @@
(x_dnd_get_target_window): Use it on XCB to determine window
proxy and proto for toplevel window.
-2022-03-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some uses of XInternAtom
@@ -66970,7 +66970,7 @@
* src/xterm.h (struct x_display_info): New atoms _MOTIF_WM_HINTS
and _NET_WM_PID.
-2022-03-27 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Map more emacs variables to lsp formattingoptions fields
@@ -66979,7 +66979,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/900
-2022-03-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Store latin-1 content into the Haiku clipboard as well
@@ -67004,7 +67004,7 @@
* src/haikuselect.h: Update prototypes.
-2022-03-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up PGTK cursor blanking code
@@ -67020,7 +67020,7 @@
* src/pgtkterm.h (struct pgtk_display_info): Remove
`toggle_visible_pointer'.
-2022-03-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't wait for XdndFinished messages if the target did not send status
@@ -67029,7 +67029,7 @@
(handle_one_xevent): Use that value for
`x_dnd_waiting_for_finish'.
-2022-03-27 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Always run 'isearch-lazy-count-update-hook' with point at match
@@ -67037,34 +67037,34 @@
'isearch-lazy-count-update-hook' outside of save-excursion, so point
is at the current match.
-2022-03-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix processing of DND grab on non-XI2 builds
* src/xterm.c (handle_one_xevent): Process DND grab flag
correctly.
-2022-03-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
1bef52ce73 * doc/emacs/anti.texi (Antinews): Unannounce removal of Mo...
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix no-toolkit build
* src/xterm.c (x_top_window_to_frame): Declare correctly on
no-toolkit builds.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid excessive synchronization when handling ShapeNotify events
* src/xterm.c (handle_one_xevent): Use XCB to handle ShapeNotify
events when we want both the bounding and input rects.
-2022-03-26 Marcus Swanson <marcus.swanson91@gmail.com> (tiny change)
+2023-04-15 Marcus Swanson <marcus.swanson91@gmail.com> (tiny change)
Add omnisharp support for c#
@@ -67073,7 +67073,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/897
-2022-03-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix reader infinite recursion for circular mixed-type values
@@ -67089,14 +67089,14 @@
* test/src/lread-tests.el (lread-test-read-and-print)
(lread-test-circle-cases, lread-circle): Add tests.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable the native display of BMP images on Haiku
* src/image.c (syms_of_image): Also register `bmp' image type on
Haiku when native image APIs are enabled.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when timer signals or throws inside a popup menu on Haiku
@@ -67105,7 +67105,7 @@
(haiku_process_pending_signals_for_menu): Catch non local exits
around `timer_check'.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix processing of emacs:window_id inside DND messages if it already exists
@@ -67113,7 +67113,7 @@
of getting it manually.
(be_drag_message): Replace window_id if it already exists.
-2022-03-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Don't let Tramp block dired (Bug#54542)
@@ -67123,7 +67123,7 @@
* lisp/net/tramp-sh.el (tramp-maybe-open-connection):
Extend suppression rules.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to last change
@@ -67133,7 +67133,7 @@
* src/xterm.c (x_dnd_compute_toplevels): Fix build without
HAVE_XCB_SHAPE.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Also fetch shapes via XCB for drag and drop
@@ -67141,7 +67141,7 @@
* src/xterm.c (HAVE_XCB_SHAPE_INPUT_RECTS): New define.
(x_dnd_compute_toplevels): Use XCB for input shapes if possible.
-2022-03-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Use native image APIs on MS-Windows by default
@@ -67151,7 +67151,7 @@
* etc/NEWS: Announce the change.
-2022-03-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support display of BMP images on MS-Windows
@@ -67165,7 +67165,7 @@
* etc/NEWS: Announce the change.
-2022-03-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve 'desktop--emacs-pid-running-p'
@@ -67173,20 +67173,20 @@
negatives on MS-Windows and with some symlinks to Emacs
executables. (Bug#1474)
-2022-03-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
4ec9f9edd1 Fix eshell-explicit-command-char doc string typo
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when windows are destroyed by faulty clients
* src/xterm.c (x_dnd_compute_toplevels): Make sure
property_reply is non-NULL before testing its format and length.
-2022-03-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid excessive synchronization when initiating drag-and-drop
@@ -67194,14 +67194,14 @@
state, attributes, geometry and to translate coordinates. This
avoids 4 calls to XSync.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warning in x-dnd.el
* lisp/x-dnd.el (x-dnd-xdnd-to-action): Move declaration
earlier.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid ClientMessage overhead when dragging stuff to other frames
@@ -67214,7 +67214,7 @@
frame.
(x_dnd_send_drop): Send special DND event in that case.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix minor issues with dired-mouse-drag-files
@@ -67223,14 +67223,14 @@
(dired-insert-set-properties): Don't insert misleading tooltip
if feature is not available.
-2022-03-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix (bounds-of-thing-at-point 'number)
* lisp/thingatpt.el (number): Make (bounds-of-thing-at-point
'number) work (bug#54555).
-2022-03-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix reporting of read error line/columns in the init file
@@ -67240,7 +67240,7 @@
init file, so the reported line/column was always wrong (1 and 0,
respectively) (bug#54550).
-2022-03-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve pp-last-sexp ergonomics
@@ -67248,7 +67248,7 @@
before a sexp, because eval-ing that will always lead to an error
(bug#54537).
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement new drag and drop parameter on Haiku
@@ -67260,7 +67260,7 @@
* src/haikuselect.c (Fhaiku_drag_message): New parameter
`allow-same-frame'.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dragging files from dired to windows on the same frame
@@ -67276,7 +67276,7 @@
`allow_current_frame'.
* src/xterm.h: Update prototypes.
-2022-03-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'completion-auto-select'
@@ -67284,25 +67284,25 @@
* doc/emacs/mini.texi (Completion Options): Improve documentation
and description of customization options of 'completion-auto-select'.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make it easier to select text inside dired when mouse dragging is on
* lisp/dired.el (dired-insert-set-properties): Only set drag
keymap on the filename itself.
-2022-03-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* admin/notes/emba: Mention workflow rules for branches.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix quitting DND while waiting for finish
* src/xterm.c (x_dnd_begin_drag_and_drop): Always clear finish
flag before quitting.
-2022-03-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Take window shapes into account when processing drag and drop
@@ -67324,13 +67324,13 @@
extension.
* src/xterm.h (struct x_display_info): New atom `WM_STATE'.
-2022-03-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
d3d6f1c9bd Clarify the description of "selected tags table"
-2022-03-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use _NET_CLIENT_LIST_STACKING to optimize drag and drop window discovery
@@ -67344,7 +67344,7 @@
window manager supports it.
(handle_one_xevent): Update the toplevel list if prudent.
-2022-03-24 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix wrapping of 'previous-completion' at the beginning of buffer
@@ -67353,13 +67353,13 @@
Also fix 'previous-completion' to wrap to the last completion.
(bug#54374)
-2022-03-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Small fixes for the new feature 'second-tab' of 'completion-auto-select'
* lisp/simple.el (completion-auto-select): Extend the docstring.
-2022-03-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use bounds of thing at point when asking for code actions
@@ -67368,7 +67368,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/895
-2022-03-24 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
João Távora <joaotavora@gmail.com>
Handle invisible text in Eldoc when calculating size
@@ -67379,14 +67379,14 @@
when counting lines to crop an echo-area message.
(Version): Bump.
-2022-03-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow fetching events from other displays inside DND
* src/xterm.c (x_dnd_begin_drag_and_drop): Get the next event
from the app connection instead on Xt.
-2022-03-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp to dired--insert-disk-space assumptions
@@ -67395,24 +67395,24 @@
Do not modify disk space information when
`dired--insert-disk-space' is available. (Bug#54512)
-2022-03-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix autoinsert.el byte compilation warning
* lisp/autoinsert.el (sgml-tag): Fix a byte compilation warning.
-2022-03-24 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Merge 'completion-auto-select new value secont-tab'
This includes the second-tab value for completion-auto-select and
documentation related.
-2022-03-24 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add documentation entries for completion-auto-select user option.
-2022-03-24 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add completion-auto-select second-tab value.
@@ -67422,37 +67422,37 @@
(completion-setup-function) : Make a more precise check for when
completion-auto-select is t.
-2022-03-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/select.el (xselect-convert-to-targets): Use `delete-dups` and `delq`
* lisp/autoinsert.el (auto-insert-alist): Expose lambdas as code
-2022-03-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(archive-*-write-file-member): Fix relative file name
* lisp/arc-mode.el (archive-*-write-file-member): Set the pwd
-2022-03-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Do some NEWS tagging
-2022-03-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid crashes if async input arrives when setting properties for DND
* src/xterm.c (x_dnd_begin_drag_and_drop): Block input around
non-async signal safe functions.
-2022-03-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention frame-text-* function in frame-pixel-* doc strings
* src/frame.c (Fframe_native_width, Fframe_native_height): Link to
`frame-text-*' functions.
-2022-03-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix image-mode-fit-frame some more
@@ -67460,7 +67460,7 @@
and fit-frame-to-buffer instead of computing things ourselves
(bug#37630). This makes things work better across platforms.
-2022-03-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some bugs with drag and drop and Mozilla
@@ -67470,7 +67470,7 @@
* src/xterm.c (x_dnd_begin_drag_and_drop): Delete XdndActionList
and XdndActionDescription if they were not specified.
-2022-03-24 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Load desktop without prompting if process is dead
@@ -67488,7 +67488,7 @@
* test/lisp/desktop-tests.el: New file with tests for the above.
-2022-03-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix setter for hl-line-sticky-flag when hl-line is not loaded
@@ -67496,7 +67496,7 @@
around (featurep 'hl-line). Reported by Michael Heerdegen
<michael_heerdegen@web.de>.
-2022-03-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow holding down scroll bar buttons on Haiku when overscrolling
@@ -67508,14 +67508,14 @@
bar is at the end.
(Pulse): New method.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix an infinite loop if the window manager pings Emacs during DND
* src/xterm.c (handle_one_xevent): Work around _NET_WM_PING
infinite loop during drag and drop.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix copying font names around on Haiku
@@ -67526,7 +67526,7 @@
* src/haikufont.c (haikufont_spec_or_entity_to_pattern): Stop
assuming patterns were allocated by xzalloc.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dragging and dropping multiple actions
@@ -67540,7 +67540,7 @@
`ask_action_list', `ask_action_names' and `n_ask_actions'.
* src/xterm.h: Update prototypes.
-2022-03-23 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Fix regression in isearch-yank-char-in-minibuffer
@@ -67548,7 +67548,7 @@
original window in order to restore point. This is needed when
minibuffer lazy highlight is in effect.
-2022-03-23 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Make undigest work with multipart/mixed messages
@@ -67560,7 +67560,7 @@
(rmail-digest-parse-mixed-mime): New function, to search for a
multipart/digest message inside a multipart/mixed message.
-2022-03-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make quoting of shell arguments in grep.el more robust
@@ -67570,11 +67570,11 @@
(grep-compute-defaults, grep-default-command)
(grep-expand-keywords, lgrep, rgrep-default-command): Use it.
-2022-03-23 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* doc/misc/eudc.texi (Inline Query Expansion): Unbreak it.
-2022-03-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Support changing remoteness of DIR in rgrep and lgrep
@@ -67585,7 +67585,7 @@
(lgrep, rgrep): Recompute grep defaults when the remoteness of DIR
changes.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improvements to Haiku selection handling
@@ -67607,7 +67607,7 @@
(syms_of_haikuselect): Update subrs.
* src/haikuselect.h: Update prototypes.
-2022-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reinstate `C-M-<delete>'
@@ -67616,18 +67616,18 @@
hasn't been the case in any common GNU/Linux distributions for
decades.
-2022-03-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix image-mode-fit-frame resizing
* lisp/image-mode.el (image-mode-fit-frame): Use pixel sizes
instead of lines/columns to get more accurate resizing (bug#37630).
-2022-03-23 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* lisp/term/pgtk-win.el: Update header comment.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix hl-line tests
@@ -67636,18 +67636,18 @@
`cl-some' always returning t on success.
(hl-line-tests-sticky-across-frames): Use correct global variable.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/calendar/todo-mode.el: Restore old code.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Restore old hl-line code
* lisp/hl-line.el: Restore old code to remove obsoletions.
(hl-line-overlay-priority): Make defcustom.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow retrieving some more kinds of clipboard data on Haiku
@@ -67660,25 +67660,25 @@
potentially large or circular lists.
* src/haikuselect.h (enum haiku_clipboard): New enum.
-2022-03-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash in haiku_message_to_lisp
* src/haikuselect.c (haiku_message_to_lisp): Block input around
`free'.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle quitting correctly during interprogram drag-and-drop
* lisp/mouse.el (mouse-drag-and-drop-region): Handle quit
correctly by exiting the cross program drag and drop.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_dnd_begin_drag_and_drop): Fix test against DND frame.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't allocate duplicate cursors for each frame on Haiku
@@ -67689,7 +67689,7 @@
* src/haikuterm.h (struct haiku_display_info): New fields for
cursors.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve DND documentation
@@ -67697,7 +67697,7 @@
* src/xfns.c (Fx_begin_drag): Document meaning of
`XdndActionPrivate'.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reported taken action correctly when dragging to another frame on X
@@ -67707,7 +67707,7 @@
(x_dnd_begin_drag_and_drop): Return `XdndActionPrivate' if the
drop landed on one of our own frames.
-2022-03-22 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Refactor gnus/nnselect artlist saving and getting
@@ -67721,42 +67721,42 @@
* doc/misc/gnus.texi (Selection Groups): Document artlist storage and
retrieval.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
NEWS copy edits
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention highlight-confusing-reorderings in doc string
* src/xdisp.c (Fbidi_find_overridden_directionality): Mention
highlight-confusing-reorderings.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention the other-window-scroll-default user option
* src/window.c (Fscroll_other_window): Link to
other-window-scroll-default in the doc string.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document outline-default-state
* doc/emacs/text.texi (Outline Visibility): Mention
outline-default-state.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Do some NEWS tagging
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document sqlite-mode-open-file and do some NEWS tagging
* doc/lispref/text.texi (Database): Mention sqlite-mode-open-file.
-2022-03-22 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
Enable Better Alignment of EUDC Inline Expansion With RFC5322
@@ -67811,7 +67811,7 @@
When eudc-inline-expansion-format remains set to a list as previously,
the old behaviour is fully retained.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix two no-X compilation warnings
@@ -67821,34 +67821,34 @@
* lisp/term/pgtk-win.el (window-system-initialization): Avoid no-X
compilation warning.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a keyboard.c no-X compilation warning
* src/keyboard.c (make_lispy_position): Fix compilation warning in
a --without-x build.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make mail-header-parse-addresses-lax more lax
* lisp/mail/mail-parse.el (mail-header-parse-addresses-lax): Be
more resilient (bug#54523).
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix Completion Options typo
* doc/emacs/mini.texi (Completion Options): Fix typo.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a shell-filter-ring-bell function
* lisp/shell.el (shell-mode): Mention it.
(shell-filter-ring-bell): New function (bug#21652).
-2022-03-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of the new completion-related features
@@ -67858,7 +67858,7 @@
* doc/emacs/mini.texi (Completion Options): Fix wording of
recently added documentation and customization options.
-2022-03-22 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Revert "Set cursor-face-highlight-nonselected-window in completions."
@@ -67866,7 +67866,7 @@
This fixes incorrect highlight in Completions.
-2022-03-22 Allen Li <darkfeline@felesatra.moe>
+2023-04-15 Allen Li <darkfeline@felesatra.moe>
Add user option for controlling dired-do-shell-command prompt
@@ -67875,7 +67875,7 @@
(dired-do-shell-command): Check option before prompting
(bug#29465).
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make eshell link faces more distinctive on 8-color displays
@@ -67883,7 +67883,7 @@
(eshell-ls-symlink): Make the faces be distinctive on 8-colour
displays (bug#43615).
-2022-03-22 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Restore hl-line--buffer tracking
@@ -67898,7 +67898,7 @@
(hl-line-tests-sticky-across-frames, hl-line-tests-sticky):
Test (bug#54481).
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix dependency problem in hl-line-sticky-flag"
@@ -67906,14 +67906,14 @@
This is fixed differently in a subsequent patch.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix dependency problem in hl-line-sticky-flag
* lisp/hl-line.el (hl-line-sticky-flag): Open-code
hl-line-unhighlight to avoid recursive dependencies (bug#54481).
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix color-lighten-hsl logic
@@ -67921,11 +67921,11 @@
instead of just adding the specified number to the luminance
element (bug#54514).
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert todo-mode tests failing after todo-mode reversion
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function image-supported-file-p
@@ -67940,7 +67940,7 @@
* lisp/mail/rmailmm.el (rmail-mime-set-bulk-data): Adjust caller
and logic.
-2022-03-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Allow using image-convert to view .bmp images"
@@ -67949,7 +67949,7 @@
This leads to failures for usages of the function where
Emacs doesn't have support for the formats.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify fullscreen management on Haiku
@@ -67967,7 +67967,7 @@
* src/haikuterm.h (struct haiku_output): Remove all pending_zoom
fields since they are no longer required.
-2022-03-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix grep-like functions when running on a remote host
@@ -67981,7 +67981,7 @@
(rgrep-default-command): Use POSIX argument in
`shell-quote-argument'. (Bug#54487)
-2022-03-22 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* src/comp.c: Few improvements following 71b8f1fc635.
@@ -67991,15 +67991,15 @@
* src/comp.c (Fcomp__register_lambda, Fcomp__register_subr):
Remove unnecessary change.
-2022-03-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_dnd_get_window_proto): Don't return huge protocols.
-2022-03-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Merge branch 'feature/completions-customs'
-2022-03-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix starting Emacs with -mm or -fs on Haiku
@@ -68007,27 +68007,27 @@
window size if the frame is fullscreen, like most X window
managers.
-2022-03-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leak of saved menu event and output data
* src/xterm.c (x_destroy_window, x_free_frame_resources): Free
output data and saved menu event even if display is closed.
-2022-03-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix unloading the hl-line library
* lisp/hl-line.el (hl-line-unload-function): Restore function.
-2022-03-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix incompatible changes in hl-line
* lisp/hl-line.el (hl-line-face): Rename back to hl-line.
(hl-line-face): Restore defcustom.
-2022-03-21 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Small fixes for new completions features
@@ -68036,7 +68036,7 @@
(completions-highlight, completions-highlight-face):
Move up before first use.
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option `diff-entire-buffers'
@@ -68044,14 +68044,14 @@
(diff-file-local-copy): Use it.
(diff-buffers): Mention it in the doc string.
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't break autoload generation of `left-margin' isn't zero
* lisp/emacs-lisp/autoload.el (make-directory-autoloads): Fix
autoload generation breakage is left-margin isn't zero (bug#54491).
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `n' in image-mode work more reliably with external formats
@@ -68062,7 +68062,7 @@
(image-convert-p): Use it.
(image-convert): Ditto.
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow specifying the intermediate format
@@ -68071,18 +68071,18 @@
(image-convert, image-converter--convert-magick)
(image-converter--convert): Use it.
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using image-convert to view .bmp images
* lisp/image.el (image-type-from-file-name): Allow Emacs to fall
back on image-convert to display .bmp images (bug#54492).
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerated ldefs-boot.el
-2022-03-21 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Rewrite hl-line-mode
@@ -68118,14 +68118,14 @@
todo-test-done-items-separator06-eol,
todo-test-done-items-separator07): Adapt to consolidated face.
-2022-03-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new face shr-code
* lisp/net/shr.el (shr-code): New face (bug#54480).
(shr-tag-code): Use it.
-2022-03-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to Haiku DND support
@@ -68137,21 +68137,21 @@
* src/haikuselect.c (haiku_should_quit_drag): New function.
(Fhaiku_drag_message): If rc is true, quit.
-2022-03-21 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Set cursor-face-highlight-nonselected-window in completions.
* lisp/simple.el (completion-setup-function) : Sets
cursor-face-highlight-nonselected-window to t in Completions.
-2022-03-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f15922a57c Update to Org 9.5.2-25-gaf6f12
9fcdd5b63f Improve doc strings of read-char-from-minibuffer-insert-* ...
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of input methods during drag-and-drop
@@ -68162,7 +68162,7 @@
(XTread_socket): Verify GenericEvents are actually input
extension events before ignoring them.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make quitting work while DND is waitng for finish
@@ -68172,7 +68172,7 @@
(x_filter_event): Don't filter if waiting for DND finish as
well.
-2022-03-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Support indentation of Ruby pattern matching expressions
@@ -68182,18 +68182,18 @@
* test/lisp/progmodes/ruby-mode-resources/ruby.rb:
Add indentation example.
-2022-03-20 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Fix imap fetching multiple mailboxes (bug#54158)
* lisp/gnus/mail-source.el (mail-source-fetch-imap): Variables
mailbox-source-string and remove should be reset for each mailbox.
-2022-03-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS: Mention new hook 'minibuffer-lazy-highlight-setup'.
-2022-03-20 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Add lazy highlight to 'isearch-edit-string'
@@ -68201,7 +68201,7 @@
lazy count, provided 'isearch-lazy-highlight' respectively
'isearch-lazy-count' are non-nil.
-2022-03-20 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Allow lazy highlight and match count while reading from minibuffer
@@ -68215,7 +68215,7 @@
implementing the lazy highlight functionality while reading from
minibuffer.
-2022-03-20 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
New hook, lazy-count-update-hook
@@ -68229,28 +68229,28 @@
* lisp/simple.el (minibuffer-history-isearch-setup): Make sure no lazy
count is displayed.
-2022-03-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-new-tab-to): Don't funcall const values.
Filter out the values 'clone' and 'window' of 'tab-bar-new-tab-choice'
from function call.
-2022-03-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend connection-local variables example in Elisp manual
* doc/lispref/variables.texi (Connection Local Variables):
Explain, how to append variable settings to an existing profile.
-2022-03-20 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove duplicate INLINE_HEADER_BEGIN
* src/thread.h: Remove duplicate INLINE_HEADER_BEGIN.
Problem reportd by Mattias Engdegård.
-2022-03-20 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Add simple support for workspacefolders
@@ -68267,7 +68267,7 @@
(eglot--connect): Add workspaceFolders to initializeParams.
(eglot-handle-request workspace/workspaceFolders): New cl-defmethod.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix confusion of wanted action with actual action on X
@@ -68275,21 +68275,21 @@
(x_dnd_update_state, handle_one_xevent): Differentiate between
wanted action and chosen action correctly.
-2022-03-20 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix wrong password stored in Tramp
* lisp/net/tramp.el (tramp-process-actions):
Unset `tramp-password-save-function'.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make DND between frames work properly
* src/xterm.c (handle_one_xevent): Don't wait for a finish event
when dropping on top of another Emacs frame.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve compliance with version 5 of the XDND specification
@@ -68299,21 +68299,21 @@
(handle_one_xevent): Wait for XdndFinished events and return the
action chosen there.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some crashes in shut_down_emacs on Haiku
* src/emacs.c (shut_down_emacs): Stop quitting be app, since
it's not always there.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `haiku_delete_terminal'
* src/haikuterm.c (haiku_delete_terminal): Actually delete the
terminal instead of aborting.
-2022-03-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Check list tail properly in x-begin-drag
@@ -68321,14 +68321,14 @@
proper list.
* src/xterm.c (x_dnd_update_state): Remove debugging code.
-2022-03-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash on some compositing managers
* src/xterm.c (x_dnd_get_target_window): Catch errors around
CompositeReleaseOverlayWindow.
-2022-03-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve behaviour of drag-n-drop during window manager operations
@@ -68341,7 +68341,7 @@
* src/xterm.h (struct x_display_info): New atom
`_NET_CLIENT_LIST_STACKING'.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port to gcc -D EMACS_EXTERN_INLINE
@@ -68349,7 +68349,7 @@
INLINE_HEADER_END, since it uses INLINE.
* src/emacs.c: Include these two files.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
valid_sp inline fix
@@ -68357,7 +68357,7 @@
should be used only in headers and between INLINE_HEADER_BEGIN
and INLINE_HEADER_END. No need for ‘inline’ here.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify alloc.c static function decls
@@ -68366,7 +68366,7 @@
order is obsolescent. Anyway, no need for ‘inline’ as compilers
inline without it well enough.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Make native helper functions static
@@ -68376,7 +68376,7 @@
(helper_save_restriction, helper_GET_SYMBOL_WITH_POSITION)
(helper_PSEUDOVECTOR_TYPEP_XUNTAG): Now static.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove unused fns/data and make fns static
@@ -68399,7 +68399,7 @@
!defined USE_CAIRO && (RENDER_MAJOR > 0 || RENDER_MINOR >= 2),
since it’s not used otherwise.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use filenvercmp instead of doing it by hand
@@ -68407,7 +68407,7 @@
not string_version_cmp.
(string_version_cmp): Remove; no longer used.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Omit unnecessary code when !HAVE_NATIVE_COMP
@@ -68418,7 +68418,7 @@
Define only if HAVE_NATIVE_COMP && WINDOWSNT,
as they’re not used otherwise.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove internal_condition_case_[345]
@@ -68429,14 +68429,14 @@
(internal_condition_case_4, internal_condition_case_5): Remove.
The first two were never used; the last only in now-removed code.
-2022-03-19 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Remove sanitize_window_sizes
* src/window.c (sanitize_window_sizes): Remove; no-longer-used.
A previous refactoring moved this to Lisp without removing the C code.
-2022-03-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `command-modes' work for (native-compiled) subrs, too
@@ -68458,7 +68458,7 @@
* src/pdumper.c (dump_subr): Update hash.
(dump_subr): Dump the command_modes slot.
-2022-03-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve protection against faulty clients during DND
@@ -68466,7 +68466,7 @@
(xdnd_send_leave, x_dnd_send_drop): Catch errors around call to
XSendEvent. The target window could be gone.
-2022-03-19 Guy Gastineau <strings.stringsandstrings@gmail.com> (tiny change)
+2023-04-15 Guy Gastineau <strings.stringsandstrings@gmail.com> (tiny change)
Remove redundant checks in erc--switch-to-buffer
@@ -68475,20 +68475,20 @@
`read-buffer' and use it for erc-iswitchb" meant to remove this, but
it was left behind. (Bug#53617)
-2022-03-19 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add unit test for erc--switch-to-buffer
* test/lisp/erc/erc-tests.el (erc--switch-to-buffer): Add new test.
(Bug#53617)
-2022-03-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
e059d7c Fix region highlight in non-selected windows
-2022-03-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore drag source frame on Haiku in line with documentation
@@ -68497,13 +68497,13 @@
(MessageReceived): Ignore dropped messages with same window id.
(be_drag_message): Add source frame's window ID to message.
-2022-03-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
c4596c8522 Fix a regression in 'decipher-digram-list'
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document dired-mouse-drag-files
@@ -68513,11 +68513,11 @@
* lisp/dired.el (dired-mouse-drag-files): Fix typo in doc
string.
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (XTread_socket): Don't filter GenericEvents.
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some glitches when dragging files from dired
@@ -68526,7 +68526,7 @@
(dired-mouse-drag): Clear mark if active and only make button
release events unread.
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle composite overlay window during drag and drop sessions
@@ -68542,7 +68542,7 @@
* src/xterm.h (struct x_display_info): New fields for composite
extension presence.
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some XIM servers getting confused during drag-and-drop
@@ -68551,7 +68551,7 @@
(x_filter_event): Return 0 if DND is in progress.
(xim_instantiate_callback): Likewise.
-2022-03-18 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
cursor-face-highlight-nonselected-window default to nil
@@ -68559,11 +68559,11 @@
and not check facep.
(cursor-face-highlight-nonselected-window) : default to nil
-2022-03-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/bytecomp.el (byte-compile-make-closure): Minor optimization
-2022-03-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Pcomplete: Better obey `completion-at-point-functions`
@@ -68582,11 +68582,11 @@
(eshell-complete-parse-arguments): Use it and obey
`pcomplete-allow-modifications`.
-2022-03-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/gnus/mail-source.el (mail-source-set-1): Fix indent and simplify
-2022-03-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up fixnum printing
@@ -68598,7 +68598,7 @@
* src/lisp.h: (fixnum_to_string): External declaration.
* src/print.c (print_object): Use fixnum_to_string instead of sprintf.
-2022-03-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make application configurable in 'with-connection-local-variables'
@@ -68613,7 +68613,7 @@
* test/lisp/files-x-tests.el
(files-x-test-with-connection-local-variables): Extend test.
-2022-03-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Defend against broken move-to-column in recent emacs
@@ -68676,7 +68676,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/860
-2022-03-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up number-to-string for fixnums
@@ -68686,7 +68686,7 @@
* src/data.c (Fnumber_to_string): Don't use sprintf for fixnums.
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement drag-and-drop of files on Haiku
@@ -68699,14 +68699,14 @@
* src/haikuselect.c (haiku_lisp_to_message): Perform more error
checking.
-2022-03-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
530c3491e8 Improve documentation of bookmark default sorting
11492259b1 ; * doc/lispref/display.texi (Overlay Arrow): More accurat...
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dragging messages with file names on Haiku
@@ -68715,7 +68715,7 @@
correctly.
* src/haikuselect.h: Update prototypes.
-2022-03-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dragging files from Dired to other programs
@@ -68737,7 +68737,7 @@
selection converters.
(syms_of_xselect): Update doc strings.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor fixes to DND support
@@ -68746,7 +68746,7 @@
(handle_one_xevent): Only calculate dnd_grab if DND is in
progress.
-2022-03-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Remove some early-bootstrap dependencies for `advice`
@@ -68772,7 +68772,7 @@
(cl--generic-get-dispatcher): Use it.
(cl--generic-prefill-dispatchers): Make freshly made dispatchers.
-2022-03-17 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add new variable cursor-face-highlight-nonselected-window
@@ -68781,7 +68781,7 @@
(redisplay--update-cursor-face-highlight) : Extend highlight condition
to consider the new variable.
-2022-03-17 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Put bytecode stack frame metadata in a struct
@@ -68801,7 +68801,7 @@
* src/lisp.h (struct handler, get_act_rec, set_act_rec):
Adapt to new struct bc_frame.
-2022-03-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore HOME after mailcap-parsing-and-mailcap-mime-info
@@ -68809,7 +68809,7 @@
(mailcap-parsing-and-mailcap-mime-info): Restore HOME after the
test (bug#54435).
-2022-03-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Enable Tramp reloading
@@ -68819,18 +68819,18 @@
* test/lisp/net/tramp-tests.el (tramp-test47-unload): Do not skip.
Test reload.
-2022-03-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Warn suspicious args
-2022-03-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid repeated prompts in `M-x shell' if using ~/.emacs_bash
* lisp/shell.el (shell): Use `shell-eval-command' to avoid
repeated prompts (bug#9961).
-2022-03-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make shell-resync-dirs work with zsh
@@ -68838,49 +68838,49 @@
avoid getting confused by zsh (bug#54384).
(shell-eval-command): New function.
-2022-03-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(seq-contains-p): Refine the non-nil returned value
* lisp/emacs-lisp/seq.el (seq-contains-p): Like `cl-some` return the
value returned by the test function rather than t.
-2022-03-17 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Fix a use of 'cl-defgeneric'.
* lisp/progmodes/xref.el (xref-match-length): Use 'cl-defmethod'
instead of 'cl-defgeneric'.
-2022-03-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `?' work again in read-multiple-choice
* lisp/emacs-lisp/rmc.el (read-multiple-choice): Make the `?' key
work again to show the help text.
-2022-03-17 Felician Nemeth <felician.nemeth@gmail.com>
+2023-04-15 Felician Nemeth <felician.nemeth@gmail.com>
Format long help texts better in read-multiple-choice
* lisp/emacs-lisp/rmc.el (rmc--show-help): Format long help texts
better (bug#54430).
-2022-03-17 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Improve propagation of gnus/nnselect group info
* lisp/gnus/nnselect.el (nnselect-push-info): Speed up pushing the
nnselect info back to the originating groups.
-2022-03-17 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Fix bug in nnselect fetching new articles in a thread
* lisp/gnus/nnselect.el (nnselect-request-thread): Ignore the
Retrieval Status Value in comparing whether articles are the same.
-2022-03-17 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Don't use the original sender's address as the envelope-from
@@ -68888,14 +68888,14 @@
envelope-from to the original sender's address rather than the
resender's (bug#54429).
-2022-03-17 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Improve LaTeX symbol prettification
* lisp/textmodes/tex-mode.el (tex--prettify-symbols-alist):
Support macros which used to be part of textcomp package.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent invisible frames from acting as drag sources
@@ -68903,11 +68903,11 @@
invisible. It makes no sense for an invisible frame to be a
drag source, so the function just hangs.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuselect.c (Fhaiku_drag_message): Clear display grab after drag ends.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix creating frames with an initial value of `fullscreen' on Haiku
@@ -68918,21 +68918,21 @@
* src/haikuterm.h (struct haiku_output): New field
`configury_done'.
-2022-03-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Do not cache directories with Tramp sshfs
* lisp/net/tramp-sshfs.el (tramp-methods) <sshfs>:
Add "-o dir_cache=no" to `tramp-mount-args'. (Bug#54126)
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse movement on Haiku
* src/haiku_support.cc (MouseMoved): Make sure grab view exists
before comparing against it.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display drag-and-drop messages in echo area on non-graphics displays
@@ -68941,14 +68941,14 @@
(mouse-drag-and-drop-region): Use them instead of calling
`x-hide-tip' and `x-show-tip' directly.
-2022-03-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix compilation error of xterm.c
* src/xterm.c (x_dnd_begin_drag_and_drop): Use current_count only
if defined. Reported by Tassilo Horn <tsdh@gnu.org>.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent delivery of duplicate events when window is grabbed on Haiku
@@ -68957,29 +68957,29 @@
(MouseMoved, MouseDown, MouseUp): Keep track of the grab and
don't deliver motion events to any other view.
-2022-03-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_dnd_begin_drag_and_drop): Always initialize hold_quit.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Restore old PGTK scrolling code
* src/pgtkterm.c (pgtk_copy_bits): Restore old code using
cairo_surface_create_similar. (bug#54040)
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make GTK inspector available on PGTK
* src/pgtkfns.c (Fx_gtk_debug): New function.
(syms_of_pgtkfns): Define new subr.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/term/haiku-win.el (x-begin-drag): Fix type code of B_MIME_TYPE.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement cross-program drag-and-drop on Haiku
@@ -69007,14 +69007,14 @@
* src/haikuselect.h: Update prototypes.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve GTK support for X11 drag-n-drop
* src/xterm.c (x_dnd_begin_drag_and_drop): Run nested GTK event
loop instead, so GTK gets the correct events.
-2022-03-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify generate-new-buffer-name randomness
@@ -69022,7 +69022,7 @@
Simplify by calling get_random instead of Frandom;
that’s random enough here.
-2022-03-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve random bignum generation
@@ -69035,7 +69035,7 @@
since zero is invalid, Qnatnump is not quite right here.
* src/sysdep.c (get_random_ulong): New function.
-2022-03-16 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Strip positions from symbols before the eval in eval-{when,and}-compile.
@@ -69046,14 +69046,14 @@
entry. Add a call to `byte-run-strip-symbol-positions' in the
eval-and-compile entry.
-2022-03-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Report buffer-name when local mode-line is invalid
* lisp/files.el (hack-local-variables-prop-line): Add '(buffer-name)'
to the message reporting the malformed mode-line.
-2022-03-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Guard against custom entries that can contain NULs
@@ -69067,7 +69067,7 @@
* lisp/startup.el (startup--load-user-init-file): Bind
inhibit-null-byte-detection to t.
-2022-03-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve error message for 'not running' processes
@@ -69078,36 +69078,36 @@
* src/process.c (send_process, Fprocess_send_eof): Add the output of
'status_message' to the error string.
-2022-03-16 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
* lisp/net/tramp-sh.el (tramp-find-file-exists-command): Fix comment.
-2022-03-16 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Link with libdl when using pgtk
* configure.ac: Define LIBMODULES on GNU/Linux when using pgtk, even
when not using modules, since pgtkterm.c uses dlsym. (Bug#54378)
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* doc/lispref/frames.texi (x-begin-drag): Improve wording.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix 32-bit Haiku build
* src/haikuselect.h (be_enum_message): Fix declaration for
32-bit types.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for dropping plain text on Haiku
* haiku-win.el (haiku-dnd-handle-drag-n-drop-event): Handle
`text/plain'.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Redo Haiku DND support
@@ -69130,14 +69130,14 @@
letting Lisp code do the processing.
* src/haikuterm.h: Update prototypes.
-2022-03-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix last change in frames.texi
* doc/lispref/frames.texi (Drag and Drop): Improve and clarify the
wording.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Pacify compiler warning in handle_one_xevent
@@ -69145,14 +69145,14 @@
it won't be used because target is None. Reported by Lars
Ingebrigtsen <larsi@gnus.org>.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correct last change for return-frame drags
* src/xterm.c (handle_one_xevent): Use `x_any_window_to_frame'
to determine `x_dnd_return_frame_object'.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix minor bugs with XDND support
@@ -69166,27 +69166,27 @@
first window with XdndAware instead of bottommost window.
(handle_one_xevent): Use new argument `proto_out'.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XI 2.0 build
* src/xterm.c (handle_one_xevent): Move declaration of dummy out
of HAVE_XINPUT2_1.
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tooltip text properties showing up in dragged text
* lisp/mouse.el (mouse-drag-and-drop-region): Directly call
x-show-tip and x-hide-tip instead of going through tooltip-show.
-2022-03-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
62e830c3d9 * doc/misc/transient.texi: Fix @dircategory to "Emacs misc...
-2022-03-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Better handle drag-and-drop from one Emacs frame to another
@@ -69202,11 +69202,11 @@
appropriate.
* src/xterm.h: Update prototypes.
-2022-03-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xfns.c (Fx_begin_drag): Improve doc string.
-2022-03-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for dragging text from Emacs to other programs
@@ -69256,7 +69256,7 @@
Xatom_XdndPosition, Xatom_XdndStatus, Xatom_XdndLeave,
Xatom_XdndDrop, and Xatom_XdndFinished.
-2022-03-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build with GTK 3.18.0 or earlier
@@ -69264,7 +69264,7 @@
(xg_update_horizontal_scrollbar_pos): Avoid
gtk_widget_queue_allocate on older GTK versions.
-2022-03-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clean up implementation of N0 per UAX#9
@@ -69272,7 +69272,7 @@
prev_for_neutral's type to be known, fall back on SOS, per
the UBA.
-2022-03-15 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Extract `gnus-collect-urls-from-article' from `gnus-summary-browse-url'
@@ -69280,14 +69280,14 @@
New function, extracted from `gnus-summary-browse-url'.
(gnus-summary-browse-url): Use it.
-2022-03-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/url/url-vars.el: Cosmetic changes
(url-mime-separator-chars): Simplify.
(url-interactive-p): Tweak docstring.
-2022-03-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
doctex-mode: Try and fix bug#35140
@@ -69296,14 +69296,14 @@
closing char for the previous comment.
(doctex-font-lock-^^A): Simplify accordingly.
-2022-03-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix byte-code button in help--describe-command
* lisp/help.el (help--describe-command): Fix byte-code button
(bug#24235).
-2022-03-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "New command `gnus-summary-browse-all-urls' bound to "v""
@@ -69311,7 +69311,7 @@
It was never agreed that this should be added.
-2022-03-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't advertise didchangewatchedfiles on tramp
@@ -69321,46 +69321,46 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/883
-2022-03-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some minor glitches with Haiku scroll bars
* src/haiku_support.cc (MouseDown): Don't start overscroll if
dragging started inside a button.
-2022-03-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes when trying to pop up a menu on GTK 2
* src/xterm.c (handle_one_xevent): Respect finish when
dispatching copy.
-2022-03-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some issues with input on GTK 2 builds
* src/xfns.c (setup_xi_event_mask): Don't ask for XI key press
on GTK 2.
-2022-03-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix extraneous ifdef in xwidgets code
* xterm.c (handle_one_xevent): Pass GesturePinchEnd events to
xwidgets regardless of no-longer-present define.
-2022-03-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Fix use of wrong motion structure.
-2022-03-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop relying on dynlib for PGTK interrupt input
* src/pgtkterm.c (pgtk_term_init): Use dlopen and dlsym directly
instead of dynlib functions. (bug#54378)
-2022-03-14 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Fix a bug and some docstrings
@@ -69371,7 +69371,7 @@
(eudc-menu): Add doc string.
(eudc-install-menu): Likewise.
-2022-03-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Another fix for the no-toolkit build
@@ -69380,7 +69380,7 @@
eliminating the goto it introduced.
* oldXMenu/XMenuInt.h: Include <attribute.h>, for FALLTHROUGH.
-2022-03-14 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer CALLN
@@ -69389,7 +69389,7 @@
Prefer CALLN to doing it by hand.
* src/fns.c (ccall2): Remove. All uses replaced by CALLN.
-2022-03-14 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
New command `gnus-summary-browse-all-urls' bound to "v"
@@ -69400,41 +69400,41 @@
(gnus-summary-browse-all-urls): New command.
(gnus-summary-mode-map): Bind `gnus-summary-browse-all-urls' to "v".
-2022-03-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the no toolkit build
* Activate.c (XMenuActivate): Stop relying on fallthroughs
inside switch statement. (bug#54382)
-2022-03-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix RFC2047 encoding of Disposition-Notification-To
* lisp/mail/rfc2047.el (rfc2047-header-encoding-alist): Encode
Disposition-Notification-To as an address header (bug#54383).
-2022-03-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle position specification hints on X toolkit builds
* src/xterm.c (x_wm_set_size_hint): Set PPosition and USPosition
independently of Xt.
-2022-03-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Simplify Edebug spec
* lisp/simple.el (cursor-face-highlight-mode): Fix copy&paste
-2022-03-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the execute-kbd-macro doc string
* src/macros.c (Fexecute_kbd_macro): Improve the doc string
(bug#14206).
-2022-03-14 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Make Edebug specification for 'cl-defstruct' more lenient.
@@ -69445,21 +69445,21 @@
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-defstruct/edebug): New
unit test.
-2022-03-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't always escape "." and "?" in `prin1'
* src/print.c (print_object): Only escape "." and "?" when
appearing as the first character in a symbol (bug#23130).
-2022-03-14 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Init 'rest' in 'balance-windows-2' (Bug#54380)
* lisp/window.el (balance-windows-2): Give 'rest' an initial
value (Bug#54380).
-2022-03-14 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add local to remove-hook in cursor-face-highlight-mode
@@ -69467,7 +69467,7 @@
Thanks to Stefan Monnier for this
-2022-03-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some Haiku toolkit code
@@ -69478,13 +69478,13 @@
of just one.
* src/haiku_support.h: Update prototypes.
-2022-03-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
1ec4063017 ; * admin/make-tarball.txt: Minor updates.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix extraneous overscroll activation on Haiku
@@ -69495,7 +69495,7 @@
(MouseMoved): Also test `maybe_overscroll' to ensure that a grab
started inside the scroll bar.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Improve cursor-face-highlight-mode a bit more.
@@ -69509,7 +69509,7 @@
redisplay--update-cursor-face-highlight to pre-redisplay-functions with
buffer local flag.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Improve the cursor-face feature.
@@ -69522,18 +69522,18 @@
(redisplay--highlight-overlay-function) : Make the face parameter
optional and add -- in the name.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tool-bar highlight persisting after mouse moves onto WM frame
* src/xterm.c (handle_one_xevent): Always report MotionNotify
coordinates in terms of the edit widget.
-2022-03-13 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* src/bytecode.c: Include sysstdio.h, for fprint, stderr.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable overscroll on Haiku horizontal scroll bars
@@ -69542,18 +69542,18 @@
* src/haikuterm.c (haiku_set_horizontal_scroll_bar_thumb):
Enable overscrolling on scroll bar widget.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix scroll bar movement right before overscroll begins on Haiku
* src/haikuterm.c (haiku_set_scroll_bar_thumb): Make sure value
and size are within bounds even if portion adjustment is off.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Make the completion-header-format info more precise.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Simplify unneeded condition.
@@ -69561,65 +69561,65 @@
completion--insert-string already has a condition for when completions
is nil.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Rename hook
* lisp/simple.el (redisplay--update-cursor-property-highlight) : Renamed
to redisplay--update-cursor-property-highlight
-2022-03-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Really fix find-func for defgeneric
* lisp/emacs-lisp/find-func.el (find-function-regexp): Really add
defgeneric.
-2022-03-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make vtable sorting stable
* lisp/emacs-lisp/vtable.el (vtable--sort): Make the sorting
stable.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Extend completion-auto-help 'always and 'visible.
Make them behave the same also with exact but not single completion.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Use the new cursor-face feature to highlight completions.
* lisp/minibuffer.el (completions-highlight-face) : New custom.
(completions-highlight-mode) : Removed
-2022-03-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Clang debug notes
* etc/DEBUG: Don’t imply Clang works as well as GCC when
debugging Emacs. Mention a coverage problem with Clang.
-2022-03-13 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix evaluation of negated argument predicates in Eshell
* lisp/eshell/em-pred.el (eshell-add-pred-func): Let-bind 'pred' so
the lambdas see the original value (bug#54369).
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Rename completion-header-string to completion-header-format
And use a propertized default value.
-2022-03-13 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* src/bytecode.c (sf_set_ptr): Cast pointer to type of right size.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add new special text attribute cursor-face
@@ -69632,7 +69632,7 @@
(redisplay--update-cursor-property-highlight) : New function for
pre-redisplay-functions.
-2022-03-13 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Separate bytecode stack
@@ -69667,7 +69667,7 @@
* src/thread.h (struct bc_thread_state): New.
(struct thread_state): Add bytecode thread state.
-2022-03-13 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify exec_byte_code arguments
@@ -69681,17 +69681,17 @@
* src/eval.c (fetch_and_exec_byte_code):
* src/lisp.h (exec_byte_code): Update signature.
-2022-03-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/ange-ftp.el (ange-ftp-ls): Make a loop when sanitizing LSARGS.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Make minibuffer-hide-completions interactive.
Mainly to find a binding for it.
-2022-03-13 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add completion-header-string.
@@ -69699,35 +69699,35 @@
completion-header-text-property-list and completion-lazy-count.
(completion-header-string): Substitutes the removed variable.
-2022-03-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add cl-defgeneric to find-func, too
* lisp/emacs-lisp/find-func.el (find-function-regexp): Add
cl-defgeneric, too (bug#54343).
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow overscrolling on Haiku scroll bars that are full
* src/haiku_support.cc (MouseMoved): Allow overscrolling even if
portion is less than 1.0.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pointer event tracking on top of Haiku scroll bars
* src/haiku_support.cc (MouseDown): Set correct mouse event mask
in case the scroll bar widget decides to not do that.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix splurious button events being generated on Haiku
* src/haiku_support.cc (MouseDown, MouseUp): Don't process if
the grab is not appropriate for the buttons that were pressed.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix setting IM spot after key press events
@@ -69735,7 +69735,7 @@
trying to set its status area and set preedit spot location
after KeyPress events.
-2022-03-13 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix esh-proc-tests on macOS
@@ -69743,13 +69743,13 @@
Add pattern matching output when killing a process on macOS (and
possibly other BSDs).
-2022-03-13 Visuwesh <visuweshm@gmail.com> (tiny change)
+2023-04-15 Visuwesh <visuweshm@gmail.com> (tiny change)
* quail.el (quail-define-package): Describe VAR form in DOCSTRING better.
Bug#50143
-2022-03-13 Visuwesh <visuweshm@gmail.com> (tiny change)
+2023-04-15 Visuwesh <visuweshm@gmail.com> (tiny change)
Follow contemporary practices in the Tamil input methods
@@ -69771,7 +69771,7 @@
Fixes bug#50143.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix small regression for horizontal scroll bars
@@ -69779,7 +69779,7 @@
horizontal scrollbar code, since the change it was intended for
was never made.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve overscrolling support on Haiku
@@ -69789,7 +69789,7 @@
(MouseMoved): Get rid of magic numbers by using real max value
instead.
-2022-03-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow dragging scroll bar for overscroll on Haiku
@@ -69809,14 +69809,14 @@
(haiku_read_socket): Take ceiling of bar position if
horizontal.
-2022-03-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
e5b191465d ; * admin/authors.el (authors-canonical-file-name): Remove...
6b0fdf73cf ; Fix data structures in authors.el
-2022-03-12 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Flocate_file_internal: Protect from `.eln` remapping
@@ -69828,7 +69828,7 @@
* src/lread.c (Flocate_file_internal): Don't map `.elc` to `.eln`.
* lisp/files.el (locate-file): Simplify accordingly.
-2022-03-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve reliaibility of scroll bar dimensions adjustment on GTK 3
@@ -69840,14 +69840,14 @@
* src/xterm.c (x_scroll_bar_configure): New function.
* src/xterm.h: Update prototypes.
-2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further locate-file fixes on nativecomp
* lisp/files.el (locate-file): Fix up previous locate-file change
-- don't unconditionally return .elc on nativecomp.
-2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Disable esh-proc-test/kill-pipeline on EMBA
@@ -69860,14 +69860,14 @@
:form
(string-match-p "\\(?:\\(?:interrupt\\|killed\\)\n\\)" "")
-2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix EMBA failure for ert-test-record-backtrace
* test/lisp/emacs-lisp/ert-tests.el (ert-test-record-backtrace): Make
this work with AOT.
-2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Return the same file from locate-file in nativecomp and non
@@ -69875,14 +69875,14 @@
in nativecomp, too, to mimic the behaviour from non-nativecomp
builds (bug#51308).
-2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make find-function-regexp also find cl-defun/defmethod
* lisp/emacs-lisp/find-func.el (find-function-regexp): Also find
cl-defun and cl-defmethod (bug#54343).
-2022-03-12 Colin Woodbury <colin@fosskers.ca>
+2023-04-15 Colin Woodbury <colin@fosskers.ca>
* lisp/progmodes/python.el: Account for new keywords.
@@ -69890,7 +69890,7 @@
of Python 3.10, Python has structured pattern matching. This adds
two new keywords which need to be highlighted (bug#54345).
-2022-03-12 Alexander Adolf <alexander.adolf@condition-alpha.com>
+2023-04-15 Alexander Adolf <alexander.adolf@condition-alpha.com>
Facilitate Customisation of Message-Mode Header Completion Behaviour
@@ -69898,14 +69898,14 @@
New user option.
(message-completion-alist): Use it here.
-2022-03-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark tramp-test30-make-process unstable on EMBA
* test/lisp/net/tramp-tests.el (tramp-test30-make-process): This times
out on EMBA.
-2022-03-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove never-used relative jump opcodes
@@ -69913,7 +69913,7 @@
Remove relative jump opcodes that seem to have been a short-lived
experiment, never used in a release.
-2022-03-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove debug code for opcodes long gone
@@ -69921,7 +69921,7 @@
Don't display custom messages in debug mode for Bscan_buffer and
Bset_mark which were removed long ago.
-2022-03-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Faster bytecode immediate argument fetching
@@ -69937,7 +69937,7 @@
Clang performs this optimisation for both `+` and `|` from version 10.
-2022-03-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Maintain end of specpdl instead of size
@@ -69953,7 +69953,7 @@
Replace specpdl_size with specpdl_end, according to the equation
specpdl_end = specpdl + specpdl_size.
-2022-03-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Inline record_in_backtrace
@@ -69964,7 +69964,7 @@
* src/lisp.h (grow_specpdl, record_in_backtrace): ... to here,
and declare inline.
-2022-03-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the PGTK build
@@ -69972,7 +69972,7 @@
preventing x_window from being correctly set.
(xg_get_scroll_id_for_window): Ifdef out unused function.
-2022-03-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try really hard to make GTK 3 scroll bars fit
@@ -69991,7 +69991,7 @@
scroll bar and the dimensions are wrong, resize the X window to
the right ones.
-2022-03-12 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Change capability 'documentchanges' to t
@@ -70004,35 +70004,35 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/853
-2022-03-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
dbe6a3ecf7 Fix regression in 'custom-prompt-customize-unsaved-options'
a9920473f6 Improve documentation of 'map-charset-chars'
-2022-03-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some issues with input methods that depend on button state
* src/xterm.c (handle_one_xevent): Translate button state before
filtering events.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix horizontal scroll bar updating on Haiku
* src/haikuterm.c (haiku_set_horizontal_scroll_bar_thumb): Just
take portion and position without adjustments.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use more reasonable default timeouts in Haiku menu loop
* src/haiku_support.cc (BMenu_run): Set default timeout to 10
seconds.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make C-mouse-3 on scroll bars work on Haiku
@@ -70041,7 +70041,7 @@
(MouseDown, MouseUp): Pass button events with ControlMask to
parent view.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Slightly improve scrollbar position accounting on Haiku
@@ -70050,7 +70050,7 @@
* src/haikuterm.c (haiku_set_scroll_bar_thumb): Take ceiling of
value instead of rounding it.
-2022-03-11 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add two new options for completions.
@@ -70059,7 +70059,7 @@
Updated NEWS and manual.
-2022-03-11 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Support querying all servers
@@ -70078,7 +70078,7 @@
Document `eudc-expand-try-all'.
* etc/NEWS (EUDC): Describe new 'eudc-expand-try-all' command.
-2022-03-11 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
EUDC: Update save-query-as-kill name and docstring
@@ -70093,7 +70093,7 @@
* etc/NEWS (EUDC): Document `eudc-expansion-overwrites-query'
rename to `eudc-expansion-save-query-as-kill'.
-2022-03-11 Manuel Uberti <manuel.uberti@inventati.org>
+2023-04-15 Manuel Uberti <manuel.uberti@inventati.org>
Use new jdtls script for eclipse jdt
@@ -70106,14 +70106,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/863
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a crash inside Haiku popup menus
* src/haiku_support.cc (BMenu_run): Handle B_WOULD_BLOCK from
wait_for_objects loop.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix initial values of scroll bar foreground and background on GTK 3
@@ -70124,7 +70124,7 @@
(x_set_scroll_bar_background):
(x_set_scroll_bar_foreground): Ignore tooltip frames.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement customization of scroll bar colors on GTK 3
@@ -70138,11 +70138,11 @@
* src/xterm.h (struct x_output): New fields for scroll bar
stylesheet providers.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/frame.c (scroll_bar_adjust_thumb_portion_p): Adjust doc string.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve scroll bar treatment on Haiku
@@ -70153,7 +70153,7 @@
(haiku_set_scroll_bar_thumb): Round values instead of
truncating them.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix inconsistent thumb position on Haiku scroll bars
@@ -70161,7 +70161,7 @@
scroll_bar_adjust_thumb_portion is nil, directly calculate thumb
portions without setting page_size.
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle Wayland displays correctly in browse-url
@@ -70169,14 +70169,14 @@
WAYLAND_DISPLAY as the display environment variable on
PGTK. (bug#54333)
-2022-03-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow C-mouse-2 to split windows on XInput 2 builds
* src/xterm.c (handle_one_xevent): Use x_scroll_bar_handle_click
if ControlMask is set.
-2022-03-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix scroll bar portion on Haiku scroll bars
@@ -70195,14 +70195,14 @@
(haiku_read_socket): Handle new meanings of scroll bar values.
* src/haikuterm.h (struct scroll_bar):
-2022-03-10 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix NS toolbar identifier (bug#54326)
* src/nsterm.m ([EmacsWindow createToolbar:]): Set the identifier to
something that will always be unique to that frame.
-2022-03-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix new option completions-max-height and new values for completion-auto-help
@@ -70212,19 +70212,19 @@
* lisp/minibuffer.el (completion-auto-help): Explain new values in docstring.
(completions-max-height): Use choice to allow nil.
-2022-03-10 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Add new mode completions-highlight-mode.
completions-max-height new custom variable.
-2022-03-10 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
completion-auto-help new values.
Added also entries to news and manual
-2022-03-10 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Don't strip invisible text when formatting hover string
@@ -70240,7 +70240,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/865
-2022-03-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Support remote home directories via connection property
@@ -70252,14 +70252,14 @@
* lisp/net/tramp.el (tramp-handle-expand-file-name): Check for
remote home directory. (Bug#53847)
-2022-03-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of minibuffer prompts in some circumstances on Haiku
* src/haikuterm.c (haiku_flush): Always flip buffers as long as
buffer flipping is not blocked.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu bar activation on PGTK
@@ -70271,14 +70271,14 @@
* src/xdisp.c (redisplay_internal): Return if popup_activated
also on PGTK.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix stray button release events being reported on GTK 2
* src/xterm.c (handle_one_xevent): Drop ButtonRelease events
that are destined for a popup menu.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu bar event detection on XI2 builds using Core Input
@@ -70286,21 +70286,21 @@
(xg_event_is_for_menubar): Fix some ifdefs.
* src/xterm.c (handle_one_xevent): Update a comment.
-2022-03-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix regression in vtable-goto-object
* lisp/emacs-lisp/vtable.el (vtable-goto-object): Fix moving to
the object.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some issues with GTK native input and modifiers on GTK 2
* src/gtkutil.c (xg_widget_key_press_event_cb): Manually ignore
modifier keys on GTK 2.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make XInput 2 features work on GTK 2 builds
@@ -70312,28 +70312,28 @@
extension events to GTK manually on versions of GTK+ that don't
understand them.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK widgets not appearing inside child frames
* src/xfns.c (x_set_parent_frame): Disable GTK's own frame
synchronization in child frames.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error when creating frames on NS with no main window
* nsfns.m (Fx_create_frame): If main window is not present,
center frame window instead of cascading it.
-2022-03-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't update Haiku menu bar if nothing changed
* haikumenu.c (set_frame_menubar): If Lisp-level contents didn't
change, refrain from actually updating the menu bar.
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix flicker during frame resize on Haiku
@@ -70341,13 +70341,13 @@
(haiku_set_vertical_scroll_bar): Stop calling flush_frame.
(haiku_flush): Only flip buffer of tooltip frames.
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS build
* sed1v2.inp: Update for recent changes.
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of tooltips inside menus on Haiku
@@ -70358,7 +70358,7 @@
Return result of `timer_run'.
* src/haikuterm.c (haiku_flush): Flip buffers if frame is dirty.
-2022-03-08 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Decouple mod-test.c from Gnulib
@@ -70399,7 +70399,7 @@
(mod-test-nanoseconds, mod-test-double):
Skip test if the corresponding functione is not defined.
-2022-03-08 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Do not include <attribute.h> from <config.h>
@@ -70413,11 +70413,11 @@
* src/conf_post.h: Do not include <attribute.h>.
All uses of attribute.h macros replaced with their _GL_ equivalents.
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Add more dead keys.
-2022-03-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark tramp test unstable on EMBA
@@ -70425,14 +70425,14 @@
(tramp-test44-asynchronous-requests): Mark timed-out EMBA test as
unstable.
-2022-03-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Implement abbreviate-file-name in Tramp for Google drive
* lisp/net/tramp-gvfs.el (tramp-gvfs-handle-get-home-directory):
Implement for Google drive.
-2022-03-08 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Support applying indices to more Eshell dollar expansions
@@ -70448,7 +70448,7 @@
(esh-var-test/quoted-interp-lisp-indices)
(esh-var-test/quoted-interp-cmd-indices): New tests.
-2022-03-08 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve wording of Eshell variable interpolation code/documentation
@@ -70466,34 +70466,34 @@
* doc/misc/eshell.texi (Dollars Expansion): Improve wording of
subscript notation.
-2022-03-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
d184773 Avoid assertion violations in 'bidi_resolve_brackets'
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle XI focus change events that specify implicit focus correctly
* src/xterm.c (x_detect_focus_change): If detail is
XINotifyPointer, set focus type to implicit.
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix detection of modifier keys on XInput 2
* src/xterm.c (handle_one_xevent): Fix iteration over sets of
modifiers.
-2022-03-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle bug#54294 in Tramp
* lisp/net/tramp.el (tramp-handle-file-locked-p, tramp-handle-lock-file):
Use `tramp-system-name'. (Bug#54294)
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix more uses of opaque Visual structure
@@ -70507,7 +70507,7 @@
* src/xterm.h (x_mutable_colormap): Stop using private fields of
Visual.
-2022-03-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Return actual color cell count in x-display-color-cells
@@ -70515,14 +70515,14 @@
of color cells, or the amount of individual combinations of
components.
-2022-03-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
80736aef90 Fix which-func-update doc string
d9e5ae5e20 Improve wording of 'dired-jump's description
-2022-03-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(cl-macro-list): Simplify by unifying the variants
@@ -70532,32 +70532,32 @@
(cl-destructuring-bind, cl-define-compiler-macro): Use `cl-macro-list`
instead, now that it covers all the cases we need.
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid color leaks while better ensuring a close color is found
* src/xterm.c (x_alloc_nearest_color_1): Verify nearest can be
allocated, and use that color value.
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix choice of visuals for XPM icon
* src/xterm.c (x_bitmap_icon): Allow using XPM icon on
StaticColor and StaticGray as well.
-2022-03-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove lock file in --no-build-details, too
* src/filelock.c (current_lock_owner): Make file writes work when
using --no-build-details (bug#54294).
-2022-03-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark ert-test-run-tests-batch-expensive unstable on EMBA
-2022-03-07 Kjartan Oli Agustsson <kjartanoli@outlook.com> (tiny change)
+2023-04-15 Kjartan Oli Agustsson <kjartanoli@outlook.com> (tiny change)
Add user stylesheet option for doc-view EPUB support
@@ -70566,11 +70566,11 @@
* lisp/doc-view.el (doc-view-mutool-user-stylesheet): New user option.
-2022-03-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/seq.el (seq-concatenate): Accept non-`sequencep` sequences
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly handle exposure in oldXMenu
@@ -70584,7 +70584,7 @@
* src/xterm.c (x_dispatch_event): Make `static' only on GTK.
* src/xterm.h: Expose `x_dispatch_event' on no-toolkit builds.
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve color handling on colormapped displays
@@ -70599,14 +70599,14 @@
* src/xterm.h (struct x_display_info, FRAME_X_VISUAL_INFO): Stop
accessing private fields of Visual.
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle color allocation failures caused by colormap changes
* src/xterm.c (x_alloc_nearest_color_1): Recompute color cells
if allocation of cached value failed.
-2022-03-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Rework `abbreviate-file-name' in Tramp
@@ -70653,14 +70653,14 @@
(tramp-test07-abbreviate-file-name):
(tramp--test-ange-ftp-p): Adapt tests.
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix color leak
* src/xterm.c (x_alloc_nearest_color_1): Don't allocate colors
multiple times when searching for a closest match.
-2022-03-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -70668,7 +70668,7 @@
9b74e84857 Restore documented Emacs 27.2 behaviour of browse-url-of-d...
cd77fd3b85 Update to Org 9.5.2-24-g668205
-2022-03-07 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Fix bookmark-bmenu-list sorting.
@@ -70678,41 +70678,41 @@
Also, make the default order of bookmark-bmenu-list be the LIFO order
defined in `bookmark-sort-flag's documentation.
-2022-03-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix maximum selection size reporting
* src/xselect.c (selection_quantum): Take into account extended
request size.
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous browse-url-file-url change
* lisp/net/browse-url.el (browse-url-file-url): Fix typo in
previous change.
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix esh-proc-test/kill-pipeline-head loop syntax
* test/lisp/eshell/esh-proc-tests.el
(esh-proc-test/kill-pipeline-head): Fix syntax of loop.
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Inhibit extpipe tests on EMBA, because they apparently time out?
https://emba.gnu.org/emacs/emacs/-/pipelines/16387
-2022-03-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix clearing of scroll bars on builds with disabled double buffers
* src/xterm.c (x_scroll_bar_clear): Use XClearArea if the scroll
bar is not double-buffered.
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how bibtex-mark-entry places point
@@ -70720,7 +70720,7 @@
behave like in other modes (with point at the beginning of the
region) (bug#4717).
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Show SVN status on "." directories, too
@@ -70728,7 +70728,7 @@
state of the "." directory, too, since they may have modified
properties (bug#7861).
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix `W' in Dired with non-ASCII file names
@@ -70739,7 +70739,7 @@
(browse-url-emacs): Make `W' in Dired work with non-ASCII file
names (bug#54271).
-2022-03-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of a loop through all frames when processing events
@@ -70748,7 +70748,7 @@
(flush_dirty_back_buffer_on): New function.
(flush_dirty_back_buffers): Delete function.
-2022-03-06 Gustaf Waldemarson <gustaf.waldemarson@gmail.com>
+2023-04-15 Gustaf Waldemarson <gustaf.waldemarson@gmail.com>
Display complex data types in gdb-mi
@@ -70777,20 +70777,20 @@
Patch amended by William Xu <william.xwl@gmail.com>.
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix syntax error in obsolete message function
* lisp/gnus/message.el (message-send-mail-function): Fix syntax error.
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix url-interactive-p type
* lisp/url/url-vars.el (url-interactive-pw): Fix typo in previous
checkin (bug#54275).
-2022-03-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix problem with fetching images via Cloudflare
@@ -70806,7 +70806,7 @@
* lisp/url/url-vars.el (url-interactive-p): New utility function.
-2022-03-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(ecomplete-add-item): Preserve the more complete text
@@ -70814,7 +70814,7 @@
* lisp/ecomplete.el (ecomplete-add-item): Keep the longest text
-2022-03-06 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Restore call to byte-run-strip-symbol-positions in byte-compile-out
@@ -70826,7 +70826,7 @@
* lisp/emacs-lisp/bytecomp.el (byte-compile-out): call
byte-run-strip-symbol-positions on operands which are one-element lists.
-2022-03-06 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't accept whitespace or hex floats in rgbi: colour specs
@@ -70840,7 +70840,7 @@
* test/src/xfaces-tests.el
(xfaces-internal-color-values-from-color-spec): Add test cases.
-2022-03-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect inhibit-double-buffering on non-toolkit scroll bars
@@ -70850,7 +70850,7 @@
* src/xterm.c (x_scroll_bar_create): Don't initialize back
buffer if double buffering is disabled for the frame.
-2022-03-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Have a couple of lsp faces inherit from basic "shadow"
@@ -70859,14 +70859,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/858
-2022-03-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Slightly fix mouse-highlight processing on Haiku
* src/haikuterm.c (haiku_read_socket): If no corresponding frame
was found for a keyboard event, clear mouse highlight.
-2022-03-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement frame cascading on Haiku
@@ -70874,21 +70874,21 @@
the focused frame if position is not user or programmer
specified.
-2022-03-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
0090318c61 * lib-src/seccomp-filter.c (main): Use faccessat2 only if ...
3bb01a499b Fix regression in derived-mode-init-mode-variables
-2022-03-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement "window cascading" on NS
* src/nsfns.m (Fx_create_frame): Cascade new frame position if
size hint flags are not USPosition or PPosition.
-2022-03-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce non-toolkit scroll bar flicker
@@ -70902,7 +70902,7 @@
instead when double buffered.
* src/xterm.h (struct scroll_bar): New field `x_drawable'.
-2022-03-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reporting of menu bar wheel events on no toolkit builds
@@ -70910,7 +70910,7 @@
on no-toolkit builds.
(x_create_terminal): Always add `toolkit_position_hook'.
-2022-03-05 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Use pselect instead of select in nsterm.m
@@ -70918,7 +70918,7 @@
the single remaining use of select (because we try to avoid using
select directly) (bug#54245).
-2022-03-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix emacs-module-test after recent changes
@@ -70926,7 +70926,7 @@
module test (because the module uses functions from gnulib)
(bug#32452).
-2022-03-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Obey decorator-specified width and height of tooltip frames on Haiku
@@ -70938,14 +70938,14 @@
* src/haikuterm.c (haiku_update_size_hints): Ignore tooltip
frames.
-2022-03-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Garbage Haiku tooltip frames on size change
* haikuterm.c (haiku_read_socket): If tooltip frame dimensions
actually changed, garbage the frame.
-2022-03-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix process-attributes time precision on BSD
@@ -70960,7 +70960,7 @@
problems where timestamps promised more precision than was
actually available.
-2022-03-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix process-attributes time precision on GNU/Linux
@@ -70977,7 +70977,7 @@
available (e.g., sysconf fails) do not place it into the alist.
* src/timefns.c (float_time): Now extern.
-2022-03-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
%CPU can exceed 100 on GNU/Linux
@@ -70985,28 +70985,28 @@
CPU usage can exceed 100% on a multicore platform when Emacs is
not entirely single-threaded.
-2022-03-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Avoid unnecessary make_float in time arithmetic
* src/timefns.c (float_time): New function.
(time_arith, Ffloat_time): Use it.
-2022-03-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix FreeBSD typo in process-attributes cstime
* src/sysdep.c (system_process_attributes) [__FreeBSD__]:
Fix typo that caused cstime to always equal cutime.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Flush default GC before using it in functions that accept a GContext
* src/xterm.c (x_scroll_run): Flush normal_gc, since some of the
following code depends on it being up-to-date.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove render code in x_scroll_run and drop NoExpose events instead
@@ -71015,7 +71015,7 @@
(handle_one_xevent): Drop NoExpose events to placate some code
in Athena widgets.
-2022-03-04 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-shell: Ensure the resulting buffer is live
@@ -71023,14 +71023,14 @@
Make sure to recreate the shell if the buffer exists but not live
(https://lists.gnu.org/archive/html/emacs-devel/2022-03/msg00017.html).
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent some NoExpose events from being generated
* src/xterm.c (x_scroll_run): Use the rendering extension if
available to avoid NoExpose events.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `pre_activate' callbacks for Motif menus
@@ -71038,13 +71038,13 @@
xm_pop_up_callback as the popup callback.
(xm_pop_up_callback): New function.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS build
* msdos/sedlibmk.inp: Update for gnulib merge.
-2022-03-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
trace.el: Preserve the line structure
@@ -71055,7 +71055,7 @@
* lisp/emacs-lisp/trace.el (trace-entry-message)
(trace-exit-message, trace--read-args): Quote newlines
-2022-03-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid statting directories on startup for Info
@@ -71071,7 +71071,7 @@
(Info-default-dirs): Append value of Info-default-directory-list
to the value returned from Info--default-directory-list.
-2022-03-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve scroll-bar-mode/default-frame-alist interaction docs
@@ -71081,7 +71081,7 @@
* src/frame.c (syms_of_frame): Clarify further that setting this
variable may have unintended consequences.
-2022-03-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add some sleeps to gnutls_try_handshake
@@ -71099,7 +71099,7 @@
* src/gnutls.c (gnutls_try_handshake): Add some sleeping to the
busy-wait loop so that we don't use 100% CPU here (bug#32452).
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add a few warnings about special event structures on X
@@ -71107,14 +71107,14 @@
(x_note_mouse_movement): Add comments explaining the nature of
some special event structures.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some errors in stretch glyphs code on PGTK
* src/pgtkterm.c (x_draw_stretch_glyph_string): Remove
unnecessary code. Reported by Eli Zaretskii <eliz@gnu.org>.
-2022-03-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix wording and punctuation in recent Gnus documentation changes
@@ -71124,14 +71124,14 @@
* doc/misc/gnus.texi (Creating Search Groups): Fix space between
sentences.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Initialize time inside motion and button events converted from XI events
* src/xterm.c (handle_one_xevent): Make sure time is initialized
in artificial events passed to functions that use it.
-2022-03-04 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Turn expiry on for nnselect groups
@@ -71146,14 +71146,14 @@
* doc/misc/gnus.texi (Creating Search Groups): Document
nnselect-allow-ephemeral-expiry.
-2022-03-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly process legacy XI wheel events on top of scroll bars
* src/xterm.c (handle_one_xevent): Handle XI button events
generated by scroll wheels on top of scroll bars.
-2022-03-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Pass core scroll wheel events outside the edit widget to Emacs on GTK
@@ -71162,25 +71162,25 @@
(handle_one_xevent): Treat core scroll wheel events specially,
if mouse_or_wdesc_frame did not find the frame.
-2022-03-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of stretch glyphs when hscrolled on PGTK
* pgtkterm.c (x_draw_stretch_glyph_string): Use correct box
dimensions.
-2022-03-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (pgtk_draw_fringe_bitmap): Synchronize logic with X.
-2022-03-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Synchronize NS fringe bitmap code with X
* nsterm.m (ns_draw_fringe_bitmap): Redefine bitmap if it does
not already exist.
-2022-03-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Synchronize Haiku fringe bitmap code with X
@@ -71188,7 +71188,7 @@
(haiku_define_fringe_bitmap):
(haiku_destroy_fringe_bitmap): Synchronize logic with X.
-2022-03-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge from origin/emacs-28
@@ -71196,7 +71196,7 @@
92e2d19fe7 One more fix of the BPA implementation
cd51d9c7ab Fix handling of brackets in BPA
-2022-03-03 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Teach Edebug about the special '&whole' syntax for compiler macros.
@@ -71207,14 +71207,14 @@
* test/lisp/emacs-lisp/cl-macs-tests.el
(cl-define-compiler-macro/edebug): New unit test.
-2022-03-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(with-demoted-errors): Fix bug#54225
* lisp/subr.el (with-demoted-errors): Adjust to argument order of
`macroexp-warn-and-return` changed in f262a6af3694b41828ff.
-2022-03-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix clobbering of match data in executable-set-magic
@@ -71222,7 +71222,7 @@
buffers may clobber match data, so save the match data first
(bug#54218).
-2022-03-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Allow splitting strings in Eshell expansions with "plain" strings
@@ -71238,7 +71238,7 @@
* doc/misc/eshell.texi (Dollars expansion): Update documentation.
-2022-03-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix parsing of indices in Eshell expansions
@@ -71272,7 +71272,7 @@
* doc/misc/eshell.texi (Dollars Expansion): Expand and reword
documentation for indexing and length expansions.
-2022-03-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix Eshell dollar interpolation inside of double-quotes
@@ -71297,7 +71297,7 @@
(esh-var-test/quoted-interp-lisp, esh-var-test/quoted-interp-cmd)
(esh-var-test/quoted-interp-temp-cmd): New tests.
-2022-03-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add a new macro to simplify parsing temporary Eshell command strings
@@ -71308,7 +71308,7 @@
* lisp/eshell/esh-cmd.el (eshell-with-temp-command): New macro.
(eshell-parse-command): Use it.
-2022-03-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Move Eshell variable interpolation tests to their own file
@@ -71332,7 +71332,7 @@
(esh-var-test/last-result-var2, esh-var-test/last-arg-var):
... to here.
-2022-03-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -71341,7 +71341,7 @@
# Conflicts:
# etc/NEWS
-2022-03-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Cache the backend value together with the project root
@@ -71350,42 +71350,42 @@
(project-root, project-files, project-ignores):
Update to access the new data structure.
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c: Fix commentary on GTK client side windows.
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif build without toolkit scroll bars
* src/xterm.c: Always include Xm.h on Motif.
-2022-03-02 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el: Bump the version.
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't calculate any frame for extension events
* src/xterm.c (handle_one_xevent): If event is not a core event,
don't try to calculate any from event.xany.window.
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `toolkit_position_hook' on PGTK
* src/pgtkterm.c (pgtk_toolkit_position): New function.
(pgtk_create_terminal): Set it as the toolkit position hook.
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu bar position reporting on Haiku as well
* src/haikuterm.c (haiku_toolkit_position): New function.
(haiku_create_terminal): Register new hook.
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reporting of imaginary key prefixes on toolkit tool and menu bars
@@ -71396,7 +71396,7 @@
* src/xterm.c (x_toolkit_position): New function.
(x_create_terminal): Register hook.
-2022-03-02 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
João Távora <joaotavora@gmail.com>
Prevent empty diagnostic tags vector hiding main fontification
@@ -71411,7 +71411,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/851
-2022-03-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -71419,46 +71419,46 @@
2c3d1b6bf4 Improve/correct documentation about Eshell variable expansion
9e257aecc9 Partially revert b03f74e0f2a578b1580e8b1c368665850ee7f808
-2022-03-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some bugs with multiple terminals on Haiku
* src/haikuterm.c (haiku_mouse_position): Only clear
`mouse_moved' for Haiku frames.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix persistent help text on disabled menu items
* oldXMenu/Activate.c (XMenuActivate): Always deactivate help
echo upon leaving a menu item.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/msdos.c (dos_rawgetc): Handle tab bar clicks correctly.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Dismiss help text when item becomes unactivated on oldXMenu
* oldXMenu/Activate.c (XMenuActivate): Dismiss help text when
leaving an item.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix odd scrolling bugs on LessTif
* src/xterm.c (handle_one_xevent): Give emulated button events
to Motif.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve behavior of Motif popup menus on XI2
* src/xmenu.c (create_and_show_popup_menu): Set input focus to
menu window.
-2022-03-01 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Revert previous merge-gnulib change
@@ -71466,14 +71466,14 @@
It shouldn’t be needed now that Gnulib has the change
2022-03-01T18:01:59Z!eggert@cs.ucla.edu.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add PropertyChangeMask to the standard event set
* src/xfns.c (x_window): Remove special Motif code.
* src/xterm.h (STANDARD_EVENT_SET): Add PropertyChangeMask.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crashes and other bugs on LessTif
@@ -71482,7 +71482,7 @@
* src/xfns.c (x_window): Add PropertyChangeMask which LessTif
doesn't do itself.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reporting of wheel events on top of GTK scroll bars
@@ -71495,11 +71495,11 @@
* src/xterm.c (handle_one_xevent): Drop all valuator change
events destined for scroll bars.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xwidget.h: Fix build with XI 2.4.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make precision scrolling on top of the tool bar work
@@ -71510,7 +71510,7 @@
(pixel-scroll-start-momentum): If window is a frame, use its
selected window.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid duplicate wheel and button events on non-toolkit scroll bars
@@ -71519,7 +71519,7 @@
(handle_one_xevent): Move some ifdefs around and handle input
extension button events on scroll bars.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix old X menu on builds with XI2
@@ -71532,7 +71532,7 @@
function.
(x_menu_show): Set translate function.
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable some code that interferes with menus on Lucid
@@ -71540,13 +71540,13 @@
(server_timestamp_predicate): Disable timestamp code on builds
using the Lucid menu bar widget.
-2022-03-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
6dbc3da205 Fix :tag for eol in tab-first-completion
-2022-03-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix C-g inside toolkit file dialogs with XI2
@@ -71555,7 +71555,7 @@
* src/xmenu.c (x_menu_wait_for_event): If data is non-nil, use
XPending.
-2022-03-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -71563,7 +71563,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-02-28 02:58:30 UTC.
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Intern server time property during terminal initialization
@@ -71573,7 +71573,7 @@
* src/xterm.h (struct x_display_info): New field
`Xatom_EMACS_SERVER_TIME_PROP'.
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif menu help text in submenus
@@ -71584,18 +71584,18 @@
(do_call): Pass instance to arm callback and use wv as user data
instead of call data.
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c: Explain frame resize synchronization.
-2022-02-28 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Work around merge-gnulib glitch from fresh checkout
* admin/merge-gnulib: In a fresh checkout, run gnulib-tool
twice, instead of merely running autogen.sh twice.
-2022-02-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
ecomplete: Try and avoid losing data
@@ -71603,39 +71603,39 @@
setup, so we don't risk overwriting it with a (mostly) empty one.
(ecomplete-save): Don't save an empty database.
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up input extension event handling code
* src/xterm.c (handle_one_xevent): Fix usages of event
structures of the wrong type.
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Add some missing dead keys.
-2022-02-28 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Clean up byte-compile-arglist-warn
* lisp/emacs-lisp/bytecomp.el (byte-compile-arglist-warn):
Remove unnecessary sort (only need min and max). Reduce mutation.
-2022-02-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix :color specification in flat-button boxes
* src/xfaces.c (realize_gui_face): Allow reliably specifying
:color in flat-button boxes (bug#54196).
-2022-02-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't throw errors while propertizing in sgml-mode
* lisp/textmodes/sgml-mode.el (sgml-syntax-propertize): Don't
throw an error when propertizing (bug#54195).
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Better fix for bug#13476
@@ -71645,7 +71645,7 @@
default colors are used for toolkit scroll bars, instead of
black and white.
-2022-02-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve treatment of toolkit scroll bars with the input extension
@@ -71654,7 +71654,7 @@
(handle_one_xevent): Make sure coordinates are correct for the
frame's window when handling wheel events.
-2022-02-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -71662,14 +71662,14 @@
9bce4b67f1 ; * lisp/help.el (with-help-window): Doc fix. (Bug#54170)
558b03a958 Add explicit '--no-heading' for ripgrep
-2022-02-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't save menu bar events that land on the menu bar itself
* src/xterm.c (handle_one_xevent): Ignore menu bar events which
land on the menu bar itself instead of a button.
-2022-02-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Treat scroll bar information consistently on Haiku
@@ -71677,7 +71677,7 @@
(EmacsScrollBar): Obtain scroll bar info on initialization.
(ButtonRegionFor): Use that information instead.
-2022-02-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Merge from gnulib
@@ -71686,18 +71686,18 @@
* lib/cdefs.h: Updated with admin/merge-gnulib. (This is in
preparation to adding the nanosleep module later.)
-2022-02-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't send help-echo on menu button arming not caused by motion events
* lwlib/lwlib-Xm.c (xm_arm_callback): Ignore arming if the arm
was not caused by an EnterNotify or MotionNotify event.
-2022-02-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Translate motion events on Motif.
-2022-02-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around some problems with Motif and the input extension
@@ -71705,25 +71705,25 @@
to the frame's outer window if there was an input extension
grab.
-2022-02-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate some more input extension events needed by Motif
* src/xterm.c (handle_one_xevent): Translate XI_Enter and
XI_Leave events when built with Motif.
-2022-02-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
a50f8dec09 Follow OpenSSH changes in Tramp
e86eae21a9 Document better how to reset attributes of faces for new f...
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* commands.texi (Misc Events): Update description of wheel events.
-2022-02-26 Manuel Uberti <manuel.uberti@inventati.org>
+2023-04-15 Manuel Uberti <manuel.uberti@inventati.org>
Add project-ignore-buffer-conditions
@@ -71732,11 +71732,11 @@
(project--read-project-buffer):
Use it (bug#54100).
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Fix translation of button events.
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Motif menu and menu bar dismissal on XI2
@@ -71749,14 +71749,14 @@
* src/xterm.c (handle_one_xevent): Translate XI_ButtonRelease
events into core events before dispatching them to Xt.
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore irrelevant button events on Haiku scroll bars
* src/haiku_support.cc (MouseDown): Ignore if there are too many
buttons pressed.
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes on event for removed scroll bar on Haiku
@@ -71773,14 +71773,14 @@
(haiku_read_socket): Adjust for changes in scroll bar event
structures.
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix reporting of horizontal scroll bar buttons on Haiku
* haikuterm.c (haiku_read_socket): Use correct values for scroll
bar buttons when the scroll bar is horizontal.
-2022-02-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve scroll bar button handling on Haiku
@@ -71802,17 +71802,17 @@
* src/haikuterm.c (haiku_read_socket): Handle
SCROLL_BAR_PART_EVENTs.
-2022-02-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
ded89ed3fa * lisp/net/tramp-sh.el (tramp-ssh-controlmaster-options): ...
-2022-02-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Set user time for xwidgets as well.
-2022-02-25 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Drop the visited file modtime check for remote xref hits
@@ -71820,14 +71820,14 @@
(xref--convert-hits, xref--collect-matches)
(xref--find-file-buffer): Use it (bug#54025).
-2022-02-25 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Robustify merge-gnulib a bit
* admin/merge-gnulib: Fail if autogen.sh fails.
Remove autom4te.cache before running gnulib-tool.
-2022-02-25 Bob Rogers <rogers@rgrjr.com>
+2023-04-15 Bob Rogers <rogers@rgrjr.com>
Add new file ietf-drums-date.el
@@ -71838,7 +71838,7 @@
* lisp/mail/ietf-drums.el (ietf-drums-parse-date): Use
ietf-drums-parse-date-string.
-2022-02-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve treatment of dropping mouse track state on Haiku
@@ -71846,7 +71846,7 @@
(haiku_read_socket): Use it to find the appropriate frame when
handling motion or button events.
-2022-02-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve tracking of modified regions on Haiku
@@ -71876,14 +71876,14 @@
(haiku_clear_under_internal_border): Mark appropriate region as
invalid before buffer flip.
-2022-02-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix calculation of scroll deltas when coalescing wheel events
* src/xterm.c (handle_one_xevent): Use accumulated values
instead of raw delta to determine scroll amounts.
-2022-02-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make interpolated scrolling work above non-selected windows
@@ -71892,20 +71892,20 @@
(pixel-scroll-precision): Pass originally selected window to the
interpolation function.
-2022-02-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
5c77aed2d6 Mention flyspell-prog-mode in flyspell-mode doc string
-2022-02-24 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix Eshell process tests to (hopefully) work on all platforms
* test/lisp/eshell/esh-proc-tests.el (esh-proc-test/kill-pipeline):
Fix test (bug#54136).
-2022-02-24 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
xref--find-file-buffer: Check modified-p and modtime
@@ -71913,21 +71913,21 @@
Check whether the buffer contents match what's on disk
(bug#54025).
-2022-02-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set user time when receiving any wheel events
* src/xterm.c (handle_one_xevent): Set user time if the mouse
wheel moved.
-2022-02-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix esh-proc-tests on MS-Windows
* test/lisp/eshell/esh-proc-tests.el (esh-proc-test/kill-pipeline)
(esh-proc-test/kill-background-process): Fix tests on MS-Windows.
-2022-02-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Make 't' in Buffer-menu be more defensive
@@ -71935,11 +71935,11 @@
the buffer holds a tags-table file before using it as such.
(Bug#54133)
-2022-02-24 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* admin/merge-gnulib: fix bare checkout (Bug#32452#65)
-2022-02-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Amend byte-run-strip-symbol-positions so that an unexec build builds
@@ -71956,7 +71956,7 @@
"stripping" of putative symbol positions from OPERAND, which is nil or a
number.
-2022-02-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix symlinks in tramp-sshfs.el (Bug#54130)
@@ -71969,7 +71969,7 @@
* test/lisp/net/tramp-tests.el (tramp-test18-file-attributes)
(tramp-test20-file-modes): Adapt tests.
-2022-02-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Check if WM support for NET_WM_USER_TIME_WINDOW changed during updates
@@ -71979,7 +71979,7 @@
* src/xterm.h (struct x_display_info): New field
`last_user_check_time'.
-2022-02-24 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't superfluously emit prompts when terminating processes in Eshell
@@ -71992,20 +71992,20 @@
(esh-proc-test/kill-pipeline-head)
(esh-proc-test/kill-background-process): New tests.
-2022-02-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
5942504391 Reword face-remap-add-relative manual entry
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set border colors through the toolkit
* src/xfns.c (x_set_border_pixel): Set colors through Xt to
avoid some problems.
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix auto-lower when the mouse moves onto a scrollbar on Haiku
@@ -72015,7 +72015,7 @@
* src/haikuterm.c (haiku_read_socket): Don't auto-lower if the
pointer left the view for a scroll bar.
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for _NET_WM_STATE_SHADED
@@ -72036,7 +72036,7 @@
(x_term_init): Intern new atom `shaded'.
* src/xterm.h: Update prototypes.
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Condition out things specific to some versions of the input extension
@@ -72049,21 +72049,21 @@
(struct xi_device_t): Make individual fields conditional on the
appropriate client-side input extension version.
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the MS-DOS port
* msdos/sedlibmk.inp:
* src/conf_post.h [MSDOS]: Update for recent gnulib.
-2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -Wanalyzer-null-dereference
* src/xdisp.c (normal_char_ascent_descent): Pacify GCC 11.2.1
20220127 (Red Hat 11.2.1-9) x86-64 -Wanalyzer-null-dereference.
-2022-02-23 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Fix auth-sources defcustom
@@ -72071,25 +72071,25 @@
in a plist, so inline both :host and :port. Also, give a valid
default value for the choice (bug#54127).
-2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port pre-commit hook to Git 2.35.0
* build-aux/git-hooks/pre-commit: Use LC_ALL=C grep -E instead of
sane_egrep (removed in Git 2.35.0).
-2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port to current Gnulib some more
* admin/merge-gnulib: Remove lib/stdio-read.c and lib/stdio-write.c,
as Emacs doesn’t need these new Gnulib files.
-2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from Gnulib by running admin/merge-gnulib
-2022-02-23 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port to current Gnulib
@@ -72097,7 +72097,7 @@
normally assumes Automake and now uses this Automake macro.
Problem reported by Lars Ingebrigtsen (Bug#32452#47).
-2022-02-23 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Create new unique windows with 'C-x t n' (bug#54038).
@@ -72112,14 +72112,14 @@
(tab-bar-duplicate-tab): Replace the value 'nil' with 'clone' for
'tab-bar-new-tab-choice'.
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Expand commentary in xterm.c
* src/xterm.c: Expand commentary to include sections on optional
features and toolkit support.
-2022-02-23 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to version 2.2.0
@@ -72157,7 +72157,7 @@
For a detailed change log, read:
<https://protesilaos.com/codelog/2022-02-23-modus-themes-2-2-0/>.
-2022-02-23 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Ignore 'eshell-broken-pipe' error in 'eshell-sentinel'
@@ -72167,25 +72167,25 @@
* lisp/eshell/esh-proc.el (eshell-sentinel): Use 'ignore-error'
instead of 'unwind-protect'.
-2022-02-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make face-remap-set-base work with a single face again
* lisp/face-remap.el (face-remap-set-base): Fix regression
introduced by cece37cf09de9 (bug#46973).
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_term_init): Catch some errors from defective X servers.
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve input extension version checks on GTK 3
* src/xterm.c (x_term_init): If newer versions of XInput 2 don't
work, then look for an older one.
-2022-02-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -72194,14 +72194,14 @@
3b5e29eaa3 tramp.texi texinfo 4.13 compatibility
5edb9572ec Explain "Tramp" spelling in its manual
-2022-02-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display corruption with background alpha set on unsupported display
* src/xfns.c (x_set_alpha_background): Make opaque if display
doesn't support the required features.
-2022-02-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(add-hook): Fix regression
@@ -72210,11 +72210,11 @@
(remove-hook): Don't modify the depth alist by side-effect since I'm
not completely sure it's safe.
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c: Expand commentary.
-2022-02-22 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Unbreak project switcher when inside *xref* buffer
@@ -72223,11 +72223,11 @@
(xref--show-xref-buffer, xref-show-definitions-buffer-at-bottom):
Use it (bug#53626).
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_term_init): Don't catch errors too many times.
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix X errors caused by GTK using newer versions of XI2 than Emacs
@@ -72235,14 +72235,14 @@
caused by Emacs requesting versions of XI2 older than 2.2 and
what GTK requested.
-2022-02-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Enable "Revert Buffer" if file has different writability
* lisp/menu-bar.el (menu-bar-file-menu): Enable "Revert Buffer" if
the file has different writability than the buffer (bug#17148).
-2022-02-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(add-hook, remove-hook): Fix leaks (bug#48666)
@@ -72250,7 +72250,7 @@
management so we only keep the info relevant to functions present on
the hook.
-2022-02-22 Andrea Rossetti <andrea.rossetti@gmail.com> (tiny change)
+2023-04-15 Andrea Rossetti <andrea.rossetti@gmail.com> (tiny change)
Improve ruler-mode dragging
@@ -72261,21 +72261,21 @@
* lisp/ruler-mode.el (ruler-mode-window-col): Fix dragging when
stepping outside the header line (bug#17788).
-2022-02-22 Jeff Norden <jeff@jnorden.com> (tiny change)
+2023-04-15 Jeff Norden <jeff@jnorden.com> (tiny change)
Make outline-blank-line into defcustom
* lisp/outline.el (outline-blank-line): Make into defcustom
(bug#54095).
-2022-02-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't signal an error on re-builder startup with rx syntax
* lisp/emacs-lisp/re-builder.el (reb-initialize-buffer): Make
startup with rx syntax not signal an error (bug#54107).
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build on glibc <2.10
@@ -72283,7 +72283,7 @@
malloc_info.
(syms_of_alloc): Likewise.
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK build with GLib <2.44
@@ -72293,7 +72293,7 @@
* src/gtkutil.c: Remove declaration of EmacsMenuBar class.
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve XInput2 version checking
@@ -72309,25 +72309,25 @@
* src/xterm.h (HAVE_XINPUT2_1, HAVE_XINPUT2_2, HAVE_XINPUT2_3)
(HAVE_XINPUT2_4): New definitions.
-2022-02-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/lisp/net/tramp-tests.el (tramp--test-check-files): Adapt test.
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix duplicate wheel events on XI2
* src/xterm.c (handle_one_xevent): Don't generate wheel events
on XI_ButtonPress.
-2022-02-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Always send wheel events on XI2
* src/xterm.c (handle_one_xevent): Send emulated button events
as wheel events when handling XI2 button events.
-2022-02-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -72337,7 +72337,7 @@
b7a651ba37 Update to Org 9.5.2-17-gea6b74
3a8c3f7abd ; Don't reference obsolete variables in edebug.el
-2022-02-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve momentum pixel scrolling on a non-selected window
@@ -72346,21 +72346,21 @@
(pixel-scroll-start-momentum): Don't select the window under
the event when calculating velocity or redisplaying.
-2022-02-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't generate multibyte keystroke events if there is no actual text
* src/xterm.c (handle_one_xevent): Don't generate
MULTIBYTE_CHAR_KEYSTROKE_EVENTs if nbytes is zero.
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add links to the vtable manual
* doc/lispref/modes.texi (Tabulated List Mode): Mention vtables.
* lisp/info-look.el (lambda): Link to vtables.
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the ELPA dependencies from test/Makefile.in
@@ -72374,32 +72374,32 @@
here, which keeps it contained to one test file. This also fixes
bug#53586, since the obsoletion of `body' came from web-server.el.
-2022-02-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't pass invalid keyboard modifiers to the event loop on Haiku
* src/haikuterm.c (haiku_read_socket): Ensure validity of extra
keyboard modifiers.
-2022-02-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/vc/diff-mode.el (diff--font-lock-prettify): Recognize mode changes
-2022-02-21 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/vc/diff-mode.el (diff--font-lock-prettify): bug#54034
Handle Git's output when deleting and creating empty files, as well as
when the diff is not shown because the file is considered as binary.
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve vtable :keymap handling
* lisp/emacs-lisp/vtable.el (vtable-map, vtable--make-keymap):
Don't alter keymaps passed in, and respect parent keymaps.
-2022-02-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Send SIGPIPE to external Eshell processes if their output target closes
@@ -72412,7 +72412,7 @@
* test/lisp/eshell/esh-proc-tests.el: New test.
-2022-02-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Ensure 'eshell-output-object' always returns nil for consistency
@@ -72424,7 +72424,7 @@
* lisp/eshell/esh-io.el (eshell-output-object): Always return nil.
-2022-02-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve docstrings for 'eshell-exec-lisp' and functions that call it
@@ -72433,7 +72433,7 @@
(eshell-funcall, eshell-applyn, eshell-funcalln, eshell-evaln):
Improve docstrings.
-2022-02-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Remove PROBLEMS section on double-buffering"
@@ -72444,7 +72444,7 @@
tell whether any of the versions where that problem happened
are still out in the wild.
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Special Isearch slightly
@@ -72453,14 +72453,14 @@
during isearch, but that information is quite a ways away at this
point, so it doesn't hurt to repeat that info.)
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove PROBLEMS section on double-buffering
* etc/PROBLEMS: Remove section on problems with double-buffering,
as apparently it's now no longer an issue (bug#30088).
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make 'ispell-change-dictionary' completion work better
@@ -72471,28 +72471,28 @@
(ispell-valid-dictionary-list): Use it to filter out non-installed
dictionaries.
-2022-02-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `next-buffer' order reflect command line file order
* lisp/startup.el (command-line-1): Make `next-buffer' order
reflect the command line file order (bug#21505).
-2022-02-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to fix bug#54051
* src/xterm.c (handle_one_xevent): Don't give obviously bogus
configure events to Xt.
-2022-02-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent Haiku display from being opened multiple times
* src/haikufns.c (Fx_open_connection): Return if display
connection already exists.
-2022-02-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent GTK from setting unreasonable size hints with large menu bars
@@ -72504,7 +72504,7 @@
(xg_update_menu_item): Use our own menu bar class on GTK 3.
* src/gtkutil.h (EmacsMenuBar): New class.
-2022-02-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement left-right separators for dialog boxes on Haiku
@@ -72517,34 +72517,34 @@
was seen and make sure the user can always quit a dialog if no
enabled items exist.
-2022-02-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Bump xref.el version.
* lisp/progmodes/xref.el: Bump version to 1.4.0.
-2022-02-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Public-ize xref-show-xrefs
* lisp/progmodes/xref.el (xref-show-xrefs):
New function (wrapper for an older, private one, bug#42967).
-2022-02-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect `extra-keyboard-modifiers' when handling XI2 keyboard input
* src/xterm.c (handle_one_xevent): Add extra modifiers to
XI2 keyboard state.
-2022-02-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Public-ize xref-current-item
* lisp/progmodes/xref.el (xref--current-item):
Rename to 'xref-current-item' (bug#53956). Update all references.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further fixes for eww-open-url on Tramp files
@@ -72553,24 +72553,24 @@
* lisp/url/url-queue.el (url-queue-start-retrieve): Allow
non-local files here, too.
-2022-02-20 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/mouse.el (context-menu-entry): Remove help-buffer-under-preparation.
(bug#53910)
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a compilation warning in cus-edit-tests.el
-2022-02-20 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(loadhist_initialize): Fix regression test failure
* src/lread.c (loadhist_initialize): Adjust assertion for the nil case.
(readevalloop): Signal an error for non-string `sourcename`.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust doc-tests-documentation/autoloaded-macro
@@ -72578,27 +72578,27 @@
(doc-tests-documentation/autoloaded-macro): Adjust test -- rx is
loaded in nativecomp Emacsen when the tests are run, apparently.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify Minibuffer Edit example
* doc/emacs/mini.texi (Minibuffer Edit): Say how to disable SPC
and ? completion (bug#36745).
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add instructions on disabling SPC completion to Minibuffer Edit
* doc/emacs/mini.texi (Minibuffer Edit): Say how to disable SPC
and ? completion (bug#36745).
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warning introduced by previous shr.el change
* lisp/net/shr.el (url-file): Fix compilation warning.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make eww work better on Tramp HTML
@@ -72611,7 +72611,7 @@
* lisp/url/url-file.el (url-allow-non-local-files): New user option
(bug#40425).
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `g' work in eww buffers displaying Tramp files
@@ -72619,41 +72619,41 @@
(eww-open-file): From here.
(eww-reload): Make reloading work in Tramp files.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make string-pixel-width about 40% faster
* lisp/emacs-lisp/subr-x.el (string-pixel-width): Speed up.
-2022-02-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* doc/misc/tramp.texi (Customizing Methods): Add tramp-nspawn.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Quote files that start with - in dired
* lisp/dired-aux.el (dired-shell-stuff-it): Add ./ to file names
that start with - (bug#10458).
-2022-02-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp.el (tramp-read-passwd): Adapt for empty user names.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation warning in previous sendmail.el change
* lisp/mail/sendmail.el (mm-long-lines-p): Fix compilation warning.
-2022-02-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that `mail-send' breaks too-long lines
* lisp/mail/sendmail.el (mail-send): Ensure that we fold too-long
lines when using `sendmail-user-agent' (bug#53412).
-2022-02-20 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Add more bookmark types
@@ -72661,20 +72661,20 @@
* lisp/man.el (Man-bookmark-jump): Mark the bookmark type
(bug#54030).
-2022-02-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix font panel on NS
* src/nsterm.m ([EmacsView changeFont:]): Don't use emacs_event,
instead placing events directly into the keyboard buffer.
-2022-02-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikumenu.c (haiku_dialog_show): Set `popup_activated_p'.
Author:
-2022-02-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle GUI input while inside popup dialog on Haiku
@@ -72688,14 +72688,14 @@
* src/haikuterm.c (haiku_term_init): Set interrupt input mode to
t.
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix typo in last change
* src/xterm.c (handle_one_xevent): Use `xi_done_keysym' label
when ignoring modifier keys from XI2 input.
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore modifier keys early when handling X key press events
@@ -72706,7 +72706,7 @@
* src/xterm.h (struct x_display_info): New field `modmap'.
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Free XI2 devices in x_delete_display instead
@@ -72715,11 +72715,11 @@
more.
(x_delete_terminal): Stop freeing XI2 device data.
-2022-02-19 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Revert "; * rcirc.el (rcirc-print): Prefer sleep-for over sit-for"
-2022-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(specpdl_unrewind): Fix corner case
@@ -72730,7 +72730,7 @@
(default_toplevel_binding, lexbound_p, Fbacktrace__locals): Simplify.
(do_one_unbind, mark_specpdl): Handle SPECPDL_NOP.
-2022-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(macroexp-warn-and-return): Fix bug#53618
@@ -72748,7 +72748,7 @@
* lisp/emacs-lisp/byte-run.el (defmacro, defun):
* lisp/emacs-lisp/bindat.el (bindat--type): Adjust accordingly.
-2022-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(loadhist_initialize): Minor refactoring
@@ -72757,7 +72757,7 @@
* src/lread.c (loadhist_initialize): New function.
(Fload, readevalloop): Use it.
-2022-02-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/vc/diff-mode.el (diff--font-lock-prettify): Fix mishaps
@@ -72768,7 +72768,7 @@
re-font-locked all at once, and to still recognize it after
`diff-reverse-direction`.
-2022-02-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp password prompts for sudo-like methods
@@ -72790,32 +72790,32 @@
(tramp-null-hop): New defconst.
(tramp-get-remote-null-device): Use it.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Some vtable.texi copy edits
* doc/misc/vtable.texi (Making A Table): Mention the accessors.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention vtable accessor functions
* doc/misc/vtable.texi (Making A Table): Mention the accessors.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the vtable documentation on argument types
* doc/misc/vtable.texi (Making A Table): Say what the argument
types are.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix a vtable example
* doc/misc/vtable.texi (Introduction): Fix example.
-2022-02-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve vtable documentation
@@ -72828,7 +72828,7 @@
* doc/misc/Makefile.in (INFO_COMMON): Add 'vtable'.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add column sorting order indicators to vtable
@@ -72836,14 +72836,14 @@
(vtable--insert-header-line): Use it to display sorting order
indicators.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make string-pixel-width slightly speedier
* lisp/emacs-lisp/subr-x.el (string-pixel-width): Speed up
string-pixel-width in the zero-length string case.
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid consing extra string when processing GTK native input
@@ -72856,7 +72856,7 @@
* src/termhooks.h (enum event_kind): Document meaning of Qt as
coding system in a multibyte keystroke event's string argument.
-2022-02-19 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Fix types of some align.el defcustoms
@@ -72867,7 +72867,7 @@
should be functions, but the default value was t. Change it to
#'always (bug#54048).
-2022-02-19 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Fix :match function for the key widget
@@ -72875,7 +72875,7 @@
because the :match function is called with the widget and the value as
arguments (bug#54049).
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some more hangs when parenting child frames around on Haiku
@@ -72883,7 +72883,7 @@
(FrameMoved): Don't sync when a recursive lock might be able to
be held.
-2022-02-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new library to format variable-pitch tables
@@ -72891,7 +72891,7 @@
* lisp/emacs-lisp/vtable.el: New library.
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve portability of alpha channel visual detection
@@ -72903,7 +72903,7 @@
* src/xterm.c (x_term_init): Initialize Xrender before
calling select_visual.
-2022-02-19 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Fix symbols with position appearing in the output of `compile-defun'
@@ -72930,7 +72930,7 @@
(sxhash_obj): Add handling for symbols with position, substituting their bare
symbols when symbols with position are enabled.
-2022-02-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix character compositions on the mode line
@@ -72939,7 +72939,7 @@
determine whether to compose them from that string's multibyteness,
not from that of the current buffer. (Bug#53729)
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't ignore events from XI2 slave devices anymore
@@ -72951,32 +72951,32 @@
(handle_one_xevent): Don't ignore XI devices that are not master
pointers or keyboards.
-2022-02-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
57c112cfe5 ; * doc/emacs/files.texi (Comparing Files): Fix a reference.
bdeac2d5af ; Fix a typo in filesets.el's doc string
-2022-02-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Always decode GTK input method text as utf-8-unix
* src/gtkutil.c (xg_im_context_commit): Use `utf-8-unix' as
coding system for text.
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Be less strict about which emulated motion events to ignore
* src/xterm.c (handle_one_xevent): Don't test XI2 version before
dropping PointerEmulated motion events.
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (haiku_create_frame): Error if font wasn't found.
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Utilize new string decoding feature in GTK native input
@@ -72984,7 +72984,7 @@
manually using g_utf8_to_ucs4 but pass unibyte string as the
keystroke event arg instead.
-2022-02-18 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Handle multiple directory separators in gnus-search results
@@ -72996,21 +72996,21 @@
the name. Use `file-name-split' and joining instead of regexp
munging.
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix background stipple with `alpha_background'
* src/xterm.c (x_fill_rectangle): Fix treatment of foreground
and background colors when there is a stipple.
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a crash on some versions of GTK
* src/emacsgtkfixed.c (XSetWMNormalHints): Fix potential
arithmetic fault.
-2022-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -73018,7 +73018,7 @@
9fd396e * lisp/progmodes/subword.el (superword-mode): Doc fix. (Bug#...
e303cb1 Fix indexing of module functions that return complex types.
-2022-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -73028,21 +73028,21 @@
38f6ea1 Import texi source file for transient manual
df34929 Update to Org 9.5.2-15-gc5ceb6
-2022-02-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
# Conflicts:
# lisp/startup.el
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix blurry text on multiple scale monitor setups
* src/pgtkterm.c (pgtk_copy_bits): Preserve window scale factor
on temporary surface. (bug#54040)
-2022-02-18 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Make sure nnselect search query is properly parsed
@@ -73050,7 +73050,7 @@
should not be interpreted as raw, but whatever the underlying search
engine expects.
-2022-02-18 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Fix gnus searching of native servers
@@ -73058,7 +73058,7 @@
(gnus-group-read-ephemeral-search-group): Find the real server even
when the group is native.
-2022-02-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make treatment of `alpha-background' more consistent
@@ -73066,7 +73066,7 @@
(x_draw_glyph_string_background): Ignore alpha_background on all
cursors.
-2022-02-18 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Fix gnus-search-run-search methods
@@ -73074,28 +73074,28 @@
implementations were setting the current buffer and then not setting
it back.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make stipple backgrounds respect `alpha-background'
* src/xterm.c (x_fill_rectangle): Respect `alpha-background'
when drawing stipple.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mis-parsing of certain malformed XBM files
* src/image.c (xbm_scan): Return error on a character literal
that doesn't start with "\x".
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Parse XBM images which use character escapes for hex literals
* src/image.c (xbm_scan): Implement parsing of hex escapes in
character literals.
-2022-02-17 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Fix gnus-search notmuch thread searches
@@ -73105,7 +73105,7 @@
(gnus-search-indexed-search-command): Use list appending rather than
backtick construction, that was more confusing than it was helpful.
-2022-02-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/mouse.el (context-menu-entry): Don't create menu for Help commands.
@@ -73116,14 +73116,14 @@
So `help-buffer-under-preparation' is added to filter out such calls.
(bug#53910)
-2022-02-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Resurrect innocent joke in byte-opt.el
* lisp/emacs-lisp/byte-opt.el: Resurrect innocent joke in a
comment.
-2022-02-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix files-tests on MS-Windows
@@ -73135,7 +73135,7 @@
(files-tests-revert-buffer-with-fine-grain): No need to disable
file locking anymore.
-2022-02-17 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix or remove outdated comments
@@ -73145,14 +73145,14 @@
* lisp/emacs-lisp/byte-opt.el: Remove car. Keep pig.
(byte-compile-log-lap-1): Remove obsolete and irrelevant comment.
-2022-02-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/face-remap.el: Fix bug#53294
* lisp/face-remap.el (face-remap--copy-face): New function.
(face-attrs--make-indirect-safe): Use it.
-2022-02-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Speed up exiting "emacs -Q"
@@ -73161,14 +73161,14 @@
of slowing down "C-x C-c" from "emacs -Q" due to the need to load
seq.el.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when displaying XBM images on a 32-bit visual
* src/image.c (Create_Pixmap_From_Bitmap_Data): Fix use of wrong
(default) depth.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement XBM images on Haiku
@@ -73176,20 +73176,20 @@
failures on Haiku.
(Create_Pixmap_From_Bitmap_Data): Implement for Haiku.
-2022-02-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a NEWS entry for the bookmark changes (bug#54030)
* lisp/bookmark.el (bookmark-bmenu-mode): Make the type shorter.
-2022-02-17 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Don't prefix bookmark name with VC backend name
* lisp/vc/vc-dir.el (vc-dir-bookmark-make-record): Remove prefix from
bookmark name.
-2022-02-17 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Extend bookmark menu with with handler type column
@@ -73204,7 +73204,7 @@
* lisp/vc/vc-dir.el (vc-dir-bookmark-jump): Set bookmark handler type.
* lisp/woman.el (woman-bookmark-jump): Set bookmark handler type.
-2022-02-17 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to version 2.1.0
@@ -73297,7 +73297,7 @@
For a detailed change log, read:
<https://protesilaos.com/codelog/2022-02-17-modus-themes-2-1-0/>.
-2022-02-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Have setopt check types
@@ -73306,50 +73306,50 @@
Customize saving values, too.
(setopt): Use it.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix warning during dumping on MS-DOS
* lisp/cus-start.el (standard): Filter out
`process-error-pause-time' on MS-DOS.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent menu items leak if x-pre-popup-menu-hook signals
* src/menu.c (x_popup_menu_1): Make sure menu items are
discarded if the pre popup menu hook signals.
-2022-02-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix problem with "~" in Tramp
* lisp/net/tramp.el (tramp-handle-substitute-in-file-name):
Remove special handling of "~" in localname. (Bug#53053)
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_init_master_valuators): Clear `pending_enter_reset'.
-2022-02-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve handling of XI2 wheel movement
* src/xterm.c (handle_one_xevent): Process movement in all
directions and send it as a single event.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix SIGFPE on some fonts when calculating their average width on Haiku
* src/haiku_font_support.cc (estimate_font_ascii): Avoid divison
by zero.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/emacsgtkfixed.c (XSetWMSizeHints): Improve fix for bug#8919.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't auto-lower when moving onto a menu bar on Haiku
@@ -73362,14 +73362,14 @@
mouse exits the frame view onto the menu bar and handle
MENU_BAR_LEFT events.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle `unspecified' values of symbolic font values on Haiku
* src/haikufont.c (haikufont_spec_or_entity_to_pattern): Handle
`unspecified' values of symbolic values.
-2022-02-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix problem with file-modification-time in tramp-sshfs.el
@@ -73388,7 +73388,7 @@
(tramp--test-hpux-p, tramp--test-macos-p): Protect against errors.
(tramp--test-check-files): Discriminate also tramp-sshfs.el.
-2022-02-16 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Fix computation of outline heading level for non-git diff
@@ -73396,7 +73396,7 @@
using diff-hunk-header-re (bug#51809).
(diff--font-lock-prettify): Disable prettify in non-git diff.
-2022-02-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add support for Tai Tham script
@@ -73411,14 +73411,14 @@
* etc/HELLO: Add Northern Thai greeting.
* etc/NEWS: Announce addition of Northern Thai language environment.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recent change in xwidget.c
* src/xwidget.c (xwidget_init_view): Don't assume ttip_widget
is NULL if tooltips have not been initialized.
-2022-02-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up count_size_as_multibyte
@@ -73429,7 +73429,7 @@
outside the loop, which makes it much faster. Standard compilers
will even vectorise it if asked to (-O2 in Clang, -O3 in GCC).
-2022-02-16 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Avoid emacs-module-tests failure on macOS
@@ -73438,7 +73438,7 @@
the macOS dynamic library suffix (.dylib) is longer than on other
platforms.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame focus handling with native input
@@ -73447,7 +73447,7 @@
* src/xfns.c (Fx_internal_focus_input_context): Focus all focus
frames from all displays.
-2022-02-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Resolve xwidget scrolling mysteries
@@ -73455,11 +73455,11 @@
(handle_one_xevent): Always increment values array when handling
motion events.
-2022-02-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/NEWS: Improve the PGTK entry.
-2022-02-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Decode keyboard input as latin-1 whenever appropriate
@@ -73472,7 +73472,7 @@
* src/xterm.c (handle_one_xevent): Set coding property on text
to latin-1 if it was obtained with XLookupString.
-2022-02-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't decode text within XIM callbacks or handle_one_xevent
@@ -73495,7 +73495,7 @@
* src/xterm.c (handle_one_xevent): Utilize new meaning of
MULTIBYTE_CHAR_KEYSTROKE_EVENT.
-2022-02-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some Tramp cleanup
@@ -73508,33 +73508,33 @@
(tramp-handle-abbreviate-file-name): Use it.
(tramp-read-passwd): Show literal passphrase prompt.
-2022-02-15 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't attempt to connect to a remote server during 'abbreviate-file-name'
* lisp/net/tramp.el (tramp-handle-abbreviate-file-name): Only use the
"home-directory" when a connection has been established.
-2022-02-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow savehist-additional-variables to truncate lists
* lisp/savehist.el (savehist-save): Allow truncating values (bug#30943).
-2022-02-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust files-test-file-size-human-readable test
* test/lisp/files-tests.el (files-test-file-size-human-readable):
Fix test after recent change.
-2022-02-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make autoarg obsolete
* lisp/obsolete/autoarg.el: Make obsolete.
-2022-02-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix parsing of some semibold font styles on Haiku
@@ -73542,14 +73542,14 @@
"Semibold" to mean SemiBold as well. Reported by
augiedoggie <augiedoggie@users.noreply.github.com>.
-2022-02-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable auto-lowering and raising on Haiku when a popup is active
* src/haikuterm.c (haiku_new_focus_frame):
(haiku_read_socket): Don't raise or lower if popup is activated.
-2022-02-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Replace use of `DefaultRootWindow' with our recorded root window
@@ -73560,17 +73560,17 @@
* src/xterm.c (x_iconify_frame): Use dpyinfo->root_window
instead of DefaultRootWindow.
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve the help message for the pgtk configure option
* configure.ac: Describe the purpose of PGTK better.
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (init_xterm): Use more reliable method to disable XI2.
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Better handle devices being enabled on XI2
@@ -73578,7 +73578,7 @@
if the device couldn't be found, instead regenerating the device
hierarchy to see if it was enabled.
-2022-02-14 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Fix docstring and init of Gnus search -remove-prefix options
@@ -73587,7 +73587,7 @@
use `expand-file-name' to get the correct default value, not `concat'
and (getenv "HOME").
-2022-02-14 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Fix manual documentation of Gnus tool bars
@@ -73596,14 +73596,14 @@
exist. Other options in this section have been renamed from "toolbar"
to "tool-bar".
-2022-02-14 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Be more explicit about the meaning of "remove prefix" in Gnus search
* doc/misc/gnus.texi (Search Engines): It's easy to get confused about
what we're removing and why.
-2022-02-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve recent addition to documentation of face remapping
@@ -73612,7 +73612,7 @@
(Face Remapping): Improve wording of a recent addition; add
cross-reference to "Basic Faces".
-2022-02-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve format of values returned by 'file-size-human-readable'
@@ -73620,13 +73620,13 @@
fractional part of the size only if there's just one digit before
the decimal point.
-2022-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in Face Remapping
* doc/lispref/display.texi (Face Remapping): Fix typo.
-2022-02-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add command to contact maintainer
@@ -73635,7 +73635,7 @@
(package-browse-url): Use package--query-desc.
(package-contact-maintainer): Add command.
-2022-02-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow for packages to be installed directly from VCS
@@ -73669,19 +73669,19 @@
dependencies but before unsigned packages.
(package-menu-filter-by-status): Allow filtering by source packages.
-2022-02-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Implement vc-clone for git
* vc-git.el (vc-git-clone): Add Git implementation
-2022-02-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add new command to clone a repository
* vc.el (vc-clone): Add command
-2022-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't signal errors in abbrev-table-p
@@ -73689,34 +73689,34 @@
* src/lread.c (oblookup): Signal `wrong-type-argument' instead of
`error' if it turns out that we're not really in an obarray (bug#53988).
-2022-02-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Improve stability of message-hide-headers
* message.el (message-hide-headers): Use a pointer instead of tracking
the "end-of-headers" point manually (bug#53991).
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Premultiply background color by alpha for images
* src/xterm.c (x_query_frame_background_color): Premultiply
colors as X wants them when built without Cairo.
-2022-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous Face Remapping doc change
* doc/lispref/display.texi (Face Remapping): Fix typo.
-2022-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Note caveat about remapping basic faces
* doc/lispref/display.texi (Face Remapping): Note caveat about
basic faces (bug#53636).
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve Haiku selection handling
@@ -73730,7 +73730,7 @@
(Fhaiku_selection_put): Remove a great deal of ad hoc code now
handled by the regular selection machinery.
-2022-02-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a mechanism for querying before executing a command
@@ -73743,14 +73743,14 @@
(command-execute--query): New function.
(command-query): New function.
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle allocation failures of fringe bitmaps on Haiku
* src/haikuterm.c (haiku_define_fringe_bitmap): Handle
allocation failures.
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/TODO: Update some entires related to macOS and NS.
@@ -73759,7 +73759,7 @@
platforms, and some mouse gestures have been implemented on NS
and X.
-2022-02-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ensure bad values don't leak into scroll valuators after DeviceChange
@@ -73771,7 +73771,7 @@
* src/xterm.h (struct xi_scroll_valuator_t): New field
`pending_enter_reset'.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Restore valuator values after receiving a DeviceChanged event
@@ -73780,7 +73780,7 @@
(handle_one_xevent): Find current valuator info and use that to
populate scroll valuators after a device changed.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve efficency of handling DeviceChanged events
@@ -73788,7 +73788,7 @@
was changed on DeviceChanged and only do hierarchy recalculation
upon HierarchyChanged events.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to reduce empty areas on GTK when a frame is being resized
@@ -73796,7 +73796,7 @@
(x_clear_rectangle, x_draw_image_glyph_string):
(x_clear_area): Don't use picture if frame background is opaque.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix wide fringe bitmap processing on Haiku
@@ -73809,7 +73809,7 @@
* src/haikuterm.c (haiku_define_fringe_bitmap): Pass entire
short array to BBitmap_import_fringe_bitmap instead.
-2022-02-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp's process-file implementations
@@ -73822,13 +73822,13 @@
* test/lisp/net/tramp-tests.el (tramp-test28-process-file)
(tramp--test-check-files, tramp-test47-unload): Extend tests.
-2022-02-13 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/faces.el (read-face-name-sample-text): Add defconst (bug#53960).
(read-face-name): Use it instead of hard-coded string.
-2022-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new macro `setopt'
@@ -73845,25 +73845,25 @@
* lisp/cus-edit.el (setopt): New macro.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuterm.c (haiku_read_socket): Implement auto-lower.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only get rid of IC focus if focus is really gone
* src/xterm.c (x_focus_changed): Only unset IC focus if the
focus state is empty.
-2022-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the 'C-k' binding in ido-mode
* lisp/ido.el (ido-file-completion-map): Remove the `C-k' binding,
because it's too dangerous and probably not very useful (bug#44556).
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes from illegal locale coding systems
@@ -73871,7 +73871,7 @@
* src/xterm.c (handle_one_xevent): Don't pass invalid coding
systems to `setup_coding_system'.
-2022-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-u M-x count-words' also give totals
@@ -73880,21 +73880,21 @@
(count-words--buffer-format, count-words--format): Rename and
don't message, but return the string.
-2022-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Note meaning on nil HIST in Fread_from_minibuffer
* src/minibuf.c (Fread_from_minibuffer): Note the meaning of a nil
HIST parameter (bug#20063).
-2022-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mouse clicking in read-face-name
* lisp/faces.el (read-face-name): Put the data in the right
position so that clicking on completions work (bug#53960).
-2022-02-13 Bob Rogers <rogers@rgrjr.com>
+2023-04-15 Bob Rogers <rogers@rgrjr.com>
Fix ietf-drums-remove-whitespace unmatched " and (
@@ -73907,24 +73907,24 @@
+ Test unterminated quote and comment for
ietf-drums-remove-whitespace and ietf-drums-remove-comments (bug#53965).
-2022-02-13 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/eval.c (specpdl_unrewind): Remove empty statement.
-2022-02-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid a compilation warning in eval.c
* src/eval.c (specpdl_unrewind): Avoid a compilation warning.
-2022-02-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix integer overflow with 32-bit visual
* src/xfns.c (x_set_border_pixel):
(x_set_border_color): Use `unsigned long' for border color.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around tooltip bug on new versions of WebKitGTK
@@ -73933,7 +73933,7 @@
disable tooltips on WebKitGTK 2.34 or later.
(syms_of_xwidget): Make dummy string.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop quering for Xinerama inside x_get_monitor_attributes
@@ -73943,25 +73943,25 @@
* src/xterm.h (struct x_display_info): New field
`xinerama_supported_p'.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkfns.c (Fx_create_frame): Set `was_invisible' flag.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use better GC for visible bell on colormapped visuals
* src/xterm.c (XTflash): Use normal_gc if the visual is not
TrueColor.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the Haiku port
* src/haiku_support.h [__cplusplus]: Define `specpdl_ref' type
on C++ since that code cannot include lisp.h.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change in xterm.c
@@ -73970,11 +73970,11 @@
(handle_one_xevent): If f is NULL and the configure event is for
any's edit widget, use that instead.
-2022-02-12 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/xterm.c (x_update_opaque_region): Avoid crash at startup in Lucid build
-2022-02-12 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Rewrite thread context switch code (bug#48990)
@@ -74004,7 +74004,7 @@
* test/Makefile.in (test_template): Add a + as suggested by make:
"warning: jobserver unavailable: using -j1. Add '+' to parent make rule".
-2022-02-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up `=` on fixnums in bytecode
@@ -74012,7 +74012,7 @@
* src/bytecode.c (exec_byte_code): Use cheaper operation for Beqlsign.
-2022-02-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Optionally allow point to enter composed character sequences
@@ -74034,7 +74034,7 @@
* etc/NEWS: Announce the new feature.
-2022-02-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Count bytes, not records, in specpdl_ref
@@ -74048,7 +74048,7 @@
(specpdl_ref_add, specpdl_ref_to_ptr, SPECPDL_INDEX):
Count offset in bytes rather than in records.
-2022-02-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Turn specpdl_ref into a type of its own
@@ -74066,7 +74066,7 @@
(specpdl_ref_eq, specpdl_ref_lt)
(specpdl_ref_valid_p, make_invalid_specpdl_ref): Use new wrappers.
-2022-02-12 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Replace ptrdiff_t with new specpdl_ref type for specpdl references
@@ -74205,7 +74205,7 @@
Replace ptrdiff_t with specpdl_ref for referencing specpdl and use the
corresponding functions instead of direct arithmetic.
-2022-02-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix entry and exit events with XI2 grabs on X toolkit menus
@@ -74217,28 +74217,28 @@
* src/xterm.c (handle_one_xevent): Use x_any_window_to_frame to
find exit event frame if a popup menu is active.
-2022-02-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clean up mode-line-* faces handling
* src/xfaces.c (realize_basic_faces):
* src/dispextern.h (enum face_id): Remove MODE_LINE_ID.
-2022-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add documentation on how to delete files from Trash
* doc/emacs/files.texi (Misc File Ops): Note trick to make `D'
work in Trash directories (bug#44059).
-2022-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve interaction between track-mouse and edebug
* lisp/emacs-lisp/edebug.el (edebug--display-1): Work around
`track-mouse' oddity (bug#675).
-2022-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix off-by-one file size formatting in ls-lisp
@@ -74246,14 +74246,14 @@
human-readable file sizes can be 7 characters wide (e.g.,
"1016.1k") (bug#53937).
-2022-02-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Cross-link message-expand-name-standard-ui-relevant doc strings
* lisp/gnus/message.el (message-expand-name-standard-ui): Mention
the other relevant variables in the doc string (bug#50667).
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement visual bell on Haiku like on X
@@ -74270,28 +74270,28 @@
`BView_InvertRect'.
(haiku_beep): Use `haiku_flash' instead.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compatibility with ancient versions of libXi
* src/xmenu.c (popup_get_selection): Don't rely on xev->display
being non-NULL.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Be less strict about which PointerEmulated button events to ignore
* src/xterm.c (handle_one_xevent): Ignore all PointerEmulated
button events.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Never set opaque region without an alpha channel
* src/xfns.c (x_set_alpha_background): Don't modify opaque
region if the visual has no alpha channel.
-2022-02-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Modernise byte-compilation chapters in manual
@@ -74300,7 +74300,7 @@
(Compilation Functions, Disassembly): Example output for lexbind
bytecode.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the DJGPP port
@@ -74312,7 +74312,7 @@
to not confuse sed*.inp.
* src/conf_post.h [MSDOS]: Define some things gnulib wants.
-2022-02-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tolerate tilde in remote file names when needed
@@ -74326,7 +74326,7 @@
Advice `shell-mode' with them.
(tramp-methods) <sshfs>: Add "-t -t" to `tramp-login-args'.
-2022-02-11 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Allow searching of nnselect (search) groups
@@ -74338,11 +74338,11 @@
(gnus-search-make-spec): Queries from nnselect should always be raw.
* lisp/gnus/nnselect.el (gnus-search): Silence the byte-compiler.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/PROBLEMS: Document some limitations of Xwayland and PGTK.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't make cursors affected by background alpha on PGTK
@@ -74350,7 +74350,7 @@
* src/pgtkterm.c (x_clear_glyph_string_rect): Make behavior on
PGTK consistent with X.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set _NET_WM_OPAQUE_REGION on non-GTK3 toolkits when using 32 bit visual
@@ -74362,7 +74362,7 @@
(handle_one_xevent): Call `x_update_opaque_region' on configure
events.
-2022-02-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix fallout from switch to 32-bit visuals
@@ -74370,7 +74370,7 @@
hold any pixel value.
* src/xterm.h (x_make_truecolor_pixel): Simplify.
-2022-02-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve reliability of selection ownership on Haiku
@@ -74383,14 +74383,14 @@
(BClipboard_owns_clipboard, BClipboard_owns_primary)
(BClipboard_owns_secondary): Adjust tests accordingly.
-2022-02-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable nearest-color allocation on DirectColor visuals
* src/xterm.c (x_alloc_nearest_color_1): Disable such allocation
on DirectColor. The method we use can't possibly work there.
-2022-02-10 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Silence macOS vfork deprecation warnings
@@ -74403,11 +74403,11 @@
* src/callproc.c (emacs_spawn):
* src/sysdep.c (sys_subshell): Use it.
-2022-02-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/mouse.el (context-menu-map): Select only unselected window (bug#53910)
-2022-02-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el (tab-line-format): Use mode-line-window-selected-p.
@@ -74415,21 +74415,21 @@
'tab-line-tab-name-format-default'. Now add the same to another
place that handles the face 'tab-line-tab-current' (bug#53629).
-2022-02-10 Corwin Brust <corwin@bru.st> (tiny change)
+2023-04-15 Corwin Brust <corwin@bru.st> (tiny change)
Autoload package-installed-p
* lisp/emacs-lisp/package.el (package-installed-p): Add autoload
cookie. (Bug#53885)
-2022-02-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
# Conflicts:
# lisp/startup.el
-2022-02-10 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Note current buffer and restore it in c-force-redisplay.
@@ -74440,14 +74440,14 @@
(c-fontify-new-found-type): Give the current buffer as argument to
run-with-timer.
-2022-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Restore command-line--load-script messaging
* lisp/startup.el (command-line--load-script): Restore previous
non-messaging behaviour.
-2022-02-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve handling of file modes in Tramp
@@ -74461,7 +74461,7 @@
* lisp/net/tramp.el (tramp-check-cached-permissions): Check also
for ?s access type. Check whether remote uid/gid are unknown.
-2022-02-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't signal a backtrace on empty --script files
@@ -74473,7 +74473,7 @@
* lisp/international/mule.el (load-with-code-conversion): Accept
an eval function.
-2022-02-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable TrueColor allocation optimizations on all visuals
@@ -74481,14 +74481,14 @@
32-bit TrueColor visuals that legitimately don't have an alpha
mask.
-2022-02-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly premultiply background color of fringe bitmaps
* src/xterm.c (x_draw_fringe_bitmap): Premultiply alphas by
alpha_background.
-2022-02-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly allocate colors in xftfont
@@ -74500,7 +74500,7 @@
(xftfont_done_face):
(xftfont_draw): Free colors that were allocated.
-2022-02-10 Dima Kogan <dima@secretsauce.net>
+2023-04-15 Dima Kogan <dima@secretsauce.net>
Make comint-word actually check comint-file-name-quote-list
@@ -74509,7 +74509,7 @@
to the characters in that list. This patch actually checks the
contents of comint-file-name-quote-list (bug#53911).
-2022-02-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow customization of the user's eln-cache directory
@@ -74526,14 +74526,14 @@
* etc/NEWS: Announce 'startup-redirect-eln-cache'.
-2022-02-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
69e82968d7 Fix integer arithmetic miss-compilation (bug#53451)
31af9bca99 Mark flymake as compatible with emacs-26.1
-2022-02-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix disconnect errors on some X servers
@@ -74542,21 +74542,21 @@
style if the operation being performed is not a stiple
operation.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fill in missing pixel after PolyLine on scroll bars
* src/xterm.c (x_scroll_bar_expose): Draw bottom right corner of
scroll bar manually.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikugui.h [_cplusplus]: Remove extern "C" declarations.
These were left over from an old implementation strategy
abandoned long before the port was installed.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve reliability of hotplugging window managers
@@ -74564,28 +74564,28 @@
window if the window manager supports something different from
what it did the first time the frame was made visible.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore tooltip frames when setting PGTK scrollbar foreground
* src/pgtkfns.c (pgtk_set_scroll_bar_foreground): Ignore tip
frames. (bug#53900)
-2022-02-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tilde expansion is not possible for Tramp sshfs method
* lisp/net/tramp.el (tramp-handle-expand-file-name):
Tilde expansion is not possible. (Bug#53847)
-2022-02-09 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
show-paren: Don't show context again after C-g-ing it away.
* lisp/paren.el (show-paren--last-pos): New variable.
(show-paren-function): Don't show context again after C-g-ing it away.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of `register' declarations in X11 related files
@@ -74593,14 +74593,14 @@
* src/xterm.c (x_set_offset): Remove `register' from `xoff' and
`yoff'.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warning on GTK
* src/xterm.c (x_make_frame_visible): Make some fields that are
set but never used conditioned out on GTK.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for _NET_WM_USER_TIME_WINDOW
@@ -74613,20 +74613,20 @@
`_NET_WM_USER_TIME_WINDOW'.
(struct x_output): New field `user_time_window'.
-2022-02-09 Antoine Levitt <antoine.levitt@gmail.com>
+2023-04-15 Antoine Levitt <antoine.levitt@gmail.com>
Improve the set-fill-column prompt
* lisp/simple.el (set-fill-column): Improve the prompt (bug#53874).
-2022-02-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make calendar-exit actually respect the KILL parameter
* lisp/calendar/calendar.el (calendar-exit): Really kill off all
the buffers (if requested) (bug#53870).
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement _NET_WM_USER_TIME protocol
@@ -74640,7 +74640,7 @@
`Xatom_net_wm_user_time'.
(x_display_set_last_user_time): Implement in xterm.c instead.
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Explictly specify whether or not to respect alpha-background on Cairo
@@ -74651,27 +74651,27 @@
`respect_alpha_background'. All callers changed.
* src/xterm.h: Update protoypes.
-2022-02-09 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Mention `overlay' show-paren-context-when-offscreen value in NEWS
* etc/NEWS: Mention `overlay' value of
show-paren-context-when-offscreen.
-2022-02-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
82e74e4559 flymake: Ensure compatibility with older Emacsen
-2022-02-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make haikufont_list_family actually work
* haikufont.c (haikufont_list_family): Intern returned font
families.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `list_family' for the haikufont driver
@@ -74681,7 +74681,7 @@
* src/haikufont.c (haikufont_list_family): New function.
(haikufont_driver): Add `haikufont_list_family'.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve selection of fonts available from `mouse-set-font'
@@ -74696,21 +74696,21 @@
available on the system.
(mouse-set-font): Use `mouse-select-font' to display font menu.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure the cursor can't move on top of a tooltip on Haiku
* src/haikuterm.c (haiku_read_socket): Work around leave
notification events not being sent on tooltip frames.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix creation of tooltip frames with a stippled background
* src/xfns.c (x_create_tip_frame): Init faces after creating the
drawable, since that's needed for loading stipple files.
-2022-02-08 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Allow showing show-paren context in an overlay
@@ -74724,14 +74724,14 @@
There's no interference if `show-paren-context-when-offscreen' is
overlay or child-frame.
-2022-02-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (perform-replace): Allow using isearch in recursive-edit.
Let-bind isearch-filter-predicate to the default value before calling
recursive-edit to allow using isearch in a recursive edit (bug#53758).
-2022-02-08 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve make-frame-on-display initial values
@@ -74742,14 +74742,14 @@
* lisp/menu-bar.el (menu-bar-file-menu): Use 'display server' rather
than 'display' to avoid monitor<->display confusion.
-2022-02-08 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve thing-at-point-url-at-point docstring
* lisp/thingatpt.el (thing-at-point-url-at-point): Correct description
of BOUNDS argument.
-2022-02-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Respect customization nature of `connection-local-*' user options
@@ -74757,7 +74757,7 @@
(connection-local-set-profile-variables): Set user options via
`customize-set-variable'.
-2022-02-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix processes on remote default-directory with special characters
@@ -74766,18 +74766,18 @@
* test/lisp/net/tramp-tests.el (tramp--test-check-files):
Test also remote `default-directory' for processes. (Bug#53846)
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (map_event): Fix last change.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document some problems found during testing on various X servers
* etc/PROBLEMS (General X problems): Document some problems
found during testing on various X servers.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve robustness of override-redirect on Haiku
@@ -74787,14 +74787,14 @@
and restore from the saved pre-override redirect state fields if
appropriate.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame offset reporting on PGTK
* src/pgtkterm.c (configure_event): Handle changes in window
position. (bug#52697)
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement frame resize synchronization on GTK 3
@@ -74805,56 +74805,56 @@
* src/xterm.h (struct x_output): New variable
`xg_sync_end_pending_p'.
-2022-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Extend find-lisp-object-file-name
* lisp/help-fns.el (find-lisp-object-file-name): Add optional
parameter to always look in the DOC file (bug#17685).
-2022-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document pcase-lambda
* doc/lispref/control.texi (Destructuring with pcase Patterns):
Document pcase-lambda (bug#20268).
-2022-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some standard-output/help-buffer confusion in describe-function-1
* lisp/help-fns.el (describe-function-1): We're outputting to
standard-output, so deconfuse slightly.
-2022-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix describe-function-1 test failure from previous change
* lisp/help-fns.el (describe-function-1): Fix test failure from
previous patch.
-2022-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Minor fix to how describe-function-1 displays symbols with spaces
* lisp/help-fns.el (describe-function-1): Ensure that symbols like
`bar\ ' aren't rendered incorrectly (bug#23130).
-2022-02-08 martin rudalics <rudalics@gmx.at>
+2023-04-15 martin rudalics <rudalics@gmx.at>
Improve handling of frame-inherited-parameters
* lisp/frame.el (make-frame): Improve handling of
frame-inherited-parameters (bug#24651).
-2022-02-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make exit from text-scale-adjust less confusing
* lisp/face-remap.el (text-scale-adjust): Clear the prompt after
exiting (bug#25978).
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clear mouse highlight when mouse moves outside edit widget
@@ -74862,7 +74862,7 @@
leaving the edit widget. Otherwise, it stays around on the
toolbar after the mouse is moved onto the menu bar.
-2022-02-08 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
nnselect.el: Speed up group info updating
@@ -74870,7 +74870,7 @@
other tricks to speed things up.
(nnselect-request-group-scan): Make sure the artlist is uncompressed.
-2022-02-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try harder to preserve cursor when mapping tooltip frames on Haiku
@@ -74878,18 +74878,18 @@
`error'.
(Fx_show_tip): Define cursors on both views.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu bar not opening after popup menu is dismissed on Lucid
* lwlib/xlwmenu.c (XlwMenuDestroy): Only set submenu_destroyed
if menu bar widget.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkfns.c (Fx_create_frame): Realize frame widgets. (bug#53861)
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't allow tooltips to be transient for override redirect windows
@@ -74900,7 +74900,7 @@
* src/xterm.h (struct x_display_info): New atom
`Xatom_wm_transient_for'.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure `update_wm_hints' finds the WMShell
@@ -74915,18 +74915,18 @@
(ApplicationShell) and the edit widget (EmacsFrame) to
`widget_update_wm_size_hints'. (bug#53839)
-2022-02-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
minibuffer.el: Try and fix bug#53053
* lisp/minibuffer.el (completion--sifn-requote): Special case for when
`upos` is at the very end.
-2022-02-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/xref.el (xref--marker-ring): Fix typo
-2022-02-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make connection-local variables user options
@@ -74936,7 +74936,7 @@
* doc/lispref/variables.texi (Connection Local Variables):
* etc/NEWS: Document this.
-2022-02-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
lisp-mnt, checkdoc: Reduce run-time dependencies
@@ -74946,7 +74946,7 @@
* lisp/emacs-lisp/checkdoc.el (dired): Don't load at run-time.
(checkdoc-dired): Add corresponding `declare-function`.
-2022-02-07 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Pin lazily read bytecode (bug#53809)
@@ -74955,18 +74955,18 @@
Bug reported by Gregor Zattler.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve contrast of `custom-button' in the leuven-dark theme
* etc/themes/leuven-dark-theme.el (custom-button): Improve
contrast of custom-button foreground.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lwlib/xlwmenu.c (pop_up_menu): Fix cast.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correct off-by-one errors with frame resizing on Haiku
@@ -74975,7 +74975,7 @@
(BWindow_resize): Fix off-by-one errors in calls to
`BWindow::ResizeTo'.
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make menus work better on X toolkit builds with XInput 2
@@ -74987,28 +74987,28 @@
* src/xterm.c (xi_device_from_id): Export function.
* src/xterm.h: Update prototypes.
-2022-02-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Sanitize ls switches in ange-ftp (bug#53360)
* lisp/net/ange-ftp.el (ls-lisp--sanitize-switches): Declare.
(ange-ftp-ls): Sanitize LSARGS. (Bug#53360)
-2022-02-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve indentation of some shell script forms
* lisp/progmodes/sh-script.el (sh-smie--default-backward-token):
Don't skip past things like "true;then" (bug#53817).
-2022-02-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Really fix extended frame synchronization
* src/xterm.c (XTframe_up_to_date): Make sure the extended
counter ends up even.
-2022-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the Scroll key binding on Windows
@@ -75018,7 +75018,7 @@
* lisp/scroll-lock.el (scroll-lock-mode): The event is `scroll' on
Windows, not `Scroll_Lock'.
-2022-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the eintr.html target match what's on the web
@@ -75026,14 +75026,14 @@
name match the URL at
https://www.gnu.org/software/emacs/manual/eintr.html (bug#38817).
-2022-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Give a better error in locate-default-make-command-line
* lisp/locate.el (locate-default-make-command-line): Error out
more nicely.
-2022-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the ediff-diff-options documentation
@@ -75041,7 +75041,7 @@
* doc/misc/ediff.texi (Patch and Diff Programs): Note that setting
this variable directly is probably the wrong thing to do (bug#6512).
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Respect `x-cursor-fore-pixel' on Haiku
@@ -75049,7 +75049,7 @@
`x-cursor-fore-pixel'.
(syms_of_haikufns): Declare variable `x-cursor-fore-pixel'.
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up more code from PGTK port
@@ -75074,18 +75074,18 @@
(syms_of_pgtkterm): Clean up doc strings and remove meaningless
variables.
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* doc/emacs/xresources.texi (Table of Resources): Improve wording.
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correct implementation of extended frame synchronization
* src/xterm.c (handle_one_xevent): Use value provided in the
extended synchronization message as the current counter value.
-2022-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dired-directory and dired-subdir-alist buffer-local
@@ -75098,14 +75098,14 @@
* lisp/find-lisp.el (find-lisp-find-dired-internal):
* lisp/find-dired.el (find-dired): Adjust usage.
-2022-02-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Fix eval-tests/backtrace-in-batch-mode test
* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Fix the
zero-arg case.
-2022-02-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make async connect_network_socket failures use Qfailed
@@ -75113,13 +75113,13 @@
Qfailed instead of using the error symbol (since this is what's
defined for the status) (bug#53814).
-2022-02-06 Bob Rogers <rogers-emacs@rgrjr.homedns.org>
+2023-04-15 Bob Rogers <rogers-emacs@rgrjr.homedns.org>
Remove outdated comments from ietf-drums.el
* lisp/mail/ietf-drums.el: Remove outdated comments (bug#53811).
-2022-02-06 Ioannis Kappas <ioannis.kappas@gmail.com> (tiny change)
+2023-04-15 Ioannis Kappas <ioannis.kappas@gmail.com> (tiny change)
ansi-color: don't get stuck on \e
@@ -75133,21 +75133,21 @@
Code amended (and test code written) by <miha@kamnitnik.top>. Code by
Ioannis Kappas is small enough to be
-2022-02-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(debug-early-backtrace): Tweak the non-evald output
* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Make the
non-evald output more like what is used in `debug.el`.
-2022-02-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(debug-early-backtrace): Tweak the non-evald output
* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Make the
non-evald output more like what is used in `debug.el`.
-2022-02-06 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Use mode-line-window-selected-p in tab-line-tab-name-format-default.
@@ -75155,7 +75155,7 @@
Use the recently added function 'mode-line-window-selected-p'
for the face 'tab-line-tab-current' (bug#53629).
-2022-02-06 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-new-tab-choice): Add const 'window'. Update doc.
@@ -75163,7 +75163,7 @@
'window-atom' from the old window. Move split-window/delete-window
inside ignore-window-parameters (bug#53662).
-2022-02-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt em-tramp-tests.el
@@ -75172,7 +75172,7 @@
(em-tramp-test/su-login, em-tramp-test/sudo-basic)
(em-tramp-test/sudo-user): Adapt tests.
-2022-02-06 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Avoid deprecation warning in NS-specific code
@@ -75180,7 +75180,7 @@
CTGetCoreTextVersion is obsolete and its use elicits a warning
in macOS 11.6; use NSProcessInfo instead.
-2022-02-06 Wang Chunye <chunywan@xilinx.com> (tiny change)
+2023-04-15 Wang Chunye <chunywan@xilinx.com> (tiny change)
optimization: constand folding for read-kbd-macro
@@ -75189,14 +75189,14 @@
it takes ~20ms to load cl-lib
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ensure bar cursors are always visible on Haiku
* src/haikuterm.c (haiku_draw_window_cursor): Adjust bar cursor
colors like X.
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the GTK 2 build
@@ -75204,7 +75204,7 @@
function without GTK 3.
* src/xfns.c (select_visual): Avoid 32-bit visuals on GTK 2.
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable extended frame synchronization by default
@@ -75213,7 +75213,7 @@
* src/xfns.c (Fx_create_frame): Set synchronization protocol
according to `synchronizeResize'.
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for EWMH extended frame synchronization
@@ -75228,7 +75228,7 @@
(struct x_output): New fields for extended counter tracking.
(FRAME_X_EXTENDED_COUNTER): New macro.
-2022-02-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix infloop in 'redisplay_window' when buffer is narrowed
@@ -75236,7 +75236,7 @@
the accessible portion of the buffer when passing it to
'window_start_acceptable_p'. (Bug#14582)
-2022-02-06 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Display show-paren-context-when-offscreen in child frame
@@ -75253,25 +75253,25 @@
(show-paren--delete-context-child-frame): New function.
(show-paren--show-context-in-child-frame): New function.
-2022-02-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make usage of su and sudo consistent in eshell (bug#53783)
* lisp/eshell/em-tramp.el (eshell/su, eshell/sudo):
Use `tramp-default-host' instead of "localhost".
-2022-02-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
821c240075 Fix ietf-drums-get-comment doc string
638247baa4 Fix typo in display.texi
-2022-02-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lwlib/xlwmenu.c (pop_up_menu): Work around motion problems on XI2.
-2022-02-05 Bob Rogers <rogers@rgrjr.com>
+2023-04-15 Bob Rogers <rogers@rgrjr.com>
Add ietf-drums tests, fix parse-address decoding
@@ -75280,7 +75280,7 @@
* lisp/mail/ietf-drums.el: (ietf-drums-parse-address): Bug fix:
Require rfc2047 when needed (bug#53811).
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow disabling frame resize synchronization
@@ -75290,7 +75290,7 @@
* src/xterm.c (x_term_init): Don't enable XSync if the
X resource `synchronizeResize' is off or false.
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up lots of #ifdef'd out code in PGTK files
@@ -75311,7 +75311,7 @@
* src/pgtkmenu.c (show_help_event): Remove ifdef'd out code and
reword comment.
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle window state changes on PGTK
@@ -75319,7 +75319,7 @@
and iconification status according to the new window state.
(bug#53793)
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Minor changes to xsync support
@@ -75331,14 +75331,14 @@
_NET_WM_SYNC_REQUEST unless the display supports that.
(x_free_frame_resources): Test basic counter against None.
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the elp-instrument-package doc string
* lisp/emacs-lisp/elp.el (elp-instrument-package): Note the effect
of loading further files (bug#13252).
-2022-02-05 Mauro Aranda <maurooaranda@gmail.com>
+2023-04-15 Mauro Aranda <maurooaranda@gmail.com>
Fix reverting the default face to standard/themed state in GUIs
@@ -75351,7 +75351,7 @@
of the default face, since that doesn't give enough information to
reset all attributes, like foreground, family, etc (bug#14635).
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option 'find-library-include-other-files'
@@ -75360,21 +75360,21 @@
(read-library-name): Use it.
(find-library-include-other-files): New user option.
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how eshell/cd works when cd-ing to ".." from "/"
* lisp/eshell/em-dirs.el (eshell/cd): Make "cd .." from "/" less
confusing (bug#16861).
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a :distant-foreground to the lazy-highlight face
* lisp/isearch.el (lazy-highlight): Add a :distant-foreground
colour so that the text is always legible (bug#16969).
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function mode-line-window-selected-p
@@ -75382,14 +75382,14 @@
* lisp/bindings.el (mode-line-window-selected-p): New function
from martin rudalics <rudalics@gmx.at>.
-2022-02-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp to changed unload behavior (bug#53632)
* test/lisp/net/tramp-tests.el (tramp-test47-unload): Check also
for autoloaded macros. Respect `tramp-autoload' function property.
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for basic syncing with the window manager on resize
@@ -75418,11 +75418,11 @@
(struct x_output): New fields for counter status.
(FRAME_X_BASIC_COUNTER): New macro.
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/pixel-scroll.el: Update commentary.
-2022-02-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'current-column' in the presence of display strings
@@ -75431,11 +75431,11 @@
value returned by 'current-column' when display strings are
present between BOL and point. (Bug#53795)
-2022-02-05 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/emacs-lisp/debug-early.el: Improve the documentation
-2022-02-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Remove superfluous `font-lock-add-keywords' calls in Tramp
@@ -75446,7 +75446,7 @@
(with-tramp-dbus-get-all-properties): Do not call
`font-lock-add-keywords' for macros, it isn't needed anymore.
-2022-02-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp to changed unload behavior (bug#53632)
@@ -75458,21 +75458,21 @@
(tramp-register-archive-file-name-handler):
Add `tramp-autoload' function property.
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix yank-media utf-16 detection
* lisp/yank-media.el (yank-media--utf-16-p): Factor out into its
own function for easier testing and fix the code.
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the selected-window doc string
* src/window.c (Fselected_window): Add some pointers to other
functions in this area.
-2022-02-05 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Ensure that the CAR of 'eshell-last-async-procs' always points to a process
@@ -75485,28 +75485,28 @@
* test/lisp/eshell/eshell-tests.el (eshell-test/pipe-headproc): New test.
-2022-02-05 Brendan O'Dea <bod@debian.org> (tiny change)
+2023-04-15 Brendan O'Dea <bod@debian.org> (tiny change)
Remove kerning escapes in woman mode
* lisp/woman.el (woman-decode-region): Remove kerning escapes
(bug#53770).
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the Archive file names tramp documentation
* doc/misc/tramp.texi (Archive file names): Explicitly say how to
open an archive with Tramp (bug#25076).
-2022-02-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix yank-media-types--format decoding
* lisp/yank-media.el (yank-media-types--format): Check that we
really have some nuls.
-2022-02-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Finish up cursor color merging on Haiku
@@ -75515,14 +75515,14 @@
(haiku_draw_stretch_glyph_string):
(haiku_merge_cursor_foreground): Use merged cursor colors.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change to ftcrfont.c
* src/ftcrfont.c (ftcrfont_draw): Remove relic `face' variable
and use s->face instead.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement face cursor color merging on Haiku
@@ -75532,7 +75532,7 @@
* src/haikuterm.c (haiku_merge_cursor_foreground): New function.
* src/haikuterm.h: Update prototypes.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set WM_TRANSIENT_FOR on tooltip frames
@@ -75542,7 +75542,7 @@
* src/xfns.c (Fx_show_tip): Set WM_TRANSIENT_FOR to the window
underneath the tooltip.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement _NET_WM_PING protocol
@@ -75554,7 +75554,7 @@
* src/xterm.h (struct x_display_info): New field
`Xatom_net_wm_ping'.
-2022-02-04 Vladimir Panteleev <git@cy.md>
+2023-04-15 Vladimir Panteleev <git@cy.md>
Update the MULTIPLE property with conversion outcomes
@@ -75566,7 +75566,7 @@
* src/xselect.c (x_handle_selection_request): Do it.
-2022-02-04 Vladimir Panteleev <git@cy.md>
+2023-04-15 Vladimir Panteleev <git@cy.md>
Do not delete the MULTIPLE property after reading it
@@ -75585,7 +75585,7 @@
make sense for MULTIPLE).
(x_handle_selection_request): Enable the flag.
-2022-02-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(with-demoted-errors): Warn on missing `format` arg
@@ -75616,7 +75616,7 @@
* lisp/autorevert.el (auto-revert-notify-handler):
Pass `format` arg to `with-demoted-errors`.
-2022-02-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
python.el: Silence left over warning in last commit
@@ -75624,7 +75624,7 @@
(python-shell-calculate-process-environment): Declare
tramp-remote-process-environment before using it.
-2022-02-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
python.el: Try and better split the Tramp code
@@ -75663,21 +75663,21 @@
(python-shell-with-environment-2, python-shell-with-environment-3):
Use them.
-2022-02-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp tests backward compatibility
* test/lisp/net/tramp-tests.el (tramp-test39-detect-external-change):
Improve backward compatibility.
-2022-02-04 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Have `null' and `not' explicit in LIMPLE so we inline them
* lisp/emacs-lisp/comp.el (comp-limplify-lap-inst): Generate explicit
`eq' call in LIMPLE for LAP opcode 'not'.
-2022-02-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix infloop in redisplay_window due to fix of bug#14582
@@ -75687,7 +75687,7 @@
the window's force_start flag is set -- this fixes infloop in
redisplay_window in that case.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove misleading "in current buffer" message from auto-raise-mode
@@ -75696,7 +75696,7 @@
frame-local, but declaring it global doesn't hurt since
`frame-parameter' is a gv.
-2022-02-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in two tests
@@ -75704,18 +75704,18 @@
* test/src/buffer-tests.el (buffer-tests--make-test-name): Silence
byte-compiler by defining defuns also at run time.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement auto-raise on Haiku
* src/haikuterm.c (haiku_read_socket): Implement auto-raising
of frames that have that parameter set.
-2022-02-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp-gvfs.el (tramp-gvfs-send-command): Fix problem with locale.
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bit rot in the color allocation code
@@ -75723,20 +75723,20 @@
version of the code that would try to allocate a "compromise
delta".
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xwidget.c (xwidget_button): Always let button events through.
Filtering out emulated events is done in handle_one_xevent, so
all this accomplishes is to filter out legitimate button events.
-2022-02-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
0591aa6cd3 Revert an erroneous change in tramp-cache.el
-2022-02-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix toggling `x-gtk-use-native-input'.
@@ -75747,7 +75747,7 @@
* src/xfns.c (Fx_internal_focus_input_context): New parameter
`focus'.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make Emacs build with some other XLib implementations
@@ -75764,11 +75764,11 @@
* src/xterm.c (x_find_modifier_meanings): Handle NULL values of
various fields.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xfns.c (Fx_internal_focus_input_context): Fix typo.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `x-gtk-use-native-input' take effect immediately
@@ -75778,21 +75778,21 @@
* src/xfns.c (Fx_internal_focus_input_context): New function.
(syms_of_xfns): Define new subr.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to fix input method flicker on GTK builds
* src/xterm.c (x_focus_changed): Only focus GTK context if
native input is on. (bug#53698)
-2022-02-03 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Improve compression of article lists in gnus/nnselect
* lisp/gnus/nnselect.el (nnselect-compress-artlist): Allow compressed list.
nnselect-uncompress-artlist): Properly loop over rsv values.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve image depth handling
@@ -75809,25 +75809,25 @@
(gs_load): Use dpyinfo->n_planes instead of
DefaultDepthOfScreen.
-2022-02-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the bookmark-default-handler doc string
* lisp/bookmark.el (bookmark-default-handler): Document the
`buffer' property (bug#20845).
-2022-02-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove tarball instructions from gnus-faq.texi
-2022-02-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make sort-numeric-fields resilient towards blank lines
* lisp/sort.el (sort-numeric-fields): Don't signal an error on
blank lines (bug#31800).
-2022-02-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Use 'require' to load eshell-tests-helpers
@@ -75838,7 +75838,7 @@
* test/lisp/eshell/eshell-tests-helpers.el (eshell-history-file-name):
Define this here so individual test files don't have to.
-2022-02-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
When executing an Eshell pipeline, send input to the first process
@@ -75887,7 +75887,7 @@
* test/lisp/eshell/eshell-tests.el (eshell-test/pipe-headproc-stdin):
New test.
-2022-02-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Ensure that tailproc is set for the last process in an Eshell pipeline
@@ -75902,7 +75902,7 @@
* test/lisp/eshell/eshell-tests.el (eshell-test/pipe-tailproc): New
test.
-2022-02-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow ensuring that a window's starting point is never invisible
@@ -75912,14 +75912,14 @@
don't accept window-start position that is in invisible text or is
covered by a "replacing" 'display' property. (Bug#14582)
-2022-02-03 Thomas Fitzsimmons <fitzsim@fitzsim.org>
+2023-04-15 Thomas Fitzsimmons <fitzsim@fitzsim.org>
soap-client: Add minimum supported Emacs version
* lisp/net/soap-client.el: Add Emacs 24.1 to Package-Requires.
Bump version to 3.2.1.
-2022-02-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Implement file modification check in Tramp
@@ -75929,14 +75929,14 @@
* test/lisp/net/tramp-tests.el (tramp-test39-detect-external-change):
New test.
-2022-02-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't use `string-replace` in soap-client (bug#53744)
* lisp/net/soap-client.el (soap-decode-xs-complex-type):
Cease using `string-replace` since it requires Emacs 28.
-2022-02-03 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't use `string-search` in soap-client (bug#53744)
@@ -75945,7 +75945,7 @@
Emacs versions older than 28, it cannot use `string-search`;
revert to `string-match`.
-2022-02-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "Buffers->Frames" submenu in daemon sessions
@@ -75955,11 +75955,11 @@
* src/terminal.c (init_initial_terminal): Add comment about using
the initial-terminal's name in menu-bar.el.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufont.c (haikufont_draw): Allocate string buffer on stack.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop creating cairo contexts in haiku_begin_cr_clip
@@ -75977,7 +75977,7 @@
of creating a new one.
* src/haikuterm.h (FRAME_CR_CONTEXT): New macro.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Obtain draw lock outside haiku_start_clip
@@ -75985,17 +75985,17 @@
(haiku_end_clip): Stop obtaining the draw lock.
(haiku_draw_glyph_string): Set draw lock here instead.
-2022-02-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
ab2f275422 Improve documentation of 'emacs-version'
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuterm.c (haiku_draw_text_decoration): Don't lock for draws.
-2022-02-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify box display code on Haiku
@@ -76008,43 +76008,43 @@
(haiku_draw_glyph_string): Fix calls to haiku_draw_string_box
for new parameters.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of text decorations with defaulted foreground on Haiku
* src/haikuterm.c (haiku_draw_text_decoration): Remove parameter
`dcol' and use face->foreground instead. All callers changed.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix background daemon on Haiku
* src/emacs.c (DAEMON_MUST_EXEC): Define when using the Haiku
application kit.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent the initial frame from showing up in the frame menu
* lisp/menu-bar.el (menu-bar-update-buffers): Ignore initial
frame when generating frame list. (bug#53740)
-2022-02-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New theme leuven-dark (Bug#53032)
* etc/themes/leuven-dark-theme.el: New file, written by
Fabrice Niessen and Thibault Polge.
-2022-02-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* test/lisp/cedet/semantic/bovine/gcc-tests.el (ert-x): Require.
-2022-02-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust test to adjusted code
-2022-02-02 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
New file lisp/emacs-lisp/debug-early.el for backtraces in early bootstrap
@@ -76061,7 +76061,7 @@
(syms_of_eval): New DEFSYM for Qdebug_early. Initialise Vdebugger to
Qdebug_early rather than Qnil.
-2022-02-02 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (query-replace-read-from): Use default for empty input.
@@ -76069,14 +76069,14 @@
Use the default in non-regexp prompt and return it for empty input.
https://lists.gnu.org/archive/html/emacs-devel/2022-02/msg00044.html
-2022-02-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the describe-key doc string
* lisp/help.el (describe-key): Say something about prefix keys
(bug#33320).
-2022-02-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add some indexing for "compiler macro"
@@ -76084,27 +76084,27 @@
where compiler macros are defined.
(Declare Form): Add a concept index.
-2022-02-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark vt-control and vc100-led obsolete since Emacs 29.1
Move vt-control and vt100-led to obsolete (bug#37562)
-2022-02-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix decoding error in ietf-drums-parse-address
* lisp/mail/ietf-drums.el (ietf-drums-parse-address): Don't try to
decode the name if there is no name (bug#53716).
-2022-02-02 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Fix bug with M-x compile-defun in a defconst/defvar
* lisp/emacs-lisp/bytecomp.el (compile-defun): Have symbols-with-pos-enabled
bound to non-nil when the eval takes place.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve correctness of generated xwidget events
@@ -76117,25 +76117,25 @@
(xw_notify_virtual_downwards_until): New parameters for crossing
mode. All callers changed.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Send button events before setting xwidget passive grab
* src/xwidget.c (xwidget_button_1): Send button event before
any grab processing.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/nsselect.m (ns_get_foreign_selection): Fix GCC warning.
-2022-02-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make behaviour of `mouse-autoselect-window' consistent with X on NS
* src/nsterm.m ([EmacsView mouseMoved:]): Ignore if
`selected_window' is a minibuffer window.
-2022-02-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -76144,7 +76144,7 @@
# Conflicts:
# etc/NEWS
-2022-02-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve behaviour of `mouse-autoselect-window' on Haiku
@@ -76152,21 +76152,21 @@
the selected window is a minibuffer window or a popup is
activated.
-2022-02-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of vertical window dividers on Haiku
* src/haikuterm.c (haiku_draw_window_divider): Make drawing
consistent with X.
-2022-02-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't use XRender to fill rectangles unless an alpha channel exists
* src/xterm.c (x_clear_area): Don't use XRender unless
`alpha_bits' is set.
-2022-02-01 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (query-replace-read-from-default): New variable.
@@ -76181,7 +76181,7 @@
https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg01909.html
-2022-02-01 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el: Support non-buffer tabs in some tab face functions.
@@ -76190,7 +76190,7 @@
try to get the buffer from the property 'buffer'.
https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg01923.html
-2022-02-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Improve 'maybe_defer_native_compilation'
@@ -76198,11 +76198,11 @@
function name in Vcomp_deferred_pending_h if pending for deferred
compilation.
-2022-02-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/startup.el (startup--require-comp-safely): Fix typo in a92c6191b0
-2022-02-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Speed up calls to C primitives
@@ -76210,11 +76210,11 @@
calls to finite-arity or n-adic SUBRs), and the error cases last,
instead of doing it the other way around. Simplify.
-2022-02-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (pgtk_draw_rectangle): Fix trivial typo. (bug#53677)
-2022-02-01 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
Remove extra \= from obsoletion message
@@ -76223,7 +76223,7 @@
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload)
(eieio-defclass-internal): Likewise.
-2022-02-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Rename `comp--loadable' into `comp--compilable'
@@ -76233,21 +76233,21 @@
* src/comp.c (syms_of_comp): Update.
(maybe_defer_native_compilation): Likewise.
-2022-02-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix `startup--require-comp-safely' (bug#53675)
* lisp/startup.el (startup--require-comp-safely): Remove unnecessary
check.
-2022-02-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
31ef751f94 Clarify documentation of a "face's font"
29bdedf12f Bind Qdebugger to Qdebug in signal_or_quit.
-2022-02-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up Haiku display structures
@@ -76259,7 +76259,7 @@
(struct haiku_output): Get rid of C_* preprocessor defines,
since these files are no longer included in any way by C++ files.
-2022-02-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -76267,7 +76267,7 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2022-01-27 20:16:15 UTC.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display images with a mask correctly when `alpha-background' is set
@@ -76276,14 +76276,14 @@
(x_draw_image_glyph_string): Respect `alpha-background' when
generating background pixmap.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only apply last change to the clipboard
* lisp/select.el (gui--selection-value-internal): Only return
nil if we own the clipboard.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid extraneous selection querying if we own the selection
@@ -76291,7 +76291,7 @@
`gui-backend-selection-owner-p' on window systems where it is
reliable.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make fringe bitmaps respect alpha-background
@@ -76299,14 +76299,14 @@
on non-overlay fringe bitmaps.
* src/xterm.h (struct x_display_info): New field `alpha_mask'.
-2022-01-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix nnregistry byte compilation warning
* lisp/gnus/nnregistry.el (nnregistry-server-opened)
(nnregistry-open-server): Fix byte compilation warning.
-2022-01-31 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(byte-compile-eval): Adjust to changes in `load-history`
@@ -76325,14 +76325,14 @@
(wisent-with-context):
* lisp/emacs-lisp/comp.el (comp-op-case): Silence compiler warning.
-2022-01-31 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Enlarge max-specpdl-size for generation of files in .../admin/grammars
* admin/grammars/Makefile.in: Add a --eval clause to set max-specpdl-size to
5000 (previously 2500) for these targets.
-2022-01-31 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Don't remove dummy.group from gnus-newsrc-alist on Gnus save
@@ -76342,7 +76342,7 @@
function was removing dummy.group from the global value of
`gnus-newsrc-alist' on save; we only wanted to remove it temporarily.
-2022-01-31 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Obsolete gnus-registry-enabled in favor of checking gnus-registry-db
@@ -76355,7 +76355,7 @@
`gnus-registry-db' instead of `gnus-registry-enabled'. We no longer
set or clear that variable.
-2022-01-31 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc.el (vc-diff-internal): Assume revert-buffer is in current buffer.
@@ -76364,40 +76364,40 @@
"*vc-diff*" with an assumption that revert-buffer is always performed
in the current buffer (bug#28852).
-2022-01-31 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/progmodes/cc-mode.el (c-common-init): Bind case-fold-search to nil
This fixes bug #53605.
-2022-01-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust toggle-menu-bar-mode-from-frame doc string
* lisp/menu-bar.el (toggle-menu-bar-mode-from-frame): Adjust the
doc string to reflect what it does (bug#43383).
-2022-01-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor copyedits of 'function-history' documentation
* doc/lispref/loading.texi (Where Defined): Fix indexing and
punctuation.
-2022-01-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix misplaced braces in loading.texi
* doc/lispref/loading.texi (Where Defined): Fix misplaced braces.
-2022-01-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make more ranges sort properly in describe-keymap
* lisp/subr.el (keymap-canonicalize): Don't consider two-character
ranges as a range (bug#11325).
-2022-01-31 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(function-history): New symbol property (bug#53632)
@@ -76451,7 +76451,7 @@
* test/lisp/loadhist-tests.el (loadhist-tests-unload-feature-nested)
(loadhist-tests-unload-feature-notnested): New tests.
-2022-01-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make Gnus address checking more resilient
@@ -76459,11 +76459,11 @@
Check that we have an email address before checking the validity
(bug#53651).
-2022-01-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify that INSTALL isn't for Git checkouts (bug#53627)
-2022-01-31 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend filelock-tests.el for bug#53207
@@ -76473,7 +76473,7 @@
Simplify.
(filelock-tests-detect-external-change): New test
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix artifacting on PGTK when bits are copied with an alpha channel
@@ -76482,7 +76482,7 @@
(pgtk_copy_bits): Use CAIRO_OPERATOR_SOURCE to draw onto the
destination surface.
-2022-01-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve 'latin1-display-ucs-per-lynx'
@@ -76491,7 +76491,7 @@
one of them. Instead, install an ASCII equivalent of every
character that the terminal cannot display.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `alpha-background' on PGTK
@@ -76512,7 +76512,7 @@
`respect_alpha_backend'. All callers changed.
* src/pgtkterm.h: Update function prototypes.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix accesses to GTK structures on tooltip frames
@@ -76523,22 +76523,22 @@
This is now done in a better way inside xg_create_frame_widgets.
(bug#53654)
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (Fx_display_visual_class): Return correct values.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve portability of GDK visual code
* src/gtkutil.c (xg_create_frame_widgets): Look up the visual
instead of assuming it based on the depth.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_term_init): Avoid freeze with 24-bit visuals.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve portability of alpha channel handling on TrueColor visuals
@@ -76556,7 +76556,7 @@
(x_make_truecolor_pixel): Stop hardcoding the value of the alpha
mask.
-2022-01-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Factor out function to check for clang in tests
@@ -76573,11 +76573,11 @@
* test/lisp/cedet/semantic/bovine/gcc-tests.el
(semantic-gcc-test-output-parser-this-machine): Use above new function.
-2022-01-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/image.el (image-map): Use defvar-keymap.
-2022-01-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -76585,14 +76585,14 @@
6636231b2c ; * lisp/international/latin1-disp.el: Update commentary.
f22e9ba9ac Fix regression in Occur Edit mode
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix motion not being reported on GTK when mouse moves over toolbar
* src/gtkutil.c (xg_event_is_for_scrollbar): Make code
consistent between XI2 and Core Input.
-2022-01-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make cursor alpha consistent with a transparent background
@@ -76601,50 +76601,50 @@
* src/xterm.c (x_clear_glyph_string_rect): Don't respect
background alpha when drawing the cursor.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_xrender_color_from_gc_foreground): Fix omission error.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the X toolkit build
* src/xterm.c (x_after_update_window_line): Update calls to
`x_fill_rectangle'.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tooltip frame creation with 32-bit visuals
* src/xfns.c (x_create_tip_frame): Define CWColormap and
CWBorderPixel to use a 32-bit visual if available.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* etc/NEWS: Announce the 'alpha-background' frame parameter.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the no toolkit build.
* src/xfns.c (x_window): Use n_planes instead of CopyFromParent
for depth.
-2022-01-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix with-suppressed-warnings edebug spec
* lisp/emacs-lisp/byte-run.el (with-suppressed-warnings): Fix
edebug spec.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix builds without GTK
* src/xfns.c (x_set_alpha_background): Don't call
gtk_widget_set_app_paintable without GTK.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `alpha-background' on non-Cairo builds
@@ -76674,14 +76674,14 @@
* src/xterm.h (struct x_display_info): New atom
`Xatom_net_wm_opaque_region'.
-2022-01-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/frame.el (undelete-frame--save-deleted-frame): Handle initial frame.
The function undelete-frame--save-deleted-frame is renamed
from undelete-frame--handle-delete-frame (bug#51883).
-2022-01-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/frame.el: Don't require 'frameset.el' (bug#51883).
@@ -76702,14 +76702,14 @@
* src/frame.c (frame-internal-parameters): New variable.
-2022-01-30 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Enlarge max-specpdl-size for generation of leim-list.el in bootstrap
* leim/Makefile.in (${leimdir}/leim-list.el): Add a --eval clause to set
max-specpdl-size to 5000 (previously 2500) for this target.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle correctly errors during frame creation on Haiku
@@ -76719,7 +76719,7 @@
* src/haiku_support.cc (BCursor_delete): Accept NULL values of
`cursor'.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XRender to composite fringe bitmaps
@@ -76729,14 +76729,14 @@
* src/xterm.c (x_draw_fringe_bitmap): Composite fringe bitmaps
with XRender if available.
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some problems with inconsistent visuals on GDK
* src/xterm.c (x_xr_ensure_picture): Use the visual GDK used
instead of our own.
-2022-01-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -76745,14 +76745,14 @@
ed3bbeb80d Fix rendering of Malayalam script
5ef3a52342 Improve documentation of Occur mode
-2022-01-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use consistent font when displaying menu equivalent keys on Haiku
* src/haiku_support.cc (DrawContent): Set plain font when
drawing key text.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for ARGB visuals on non-Xt builds
@@ -76766,7 +76766,7 @@
* src/xterm.h (x_make_truecolor_pixel): Make colors opaque on
32-bit visuals.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Some adjustments to last change
@@ -76774,38 +76774,38 @@
Cairo builds wtihout PGTK.
* src/xfns.c (select_visual): Likewise.
-2022-01-29 Håkon Flatval <hkon20@hotmail.com>
+2023-04-15 Håkon Flatval <hkon20@hotmail.com>
Add background transparency support for GTK+Cairo
-2022-01-29 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
package.el: Fix bug#53529
* lisp/emacs-lisp/package.el (package-autoload-ensure-default-file):
Enforce Unix EOLs.
-2022-01-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-menu-bar-button): New variable (bug#51648).
(tab-bar-format-menu-bar): Use it.
-2022-01-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el: Put 'isearch-scroll' property on two new symbols.
Put 'isearch-scroll' property on new commands 'recenter-other-window'
and 'context-menu-open'.
-2022-01-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Modernise the security section in the efaq a bit
* doc/misc/efaq.texi (Security risks with Emacs): Remove the X
bit, and add a bit about browsing the web (bug#24489).
-2022-01-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow redirecting `message' output to a different buffer
@@ -76814,7 +76814,7 @@
(syms_of_xdisp): Make Vmessages_buffer_name into a defvar
(bug#27170).
-2022-01-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Don't require mouse for prompting via dialog boxes
@@ -76826,7 +76826,7 @@
* lisp/menu-bar.el (popup-menu): Bind 'from--tty-menu-p' when
invoking a command from the menu.
-2022-01-29 Charles A. Roelli <charles@aurox.ch>
+2023-04-15 Charles A. Roelli <charles@aurox.ch>
Make revert-buffer ('g') keep point in VC diff buffers
@@ -76836,14 +76836,14 @@
(vc-diff-internal): Pass a clone of the incumbent vc-diff
buffer to 'vc-diff-finish' (bug#28852).
-2022-01-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Fmatch_data doc string
* src/search.c (Fmatch_data): Note quirk about non-matching
optional groups in the doc string (bug#29343).
-2022-01-29 Jae-hyeon Park <jhpark@kias.re.kr> (tiny change)
+2023-04-15 Jae-hyeon Park <jhpark@kias.re.kr> (tiny change)
Make gnus-icalendar-with-decoded-handle more DWIM
@@ -76851,13 +76851,13 @@
(gnus-icalendar-with-decoded-handle): Assume that calendars with
no charset is utf-8.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error after merge
* src/filelock.c (lock_file): Fix test against I_OWN_IT.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge from origin/emacs-28
@@ -76867,14 +76867,14 @@
# Conflicts:
# src/filelock.c
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error at startup with recent change
* lisp/startup.el (normal-top-level): Don't access
`native-comp-eln-load-path' if not (featurep 'native-compile).
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix unrelated help text tooltips if a popup is shown during the delay
@@ -76888,7 +76888,7 @@
popup menu is displayed.
(syms_of_menu): New hook `x-pre-popup-menu-hook'.
-2022-01-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow <Delete> key to delete entire grapheme clusters
@@ -76897,7 +76897,7 @@
* etc/NEWS: Announce the change.
-2022-01-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix native-compilation at startup
@@ -76905,7 +76905,7 @@
'native-comp-eln-load-path' early into startup, then amend it
after calling 'command-line'. (Bug#53497)
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Write a dummy event on each popup menu event
@@ -76917,34 +76917,34 @@
(struct haiku_dummy_event): New structure.
* src/haikuterm.c (haiku_read_socket): Handle dummy events.
-2022-01-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix compiler warning due to a recent change
* src/data.c (Ffset): Avoid compiler warning about 'function'.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a default value of the `:underline' face attribute
* lisp/cus-face.el (custom-face-attributes): Add `:position' t
default value of "On" for underlines.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve menu drag tracking on Haiku
* src/haikuterm.c (haiku_read_socket): Ignore all button events
when popup_activated_p.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make menus on Haiku work better
* src/haikuterm.c (haiku_read_socket): Don't send up events for
ungrabbed buttons.
-2022-01-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement real menu help-echo text on Haiku
@@ -76976,7 +76976,7 @@
(haiku_process_pending_signals_for_menu): New functions.
(haiku_menu_show): Pass new callbacks.
-2022-01-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/data.c (Ffset, defalias): Complete last change
@@ -76986,14 +76986,14 @@
* src/data.c (Ffset): Don't set the `autoload` property here...
(defalias): ... set it here instead.
-2022-01-28 Hugo Heagren <hugo@heagren.com>
+2023-04-15 Hugo Heagren <hugo@heagren.com>
bind-keys-form: error for repeat sub-keywords without :repeat-map
Error descriptively if :continue or :exit is specified without
:repeat-map.
-2022-01-28 Hugo Heagren <hugo@heagren.com>
+2023-04-15 Hugo Heagren <hugo@heagren.com>
bind-key-form: allow :continue keyword inside repeat map
@@ -77004,7 +77004,7 @@
recursive uses. This allows for the same repeat map to be used for
:exit and :continue.
-2022-01-28 Hugo Heagren <hugo@heagren.com>
+2023-04-15 Hugo Heagren <hugo@heagren.com>
bind-key-form: allow :exit keyword inside repeat map
@@ -77012,7 +77012,7 @@
but do not have their repeat-map property set (so they run a function,
but 'exit' the map).
-2022-01-28 Hugo Heagren <hugo@heagren.com>
+2023-04-15 Hugo Heagren <hugo@heagren.com>
bind-keys-form: new keyword :repeat-map, for defining repeat maps
@@ -77027,7 +77027,7 @@
Rename `doc' to `prefix-doc' for clarity and consistency with
'repeat-doc'.
-2022-01-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Reduce code duplication in parts of (auto)load&defalias
@@ -77047,14 +77047,14 @@
* src/lisp.h (defalias, load_with_autoload_queue): New declarations.
(un_autoload): Remove declaration.
-2022-01-28 Sebastian Urban <mrsebastianurban@gmail.com>
+2023-04-15 Sebastian Urban <mrsebastianurban@gmail.com>
Make where-is correctly identify aliases
* lisp/help.el (where-is): Make aliases correctly say which
function is an alias for what (bug#37325).
-2022-01-28 Sebastian Urban <mrsebastianurban@gmail.com> (tiny change)
+2023-04-15 Sebastian Urban <mrsebastianurban@gmail.com> (tiny change)
Fix manual points about tex-latex-block/latex-insert-block
@@ -77063,14 +77063,14 @@
tex-latex-block/latex-insert-block to what they really point to
(bug#37325).
-2022-01-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the read-file-name doc string slightly
* lisp/minibuffer.el (read-file-name): Note that the semantics of
INITIAL are odd (bug#37883).
-2022-01-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Clarify where the shell-command output goes
@@ -77078,7 +77078,7 @@
* doc/emacs/misc.texi (Single Shell): Clarify where the output
goes if the specified buffer isn't the current one (bug#40896).
-2022-01-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using dired-hide-details-mode in wdired buffers
@@ -77087,7 +77087,7 @@
* lisp/wdired.el (wdired-mode-map): Add a key binding.
-2022-01-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move native-comp-eln-load-path setting earlier again
@@ -77095,7 +77095,7 @@
`native-comp-eln-load-path' earlier because hooks called may need
the setting (bug#53596).
-2022-01-28 Lele Gaifax <lele@metapensiero.it>
+2023-04-15 Lele Gaifax <lele@metapensiero.it>
Fix copyright-fix-years, use a dash to separate years in a range
@@ -77114,21 +77114,21 @@
(copyright-fix-years-tests--data):
(text-copyright-fix-years): New test cases (bug#53597).
-2022-01-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix merge error in doc-view-pdf/ps->png
* lisp/doc-view.el (doc-view-pdf/ps->png): Fix merge error from
previous epub patch.
-2022-01-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent duplicate grab setting with xwidgets
* src/xwidget.c (xwidget_show_view): Don't set passive grab if
already set.
-2022-01-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use the real cursor beneath the pointer on xwidgets
@@ -77145,27 +77145,27 @@
* src/xwidget.h (struct xwidget_view): New field
`last_crossing_cursor_signal'.
-2022-01-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget build on PGTK
* src/xwidget.c (xw_forward_event_translate): Adjust calls to
`find_widget_at_pos' for recent changes.
-2022-01-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix duplicate scroll events without XI2
* src/xwidget.c (xwidget_button): Only generate scroll events
when the button was released.
-2022-01-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
3dd47bde7a * lisp/frame.el (clone-frame): Filter out 'parent-id' (bug...
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clear xwidget passive grab whenever a drag begins
@@ -77175,18 +77175,18 @@
* src/xwidget.h (struct xwidget_view): New field
`passive_grab_drag_signal'.
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Remove obsolete workaround.
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix inappropriate use of killed xwidgets
* src/xwidget.c (x_draw_xwidget_webkit_view): Don't record
embedder or synthesize focus events if the widget is killed.
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement xwidget passive grabs
@@ -77199,7 +77199,7 @@
(xw_maybe_synthesize_crossing): Allow current_window to be NULL
if the mode is XW_CROSSING_LEFT.
-2022-01-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new switch --init-directory
@@ -77210,13 +77210,13 @@
* src/emacs.c (standard_args): Add.
-2022-01-27 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* lisp/doc-view.el (doc-view-epub-font-size): Fix type; add version.
Flagged by test-custom-opts.
-2022-01-27 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Fix potential native compiler circular dependencies during load
@@ -77227,7 +77227,7 @@
(maybe_defer_native_compilation): Make use of
`startup--require-comp-safetly'.
-2022-01-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up previous "Quit Emacs" from menu logic
@@ -77237,7 +77237,7 @@
(save-buffers-kill-emacs): Check that we have anything to save
before prompting the user.
-2022-01-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the save buffers prompt from Quit Emacs menu more understandable
@@ -77249,7 +77249,7 @@
function for reuse...
(y-or-n-p): ... from here.
-2022-01-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve detection of glyphless characters on TTY frames
@@ -77257,18 +77257,18 @@
which characters it has glyphs, use that to determine whether
a given character should be displayed as glyphless.
-2022-01-27 Arni Magnusson <thisisarni@gmail.com>
+2023-04-15 Arni Magnusson <thisisarni@gmail.com>
Add setx highlighting to bat-mode
* lisp/progmodes/bat-mode.el (bat-font-lock-keywords):
(bat-font-lock-keywords): Highlight setx (bug#53568).
-2022-01-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move some of the doc-view variables around to fix load errors
-2022-01-27 Daniel Nicolai <dalanicolai@gmail.com>
+2023-04-15 Daniel Nicolai <dalanicolai@gmail.com>
Add support for EPUB, CBZ, FB2 and (O)XPS extension to doc view
@@ -77289,14 +77289,14 @@
* lisp/files.el (auto-mode-alist):
Associate new extension types with doc-view.
-2022-01-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak href/superscript fix in tex-mode
* lisp/textmodes/tex-mode.el (tex-font-lock-keywords-1): Fix
superscripts in href in a better way.
-2022-01-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Don't output spurious prefixes in read-char-exclusive"
@@ -77305,7 +77305,7 @@
This change broke display of `C-q-' when doing the `C-q' command,
so it has to be fixed a different way.
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve xwidget window ancestry calculations
@@ -77315,25 +77315,25 @@
(xw_maybe_synthesize_crossing): Synthesize virtual events like
GTK does for non-linear changes.
-2022-01-27 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/pdumper.c (dump_vectorlike): Handle PVEC_SYMBOL_WITH_POS.
-2022-01-27 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix `startup--honor-delayed-native-compilations' for (bug#53497)
* lisp/startup.el (startup--honor-delayed-native-compilations): Don't
forget to set `comp--loadable' when `comp--delayed-sources' is empty.
-2022-01-27 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Have `benchmark-run-compiled' use the native compiler when available
* lisp/emacs-lisp/benchmark.el (benchmark-run-compiled): Use native
compiler when available.
-2022-01-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -77343,11 +77343,11 @@
# Conflicts:
# test/lisp/textmodes/fill-tests.el
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/xwidget.el (xwidget-webkit-edit-mode-map): Pass C-backspace.
-2022-01-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement crossing event generation between windows for xwidgets on X
@@ -77363,7 +77363,7 @@
* src/xwidget.h (struct xwidget_view): New field
`last_crossing_window'.
-2022-01-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler slightly in tests
@@ -77373,7 +77373,7 @@
(comp-tests-discardn-f, comp-test-42360-f, comp-test-46824-1-f)
(comp-test-silly-frame2): Silence byte-compiler.
-2022-01-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't use obsolete second argument to byte-compile-file
@@ -77381,80 +77381,80 @@
(comp-test-big-interactive): Don't use obsolete second argument to
byte-compile-file.
-2022-01-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't discourage auto-mode-alist entries in autoloads
* lisp/files.el (auto-mode-alist, interpreter-mode-alist): Delete
comment discouraging entries in autoload directives. (Bug#8158)
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve XI2 valuator reset logic
* src/xterm.c (handle_one_xevent): Clear valuators on XI_Leave
instead of XI_Enter.
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_focus_frame): Set input focus on outer window.
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of unnecessary draw locking in haikumenu.c
* src/haikumenu.c (Fhaiku_menu_bar_open): Stop holding the draw
lock.
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Apply fix for bug#52761 to GTK native input as well
* src/xgselect.c (xg_select): Apply said fix on regular GTK
builds when native input is being used.
-2022-01-26 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* Makefile.in (install-etc): Remove unnecessary chown.
Not needed since this rule was changed to not use tar, 2012-05-11.
-2022-01-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make smerge-refine-ignore-whitespace into defcustom
* lisp/vc/smerge-mode.el (smerge-refine-ignore-whitespace): Make
into defcustom (bug#12585).
-2022-01-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add tests for concat, vconcat and append
* test/src/fns-tests.el (fns-tests-concat)
(fns-concat, fns-vconcat, fns-append): New.
-2022-01-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Minor `concat` tweaks
* src/fns.c (concat): Do things in the right order for speed.
(concat_strings): Initialise variable.
-2022-01-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix copyright-find-copyright when searching from the end
* lisp/emacs-lisp/copyright.el (copyright-find-copyright): Make
the double check also work when searching from the end (bug#7179).
-2022-01-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix copyright.el comment and add a test
* lisp/emacs-lisp/copyright.el (copyright-find-copyright): Fix
comment (bug#7179).
-2022-01-26 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Fix input of sharp-quoted symbols in Eshell with em-extpipe
@@ -77464,28 +77464,28 @@
* test/lisp/eshell/em-extpipe-tests.el (em-extpipe-test-17): New
test (bug#53518).
-2022-01-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt tramp-tests
* test/lisp/net/tramp-tests.el (tramp--test-special-characters):
Adapt test candidates.
-2022-01-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix insert-file-contents for tramp-crypt
* lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist):
Use `tramp-handle-insert-file-contents'.
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add workaround for super modifier misconfiguration to non-XKB code
* src/xterm.c (x_find_modifier_meanings): Don't let a modifier
be both Hyper and Super.
-2022-01-26 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Make use of NILP where possible
@@ -77497,34 +77497,34 @@
* src/cygw32.c (Fcygwin_convert_file_name_to_windows)
(Fcygwin_convert_file_name_from_windows): Likewise.
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify Haiku scrolling code
* src/haikuterm.c (haiku_scroll_run): Remove code that can never
be reached since Cairo frames are always double buffered.
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK menu bar height reporting when scaled
* src/gtkutil.c (xg_update_frame_menubar): Multiply requisition
height by GDK scale.
-2022-01-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
7eca80b204 ; * src/composite.c (syms_of_composite) <auto-composition-...
-2022-01-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simplify Haiku underline code
* src/haikuterm.c (haiku_draw_text_decoration): Remove code left
over from when mouse face had to be set manually.
-2022-01-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `haiku-menu-bar-open' faster
@@ -77533,11 +77533,11 @@
* src/haikuterm.c (haiku_read_socket): Don't update menu bar if
b->no_lock.
-2022-01-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/image.c (parse_image_spec): Use NILP.
-2022-01-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve how change-log-mode fills all-file-name lines
@@ -77545,35 +77545,35 @@
improve how we fill all-file-name ChangeLog lines (bug#19341).
(change-log-indent): Use it.
-2022-01-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up Gnus FAQ entry
* doc/misc/gnus-faq.texi (FAQ 3-9): Remove mention of
nnimap-list-pattern, which was removed some years ago (bug#53522).
-2022-01-25 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* src/comp.c (emit_lisp_obj_rval): Make use of NILP.
;* src/fns.c (concat_strings): Add missing space.
-2022-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/comp.c (emit_limple_insn): Fix another int/Lisp_Object mixup
-2022-01-25 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Tag an mml-sec test
* test/lisp/gnus/mml-sec-tests.el (mml-secure-en-decrypt-3):
Tag unstable on hydra.nixos.org due to repeated intermittent failures.
-2022-01-25 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* src/fns.c (concat_strings): Clean-up unused variable.
-2022-01-25 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* `batch-byte+native-compile' produce .eln younger than .elc (bug#52912)
@@ -77582,15 +77582,15 @@
(batch-byte+native-compile): Touch the produced .eln after the
corresponding .elc is produced.
-2022-01-25 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/comp.el (batch-byte+native-compile): Fix unwind form
-2022-01-25 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/lisp.h (lisp_h_EQ, lisp_h_NILP): Fix length and indent
-2022-01-25 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Faster concat, append, vconcat, copy-sequence, etc
@@ -77612,7 +77612,7 @@
(concat): Strip code for string target, simplify, optimise.
(Fcopy_alist): Use Fcopy_sequence.
-2022-01-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't mutate literals in tabulated-list-widen-current-column
@@ -77620,7 +77620,7 @@
(tabulated-list-widen-current-column): Avoid mutating constants
(bug#53501).
-2022-01-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix widening some columns in tabulated-list-widen-current-column
@@ -77628,7 +77628,7 @@
(tabulated-list-widen-current-column): Don't bug out on list-based
columns (bug#53498).
-2022-01-25 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Treat "-" as a positional arg in 'eshell-eval-using-options'
@@ -77640,7 +77640,7 @@
* test/lisp/eshell/esh-opt-tests.el
(esh-opt-test/eval-using-options-stdin): New test.
-2022-01-25 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't manipulate args in-place for 'eshell-eval-using-options'
@@ -77677,14 +77677,14 @@
* test/lisp/eshell/em-tramp-tests.el: New tests.
-2022-01-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the term-clear-full-screen-programs doc string
* lisp/term.el (term-clear-full-screen-programs): Improve the doc
string.
-2022-01-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve reliability of menu bar updates on Haiku
@@ -77701,32 +77701,32 @@
* src/haikuterm.c (haiku_read_socket): Always update menu bar
and signal the window thread after update completion.
-2022-01-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haiku_support.cc (Highlight): Send events if !highlight_p.
-2022-01-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't send menu help events on Haiku if the pointer isn't in the menu
* src/haiku_support.cc (Highlight): Only send help events
if the mouse cursor is actually in the menu.
-2022-01-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tool bar size reporting on GTK when the display is scaled
* src/gtkutil.c (xg_update_tool_bar_sizes): Multiply sizes to
turn them into device pixels.
-2022-01-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
c34d06e3d7 * configure.ac (LIBSECCOMP): Bump minimum version for facc...
335a5a9e0f Make the `f' command work in image-mode again
-2022-01-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve portability of X11 IM code
@@ -77734,7 +77734,7 @@
* src/xfns.c (Xxic_preedit_start_callback): Use XICCallback if
present.
-2022-01-24 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Remove some dubious uses of `interactive-form`
@@ -77743,7 +77743,7 @@
* lisp/cedet/semantic/db-el.el (semanticdb-elisp-sym->tag):
Prefer `commandp` over `interactive-form`.
-2022-01-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix invalid picture after toggling the tool bar or menu bar on GTK
@@ -77751,14 +77751,14 @@
(handle_one_xevent): Call x_drop_xrender_surfaces instead of
just font_drop_xrender_surfaces.
-2022-01-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK native input on scaled displays
* src/xfns.c (xic_set_preeditarea): Scale preedit spot rectangle
before giving it to GTK.
-2022-01-24 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Add Eshell syntax to more easily bypass Eshell's own pipelining
@@ -77768,7 +77768,7 @@
* test/lisp/eshell/em-extpipe-tests.el: New tests.
* lisp/eshell/esh-module.el (eshell-modules-list): Add `eshell-extpipe'.
-2022-01-24 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Rework eshell-match-result for testing asynchronous commands
@@ -77784,31 +77784,31 @@
* test/lisp/eshell/eshell-tests.el (eshell-test/flush-output): Update
and simplify test given how eshell-match-result no longer moves point.
-2022-01-24 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Move Eshell test helpers to their own file
* test/lisp/eshell/eshell-tests.el:
* test/lisp/eshell/eshell-tests-helpers.el: Move helpers to own file.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make hi-lock-face-defaults into a defcustom
* lisp/hi-lock.el (hi-lock-face-defaults): Make into defcustom.
-2022-01-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/hi-lock.el (hi-lock-use-overlays): New variable.
(hi-lock-set-pattern): Use it. Set overlay priority to 1.
(bug#53155)
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS entry for term-clear-full-screen-programs
-2022-01-24 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Implement alternative sub-buffer support in term.el
@@ -77824,7 +77824,7 @@
function to enter or leave an alternative sub-buffer.
bug#53485
-2022-01-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/info.el (Info-link-keymap): Fix repetitive clicks on the header line.
@@ -77833,25 +77833,25 @@
but also allows repetitively clicking on the Next button
on the Info header line (bug#53170).
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't list the default hi-lock faces twice in the future history
* lisp/hi-lock.el (hi-lock-read-face-name): Don't include faces
twice in the defaults (bug#19877).
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix gnus-article-truncate-lines doc string
* lisp/gnus/gnus-art.el (gnus-article-truncate-lines): Fix doc
string.
-2022-01-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS: Mention 'replace-regexp-function' (bug#52558).
-2022-01-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/faces.el (read-face-name): Support a list of defaults for M-n.
@@ -77859,13 +77859,13 @@
in the "future history" of the minibuffer retrieved by `M-n M-n ...'.
(bug#53255)
-2022-01-24 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* lisp/minibuffer.el (completions-sort): Fix type.
Flagged by test-custom-opts.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't output spurious prefixes in read-char-exclusive
@@ -77875,20 +77875,20 @@
to avoid outputting prefixes we're not going to act on anyway
(bug#19718).
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow sorting in electric-buffer-list with `S'
* lisp/ebuff-menu.el (electric-buffer-menu-mode-map): Add the `S'
sorting command here, too (bug#20178).
-2022-01-24 Amin Bandali <bandali@gnu.org>
+2023-04-15 Amin Bandali <bandali@gnu.org>
ERC: Add new comaintainer, F. Jason Park
* lisp/erc/erc*.el: Add J.P. as my comaintainer to headers.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix \href{a_b} in tex-mode
@@ -77896,7 +77896,7 @@
href parameters like constants so that _ aren't fontified like
subscripts.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix tex-mode handling of _ chars in href{} commands"
@@ -77904,25 +77904,25 @@
This will be fixed a different way.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add derived-mode test for bug#24176
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make anonymous functions work in auto-mode-alist
* lisp/files.el (set-auto-mode--apply-alist): Don't infloop on
anonymous functions in auto-mode-alist (bug#20709).
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't loop so much in gud-query-cmdline on remote systems
* lisp/progmodes/gud.el (gud-query-cmdline): Avoid looping over
large numbers of files on remote systems (bug#21528).
-2022-01-24 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Make Completions sorting a user option
@@ -77931,7 +77931,7 @@
(minibuffer-completion-help): Implement it for the Completions
buffer. (Bug#53362)
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow jumping to ert failure definitions
@@ -77946,15 +77946,15 @@
Based on code by Phillip Lord <phillip.lord@russet.org.uk>.
-2022-01-24 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* configure.ac: Remove forgotten GLIB_GSETTINGS call
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add NEWS item for `I' command
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a *Help* command that'll take you to the lispref manual
@@ -77964,7 +77964,7 @@
* lisp/info-look.el (:mode): Add an entry for the lispref manual.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix tex-mode handling of _ chars in href{} commands
@@ -77972,21 +77972,21 @@
(bug#23102).
(tex-font-lock-suscript): Don't subscript _ chars in href.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `font-lock-add-keywords' work in derived modes
* lisp/font-lock.el (font-lock-set-defaults): Make
`font-lock-add-keywords' work in derived modes (bug#24176).
-2022-01-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove redundant declarations from keyboard.h that are now in lisp.h
* src/keyboard.h (process_pending_signals)
(pending_signals): Remove declarations.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Inline maybe_quit
@@ -77996,7 +77996,7 @@
* src/eval.c (maybe_quit): Rename to `probably_quit`.
* src/lisp.h (maybe_quit): New simplified inline function.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Bump specpdl inline, move reallocation out of line
@@ -78006,7 +78006,7 @@
* src/eval.c (grow_specpdl): Now inline, most code moved...
(grow_specpdl_allocation): ...here.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Implement Ffuncall in terms of funcall_general
@@ -78015,7 +78015,7 @@
This slows down some less used function call paths by a small amount
but the code duplication was just silly.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Open-code aref and aset in bytecode interpreter
@@ -78023,7 +78023,7 @@
vectors and records, since this is important for code that makes heavy
use of arrays and/or objects.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove the unused unbind-all bytecode
@@ -78038,7 +78038,7 @@
Remove definition and implementation of unbind-all, freeing up the opcode
for other purposes.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Move a runtime interpreter check to debug mode
@@ -78047,7 +78047,7 @@
enabled, or BYTE_CODE_SAFE enabled). This improves speed in several
ways.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove nil check in exec_byte_code
@@ -78061,13 +78061,13 @@
always a small integer, in exec_byte_code and
fetch_and_exec_byte_code, all callers adjusted.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Byte code arity check micro-optimisation
* src/bytecode.c (exec_byte_code): Slight simplification.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Pin bytecode strings to avoid copy at call time
@@ -78093,7 +78093,7 @@
* src/lisp.h (Lisp_String): Explain special size_byte values.
(string_immovable_p): New.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Inline setcar and setcdr in byte-code interpreter
@@ -78103,7 +78103,7 @@
* src/bytecode.c (exec_byte_code):
Inline code from Fsetcar and Fsetcdr.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Inline fixnum operations in bytecode interpreter
@@ -78114,7 +78114,7 @@
operations with fixnum results: =, >, <, <=, >=, -, +, -, *, /, %, max
and min.
-2022-01-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Short-circuit the recursive bytecode funcall chain
@@ -78131,21 +78131,21 @@
(funcall_general): New function, essentially the meat of Ffuncall.
* src/lisp.h (backtrace_debug_on_exit): Moved here from eval.c.
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add "then" to sh--completion-keywords
* lisp/progmodes/sh-script.el (sh--completion-keywords): Allow
completing over "then" (bug#53490).
-2022-01-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix Gnus registry key bindings
* lisp/gnus/gnus-registry.el (gnus-registry-install-shortcuts):
Don't overwrite all other M M commands (bug#53492).
-2022-01-24 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Orderly inhibit frame resizing when activating tool or tab bar (Bug#52986)
@@ -78156,29 +78156,29 @@
activation resizes the frame despite of the fact that
'frame-inhibit-implied-resize' should prevent it (Bug#52986).
-2022-01-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_composite_image): Use the display's picture format.
-2022-01-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Scale coordinates when checking if a touch event falls inside menu bar
* src/xterm.c (handle_one_xevent): Apply scale to touch event
coordinates before intersecting them with the menu bar.
-2022-01-24 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Avoid glitches in ELC lines in build output
* src/verbose.mk.in (AM_V_ELC, AM_V_ELN): Use ifneq not ifdef, as
we want have_working_info’s value expanded (Bug#53358).
-2022-01-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Drop frame picture on configure.
-2022-01-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some code for transparent frame backgrounds without Cairo
@@ -78217,14 +78217,14 @@
add new field `pict_format'.
(struct x_output): New field `picture'.
-2022-01-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of compose status on XI2
* src/xterm.c (handle_one_xevent): Stop assuming compose
processing will occur on XI2.
-2022-01-23 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Expunge read-with-symbol-position and read-symbol-positions-list
@@ -78238,21 +78238,21 @@
* lisp/emacs-lisp/bytecomp.el (compile-defun, byte-compile-from-buffer):
Remove bindings of the variables.
-2022-01-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set IC preedit area on ConfigureNotify
* src/xterm.c (handle_one_xevent): Set the preedit spot when a
ConfigureNotify event is received.
-2022-01-23 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Bind print-symbols-bare to t in byte-compile-from-buffer
* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Bind
print-symbols-bare to t here for the benefit of non-defining forms in buffers.
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make message in hack-local-variables-confirm clearer
@@ -78260,14 +78260,14 @@
.dir-locals.el file in the message to be slightly less confusing
(bug#27066).
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-x M-x insert-kbd-macro RET RET' work better
* lisp/macros.el (insert-kbd-macro): Don't give bogus output on
names that have no function definition (bug#30309).
-2022-01-23 Thuna <thuna.cing@gmail.com> (tiny change)
+2023-04-15 Thuna <thuna.cing@gmail.com> (tiny change)
Fix tabulated-list-widen-current-column widening wrong column
@@ -78275,7 +78275,7 @@
comparison operation when checking if point is within the column
bounds (bug#53375).
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using outline minor mode in `M-x apropos-value'
@@ -78286,14 +78286,14 @@
(apropos-value-internal): Escape newlines so that no values can be
confused for headings.
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make apropos-print-doc more resilient
* lisp/apropos.el (apropos-print-doc): Don't bug out on doc
strings that have invalid command key syntaxes.
-2022-01-23 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Properly check the completionitem.deprecated property
@@ -78301,7 +78301,7 @@
is `t'. We do this so that a :deprecated property of :json-false does
not cause a completion candidate to be incorrectly marked as deprecated.
-2022-01-23 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Fix position argument to macroexp--warn-wrap in cconv--convert-funcbody
@@ -78309,7 +78309,7 @@
argument to macroexp--warn-wrap from BODY to ARG, to give correct positions in
warning messages.
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve `M-x speedbar' under emacs -nw very slightly
@@ -78317,52 +78317,52 @@
seem to do anything visible under -nw, so issue a message in that
case to tell the user how to proceed (bug#32597).
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make kill-process into a command
* doc/lispref/processes.texi (Signals to Processes): Document it.
* src/process.c (Fkill_process): Make into a command (bug#32640).
-2022-01-23 Phil Sainty <psainty@orcon.net.nz>
+2023-04-15 Phil Sainty <psainty@orcon.net.nz>
Add new function to prompt a user for a process name
* lisp/emacs-lisp/subr-x.el (read-process-name): New function
(bug#32640).
-2022-01-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure cursors are drawn correctly after haiku_clear_frame
* src/haikuterm.c (haiku_clear_frame): Mark all cursors as off.
-2022-01-23 Alex Kost <alezost@gmail.com>
+2023-04-15 Alex Kost <alezost@gmail.com>
Improve scheme-imenu-generic-expression
* lisp/progmodes/scheme.el (scheme-imenu-generic-expression):
Improve so that we match `define-public' etc (bug#33117).
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make occur edit mode more resilient
* lisp/replace.el (occur-engine): Make the prefix read-only so
that it's preserved in edit mode (bug#53419).
-2022-01-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert the other bits related to `load-read-file'
* src/lread.c (syms_of_lread): Revert the other bits related to
reverting `byte-compile-from-buffer'/`load-read-file'.
-2022-01-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menus on the no-toolkit build when using XI2
@@ -78371,25 +78371,25 @@
actually grabbed.
(x_menu_show): Release XI2 passive grab.
-2022-01-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
6d3608be88 Seccomp: improve support for newer versions of glibc (Bug#...
e58ecd01d5 EUDC: Fix a quoting bug in the BBDB backend
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix documentation formatting error
* doc/lispref/streams.texi (Input Functions): Remove extraneous
@end defun.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikumenu.c (run_menu_bar_help_event): Fix bounds sanity check.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up some of the X extension related code
@@ -78400,22 +78400,22 @@
* src/xterm.h (struct x_display_info): New fields for xfixes
support.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (pgtk_flash): Fix input blocking.
-2022-01-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor copyedits in "Symbols with Position"
* doc/lispref/symbols.texi (Symbols with Position): Fix wording
and improve indexing.
-2022-01-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Merge branch 'master' of /home/acm/emacs/emacs.git/master
-2022-01-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Don't use 'load-read-function' in byte-compile-from-buffer
@@ -78424,18 +78424,18 @@
it. This is so that a lower level use of load-read-function will not return a
form containing symbols with position.
-2022-01-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Merge branch 'scratch/correct-warning-pos'
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix print-unreadable-function documentation
* doc/lispref/streams.texi (Output Variables): Fix description of
non-string values.
-2022-01-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add direct remote copying in Tramp's scp support
@@ -78462,14 +78462,14 @@
(tramp-read-passwd-without-cache): New defun.
(tramp-action-password): Call it.
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark nil vc-follow-symlinks as safe
* lisp/vc/vc-hooks.el (vc-follow-symlinks): A nil value should be
safe for file-local (bug#33264).
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use load-read-function in byte-compile-from-buffer
@@ -78478,14 +78478,14 @@
* src/lread.c (syms_of_lread): Adjust doc string (bug#33723).
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Vprint_unreadable_function doc string
* src/print.c (syms_of_print): Clarify Vprint_unreadable_function
doc string
-2022-01-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'unprintable' stuff
@@ -78494,7 +78494,7 @@
Improve the documentation of 'print-unreadable-function' and
'readablep'. Add indexing and cross-references.
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve dired-do-create-files slightly
@@ -78502,21 +78502,21 @@
the doc string (bug#35367). Suggested by Mike Kupfer
<mkupfer@alum.berkeley.edu>.
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up multisession--set-value-sqlite slightly
* lisp/emacs-lisp/multisession.el
(multisession--set-value-sqlite): Use `readablep'.
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function 'readablep'
* doc/lispref/streams.texi (Input Functions): Document it.
* lisp/subr.el (readablep): New function (bug#52566).
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new variable print-unreadable-function
@@ -78526,21 +78526,21 @@
(syms_of_print): New variable print-unreadable-function
(bug#52566).
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some menu bar help code on GNUstep
* src/nsmenu.m ([EmacsMenu menu:willHighlightItem:]): Implement
help event generation for GNUstep.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix PGTK build with xwidgets
* src/xwidget.c: Swap some preprocessor definitions around.
Reported by Iñigo Serna <inigoserna@gmail.com>.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GNUstep build warnings
@@ -78549,7 +78549,7 @@
([EmacsMenu menuHasKeyEquivalent:forEvent:target:action:])
([EmacsMenu numberOfItemsInMenu:]): New methods.
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix HTML target marking in shr
@@ -78558,7 +78558,7 @@
the end of the tag (bug#53409).
(shr-tag-a): Ditto.
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Put the old label into the future history in reftex-change-label
@@ -78566,32 +78566,32 @@
old label into the future history so that it can be edited easily
(bug#53417).
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the prompt in hi-lock-read-face-name
* lisp/hi-lock.el (hi-lock-read-face-name): Fix the prompt after
recent changes (bug#53255).
-2022-01-22 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Fix some doc strings in outline.el
* lisp/outline.el (outline-default-state): Fix doc string.
(outline-default-rules): Fix doc string.
-2022-01-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Merge branch 'master' into scratch/correct-warning-pos
-2022-01-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the test for existing multisession variables more sensible
* lisp/emacs-lisp/multisession.el (multisession-edit-value):
Unconfuse the code.
-2022-01-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Miscellaneous amendments to the scratch/correct-warning-pos branch
@@ -78619,7 +78619,7 @@
* doc/lispref/symbols.texi (Symbols): Add new menu entry.
(Symbols with Position): New @section.
-2022-01-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve detection of suspicious uses of bidi controls
@@ -78631,38 +78631,38 @@
Enable the test that was previously failing with
'bidi-find-overridden-directionality'.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent raw bytes from being displayed as help text on Haiku
* src/haikumenu.c (digest_menu_items): Don't set encoded text
into the menu item vector.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use locale coding system to decode XIM preedit text
* src/xfns.c (x_xim_text_to_utf8_unix): XIMs typically return
text in the locale coding system, so use that instead.
-2022-01-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Change visibility of "Undelete Frame"
* lisp/menu-bar.el (menu-bar-file-menu): Make "Undelete Frame"
always visible. Suggested by Gregory Heytings <gregory@heytings.org>.
-2022-01-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of some unnecessary code in handle_one_xevent
* src/xterm.c (handle_one_xevent): Stop mutating event->xkey.
-2022-01-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* eglot.el (eglot-handle-notification): silence byte-compiler.
-2022-01-21 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Add support for optional completionitem.tags
@@ -78677,7 +78677,7 @@
* Makefile (ELPA_DEPS): Require latest seq.el.
-2022-01-21 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Don't use :exclusive no
@@ -78689,7 +78689,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/812
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recent changes to visible bell code
@@ -78700,7 +78700,7 @@
(xg_update_horizontal_scrollbar_pos): Ensure such a window here
instead.
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clean up visible bell code on X
@@ -78710,7 +78710,7 @@
* src/xterm.c (XTflash): Remove use of GDK functions for
drawing.
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash when the visible bell is rung but there is no cairo surface
@@ -78718,7 +78718,7 @@
not present. (bug#53420)
(pgtk_cr_update_surface_desired_size): Reformat comment.
-2022-01-21 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Avoid glitches in ELC lines in build output
@@ -78726,46 +78726,46 @@
(AM_V_ELC, AM_V_ELN): Use 'echo' rather than $(info ...)
on buggy versions of GNU Make.
-2022-01-21 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify AM_V_ELC setup
* src/verbose.mk.in (AM_V_ELC, AM_V_ELN): Use simpler Make ‘if’s.
-2022-01-21 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* lisp/cus-start.el (polling-period): Update type.
Flagged by test-custom-opts.
-2022-01-21 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* src/keyboard.c (start_polling): Fix type mixup.
Flagged by --enable-check-lisp-object-type.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Disable background image fetching from asking for passwords
* lisp/url/url-queue.el (url-queue-start-retrieve): Inhibit
prompting for passwords from these background requests.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further emake tweaks
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous emake change
* admin/emake (cores): Fix typo in previous change.
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/keyboard.c (syms_of_keyboard): Fix build without input polling.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the completion-category-overrides doc string
@@ -78773,21 +78773,21 @@
this variable does (bug#22324).
(completion-category-defaults): Mention the overrides variable.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove text mistakenly added to the diff--iterate-hunks doc string
* lisp/vc/diff-mode.el (diff--iterate-hunks): Remove text added by
mistake to the doc string.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Followup fix to previous message-update-smtp-method-header change
* lisp/gnus/message.el (message-update-smtp-method-header): Narrow
to the headers first.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow From to be part of message-hidden-headers
@@ -78795,7 +78795,7 @@
bug out if the From header is part of `message-hidden-headers'
(bug#52871).
-2022-01-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Don't use 'eshell-eval-using-options' for 'eshell/source' or 'eshell/.'
@@ -78808,7 +78808,7 @@
* etc/NEWS: Announce the change (bug#53293)
-2022-01-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Raise an error from 'eval-eval-using-options' for unknown options
@@ -78820,21 +78820,21 @@
* test/lisp/eshell/esh-opt-tests.el (esh-opt-process-args-test)
(test-eshell-eval-using-options): Add test cases for this.
-2022-01-21 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Fix indentation in NEWS of cl-flet item
* etc/NEWS: Correct description of indentation of 'cl-flet' and
'cl-labels (bug#53410).
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Splitting Mail in the Gnus manual
* doc/misc/gnus.texi (Splitting Mail): Clarify what happens when
crossposting or not (bug#53307).
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Interpret a "" value of EMACS_TEST_VERBOSE as "off"
@@ -78842,7 +78842,7 @@
* lisp/emacs-lisp/ert.el (ert-run-tests-batch): Allow overriding
the EMACS_TEST_VERBOSE variable by setting it to "" (bug#53313).
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the edebug-all-defs user option work more reliably
@@ -78850,7 +78850,7 @@
has no effect unless edebug is loaded (because that loads the
advice needed for the commands in question) (bug#53331).
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make xwidgets work on builds that don't use Cairo drawing
@@ -78861,35 +78861,35 @@
* src/xwidget.c: Always include cairo-xlib headers when xwidgets
are enabled.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up mm-display-inline-fontify slightly
* lisp/gnus/mm-view.el (mm-display-inline-fontify): Remove some
left-over compat code.
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make diff--iterate-hunks more resilient
* lisp/vc/diff-mode.el (diff--iterate-hunks): Ignore malformed
hunks instead of signalling errors (bug#53343).
-2022-01-21 Shuguang Sun <shuguang79@qq.com>
+2023-04-15 Shuguang Sun <shuguang79@qq.com>
Use the correct converter for odf files in doc-view
* lisp/doc-view.el (doc-view-pdf/ps->png): Use the correct
converter for odf files (bug#53354).
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update multisession variables when editing the values
* lisp/emacs-lisp/multisession.el (multisession-edit-value):
Update multisession variables when editing the values (bug#53361).
-2022-01-21 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Further improve determination of when commands can be invoked directly
@@ -78903,18 +78903,18 @@
* test/lisp/eshell/eshell-tests.el
(eshell-test/interp-cmd-external-concat): New test (bug#30725).
-2022-01-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust emake after recent changes
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Synchronize XI2 code with Core Input code
* src/xterm.c (handle_one_xevent): Apply recent changes for XI2
events as well.
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge from origin/emacs-28
@@ -78922,7 +78922,7 @@
ba57b78064 Fix execute-extended-command-for-buffer in fundamental-mode
ef0c1d4c2c Add workaround to handle a problem with Enlightenment WM (...
-2022-01-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around GTK changing window backgrounds on colormapped displays
@@ -78930,13 +78930,13 @@
(x_clear_area): Fill the contents with the reverse GC instead of
using XClearArea and XClearWindow when not double buffered.
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix BadValue crash when looking up empty color names on some X servers
* src/xterm.c (x_parse_color): Avoid parsing empty color names.
-2022-01-20 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
ruby-toggle-block-space-before-parameters: New user option
@@ -78947,7 +78947,7 @@
* test/lisp/progmodes/ruby-mode-tests.el
(ruby-toggle-block-to-brace-no-space): New test.
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update menu bars when `use-system-tooltips' changes on Haiku
@@ -78955,7 +78955,7 @@
for `use-system-tooltips'.
(haiku-use-system-tooltips-watcher): New function.
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow fractional values of `polling-period'
@@ -78969,7 +78969,7 @@
(syms_of_keyboard): Make `polling-period' a Lisp variable
instead of an int variable.
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid FOCUS_IN_EVENTS not being sent on NS
@@ -78977,7 +78977,7 @@
emacs_event being NULL by storing focus in events directly
into the keyboard buffer. (bug#52376)
-2022-01-20 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Enable lsp project-wide diagnostics via flymake
@@ -78997,7 +78997,7 @@
* NEWS.md: Mention the new functionality
* README.md: Mention the new functionality
-2022-01-20 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
In early bootstrap, use byte-compiled compiler to native compile first files
@@ -79015,7 +79015,7 @@
* src/verbose.mk.in: When ANCIENT is yes, output ELC, not ELC+ELN for
AM_V_ELC.
-2022-01-20 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Remove matching of whitespaces in LaTeX environment names
@@ -79023,7 +79023,7 @@
arbitrary number of whitespaces in LaTeX environment names.
(bug#53390)
-2022-01-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update documentation of 'clone-indirect-buffer-hook'
@@ -79035,7 +79035,7 @@
* lisp/face-remap.el (face-attrs--make-indirect-safe): Doc fix.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make textsec-link-suspicious-p less mistrustful
@@ -79043,7 +79043,7 @@
back the suspicion -- only warn about texts that contain a full
explicit link.
-2022-01-20 Thuna <thuna.cing@gmail.com> (tiny change)
+2023-04-15 Thuna <thuna.cing@gmail.com> (tiny change)
Fix tabulated-list-widen-current-column widening wrong column
@@ -79051,21 +79051,21 @@
for the padding and the content width when calculating column
width (bug#53375).
-2022-01-20 Peter Münster <pm@a16n.net>
+2023-04-15 Peter Münster <pm@a16n.net>
Make image-dired-delete-marked more resilient
* lisp/image-dired.el (image-dired-delete-marked): Don't bug out
on empty buffers (bug#53385).
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix thinko in previous hi-lock-read-face-name change
* lisp/hi-lock.el (hi-lock-read-face-name): Fix the string/symbol
logic.
-2022-01-20 Andrew Hyatt <ahyatt@gmail.com>
+2023-04-15 Andrew Hyatt <ahyatt@gmail.com>
Fix indirect font changes incorrectly affecting original buffer
@@ -79080,7 +79080,7 @@
place where the clone-indirect-buffer-hook variable is defined, so
that we can call it from C.
-2022-01-20 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Consider subcommands when deciding to invoke Eshell command directly
@@ -79099,7 +79099,7 @@
(eshell-command-result-p): Use 'eshell-wait-for-subprocess'.
(eshell-test/interp-cmd-external): New test (bug#30725).
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename the textsec-check function to textsec-suspicious-p
@@ -79112,7 +79112,7 @@
(Suspicious Text): Rename the textsec-check function to
textsec-suspicious-p.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the read-face-name completion buffer display samples
@@ -79121,28 +79121,28 @@
* lisp/hi-lock.el (hi-lock-read-face-name): Use read-face-name.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the textsec-domain-suspicious-p warning message
* lisp/international/textsec.el (textsec-domain-suspicious-p):
Improve warning message.
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix error when describing menu items that don't have equivalent keys
* lisp/help-fns.el (help-fns--key-bindings): Never pass nil to
insert.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make textsec-link-suspicious-p have fewer false positives
* lisp/international/textsec.el (textsec-link-suspicious-p):
Attempt to improve the domain-guessing logic.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve how menus are described in *Help*
@@ -79150,7 +79150,7 @@
(help-fns--key-bindings): Split menu/key handling and output menu
bindings separately (bug#52870).
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make system tooltips display in the menu bar on Haiku
@@ -79161,7 +79161,7 @@
if `tooltip-mode' is t and system tooltips are used.
(syms_of_haikumenu): New symbol `tooltip-mode'.
-2022-01-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix Fchar_syntax for non-ASCII in unibyte buffers
@@ -79176,11 +79176,11 @@
multibyte.
* test/src/syntax-tests.el (syntax-char-syntax): New test.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-enable some textsec-tests after recent bidi.c fix
-2022-01-20 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
In Eshell, allow "-n" to suppress the trailing newline for "plain" echo
@@ -79193,14 +79193,14 @@
(eshell/printnl): Simplify; 'eshell-stringify' is equivalent to
calling 'eshell-echo' here.
-2022-01-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'bidi-find-overridden-directionality' for Lisp strings
* src/bidi.c (bidi_find_first_overridden): Don't use ZV for Lisp
strings. Reported by Lars Ingebrigtsen <larsi@gnus.org>.
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make the undelete-frame-mode menu item a toggle
@@ -79209,25 +79209,25 @@
Also enable some options that were disabled on NS, but should no
longer be since NS now supports the tab bar.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make key-valid-p work in Turkey
* lisp/keymap.el (key-valid-p): Inhibit case folding, otherwise
(key-valid-p "I") would return nil in tr_TR environments.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak textsec-link-suspicious-p
* lisp/international/textsec.el (textsec-link-suspicious-p): Don't
mark dates as suspicious.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add test for bug#51733
-2022-01-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of textsec
@@ -79236,28 +79236,28 @@
* doc/lispref/text.texi (Suspicious Text): Improve wording and
indexing.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow suspicious names with some forms of bidi controls
* lisp/international/textsec.el (textsec-name-suspicious-p): Allow
names with bidi-find-overridden-directionality.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve textsec-domain-suspicious-p message
* lisp/international/textsec.el (textsec-domain-suspicious-p):
Improve warning message.
-2022-01-20 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Allow disabling 'undelete-frame-mode' from the menu bar
* lisp/menu-bar.el (menu-bar-file-menu): Add
'disable-undelete-frame-mode' menu item. (Bug#53382)
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document textsec
@@ -79268,21 +79268,21 @@
* lisp/international/textsec-check.el (textsec-check): Adjust doc
string.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check link text domain suspiciousness
* lisp/international/textsec.el (textsec-link-suspicious-p): Check
whether the domain in the link text is suspicious.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Expand textsec-link-suspicious-p checking
* lisp/international/textsec.el (textsec-link-suspicious-p): Check
the text more thoroughly for link-like things.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve textsec-domain-suspicious-p message
@@ -79290,14 +79290,14 @@
Ensure that we're not confusing the user if there's a directional
override in the string we're checking.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new bidi-string-strip-control-characters function
* lisp/international/characters.el
(bidi-string-strip-control-characters): New function.
-2022-01-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make article--check-suspicious-addresses more resilient
@@ -79305,14 +79305,14 @@
more resilient to junk in headers. (But all this should be rewritten
eventually, because the entire process is way too convoluted.)
-2022-01-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `nil' values of the `:position' underline property work correctly
* src/xfaces.c (Finternal_set_lisp_face_attribute): Handle cases
where the underline property `:position' is nil.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Port hourglass display to XCB
@@ -79320,7 +79320,7 @@
(x_hide_hourglass): Use straightforward translations to XCB if
available.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of calls to XRenderQueryExtension after terminal initialization
@@ -79333,7 +79333,7 @@
* src/xterm.h (struct x_display_info): New fields
`xrender_supported_p', `xrender_major' and `xrender_minor'.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement selection ownership on Haiku
@@ -79357,14 +79357,14 @@
(syms_of_haikuselect): Define new subr.
* src/haikuselect.h: New prototypes.
-2022-01-19 Derek Passen <dpassen1@gmail.com> (tiny change)
+2023-04-15 Derek Passen <dpassen1@gmail.com> (tiny change)
Add clojure-lsp support for clojure
* eglot.el (eglot-server-programs): Add clojure-lsp for Clojure.
* README.md: Document the above change.
-2022-01-19 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Suspend temp .elc production when native compiling till when necessary
@@ -79379,42 +79379,42 @@
renaming the temporary .elc make use of `byte-write-target-file' to
write it down and kill the temporary buffer.
-2022-01-19 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Move some code in in `byte-write-target-file'.
* lisp/emacs-lisp/bytecomp.el (byte-write-target-file): New function
spilling code from `byte-compile-file'.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make article--check-suspicious-addresses more resilient
* lisp/gnus/gnus-art.el (article--check-suspicious-addresses):
Don't bug out on mbox-less addresses.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak the previous suspicious Message change
* lisp/gnus/message.el (message-check-recipients)
(message-send-mail): Move the check to after encoding.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make Message check for invalid recipients before sending
* lisp/gnus/message.el (message-check-recipients): Check for
suspicious addresses before sending (bug#51733).
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make textsec-mixed-numbers-p actually work
* lisp/international/textsec.el (textsec-mixed-numbers-p): Fix the
test.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make Gnus check for suspicious headers
@@ -79425,7 +79425,7 @@
headers.
(article--check-suspicious-addresses): New function.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add text for suspicious links
@@ -79437,21 +79437,21 @@
* lisp/net/shr.el (shr-tag-a): Check for sus links.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't overwrite the link text in shr-tag-a for suspicious URLs
* lisp/net/shr.el (shr-tag-a): Tweak how the suspiciousness
warning is handled.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix thinko in textsec-url-suspicious-p
* lisp/international/textsec.el (textsec-url-suspicious-p): Don't
bug out on non-HTTP URLs.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make shr mark links with suspicious URLs
@@ -79464,7 +79464,7 @@
* lisp/net/shr.el (shr-tag-a): Mark suspicious links.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new file textsec-check.el
@@ -79472,7 +79472,7 @@
* lisp/international/textsec.el
(textsec-email-address-header-suspicious-p): Rename.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark whole-script confusables as suspicious domains
@@ -79481,7 +79481,7 @@
to be suspicious. (I think this is what the Unicode standard is
recommending, but I'm not 100% sure.)
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Split textsec-email-address-suspicious-p into two functions
@@ -79489,7 +79489,7 @@
(textsec-email-address-suspicious-p): Made into its own function.
(textsec-email-suspicious-p): Use it and adjust doc strings.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make textsec-suspicious-nonspacing-p work on marks
@@ -79497,18 +79497,18 @@
We're only interested in nonspacing marks, not control characters
in this test.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix recent change for big endian systems where `Atom' is 64 bits
* src/xfns.c (x_create_tip_frame): Cast atoms to xcb_atom_t
and pass a reference to that to xcb_change_property instead.
-2022-01-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/cus-face.el (custom-face-attributes): Expose the lambdas
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Port some X11 tooltip code to XCB
@@ -79518,7 +79518,7 @@
(x_create_tip_frame):
(Fx_show_tip): Port window related code to XCB.
-2022-01-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Deconfuse textsec doc strings slightly
@@ -79530,7 +79530,7 @@
(textsec-email-suspicious-p): Suspiciosness isn't only about
homoglyphs, so don't claim so in the doc strings.
-2022-01-19 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve textsec doc strings
@@ -79538,7 +79538,7 @@
(textsec-local-address-suspicious-p, textsec-name-suspicious-p)
(textsec-suspicious-nonspacing-p): Improve doc strings.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use Cairo XCB surfaces when XCB is available
@@ -79555,7 +79555,7 @@
* src/xwidget.c (x_draw_xwidget_glyph_string): Fix integer
overflow.
-2022-01-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvement in textsec diagnostics
@@ -79563,18 +79563,18 @@
Clarify wording of the strings returned to explain the suspicious
use of nonspacing characters.
-2022-01-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Respect structure of Tramp archive file names
* lisp/net/tramp.el (tramp-make-tramp-file-name):
Respect structure of archive file names.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (Fx_display_mm_width): Fix copy-paste error.
-2022-01-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rename system tooltip variables to `use-system-tooltips'
@@ -79604,7 +79604,7 @@
(syms_of_xfns): Use `use-system-tooltips' instead of the old
platform dependent options.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use more reliable timestamps for some kinds of events on Haiku
@@ -79619,21 +79619,21 @@
* src/haikuterm.c (haiku_read_socket): Use input server time
if provided.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix event timestamp generation on Haiku
* src/haikuterm.c (haiku_read_socket): Use miliseconds for event
time.
-2022-01-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic-tests.el: Fix warning
* test/lisp/emacs-lisp/cl-generic-tests.el (ert): Require at run-time
for `ert--get-explainer`.
-2022-01-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
VC: Fix tests for SCCS and Mtn
@@ -79642,7 +79642,7 @@
* lisp/vc/vc.el (vc-responsible-backend): Fix vc-test--register on SCCS.
-2022-01-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
autoload.el: Fix corner case and avoid encoding issues
@@ -79650,7 +79650,7 @@
autoloading a `cl-defmethod`.
(autoload-rubric): Support non-UTF-8 chars and enforce Unix EOLs.
-2022-01-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve doc strings in textsec.el
@@ -79662,7 +79662,7 @@
(textsec-local-address-suspicious-p, textsec-name-suspicious-p)
(textsec-suspicious-nonspacing-p): Doc fix.
-2022-01-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Remove 'cuneiform-numbers-and-punctuation' from w32font.c
@@ -79670,14 +79670,14 @@
'cuneiform-numbers-and-punctuation'. Reported by Kévin Le Gouguec
<kevin.legouguec@gmail.com>.
-2022-01-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
The name in textsec-email-suspicious-p is optional
* lisp/international/textsec.el (textsec-email-suspicious-p): The
name is optional.
-2022-01-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add textsec functions for verifying email addresses
@@ -79690,7 +79690,7 @@
(textsec-name-suspicious-p, textsec-suspicious-nonspacing-p)
(textsec-email-suspicious-p): New functions.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Intern virtual modifier atoms the smart way on X
@@ -79702,7 +79702,7 @@
* src/xterm.h (struct x_display_info): New fields for virtual
modifier atoms.
-2022-01-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add textsec-domain-suspicious-p
@@ -79718,7 +79718,7 @@
* lisp/international/textsec.el (textsec-domain-suspicious-p): New
function.
-2022-01-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Morka handling of multi-hops in Tramp more consistent
@@ -79749,7 +79749,7 @@
(tramp-test02-file-name-dissect-separate)
(tramp-test07-abbreviate-file-name): Adapt tests.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuterm.c (haiku_read_socket): Add work for frame size bug.
@@ -79759,7 +79759,7 @@
garbaging tooltip frames when FrameResized reports different
dimensions from what they were set to.
-2022-01-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add textsec predicates for different types of confusability
@@ -79768,7 +79768,7 @@
(textsec-mixed-script-confusable-p)
(textsec-whole-script-confusable-p): New functions.
-2022-01-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add textsec support for confusable characters
@@ -79786,25 +79786,25 @@
* lisp/international/textsec.el (textsec-ascii-confusable-p)
(textsec-unconfuse-string): New functions.
-2022-01-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve textsec-restriction-level doc string
* lisp/international/textsec.el (textsec-restriction-level):
Improve doc string.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (Fx_show_tip): Fix typo.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix default value of `no-special-glyphs' frame parameter on Haiku
* src/haikufns.c (haiku_create_frame): Make `no-special-glyphs'
nil by default.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve tooltip implementation on Haiku
@@ -79832,15 +79832,15 @@
(haiku_clear_under_internal_border): Handle cases where the face
cache is NULL.
-2022-01-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/tooltip.el (tooltip-show-help): Fix typo.
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/tooltip.el: Fix warning when built on a non-Haiku system.
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix system tooltips above menus
@@ -79848,7 +79848,7 @@
menu.
(syms_of_haikufns): New symbol `tooltip-reuse-hidden-frame'.
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow non-system tooltips to display above menus on Haiku
@@ -79864,14 +79864,14 @@
* src/haikuterm.c (haiku_read_socket): Ignore resize events on
tooltips.
-2022-01-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(hack-local-variables--find-variables): Use `user-error`
* lisp/files.el (hack-local-variables--find-variables):
Incorrect formatting are not coding errors.
-2022-01-17 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Change rust language server to rust-analyzer
@@ -79895,7 +79895,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/803
-2022-01-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix minor inconsistencies in 'char-script-table'
@@ -79907,42 +79907,42 @@
* lisp/international/fontset.el (script-representative-chars):
Remove scripts no longer used.
-2022-01-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Doc fixes in textsec.el
* lisp/international/textsec.el (textsec-scripts)
(textsec-single-script-p, textsec-covering-scripts): Clarify "script".
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change textsec-mixed-numbers-p to use recommended algorithm
* lisp/international/textsec.el (textsec-mixed-numbers-p): New
function.
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function textsec-mixed-numbers-p
* lisp/international/textsec.el (textsec-mixed-numbers-p): New
function.
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add some textsec-restriction-level comments
* lisp/international/textsec.el (textsec-restriction-level): Add
comment about source of the list of languages.
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add textsec-restriction-level function
* lisp/international/textsec.el (textsec-restriction-level): New
function.
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some doc strings in textsec.el
@@ -79950,14 +79950,14 @@
typo in doc string.
(textsec-covering-scripts): Improve doc string and sort the results.
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid loading the possibly stale unidata-gen.elc file
* admin/unidata/Makefile.in (${unidir}/uni-scripts.el): Fix .elc
staleness. (Should probably be fixed in a different way.)
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for functions that deal with Unicode scripts
@@ -79978,7 +79978,7 @@
* lisp/international/textsec.el: Implement some functions that
work on scripts.
-2022-01-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move the Gnus range functions to a new range.el file
@@ -80077,13 +80077,13 @@
(nnselect-request-update-info):
(nnselect-push-info):
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge from origin/emacs-28
f393d0d441 Fix regression leading to flickering tooltips when the mou...
-2022-01-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Add undelete-frame-max instead of undelete-frame-mode (bug#51883)"
@@ -80091,7 +80091,7 @@
That commit was unilateral and disregarded past discussions.
-2022-01-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "* etc/NEWS: Improve wording of 'undelete-frame-max' (bug#51883)."
@@ -80100,7 +80100,7 @@
The original commit was unilateral and disregarded past
discussions.
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Emacs icon not appearing on Haiku
@@ -80109,14 +80109,14 @@
* src/Makefile.in (Emacs): Add dependency on
`lib-src/be-resources'.
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use BControlLook to determine scroll bar size on Haiku
* src/haiku_support.cc (BScrollBar_default_size): Use
BControlLook instead of legacy constants.
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display override redirect frames in all workspaces on Haiku
@@ -80125,7 +80125,7 @@
(BWindow_set_override_redirect): Set window to display on all
workspaces.
-2022-01-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve handling of INFILE in tramp*-process-file (Bug#53284)
@@ -80142,15 +80142,15 @@
* test/lisp/net/tramp-tests.el (tramp-test28-process-file): Extend test.
-2022-01-17 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS: Improve wording of 'undelete-frame-max' (bug#51883).
-2022-01-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikufns.c (Fx_show_tip): Sync after making window visible.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Really eliminate tooltip flicker on Haiku
@@ -80159,7 +80159,7 @@
didn't actually move when a tip frame is visible.
* src/haikuterm.h (tip_frame): Declare.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate timestamps when using GTK native input
@@ -80167,14 +80167,14 @@
specified in key event.
(xg_filter_key): Translate timestamps.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Exercise wire right after event is filtered for native input
* src/xterm.c (handle_one_xevent): Run a no-op immediately after
an event was filtered by GDK.
-2022-01-16 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add undelete-frame-max instead of undelete-frame-mode (bug#51883)
@@ -80196,7 +80196,7 @@
* src/frame.c (Fdelete_frame): Replace `undelete-frame-mode' with
`undelete-frame-max' in the docstring.
-2022-01-16 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Extend Outline mode with default visibility state
@@ -80209,32 +80209,32 @@
(outline-apply-default-state, outline-show-only-headings)
(outline--show-headings-up-to-level): New functions.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XI2 event filtering for very old versions of libXi
* src/xterm.c (handle_one_xevent): Handle cases where
xev->display is NULL.
-2022-01-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* eglot.el (eglot--server-capable): don't use obsolete name.
-2022-01-16 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Obsolete eglot--plist-keys in favor of map-keys
* eglot.el (eglot--plist-keys): Make into obsolete function alias
for map-keys.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix the xft build
* src/xsettings.h [!HAVE_PGTK]: Include dispextern.h and remove
duplicate definition of Display_Info.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use kMenuWindowFeel on Haiku toolkip windows
@@ -80243,14 +80243,14 @@
* src/haikufns.c (Fx_show_tip): Don't set_avoid_focus manually
since setting tooltip decorations already does that.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make help event generation on Haiku behave closer to X
* src/haikuterm.c (haiku_read_socket): Generate help events more
like how X does it.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce poll time for Haiku file dialogs
@@ -80258,15 +80258,15 @@
processor load by increasing timeout. The timeout is still too
low to be noticable by the user.
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/gtkutil.c (xg_widget_key_press_event_cb): Also raise input signal.
-2022-01-16 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/pgtkterm.c (evq_flush): Shift events one by one
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid focus and allow monospace text in tooltip frames on Haiku
@@ -80277,31 +80277,31 @@
case the default font on tooltip frames, since the bug that was
supposed to work around has already been fixed.
-2022-01-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
e488601849 Update to Org 9.5.2-9-g7ba24c
95640360f0 * lisp/net/dictionary.el (dictionary-context-menu): Use pa...
-2022-01-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
7f36aca99d * lisp/indent.el (tab-first-completion): Fix incorrect cho...
-2022-01-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update modifier meanings even if an xkb_desc was not available
* src/xterm.c (handle_one_event): Always update modifiers after
the keyboard mapping is refreshed.
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xwidget.c (webkit_js_to_lisp): Use correct constant to check size.
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a minor snafu when resizing frames on Haiku
@@ -80309,7 +80309,7 @@
where BWindow::ResizeTo uses BRect-style width and height
instead of actual width and height.
-2022-01-15 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Add some more mailcap tests.
@@ -80322,18 +80322,18 @@
(mailcap--test-viewer): New function.
(mailcap-view-file): New test for mailcap-view-file.
-2022-01-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Remove unnecessary compatibility code
* eglot.el (eglot-mode-map): Remove unnecessary compatibility
code. We already depend on eldoc 0.11.0.
-2022-01-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/mouse.el (context-menu-map): Select clicked window (bug#53249).
-2022-01-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
More fixes for recently committed context-menu additions from bug#52973
@@ -80346,20 +80346,20 @@
* lisp/mouse.el (context-menu-functions): Remove context-menu-online-search.
Add occur-context-menu and dictionary-context-menu (bug#50552).
-2022-01-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Improve backwards-compatibility of eglot-mode-map
* eglot.el (eglot-mode-map): Only bind to eldoc-doc-buffer in Emacs
28.1 or later.
-2022-01-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/search.texi (Special Isearch): Move isearch-char-by-name item back
Put it at the end of the list and still closer to isearch-emoji-by-name.
-2022-01-15 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Remove the remnants of old position mechanism from scratch/correct-warning-pos
@@ -80390,22 +80390,22 @@
* lisp/emacs-lisp/macroexp.el (macroexp--unfold-lambda): Correct
the position argument given to macroexp-warn-and-return.
-2022-01-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* eglot.el (eglot-strict-mode): very minor docfix.
-2022-01-15 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* pcvs-info.el (cvs-mode-toggle-mark): Typo
-2022-01-15 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix setting cursor in pixel-scrolling modes
* src/xdisp.c (redisplay_window): Don't set cursor to any glyph
row past the one that contains EOB. (Bug#53275)
-2022-01-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't strip properties in show-paren-function
@@ -80413,11 +80413,11 @@
(bug#51606) because that makes the offscreen context less
informative.
-2022-01-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* eglot.el (eglot--connect): display seconds on timeout.
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use preferred XIM style without trying to detect if it's supported
@@ -80428,7 +80428,7 @@
* src/xfns.c (best_xim_style): Stop checking if the preferred
input style is supported.
-2022-01-15 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Print server command to events buffer
@@ -80437,7 +80437,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/476
-2022-01-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add emoji-alternate-names variable
@@ -80446,7 +80446,7 @@
(emoji-search): Note usage.
(emoji--choose-emoji): Use it.
-2022-01-15 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
mailcap: Docfix & handle function-viewer case in mailcap-view-file
@@ -80456,7 +80456,7 @@
(mailcap-view-file): Implement the case where the chosen viewer is a
function and not a shell command.
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent pre-edit overlay text from being displayed after a command
@@ -80467,18 +80467,18 @@
(x-preedit-text): Add said function to pre-command-hook. It
will remove itself when triggered.
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/emacsgtkfixed.c (XSetWMSizeHints): Remove some useless code.
-2022-01-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't bug out on improper lists in pp-emacs-lisp-code
* lisp/emacs-lisp/pp.el (pp--format-list): Don't bug out on
improper lists (bug#52917).
-2022-01-15 Tom Tromey <tom@tromey.com>
+2023-04-15 Tom Tromey <tom@tromey.com>
Use "server complete" instead of "complete" in gud-gdb-completions
@@ -80487,7 +80487,7 @@
would be better to send "server complete". This is what Emacs does
for other behind-the-scenes commands it sends (bug#52922).
-2022-01-15 Alex Bochannek <alex@bochannek.com>
+2023-04-15 Alex Bochannek <alex@bochannek.com>
(gnus-summary-hide-thread): Fix thread hiding for dummy roots.
@@ -80495,14 +80495,14 @@
hiding work when using dummy `gnus-summary-make-false-root'
(bug#52923).
-2022-01-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve the with-output-to-temp-buffer doc string
* lisp/subr.el (with-output-to-temp-buffer): Clarify the point of
the macro (bug#53265).
-2022-01-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Add command to invoke a search engine"
@@ -80510,7 +80510,7 @@
Similar functionality has been added to webjump, so this commit duplicated that.
-2022-01-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -80518,7 +80518,7 @@
ac2cdb8a46 * lisp/progmodes/xref.el (xref-file-name-display): Fix doc...
c05864dd25 Avoid another segfault in 'face_at_buffer_position'
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Find a way to make lowering frames work on Haiku
@@ -80527,14 +80527,14 @@
* src/haikuterm.c (haiku_frame_raise_lower): Implement a hack to
lower frames.
-2022-01-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Filter key release events when using native input without having XIM
* src/xterm.c (handle_one_xevent): Also check for XI key
release events when using native input on a build without XIM.
-2022-01-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix native input when using core input events
@@ -80543,7 +80543,7 @@
* src/xterm.c (handle_one_xevent): Also check for KeyRelease
events.
-2022-01-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove non-functional configure test
@@ -80558,32 +80558,32 @@
(xim_close_dpy): Just cast client data to void * and hope that
the compiler keeps quiet.
-2022-01-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
pcvs-info.el: Prefer `declare-function` over `autoload`
* lisp/vc/pcvs-info.el (cvs-mode-toggle-mark): Use `declare-function`
to silence the byte-compiler warning.
-2022-01-14 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
* lisp/indent.el (indent-for-tab-command): Use 'eq' for symbols.
-2022-01-14 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
indent-for-tab-command: Deal with large point or modiff values.
* lisp/indent.el (indent-for-tab-command): Don't use 'eq' to compare
integers that aren't guaranteed to be fixnums.
-2022-01-14 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Simplify code for 'indent-for-tab-command' slightly.
* lisp/indent.el (indent-for-tab-command): Don't use a one-element
list for SYN.
-2022-01-14 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Merge branch 'master' into scratch/correct-warning-pos
@@ -80595,7 +80595,7 @@
(macroexp--expand-all): Fix bug#53227 and bug#46636
-2022-01-14 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Commit fixes and enhancements to the scratch/correct-warning-pos branch
@@ -80644,68 +80644,68 @@
* src/fns.c (Fput): No longer strip symbol positions from any of the
arguments.
-2022-01-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(macroexp--expand-all): Fix bug#53227 and bug#46636
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Don't mis-expand
invalid funcalls.
-2022-01-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Use MD5 for thumb filename generation
* lisp/image-dired.el (image-dired-thumb-name): Revert back to MD5 for
file name generation to preserve backwards-compatibility. (Bug#53229)
-2022-01-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c: Add a small writeup on input handling on X.
Hopefully I will extend this section with details about more
aspects of X11 support in the future.
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
Skip ffap test on some systems
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make function-alias-p use a better error symbol
* lisp/subr.el (function-alias-p): Use the same error symbol as
`indirect-function'.
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't have ffap interpret ":/bin" as the current directory
* lisp/ffap.el (ffap-file-at-point): Don't interpret :/bin as the
current directory (bug#52441).
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a `shortdoc' convenience alias
* lisp/emacs-lisp/shortdoc.el (shortdoc): Add a convenience alias
(bug#52968).
-2022-01-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix leak when refs are sent to a frame during destruction on Haiku
* src/haikuterm.c (haiku_read_socket): Free b->ref if it was
sent from a frame that was destroyed.
-2022-01-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure the X mouse position hook always looks at an X frame
* src/xterm.c (XTmouse_position): Check that f1 is an X frame.
-2022-01-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
spelling-tests.el: use ert-with-temp-directory
@@ -80714,7 +80714,7 @@
'ert-with-temp-file', and restore the prefix/suffix values used
originally with 'make-temp-file'.
-2022-01-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
spelling-tests.el: ignore errors when checking for ispell
@@ -80726,14 +80726,14 @@
ispell check in ignore-errors, as ispell-valid-dictionary-list can
signal an error.
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new context menu functions to the context-menu-functions type
* lisp/mouse.el (context-menu-functions): Add new menu functions
to the defcustom type list (bug#52973).
-2022-01-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add command to invoke a search engine
@@ -80741,21 +80741,21 @@
(eww-search-prefix): Declare variable from eww.el
(mouse-online-search-at-point): Add new command
-2022-01-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Implement context-menu-mode support for hi-lock
* hi-lock.el (hi-lock-symbol-at-mouse): Add new command
(hi-lock-context-menu): Add new function
-2022-01-14 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Implement context-menu-mode support for man pages
* man.el (Man-at-mouse): Add new command
(Man-context-menu): Add new function
-2022-01-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Fix @item in the Emacs manual
@@ -80763,7 +80763,7 @@
* doc/emacs/search.texi (Special Isearch): Remove @item.
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mailcap setup when no mailcap files exist
@@ -80771,7 +80771,7 @@
populate mailcap--computed-mime-data even if none of the files
exist (bug#53009).
-2022-01-14 Lucien Cartier-Tilet <lucien@phundrak.com> (tiny change)
+2023-04-15 Lucien Cartier-Tilet <lucien@phundrak.com> (tiny change)
(battery-status-function) Fix errors in Termux
@@ -80780,7 +80780,7 @@
patch makes Emacs verify if they are readable before it attemps
reading them (bug#53026).
-2022-01-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve some nntp/nnimap error messages
@@ -80791,26 +80791,26 @@
* lisp/gnus/nnimap.el (nnimap-retrieve-headers): Improve error
messages (bug#53070).
-2022-01-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/xref.el (xref-query-replace-in-results): Fix prefix-arg.
Use current-prefix-arg.
-2022-01-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* doc/emacs/search.texi (Special Isearch): Put related items together.
Move isearch-char-by-name closer to isearch-emoji-by-name.
-2022-01-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update docs of 'xref-query-replace-in-results'
* doc/emacs/maintaining.texi (Identifier Search): Update the
documentation of 'xref-query-replace-in-results'.
-2022-01-14 Sergey Vinokurov <serg.foo@gmail.com>
+2023-04-15 Sergey Vinokurov <serg.foo@gmail.com>
Use assq_no_quit on all local_var_alist accesses
@@ -80821,7 +80821,7 @@
* src/data.c (Flocal_variable_p): Use assq_no_quit instead of
open-coding the search on local_var_alist.
-2022-01-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'xref-find-references-and-replace'
@@ -80830,7 +80830,7 @@
* doc/emacs/maintaining.texi (Identifier Search): Document
'xref-find-references-and-replace'.
-2022-01-14 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Fix python-eldoc affecting unrelated comint processes
@@ -80839,13 +80839,13 @@
processes. Modify the behaviour of only the current python
process (bug#53219).
-2022-01-14 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve function-alias-p documentation
* doc/lispref/functions.texi (Defining Functions): Improve the text.
-2022-01-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Try to make sure an XKB desc is always available
@@ -80853,32 +80853,32 @@
unavailable for some reason upon handling an XKB map or keyboard
notify event.
-2022-01-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix byte-compilation warning in pcvs-info
* lisp/vc/pcvs-info.el (cvs-mode-toggle-mark): Fix
byte-compilation warning.
-2022-01-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
34ca4ff9a5 Fix Edebug specification for inline functions (Bug#53068).
3c06c37a8b Remove mention of removed `gnus-treat-play-sounds' variabl...
-2022-01-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* INSTALL: Document using Emacs on alternative window systems.
-2022-01-13 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
xref-find-references-and-replace: New command
* lisp/progmodes/xref.el (xref-find-references-and-replace):
New command.
-2022-01-13 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Steamline xref-query-replace-in-results
@@ -80886,21 +80886,21 @@
Steamline the most common scenario
(https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg00864.html).
-2022-01-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix out of bounds bitmap access on Haiku
* src/haiku_draw_support.cc (BView_DrawBitmapWithEraseOp): Fix
out of bounds access to bitmap data.
-2022-01-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Refresh keyboard mapping upon receiving new XKB map
* src/xterm.c (handle_one_xevent): Call
XkbRefreshKeyboardMapping where required.
-2022-01-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-keymap to easy-mmode-defmap
@@ -80910,7 +80910,7 @@
* lisp/emacs-lisp/easy-mmode.el (easy-mmode-defmap): Document as
deprecated.
-2022-01-13 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
João Távora <joaotavora@gmail.com>
Change from symbol-at-point to thing-at-point
@@ -80921,7 +80921,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/385
-2022-01-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'isearch-emoji-by-name'
@@ -80934,7 +80934,7 @@
documentation of 'isearch-emoji-by-name'; move it out of the
enumeration that deals with non-ASCII characters in general.
-2022-01-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix frame-undeletion menu items
@@ -80942,18 +80942,18 @@
menu items and their help-echo. Don't show "Undelete Frame"
in the menu unless there is a frame to undelete.
-2022-01-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid scrolling display when point moves into invisible text
* src/xdisp.c (try_cursor_movement): Handle point moving into
invisible text. (Bug#53215)
-2022-01-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* doc/lispref/functions.texi (Defining Functions): Fix thinko.
-2022-01-13 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Support optional diagnostic.tags
@@ -80975,29 +80975,29 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/794
-2022-01-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve preserving X coordinate during scroll commands
* src/window.c (window_scroll_pixel_based): Don't unnecessarily
move the iterator. (Bug#53220)
-2022-01-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/jsonrpc.el (Version): Bump to 1.0.15.
-2022-01-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix passive input focus when the pointer moves over inferiors
* src/xterm.c (handle_one_xevent): Don't detect focus on entry
and exit events if we're not on the top window.
-2022-01-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
* eglot.el: improve commentary section.
-2022-01-13 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Support racket-langserver
@@ -81007,7 +81007,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/694
-2022-01-13 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
spelling-tests.el: actually create a temp directory
@@ -81018,7 +81018,7 @@
Pass the :directory arg to ert-with-temp-file so we actually
create a directory.
-2022-01-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Filter key release events through GTK when using native input
@@ -81026,28 +81026,28 @@
release events.
* src/xterm.c (x_filter_event): Also filter release events.
-2022-01-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make ert explainers work on function aliases
* lisp/emacs-lisp/ert.el: New function.
(ert--expand-should-1): Use it (bug#53178).
-2022-01-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid infloops in help-fns--analyze-function with aliases
* lisp/help-fns.el (help-fns--analyze-function): Use
function-alias-p to avoid infloops.
-2022-01-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function function-alias-p
* doc/lispref/functions.texi (Defining Functions): Document it.
* lisp/subr.el (function-alias-p): New function (bug#53178).
-2022-01-13 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Undelete deleted frames.
@@ -81070,7 +81070,7 @@
See bug#51883.
-2022-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK native input methods randomly freezing input
@@ -81078,13 +81078,13 @@
connection causing pselect to return immediately from input.
(bug#53160)
-2022-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Block input when drawing fringe bitmaps on Haiku
* src/haikuterm.c (haiku_draw_fringe_bitmap): Block input.
-2022-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XI2 focus events on X toolkit builds
@@ -81093,11 +81093,11 @@
* src/xterm.c (x_detect_focus_change): Enable XI2 focus code on
Xt.
-2022-01-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/jsonrpc.el (jsonrpc--debug): Use apply on format args list.
-2022-01-12 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Rework setting/unsetting of gnus-registry-enabled
@@ -81120,26 +81120,26 @@
`gnus-registry-clear', as that will do all the necessary
work (including calling `gnus-registry-unload-hook')
-2022-01-12 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge remote-tracking branch 'origin/emacs-28' into trunk
-2022-01-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/subr.el (remove-hook): Use set-variable-value-history for value history
-2022-01-12 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Bump eglot version to 1.8
* eglot.el (Version): Bump to 1.8.
* NEWS.md (1.8): Rename header from "(upcoming)".
-2022-01-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/leim/quail/emoji.el: New file (bug#52605).
-2022-01-12 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Add isearch-emoji-by-name
@@ -81151,7 +81151,7 @@
mention the new command.
* etc/NEWS: And advertise it.
-2022-01-12 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Prefer unexport in Makefiles
@@ -81159,7 +81159,7 @@
* lisp/Makefile.in, test/Makefile.in:
Use unexport for EMACSLOADPATH.
-2022-01-12 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Avoid user environment interfering with bootstrap
@@ -81168,7 +81168,7 @@
Don't export user environment variables that can affect running
emacs. (Bug#53038)
-2022-01-12 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Follow POSIX/GNU argument conventions for 'eshell-eval-using-options'
@@ -81190,7 +81190,7 @@
* etc/NEWS: Announce the change.
-2022-01-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations with variable-weight fonts
@@ -81201,7 +81201,7 @@
with Fontconfig < v2.11.91, for which the fix in
'ftfont_pattern_entity' cannot work. (Bug#52888)
-2022-01-12 Sean Whitton <spwhitton@spwhitton.name>
+2023-04-15 Sean Whitton <spwhitton@spwhitton.name>
Skip virtual FcPattern entries for variable weight fonts
@@ -81209,14 +81209,14 @@
* src/ftfont.c (ftfont_pattern_entity): Skip meta/virtual FcPattern
entries for variable weight fonts (Bug#52888).
-2022-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use correct coordinates when translating XI2 crossing events
* src/xwidget.c (xwidget_motion_or_crossing): Use displaced
position instead of event position.
-2022-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore scroll lock key on Haiku
@@ -81224,7 +81224,7 @@
value for keys that shouldn't be sent to Emacs.
(DispatchMessage): Respect said value.
-2022-01-12 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Don't error out on unsupported diagnostic.codedescription
@@ -81242,14 +81242,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/768
-2022-01-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate more keys on Haiku
* src/haiku_support.cc (keysym_from_raw_char): Translate print,
scroll lock, and pause/break.
-2022-01-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't do Gnus article emphasis in text/html parts
@@ -81258,14 +81258,14 @@
(especially with *...* that's boldified, which typically becomes
much wider).
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix arity error when trying to add a file to an automake project
* lisp/cedet/ede/project-am.el (project-add-file): Add ignored
_FILE parameter like the other `project-add-file' methods.
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of text decorations in the mode line
@@ -81275,7 +81275,7 @@
* src/xterm.c (x_draw_glyph_string): Don't constrain decorations
if the row is a tab or modeline.
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid unnecessary lookup of min and max keycodes when XKB is present
@@ -81283,32 +81283,32 @@
XDisplayKeycodes when that information is available in the xkb
desc and is not needed anyway.
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore resetting devices upon some events we don't have to handle
* src/xterm.c (handle_one_xevent): Ignore SlaveSwitch
DeviceChanged events.
-2022-01-11 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Merge branch 'master' into scratch/correct-warning-pos
-2022-01-11 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Remove the filename argument from the command line after an ELC+ELN build
This fixes bug #53164. Without this fix, bootstrap-emacs loads the source
file uselessly into a buffer after completing the compilation.
-2022-01-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/window.el (display-comint-buffer-action): Move to the end of file.
Move closer to pop-to-buffer-same-window after its default value
display-buffer--same-window-action is defined.
-2022-01-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc.el (vc-shrink-buffer-window): New function (bug#51062).
@@ -81317,13 +81317,13 @@
(vc-log-finish-functions): New variable.
(vc-log-internal-common): Use it.
-2022-01-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* src/window.c (other-window-scroll-default): New variable (bug#51210).
(Fother_window_for_scrolling): Use it.
-2022-01-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
More fixes for display-comint-buffer-action
@@ -81338,13 +81338,13 @@
https://lists.gnu.org/archive/html/emacs-devel/2021-12/msg02964.html
-2022-01-11 Morgan Smith <Morgan.J.Smith@outlook.com>
+2023-04-15 Morgan Smith <Morgan.J.Smith@outlook.com>
Fix display-comint-buffer-action default behavior (closes bug#52878)
* lisp/window.el (display-comint-buffer-action): Make it an alist.
-2022-01-11 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Clean up filelock code related to errno
@@ -81359,14 +81359,14 @@
(Ffile_locked_p): Use them, without assuming anything about errno
value sign.
-2022-01-11 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix userlock diagnostic
* lisp/userlock.el (ask-user-about-lock):
Fix typo (missing paren) in diagnostic.
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop ungrabbing when freeing XI devices
@@ -81378,21 +81378,21 @@
* src/xterm.c (x_init_master_valuators): Stop calling
XIUngrabDevice on all devices.
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make native input work on GTK 2
* src/gtkutil.c (xg_create_frame_widgets): Allow focusing fixed
widget.
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop decoding GTK event strings when using native input
* src/gtkutil.c (xg_widget_key_press_event_cb): Stop decoding
event strings.
-2022-01-11 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-minor-mode-cycle--bind): Fix outline-on-heading-p.
@@ -81403,20 +81403,20 @@
the recent change that moved cycling keys from font-lock text properties
to outline-minor-mode keymap with :filter.
-2022-01-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
8db5f82d45 ; Fix tabulated-list-mode tests after revert
-2022-01-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix creating GUI frames in an automatically started server on Haiku
* lisp/term/haiku-win.el: Correct specification of
`display-format-alist'.
-2022-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(files-tests--with-buffer-offer-save): Turn it into a function
@@ -81425,18 +81425,18 @@
(files-tests-save-buffers-kill-emacs--asks-to-save-buffers)
(files-tests-buffer-offer-save): Adjust calls accordingly
-2022-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(hack-one-local-variable-constantp): Mark as obsolete
* lisp/files.el (hack-one-local-variable-constantp): Mark as obsolete.
(hack-one-local-variable-eval-safep): Use `macroexp-const-p` instead.
-2022-01-10 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge remote-tracking branch 'origin/emacs-28' into trunk
-2022-01-10 Fredrik Bergroth <fbergroth@gmail.com>
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com>
Support autoimporttext from pyright language server
@@ -81444,7 +81444,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/769
-2022-01-10 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Use 'auth-info-password' in tests
@@ -81453,7 +81453,7 @@
(auth-source-test-netrc-create-secret, auth-source-delete):
Use 'auth-info-password' instead of ad hoc code.
-2022-01-10 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Update for the recent change
@@ -81461,24 +81461,24 @@
'auth-source-pick-first-password' and 'auth-info-password'.
Update the 'auth-source-search' example.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use window beneath mouse for determining scroll deltas on Haiku
* src/haikuterm.c (haiku_read_socket): Use window underneath
wheel for calculating scroll deltas.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/filelock.c (lock_if_free): Fix Haiku positive errno check.
-2022-01-10 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Assume C99 when defining pD
* src/lisp.h (pD): Assume C99 or later, to simplify the ifdefs.
-2022-01-10 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Add tooltip describing pending requests
@@ -81486,7 +81486,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/784
-2022-01-10 Karl Fogel <kfogel@red-bean.com>
+2023-04-15 Karl Fogel <kfogel@red-bean.com>
Document external maintenance of some packages
@@ -81502,7 +81502,7 @@
Date: Sat, 04 Dec 2021 15:14:59 -0600
Message-ID: <87zgpgax7w.fsf@red-bean.com>
-2022-01-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Add diff-mode-read-only to enable shorter keys in diff-mode
@@ -81524,7 +81524,7 @@
* lisp/vc/vc.el (vc-diff-internal): Set buffer-read-only to t
before calling diff-mode that will set diff-mode-read-only.
-2022-01-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el: Don't set outline-minor font-lock text property 'keymap'.
@@ -81545,21 +81545,21 @@
(outline--insert-open-button, outline--insert-close-button):
Remove :parent outline-minor-mode-cycle-map.
-2022-01-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 'exchange-point-and-mark' in 'transient-mark-mode'
* lisp/simple.el (exchange-point-and-mark): Don't deactivate mark
when 'transient-mark-mode' is ON. (Bug#53150)
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement recent improvements to underline display on PGTK
* src/pgtkterm.c (pgtk_draw_glyph_string): Respect new underline
face fields.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent text decorations from overwriting surrounding areas on X
@@ -81568,7 +81568,7 @@
(x_draw_glyph_string): Constrain decoration width to current
text area.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow controlling the underline position of faces
@@ -81589,11 +81589,11 @@
keyword.
(syms_of_xfaces): New symbol `:position'.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* doc/emacs/xresources.texi (GTK resources): Fix dead links.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Load X resources from a settings file like other programs on Haiku
@@ -81605,39 +81605,39 @@
* src/haikuterm.c (get_string_resource): Look in the settings
file if there's nothing in the in-memory resource database.
-2022-01-10 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* admin/MAINTAINERS: Add Tramp compatibility note
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use phys cursor height instead of font base to set spot Y
* src/xfns.c (xic_set_xfontset): Use `phys_cursor_height' to
avoid the spot potentially appearing at an incorrect position.
-2022-01-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't set callbacks on XIC when adjusting spot if callbacks are off
* src/xfns.c (xic_set_preeditarea): Don't set callbacks if the
XIC style is not XIMPreeditCallbacks. (bug#53146)
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make toggling native input methods via shift work again
* src/xterm.c (handle_one_xevent): Start filtering XI key
release events again, but drop the event if the IM asked.
-2022-01-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make old elide-head commands wrappers for mode
* lisp/elide-head.el (elide-head, elide-head-show): Make into
wrappers around elide-head-mode.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't hard code key codes on Haiku
@@ -81649,7 +81649,7 @@
* src/haikuterm.c (haiku_read_socket): Don't call be_map_key,
and use keysym field if provided instead.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Map some more keypad keys on Haiku
@@ -81658,7 +81658,7 @@
* src/haiku_support.h (BMapKey, be_map_key): Adjust accordingly.
* src/haikuterm.c (haiku_read_socket): Likewise.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build without X11 I18N
@@ -81667,7 +81667,7 @@
(x_draw_window_cursor):
(x_term_init): Fix build without HAVE_X_I18N.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix off-by-one errors in caret position application
@@ -81676,11 +81676,11 @@
(xic_preedit_draw_callback): Constrain caret position to
SCHARS (arg) - 1.
-2022-01-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/abbrev.el (edit-abbrevs-mode-map): Use defvar-keymap.
-2022-01-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Do interactive mode tagging for edit-abbrevs-mode
@@ -81689,7 +81689,7 @@
tagging for edit-abbrevs-mode.
(edit-abbrevs-mode): Make non-interactive.
-2022-01-09 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Properly print error message of eglot-alternatives
@@ -81699,7 +81699,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/786
-2022-01-09 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Add up-to-date server executables for html/css/json
@@ -81719,11 +81719,11 @@
prefer to direct users to the corresponding repo, which contains
appropriate installation instructions, in the README.
-2022-01-09 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/gnus/nnnil.el (nnnil-close-server): Add new `defs` arg
-2022-01-09 Ivan Sokolov <ivan-p-sokolov@ya.ru>
+2023-04-15 Ivan Sokolov <ivan-p-sokolov@ya.ru>
Add doc-string indices to easy-mmode-{defmap,defsyntax}
@@ -81731,7 +81731,7 @@
(easy-mmode-defsyntax): Declare third argument as doc-string.
(Bug#52978)
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix filelock.c for Haiku
@@ -81742,7 +81742,7 @@
or -2, and reverse sign of system errors on Haiku. (No Haiku
error occupies -1 or -2.)
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add an option to display the cursor at the beginning of any preedit text
@@ -81753,7 +81753,7 @@
(x-display-cursor-at-start-of-preedit-string): New user option.
(x-preedit-text): Respect new option.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Pass through caret position from native GTK input methods
@@ -81764,7 +81764,7 @@
(xic_preedit_caret_callback, xic_preedit_draw_callback):
Constrain caret position to the string length as well.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix specification of caret position
@@ -81774,13 +81774,13 @@
* src/xterm.c (handle_one_xevent): Stop filtering XI release
events. This caused more problems than it fixed.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing part of last commit
* src/xterm.h (struct x_output): Add field `preedit_caret'.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display caret in preedit text where the input method asked
@@ -81790,7 +81790,7 @@
(xic_preedit_done_callback): Clear caret position.
(xic_preedit_draw_callback): Set caret position appropriately.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix native GTK input for cyrillic input methods
@@ -81799,7 +81799,7 @@
* src/xterm.c (handle_one_xevent): Fix build without
HAVE_X_I18N.
-2022-01-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New minor mode elide-head-mode
@@ -81820,50 +81820,50 @@
(elide-head-tests-elide-head-with-prefix-arg)
(elide-head-tests-show): Make obsolete.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/term/x-win.el (x-preedit-text): Make edit overlay window local.
-2022-01-09 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Add vim-language-server for vimrc-mode
* README.md: Advertise.
* eglot.el (eglot-server-programs): Add vim-language-server.
-2022-01-09 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Add cmake-language-server for cmake-mode
* README.md: Advertise.
* eglot.el (eglot-server-programs): Add cmake-language-server.
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Reduce flicker on Haiku Emacs tooltips
* src/haikuterm.c (haiku_read_socket): Ignore motion events from
tooltip frames.
-2022-01-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
30f1bdb41f Clarify docstring of package-native-compile
c54fda643d Fix Subject "simplification" in Rmail
-2022-01-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/image.c (syms_of_image): Declare support for webp on Haiku.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for native webp images on Haiku
* src/haikuimage.c (haiku_can_use_native_image_api): Add support
for `webp' images.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make caps lock work on Haiku
@@ -81872,7 +81872,7 @@
(DispatchMessage): Map keys with the appropriate map if caps
lock is on.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some problems with Haiku font display
@@ -81880,7 +81880,7 @@
errors.
(BFont_open_pattern): Set size before setting family and style.
-2022-01-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Un-reverse references in xref buffer
@@ -81888,7 +81888,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/763
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement override redirect on Haiku
@@ -81901,7 +81901,7 @@
(haiku_set_override_redirect): New function.
(haiku_frame_parm_handlers): Add `haiku_set_override_redirect'
-2022-01-08 Martin Carlson <spearalot@gmail.com> (tiny change)
+2023-04-15 Martin Carlson <spearalot@gmail.com> (tiny change)
Add variable to withhold the init req process id
@@ -81911,14 +81911,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/722
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some portability bugs in gtkutil.c
* src/gtkutil.c (xg_widget_key_press_event_cb): Surround raising
SIGIO with USABLE_SIGIO.
-2022-01-08 NA <na@aisrntairetnraoitn.com> (tiny change)
+2023-04-15 NA <na@aisrntairetnraoitn.com> (tiny change)
Support language server for html, css, json and docker
@@ -81928,7 +81928,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/204
-2022-01-08 Stefan Kangas <stefankangas@gmail.com>
+2023-04-15 Stefan Kangas <stefankangas@gmail.com>
Minor checkdoc fixes
@@ -81948,21 +81948,21 @@
* eglot.el (xref-backend-identifier-completion-table): Fix error
format.
-2022-01-08 Omar Polo <op@omarpolo.com>
+2023-04-15 Omar Polo <op@omarpolo.com>
Add lua-lsp support for lua-mode
* eglot.el (eglot-server-programs): Add support for the lua-lsp server for lua.
* README.md: Document the above change.
-2022-01-08 jgart <47760695+jgarte@users.noreply.github.com> (tiny change)
+2023-04-15 jgart <47760695+jgarte@users.noreply.github.com> (tiny change)
Add support for the mint language server
* eglot.el (eglot-server-programs): Add support for the mint language server.
* README.md: Document the above change.
-2022-01-08 Illia Danko <illia@aigent.com> (tiny change)
+2023-04-15 Illia Danko <illia@aigent.com> (tiny change)
Add pyright language server support for python-mode
@@ -81970,26 +81970,26 @@
python-mode.
* README.md: Document the above change.
-2022-01-08 Philipp Edelmann <edelmann@fs.tum.de> (tiny change)
+2023-04-15 Philipp Edelmann <edelmann@fs.tum.de> (tiny change)
Use fortls also for fortran-mode
* eglot.el (eglot-server-programs): Use fortls also for fortran-mode.
-2022-01-08 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Add yaml-language-server for yaml-mode
* eglot.el (eglot-server-programs): Add yaml-language-server.
* README.md: Mention yaml-language-server.
-2022-01-08 lorniu/sz <lorniu@gmail.com> (tiny change)
+2023-04-15 lorniu/sz <lorniu@gmail.com> (tiny change)
Use `locate-user-emacs-file` instead of `concat`
* eglot.el (eglot--eclipse-jdt-contact): Use locate-user-emacs-file.
-2022-01-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -81998,28 +81998,28 @@
# Conflicts:
# lisp/ldefs-boot.el
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure native keypresses are received immediately on GTK
* src/gtkutil.c (xg_widget_key_press_event_cb): Send input
available signal.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pinch-to-scale on real X servers and NS
* lisp/face-remap.el (text-scale-pinch): Stop waiting for
more events.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly translate GDK virtual modifiers when using native input
* src/gtkutil.c (xg_virtual_mods_to_x): New function.
(xg_widget_key_press_event_cb): Translate modifiers to X first.
-2022-01-08 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt Tramp for `auth-info-password'
@@ -82028,11 +82028,11 @@
* lisp/net/tramp.el (tramp-read-passwd): Use it.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuterm.c (haiku_clear_frame): Fix clipping.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add an option to rely on passive touch grabs on X
@@ -82045,7 +82045,7 @@
`x-input-grab-touch-events'.
(syms_of_xterm): New option `x-input-grab-touch-events.
-2022-01-08 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of native input methods
@@ -82053,18 +82053,18 @@
(Unibyte Mode): Document user-level features of native input
methods.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/cus-start.el (standard): Fix standard customizables for PGTK.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build on PGTK
* src/gtkutil.c (xg_mark_data):
* src/gtkutil.h (xg_filter_key): Ifdef out definitions on PGTK.
-2022-01-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow using GTK+ to handle input methods on X
@@ -82096,18 +82096,18 @@
`prefer_native_input'.
(struct x_output): New field `im_context'.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (pgtk_enqueue_string): Free return of g_utf8_to_ucs4.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Call EVENT_INIT in some places
* src/xfns.c (xic_preedit_done_callback):
(xic_preedit_draw_callback): Call EVENT_INIT.
-2022-01-07 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Add `auth-info-password' and use it instead of ad hoc code
@@ -82128,14 +82128,14 @@
* lisp/net/rcirc.el (rcirc): Likewise (fixes a bug: the possibility
that password might be a function was not handled).
-2022-01-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix "C-SPC C-SPC" after "C-x C-x"
* lisp/simple.el (exchange-point-and-mark): Fix what the command
does when 'transient-mark-mode' is OFF. (Bug#52896)
-2022-01-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements for 'pgtk' documentation
@@ -82147,20 +82147,20 @@
* doc/lispref/commands.texi (Misc Events): Fix @example and
markup.
-2022-01-07 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Handle internal events specially on PGTK
* src/xgselect.c (xg_select): If there are pending events already,
don't sleep.
-2022-01-07 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Write documentation about ARG of the preedit-text event on PGTK
* doc/lispref/commands.texi (Misc Events):
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix special-cased cursor foreground and background correctly on PGTK
@@ -82168,35 +82168,35 @@
(x_set_background_color): Set cursor color as well if
appropriate. (bug#53073)
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add documentation for the `none' input style
* doc/emacs/xresources.texi (Table of Resources): Document
missing value of `inputStyle'.
-2022-01-07 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
* admin/MAINTAINERS: Describe Modus themes as externally maintained package
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* doc/lispref/display.texi (Face Attributes): Update doc for new values.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation of the preedit-text event
* doc/lispref/commands.texi (Misc Events): Document how
`preedit-text' events are used.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable new input method behaviour by default on X
* src/xfns.c (supported_xim_styles): Default to STYLE_NONE.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow controlling the X input method style
@@ -82218,11 +82218,11 @@
(STYLE_OFFTHESPOT, STYLE_OVERTHESPOT, STYLE_ROOT):
(STYLE_CALLBACK, STYLE_NONE): New macros.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikuselect.c: Fix implicit declaration of free.
-2022-01-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display pre-edit information from X input methods
@@ -82272,11 +82272,11 @@
* src/xterm.h (struct x_output): New fields `preedit_size',
`preedit_chars' and `preedit_active'.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* admin/MAINTAINERS: Add myself for some things.
-2022-01-06 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Add rcirc-when command
@@ -82284,18 +82284,18 @@
* etc/NEWS: Document rcirc-when.
* lisp/net/rcirc.el (rcirc-when): Add command.
-2022-01-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of font-related face attributes
* lisp/faces.el (set-face-attribute): Mention aliases of face
attributes. (Bug#53050)
-2022-01-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* admin/MAINTAINERS: Describe Tramp as externally maintained package
-2022-01-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Fix selection of fonts that don't have regular weight"
@@ -82307,7 +82307,7 @@
for the details.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some more useless clipping stack calls on Haiku
@@ -82316,7 +82316,7 @@
(haiku_draw_text_decoration): Get rid of calls to
BView_StartClip and BView_EndClip.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Generate TOUCH_END_EVENTs on NS when mwheel momentum is disabled
@@ -82324,7 +82324,7 @@
TOUCH_END_EVENTs on the first event whose momentum phase is not
NSEventPhaseNone.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure touch end events aren't sent too many times
@@ -82332,7 +82332,7 @@
twice if two valuators have their masks set without a change in
value.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add group to xkey state before filtering it on XI_KeyRelease
@@ -82340,7 +82340,7 @@
before filtering an XI2 key release event. This fixes fcitx on
some systems.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GNUstep compilation warnings
@@ -82354,7 +82354,7 @@
(ns_run_loop_break): Fix old-style definition.
([EmacsView toggleFullScreen:]): Remove unused variable.
-2022-01-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix duplicate overhang display on GNUstep
@@ -82363,11 +82363,11 @@
* src/nsterm.m (ns_draw_glyph_string): Clip to glyph string rect
when displaying overhangs.
-2022-01-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Check for errors when kbd map.
-2022-01-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
cl-generic.el: Fix bug#46722
@@ -82376,7 +82376,7 @@
* lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher):
Copy the `dispatch` arg before storing it into the hash-table.
-2022-01-05 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/paragraphs.el (repunctuate-sentences): Use filter variable.
@@ -82387,14 +82387,14 @@
Remove regexp group from spaces as was before.
https://lists.gnu.org/archive/html/emacs-devel/2022-01/msg00395.html
-2022-01-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in cvs-status-mode-map keymap
* lisp/vc/cvs-status.el (cvs-status-mode-map): Fix typo in keymap
definition.
-2022-01-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix info-lookup docs and "C-h S" in major-modes with no manuals
@@ -82405,7 +82405,7 @@
(info-lookup-change-mode): Topic values can have their `:mode' as
a cons cell, not just a mode's symbol; support that.
-2022-01-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable subpixel antialiasing on the Cairo font driver on Haiku
@@ -82418,11 +82418,11 @@
* src/haiku_support.h (be_use_subpixel_antialising): New
functions.
-2022-01-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/buff-menu.el (Buffer-menu-mode-map): Use defvar-keymap.
-2022-01-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Resolve clipping related mysteries on Haiku
@@ -82435,7 +82435,7 @@
(haiku_draw_glyph_string): Stop saving face when drawing
overhangs.
-2022-01-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure mouse face doesn't stay on the cursor after it is cleared
@@ -82459,14 +82459,14 @@
(set_glyph_string_background_width): Only adjust width if the
row holding the cursor is also mouse_face_p.
-2022-01-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Simply conditions for mouse face display when drawing cursor on Haiku
* src/haikuterm.c (haiku_draw_stretch_glyph_string): Simplify
conditions for mouse face display.
-2022-01-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove some unnecessary graphics state saves on Haiku
@@ -82483,7 +82483,7 @@
(haiku_draw_image_glyph_string): Remove unnecessary calls to
BView_StartClip and BView_EndClip.
-2022-01-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -82493,7 +82493,7 @@
# Conflicts:
# etc/NEWS
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidgets setting their own signal handlers
@@ -82504,7 +82504,7 @@
* src/xwidget.c (kill_xwidget):
(kill_buffer_xwidgets): Call `catch_child_signal'. (bug#53013)
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix display of internal border in child frames on pgtk
@@ -82513,7 +82513,7 @@
* src/pgtkterm.c (pgtk_clear_under_internal_border): Fix test
for child frames. (bug#53018)
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correctly set up XI key input mask on X Toolkit builds
@@ -82521,7 +82521,7 @@
on the outer window, which might also have the input focus.
(x_window) [USE_X_TOOLKIT]: Set up XI event mask a bit later.
-2022-01-04 Daniel Mendler <mail@daniel-mendler.de>
+2023-04-15 Daniel Mendler <mail@daniel-mendler.de>
completion--nth-completion: Throw meaningful error
@@ -82532,25 +82532,25 @@
* lisp/minibuffer.el (completion-styles-alist): Make it a defvar.
(completion--nth-completion): Give a more meaningful error.
-2022-01-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from gnulib
-2022-01-04 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Remove ambiguity from key-valid-p docstring
* lisp/keymap.el (key-valid-p): Be explicit about the separator
being one and only one space.
-2022-01-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve pp-emacs-lisp-code for #'
* lisp/emacs-lisp/pp.el (pp--insert-lisp): Format (function ...)
as #'.
-2022-01-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
A cleaner fix for display bug#52947
@@ -82559,18 +82559,18 @@
(display_tab_bar_line): ...call it here, even if we exit the loop
because we encounter a newline.
-2022-01-04 Jimmy Aguilar Mena <spacibba@aol.com>
+2023-04-15 Jimmy Aguilar Mena <spacibba@aol.com>
Autoload decorator for windmove-mode
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate more modifiers to GDK ones in xwidgets
* src/xwidget.c (xw_translate_x_modifiers): Also handle Control
and ShiftMask.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop assuming X kbd state works with GDK when forwarding events to xwidgets
@@ -82578,27 +82578,27 @@
(Fxwidget_perform_lispy_event): Translate X modifiers to GDK
modifiers before sending them to the xwidget.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `x-file-dialog' arity match documentation on Haiku
* lisp/term/haiku-win.el (x-file-dialog): Fix arity.
-2022-01-04 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Remove macOS drop-shadows on some frames (bug#28512)
* src/nsterm.m ([EmacsWindow setParentChildRelationships]): Remove
shadows on undecorated child frames.
-2022-01-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove unnecessary autoload cookie in font-core.el
* lisp/font-core.el (font-lock-defaults): Remove autoload of
risky-local-variable property; this file is preloaded.
-2022-01-04 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Remove gsettings.m4 and write directly into Makefile.in
@@ -82614,7 +82614,7 @@
($(gsettings_SCHEMAS:.xml=.valid)): Implement instead of gsettings.m4
* m4/gsettings.m4: Remove
-2022-01-04 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Prevent further cases of duplicated separators in context menus
@@ -82629,14 +82629,14 @@
(context-menu-map-remove-consecutive-separators)
(context-menu-map-remove-separators-at-beginning-or-end): New tests.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix unused variable warning in last change
* src/haiku_draw_support.c (BBitmap_transform_bitmap): Fix
unused variable warning.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rationalize Haiku rectangle handling
@@ -82656,7 +82656,7 @@
* src/haiku_support.h (BE_RECT_WIDTH, BE_RECT_HEIGHT): New
macros.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make menu bar key navigation work on Haiku
@@ -82671,7 +82671,7 @@
after checking that F is a window system frame.
* src/haikumenu.c (Fhaiku_menu_bar_open): Update doc string.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve Haiku frame restacking logic
@@ -82681,7 +82681,7 @@
* src/haikufns.c (Fhaiku_frame_restack): Prevent the newly
raised frame from being sent to the back of the display.
-2022-01-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Find a way to make restacking frames work on Haiku
@@ -82696,46 +82696,46 @@
* src/haikufns.c (Fhaiku_frame_restack): New functions.
(syms_of_haikufns): New subr `haiku-frame-restack'.
-2022-01-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* test/src/doc-tests.el: New file.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add effective group to xkey events when handling XI key press events
* src/xterm.c (handle_one_xevent): Add effective group to
xkey.state when translating XI key events.
-2022-01-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix two unused variable warnings in make-docfile.c
* lib-src/make-docfile.c (scan_lisp_file): Fix unused variable
warnings.
-2022-01-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Test that buffer exists in shortdoc-all-groups-work
* test/lisp/emacs-lisp/shortdoc-tests.el
(shortdoc-all-groups-work): Test that the shortdoc buffer was created.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Haiku bitmap sanity checks
* src/haikufns.c (haiku_get_pixel, haiku_put_pixel): Fix sanity
checking of coordinate values.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix fringe bitmap display on haiku again
* src/haiku_draw_support.cc (BView_DrawBitmapWithEraseOp): Fix
off-by-one errors.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix duplicate file panel display on Haiku
@@ -82745,14 +82745,14 @@
* src/haiku_support.cc (be_popup_file_dialog): Remove duplicate
call to `Show'.
-2022-01-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New test shortdoc-all-groups-work
* test/lisp/emacs-lisp/shortdoc-tests.el
(shortdoc-all-groups-work): New test. See Bug#52969.
-2022-01-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Revert part of 59732a83c8 to fix bug#52969
@@ -82767,11 +82767,11 @@
(scan_file): Use it.
(skip_white, read_lisp_symbol, search_lisp_doc_at_eol): New functions.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haiku_font_support.cc (BFont_char_bounds): Fix bearings.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Synchronize at a better place when making a frame visible on Haiku
@@ -82781,7 +82781,7 @@
* src/haikufns.c (haiku_visualize_frame):
(haiku_unvisualize_frame): Sychronize after visibility changes.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement AC line status for the Haiku battery function
@@ -82789,7 +82789,7 @@
`fully-charged' instead of `normal'.
(battery-haiku-acpi-battery): Implement %L for AC line status.
-2022-01-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
elide-head: Make GPL regexp more forgiving
@@ -82802,14 +82802,14 @@
(elide-head--test-headers-to-hide/gpl3-3)
(elide-head--test-headers-to-hide/gpl3-4): New tests.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix battery load calculation on Haiku
* lisp/battery.el (battery-haiku-acpi-battery): Fix load
calculation.
-2022-01-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for the Haiku ACPI battery driver
@@ -82819,11 +82819,11 @@
(battery--search-haiku-acpi-status):
(battery-haiku-acpi-battery): New functions.
-2022-01-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/elide-head.el (elide-head-headers-to-hide): Simplify.
-2022-01-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in eieio tests
@@ -82833,20 +82833,20 @@
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el (eieio-compat):
Silence byte-compiler by wrapping require in with-no-warnings.
-2022-01-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't try to guess a delta if a scroll valuator's state is unknown
* src/xterm.c (x_get_scroll_valuator_delta): Return DBL_MAX if
the scroll valuator's value is unknown.
-2022-01-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Stop sending touch-end events if coalescing scroll events"
This reverts commit a6952f78f3962ac2d9a5add580a130f0abd31429.
-2022-01-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XKB to find modifiers on x
@@ -82859,11 +82859,11 @@
* src/xterm.h (struct x_display_info): New field
`xkb_event_type', and change modifier masks to `unsigned int'.
-2022-01-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/haikumenu.c (haiku_menu_show): Fix input blocking.
-2022-01-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move define-keymap and defvar-keymap to keymap.el
@@ -82874,18 +82874,18 @@
* lisp/keymap.el (define-keymap--compile, define-keymap)
(defvar-keymap): ... to here.
-2022-01-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge remote-tracking branch 'origin/emacs-28' into trunk
-2022-01-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
elide-head: Add support for modified BSD license
* lisp/elide-head.el (elide-head-headers-to-hide): Add support for
the modified BSD license (3-clause BSD).
-2022-01-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New :type key for defcustom
@@ -82898,7 +82898,7 @@
(key-sequence): Doc fix.
* doc/lispref/customize.texi (Simple Types): Document above new type.
-2022-01-02 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't fail flymake-tests if `gcc` actually is Clang
@@ -82906,21 +82906,21 @@
(different-diagnostic-types, included-c-header-files): Skip tests that
depend on the `gcc` command really being GCC and not Clang.
-2022-01-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add column width to tooltip frame width on pgtk
* src/pgtkfns.c (Fx_show_tip): Add column width to width to
avoid an odd problem in the GTK allocation code. (bug#52705)
-2022-01-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse wheel scroll direction on pgtk
* src/pgtkterm.c (scroll_event): Fix scroll modifiers when
`mwheel-coalesce-scroll-events' is nil.
-2022-01-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -82929,20 +82929,20 @@
2684def348 ; Run set-copyright from admin.el
2558b37b5e ; * admin/notes/years: Mention known problems with 'update...
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XRegisterIMInstantiateCallback function argument configure test
* configure.ac: Use XIDProc where XIMProc was mistakenly used.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop sending touch-end events if coalescing scroll events
* src/xterm.c (handle_one_xevent): Don't generate touch-end
events if mwheel_coalesce_scroll_events is non-nil.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse face problems when moving between two frames on Haiku
@@ -82955,7 +82955,7 @@
a motion event is received for a frame other than the one
that is currently displaying the mouse face.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make quitting actually work in Haiku file dialogs
@@ -82965,13 +82965,13 @@
* src/haikufns.c (Fhaiku_read_file_name): Pass `maybe_quit' as
the maybe_quit_function.
-2022-01-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
58b0ada20b Update more copyright years
-2022-01-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
elide-head: Support more licenses
@@ -82981,7 +82981,7 @@
Add old FSF address. This fixes a bug reported in 2003:
https://lists.gnu.org/r/bug-gnu-emacs/2003-01/msg00142.html
-2022-01-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -83011,7 +83011,7 @@
# m4/stdint.m4
# m4/sys_socket_h.m4
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Increase size of precision scrolling momentum ring
@@ -83025,7 +83025,7 @@
(pixel-scroll-calculate-velocity): Increase default ring size
to 30.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make last change compile
@@ -83034,7 +83034,7 @@
(Draw): Draw normally if not double buffered even if shown_flag
is true.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix expose events in non-double-buffered child frames on Haiku
@@ -83042,7 +83042,7 @@
this view is double buffered.
(TearDownDoubleBuffering): Clear shown_flag.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some more off-by-one errors in Haiku image code
@@ -83054,7 +83054,7 @@
(start - end) instead of the actual width and height of the
rectangle.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix deadlocks with invisible frames and threads in Haiku
@@ -83063,28 +83063,28 @@
(EmacsShow): Lock looper if the window wasn't ever visible.
(BWindow_new): Unlock window looper after creating it.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set display last user time when handling pinch events
* src/xterm.c (handle_one_xevent): Set last user time for XI
pinch events.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix child frame synchronization order on Haiku
* src/haiku_support.cc (DoMove):
(FrameMoved): Fix locking and sync order semantics.
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement numeric values of `mouse-highlight' on Haiku
* src/haikuterm.c (haiku_read_socket): Clear mouse face on
keyboard input if `mouse-highlight' is a fixnum.
-2022-01-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -83092,21 +83092,21 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2021-12-31 02:56:06 UTC.
-2022-01-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
67400da412 Improve doc strings of fringe indicator variables
a6adfe21e4 * lisp/tab-line.el (tab-line--get-tab-property): New funct...
-2022-01-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
f2031d0ddb Minor improvement in user documentation of completion style
1e3076e2db Fix bug where bookmark-jump used (point), not (point-at-bol)
-2022-01-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Flush frames after mouse face is cleared on a child frame in Haiku
@@ -83118,14 +83118,14 @@
after clearing mouse face because the pointer was moved out of a
frame.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Print dead xwidgets specially
* src/print.c (print_vectorlike) <PVEC_XWIDGET>: Print "killed
xwidget" for dead xwidgets.
-2021-12-31 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Try to make scratch/correct-warning-pos build on Windows and not segfault
@@ -83134,7 +83134,7 @@
(Fcomp__init_ctxt): Remove the register_emitter call for Qsymbol_with_pos_p,
which was causing a segfault.
-2021-12-31 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Miscellaneous enhancements to scratch/correct-warning-pos.
@@ -83174,7 +83174,7 @@
* src/lread.c (read1): When reading a compiled function, read the components
of the vector without giving its symbols a position.
-2021-12-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in play/*.el
@@ -83189,11 +83189,11 @@
* lisp/play/pong.el (pong-mode-map):
* lisp/play/solitaire.el (solitaire-mode-map): Use defvar-keymap.
-2021-12-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
`make-finalizer' now has to be called with a function, so adjust test
-2021-12-31 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Documentation update for Secret Service
@@ -83203,7 +83203,7 @@
* lisp/net/secrets.el: Adjust comments.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix copyright dates in some files belonging to the pgtk port
@@ -83215,7 +83215,7 @@
* src/pgtkterm.c:
* src/pgtkterm.h: Fix copyright dates to say '2021'.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
On Haiku, sync a frames's connection to the app sever after raising
@@ -83225,14 +83225,14 @@
after raising it to avoid situations where raising windows is
done out-of-order, such as when ediff raises a frame.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix child frame unlinking on Haiku
* src/haiku_support.cc (UnlinkChild): Fix obvious mistake.
(DoMove): Lock child frame window before moving it.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use a single global lock for the child frame state on Haiku
@@ -83256,7 +83256,7 @@
(SetUpDoubleBuffering): Use a single lock for controlling access
to child frame state.
-2021-12-31 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Fix handling of webkit xwidget bookmarks
@@ -83277,7 +83277,7 @@
extracted from `xwidget-webkit-new-session'.
(xwidget-webkit-new-session): Use it.
-2021-12-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements of 'lisp-directory' docs
@@ -83286,7 +83286,7 @@
* doc/lispref/loading.texi (Library Search): Improve wording of
documentation of 'lisp-directory' and related features.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent double buffering from being disabled on USE_BE_CAIRO builds
@@ -83313,25 +83313,25 @@
* src/haikufns.c (haiku_set_inhibit_double_buffering): Always
enable double buffering on Cairo builds.
-2021-12-31 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't select for gesture events on xwidgets if the server is too old
* src/xwidget.c (x_draw_xwidget_glyph_string): Only select for
XI gesture events if the server supports XI 2.4 or later.
-2021-12-31 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(Fmake_finalizer): Check the arg is a function
* src/eval.c (syms_of_eval): Add `Qfunctionp`.
* src/alloc.c (Fmake_finalizer): Check the arg is a function.
-2021-12-31 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/package.el (package-get-version): Add fallback
-2021-12-30 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Don't store docstrings of preloaded .el files in etc/DOC
@@ -83367,7 +83367,7 @@
* doc/lispref/loading.texi (Library Search): Mention `lisp-directory`.
-2021-12-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add pinch event support to xwidgets
@@ -83380,7 +83380,7 @@
* src/xwidget.h (xwidget_motion_notify): Update prototype.
(xwidget_pinch): New function prototype.
-2021-12-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Restore original xwidget embedder after performing a lispy event
@@ -83389,21 +83389,21 @@
(Fdelete_xwidget_view): Block input around non-reentrant
section.
-2021-12-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xwidget.c (Fxwidget_perform_lispy_event): Use FRAME_WINDOW_P.
-2021-12-30 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* lisp/window.el (display-comint-buffer-action): Fix type.
-2021-12-30 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
* lisp/emacs-lisp/ert.el (ert-select-tests): Document new error.
* lisp/emacs-lisp/ert.el (ert-select-tests): Simplify nested switch
-2021-12-30 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Properly report errors about unbound ERT test symbols.
@@ -83419,7 +83419,7 @@
* etc/NEWS: Document new behavior.
-2021-12-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix multisession-tests on MS-Windows
@@ -83428,14 +83428,14 @@
invoking the Emacs sub-process, not after, to ensure the later
update is detected with 1-sec file time resolution.
-2021-12-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make sure widget buttons always have a left box line
* lisp/wid-edit.el (widget-specify-button): Add an invisible
before-string to the button overlay. (bug#51550)
-2021-12-30 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Prevent rapid alternation of fontification of "found types"
@@ -83446,14 +83446,14 @@
fontification of that type throughout the buffer) until the end of the
function, when we're sure that the "type" found actually is a type.
-2021-12-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix previous change in 'pop_it'
* src/xdisp.c (restore_face_box_flags): New function.
(pop_it): Use 'restore_face_box_flags'. (Bug#51550)
-2021-12-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix start-of-box-face display after display and overlay strings
@@ -83461,7 +83461,7 @@
like we do in 'handle_fontified_prop', when faces change while
iterating over a buffer or string. (Bug#51550)
-2021-12-30 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Make symbols with positions work with native compilation
@@ -83525,13 +83525,13 @@
* src/fns.c (Fput): Strip positions from symbols in PROPNAME and VALUE.
-2021-12-30 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el (tab-line-tab-name-format-default): Add help-echo.
(bug#52889)
-2021-12-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make xwidget motion commands hscroll the window of wide widgets
@@ -83543,7 +83543,7 @@
* src/xwidget.c (xwidget_scroll, xwidget_motion_notify): Apply
clip offsets to coordinates.
-2021-12-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -83553,14 +83553,14 @@
# Conflicts:
# etc/NEWS
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around xwidgets releasing the passive grab on an entry event
* src/xterm.c (handle_one_xevent): Don't send XI_Enter events to
xwidgets if button 1 is pressed.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XRandR 1.5 to generate monitor attributes if available
@@ -83572,7 +83572,7 @@
`x_get_monitor_attributes_xrandr' to retrieve the workarea
instead.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate crossing event mode when sending them to xwidgets
@@ -83580,14 +83580,14 @@
instead.
(xwidget_motion_or_crossing): Translate XI entry event mode.
-2021-12-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/paragraphs.el (repunctuate-sentences-filter): New function.
(repunctuate-sentences): Use it on isearch-filter-predicate
to skip unnecessary matches. (bug#52769)
-2021-12-29 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/sgml-mode.el (sgml-mode): Set skeleton-end-newline to nil.
@@ -83595,33 +83595,33 @@
skeleton. Those which do want a newline do that explicitly in
their define-skeleton form. This is what texinfo-mode does (bug#52864).
-2021-12-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'define-keymap'
* doc/lispref/keymaps.texi (Creating Keymaps)
(Changing Key Bindings): Fix typos, improve wording.
-2021-12-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix recent changes in 'keymap-lookup' documentation
* doc/lispref/keymaps.texi (Functions for Key Lookup): Improve
wording, correct typos.
-2021-12-29 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Revert "Revert "Fix fontification in diff--font-lock-prettify""
This reverts commit 3cadd72673d8095df7eeb8e847db87ae42b5e2f6.
-2021-12-29 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
Revert "Fix fontification in diff--font-lock-prettify"
This reverts commit 1da392d62d1ae743151f7fda83d0725ec6053686.
-2021-12-29 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Fix fontification in diff--font-lock-prettify
@@ -83629,21 +83629,21 @@
diff--font-lock-prettify on created or deleted files
(bug#52810).
-2021-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document keymap-set-after in Modifying Menus in lispref
* doc/lispref/keymaps.texi (Modifying Menus): Document
keymap-set-after (bug#52819).
-2021-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document `keymap-lookup' in the lipsref manual
* doc/lispref/keymaps.texi (Functions for Key Lookup): Document
`keymap-lookup' instead of `lookup-key' (bug#52820).
-2021-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move define-keymap manual entry to Creating Keymaps
@@ -83651,20 +83651,20 @@
(Changing Key Bindings): Move `define-keymap'/`defvar-keymap' to
the Creating Keymaps node.
-2021-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow the user to specify shr-width in mm-shr
* lisp/gnus/mm-decode.el (mm-shr): Allow the user to specify the
width by setting `shr-width' (bug#52825).
-2021-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make multi-test-files-busy shorter
Ignore manual/ directory made by admin/make-manuals
-2021-12-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust multi-test-files-simple test for Windows
@@ -83672,14 +83672,14 @@
(multi-test-files-simple): Adjust test to Emacs timestamp
resolution on Windows.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a hang on servers that don't support the X Keyboard Extension
* src/xfns.c (Fx_backspace_delete_keys_p): Don't block input
before checking for Xkb.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate state of XI2 entry events when sending them to xwidgets
@@ -83687,7 +83687,7 @@
(xwidget_motion_or_crossing): Translate detail and state of
GenericEvents before sending them to the widget.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of obsolete xwidget-related code on PGTK
@@ -83700,7 +83700,7 @@
* src/xwidget.c (x_draw_xwidget_glyph_string): Work around
mysterious bug.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Test for Xkb support when opening a display
@@ -83713,7 +83713,7 @@
* src/xterm.h (struct x_display_info): New field `supports_xkb'.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Queue xwidget views for allocation in more places
@@ -83721,7 +83721,7 @@
(Fxwidget_resize) [HAVE_PGTK]: Queue xwidgets and views for
allocation.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve xwidget event handling on XI2
@@ -83736,20 +83736,20 @@
(x_draw_xwidget_glyph_string): Add crossing events to the XI2
event mask.
-2021-12-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
06dcd2be5d Improve rectangle-mark-mode documentation regarding mark a...
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Translate buttons when sending XI2 motion events to xwidgets
* src/xterm.c (handle_one_xevent): Translate all three buttons
when passing XI2 motion events to xwidgets.
-2021-12-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XI2 to handle xwidget button events
@@ -83758,7 +83758,7 @@
* src/xwidget.c (x_draw_xwidget_glyph_string): Add appropriate
values to the XI2 event mask.
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix embedder calculation for xwidgets on PGTK
@@ -83769,18 +83769,18 @@
(to_embedder):
(from_embedder): Rectify accordingly.
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix NS xwidget build
* src/xwidget.c (kill_frame_xwidget_views):
* src/xwidget.h (kill_frame_xwidget_views): Disable on NS.
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xwidget.c (syms_of_xwidget): Fix typo.
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for xwidgets to the PGTK port
@@ -83822,7 +83822,7 @@
builds.
(kill_frame_xwidget_views): Enable on PGTK.
-2021-12-28 Sam Steingold <sdsg@amazon.com>
+2023-04-15 Sam Steingold <sdsg@amazon.com>
Fix bug#52467 by adding a new custom variable 'display-comint-buffer-action'
@@ -83840,7 +83840,7 @@
(tex-recenter-output-buffer): Pass 'display-comint-buffer-action'
to 'pop-to-buffer'.
-2021-12-28 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Fix test lisp/cedet/semantic/bovine/gcc-tests on macOS (Bug#52431)
@@ -83848,27 +83848,27 @@
(semantic-gcc-test-output-parser-this-machine): Also detect Apple
clang on macOS Monterey.
-2021-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/paragraphs.el (repunctuate-sentences): Region for NO-QUERY.
Use region boundaries also for the case when NO-QUERY arg is non-nil
(bug#52769).
-2021-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/paragraphs.el (repunctuate-sentences): Support region.
Add optional args 'start' and 'end', and pass them as region boundaries
to query-replace-regexp (bug#52769).
-2021-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/replace.el (replace-regexp-function): New function (bug#52558).
(replace-search, replace-highlight): Use it.
-2021-12-28 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Fix native comp for non trivial function names (bug#52833)
@@ -83876,25 +83876,25 @@
for functions with function names containing non trivial
characters (bug#52833).
-2021-12-28 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* etc/NEWS (eieio-compat): Rewrite
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lwlib/xlwmenu.c (fit_to_screen): Adjust correctly for child menus.
-2021-12-28 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc.el (vc-revert): Use generate-new-buffer, not just new buffer name
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document a problem with IBus and the C-. key
* etc/PROBLEMS: Document an IBus emoji panel problem.
-2021-12-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for pinch events to NS
@@ -83904,14 +83904,14 @@
* src/nsterm.c (- magnifyWithEvent): New function.
-2021-12-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
c0815aca18 Fix typos in in 'reset-language-environment'
ea65de7577 eshell-complete-parse-arguments: don't use string-match on...
-2021-12-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu placement on multiple-display setups when using lwlib
@@ -83928,7 +83928,7 @@
connecting to a display.
* src/xterm.h (xlw_monitor_dimensions_at_pos): New prototype.
-2021-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Replace uniquify.el's advice with direct calls
@@ -83942,14 +83942,14 @@
(uniquify--create-file-buffer-advice): Don't add them as advice any more.
Adjust their calling convention accordingly.
-2021-12-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only rely on passive device grabs on XI2
* src/xterm.c (xi_grab_or_ungrab_device): Remove function.
(handle_one_xevent): Stop setting non-passive grabs.
-2021-12-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix read-multiple-choice tests
@@ -83959,7 +83959,7 @@
(test-rmc--add-key-description/with-attributes)
(test-rmc--add-key-description/non-graphical-display): Fix tests.
-2021-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Fix EIEIO tests to account for eieio-compat move
@@ -83972,7 +83972,7 @@
* doc/misc/ede.texi (ede-generic-project): Update sample code to use
cl-generic syntax.
-2021-12-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
admin.el: Move etc/NEWS to etc/NEWS.NN in one commit
@@ -83981,14 +83981,14 @@
(set-version): Move etc/NEWS to etc/NEWS.NN and prompt to commit
it immediately. (Bug#52420)
-2021-12-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
disabled-command: Explain what SPC means again
* lisp/novice.el (disabled-command-function): Explain what SPC means
again, an explanation that was lost in a recent change.
-2021-12-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
read-multiple-choice: Improve key formatting
@@ -83996,7 +83996,7 @@
formatting of key missing in the description. Use face help-key-name
on terminals that can't display underline.
-2021-12-27 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS: Mention completion-wrap-movement.
@@ -84004,7 +84004,7 @@
* lisp/tab-bar.el (tab-bar-history-mode-map): New defvar-keymap.
-2021-12-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
The temprary "session" collection might not exist in Secret Service
@@ -84018,7 +84018,7 @@
Remove compatibility hack.
(secrets-create-item): Adapt accordingly.
-2021-12-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Use `permission-denied' in Tramp tests, and more
@@ -84033,35 +84033,35 @@
(tramp-test24-file-acl, tramp-test26-file-name-completion):
Simplify code.
-2021-12-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Doc fix; fix terminology in key binding functions
* lisp/keymap.el (keymap-set, key-valid-p):
* lisp/subr.el (define-keymap): Doc fix; improve terminology.
-2021-12-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix precision scrolling inside terminal buffers
* lisp/term.el (term-goto-process-mark-maybe): Don't move point
to process mark if the event is a vertical wheel event.
-2021-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-list/eieio-compat.el: Really move to obsolete
-2021-12-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
d4e2850b32 Update to Org 9.5.2-3-geb9f34
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (pgtk_handle_event): Add pinch event support.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
perl-mode: Recognize "when"/"given" keywords
@@ -84071,7 +84071,7 @@
* test/manual/indent/perl.perl: Add test for "when"/"given".
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu window persistence and entry/leave events on Lucid on XI2
@@ -84081,7 +84081,7 @@
events coming from the shell widget and use `x_window_to_frame'
to find the frame when handling XI_Leave events.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Lucid popup menu being stuck on XI2 builds
@@ -84092,7 +84092,7 @@
* src/xterm.c (xi_grab_or_ungrab_device): Don't grab device
if popup is activated on Lucid.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Store sign separately when accumulating precision scroll momentum
@@ -84100,7 +84100,7 @@
vector in new format.
(pixel-scroll-accumulate-velocity): Use new sign field.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in tests
@@ -84114,7 +84114,7 @@
* test/src/keymap-tests.el (keymap-tests-minor-mode-map)
(keymap-tests-major-mode-map): Use defvar-keymap.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer the defcustom :risky property in gnus
@@ -84127,14 +84127,14 @@
defcustom :risky property to setting 'risky-local-variable
manually.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Rewrite disabled-command to use read-multiple-choice
* lisp/novice.el (disabled-command-function): Rewrite to use
read-multiple-choice. Use command substitutions.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
read-multiple-choice: Display "SPC" instead of " "
@@ -84146,7 +84146,7 @@
(test-rmc--add-key-description/with-attributes): Update tests for the
above change.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
read-multiple-choice: Add optional argument show-help
@@ -84156,7 +84156,7 @@
* doc/lispref/commands.texi (Reading One Event): Document above new
optional argument.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
read-multiple-choice: Add face when key not in name string
@@ -84166,7 +84166,7 @@
(test-rmc--add-key-description/with-attributes)
(test-rmc--add-key-description/non-graphical-display): Update tests.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Factor out new function rmc--add-key-description
@@ -84178,46 +84178,46 @@
(test-rmc--add-key-description/with-attributes)
(test-rmc--add-key-description/non-graphical-display): New tests.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* INSTALL: Document `--with-xinput2'.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Accumulate deltas in pinch events that were skipped
* src/keyboard.c (kbd_buffer_get_event): Accumulate relative deltas
inside skipped events when coalescing them.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clarify situations where pinch events can be sent.
* doc/lispref/commands.texi (Misc Events): Clarify the
conditions under which pinch events will be sent.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Coalesce pinch gestures in the keyboard buffer
* src/keyboard.c (kbd_buffer_get_event): Coalesce consecutive
pinch gesture events.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document the representation of DX and DY in pinch events
* doc/lispref/commands.texi (Misc Events): Document
the precise meaning of DX and DY in pinch events.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document some missing commands related to text scaling
* doc/emacs/display.texi (Text Scale): Document
`text-scale-pinch' and `mouse-wheel-text-scale'.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some issues with a recent change
@@ -84228,7 +84228,7 @@
* lisp/face-remap.el (text-scale-pinch): Prevent pinch events
from being received in too quick succession.
-2021-12-26 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor improvements in multisession.el
@@ -84237,7 +84237,7 @@
(multisession--backend-values, multisession--backend-set-value)
(multisession--read-file-value): Use 'utf-8-emacs' encoding.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Change `x-server-input-version' to `x-server-input-extension-version'
@@ -84246,7 +84246,7 @@
`x-server-input-extension-version'.
(syms_of_xfns): Update defsubr.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add configure tests for faulty XI2 installations
@@ -84255,21 +84255,21 @@
* src/xterm.c (handle_one_xevent): Don't use structures that
might not exist unless configure found them.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only focus frame implicitly if focus flag is set
* src/xterm.c (x_detect_focus_change): Test for focus flag on
XI entry events.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add test for text-char-description
* test/src/keymap-tests.el (keymap-text-char-description): New
test.
-2021-12-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for pinch gestures to the XI2 build
@@ -84288,14 +84288,14 @@
mask if available.
* src/xterm.c (handle_one_xevent): Handle pinch events.
-2021-12-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
89a82182cb Improve documentation of read-multiple-choice
5fccd1e371 Explain why we remove stuff from 'user-full-name'
-2021-12-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow interpolating scrolls via the Page Down and Page Up keys
@@ -84305,27 +84305,27 @@
(pixel-scroll-interpolate-down):
(pixel-scroll-interpolate-up): New functions.
-2021-12-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't clear internal border if frame isn't realized
* src/pgtkterm.c (pgtk_clear_under_internal_border): Don't clear
border if frame isn't realized. (bug#52705)
-2021-12-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make read-multiple-choice-face inherit help-key-binding
* lisp/faces.el (read-multiple-choice-face): Inherit
help-key-binding in addition to underline.
-2021-12-25 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Use the standard `quit-window' binding from `special-mode' for "q"
* epa.el (epa-info-mode-map): Remove `defvar'.
-2021-12-25 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to version 2.0.0
@@ -84409,18 +84409,18 @@
The change log entry for this release is available here:
<https://protesilaos.com/codelog/2021-12-24-modus-themes-2-0-0/>.
-2021-12-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix unused variable warning in xfns.c
* src/xfns.c (Fx_server_input_version): Fix unused variable
warning.
-2021-12-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/webjump.el: Add TODO section. (Bug#14624)
-2021-12-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in ido.el
@@ -84428,7 +84428,7 @@
(ido-file-dir-completion-map, ido-file-completion-map)
(ido-buffer-completion-map): Use defvar-keymap.
-2021-12-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/url/url-handlers.el (directory-files): Adapt ARGS list.
@@ -84436,27 +84436,27 @@
* lisp/simple.el (completion-auto-select): Fix docstring.
-2021-12-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add a utility function to query the XI2 version on a display
* src/xfns.c (Fx_server_input_version): New function.
(syms_of_xfns): Define new subr.
-2021-12-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
c09ad0cabd Fix the bug with duplicate entries in xref output
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Move mouse key bindings to gametree-mode-map
* lisp/play/gametree.el (gametree-mode-map): Move mouse key
bindings here.
-2021-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for XI 2.4
@@ -84467,7 +84467,7 @@
* src/xterm.c (x_term_init): Declare support for XI 2.4 if
present.
-2021-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix Emacs tooltips on PGTK
@@ -84475,14 +84475,14 @@
show window.
(Fx_show_tip): Set cursor and show window.
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Simplify command remapping in play/blackbox.el
* lisp/play/blackbox.el (blackbox-redefine-key): Make obsolete.
(blackbox-mode-map): Simplify.
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer the defcustom :risky property in eshell
@@ -84495,11 +84495,11 @@
* lisp/eshell/esh-var.el (eshell-variable-aliases-list): Prefer
defcustom :risky property to setting 'risky-local-variable manually.
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/eshell/em-hist.el (eshell-hist-match-partial): Minor doc fix.
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in eshell
@@ -84513,7 +84513,7 @@
* lisp/eshell/esh-proc.el (eshell-proc-mode-map):
* lisp/eshell/esh-var.el (eshell-var-mode-map): Use defvar-keymap.
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Respect changes in eshell-hist-match-partial
@@ -84523,11 +84523,11 @@
(eshell-hist-mode-map): Update for eshell-hist-match-partial using
eshell-hist--update-keymap.
-2021-12-24 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* etc/PROBLEMS: Add a problem when PGTK started in systemd unit file
-2021-12-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add tag :tramp-asynchronous-processes to tramp-tests.el
@@ -84543,7 +84543,7 @@
(tramp--test-expensive-test-p): Rename from
`tramp--test-expensive-test'. Make it a defun. Adapt all callees.
-2021-12-24 Sebastian Fieber <sebastian.fieber@web.de>
+2023-04-15 Sebastian Fieber <sebastian.fieber@web.de>
verify signed content in smime encrypted and signed message
@@ -84585,27 +84585,27 @@
- adjust gnus-mime-security-verify-or-decrypt to handle pkcs7-mime
right with the done changes
-2021-12-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify whitespace stripping in shr-expand-url
* lisp/net/shr.el (shr-expand-url): Simplify whitespace stripping.
-2021-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix text decoration display on stretch glyphs with no box on NS
* src/nsterm.m (ns_dumpglyphs_stretch): Draw decorations if
there is no box.
-2021-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make precision scrolling work on margins and fringes
* lisp/pixel-scroll.el (pixel-scroll-precision-mode-map): Add
missing key definitions.
-2021-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove useless functions from PGTK port that were breaking emacsbug
@@ -84613,7 +84613,7 @@
useless functions that returned invalid values.
(syms_of_pgtkfns): Stop defining removed subrs.
-2021-12-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Grab the server when warping the client pointer
@@ -84622,20 +84622,20 @@
where the client pointer is destroyed between when it is
obtained and when XIWarpPointer is called.
-2021-12-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
04be23f19f Improve Xref documentation
edb1d491d9 * lisp/net/shr.el (shr-expand-url): Also strip trailing wh...
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Acquire draw lock when updating menubar on Haiku
* src/haikumenu.c (digest_menu_items): Acquire draw lock.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix menu grabs on XI2 Motif builds
@@ -84643,32 +84643,32 @@
* src/xterm.c (xi_grab_or_ungrab_device) [USE_MOTIF]: Always
ungrab if a popup is active.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix some more incorrect valuator clearing
* src/xterm.c (handle_one_xevent): Improve detection of stray
ungrab events.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Drop scrollbar motion events when valuators are found
* src/xterm.c (handle_one_xevent): Drop XI_Motion if it's on
top of a scroll bar and a valuator is found.
-2021-12-23 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* doc/misc/Makefile.in (need_emacsver): Add missing members.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make precision scrolling also work on various bars
* lisp/pixel-scroll.el (pixel-scroll-precision-mode-map):
Define keys for various kinds of bars.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix precision scrolling down for multi-line display strings
@@ -84676,7 +84676,7 @@
(pixel-scroll-precision-scroll-down-page): Make sure Y delta
is appropriate before deciding on next-pos.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set start to desired start when pixel scrolling to end of buffer
@@ -84684,7 +84684,7 @@
(pixel-scroll-precision-scroll-down-page): Set start to desired
start when point cannot be moved further down.
-2021-12-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow window-text-pixel-size to measure pixels around a position
@@ -84701,7 +84701,7 @@
(Fwindow_text_pixel_size): Update doc string.
-2021-12-23 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert back to using monospaced fonts in the mode line
@@ -84710,7 +84710,7 @@
main remaining usability problem is clicking on the very small "-"
characters in "U:--".
-2021-12-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -84721,14 +84721,14 @@
# Conflicts:
# etc/NEWS
-2021-12-22 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Fix wrong-type-argument
* message.el (message-update-smtp-method-header): Only Use address
part of mail-extract-address-component.
-2021-12-22 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow automatic X-Message-SMTP-Method header insertion
@@ -84739,13 +84739,13 @@
message-server-alist
* etc/NEWS: Add news entry
-2021-12-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix compile time error in a pcase test
* test/lisp/emacs-lisp/pcase-tests.el (pcase-tests-cl-type): Fix test.
-2021-12-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in minibuffer.el
@@ -84756,7 +84756,7 @@
(minibuffer-local-ns-map, minibuffer-inactive-mode-map): Use
defvar-keymap.
-2021-12-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make substitute-command-keys test less brittle
@@ -84765,7 +84765,7 @@
(help-tests-substitute-command-keys/keymaps): Make test less
brittle by using above new keymap.
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Add native HEIC support on macOS (bug#51381)
@@ -84776,7 +84776,7 @@
* src/nsimage.m (ns_can_use_native_image_api): Add heic to list of
possible image types in the native image support lookup.
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Allow resizing undecorated frames on macOS (bug#28512, bug#31795)
@@ -84787,7 +84787,7 @@
inline and add NSWindowStyleMaskResizable for undecorated frames on
Cocoa.
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Make NS toolbar item ID more unique (bug#50160)
@@ -84796,7 +84796,7 @@
Add the label to the identifier to avoid collisions between toolbar
items that use the same image.
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Make NS toolbar use NSString instead of C strings
@@ -84807,7 +84807,7 @@
([EmacsToolbar addDisplayItemWithImage:idx:tag:labelText:helpText:enabled:]):
No need to convert to NSString here anymore.
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix macfont backend color handling
@@ -84817,7 +84817,7 @@
(CG_SET_STROKE_COLOR_WITH_FACE_FOREGROUND): Fix call to get_cgcolor
and fix all callers.
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Further cleanup of NS color code
@@ -84839,7 +84839,7 @@
thing
-2021-12-22 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Simplify NS color handling
@@ -84873,7 +84873,7 @@
(ns_initialize_display_info):
(ns_delete_display): Initialize and release the NSMutableArray lookup table.
-2021-12-22 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Help outline-minor-mode avoid some false matches
@@ -84881,7 +84881,7 @@
'outline-minor-mode' avoid false matches by quoting certain
characters when they appear at bol in a multi-line string.
-2021-12-22 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Hide transient prefix/suffix commands from execute-extended-command
@@ -84890,7 +84890,7 @@
by declaring that they should only be listed in the non-existent
'not-a-mode' mode.
-2021-12-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix some Tramp tests
@@ -84898,7 +84898,7 @@
(tramp-test14-delete-directory, tramp-test29-start-file-process)
(tramp-test30-make-process): Adapt tests.
-2021-12-22 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use unibyte strings in ntlm auth requests and responses
@@ -84907,24 +84907,24 @@
greater than 127, or base64 encoding will fail.
This should fix failures in ntlm-tests.
-2021-12-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust test after recent help.el change
-2021-12-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkterm.c (scroll_event): Fix scroll delta scale.
* src/pgtkterm.c (scroll_event): Fix sign of delta_y.
-2021-12-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Disable by default and add NEWS entry to the new completion behavior
* etc/NEWS: Announce 'completion-auto-select'.
* lisp/simple.el (completion-auto-select): Default to nil.
-2021-12-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify disabled-command-function prompting
@@ -84932,21 +84932,21 @@
`read-event' instead of messaging it, so that people using
Emacspeak get the prompt read to them.
-2021-12-22 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use pop-to-buffer-same-window in `M-x term'
* lisp/term.el (term): Allow `display-buffer*' customization to
take effect (bug#52688).
-2021-12-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix horizontal scrolling on PGTK
* src/pgtkterm.c (scroll_event): Fix for when
`mwheel-coalesce-scroll-events' is nil.
-2021-12-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use XI2 calls to warp the client pointer
@@ -84957,25 +84957,25 @@
odd situation where the client pointer of the root window
is not the client pointer of the frame.
-2021-12-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix GTK crash when clicking on xwidgets on XI2
* src/xterm.c (handle_one_xevent): Drop button events destined
for an xwidget.
-2021-12-21 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from gnulib
-2021-12-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Delete completion window on quitting
* lisp/simple.el (completion-list-mode-map): Rebind
delete-completion-window over keyboard-quit.
-2021-12-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow for next-completion to wrap around the completion buffer
@@ -84988,14 +84988,14 @@
minibuffer-complete to backtab
(completion--in-region-1): Handle backtab to scroll backwards
-2021-12-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Allow for the completion buffer to be automatically selected
* lisp/simple.el (completion-auto-select): Add new option.
(completion-setup-function): Respect completion-auto-select.
-2021-12-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Declare functions to silence byte-compiler
@@ -85016,7 +85016,7 @@
* test/src/xml-tests.el (libxml-parse-xml-region): Declare
functions to silence byte-compiler in --without-all builds.
-2021-12-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix some tests in --without-all builds
@@ -85025,14 +85025,14 @@
* test/src/thread-tests.el (threads-test-bug33073): Fix tests in
--without-all builds.
-2021-12-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence additional byte-compiler warning in test
* test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el:
Silence byte-compiler.
-2021-12-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add `permission-denied' error to Tramp
@@ -85042,14 +85042,14 @@
* lisp/net/tramp.el (tramp-handle-access-file):
* lisp/net/tramp-archive.el (tramp-archive-handle-copy-file): Use it.
-2021-12-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xg_event_is_scrollbar for grab-related events on XI2
* src/gtkutil.c (xg_event_is_for_scrollbar): Don't return true
if event coordinates are outside the frame on XInput 2.
-2021-12-21 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't produce multibyte strings by accident in sasl-scram-rfc
@@ -85058,21 +85058,21 @@
This code previously worked by accident because of an overly tolerant
base64 encoder (bug#52670), but now causes a test failure.
-2021-12-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore XI_TouchBegin events on the GTK tool bar
* src/xterm.c (handle_one_xevent): Ignore TouchBegin events
that target the tool bar.
-2021-12-21 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Fix gnus subject matching when subject is empty
* lisp/gnus/gnus-sum.el (gnus-summary-limit-include-thread): Don't try
to limit to a matching subject when the simplified subject is empty.
-2021-12-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Speed up find_field when called from outside a field"
@@ -85080,7 +85080,7 @@
This leads to lisp-mode-tests failures
-2021-12-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the `mode-line-percent-position' min width hack
@@ -85089,21 +85089,21 @@
* src/xdisp.c (display_string): Respect min-width in the non-Lisp
string case (bug#52332).
-2021-12-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow @ characters in heredoc in shell-script-mode
* lisp/progmodes/sh-script.el (defconst): Also allow @ in heredoc
(bug#52496).
-2021-12-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use the new `permission-denied' error to catch multisession errors
* lisp/emacs-lisp/multisession.el (multisession--read-file-value):
Use the new `permission-denied' error to catch file errors on Windows.
-2021-12-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Speed up find_field when called from outside a field
@@ -85111,7 +85111,7 @@
called from outside a field (bug#52593). (In some cursory tests,
this makes the called-from-outside-a-field case about 3x faster.)
-2021-12-20 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Fix bug#28557
@@ -85128,21 +85128,21 @@
* lisp/emacs-lisp/cconv.el (cconv--convert-funcbody):
Use `macroexp-parse-body`.
-2021-12-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't drop touch events we're not interested in on GTK3
* src/xterm.c (handle_one_xevent): Allow GTK to handle
unwanted TouchBegin events.
-2021-12-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix touch event menu bar detection
* src/xterm.c (handle_one_event): Don't drop menu bar touch
events.
-2021-12-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xg_event_is_for_menubar for XI2 events
@@ -85151,7 +85151,7 @@
* src/xterm.c (handle_one_event): Drop TouchBegin events we
know about.
-2021-12-20 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
eieio-tests.el: Silence last warnings
@@ -85159,18 +85159,18 @@
New class.
(eieio-test-22-init-forms-dont-match-runnable): Tweak to silence warning.
-2021-12-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (handle_one_xevent): Set user time on touch events.
-2021-12-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore all emulated button events (i.e. those from touchscreens)
* src/xterm.c (handle_one_xevent): Ignore all XIPointerEmulated
events if the display supports XI 2.2 or later.
-2021-12-20 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Put AM_V_GEN etc. first
@@ -85189,7 +85189,7 @@
* test/Makefile.in (%.log, $(test_module)):
Put AM_V_GEN and similar macros first.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make some variable aliases obsolete
@@ -85203,7 +85203,7 @@
* lisp/vc/add-log.el (change-log-time-zone-rule): Make variable
aliases obsolete.
-2021-12-20 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer $(info) to @echo
@@ -85223,7 +85223,7 @@
Prefer $(warning) to @echo >&2.
* src/verbose.mk.in (AM_V_ELN): Output target, like the others.
-2021-12-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix sloppy base64 acceptance of some multibyte characters
@@ -85237,27 +85237,27 @@
* doc/lispref/text.texi (Base 64): Rephrase outdated manual text.
* etc/NEWS: Add a notice.
-2021-12-20 Sam Steingold <sds@gnu.org>
+2023-04-15 Sam Steingold <sds@gnu.org>
Fix build in a separate directory (bug#52669)
* src/lisp.h: Include <globals.h> instead of "globals.h"
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in wdired.el
* lisp/wdired.el (wdired-mode-map, wdired-perm-mode-map): Use
defvar-keymap.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use declare-function instead of defun in eieio-tests.el
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el: Prefer
declare-function to defun.
-2021-12-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Silence byte-compiler warnings from absent optional features
@@ -85267,7 +85267,7 @@
Add declarations to prevent byte-compilation warnings when features
are absent.
-2021-12-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Body of dynamic let-bindings is not in tail position
@@ -85277,7 +85277,7 @@
dynamic variable bindings.
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels): Add test.
-2021-12-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add `macroexp--dynamic-variable-p`
@@ -85304,7 +85304,7 @@
(macroexp-tests--byte-compile-in-subprocess)
(macroexp--tests-dynamic-variable-p): Add tests.
-2021-12-20 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Treat base64 string encode/decode as pure functions
@@ -85312,7 +85312,7 @@
Mark base64-decode-string, base64-encode-string and
base64url-encode-string as pure and side-effect-free.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler using with-no-warnings in tests
@@ -85327,7 +85327,7 @@
* test/lisp/progmodes/elisp-mode-tests.el
(xref-elisp-generic-co-located-default): Silence byte-compiler.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence undefined function warnings in eieio-tests.el
@@ -85335,7 +85335,7 @@
byte-compiler with some function definitions. These are overridden by
class definitions further down.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer skip-unless in one eieio test
@@ -85343,7 +85343,7 @@
(eieio-test-01-mix-alloc-initarg): Use skip-unless to correctly mark
the test as skipped.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in cconv-tests.el
@@ -85351,18 +85351,18 @@
(cconv-tests-iter-lambda-:documentation)
(cconv-tests-cl-function-:documentation): Silence byte-compiler.
-2021-12-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
16ed9fad2c ; * doc/lispref/frames.texi (Child Frames): Improve wording.
f11b996a3c Clarify description of two mouse dragging parameters (Bug#...
-2021-12-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/progmodes/sh-script.el (sh-mode-map): Use defvar-keymap.
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further tweaks to emoji person groups
@@ -85370,7 +85370,7 @@
after the colon into consideration, like in "kiss: person, person,
light skin tone, medium-light skin tone".
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further tweaks to the emoji segmentation
@@ -85378,14 +85378,14 @@
that we key off of the "person" variants, even if they come after
the gendered variations (which is the case for a handful of glyphs).
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further fixes for emojis in the "people" categories
* lisp/international/emoji.el (emoji--base-name): Get more derived
categories right.
-2021-12-19 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el: Don't display "Pending" for lax and toggle commands.
@@ -85396,7 +85396,7 @@
(isearch-search-fun-default):
Set isearch-adjusted to 'lax' instead of 't'.
-2021-12-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Move Rmail autoloads to the common loaddefs.el
@@ -85409,11 +85409,11 @@
* lisp/mail/rmail.el: Remove generated-autoload-file setting and
don't require rmail-loaddefs.el
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add some very rudimentary field-beginning/end tests
-2021-12-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
New error symbol 'permission-denied'
@@ -85429,14 +85429,14 @@
* doc/lispref/errors.texi (Standard Errors):
* etc/NEWS: Document 'permission-denied' error.
-2021-12-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make bad-packages-alist obsolete
* lisp/simple.el (bad-packages-alist, bad-package-check): Make
obsolete. (Bug#52351)
-2021-12-19 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Remove annoying background fontification. Should fix bug #52298
@@ -85462,7 +85462,7 @@
* doc/misc/cc-mode.texi (Found Types): Remove. Amend some menu entries.
-2021-12-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence "initform needs quoting" warning in tests
@@ -85473,54 +85473,54 @@
(slotattr-class-base, slotattr-class-ok, IT): Silence byte-compiler
warnings about "ambiguous initform needs quoting".
-2021-12-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix timeout problem in autorevert-tests.el
* test/lisp/autorevert-tests.el (auto-revert-test05-global-notify):
Remove debug message. Increase timeout.
-2021-12-19 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Enable webp support in PGTK builds, too
* configure.ac (HAVE_WEBP): Enable webp in PGTK builds, too.
-2021-12-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix last change in 'handle_display_prop'
* src/xdisp.c (handle_display_prop): Pass the window's buffer to
'display_min_width' and to 'handle_display_spec'. (Bug#52385)
-2021-12-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence "Unknown slot" warnings in tests
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el:
* test/lisp/net/ntlm-tests.el: Silence byte-compiler.
-2021-12-19 Daniel Mendler <mail@daniel-mendler.de>
+2023-04-15 Daniel Mendler <mail@daniel-mendler.de>
Add a new elp-restore-package command
* lisp/emacs-lisp/elp.el (elp-restore-package): New command
(bug#52457).
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix elp-*-list interactive specs
* lisp/emacs-lisp/elp.el (elp-reset-list):
(elp-restore-list): Fix the interactive specs (bug#52457).
-2021-12-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
5f25852e91 Update to Org 9.5.1-31-ga18849
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rework how shr sets <span id='foo'> targets to make it more reliable
@@ -85533,21 +85533,21 @@
(shr-tag-a): Save targets for later.
(shr-render-td-1): Bind and set targets (bug#52512).
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix prompt in `sql-sqlite'
* lisp/progmodes/sql.el (sql-get-login): Fix the Database: prompt
(bug#52546).
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix indexing gendered emoji forms that have "person" base forms
* lisp/international/emoji.el (emoji--base-name): Index man/woman
on the generic form we have read already (bug#52580).
-2021-12-19 LdBeth <andpuke@foxmail.com> (tiny change)
+2023-04-15 LdBeth <andpuke@foxmail.com> (tiny change)
Add a shr-allowed-images user option
@@ -85556,14 +85556,14 @@
(shr-tag-img): Use it.
* doc/misc/eww.texi (Advanced): Document it.
-2021-12-19 miha <miha@kamnitnik.top>
+2023-04-15 miha <miha@kamnitnik.top>
Fix prompt colors in comint-snapshot-last-prompt
* lisp/comint.el (comint-snapshot-last-prompt): Fix colorization
of the prompt (bug#11883).
-2021-12-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move rmail-related functions from gnus-util.el to gnus-rmail.el
@@ -85574,27 +85574,27 @@
own file. This avoids loading rmail.el when something requires
gnus-util.el.
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing implementation of `pgtk-menu-bar-open'
* lisp/term/pgtk-win.el (pgtk-menu-bar-open): New function.
(bug#52604)
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/gtkutil.c: Remove obsolete fixme.
* etc/NEWS: Add news entry for pgtk.
-2021-12-18 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update from gnulib
Make the following changes by hand, and run ‘admin/merge-gnulib’.
* configure.ac (AM_CONDITIONAL): Adjust to new Gnulib convention.
-2021-12-18 Andrew G Cohen <cohen@andy.bu.edu>
+2023-04-15 Andrew G Cohen <cohen@andy.bu.edu>
Fix gnus search by message-id
@@ -85604,7 +85604,7 @@
* lisp/gnus/nnselect.el (nnselect-request-article): Use new
gnus-search query format.
-2021-12-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve doc strings in emoji.el
@@ -85612,7 +85612,7 @@
(emoji-search, emoji-list, emoji-describe, emoji-list-help):
Improve and clarify the doc strings.
-2021-12-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Remove incorrect byte-hunk-handler for `eval`
@@ -85622,7 +85622,7 @@
* lisp/emacs-lisp/bytecomp.el (byte-compile-file-form-eval): Remove.
-2021-12-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make generation of JUnit test reports more robust.
@@ -85641,11 +85641,11 @@
* test/lisp/progmodes/perl-mode-tests.el (top):
Set `ert-load-file-name'.
-2021-12-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/dired.el (dired-mode-map): Use defvar-keymap.
-2021-12-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in multisession-tests.el
@@ -85654,7 +85654,7 @@
(multi-test-files-simple, multi-test-files-busy)
(multi-test-files-some-values): Silence byte-compiler.
-2021-12-18 YugaEgo <yet@ego.team>
+2023-04-15 YugaEgo <yet@ego.team>
Cleanup append-to-buffer section in ELisp Intro
@@ -85664,7 +85664,7 @@
to the 'append-to-buffer' section. Improve wording, fix
typos, remove redundant comments (Bug#8275).
-2021-12-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Clean up some of PGTK code
@@ -85674,20 +85674,20 @@
(pgtk_get_string_resource): Reformat comments.
* src/gtkutil.c (xg_show_tooltip): Add comments to large #ifdef's.
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix cairo build on haiku
* configure.ac: Move pgtk cairo detection to the correct
location.
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/pgtkfns.c (Fx_show_tip): Adjust call for new signature.
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around some mysterious touch ownership race on GNOME Shell
@@ -85696,7 +85696,7 @@
(handle_one_xevent): Catch and ignore errors during touch
sequence grabbing.
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new argument `ignore-line-at-end' to `window-text-pixel-size'
@@ -85709,7 +85709,7 @@
(Fwindow_text_pixel_size): New argument `ignore-line-at-end'.
All callers changed.
-2021-12-18 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of window-specific overlays with 'display' property
@@ -85720,31 +85720,31 @@
reasons, as part of installing the support for the
'min-width' space spec.
-2021-12-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make multisession file reading more resilient on Windows
* lisp/emacs-lisp/multisession.el (multisession--read-file-value):
Rename and try harder on file errors on Windows.
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Coding style fixes
* src/gtkutil.c (xg_frame_set_char_size): Fix coding style.
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document a bug that exists with some versions of GNOME and GTK
* etc/PROBLEMS (Window-manager and toolkit-related problems):
Document GNOME shell bug.
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Flip buffers if display were modified in haiku_read_socket
@@ -85752,7 +85752,7 @@
(haiku_read_socket): Flip buffers if the display could have
been modified.
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't abort upon untracked TouchUpdate events
@@ -85763,14 +85763,14 @@
* src/xterm.c (handle_one_xevent): Don't abort when receiving
a TouchUpdate that isn't part of a touch sequence.
-2021-12-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Handle missing JUnit test reports
* lisp/emacs-lisp/ert.el (ert-write-junit-test-report)
(ert-write-junit-test-summary-report): Handle missing JUnit test reports.
-2021-12-17 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
multisession.el: Avoid old specializer syntax
@@ -85783,7 +85783,7 @@
multisession--backend-set-value, multisession--backend-values)
multisession--backend-delete): Quote the symbol passed to `eql` specializer.
-2021-12-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve multisession test results on MS-Windows
@@ -85791,14 +85791,14 @@
(multisession--backend-set-value): Force 'fsync'ing the temporary
file.
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix touchscreen support on Xt builds
* src/xterm.c (handle_one_xevent): Make menu bar touch event
code conditional on GTK3.
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update menu bar when processing touch sequences on it
@@ -85806,7 +85806,7 @@
becoming outdated when handling XI_TouchBegin events that may
cause it to be opened.
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Ignore motion events sent by an emulated pointer
@@ -85814,7 +85814,7 @@
have PointerEmulated set when the display supports XInput 2.2
or later.
-2021-12-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port tramp-adb.el back to Emacs 26
@@ -85824,7 +85824,7 @@
Problem reported by Michael Albinus in:
https://lists.gnu.org/r/emacs-devel/2021-12/msg01623.html
-2021-12-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix selection of fonts that don't have regular weight
@@ -85832,7 +85832,7 @@
inexact matches of the font weight is now used for non-NTGUI
platforms as well. (Bug#52493)
-2021-12-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix parallel build with multisession.el
@@ -85840,11 +85840,11 @@
in gnus-util, which requires rmail, which depends on
rmail-loaddefs being generated, which our Makefiles doesn't guarantee.
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for touchscreen events generated by XInput 2
@@ -85877,18 +85877,18 @@
* src/xterm.h (struct xi_touch_point_t): New structure.
(struct xi_device_t): Add touchpoints field.
-2021-12-16 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Kill eshell-mode project buffers too
* lisp/progmodes/project.el (project-kill-buffer-conditions):
Add 'eshell-mode' too (bug#49465).
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
* src/timefns.c: Minor comment fix.
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify epa-ks--parse-buffer timestamp handling
@@ -85896,7 +85896,7 @@
seconds-to-time, and prefer the unaliased name time-convert when
calls are necessary.
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Omit temporary warning re obsolete timestamps
@@ -85911,14 +85911,14 @@
(decode_lisp_time): Simplify by taking a bool instead of an
integer bitmask. All uses changed.
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Assume current-time-zone exists
* lisp/timezone.el (timezone-time-zone-from-absolute): Simplify by
assuming current-time-zone exists (true since Emacs 19.7 in 1993).
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer format-time-string to current-time-zone
@@ -85928,14 +85928,14 @@
* lisp/time.el (display-time-update):
Prefer (format-time-string "%Z") to (cadr (current-time-zone)).
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Minor nndiary simplificatiuon with time zone
* lisp/gnus/nndiary.el (nndiary-last-occurrence)
(nndiary-next-occurrence): Simplify (and X (car X)) to (car X).
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer format-time-string to current-time-string
@@ -85944,7 +85944,7 @@
* lisp/tar-mode.el (tar-clip-time-string):
Prefer format-time-string to reassembling current-time-string output.
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
encode-time simplifications
@@ -85965,7 +85965,7 @@
* lisp/org/org-clock.el (org-clocktable-steps):
Prefer (encode-time S M ...) to (apply #'encode-time (list S M ...)).
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix icalendar time zone parsing glitch
@@ -85976,7 +85976,7 @@
icalendar--decode-isodatetime tests fail. This fixes a bug
introduced in 2021-11-21T08:18:57Z!dick.r.chiang@gmail.com.
-2021-12-16 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix encode-time doc string
@@ -85984,25 +85984,25 @@
that talks about FORM (which doesn’t exist) by copying
wording from the manual instead.
-2021-12-16 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/vc-dispatcher.el (vc-command-messages): Add choice 'log'.
(vc-do-command): Don't display messages but only write them to the *Messages*
buffer when vc-command-messages is 'log' (bug#52518).
-2021-12-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of multisession variables
* doc/lispref/variables.texi (Multisession Variables): Improve
wording and markup, add indexing.
-2021-12-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update files times in multisesssion properly
@@ -86010,18 +86010,18 @@
(multisession--backend-set-value): Make cached/external files
times match up.
-2021-12-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the multisession files value read more resilient
* lisp/emacs-lisp/multisession.el
(multisession--update-file-value): Make more resilient towards errors.
-2021-12-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Skip extension tests on hosts without the function
-2021-12-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make emoji--recent use multisession variables
@@ -86030,13 +86030,13 @@
(emoji-recent, emoji--recent-transient): Use it.
(emoji--add-recent): Update it.
-2021-12-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Declare a couple more functions in multisession.el
* lisp/emacs-lisp/multisession.el: New file.
-2021-12-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for multisession variables
@@ -86047,26 +86047,26 @@
* lisp/emacs-lisp/multisession.el: New file.
-2021-12-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Require xwidget.el in `make-xwidget'
* src/xwidget.c (Fmake_xwidget): Require `xwidget'.
-2021-12-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
1e578267fb Fix control buffer window height in 'ediff-setup-control-b...
-2021-12-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer command remapping in ses.el
* lisp/ses.el (ses-mode-print-map): Use command remapping instead of
substitute-key-definition.
-2021-12-15 Fredrik Bergroth <fbergroth@gmail.com>
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com>
Add missing entries from completionitemkind
@@ -86074,7 +86074,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/772
-2021-12-15 Garret Buell <gmbuell@gmail.com> (tiny change)
+2023-04-15 Garret Buell <gmbuell@gmail.com> (tiny change)
Mark eglot-completion-at-point capf "non-exclusive"
@@ -86086,7 +86086,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/770
-2021-12-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in hideif.el
@@ -86094,21 +86094,21 @@
defvar-keymap. Use command remapping instead of
substitute-key-definition.
-2021-12-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add errors in ert JUnit test reports
* lisp/emacs-lisp/ert.el (ert-write-junit-test-report)
(ert-write-junit-test-summary-report): Handle errors.
-2021-12-15 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-minor-mode-use-buttons): Add :safe #'booleanp.
(outline-minor-mode-cycle, outline-minor-mode-highlight):
Replace `put safe-local-variable' with :safe tag.
-2021-12-15 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Have 'dlopen' use RTLD_GLOBAL in 'dynlib_open'
@@ -86120,18 +86120,18 @@
* src/comp.c (Fnative_elisp_load): Use 'dynlib_open_for_eln' in place
of 'dynlib_open'.
-2021-12-15 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Recognize starred environments
* lisp/textmodes/reftex-vars.el (reftex-label-alist-builtin): Add
missing starred environments from sidecap and rotating packages.
-2021-12-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86142,13 +86142,13 @@
# Conflicts:
# etc/NEWS
-2021-12-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent GDK from handling emulated button events
* src/xterm.c (handle_one_xevent): Drop emulated button events.
-2021-12-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around pixel scrolling issues when line numbers are displayed
@@ -86156,21 +86156,21 @@
Compare start position against line number display width
instead.
-2021-12-14 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
project-kill-buffers-display-buffer-list: Fix :package-version value
* lisp/progmodes/project.el (project-kill-buffers-display-buffer-list):
Fix :package-version value.
-2021-12-14 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add 'comint-mode' and 'change-log-mode' to project-kill-buffer-conditions
* lisp/progmodes/project.el (project-kill-buffer-conditions):
Add 'comint-mode' and 'change-log-mode' to the list (bug#52465).
-2021-12-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
eieio-compat.el: Move to lisp/obsolete
@@ -86183,24 +86183,24 @@
* lisp/emacs-lisp/eieio-compat.el: Move to ...
* lisp/obsolete/eieio-compat.el: ... here.
-2021-12-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer command remapping in allout.el
* lisp/allout.el (allout-compose-and-institute-keymap): Use command
remapping instead of substitute-key-definition.
-2021-12-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix ert.texi error from previous change
* doc/misc/ert.texi (Running Tests in Batch Mode): Fix @r command.
-2021-12-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/net/eudc.el (custom-menu-create): Remove unnecessary autoload.
-2021-12-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove Emacs 21 compat code for command-remapping
@@ -86208,21 +86208,21 @@
* lisp/obsolete/iswitchb.el (iswitchb-global-map): Remove Emacs 21
compat code.
-2021-12-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Minor Tramp cleanup
* lisp/net/tramp.el (tramp-get-buffer-string): Simplify.
(tramp-lock-pid): Fix docstring.
-2021-12-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Explain JUnit test reports in ert doc
* doc/misc/ert.texi (Running Tests in Batch Mode): Explain
generation of JUnit test reports.
-2021-12-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap in elisp-mode.el
@@ -86230,25 +86230,25 @@
(elisp--dynlex-modeline-map, lisp-interaction-mode-map): Use
defvar-keymap.
-2021-12-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer command remapping in cperl-mode.el
* lisp/progmodes/cperl-mode.el (cperl-mode-map): Use command remapping
instead of substitute-key-definition.
-2021-12-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Only allow SQLite extensions from an allowlist
* src/sqlite.c (Fsqlite_load_extension): Only allow extensions
from an allowlist.
-2021-12-14 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86260,14 +86260,14 @@
# Conflicts:
# etc/NEWS
-2021-12-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
completion.el: Make two compat aliases obsolete
* lisp/completion.el (cmpl-syntax-table, initialize-completions):
Make compat aliases obsolete.
-2021-12-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
ERT can generate JUnit test reports
@@ -86297,25 +86297,25 @@
* test/infra/test-jobs.yml: Regenerate.
-2021-12-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make alias obsolete in xscheme.el
* lisp/progmodes/xscheme.el (xscheme-yank-previous-send): Make
obsolete.
-2021-12-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make two aliases obsolete in lisp/international/robin.el
* lisp/international/robin.el (robin-transliterate-region)
(robin-transliterate-buffer): Make obsolete.
-2021-12-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/generator.el (iter-yield): Simplify
-2021-12-13 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
lisp/pcomplete.el: Mark obsolete some unused functions
@@ -86323,21 +86323,21 @@
Mark as obsolete.
(pcomplete-opt, pcomplete--here, pcomplete--help): Use lexical-binding.
-2021-12-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/sqlite.c (Fsqlite_open, Fsqlite_load_extension): Use ENCODE_FILE.
-2021-12-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/ielm.el (ielm-map): Use defvar-keymap.
* lisp/ielm.el (ielm-header): Show key binding for describe-mode.
-2021-12-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86347,7 +86347,7 @@
b5354e989d Rewrite the "Quitting Windows" section of Emacs Lisp Refer...
64ea1a178c Fix eshell for systems that do not have subprocesses
-2021-12-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new `sqlite-pragma' command
@@ -86356,7 +86356,7 @@
pragmas. These can be done via sqlite-execute, but it's less
confusing to have them in a separate command.
-2021-12-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Introduce a new sqlite-locked-error
@@ -86364,7 +86364,7 @@
(syms_of_sqlite): Introduce a new error for locked databases so
that we can catch that condition on higher levels.
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Work around pixel scrolling issues when org-indent-mode is on
@@ -86372,7 +86372,7 @@
Subtract line height of window start when it doesn't appear
at the 0th pixel of the line.
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop using XI focus events on non-GTK builds
@@ -86381,11 +86381,11 @@
* src/xterm.c (x_detect_focus_change) <GenericEvent>: Don't
handle XI_FocusIn and XI_FocusOut events when not on GTK.
-2021-12-12 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* lisp/char-fold.el (char-fold-override): Doc fix.
-2021-12-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/char-fold.el (char-fold-override): New defcustom (bug#52394).
@@ -86395,7 +86395,7 @@
when char-fold-override or char-fold--default-override is non-nil.
(char-fold-update-table): Add char-fold--default-override.
-2021-12-12 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/startup.el: Let-bind browse-url-browser-function instead of setq-local
@@ -86406,18 +86406,18 @@
browse-url-browser-function.
https://lists.gnu.org/archive/html/emacs-devel/2021-12/msg00939.html
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix overline display when there is a box on PGTK
* src/pgtkterm.c (pgtk_draw_glyph_string): Draw box before any
text decorations.
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix overline display over stretch glyphs with box on NS
@@ -86426,7 +86426,7 @@
(ns_draw_glyph_string): Draw text decorations after the box
in stretch glyph that have one.
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix overline display when there is a box
@@ -86434,14 +86434,14 @@
* src/xterm.c (x_draw_glyph_string): Draw box before any text
decorations.
-2021-12-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Really fix the etags TEX parsing
* lib-src/etags.c (TEX_decode_env): Re-fix off-by-one parsing of
TEXTAGS environment variable (bug#52438).
-2021-12-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix an off-by-one error in TEX parsing in etags
@@ -86450,39 +86450,39 @@
David Fussner <dfussner@googlemail.com> and amended by Andreas
Schwab <schwab@linux-m68k.org>.
-2021-12-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check for support in sqlite-mode-open-file
* lisp/sqlite-mode.el (sqlite-mode-open-file): Error out earlier
when we don't have sqlite support.
-2021-12-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
eshell: Prefer octal number for file modes
* lisp/eshell/esh-util.el (eshell-private-file-modes)
(eshell-private-directory-modes): Prefer octal number for file modes.
-2021-12-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make with-sqlite-transaction mode code efficient
* lisp/sqlite.el (with-sqlite-transaction): Rewrite to only
include BODY once.
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/xterm.c (x_detect_focus_change): Fix XI2 focus on GTK builds.
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change
* src/xterm.c (x_detect_focus_change): Test against
FOCUS_EXPLICIT.
-2021-12-12 dick r. chiang <dick.r.chiang@gmail.com>
+2023-04-15 dick r. chiang <dick.r.chiang@gmail.com>
Fix some compilation warnings in sqlite-less builds
@@ -86490,14 +86490,14 @@
* lisp/sqlite-mode.el: Avoid compilation warnings in builds
without libsqlite (bug#52440).
-2021-12-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix frame focus on X Toolkit builds with XInput 2
* src/xterm.c (x_detect_focus_change): Allow focus_state to not
be FOCUS_EXPLICIT when handling FocusIn and FocusOut events.
-2021-12-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update bovine/gcc-tests for newer Macos versions
@@ -86505,7 +86505,7 @@
(semantic-gcc-test-output-parser-this-machine): Update gcc->llvm
detection to Macos Monterey.
-2021-12-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86513,14 +86513,14 @@
30dd5c9acc Update to Org 9.5.1-25-g9ca3bc
a374849926 Fix the DJGPP port
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak erroring in sqlite-mode-delete
* lisp/sqlite-mode.el (sqlite-mode-delete): Use user-error instead
of error for user-level stuff.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make sqlite-mode-list-tables work on older sqlite versions
@@ -86529,7 +86529,7 @@
name and is available in all sqlite3 versions:
https://sqlite.org/schematab.html
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding style
@@ -86542,25 +86542,25 @@
(dialog_selection_callback):
(create_and_show_dialog): Fix coding style.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent hangs when displaying a context menu on pgtk
* src/pgtkmenu.c (pgtk_menu_wait_for_event, popup_widget_loop):
Remove unnecessary workarounds.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clear precision scroll interpolation when direction changes
* lisp/pixel-scroll.el (pixel-scroll-precision-interpolate):
Clear scroll interpolation when direction changes.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix drawing overlines on top of stretch glyphs when there is a box
@@ -86569,7 +86569,7 @@
(haiku_draw_glyph_string): Only draw text decorations if
the box will not be drawn with clipping.
-2021-12-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Constant-propagate access to captured variables
@@ -86581,7 +86581,7 @@
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases):
Add test case.
-2021-12-11 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Reimplement gnus-thread-header in Lisp
@@ -86589,7 +86589,7 @@
Replace lovingly hand-crafted assembler code with plain Lisp.
With lexical binding the difference is unlikely to be detectable.
-2021-12-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix hang when deleting a pipe process
@@ -86602,7 +86602,7 @@
* src/w32proc.c (reader_thread): When exiting normally, close the
file descriptor used to read from a pipe process. (Bug#52414)
-2021-12-11 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Implement pgtk_frame_raise_lower
@@ -86611,7 +86611,7 @@
(pgtk_frame_raise_lower): New function to call one of those.
(pgtk_create_terminal): Set frame_raise_lower_hook.
-2021-12-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of sqlite3 support
@@ -86623,42 +86623,42 @@
* etc/NEWS: Minor wording changes of the sqlite entries.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Coding style fixes
* src/pgtkterm.c (button_event): Fix coding style.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tooltips in PGTK child frames
* src/gtkutil.c (xg_show_tooltip, xg_hide_tooltip): Make
safe for child frames.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use window height to determine wheel event pixel deltas on XInput 2
* src/xterm.c (handle_one_xevent): Use window height instead of
frame height to determine the height of a scroll unit.
-2021-12-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent hang when exiting Emacs on Haiku
* src/haiku_support.cc (be_app_quit): Don't wait for app
thread to also quit.
-2021-12-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* src/sqlite.c (row_to_value): Call 'make_unibyte_string'.
-2021-12-11 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Pacify unused variable warning in xterm.c
@@ -86666,7 +86666,7 @@
variable any_stop_p is used only when HAVE_XWIDGETS, so guard its
declaration accordingly to pacify GCC's -Wunused-variable warning.
-2021-12-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor cleanups in sqlite.c
@@ -86676,7 +86676,7 @@
(Fsqlite_load_extension): Doc fixes.
(Fsqlite_load_extension): Encode MODULE using UTF-8.
-2021-12-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor cleanups of sqlite3 code on MS-Windows
@@ -86688,20 +86688,20 @@
'init_sqlite_functions' if Vlibrary_cache doesn't mention
'sqlite3'.
-2021-12-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix a typo in sqlite.c
* src/sqlite.c (Fsqlite_select): Fix a typo in arguments to
make_sqlite.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add confirmation to sqlite-mode-delete
* lisp/sqlite-mode.el (sqlite-mode-delete): Add confirmation.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't leave open cursors when listing sqlite data
@@ -86710,7 +86710,7 @@
block other processes from deleting stuff).
(sqlite-mode-delete): Adjust to new layout.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add FIXME comment
@@ -86718,7 +86718,7 @@
(sqlite--mode--list-data, sqlite-mode-list-data): Adjust to new
command.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add an sqlite-mode-delete command
@@ -86726,13 +86726,13 @@
(sqlite--mode--list-data, sqlite-mode-list-data): Adjust to new
command.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix Fsqlite_finalize book-keeping
* src/sqlite.c (Fsqlite_finalize): Mark the object as dead.
-2021-12-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86740,14 +86740,14 @@
aa2872a127 Make `M-x run-python' select the window again
c8e19b3a84 Don't bug out on certain empty elements with ids
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve sqlite-mode--tablify tables
* lisp/sqlite-mode.el (sqlite-mode--tablify): Tweak column widths
and sanitize newlines.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check whether the sqlite supports sqlite3_load_extension
@@ -86756,33 +86756,33 @@
* src/sqlite.c: Add guards.
(Fsqlite_load_extension): Ifdef out on systems that doesn't have it.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix sqlite-mode.el build problems
* lisp/sqlite-mode.el (sqlite-mode-list-tables): Fix function
rename usage.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some sqlite doc string typos
* src/sqlite.c (Fsqlite_load_extension, Fsqlite_more_p): Fix typos
in doc strings.
-2021-12-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new mode for examining sqlite files
* lisp/sqlite-mode.el: New file.
-2021-12-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix comment in heading
Add NEWS entry for sqlite
-2021-12-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add sqlite3 support to Emacs
@@ -86817,7 +86817,7 @@
* test/src/sqlite-tests.el: Add tests.
-2021-12-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bibtex-biblatex-entry-alist sorting when using latex
@@ -86825,29 +86825,29 @@
PhdThesis and TechReport correctly when using the latex variant
(bug#52354).
-2021-12-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* etc/TODO: Entry about converting to defvar-keymap.
-2021-12-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use defvar-keymap for package-menu-mode-map
* lisp/emacs-lisp/package.el (package-menu-mode-map): Use
defvar-keymap.
-2021-12-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make keymap-lookup work for keymap results, too
* lisp/keymap.el (keymap-lookup): Make this function work for
non-symbol lookups, too (bug#52374).
-2021-12-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dired-buffers-for-dir expand the DIR argument
@@ -86856,11 +86856,11 @@
(dired-find-buffer-nocreate, dired-clean-up-after-deletion):
Adjust callers.
-2021-12-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Further reduce image-related stutter during precision scrolling
@@ -86869,14 +86869,14 @@
`scroll-preserve-screen-position' and `auto-window-vscroll'
while scrolling.
-2021-12-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop setting `make-cursor-line-fully-visible' in precision scrolling
* lisp/pixel-scroll.el (pixel-scroll-precision-mode): Stop
setting `make-cursor-line-fully-visible'.
-2021-12-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86885,14 +86885,14 @@
26fb4168b8 ; Prefer HTTPS in more URLs
6b89578524 ; * lisp/progmodes/flymake.el: Update the minimum Emacs ve...
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix bob detection when pixel scrolling upwards
* lisp/pixel-scroll.el (pixel-point-and-height-at-unseen-line):
Don't go to the beginning-of-visual-line if bobp.
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pixel scrolling upwards in Info buffers
@@ -86900,7 +86900,7 @@
Don't blindly trust window start to be the beginning of a
visual line.
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused let-bindings from pixel-scroll.el
@@ -86908,7 +86908,7 @@
(pixel-scroll-precision-scroll-down-page): Remove unused
bindings.
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix precision scrolling for stretch glyphs
@@ -86917,15 +86917,15 @@
(pixel-scroll-precision-interpolate): Block throw-on-input
when actually scrolling.
-2021-12-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/time.el (world-clock-mode-map): Convert to defvar-keymap.
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-09 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix logic in 'compute_window_start_on_continuation_line'
@@ -86933,14 +86933,14 @@
thinko in logic. Patch by dickmao <dick.r.chiang@gmail.com>.
(Bug#52378)
-2021-12-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix thinko in Tramp test
* test/lisp/net/tramp-tests.el (tramp-test07-abbreviate-file-name):
Fix thinko.
-2021-12-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve lock-pid handling in Tramp
@@ -86958,7 +86958,7 @@
(tramp-lock-pid): New defvar.
(tramp-get-lock-pid): Reimplement.
-2021-12-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -86973,7 +86973,7 @@
# etc/NEWS
# lisp/help.el
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make precision scrolling up work over display strings
@@ -86983,7 +86983,7 @@
(pixel-scroll-precision-scroll-up-page): Use delta as vscroll
directly.
-2021-12-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pixel scrolling over lines with different sized glyphs
@@ -86991,7 +86991,7 @@
(pixel-scroll-precision-scroll-down-page): Calculate desired
vscroll with `window-text-pixel-size'.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix jumping cursor during interpolated scrolls
@@ -86999,7 +86999,7 @@
(pixel-scroll-precision-scroll-down-page): Go to next position
before setting start or vscroll.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow customizing step between each interpolated scroll
@@ -87008,11 +87008,11 @@
(pixel-scroll-precision-interpolation-between-scroll): New user
option.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Show image info in header line
@@ -87028,7 +87028,7 @@
image-dired-update-header-line instead of
image-dired-display-thumb-properties.
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Go to next image when marking
@@ -87042,7 +87042,7 @@
(image-dired-toggle-mark-thumb-original-file)
(image-dired-unmark-all-marks): Use above new macro.
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Remove some TODOs
@@ -87050,18 +87050,18 @@
better to add such features to image-mode directly.
* lisp/image-dired.el: Remove some TODOs.
-2021-12-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* test/lisp/emacs-lisp/subr-x-tests.el (subr-x-named-let): New test
-2021-12-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* test/lisp/emacs-lisp/cl-macs-tests.el: Avoid `with-suppressed-warnings`
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--progv): Use a proper
namespace prefix for the global vars.
-2021-12-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
lisp/mouse.el: Fix some lambdas quoted with ` or '
@@ -87073,7 +87073,7 @@
(mouse-drag-line): Remove unused var `draggable`.
(mouse-yank-primary): Make it work for non-mouse events.
-2021-12-08 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/mouse.el (context-menu-entry): Bind to make-sparse-keymap, not ignore.
@@ -87081,7 +87081,7 @@
and no context menu functions are called by e.g. describe-mode in wrong buffer
(bug#9923)
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Define some more keymaps in one step
@@ -87091,21 +87091,21 @@
* lisp/progmodes/ebrowse.el (ebrowse-global-submap-4)
(ebrowse-global-submap-5): Define in one step and use defvar-keymap.
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Define calc-help-map in one step
* lisp/calc/calc-ext.el (calc-help-map): Define in one step and
convert to defvar-keymap.
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Convert shortdoc-mode-map to defvar-keymap
* lisp/emacs-lisp/shortdoc.el (shortdoc-mode-map): Convert to
defvar-keymap.
-2021-12-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -87118,20 +87118,20 @@
# Conflicts:
# lisp/net/browse-url.el
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coarse scroll deltas on macOS
* src/nsterm.m (- mouseDown): Multiply deltas as appropriate.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clear scroll interpolation when interpolated scroll completes
* lisp/pixel-scroll.el (pixel-scroll-precision-interpolate): Set
saved interpolation to nil upon completion.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve precision scroll interpolation
@@ -87143,7 +87143,7 @@
(pixel-scroll-precision-interpolate): Save deltas and run loop
inside `while-no-input' instead.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change
@@ -87151,18 +87151,18 @@
(pixel-scroll-precision-interpolation-total-time)
(pixel-scroll-precision-interpolation-factor): Fix declared versions.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make interpolated scrolling work better
* lisp/pixel-scroll.el (pixel-scroll-precision-interpolate):
Stop using `while-no-input'.
-2021-12-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow customizing precision scroll interpolation
@@ -87175,7 +87175,7 @@
(pixel-scroll-precision-mode): Set
`make-cursor-line-fully-visible' to nil.
-2021-12-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Send scroll stop events to xwidgets correctly
@@ -87184,32 +87184,32 @@
* src/xwidget.h (xwidget_scroll):
* src/xwidget.c (xwidget_scroll): New parameter `stop_p'.
-2021-12-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Convert etc-authors-mode-map to defvar-keymap
* lisp/textmodes/etc-authors-mode.el (etc-authors-mode-map):
Convert to defvar-keymap.
-2021-12-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Pacify svg_load_image compiler warning
* src/image.c (svg_load_image): Fix compiler warning from gcc
(Debian 11.2.0-10).
-2021-12-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Check decoding results in webp_load before using it
* src/image.c (webp_load): Check whether we were able to decode
the image before using it.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Navigate from image display buffer
@@ -87225,7 +87225,7 @@
(image-dired-display-image-mode-map): Bind above commands.
(image-dired--with-thumbnail-buffer): New macro.
-2021-12-07 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Improve yanking in the middle of comint process output
@@ -87242,7 +87242,7 @@
(comint--mark-as-output): New function.
(comint--mark-yanked-as-output): New function.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
browse-url: Refactor code to find executable
@@ -87250,7 +87250,7 @@
(browse-url-firefox-program, browse-url-chrome-program)
(browse-url-chromium-program): ...here.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
browse-url: Remove support for Galeon
@@ -87262,11 +87262,11 @@
defunct Galeon web browser.
* etc/NEWS: Announce its removal.
-2021-12-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
* etc/tutorials/TUTORIAL.he: Add section about package management.
-2021-12-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve before-make-frame-hook and after-make-frame-functions docs.
@@ -87276,7 +87276,7 @@
functions will be run for the initial frame only if added to the
hook in early-init file. (Bug#38143)
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
browse-url: Remove support for Netscape
@@ -87290,11 +87290,11 @@
defunct Netscape web browser.
* etc/NEWS: Announce its removal.
-2021-12-07 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* doc/misc/eshell.texi (Built-ins): Fix xref.
-2021-12-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Make a more robust check in Tramp using scripts
@@ -87302,7 +87302,7 @@
Check, whether scripts in `tramp-remote-coding-commands' are
expandable.
-2021-12-07 Lele Gaifax <lele@metapensiero.it>
+2023-04-15 Lele Gaifax <lele@metapensiero.it>
Add the new packages section to the Italian tutorial
@@ -87311,7 +87311,7 @@
version. (Bug#52345)
(CONCLUSIONI): Reword paragraph, to better convey the original intent.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some unnecessary references to Emacs 22
@@ -87322,18 +87322,18 @@
* lisp/mh-e/mh-e.el (mh-inc-spool-list): Remove some unnecessary
references to Emacs 22.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* etc/tutorials/TUTORIAL: Say that there is usually a delete key.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Fix behavior of slideshow command
* lisp/image-dired.el (image-dired-slideshow-start): Fix behavior
to match documentation. Minor simplification of docstring.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove obsolete values from image-mode-auto-resize
@@ -87344,31 +87344,31 @@
(image-auto-resize-max-scale-percent): Fix defcustom const :tag.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/view.el (view-mode-map): Convert to defvar-keymap.
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove XEmacs compat code from strokes.el
* lisp/strokes.el (strokes-mode): Remove XEmacs compat code;
select-frame-hook does not exist in Emacs.
-2021-12-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add vc-git-stash-pop to vc-dir-git-mode
* lisp/vc/vc-git.el (vc-dir-git-mode-map): Add vc-git-stash-pop
(bug#52158).
-2021-12-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
da23e607d3 Select the right buffer for event in context-menu function...
-2021-12-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Cancel xwidget progress timer when buffer is killed
@@ -87376,11 +87376,11 @@
(xwidget-webkit-mode): Add `xwidget-webkit-buffer-kill' to
`kill-buffer-hook'. (bug#52344)
-2021-12-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-06 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
When registering Gnus message ids, guard against no registry
@@ -87389,7 +87389,7 @@
startup (eg, debbugs). If the registry doesn't exist, just skip this
process.
-2021-12-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in two tests
@@ -87397,7 +87397,7 @@
* test/lisp/mail/mail-utils-tests.el
(mail-utils-tests-mail-rfc822-time-zone): Silence byte-compiler.
-2021-12-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove spurious space in byte-compiler warning
@@ -87407,7 +87407,7 @@
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-wide-docstring-defun.el"): Update test.
-2021-12-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Assume unfilled byte-compiler warnings in tests
@@ -87415,21 +87415,21 @@
(bytecomp--define-warning-file-test): Remove workaround for filled
byte-compilation warnings. See Bug#52281.
-2021-12-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous shr-parse-style change
* lisp/net/shr.el (shr-parse-style): Fix previous clean-up here
(which wasn't well thought through).
-2021-12-06 Tassilo Horn <tsdh@gnu.org>
+2023-04-15 Tassilo Horn <tsdh@gnu.org>
dired.texi: Document dired-create-destination-dirs-on-trailing-dirsep
* doc/emacs/dired.texi (Operating on Files): Document new option
dired-create-destination-dirs-on-trailing-dirsep.
-2021-12-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Avoid small parasitic button on mode line"
@@ -87438,7 +87438,7 @@
Turns out without that "ghost" button min-width doesn't work
on the mode line at all...
-2021-12-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tramp code cleanup
@@ -87462,7 +87462,7 @@
* test/lisp/net/tramp-tests.el (tramp--test-instrument-test-case)
(tramp-test32-shell-command): Use them.
-2021-12-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix mode-line display on TTY frames
@@ -87471,7 +87471,7 @@
ugly nowadays, since it's preceded by a blank, due to the new
min-width feature.
-2021-12-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid small parasitic button on mode line
@@ -87479,11 +87479,11 @@
character, which caused a "ghost" button on the mode line.
(Bug#52332)
-2021-12-06 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/pgtkterm.c (x_set_parent_frame): Fix coding style
-2021-12-06 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix SEGV crash by unref css provider too much
@@ -87498,15 +87498,15 @@
* src/pgtkterm.c (x_set_parent_frame):
-2021-12-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
Merge remote-tracking branch 'origin/emacs-28' into trunk
-2021-12-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* etc/tutorials/TUTORIAL.sv: Adjust to latest change in TUTORIAL.
-2021-12-06 Daniel Fleischer <danflscr@gmail.com>
+2023-04-15 Daniel Fleischer <danflscr@gmail.com>
Add package management to tutorial and startup screen
@@ -87517,25 +87517,25 @@
This was discussed in:
https://lists.gnu.org/r/emacs-devel/2021-12/msg00079.html
-2021-12-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image.c: Remove some dead code
* src/image.c (gui_put_x_image): Remove dead code, commented out since
2004.
-2021-12-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Update org-compat doc string
* lisp/org/org-compat.el (file-attribute-modification-time):
Update doc string to match that of builtin Emacs.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix minor clock skew issues
@@ -87545,14 +87545,14 @@
Don’t assume that getting the current time twice in rapid
succession will yield the same date and time.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Avoid timestamp info loss in mh-alias-tstamp
* lisp/mh-e/mh-alias.el (mh-alias-tstamp):
Don’t lose subsecond info when setting mh-alias-tstamp.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify by using format-time-string
@@ -87560,7 +87560,7 @@
* lisp/net/tramp.el (tramp-debug-message):
Prefer format-time-string to doing time formatting by hand.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify RFC 5322 time zone generation
@@ -87574,7 +87574,7 @@
* lisp/mail/mail-utils.el (mail-rfc822-time-zone):
Mark these should-have-been-internal functions obsolete.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix image load timekeeping bug
@@ -87583,7 +87583,7 @@
of the time it actually took to load the image. I think
this bug was introduced in 2013-02-16T03:29:30Z!rgm@gnu.org.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use time-convert in with-decoded-time-value
@@ -87591,7 +87591,7 @@
Prefer time-convert to current-time on the off chance that code
will use this obsolete macro even after current-time returns pairs.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify message-make-expires
@@ -87599,7 +87599,7 @@
Use time-add instead of doing it by hand. This also calculates the
expiration time more accurately than the old code did.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify message-unique-id etc.
@@ -87610,7 +87610,7 @@
no consing, instead of using (current-time) and then ignoring
the subsecond parts of the generated list.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer nil to (current-time) when either will do
@@ -87634,7 +87634,7 @@
some consing. Similarly, prefer omitting (current-time) arg
when this is equivalent.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify cedet-utest-elapsed-time
@@ -87642,7 +87642,7 @@
Copy newer (circa-2011) implementation from elp.el, so that the
code matches its documentation again.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Use time-equal-p to compare timestamps in tests
@@ -87650,13 +87650,13 @@
(test-time-since): Use time-equal-p to compare timestamps,
since the default form shouldn’t matter.
-2021-12-06 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Add time-convert tests
* test/src/timefns-tests.el (time-convert-forms): New test.
-2021-12-06 NightMachinary <rudiwillalwaysloveyou@gmail.com>
+2023-04-15 NightMachinary <rudiwillalwaysloveyou@gmail.com>
Added dired-create-destination-dirs-on-trailing-dirsep
@@ -87667,7 +87667,7 @@
(dired-create-destination-dirs): Mention the new option in the
docstring.
-2021-12-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -87675,14 +87675,14 @@
0bf10d5082 * test/Makefile.in (check-declare): Add missing --batch.
34f5656137 Document the subtleties of the 'cursor' text property
-2021-12-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix child frame crash on pgtk
* src/gtkutil.c (xg_check_special_colors): Use `FRAME_WIDGET'
on PGTK.
-2021-12-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the Git stash commands available in vc-dir Git buffers
@@ -87691,7 +87691,7 @@
* lisp/vc/vc-git.el (vc-dir-git-mode-map): New map.
(vc-dir-git-mode): New minor mode.
-2021-12-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding style
@@ -87705,14 +87705,14 @@
(delete_event):
(enter_notify_event): Fix coding style.
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make gnus-check-backend-function mode `debug-on-signal' friendly
* lisp/gnus/gnus.el (gnus-check-backend-function): Allow running
with `debug-on-signal'.
-2021-12-05 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
EIEIO: Remove redundant type info in help
@@ -87723,21 +87723,21 @@
Remove special case for defclass constructors.
* lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor): Declare it obsolete.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Use string-match-p in one case
* lisp/image-dired.el (image-dired-get-thumbnail-image): Use
string-match-p.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Don't disable mouse dragging
* lisp/image-dired.el (image-dired-thumbnail-mode-map): Don't
disable mouse dragging. (Bug#52201)
-2021-12-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix jittering when precision scrolling over images
@@ -87747,7 +87747,7 @@
(pixel-scroll-precision-scroll-down-page): Always set window
start.
-2021-12-05 Justin Schell <justinmschell@gmail.com> (tiny change)
+2023-04-15 Justin Schell <justinmschell@gmail.com> (tiny change)
vc-git--program-version to support Git for macOS version string
@@ -87758,7 +87758,7 @@
* lisp/vc/vc-git.el (vc-git--program-version): Ignore text after
the version number when parsing git versions (bug#52172).
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't fill byte-compilation warnings in batch mode
@@ -87766,11 +87766,11 @@
byte-compilation into several lines when in batch mode, because
that makes it difficult for some tools to parse them (bug#52281).
-2021-12-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Audit `string-match' usage in shr.el
@@ -87785,41 +87785,41 @@
(shr-render-td-1): Prefer string-match-p and string-search over
string-match where possible.
-2021-12-05 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Add workaround to compilation warning in gcc 10.x in image.c
* src/image.c (webp_load): Work around a (wrong) compiler warning
in gcc 10.x (bug#52276).
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update comment about `declare-function'
* lisp/subr.el (declare-function): Fix comment --
`byte-compile-declare-function' doesn't exist.
-2021-12-05 YugaEgo <yet@ego.team>
+2023-04-15 YugaEgo <yet@ego.team>
* lisp/info.el (info-menu-star): Improve documentation
* lisp/info.el (info-menu-star): Improve the doc string (bug#52315).
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix wording in eieio.texi (Generics)
* doc/misc/eieio.texi (Generics): Fix wording in paragraph
(bug#52317).
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix regression introduced by previous context-menu-map change
* lisp/mouse.el (context-menu-map): Make the context mode work
with flyspell again (bug#52237).
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Clarify Creating Frames documentation"
@@ -87827,7 +87827,7 @@
The new documentation was incorrect.
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Improve before-make-frame-hook and after-make-frame-functions docs"
@@ -87835,20 +87835,20 @@
The new documentation was incorrect.
-2021-12-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix fancy-about-screen point placement
* lisp/startup.el (fancy-about-screen): Make point placement more
resilient (bug#43636).
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Light copy-edits to recent additions to ERC manual
* doc/misc/erc.texi (Introduction, Getting Started): Light copy-edits.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove no-op calls to decode-char with 'ucs' arg
@@ -87866,7 +87866,7 @@
* lisp/nxml/xmltok.el (xmltok-unicode-to-char): Make into obsolete
function alias for 'identity'. Update single caller.
-2021-12-05 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Use gnus-error to report mail-source failures
@@ -87880,18 +87880,18 @@
* doc/misc/gnus.texi (Mail Source Customization): Remove mention of
the above option from the manual.
-2021-12-05 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/frame.c (gui_set_border_width): Revert confused changes
-2021-12-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix out-of-bounds access in xdisp.c
* src/xdisp.c (produce_stretch_glyph): Avoid indexing it->stack
with a negative index. Reported by Po Lu <luangruo@yahoo.com>.
-2021-12-05 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Interpolate large pixel scrolls
@@ -87901,14 +87901,14 @@
(pixel-scroll-precision): Interpolate scrolls under some
circumstances.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in generator-tests.el
* test/lisp/emacs-lisp/generator-tests.el (cps-let*-shadow-empty)
(cps-let-shadow-empty, cps-let*-parallel): Silence byte-compiler.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence warnings about testing obsolete functions and macros
@@ -87918,7 +87918,7 @@
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el: Silence
byte-compiler warnings about testing obsolete functions and macros.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove hacks for broken `with-suppressed-warnings'
@@ -87926,7 +87926,7 @@
* test/lisp/tar-mode-tests.el (tar-mode-test-tar-grind-file-mode):
Remove hack for broken `with-suppressed-warnings'.
-2021-12-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -87936,11 +87936,11 @@
f3e6a432c5 ; * doc/misc/efaq.texi (New in Emacs 28): Add more news.
00236cc802 Fix the enumeration values returned by 'try_scrolling'
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove hack from seq-tests.el for broken `with-suppressed-warnings'
@@ -87948,14 +87948,14 @@
now works better in erf-deftests, so remove hack that works around
it (bug#36568).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve before-make-frame-hook and after-make-frame-functions docs
* lisp/frame.el (before-make-frame-hook):
(after-make-frame-functions): Note when the functions are run.
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify Creating Frames documentation
@@ -87963,7 +87963,7 @@
explanation -- even if the hooks are set, they won't be run
(bug#38143).
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix tty mouse wheel on window systems other than X
@@ -87973,7 +87973,7 @@
(mouse-wheel-right-alternate-event): Set appropriately for
non-X systems.
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make help--describe-command more robust
@@ -87981,14 +87981,14 @@
are defined in help-mode.el, so it might not exist yet when
calling `documentation' directly (bug#52291).
-2021-12-04 Christer Enfors <christer.enfors@gmail.com> (tiny change)
+2023-04-15 Christer Enfors <christer.enfors@gmail.com> (tiny change)
Add IRC introduction to the ERC manual
* doc/misc/erc.texi (Getting Started): Mention libera.char (bug#52287).
(Introduction): Explain what IRC is.
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make pixel scrolling through images less jumpy
@@ -87996,7 +87996,7 @@
(pixel-scroll-precision-scroll-down-page): Improve detection of
situations where vscroll must directly be set.
-2021-12-04 Earl Hyatt <okamsn@protonmail.com>
+2023-04-15 Earl Hyatt <okamsn@protonmail.com>
Update the Info documentation of Eshell's built-in commands
@@ -88005,32 +88005,32 @@
the descriptions and mention user options affecting command
behavior. Sort these commands in alphabetical order (bug#52289).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make package-dir-info more resilient
* lisp/emacs-lisp/package.el (package-dir-info): Check that the
file exists before using it (bug#41489).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak fancy-about-text
* lisp/startup.el (fancy-about-text): Mention that Emacs is an
editor, because people don't know that (bug#43636).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fill Emacs version on about screen
* lisp/startup.el (fancy-about-text): Fill the Emacs version,
since it's too long these days.
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further gnus-inews-insert-gcc fixes
@@ -88038,7 +88038,7 @@
comma to separate groups, since that's what the splitter expects
(bug#52274).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Avoid having gud bug out if `C-x C-a' has been bound
@@ -88047,7 +88047,7 @@
assuming that `C-x C-a' is undefined (bug#6035).
(gud-def): Use the map.
-2021-12-04 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Don't swallow gnus-search errors when creating nnselect groups
@@ -88057,7 +88057,7 @@
(gnus-search-error): Define a new parent error for all gnus-search
errors.
-2021-12-04 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/isearch.el (isearch-delete-char): Reopen hidden overlays (bug#52248).
@@ -88065,35 +88065,35 @@
to not call isearch-range-invisible on inhibit-isearch text.
Remove min/max since arguments are always in the right order.
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix pixel-fill--fill-line infloop for certain unbreakable lines
* lisp/textmodes/pixel-fill.el (pixel-fill--fill-line): Fix
infloops for certain line widths (bug#52271).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a comma between groups in gnus-inews-insert-gcc
* lisp/gnus/gnus-msg.el (gnus-inews-insert-gcc): Insert a comma
between group names to get more mail-like syntax (bug#52274).
-2021-12-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve bookmark-maybe-historicize-string doc string
* lisp/bookmark.el (bookmark-maybe-historicize-string): Clarify
that this isn't about menus (but calls from bmenu) (bug#12504).
-2021-12-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add ".crate" to Tramp archive file suffixes.
* doc/misc/tramp.texi (Archive file names):
* lisp/net/tramp-archive.el (tramp-archive-suffixes): Add ".crate".
-2021-12-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
eieio-core.el: Allow assignment to cl-structs through `slot-value`
@@ -88107,7 +88107,7 @@
(eieio-test-defstruct-slot-value): Test that cl-struct slots can be
assigned via `slot-value`.
-2021-12-04 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Fix (date-to-time "2021-12-04")
@@ -88124,7 +88124,7 @@
* test/lisp/calendar/time-date-tests.el (test-date-to-time)
(test-days-between): New tests.
-2021-12-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Further changes on directory summary line in Tramp
@@ -88135,7 +88135,7 @@
* lisp/net/tramp-smb.el (tramp-smb-handle-insert-directory):
Revert previous change, it doesn't fly.
-2021-12-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Silence byte-compiler in some tests
@@ -88166,11 +88166,11 @@
* test/src/search-tests.el
(test-replace-match-modification-hooks): Silence byte-compiler.
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix double buffering on pgtk
@@ -88182,26 +88182,26 @@
(leave_notify_event): Clear mouse face.
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix coding style of a recent change
* src/pgtkfns.c (update_watched_scale_factor): Fix coding style.
-2021-12-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the MinGW build broken by recent changes in image.c
* src/image.c (rsvg_handle_get_intrinsic_size_in_pixels)
[WINDOWSNT]: Fix prototype. (Bug#44655)
-2021-12-04 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Make use of Trash on macOS (bug#21340)
* src/nsfns.m (Fsystem_move_file_to_trash): New function.
-2021-12-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Yet another place inside redisplay_window to prevent quitting
@@ -88209,14 +88209,14 @@
around the call to 'lookup_derived_face' (which can QUIT).
(Bug#44448)
-2021-12-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix dependencies for files in the 'nt' subdirectory
* Makefile.in ($(NTDIR)): If non-empty, depend on 'lib'. That's
because some files in nt/ include generated Gnulib headers.
-2021-12-04 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Keep track of scale factor by atimer and recreate cairo_surface_t
@@ -88237,11 +88237,11 @@
* src/pgtkterm.h (struct pgtk_output): New members.
(FRAME_CR_SURFACE_DESIRED_HEIGHT): Move macros from pgtkterm.c
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-04 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make precision pixel scrolling work in an hscrolled window
@@ -88252,7 +88252,7 @@
(pixel-scroll-precision): Don't delegate to mwheel-scroll if
window is hscrolled.
-2021-12-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -88265,34 +88265,34 @@
c006c490eb ; * doc/misc/efaq.texi (Latest version of Emacs): Update v...
9fbc4fa0e7 Add Tramp version integrated in Emacs 28.1
-2021-12-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
5d6f828799 Unbreak build after 9c222b9c1a7f91497a37567b4d7de3a511fff069.
-2021-12-04 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/minibuffer.el: Don't return a boundary outside its arg
* lisp/minibuffer.el (completion-table-subvert): Fix out of string
start boundary for the odd case where `string` is shorter than `s1`.
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the error message in epa-display-error more helpful
* lisp/epa.el (epa-display-error): Output a more helpful error
message when reading a keyring file (bug#12923).
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix keymap-lookup implementation
* lisp/keymap.el (keymap-lookup): Make this actually work for
looking up keys.
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix highlighting of "Exit*" phrases in f90-mode
@@ -88300,14 +88300,14 @@
highlight phrases that start with "Exit" as an exit statement
(bug#14442).
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `mouse-1' restart the cua-rect rectangle
* lisp/emulation/cua-rect.el (cua-mouse-set-rectangle-mark):
Restart the rectangle on mouse-1 (bug#51557).
-2021-12-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make last change work for deltas that are multiples of max-height
@@ -88315,7 +88315,7 @@
(pixel-scroll-precision-scroll-up-page): Use `max-height' that
is slightly less than the text height of the window.
-2021-12-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make it work to pixel scroll by deltas larger than the window
@@ -88327,11 +88327,11 @@
(pixel-scroll-precision-scroll-down): Make it safe to scroll
by deltas larger than the current window.
-2021-12-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that MAIN_FIRST have finished compilation before doing the rest
@@ -88340,7 +88340,7 @@
(GREP_OPTIONS): Depend on main-first.
(MAIN_FIRST): Compile cconv.el before c-by.el (bug#8764).
-2021-12-03 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port to Tiny C on x86-64
@@ -88350,7 +88350,7 @@
Accept __x86_64__ as an alias for __amd64__.
* src/lisp.h (alignas): Provide a no-op substitute.
-2021-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "emacs-lisp-mode: Use error face for "/d" indicator"
@@ -88360,14 +88360,14 @@
warning face. The warning face is prominent enough. We
never decided to annoy people like that.
-2021-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Add more dired-x tests
* test/lisp/dired-x-tests.el (dired-x--string-to-number): Add more
tests with various thousands separators.
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some more items obsolete since Emacs 23
@@ -88378,7 +88378,7 @@
* lisp/obsolete/vc-arch.el (vc-arch-command): Remove items
obsolete since Emacs 23.
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove two functions obsolete since Emacs 23
@@ -88387,7 +88387,7 @@
Emacs 23.
* lisp/nxml/xsd-regexp.el: Doc fix.
-2021-12-03 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Prefer rsvg_handle_get_intrinsic_size_in_pixels
@@ -88398,7 +88398,7 @@
(svg_load_image): Prefer the results of
rsvg_handle_get_intrinsic_size_in_pixels if available.
-2021-12-03 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Improve overflow checking in svg_load_image
@@ -88415,13 +88415,13 @@
(compute_image_size): Don’t bother to calculate :max-width if
:width is specified, and likewise for :max-height and :height.
-2021-12-03 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Simplify svg_load_image
* src/image.c (svg_load_image): Simplify slightly.
-2021-12-03 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
More-robust svg_load_image fallback
@@ -88433,7 +88433,7 @@
rsvg_handle_get_intrinsic_dimensions did not report image width
and height, or did not report a viewbox.
-2021-12-03 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Use gnus-message instead of plain message in gnus-search
@@ -88442,35 +88442,35 @@
* lisp/gnus/gnus-search.el: All messaging should be done via
`gnus-message'.
-2021-12-03 Koen van Greevenbroek <koen_devel@posteo.net> (tiny change)
+2023-04-15 Koen van Greevenbroek <koen_devel@posteo.net> (tiny change)
Fix a compilation warning in pgtkterm.c
* src/pgtkterm.c (set_fullscreen_state): Fix a compilation warning
(bug#52260).
-2021-12-03 Tor Kringeland <tor.a.s.kringeland@ntnu.no> (tiny change)
+2023-04-15 Tor Kringeland <tor.a.s.kringeland@ntnu.no> (tiny change)
Add a docstring to `iso-transl-set-language'
* lisp/international/iso-transl.el: Document
`iso-transl-set-language' (bug#52261).
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move 'C-x 8 .' to 'C-x 8 . .'
* lisp/international/iso-transl.el (iso-transl-char-map): Move
'C-x 8 .' to 'C-x 8 . .' and add ż.
-2021-12-03 Tor Kringeland <tor.a.s.kringeland@ntnu.no> (tiny change)
+2023-04-15 Tor Kringeland <tor.a.s.kringeland@ntnu.no> (tiny change)
Add support for some Polish characters with `C-x 8'
* lisp/international/iso-transl.el: Add support for some Polish
characters (bug#52173).
-2021-12-03 Katsumi Yamaoka <yamaoka@jpl.org>
+2023-04-15 Katsumi Yamaoka <yamaoka@jpl.org>
Fix regression introduced by the previous date-to-time change
@@ -88478,7 +88478,7 @@
test if `parse-time-string' returns a valid data as the old
version did it with the help of `encode-time' (bug#52209).
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify the run-at-time documentation about "integral multiple"
@@ -88486,21 +88486,21 @@
* doc/lispref/os.texi (Timers): Explain what "integral multiple"
really means.
-2021-12-03 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Remove separators at the beginning and end of the context menu
* lisp/mouse.el (context-menu-map): Remove beginning/end
seperators (bug#52237).
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve how dired-mark-sexp interprets file sizes in non-C locales
* lisp/dired-x.el (dired-x--string-to-number): Try to understand
localised numbers (with "." separators or the like) (bug#23373).
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
emacs-lisp-mode: Use error face for "/d" indicator
@@ -88508,7 +88508,7 @@
the dynamic scoping ("/d") indicator in the mode line to make it stand
out more.
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't support obsolete sregex syntax in re-builder
@@ -88516,22 +88516,22 @@
(reb-lisp-syntax-p, reb-change-syntax, reb-cook-regexp): Remove final
remaining references to the long obsolete sregex syntax.
-2021-12-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in NEWS about 'write-file'
-2021-12-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix dired--insert-disk-space
* lisp/dired.el (dired--insert-disk-space): Handle case
`get-free-disk-space' returns nil.
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/image.el (image): Add :prefix and :link.
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-mode: Advertize viewing as text less eagerly
@@ -88542,13 +88542,13 @@
(image-mode-as-text): Don't mention key binding for editing as hex.
(image-mode-as-hex): Minor cleanup.
-2021-12-03 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-macs.el (natnum): Fix typo
* lisp/emacs-lisp/cl-macs.el (natnum): Define it as a type
-2021-12-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt directory summary line handling in Tramp
@@ -88556,24 +88556,24 @@
* lisp/net/tramp-smb.el (tramp-smb-handle-insert-directory):
Do not add or modify summary line when `dired-free-space' is bound.
-2021-12-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Support display of non-ASCII characters with aligned columns"
This reverts commit 608267c71e11da9c757c269a5e22e62ef04d0bfe.
-2021-12-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Send scroll stop events to xwidgets when built with XInput 2
* src/xwidget.c (xwidget_scroll): Set xg_event->scroll.is_stop
when appropriate.
-2021-12-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-03 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve velocity calculation in momentum scrolling
@@ -88587,7 +88587,7 @@
(pixel-scroll-calculate-velocity): Use current time.
(pixel-scroll-start-momentum): Use better algorithm.
-2021-12-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -88599,17 +88599,17 @@
bbf4140091 * admin/diff-tar-files: Don't assume .tar.gz.
0a50ad11db * lisp/tab-bar.el (tab-bar-close-other-tabs): Fix regression.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Generate touch-end events on pgtk
* src/pgtkterm.c (scroll_event): Generate touch end events.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make momentum scrolling much nicer
@@ -88619,17 +88619,17 @@
(pixel-scroll-start-momentum): Improvements to momentum
algorithm.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/pixel-scroll.el (pixel-scroll-start-momentum): Fix algorithm.
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-02 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* etc/NEWS: Mention change in `insert-directory' derivates. Fix typos.
-2021-12-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support display of non-ASCII characters with aligned columns
@@ -88639,14 +88639,14 @@
"standard" width.
(syms_of_xdisp) <align-columns-display>: New boolean variable.
-2021-12-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
update_autogen: Improve error handling slightly
* admin/update_autogen: Check exit status of cd. Use single
quoting for trap condition.
-2021-12-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
update_autogen: Remove unused -H flag
@@ -88655,7 +88655,7 @@
helps.
* admin/update_autogen: Remove the -H flag as it is no longer used.
-2021-12-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -88667,7 +88667,7 @@
# Conflicts:
# lisp/ldefs-boot.el
-2021-12-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -88679,7 +88679,7 @@
50b40e1d4f ; * lisp/org/ob-julia.el: Fix Author header for authors.el.
84166ea2e6 CC Mode: Recognise "struct foo {" as introducing a type de...
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix characters.el build issue
@@ -88687,25 +88687,25 @@
(glyphless--bidi-control-characters): Don't use names here,
because it's too early (bug#52240).
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous macroexp--warn-wrap change
* lisp/emacs-lisp/macroexp.el (macroexp--warn-wrap): Don't call
byte-compile-warning-enabled-p with zero parameters.
-2021-12-02 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
* lisp/gnus/gnus-art.el (gnus--variable-pitch-p): Don't error out if face nil
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-c C-w' copy the executable bits to the new file
* lisp/files.el (write-file): When visiting an executable file,
make the new file executable, too (bug#18915).
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new variable 'process-error-pause-time'
@@ -88716,7 +88716,7 @@
(exec_sentinel_error_handler): Use it.
(syms_of_process): New variable process-error-pause-time (bug#19457).
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve momentum scrolling algorithm
@@ -88728,7 +88728,7 @@
(pixel-scroll-start-momentum): Improve algorithm.
-2021-12-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of free disk space in Dired
@@ -88736,7 +88736,7 @@
MS-Windows.
(dired-free-space): Clarify the meaning of 'first'.
-2021-12-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix recent changes related to 'glyphless-display-mode'
@@ -88749,14 +88749,14 @@
* doc/lispref/display.texi (Glyphless Chars): Fix spelling and add
a cross-reference.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of duplicate pgtk function
* src/pgtkfns.c (Fpgtk_popup_font_panel): Remove function.
(syms_of_pgtkfns): Get rid of removed subr.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Documentation fixes for pgtk port
@@ -88764,32 +88764,32 @@
* doc/lispref/frames.texi (Multiple Terminals): Add references
to the `pgtk' terminal type.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix `menu-set-font' on pgtk
* src/pgtkfns.c (Fx_select_font): New function.
(syms_of_pgtkfns): Define new subr.
-2021-12-02 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dired-virtual doc string less confusing
* lisp/dired-x.el (dired-virtual): Make the doc string less
confusing (bug#20992).
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add `cl-constantly' function
* lisp/emacs-lisp/cl-lib.el (cl-constantly): Add Common Lisp
function missing (bug#21584).
-2021-12-02 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Ensure there are no duplicate separators when creating a context menu
@@ -88799,7 +88799,7 @@
* lisp/mouse.el (context-menu-map): Ensure no duplicate separators
(bug#52237).
-2021-12-02 Daniel Fleischer <danflscr@gmail.com>
+2023-04-15 Daniel Fleischer <danflscr@gmail.com>
browse-url-button-regexp: Recognize gemini: links
@@ -88811,14 +88811,14 @@
* lisp/net/browse-url.el (browse-url-button-regexp): Add support
for the gemini: URL type.
-2021-12-02 Michael Levine <melevine45@gmail.com>
+2023-04-15 Michael Levine <melevine45@gmail.com>
Fix usage of deprecated syntax in some cedet tests
* test/lisp/cedet/srecode/fields-tests.el
(srecode-field-utest-impl): Fix deprecated syntax.
-2021-12-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a bidi-control target for `glyphless-char-display-control'
@@ -88834,7 +88834,7 @@
* lisp/textmodes/glyphless-mode.el (glyphless-mode-types): Add a
new type -- bidi-control.
-2021-12-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/cedet/semantic/bovine/c.el (semantic-tag-protection): Silence warning
@@ -88847,7 +88847,7 @@
`when` into an `if` and set `prot` instead of throwing away a result.
Use `pcase` while we're at it.
-2021-12-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/macroexp.el: Improve last change
@@ -88858,7 +88858,7 @@
to be a list to pass to `byte-compile-warning-enabled-p`.
(macroexp-macroexpand): Simplify accordingly.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add some primitive momentum-based precision scrolling
@@ -88878,7 +88878,7 @@
* src/xterm.c (handle_one_xevent): Fix touch-end event
generation.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `touch-end' event type
@@ -88898,7 +88898,7 @@
* src/xterm.c (handle_one_xevent): Send touch-end events when
appropriate.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix precision scrolling when there is a scroll margin
@@ -88906,18 +88906,18 @@
(pixel-scroll-precision-scroll-up): Take scroll margin into
accout.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of vmotion loop in `pixel-scroll-precision-scroll-up'
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-up): Use
posn-at-x-y for cursor motion.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change how Dired displays available space
@@ -88934,14 +88934,14 @@
to dired-tests.
* test/lisp/dired-tests.el (data-dir): Moved here.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix "SEE ALSO" buttons in some man pages
* lisp/man.el (Man-highlight-references0): Don't include "and" in
the links (bug#52229).
-2021-12-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Make use of `comp-cstr-shallow-copy'
@@ -88953,7 +88953,7 @@
(comp-cstr-intersection-no-mem, comp-cstr-intersection)
(comp-cstr-negation): Use `comp-cstr-shallow-copy'.
-2021-12-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* Redefine `comp-cstr-shallow-copy'
@@ -88962,11 +88962,11 @@
(comp-cstr-shallow-copy): New function.
(comp-cstr-=): Use `copy-sequence'.
-2021-12-01 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Decl struct predicates as pure
-2021-12-01 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Several amendments to scratch/correct-warning-pos.
@@ -89005,39 +89005,39 @@
lisp/emacs-lisp/pcase.el (pcase-compile-patterns, pcase--u1): Add an extra
position argument to each call of macroexp-warn-and-return.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-x C-d' require either an existing directory or a wildcard
* lisp/files.el (list-directory): Require either an existing
directory or a wildcard (bug#25807).
-2021-12-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cconv.el (cconv--lifted-arg): Simplify
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix table-fixed-width-mode when typing fast
* lisp/textmodes/table.el (table-with-cache-buffer): Use the value
of table-fixed-width-mode in the correct buffer (bug#26701).
-2021-12-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Mention 'glyphless-display-mode' in conjunction with bidi display
* doc/emacs/mule.texi (Bidirectional Editing): Mention
'glyphless-display-mode'. (Bug#27544)
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix fencepost error in pixel-fill--fill-line
* lisp/textmodes/pixel-fill.el (pixel-fill--fill-line): Don't add
a newline (and continuation) if we're at the end of the line.
-2021-12-01 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
characters.el: remove repetition in glyphless-char-display-control
@@ -89046,7 +89046,7 @@
characters.
(glyphless-char-display-control): Use 'glyphless-char-display-method'.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new face `variable-pitch-text'
@@ -89058,7 +89058,7 @@
* lisp/net/shr.el (shr-text): Use it.
-2021-12-01 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Fix closure-conversion of shadowed captured lambda-lifted vars
@@ -89075,7 +89075,7 @@
* test/lisp/emacs-lisp/cconv-tests.el (cconv-tests--intern-all)
(cconv-closure-convert-remap-var): Add tests.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new minor mode `glyphless-display-mode'
@@ -89084,28 +89084,28 @@
* doc/lispref/display.texi (Glyphless Chars): Document it.
* lisp/textmodes/glyphless-mode.el: New minor mode (bug#27544).
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix update-glyphless-char-display variable setting
* lisp/international/characters.el
(update-glyphless-char-display): Only set the variable if given.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make pixel-fill-region handle space regions better
* lisp/textmodes/pixel-fill.el (pixel-fill-region): Preserve the
face on the replacement spaces.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix precision pixel scrolling for a recent change
* lisp/pixel-scroll.el (pixel-scroll-precision-mode-map): Use
`mwheel-coalesce-scroll-events' instead.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop relying on `x_coalesce_scroll_events' in pgtk code
@@ -89113,18 +89113,18 @@
`mwheel_coalesce_scroll_events'.
(x_coalesce_scroll_events): Remove variable.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Enable gnus-treat-fold-headers by default
* lisp/gnus/gnus-art.el (gnus-treat-fold-headers): Change default
to `head'.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use proportional fonts in the Gnus headers by default
@@ -89132,14 +89132,14 @@
(gnus--variable-pitch-p): New helper function.
(gnus-article-treat-fold-headers): Fill using pixel filling.
-2021-12-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Preserve newlines at the end of pixel-fill-region
* lisp/textmodes/pixel-fill.el (pixel-fill-region): Preserve
newlines at the end.
-2021-12-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Support precision mouse scrolling on MS-Windows
@@ -89163,7 +89163,7 @@
* doc/lispref/commands.texi (Misc Events): Improve wording of the
description of mouse-wheel events.
-2021-12-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
update_autogen: Remove deprecated -I flag
@@ -89171,11 +89171,11 @@
longer used since info/dir is now generated at install time if needed,
and is not in the repository any more.
-2021-12-01 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-12-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -89193,14 +89193,14 @@
354f6c5609 ; * ChangeLog.3: Formatting fixes.
6192525a96 ; make change-history-commit
-2021-12-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update SKK-JISYO.L from upstream
* leim/SKK-DIC/SKK-JISYO.L: Update from
https://raw.githubusercontent.com/skk-dev/dict/master/SKK-JISYO.L
-2021-12-01 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Update publicsuffix.txt from upstream
@@ -89208,60 +89208,60 @@
https://publicsuffix.org/list/public_suffix_list.dat
dated 2021-11-26 23:07:15 UTC.
-2021-11-30 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Suppress emacsclient message that daemon should have started if --quiet
* lib-src/emacsclient.c (start_daemon_and_retry_set_socket): Don't
output "daemon should have started" message if --quiet (bug#52214).
-2021-11-30 Bob Rogers <rogers-emacs@rgrjr.homedns.org>
+2023-04-15 Bob Rogers <rogers-emacs@rgrjr.homedns.org>
Make date-to-time work with date-only date strings
* lisp/calendar/time-date.el (date-to-time): Try harder to parse
dates with no times (bug#52209).
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Autoload byte-compile-warning-enabled-p
* lisp/emacs-lisp/bytecomp.el (byte-compile-warning-enabled-p):
Autoloads (for easier use in macroexp etc).
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add an ldefs-boot.el target to the Makefile
* lisp/Makefile.in (ldefs-boot.el): Add a target to regenerate the
ldefs-boot.el file.
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make "make force-autoloads" produce the correct result
* lisp/emacs-lisp/autoload.el (cl-lib): We need the cl-macs at
runtime to expand cl-defmacros to find declare indent forms.
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't include the other loaddef files in the no-autoloads section
* lisp/emacs-lisp/autoload.el (make-directory-autoloads): Don't
include the other loaddef files in the no-autoloads section.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Avoid unnecessary call when pixel scrolling
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-down):
Avoid unnecessary call to `posn-at-point'
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make pixel scrolling faster
@@ -89270,22 +89270,22 @@
(pixel-scroll-precision-scroll-up): Stop subtracting height of
window lines.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Synchronize pgtk tab bar code with xterm
* src/pgtkterm.c (x_draw_image_relief):
(button_event): Synchronize code with xterm. (Bug#50779)
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-11-30 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
* lisp/loadup.el (paren): Preload it (again).
-2021-11-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of pixel-fill
@@ -89294,7 +89294,7 @@
* lisp/textmodes/pixel-fill.el (pixel-fill-region): Doc fix.
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use pixel-fill-width in shr.el
@@ -89302,7 +89302,7 @@
(shr-insert-document): Use it.
(shr-fill-text): Ditto.
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document pixel-fill-region
@@ -89311,7 +89311,7 @@
* lisp/textmodes/pixel-fill.el (pixel-fill-width): Add new helper
function.
-2021-11-30 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Revert "Preload paren.el"
@@ -89319,7 +89319,7 @@
This reverts commit 340e527bed83ff0382446132c871088ad61d1745.
-2021-11-30 Andrea Corallo <akrl@sdf.org>
+2023-04-15 Andrea Corallo <akrl@sdf.org>
Improve native compiler startup circular dependecy prevention mechanism
@@ -89332,7 +89332,7 @@
function.
(normal-top-level): Call it.
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow storing buffer names in registers
@@ -89341,7 +89341,7 @@
* lisp/register.el (register-val-jump-to, register-val-describe):
Add support for (buffer . ...) registers (bug#33033).
-2021-11-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Generalise CPS-conversion let optimisation
@@ -89349,32 +89349,32 @@
Eliminate a temporary for the last of any `let` form, not just for
single-binding ones. Suggested by Stefan Monnier.
-2021-11-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow inhibiting warnings about obsolete macros again
* lisp/emacs-lisp/macroexp.el (macroexp-macroexpand): Inhibit
warning if requested (bug#50984).
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* src/nsterm.m (Vns_scroll_event_delta_factor): Fix doc string.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pixel scrolling again
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-down): Fix
confusion about absolutivity of `window-edges'.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix 1-off errors in pixel scrolling code
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-down): Fix
one-off errors.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve upwards pixel scrolling for large images
@@ -89384,7 +89384,7 @@
* lisp/pixel-scroll.el (pixel-scroll-precision-up): Handle
vscrolling large images in the first unseen line.
-2021-11-30 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Better CPS conversion of multi-binding `let`
@@ -89392,14 +89392,14 @@
Don't translate single-binding `let` into `let*` with an extra
temporary variable; it just adds two more useless states.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Calculate pixel deltas correctly
* src/pgtkterm.c (scroll_event): Fix scroll delta
factor. (bug#52195)
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
@@ -89407,7 +89407,7 @@
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-11-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -89418,18 +89418,18 @@
# Conflicts:
# doc/misc/modus-themes.org
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix annoying bell rings when pixel scrolling to buffer limits
* lisp/pixel-scroll.el (pixel-scroll-precision): Don't ding at
buffer limits.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable shallow menu bar updates on PGTK
@@ -89438,7 +89438,7 @@
* src/pgtkmenu.c (set_frame_menubar): Allow shallow updates.
-2021-11-30 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `ns-scroll-event-delta-factor'
@@ -89447,14 +89447,14 @@
* lisp/cus-start.el: Add option.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow non-float values in x-scroll-event-delta-factor
* src/xterm.c (handle_one_xevent): Use XFLOATINT instead of
XFLOAT_DATA.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make interrupt input optionally work on PGTK
@@ -89465,13 +89465,13 @@
* src/pgtkterm.h (struct pgtk_display_info): Add `connection'
field.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop setting mouse face GC manually, as it is no longer required
* src/pgtkterm.c (x_set_mouse_face_gc): Remove obsolete code.
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new package pixel-fill.el
@@ -89483,14 +89483,14 @@
* lisp/textmodes/pixel-fill.el: New package.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add missing function declarations to pgtk-win.el
* lisp/term/pgtk-win.el: Add missing IM context related
declarations.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable pixel-precision scrolling on pgtk port
@@ -89498,7 +89498,7 @@
events.
(x_coalesce_scroll_events): New variable.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Get rid of pgtk_select and use xg_select instead
@@ -89509,11 +89509,11 @@
* src/process.c (wait_reading_process_output): Stop
using pgtk_select.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* lisp/frame.el (display-graphic-p): Fix typo.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build after merge
@@ -89521,13 +89521,13 @@
* src/gtkutil.c (xg_event_is_for_scrollbar):
* src/termhooks.h (enum output_method): Fix trivial typos.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/feature/pgtk' into feature/pgtk
Merge remote-tracking branch 'origin/master' into feature/pgtk
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Audit the Emacs manual for keymap-*-related changes
@@ -89537,7 +89537,7 @@
* doc/emacs/abbrevs.texi (Editing Abbrevs): Change some examples
to use keymap-* functions.
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix some of the argument handling in keymap-set and keymap-substitute
@@ -89546,7 +89546,7 @@
(keymap-substitute): Fix confusion in implementation -- the args
are definitions, not keys.
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Edit the lispref manual for define-key/keymap-set fallout
@@ -89573,7 +89573,7 @@
(Strings of Events): Prefer `keymap-set' instead of `define-key'
most places, and use `defvar-keymap' in some of the examples.
-2021-11-29 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix build on macOS
@@ -89581,7 +89581,7 @@
(NSPasteboardTypePNG): These are already defined on macOS 10.6 and
above and aren't used at all in GNUstep.
-2021-11-29 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix NS port text decorations (bug#52156)
@@ -89589,22 +89589,22 @@
decorations other than underline.
(ns_draw_glyph_string): Remove superfluous color setting call.
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot.el
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up generation of help text for ldefs-boot.el
* lisp/emacs-lisp/autoload.el (autoload-rubric): Don't put the
help text into cedet/*/loaddefs.el (bug#51744).
-2021-11-29 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/gitlab-ci.yml (.job-template): Modify find scripts.
-2021-11-29 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Remove problematic characters from modus-themes.org (bug#52126)
@@ -89628,28 +89628,28 @@
(Frequently Asked Questions): Remove parentheses from headings as they
can cause problems in the .texi version of the file.
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't return whitespace for thing-at-point in whitespace-only buffers
* lisp/thingatpt.el (bounds-of-thing-at-point): If the buffer is
empty, return nil for most things (bug#52098).
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make Re: recognition in ispell-message less ambiguous
* lisp/textmodes/ispell.el (ispell-message): Require a "Re" as a
word, not as a word ending (bug#52104).
-2021-11-29 Brahimi Saifullah <brahimi.saifullah@gmail.com> (tiny change)
+2023-04-15 Brahimi Saifullah <brahimi.saifullah@gmail.com> (tiny change)
Make `group' widgets prettier in Customize
* lisp/wid-edit.el (group): Make the ":" invisible so that the
buffer looks prettier (bug#52143).
-2021-11-29 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
project-kill-buffers can display list of buffers to kill
@@ -89660,18 +89660,18 @@
(project-kill-buffers): Handle
project-kill-buffers-display-buffer-list option (bug#52148).
-2021-11-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Signal a better error in tabulated-list-sort
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-sort): Signal
error earlier on invalid column numbers (bug#52154).
-2021-11-29 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/xdisp.c (mouse_face_from_buffer_pos): Revert whitespace only change
-2021-11-29 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Remove draw_glyphs_debug
@@ -89680,13 +89680,13 @@
* src/xdisp.c (draw_glyphs_debug):
(draw_glyphs):
-2021-11-29 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Replace XFillRectangle with cairo_rectangle and cairo_fill
* src/pgtkterm.c (pgtk_flash):
-2021-11-29 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Use /* */ comment style instead of //
@@ -89701,21 +89701,21 @@
(key_press_event):
(syms_of_pgtkterm):
-2021-11-29 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Use mupdf in doc-view-mode if gs is not installed
* lisp/doc-view.el (doc-view-mode-p): Use mupdf to render PDF and
related formats if gs is not installed (bug#52170).
-2021-11-29 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change)
+2023-04-15 Ikumi Keita <ikumi@ikumi.que.jp> (tiny change)
Make fill-region-as-paragraph clear the markers it creates
* lisp/textmodes/fill.el (fill-region-as-paragraph): Clear
temporary markers (bug#52175).
-2021-11-29 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Do not buttonize key bindings outside of *Help* buffers
@@ -89749,7 +89749,7 @@
(describe-coding-system, describe-font, describe-fontset)
((list-fontsets): Bind the new variable.
-2021-11-29 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
First commit of scratch/correct-warning-pos.
@@ -89877,28 +89877,28 @@
(print_object): Replace EQ with BASE_EQ.
(print_symbols_bare): New boolean variable.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Really make `x-scroll-event-delta-factor' dependent on system
* lisp/cus-start.el: Move X specific builtins that start
with "x-" before the catch-all test.
-2021-11-29 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
Avoid undefined behaviour when copying part of structure
* src/dispnew.c (copy_row_except_pointers): Don't use address of
subobject as starting point.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix last change for non-X platforms
* lisp/cus-start.el: Don't announce
`scroll-bar-adjust-thumb-portion' on non-X systems.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow customizing the pixel delta of wheel events on X
@@ -89907,18 +89907,18 @@
delta factor to wheel events with pixel data.
(Vx_scroll_event_delta_factor): New user option.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make overhangs in ftcrfont work on Haiku
* src/ftcrfont.c (ftcrfont_draw): Dump left overhang clipping
on Haiku and always set `background_filled_p'.
-2021-11-29 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
* doc/emacs/haiku.texi (Haiku Basics): Fix a typo.
-2021-11-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -89926,20 +89926,20 @@
bca57086be ; Remove an obsolete comment
455b64c336 * src/coding.c (Fdecode_coding_region, Fencode_coding_regi...
-2021-11-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update XKB map on MappingNotify
* src/xterm.c (handle_one_xevent): Update XKB map when X
tells us the keyboard map has been updated.
-2021-11-28 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak gnus-art key binding
* lisp/gnus/gnus-art.el (:keymap): Fix mnemonic key binding.
-2021-11-28 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Use compiler macros for the key syntax checks
@@ -89959,7 +89959,7 @@
(define-keymap): Use compiler-macro.
(defvar-keymap): Use define-keymap.
-2021-11-28 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Avoid unused argument warnings in lambda compiler macros
@@ -89968,7 +89968,7 @@
use all the arguments of the function. Nobody expected any warning
since the arguments look like free variables inside the lambda form.
-2021-11-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -89977,7 +89977,7 @@
b8b2dd17c5 Update to Org 9.5.1-11-g96d91b
a937f536b3 * doc/lispref/commands.texi (Click Events): Fix wording (b...
-2021-11-28 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt gitlab-ci.yml
@@ -89985,20 +89985,20 @@
(.job-template, .test-template): Another approach to catch test
artifacts on emba.
-2021-11-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make haiku-win build correctly on non-Haiku systems
* lisp/term/haiku-win.el (haiku-selection-targets): Add
missing declaration.
-2021-11-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget popups on XI2 again
* src/xwidget.c (xwidget_button_1): Release seat grab.
-2021-11-28 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget popups on XI2
@@ -90008,20 +90008,20 @@
* src/xwidget.c (xwidget_button_1): Release all XI2 grabs on
click.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix typos in configure.ac
* configure.ac: Fix typos in wording of XInput 2 options.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `pixel-scroll-precision-scroll-up' work better with overlays
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-up):
Just set vscroll when on overlay.
-2021-11-27 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Simplify use of artifacts in emba files
@@ -90033,7 +90033,7 @@
* test/infra/test-jobs.yml: Regenerate.
-2021-11-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* test/src/comp-tests.el: Rework last patch
@@ -90046,7 +90046,7 @@
(comp-deftest pure): Use `declare-function` after loading `comp-test-pure.el`
to silence the byte-compiler.
-2021-11-27 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid assertion violations in --enable-checking builds
@@ -90055,14 +90055,14 @@
descent. This was reporte dto happen with some fonts used by the
xfont backend.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve documentation of wheel events
* doc/lispref/commands.texi (Misc Events): Add missing
parameters to `wheel-up' and `wheel-down'.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix pixel scroll for overlays and text in display properties
@@ -90070,28 +90070,28 @@
Just set vscroll if we're scrolling through an overlay or
something to that effect.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set motion event time when handling XI2 motion events
* src/xterm.c (handle_one_xevent): Set motion event time when
handling XI_Motion.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove GC prone call in `pixel-point-and-height-at-unseen-line'
* lisp/pixel-scroll.el (pixel-point-and-height-at-unseen-line):
Remove call to unnecessary call to `beginning-of-visual-line'.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `pixel-scroll-precision-scroll-up' slightly more robust
* lisp/pixel-scroll.el (pixel-scroll-precision-scroll-up):
Subtract from existing vscroll if feasible.
-2021-11-27 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `pixel-scroll-precision-scroll-up' use existing logic
@@ -90101,7 +90101,7 @@
(pixel-scroll-precision-scroll-up): Use existing logic
to determine unseen line position.
-2021-11-26 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
time-stamp-tests.el: Test more formats
@@ -90109,32 +90109,32 @@
Additional testing with illegal formats, including "%".
(time-stamp-format-multiple-conversions): Add a test with "%%%".
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set initial tab bar parameter on NS
* src/nsfns.m (Fx_create_frame): Initialize `tab-bar-lines'
frame parameter during frame creation.
-2021-11-26 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Silence NS warnings
* src/nsterm.m ([EmacsView mouseDown:]): Move variables into the block
where they're used.
-2021-11-26 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
* test/src/comp-tests.el: Eliminate byte-compiler warnings (Bug#52105).
-2021-11-26 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Specify initial values for glyphless-char-display-control elements
* lisp/international/characters.el (glyphless-char-display-control):
Specify :value for all the elements, since nil is not a valid value.
-2021-11-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt test/infra/gitlab-ci.yml
@@ -90142,7 +90142,7 @@
(test-filenotify-gio, test-gnustep, test-native-comp-speed0):
Add or adapt artifacts.
-2021-11-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new face `gnus-header'
@@ -90150,7 +90150,7 @@
(gnus-header-from, gnus-header-subject, gnus-header-newsgroups)
(gnus-header-name, gnus-header-content): Inherit from this new face.
-2021-11-26 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Adjust custom-face-attributes for 'regular' weight
@@ -90162,7 +90162,7 @@
* lisp/cus-face.el (custom-face-attributes): Recognize 'regular' as a
weight.
-2021-11-26 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add an intermediary face for mode lines: `mode-line-active'
@@ -90179,7 +90179,7 @@
(CURRENT_MODE_LINE_ACTIVE_FACE_ID, enum face_id): Rename from
*MODE_LINE_FACE_ID to *MODE_LINE_ACTIVE_FACE_ID.
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Move the precision pixel scrolling feature to pixel-scroll.el
@@ -90195,7 +90195,7 @@
(pixel-scroll-precision): New functions.
(pixel-scroll-precision-mode): New minor mode.
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Explain confusing aspects of XInput 2 scroll wheel reporting
@@ -90205,21 +90205,21 @@
(handle_one_xevent): Explain why XI2 scroll valuators
are reset after each enter events.
-2021-11-26 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Remove empty lines from stash read prompt
* lisp/vc/vc-git.el (vc-git-stash-read): Pass OMIT-NULLS (bug#52119).
(vc-git-stash-list): Simplify.
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make XInput 2 builds work without cairo
* src/xterm.c: Move some defines around so XI2 code doesn't
get ifdef'd out if Cairo is disabled.
-2021-11-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -90229,42 +90229,42 @@
d1aa552d11 ; * CONTRIBUTE: No cleanups on release branches, even in d...
588caf0b27 * lisp/repeat.el (repeat-post-hook): Add check symbolp rep...
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix sign of pixel scroll events on Haiku
* src/haikuterm.c (haiku_read_socket): Fix sign of scroll
events.
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make tab bar option visible in the menu bar on NS
* lisp/menu-bar.el (menu-bar-showhide-menu): Make
`showhide-tab-bar' visible on NS as well.
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make pixel scrolling through images at the first line smoother
* lisp/better-pixel-scroll.el (better-pixel-scroll-scroll-up):
Try to reset vscroll if already vscrolled.
-2021-11-26 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't perform pixel scrolling when window is hscrolled
* lisp/better-pixel-scroll.el (better-pixel-scroll): Call
mwheel-scroll instead if window is hscrolled.
-2021-11-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `better-pixel-scroll-mode'
* etc/NEWS: Announce `better-pixel-scroll-mode'.
* lisp/better-pixel-scroll.el: New file.
-2021-11-25 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Fix selection for old GNUstep and GCC
@@ -90273,25 +90273,25 @@
types we use.
* src/nsterm.h: Set up some more #defines for deprecated variables.
-2021-11-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update 'custom-face-attributes'
* lisp/cus-face.el (custom-face-attributes): Synchronize with
tables in font.c.
-2021-11-25 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/emacs.c (usage_message): Fix name of --seccomp option.
-2021-11-25 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix handling of '--dump-file' command-line option
* lisp/startup.el (command-line-1): Handle "--dump-file" and
"--seccomp" if they are left on the command-line. (Bug#52106)
-2021-11-25 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
MH-E: support Mailutils "folders +/"
@@ -90300,7 +90300,7 @@
* test/lisp/mh-e/mh-utils.el:
Test "folders +/" with GNU Mailutils 3.13.91 and later.
-2021-11-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Correct the :inherit property on some faces
@@ -90313,25 +90313,25 @@
* lisp/faces.el (mode-line): Don't quote the face we're inheriting
from.
-2021-11-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* doc/misc/flymake.texi: Correct local variable mode specification
-2021-11-25 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Don't display redundant 'see' in info-mode
* lisp/info.el (Info-fontify-node): Don't show 'see' when displaying
the result of "(See @ref" or "also @ref", but leave "Also @ref" alone.
-2021-11-25 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Tag a test from process-tests.el as :unstable on emba.
* test/src/process-tests.el (process-tests/multiple-threads-waiting):
Tag it as :unstable on emba.
-2021-11-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add temporary mode-line-position change
@@ -90339,28 +90339,28 @@
make `min-width' work here; this should be fixed for real in the
display_line machinery somewhere.
-2021-11-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Indent `closure' forms better
* lisp/emacs-lisp/lisp-mode.el (closure): Indent `closure' forms
better (bug#52063).
-2021-11-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix scroll wheel reporting on NS
* src/nsterm.m (- mouseDown): Clear scroll wheel
accumulators.
-2021-11-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Define a face for shr text
* lisp/net/shr.el (shr-text): New face.
(shr-insert): Use it instead of hard-coding `variable-pitch'.
-2021-11-25 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set serial when filtering XI_KeyPress events
@@ -90369,7 +90369,7 @@
* src/xterm.c (handle_one_xevent): Set serial when filtering
XI_KeyPress events.
-2021-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for pixel wheel deltas on NS
@@ -90377,7 +90377,7 @@
* src/nsterm.c (- mouseDown): Report pixel scroll deltas.
(x_coalesce_scroll_events): New variable
-2021-11-24 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
mh-utils-tests: 'mh-sub-folders-actual' coverage
@@ -90387,7 +90387,7 @@
* lisp/mh-e/mh-utils.el (mh-sub-folders-parse): New function,
refactored out of 'mh-sub-folders-actual' to create a testing seam.
-2021-11-24 Matt Kramer <mkramer@lbl.gov> (tiny change)
+2023-04-15 Matt Kramer <mkramer@lbl.gov> (tiny change)
Fix tab-line cycling when using buffer groups (bug#52050)
@@ -90395,13 +90395,13 @@
Remove tabs that aren't associated with a buffer, such as the `group-tab' that
exists when `tab-line-tabs-function' is `tab-line-tabs-buffer-groups'.
-2021-11-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
b4f47d2 Use @pxref when necessary
-2021-11-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some optimizations for emba jobs
@@ -90413,7 +90413,7 @@
* test/infra/test-jobs.yml: Regenerate.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove APPEND argument from add-display-text-property
@@ -90421,14 +90421,14 @@
* lisp/emacs-lisp/subr-x.el (add-display-text-property): Remove
the append argument -- it's nonsensical.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix min-width problem with "overlapping" regions
* src/xdisp.c (handle_display_prop): Fix problem with overlapping
regions.
-2021-11-24 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/outline.el (outline-font-lock-keywords): Replace ‘.+’ with ‘.*’.
@@ -90436,38 +90436,38 @@
to have more text after outline-regexp until the end of the heading line
(bug#51016).
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function 'add-display-text-property'
* doc/lispref/display.texi (Display Property): Document it.
* lisp/emacs-lisp/subr-x.el (add-display-text-property): New function.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change eshell-mode mode-line-format insinuation
* lisp/eshell/esh-mode.el (eshell-mode): Tweak how the mode line
is altered after recent mode-line-format changes.
-2021-11-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of 'min-width' display spec.
* doc/lispref/display.texi (Other Display Specs): Clarify
documentation of the 'min-width' display spec.
-2021-11-24 Narendra Joshi <narendraj9@gmail.com> (tiny change)
+2023-04-15 Narendra Joshi <narendraj9@gmail.com> (tiny change)
* lisp/vcursor.el (vcursor-get-char-count): Preserve point
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in display_min_width comment
* src/xdisp.c (display_min_width): Fix typo in comment.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make min-width of the U:-- wider
@@ -90475,7 +90475,7 @@
bits larger since there's often a big difference between - and %
characters.
-2021-11-24 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
mh-utils-tests: Add new tests of "folders +/"
@@ -90490,7 +90490,7 @@
Use new helper function.
* test/lisp/mh-e/test-all-mh-variants.sh: LD_LIBRARY_PATH unnecessary.
-2021-11-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor fixes for a recent commit
@@ -90498,21 +90498,21 @@
(Fget_display_property): Doc fix.
(get_display_property): Fix style and whitespace.
-2021-11-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add sample of -fanalyzer output (bug#51882)
* etc/compilation.txt (file): Add fragment of GCC diagnostics from
-fanalyzer (from Philip Kaludercic).
-2021-11-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Tighten `gnu` compile regexp further
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
The -fanalyzer ASCII art does not contain tabs.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use a proportional font for the mode line
@@ -90521,18 +90521,18 @@
* lisp/faces.el (mode-line): Inherit from `variable-pitch'.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make display_min_width work from the mode line
* src/xdisp.c (display_min_width): Make this work from mode line
constructs via display_string.
-2021-11-24 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
* admin/unidata/emoji-zwj.awk: Quote functions properly.
-2021-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `yank-media' work on Haiku
@@ -90568,7 +90568,7 @@
(BClipboard_system_targets, BClipboard_primary_targets)
(BClipboard_secondary_targets): New functions.
-2021-11-24 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* admin/notes/emba (Emacs jobset): Remove stage slow.
@@ -90585,14 +90585,14 @@
* test/infra/test-jobs.yml: Regenerate.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix min-width end condition handling
* src/xdisp.c (handle_display_prop): Fix check for min-width ends
-- they may be consecutive.
-2021-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Correct adjustments to frame widths in events
@@ -90600,7 +90600,7 @@
(EmacsWindow.Zoom): Adjust widths to fit into the correct
coordinate system.
-2021-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused arguments to EmacsView.AfterResize
@@ -90608,7 +90608,7 @@
unused arguments.
(BView_resize_to): Stop passing unused arguments.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add support for the min-width display property
@@ -90625,7 +90625,7 @@
(handle_display_prop): Handle min-width ends.
(handle_single_display_spec): Handle min-width starts.
-2021-11-24 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Re-enable the disabledForeground X resource.
@@ -90636,7 +90636,7 @@
without reason in commit ef93458b2f8 by overwriting its value with the
value of the foreground resource.
-2021-11-24 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Allow NS to handle non-text clipboard contents
@@ -90645,7 +90645,7 @@
(ns_string_from_pasteboard): Remove EOL conversion.
(syms_of_nsselect): Define QTARGETS.
-2021-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clear past end of frame on Haiku
@@ -90655,7 +90655,7 @@
* src/haikuterm.c (haiku_clear_frame): Clear one pixel
past the end of the frame.
-2021-11-24 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix 1 pixel wide border in frames on Haiku
@@ -90665,14 +90665,14 @@
* src/haikuterm.c (haiku_read_socket): Use `lrint' to round
widths.
-2021-11-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix string-glyph-split infloop
* lisp/emacs-lisp/subr-x.el (string-glyph-split): Fix infloop when
applied to (string-glyph-split "✈️🌍") (bug#52067).
-2021-11-24 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Pass options from make to configure through a variable.
@@ -90680,34 +90680,34 @@
* INSTALL.REPO: Document the variable (bug#51965).
-2021-11-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
756b8a5f1b Fix typos in documentation
38fdeaef46 ; * etc/DEBUG: Fix last change.
-2021-11-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse-wheel-text-scale
* lisp/mwheel.el (mouse-wheel-text-scale): Test for alternative
events correctly.
-2021-11-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove extraneous code left over from the ftbe font driver
* src/haikuterm.c (syms_of_haikuterm): Remove dead code.
-2021-11-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use only effective modifiers when handling XI2 button events
* src/xterm.c (handle_one_xevent): Use mods.effective when
constructing button events.
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Remove PGTK_DEBUG stuff
@@ -90805,7 +90805,7 @@
(pgtk_cr_destroy_frame_context):
* src/pgtkterm.h:
-2021-11-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt artifacts paths in emba testjobs
@@ -90813,60 +90813,60 @@
* test/infra/test-jobs.yml: Regenerate.
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/ftcrfont.c (ftcrfont_open): Revert redundant brace change.
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/frame.c (syms_of_frame): Revert frame_resize_pixelwise defaults to false
It was just a workaround of mutter's bug, which is already fixed, so
we can revert it.
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/frame.c (Fframep): Fix comment
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/font.h: Remove redundant condition
It is redundant because pgtk build always defines HAVE_FREETYPE.
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Enclose pgtk changes within #ifdef
* src/emacsgtkfixed.c:
* src/emacsgtkfixed.h:
-2021-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/emacs.c (main): Combine two conditions to one
-2021-11-23 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
bdb489a ; * etc/DEBUG: Adjust instructions for libgccjit reproducer.
b4fb381 ; * src/xdisp.c (produce_stretch_glyph): Avoid compilation wa...
-2021-11-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer locate-user-emacs-file in gitmerge.el
* admin/gitmerge.el (gitmerge-status-file): Prefer
'locate-user-emacs-file' to fiddling with 'user-emacs-directory'.
-2021-11-23 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compilation with XInput 2 but without XKB
* src/xterm.c (handle_one_xevent): Remove extraneous
conditional.
-2021-11-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -90876,34 +90876,34 @@
# Conflicts:
# lisp/proced.el
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Only reset scroll valuators on real enter events
* src/xterm.c (handle_one_xevent): Test event detail and mode
before resetting scroll valuators.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix delay between tool bar clicks and visual feedback
* src/haikuterm.c (haiku_read_socket): Redisplay after tool
bar click.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix XI2 keysym translation
* src/xterm.c (handle_one_xevent): Handle XI_KeyPress events
that can't be translated into strings.
-2021-11-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/subr.el (event-start, event-end): Handle `(menu-bar)` events
* lisp/net/browse-url.el (browse-url-interactive-arg): Simplify accordingly
-2021-11-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/textmodes/flyspell.el: Pop up the menu under cursor from keyboard.
@@ -90911,18 +90911,18 @@
Use popup-menu-normalize-position with point when no mouse is involved,
instead of the incorrect use of mouse-position (bug#52025).
-2021-11-22 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
src/indent.c, src/xdisp.c: Questions about with_echo_area_buffer_unwind_data
-2021-11-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: 'C-x t RET' creates a new tab for non-existent tab name.
* lisp/tab-bar.el (tab-bar-switch-to-tab): Create a new tab and
rename it to NAME when can't find the tab with the given NAME (bug#51935).
-2021-11-22 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Simplify `gnu` compilation-mode regexp
@@ -90932,14 +90932,14 @@
performance impact of the pattern added for GCC's -fanalyzer,
now slightly tweaked.
-2021-11-22 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el (tab-bar-history-old-minibuffer-depth): Remove variable.
(tab-bar--history-pre-change, tab-bar--history-change): Use minibuffer-depth
instead of this variable (bug#51370).
-2021-11-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt emba jobs
@@ -90954,7 +90954,7 @@
* test/infra/test-jobs.yml: Regenerate.
-2021-11-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve recently installed documentation
@@ -90962,13 +90962,13 @@
description of 'buffer-text-pixel-size' to preserve previous text;
mention the importance of WINDOW.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warning in image.c
* src/image.c (webp_load): Initialize `mask_img' to NULL.
-2021-11-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use substitute-command-keys for literal key sequences
@@ -91028,7 +91028,7 @@
* lisp/ibuffer.el (ibuffer-unmark-all): Use 'substitute-command-keys'
for command.
-2021-11-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid false positives about wide docstrings for key sequences
@@ -91039,7 +91039,7 @@
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-wide-docstring-ignore-substitutions.el"): New test.
-2021-11-22 martin rudalics <rudalics@gmx.at>
+2023-04-15 martin rudalics <rudalics@gmx.at>
Add new function buffer-text-pixel-size
@@ -91052,7 +91052,7 @@
Fwindow_text_pixel_size.
(Fbuffer_text_pixel_size): New function.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix mouse movement event generation on Haiku
@@ -91062,20 +91062,20 @@
* src/haikuterm.h (struct haiku_display_info): Add field
`last_mouse_movement_time'.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't set button event modifiers twice on Haiku
* src/haikuterm.c (haiku_read_socket): Simplify.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Move XI2 event filtering to a more appropriate location
* src/xterm.c (handle_one_xevent): Filter all key press events
even if no frame is found.
-2021-11-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add new format for literal key sequences to substitute-command-keys
@@ -91090,14 +91090,14 @@
tests.
(help-tests-substitute-key-bindings/face-help-key-binding): Extend test.
-2021-11-22 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use more precise test for emulated wheel events in XI2
* src/xterm.c (handle_one_xevent): Ignore button events
that have XIPointerEmulated set.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `xwidget-display-event' a special event as well
@@ -91121,80 +91121,80 @@
(webkit_create_cb_1): Store source if available.
(kill_xwidget): Remove dead widget from internal_xwidget_list.
-2021-11-21 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Fix recent compile-tests addition
* test/lisp/progmodes/compile-tests.el (compile-test-error-regexps):
Bump number of expected errors.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Also filter XI_KeyRelease events
* src/xterm.c (handle_one_xevent): Also filter XI_KeyRelease
events through the X input method.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use only effective modifiers for XI2 key press events
* src/xterm.c (handle_one_xevent): Use only effective modifiers
in XI_KeyPress events.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove variable that no longer exists from manual
* doc/emacs/haiku.texi: Remove nonexistent variable.
-2021-11-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Adapt isearch help screen for variable-pitch-mode
* lisp/isearch.el (isearch-help-for-help-internal): Adapt for
'variable-pitch-mode', now that 'make-help-screen' uses that.
-2021-11-21 Omar Polo <op@omarpolo.com>
+2023-04-15 Omar Polo <op@omarpolo.com>
implement certfp authentication to rcirc
* lisp/net/rcirc.el (rcirc-connect): Use the provided client certs
* doc/misc/rcirc.texi (Configuration): Document the change
-2021-11-21 Omar Polo <op@omarpolo.com>
+2023-04-15 Omar Polo <op@omarpolo.com>
Move the sasl section after the bitlbee text
-2021-11-21 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
Improve error parsing for GCC -fanalyzer output
* compile.el (compilation-error-regexp-alist-alist): Adjust gnu rule
* compile-tests.el (compile-tests--test-regexps-data): Add testcase
-2021-11-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix positioning of pop-up menus when there are window-margins
* src/menu.c (x_popup_menu_1): Calculate X and Y correctly for
clicks in the text area. (Bug#51782)
-2021-11-21 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Add :version tags to new mwheel defcustoms
* lisp/mwheel.el (mouse-wheel-down-alternate-event):
(mouse-wheel-up-alternate-event): Add :version tag.
-2021-11-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor cleanup in w32inevt.c
* src/w32inevt.c (w32_console_mouse_position, mouse_moved_to)
(do_mouse_event): Use 'get_frame' to obtain the frame pointer.
-2021-11-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use variable-pitch-mode in 'C-h C-h'
@@ -91205,7 +91205,7 @@
This was discussed in
https://lists.gnu.org/r/emacs-devel/2021-11/msg01378.html
-2021-11-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Reorganize emba control files
@@ -91227,28 +91227,28 @@
(test-jobs-generator, test-jobs-pipeline): Remove jobs.
(top): Include test-jobs.yml.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix double and triple click in Haiku.
* src/haikuterm.c (haiku_read_socket): Record timestamp
in events.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Report time in XInput 2 button events
* src/xterm.c (handle_one_xevent): Report time in XI button
events.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix horizontal wheel events on Haiku
* src/haikuterm.c (haiku_read_socket): Fix modifier
calculation for horizontal wheel events.
-2021-11-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -91262,7 +91262,7 @@
# Conflicts:
# lisp/mouse.el
-2021-11-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fill the Emacs version on the splash page
@@ -91271,7 +91271,7 @@
(normal-no-mouse-startup-screen): Fill the Emacs version data,
since it's usually longer than a single line, anyway.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement `pick_embedded_child' for offscreen xwidgets
@@ -91279,13 +91279,13 @@
(Fmake_xwidget): Connect `pick-embedded-child' signal
to offscreen window.
-2021-11-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Revert "* admin/gitmerge.el (gitmerge-mode-map): Convert to defvar-keymap."
This reverts commit 4c467e4aff12e65fa4fa62d7f4bdcbf4a2bcd92c.
-2021-11-21 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Fix icalendar time zone parsing
@@ -91295,14 +91295,14 @@
(icalendar-tests--decode-isodatetime): Fix tests so that they work
in other time zones than Europe/Berlin (bug#51959).
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix documentation string of x_coalesce_scroll_events
* src/xterm.c (x_coalesce_scroll_events): Update doc string to
reflect that this option is now supported under Haiku.
-2021-11-21 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve the fix for bug#51864
@@ -91310,14 +91310,14 @@
FACE_FROM_ID_OR_NULL just once.
(face_at_string_position): Make sure we have a usable base face.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve Haiku documentation
* doc/emacs/haiku.texi: Remove duplicate text and
extraneous pxref.
-2021-11-21 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add a user command to stop page loading in xwidget-webkit
@@ -91325,14 +91325,14 @@
(xwidget-webkit-stop): New command.
(xwidget-webkit-tool-bar-map): New tool bar item.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warnings
* src/haikuterm.c (haiku_read_socket): Fix compiler
warnings intoduced by last change.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add pixel delta support for wheel events on Haiku
@@ -91341,13 +91341,13 @@
* src/haikuterm.c (haiku_read_socket): Handle pixel deltas
correctly.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Attach download-started signals to correct WebKit context
* src/xwidget.c (Fmake_xwidget): Use correct context.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow handling smooth scroll events in xwidgets
@@ -91357,27 +91357,27 @@
events on XInput 2.
(xwidget_motion_notify, xwidget_scroll): New functions.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Select device notification events correctly
* src/xfns.c (setup_xi_event_mask): Select PropertyEvent,
HierarchyChanged and DeviceChanged for all devices.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add XInput 2 input method support
* src/xterm.c (handle_one_xevent): Let input methods filter
events first before trying to handle an XI2 key press event.
-2021-11-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/test-jobs-generator.sh: Generate also stages entry.
Revert last change on emba files
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for the Haiku operating system and its window system
@@ -91699,7 +91699,7 @@
* src/xterm.c (syms_of_xterm): Add Haiku information to
doc string.
-2021-11-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make string-animate smoother
@@ -91708,14 +91708,14 @@
(animate-string): Make the delay depend on the above new defcustom
divided by the number of steps.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes when scrolling in an unknown Window on XI2
* src/xterm.c (handle_one_xevent): Fix XI2 frame lookup to
handle foreign windows.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidgets with XInput 2 builds
@@ -91728,7 +91728,7 @@
(x_draw_xwidget_glyph_string): Synthesize focus event here
instead on XI2 builds.
-2021-11-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make 'eval' use lexical scoping in most tests
@@ -91759,7 +91759,7 @@
using LEXICAL as both nil and non-nil.
(eval-tests--let-with-circular-defs): Give explicit nil to 'eval'.
-2021-11-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Improve some messages
@@ -91767,7 +91767,7 @@
(image-dired-create-thumb-1): Improve messages.
(image-dired-rotate-original): Signal 'user-error' instead of 'error'.
-2021-11-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Convert snake and tetris keymaps to defvar-keymap
@@ -91775,7 +91775,7 @@
* lisp/play/tetris.el (tetris-mode-map, tetris-null-map): Convert
to defvar-keymap.
-2021-11-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make shr render text with superscripts prettier
@@ -91784,14 +91784,14 @@
slightly smaller so that we don't get uneven line heights with
text that uses these.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix a comment in XInput related code
* src/xterm.c (x_term_init): Fix comment to say "XInput 2.1"
instead of "XInput 1.1".
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Expose pixel-wise wheel events to Lisp
@@ -91807,7 +91807,7 @@
data.
(x_coalesce_scroll_events): New user option.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for event processing via XInput 2
@@ -91851,7 +91851,7 @@
(mouse-wheel--setup-bindings): Set up bindings for alternate
buttons.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow terminating page loading operations in webkit xwidgets
@@ -91860,21 +91860,21 @@
* src/xwidget.c (Fxwidget_webkit_stop_loading): New function.
(syms_of_xwidget): Define new subr.
-2021-11-20 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Implement the buttonForeground resource
* lwlib/xlwmenu.c (draw_shadow_rectangle, draw_shadow_rhombus):
Use the buttonForeground resource color (bug#51988).
-2021-11-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix another narrow-to-defun problem in js-mode
* lisp/progmodes/js.el (js--function-prologue-beginning): Fix typo
in looking-back form (bug#51926).
-2021-11-20 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Continue adaptions of emba files
@@ -91887,7 +91887,7 @@
* test/infra/test-jobs-generator.sh: Generate also stages entry.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make xwidget-events special and document xwidget callbacks
@@ -91903,7 +91903,7 @@
* lisp/xwidget.el: Make xwidget events special.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use `xwidget-live-p' inside `xwidget-at'.
@@ -91915,38 +91915,38 @@
* lisp/xwidget.el (xwidget-at): Use `xwidget-live-p'.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove nonsensical command in xwidget-webkit-mode-map
* lisp/xwidget.el (xwidget-webkit-mode-map): Remove nonsensical
command binding.
-2021-11-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
c1eea85be1 * test/lisp/net/tramp-tests.el (tramp-get-remote-gid): Rem...
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix option type of `xwidget-webkit-cookie-file' again
* lisp/xwidget.el (xwidget-webkit-cookie-file): Revert changes
caused by rebase.
-2021-11-20 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Clarify doc string in xwidget-webkit
* lisp/xwidget.el (xwidget-webkit-buffer-name-format): Update
doc string.
-2021-11-19 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* lisp/xwidget.el (xwidget-webkit-cookie-file): Fix type.
-2021-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make xwidget-webkit default to not storing cookies
@@ -91954,18 +91954,18 @@
* lisp/xwidget.el (xwidget-webkit-cookie-file): Set default
value to nil.
-2021-11-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix Tramp test
* test/lisp/net/tramp-tests.el (tramp-test07-abbreviate-file-name):
Skip Ange FTP test.
-2021-11-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix stage in gitlab-ci.yml
-2021-11-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add more test jobs for emba
@@ -91981,7 +91981,7 @@
* test/infra/test-jobs-generator.sh: New script.
-2021-11-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix doc strings in ucs-normalize.el
@@ -91993,7 +91993,7 @@
(ucs-normalize-HFS-NFD-region, ucs-normalize-HFS-NFC-region): Fix
wording and typos.
-2021-11-19 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation of last commit
@@ -92008,7 +92008,7 @@
* etc/NEWS: Improve the wording of the entry about
'xwidget-webkit-cookie-file'.
-2021-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow controlling where xwidget-webkit stores cookies
@@ -92025,14 +92025,14 @@
(Fxwidget_webkit_set_cookie_storage_file): New function.
(syms_of_xwidget): Define new subr.
-2021-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use CHECK_LIVE_XWIDGET in xwidget-webkit-estimated-load-progress
* src/xwidget.c (Fxwidget_webkit_estimated_load_progress): Check
for live xwidgets instead.
-2021-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display page loading progress in xwidget webkit
@@ -92046,14 +92046,14 @@
(xwidget-webkit-mode): Add page load progress to header line
format.
-2021-11-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve doc-view-mode menus
* lisp/doc-view.el (doc-view-menu): Extend menu.
(doc-view-minor-mode-menu): New menu.
-2021-11-19 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `xwidget-webkit-estimated-load-progress'
@@ -92064,18 +92064,18 @@
function.
(syms_of_xwidget): Define new subr.
-2021-11-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make puny-encode-string normalize first
* lisp/net/puny.el (puny-encode-string): Normalize before encoding
(bug#51954).
-2021-11-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Regenerate ldefs-boot
-2021-11-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make UCS compose/decompose functions more understandable
@@ -92086,7 +92086,7 @@
(ucs-normalize-NFKC-region, ucs-normalize-NFKC-string): Make the
doc strings say what they actually do.
-2021-11-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -92097,20 +92097,20 @@
5eeaf85767 Improve documentation of window hooks
7404f4b4e0 Improve doc string of 'highlight-nonselected-windows'
-2021-11-18 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix documentation on xwidgets
* doc/lispref/display.texi (Xwidgets): Refer to correct
function.
-2021-11-18 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/files.el (file-has-changed-p): Index the cache with absolute file names
* lisp/net/mailcap.el (mailcap-parse-mailcaps): Fix $MAILCAPS case
-2021-11-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Turn mistaken functions into tests (bug#51941)
@@ -92121,7 +92121,7 @@
Change `defun` into `ert-deftest` where this seems to have been the
original intention.
-2021-11-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
String backslash corrections
@@ -92129,7 +92129,7 @@
* test/lisp/emacs-lisp/package-tests.el
(package-test-macro-compilation-gz): Make dot literal as intended.
-2021-11-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Do not exclude emacs-module-tests.el on emba
@@ -92143,7 +92143,7 @@
(module--test-assertions--globref-invalid-free): Tag them as
:unstable on emba. (Bug#50902)
-2021-11-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Optimize data usage for nil tab-bar-history-mode.
@@ -92154,7 +92154,7 @@
(tab-bar-new-tab-to): Reset tab-bar-history-back and
tab-bar-history-forward to nil.
-2021-11-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-bar.el: Avoid micro-steps in tab-bar-history-back/forward.
@@ -92165,11 +92165,11 @@
(tab-bar--history-change): Use 'tab-bar-history-done-command' and
'tab-bar-history-pre-command' (bug#51370).
-2021-11-18 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/diff-mode.el (diff-minor-mode-prefix): Fix typo from 44faf54659
-2021-11-18 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Update modus-themes to version 1.7.0
@@ -92275,7 +92275,7 @@
A detailed change log entry is available here:
<https://protesilaos.com/codelog/2021-11-18-modus-themes-1-7-0/>.
-2021-11-18 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Extend abbreviate-file-name for further Tramp methods.
@@ -92288,7 +92288,7 @@
* test/lisp/net/tramp-tests.el (tramp-test07-abbreviate-file-name):
Extend test.
-2021-11-18 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
Fixup for bug#51037
@@ -92297,7 +92297,7 @@
(ert-run-tests-batch): Remove redundand let-binding.
(ert-run-tests-interactively): Fix interactive spec.
-2021-11-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Eliminate ERT test name clashes (bug#51941)
@@ -92318,7 +92318,7 @@
(data-tests-logcount):
Rename clashing tests.
-2021-11-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Signal an error for duplicated ERT tests (bug#51941)
@@ -92329,7 +92329,7 @@
lisp/emacs-lisp/ert.el (ert-set-test, ert-deftest): Add check.
etc/NEWS: Announce.
-2021-11-18 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Avoid adding duplicates to Xref history
@@ -92337,7 +92337,7 @@
New functions.
(xref-push-marker-stack, xref-go-back, xref-go-forward): Use them.
-2021-11-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert VC-related prefix user options to previous values
@@ -92346,7 +92346,7 @@
* lisp/vc/diff-mode.el (diff-minor-mode-prefix): Revert to
previous values, as external packages rely on those values.
-2021-11-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix `narrow-to-defun' in "async function" in js-mode
@@ -92355,7 +92355,7 @@
(js--ensure-cache): Allow "async" before "function" (bug#51926).
This makes `narrow-to-defun' work as expected.
-2021-11-18 Greg Minshall <minshall@umich.edu>
+2023-04-15 Greg Minshall <minshall@umich.edu>
Fix eldoc usage of newly introduced variable
@@ -92363,14 +92363,14 @@
(eldoc-display-message-no-interference-p): Make this function work
in older Emacs versions again (bug#51939).
-2021-11-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the optional describe-map-tree parameters optional
* lisp/help.el (describe-map-tree): Make the optional parameters
optional. This makes testing easier.
-2021-11-18 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Don't ignore restriction in indent-region-line-by-line
@@ -92391,7 +92391,7 @@
as 'c-indent-region'. This patch makes it respect the current
restriction instead of having it call "(widen)".
-2021-11-17 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Fix two failing tests in mh-utils-tests
@@ -92401,7 +92401,7 @@
(mh-folder-completion-function-09-plus-slash-tmp): Skip these tests
with Mailutils, which doesn't handle root folders. (Bug#51902)
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Revert "* lisp/image-dired.el: Remove unnecessary 'declare-function'."
@@ -92411,7 +92411,7 @@
Problem pointed out by Glenn Morris <rgm@gnu.org> in:
https://lists.gnu.org/r/emacs-devel/2021-11/msg01278.html
-2021-11-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix recent changes related to USABLE_SIGIO
@@ -92419,7 +92419,7 @@
* src/keyboard.c (handle_async_input) [DOS_NT]: Ifdef away the
code that is not needed on MS-Windows. (Bug#50403) (Bug#51820)
-2021-11-17 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Make process_pending_signals useful on systems without SIGIO
@@ -92428,7 +92428,7 @@
process_pending_signals do something useful on systems that have
to poll for input. (Bug#51820)
-2021-11-17 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Avoid delays waiting for input on systems without SIGIO
@@ -92436,7 +92436,7 @@
we're waiting for input, don't use a timeout of more than 25 msec
in the call to select. (Bug#50043)
-2021-11-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent subprocess hangs in xwidget
@@ -92444,7 +92444,7 @@
`catch_child_signal' instead of trying to preserve the previous
signal handler.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use substitute-command-keys in some messages
@@ -92454,7 +92454,7 @@
* lisp/ibuf-ext.el (ibuffer-do-kill-lines):
* lisp/vc/ediff.el (ediff-documentation): Use 'substitute-command-keys'.
-2021-11-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't draw xwidgets that have just been resized
@@ -92469,18 +92469,18 @@
(Fxwidget_resize): Set just_resized first, then queue allocate.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Ignore some externally maintained files in AUTHORS
* admin/authors.el (authors-ignored-files): Ignore externally
maintained files.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/image-dired.el: Remove unnecessary 'declare-function'.
-2021-11-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change the call signature to keymap-substitute
@@ -92489,7 +92489,7 @@
* lisp/emacs-lisp/shortdoc.el (keymaps):
* lisp/emacs-lisp/bytecomp.el (lambda): Adjust.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -92497,20 +92497,20 @@
c25be3e7bb * lisp/tab-bar.el (tab-bar-select-tab): Add check for wc-f...
38d905abf9 * lisp/tab-bar.el: Doc fixes for commands bound to modifie...
-2021-11-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make bookmark-set prompt less confusing
* lisp/bookmark.el (bookmark-set): Make the prompt less confusing
(bug#51876).
-2021-11-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mh-mime build problem
* lisp/mh-e/mh-mime.el (mh-acros): Require to get mh-dlet*.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Temporarily mark two failing tests as unstable
@@ -92519,13 +92519,13 @@
(mh-folder-completion-function-09-plus-slash-tmp): Temporarily
mark two failing tests as unstable.
-2021-11-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bookmark-bmenu-mode-map syntax
* lisp/bookmark.el (bookmark-bmenu-mode-map): Fix syntax in defvar-keymap.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some references to XEmacs
@@ -92536,7 +92536,7 @@
* lisp/textmodes/reftex-index.el: Remove some comments referring to
XEmacs.
-2021-11-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make mh-funcall-if-exists obsolete
@@ -92551,7 +92551,7 @@
* lisp/mh-e/mh-xface.el (mh-face-display-function): Don't use
above obsolete macro.
-2021-11-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Convert keymaps in bookmark.el to defvar-keymap
@@ -92560,44 +92560,44 @@
(bookmark-edit-annotation-mode-map, bookmark-bmenu-mode-map):
Convert to defvar-keymap.
-2021-11-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/rot13.el (rot13-translate-table): Make it a `translation-table`
(rot13-display-table): Use `dotimes`.
-2021-11-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* admin/gitmerge.el (gitmerge-mode-map): Convert to defvar-keymap.
-2021-11-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Update xwidget webkit history buffer more eagerly
* lisp/xwidget.el (xwidget-webkit-callback): Update history
buffer on each load-changed event.
-2021-11-16 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Only set LANG if the ID is valid
* src/nsterm.m (ns_init_locale): Check the provided locale identifier
is available before trying to use it.
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make keymap-unset work
* lisp/keymap.el (keymap-unset): Fix key syntax (bug#51897).
-2021-11-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Put back documentation of legacy keymap functions
* doc/lispref/keymaps.texi (Low-Level Key Binding): Reinstate
documentation of legacy commands and functions.
-2021-11-16 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Support xterm-mouse-mode mouse-4/5
@@ -92617,7 +92617,7 @@
(mouse-wheel-text-scale): Use mouse-wheel--button-eq instead of eq.
(mouse-wheel--setup-bindings): Make it flatten.
-2021-11-16 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Remove garbage #ifndef
@@ -92626,14 +92626,14 @@
* src/xwidget.c (Fxwidget_resize):
-2021-11-16 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor copyedits of recent documentation changes
* doc/lispref/keymaps.texi (Low-Level Key Binding): Minor changes
in wording and markup.
-2021-11-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Some minor Tramp updates
@@ -92646,14 +92646,14 @@
* test/lisp/net/tramp-tests.el (tramp-test07-abbreviate-file-name):
Extend test.
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix compilation error in previous keymap.c change
* src/keymap.c (initial_define_lispy_key, define_as_prefix): Fix
--enable-checking error.
-2021-11-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Lower xwidget views owned by parent when lowering frame
@@ -92663,7 +92663,7 @@
* src/xwidget.h (lower_frame_xwidget_views):
* src/xwidget.c (lower_frame_xwidget_views): New function.
-2021-11-16 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add command to browse xwidget history
@@ -92682,7 +92682,7 @@
(xwidget-webkit-history-mode): New major mode.
-2021-11-16 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Merge pull request from stephe-ada-guru/master
@@ -92690,7 +92690,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/759
-2021-11-16 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
New X resource to control the border thickness of menus
@@ -92702,7 +92702,7 @@
* doc/emacs/xresources.texi (Lucid Resources): Document the new
resource (bug#51867).
-2021-11-16 Michael Herstine <sp1ff@pobox.com>
+2023-04-15 Michael Herstine <sp1ff@pobox.com>
Make results details in ert-run-tests-batch configurable
@@ -92726,7 +92726,7 @@
* doc/misc/ert.texi: document the new variables & their usage
(bug#51037).
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Start adjusting the manuals to talk about the keymap-* functions
@@ -92758,7 +92758,7 @@
* doc/lispref/keymaps.texi (Low-Level Key Binding): New node that
describes `define-key' and the old key syntaxes.
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust `defvar-keymap' and `define-keymap' to the new syntax
@@ -92813,7 +92813,7 @@
(gnus-category-mode-map): Adjust `defvar-keymap' and
`define-keymap' to the new syntax.
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new 'keymap-*' functions
@@ -92843,7 +92843,7 @@
to key-valid-p and key-parse.
(syms_of_keymap): Adjust defs.
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow removing keymap definitions
@@ -92855,14 +92855,14 @@
* src/term.c (term_get_fkeys_1): Adjust caller.
-2021-11-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make erc-mode noninteractive
* lisp/erc/erc.el (erc-mode): Mark it as noninteractive, because
using it from `M-x' will only lead to problems (bug#51841).
-2021-11-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -92873,7 +92873,7 @@
5044151486 Avoid segfaults due to freed face cache
199e2468d3 Doc fix; change recommended file name of custom-file
-2021-11-16 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Fix handling of folder "+/" in MH-E
@@ -92884,7 +92884,7 @@
Fix errors made importing tests from mh-unit.el; remove declaration
that these tests are expected to fail.
-2021-11-16 Mike Kupfer <mkupfer@alum.berkeley.edu>
+2023-04-15 Mike Kupfer <mkupfer@alum.berkeley.edu>
Fix checkdoc complaints in MH-E
@@ -92893,7 +92893,7 @@
* lisp/mh-e-mh-scan.el (mh-scan-cmd-note-width): Break up a
line that was too long.
-2021-11-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix recently changed wdired test on MS-Windows
@@ -92901,28 +92901,28 @@
create a local socket on MS-Windows, as it is not supported on that
platform. Problem reported by Robert Pluim <rpluim@gmail.com>.
-2021-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent xwidget windows from obscuring child frames
* src/xwidget.c (x_draw_xwidget_glyph_string): Lower view window
when creating it.
-2021-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget isearch for queries that look like format strings
* lisp/xwidget.el (xwidget-webkit-isearch--update): Give special
treatment to messages.
-2021-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix documentation string
* src/xwidget.c (Vxwidget_list, Vxwidget_views_list): Fix
horrid doc string.
-2021-11-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix minor problems resulting from Tramp regression tests
@@ -92949,7 +92949,7 @@
(tramp--test-check-files): Use proper `no-dir' argument for
`dired-get-filename'.
-2021-11-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Avoid handle terminal frames in pgtk_mouse_position.
@@ -92958,14 +92958,14 @@
* src/pgtkterm.c (pgtk_mouse_position): Return if it is not a pgtk frame.
-2021-11-15 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Add another 'abbreviate-file-name' test
* test/lisp/files-tests.el
(files-tests-file-name-non-special-abbreviate-file-name): New test.
-2021-11-15 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Support abbreviating home directory of Tramp filenames
@@ -92988,7 +92988,7 @@
* test/lisp/net/tramp-tests.el (tramp-test07-abbreviate-file-name):
New test.
-2021-11-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix coding style
@@ -92996,7 +92996,7 @@
* src/pgtkterm.c (pgtk_focus_frame):
(button_event):
-2021-11-15 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
pgtk: Handle (child) frame focusing better
@@ -93012,7 +93012,7 @@
instead
(button_event): Implement focus calls to replace dead X calls
-2021-11-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix hanging wdired test
@@ -93020,14 +93020,14 @@
test. Don't start the Emacs Server just to create a socket; just
create the socket manually.
-2021-11-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix outline-cycle-buffer issue in `C-h b' buffers
* lisp/outline.el (outline--fix-up-all-buttons): Fix issue when
called after collapsing a buffer (bug#51855).
-2021-11-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow mm-external-terminal-program to be a list of strings
@@ -93036,7 +93036,7 @@
* lisp/gnus/mm-decode.el (mm-external-terminal-program): Allow
being a list.
-2021-11-15 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix handling of changed prefix keys in tutorial
@@ -93045,26 +93045,26 @@
omission from the hard-coded list was mode-specific-command-prefix,
whose subcommands are often rebound (bug#40725).
-2021-11-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
044dd1e210 * rcirc.el (rcirc-define-command): Fix interactive-spec ge...
-2021-11-15 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
85ac0efe7c Fix semantic-symref-perform-search doc string
-2021-11-15 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget-webkit-back-forward-list
* src/xwidget.c (Fxwidget_webkit_back_forward_list): Use correct
list variable in loop.
-2021-11-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Stop assuming xwidget views will only be displayed in TEXT_AREA
@@ -93076,7 +93076,7 @@
* src/xwidget.h (struct xwidget_view): Add glyph row area field.
-2021-11-14 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Prefer POSIX timers to timerfd timers
@@ -93084,18 +93084,18 @@
starting a timerfd timer. On Cygwin, return if the POSIX timer is
started successfully. (Bug#51734)
-2021-11-14 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/tab-line.el (tab-line-mode): Preserve existing value of tab-line-format
Keep the old value of tab-line-format when enabling tab-line-mode
and don't overwrite it with nil when disabling tab-line-mode (bug#51830).
-2021-11-14 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* src/lread.c (read_escape): Fix handling of ?\C-<char> for chars 128-255
-2021-11-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix recent documentation updates
@@ -93103,14 +93103,14 @@
Add cross-reference and index entry.
(Sticky Properties): Add indexing.
-2021-11-14 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add WAYLAND_DISPLAY description to cmdargs.texi
* doc/emacs/cmdargs.texi (Misc Variables): Add WAYLAND_DISPLAY
description.
-2021-11-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve Tramp error handling
@@ -93120,31 +93120,31 @@
* lisp/net/tramp.el (tramp-find-foreign-file-name-handler):
Improve error handling.
-2021-11-14 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
pgtk: Set correct face color for stretched glyphs
* src/pgtkterm.c (x_draw_stretch_glyph_string): s/foreground/background
(Bug#50579)
-2021-11-14 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
configure.ac (PGTK_LIBS): remove pgtk dl dependency (Bug#50494)
-2021-11-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
5dbad52 gnus-summary-line-format doc string clarification
d4536ff Fix follow-scroll-down in a small buffer which starts slightl...
-2021-11-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
a56dd60 Improve style and comments in font-related sources
-2021-11-14 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix coding style
@@ -93188,7 +93188,7 @@
(draw_glyphs):
(note_mouse_highlight):
-2021-11-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Expose xwidget navigation history to Lisp code
@@ -93198,7 +93198,7 @@
function.
(syms_of_xwidget): Define new subr.
-2021-11-14 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `kill-xwidget'
@@ -93207,7 +93207,7 @@
(syms_of_xwidget): Define new subr.
(kill_buffer_xwidgets): Use `kill_xwidget' instead.
-2021-11-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix previous -responsible-p change
@@ -93216,21 +93216,21 @@
* lisp/vc/vc-cvs.el (vc-cvs-responsible-p): Make the previous
change work with relative file names, too.
-2021-11-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Explain in the manual how to make `cursor-intangible' work
* doc/lispref/text.texi (Special Properties): Explain how to make
`cursor-intangible' work (bug#51095).
-2021-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix crash in xwidget_end_redisplay
* src/xwidget.c (xwidget_end_redisplay): Always test if xv is
NULL.
-2021-11-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix `C-h k' in gnus-article-mode
@@ -93238,7 +93238,7 @@
(gnus-article-describe-key-briefly): Fix `describe-key' calling
convention (bug#51796).
-2021-11-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make all vc-*-responsible-p functions return a string
@@ -93249,7 +93249,7 @@
instead of t when we get a match (which is what
vc-backend-for-registration expects) (bug#51800).
-2021-11-13 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Fix customization group of python-forward-sexp-function
@@ -93258,28 +93258,28 @@
so that the option is sorted into the 'python' group rather than the
'python-flymake' group (bug#51807).
-2021-11-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix Gnus gcc header tokenization
* lisp/gnus/gnus-msg.el (gnus-summary-resend-message-insert-gcc)
(gnus-inews-do-gcc): Fix tokenization of the gcc header.
-2021-11-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Adjust build-dep-zips.py download link
* admin/nt/dist-build/build-dep-zips.py (download_source): Adjust
the download link (bug#40628).
-2021-11-13 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Find most specific backend for `vc-backend-for-registration'.
* lisp/vc/vc.el (vc-backend-for-registration): Count file name
components instead of the length of the file name string (bug#50572).
-2021-11-13 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
MH-E threads code: use mh-scan variables correctly
@@ -93294,11 +93294,11 @@
* test/lisp/mh-e/mh-thread-tests.el: New unit tests for affected code.
* lisp/mh-e/mh-scan.el (mh-msg-num-width-to-column): Fix doc string typo.
-2021-11-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Revert accidential commit in icomplete.el
-2021-11-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Remove Tramp's `dired-compress-file' handler, not needed anymore
@@ -93325,21 +93325,21 @@
* test/lisp/net/tramp-tests.el (tramp-test45-dired-compress-file)
(tramp-test45-dired-compress-dir): Adapt comment.
-2021-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix scroll event test in handle_one_xevent
* src/xterm.c (handle_one_xevent): Test for scroll wheel button
correctly in xwidget code.
-2021-11-13 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix font selection via :family on MS-Windows
* src/font.c (font_delete_unmatched) [HAVE_NTGUI]: Allow non-exact
matches of :weight when looking for a suitable font. (Bug#51768)
-2021-11-13 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Correct patch from 2021-11-12 on src/fileio.c
@@ -93348,7 +93348,7 @@
This ensures that if w->mpoint is at the top of the middle region being
replaced, it gets adjusted and stays at the top after the reinsertion.
-2021-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Don't emit SELECT_WINDOW_EVENT when an xwidget is scrolled
@@ -93356,7 +93356,7 @@
on button event if the button pressed actually represents the
scroll wheel.
-2021-11-13 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
C++ Mode: Fix incoorect background fontification of <
@@ -93382,7 +93382,7 @@
spurious condition on the `fontified' text property being nil before causing
c-force-redisplay to get called.
-2021-11-13 Stephen Leake <stephen_leake@stephe-leake.org>
+2023-04-15 Stephen Leake <stephen_leake@stephe-leake.org>
Fix issues; severity not set in textdocument/publishdiagnostics
@@ -93391,14 +93391,14 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/755
GitHub-reference: https://github.com/joaotavora/eglot/issues/401
-2021-11-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't create links to undefined commands in help--describe-command
* lisp/help.el (help--describe-command): Don't create links to
commands that aren't defined.
-2021-11-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Revert #if changes
@@ -93411,14 +93411,14 @@
(image_disable_image): Reverted.
(image_build_heuristic_mask): Reverted.
-2021-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use GTK native file choosers in xwidget callback
* src/xwidget.c (run_file_chooser_cb): Use GtkFileChooserNative
instead.
-2021-11-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Revert atimer changes
@@ -93428,21 +93428,21 @@
(turn_on_atimers): Revert
(have_buggy_timerfd): Revert
-2021-11-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
42d4e24ff3 ; Fix typos
0d0125daae Improve documentation of 'decode-coding-region'
-2021-11-13 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent NULL-pointer dereference on xwidget callback error
* src/xwidget.c (webkit_javascript_finished_cb): Check if
`error' is NULL before freeing it.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix file chooser hangs inside xwidget-webkit
@@ -93450,7 +93450,7 @@
a nested event loop instead of acting asynchronously.
(Fmake_xwidget): Attach file chooser signal.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove unused xwidget code in EmacsFixed GTK widget class
@@ -93463,21 +93463,21 @@
(emacs_fixed_gtk_widget_size_allocate)
(emacs_fixed_class_init) [HAVE_XWIDGETS]: Remove unused code.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent xwidget webkit isearch messages from entering log buffer
* lisp/xwidget.el (xwidget-webkit-isearch--update): Prevent
logging when displaying search contents message.
-2021-11-12 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Don't start both timerfd and alarms on Cygwin
* src/atimer.c (set_alarm) [CYGWIN]: Don't start both timerfd and
alarms; this causes a slowdown. (Bug#51734)
-2021-11-12 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
In insert_file_contents, always set windows' point markers.
@@ -93488,7 +93488,7 @@
prevents that window's point being moved a long way from its starting place
due to the removal of the central part of the buffer by insert_file_contents.
-2021-11-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Remove Emacs 25 compatibility from Tramp
@@ -93594,24 +93594,24 @@
(tramp-test45-dired-compress-dir): Use it.
(tramp-test44-asynchronous-requests): Use `seq-random-elt'.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix typos in etc/PROBLEMS
* etc/PROBLEMS (Internationalization problems): Fix typos.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document problem with fcitx and xwidgets
* etc/PROBLEMS (Internationalization problems): Document buggy fcitx
with xwidgets.
-2021-11-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/emacs-lisp/checkdoc.el (checkdoc-dired): Autoload.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for input methods to xwidget-webkit-edit-mode
@@ -93622,7 +93622,7 @@
(xwidget-webkit-pass-command-event): Consult input method about
key events if input method is enabled.
-2021-11-12 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Optimize admin/nt dependency computation
@@ -93633,28 +93633,28 @@
dependent packages.
(top-level): Don't call 'extract_deps' when given the '-l' option (bug#40628).
-2021-11-12 Rasmus <rasmus@gmx.us>
+2023-04-15 Rasmus <rasmus@gmx.us>
lisp/icomplete.el (icomplete-fido-backward-updir): Expand "~/"
* lisp/icomplete.el (icomplete-fido-backward-updir): Expand "~/"
(bug#43925).
-2021-11-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Delete .tar.gz temp file after tramp test
* test/lisp/net/tramp-tests.el ()
(tramp-test45-dired-compress-dir): Delete the temp file (bug#51690).
-2021-11-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove unused xlfd_ enums
* src/xfaces.c: Remove xlfd_weight, xlfd_swidth and xlfd_slant
enums. These seem to be unused in the Emacs sources.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove obsolete comment
@@ -93665,14 +93665,14 @@
* src/xwidget.c (kill_buffer_xwidgets): Remove outdated TODO.
-2021-11-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow choosing regular-weighted fonts when medium-weighted exist
* src/ftfont.c (ftfont_pattern_entity): Allow using both regular
and medium-weighted fonts.
-2021-11-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -93680,13 +93680,13 @@
144ad77fda Fix Lisp Intro markup error
24b86cb4f7 Fix ACL errors with WebDAV volumes on MS-Windows
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix doc string for xwidget-webkit-load-html
* src/xwidget.c (Fxwidget_webkit_load_html): Fix doc string.
-2021-11-12 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add input method support for xwidget webkit isearch
@@ -93698,7 +93698,7 @@
(xwidget-webkit-isearch-printing-char): Add support for Emacs
input methods. (bug#51781)
-2021-11-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Quote function symbols as such
@@ -93707,21 +93707,21 @@
(image-dired-thumbnail-mode-map, image-dired-minor-mode-map):
Quote function symbols as such.
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Move Info-goto-node-web to "G"
* lisp/info.el (Info-mode-map): Change the Info-goto-node-web
binding to "G" for symmetry with "Info-goto-node".
-2021-11-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make image-dired-thumbnail-mode non-interactive
* lisp/image-dired.el (image-dired-thumbnail-mode): No longer
interactive, as it only makes sense in a specially prepared buffer.
-2021-11-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Revamp slideshow functionality
@@ -93744,14 +93744,14 @@
to "S".
(image-dired-thumbnail-mode-menu): Add 'image-dired-slideshow-start'.
-2021-11-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Improve thumbnail mode menu
* lisp/image-dired.el (image-dired-thumbnail-mode-menu): Improve menu
with more logical ordering and better naming.
-2021-11-11 Bryan C. Mills <bcmills@google.com> (tiny change)
+2023-04-15 Bryan C. Mills <bcmills@google.com> (tiny change)
Make "emacs --script /dev/stdin work again when that's a pipe
@@ -93760,7 +93760,7 @@
* src/lread.c (safe_to_load_version): Check lseek errors
(Bug#48940).
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow using /dev/stdin as a --script parameter again
@@ -93768,14 +93768,14 @@
(file-truename "/dev/stdin") => "/proc/227795/fd/pipe:[1381505]"
when using /dev/stdin as a --script parameter.
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix potential NULL dereference in xwidget-webkit-uri
* src/xwidget.c (Fxwidget_webkit_uri): Don't assume
webkit_web_view_get_uri will always return a valid string.
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Check for WebKit xwidgets inside all xwidget-webkit functions
@@ -93792,13 +93792,13 @@
(Fxwidget_webkit_load_html): Check that xwidget is a WebKit
widget.
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix image-animate declaration
* lisp/net/shr.el (image-animate): Fix declaration.
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make gnus-article-stop-animations obsolete
@@ -93809,7 +93809,7 @@
(gnus-summary-exit-no-update, gnus-summary-show-article): Remove
callers.
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow stopping animations automatically when the image disappears
@@ -93821,7 +93821,7 @@
* lisp/net/shr.el (shr-put-image): Stop animations if the image is
removed.
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes from Lisp code modifying xwidget-list
@@ -93839,7 +93839,7 @@
(syms_of_xwidget): Initialize internal xwidget lists.
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent crashes in xwidgets whose buffers have been killed
@@ -93872,14 +93872,14 @@
* src/xwidget.h (XWIDGET_LIVE_P, CHECK_LIVE_XWIDGET): New
macros.
-2021-11-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix compilation on MS-Windows
* src/callproc.c (emacs_spawn) <fork_done>: Define the label only
if USABLE_POSIX_SPAWN is defined, to avoid a compiler warning.
-2021-11-11 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Use posix_spawn if possible.
@@ -93898,7 +93898,7 @@
helper functions.
(emacs_spawn): Use posix_spawn if possible.
-2021-11-11 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve performance of 'file-name-case-insensitive-p' for Tramp files
@@ -93924,7 +93924,7 @@
functions.
(tramp-connectable-p): Use 'tramp-ensure-dissected-file-name'.
-2021-11-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
erc: Don't announce broken functionality in /query docstring
@@ -93933,11 +93933,11 @@
broken right now" has been there since 2008, and it's not obvious to
me that we should ever re-add it.
-2021-11-11 Filipp Gunbin <fgunbin@fastmail.fm>
+2023-04-15 Filipp Gunbin <fgunbin@fastmail.fm>
* lisp/subr.el (add-hook): Fix adding into hook--depth-alist (bug#51620).
-2021-11-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix 8-color PuTTY -nw sessions broken by a recent commit
@@ -93949,14 +93949,14 @@
the capability is not a boolean one, so that's not to be used as a
valid support for 24-bit color. (Bug#44950)
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix problem with non-absolute names
* lisp/files.el (file-name-split): Fix problem with non-absolute
names.
-2021-11-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a command to go the gnu.org version of the info page
@@ -93965,13 +93965,13 @@
Based on code from Drew Adams <drew.adams@oracle.com>.
-2021-11-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge from origin/emacs-28
6dae01ad6d Fix tramp-compat-file-name-concat (Bug#51754)
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add URI as a valid spec for xwidget-webkit-buffer-name-format
@@ -93980,7 +93980,7 @@
(xwidget-webkit-callback): Add a format spec %U, which stands
for the current URI of the widget.
-2021-11-11 Feng Shu <tumashu@163.com>
+2023-04-15 Feng Shu <tumashu@163.com>
xwidget: Add xwidget-webkit-buffer-name-format.
@@ -93993,7 +93993,7 @@
* etc/NEWS: Note xwidget-webkit-buffer-name-format.
-2021-11-11 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix files-tests on MS-Windows
@@ -94004,21 +94004,21 @@
(files-tests-revert-buffer-with-fine-grain): Disable locking
files.
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix documentation in xwidget.el
* src/xwidget.el (xwidget-webkit-isearch-mode): Reword
documentation.
-2021-11-11 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Switch to xwidget webkit buffer even if a session already exists
* lisp/xwidget.el (xwidget-webkit-goto-url): Make behavior
when there is an existing session consistent.
-2021-11-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -94029,13 +94029,13 @@
# Conflicts:
# etc/NEWS
-2021-11-11 Tim Ruffing <crypto@timruffing.de> (tiny change)
+2023-04-15 Tim Ruffing <crypto@timruffing.de> (tiny change)
Support Tc terminfo flag for 24-bit color support in terminal
* src/term.c (init_tty): Use the Tc flag (bug#44950).
-2021-11-11 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Options to automatically stop the Emacs server
@@ -94051,7 +94051,7 @@
(server-save-buffers-kill-terminal): Call the new auxiliary
function when necessary.
-2021-11-11 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Set `minibuffer-completion-*` variables locally in more places
@@ -94065,7 +94065,7 @@
Follow-up to commit
2021-05-01 "* lisp/minibuffer.el (completing-read-default): Fix bug#45474"
-2021-11-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-fix charset issues when yanking non-plain-text elements
@@ -94073,14 +94073,14 @@
'CLIPBOARD 'text/html) get decoded correctly (bug#31149), but still
avoid the logic on Windows.
-2021-11-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't save places in literally-visited files
* lisp/saveplace.el (save-places-to-alist): Don't save places in
literally-visited files (bug#51740).
-2021-11-10 John Cummings <john@rootabega.net>
+2023-04-15 John Cummings <john@rootabega.net>
Add tests for 'insert-directory'
@@ -94092,18 +94092,18 @@
the issue where free space was reported for the current directory instead of
the target of 'list-directory' (Bug#50630).
-2021-11-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Note that loaddefs.el is copied to ldefs-boot.el
* lisp/emacs-lisp/autoload.el (autoload-rubric): Add a comment to
the file noting what'll happen to it.
-2021-11-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-generated to get autoloads additions in emoji.el
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `xwidget-webkit-load-html'
@@ -94112,13 +94112,13 @@
* src/xwidget.c (Fxwidget_webkit_load_html): New function.
(syms_of_xwidget): Define new subr.
-2021-11-10 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* etc/NEWS.28: Add changes omitted while merging from emacs-28 NEWS.
* etc/NEWS: Remove old news accidentally merged from emacs-28.
-2021-11-10 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix font weights on MS-Windows
@@ -94126,18 +94126,18 @@
(w32_to_fc_weight): Adjust weight translations to match those in
font.c and gtkutil.c:xg_weight_to_symbol. (Bug#51704)
-2021-11-10 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Improve 'ensure-empty-lines' docstring
* lisp/emacs-lisp/subr-x.el (ensure-empty-lines): Fix typo and improve
wording.
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* admin/update_autogen: Remove unused variables.
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use "grep -E" instead of deprecated "egrep"
@@ -94145,7 +94145,7 @@
* test/lisp/so-long-tests/so-long-tests.el: Use "grep -E" instead of
deprecated "egrep".
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid another byte-compiler warning in package-quickstart.el
@@ -94153,7 +94153,7 @@
byte-compiler warning "assignment to free variable" in
package-quickstart.el.
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Avoid spurious byte-compiler warnings in package-quickstart.el
@@ -94162,20 +94162,20 @@
warnings. Given that we wrap it all in a let-form, these are mostly
false positives and not helpful.
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* admin/automerge: Fix quoting of some variables.
* admin/automerge: Use mktemp if it exists.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent GDK warning about missing event devices in most cases
* src/xwidget.c (synthesize_focus_in_event): Set event device to
selected frame's pointer if it's an X frame.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add `xwidget-webkit-isearch-yank-kill'
@@ -94184,7 +94184,7 @@
(xwidget-webkit-isearch-mode): Update doc string.
(xwidget-webkit-yank-kill): New function.
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -94198,13 +94198,13 @@
# Conflicts:
# etc/NEWS
-2021-11-10 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
2782bc113e Revert "Fix localized display of date and time in the NS p...
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent skipping results while changing search direction
@@ -94212,7 +94212,7 @@
(xwidget-webkit-isearch-backward): Avoid moving to the next result one
too many times.
-2021-11-10 Benj <Benjamin.Schwerdtner@gmail.com> (tiny change)
+2023-04-15 Benj <Benjamin.Schwerdtner@gmail.com> (tiny change)
Make the python missing-readline warning more helpful
@@ -94220,7 +94220,7 @@
(python-shell-completion-native-turn-on-maybe): Mention the "readline"
package (bug#48998).
-2021-11-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-c C-c' in erts-mode work with Point-Char elems
@@ -94228,28 +94228,28 @@
Factor out into own function (bug#51680).
(erts-run-test): Respect Point-Char settings.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Remove obsolete limitation
* src/xwidget.c (Fxwidget_webkit_goto_history): Accept any fixnum as
REL-POS, to be consistent with docstring.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix incorrect offset calculation for clipped xwidget views
* src/xwidget.c (from_embedder, to_embedder): Remove incorrect
adjustment of position by view clipping.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix invisible content in WebKit dialogs
* src/xwidget.c (webkit_script_dialog_cb): Use custom label instead of
dialog box title to display message.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set embedder correctly to fix menus appearing in the wrong location
@@ -94263,43 +94263,43 @@
* src/xwidget.h (struct xwidget): New fields `embedder' and
`embedder-view'.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Fix mouse face in NS port"
This reverts commit 278e4fc9c6353068334dd39d45334b1df82a6cee.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "*** empty log message ***"
This reverts commit 68a2a3307d1703ac8abe4b54c8e1ef9dda677c12.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Add support for event processing via XInput 2"
This reverts commit 346cfc81247e6bf8e727a27b42f44f2389bd1269.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Fix erasing cursor on top of raised boxes in NS port"
This reverts commit 2b5a2ab50b7817f84ae38f84b4ea36ea38cd5a3b.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Revert "Fix erasing cursor on top of raised boxes in NS port""
This reverts commit 7117bbc7aa905ae785fa564cb24c3fc75ef1d543.
-2021-11-10 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Revert "Support opening the toolkit menu bar on NS"
This reverts commit ff9cf991c1608cd2578a66cba41e654a2b5d9144.
-2021-11-10 oldosfan <luangruo@yahoo.com>
+2023-04-15 oldosfan <luangruo@yahoo.com>
Support opening the toolkit menu bar on NS
@@ -94307,20 +94307,20 @@
* src/nsterm.m (ns_create_terminal): Add activate_menubar_hook.
* lisp/menu-bar.el (menu-bar-open): Use ns-menu-bar-open on Nextstep.
-2021-11-10 oldosfan <luangruo@yahoo.com>
+2023-04-15 oldosfan <luangruo@yahoo.com>
Revert "Fix erasing cursor on top of raised boxes in NS port"
This reverts commit 960f0eb9ab657af85c532574b937d8851049b178.
-2021-11-10 oldosfan <luangruo@yahoo.com>
+2023-04-15 oldosfan <luangruo@yahoo.com>
Fix erasing cursor on top of raised boxes in NS port
* src/nsterm.m (ns_draw_relief): Clear top and bottom line areas
first, if required.
-2021-11-10 oldosfan <luangruo@yahoo.com>
+2023-04-15 oldosfan <luangruo@yahoo.com>
Add support for event processing via XInput 2
@@ -94347,36 +94347,36 @@
(xg_is_menu_window): New function
(xg_event_is_for_scrollbar): Handle XIDeviceEvents
-2021-11-10 oldosfan <luangruo@yahoo.com>
+2023-04-15 oldosfan <luangruo@yahoo.com>
*** empty log message ***
-2021-11-10 oldosfan <luangruo@yahoo.com>
+2023-04-15 oldosfan <luangruo@yahoo.com>
Fix mouse face in NS port
* src/nsterm.m (ns_draw_glyph_string): Set s->face to the mouse face.
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix package-tests failure on native-comp
* test/lisp/emacs-lisp/package-tests.el
(package-test-macro-compilation-gz): Fix test failure on native-comp.
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix the look of the <video> elements in shr
* lisp/net/shr.el (shr-tag-video): Tweak the look of the video element.
-2021-11-09 Lars Ingebrigtsen <larsi@emkay.local>
+2023-04-15 Lars Ingebrigtsen <larsi@emkay.local>
Try to fix intermittent build problem on Macos
* src/Makefile.in (@): Also sign the bootstrap-emacs executable
-2021-11-09 Tom Levy <tomlevy93@gmail.com> (tiny change)
+2023-04-15 Tom Levy <tomlevy93@gmail.com> (tiny change)
Remove spurious %S from 'define-error' messages
@@ -94386,21 +94386,21 @@
* lisp/emacs-lisp/gv.el (gv-invalid-place): Remove spurious %S from
error message (and rephrase) (bug#51718).
-2021-11-09 Tom Levy <tomlevy93@gmail.com> (tiny change)
+2023-04-15 Tom Levy <tomlevy93@gmail.com> (tiny change)
Allow 'undo-redo' to be called from Lisp without repeat count
* lisp/simple.el (undo-redo): Default arg to 1 to avoid error when
called from Lisp without args (bug#51718).
-2021-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prevent BadValue errors when creating tiny xwidget views
* src/xwidget.c (x_draw_glph_string): Avoid resizing xwidget views
to an invalid size (bug#51707).
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function 'file-name-split'
@@ -94409,7 +94409,7 @@
* lisp/emacs-lisp/shortdoc.el (file-name): Mention it.
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `dired-split' obsolete
@@ -94418,13 +94418,13 @@
* lisp/ffap.el (ffap-list-env): Adjust comment.
-2021-11-09 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* lisp/net/tramp-cache.el (tramp-persistency-file-name):
Skip superfluous `expand-file-name'.
-2021-11-09 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve performance when checking case-sensitivity of Tramp file names
@@ -94435,7 +94435,7 @@
* lisp/net/tramp.el (tramp-handle-file-name-case-insensitive-p):
Use `tramp-connectable-p' to test for connection.
-2021-11-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add back/forward mouse button bindings in eww
@@ -94443,41 +94443,41 @@
bindings. These bindings are the same as in Firefox and other
graphical browsers.
-2021-11-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/progmodes/prog-mode.el (prog-context-menu): Add "Go Forward".
The menu item "Go Forward" is bound to xref-go-forward.
Also use "Go Back" for xref-go-back (bug#38797).
-2021-11-09 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
* lisp/vc/diff-mode.el (diff-setup-buffer-type): Move to diff-setup-whitespace
* lisp/vc/vc.el: Add declare-function for diff-setup-buffer-type (bug#51016).
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Expand the etc/NEWS section about the `medium' font changes
* etc/NEWS: Expand upon the addition of the `medium' weight
(bug#51704).
-2021-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix compiler warning building net/shr.el without xwidget support
* lisp/net/shr.el (xwidget-webkit-execute-script): New function
declaration (bug#51705).
-2021-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix default target of motion events
* src/xwidget.c (xwidget_motion_or_crossing): Default to widget_osr
instead of its window (bug#51703).
-2021-11-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer locate-user-emacs-file
@@ -94490,7 +94490,7 @@
* lisp/shell.el (shell): Prefer 'locate-user-emacs-file' to fiddling
with 'user-emacs-directory' directly.
-2021-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Always set xwidget title if the event was "load-finished"
@@ -94498,21 +94498,21 @@
load completion. This prevents loading pages such as "about:blank"
from not setting the buffer name (bug#51702).
-2021-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make `kill_frame_xwidget_views' safe
* src/xwidget.c (kill_frame_xwidget_views): Check XWIDGET_VIEW_P
(bug#51701).
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't create temporary files for <video>
* lisp/net/shr.el (shr-tag-audio): Don't create a temporary file;
just update the DOM directly.
-2021-11-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
@@ -94522,7 +94522,7 @@
# Conflicts:
# etc/NEWS
-2021-11-09 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make xwidget-tests pass again
@@ -94532,21 +94532,21 @@
(xwidget-webkit-new-session, xwidget-webkit-import-widget): Always use
existing buffer name (bug#51700).
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in last shr change
* lisp/net/shr.el (shr-tag-video): Require xwidgets, because it's
used from callbacks.
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix shr-tag-video startup issue
* lisp/net/shr.el (shr-tag-video): Require xwidgets, because it's
used from callbacks.
-2021-11-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Optionally use use xwidgets to display <video> elements in shr
@@ -94554,28 +94554,28 @@
* lisp/net/shr.el (shr-use-xwidgets-for-media): New user option.
(shr-tag-video): Use xwidgets to display <video> elements.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make image-compute-scaling-factor argument optional
* lisp/image.el (image-compute-scaling-factor): Make the argument
optional.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
ARGUMENTS in Fmake_xwidget is optional
* src/xwidget.c (Fmake_xwidget): The ARGUMENTS argument isn't
mandatory.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make xwidget-event-handler more resilient
* lisp/xwidget.el (xwidget-event-handler): Don't try to call the
callback if it hasn't been defined.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Delete temp directory after bytecomp test
@@ -94586,20 +94586,20 @@
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--dest-mountpoint): Ditto.
-2021-11-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix flicker when setting hscroll of xwidget
* src/xterm.c (x_scroll_run): Use original height of xwidget instead
of window height and set cairo surface size (bug#51697).
-2021-11-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Raise an error if creating an unknown xwidget type
* src/xwidget.c (Fmake_xwidget): Error if TYPE is invalid (bug#51682).
-2021-11-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Really fix xwidget scroll optimization and clip
@@ -94607,7 +94607,7 @@
* src/xwidget.c (xv_do_draw): Use cairo_translate.
(xwidget_motion_or_crossing): Use correct fields (bug#51681).
-2021-11-08 Feng Shu <tumashu@163.com>
+2023-04-15 Feng Shu <tumashu@163.com>
xwidget.el: limit buffer-name flicker in mode-line
@@ -94618,7 +94618,7 @@
(xwidget-webkit-new-session, xwidget-webkit-import-widget): Use
current buffer to generate a temp xwidget-webkit buffer.
-2021-11-08 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Fix local variables overwritten when diff-mode is set
@@ -94630,14 +94630,14 @@
(vc-diff-internal): Restore `diff-mode' being set before local
variables (bug#51016).
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow yank-media-types to also show the unsupported data types
* lisp/yank-media.el (yank-media-types): Make the prefix include
data types not supported by the backend, too.
-2021-11-08 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Don't have nntp-report signal an error
@@ -94645,29 +94645,29 @@
possible like nnheader-report, which only logs the error and returns
nil.
-2021-11-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/xdg.el (xdg--dir-home): Make it a function
-2021-11-08 Campbell Barton <ideasman42@gmail.com>
+2023-04-15 Campbell Barton <ideasman42@gmail.com>
* lisp/subr.el (with-undo-amalgamate): New macro
This allows commands to be made without adding undo-barriers, e.g.
kmacro-exec-ring-item.
-2021-11-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-generic.el: Add reference to inspiration
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Switch yank-media--get-selection back to the backend function
* lisp/yank-media.el (yank-media--get-selection): Switch back to
gui-backend-get-selection until gui-get-selection is re-fixed.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Fix charset issues when yanking non-plain-text elements"
@@ -94676,17 +94676,17 @@
This apparently led to problems on Windows. The issues have to
be examined first before attempting a new fix.
-2021-11-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* admin/automerge: Die if changing directory fails.
-2021-11-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Merge from origin/emacs-28
fe91f4438c ; * etc/PROBLEMS: Move librsvg-related item to better loca...
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove code what would always maximize xwidgets on Macos
@@ -94695,7 +94695,7 @@
was probably added to work around a resizing bug that has since
been fixed.
-2021-11-08 akater <nuclearspace@gmail.com>
+2023-04-15 akater <nuclearspace@gmail.com>
lisp/emacs-lisp/lisp-mode.el: Fix parser state corruption.
@@ -94704,48 +94704,48 @@
* test/lisp/progmodes/elisp-mode-resources/flet.erts: Add corresponding
test example (bug#9622).
-2021-11-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix resize of xwidgets on GTK
* src/xwidget.c (Fxwidget_resize): Queue widget for re-allocation
after setting its size request (bug#51679).
-2021-11-08 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix hang when displaying xwidget script dialog
* src/xwidget.c (webkit_script_dialog_cb): New function.
(Fmake_xwidget): Attach script callback signal (bug#51674).
-2021-11-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Set window-resize-pixelwise to t
* lisp/image-dired.el (image-dired-thumbnail-mode): Set
'window-resize-pixelwise' to t.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention yank-media-types in the manual
* doc/lispref/frames.texi (Yanking Media): Mention yank-media-types.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make html-mode--html-yank-handler more resilient
* lisp/textmodes/sgml-mode.el (html-mode--html-yank-handler): The
HTML may not be valid, so suppress errors.
-2021-11-08 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix yank-media--get-selection thinko in previous change
* lisp/yank-media.el (yank-media--get-selection): Fix thinko after
previous change.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up the yank-media data massaging
@@ -94754,21 +94754,21 @@
(yank-media-types--format): ... here instead, and decode utf-16
better.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new debugging/exploration command `yank-media-types'
* lisp/yank-media.el (yank-media-types): New command.
(yank-media-types--format): Helper command.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix charset issues when yanking non-plain-text elements
* lisp/select.el (gui-get-selection): Make (gui-get-selection
'CLIPBOARD 'text/html) get decoded correctly (bug#31149).
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename 'register-yank-media-handler'
@@ -94779,7 +94779,7 @@
(yank-media-handler): Rename from `register-' because that may
cause confusion with register.el functions.
-2021-11-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer ert-with-temp-(directory|file) in most remaining tests
@@ -94812,14 +94812,14 @@
* test/src/process-tests.el (process-test-quoted-batfile): Prefer
'ert-with-temp-(directory|file)' to using 'make-temp-file' directly.
-2021-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Set clipping when dumping stretch glyphs in some cases
* src/nsterm.m (ns_draw_glyph_string): Always focus even when dumping
stretch glyphs in s->next (bug#51653).
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix charset issues in text/html yanking
@@ -94828,14 +94828,14 @@
which guesses wrong on the charset on many types.
(yank-media): Fix the case where there's only one match.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Suppress a compilation warning about vc-switch-backend
* lisp/vc/vc-hooks.el (vc-prefix-map): Suppress a warning about an
obsolete command.
-2021-11-07 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Improve undoing of RET in comint and eshell
@@ -94846,7 +94846,7 @@
insertion with 'C-/' will delete the region, moving the process mark
back to its original position (bug#49484).
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow 'C-x n d' to work in texinfo-mode
@@ -94855,7 +94855,7 @@
node.
(texinfo--beginning-of-defun, texinfo--end-of-defun): New functions.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make paragraph/filling functions in texinfo-mode work better
@@ -94866,14 +94866,14 @@
(texinfo--fill-paragraph): New filling function.
(texinfo-fillable-commands): New variable (bug#49558).
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make debugging ert--erts-specifications easier
* lisp/emacs-lisp/ert.el (ert--erts-specifications): Strip text
properties from specs to make debugging easier.
-2021-11-07 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Merge from origin/emacs-28
@@ -94882,14 +94882,14 @@
8d9b55330d * doc/emacs/frames.texi (Tab Bars): Add text about mouse a...
d9b0b730e8 * doc/emacs/frames.texi (Tab Bars): Describe tab-last.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Match password prompts from new OpenSSH
* lisp/comint.el (comint-password-prompt-regexp): Add support for
the openssh-8.6p1 "(user@host) Password:" format (bug#51666).
-2021-11-07 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Fix intermittent electric test failures
@@ -94897,7 +94897,7 @@
(whitespace-chomping-dont-cross-comments): Move
'c-toggle-comment-style' to here.: (bug#51665).
-2021-11-07 Juri Linkov <juri@linkov.net>
+2023-04-15 Juri Linkov <juri@linkov.net>
Simplify c8acc5fd92ad9979fc5870623014290cad998337
@@ -94905,7 +94905,7 @@
no properties 'inhibit-isearch' in the search range,
instead of code of c8acc5fd92ad9979fc5870623014290cad998337.
-2021-11-07 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge from origin/emacs-28
@@ -94916,35 +94916,35 @@
6243a43ac2 Fix search string generation in nnimap-make-thread-query
f05b8a939b Update to Org 9.5-68-g77e2ec
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-x 8 e e' work better in the terminal
* lisp/international/emoji.el (emoji--adjust-displayable-1): Make
something rudimentary work on non-graphical Emacsen for `C-x 8 e e'.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make emoji-describe really describe only the glyph under point
* lisp/international/emoji.el (emoji-describe): Only look at the
compositions under point (bug#51659).
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't inhibit compilation of emoji.elc
* lisp/international/emoji.el (emoji--generate-file): Further
obfuscate to not inhibit byte compilation.
-2021-11-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
'yank-media' is not universally supported
* doc/emacs/killing.texi (Clipboard):
* etc/NEWS: Say that 'yank-media' is not universally supported.
-2021-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Free find text in correct procedure
@@ -94952,28 +94952,28 @@
text.
(Fxwidget_webkit_finish_search): Free find text here instead.
-2021-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix C-r inside xwidget isearch
* lisp/xwidget.el (xwidget-webkit-isearch-backward): Ask for previous
result.
-2021-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget-webkit-goto-history
* src/xwidget.c (xwidget-webkit-goto-history): Use
WebKitBackForwardList and XFIXNUM instead of XFIXNAT (bug#51651).
-2021-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION appropriately
* src/xwidget.c (webkit_decide_policy_cb): Send an xwidget display
event when a webpage asks to create a new window.
-2021-11-07 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Document the xwidget type
@@ -94982,7 +94982,7 @@
menu.
(Xwidget Type): New node.
-2021-11-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve detection of suspiciously reordered text segments
@@ -94998,7 +94998,7 @@
(xdisp-tests--find-directional-overrides-case-2): Adjust expected
result.
-2021-11-07 Cristian <crstml@libero.it> (tiny change)
+2023-04-15 Cristian <crstml@libero.it> (tiny change)
Another addition to latin-2 input methods
@@ -95006,7 +95006,7 @@
* lisp/leim/quail/latin-post.el ("latin-2-postfix"): Add variants
of "`t" and "t," for Romanian. (Bug#51638)
-2021-11-07 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix documentation and coding style in recent xwidget commits
@@ -95027,41 +95027,41 @@
* etc/NEWS: Fix wording and punctuation.
-2021-11-07 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/lispref/tips.texi (Coding Conventions): Mention GNU "path" convention
Suggested by Ihor Radchenko <yantar92@gmail.com>.
-2021-11-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Ensure that the x_show_hourglass is seen
* src/xterm.c (x_show_hourglass): Ensure that the hourglass is
seen (bug#51649).
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Actually start the alarms in atimer
* src/atimer.c (set_alarm): Actually start both timerfd and
alarms (attempted in 4107549a).
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix backspace in xwidget webkit isearch
* lisp/xwidget.el: Set backspace to
xwidget-webkit-isearch-erasing-char (bug#51647).
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove too-agressive window refresh in the hourglass code
* src/xterm.c (x_show_hourglass): Don't force a spurious refresh
(bug#51649).
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix build on nextstep
@@ -95072,7 +95072,7 @@
conditional.
* src/print.c (print_vectorlike): Print correct pointer on macOS.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve xwidget isearch visuals
@@ -95082,13 +95082,13 @@
(xwidget-webkit-isearch-backward): Always refresh message.
(xwidget-webkit-isearch-mode): Update message when enabling.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix web inspector
* src/xwidget.c (Fmake_xwidget): Move developer extra initialization.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Default to creating new related sessions
@@ -95101,14 +95101,14 @@
* src/xwidget.c (Fmake_xwidget): Make RELATED argument public.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Rationalize creation decisions
* src/xwidget.c (webkit_create_cb): Only create a new widget if type
is OTHER.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make "open in new window" from an xwidget's context menu work
@@ -95136,7 +95136,7 @@
signal.
(syms_of_xwidget): Define now subrs.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add xwidget-webkit-isearch to the menu bar and tool bar
@@ -95146,7 +95146,7 @@
(xwidget-webkit-isearch-mode-map): Reorder key definitions so the
equivalent key shows up as `C-s' in the menu bar.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add xwidget-webkit-isearch-mode
@@ -95164,7 +95164,7 @@
(xwidget-webkit-isearch-mode-map): New keymap.
(xwidget-webkit-isearch-mode): New minor mode.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add functions for performing searches on xwidgets
@@ -95180,21 +95180,21 @@
(kill_buffer_xwidgets): Free search query if present.
* src/xwidget.h (struct xwidget): Add field for search query.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make it safe to have non-xwidget views in xwidget-view-list
* src/xwidget.c (define_cursors, offscreen_damage_event): Check
XWIDGET_VIEW_P before XXWIDGET_VIEW.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make xwidgets print nicer
* src/print.c (print_vectorlike): Print xwidgets with ID and widget
pointer, and print xwidget views separately.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix cursor for new widget views
@@ -95205,7 +95205,7 @@
* src/xwidget.h (struct xwidget): Add hit result field.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add support for cursors in xwidget views
@@ -95217,7 +95217,7 @@
* src/xwidget.h (struct xwidget_view): Add cursor field.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Display page titles in xwidget webkit header line
@@ -95225,7 +95225,7 @@
(xwidget-webkit-callback, xwidget-webkit-mode): Set header line format
and associated variables.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve detail of load-changed xwidget events
@@ -95234,7 +95234,7 @@
* doc/lispref/commands.texi: Document Xwidget events.
* doc/lispref/display.texi (Xwidgets): Add reference to Xwidget events.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Make the WebKit inspector available
@@ -95249,14 +95249,14 @@
(xwidget_button_1, xwidget_button, xwidget_motion_or_crossing):
Use window at event position instead of the default widget.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add xwidget-webkit-copy-selection-as-kill to the menu bar
* lisp/xwidget.el: New menu item
`xwidget-webkit-copy-selection-as-kill'.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add new tool-bar items to xwidget-webkit
@@ -95266,33 +95266,33 @@
* lisp/xwidget.el (xwidget-webkit-tool-bar-map): New keymap variable.
(xwidget-webkit-mode): Set tool-bar-map to the appropriate map.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add a menu to xwidget-webkit
* lisp/xwidget.el: Add a menu to xwidget-webkit-mode-map.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Redisplay xwidget view windows instead of just setting their size
* src/xwidget.c (Fxwidget_resize): Mark windows as needing redisplay
and redisplay instead.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Select window when clicking on an xwidget view
* src/xterm.c (handle_one_xevent): Select window when clicking on an
xwidget view.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix xwidget scrolling
* src/xterm.c (x_scroll_run): Use from_y and height.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow enabling xwidget-webkit-edit-mode via a binding
@@ -95300,7 +95300,7 @@
* lisp/xwidget.el (xwidget-webkit-mode-map): Add shortcut for
xwidget-webkit-edit-mode.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Add xwidget-webkit-edit-mode to make using the WebKit browser easier
@@ -95311,20 +95311,20 @@
declaration.
* lisp/xwidget.el (xwidget-webkit-edit-mode): New minor mode.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix special events in xwidgets
* src/xwidget.c (set_widget_if_text_view): New function.
(Fxwidget_perform_lispy_event): Fix for webkit widgets.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix drag on xwidget motion events
* src/xwidget.c (xwidget_motion_or_crossing): Set state.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Handle crossing events on xwidget windows correctly
@@ -95335,13 +95335,13 @@
(x_draw_xwidget_glyph_string): Add EnterWindowMask and
LeaveWindowMask.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Draw offscreen surface
* src/xwidget.c (xv_do_draw): Draw offscreen surface.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Implement function for sending events to widgets
@@ -95355,21 +95355,21 @@
(find_suitable_keyboard): New functions.
(syms_of_xwidget): Define new subr.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use gtk_widget_queue_draw instead of xv_do_draw
* src/xwidget.c (x_draw_xwidget_glyph_string): Call
gtk_widget_queue_draw.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Prefer XMoveResizeWindow to XMoveWindow for resizing xwidgets
* src/xwidget.c (x_draw_xwidget_glyph_string): Prefer
XMoveResizeWindow to avoid extra expose events.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Allow xwidgets to accept motion and button events
@@ -95386,7 +95386,7 @@
* src/xwidget.h (xwidget_button, xwidget_motion_or_crossing): New
functions.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Destroy xwidgets when destroying frames
@@ -95400,7 +95400,7 @@
(kill_frame_xwidget_views): New function.
* src/xwidget.c (kill_frame_xwidget_views): New function.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Enable scrolling optimization for xwidgets
@@ -95421,7 +95421,7 @@
* src/xwidget.h (struct xwidget): Add ID field.
(xwidget_from_id): New function.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Use an X window to display xwidgets on X11
@@ -95460,21 +95460,21 @@
(xwidget_view_from_window, xwidget_expose): New functions.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix pp-emacs-lisp-code for `when' and related
* lisp/emacs-lisp/pp.el (pp--format-definition): Skip edebug specs
we don't understand at all.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix html-mode--image-yank-handler prompting
* lisp/textmodes/sgml-mode.el (html-mode--image-yank-handler): Fix
two format statements and rearrange images.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Ensure return value of ert-with-temp-directory
@@ -95483,7 +95483,7 @@
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests-with-temp-directory): Extend test for the above.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer ert-with-temp-(directory|file)
@@ -95552,7 +95552,7 @@
In some cases, this is just cleanup, but in several cases this fixes
bugs where an error would have lead to us not cleaning up.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add generated suffix to test temp file names
@@ -95563,7 +95563,7 @@
* test/lisp/emacs-lisp/ert-x-tests.el
(ert-x-tests--with-temp-file-generate-suffix): New test.
-2021-11-06 dickmao <none>
+2023-04-15 dickmao <none>
Fix byte compilation of package built-ins
@@ -95584,7 +95584,7 @@
(package-test-macro-compilation): Test.
(package-test-macro-compilation-gz): Test (bug#49708).
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option eww-url-transformers
@@ -95595,20 +95595,20 @@
(eww-follow-link): Use it.
(eww): Ditto.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Expand register-yank-media-handler doc string
* lisp/yank-media.el (register-yank-media-handler): Expand doc string.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix yank-media logic when there's several handlers
* lisp/yank-media.el (yank-media): Fix logic when there's several
different handler functions.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow yanking images to html-mode
@@ -95617,13 +95617,13 @@
function.
(html-mode): Accept image/*.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix "Yanking Media" sectioning
* doc/lispref/frames.texi (Yanking Media): Fix sectioning.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Support yank-media in html-mode
@@ -95631,21 +95631,21 @@
function.
(html-mode): Handle text/html.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous yank-media--get-selection change
* lisp/yank-media.el (yank-media--get-selection): Fix typo in
previous change.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix nul-terminated text/* strings from some programs
* lisp/yank-media.el (yank-media--get-selection): Some programs
nul-terminate text/* strings. Fix that.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make the lambda/closure buttons in `C-h b' say what they do
@@ -95654,13 +95654,13 @@
* lisp/help.el (help--describe-command): Say what the
lambda/closure buttons do.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add mouse-face to buttonize
* lisp/button.el (buttonize): Add the highlight mouse-face.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a framework for yanking media into Emacs
@@ -95674,21 +95674,21 @@
(message-insert-screenshot): Factor out image code from here...
(message--yank-media-image-handler): ... to here.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function mailcap-mime-type-to-extension
* lisp/net/mailcap.el (mailcap-mime-type-to-extension): Add a new
helper function to do the reverse of `mailcap-file-name-to-mime-type'.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a pcase-let example to the manual
* doc/lispref/control.texi (Destructuring with pcase Patterns):
Add a pcase-let example.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New user option image-auto-resize-max-scale-percent
@@ -95697,7 +95697,7 @@
(image--scale-within-limits-p): New function.
(image-toggle-display-image): Respect above new user option.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New command image-transform-fit-to-window
@@ -95716,14 +95716,14 @@
* doc/emacs/files.texi (Image Mode): Update documentation.
(image-transform-fit-both): Doc fix.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add outline-minor-mode-use-buttons doc string caveat
* lisp/outline.el (outline-minor-mode-use-buttons): Note that the
feature is for special mode buffers only (bug#51629).
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `outline-hide-body' work in `C-h b' buffers
@@ -95732,14 +95732,14 @@
(outline--fix-up-all-buttons): Take a region as parameter.
(outline-cycle-buffer): Adjust call.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make substitute-command-keys regexp tests more strict
* test/lisp/help-tests.el (with-substitute-command-keys-test): Make
regexp tests more strict.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Replace some macros with ert-with-temp-(file|directory)
@@ -95753,7 +95753,7 @@
* test/src/process-tests.el (process-tests--with-temp-directory):
Replace macros with 'ert-with-temp-(file|directory)'. Update callers.
-2021-11-06 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New convenience macros ert-with-temp-(file|directory)
@@ -95769,7 +95769,7 @@
(ert-x-tests-with-temp-file/text-kwarg)
(ert-x-tests-with-temp-file/unknown-kwargs-signals-error): New tests.
-2021-11-06 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't send empty lines for unknown commands in ERC
@@ -95779,7 +95779,7 @@
* test/lisp/erc/erc-tests.el: Update `erc-process-input-line' test to
check for excess line feeds with unknown commands.
-2021-11-06 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Deprecate instead of redefine erc-server-reconnecting
@@ -95801,7 +95801,7 @@
* lisp/erc/erc.el (erc-cmd-RECONNECT): use `erc--server-reconnecting'
instead of `erc-server-reconnecting'.
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix Emoji-related documentation
@@ -95813,44 +95813,44 @@
* admin/notes/unicode: Update instructions for updating Emacs for
the latest Unicode Standard.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Include make Errors in admin/emake
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add an example to the display-supports-face-attributes-p doc string
* src/xfaces.c (Fdisplay_supports_face_attributes_p): Add an example.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Partially revert previous make-separator-line change
* lisp/simple.el (make-separator-line): Use dashes on displays
that don't support underlines (bug#32950).
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the build broken by recent commits
* admin/unidata/Makefile.in (${unifiles})
(${unidir}/emoji-labels.el): Fix typos in last commits.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up emoji-labels.el generation incantation
* admin/unidata/Makefile.in (${unidir}/emoji-labels.el): Make
generation more silent.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make describe-char include emoji combination descriptions
* lisp/descr-text.el (describe-char): Output emoji descriptions.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add emoji insertion support to Emacs
@@ -95871,7 +95871,7 @@
* lisp/international/mule-cmds.el (ctl-x-map): Bind the emoji
commands.
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve latin-2-postfix and latin-2prefix input methods
@@ -95880,7 +95880,7 @@
of "`s" and "s," for Romanian. Add key bindings for moving
between variants, when there are more than one. (Bug#51638)
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix an error in 'highlight-confusing-reorderings'
@@ -95888,7 +95888,7 @@
(highlight-confusing-reorderings): Don't signal an error when
a confusingly-reordered sequence ends at EOB.
-2021-11-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge from origin/emacs-28
@@ -95900,7 +95900,7 @@
# Conflicts:
# etc/NEWS
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
General improvements to NS port
@@ -95931,7 +95931,7 @@
* src/xdisp.c (note_tab_bar_highlight): Enable some code for NS port.
-2021-11-06 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Improve font display on NS port
@@ -96007,7 +96007,7 @@
(macfont_draw): Remove obsolete mouse-face code and enable cursor
display.
-2021-11-06 Kazuhiro Ito <kzhr@d1.dion.ne.jp>
+2023-04-15 Kazuhiro Ito <kzhr@d1.dion.ne.jp>
Fix display of BW images on MS-Windows
@@ -96015,7 +96015,7 @@
fore- and the back-ground colors back to their normal conventions.
(Bug#6918)
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve detection of suspicious reordering in source code
@@ -96027,7 +96027,7 @@
'xdisp-tests--find-directional-overrides'.
(xdisp-tests--find-directional-overrides-case-2): New test.
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -96036,31 +96036,31 @@
c2e3cd6 Clarify "text area of a window" in the documentation
4e7e78d Improve docstring of kmacro-set-format
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
# Conflicts:
# etc/NEWS
-2021-11-06 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
b5ccad3 * doc/emacs/building.texi (Compilation Mode): Add next-error-...
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Inhibit isearching over message-insert-screenshot data
* lisp/gnus/message.el (message-insert-screenshot): Inhibit
isearch over the image data.
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update help-tests after separator line changes
-2021-11-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow 'insert-image' to inhibit isearches or not
@@ -96068,7 +96068,7 @@
* lisp/image.el (insert-image): Take an optional parameter to
inhibit isearch of the STRING argument.
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Introduce a new 'inhibit-isearch' text property
@@ -96080,28 +96080,28 @@
(isearch--invisible-p): New function.
(isearch-range-invisible): Use it.
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-rename the minibuffer heading
* lisp/minibuffer.el: There's more here than completion functions
(bug#49844).
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Correct minibuffer.el heading
* lisp/minibuffer.el: There's more here than completion functions
(bug#49844).
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use underline on non-graphical terminals in make-separator-line
* lisp/simple.el (separator-line):
(make-separator-line): Use an underline on terminals (bug#32950).
-2021-11-05 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Normalize usage of variable erc-server-reconnecting
@@ -96113,7 +96113,7 @@
remain. Previously, its use and meaning in erc-backend were convoluted
and conflicted with its use in erc-cmd-RECONNECT (bug#50007).
-2021-11-05 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Don't send empty lines for implicit targets in ERC
@@ -96129,7 +96129,7 @@
indirectly tests erc-send-input-line. It also tests the command
lookup and dispatch facility (bug#50008).
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove messaging in pp-display-expression.
@@ -96137,14 +96137,14 @@
message -- we don't usually say that we've popped up a new buffer when
we do so.
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow getting verbose results on erts 'C-u C-c C-c'
* lisp/progmodes/erts-mode.el (erts-run-test): Allow getting a
diff buffer of the differences with `C-u C-c C-c'.
-2021-11-05 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Improve behavior of 'electric-pair-mode' in 'cc-mode'
@@ -96157,7 +96157,7 @@
insertion of quote pairs immediately before another quote, and allows
inserting quote pairs within a string (thus splitting the string in two).
-2021-11-05 Manuel Giraud <manuel@ledu-giraud.fr>
+2023-04-15 Manuel Giraud <manuel@ledu-giraud.fr>
Make 'C-x v v' on an unregistered file use the most specific backend
@@ -96166,28 +96166,28 @@
* lisp/vc/vc.el (vc-backend-for-registration): Choose the most
specific backend (bug#50572).
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak `eww' new-buffer parameters
* lisp/net/eww.el (eww): Don't require that the function be called
with 4 to open a new buffer (bug#51613).
-2021-11-05 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix GNUstep build (ns_compute_glyph_string_overhangs)
* src/nsterm.m (ns_compute_glyph_string_overhangs): Declare the font
variable so that it's in scope for the GNUstep code.
-2021-11-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add "N.B." abbreviation to checkdoc
* lisp/emacs-lisp/checkdoc.el (checkdoc-in-abbreviation-p): Add
abbreviation "N.B.".
-2021-11-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't hardcode "Commentary" section in checkdoc
@@ -96197,14 +96197,14 @@
variable instead of hardcoding what is inserted for the
"Commentary" section.
-2021-11-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Use correct compiler options for building with libwebp
* src/Makefile.in (WEBP_CFLAGS): Define.
(EMACS_CFLAGS): Use it. (Bug#51611)
-2021-11-05 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve `file-has-changed-p'
@@ -96214,7 +96214,7 @@
* lisp/files.el (file-has-changed-p): Suppress remote file caches.
Handle the case FILE does not exists.
-2021-11-05 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
rsvg_handle_get_dimensions is deprecated in 2.52.0
@@ -96231,7 +96231,7 @@
(svg_load_image): Use rsvg_handle_get_dimensions only if librsvg <
2.46.0, since it isn’t needed if >= 2.46.0.
-2021-11-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow 'pp' to limit the line widths
@@ -96241,7 +96241,7 @@
(pp--insert-lisp): Tweak whether to use standard-output or not.
(pp--max-width): New function.
-2021-11-05 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Enhance 'highlight-confusing-reorderings'
@@ -96252,7 +96252,7 @@
the text was highlighted. Allow to remove the highlighting by
invoking the command with a prefix argument.
-2021-11-05 Carlos Pita <carlosjosepita@gmail.com>
+2023-04-15 Carlos Pita <carlosjosepita@gmail.com>
Match dummy output even with non-default rl config
@@ -96260,14 +96260,14 @@
(python-shell-completion-native-get-completions): Match dummy output
even when readline is configured in non-default ways. (Bug#51010)
-2021-11-04 Tino Calancha <tino.calancha@gmail.com>
+2023-04-15 Tino Calancha <tino.calancha@gmail.com>
Fix (un)compressing directories in Tramp
* lisp/net/tramp-sh.el (tramp-sh-handle-dired-compress-file):
Check whether the file is a directory (bug#50581).
-2021-11-04 Matthias Meulien <orontee@gmail.com>
+2023-04-15 Matthias Meulien <orontee@gmail.com>
Fix 'diff-font-lock-prettify' breaking display of outline headers
@@ -96279,7 +96279,7 @@
* lisp/vc/vc.el (vc-diff-internal): Fix diff mode being set before
content inserted (bug#51016).
-2021-11-04 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Fix buffer overflow in ns_compute_glyph_string_overhangs
@@ -96292,7 +96292,7 @@
it the entire glyph string; for composite glyphs, call
`composition_gstring_width'. (Bug#51105)
-2021-11-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Delete commented out code
@@ -96300,7 +96300,7 @@
it is not clear what, if anything, it is supposed to do. If anyone
wants to work on this, they are better off starting from scratch.
-2021-11-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: New defgroup and section for gallery support
@@ -96322,7 +96322,7 @@
Make the old names obsolete function aliases.
(image-dired-add-to-tag-file-list): Make unused function obsolete.
-2021-11-04 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
New emacsclient option to either create or reuse an existing frame.
@@ -96337,34 +96337,34 @@
(print_help_and_exit): Document the new option.
(main): Use the new option.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Try harder to keep lines short in pp-emacs-lisp-code
* lisp/emacs-lisp/pp.el (pp--insert): Try harder to keep lines short.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak multi-line expressions in pp--format-function
* lisp/emacs-lisp/pp.el (pp--format-function): Fix up multi-line
expressions.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up some list folding in pp-emacs-lisp-code
* lisp/emacs-lisp/pp.el (pp--insert-lisp, pp--format-list)
(pp--insert): Touch up list folding.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Indent lambdas/closures better
* lisp/emacs-lisp/pp.el (pp--format-function): Indent lambdas and
closures better.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make lambda/closure help buttons format as Emacs Lisp
@@ -96374,7 +96374,7 @@
* lisp/emacs-lisp/pp.el (pp-display-expression): Allow formatting
as Emacs Lisp.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new basic Emacs Lisp code formatting function
@@ -96384,14 +96384,14 @@
(pp--format-function, pp--format-definition, pp--insert-binding)
(pp--insert, pp--indent-buffer): New helper functions.
-2021-11-04 Stephen Berman <stephen.berman@gmx.net>
+2023-04-15 Stephen Berman <stephen.berman@gmx.net>
Fix allout point movement problem
* lisp/allout.el (allout-next-visible-heading): Ensure that we
move to the next physical line (bug#51530).
-2021-11-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Better detection of potentially malicious bidi text
@@ -96415,48 +96415,48 @@
* etc/tutorials/TUTORIAL.he: Fix embeddings with incorrect
directions.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
font-lock-type-face doc string improvement
* lisp/font-lock.el (font-lock-type-face): Fix grammar in doc
string (bug#51574).
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Improve defface error message
* lisp/cus-face.el (custom-declare-face): Improve the error
message when there's a missing doc string (bug#51576).
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't have `M-x term' call `term-mode' twice
* lisp/term.el (term): Don't call `term-mode' twice (bug#51589).
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document that `unspecified' isn't valid in defface
* doc/lispref/display.texi (Face Attributes): Mention that
unspecified isn't valid in defface (bug#51595).
-2021-11-04 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Reset mailcap entries only when mailcap files are read again
* lisp/net/mailcap.el (mailcap-parse-mailcaps): Move the clear and
load defaults operations at their appropriate place. Fixes bug#51600.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix return value of python-nav-end-of-defun
* lisp/progmodes/python.el (python-nav-end-of-defun): Return
non-nil if in a def/class, as the doc string implies (bug#51601).
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rename button-buttonize to buttonize
@@ -96466,7 +96466,7 @@
* doc/lispref/display.texi (Making Buttons): Rename
button-buttonize to just buttonize and adjust callers.
-2021-11-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Revert "* lisp/progmodes/xref.el (xref-pop-marker-stack): Don't obsolete."
@@ -96477,7 +96477,7 @@
[1] https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg01870.html
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a Gnus command to emojize symbols
@@ -96487,21 +96487,21 @@
(gnus-treatment-function-alist): Map.
(article-emojize-symbols): New command and keystroke.
-2021-11-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option mml-attach-file-at-the-end
* lisp/gnus/mml.el (mml-attach-file-at-the-end): New user option.
(mml-attach-file): Use it.
-2021-11-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Set default-directory in thumbnail buffer
* lisp/image-dired.el (image-dired-show-all-from-dir): Set
default-directory. This fixes e.g. 'dired-jump'.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make image-dired-display-image-mode inherit from image-mode
@@ -96534,7 +96534,7 @@
* doc/emacs/dired.texi (Image-Dired): Update documentation for the
above change.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve theming of image-dired-thumb-mark
@@ -96546,7 +96546,7 @@
* etc/themes/whiteboard-theme.el (whiteboard): Add definitions for
the 'image-dired-thumb-flagged' face.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Add face for flagged files
@@ -96560,14 +96560,14 @@
(image-dired-thumb-mark): Improve definition with color classes.
(image-dired-thumb-visible-marks): Doc fix.
-2021-11-03 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Fix declaration syntax of 'image-dired--on-file-in-dired-buffer'.
* lisp/image-dired.el (image-dired--on-file-in-dired-buffer): Fix
declaration syntax.
-2021-11-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix encoding issues in gitmerge.el, make it work on MS-Windows
@@ -96582,7 +96582,7 @@
temporary file.
(gitmerge): Clarify the description of the "R" flag.
-2021-11-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -96594,14 +96594,14 @@
6ab6b2f Clarify build directory structure
9d61620 * src/pdumper.c (dump_do_dump_relocation): Add sanity check.
-2021-11-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix widgets in Outline mode on TTY frames
* lisp/outline.el (outline--valid-emoji-p): Don't try to probe
support for display of Emoji characters on TTY frames. (Bug#51578)
-2021-11-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
A better fix for bug#51583
@@ -96611,7 +96611,7 @@
(globals_of_w32fns): Do attempt to load dwmapi.dll and uxtheme.dll
in the Cygwin w32 build.
-2021-11-03 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix the Cygwin w32 build broken by adding the dark theme support
@@ -96620,7 +96620,7 @@
(globals_of_w32fns): Don't attempt to load dwmapi.dll and
uxtheme.dll in the Cygwin w32 build. (Bug#51583)
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve theming of image-dired-thumb-mark
@@ -96632,11 +96632,11 @@
* etc/themes/whiteboard-theme.el (whiteboard): Add definitions for
the 'image-dired-thumb-mark' face.
-2021-11-03 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+2023-04-15 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* src/image.c: Fix building with giflib 4.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Improve marking behavior
@@ -96648,7 +96648,7 @@
(image-dired-thumbnail-mode-map): Bind 'image-dired-unmark-all-marks'
to "U".
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Cleanup of four commands
@@ -96662,7 +96662,7 @@
(image-dired-modify-mark-on-thumb-original-file): Make obsolete in
favor of above new macro.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Support wrap-around in display-next-thumbnail-original
@@ -96676,7 +96676,7 @@
reaching the last image, continue from the first one. Add optional
prefix argument to move more than one image at a time.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Improve menus
@@ -96686,14 +96686,14 @@
Make toggle entries into checkboxes. Add separators. Remove
obsoleted commands accidentally added back in merge.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Signal error if file is missing on display
* lisp/image-dired.el (image-dired-display-image): Signal error if
file is missing.
-2021-11-03 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Move menu definitions to top level
@@ -96705,24 +96705,24 @@
(image-dired-minor-mode-menu): ...to these new top level
definitions.
-2021-11-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/epg.el (epg-key): Use explicit copier with proper prefix
(epg--filter-revoked-keys): Adjust sole use.
-2021-11-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* etc/PROBLEMS: Move some entries to the legacy section.
-2021-11-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove info for Emacs 20 users from etc/PROBLEMS
* etc/PROBLEMS: Remove information for users upgrading from Emacs
20 or older.
-2021-11-02 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Optimise (cond) => nil at source level
@@ -96732,7 +96732,7 @@
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases):
Add test cases.
-2021-11-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use current face foreground for SVG icons in customize
@@ -96742,13 +96742,13 @@
* etc/images/up.svg: Don't define foreground; this means they will use
the foreground of the currently defined face instead. (Bug#51556)
-2021-11-02 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
bc58bea * lisp/progmodes/prog-mode.el (prog-context-menu): Use text-m...
-2021-11-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Support inserting images in tabulated-list-mode columns
@@ -96758,14 +96758,14 @@
* doc/lispref/modes.texi (Tabulated List Mode): Update documentation
to reflect above change.
-2021-11-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert overlay-related changes in `C-h b'
* lisp/help.el (describe-bindings): Revert overlay-related changes
-- these are already output (normally) by `describe-buffer-bindings'.
-2021-11-02 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make lambdas/closures/byte code in `C-h b' clickable
@@ -96774,7 +96774,7 @@
* lisp/emacs-lisp/pp.el (pp-display-expression): Autoload.
-2021-11-02 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Improve file-has-changed-p
@@ -96783,7 +96783,7 @@
* lisp/net/mailcap.el: Add a second argument to the call to
file-has-changed-p (bug#51523).
-2021-11-02 dickmao <dick.r.chiang@gmail.com>
+2023-04-15 dickmao <dick.r.chiang@gmail.com>
Update keymap-tests after recent changes
@@ -96793,25 +96793,25 @@
(help--describe-vector/bug-9293-same-command-does-not-shadow): Update
(bug#51567).
-2021-11-02 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/outline.el: Fix compilation of `outline--make-button`
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mouse-1 on `C-h b' buttons
* lisp/outline.el (outline--make-button-overlay): Make mouse-1
work on the buttons.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-h b' also describe overlay keymaps
* lisp/help.el (describe-bindings): Also describe overlay key
bindings.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a better test for emojis
@@ -96819,7 +96819,7 @@
(outline--valid-emoji-p): New predicates.
(outline--make-button, outline-minor-mode-buttons): Use them.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-h b' indentation more regular (and avoid continuation lines)
@@ -96829,7 +96829,7 @@
per-block basis.
(describe-map--fill-columns): Helper function.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix rendering of key translations
@@ -96838,7 +96838,7 @@
translations.
(describe-map): Make optional parameters optional.
-2021-11-01 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve documentation of 'file-has-changed-p'
@@ -96846,7 +96846,7 @@
* doc/lispref/files.texi (File Attributes): Improve wording of the
documentation of 'file-has-changed-p'.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't output prefix keys in `C-h b', and output more data on objects
@@ -96854,14 +96854,14 @@
[closure/lambda/byte-code] for those types of objects.
(describe-map): Don't output prefix keys.
-2021-11-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Exclude emacs-module-tests.el on emba
* test/infra/gitlab-ci.yml (test-native-comp-speed0):
Exclude emacs-module-tests.el.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add buttons to definition in help--describe-command
@@ -96870,11 +96870,11 @@
* lisp/help.el (help--describe-command): Make buttons out of the
definitions.
-2021-11-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tag up last NEWS change
-2021-11-01 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Read mailcaps again only when necessary
@@ -96889,54 +96889,54 @@
only when at least one of the mailcap files has changed. Fixes
bug#51523.
-2021-11-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge from origin/emacs-28
84cd95e04c Fix bug#51369
-2021-11-01 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Merge from origin/emacs-28
ba4daf2214 Adapt arguments of `tramp-make-tramp-file-name'
a34466731b Fix typo in describe-map-tree doc string
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further xref fix-ups after keymap help changes
* lisp/help-mode.el (help-make-xrefs): Get continuation lines right.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix infloop in help-make-xrefs in certain keymaps
* lisp/help-mode.el (help-make-xrefs): Adjust xref symbol finding
after changes to how keymaps are output.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make xref symbol marking work again after describe-keymap changes
* lisp/help-mode.el (help-make-xrefs): Adjust xref symbol finding
after changes to how keymaps are output.
-2021-10-31 Aaron Jensen <aaronjensen@gmail.com>
+2023-04-15 Aaron Jensen <aaronjensen@gmail.com>
* lisp/icomplete.el (icomplete-exhibit): Remove workaround
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix failing help-fns tests after layout changes in `C-h b'
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Say "Key/Binding" instead of "key/binding" in `C-h b'
* lisp/help.el (describe-map-tree): Capitalize the heading.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't print empty keymaps in `C-h b'
@@ -96944,7 +96944,7 @@
keymap is empty (bug#22334). Tweak the look to compress it more
vertically.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Include the major mode name in the `C-h b' output
@@ -96955,28 +96955,28 @@
name for symmetry with the minor modes (and because it's easy to
forget).
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't make key binding face wider than the norm
* lisp/faces.el (help-key-binding): Don't make the chars wider
than normally, because that makes `C-h b' lining-up logic fail.
-2021-10-31 Ken Brown <kbrown@cornell.edu>
+2023-04-15 Ken Brown <kbrown@cornell.edu>
Merge from origin/emacs-28
6ba4e3b78c Drop support for native compilation on 32-bit Cygwin
7e15ee5bc9 ; * doc/emacs/help.texi (Help Mode): Improve indexing.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Re-fix the new mouse event logic in outline
* lisp/outline.el (outline-show-subtree, outline-hide-subtree):
Really fix the mouse logic.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make TAB work on the outline buttons
@@ -96984,20 +96984,20 @@
(outline--insert-open-button): Make TAB work to toggle on the
buttons, too.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clarify describe-bindings code slightly
* lisp/help.el (describe-bindings): Clarify code slightly.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix new mouse handling in outline
* lisp/outline.el (outline-show-subtree, outline-hide-subtree):
Don't set point if we have no event.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add buttons to outlining and tweak `C-h b' buffer
@@ -97011,14 +97011,14 @@
(outline--insert-open-button, outline--insert-close-button)
(outline--fix-up-all-buttons): New functions.
-2021-10-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Improve the "Help Mode" section of the Emacs manual
* doc/emacs/help.texi (Help Mode): Reorganize and improve wording
of the recent change. Add index entries.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add mode tagging to previously added help commands
@@ -97026,7 +97026,7 @@
binding.
(help-goto-previous-page): Ditto.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add 'n'/'p' key bindings in *Help* buffers
@@ -97034,7 +97034,7 @@
binding.
(help-goto-previous-page): Ditto.
-2021-10-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
@@ -97043,13 +97043,13 @@
610680a Fix rendering of title-less <abbr> tags in shr
2ba4ccf ; * lisp/files.el (make-nearby-temp-file): Doc fix.
-2021-10-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
5e05be5 Fix localized display of date and time in the NS port
-2021-10-31 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt emba control files
@@ -97060,28 +97060,28 @@
(.job-template): Comment test prints.
(test-all-inotify): Exclude emacs-module-tests.el.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add highlighting of the F2008 keyword "impure"
* lisp/progmodes/f90.el (f90-keywords-re): Highlight F2008 keyword
"impure" (bug#51529).
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function 'font-has-char-p'
* src/font.c (Ffont_has_char_p): New function.
(Ffont_get_glyphs): Link to the new function from the doc string.
-2021-10-31 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add test for Bug#51527
* test/src/keymap-tests.el (keymap-lookup-key/menu-non-symbol):
New test.
-2021-10-31 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
eieio-core.el: Make slot-value work on defstructs
@@ -97103,34 +97103,34 @@
* test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
(eieio-test-defstruct-slot-value): New test.
-2021-10-31 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Expand the kbd-valid-p doc string
* lisp/subr.el (kbd-valid-p): Expand the doc string.
-2021-10-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Avoid signaling errors in lookup-key
* src/keymap.c (Flookup_key): Handle KEY vectors where not all
components are symbols. (Bug#51527
-2021-10-31 Alan Third <alan@idiocy.org>
+2023-04-15 Alan Third <alan@idiocy.org>
Ensure help echoes only occur once on NS
* src/nsterm.m ([EmacsView windowDidResignKey:]): Reset
any_help_event_p as it is never reset otherwise.
-2021-10-31 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
335a660b4b Fix display glitches with side-by-side windows on TTY frames
4a96f32def Avoid replacing common prefix with ellipsis
-2021-10-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove workaround for fixed Bug#6581 from ert
@@ -97150,7 +97150,7 @@
(ert-test-equal-including-properties): Merge test into above
expanded test.
-2021-10-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fix bug with string values in equal-including-properties
@@ -97170,7 +97170,7 @@
* lisp/emacs-lisp/ert.el (ert-equal-including-properties): Add
FIXME that this should be removed.
-2021-10-30 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use primes for hash table bucket sizes
@@ -97178,7 +97178,7 @@
* src/image.c (XPM_COLOR_CACHE_BUCKETS): Use primes for hash table
bucket sizes.
-2021-10-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Move the documentation of 'string-glyph-split' to proper place
@@ -97186,21 +97186,21 @@
description of 'string-glyph-split' from here...
* doc/lispref/display.texi (Size of Displayed Text): ...to here.
-2021-10-30 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Expand connection-local variables example in doc/emacs/custom.texi
* doc/emacs/custom.texi (Per-Connection Local Variables): Expand the
example to include setting 'system-uses-terminfo'.
-2021-10-30 dalanicolai <dalanicolai@gmail.com>
+2023-04-15 dalanicolai <dalanicolai@gmail.com>
Make list-colors-display sort list passed as argument
* lisp/facemenu.el (list-colors-display): Don't skip sorting list of
colors if it was passed as an argument. (Bug#51371)
-2021-10-30 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function string-glyph-split
@@ -97209,7 +97209,7 @@
* lisp/emacs-lisp/subr-x.el (string-glyph-split): New function.
-2021-10-30 Kévin Le Gouguec <kevin.legouguec@gmail.com>
+2023-04-15 Kévin Le Gouguec <kevin.legouguec@gmail.com>
Avoid fonts with incomplete coverage of MATHEMATICAL chars
@@ -97230,7 +97230,7 @@
[2] <878s02u5m6.fsf@gmail.com>
https://lists.gnu.org/archive/html/help-gnu-emacs/2021-09/msg00150.html
-2021-10-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor fixes for previous change
@@ -97244,7 +97244,7 @@
* doc/emacs/msdos.texi (Windows Misc): Fix wording and markup in
the last change.
-2021-10-30 Vince Salvino <salvino@coderedcorp.com>
+2023-04-15 Vince Salvino <salvino@coderedcorp.com>
Support system dark mode on Windows 10 version 1809 and higher
@@ -97262,18 +97262,18 @@
* etc/NEWS:
* doc/emacs/msdos.texi (Windows Misc): Document the new feature.
-2021-10-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Merge from origin/emacs-28
20ebd91a73 Improve documentation of string truncation APIs
3f998a3fc8 * lisp/textmodes/css-mode.el: Fix typo. (Bug#51488)
-2021-10-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/image.c: Fix building with giflib on MS-Windows.
-2021-10-29 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -97281,7 +97281,7 @@
91e7df281e Move lisp/shorthands.el to lisp/emacs-lisp/shorthands.el
00103154e0 Some Tramp changes, mainly in tramp-tests.el
-2021-10-29 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -97291,7 +97291,7 @@
5dbb04e0eb Make `C-u RET' work again
d72fefdeab Fix typos in the manual and in a comment
-2021-10-29 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -97300,7 +97300,7 @@
# Conflicts:
# lisp/image-dired.el
-2021-10-29 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -97311,7 +97311,7 @@
# Conflicts:
# etc/NEWS
-2021-10-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer giflib 5 macros to magic numbers
@@ -97321,7 +97321,7 @@
(gif_load): Replace magic numbers with giflib 5 macros for disposal
and transparency_color_index.
-2021-10-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't parse GCB block by hand with giflib 5 or later
@@ -97329,7 +97329,7 @@
DGifSavedExtensionToGCB instead of parsing the Graphic Control
Extension block by hand.
-2021-10-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make message/rfc822 on buttons work again in Gnus
@@ -97339,32 +97339,32 @@
(gnus-mime--inline-message): Factor out into own function.
(gnus-mime-display-single): From here.
-2021-10-29 Morgan J. Smith <Morgan.J.Smith@outlook.com>
+2023-04-15 Morgan J. Smith <Morgan.J.Smith@outlook.com>
Add some gnus-short-group-name tests
* test/lisp/gnus/gnus-group-tests.el (gnus-short-group-name): Add
some gnus-short-group-name tests (bug#51450).
-2021-10-29 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Shorten Gnus groups with [foo] in the name better
* lisp/gnus/gnus.el (gnus-short-group-name): Shorten groups with
[] in the names better (bug#51450).
-2021-10-29 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/image.c (gif_load): Minor simplification.
-2021-10-29 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix bootstrapping broken by a recent change
* src/keymap.c (Flookup_key): Avoid crashes during bootstrap when
uni-lowercase.el is not available yet.
-2021-10-28 akater <nuclearspace@gmail.com>
+2023-04-15 akater <nuclearspace@gmail.com>
Indent cl-flet-like forms correctly in incomplete expressions
@@ -97374,7 +97374,7 @@
* test/lisp/progmodes/elisp-mode-resources/flet.erts:
Add tests for incomplete sexps (bug#9622).
-2021-10-28 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Be more allowing when looking for menu-bar items
@@ -97390,7 +97390,7 @@
(keymap-lookup-keymap/with-spaces-multibyte)
(keymap-lookup-keymap/with-spaces-multibyte-lang-env): New tests.
-2021-10-28 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Put missing c-keep-region-active's into the source code
@@ -97398,7 +97398,7 @@
c-keep-region-active when (< arg 0).
(c-forward-conditional): Insert c-keep-region-active.
-2021-10-28 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Make comint-term-environment connection-aware (bug#51426)
@@ -97409,7 +97409,7 @@
* etc/NEWS: Announce the above change.
-2021-10-28 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Ignore more events in input-pending-p
@@ -97420,7 +97420,7 @@
(syms_of_keyboard) <input-pending-p-filter-events>: New variable.
Patch from Aaron Jensen <aaronjensen@gmail.com>.
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Do interactive mode tagging in image-dired.el
@@ -97436,7 +97436,7 @@
(image-dired-display-previous-thumbnail-original): Do interactive
tagging; these will only work in 'image-dired-thumbnail-mode'.
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Make thumbnail rotation commands obsolete
@@ -97453,14 +97453,14 @@
for above obsolete commands. The rotate right keybinding had already
been made ineffective by the local keymap added by 'insert-image'.
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Don't show thumbnails if there are no image files
* lisp/image-dired.el (image-dired-show-all-from-dir): Don't show
thumbnail buffer if there are no image files.
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Increase image-dired-show-all-from-dir-max-files to 500
@@ -97478,14 +97478,14 @@
variable, as it is no longer important enough to deserve the space.
* etc/NEWS: Announce the above change.
-2021-10-27 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
(string-pixel-width): Rewrite to avoid side effects
* src/xdisp.c (Fwindow_text_pixel_size): Allow `window` to be a buffer.
* lisp/emacs-lisp/subr-x.el (string-pixel-width): Simplify accordingly.
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Revert "Add tentative key bindings for the three emoji commands"
@@ -97493,11 +97493,11 @@
Applied to the wrong branch.
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add tentative key bindings for the three emoji commands
-2021-10-27 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -97515,7 +97515,7 @@
# Conflicts:
# etc/NEWS
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify string-pixel-width
@@ -97523,14 +97523,14 @@
save-window-excursion saves dedication status (and the code was
buggy).
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix parsing of erts files
* lisp/emacs-lisp/ert.el (ert-test-erts-file): Fix progress
through a test file (bug#51409).
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Harden ert-resource-directory against errors
@@ -97538,7 +97538,7 @@
resilient -- don't bug out if called from a file that's not
visiting a directory.
-2021-10-27 Jim Porter <jporterbugs@gmail.com>
+2023-04-15 Jim Porter <jporterbugs@gmail.com>
Be more efficient when checking for a matching client in server.el
@@ -97547,7 +97547,7 @@
(server-kill-emacs-query-function): Use 'seq-some' to determine if
another live client exists (bug#51420).
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function 'string-pixel-width'
@@ -97556,7 +97556,7 @@
* lisp/emacs-lisp/subr-x.el (string-pixel-width): New function.
-2021-10-27 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Allow matching non-.git gitlab and gitea URLs in bug-reference
@@ -97564,7 +97564,7 @@
(bug-reference--build-forge-setup-entry): Allow matching non-.git
gitlab and gitea URLs, with and without slashes (bug#51316).
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Always start the SIGALRM atimers
@@ -97572,7 +97572,7 @@
even if we're using timerfd (bug#19776). See long, long
discussion in the bug report for why this is necessary.
-2021-10-27 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Redisplay after changing to the hourglass mouse pointer
@@ -97580,7 +97580,7 @@
the hourglass pointer -- otherwise it won't be displayed until a
keyboard/mouse event arrives (bug#19776).
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Set line-spacing to match horizontal space
@@ -97588,7 +97588,7 @@
'line-spacing' to approximately match horizontal space. This makes
the thumbnail view look better.
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Add support for bookmark.el
@@ -97597,13 +97597,13 @@
(image-dired-bookmark-name, image-dired-bookmark-make-record)
(image-dired-bookmark-jump): New defuns.
-2021-10-27 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add test for file-name-base
* test/lisp/files-tests.el (files-tests-file-name-base): New test.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Improve mouse behaviour
@@ -97614,7 +97614,7 @@
(image-dired-mouse-select-thumbnail): Move point to closest image
after clicking in buffer.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Don't ding at beginning or end of buffer
@@ -97624,7 +97624,7 @@
when moving past first or last image; instead show a message, wait a
second and then show image properties.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Add new commands for beginning/end of buffer
@@ -97633,21 +97633,21 @@
(image-dired-thumbnail-mode-map): Bind new beginning of buffer command
to '<' and 'M-<', and end of buffer command to '>' and 'M->'.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add new function image-at-point-p
* lisp/image.el (image-at-point-p): New defun.
* doc/lispref/display.texi (Showing Images): Document above new defun.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Use an evenly spaced grid for thumbnails
* lisp/image-dired.el (image-dired-line-up): Use an evenly spaced
grid for thumbnails, even if image sizes differ.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Use example.org in examples
@@ -97655,7 +97655,7 @@
(image-dired-gallery-thumb-image-root-url): Use example.org to be
RFC 2606 compliant.
-2021-10-26 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Increase number of asynch thumbnail generation jobs
@@ -97671,7 +97671,7 @@
(image-dired-create-thumb-1, image-dired-display-thumbs): Display time
spent on thumbnail generation if 'image-dired-debug' is non-nil.
-2021-10-26 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: minor amendments more accurately to handle virtual semicolons, etc.
@@ -97680,21 +97680,21 @@
(c-guess-basic-syntax): CASE 5D - Use c-crosses-statement-barrier-p to check
whether we've gone back past a virtual semicolon.
-2021-10-26 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
* lisp/progmodes/cc-engine.el (c-fontify-new-found-type): Declare near BO File
-2021-10-26 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/gitlab-ci.yml (build-image-inotify): Increase timeout.
(test-native-comp-speed0): Adapt make_params.
-2021-10-26 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
* lisp/progmodes/xref.el (xref-pop-marker-stack): Don't obsolete.
-2021-10-25 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Rename `xref-pop-marker-stack` to `xref-go-back` (bug#38797)
@@ -97711,7 +97711,7 @@
* etc/NEWS:
Use the new name.
-2021-10-25 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
IMAP search should only use charset utf-8 with multibyte strings
@@ -97725,7 +97725,7 @@
we're only doing the literal+ dance for multibyte strings (multibyte
strings will have had newlines inserted in an earlier step).
-2021-10-25 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -97742,25 +97742,25 @@
56caf1c9b8 Use restrictive umask when creating image-dired data
3b5de7f991 ; lisp/transient.el: Revert some misguided stylistic fixes.
-2021-10-25 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
817c929eda Doc fix for concat
3eca2ad2a1 * lisp/image-dired.el (image-dired-external-viewer): Suppo...
-2021-10-25 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
* doc/misc/cc-mode.texi (Font Locking): Fix menu.
-2021-10-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add the "always" zsh builtin to zsh mode
* lisp/progmodes/sh-script.el (sh-builtins): Add the "always" zsh
keyword (bug#51387).
-2021-10-25 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Add xref forward history (bug#38797)
@@ -97783,14 +97783,14 @@
* doc/emacs/maintaining.texi (Looking Up Identifiers): Document.
* etc/NEWS: Announce.
-2021-10-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow viewing .heic images via image-convert
* lisp/files.el (auto-mode-alist): Support the Apple .heic/HEIF
image format (bug#51381).
-2021-10-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change the with-delayed-message syntax to allow future extensibility
@@ -97800,7 +97800,7 @@
* lisp/net/eww.el (eww-display-html): Use it.
-2021-10-25 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Heed the EMACS_IGNORE_TIMERFD environment variable
@@ -97808,7 +97808,7 @@
environment so that the EMACS_IGNORE_TIMERFD environment variable
is actually heeded.
-2021-10-25 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Allow 'display-buffer' to set up body size of chosen window (Bug#17065)
@@ -97821,7 +97821,7 @@
action alist entries.
* etc/NEWS: Mention new values of some action alist entries.
-2021-10-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New function xdg-state-home
@@ -97829,7 +97829,7 @@
$XDG_STATE_HOME according to the XDG Base Directory Specification
version 0.8 (08th May 2021).
-2021-10-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Improve XDG compliance
@@ -97837,7 +97837,7 @@
(image-dired-main-image-directory): Prefer XDG_PICTURES_HOME.
(image-dired-thumb-name): Simplify by using 'xdg-cache-home'.
-2021-10-25 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Double value of image-dired-show-all-from-dir-max-files
@@ -97846,7 +97846,7 @@
be even higher, as the thumbnails are generated asynchronously and are
small by default.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
image-dired: Add support for GraphicsMagick
@@ -97858,7 +97858,7 @@
(image-dired-cmd-rotate-thumbnail-options): Add support for the
GraphicsMagick command line tool ("gm convert", "gm mogrify").
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix issues with type casting in delayed message functions
@@ -97866,7 +97866,7 @@
(with_delayed_message_cancel, Ffuncall_with_delayed_message): Fix
some type confusion.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Support new Thumbnail Managing Standard sizes in image-dired
@@ -97878,7 +97878,7 @@
thumbnail sizes mandated by new version of the Thumbnail Managing
Standard (December 2020, Version 0.9.0).
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use SHA1 when creating thumbnail file name
@@ -97886,20 +97886,20 @@
Use SHA1 for hashing when creating file name. SHA1 is slightly faster
than MD5, and has a few more bits.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove debugging in with_delayed_message_display
* src/eval.c (with_delayed_message_display): Remove debugging.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Display a message if HMTL rendering takes a long time
* lisp/net/eww.el (eww-display-html): Display a message if HTML
rendering takes a long time (bug#19776).
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new macro `with-delayed-message'
@@ -97910,7 +97910,7 @@
(with_delayed_message_cancel): Helper functions.
(Ffuncall_with_delayed_message): New function (bug#19776).
-2021-10-24 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fontify "found types" which are recognized after being first scanned
@@ -97954,14 +97954,14 @@
(c-type-finder-repeat-time, c-type-finder-chunk-size): New customizable
options.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mouse buttons in dired--make-directory-clickable
* lisp/dired.el (dired--make-directory-clickable): Adjust mouse
clicks to conform to our standards.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Don't unhide first thread if entering without selecting article
@@ -97971,14 +97971,14 @@
(gnus-summary--goto-and-possibly-unhide): New function -- don't
unhide the first thread unless necessary (bug#51344).
-2021-10-24 Sharaf Zaman <shzam@sdf.org> (tiny change)
+2023-04-15 Sharaf Zaman <shzam@sdf.org> (tiny change)
Fix a memory leak in pgtk_draw_fringe_bitmap
* src/pgtkterm.c (pgtk_draw_fringe_bitmap): we had an unbalanced
cairo_save/restore.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Improve documentation of image-dired thumbnails
@@ -97988,7 +97988,7 @@
* lisp/image-dired.el (image-dired-thumbnail-storage): Improve
docstring.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add support for pngquant to image-dired
@@ -97997,7 +97997,7 @@
Prefer, in this order: pngquant, pngnq-s9, pngnq-s for reasons of
speed and how actively maintained the projects seem to be.
-2021-10-24 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix compilation errors with MinGW64 GCC 11
@@ -98012,18 +98012,18 @@
* nt/Makefile.in (BASE_CFLAGS): Add -I switches to pick up
config.h and lib/attribute.h.
-2021-10-24 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Include <config.h> first in MS-Windows source
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix define-erc-response-handler indentation
* lisp/erc/erc-backend.el (define-erc-response-handler): Add
proper indentation.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add new option help-link-key-to-documentation
@@ -98032,7 +98032,7 @@
are bound to, if the above new option is non-nil. (Bug#8951)
* etc/NEWS: Announce the new option.
-2021-10-24 William Xu <william.xwl@gmail.com>
+2023-04-15 William Xu <william.xwl@gmail.com>
Make dired directory components clickable
@@ -98043,7 +98043,7 @@
* lisp/dired.el (dired--make-directory-clickable): New function
(bug#21973).
-2021-10-24 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Don't use obsolete variable `find-tag-marker-ring`
@@ -98052,20 +98052,20 @@
Call `xref-push-marker-stack` instead of manipulating the obsolete
variable `find-tag-marker-ring`.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak bug-reference-tests
* test/lisp/progmodes/bug-reference-tests.el: Tweak tests a bit.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clean up duplicated setting in scheme-mode-variables
* lisp/progmodes/scheme.el (scheme-mode-variables): Remove
repeated setting.
-2021-10-24 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow matching non-.git URLs in bug-reference
@@ -98073,14 +98073,14 @@
(bug-reference--build-forge-setup-entry): Allow matching non-.git
URLs, with and without slashes (bug#51316).
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Don't hard-code image-dired thumbnail type
* lisp/image-dired.el (image-dired-insert-thumbnail): Detect thumbnail
image type instead of hard-coding it.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Expand tests for image-type-from-file-header
@@ -98096,7 +98096,7 @@
(image-type-from-file-header-test/xpm): New tests.
(image-type-from-file-header-test): Delete test.
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add tests for gif to src/image-tests.el
@@ -98107,7 +98107,7 @@
(image-tests-image-metadata/gif): New tests.
* test/data/image/black.gif: New file.
-2021-10-24 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -98128,7 +98128,7 @@
# Conflicts:
# etc/NEWS
-2021-10-24 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make dired-x-guess-file-name-at-point obsolete
@@ -98137,14 +98137,14 @@
(dired-x-read-filename-at-point): Use 'thing-at-point' instead of
above obsolete function.
-2021-10-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Check for image library in image-dired-tests.el
* test/lisp/image-dired-tests.el
(image-dired-tests-get-exif-file-name): Check for jpeg library.
-2021-10-23 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Support :company-deprecated completion property
@@ -98152,18 +98152,18 @@
New function.
(elisp-completion-at-point): Use it.
-2021-10-23 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/gitlab-ci.yml (variables, default): Increase timeout to 4 hours.
-2021-10-23 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
Revert "CC Mode: Fontify "found types" which are recognized after being ..."
This reverts commit 51719617eb19833056618ebac403cdcaf711551a. The commit
caused a hang at start-up with a big desktop.
-2021-10-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Partially remove exiftool dependency from image-dired.el
@@ -98180,7 +98180,7 @@
copyright fields.
* test/lisp/image-dired-tests.el: New file.
-2021-10-23 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add new function exif-field
@@ -98190,7 +98190,7 @@
* test/lisp/image/exif-tests.el (test-exif-parse)
(test-exif-parse-short): Use above new function.
-2021-10-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add links to commentary reached with finder-list-keywords
@@ -98204,11 +98204,11 @@
issue where commentaries reached via 'finder-list-keywords' did
not have links. (Bug#10814)
-2021-10-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/image.c (webp_load): Fix thinkos.
-2021-10-22 Alan Mackenzie <acm@muc.de>
+2023-04-15 Alan Mackenzie <acm@muc.de>
CC Mode: Fontify "found types" which are recognized after being first scanned
@@ -98248,7 +98248,7 @@
(c-type-finder-repeat-time, c-type-finder-chunk-size): New customizable
options.
-2021-10-22 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -98278,7 +98278,7 @@
# etc/NEWS
# lisp/progmodes/bug-reference.el
-2021-10-22 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt some emba parameters
@@ -98286,7 +98286,7 @@
* test/infra/gitlab-ci.yml (test-native-comp-speed0): Adapt make_params.
-2021-10-22 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix WebP support on MS-Windows
@@ -98304,7 +98304,7 @@
* nt/INSTALL.W64:
* nt/INSTALL: Update information about libwebp availability.
-2021-10-22 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add WebP image format support (Bug#51296)
@@ -98338,7 +98338,7 @@
(image-tests-image-metadata/webp): New tests.
* test/data/image/black.webp: New file.
-2021-10-22 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
In 'window-text-pixel-size' use actual mode line heights if wanted (Bug#38181)
@@ -98346,7 +98346,7 @@
when MODE_LINES wants it to take actual mode line heights into
account (Bug#38181).
-2021-10-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove redundant #' before lambda
@@ -98395,28 +98395,28 @@
* lisp/whitespace.el (whitespace-report-region): Remove redundant #'
before lambda.
-2021-10-21 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add comment on reworking a section in emacs-lisp-intro.texi
* doc/lispintro/emacs-lisp-intro.texi (Body of mark-whole-buffer):
Add comment about how one could rework this section.
-2021-10-21 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Configure Emacs on emba with debug options
* test/infra/Dockerfile.emba (emacs-base): Install gdb.
(emacs-inotify): Configure debug options.
-2021-10-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Actually fix the Pango build problem
* src/gtkutil.c (xg_weight_to_symbol): Don't break the build on
older systems.
-2021-10-21 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -98444,24 +98444,24 @@
# Conflicts:
# etc/NEWS
-2021-10-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix build on systems with older Pango versions
* src/gtkutil.c (xg_weight_to_symbol): Don't break the build on
older systems.
-2021-10-21 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix bold/black in w32_to_fc_weight
* src/w32font.c (w32_to_fc_weight): Use symbols.
-2021-10-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a comment to the Turkish casefiddle test
-2021-10-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Support the "medium" font weight
@@ -98480,7 +98480,7 @@
* src/xfaces.c (syms_of_xfaces): Add the new symbols.
-2021-10-20 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add some tests for floatfns.c
@@ -98494,13 +98494,13 @@
(floatfns-tests-fround, floatfns-tests-ftruncate)
(divide-extreme-sign): New tests.
-2021-10-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix typo in previous smerge-mode-map change
* lisp/vc/smerge-mode.el (smerge-mode-map): Fix typo (bug#51303).
-2021-10-20 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Avoid excessive specbinding in all-completions
@@ -98511,7 +98511,7 @@
regexps in completion-regexp-list without having to bind
case-fold-search.
-2021-10-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Further fixes for Turkish case changes in unibyte strings
@@ -98520,14 +98520,14 @@
(case_character_impl): Set it.
(do_casify_unibyte_string): Use it to handle Turkish correctly.
-2021-10-20 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new macro with-locale-environment
* lisp/international/mule-cmds.el (with-locale-environment): New macro.
(current-locale-environment): New variable.
-2021-10-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add some tests for fns.c
@@ -98535,14 +98535,14 @@
(fns-tests-length, fns-tests-safe-length)
(fns-tests-string-bytes): New tests.
-2021-10-19 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some XEmacs compat code from custom.el
* lisp/custom.el (deftheme, custom-declare-theme): Remove XEmacs
compat code.
-2021-10-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
xref.el: Better compatibility with outdated Emacs 28 builds
@@ -98550,18 +98550,18 @@
Ensure better compatibility with outdated Emacs 28 builds as well
(like the pgtk branch). Bump the version.
-2021-10-19 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* doc/lispref/files.texi (File Name Components): Mention GNU "path" convention
-2021-10-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make image-tests work in a no-x build
* test/src/image-tests.el: Make the tests work in a no-x build
(bug#51291).
-2021-10-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how 'align' and 'align-regexp' align text
@@ -98571,14 +98571,14 @@
"\\(\\s-*\\)" to "\\(\\s-*\\)" so that it'll make things columnar
if the user just hits RET through all the defaults.
-2021-10-19 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Improve TCO test coverage
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs--labels):
Exercise `cond` in tail position in two different ways.
-2021-10-19 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make downcasing unibyte strings in Turkish less wrong
@@ -98591,7 +98591,7 @@
(Fupcase_initials): Refer to details in `downcase'.
(syms_of_casefiddle): Define more symbols.
-2021-10-19 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -98612,32 +98612,32 @@
# Conflicts:
# etc/NEWS
-2021-10-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
* lisp/progmodes/xref.el: Bump version.
-2021-10-19 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Fix Emacs 26 support in xref.el
* lisp/progmodes/xref.el (xref--defstruct): New macro.
(xref-item, xref-match-item): Use it in definitions.
-2021-10-19 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* etc/NEWS: Move sql entry up. Fix typos.
-2021-10-19 Michael R. Mauger <michael@mauger.com>
+2023-04-15 Michael R. Mauger <michael@mauger.com>
SQL mode supports sending passwords in process
-2021-10-18 Michael R. Mauger <michael@mauger.com>
+2023-04-15 Michael R. Mauger <michael@mauger.com>
Added sql-add-connection
* lisp/progmodes/sql.el (sql-add-connection): Added.
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `lookup-key' understand the new key sequence syntax
@@ -98646,7 +98646,7 @@
(Fdefine_key):
(Flookup_key): Use it.
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Error out on invalid `define-keymap' keywords
@@ -98657,20 +98657,20 @@
keywords at compile time.
* lisp/vc/cvs-status.el (cvs-status-mode-map): Fix keyword.
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix diff-mode-shared-map
* lisp/vc/diff-mode.el (diff-mode-shared-map): Fix syntax error in
`defvar-keymap' change.
-2021-10-18 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Add tests for image.c
* test/src/image-tests.el: New file.
-2021-10-18 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -98691,7 +98691,7 @@
2d15db6e89 Fix a semantic test on some macOS machines
ac6ac76e3a Update to Org 9.5-57-g9bc3a2
-2021-10-18 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
*-watch-for-password-prompt: Use run-at-time to read password
@@ -98700,7 +98700,7 @@
* lisp/term.el (term-watch-for-password-prompt):
Use run-at-time to read a password (bug#51263).
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add some defvar indent tests
@@ -98708,14 +98708,14 @@
Add indentation rules for DEFUN's def* functions
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update elp-not-profilable
* lisp/emacs-lisp/elp.el (elp-not-profilable): Update list of
denied functions (bug#40335).
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove the "def" indentation heuristic
@@ -98723,14 +98723,14 @@
indent function calls with names that that start with "def"
specially (bug#43329).
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fontify :doc keywords as documentation
* lisp/emacs-lisp/lisp-mode.el (lisp-string-after-doc-keyword-p):
Extend to :doc, too (bug#51230).
-2021-10-18 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
New option show-paren-context-when-offscreen
@@ -98749,14 +98749,14 @@
* doc/emacs/programs.texi (Matching): Update the documentation.
* etc/NEWS: And announce the new feature.
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix possible build issue in pcvs.el and diff-mode.el
* lisp/vc/pcvs.el (easy-mmode):
* lisp/vc/diff-mode.el (easy-mmode): Require.
-2021-10-18 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Abhiseck Paira <abhiseckpaira@disroot.org>
Protesilaos Stavrou <info@protesilaos.com>
@@ -98766,13 +98766,13 @@
Fix bug#51176.
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix build issue with smerge-mode
* lisp/vc/smerge-mode.el (easy-mmode): Require.
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow :filter t in make-process to work as with set-process-filter
@@ -98782,24 +98782,24 @@
(Fmake_serial_process): Don't add the read_fd if the filter is t
(which means that we don't accept output from the filter).
-2021-10-18 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Do kbd-valid-p prefix comparisons case-sensitively
* lisp/subr.el (kbd-valid-p): Compare case-sensitively.
-2021-10-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Recommend against using uce.el
* lisp/mail/uce.el (uce-reply-to-uce): Recommend against its use on
the first invocation. (Bug#46472)
-2021-10-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* lisp/erc/erc-compat.el (format-spec): Remove redundant require.
-2021-10-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer defvar-local in MH-E
@@ -98816,14 +98816,14 @@
(mh-thread-subject-container-hash, mh-thread-duplicates)
(mh-thread-history): Prefer defvar-local.
-2021-10-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make thumbs-image-type obsolete
* lisp/thumbs.el (thumbs-image-type): Make into obsolete function
alias for 'image-type-from-file-name'. Update callers.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use define-keymap in pcvs and pcvs-defs.el
@@ -98833,7 +98833,7 @@
defined in pcvs.el and #' gives us checking) and transform from
easy-mmode-defmap to define-keymap.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert diff-mode.el from easy-mmode-defmap to define-keymap
@@ -98841,20 +98841,20 @@
(diff-minor-mode-map): Convert from easy-mmode-defmap to
defvar-keymap.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert smerge-mode.el from easy-mmode-defmap to define-keymap
* lisp/vc/smerge-mode.el (smerge-basic-map, smerge-mode-map):
Convert form easy-mmode-defmap to define-keymap.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add kbd examples to the doc string
* lisp/subr.el (kbd): Add some examples to the doc string.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reverse the edmacro-parse-keys/kbd vector/string logic
@@ -98862,31 +98862,31 @@
needed.
* lisp/subr.el (kbd): Remove the NEED-VECTOR parameter.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow <mouse-1> in kbd-valid-p
* lisp/subr.el (kbd-valid-p): Allow (kbd-valid-p "<mouse-1>").
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reinstate defvar-keymap expansion
* lisp/emacs-lisp/byte-opt.el
(byte-optimize-define-keymap--define): Make more robust.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Back out `define-keymap' optimization -- it leads to a build error
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert cvs-status-mode-map to new syntax
* lisp/vc/cvs-status.el (cvs-status-mode-map): Convert a small
keymap to the new ["..."] syntax.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Support a new ["..."] key binding syntax
@@ -98901,24 +98901,24 @@
* src/keymap.c (Fdefine_key): Understand the ["..."] syntax.
(syms_of_keymap): Define `kbd' symbols.
-2021-10-17 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -Wsuggest-attribute=malloc
Problem found with gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0 x86-64.
* src/sysstdio.h (emacs_fopen): Mark with ATTRIBUTE_MALLOC.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Rewrite kbd-valid-p to not use seq
* lisp/subr.el (kbd-valid-p): Rewrite to not use seq.
-2021-10-17 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
* src/image.c: Fix comment.
-2021-10-17 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Minor stylistic changes in last commit
@@ -98926,7 +98926,7 @@
'get_glyph_pixel_width_delta_for_mouse_face'; all callers
changed.
-2021-10-17 Po Lu <luangruo@yahoo.com>
+2023-04-15 Po Lu <luangruo@yahoo.com>
Fix minor issues with text display when cursor is in mouse face
@@ -98951,27 +98951,27 @@
mouse face because redisplay now does that for us.
* src/w32term.c (w32_set_mouse_face_gc): Likewise.
-2021-10-17 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up recent kbd simplification
* lisp/subr.el (kbd): Fix breakage with X-<foo> from previous change.
-2021-10-17 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Warn about `file-notify-rm-all-watches' side effects
* doc/lispref/os.texi (File Notifications): Warn about
`file-notify-rm-all-watches' side effects.
-2021-10-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Simplify condition in kbd
* lisp/subr.el (kbd): Simplify condition. This was discussed in:
https://lists.gnu.org/r/emacs-devel/2021-10/msg01136.html
-2021-10-16 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -98991,7 +98991,7 @@
# lisp/gnus/gnus-undo.el
# lisp/menu-bar.el
-2021-10-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Set EMACS_TEST_TIMEOUT for emba
@@ -99004,7 +99004,7 @@
(.job-template): Propagate EMACS_TEST_TIMEOUT and EMACS_TEST_VERBOSE.
(test-all-inotify): Set specific EMACS_TEST_TIMEOUT.
-2021-10-16 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new function 'kbd-valid-p'
@@ -99013,14 +99013,14 @@
* lisp/subr.el (kbd-valid-p): Document it.
-2021-10-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Fix :version of new faces in term.el
* lisp/term.el (term-faint, term-italic, term-slow-blink)
(term-fast-blink): Set proper :version.
-2021-10-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove duplicate code in edmacro-parse-keys
@@ -99032,7 +99032,7 @@
This change was discussed in:
https://lists.gnu.org/r/emacs-devel/2021-10/msg00909.html
-2021-10-16 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make kbd usable during bootstrap
@@ -99043,7 +99043,7 @@
This change was discussed in:
https://lists.gnu.org/r/emacs-devel/2021-10/msg00909.html
-2021-10-16 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Add command `file-notify-rm-all-watches'
@@ -99058,16 +99058,16 @@
Use `file-notify-rm-all-watches'.
(file-notify-test02-rm-watch): Test also `file-notify-rm-all-watches'.
-2021-10-16 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/emacs.c (standard_args): Sort --fingerprint second.
(bug#51238)
-2021-10-16 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/menu-bar.el (menu-bar-edit-menu): Expose lambdas to the compiler
-2021-10-15 Amin Bandali <bandali@gnu.org>
+2023-04-15 Amin Bandali <bandali@gnu.org>
Release ERC 5.4.1
@@ -99076,7 +99076,7 @@
* lisp/erc/erc.el (Version, erc-version): Bump to 5.4.1.
(customize-package-emacs-version-alist): Add entry for 5.4.1.
-2021-10-15 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert two `easy-mmode-defmap' usages to `defvar-keymap'
@@ -99084,7 +99084,7 @@
* lisp/vc/cvs-status.el (cvs-status-mode-map): Convert
`easy-mmode-defmap' to `defvar-keymap'.
-2021-10-15 Protesilaos Stavrou <info@protesilaos.com>
+2023-04-15 Protesilaos Stavrou <info@protesilaos.com>
Abhiseck Paira <abhiseckpaira@disroot.org>
Protesilaos Stavrou <info@protesilaos.com>
@@ -99103,7 +99103,7 @@
Fix bug#51176.
-2021-10-15 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Special-case the "Permission denied" messages
@@ -99112,7 +99112,7 @@
user sees the unreadable directory's name
(https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg01015.html).
-2021-10-15 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Calc: mend math-nth-root-float (bug#51209)
@@ -99122,14 +99122,14 @@
Fix old refactoring mistake.
* test/lisp/calc/calc-tests.el (calc-nth-root): New test.
-2021-10-15 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Further gitlab-ci.yml changes
* test/infra/gitlab-ci.yml (.job-template): Add --timeout.
(.test-template): Adapt artifact paths.
-2021-10-15 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Simplify functions dealing with preserving the size of windows
@@ -99138,21 +99138,21 @@
(window--preserve-size): Simplify. Use 'window-body-height'
etc. instead of 'window--preservable-size'.
-2021-10-14 Amin Bandali <bandali@gnu.org>
+2023-04-15 Amin Bandali <bandali@gnu.org>
* doc/misc/erc.texi: Add 'ERCVER' and 'ERCDIST'.
To mention the ERC version in the manual, and to allow for more easily
overriding the distribution description when building for GNU ELPA.
-2021-10-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use `define-keymap' in log-view.el
* lisp/vc/log-view.el (log-view-mode-map): Convert a
`easy-mmode-defmap' to `define-keymap'.
-2021-10-14 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
define-key doc string improvement
@@ -99164,7 +99164,7 @@
"a" '("foo" . ignore)
"b" '("gazonk" . ignore)))
-2021-10-14 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -99184,7 +99184,7 @@
# Conflicts:
# etc/NEWS
-2021-10-14 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Fix display of cursor in mouse-highlighted face with ':box'
@@ -99196,7 +99196,7 @@
trigger more thorough redisplay of the cursor.
(Bug#50660)
-2021-10-14 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
In 'window--display-buffer' handle nil size values as intended (Bug#51062)
@@ -99205,7 +99205,7 @@
and (window-size . nil) action alist entries are processed
as intended.
-2021-10-14 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt gitlab-ci.yml paths
@@ -99214,7 +99214,7 @@
(.gnustep-template, .filenotify-gio-template)
(.native-comp-template): Adapt paths.
-2021-10-13 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Add new argument INCLUDE-ALL to project-find-file
@@ -99224,7 +99224,7 @@
(project-find-file-in): Add new argument INCLUDE-ALL.
(https://lists.gnu.org/archive/html/emacs-devel/2021-10/msg00209.html)
-2021-10-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Double the default value of kill-ring-max
@@ -99240,14 +99240,14 @@
* doc/lispref/text.texi (Internals of Kill Ring): Doc fix to use
the new value.
-2021-10-13 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
New tests for kbd and edmacro-parse-keys
* test/lisp/edmacro-tests.el: New file.
* test/lisp/subr-tests.el (subr-test-kbd): Expand test.
-2021-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark def* macros for indentation
@@ -99322,7 +99322,7 @@
(defmath): Explicitly mark all macros that have names that start
with "def" that should indent defunly-like (bug#43329).
-2021-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mark all def* functions that should indent as `defun'
@@ -99349,14 +99349,14 @@
(define-translation-table):
(define-translation-hash-table):
-2021-10-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify gcc -Warray-parameter
* src/pdumper.h: Declare array parameter with the same signature
that the function definition uses.
-2021-10-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Pacify GCC -Wanalyzer-possible-null-dereference
@@ -99386,7 +99386,7 @@
possibly-NULL ‘block’ [CWE-690] [-Wanalyzer-possible-null-dereference]”
as per <https://cwe.mitre.org/data/definitions/690.html>.
-2021-10-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Merge from origin/emacs-28
@@ -99400,18 +99400,18 @@
56d1f42f30 Improve handling of non-character events in input methods
3fbe6fd367 ; Fix mistakes in last doc rewording about shorthands
-2021-10-13 Paul Eggert <eggert@cs.ucla.edu>
+2023-04-15 Paul Eggert <eggert@cs.ucla.edu>
Change release branch to emacs-28
* admin/notes/git-workflow:
* Makefile.in (PREFERRED_BRANCH): emacs-27 → emacs-28
-2021-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update Emacs requirement after removing compat code
-2021-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow inhibiting `not-unused' warnings
@@ -99423,7 +99423,7 @@
* lisp/emacs-lisp/cconv.el (cconv--analyze-use): Don't warn about
`not-unused'.
-2021-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix problem with multiline fontification in interactive Python
@@ -99432,7 +99432,7 @@
(`C-c SPC') inputs, remove all the preceding lines when doing
fontification (bug#47657).
-2021-10-13 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Continue to work on emba integration
@@ -99441,7 +99441,7 @@
* test/infra/gitlab-ci.yml (.job-template): Specify timeout signal.
(.job-template, .test-template): Improve wildcard.
-2021-10-13 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove some compat code from python.el
@@ -99449,11 +99449,11 @@
(python-shell-font-lock-post-command-hook): Remove Emacs 24.3 and
earlier compat code.
-2021-10-13 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
* src/pdumper.h: Include <stdio.h>.
-2021-10-13 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Improve 'display-buffer' 'temp-buffer-resize-mode' cohabitation (Bug#51062)
@@ -99480,7 +99480,7 @@
(display-buffer): Fix 'inhibit-switch-frame' part in and add
'window-size' part to doc-string.
-2021-10-12 Stephen Gildea <stepheng+emacs@gildea.com>
+2023-04-15 Stephen Gildea <stepheng+emacs@gildea.com>
MH-E: restore message about obsolete key binding
@@ -99488,7 +99488,7 @@
* lisp/mh-e/mh-folder.el: Restore "obsolete key" message for "J w" that
was lost in the conversion from gnus-define-keys to define-keymap.
-2021-10-12 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix byte-compilation warnings in nox builds
@@ -99505,7 +99505,7 @@
(mh-tool-bar-letter-buttons-init): Use it to pacify byte-compilation
warnings about image.el definitions not preloaded without-x.
-2021-10-12 Eric Abrahamsen <eric@ericabrahamsen.net>
+2023-04-15 Eric Abrahamsen <eric@ericabrahamsen.net>
Clean up nnimap buffers with dead processes
@@ -99517,13 +99517,13 @@
(nnimap-close-server): Remove process buffer from lists when closing
server.
-2021-10-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
decoded-time-add doc string addition
* lisp/calendar/time-date.el (decoded-time-add): Add a usage example.
-2021-10-12 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Adapt emba control files
@@ -99533,7 +99533,7 @@
Improve wildcard.
(.job-template): Add timeout.
-2021-10-12 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -99543,27 +99543,27 @@
cf1409db71 Don't apply shorthands to punctuation-only symbols (bug#51...
b3d0f53b29 * lisp/progmodes/python.el: Bump package version to 0.28.
-2021-10-12 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
47e09d1855 Copy parent face attributes to tab-line-tab-current instea...
d96f8b22c0 Another fix for 'ibuffer-shrink-to-fit' (Bug#7218, Bug#51029)
-2021-10-12 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
0d374b1b83 Work around GCC bug 102671
-2021-10-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix more Gnus group key bindings recently changed
* lisp/gnus/gnus-group.el (:keymap): Fix some prefix keys that
ended up in the wrong place during the keymap rewrite (bug#51136).
-2021-10-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove more MH-E compat code
@@ -99582,7 +99582,7 @@
(mh-face-to-png, mh-uncompface, mh-picon-file-contents): Remove
XEmacs and Emacs 21 and older compat code.
-2021-10-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make dbus work in a dumped Emacs
@@ -99590,7 +99590,7 @@
(after-pdump-load-hook): Put it onto the new pdump hook so that
it's run after startup (bug#37331).
-2021-10-12 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new after-pdump-load-hook variable
@@ -99601,7 +99601,7 @@
* src/pdumper.c (syms_of_pdumper): Define a symbol.
-2021-10-12 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make mh-do-in-gnu-emacs obsolete
@@ -99610,7 +99610,7 @@
(mh-acros): Require to avoid warnings.
Thanks to Lars Ingebrigtsen <larsi@gnus.org>.
-2021-10-12 Andreas Schwab <schwab@linux-m68k.org>
+2023-04-15 Andreas Schwab <schwab@linux-m68k.org>
Change --fingerprint to output to stdout
@@ -99621,7 +99621,7 @@
* src/emacs.c (main): Print fingerprint to stdout, without label.
* Makefile.in (EMACS_PDMP): Adjust.
-2021-10-12 Martin Rudalics <rudalics@gmx.at>
+2023-04-15 Martin Rudalics <rudalics@gmx.at>
Have 'while-no-input-ignore-events' handle idle timers too (Bug#49997)
@@ -99634,7 +99634,7 @@
* lisp/subr.el (while-no-input): Remove initialization of
'while-no-input-ignore-events'; do that in keyboard.c now.
-2021-10-11 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
lisp/erc/erc-{replace,imenu,dcc}: Tweak copyright format
@@ -99642,7 +99642,7 @@
* lisp/erc/erc-imenu.el:
* lisp/erc/erc-dcc.el: Massage copyright so elpa-admin.el recognizes it
-2021-10-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove last XEmacs compat code from ERC
@@ -99651,7 +99651,7 @@
remove spurious reference to XEmacs; this is needed also for
Emacs.
-2021-10-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Prefer setq-local in lisp/mh-e/*.el
@@ -99668,7 +99668,7 @@
* lisp/mh-e/mh-xface.el (mh-x-image-url-display)
(mh-x-image-url-fetch-image): Prefer setq-local.
-2021-10-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some more MH-E compat code
@@ -99711,7 +99711,7 @@
* lisp/mh-e/mh-xface.el (mh-show-xface-function, mh-show-xface):
Remove Emacs 20 compat code.
-2021-10-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove redundant calls to 'mh-do-in-gnu-emacs'
@@ -99732,7 +99732,7 @@
* lisp/mh-e/mh-tool-bar.el: Add comment explaining an issue that
stops us from making 'mh-do-in-gnu-emacs' obsolete.
-2021-10-11 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Fix merge error for elisp-mode-tests.el
@@ -99741,7 +99741,7 @@
It seems this was deleted 2021-10-01 with incomplete log message
"Add more indentation tests".
-2021-10-11 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -99752,7 +99752,7 @@
4afff515c8 Expand the full file name
36a485a1af Obsolete XEmacs compat convention in 'erc-button-press-but...
-2021-10-11 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -99779,7 +99779,7 @@
# etc/NEWS
# test/lisp/progmodes/elisp-mode-tests.el
-2021-10-11 Amin Bandali <bandali@gnu.org>
+2023-04-15 Amin Bandali <bandali@gnu.org>
Revert "Obsolete XEmacs compat convention in erc-button-press-button"
@@ -99787,7 +99787,7 @@
This should be done in 'emacs-28', which will be merged into 'master'.
-2021-10-11 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Fontify "print" and "exec" as functions in python-mode
@@ -99795,11 +99795,11 @@
Fontify "print" and "exec" as functions, which is the case in
Python 3. (Bug#43298)
-2021-10-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Mention --fingerprint in NEWS
-2021-10-11 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Make the installed pmdp file use a fingerprint
@@ -99815,14 +99815,14 @@
* src/pdumper.h: Declare dump_fingerprint.
-2021-10-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix menu display of keys when cua-mode is active
* lisp/menu-bar.el (menu-bar-edit-menu): Make the menus display
the correct keys for editing when cua-mode is active (bug#28930).
-2021-10-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change how cua-mode defined `C-x' and `C-c'
@@ -99831,7 +99831,7 @@
(cua--init-keymaps): Use them for `C-x' and `C-c' to be able to
distinguish the commands when looking them up in reverse.
-2021-10-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow :keys in menus to be computed dynamically
@@ -99840,22 +99840,22 @@
* src/keyboard.c (parse_menu_item): Allow :keys to be a function.
-2021-10-11 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Tweak how auto-fill fills after a period
* lisp/textmodes/fill.el (fill-nobreak-p): Don't break immediately
after a space after a period (bug#17321).
-2021-10-11 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* doc/misc/tramp.texi (Bug Reports): Describe, how to activate ELPA Tramp.
-2021-10-10 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mairix-el.texi menu
-2021-10-09 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Fix workspace/configuration handling when given scopeuri directory
@@ -99865,7 +99865,7 @@
causes hack-dir-local-variables-non-file-buffer to not find the
appropriate dir-local vars.
-2021-10-09 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -99887,48 +99887,48 @@
# Conflicts:
# etc/NEWS
-2021-10-09 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/progmodes/bug-reference.el: Use new `eql` specializer syntax
-2021-10-09 F. Jason Park <jp@neverwas.me>
+2023-04-15 F. Jason Park <jp@neverwas.me>
Add ERC version to protocol log
* lisp/erc/erc.el (erc-toggle-debug-irc-protocol): Include the erc
version in the debug logs (bug#51107).
-2021-10-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove mistaken dired-x entry from previous info-look patch.
-2021-10-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `C-h S' work on symbols from most of the manuals in Emacs
* lisp/info-look.el (lambda): Add `C-h S' lookup for all the
"misc" manuals in Emacs (bug#42753).
-2021-10-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add indices to mairix-el
* doc/misc/mairix-el.texi (Function Index): Add indices.
-2021-10-09 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Simplify `clean-mode'
* lisp/simple.el (clean-mode): Simplify the property exclusion.
-2021-10-09 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove duplicate definition of x-display-color-p
* lisp/emulation/viper-init.el (x-display-color-p): Remove duplicate
definition. This would just overwrite the alias defined in faces.el.
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some unnecessary calls to mh-funcall-if-exists
@@ -99941,7 +99941,7 @@
to mh-funcall-if-exists; these functions always exist as they are
autoloaded.
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove old Gnus compat code from MH-E
@@ -99955,13 +99955,13 @@
for functions without the 'mh-' prefix. Update callers.
(mh-gnus-local-map-property): Remove Emacs 20 compat code.
-2021-10-08 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
test/lisp/progmodes/elisp-mode-resources/simple-shorthand-test.el: Lexbind
Add the usual lexical-binding cookie.
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove XEmacs compat code from lisp/obsolete/*.el
@@ -99979,21 +99979,21 @@
* lisp/obsolete/tpu-mapper.el (tpu-map-key, tpu-mapper): Remove XEmacs
compat code.
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove XEmacs compat code from sql.el
* lisp/progmodes/sql.el (sql-interactive-mode-map, sql-mode)
(sql-interactive-mode): Remove XEmacs compat code. (Bug#51096)
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove Emacs 20 compat code from sql.el
* lisp/progmodes/sql.el (sql-input-ring-separator)
(sql-product-font-lock): Remove Emacs 20 compat code.
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Remove some additional XEmacs compat code from viper
@@ -100004,14 +100004,14 @@
(viper-color-display-p): Make into obsolete function alias for
'x-display-color-p'. Update callers.
-2021-10-08 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Obsolete XEmacs compat convention in erc-button-press-button
* lisp/erc/erc-button.el (erc-button-press-button): Advertise new
calling convention without XEmacs compatibility.
-2021-10-08 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100027,7 +100027,7 @@
1af00e67d6 Include the refcards in the release tarball
3c29fb705c ; * src/Makefile.in (../native-lisp): Make the long recipe...
-2021-10-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make mh-* XEmacs compat aliases obsolete
@@ -100049,21 +100049,21 @@
obsolete function aliases for the same names but without the "mh-"
prefix. Update all callers.
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update inhibit-changing-match-data obsoletion data
* lisp/subr.el (inhibit-changing-match-data): Link to
`save-match-data'.
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update Fstring_match calls in comp.c
* src/comp.c (Fcomp_el_to_eln_rel_filename, file_in_eln_sys_dir):
Update Fstring_match calls.
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make 'inhibit-changing-match-data' obsolete and adjust callers
@@ -100088,14 +100088,14 @@
(Fposix_looking_at, Fposix_string_match): Add optional
inhibit-modify parameter.
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make gnus-define-keys obsolete
* lisp/gnus/gnus-util.el (gnus-define-keys):
(gnus-define-keys-1): Make obsolete.
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert mh-e to use define-keymap instead of gnus-define-keys
@@ -100107,13 +100107,13 @@
* lisp/mh-e/mh-folder.el (mh-folder-mode-map): Convert to use
`define-keymap' instead of `gnus-define-keys'.
-2021-10-07 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
7cb98ba057 (origin/emacs-28) ; * src/keyboard.c (make_lispy_position)...
-2021-10-07 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100129,7 +100129,7 @@
# Conflicts:
# etc/NEWS
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix mh-e compilation warning
@@ -100138,7 +100138,7 @@
* lisp/mh-e/mh-identity.el (mh-identity-make-menu): Don't call the
obsolete `mh-identity-add-menu' function (that now does nothing).
-2021-10-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Revert "Declare compat macro mh-do-in-gnu-emacs obsolete"
@@ -100147,7 +100147,7 @@
This commit led to some build failures that I don't yet understand, so
I'm reverting it for now so as not to leave master in a broken state.
-2021-10-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Delete some XEmacs compat code from mh-e/*.el
@@ -100163,7 +100163,7 @@
* lisp/mh-e/mh-xface.el (mh-show-xface-function): Delete some
XEmacs compat code.
-2021-10-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Declare compat macro mh-do-in-gnu-emacs obsolete
@@ -100183,7 +100183,7 @@
(mh-picon-image-types, mh-x-image-display): Don't wrap code in
compat macro 'mh-do-in-gnu-emacs'.
-2021-10-07 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Declare compat macro mh-do-in-xemacs obsolete
@@ -100206,20 +100206,20 @@
(mh-picon-image-types, mh-x-image-display): Delete calls to
'mh-do-in-xemacs'.
-2021-10-07 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix syntax error in previous gnus-registry-install-shortcuts change
* lisp/gnus/gnus-registry.el (gnus-registry-install-shortcuts):
Fix syntax error in previous change.
-2021-10-06 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/net/tramp-archive.el (tramp-archive-autoload-file-name-handler): Scope
Fix the scoping of `tramp-archive-enabled`.
-2021-10-06 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100241,14 +100241,14 @@
# Conflicts:
# etc/NEWS
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Reparent `gnus-article-mode-map' again
* lisp/gnus/gnus-art.el (:keymap): Make `button-buffer-map' the
parent of `gnus-article-mode-map' again.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new major mode 'clean-mode'
@@ -100256,7 +100256,7 @@
* lisp/simple.el (clean-mode): New major mode.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add an optional parameter to kill-all-local-variables
@@ -100269,33 +100269,33 @@
* src/print.c (temp_output_buffer_setup):
* src/minibuf.c (set_minibuffer_mode): Adjust callers.
-2021-10-06 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* admin/notes/emba (Emacs jobset): Update.
* test/infra/gitlab-ci.yml (.test-template): Uncomment
'allow_failure', it isn't needed anymore.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make unused macro gnus-local-set-keys obsolete
* lisp/gnus/gnus-util.el (gnus-local-set-keys): Make obsolete.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make unused gnus-define-keys-safe macro obsolete
* lisp/gnus/gnus-util.el (gnus-define-keys-safe): Make obsolete.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Use `define-keymap' in gnus-registry-install-shortcuts
* lisp/gnus/gnus-registry.el (gnus-registry-install-shortcuts):
Use `define-keymap'.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `gnus-define-keymap' obsolete and adjust caller
@@ -100304,14 +100304,14 @@
* lisp/gnus/gnus-util.el (gnus-define-keymap): Make obsolete.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix gnus-start.el compilation warning
* lisp/gnus/gnus-start.el (gnus-save-newsrc-file-last-timestamp):
Move to avoid a compilation warning.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Finish conversion of Gnus from `gnus-define-keys'
@@ -100326,14 +100326,14 @@
(gnus-article-edit-mode-map): Use `define-keymap' instead of
* `gnus-define-keys'.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Clear gnus-save-newsrc-file-last-timestamp on start and exit
* lisp/gnus/gnus-start.el (gnus-clear-system): Clear
`gnus-save-newsrc-file-last-timestamp' on start and exit (bug#51053).
-2021-10-06 Arash Esbati <arash@gnu.org>
+2023-04-15 Arash Esbati <arash@gnu.org>
Improve finding external documents in reftext
@@ -100342,7 +100342,7 @@
second optional argument provided by LaTeX package xr-hyper
(bug#51054).
-2021-10-06 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Add tests for incomplete escape sequences in ansi-color-tests
@@ -100350,7 +100350,7 @@
(ansi-color-tests-equal-props): New function.
(ansi-color-incomplete-sequences-test): New ert test (bug#50806).
-2021-10-06 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Documentation fixes for recent ansi-color additions
@@ -100360,13 +100360,13 @@
(term-handle-colors-array):
Fix obsoleting version (bug#50806).
-2021-10-06 Yuri D'Elia <wavexx@thregr.org>
+2023-04-15 Yuri D'Elia <wavexx@thregr.org>
Document the improved scroll-margin behavior
* etc/NEWS: document the improved `scroll-margin' behavior.
-2021-10-06 Yuri D'Elia <wavexx@thregr.org>
+2023-04-15 Yuri D'Elia <wavexx@thregr.org>
Perform cleanup on errors in mouse-drag-track
@@ -100377,7 +100377,7 @@
* lisp/mouse.el (mouse-drag-track): Correctly reset original values
changed during execution if errors occur.
-2021-10-06 Yuri D'Elia <wavexx@thregr.org>
+2023-04-15 Yuri D'Elia <wavexx@thregr.org>
Improve interaction between mouse-drag-region and scroll-margin
@@ -100386,14 +100386,14 @@
dragging is over, making selections work as expected when inside the
margins.
-2021-10-06 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix up gnus-summary-mode-map after previous change
* lisp/gnus/gnus-sum.el (:keymap): Fix two sub-maps that were
moved to the wrong place.
-2021-10-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert more parts of Gnus from `gnus-define-keys' to `define-keymap'
@@ -100413,11 +100413,11 @@
* lisp/gnus/gnus.el: Define more commands.
-2021-10-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Do interactive mode tagging for proced.el
-2021-10-05 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100443,14 +100443,14 @@
# Conflicts:
# etc/NEWS
-2021-10-05 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
13f459b3ac ; Describe PROBLEMS with Unicode display on some TTYs
7a98a62079 * test/README: Mention :nativecomp tag.
-2021-10-05 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix recent "erts files" additions in ERT manual
@@ -100458,7 +100458,7 @@
than tabs, since Texinfo treats tab characters as a single space;
see (info "(texinfo) @example"). Fix typos/thinkos.
-2021-10-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make 'mapconcat' argument 'separator' optional
@@ -100472,7 +100472,7 @@
mapconcat argument in example.
* lisp/emacs-lisp/subr-x.el (string-join): Doc fix.
-2021-10-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Make two old function aliases obsolete
@@ -100480,7 +100480,7 @@
(bibtex-find-entry): Make function aliases obsolete. These were left
behind when renaming functions, but never declared obsolete.
-2021-10-05 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Set advertised calling convention on make-face-* functions
@@ -100489,7 +100489,7 @@
Use `advertised-calling-convention` to avoid promoting the third
_noerror argument; it has been ignored since 1999.
-2021-10-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Change the call convention for `defvar-keymap'
@@ -100519,14 +100519,14 @@
* lisp/emacs-lisp/lisp-mode.el (lisp-indent--defvar-keymap): Remove.
(lisp-indent-function): Don't use it.
-2021-10-05 Daniel Martín <mardani29@yahoo.es>
+2023-04-15 Daniel Martín <mardani29@yahoo.es>
Update documentation about how M-x completes obsolete commands
* doc/emacs/m-x.texi (M-x): Mention that Emacs offers completion for
commands marked obsolete in the current version of Emacs (bug#51017).
-2021-10-05 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
In term-mode, handle ANSI codes, specifying italic and other modes
@@ -100539,7 +100539,7 @@
modes.
* test/lisp/term-tests.el (ansi-test-strings): Adjust tests.
-2021-10-05 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Add support for 256-color and 24bit ANSI colors in term-mode
@@ -100555,7 +100555,7 @@
* test/lisp/term-tests.el (ansi-test-strings): Add tests for 256-color
and 24bit ANSI colors
-2021-10-05 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Add support for 256-color and 24bit ANSI colors in ansi-color
@@ -100569,7 +100569,7 @@
* test/lisp/ansi-color-tests.el (ansi-color-tests--strings): Add tests
for ANSI codes 38 and 34
-2021-10-05 Miha Rihtaršič <miha@kamnitnik.top>
+2023-04-15 Miha Rihtaršič <miha@kamnitnik.top>
Optimize ansi-color.el
@@ -100594,7 +100594,7 @@
(ansi-color-get-face-1): Make obsolete as this function isn't used any
more (bug#50806).
-2021-10-05 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Make `memory-report-object-size' work standalone
@@ -100603,7 +100603,7 @@
(memory-report--set-size): Initialize
memory-report-object-size.
-2021-10-04 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Use format-prompt for many more prompts
@@ -100668,20 +100668,20 @@
* lisp/progmodes/xref.el (xref--read-identifier): Prefer format-prompt
when it is fboundp.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix syntax error in define-keymap doc string
* lisp/subr.el (define-keymap): Fix syntax error in (fn.
-2021-10-04 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Fix problem with 'vertical-motion' and emoji
* src/font.c (font_range): Pass correct position to
font_for_char (Bug#51012).
-2021-10-04 Mattias Engdegård <mattiase@acm.org>
+2023-04-15 Mattias Engdegård <mattiase@acm.org>
Run ERT tests with `lexical-binding` bound to `t`
@@ -100689,7 +100689,7 @@
Use t rather than the ambient file value for `lexical-binding` to
avoid bad lexbind coverage by mistake.
-2021-10-04 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100703,7 +100703,7 @@
# Conflicts:
# etc/NEWS
-2021-10-04 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100763,7 +100763,7 @@
# etc/NEWS
# test/lisp/subr-tests.el
-2021-10-04 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Revert "Fix problem with outputting error messages while dumping Emacs"
@@ -100771,7 +100771,7 @@
A better fix was committed to the emacs-28 branch and will be
merged to master.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove :copy from define-keymap
@@ -100783,20 +100783,20 @@
* lisp/net/eww.el (eww-link-keymap): Use :parent.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix gnus-group-mode-map breakage from previous patch
* lisp/gnus/gnus-group.el (:keymap): Restore gnus-group-list-map
key strokes to the correct location.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Document with-memoization
* doc/misc/cl.texi (Modify Macros): Document with-memoization.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command 'ensure-empty-lines'.
@@ -100804,11 +100804,11 @@
* lisp/emacs-lisp/subr-x.el (ensure-empty-lines): New command.
-2021-10-04 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/gitlab-ci.yml (test-native-comp-speed0): Fix thinko.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new user option 'translate-upper-case-key-bindings'
@@ -100819,28 +100819,28 @@
* src/keyboard.c (read_key_sequence): Use it.
(syms_of_keyboard): New variable 'translate-upper-case-key-bindings'.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Remove MozRepl stuff from js.el
* lisp/progmodes/js.el: Remove all the mozrepl stuff from js.el
(bug#40771).
-2021-10-04 Carlos Pita <carlosjosepita@gmail.com>
+2023-04-15 Carlos Pita <carlosjosepita@gmail.com>
Avoid a warning in python-eldoc-setup-code
* lisp/progmodes/python.el (python-eldoc-setup-code): Avoid a
deprecation warning about formatargspec (bug#50996).
-2021-10-04 Gregory Heytings <gregory@heytings.org>
+2023-04-15 Gregory Heytings <gregory@heytings.org>
Fix problem with outputting error messages while dumping Emacs
* src/print.c (print_error_message): Don't call
substitute-command-keys while bootstrapping.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow computing :doc-spec info-look elements at run time
@@ -100851,11 +100851,11 @@
(:mode): Use a dynamic expansion for Python to postpone the lookup.
(info-complete): Expand.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Update NEWS for 'define-keymap'
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Convert some keymaps to defvar-keymap
@@ -100880,7 +100880,7 @@
* lisp/gnus/gnus.el: Autoload gnus-score-edit-all-score.
-2021-10-04 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add 'define-keymap' and 'defvar-keymap'
@@ -100895,11 +100895,11 @@
function.
(lisp-indent-function): Use it to indent defvar-keymap.
-2021-10-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
* test/infra/gitlab-ci.yml (.native-comp-template): Revert change.
-2021-10-03 Michael Albinus <michael.albinus@gmx.de>
+2023-04-15 Michael Albinus <michael.albinus@gmx.de>
Improve native compilation on emba
@@ -100913,7 +100913,7 @@
(build-native-comp-speed1, build-native-comp-speed2)
(test-native-comp-speed0): New jobs.
-2021-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Obsolete the light-blue theme
@@ -100921,7 +100921,7 @@
since it's not maintained and seems to serve no particular use
case (bug#47047).
-2021-10-03 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow obsoleting themes
@@ -100930,14 +100930,14 @@
* lisp/custom.el (load-theme): Issue a warning if the theme is
obsolete (bug#47047).
-2021-10-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Expand internal--format-docstring-line test
* test/lisp/subr-tests.el (subr-test-internal--format-docstring-line):
Check for error on newline.
-2021-10-02 Stefan Kangas <stefan@marxist.se>
+2023-04-15 Stefan Kangas <stefan@marxist.se>
Support 'strong-italic' facemenu face in html-mode
@@ -100945,7 +100945,7 @@
(sgml-mode-facemenu-add-face-function, html-face-tag-alist):
Support 'strong-italic' facemenu face.
-2021-10-02 Alexandre Duret-Lutz <adl@lrde.epita.fr>
+2023-04-15 Alexandre Duret-Lutz <adl@lrde.epita.fr>
gnus-icalendar: Missing attendees are not REQ-PARTICIPANT
@@ -100958,7 +100958,7 @@
user is not listed is covered by gnus-icalendar-parse already
(bug#50749).
-2021-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-generic.el: Fix test/lisp/loadhist-tests
@@ -100966,11 +100966,11 @@
had fixed it in a better way anyway (a way which doesn't litter the
`load-history`).
-2021-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): Fix regression
-2021-10-01 Stefan Monnier <monnier@iro.umontreal.ca>
+2023-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
* lisp/emacs-lisp/subr-x.el (with-memoization): New macro
@@ -100980,7 +100980,7 @@
(cl--generic-build-combined-method, cl-generic-generalizers): Use it.
(cl--generic-with-memoization): Delete.
-2021-10-01 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100989,7 +100989,7 @@
1e79c9e9c0 ; * admin/release-branch.txt: Small edits.
f1f57a541e Fix some custom types
-2021-10-01 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -100998,7 +100998,7 @@
# Conflicts:
# etc/NEWS
-2021-10-01 Glenn Morris <rgm@gnu.org>
+2023-04-15 Glenn Morris <rgm@gnu.org>
Merge from origin/emacs-28
@@ -101017,42 +101017,42 @@
# Conflicts:
# etc/NEWS
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix one-clause movement in erts-mode--goto-start-of-test
* lisp/progmodes/erts-mode.el (erts-mode--goto-start-of-test): Fix
so this works in one-clause tests.
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Fix text in erts-run-test message
* lisp/progmodes/erts-mode.el (erts-run-test): New command and
keystroke.
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new command erts-run-test
* lisp/progmodes/erts-mode.el (erts-run-test): New command and
keystroke.
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Refactor out ert-test--erts-test
* lisp/emacs-lisp/ert.el (ert-test--erts-test): Refactor out the
bulk of the function for easier reuse.
-2021-10-01 Peter Münster <pm@a16n.net>
+2023-04-15 Peter Münster <pm@a16n.net>
New command for unmarking all images in image-dired
* lisp/image-dired.el (image-dired-unmark-all-marks): Remove marks from
Dired buffer and update the view of the thumbnails (bug#50920).
-2021-10-01 Alexandre Duret-Lutz <adl@lrde.epita.fr>
+2023-04-15 Alexandre Duret-Lutz <adl@lrde.epita.fr>
default role for attendees is REQ-PARTICIPANT
@@ -101062,7 +101062,7 @@
is missing from an ATTENDEE line, follow RFC5546 and default
to REQ-PARTICIPANT.
-2021-10-01 Alexandre Duret-Lutz <adl@lrde.epita.fr>
+2023-04-15 Alexandre Duret-Lutz <adl@lrde.epita.fr>
allow party crashers to respond to ical events
@@ -101080,7 +101080,7 @@
(gnus-icalendar-event--build-reply-event-body): Add an attendee
line for the user in case one was not found.
-2021-10-01 Alexandre Duret-Lutz <adl@lrde.epita.fr>
+2023-04-15 Alexandre Duret-Lutz <adl@lrde.epita.fr>
reply to the organizer of an ical event
@@ -101095,7 +101095,7 @@
event.
(gnus-icalendar-reply) Pass that organizer to the previous function.
-2021-10-01 akater <nuclearspace@gmail.com>
+2023-04-15 akater <nuclearspace@gmail.com>
Restore the flet indentation fixes
@@ -101103,14 +101103,14 @@
function.
(lisp-indent-function): Use it to fix cl-flet indentation.
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add a new command to mark a region as a test in erts-mode
* lisp/progmodes/erts-mode.el (erts-mode--in-test-p): Fix test.
(erts-tag-region): New command and keystroke.
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Allow skipping erts tests
@@ -101118,11 +101118,11 @@
* lisp/emacs-lisp/ert.el (ert-test-erts-file): Allow skipping tests.
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add more indentation tests for Emacs Lisp mode
-2021-10-01 Lars Ingebrigtsen <larsi@gnus.org>
+2023-04-15 Lars Ingebrigtsen <larsi@gnus.org>
Add new functionality to write buffer-based tests
@@ -101137,14 +101137,14 @@
* lisp/progmodes/erts-mode.el: New mode and file.
-2021-10-01 Ihor Radchenko <yantar92@gmail.com>
+2023-04-15 Ihor Radchenko <yantar92@gmail.com>
Save position in mark ring before jumping to definition
* lisp/help-mode.el (help-function-def--button-function): Current
point is saved in the mark ring before jumping to definition.
-2021-09-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Update emacs-module sources for Emacs 29
@@ -101154,7 +101154,7 @@
the next release.
* src/module-env-29.h: New file.
-2021-09-30 Eli Zaretskii <eliz@gnu.org>
+2023-04-15 Eli Zaretskii <eliz@gnu.org>
Bump Emacs version to 29.0.50
@@ -101170,7 +101170,7 @@
* lisp/cus-edit.el (customize-changed-options-previous-release):
Update the reference version of Emacs.
-2021-09-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fixup last commit
@@ -101187,7 +101187,7 @@
* eglot.el (eglot-completion-at-point): Fix all-completions call
-2021-09-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Respect completion-regexp-alist in eglot's completion table
@@ -101198,7 +101198,7 @@
* eglot.el (eglot-completion-at-point): use all-completions.
-2021-09-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix typo in user-visible eglot-ignored-server-capabilities
@@ -101211,7 +101211,7 @@
* eglot.el (eglot-ignored-server-capabilities): New defcustom.
-2021-08-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fall back to prompting user if eglot-alternatives fails
@@ -101219,7 +101219,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/719
-2021-08-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Let eglot-flymake-backend be in flymake-d-functions even if eglot off
@@ -101238,33 +101238,33 @@
* eglot.el (eglot-flymake-backend): If buffer isn't being managed
by Eglot, behave as a noop.
-2021-08-16 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make PGTK's additions conditioinal
* src/.gdbinit: Make them enclosed in condition.
* src/alloc.c: Define defined_HAVE_PGTK and make it externally visible.
-2021-08-16 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* lisp/term/pgtk-win.el (pgtk-preedit-text): Write doc string
* lisp/term/pgtk-win.el (pgtk-face-at-pos): Remove unused function
-2021-08-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* lisp/term/pgtk-win.el: Remove some font stuff
pgtk-popup-font-panel does not exist.
pgtk-respond-to-change-font is not used.
-2021-08-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* lisp/term/pgtk-win.el (pgtk-pop-up-frames): Remove since it is not used
* configure.ac: Add a notice to --with-pgtk
-2021-08-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* configure.ac: Remove imagemagick special support code for pgtk
@@ -101272,7 +101272,7 @@
I wanted to use imagemagick 6.
The code is not needed any more.
-2021-07-21 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
João Távora <joaotavora@gmail.com
Add support for locationlink
@@ -101290,14 +101290,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/712
-2021-06-18 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix a frame created without scroll/menu/toolbar is empty
* src/pgtkterm.c (size_allocate): Get frame pointer through user_data.
(pgtk_set_event_handler): Pass it.
-2021-06-18 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Revert "Revert "* src/pgtkfns.c: Do not show an empty frame prematurely""
@@ -101306,7 +101306,7 @@
The commit 83c35b8 causes the empty frame bug, so I reverted.
Now, I debugged so re-apply the commit.
-2021-06-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Transpose order of "pylsp" and "pyls" alternatives
@@ -101318,7 +101318,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/703
-2021-06-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't call eglot--executable-find more than needed
@@ -101328,26 +101328,26 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/703
-2021-06-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Revert "* src/pgtkfns.c: Do not show an empty frame prematurely"
This reverts commit 83c35b86da233870231e30d114ffa4640eb10081.
-2021-06-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Revert "; * src/pgtkfns.c (Fx_create_frame): Fix coding style"
This reverts commit 4b91168c657e3476b8a0a3f539ee6bcb1b71e3d5.
-2021-06-13 Jindřich Makovička <makovick@gmail.com>
+2023-04-15 Jindřich Makovička <makovick@gmail.com>
* src/pgtkfns.c: Do not show an empty frame prematurely
Set only the child widgets visible, leave the outer window
to pgtk_make_frame_visible .
-2021-06-11 Liu Hui <ilupin@users.noreply.github.com> (tiny change)
+2023-04-15 Liu Hui <ilupin@users.noreply.github.com> (tiny change)
Consider tramp in eglot-alternatives
@@ -101355,14 +101355,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/702
-2021-06-08 Jindřich Makovička <makovick@gmail.com>
+2023-04-15 Jindřich Makovička <makovick@gmail.com>
* src/pgtkselect.c: Avoid Glib assertion warnings
Do not call g_object_get_qdata, when the clipboard has no owner,
and obj is NULL. Just return Qnil immediately.
-2021-06-05 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Support frame-scale-factor on pgtk frames
@@ -101371,18 +101371,18 @@
* src/frame.h: Call it when a pgtk frame.
* src/pgtkterm.h: Add the declaration.
-2021-05-30 Jindřich Makovička <makovick@gmail.com>
+2023-04-15 Jindřich Makovička <makovick@gmail.com>
* src/pgtkterm.c: Honor system DPI settings
-2021-05-29 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Disable hyper key when super and hyper conflict
* src/pgtkterm.c (x_find_modifier_meanings): If super_mod_mask and
hyper_mod_mask are equal, then disable hyper.
-2021-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use project-files to know which directory watchers to skip
@@ -101397,7 +101397,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/697
-2021-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Hard code an exception to "node_modules" directores
@@ -101406,7 +101406,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/697
GitHub-reference: per https://github.com/joaotavora/eglot/issues/645
-2021-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Again speed up directory watching
@@ -101423,7 +101423,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/697
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/645
-2021-05-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support multiple servers out-of-box for same mode
@@ -101438,7 +101438,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/688
-2021-05-22 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Allow staying out of flymake-mode, eldoc-mode
@@ -101447,30 +101447,30 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/671
-2021-05-22 Colin Woodbury <colin@fosskers.ca>
+2023-04-15 Colin Woodbury <colin@fosskers.ca>
* src/frame.c (Fframep): Update framep docstring
-2021-05-19 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix compile error when PGTK_DEBUG is enabled
* src/pgtkterm.c (pgtk_set_window_size): Remove "pixelwise" arg,
which is already non-existent.
-2021-05-19 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/image.c: Fix compile error related xpm in image.c
Use the same code as NS.
-2021-05-17 Troy Hinckley <t.macman@gmail.com>
+2023-04-15 Troy Hinckley <t.macman@gmail.com>
Fix tests and documentation for hook
Auto detect mode suffix in hook keyword
-2021-05-16 Michael Livshin <mlivshin@gmail.com>
+2023-04-15 Michael Livshin <mlivshin@gmail.com>
João Távora <joaotavora@gmail.com>
Manage cross-referenced files outside project in same server
@@ -101497,7 +101497,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/76
-2021-05-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Revert "Update texts while busy"
@@ -101505,7 +101505,7 @@
Because the position of the initial frame is not desired, unless
initial-frame-alist is set.
-2021-05-15 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Update texts while busy
@@ -101518,7 +101518,7 @@
(pgtk_hide_hourglass): Remove code to stop timer.
(pgtk_term_init): Call start_timer().
-2021-05-14 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Create a variable to enable selection on multi display
@@ -101526,7 +101526,7 @@
returns true.
(syms_of_pgtkselect): New bool variable.
-2021-05-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Treat all the wayland connection as the same display
@@ -101544,7 +101544,7 @@
(pgtk_display_info_for_name): If both are wayland connection, then
they are the same display.
-2021-05-13 Jim Porter <itsjimporter@gmail.com>
+2023-04-15 Jim Porter <itsjimporter@gmail.com>
João Távora <joaotavora@gmail.com>
Correct path/uri when using tramp from ms windows
@@ -101557,7 +101557,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/679
-2021-05-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Provide context for finer project-find-functions
@@ -101570,7 +101570,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/687
-2021-05-12 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
* src/pgtkterm.c remove duplicated code
@@ -101579,7 +101579,7 @@
(pgtk_redisplay_interface): Remove duplicate code and default to the
generic gui_update_window_begin/end implementations
-2021-05-10 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix frame size shrinking when turning fringe/scrollbars on/off
@@ -101588,7 +101588,7 @@
* src/pgtkterm.c (pgtk_set_window_size): Don't use
FRAME_PIXEL_TO_TEXT_WIDTH/HEIGHT to pass pixel size.
-2021-05-09 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix pgtk_make_frame_visible doesn't work
@@ -101599,11 +101599,11 @@
(pgtk_make_frame_invisible): Call pgtk_wait_for_map_event to wait
for multiple map events.
-2021-05-08 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/pgtkmenu.c (show_help_event): Let emacs not show menu tooltips
-2021-05-08 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Entrust Gtk with handling tooltips
@@ -101622,7 +101622,7 @@
* src/gtkutil.h: New declaration of xg_show_tooltip for pgtk.
* src/pgtkfns.c (Fx_show_tip): Calls xg_show_tooltip, and always ok.
-2021-04-30 Steve Purcell <steve@sanityinc.com>
+2023-04-15 Steve Purcell <steve@sanityinc.com>
João Távora <joaotavora@gmail.com>
Fix emacs 28 warning by avoiding positional args in define-minor-mode
@@ -101631,7 +101631,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/685
-2021-04-29 Steve Purcell <steve@sanityinc.com>
+2023-04-15 Steve Purcell <steve@sanityinc.com>
João Távora <joaotavora@gmail.com>
Allow lsp languageid to be overridden via eglot-server-programs
@@ -101653,7 +101653,7 @@
* README.md (Handling quirky servers): Mention new feature.
-2021-04-28 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Add a completion-category-defaults entry
@@ -101667,7 +101667,7 @@
(eglot-completion-at-point): Add style metadata to
completion table.
-2021-04-25 Steve Purcell <steve@sanityinc.com>
+2023-04-15 Steve Purcell <steve@sanityinc.com>
Switch default langserver for ocaml to ocamllsp
@@ -101685,7 +101685,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/677
-2021-04-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Declare eglot--cached-server before use
@@ -101697,7 +101697,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/673
-2021-04-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make eglot-current-server work in notification handlers
@@ -101706,11 +101706,11 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/670
-2021-04-17 Daniel Perez Alvarez <danielpza@protonmail.com> (tiny change)
+2023-04-15 Daniel Perez Alvarez <danielpza@protonmail.com> (tiny change)
feat: add update custom packages command
-2021-04-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Workaround touchscreen events are ignored on sway
@@ -101721,7 +101721,7 @@
* src/pgtkterm.c (button_event): Don't call xg_event_is_for_scrollbar.
-2021-04-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add a passing test demonstrating clangd + tramp works
@@ -101739,7 +101739,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/667
-2021-04-12 Dmitry Gutov <dgutov@yandex.ru>
+2023-04-15 Dmitry Gutov <dgutov@yandex.ru>
Merge pull request from mohkale/company-kind
@@ -101747,7 +101747,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/656
-2021-04-12 Mohsin Kaleem <mohkale@kisara.moe>
+2023-04-15 Mohsin Kaleem <mohkale@kisara.moe>
Add :company-kind to eglot-completion-at-point
@@ -101757,7 +101757,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/652
-2021-04-10 Mohsin Kaleem <mohkale@kisara.moe>
+2023-04-15 Mohsin Kaleem <mohkale@kisara.moe>
Highlight relevant part of xref hits using xref-match face
@@ -101767,7 +101767,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/650
-2021-04-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Attempt to speed up initial directory/glob correspondence
@@ -101805,7 +101805,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/645
-2021-04-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Generalize eglot-flymake-backend
@@ -101824,7 +101824,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/596
-2021-03-26 rvs314 <71688932+rvs314@users.noreply.github.com> (tiny change)
+2023-04-15 rvs314 <71688932+rvs314@users.noreply.github.com> (tiny change)
Offer better control over "languageid" value sent to lsp
@@ -101840,7 +101840,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/525
-2021-03-19 Johnathan C. Maudlin <13183098+jcmdln@users.noreply.github.com> (tiny change)
+2023-04-15 Johnathan C. Maudlin <13183098+jcmdln@users.noreply.github.com> (tiny change)
Add support for zls, the zig language server
@@ -101850,7 +101850,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/646
-2021-03-15 bc² <odanoburu@users.noreply.github.com> (tiny change)
+2023-04-15 bc² <odanoburu@users.noreply.github.com> (tiny change)
João Távora <joaotavora@gmail.com>
Add new command eglot-shutdown-all
@@ -101867,22 +101867,22 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/643
-2021-03-13 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Properly sort use-package-statistics-report
-2021-03-11 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix some leaks
* src/pgtkterm.c (x_free_frame_resources): Free cursors.
(pgtk_delete_terminal): Free cursors and events.
-2021-03-07 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Fix void-variable use-package-enable-imenu-support
-2021-03-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Autoload eglot-workspace-configuration's safe-l-v spec
@@ -101895,7 +101895,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/555
-2021-03-06 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Indicate support for activeparameter
@@ -101905,7 +101905,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/605
-2021-03-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify eglot--apply-workspace-edit
@@ -101915,7 +101915,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/620
-2021-03-06 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
João Távora <joaotavora@gmail.com>
Remove highlight overlays immediately when symbol edited
@@ -101925,7 +101925,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/626
-2021-03-06 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
João Távora
Convert colon to hex in uri
@@ -101941,7 +101941,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/638
-2021-03-06 Brian Cully <bjc@kublai.com>
+2023-04-15 Brian Cully <bjc@kublai.com>
João Távora <joaotavora@gmail.com>
Add tramp support
@@ -101977,7 +101977,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/637
-2021-03-03 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
Correctly protect against zero-length completion items
@@ -101988,7 +101988,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/635
-2021-03-02 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix unicode strings can't be pasted correctly
@@ -102000,7 +102000,7 @@
text/plain;charset=utf-8 as foreign-selection.
(syms_of_pgtkselect): Add new symbol.
-2021-03-02 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Support selection type text/plain on wayland
@@ -102009,7 +102009,7 @@
* lisp/select.el (x-select-request-type): Add choice `text/plain'.
(gui--selection-value-internal): Add text/plain to the default list.
-2021-02-27 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
João Távora <joaotavora@gmail.com>
Protect against empty uris on windows
@@ -102020,7 +102020,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/610
-2021-02-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Urify better
@@ -102031,7 +102031,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/627
-2021-02-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fixup last commit to fix
@@ -102039,7 +102039,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/627
-2021-02-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle empty actions array in window/showmessagerequest
@@ -102048,7 +102048,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/627
-2021-02-24 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Remove uses of deprecated ‘flet’ macro
@@ -102058,7 +102058,7 @@
This also allows us to remove the ‘plist-delete’ helper function, which was
only used to effectively un-deprecate ‘flet’.
-2021-02-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle null reply for textdocument/definition
@@ -102067,7 +102067,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/625
-2021-02-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make scrollbars ignore scroll-bar-fore/background.
@@ -102075,18 +102075,18 @@
parameters but actually ignore it.
(pgtk_set_scroll_bar_background): The same.
-2021-02-22 Naoya Yamashita <conao3@gmail.com>
+2023-04-15 Naoya Yamashita <conao3@gmail.com>
add testcase
-2021-02-22 Naoya Yamashita <conao3@gmail.com>
+2023-04-15 Naoya Yamashita <conao3@gmail.com>
add autoload keyword
:autoload is similar to :command but this generate autoload
statement as *no-interactive* function.
-2021-02-21 Jonathan del Strother <me@delstrother.com> (tiny change)
+2023-04-15 Jonathan del Strother <me@delstrother.com> (tiny change)
João Távora <joaotavora@gmail.com>
Silence messages while formatting markup
@@ -102101,7 +102101,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/502
-2021-02-20 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Work around I can't copy and paste unicode string to wayland chromium
@@ -102109,18 +102109,18 @@
Remove text/plain, since unicode strings are not correctly
encoded/decoded between Gtk and chromium(wayland) with it.
-2021-02-16 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix I can't paste international text from clipboard
* lisp/select.el (gui--selection-value-internal):
Try UTF8_STRING when pgtk as well as x.
-2021-02-16 Yurii Kholodkov <urist.mckorobochka@gmail.com> (tiny change)
+2023-04-15 Yurii Kholodkov <urist.mckorobochka@gmail.com> (tiny change)
fix docstring. was: invalid function name
-2021-02-14 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Fix unused macro build warning in image.c
@@ -102130,7 +102130,7 @@
unused (bug#46491).
(image_set_transform): Reduce nesting of preprocessor conditionals.
-2021-02-11 Robert Pluim <rpluim@gmail.com>
+2023-04-15 Robert Pluim <rpluim@gmail.com>
Don't crash if we can't find a monitor model name
@@ -102139,7 +102139,7 @@
* src/pgtkfns.c (pgtk_get_monitor_scale_factor): Return 0 if we're
passed a NULL model name.
-2021-02-11 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Support getting a image from clipboard
@@ -102147,35 +102147,35 @@
referring selection_data_to_lisp_data in xselect.c
(syms_of_pgtkselect): Add symbols.
-2021-02-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from minad/improved-unbind
GitHub-reference: https://github.com/jwiegley/use-package/issues/910
-2021-02-10 Daniel Mendler <mail@daniel-mendler.de>
+2023-04-15 Daniel Mendler <mail@daniel-mendler.de>
unbind-key: Ensure that keys are removed from the keymap
* The removal from the keymap is performed by bind-key--remove
* Use the same argument normalization as bind-key
-2021-02-10 Daniel Mendler <mail@daniel-mendler.de>
+2023-04-15 Daniel Mendler <mail@daniel-mendler.de>
bind-key: Use new symbols for kmapvar
-2021-02-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tzz/tzz/use-package-use-theme
Add use-package-use-theme and avoid missing theme errors
GitHub-reference: https://github.com/jwiegley/use-package/issues/907
-2021-02-06 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
Add use-package-use-theme and avoid missing theme errors
-2021-02-06 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Remove unused arg as xmenu.c
@@ -102184,25 +102184,25 @@
(set_frame_menubar): Remove unused arg.
(initialize_frame_menubar): Remove unused arg.
-2021-02-06 Misha Gusarov <dottedmag@dottedmag.net> (tiny change)
+2023-04-15 Misha Gusarov <dottedmag@dottedmag.net> (tiny change)
Make reading GNOME settings optional.
* src/pgtkterm.c (pgtk_term_init): Make reading GNOME settings optional.
(pgtk_text_scaling_factor): New function to read text scaling factor.
-2021-02-06 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
Merge pull request from kljohann/custom-use-single-let
Use a single let binding when expanding consecutive :custom forms
GitHub-reference: https://github.com/jwiegley/use-package/issues/906
-2021-02-03 Johann Klähn <johann@jklaehn.de> (tiny change)
+2023-04-15 Johann Klähn <johann@jklaehn.de> (tiny change)
Use a single let binding when expanding consecutive :custom forms
-2021-02-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify dir-watching strategy of w/didchangewatchedfiles
@@ -102222,7 +102222,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/602
-2021-02-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak glob-parsing grammar
@@ -102232,7 +102232,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/602
-2021-02-01 Philip Kaludercic <philipk@posteo.net>
+2023-04-15 Philip Kaludercic <philipk@posteo.net>
João Távora <joaotavora@gmail.com>
Make eglot-ignored-server-capabilites defcustom a set
@@ -102242,7 +102242,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/467
-2021-02-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Speed up glob matching 2x
@@ -102255,14 +102255,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/602
-2021-02-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tzz/tzz/remove-use-package-from-custom-enabled-themes
Remove use-package theme from global list of custom-enabled-themes
GitHub-reference: https://github.com/jwiegley/use-package/issues/899
-2021-02-01 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
João Távora <joaotavora@gmail.com>
Support phps-mode
@@ -102273,7 +102273,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/418
-2021-02-01 Brian Leung <bkleung89@gmail.com> (tiny change)
+2023-04-15 Brian Leung <bkleung89@gmail.com> (tiny change)
Remove duplicate entry for "registration" lsp type
@@ -102281,7 +102281,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/612
-2021-02-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prefer typescript-language-server for js&ts
@@ -102293,7 +102293,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/566
-2021-02-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Also override global flymake-diagnostic-functions
@@ -102310,7 +102310,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/616
-2021-02-01 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
Explicitly require seq.el
@@ -102321,7 +102321,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/613
-2021-02-01 Brian Leung <bkleung89@gmail.com>
+2023-04-15 Brian Leung <bkleung89@gmail.com>
João Távora <joaotavora@gmail.com>
Support activeparameter property for signatureinformation
@@ -102342,7 +102342,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/605
-2021-01-31 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fully handle lsp glob syntax
@@ -102360,7 +102360,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/602
-2021-01-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Flush pending changes to server before code actions request
@@ -102371,7 +102371,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/609
-2021-01-30 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Support child frame border width
@@ -102381,7 +102381,7 @@
* src/pgtkterm.c (x_draw_stretch_glyph_string): Re-port code for X.
(pgtk_clear_under_internal_border): Re-port code for X.
-2021-01-30 Yichao Yu <yyc1992@gmail.com>
+2023-04-15 Yichao Yu <yyc1992@gmail.com>
Add support for setting cursor location using Gtk IM Context
@@ -102395,7 +102395,7 @@
add new code to call the function.
* src/pgtkterm.h: Add the function declaration.
-2021-01-29 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
#fix 608: fix bug in eglot-code-actions
@@ -102406,11 +102406,11 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/606
-2021-01-28 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot): tweak docstring grammar.
-2021-01-28 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
João Távora <joaotavora@gmail.com>
Offer shortcut commands to commonly invoked code actions
@@ -102435,7 +102435,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/411
-2021-01-28 ssnnoo <43703153+ssnnoo@users.noreply.github.com> (tiny change)
+2023-04-15 ssnnoo <43703153+ssnnoo@users.noreply.github.com> (tiny change)
Add fortls for fotran (f90-mode)
@@ -102445,7 +102445,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/603
-2021-01-27 Brian Leung <bkleung89@gmail.com> (tiny change)
+2023-04-15 Brian Leung <bkleung89@gmail.com> (tiny change)
Add rnix-lsp server for nix-mode, community suggestion
@@ -102455,7 +102455,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/599
-2021-01-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add scale factor in display-monitor-attributes-list.
@@ -102465,7 +102465,7 @@
* src/frame.h (struct MonitorInfo): Add scale_factor member.
* src/pgtkfns.c (Fpgtk_display_monitor_attributes_list): Set the value.
-2021-01-20 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make imagemagick images less blurry.
@@ -102473,7 +102473,7 @@
(image_set_transform): Don't skip even if imagemagick.
(imagemagick_load_image): Don't calculate desired size.
-2021-01-16 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
João Távora <joaotavora@gmail.com>
Fix eglot-completion-at-point for multiple matches
@@ -102490,7 +102490,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/365
-2021-01-16 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
Run exit-function only for finished completion
@@ -102501,7 +102501,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/592
-2021-01-13 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Use `path-separator', not ":", in eclipse/jdt custom code
@@ -102511,7 +102511,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/513
-2021-01-13 Augusto Stoffel <arstoffel@gmail.com>
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com>
Define a face for symbol highlight
@@ -102522,7 +102522,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/584
-2021-01-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak interactivee eglot--connect for complex contact specs
@@ -102535,7 +102535,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/593
-2021-01-11 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix visual-bell on X
@@ -102544,13 +102544,13 @@
On X, surface_orig is not an image surface but xlib surface, so I
cannot get its size with cairo_image_surface_get_{width,height}.
-2021-01-11 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Free unneeded context
* src/pgtkterm.c (pgtk_flash): Free unneeded cairo_t.
-2021-01-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
C-u m-x eglot discards class guessed by eglot--guess-contact
@@ -102564,7 +102564,7 @@
* eglot.el (eglot--guess-contact): Don't assume guessed class if
INTERACTIVE.
-2021-01-10 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
Remove use-package theme from global list of custom-enabled-themes
@@ -102575,7 +102575,7 @@
(mapc #'disable-theme custom-enabled-themes)
won't kill user settings.
-2021-01-10 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix gtk icon theme does not reflect
@@ -102585,13 +102585,13 @@
(x-gtk-map-stock): Port from X.
* src/pgtkterm.c (syms_of_pgtkterm): Remove duplicated definition.
-2021-01-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tzz/tzz/set-comment-and-synthetic-theme
GitHub-reference: https://github.com/jwiegley/use-package/issues/881
-2021-01-05 Jürgen Hötzel <juergen@hoetzel.info> (tiny change)
+2023-04-15 Jürgen Hötzel <juergen@hoetzel.info> (tiny change)
Flex completion style is not available on emacs < 27
@@ -102599,7 +102599,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/582
-2021-01-03 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add a function to set monitor scale factor manually
@@ -102615,14 +102615,14 @@
first, if not set, use gdk's one.
(syms_of_pgtkfns): initialize alist.
-2021-01-03 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix display-pixel-width/height to return physical pixel size.
* src/pgtkfns.c (Fx_display_pixel_width):
(Fx_display_pixel_height): Return bottom/right-most of all the monitors.
-2021-01-03 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make display-mm-width/height consider multi-monitor.
@@ -102630,19 +102630,19 @@
(Fx_display_mm_width): Calculate width/height mm assuming monitor
other than origin does not overlap.
-2021-01-03 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix pgtk-display-monitor-attributes-list to return physical pixel sizes.
* src/pgtkfns.c (Fpgtk_display_monitor_attributes_list): Re-port it.
-2020-12-26 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Follow get-buffer-create change
* src/pgtkfns.c (Fx_show_tip): Pass nil to get-buffer-create.
-2020-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't block in eglot-imenu if performing non-essential task
@@ -102655,7 +102655,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/212
-2020-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use flex completion if available by default
@@ -102663,14 +102663,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/575
-2020-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Bump eglot version to 1.7
* eglot.el (Version): Bump to 1.7.
(Package-Requires): Bump dependency versions.
-2020-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Allow eglot to stay out of xref configuration
@@ -102679,7 +102679,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/569
-2020-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Cosmetic whitespace fix (indentation, long lines, tabs->spaces)
@@ -102687,7 +102687,7 @@
(eglot-code-actions, eglot-register-capability)
(eglot-register-capability): Fix whitespace.
-2020-12-16 TANIGUCHI Kohei <a.d.xvii.kal.mai@gmail.com> (tiny change)
+2023-04-15 TANIGUCHI Kohei <a.d.xvii.kal.mai@gmail.com> (tiny change)
Use haskell-language-server in eglot-server-programs
@@ -102703,7 +102703,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/572
-2020-12-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Robustify previous fix of onchange breakage
@@ -102727,7 +102727,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/367
-2020-12-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't let m-x fill-paragraph break didchange
@@ -102752,42 +102752,42 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/367
-2020-12-13 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/pgtkterm.c (map_event): Remove record_asynch_buffer_change call.
-2020-12-08 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix DEL key behavior
* lisp/simple.el (normal-erase-is-backspace-setup-frame): Include pgtk
in window-system group.
-2020-11-29 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
Create new "use-package" themse and use it for :custom with custom-theme-set-variables
set property theme-value to avoid saving variable
-2020-11-29 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
Revert "use-package-core.el: use the Emacs set-default function to avoid saving :custom vars twice"
This reverts commit 8c31c57106e2938d627bf4107627c003620d2dd5.
-2020-11-29 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
set saved-variable-comment from :custom
GitHub-reference: https://github.com/jwiegley/use-package/issues/861
-2020-11-28 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Merge branch 'master' into feature/pgtk
* src/pgtkterm.c (scroll_event): Shut up warnings
-2020-11-28 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Improve smooth scroll
@@ -102796,13 +102796,13 @@
(pgtk_term_init): Set smooth scroll parameters.
* src/pgtkterm.h (scroll): New members to store parameters.
-2020-11-27 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Enable harfbuzz
* src/pgtkfns.c (Fx_create_frame): Register ftcrhb font driver if enabled.
-2020-11-26 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add support for hyper modifier key
@@ -102812,26 +102812,26 @@
(key_press_event): Ignore hyper as well as super.
* src/pgtkterm.h (struct pgtk_display_info): New member for hyper.
-2020-11-25 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix compilation issue when --enable-checking=glyphs
* src/pgtkfns.c (Fx_create_frame): Remove code surrounded by GLYPH_DEBUG.
(x_create_tip_frame): Remove code surrounded by GLYPH_DEBUG.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix crash when .schema.xml is not installed
* src/pgtkfns.c (parse_resource_key): Check return value.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add copyright line
* etc/org.gnu.emacs.defaults.gschema.xml: Add copyright line.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Work around gtk_im_context_filter_keypress() issue with super key
@@ -102843,11 +102843,11 @@
super is pressed.
* src/pgtkterm.h (struct pgtk_display_info): New member.
-2020-11-23 Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>
+2023-04-15 Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>
lisp/term/pgtk-win.el: Add copyright file header
-2020-11-23 Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>
+2023-04-15 Jeff Walsh <jeff.walsh@drtusers-MacBook-Pro.local>
Update copyright dates for PGTK files
@@ -102860,7 +102860,7 @@
* src/pgtkterm.c:
* src/pgtkterm.h: Update copyright dates - No Funtional Changes
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix startup failure on svg-unsupported environments
@@ -102869,32 +102869,32 @@
* src/pgtkterm.h (struct pgtk_display_info): Add member.
(struct pgtk_output): Add member.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Avoid weird behavior when resizing with top-left corner
* src/frame.c (syms_of_frame): Defaults frame_resize_pixelwise to true.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Don't use gtk_window_resize to resize offscreen window
* src/xwidget.c (Fmake_xwidget): Use gtk_container_check_resize instead.
(Fxwidget_resize): Use gtk_container_check_resize instead.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Avoid gtk warnings on X
* src/xwidget.c (xwidget_osr_draw_cb): Call it to avoid alloc_needes.
-2020-11-23 Kira Bruneau <kira.bruneau@gmail.com>
+2023-04-15 Kira Bruneau <kira.bruneau@gmail.com>
Avoid mutating invocation-name (tiny change)
* lisp/term/pgtk-win.el (window-system-initialization): copy invocation-name.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix Gtk warnings
@@ -102918,7 +102918,7 @@
* src/pgtkmenu.c (pgtk_menu_show):
(pgtk_dialog_show):
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix crash on drag and drop
@@ -102928,13 +102928,13 @@
(drag_data_received): Rename arg.
(pgtk_set_event_handler): Remove drag-drop callback.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix mouse cursor doesn't appear on motion events on xwidgets
* src/xwidget.c (xwidget_osr_event_forward): Propagate motion notify.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix tooltips don't hide on events
@@ -102945,26 +102945,26 @@
(pgtk_set_event_handler): Hook configure-event for outer widgets.
(pgtk_term_init): Clear the flag.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix crash on creating child frames.
* src/pgtkfns.c (frame_geometry): Returns nil when no widget.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix crash when child frame updates toolbar
* src/gtkutil.c (update_frame_tool_bar): Do nothing when child frame.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Exclude Xlib's modifier keys
* src/pgtkterm.c (IsModifierKey): New macro.
(key_press_event): Exclude Xlib's modifier keys.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Re-implement childframe with emacsgtkfixed
@@ -103000,7 +103000,7 @@
(pgtk_set_event_handler): expect map-event for edit_widget not outer widget.
* src/pgtkterm.h (FRAME_WIDGET): New macro.
-2020-11-23 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Add support for x-support-frames
@@ -103011,7 +103011,7 @@
(pgtk_cr_export_frames): port from X11
* src/pgtkterm.h: add defs
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Enable GtkIMContext by default
@@ -103022,13 +103022,13 @@
(Fpgtk_use_im_context): Call pgtk_im_use_context.
(syms_of_pgtkim): New variable Vpgtk_use_im_context_on_new_connection.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Remove duplicated syms_of_xwidget call
* src/emacs.c (main): Remove duplicated syms_of_xwidget() call.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Self-implement tooltip
@@ -103041,14 +103041,14 @@
(syms_of_pgtkfns): Add variables for tooltip.
* src/pgtkterm.c (pgtk_set_event_handler): Set event handler for tooltip.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add PGTK to system-configuration-features
* configure.ac: Set HAVE_PGTK when configuring for PGTK, and
add PGTK for iteration.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Re-port image drawing code from X
@@ -103056,25 +103056,25 @@
(x_draw_image_foreground): Re-port X code.
(x_draw_image_glyph_string): Re-port X code.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make pointer visible when motion notify event
* src/pgtkterm.c (motion_notify_event): set pending_signals to true.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix non-English layout does not work
* src/pgtkterm.c (key_press_event): Use Vlocale_coding_system.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix font lock is not applied on continued lines
* src/pgtkterm.c (pgtk_parse_color): Remove alpha bits.
-2020-11-23 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Restore support for terminal only emacs in PGTK (add --with-pgtk)
@@ -103082,14 +103082,14 @@
support.
Adjust X11 window system tests to no clobber pgtk preferences
-2020-11-23 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Add font chooser functionality
* src/pgtkfns.c (Fpgtk_popup_font_panel): repurpose X/gtk font chooser code
(syms_of_pgtkfns): add new symbol
-2020-11-23 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Fix migrating Child frames
@@ -103098,11 +103098,11 @@
(x_set_offset): titlebar off should not be stored as an offset, only
used to calculate final move locations
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/keyboard.c (make_lispy_event): Fix coding style
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Change coding style
@@ -103118,13 +103118,13 @@
(xg_set_toolkit_scroll_bar_thumb):
(xg_event_is_for_scrollbar):
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix coding style
* src/emacs.c (main): Fix coding style
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Change coding style
@@ -103132,7 +103132,7 @@
(image_create_bitmap_from_data): Change coding style
(image_create_bitmap_from_file): Change coding style
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/pgtkselect.h: Change coding style
@@ -103154,7 +103154,7 @@
* src/pgtkmenu.c (set_frame_menubar): Suppress gcc warning
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* src/pgtkterm.c (pgtk_defined_color): support gtk special colors
@@ -103180,11 +103180,11 @@
* src/pgtkterm.h: remove pgtk_lisp_to_color declaration
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* pgtkmenu.c (set_frame_menubar): fix empty menu.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make icons and titles work like on X
@@ -103201,25 +103201,25 @@
port from X code.
* pgtkterm.h: add function declarations.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
* pgtk-win.el: fix compile-time warnings.
* src/pgtkterm.c: Remove incorrect mark_object call.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
follow x_set_internal_border_width change.
* ../src/pgtkfns.c (x_set_internal_border_width):
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
restore frame_rehighlight_hook.
* src/frame.c (gui_set_border_width):
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
use pgtk_menu_set_in_use.
@@ -103228,7 +103228,7 @@
* src/pgtkmenu.c (pgtk_menu_wait_for_event):
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
implement popup/context menu
@@ -103253,7 +103253,7 @@
(create_and_show_dialog, pgtk_dialog_show, pgtk_popup_dialog)
(popup_activated, Fmenu_or_popup_active_p, syms_of_pgtkmenu):
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
minimize gtkutil.c differences.
@@ -103269,13 +103269,13 @@
resolve argument type mismatch.
fix compatibility.
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
improve code readability.
* src/gtkutil.c (xg_create_frame_widgets):
-2020-11-23 Jeff Walsh <jewalsh@redhat.com>
+2023-04-15 Jeff Walsh <jewalsh@redhat.com>
Set screen/display dpi res to make broadway work as expected
@@ -103289,7 +103289,7 @@
* src/ftcrfont.c (ftcrfont_open):
-2020-11-23 Jeff Walsh <jawalsh@localhost.localdomain>
+2023-04-15 Jeff Walsh <jawalsh@localhost.localdomain>
Some work toward posframe on wayland
@@ -103314,7 +103314,7 @@
Add some function comments around the new double context handling
-2020-11-23 Jeff Walsh <jawalsh@localhost.localdomain>
+2023-04-15 Jeff Walsh <jawalsh@localhost.localdomain>
End Resize flickering by copying surface rather than just clearing
@@ -103323,7 +103323,7 @@
* src/pgtkterm.c (pgtk_set_window_size): cleanup traces
(x_draw_bar_cursor, pgtk_handle_draw, syms_of_pgtkterm):
-2020-11-23 Jeff Walsh <jawalsh@localhost.localdomain>
+2023-04-15 Jeff Walsh <jawalsh@localhost.localdomain>
Bring pgtk more inline with X11-cairo builds
@@ -103343,7 +103343,7 @@
- Remove redundant code in pgtk_update_begin()
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
update redisplay_interface.
@@ -103353,7 +103353,7 @@
* src/pgtkterm.h:
-2020-11-23 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
emacsclient should use both of DISPLAY and WAYLAND_DISPLAY.
@@ -103362,14 +103362,14 @@
* lib-src/emacsclient.c (decode_options): handle WALAND_DISPLAY on PGTK
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Before sleep, dispatch draw events.
* src/pgtkterm.c (pgtk_select): remove sigio signal
(pgtk_term_init): dispatch draw
-2020-11-21 Jeff Walsh <jawalsh@localhost.localdomain>
+2023-04-15 Jeff Walsh <jawalsh@localhost.localdomain>
End Resize flickering by copying surface rather than just clearing
@@ -103383,7 +103383,7 @@
* src/gtkutil.c (xg_frame_resized, xg_create_frame_widgets): remove
surface destroy, turn off double buffer call
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add support for Jpeglib
@@ -103393,13 +103393,13 @@
imagemagick がうまく機能してるので気付かなかった…
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Let gtk handle scaling.
* src/gtkutil.c (xg_get_scale):
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
implement pre-edit input method
@@ -103445,7 +103445,7 @@
preedit をテキストで渡すようにした
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Support focus on click event
@@ -103454,7 +103454,7 @@
focus-on-click な環境に対応。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
experimental support of tab-bar.
@@ -103470,7 +103470,7 @@
余計なイベントが生成されていたのを修正。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Make multipdisplay work by limiting selection while enabed
@@ -103487,7 +103487,7 @@
multi-display 時は selection を使えないようにした。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Improve drawing efficency by refactoring code
@@ -103498,7 +103498,7 @@
更に効率化。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
improve some efficiency - simplify draws
@@ -103511,7 +103511,7 @@
少し効率化。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
implement restacking and cleanup frame z order
@@ -103522,14 +103522,14 @@
ついでに、pgtk-frame-list-z-order は無意味なので削除した。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
implement pgtk-frame-list-z-order same as frame-list.
* src/pgtkfns.c (Fpgtk_frame_list_z_order): return frame list as it's
the same
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Implement Scroll-bar-forground and scroll-bar-background
@@ -103547,7 +103547,7 @@
scroll-bar-foreground, scroll-bar-background 実装。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
implement set-tool-bar-position and set-sticky
@@ -103556,13 +103556,13 @@
tool-bar-position 実装。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
TIMERFD support for PGTK, prevent calling when timerfd<0
* ../src/atimer.c (set_alarm):
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add PGTK support for fullscreen
@@ -103570,7 +103570,7 @@
fullscreen にできるようにした。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Use gsettings instead of X resource database
@@ -103595,7 +103595,7 @@
schema の置き場所を変更。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Implement Meta key detection
@@ -103611,7 +103611,7 @@
X11 で alt キーを meta キーとして使えなくなっていたのを修正。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Implement invisible-pointer to create blinking effect
@@ -103625,13 +103625,13 @@
invisible pointer 実装。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
init border_pixel.
* ../src/pgtkfns.c (Fx_create_frame): remove if preprocessor
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
border_color/pixel width
@@ -103647,7 +103647,7 @@
border_color/pixel 対応。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add support for handing the internal border
@@ -103656,7 +103656,7 @@
internal-border 対応。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Addframe highlighting support
@@ -103669,7 +103669,7 @@
とりあえず opacity のみ対応。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add Stipple support for PGTK
@@ -103687,7 +103687,7 @@
stipple がまともに動いてなかったので修正。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add support for make-frame-(in)visible
@@ -103700,7 +103700,7 @@
make-frame-visible/invisible 実装。
-2020-11-21 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Early toolbar improvements
@@ -103719,7 +103719,7 @@
* src/gtkutil.c (xg_get_pixbuf_from_pix_and_mask):
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add Preferred geometry settings
@@ -103736,7 +103736,7 @@
toolbar, menubar の ON/OFF でサイズが変化していっていたのを修正。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Migrate to Emacs_GC
@@ -103759,7 +103759,7 @@
Emacs_GC に統一。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Add pgtk-read-file-name function
@@ -103770,7 +103770,7 @@
toolbar からよく呼ばれるので…
-2020-11-21 Jeff Walsh <fejfighter@gmail.com>
+2023-04-15 Jeff Walsh <fejfighter@gmail.com>
Implement menubar for pgtk emacs
@@ -103787,7 +103787,7 @@
(x_change_tool_bar_height, x_set_tool_bar_lines)
(Fx_create_frame):
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Cleanup x_* to gui_ to match upstream work
@@ -103808,7 +103808,7 @@
ひとまず commit。
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Simplify compilaiton condtion
@@ -103816,7 +103816,7 @@
change condition.
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
replace listn with list.
@@ -103824,7 +103824,7 @@
replace listn with list.
-2020-11-21 Yuuki Harano <masm+github@masm11.me>
+2023-04-15 Yuuki Harano <masm+github@masm11.me>
Fix xdg-open handling
@@ -103834,7 +103834,7 @@
xdg-open できなかったのを修正。
-2020-11-21 Yuuki Harano <masm@masm11.ddo.jp>
+2023-04-15 Yuuki Harano <masm@masm11.ddo.jp>
Add support for cursor_foreground_colors
@@ -103849,7 +103849,7 @@
あんまり意味なかった感じ。
-2020-11-21 Yuuki Harano <masm@masm11.ddo.jp>
+2023-04-15 Yuuki Harano <masm@masm11.ddo.jp>
Don't mark name_list_element as it's not required
@@ -103857,21 +103857,21 @@
これは余分。
-2020-11-21 Yuuki Harano <masm@masm11.ddo.jp>
+2023-04-15 Yuuki Harano <masm@masm11.ddo.jp>
Add set_skip_taskbar frame parm
* src/pgtkfns.c (x_set_skip_taskbar, pgtk_frame_parm_handlers):
Add set_skip_taskbar
-2020-11-21 Yuuki Harano <masm@masm11.ddo.jp>
+2023-04-15 Yuuki Harano <masm@masm11.ddo.jp>
Add set_undecorated frame parameter
* src/pgtkfns.c (x_set_undecorated, pgtk_frame_parm_handlers): Add
undecorated frame parameter handle
-2020-11-21 Yuuki Harano <masm@masm11.ddo.jp>
+2023-04-15 Yuuki Harano <masm@masm11.ddo.jp>
Introduce Pure GTK3 port
@@ -104002,11 +104002,11 @@
* configure.ac (AUTO_DEPEND, XARGS_LIMIT, XWIDGETS_OBJ):
-2020-11-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Update version to 2.4.1
-2020-11-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't force eglot-strict-mode completely in eglot--dcase
@@ -104019,7 +104019,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/558
-2020-11-01 Damien Merenne <damien@bloom-life.com>
+2023-04-15 Damien Merenne <damien@bloom-life.com>
João Távora <joaotavora@gmail.com>
Handle lsp 3.15's ispreferred code action property
@@ -104030,7 +104030,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/558
-2020-10-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't send json null (elisp nil) down the wire
@@ -104039,7 +104039,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/300
-2020-08-30 R Primus <rprimus@users.noreply.github.com> (tiny change)
+2023-04-15 R Primus <rprimus@users.noreply.github.com> (tiny change)
Unbreak haskell's hie-wrapper built-in incantation
@@ -104047,7 +104047,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/528
-2020-08-21 Paul M. Rodriguez <paulmrodriguez@gmail.com> (tiny change)
+2023-04-15 Paul M. Rodriguez <paulmrodriguez@gmail.com> (tiny change)
Provide suitable default to m-x eglot-rename
@@ -104056,13 +104056,13 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/524
-2020-08-21 Naoya Yamashita <conao3@gmail.com>
+2023-04-15 Naoya Yamashita <conao3@gmail.com>
add multiple and eval :custom-face usage
This commit follows suggestion at https://github.com/jwiegley/use-package/issues/696, https://github.com/jwiegley/use-package/issues/821
-2020-08-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Correct paren mismatch blunder introduced by earlier commit
@@ -104072,7 +104072,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/521
-2020-08-16 Steven vanZyl <rushsteve1@rushsteve1.us> (tiny change)
+2023-04-15 Steven vanZyl <rushsteve1@rushsteve1.us> (tiny change)
João Távora <joaotavora@gmail.com>
Add built-int support for godot engine
@@ -104084,21 +104084,21 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/511
-2020-08-11 Kaleb Elwert <belak@coded.io> (tiny change)
+2023-04-15 Kaleb Elwert <belak@coded.io> (tiny change)
Remove use-package-font-lock-keywords
-2020-08-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from wyuenho/patch-1
GitHub-reference: https://github.com/jwiegley/use-package/issues/846
-2020-08-03 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Migrate remaining files to lexical binding
-2020-07-27 Andrew Schwartzmeyer <andrew@schwartzmeyer.com> (tiny change)
+2023-04-15 Andrew Schwartzmeyer <andrew@schwartzmeyer.com> (tiny change)
João Távora <joaotavora@gmail.com>
Ensure completion terminates in correct buffer
@@ -104118,17 +104118,17 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/505
-2020-07-21 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Merge branch 'master' into patch-1
-2020-07-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tzz/custom-set-default
GitHub-reference: https://github.com/jwiegley/use-package/issues/855
-2020-07-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use a hash-table for storing resolved completions
@@ -104137,7 +104137,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/510
-2020-07-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reload eldoc if needed on emacs < 28
@@ -104148,19 +104148,19 @@
* eglot.el (Package-Requires): Require eldoc 1.5.0
(top): Sometimes load eldoc
-2020-07-12 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
Update the documentation for :custom as per
GitHub-reference: https://github.com/jwiegley/use-package/issues/850
-2020-07-12 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Fix broken test due to
GitHub-reference: https://github.com/jwiegley/use-package/issues/850
-2020-07-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix sorting of completion items
@@ -104171,11 +104171,11 @@
GitHub-reference: closes https://github.com/joaotavora/eglot/issues/509
-2020-07-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (package-requires): require flymake 1.0.9 and eldoc 1.2.0
-2020-07-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Delegate "hover" and "signature" doc synchronization efforts to eldoc
@@ -104215,44 +104215,44 @@
(eglot--apply-workspace-edit): Call eldoc manually after an edit.
(eglot-mode-map): Remap display-local-help to eldoc-doc-buffer
-2020-07-07 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
better tests
-2020-07-07 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
add test for
GitHub-reference: https://github.com/jwiegley/use-package/issues/845
-2020-07-07 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
+2023-04-15 Jimmy Yuen Ho Wong <wyuenho@gmail.com>
Support keymap symbol in bind-key
GitHub-reference: fix https://github.com/jwiegley/use-package/issues/845
-2020-06-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tzz/custom-set-default
use-package-core.el: use the Emacs set-default function to avoid saving :custom vars twice
GitHub-reference: https://github.com/jwiegley/use-package/issues/850
-2020-06-22 Ted Zlatanov <tzz@lifelogs.com>
+2023-04-15 Ted Zlatanov <tzz@lifelogs.com>
use-package-core.el: use the Emacs set-default function to avoid saving :custom vars twice
-2020-06-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jjlee/call-hooks-even-if-no-config
GitHub-reference: https://github.com/jwiegley/use-package/issues/840
-2020-06-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge branch 'master' into call-hooks-even-if-no-config
-2020-05-31 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix small problems around eglot's help buffer
@@ -104271,7 +104271,7 @@
* eglot.el (eglot-help-at-point): Fix buffer name.
(eglot--update-doc): Provide more help.
-2020-05-30 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
João Távora <joaotavora@gmail.com>
Simplify eglot-code-actions
@@ -104284,7 +104284,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/473
-2020-05-26 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
Use filter-buffer-substring to get buffer text
@@ -104296,7 +104296,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/482
-2020-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Replace uses of project-roots with project-root
@@ -104305,7 +104305,7 @@
(eglot-initialization-options, eglot--eclipse-jdt-contact): Use
project-root.
-2020-05-26 Gary Oberbrunner <garyo@oberbrunner.com> (tiny change)
+2023-04-15 Gary Oberbrunner <garyo@oberbrunner.com> (tiny change)
Also consider label of a completionitem for snippets
@@ -104315,7 +104315,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/480
-2020-05-25 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
Andreii Kolomoiets <andreyk.mad@gmail.com>
Rework computation of string given to eldoc (again)
@@ -104334,7 +104334,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/459
-2020-05-25 Philipp Stephani <p.stephani2@gmail.com>
+2023-04-15 Philipp Stephani <p.stephani2@gmail.com>
João Távora <joaotavora@gmail.com>
Fix type error in eglot--xref-make-match
@@ -104347,7 +104347,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/488
-2020-05-21 Rudolf Schlatte <rudi@constantly.at>
+2023-04-15 Rudolf Schlatte <rudi@constantly.at>
Add support for erlang_ls
@@ -104357,19 +104357,19 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/471
-2020-05-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from nahuel/patch-1
GitHub-reference: https://github.com/jwiegley/use-package/issues/843
-2020-05-20 Nahuel Greco <ngreco@gmail.com>
+2023-04-15 Nahuel Greco <ngreco@gmail.com>
typo, should be a vector, not a bytecode object
Solves https://github.com/jwiegley/use-package/issues/842
-2020-05-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Correctly place diagnostics in narrowed buffers
@@ -104378,7 +104378,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/479
-2020-05-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Require xref, project and eldoc from gnu elpa
@@ -104387,7 +104387,7 @@
* eglot.el (Package-Requires): Require Xref, Project and Eldoc
from GNU ELPA.
-2020-05-14 Dan Davison <dandavison7@gmail.com>
+2023-04-15 Dan Davison <dandavison7@gmail.com>
Prompt for executable if supplied name does not exist
@@ -104397,7 +104397,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/474
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/478
-2020-05-12 Dan Davison <dandavison7@gmail.com> (tiny change)
+2023-04-15 Dan Davison <dandavison7@gmail.com> (tiny change)
Don't call flymake report function if flymake is disabled
@@ -104409,7 +104409,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/468
-2020-05-09 John Lee <jjl@pobox.com> (tiny change)
+2023-04-15 John Lee <jjl@pobox.com> (tiny change)
Add special value back again, in case needed for backwards compat
@@ -104417,7 +104417,7 @@
The additional `t' in the macro expansion is accidental but not harmful I guess.
-2020-05-09 John Lee <jjl@pobox.com> (tiny change)
+2023-04-15 John Lee <jjl@pobox.com> (tiny change)
Even when there's no :config, run any pre/post config hooks
@@ -104435,7 +104435,7 @@
Fixes https://github.com/jwiegley/use-package/issues/785
-2020-05-07 Tobias Rittweiler <trittweiler@gmail.com>
+2023-04-15 Tobias Rittweiler <trittweiler@gmail.com>
Fix "free variable" warning
@@ -104445,14 +104445,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/460
-2020-05-06 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
Remove trailing whitespaces
* eglot.el (defvar company-backends, eglot-code-actions):
Remove trailing whitespace
-2020-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify bug-reporting instructions
@@ -104463,7 +104463,7 @@
* eglot.el (eglot-events-buffer): Can work with no server.
-2020-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Survive hover responses with empty markdown strings
@@ -104471,7 +104471,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/433
-2020-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remap display-local-help (c-h .) to eglot-help-at-point
@@ -104481,7 +104481,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/437
-2020-05-03 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
João Távora <joaotavora@gmail.com>
Tweak handling of eldoc-echo-area-use-multiline-p
@@ -104495,7 +104495,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/443
-2020-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fontify markdown source code blocks by default
@@ -104504,7 +104504,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/408
-2020-05-02 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Declare markdown support iff gfm-view-mode installed
@@ -104513,7 +104513,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/408
-2020-05-02 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
João Távora <joaotavora@gmail.com>
Always string-trim markup
@@ -104524,7 +104524,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/450
-2020-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Kind of honour eldoc-echo-area-use-multiline-p
@@ -104538,7 +104538,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/443
-2020-05-02 Dan Davison <dandavison7@gmail.com>
+2023-04-15 Dan Davison <dandavison7@gmail.com>
Unbreak eglot--guess-contact for host-and-port case
@@ -104547,7 +104547,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/446
-2020-05-02 Dan Davison <dandavison7@gmail.com>
+2023-04-15 Dan Davison <dandavison7@gmail.com>
João Távora <joaotavora@gmail.com>
Tweak docstring of eglot-server-programs
@@ -104555,7 +104555,7 @@
* eglot.el (eglot-server-programs): Fix typos and phrasing.
-2020-05-02 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Support hierarchical documentsymbol in eglot-imenu
@@ -104573,7 +104573,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/303
-2020-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Also check types when destructuring lsp objects
@@ -104595,7 +104595,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/452
-2020-04-27 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
João Távora <joaotavora@gmail.com>
Hide eldoc-message on empty hover info
@@ -104608,7 +104608,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/439
-2020-04-27 Tobias Rittweiler <trittweiler@gmail.com>
+2023-04-15 Tobias Rittweiler <trittweiler@gmail.com>
Tests: print contents of *eglot ...* buffers in batch mode.
@@ -104639,7 +104639,7 @@
verbatim out of `eglot--call-with-fixture` in order to lower the
latter's LOC.
-2020-04-24 Trevor Murphy <trevormurphy@google.com>
+2023-04-15 Trevor Murphy <trevormurphy@google.com>
Create match xrefs when possible
@@ -104652,11 +104652,11 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/435
-2020-04-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-put-doc-in-help-buffer): tiny docstring fix.
-2020-04-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't reupdate help buffer if already rendered
@@ -104665,7 +104665,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/445
-2020-04-23 Andrii Kolomoiets <andreyk.mad@gmail.com>
+2023-04-15 Andrii Kolomoiets <andreyk.mad@gmail.com>
Use text-mode for plaintext markup
@@ -104674,7 +104674,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/444
-2020-04-16 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Update dependencies and copyright years
@@ -104682,7 +104682,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/413
-2020-04-16 Theodor Thornhill <theo@thornhill.no>
+2023-04-15 Theodor Thornhill <theo@thornhill.no>
João Távora <joaotavora@gmail.com>
Simplify a bit of code
@@ -104693,13 +104693,13 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/397
-2020-04-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 1.6
* NEWS.md: Bump to 1.6
-2020-04-16 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
João Távora <joaotavora@gmail.com>
Abide by lsp when reporting and moving to columns
@@ -104713,7 +104713,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/361
-2020-04-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix eglot-move-to-lsp-abiding-column ()
@@ -104726,7 +104726,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/361
-2020-04-16 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Send shutdown and exit messages without arguments
@@ -104740,14 +104740,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/430
-2020-03-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jwiegley/johnw/clarify
Clarify the documentation for :after
GitHub-reference: https://github.com/jwiegley/use-package/issues/820
-2020-03-20 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Ignore empty hover info
@@ -104758,11 +104758,11 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/425
-2020-03-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Clarify the documentation for :after
-2020-01-13 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Make a public reader for project-nickname
@@ -104775,7 +104775,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/354
-2020-01-13 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Add public hook eglot-managed-mode-hook
@@ -104790,7 +104790,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/182
-2020-01-13 Vladimir Panteleev <git@thecybershadow.net> (tiny change)
+2023-04-15 Vladimir Panteleev <git@thecybershadow.net> (tiny change)
Introduce and use eglot--{}, the empty json object
@@ -104799,7 +104799,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/315
-2020-01-13 Vladimir Panteleev <git@thecybershadow.net> (tiny change)
+2023-04-15 Vladimir Panteleev <git@thecybershadow.net> (tiny change)
Call shutdown/exit methods with params:{}, not null
@@ -104811,7 +104811,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/315
-2020-01-09 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Support bug-reference-prog-mode
@@ -104820,11 +104820,11 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/405
-2020-01-08 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Revert the last change about column calculation
-2020-01-08 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Document the changes in column calculation
@@ -104834,7 +104834,7 @@
* NEWS.md: Log the change here as well.
-2020-01-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Abide by lsp when reporting and moving to columns
@@ -104845,7 +104845,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/361
-2020-01-05 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Merge pull request from joaotavora/scratch/fix-277-exit-notification
@@ -104853,7 +104853,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/400
-2020-01-05 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Send exit as a notification
@@ -104865,7 +104865,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/277
-2020-01-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Avoid double shutdowns and simplify shutdown logic
@@ -104875,7 +104875,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/389
-2020-01-02 Theodor Thornhill <theo@thornhill.no> (tiny change)
+2023-04-15 Theodor Thornhill <theo@thornhill.no> (tiny change)
João Távora <joaotavora@gmail.com>
Use completing-read in eglot-code-actions
@@ -104886,13 +104886,13 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/393
-2019-12-30 Evgeni Kolev <evgenysw@gmail.com>
+2023-04-15 Evgeni Kolev <evgenysw@gmail.com>
* eglot.el (eglot-eldoc-function): fix outdated docstring.
Fix https://github.com/joaotavora/eglot/issues/387
-2019-12-28 Steve Purcell <steve@sanityinc.com>
+2023-04-15 Steve Purcell <steve@sanityinc.com>
João Távora <joaotavora@gmail.com>
Add elm-language-server as the language server for elm
@@ -104903,7 +104903,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/383
-2019-12-26 Theodor Thornhill <theo@thornhill.no> (tiny change)
+2023-04-15 Theodor Thornhill <theo@thornhill.no> (tiny change)
João Távora <joaotavora@gmail.com>
New eglot-confirm-server-initiated-edits defcustom
@@ -104912,7 +104912,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/382
-2019-12-18 Augusto Stoffel <arstoffel@gmail.com> (tiny change)
+2023-04-15 Augusto Stoffel <arstoffel@gmail.com> (tiny change)
Add built-in support for tex and friends
@@ -104926,7 +104926,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/379
-2019-12-17 Antoine Kalmbach <ane@iki.fi> (tiny change)
+2023-04-15 Antoine Kalmbach <ane@iki.fi> (tiny change)
Add metals as the language server for scala
@@ -104936,7 +104936,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/376
-2019-12-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Allow non-standard keys in textdocument/publishdiagnostics.
@@ -104945,7 +104945,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/357
-2019-11-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak window/showmessagerequest
@@ -104954,20 +104954,20 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/362
-2019-11-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from DamienCassou/typos
Fix typos
GitHub-reference: https://github.com/jwiegley/use-package/issues/808
-2019-11-26 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Fix typos
Typos found with codespell.
-2019-11-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Resolve compilation warnings
@@ -104978,7 +104978,7 @@
(eglot--maybe-activate-editing-mode): use it.
(eglot-completion-at-point): Don't use insertTextFormat.
-2019-11-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Locally tweak imenu-create-index-function
@@ -104987,7 +104987,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/351
-2019-11-18 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Fail when eglot-find-* finds no references
@@ -104996,7 +104996,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/339
-2019-11-17 Xu Chunyang <4550353+xuchunyang@users.noreply.github.com> (tiny change)
+2023-04-15 Xu Chunyang <4550353+xuchunyang@users.noreply.github.com> (tiny change)
Waste less space in completion annotations
@@ -105004,11 +105004,11 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/349
-2019-11-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-completion-at-point): remove spurious unrelated change.
-2019-11-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Ensure process starts in project's root
@@ -105019,7 +105019,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/330
-2019-11-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Let other imenu functions work if lsp server's doesn't
@@ -105031,7 +105031,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/343
-2019-11-13 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Support serverinfo of lsp 3.15.0
@@ -105056,7 +105056,7 @@
(eglot--connect): Store server-info and display server's name
when connected.
-2019-11-12 r-zip <rzpilgrim@gmail.com> (tiny change)
+2023-04-15 r-zip <rzpilgrim@gmail.com> (tiny change)
Set nobreak-char-display to nil in *eglot-help*
@@ -105064,7 +105064,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/345
-2019-11-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Protect against empty-string inserttext in completions
@@ -105073,7 +105073,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/341
-2019-11-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Provide stable eglot-current-server helper
@@ -105097,14 +105097,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/342
-2019-11-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsiiformes/typos
Fix typos
GitHub-reference: https://github.com/jwiegley/use-package/issues/804
-2019-11-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't choke on workspace/configuration with no scopeuri
@@ -105112,24 +105112,24 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/340
-2019-11-06 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Fix typos
-2019-11-05 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Only set eglot--cached-current-server by (more aggressive) caching
* eglot.el (eglot--current-server): Always set cache value.
(eglot--maybe-activate-editing-mode): No need to set cached server.
-2019-11-05 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Simplify "maybe"-activation, dump "server" arg
* eglot.el (eglot--maybe-activate-editing-mode): Remove `server' arg.
-2019-11-01 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Merge -onoff proxy code into minor mode function
@@ -105144,7 +105144,7 @@
(eglot--managed-mode): Adopt code.
(eglot--managed-mode-off): New minimal wrapper.
-2019-10-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use completionitem/resolve more abundantly
@@ -105161,7 +105161,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/50
-2019-10-28 Xu Chunyang <4550353+xuchunyang@users.noreply.github.com> (tiny change)
+2023-04-15 Xu Chunyang <4550353+xuchunyang@users.noreply.github.com> (tiny change)
Support markdown for textdocument/hover ()
@@ -105172,13 +105172,13 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/329
-2019-10-27 Xu Chunyang <4550353+xuchunyang@users.noreply.github.com> (tiny change)
+2023-04-15 Xu Chunyang <4550353+xuchunyang@users.noreply.github.com> (tiny change)
Don't run mode hooks in eglot--format-markup
* eglot.el (eglot--format-markup): Use delay-mode-hooks.
-2019-10-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support workspace/configuration
@@ -105194,7 +105194,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/326
-2019-10-24 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Expand readme.md section on handling quirky servers
@@ -105204,20 +105204,20 @@
* eglot.el (eglot-initialization-options eglot-cquery): Remove.
-2019-10-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak imenu
* eglot.el (eglot-imenu): Unbreak.
-2019-10-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Force company to align completion annotations in eglot sessions
* eglot.el (eglot--managed-mode): force
company-tooltip-align-annotations to t.
-2019-10-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix race condition when company-completing quickly
@@ -105253,7 +105253,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/319
-2019-10-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak m-x vc-revert, which reverts preserving modes
@@ -105269,7 +105269,7 @@
(eglot--after-revert-hook): Signal didOpen when preserving-modes.
(eglot--maybe-activate-editing-mode): Tweak comment.
-2019-10-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
(again): fix issue with replace-buffer-contents
@@ -105282,13 +105282,13 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/259
-2019-10-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 1.5
* NEWS.md: update.
-2019-10-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Let user keep control of some variables during eglot sessions
@@ -105301,7 +105301,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/324
-2019-10-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't immediately request completions in eglot-completion-at-point
@@ -105317,7 +105317,7 @@
* eglot.el (eglot-completion-at-point): Request completions
asynchronously.
-2019-10-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Protect against zero-length completions
@@ -105326,7 +105326,7 @@
* eglot.el (eglot-completion-at-point): Protect against
zero-length completions.
-2019-10-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't choke on single-location reply to td/definition
@@ -105335,20 +105335,20 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/321
-2019-10-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak eglot--setq-saving if symbol is unbound
* eglot.el (eglot--setq-saving): check if symbol is bound
-2019-10-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use of company-capf backend in eglot-managed buffers
* eglot.el (company-backends): forward-declare
(eglot--managed-mode): Force company-backends to company-capf
-2019-10-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Play along with lsp's filtertext hacks
@@ -105385,7 +105385,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/235
-2019-10-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Always filter completions client-side by prefix
@@ -105398,14 +105398,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/319
-2019-10-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix bug in workspace/didchangewatchedfiles
* eglot.el (eglot-register-capability): Fix a bug and a couple of
warnings.
-2019-10-15 Tom Tromey <tom@tromey.com>
+2023-04-15 Tom Tromey <tom@tromey.com>
Add support for the ada language server
@@ -105415,7 +105415,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/316
-2019-10-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix eglot-completion-at-point to work with bare completion-at-point
@@ -105444,7 +105444,7 @@
* eglot.el (eglot-completion-at-point): Rework.
-2019-10-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak xref-find-definitions
@@ -105456,7 +105456,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/318
-2019-10-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Misc improvements to the xref glue code
@@ -105465,7 +105465,7 @@
(eglot--handling-xrefs): Remove.
(xref-backend-apropos, eglot--lsp-xrefs-for-method): Use eglot--collecting-xrefs.
-2019-10-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rework and correct major part of xref glue code
@@ -105506,7 +105506,7 @@
(eglot-find-declaration, eglot-find-implementation)
(eglot-find-typeDefinition): Use eglot--lsp-xref-helper.
-2019-10-11 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Support goto-{declaration, implementation, typedefinition}
@@ -105522,7 +105522,7 @@
* eglot.el (eglot-client-capabilities): Add new capabilities.
(eglot-ignored-server-capabilites): Add new capability.
-2019-10-05 ambihelical <ambihelical@users.noreply.github.com> (tiny change)
+2023-04-15 ambihelical <ambihelical@users.noreply.github.com> (tiny change)
João Távora <joaotavora@gmail.com>
Allow user to set idle time to wait before processing changes
@@ -105532,7 +105532,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/258
-2019-10-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Much less noisy mode line
@@ -105540,7 +105540,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/236
-2019-10-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak elm language server which does use :triggercharacters
@@ -105553,7 +105553,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/285
-2019-10-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Revert "treat null/nil server capabilities as false"
@@ -105565,7 +105565,7 @@
https://github.com/microsoft/language-server-protocol/issues/830#issuecomment-537849292
for a clarification from the LSP maintainer.
-2019-10-05 Vladimir Panteleev <git@thecybershadow.net> (tiny change)
+2023-04-15 Vladimir Panteleev <git@thecybershadow.net> (tiny change)
Don't send dummy json object in "initialized" notification ()
@@ -105594,7 +105594,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/312
-2019-10-05 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
João Távora <joaotavora@gmail.com>
Optionally shutdown after killing last buffer of managed project ()
@@ -105607,7 +105607,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/309
-2019-10-05 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
João Távora <joaotavora@gmail.com>
On buffer kill, first send didclose then teardown local structures
@@ -105616,7 +105616,7 @@
* eglot.el (eglot-managed-mode): Fix order in `kill-buffer-hook'
-2019-09-26 galeo <galeo@users.noreply.github.com> (tiny change)
+2023-04-15 galeo <galeo@users.noreply.github.com> (tiny change)
Also use signature label offsets for parameter info
@@ -105633,7 +105633,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/272
-2019-09-24 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Merge pull request from jorams/nil-capabilities-as-false
@@ -105641,7 +105641,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/298
-2019-09-23 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Use gopls server as the default for go ()
@@ -105654,7 +105654,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/304
-2019-09-20 Joram Schrijver <i@joram.io> (tiny change)
+2023-04-15 Joram Schrijver <i@joram.io> (tiny change)
Treat null/nil server capabilities as false
@@ -105670,7 +105670,7 @@
* eglot.el (eglot--server-capable): Change the handling of null values
for capabilities to treat them as false instead of true.
-2019-09-10 Felicián Németh <felician.nemeth@gmail.com>
+2023-04-15 Felicián Németh <felician.nemeth@gmail.com>
Change the default of eglot-move-to-column-function
@@ -105681,7 +105681,7 @@
* eglot.el (eglot-move-to-column): New function.
(eglot-move-to-column-function): Use it as default.
-2019-08-18 David Florness <edwargix@gmail.com> (tiny change)
+2023-04-15 David Florness <edwargix@gmail.com> (tiny change)
Require array package to use current-line ()
@@ -105699,7 +105699,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/294
-2019-08-12 Jürgen Hötzel <juergen@archlinux.org>
+2023-04-15 Jürgen Hötzel <juergen@archlinux.org>
Expand directory watcher globs containing ** ()
@@ -105718,7 +105718,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/293
-2019-07-18 Jürgen Hötzel <juergen@hoetzel.info> (tiny change)
+2023-04-15 Jürgen Hötzel <juergen@hoetzel.info> (tiny change)
Fix invalid guess for php language server ()
@@ -105728,24 +105728,24 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/288
-2019-07-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use `require', not `load', when byte-compiling ()
Use `require', not `load', when byte-compiling
GitHub-reference: https://github.com/jwiegley/use-package/issues/783
-2019-07-16 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Update tests
Switch from `require' to `load' + `featurep'
-2019-07-12 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Use `require', not `load', when byte-compiling
-2019-07-02 haqle314 <16577773+haqle314@users.noreply.github.com> (tiny change)
+2023-04-15 haqle314 <16577773+haqle314@users.noreply.github.com> (tiny change)
Fix a typo
@@ -105754,7 +105754,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/273
-2019-06-27 Ingo Lohmar <ingo.lohmar@posteo.net>
+2023-04-15 Ingo Lohmar <ingo.lohmar@posteo.net>
Simplify eldoc usage ()
@@ -105769,7 +105769,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/269
-2019-06-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Leniently handle invalid positions sent by some servers
@@ -105778,7 +105778,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/273
-2019-06-20 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
update bind-chords to use of eval-after-load when maps declared
@@ -105787,13 +105787,13 @@
also add tests for use-package-chords to cover these test cases
-2019-06-14 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
rename function
extract use-package-hook-handler-flatten-mode-symbols function
-2019-06-14 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
use `use-package-as-one` for normalizing `:ensure-system-package`
@@ -105816,20 +105816,20 @@
(prettier . "npm i -g prettier"))
```
-2019-05-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Make custom-face evaluate elisp. ()
Make custom-face evaluate elisp.
GitHub-reference: https://github.com/jwiegley/use-package/issues/773
-2019-05-29 Vincent Zhang <seagle0128@gmail.com> (tiny change)
+2023-04-15 Vincent Zhang <seagle0128@gmail.com> (tiny change)
Make custom-face evaluate elisp
Fix https://github.com/jwiegley/use-package/issues/696.
-2019-05-12 Akash Hiremath <akashh246@gmail.com> (tiny change)
+2023-04-15 Akash Hiremath <akashh246@gmail.com> (tiny change)
Add built-in support for elixir's elixir-ls ()
@@ -105839,7 +105839,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/264
-2019-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Work around a bug in emacs's change detection
@@ -105860,7 +105860,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/259
-2019-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix case when eglot-put-doc-in-help-buffer is nil
@@ -105868,7 +105868,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/263
-2019-05-08 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Only consider eglot's own diagnostics in eglot-code-actions
@@ -105877,7 +105877,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/260
-2019-04-30 vjoki <vjoki@users.noreply.github.com> (tiny change)
+2023-04-15 vjoki <vjoki@users.noreply.github.com> (tiny change)
Fix local function call in directory watcher ()
@@ -105887,7 +105887,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/255
-2019-04-14 Naoya Yamashita <conao3@gmail.com>
+2023-04-15 Naoya Yamashita <conao3@gmail.com>
* use-package-core.el (use-package): fix declare style
@@ -105899,18 +105899,18 @@
(declare (indent defun)) is same effect.
And it is useful when redefining use-package.
-2019-04-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from stribb/master
Add a line of documentation for (use-pacakage ... :hook).
GitHub-reference: https://github.com/jwiegley/use-package/issues/759
-2019-04-04 Andrew Stribblehill <stribb@gmail.com> (tiny change)
+2023-04-15 Andrew Stribblehill <stribb@gmail.com> (tiny change)
Add a line of documentation for (use-pacakage ... :hook)
-2019-02-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak build
@@ -105920,11 +105920,11 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/220
-2019-02-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (xref-backend-references): don't use return-from.
-2019-02-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't sort xref's by default
@@ -105936,7 +105936,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/220
-2019-02-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use a less buggy flymake
@@ -105944,7 +105944,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/223
-2019-02-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't teardown company if started via trigger chars
@@ -105953,7 +105953,7 @@
* eglot.el (eglot-completion-at-point): More carefully calculate
:company-prefix-length
-2019-01-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Consider mode derivation when guessing servers
@@ -105962,7 +105962,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/177
-2019-01-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Protect against null messages from eldoc
@@ -105970,7 +105970,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/209
-2019-01-10 Sergey Kostyaev <s-kostyaev@users.noreply.github.com>
+2023-04-15 Sergey Kostyaev <s-kostyaev@users.noreply.github.com>
Fix bug introduced by commit fixing this issue
@@ -105978,7 +105978,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/121
-2019-01-09 Brady Trainor <mail@bradyt.com> (tiny change)
+2023-04-15 Brady Trainor <mail@bradyt.com> (tiny change)
Add built-in support for dart's dart_language_server
@@ -105989,7 +105989,7 @@
* eglot.el (eglot-server-programs): Add dart_language_server.
-2019-01-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle label offsets in parameterinformation
@@ -106001,13 +106001,13 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/201
-2019-01-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Display truncated docstring if too large for echo area
* eglot.el (eglot--eldoc-message): Display first line doc.
-2019-01-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rename new defcustoms with friendlier names
@@ -106019,7 +106019,7 @@
eglot-auto-display-eldoc-extra-buffer.
(eglot--eldoc-message): Use new variable names.
-2019-01-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix test failure introduced by previous commit
@@ -106044,7 +106044,7 @@
(eglot-eldoc-function): Set eglot--eldoc-hint for synchronous
operation too.
-2019-01-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Show large docs in help buffer instead of echo are by default
@@ -106059,7 +106059,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/198
-2019-01-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prevent eldoc flicker when moving around
@@ -106068,7 +106068,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/198
-2019-01-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle (un)registercapability requests via generic functions
@@ -106084,7 +106084,7 @@
workspace/didChangeWatchedFiles)): Rename from
eglot--unregister-workspace/didChangeWatchedFiles.
-2019-01-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Appease checkdoc
@@ -106092,11 +106092,11 @@
(eglot--pre-command-hook, eglot--before-change)
(eglot--eclipse-jdt-contact): Fix docstrings.
-2019-01-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-workspace-configuration): safe when listp.
-2019-01-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Run connection hooks with proper dir-locals
@@ -106117,7 +106117,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/196
-2019-01-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Allow read-only modes for markup rendering
@@ -106129,7 +106129,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/197
-2018-12-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove a hard dependency on flymake-mode
@@ -106138,14 +106138,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/195
-2018-12-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Slightly simplify eglot-completion-at-point
* eglot.el (eglot-completion-at-point): Don't propertize
completion string with all LSP properties.
-2018-12-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Actually make completion sorting work
@@ -106153,7 +106153,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/190
-2018-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix previous commit where workaround had been removed
@@ -106161,7 +106161,7 @@
* eglot.el (eglot-completion-at-point): set local var strings.
-2018-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use gfm-view-mode
@@ -106169,7 +106169,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/188
-2018-12-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove workaround for company bug that has been fixed
@@ -106178,11 +106178,11 @@
* eglot.el (eglot-completion-at-point): Remove workaround for
company-mode bug.
-2018-12-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (package-requires): require jsonrpc 1.0.7.
-2018-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Take over flymake and eldoc completely while managing buffers
@@ -106210,7 +106210,7 @@
helpers.
(eglot--managed-mode): Use them.
-2018-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Be more careful when making xref summaries
@@ -106219,26 +106219,26 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/187
-2018-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't make bogus responses to client/(un)registercapability
* eglot.el (eglot--register-unregister): Response is void.
-2018-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add edebug specs to destructuring macros
* eglot.el (eglot--dbind, eglot--lambda, eglot--dcase): Add edebug
specs.
-2018-12-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rewrite eglot--sig-info a bit for readability
* eglot.el (eglot--sig-info): Rewrite a bit.
-2018-12-16 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
Adjust active param highlighting in first line of signature (3/3)
@@ -106247,7 +106247,7 @@
* eglot.el (eglot--sig-info): Simplify.
-2018-12-16 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
Adjust active param highlighting in first line of signature (2/3)
@@ -106257,7 +106257,7 @@
* eglot.el (eglot--sig-info): Use `re-search-forward`.
-2018-12-16 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
Adjust active param highlighting in first line of signature (1/3)
@@ -106269,7 +106269,7 @@
* eglot.el (eglot--sig-info): Search for active parameter within
`params-start` and `params-end`.
-2018-12-16 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
+2023-04-15 Fredrik Bergroth <fbergroth@gmail.com> (tiny change)
Apply eglot--format-markup to signature documentation
@@ -106277,11 +106277,11 @@
* eglot.el (eglot--sig-info): Call eglot--format-markup on signature
documentation.
-2018-12-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 1.3
-2018-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Be lenient by default to unknown methods or notifications
@@ -106290,14 +106290,14 @@
(eglot-handle-notification, eglot-handle-request): Check
eglot-strict-mode.
-2018-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle array params to server notification or requests
* eglot.el (eglot-handle-notification): Remove extraneous id
(eglot--connect): If params is an array, make it a list.
-2018-12-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Scratch/use elpa flymake ()
@@ -106312,7 +106312,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/178
-2018-12-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Warn about suspicious interface usage at compile-time
@@ -106328,7 +106328,7 @@
compile-time-helpers.
(eglot--dbind, eglot--dcase): Use new helpers.
-2018-12-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use eglot--dbind and eglot--lambda throughout
@@ -106348,7 +106348,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/144
-2018-12-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Adjust previous fix
@@ -106360,7 +106360,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/173
-2018-12-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix bug introduced by previous fix
@@ -106368,7 +106368,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/173
-2018-12-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle codeaction/command polymorphism with eglot--dcase
@@ -106381,7 +106381,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/164
-2018-12-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Robustify previous fix against non-standard insertion bindings
@@ -106393,7 +106393,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/173
-2018-12-03 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Properly clear old diagnostics when making new ones
@@ -106403,7 +106403,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/159
-2018-12-02 Mario Rodas <marsam@users.noreply.github.com> (tiny change)
+2023-04-15 Mario Rodas <marsam@users.noreply.github.com> (tiny change)
Use javascript-typescript-langserver for typescript-mode ()
@@ -106413,7 +106413,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/174
-2018-12-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support completioncontext to help servers like ccls
@@ -106424,7 +106424,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/173
-2018-12-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't break in indirect buffers
@@ -106438,7 +106438,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/116
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/150
-2018-12-01 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Use eglot--dbind for destructuring
@@ -106449,7 +106449,7 @@
(eglot-code-actions): Use eglot--lambda.
(eglot--register-workspace/didChangeWatchedFiles): Use eglot--lambda.
-2018-11-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Introduce eglot--dcase
@@ -106461,7 +106461,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/171
GitHub-reference: per https://github.com/joaotavora/eglot/issues/156
-2018-11-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify interface of eglot--dbind macro
@@ -106474,7 +106474,7 @@
* eglot-tests.el (eglot-strict-interfaces):
Add a new test clause.
-2018-11-28 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Touch up last commit
@@ -106482,7 +106482,7 @@
(eglot-current-column-function): Use it as value and mention in docstring.
(eglot--xref-make): Use eglot-current-column.
-2018-11-27 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
* eglot.el (eglot--current-column): new helper.
@@ -106490,7 +106490,7 @@
(eglot--pos-to-lsp-position): Don't bind tab-width anymore.
(eglot--xref-make): Use eglot--current-column.
-2018-11-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve performance of xref summary line collection
@@ -106503,7 +106503,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/52
GitHub-reference: per https://github.com/joaotavora/eglot/issues/127
-2018-11-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use entire line as xref summary when available
@@ -106515,7 +106515,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/52
-2018-11-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Revert "codeaction command can be a command object ()"
@@ -106526,7 +106526,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/164
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/165
-2018-11-23 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Codeaction command can be a command object ()
@@ -106536,7 +106536,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/164
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/165
-2018-11-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Control strictness towards incoming lsp messages
@@ -106565,13 +106565,13 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/144
GitHub-reference: per https://github.com/joaotavora/eglot/issues/156
-2018-11-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 1.2
* eglot.el (eglot-completion-at-point): less chatter.
-2018-11-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Correctly insert textedit-less snippets
@@ -106582,7 +106582,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/167
-2018-11-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix potential security issue fontifying lsp doc
@@ -106601,7 +106601,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/154
-2018-11-22 Alex Branham <alex.branham@gmail.com> (tiny change)
+2023-04-15 Alex Branham <alex.branham@gmail.com> (tiny change)
Add support for r's languageserver ()
@@ -106611,7 +106611,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/161
-2018-11-21 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Properly delete inserted text after completion
@@ -106620,14 +106620,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/160
-2018-11-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from conao3/fix_default_value
fix gethash default value for use-package-statistics-time
GitHub-reference: https://github.com/jwiegley/use-package/issues/681
-2018-11-19 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Treat tab characters as 1 column wide in position conversion functions
@@ -106638,7 +106638,7 @@
(eglot--lsp-position-to-point): Call eglot-move-to-column-function
with tab-width bound to 1.
-2018-11-17 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Format documentation of signature parameters
@@ -106647,7 +106647,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/144
-2018-11-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add ability to report lsp-compliant columns
@@ -106658,14 +106658,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/125
-2018-11-13 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Add support for textedits in completion
* eglot.el (eglot-completion-at-point): Apply the CompletionItem's
:textEdit and :additionalTextEdits when they're present.
-2018-11-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak solution to with a hint from fangrui song
@@ -106673,7 +106673,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/125
-2018-11-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Complex completions work when chosen from *completions*
@@ -106682,7 +106682,7 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/148
-2018-11-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add ability to move to lsp-precise columns
@@ -106710,14 +106710,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/124
-2018-11-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsiiformes/silencio
Silence byte-compiler on Emacs 25
GitHub-reference: https://github.com/jwiegley/use-package/issues/733
-2018-11-10 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Silence byte-compiler on Emacs 25
@@ -106727,7 +106727,7 @@
anyway, so that there is no additional noise that would cause us to
potentially overlook warnings that absolutely have to be addressed.
-2018-11-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix a bug introduced by previous bugfix
@@ -106740,14 +106740,14 @@
* eglot.el (xref-backend-identifier-completion-table): Use vector.
-2018-11-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Move constants to top instead of forward-declaring
* eglot.el (eglot--symbol-kind-names, eglot--kind-names): Move to
top of file.
-2018-11-07 Mario Rodas <marsam@users.noreply.github.com> (tiny change)
+2023-04-15 Mario Rodas <marsam@users.noreply.github.com> (tiny change)
Support ocaml-language-server out of the box ()
@@ -106758,18 +106758,18 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/149
-2018-11-07 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
* eglot.el (eglot-client-capabilities): mention supported symbolkinds.
-2018-11-07 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Make imenu hierarchical
* eglot.el (eglot-imenu): Use :containerName to build a nested imenu
index alist.
-2018-11-04 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Fix a bug when response to definitions request is a single location
@@ -106777,7 +106777,7 @@
* eglot.el (xref-backend-definitions): Coerce response to a vector.
-2018-11-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify eglot-code-action. fix compilation warning
@@ -106786,7 +106786,7 @@
directly.
(eglot--code-action-kinds): Remove.
-2018-11-04 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Add support for code action literals
@@ -106797,14 +106797,14 @@
(eglot--code-action-kinds): New variable.
(eglot-code-actions): Apply provided WorkspaceEdit.
-2018-11-04 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Use the container name of a symbol in imenu
* eglot.el (eglot-imenu): Prepend :containerName to each symbol, when
provided.
-2018-10-31 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Don't ignore unknown symbolkinds in imenu
@@ -106814,14 +106814,14 @@
* eglot.el (eglot-imenu): Don't delete elements with unknown symbol
kind from the return list, instead put them in `(Unknown)` group.
-2018-10-31 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Remove duplicates from imenu
* eglot.el (eglot-imenu): Don't append the result list to itself,
which causes duplicates.
-2018-10-30 Alex Branham <alex.branham@gmail.com>
+2023-04-15 Alex Branham <alex.branham@gmail.com>
Require subr-x at compile time ()
@@ -106832,7 +106832,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/139
-2018-10-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Accept deprecated field in symbolinformation
@@ -106841,14 +106841,14 @@
GitHub-reference: fix https://github.com/joaotavora/eglot/issues/138
-2018-10-24 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jwiegley/use-package-chords-suppress-compiler-message
prefix argument with _ to suppress Unused lexical argument warning
GitHub-reference: https://github.com/jwiegley/use-package/issues/713
-2018-10-24 Dale Sedivec <dale@codefu.org> (tiny change)
+2023-04-15 Dale Sedivec <dale@codefu.org> (tiny change)
Fix misspelling of "outstanding" ()
@@ -106857,17 +106857,17 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/74
-2018-10-18 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Handle case when project was not found in eclipse.jdt.ls contact
-2018-10-18 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Override eglot-execute-command for eclipse.jdt.ls server
* eglot.el (eglot-execute-command eglot-eclipse-jdt): New defmethod.
-2018-10-18 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Add support for eclipse.jdt.ls server
@@ -106878,7 +106878,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/63
-2018-10-18 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Allow function contacts to be interactive
@@ -106889,7 +106889,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/63
-2018-10-15 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Improve signature help
@@ -106898,7 +106898,7 @@
:label in signature's :label. Append to the result first sentence
of signature's :documentation, if present.
-2018-10-15 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Sort references and definitions by line number
@@ -106907,7 +106907,7 @@
(xref-backend-references):
(xref-backend-apropos): Use it.
-2018-10-15 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Merge pull request from mkcms/fix-diagnostics-wrong-type-argument
@@ -106915,14 +106915,14 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/104
-2018-10-15 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Handle case when diagnostic :character is out of range
* eglot.el (eglot-handle-notification): Don't error out when
flymake-diag-region returns nil.
-2018-10-15 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Eglot-ignored-server-capabilites: prefer all choices over "other"
@@ -106932,7 +106932,7 @@
* eglot.el (eglot-ignored-server-capabilites): Make the "Other" choice
the last possible option.
-2018-10-03 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Make eglot-ignored-server-capabilites more user-friendly ()
@@ -106941,7 +106941,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/126
-2018-09-24 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Correctly map documentsymbol's :kind to its name ()
@@ -106954,7 +106954,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/121
-2018-09-24 whatacold <whatacold@gmail.com> (tiny change)
+2023-04-15 whatacold <whatacold@gmail.com> (tiny change)
Autoload eglot-ensure ()
@@ -106963,7 +106963,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/120
-2018-09-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't block kill-buffer-hook if server somehow hangs
@@ -106972,14 +106972,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/115
-2018-09-13 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
Merge pull request from lrochfort/ensure-system-package_use-sudo
[Fix https://github.com/jwiegley/use-package/issues/720] Install system packages using system-packages-install
GitHub-reference: https://github.com/jwiegley/use-package/issues/721
-2018-09-12 Laurence Rochfort <laurence.rochfort@gmail.com> (tiny change)
+2023-04-15 Laurence Rochfort <laurence.rochfort@gmail.com> (tiny change)
[] Install system packages using system-packages-install
@@ -106999,7 +106999,7 @@
list of conses causes nil to used as the package to install.
GitHub-reference: fix https://github.com/jwiegley/use-package/issues/720
-2018-09-08 Aleksey Kladov <aleksey.kladov@gmail.com> (tiny change)
+2023-04-15 Aleksey Kladov <aleksey.kladov@gmail.com> (tiny change)
Don't send other notifications before initialized
@@ -107009,7 +107009,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/100
-2018-09-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prefer ccls over cquery for c/c++
@@ -107019,7 +107019,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/94
-2018-09-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix serious breakage introduced by
@@ -107029,7 +107029,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/93
-2018-09-07 Fangrui Song <i@maskray.me>
+2023-04-15 Fangrui Song <i@maskray.me>
Don't warn on implementation-specific notifications ()
@@ -107042,7 +107042,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/93
-2018-08-27 Evgeni Kolev <evgenysw@gmail.com> (tiny change)
+2023-04-15 Evgeni Kolev <evgenysw@gmail.com> (tiny change)
When exiting emacs, don't ask the user to confirm killing processes ()
@@ -107052,7 +107052,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/83
-2018-08-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle case when :textdocumentsync isn't a number
@@ -107063,7 +107063,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/86
-2018-08-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Correctly delete text before expanding snippet completions
@@ -107074,7 +107074,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/82
-2018-08-20 Phillip Dixon <phillip.dixon@gmail.com> (tiny change)
+2023-04-15 Phillip Dixon <phillip.dixon@gmail.com> (tiny change)
Ignore extra keys in textdocument/publishdiagnostics ()
@@ -107087,7 +107087,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/81
-2018-08-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Consider :triggercharacters in company completion
@@ -107096,7 +107096,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/80
-2018-08-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve snippet support
@@ -107106,7 +107106,7 @@
(eglot-completion-at-point): Better annotations when snippets
are supported.
-2018-08-18 Evgeni Kolev <evgenysw@gmail.com> (tiny change)
+2023-04-15 Evgeni Kolev <evgenysw@gmail.com> (tiny change)
Add go-langserver ()
@@ -107116,7 +107116,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/74
-2018-08-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't error if server replies with empty hover message
@@ -107124,7 +107124,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/74
-2018-08-17 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Fix textdocument/hover responses where markedstring is a plist ()
@@ -107133,7 +107133,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/72
-2018-08-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support snippet completions
@@ -107147,7 +107147,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/50
-2018-08-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix eglot-capabilities when querying for multiple features
@@ -107158,14 +107158,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/74
-2018-08-13 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
prefix argument with _ to suppress Unused lexical argument warning
per @tarsius’s comment
https://github.com/jwiegley/use-package/commit/5d9c854a6cf12fff2326ee5653e87e2d3d550a8d#commitcomment-29996666
-2018-08-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prompt for server in interactive eglot-shutdown
@@ -107174,7 +107174,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/73
-2018-08-12 James Nguyen <james@jojojames.com>
+2023-04-15 James Nguyen <james@jojojames.com>
Add kotlin-language-server ()
@@ -107186,7 +107186,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/70
-2018-08-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle edits to same position in the correct order
@@ -107207,7 +107207,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/64
-2018-08-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Control the size of the events buffer
@@ -107216,7 +107216,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/41
-2018-08-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Implement asynchronous server connection
@@ -107245,7 +107245,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/68
-2018-08-11 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Kill server's output and events buffers from eglot-shutdown ()
@@ -107260,14 +107260,14 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/66
-2018-08-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve eglot-execute-command api to ease overriding by servers
* eglot.el (eglot-execute-command): COMMAND can be a symbol.
(eglot-code-actions): Pass symbols to eglot-command.
-2018-08-11 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Add a generic eglot-execute-command api
@@ -107275,21 +107275,21 @@
to request :workspace/executeCommand.
(eglot-code-actions): Use it.
-2018-08-11 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
* eglot.el (eglot-cquery): capitalize docstring.
-2018-08-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (advice-add jsonrpc-request): add &allow-other-keys
-2018-08-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Require jsonrpc.el 1.0.2 (gnu elpa didn't build 1.0.1)
* eglot.el (Package-Requires): Require jsonrpc 1.0.2
-2018-08-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Snappier completions that don't hinder typing
@@ -107301,7 +107301,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/61
-2018-08-09 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Notify server of recent changes before save notification
@@ -107310,11 +107310,11 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/60
-2018-08-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-initialization-options): fix spurious typo.
-2018-08-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Accept functions as entries in eglot-server-programs
@@ -107332,7 +107332,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/63
-2018-08-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot-workspace-configuration's keys needn't be keywords
@@ -107341,14 +107341,14 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/59
-2018-08-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Default eglot-handle-notifictiona|request must &allow-other-keys
* eglot.el (eglot-handle-notification, eglot-handle-request): Add
&allow-other-keys
-2018-08-03 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Fix placement of diagnostics with same start and end positions
@@ -107360,7 +107360,7 @@
are 0-based. Don't subtract 1 from :character, since both emacs and
LSP have 0-based columns.
-2018-08-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Erase company-doc buffer in between doc requests
@@ -107369,11 +107369,11 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/58
-2018-07-30 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
* eglot.el (eglot-client-capabilities): fix a typo.
-2018-07-28 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Implement textdocument/rangeformatting
@@ -107384,7 +107384,7 @@
* README.md (Commands and keybindings): Mention eglot-format.
(Language features): Tick textDocument/rangeFormatting.
-2018-07-28 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Correctly make lsp positions in narrowed buffers
@@ -107393,7 +107393,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/54
-2018-07-28 Väinö Järvelä <vaino.jarvela@gmail.com> (tiny change)
+2023-04-15 Väinö Järvelä <vaino.jarvela@gmail.com> (tiny change)
Fix typo in willsavewaituntil rpc request ()
@@ -107402,7 +107402,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/51
-2018-07-28 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Work around emacs bugs 32237, 32278 ()
@@ -107415,7 +107415,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/53
-2018-07-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Be less verbose when using eglot-ensure
@@ -107424,7 +107424,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/48
-2018-07-26 Alan Zimmerman <alan.zimm@gmail.com>
+2023-04-15 Alan Zimmerman <alan.zimm@gmail.com>
Add entry for haskell-ide-engine in eglot-server-programs ()
@@ -107432,7 +107432,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/49
-2018-07-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix messages of eglot-ensure
@@ -107440,7 +107440,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/48
-2018-07-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't turn on flymake-mode any more than is needed
@@ -107453,7 +107453,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/44
-2018-07-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Robustify in the face of manual mode changes
@@ -107476,14 +107476,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/44
-2018-07-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/autoload-keymap
Correct prefix keys after use-package-autoload-keymap
GitHub-reference: https://github.com/jwiegley/use-package/issues/686
-2018-07-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Implement workspace/didchangeconfiguration ()
@@ -107498,7 +107498,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/29
GitHub-reference: close https://github.com/joaotavora/eglot/issues/40
-2018-07-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle experimental/unknown server methods gracefully
@@ -107511,20 +107511,20 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/39
-2018-07-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jwiegley/ensure-system-package-filepath
allow :ensure-system-package to check the presence of files at path
GitHub-reference: https://github.com/jwiegley/use-package/issues/703
-2018-07-09 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
allow :ensure-system-package to check the presence of files at path
closes https://github.com/jwiegley/use-package/issues/660
-2018-07-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Jsonrpc.el is now a gnu elpa depedency
@@ -107541,11 +107541,11 @@
* jsonrpc-tests.el: Remove
-2018-07-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-completion-at-point): fix broken indentation
-2018-07-08 Ricardo Martins <ricardo@scarybox.net> (tiny change)
+2023-04-15 Ricardo Martins <ricardo@scarybox.net> (tiny change)
Format documentation in completion annotations
@@ -107557,7 +107557,7 @@
* eglot.el (eglot-completion-at-point): Use eglot--format-markup
-2018-07-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak completion when no possible annotation
@@ -107566,14 +107566,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/37
-2018-07-03 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from killdash9/patch-1
Place :chords at beginning of use-package-keywords
GitHub-reference: https://github.com/jwiegley/use-package/issues/697
-2018-07-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle outrageously large and buggy line numbers
@@ -107582,7 +107582,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/34
-2018-07-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Inhibit auto-reconnect until connection is established
@@ -107594,7 +107594,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/36
-2018-06-29 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Bind default-directory when launching servers
@@ -107604,24 +107604,24 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/33
-2018-06-28 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
Place :chords at beginning of use-package-keywords
When it is at the end, the keys don't get bound until after the package has been loaded, which is bad. Placing it at the beginning allows the key bindings to be mapped to auto-loaded functions before the package is loaded, so that a key chord press triggers the package load.
-2018-06-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from killdash9/patch-1
New style of auto-deferral for chords
GitHub-reference: https://github.com/jwiegley/use-package/issues/658
-2018-06-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge branch 'master' into patch-1
-2018-06-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Cache buffer's managing server
@@ -107632,7 +107632,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/32
-2018-06-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak imenu for cquery servers (and probably more)
@@ -107641,7 +107641,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/31
-2018-06-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Unbreak basic imenu functionality
@@ -107650,7 +107650,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/31
-2018-06-25 Ricardo Martins <1706+meqif@users.noreply.github.com> (tiny change)
+2023-04-15 Ricardo Martins <1706+meqif@users.noreply.github.com> (tiny change)
Fix typo in the solargraph server program
@@ -107659,14 +107659,14 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/30
-2018-06-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix some rather silly bugs in some interactive specs
* eglot.el (eglot-events-buffer, eglot-stderr-buffer)
(eglot-forget-pending-continuations): Fix interactive specs.
-2018-06-23 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Implement tcp autostart/autoconnect (and support ruby's solargraph)
@@ -107683,19 +107683,19 @@
(eglot--connect): Consider :autoport case.
(eglot--inferior-bootstrap): New helper.
-2018-06-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch 'jsonrpc-refactor', bump version to 1.0
* eglot.el (Version): Bump to 1.0
-2018-06-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.11
Merge master into jsonrpc-refactor (using imerge)
-2018-06-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Empty ranges are valid in lsp
@@ -107712,7 +107712,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/27
-2018-06-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Apply text edits as a single undoable edit
@@ -107728,7 +107728,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/22
-2018-06-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Report progress when applying edits
@@ -107742,7 +107742,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/23
-2018-06-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Apply text edits atomically
@@ -107753,13 +107753,13 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/22
-2018-06-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Defer textdocument/formatting requests
* eglot.el (eglot-format-buffer): Pass DEFERRED to eglot--request.
-2018-06-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify eglot-format-buffer
@@ -107779,7 +107779,7 @@
GitHub-reference: per https://github.com/joaotavora/eglot/issues/22
-2018-06-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Guess server for js2-mode and rjsx-mode
@@ -107791,7 +107791,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/26
-2018-06-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve eglot-ensure and mention it in readme.md
@@ -107803,7 +107803,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/25
-2018-06-16 Rami Chowdhury <460769+necaris@users.noreply.github.com> (tiny change)
+2023-04-15 Rami Chowdhury <460769+necaris@users.noreply.github.com> (tiny change)
Use gfm-mode for formatted strings ()
@@ -107812,7 +107812,7 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/20
-2018-06-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Minor cleanup to new textdocument/formatting feature
@@ -107823,7 +107823,7 @@
(eglot-format-buffer): Remove unused lexical variable before-point.
-2018-06-15 Michal Krzywkowski <k.michal@zoho.com>
+2023-04-15 Michal Krzywkowski <k.michal@zoho.com>
Implement formatting ()
@@ -107836,45 +107836,45 @@
GitHub-reference: https://github.com/joaotavora/eglot/issues/19
-2018-06-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jabranham/enable-lexical-binding
Enable lexical binding
GitHub-reference: https://github.com/jwiegley/use-package/issues/657
-2018-06-13 Alex Branham <alex.branham@gmail.com>
+2023-04-15 Alex Branham <alex.branham@gmail.com>
Fix use-package-normalize-function
Fix use-package-normalize-function tests
-2018-06-13 Alex Branham <alex.branham@gmail.com>
+2023-04-15 Alex Branham <alex.branham@gmail.com>
Enable lexical binding
This supersedes https://github.com/jwiegley/use-package/issues/617 and closes https://github.com/jwiegley/use-package/issues/648
-2018-06-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from taingra/master
Added an Introduction taken from the README
GitHub-reference: https://github.com/jwiegley/use-package/issues/692
-2018-06-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Update use-package.texi
-2018-06-13 Thomas Ingram <taingram@mtu.edu> (tiny change)
+2023-04-15 Thomas Ingram <taingram@mtu.edu> (tiny change)
Added an Introduction taken from the README
-2018-06-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.10
-2018-06-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix a bug when eglot--request times out
@@ -107882,11 +107882,11 @@
message.
(eglot--async-request): Must return the timer.
-2018-06-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-shutdown): accept timeout param.
-2018-06-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix bug in querying server capabilities
@@ -107895,13 +107895,13 @@
* eglot.el (eglot--server-capable): Fix bug.
-2018-06-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.9
Merge branch 'master' into jsonrpc-refactor
-2018-06-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
New eglot-ensure to put in a major-mode's hook
@@ -107919,7 +107919,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/17
-2018-06-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove connection grabbing antics from jsonrpc.el
@@ -107952,7 +107952,7 @@
* eglot-tests.el (auto-detect-running-server, auto-reconnect): Use
eglot--current-server.
-2018-06-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify jsonrpc status setting
@@ -107965,7 +107965,7 @@
(jsonrpc-clear-status): Delete.
(jsonrpc--connection-receive): Set last-error.
-2018-06-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Request dispatcher's return value determines response
@@ -107988,24 +107988,24 @@
(jsonrpc--connection-receive): Rework and simplify.
(jsonrpc-reply): Simplify.
-2018-06-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch 'master' into jsonrpc-refactor
-2018-06-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix indentation f@#$%^ by previous commit
Courtesy of aggressive-indent-mode... Agressive it is...
-2018-06-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Attempt to handle rls sophisticated globs for didchangewwatchedfiles
* eglot.el (eglot--wildcard-to-regexp): New helper.
(eglot--register-workspace/didChangeWatchedFiles): Use it.
-2018-06-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Check flymake-mode before calling report-fn
@@ -108013,11 +108013,11 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/16
-2018-06-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge master into jsonrpc-refactor
-2018-06-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify jsonrpc connection shutdown
@@ -108035,7 +108035,7 @@
* eglot-tests.el (auto-reconnect): Use jsonrpc--process.
(eglot--call-with-dirs-and-files): Use jsonrpc-running-p.
-2018-06-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support json.c. api purely based on classes
@@ -108090,7 +108090,7 @@
(rls-hover-after-edit): Correctly compare using string= and
non-keyword symbols.
-2018-06-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Slightly polish the flymake integration
@@ -108102,23 +108102,23 @@
(eglot--maybe-activate-editing-mode): Assume no diagnostics on
open.
-2018-06-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot--make-process): use 'utf-8-emacs-unix
Attempt to improve the situation reported in https://github.com/joaotavora/eglot/issues/14.
-2018-06-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge master into jsonrpc-refactor (using imerge)
-2018-06-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Shoosh compiler
* eglot.el (eglot-server-ready-p): Use cl-defmethod
-2018-06-05 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Cleanup the flymake 26.1 hack slightly
@@ -108134,7 +108134,7 @@
flymake-category.
(horrible hack at the end): Move the Flymake 26.1 hack here.
-2018-06-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support purposedly ignoring a server capability
@@ -108143,7 +108143,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/12
-2018-06-04 brotzeit <brotzeitmacher@gmail.com>
+2023-04-15 brotzeit <brotzeitmacher@gmail.com>
Fix typos
@@ -108152,7 +108152,7 @@
* eglot.el (eglot--all-major-modes)
(eglot--notify, eglot--xref-reset-known-symbols): Fix typos.
-2018-06-03 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Correct prefix keys after use-package-autoload-keymap
@@ -108164,20 +108164,20 @@
See https://github.com/justbur/emacs-which-key/issues/192
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix another merge-related bug in eglot-eldoc-function
* eglot.el (eglot-eldoc-function): Correctly destructure
eglot--range-region.
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-eldoc-function): remove spurious log message
* eglot.el (version): bump to 0.8
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix completionitem/resolve
@@ -108186,7 +108186,7 @@
* eglot.el (eglot-completion-at-point): Correctly pass properties
to completionItem/resolve.
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Explicitly trigger eldoc after workspace edits
@@ -108195,7 +108195,7 @@
* eglot.el (eglot--apply-workspace-edit): Call
eglot-eldoc-function.
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
New command m-x eglot-code-actions
@@ -108214,7 +108214,7 @@
(eglot--diag, advice-add flymake--highlight-line): Horrible hack.
(eglot--overlay-diag-props): Horrible hack.
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Revert an unfinished feature that made it to the last commit
@@ -108224,13 +108224,13 @@
Add MELPA badge
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add melpa badge
* README.mdown: Now in MELPA too
-2018-06-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prevent possible cquery choke on :initializationoptions
@@ -108238,15 +108238,15 @@
* eglot.el (eglot-initialization-options): Use `list'
-2018-05-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge master into jsonrpc-refactor (using imerge)
-2018-05-29 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.7
-2018-05-28 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More yak shaving
@@ -108258,7 +108258,7 @@
(eglot--signal-textDocument/didChange, eglot--apply-text-edits):
Simplify with eglot--widening.
-2018-05-28 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
New m-x eglot-stderr-buffer useful for debugging
@@ -108267,21 +108267,21 @@
(eglot--mode-line-format): Bind C-mouse-1 to new
eglot-stderr-buffer.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
On reconnection, ignore errors of shutting down hung server
* eglot.el
(eglot, eglot-reconnect): Ignore any errors on shutdown.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Be more criterious before running the idle timer
* eglot.el (eglot--change-idle-timer): make a defvar-local
(eglot--after-change): Only run timer if the buffer is live.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make eglot--recent-changes a simpler list
@@ -108294,7 +108294,7 @@
(eglot--signal-textDocument/didOpen): Use eglot--recent-changes as
a list.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Set eglot--versioned-identifier to 0 on didopen
@@ -108303,7 +108303,7 @@
* eglot.el (eglot--signal-textDocument/didOpen): Also set
eglot--versioned-identifier to 0.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Correctly apply workspace edits in documentchanges form
@@ -108311,11 +108311,11 @@
* eglot.el (eglot--apply-workspace-edit): Fix and simplify.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.6
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Hopefully fix the flymake bootstrap problem
@@ -108332,7 +108332,7 @@
* eglot-tests.el (rls-basic-diagnostics): Simplify test.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Set spinner in textdocument/didchange as it matters to rls
@@ -108343,7 +108343,7 @@
* eglot.el (eglot--signal-textDocument/didChange): Set the spinner
here.
-2018-05-27 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix assorted cquery-related bugs
@@ -108369,11 +108369,11 @@
(eglot--apply-text-edits): Use pcase-lambda.
(ert): require it.
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.5
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch 'cquery-support' into master
@@ -108389,7 +108389,7 @@
(eglot-handle-notification :$cquery/publishSemanticHighlighting):
Solve compilation warnings.
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Really ensure eglot--shutdown deletes a process completely
@@ -108401,7 +108401,7 @@
(eglot-shutdown): use eglot--shutdown-requested. Improve check
for process liveness.
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Get rid of eglot--obj, an uninteresting abstraction
@@ -108420,7 +108420,7 @@
(xref-backend-references, xref-backend-apropos, eglot-imenu)
(eglot-rename): Use list instead of eglot--obj.
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Cleanup deferred request mechanism with a readable log
@@ -108431,14 +108431,14 @@
(eglot--call-deferred): Be more informative.
(eglot--async-request): Simplify.
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simpify eglot--server-receive
* eglot.el (eglot--obj): Cleanup whitespace.
(eglot--server-receive): Simplify.
-2018-05-26 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't rely on flymake's idle timer for textdocument/didchange
@@ -108447,7 +108447,7 @@
(eglot--signal-textDocument/didChange): No seed to set spinner here.
(eglot-flymake-backend) Don't send didChange here.
-2018-05-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Document current api breaches a bit
@@ -108459,11 +108459,11 @@
(eglot--process): Alias to concentrate the hack here.
(eglot--signal-textDocument/didChange): Tweak comment.
-2018-05-25 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch use-eieio-server-defclass into jsonrpc-refactor
-2018-05-24 Josh Elsasser <jelsasser@appneta.com>
+2023-04-15 Josh Elsasser <jelsasser@appneta.com>
Log debug messages through eglot--debug
@@ -108473,7 +108473,7 @@
(eglot--server-receive): Demote "Notification unimplemented"
message on missing handlers to a pure debug message.
-2018-05-24 Josh Elsasser <jelsasser@appneta.com>
+2023-04-15 Josh Elsasser <jelsasser@appneta.com>
Demote unvisited diagnostics logging to debug level
@@ -108485,14 +108485,14 @@
the "received diagnostics for unvisited file" warning as debug
to avoid spamming users of compliant language servers.
-2018-05-24 Josh Elsasser <jelsasser@appneta.com>
+2023-04-15 Josh Elsasser <jelsasser@appneta.com>
Introduce eglot--debug for unimportant messages
* eglot.el (eglot--debug): New function to log noisy or trivial
messages to the eglot events buffer.
-2018-05-24 Josh Elsasser <jelsasser@appneta.com>
+2023-04-15 Josh Elsasser <jelsasser@appneta.com>
Add cquery support for c/c++ projects
@@ -108512,7 +108512,7 @@
* README.md: Mention cquery in the README.
-2018-05-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix indentation broken by the defclass monster commit
@@ -108521,7 +108521,7 @@
unregisterCapability, eglot-handle-request applyEdit): fix
indentation.
-2018-05-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Introduce new api methods for experimental clients to use
@@ -108534,7 +108534,7 @@
(eglot--client-capabilities): Remove.
(eglot--connect): Call new API methods here.
-2018-05-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Do rust's rls hack properly with new class-based api
@@ -108554,7 +108554,7 @@
(auto-reconnect, basic-completions)
(hover-after-completions): Use eglot--interactive
-2018-05-22 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use an eieio class to represent a server.
@@ -108627,7 +108627,7 @@
(eglot--current-process): Removed.
(eglot--current-server): New function.
-2018-05-21 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Introduce eglot-handle-request and eglot-handle-notification as api
@@ -108643,7 +108643,7 @@
(eglot--server-client/unregisterCapability)
(eglot-handle-request): Convert to eglot-handle-request.
-2018-05-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Get rid of jsonrpc.el customization group and timeout
@@ -108656,11 +108656,11 @@
(jsonrpc-async-request): Use it.
(jsonrpc-request): Accept timeout kwarg and pass it on.
-2018-05-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Heroically merge master into jsonrpc-refactor (using imerge)
-2018-05-20 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rename jrpc.el to jsonrpc.el
@@ -108673,7 +108673,7 @@
* Makefile: jrpc.el -> jsonrpc.el
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix a bug introduced in the previous commit
@@ -108682,7 +108682,7 @@
(eglot-completion-at-point): Use eglot--format-markup
(eglot--hover-info): Yak shaving
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rewrite a couple of defs and shave a yak
@@ -108695,18 +108695,18 @@
(eglot--server-workspace/applyEdit, eglot--hover-info): Yak
shaving.
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.4
-2018-05-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from akhramov/fix/ensure-system-package-cleanup
ensure-system-package cleanup
GitHub-reference: https://github.com/jwiegley/use-package/issues/683
-2018-05-19 Artyom Khramov <futu.fata@gmail.com> (tiny change)
+2023-04-15 Artyom Khramov <futu.fata@gmail.com> (tiny change)
Ensure system package cleanup
@@ -108719,7 +108719,7 @@
* Removes redundant variable declarations
* Adds `system-packages-get-command` function declaration.
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add some completion tests for pyls
@@ -108734,7 +108734,7 @@
* eglot.el (eglot-eldoc-function): Force write
eldoc-last-message, for tests sake.
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle managed buffers in own process var
@@ -108756,14 +108756,14 @@
(eglot-shutdown): Turn off minor mode here.
(eglot--server-window/progress): Simplify slightly.
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Robustness fixes for the request mechanism
* eglot.el (eglot--async-request): Pass actual id to eglot--log-event
(eglot--request): Also cancel any continuations.
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Check capabilities before sending :completionitem/resolve
@@ -108771,7 +108771,7 @@
(eglot-completion-at-point): Check caps before sending
:completionItem/resolve
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Better decide what text exactly to present as completions
@@ -108784,11 +108784,11 @@
* eglot.el (eglot-completion-function): Rework main function and
:annotation-function, and :exit-function
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-clear-status): remember to update modeline
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Collect regions to change as markers, then edit
@@ -108803,7 +108803,7 @@
GitHub-reference: close https://github.com/joaotavora/eglot/issues/4
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
If we're going to send rootpath, better send an absolute one
@@ -108811,7 +108811,7 @@
* eglot.el (eglot--connect): Use expand-file-name.
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Robustify timer handling for eglot--async-request
@@ -108822,7 +108822,7 @@
* jrpc.el (jrpc--async-request): Improve timeout handling. Return a list (ID TIMER)
(jrpc--request): Protect against user-quits, cancelling timer
-2018-05-19 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify some infrastructure fucntions
@@ -108834,7 +108834,7 @@
attempting reconnection.
(eglot-shutdown): Simplify.
-2018-05-19 Naoya Yamashita <conao3@gmail.com>
+2023-04-15 Naoya Yamashita <conao3@gmail.com>
fix gethash default value for use-package-statistics-time
@@ -108844,14 +108844,14 @@
> picosecond counts.
by `current-time` in editfns.c
-2018-05-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Jrpc.el should know nothing of mode-line updates
* eglot.el (eglot--dispatch): METHOD can be a symbol.
Call force-mode-line-update here.
-2018-05-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve jrpc.el's doc (and change jrpc-request's protocol a tiny bit)
@@ -108864,15 +108864,15 @@
* eglot.el (advice-add jrpc-request): Use &key deferred.
(eglot-completion-at-point): Pass :deferred to jrpc-request
-2018-05-18 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge branch 'master' into jsonrpc-refactor (using good ol' git merge)
-2018-05-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (version): bump to 0.3
-2018-05-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make it work on windows
@@ -108890,18 +108890,18 @@
(eglot--server-textDocument/publishDiagnostics): Simplify and use
eglot--uri-to-path.
-2018-05-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix eglot--error and eglot--message helpers
* eglot.el (eglot--error, eglot--message):
Safely interpret %s.
-2018-05-17 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot--lambda): add missing indent spec.
-2018-05-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify some function calling infrastructure
@@ -108919,7 +108919,7 @@
(eglot-eldoc-function, eglot-imenu, eglot--apply-text-edits):
Don't use eglot--mapply, use normal mapcar/mapc.
-2018-05-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Replace eglot--with-lsp-range with a function and pcase-let
@@ -108929,7 +108929,7 @@
(eglot--hover-info, eglot-eldoc-function)
(eglot--apply-text-edits): Use it.
-2018-05-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simpler callback protocol for jsonrpc parameters and results
@@ -108955,7 +108955,7 @@
(jrpc-request): Simplify.
(jrpc-mapply): Remove.
-2018-05-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More flexible jrpc.el and improve eglot.el's doc
@@ -108970,11 +108970,11 @@
* jrpc.el (jrpc--make-process): Use new form of CONTACT.
(jrpc-connect): Explain new semantics of CONTACT.
-2018-05-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge master into jsonrpc-refactor (using imerge)
-2018-05-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add php's php-language-server to built-in guessed servers
@@ -108989,7 +108989,7 @@
* eglot.el (eglot-server-programs): Add php-language-server.
(eglot--connect): Also pass (deprecated) rootPath.
-2018-05-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Bump version and slightly improve doc
@@ -108998,13 +108998,13 @@
* README.md: Update
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More quietly report request timeouts as events
* eglot.el (eglot--sync-request): Use eglot--log-event
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Shutdown server if connection initialization fails
@@ -109015,21 +109015,21 @@
specially.
(eglot--process-sentinel): Tweak messages.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix a ridiculous bug when generating transient projects
* eglot.el (eglot--find-current-process, eglot--interactive): Fix
horrible bug.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix a ridiculous bug when generating transient projects
* eglot.el (eglot--find-current-process, eglot--interactive): Fix
horrible bug.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Jrpc-connect is now passed a generic dispatching function
@@ -109045,11 +109045,11 @@
(jrpc-forget-pending-continuations, jrpc-async-request)
(jrpc-reply, jrpc-notify): Use new function names.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Merge master into jsonrpc-refactor (using imerge)
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Proper server shutdown when jrpc.el is used
@@ -109064,7 +109064,7 @@
(eglot--managed-mode): Don't use jrpc-server-moribund-hook
(eglot--buffer-managed-p): Simplify. Use eglot--find-current-process.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support didchangewatchedfiles with dynamic registration
@@ -109083,13 +109083,13 @@
capability.
(eglot--client-capabilities): Update.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Remove an unused variable
* eglot.el (eglot--expect-carriage-return): Get rid of this.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Now send willsavewaituntil
@@ -109101,14 +109101,14 @@
(eglot--apply-text-edits): Simplify. Use current buffer.
(eglot--apply-workspace-edit): Use new eglot--apply-text-edits.
-2018-05-14 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't define a menu if nothing to show there for now
* eglot.el (eglot-menu): Remove it.
(eglot--mode-line-format): Don't define a menu.
-2018-05-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use rls in travis ci and add actual tests
@@ -109126,14 +109126,14 @@
* README.md: Update mention of automated tests
-2018-05-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix automatic project creation
* eglot.el (eglot): Take PROJECT arg. Return process.
(eglot--interactive): Returns a project.
-2018-05-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Work with any old directory, no formal project needed
@@ -109146,7 +109146,7 @@
(eglot--current-process-or-lose): Simplify.
(eglot): Maybe prompt user for project.
-2018-05-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Ask server for textdocument/signaturehelp if it supports it
@@ -109156,18 +109156,18 @@
* README.md: Update to mention textDocument/signatureHelp
-2018-05-13 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix copyright header. obviously not since 2003
-2018-05-13 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
Merge pull request from andschwa/remap-command
Document that remapping commands is supported with bind-key
GitHub-reference: https://github.com/jwiegley/use-package/issues/674
-2018-05-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Refactor json-rpc lib jrpc.el from eglot.el
@@ -109176,7 +109176,7 @@
* jrpc.el: New file
-2018-05-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reinstate the catch/loop/throw idiom in eglot-request
@@ -109191,11 +109191,11 @@
* eglot.el (eglot-request): Use catch/loop/throw again
-2018-05-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix copyright header. obviously not since 2003
-2018-05-12 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
New command eglot-help-at-point and a readme update
@@ -109206,14 +109206,14 @@
(eglot--hover-info): New helper.
(eglot-help-at-point): New command.
-2018-05-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Get rid of catch/loop/throw idiom (suggested by thien-thi nguyen)
* eglot.el (eglot--process-filter)
(eglot--request): Replace catch/loop/throw idiom with let/test/loop/set
-2018-05-11 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rework autoreconnection logic
@@ -109226,23 +109226,23 @@
(eglot--process-sentinel): Don't run timer here. Rework.
(eglot, eglot-reconnect): Pass INTERACTIVE to eglot--connect.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Duh, json.el is in emacs, and json-mode.el is useless here
* eglot.el (Package-Requires): Don't require json-mode
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Prepare to sumbit to gnu elpa
* eglot.el: Update headers.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
(eglot--xref-make): fix use of cl-destructuring-bind.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Misc little adjustments for readability
@@ -109250,7 +109250,7 @@
(eglot--xref-make, xref-backend-apropos): Use cl-destructuring-bind.
(eglot--server-window/showMessageRequest): Compact.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support :completionitem/resolve
@@ -109261,7 +109261,7 @@
* README.md: Mention completionItem/resolve
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rename functions. eglot--request is now the synchronous one
@@ -109285,7 +109285,7 @@
(eglot--signal-textDocument/didOpen)
(eglot--signal-textDocument/didChange): Use new function names.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Friendlier m-x eglot
@@ -109300,7 +109300,7 @@
* README.md: Update
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Improve eglot-eldoc-function
@@ -109313,7 +109313,7 @@
(eglot--apply-text-edits): Use it.
(eglot-eldoc-function): Use range if server provides it.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reduce log chatter
@@ -109325,7 +109325,7 @@
Make noops.
(eglot--call-deferred): Also reduce chatter here.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Only call deferred actions after a full message has been received
@@ -109334,7 +109334,7 @@
* eglot.el (eglot--process-filter): Don't eglot--call-deferred here.
(eglot--process-receive): Do it here.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Resist server failure during synchronous requests
@@ -109344,7 +109344,7 @@
* eglot.el (eglot--process-sentinel): Rework.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify mode-line updating logic
@@ -109353,7 +109353,7 @@
auto-update mode-line.
(eglot--process-receive): Update it here.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More rls-specifics: update flymake diags when indexing done
@@ -109364,7 +109364,7 @@
* eglot.el
(eglot--server-window/progress): Call eglot--current-flymake-report-fn
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Adjust flymake integration
@@ -109379,11 +109379,11 @@
(eglot--server-textDocument/publishDiagnostics): Set unreported
diagnostics to nil if invoking callback.
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Shorten summary line to appease package-lint.el
-2018-05-10 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More correctly setup rust-mode-related autoloads
@@ -109394,11 +109394,11 @@
* eglot.el (rust-mode-hook)
(eglot--setup-rls-idiosyncrasies): Wrap in autoloaded progn.
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add minimal headers, commentary and autoloads
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fancier rls spinner
@@ -109406,7 +109406,7 @@
eglot--spinner.
(eglot--server-window/progress): Save detail message in spinner.
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
New "deferred requests" that wait until server is ready
@@ -109436,14 +109436,14 @@
(rust-mode-hook): Add eglot--setup-rls-idiosyncrasies
(eglot--setup-rls-idiosyncrasies): New helper.
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Call eglot-eldoc-function after completion finishes
* eglot.el (eglot-completion-at-point): Call
eglot-eldoc-function after completion finishes.
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify `eglot-shutdown`
@@ -109453,7 +109453,7 @@
(eglot--process-sentinel): Also call error functions.
(eglot--process-filter): Reindent.
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Get rid of eglot-mode
@@ -109461,7 +109461,7 @@
shutting down, offer to kill server.
(mode-line-misc-info): Update to use eglot--managed-mode
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify eglot--signal-textdocument/didchange
@@ -109474,7 +109474,7 @@
(eglot--signal-textDocument/didOpen): Initialize
buffer-local eglot--recent-changes here.
-2018-05-09 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix odd bugs and tweak stuff
@@ -109484,7 +109484,7 @@
(eglot--log-event): Simplify
(eglot-completion-at-point): Saner annotation
-2018-05-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support workspace/applyedit
@@ -109495,7 +109495,7 @@
(eglot--apply-workspace-edit): New helper.
(eglot-rename): Simplify.
-2018-05-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support textdocument/rename
@@ -109506,7 +109506,7 @@
(eglot-rename): New interactive command.
(eglot--client-capabilities): Add rename capability.
-2018-05-08 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reasonable textdocument/documenthighlight support
@@ -109526,7 +109526,7 @@
(eglot--highlights): New variable.
(eglot--client-capabilities): Update with support for documentHighlight.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix odd bugs
@@ -109536,19 +109536,19 @@
correctly.
(eglot--mode-line-format): Print error status.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
When killing server, always wait 3 seconds
* eglot.el (eglot--request): Accept TIMEOUT param.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Try to fix some textdocument/completion bugs
* eglot.el (eglot-completion-at-point): Rework slightly.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Half-decent imenu support via textdocument/documentsymbol
@@ -109561,7 +109561,7 @@
(eglot-imenu): New function.
(eglot--client-capabilities): Capable of documentSymbol.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Only request stuff that server says it's capable of
@@ -109571,14 +109571,14 @@
(xref-backend-references, xref-backend-apropos)
(eglot-completion-at-point, eglot-eldoc-function): Use it.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify mode-line code with a helper.
* eglot.el (eglot--mdoe-line-props): New helper.
(eglot--mode-line-format): Use it.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Get rid of eglot--buffer-open-count
@@ -109588,7 +109588,7 @@
(eglot--signal-textDocument/didOpen)
(eglot--signal-textDocument/didClose): Simplify.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Get rid of eglot--special-buffer-process
@@ -109598,11 +109598,11 @@
(eglot--current-process): Simplify.
(eglot--events-buffer): Simplify.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el: reformat to shave off some lines.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix bug in hover support
@@ -109610,14 +109610,14 @@
(subr-x): Require it.
(eglot--format-markup): Pacify byte-compiler.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Clean up client capabilities
* eglot.el (eglot--client-capabilities): Clean up client
capabilities.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Half-baked textdocument/hover support
@@ -109627,7 +109627,7 @@
* README.md: update
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Tweak the async request engine.
@@ -109635,7 +109635,7 @@
(eglot--lambda): Move up in the file.
(eglot--sync-request): Use a catch-tag.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Explain why didopen on after-revert-hook is a bad idea
@@ -109644,7 +109644,7 @@
* eglot.el (eglot--managed-mode): Remove commented lines.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Half-decent completion support
@@ -109654,7 +109654,7 @@
(eglot--managed-mode): Handle completion-at-point-functions.
(eglot-completion-at-point): New function.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Solve another textdocument/didchange bug
@@ -109662,7 +109662,7 @@
(eglot--after-change): Store the actual after-text in the
eglot--recent-after-changes.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Support javascript's javascript-typescript-langserver
@@ -109676,14 +109676,14 @@
(eglot--current-buffer-TextDocumentItem): Guess language from mode
symbol.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Increase request timeout length to 10 seconds
* eglot.el (eglot-request-timeout): New var.
(eglot--request): Use it.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Workaround two suspected emacs bugs
@@ -109692,13 +109692,13 @@
(eglot--sync-request): Rework.
(eglot--server-client/registerCapability): Use a proper done tag.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Etoomanylambdas
* eglot.el (eglot--sync-request): Remove a lambda.
-2018-05-07 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix the odd bug here and there
@@ -109717,7 +109717,7 @@
with wrong id.
(eglot--xref-reset-known-symbols): Take DUMMY arg.
-2018-05-06 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Half-decent xref support
@@ -109733,7 +109733,7 @@
(eglot--obj): Add a debug spec.
(eglot--lambda): Add debug spec.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Very basic xref support
@@ -109748,7 +109748,7 @@
(xref-backend-references)
(xref-backend-apropos): New methods, still unimplemented.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
New helper eglot--sync-request
@@ -109759,7 +109759,7 @@
(eglot--sync-request): New function.
(eglot--process-receive): watch out for vector results.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Cleanup mistake with textdocumentitem and textdocumentidentifier
@@ -109774,26 +109774,26 @@
(eglot--signal-textDocument/willSave)
(eglot--signal-textDocument/didSave): Use it.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle dynamic registration in general (but nothing specific yet)
* eglot.el (eglot--server-client/registerCapability): Implement.
(eglot--register-workspace/didChangeWatchedFiles): Dummy registrator.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Honour textdocumentsync
* eglot.el (eglot--signal-textDocument/didChange): Honour textDocumentSync
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Be quite explicit about our lack of capabilities right now
* eglot.el (eglot--client-capabilities): Spread out.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Use rooturi instead of rootpath
@@ -109802,28 +109802,28 @@
eglot--uri.
(eglot--uri): New function.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make reported capabilities into its own function
* eglot.el (eglot--client-capabilities): New function.
(eglot--connect): Use it.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Include source info in diagnostics
* eglot.el (eglot--server-textDocument/publishDiagnostics):
Include source info.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reply to client/registercapability (don't handle it yet)
* eglot.el (eglot--server-client/registerCapability): New
function.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Handle requests from server correctly
@@ -109835,20 +109835,20 @@
(eglot--server-window/showMessageRequest)
(eglot--server-client/registerCapability): Use eglot--reply
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't auto-reconnect if last attempt lasted less than 3 seconds
* eglot.el (eglot--inhibit-auto-reconnect): New var.
(eglot--process-sentinel): Use it.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Workaround rls's regusal to treat nil as empty json object
* eglot.el (eglot--connect): Use dummy params.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Eglot-editing-mode becomes eglot--managed-mode
@@ -109859,20 +109859,20 @@
(eglot--buffer-managed-p): New function.
(eglot--maybe-activate-editing-mode): Simplify.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make m-x eglot's interactive spec a separate function
* eglot.el (eglot--interactive): New function.
(eglot): Rework a little.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
When user declines to reconnect, first quit existing server
* eglot.el (eglot): Rework reconnection logic.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Connect to lsp server via tcp
@@ -109884,7 +109884,7 @@
(eglot--connect): Take CONTACT arg.
(eglot--reconnect): Rework.
-2018-05-04 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
More correctly keep track of didopen/didclose per buffer
@@ -109892,18 +109892,18 @@
(eglot--signal-textDocument/didOpen, eglot--signal-textDocument/didClose):
Use it.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix mode-line mouse-clicks from outside selected window
* eglot.el (eglot--mode-line-call): New helper.
(eglot--mode-line-format): Use it.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot--process-receive): skip null method notifs.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Trim some edges and add a bunch of boring rpc methods
@@ -109925,7 +109925,7 @@
eglot--buffer-open-count.
(eglot--buffer-open-count): New var.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix a couple of rust-related edge cases
@@ -109933,7 +109933,7 @@
(eglot--server-textDocument/publishDiagnostics): Allow :group in diagnostic
spec.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix textdocument/didchange
@@ -109945,7 +109945,7 @@
(eglot--after-change): Rework.
(eglot--signal-textDocument/didChange): Rework.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rename rpc methods for clarity
@@ -109970,7 +109970,7 @@
(eglot--server-window/progress): Rename from
eglot--window/progress.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Reorganize file
@@ -109986,13 +109986,13 @@
(eglot-quit-server): Renamed to eglot-shutdown.
(eglot-shutdown): New function
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Delete two useless forward declarations
* eglot.el (eglot-mode, eglot-editing-mode-map): Remove forward decls.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix flymake diagnostic positions
@@ -110001,14 +110001,14 @@
* eglot.el (eglot--textDocument/publishDiagnostics):
Calculate position by hand.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Must re-announce didopen after reconnect
* eglot.el (eglot-reconnect): Also call
eglot--maybe-activate-editing-mode for all buffers.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix another flymake sync bug
@@ -110019,7 +110019,7 @@
unreported-diagnostics to nil.
(flymake): Require it.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Make m-x eglot the main entry point
@@ -110029,7 +110029,7 @@
* README.md: Use M-x eglot
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix assorted bugs
@@ -110039,7 +110039,7 @@
eglot--pending-continuations.
(eglot--textDocument/publishDiagnostics): Clear unreported diagnostics
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Watch for files opened under umbrella of existing process
@@ -110049,7 +110049,7 @@
(eglot--maybe-activate-editing-mode): New function.
(find-file-hook): Add it here.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Multiple servers per project are possible
@@ -110068,7 +110068,7 @@
eglot--processes-by-project. Update mode line.
(eglot-editing-mode): Don't start processes, just suggest it.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Appease checkdoc.el
@@ -110079,7 +110079,7 @@
(eglot--signalDidClose, eglot--maybe-signal-didChange):
Add docstring.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify flymake integration
@@ -110092,14 +110092,14 @@
(eglot--textDocument/publishDiagnostics): Simplify.
(eglot-flymake-backend): Report unreported diagnostics.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Signal textdocument/didclose
* eglot.el (eglot-editing-mode): Signal didClose.
(eglot--signalDidClose): New.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rework connection restarting again
@@ -110111,7 +110111,7 @@
(eglot-new-process): Rework.
(eglot--sentinel): Remove proc from eglot--processes-by-project.
-2018-05-03 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Redesign and simplify parser
@@ -110119,7 +110119,7 @@
* eglot.el (eglot--process-filter): Redesign.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Auto-reconnect on unexpected connection loss
@@ -110130,7 +110130,7 @@
unexpectedly.
(eglot--warn): Also message to *Messages*
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Ready to start fixing flymake integration
@@ -110138,21 +110138,21 @@
(eglot-flymake-backend): Always start by reporting no diagnostics.
(eglot--textDocument/publishDiagnostics): No annoying message.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Slightly more user friendly start
* eglot.el (eglot-new-process): signal DidOpen for every file in project.
(eglot-editing-mode): Offer to start process.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't clutter ui with warnings
* eglot.el (warnings): require it.
(eglot--warn): set warning-minimum-level
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Rework commands for connecting and reconnecting
@@ -110167,13 +110167,13 @@
(eglot--protocol-initialize): Rework.
(eglot--mode-line-format): Use eglot-reconnect.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Less obstrusive flymake stuff for now
* eglot.el (eglot--after-change, eglot-flymake-backend): Fix.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Events buffer uses eglot-mode, source buffers use eglot-editing-mode
@@ -110183,14 +110183,14 @@
(eglot-editing-mode): New minor mode.
(eglot-mode): Turns on eglot-editing-mode maybe.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Change status to error everytime an error is found
* eglot.el (eglot--process-receive): Also set error status.
(eglot--request): Fix a compilation warning.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Correctly report what we currently are capable of
@@ -110198,7 +110198,7 @@
* eglot.el (eglot--protocol-initialize): Clean up.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Add eglot-clear-status interactive command
@@ -110206,7 +110206,7 @@
(eglot-forget-pending-continuations): Fix bug.
(eglot--mode-line-format): Add link to eglot-clear-status.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Auto update mode-line after setting some process properties
@@ -110214,19 +110214,19 @@
(eglot--short-name, eglot--spinner, eglot--status): Update mode-line
after setting it.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Start experimenting with python
* eglot.el (eglot-executables): Add pyls.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Don't switch to possibly dead buffer in sentinel
* eglot.el (eglot--process-sentinel): Don't with-current-buffer.
-2018-05-02 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Report server status in the mode-line
@@ -110237,7 +110237,7 @@
(eglot--window/showMessage): Set status to error if needed.
(eglot--mode-line-format): Display status if serious.
-2018-05-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Implement spinners and rls's window/progress
@@ -110246,14 +110246,14 @@
(eglot--snpinner): New var.
(compile): require it.
-2018-05-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix parser to accept multiple messages in one chunk
* eglot.el (eglot--process-filter): Redesign slightly.
(eglot--message-mark): Remove. don't need this.
-2018-05-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Lay groundwork for uniform treatment of network connections
@@ -110261,17 +110261,17 @@
(eglot-new-process): Use it.
(pcase): Require it.
-2018-05-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Doc fixes
* eglot.el (eglot-mode-map): Move up before minor mode.
-2018-05-01 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
* eglot.el (eglot-mode-map): move up before minor mode.
-2018-04-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Start working on this again
@@ -110296,28 +110296,28 @@
(eglot--signalDidOpen, eglot--maybe-signal-didChange): New stuff.
(eglot-flymake-backend): More or less a flymake backend function.
-2018-04-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix mode line
* eglot.el (mode-line-misc-info): conditionalize to eglot-mode
-2018-04-30 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Fix some byte-compilation warnings
-2018-04-30 Andrew Schwartzmeyer <andrew@schwartzmeyer.com> (tiny change)
+2023-04-15 Andrew Schwartzmeyer <andrew@schwartzmeyer.com> (tiny change)
Document that remapping commands is supported with bind-key
-2018-04-26 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
Merge pull request from akhramov/fix/ensure-system-package-noconfirm
[Fix https://github.com/jwiegley/use-package/issues/661] ensure-system-package: honor system-packages customizations
GitHub-reference: https://github.com/jwiegley/use-package/issues/673
-2018-04-25 Artyom Khramov <futu.fata@gmail.com> (tiny change)
+2023-04-15 Artyom Khramov <futu.fata@gmail.com> (tiny change)
[] ensure-system-package: honor system-packages customizations
@@ -110329,54 +110329,54 @@
`system-package-get-command` function and therefore fixes the issue.
GitHub-reference: fix https://github.com/jwiegley/use-package/issues/661
-2018-03-24 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
Update use-package-chords.el
-2018-03-23 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
Update use-package-chords.el
new style of auto-deferral for chords
-2018-03-16 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
Merge pull request from waymondo/master
:ensure-system-package - allow cdr of cons to be a package name symbol
GitHub-reference: https://github.com/jwiegley/use-package/issues/654
-2018-03-16 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
:ensure-system-package allow cdr of cons to be a package name symbol
closes https://github.com/jwiegley/use-package/issues/652
-2018-03-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from valignatev/master
Encourage installation via https instead of http
GitHub-reference: https://github.com/jwiegley/use-package/issues/651
-2018-03-14 Valentin Ignatev <valentjedi@gmail.com>
+2023-04-15 Valentin Ignatev <valentjedi@gmail.com>
Encourage installation via https instead of http
-2018-03-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from DamienCassou/fix-report-again
Fix report again after revert
GitHub-reference: https://github.com/jwiegley/use-package/issues/647
-2018-03-12 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Fix compile-time warnings due to the statistics-reporting code
The code worked because the file is using dynamic binding.
-2018-03-12 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Add missing require
@@ -110384,31 +110384,31 @@
Fix https://github.com/jwiegley/use-package/issues/644.
-2018-03-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jwiegley/revert-645-fix-report
Revert "Fix report"
GitHub-reference: https://github.com/jwiegley/use-package/issues/646
-2018-03-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Fix report"
-2018-03-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from DamienCassou/fix-report
Fix report
GitHub-reference: https://github.com/jwiegley/use-package/issues/645
-2018-03-11 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Fix compile-time warnings due to the statistics-reporting code
The code worked because the file is using dynamic binding.
-2018-03-11 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Add missing require
@@ -110416,59 +110416,59 @@
Fix https://github.com/jwiegley/use-package/issues/644.
-2018-03-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from DamienCassou/tabulated-list
Use a tabulated-list to display package configuration statistics
GitHub-reference: https://github.com/jwiegley/use-package/issues/642
-2018-03-08 Damien Cassou <damien.cassou@gmail.com>
+2023-04-15 Damien Cassou <damien.cassou@gmail.com>
Use a tabulated-list to display package configuration statistics
Fix https://github.com/jwiegley/use-package/issues/641
-2018-03-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from matthewbauer/patch-1
Support ":package" in use-package
GitHub-reference: https://github.com/jwiegley/use-package/issues/633
-2018-02-25 Matthew Justin Bauer <mjbauer95@gmail.com>
+2023-04-15 Matthew Justin Bauer <mjbauer95@gmail.com>
Support ":package" in use-package
bind-key supports the keyword ":package" but use-package does not know that. Adding this should be helpful. In the future, maybe we could automatically fill in with the use-package package, but that could be a breaking change.
-2018-02-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/normalize-fix
Fix usage of plist argument in use-package-normalize-plist
GitHub-reference: https://github.com/jwiegley/use-package/issues/625
-2018-02-06 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Fix usage of plist argument in use-package-normalize-plist
Previously the argument was never used.
-2018-02-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/ignore-keywords
Add use-package-ignore-unknown-keywords option
GitHub-reference: https://github.com/jwiegley/use-package/issues/624
-2018-02-06 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Add use-package-ignore-unknown-keywords option
This option allows use-package to skip over keywords it doesn't recognize.
-2018-01-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Merge pull request from jabranham/lexical-bindings"
@@ -110476,24 +110476,24 @@
changes made to fd8a3510fd1a555b925f57b2870917e3c4ea0206.
GitHub-reference: https://github.com/jwiegley/use-package/issues/617
-2018-01-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Move variable bindings to the bottom of each file"
This reverts commit c29193bf0724633adf7183dad2d0b6faf7d029ab.
-2018-01-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Move variable bindings to the bottom of each file
-2018-01-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jabranham/lexical-bindings
[WIP] Lexical bindings
GitHub-reference: https://github.com/jwiegley/use-package/issues/617
-2018-01-27 Alex Branham <alex.branham@gmail.com>
+2023-04-15 Alex Branham <alex.branham@gmail.com>
Don't remove sharp quotes
@@ -110503,27 +110503,27 @@
Use lexical bindings and remove cl package
-2018-01-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jabranham/system-packages-update
System packages update
GitHub-reference: https://github.com/jwiegley/use-package/issues/616
-2018-01-26 Alex Branham <alex.branham@gmail.com>
+2023-04-15 Alex Branham <alex.branham@gmail.com>
lexical binding
Prefer non-obsolete var names
-2018-01-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from jabranham/fix-byte-compiler
Prefer org-table-align to orgtbl-ctrl-c-ctrl-c
GitHub-reference: https://github.com/jwiegley/use-package/issues/611
-2018-01-08 Alex Branham <alex.branham@gmail.com>
+2023-04-15 Alex Branham <alex.branham@gmail.com>
Prefer org-table-align to orgtbl-ctrl-c-ctrl-c
@@ -110531,21 +110531,21 @@
find it. orgtbl-ctrl-c-ctrl-c isn't so we get a warning about
undefined functions.
-2017-12-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/elisp-cap
Handle automatic macro expansion by elisp-completion-at-point
GitHub-reference: https://github.com/jwiegley/use-package/issues/599
-2017-12-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from nickmccurdy/render-report-table
Render the use-package-report table using Org
GitHub-reference: https://github.com/jwiegley/use-package/issues/592
-2017-12-20 wouter bolsterlee <wouter@bolsterl.ee> (tiny change)
+2023-04-15 wouter bolsterlee <wouter@bolsterl.ee> (tiny change)
Fix sanity check for correct :custom-face format
@@ -110555,7 +110555,7 @@
Fixes https://github.com/jwiegley/use-package/issues/600.
-2017-12-19 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Handle automatic macro expansion by elisp-completion-at-point
@@ -110567,13 +110567,13 @@
harmless since there should be no locally bound variables to discover here
anyway.
-2017-12-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Guard a call to display-warning with ignore
Fixes https://github.com/jwiegley/use-package/issues/589
-2017-12-16 Nick McCurdy <nick@nickmccurdy.com>
+2023-04-15 Nick McCurdy <nick@nickmccurdy.com>
Render the use-package-report table using Org
@@ -110582,47 +110582,47 @@
automatically, and you can still manually sort it. I'm not sorting it by default
to maintain the same order of use-package forms for easier troubleshooting.
-2017-12-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
All the second argument in use-package-defaults lists to be a function
Address the question raised in https://github.com/jwiegley/use-package/issues/591
-2017-12-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a test related to
GitHub-reference: https://github.com/jwiegley/use-package/issues/589
-2017-12-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add more tests related to issue
GitHub-reference: https://github.com/jwiegley/use-package/issues/572
-2017-12-11 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Minor simplification of a function
-2017-12-11 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
bind-keys fixes related to
GitHub-reference: https://github.com/jwiegley/use-package/issues/482
-2017-12-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a clarifying test for
GitHub-reference: https://github.com/jwiegley/use-package/issues/482
-2017-12-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix a scoping issues with multiple occurrences of :bind
Fixes https://github.com/jwiegley/use-package/issues/585
-2017-12-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Start building a use-package linter in use-package-lint.el
@@ -110632,7 +110632,7 @@
Add another :bind test
-2017-12-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add further note to NEWS.md
@@ -110642,7 +110642,7 @@
Clarify a note in NEWS.md
-2017-12-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Changes to the way auto-deferral is indicated
@@ -110655,36 +110655,36 @@
loading; if :bind is used with only lambda forms, for example, this will not
cause deferred loading without `:defer t`.
-2017-12-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Introduce new customization variable `use-package-merge-key-alist'
-2017-12-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use cl-gentemp in another place
This avoids "Variable unknown" errors if a byte-compiled init.elc happening to
encounter an error while evaluating an :init or :config block.
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Correctly fix the problem of unreferenced symbols after compilation
Fixes https://github.com/jwiegley/use-package/issues/571
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Pre-expand lexical-let, since otherwise it requires cl to be loaded"
This reverts commit 7cc17cee8f8ae2093d98efebf429cd10e9b0b81c.
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Pre-expand lexical-let, since otherwise it requires cl to be loaded
Fixes https://github.com/jwiegley/use-package/issues/571
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add documentation for `use-package-report'
@@ -110694,61 +110694,61 @@
Add a comment as to why max-lisp-eval-depth is set in -tests.el
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add missing autoload cookie, and make lack of a normalizer an error
Fixes https://github.com/jwiegley/use-package/issues/566
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Don't compute the verbose debug text unless it's requested
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add :bind test for a single cons cell
Relates to https://github.com/jwiegley/use-package/issues/566
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add support for gathering statistics on use-package declarations
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Respect keyword ordering in use-package-deferring-keywords
Relates to https://github.com/jwiegley/use-package/issues/565
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Clarify :config with setq versus :custom
Fixes https://github.com/jwiegley/use-package/issues/564
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Update some GPL version references
Fixes https://github.com/jwiegley/use-package/issues/563
-2017-12-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow the expansion of :after (:or foo bar) to be byte-compiled
Make the expanded text for :after cleaner
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Several changes as suggested by flycheck
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Don't auto-defer if the package itself was given to :load
Otherwise, we'd be senselessly waiting for the package to load.
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Enable all tests on Travis
@@ -110766,97 +110766,97 @@
Add note in NEWS.md about :requires vs. :if
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Lower the priority of :if/:when/:unless in use-package-keywords
Fixes https://github.com/jwiegley/use-package/issues/560
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Enhance fix-expansion to take surrounding let bindings into account
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Rewrite normalization of :bind and :bind*
Fixes https://github.com/jwiegley/use-package/issues/550
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Normalize errors should be errors, that are then caught by :catch
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Avoid using pcase and many other macros in macro-expanded forms
This is related to https://github.com/jwiegley/use-package/issues/550
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix bad interaction between bind-keys* and the :package keyword
Fixes https://github.com/jwiegley/use-package/issues/558
-2017-12-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add missing autoload cookies
Fixes https://github.com/jwiegley/use-package/issues/555
-2017-12-05 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Fix function accidentally made interactive
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use cl-gensym
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix the case where :ensure is given no arguments
Fixes https://github.com/jwiegley/use-package/issues/543
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Some Emacsen don't have gensym
Fixes https://github.com/jwiegley/use-package/issues/544
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add note in NEWS.md about :after and autoloaded keybindings
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a note to `bind-key` on the usage of the KEYMAP argument
Fixes https://github.com/jwiegley/use-package/issues/542
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a bind-key test
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Support :ensure (pkg :pin archive)
Fixes https://github.com/jwiegley/use-package/issues/506
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add several missing comments
Swap the order of two definitions
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix an argument process problem with bind-key
Fixes https://github.com/jwiegley/use-package/issues/334
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Comment out two tests that break on Travis
@@ -110870,13 +110870,13 @@
Add a test-in-progress for issue 506
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add new customization variables `use-package-hook-name-suffix'
Fixes https://github.com/jwiegley/use-package/issues/530
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Split key binding functionality out into its own file
@@ -110886,35 +110886,35 @@
Expand use-package-core as a macro, to avoid load time dependency
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
:ensure can be a list; correct handling of multiple :ensure keywords
Fixes https://github.com/jwiegley/use-package/issues/539
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Ensure that :commands always declare-function at compile time
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a new :catch keyword, and move :preface before such handling
Fixes https://github.com/jwiegley/use-package/issues/534
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix duplication in an error message
Add expand-maximally macro to up-tests.el
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Reduce some code duplication"
This reverts commit 1e560c514004747062276ca59ddf425a3edc44cd.
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Move :preface handling within the code
@@ -110924,19 +110924,19 @@
Normalize some whitespace and ordering in new code
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Move :init back to happening after all autoloads have occurred
Fixes https://github.com/jwiegley/use-package/issues/535
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Move :init back to happening after all autoloads have occurred
Fixes https://github.com/jwiegley/use-package/issues/535
-2017-12-04 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
Add `use-package-chords` and `use-package-ensure-system-package`
@@ -110944,7 +110944,7 @@
connect to https://github.com/jwiegley/use-package/issues/516
-2017-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Change order of :defines and :functions within `use-package-keywords'
@@ -110972,7 +110972,7 @@
Only emit the debugging context text once
-2017-12-03 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Correction to error detection at both :init and :config times
@@ -111006,7 +111006,7 @@
Define macroexpand-1 for older Emacsen
-2017-12-03 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
A great deal of internal reorganization and simplification
@@ -111017,27 +111017,27 @@
starting (though a serious internal bug that errors out every use-package form
may stop anything from being configured!); and more.
-2017-12-02 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Fix `use-package-ensure-function' docstring typo
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
If use-package-verbose is t, show loading times when :after is used
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Remove the :defer-install keyword
This may reappear as its own add-on to use-package in the future. See https://github.com/jwiegley/use-package/issues/442.
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
:demand should not override an explicit use of :after
Fixes https://github.com/jwiegley/use-package/issues/529
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Remove some debug code that crept in
@@ -111047,29 +111047,29 @@
Always wrap the expanded body from use-package in (progn)
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Comment out :no-require test for now
It works on my machine, but not with what Travis runs.
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Don't factor out a volatile variable
Possibly fixes https://github.com/jwiegley/use-package/issues/527
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add many new tests
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Generate :defines and :functions correctly
So they actually inhibit byte-compilation warnings as they were meant to.
-2017-12-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Correct the ordering of :preface, :load-path, :defines and :functions
@@ -111089,7 +111089,7 @@
Code reformatting
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow match-expansion to take multiple cases
@@ -111099,25 +111099,25 @@
Remove an unneeded defvar
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
A final fix to :ensure + :load-path
Fixes https://github.com/jwiegley/use-package/issues/190
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a test case for :ensure, following up from
GitHub-reference: https://github.com/jwiegley/use-package/issues/190
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Don't check for an :ensure that use-package-always-ensure may have added
Fixes https://github.com/jwiegley/use-package/issues/190
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a use-package-version variable
@@ -111125,37 +111125,37 @@
Add stubs for future tests of all keywords
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow :ensure to take a nil value again
Fixes https://github.com/jwiegley/use-package/issues/526
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Only add :ensure nil on :load-path if use-package-always-ensure is t
Restructure some code
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Using :load-path without also using :ensure now implies :ensure nil
Fixes https://github.com/jwiegley/use-package/issues/190
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Correction to use-package--recognize-function
Finishes https://github.com/jwiegley/use-package/issues/525
-2017-11-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow keys to be bound to nil
Fixes https://github.com/jwiegley/use-package/issues/525
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix a missing `and'
@@ -111167,46 +111167,46 @@
Update version and copyright
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow :bind ("C-c C-c" . (lambda () (ding))) and #'(lambda ...)
Fixes https://github.com/jwiegley/use-package/issues/333
Fixes https://github.com/jwiegley/use-package/issues/461
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Reorder some items in NEWS.md
Add NEWS.md file
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from basil-conto/version
Require Emacs version >= 24.3
GitHub-reference: https://github.com/jwiegley/use-package/issues/519
-2017-11-29 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Require Emacs version >= 24.3
Re: https://github.com/jwiegley/use-package/issues/457
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from basil-conto/520
Require cl-lib and do not use seq functions
GitHub-reference: https://github.com/jwiegley/use-package/issues/521
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge branch 'master' into 520
Add a missing (require 'seq)
-2017-11-29 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Require cl-lib and do not use seq functions
@@ -111214,7 +111214,7 @@
Fixes https://github.com/jwiegley/use-package/issues/520
-2017-11-29 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
When use-package-inject-hooks is non-nil, always fire init/config hooks
@@ -111223,55 +111223,55 @@
Fixes https://github.com/jwiegley/use-package/issues/250
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Print map keys in describe-personal-keybindings
Fixes https://github.com/jwiegley/use-package/issues/406
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Repeating a bind no longer causes duplicates in personal-keybindings
Fixes https://github.com/jwiegley/use-package/issues/446
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
When byte-compiling, correctly output declare-function directives
Fixes https://github.com/jwiegley/use-package/issues/474
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Make diminish a soft dependency, as delight already was
Fixes https://github.com/jwiegley/use-package/issues/493
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow :diminish to take no argument, once again
Fix for single :custom (foo bar)
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow :custom (foo1 bar1) (foo2 bar2) etc
Fixes https://github.com/jwiegley/use-package/issues/518
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add support for `:hook`
Fixes https://github.com/jwiegley/use-package/issues/444
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Append to *use-package* when debugging, don't clear it
Fixes https://github.com/jwiegley/use-package/issues/476
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Make unrecognized keywords a warning
@@ -111280,13 +111280,13 @@
Fixes https://github.com/jwiegley/use-package/issues/483
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Upgrade license to GPL 3
Fixes https://github.com/jwiegley/use-package/issues/499
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Don't allow :commands, :bind, etc., to be given an empty list
@@ -111298,49 +111298,49 @@
Fixes https://github.com/jwiegley/use-package/issues/512
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Explicit :defer t should override use-package-always-demand
Fixes https://github.com/jwiegley/use-package/issues/514
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from drrlvn/patch-1
Remove duplicate documentation of :mode
GitHub-reference: https://github.com/jwiegley/use-package/issues/489
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Corrections to the normalization of :custom
-2017-11-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from joewreschnig/implicit-diminish
Allow `:diminish` with no arguments.
GitHub-reference: https://github.com/jwiegley/use-package/issues/472
-2017-11-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/master
Allow customized values to be nil
GitHub-reference: https://github.com/jwiegley/use-package/issues/515
-2017-11-20 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
allow customized values to be nil
-2017-11-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from canatella/add-customization-keywords
Add customization keywords
GitHub-reference: https://github.com/jwiegley/use-package/issues/508
-2017-11-10 Damien Merenne <dam@cosinux.org>
+2023-04-15 Damien Merenne <dam@cosinux.org>
Add support for face customization
@@ -111349,7 +111349,7 @@
faces written in a custom.el, the faces can be customized where the rest
of the package is configured.
-2017-11-10 Damien Merenne <dam@cosinux.org>
+2023-04-15 Damien Merenne <dam@cosinux.org>
Add support for variable customization
@@ -111358,36 +111358,36 @@
variables written in a custom.el, the variable can be customized where the rest
of the package is configured.
-2017-10-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from carldotac/master
Fix documentation typos
GitHub-reference: https://github.com/jwiegley/use-package/issues/513
-2017-10-30 Carl Lieberman <dev@carl.ac>
+2023-04-15 Carl Lieberman <dev@carl.ac>
Fix typos in docstring
-2017-10-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from emacsjanitors/demote-manually
Don't use with-demoted-errors in use-package-ensure-elpa
GitHub-reference: https://github.com/jwiegley/use-package/issues/507
-2017-10-13 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Cosmetic changes to use-package-ensure-elpa
-2017-10-13 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Don't use with-demoted-errors in use-package-ensure-elpa
It expects a literal string as argument at macro-expansion
time, but we need to construct the message.
-2017-10-09 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Remove redundant checks for the empty overlay tree
@@ -111399,25 +111399,25 @@
(evaporate_overlays): Also.
* src/xdisp.c (load_overlay_strings): Also.
-2017-10-07 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Make boolean struct member use one bit
* src/itree.h (struct interval_tree): Add bit descriptor.
-2017-10-07 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Optimize struct layout for space
* src/itree.h (struct interval_node): Move color member near the end.
-2017-10-07 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Make boolean struct member use one bit
* src/itree.h (struct interval_node): Add bit descriptor.
-2017-10-07 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Expand overlay multibyte tests
@@ -111425,7 +111425,7 @@
Expand test.
(test-overlay-multibyte-transition-2): New test.
-2017-10-06 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Adapt overlays when multibyteness changes
@@ -111433,31 +111433,31 @@
(set_overlays_multibyte): New function.
(set-buffer-multibyte): Use function.
-2017-10-06 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Add a function collecting all interval nodes
* src/itree.c (interval_tree_nodes): New function
-2017-10-05 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Fix assignment of offset to newly inserted nodes.
* src/itree.c (interval_tree_insert): Fix offset.
-2017-10-05 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Add offsets when inspecting a node's children's values
*src/itree.c (interval_tree_insert_gap): Add offset.
-2017-10-05 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Add test exposing overlay bug
* test/src/buffer-tests.el (overlay-autogenerated-test-64): New test.
-2017-10-05 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Add test regarding overlay and buffer encoding
@@ -111465,7 +111465,7 @@
New test exposing a bug regarding overlays when changing the
multibyteness of a buffer.
-2017-10-04 Andreas Politz <politza@hochschule-trier.de>
+2023-04-15 Andreas Politz <politza@hochschule-trier.de>
Provide a new tree data-structure for overlays.
@@ -111601,17 +111601,17 @@
performance tests.
* test/manual/noverlay/many-errors.h: New file.
-2017-08-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Overhaul async mechanism safety
-2017-08-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Simplify `eglot--protocol-initialize`
* eglot.el (eglot--protocol-initialize): Simplify
-2017-08-16 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Experimental diagnostic overlays
@@ -111633,33 +111633,33 @@
Remove a couple of comments
-2017-08-15 João Távora <joaotavora@gmail.com>
+2023-04-15 João Távora <joaotavora@gmail.com>
Initial commit
-2017-08-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/feat/fix-install-deferred
Fix bug in use-package-install-deferred-package
GitHub-reference: https://github.com/jwiegley/use-package/issues/479
-2017-07-30 Dror Levin <spatz@psybear.com>
+2023-04-15 Dror Levin <spatz@psybear.com>
Remove duplicate documentation of :mode
-2017-07-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from joewreschnig/481-delight-docs
Document :delight in the doc string and README.
GitHub-reference: https://github.com/jwiegley/use-package/issues/484
-2017-07-10 Joe Wreschnig <joe.wreschnig@gmail.com>
+2023-04-15 Joe Wreschnig <joe.wreschnig@gmail.com>
Document :delight in the doc string and README
-2017-07-08 Joe Wreschnig <joe.wreschnig@gmail.com>
+2023-04-15 Joe Wreschnig <joe.wreschnig@gmail.com>
Allow `:diminish` with no arguments
@@ -111676,18 +111676,18 @@
This addresses some of the redundancy mentioned in issue https://github.com/jwiegley/use-package/issues/288.
-2017-07-02 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from joewreschnig/477-delight-wrappers
Allow multiple :delight arguments, or omitting the mode. (https://github.com/jwiegley/use-package/issues/477)
GitHub-reference: https://github.com/jwiegley/use-package/issues/480
-2017-07-02 Joe Wreschnig <joe.wreschnig@gmail.com>
+2023-04-15 Joe Wreschnig <joe.wreschnig@gmail.com>
Allow :major as the third argument in :delight calls
-2017-07-02 Joe Wreschnig <joe.wreschnig@gmail.com>
+2023-04-15 Joe Wreschnig <joe.wreschnig@gmail.com>
Allow multiple :delight arguments, or omitting the mode. ()
@@ -111703,7 +111703,7 @@
This brings support for `:delight` in line with `:diminish`.
GitHub-reference: https://github.com/jwiegley/use-package/issues/477
-2017-06-30 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Fix bug in use-package-install-deferred-package
@@ -111711,14 +111711,14 @@
the result of a `completing-read' back from a string to a symbol,
which meant the hash-table lookup failed.
-2017-06-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from joewreschnig/magic-469
Add `:magic` and `:magic-fallback` keywords (issue https://github.com/jwiegley/use-package/issues/469).
GitHub-reference: https://github.com/jwiegley/use-package/issues/473
-2017-06-15 Joe Wreschnig <joe.wreschnig@gmail.com>
+2023-04-15 Joe Wreschnig <joe.wreschnig@gmail.com>
Add `:magic` and `:magic-fallback` keywords (issue)
@@ -111729,7 +111729,7 @@
and shared by all four of them.
GitHub-reference: https://github.com/jwiegley/use-package/issues/469
-2017-05-22 David Leatherman <git@david.leatherman.fm> (tiny change)
+2023-04-15 David Leatherman <git@david.leatherman.fm> (tiny change)
Protect against errors during package install
@@ -111738,25 +111738,25 @@
to reach the package repo. This will catch that error and report it
while allowing startup to continue.
-2017-05-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/feat/failed-autoload-msg
Fix quoting error in failed autoload message
GitHub-reference: https://github.com/jwiegley/use-package/issues/456
-2017-05-07 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Fix quoting error in failed autoload message
-2017-04-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/normalize-nil
Make use-package-normalize-value handle nil better
GitHub-reference: https://github.com/jwiegley/use-package/issues/449
-2017-04-05 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Make use-package-normalize-value handle nil better
@@ -111770,18 +111770,18 @@
This had the concrete impact of making it so that :defer-install nil
was treated as :defer-install t.
-2017-04-03 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/fix-bind-key-filter
Don't mutilate keyword arguments in :bind
GitHub-reference: https://github.com/jwiegley/use-package/issues/447
-2017-04-03 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Add comment explaining keyword-argument patch
-2017-04-03 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Don't mutilate keyword arguments in :bind
@@ -111814,27 +111814,27 @@
In particular it just inhibits the list-to-first-element
transformation when the previous element processed was a keyword.
-2017-03-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/fix-after
Fix :after keyword
GitHub-reference: https://github.com/jwiegley/use-package/issues/439
-2017-03-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/always-defer-install
Add use-package-always-defer-install
GitHub-reference: https://github.com/jwiegley/use-package/issues/443
-2017-03-26 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Add use-package-always-defer-install
See https://github.com/jwiegley/use-package/pull/433#issuecomment-289317875
-2017-03-19 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Fix :after keyword
@@ -111844,26 +111844,26 @@
[1]: bd2afa53c7580d23ed8008267b80e1834b6e6600
[2]: https://github.com/jwiegley/use-package/pull/433#issuecomment-287606553
-2017-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/defer-install
[RFC] Support for deferred installation
GitHub-reference: https://github.com/jwiegley/use-package/issues/433
-2017-03-18 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Merge remote-tracking branch 'origin/master' into defer-install
Resolve merge conflicts.
-2017-03-18 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Update docstring, installation prompt message
Various improvements for deferred installation
-2017-03-08 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Get :defer-install completely working, in theory
@@ -111880,7 +111880,7 @@
original function if the user declines to install the package. This
prevents unprofessional errors.
-2017-03-08 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Improve deferred installation mechanism
@@ -111910,17 +111910,17 @@
logic for doing that can now be put in
`use-package-pre-ensure-function'.
-2017-03-08 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Merge branch 'generalized-ensure' into defer-install
-2017-03-08 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Update docstring for use-package-ensure-function
Now it properly reflects the API changes recently made.
-2017-03-08 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
First cut at :defer-install keyword
@@ -111940,7 +111940,7 @@
Documentation has not been updated to reflect :defer-install yet.
-2017-03-08 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Extend capabilities of use-package-ensure-function
@@ -111957,13 +111957,13 @@
behavior can change depending on the values of other keywords, if
those keywords modify the `state' plist appropriately.
-2017-02-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Return `t' after calling `eval-after-load'"
This reverts commit 87a8ff6d693f3cc79ea423ca8c8e0a60b0bc596c.
-2017-02-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Support multiple symbols passed to :after
@@ -111979,46 +111979,46 @@
Fixes https://github.com/jwiegley/use-package/issues/283
-2017-02-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
:mode and :interpreter can now accept (rx ...) forms
Fixes https://github.com/jwiegley/use-package/issues/204
-2017-02-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Return `t' after calling `eval-after-load'
Fixes https://github.com/jwiegley/use-package/issues/174
-2017-02-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add autoload cookie for use-package-autoload-keymap
Fixes https://github.com/jwiegley/use-package/issues/337
-2017-02-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/find-form
Add function use-package-jump-to-package-form
GitHub-reference: https://github.com/jwiegley/use-package/issues/359
-2017-02-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/imenu3
Improve imenu support
GitHub-reference: https://github.com/jwiegley/use-package/issues/356
-2017-02-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/fix-use-package-defaults
Fix use-package-defaults
GitHub-reference: https://github.com/jwiegley/use-package/issues/430
-2017-02-13 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Fix use-package-defaults
@@ -112027,26 +112027,26 @@
not applied when the predicates in use-package-defaults did not return
true, when it should have been applied unconditionally.
-2017-02-13 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Unrevert "Add use-package-defaults"
This reverts commit 013425edeb1829f5d21514f77d41763347538b14.
-2017-02-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Add use-package-defaults"
This reverts commit 3dec23c0860ad297436b9b71b221491ae3790cce.
-2017-02-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/use-package-defaults
Add use-package-defaults
GitHub-reference: https://github.com/jwiegley/use-package/issues/426
-2017-01-16 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Add use-package-defaults
@@ -112062,21 +112062,21 @@
use-package-always-quelpa variable in any reasonable way, without a
way to customize the default values of keywords.
-2017-01-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from raxod502/use-package-ensure-function
Add use-package-ensure-function
GitHub-reference: https://github.com/jwiegley/use-package/issues/427
-2017-01-15 Radon Rosborough <radon.neon@gmail.com>
+2023-04-15 Radon Rosborough <radon.neon@gmail.com>
Add use-package-ensure-function
This allows the user to customize the :ensure keyword by using a
different package manager than package.el.
-2016-12-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add new customization option `use-package-always-demand`
@@ -112086,28 +112086,28 @@
Fixes https://github.com/jwiegley/use-package/issues/423
-2016-12-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from basil-conto/preface
Increase :preface priority
GitHub-reference: https://github.com/jwiegley/use-package/issues/418
-2016-12-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/outline
Support outline-minor-mode
GitHub-reference: https://github.com/jwiegley/use-package/issues/420
-2016-12-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/bind-later
Delay decision whether to use eval-after-load until run-time
GitHub-reference: https://github.com/jwiegley/use-package/issues/419
-2016-12-18 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Delay decision whether to use eval-after-load until run-time
@@ -112120,7 +112120,7 @@
Fixes https://github.com/jwiegley/use-package/issues/378.
-2016-12-17 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Support outline-minor-mode
@@ -112128,7 +112128,7 @@
";;". In "bind-key.el" add the missing ";;; Code:" heading.
In both libraries set `outline-regexp' to an appropriate value.
-2016-12-16 Basil L. Contovounesios <contovob@tcd.ie>
+2023-04-15 Basil L. Contovounesios <contovob@tcd.ie>
Increase :preface priority
@@ -112136,26 +112136,26 @@
description of `:preface' as occurring before everything but
`:disabled'.
-2016-10-31 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phst/bug398
Declare package-read-all-archive-contents
GitHub-reference: https://github.com/jwiegley/use-package/issues/402
-2016-10-31 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Declare package-read-all-archive-contents
Fixes https://github.com/jwiegley/use-package/issues/398
-2016-10-31 Philipp Stephani <phst@google.com>
+2023-04-15 Philipp Stephani <phst@google.com>
Remove tests, which don’t work
Fixes https://github.com/jwiegley/use-package/issues/399
-2016-10-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Don't allow implicit package name arg for binders
@@ -112165,7 +112165,7 @@
intendes to bind <some-key> to 'foopkg command.
-2016-10-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Don't allow nil as a mode function
@@ -112174,7 +112174,7 @@
this is more consistent with the behaviour of (use-package foopkg
:mode (".foo" ".bar")).
-2016-10-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Refactor pair normalizers; add tests for them
@@ -112182,25 +112182,25 @@
:bind ([keysym] . "string") would actually bind keysym to nil (i.e.,
unbind it). It now binds to "string" as expected.
-2016-10-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Remove obsolete mplist tests
The mplist functions were removed in the 2.0
refactoring (4ae584f3ff0e9bda05420ec3b8598e59374b0899).
-2016-10-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Bump version to 2.3
-2016-08-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from appleby/master
Ensure package-pinned-packages is bound before referencing it.
GitHub-reference: https://github.com/jwiegley/use-package/issues/376
-2016-08-15 Mike Appleby <mike@app.leby.org> (tiny change)
+2023-04-15 Mike Appleby <mike@app.leby.org> (tiny change)
Ensure package-pinned-packages is bound before referencing it
@@ -112216,37 +112216,37 @@
Fixes https://github.com/jwiegley/use-package/issues/375
-2016-07-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Remove the use of a tab
-2016-07-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from ketbra/master
Update use-package.el
GitHub-reference: https://github.com/jwiegley/use-package/issues/367
-2016-07-21 Matthew Feinberg <ketbra@users.noreply.github.com> (tiny change)
+2023-04-15 Matthew Feinberg <ketbra@users.noreply.github.com> (tiny change)
Make pin and ensure compatible
`:pin` does not work with `:ensure`, because it doesn't add the package to package-pinned-packages until after reading the package archive contents. This change causes the package archive contents to be reread if the package is pinned and `:ensure` is being used.
-2016-07-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/state-noconst
Some minor fixes
GitHub-reference: https://github.com/jwiegley/use-package/issues/342
-2016-07-17 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Fix declare-function call: FILE must be a string
use-package-as-string: use noerror parameter
-2016-07-17 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Don't pass a constant as the state
@@ -112255,18 +112255,18 @@
effects (e.g. values from previous use-package forms end up in
subsequent ones).
-2016-07-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Version 2.2
-2016-07-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/bump-init
Move :init forms before :after and :demand
GitHub-reference: https://github.com/jwiegley/use-package/issues/360
-2016-06-23 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Move :init forms before :after and :demand
@@ -112289,7 +112289,7 @@
This commit fixes the issue and makes sure that bar-x is set before bar
is loaded by use-package. Fixes https://github.com/jwiegley/use-package/issues/352.
-2016-06-22 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Add function use-package-jump-to-package-form
@@ -112308,7 +112308,7 @@
your use-package declaration doesn't match the regexp used, but this is
easily adjusted.
-2016-06-15 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Improve imenu support
@@ -112316,86 +112316,86 @@
lisp-mode is loaded and check for its existence to avoid making
use-package the place where this variable is declared.
-2016-06-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/imenu2
Fix imenu support for older versions
GitHub-reference: https://github.com/jwiegley/use-package/issues/355
-2016-06-13 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Fix imenu support for older versions
lisp-mode-symbol-regexp was not defined in Emacs 24.5.
-2016-06-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from justbur/imenu
Add imenu support for use-package forms
GitHub-reference: https://github.com/jwiegley/use-package/issues/354
-2016-06-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from robario/patch-1
Fix to ignore load error caused via :after
GitHub-reference: https://github.com/jwiegley/use-package/issues/350
-2016-06-13 Justin Burkett <justin@burkett.cc>
+2023-04-15 Justin Burkett <justin@burkett.cc>
Add imenu support for use-package forms
Also add require forms and group both under menu "Package".
-2016-06-05 robario <webmaster@robario.com> (tiny change)
+2023-04-15 robario <webmaster@robario.com> (tiny change)
Fix to ignore load error caused via :after
-2016-04-03 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from xuchunyang/fix-package-install
Mark package as selected with package-install
GitHub-reference: https://github.com/jwiegley/use-package/issues/336
-2016-03-31 Chunyang Xu <xuchunyang56@gmail.com>
+2023-04-15 Chunyang Xu <xuchunyang56@gmail.com>
Mark package as selected with package-install
Fixes https://github.com/jwiegley/use-package/issues/327
-2016-02-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
:map no longer accepts lists; only eval-after-load if necessary
Fixes https://github.com/jwiegley/use-package/issues/324
-2016-02-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Normalize some error text
-2016-02-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Only printing debug messages if use-package-verbose is `debug'
Fixes https://github.com/jwiegley/use-package/issues/271
-2016-02-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from ljos/master
Quote variable in bind-keys*
GitHub-reference: https://github.com/jwiegley/use-package/issues/325
-2016-02-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Repair :map handling in bind-key.el
GitHub-reference: fixes https://github.com/jwiegley/use-package/issues/324
-2016-02-26 Bjarte Johansen <bjarte.johansen@gmail.com>
+2023-04-15 Bjarte Johansen <bjarte.johansen@gmail.com>
Quote variable in `bind-keys*'
@@ -112403,99 +112403,99 @@
the symbol is passed to `bind-keys-form' and not the value.
GitHub-reference: fixes https://github.com/jwiegley/use-package/issues/323
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add configuration variable `use-package-check-before-init'
Fixes https://github.com/jwiegley/use-package/issues/306
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use `add-to-list' defensively instead of `push'
GitHub-reference: fixes https://github.com/jwiegley/use-package/issues/293
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add variable `use-package-always-defer'
GitHub-reference: fixes https://github.com/jwiegley/use-package/issues/202
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Restore :bind-keymap, it does something special still
Remove :bind-keymaps, and only apply :map bindings after load
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Support multiples uses of :map with :bind
GitHub-reference: fixes https://github.com/jwiegley/use-package/issues/121
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add some variable settings to use-package-tests.el, thanks tarsius
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from alezost/keymap-doc-fix
Handle the case when keymap has a broken documentation
GitHub-reference: https://github.com/jwiegley/use-package/issues/223
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add another `declare'
-2016-02-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Handle :unless correctly
GitHub-reference: fixes https://github.com/jwiegley/use-package/issues/197
-2016-02-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a comment about a recent change
-2016-02-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/master
Allow string values in cons for :bind keywords
GitHub-reference: https://github.com/jwiegley/use-package/issues/303
-2016-02-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from dudebout/patch-1
Upper casing Cs corresponding to Ctrl
GitHub-reference: https://github.com/jwiegley/use-package/issues/316
-2016-02-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add an autoload cookie for `use-package'
-2016-02-05 Nicolas Dudebout <nicolas.dudebout@gmail.com>
+2023-04-15 Nicolas Dudebout <nicolas.dudebout@gmail.com>
Upper casing Cs corresponding to Ctrl
A number of Cs corresponding to Ctrl have been lower cased in comments in eb6b81dfe.
-2016-02-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from thierryvolpiatto/fix_package_install
When :ensure is used install package as a selected package.
GitHub-reference: https://github.com/jwiegley/use-package/issues/314
-2016-02-04 Thierry Volpiatto <thierry.volpiatto@gmail.com>
+2023-04-15 Thierry Volpiatto <thierry.volpiatto@gmail.com>
Ensure package-install support a second argument
* use-package.el (use-package-ensure-elpa): Do it.
-2016-02-04 Thierry Volpiatto <thierry.volpiatto@gmail.com>
+2023-04-15 Thierry Volpiatto <thierry.volpiatto@gmail.com>
When :ensure is used install package as a selected package
@@ -112504,60 +112504,60 @@
* use-package.el (use-package-ensure-elpa): Add package to selected package
by using second arg of package install.
-2016-01-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from kovrik/fix-pin-performance
Do not package-initialize on each :pin
GitHub-reference: https://github.com/jwiegley/use-package/issues/308
-2016-01-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/fix/always-pin-typo
Fix errant variable name.
GitHub-reference: https://github.com/jwiegley/use-package/issues/312
-2016-01-21 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Fix errant variable name
-2016-01-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/feature/always-pin
Add new option `-always-pin'
GitHub-reference: https://github.com/jwiegley/use-package/issues/310
-2016-01-20 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Add new option `-always-pin'
`use-package-always-pin' allows a default archive (or manual) to be
specified for all use-package statements, unless explicitly overridden.
-2016-01-19 Ivan Goncharov <kovrik0@gmail.com>
+2023-04-15 Ivan Goncharov <kovrik0@gmail.com>
Change condition that checks if package has been initialized
-2016-01-17 Ivan Goncharov <kovrik0@gmail.com>
+2023-04-15 Ivan Goncharov <kovrik0@gmail.com>
Do not package-initialize on each :pin
-2016-01-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from kovrik/issue-299
Move :pin out of macro expansion phase
GitHub-reference: https://github.com/jwiegley/use-package/issues/302
-2016-01-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a missing comma
Add a PREDICATE option to bind-key, and :filter to `bind-keys'
-2016-01-08 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
allow string values in cons for :bind keywords
@@ -112573,52 +112573,52 @@
string values to be given with the `:bind` (and also `:chord`) keywords
to expand into these definitions.
-2016-01-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Guard against a case where :load-paths is nil
-2016-01-05 Ivan Goncharov <kovrik0@gmail.com>
+2023-04-15 Ivan Goncharov <kovrik0@gmail.com>
Move :pin out of macro expansion phase fixes
Move :pin out of macro expansion phase
-2015-12-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use cl-mapcan rather than apply 'nconc; thanks wasamasa
-2015-11-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from kovrik/byte-compile-ensure-fix
Install packages when byte-compiling (fix by @npostavs)
GitHub-reference: https://github.com/jwiegley/use-package/issues/285
-2015-11-12 Ivan Goncharov <kovrik0@gmail.com>
+2023-04-15 Ivan Goncharov <kovrik0@gmail.com>
Install packages when byte-compiling (fix by @npostavs)
-2015-11-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Apply a fix from npostavs relating to
GitHub-reference: https://github.com/jwiegley/use-package/issues/279
-2015-11-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from kovrik/master
Move :ensure option execution from macro expansion phase to runtime phase
GitHub-reference: https://github.com/jwiegley/use-package/issues/273
-2015-11-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/feature/after
Support for after keyword.
GitHub-reference: https://github.com/jwiegley/use-package/issues/276
-2015-11-04 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Support for after keyword
@@ -112627,28 +112627,28 @@
Closes https://github.com/jwiegley/use-package/issues/274
-2015-11-02 Ivan Goncharov <kovrik0@gmail.com>
+2023-04-15 Ivan Goncharov <kovrik0@gmail.com>
Move :ensure option from macro expansion phase to runtime phase
-2015-09-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Bump version to 2.1
-2015-09-23 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/extend-bind-handler
Pass in symbol of bind macro, for more extensible re-use of same handler
GitHub-reference: https://github.com/jwiegley/use-package/issues/259
-2015-09-23 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
pass in symbol of bind macro, for more extensible re-use of same handler
related to https://github.com/jwiegley/use-package/issues/258
-2015-09-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Merge pull request from edvorg/master"
@@ -112656,84 +112656,84 @@
changes made to 7d34df4f5dd26b6d8b0899e6508c9af5dedf2dc4.
GitHub-reference: https://github.com/jwiegley/use-package/issues/247
-2015-08-30 Edward Knyshov <edvorg@gmail.com>
+2023-04-15 Edward Knyshov <edvorg@gmail.com>
error handling for use-package
GitHub-reference: https://github.com/jwiegley/use-package/issues/246
-2015-08-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from matklad/master
fix quotation error
GitHub-reference: https://github.com/jwiegley/use-package/issues/245
-2015-08-17 Aleksey Kladov <aleksey.kladov@gmail.com>
+2023-04-15 Aleksey Kladov <aleksey.kladov@gmail.com>
fix quotation error
-2015-08-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/string-packages
Re-add support for string package names
GitHub-reference: https://github.com/jwiegley/use-package/issues/225
-2015-08-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
Re-add support for string package names
e.g. (use-package "isearch") rather than (use-package isearch)
-2015-08-01 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from nickalcock/master
Support :bind (:map '(...)).
GitHub-reference: https://github.com/jwiegley/use-package/issues/235
-2015-07-31 Nick Alcock <nick.alcock@oracle.com>
+2023-04-15 Nick Alcock <nick.alcock@oracle.com>
Support :bind (:map '(...))
We transform it into (:map foo (...) (...)) in the normalizer, and
no longer warn about unknown sorts of arg.
-2015-06-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from thomasf/master
Refresh package.el archives if package is missing.
GitHub-reference: https://github.com/jwiegley/use-package/issues/210
-2015-06-22 Alex Kost <alezost@gmail.com>
+2023-04-15 Alex Kost <alezost@gmail.com>
Handle the case when keymap has a broken documentation
-2015-06-11 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from killdash9/keymap
bind-keymap fixes.
GitHub-reference: https://github.com/jwiegley/use-package/issues/199
-2015-06-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from syl20bnr/fix_hook_injection
Fix calls to run-hooks for :init and :config injected hooks
GitHub-reference: https://github.com/jwiegley/use-package/issues/213
-2015-05-19 Sylvain Benner <sylvain.benner@gmail.com>
+2023-04-15 Sylvain Benner <sylvain.benner@gmail.com>
Fix calls to run-hooks for :init and :config injected hooks
-2015-05-08 Thomas Frössman <thomasf@jossystem.se>
+2023-04-15 Thomas Frössman <thomasf@jossystem.se>
Refresh package.el archives if package is missing
-2015-04-11 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
bind-keymap fixes
@@ -112741,129 +112741,129 @@
commands. `eval' no longer appears to be necessary, using direct
invocation of bind-key*.
-2015-03-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Keymap bindings must be interactive
-2015-03-24 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Failed to require a package is just a message
Minor fix to :diminish
-2015-03-23 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix a bug in the :delight support
-2015-03-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add :delight support, thanks to darkfeline on GitHub
Fixes https://github.com/jwiegley/use-package/issues/189
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add new customization use-package-always-ensure
Fixes https://github.com/jwiegley/use-package/issues/27
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
unbind-key now removes key from personal-keybindings
Fixes https://github.com/jwiegley/use-package/issues/74
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix file headers
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add autoload stanzas to bind-key
Fixes https://github.com/jwiegley/use-package/issues/33
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Correction to an eval-after-load expansion
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Change use-package to use bind-keys and bind-keys*
Fixes https://github.com/jwiegley/use-package/issues/129
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Change bind-key* behavior to mimic bind-keys*
Fixes https://github.com/jwiegley/use-package/issues/148
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Whitespace cleanups
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow :map in bind-keys to accept multiple maps
Fixes https://github.com/jwiegley/use-package/issues/129
-2015-03-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
:pin should return `t'
Modular support appears to be working
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Began work on modular handling of keywords
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Rename use-package-with-elapsed-timer at an internal name
See https://github.com/jwiegley/use-package/issues/185
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Remove code I did not intend to commit
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/macroexp-progn
use-package-progn: replace with macroexp-progn
GitHub-reference: https://github.com/jwiegley/use-package/issues/186
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Fix some docstrings
-2015-03-19 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
use-package-progn: replace with macroexp-progn
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/name-keymap
get-binding-description: return keymap symbol
GitHub-reference: https://github.com/jwiegley/use-package/issues/184
-2015-03-19 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
get-binding-description: return keymap symbol
instead of "#<keymap>".
-2015-03-19 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use push instead of add-to-list
Remove a hack that is not needed anymore
-2015-03-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
macroexpand nested uses of use-package in :init and :config
@@ -112875,7 +112875,7 @@
More work to silence the byte-compiler
-2015-03-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Other minor improvements for byte-compiling
@@ -112883,30 +112883,30 @@
Change some code for consistency's sake
-2015-03-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from killdash9/keymap
minor fixes to get bind-keymap working in 2.0
GitHub-reference: https://github.com/jwiegley/use-package/issues/176
-2015-03-17 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
minor fixes to get bind-keymap working in 2.0
-2015-03-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Always return t on a successful init-time load
Fixes https://github.com/jwiegley/use-package/issues/174
-2015-03-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add to the load-path before the :preface
Fixes https://github.com/jwiegley/use-package/issues/172
-2015-03-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
More fixes related to byte-compilation
@@ -112918,26 +112918,26 @@
Collapse some whitespace
-2015-03-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Allow vectors to be passed to :bind again
Fixes https://github.com/jwiegley/use-package/issues/166
-2015-03-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add code to workaround an inefficiency with eval-after-load
This is currently disabled, as it leads to strange byte-compilation
errors that need to be tracked down.
-2015-03-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Output Compiling message only if verbose is enabled
Allow :pin to accept a symbol
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Relax a path normalization check
@@ -112945,31 +112945,31 @@
Update docstring for :disabled
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/eval-after-name
use--package: eval-after-load name
GitHub-reference: https://github.com/jwiegley/use-package/issues/168
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Undo an erroneous change
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add -hook to the injected hooks
Fixes https://github.com/jwiegley/use-package/issues/161
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Restore an earlier fix to
Fixes https://github.com/jwiegley/use-package/issues/167
GitHub-reference: https://github.com/jwiegley/use-package/issues/53
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
BREAKING CHANGE: Remove :idle and :idle-priority
@@ -113012,7 +113012,7 @@
means we don't have to consider what it means to add `:idle` behavior to
a demand-loaded configuration.
-2015-03-15 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
use--package: eval-after-load name
@@ -113021,11 +113021,11 @@
Reprise of c6d79d2cb40bd141f62eaca6dca47fb2e8e6943f
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Support optional injection of hooks, for Spacemacs
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add :preface, occurring before everything except :disabled
@@ -113035,38 +113035,38 @@
block), and 2) allow you to define code that can be used in an `:if`
test.
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Some minor code reformatting
Fix to :ensure normalization
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from thomasf/master
Fix :ensure value interpretation
GitHub-reference: https://github.com/jwiegley/use-package/issues/163
-2015-03-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/warning
use-package-expand: use display-warning
GitHub-reference: https://github.com/jwiegley/use-package/issues/162
-2015-03-14 Thomas Frössman <thomasf@jossystem.se>
+2023-04-15 Thomas Frössman <thomasf@jossystem.se>
Fix :ensure value interpretation
-2015-03-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
use-package-expand: use display-warning
instead of with-demoted-errors. This prevents errors from getting lost
in the *Messages* buffer.
-2015-03-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Begin refactoring for 2.0; NOTE: BREAKING CHANGES
@@ -113085,17 +113085,17 @@
several instances where you are using :init, but should be using :config
(this was the case for me in a number of places).
-2015-03-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Many stylistics cleanups and simplifications
-2015-03-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Don't add autoload for existing commands"
This reverts commit a2b23f8326d06690c8092ecc5e83ba2e4dd3c336.
-2015-03-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Stylistic changes
@@ -113105,14 +113105,14 @@
Show more informative errors when they occur
-2015-01-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/master
Allow using expanded macro without loading feature
GitHub-reference: https://github.com/jwiegley/use-package/issues/151
-2015-01-18 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
Allow using expanded macro without loading feature
@@ -113124,47 +113124,47 @@
also has to load the library at runtime or the macros fall back to
the default of doing their job silently. See https://github.com/jwiegley/use-package/issues/149.
-2015-01-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from killdash9/keymap
Passing t into keymap function
GitHub-reference: https://github.com/jwiegley/use-package/issues/145
-2015-01-03 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
Passing t into keymap function
-2015-01-02 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from killdash9/keymap
:bind-keymap - bind a key prefix to an autoloaded package keymap
GitHub-reference: https://github.com/jwiegley/use-package/issues/142
-2015-01-02 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from thiagowfx/patch-1
fix small typo (key > keymap)
GitHub-reference: https://github.com/jwiegley/use-package/issues/144
-2015-01-02 Thiago Barroso Perrotta <thiagoperrotta95@gmail.com>
+2023-04-15 Thiago Barroso Perrotta <thiagoperrotta95@gmail.com>
fix small typo (key > keymap)
-2014-12-31 Russell Black <black.russell@gmail.com>
+2023-04-15 Russell Black <black.russell@gmail.com>
:bind-keymap - bind a key prefix to an autoloaded package keymap
-2014-12-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from vermiculus/master
Do not quote lambda expressions
GitHub-reference: https://github.com/jwiegley/use-package/issues/140
-2014-12-19 Sean Allred <code@seanallred.com>
+2023-04-15 Sean Allred <code@seanallred.com>
Do not quote lambda expressions
@@ -113174,84 +113174,84 @@
detrimental; this commit removes all use of the sharp-quote to reduce
confusion.
-2014-12-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from YoungFrog/fixautoloads
Don't add autoload for existing commands
GitHub-reference: https://github.com/jwiegley/use-package/issues/138
-2014-12-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from peterhoeg/master
Check if an archive is valid when pinning
GitHub-reference: https://github.com/jwiegley/use-package/issues/137
-2014-12-17 Peter Hoeg <peter@speartail.com>
+2023-04-15 Peter Hoeg <peter@speartail.com>
Check if package-archives are valid when pinning
-2014-12-17 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2023-04-15 Nicolas Richard <theonewiththeevillook@yahoo.fr>
Don't add autoload for existing commands
-2014-12-16 Peter Hoeg <peter@speartail.com>
+2023-04-15 Peter Hoeg <peter@speartail.com>
pure cleanup
-2014-12-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from peterhoeg/master
Support for pinning package to archive
GitHub-reference: https://github.com/jwiegley/use-package/issues/136
-2014-12-11 Peter Hoeg <peter@speartail.com>
+2023-04-15 Peter Hoeg <peter@speartail.com>
support for pinning package to archive
-2014-09-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from Silex/master
Fix "compiling" typo
GitHub-reference: https://github.com/jwiegley/use-package/issues/125
-2014-09-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from waymondo/master
Add :bind* keyword for `bind-key*`
GitHub-reference: https://github.com/jwiegley/use-package/issues/126
-2014-09-16 Justin Talbott <justin@waymondo.com>
+2023-04-15 Justin Talbott <justin@waymondo.com>
add :bind* keyword for `bind-key*`
-2014-09-16 Philippe Vaucher <philippe.vaucher@gmail.com>
+2023-04-15 Philippe Vaucher <philippe.vaucher@gmail.com>
Fix "compiling" typo
-2014-09-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from thomasf/master
Display which package that has compile errors
GitHub-reference: https://github.com/jwiegley/use-package/issues/124
-2014-09-14 Thomas Frössman <thomasf@jossystem.se>
+2023-04-15 Thomas Frössman <thomasf@jossystem.se>
Display which package that has compile errors
-2014-09-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/master
assume the declare-function macro exists
GitHub-reference: https://github.com/jwiegley/use-package/issues/123
-2014-09-07 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
assume the declare-function macro exists
@@ -113262,64 +113262,64 @@
always expands to `nil' the value of (fboundp 'declare-function) ends
up being unused.
-2014-06-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from BernardHurley/master
bind-keys macro changed to allow prefix map to have a menu string.
GitHub-reference: https://github.com/jwiegley/use-package/issues/112
-2014-06-20 Bernard Hurley <bernard@marcade.biz>
+2023-04-15 Bernard Hurley <bernard@marcade.biz>
bind-keys macro changed to allow prefix map to have a menu string
-2014-05-31 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/desc-vector
Avoid putting vector key sequences in personal-keybindings
GitHub-reference: https://github.com/jwiegley/use-package/issues/110
-2014-05-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
bind-key: cleanup
-2014-05-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
bind-key: no vector keys in personal-keybindings
describe-personal-keybindings requires the key sequences to be stored as
strings.
-2014-05-31 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
personal-keybindings: add docstring
fix typo in bind-key docstring
-2014-05-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from alezost/bind-keys
Add bind-keys*
GitHub-reference: https://github.com/jwiegley/use-package/issues/107
-2014-05-25 Alex Kost <alezost@gmail.com>
+2023-04-15 Alex Kost <alezost@gmail.com>
Add bind-keys* macro
-2014-05-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from thomasf/master
Don't abort compiling package loading fails
GitHub-reference: https://github.com/jwiegley/use-package/issues/106
-2014-05-17 Thomas Frössman <thomasf@jossystem.se>
+2023-04-15 Thomas Frössman <thomasf@jossystem.se>
Don't abort compiling if package loading fails
-2014-05-08 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Revert "Merge pull request from alexko/master"
@@ -113327,27 +113327,27 @@
changes made to a9ba368fa79e4c15b624de73e30c87c98475d466.
GitHub-reference: https://github.com/jwiegley/use-package/issues/104
-2014-05-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from alexko/master
if package can't be located, treat it the same way as disabled
GitHub-reference: https://github.com/jwiegley/use-package/issues/104
-2014-05-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from YoungFrog/fix-mult-mode
Eval backquote earlier and support non-`progn' lists.
GitHub-reference: https://github.com/jwiegley/use-package/issues/95
-2014-05-06 Alex Kosorukoff <alex@3form.com>
+2023-04-15 Alex Kosorukoff <alex@3form.com>
if package can't be located, treat it the same way as disabled
There will be a message "Unable to locate <package-name>" in the log.
-2014-05-05 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2023-04-15 Nicolas Richard <theonewiththeevillook@yahoo.fr>
Eval backquote earlier and support non-`progn' lists
@@ -113365,25 +113365,25 @@
(let ((my-list-of-commands-in-foo '(foo1 foo2)))
(use-package foo :commands ,@my-list-of-commands-in-foo))
-2014-04-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from YoungFrog/keynameeval
* bind-key.el (bind-key): don't eval key-name at macro expansion time.
GitHub-reference: https://github.com/jwiegley/use-package/issues/102
-2014-04-14 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2023-04-15 Nicolas Richard <theonewiththeevillook@yahoo.fr>
* bind-key.el (bind-key): don't eval key-name at macro expansion time
-2014-04-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/bind-vectors
bind-keys: bind directly to prefix-map
GitHub-reference: https://github.com/jwiegley/use-package/issues/101
-2014-04-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
bind-keys: bind directly to prefix-map
@@ -113391,27 +113391,27 @@
This allows specifying vector key sequences, as in bind-key (since
f0776c2aeb3f7f0af66597e10a3e4469ca26629d).
-2014-04-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
bind-keys: ,@(when map (list map)) => map
Omitting map is same as passing nil.
-2014-04-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
fix typo
Actually the reader accepts (list 'a'b) = (list 'a 'b); it still looks
wrong.
-2014-03-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from YoungFrog/idle-interval
Add new option use-package-idle-interval.
GitHub-reference: https://github.com/jwiegley/use-package/issues/99
-2014-03-17 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2023-04-15 Nicolas Richard <theonewiththeevillook@yahoo.fr>
Add new option use-package-idle-interval
@@ -113422,14 +113422,14 @@
This addresses bug https://github.com/jwiegley/use-package/issues/77
-2014-03-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from ffevotte/idle-priority
Add a :idle-priority keyword to change the running order of idle functions
GitHub-reference: https://github.com/jwiegley/use-package/issues/98
-2014-03-17 François Févotte <fevotte@gmail.com>
+2023-04-15 François Févotte <fevotte@gmail.com>
:idle-priority keyword to change the running order of idle functions
@@ -113440,20 +113440,20 @@
Updated documentation as well.
-2014-03-10 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/master
use-package-with-elapsed-timer: respect option at runtime
GitHub-reference: https://github.com/jwiegley/use-package/issues/96
-2014-03-09 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
use-package-font-lock-keywords: add use-package-with-elapsed-timer
use-package-with-elapsed-timer: add declare indent rule
-2014-03-09 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
use-package-with-elapsed-timer: respect option at runtime
@@ -113461,53 +113461,53 @@
expansion time, and as a result customizing the option did nothing,
without also recompiling `use-package.el'.
-2014-03-02 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/bind-vector
let bind-key accept vectors, add docstring
GitHub-reference: https://github.com/jwiegley/use-package/issues/92
-2014-03-01 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
let bind-key accept vectors, add docstring
-2014-02-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from Fuco1/variable-col-width
Add variable column width
GitHub-reference: https://github.com/jwiegley/use-package/issues/90
-2014-02-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from Fuco1/special-form-desc
Add better descriptions for lambdas, closures, keymaps
GitHub-reference: https://github.com/jwiegley/use-package/issues/89
-2014-02-18 Matus Goljer <dota.keys@gmail.com>
+2023-04-15 Matus Goljer <dota.keys@gmail.com>
Add variable column width
Add better descriptions for lambdas, closures, keymaps
-2014-02-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from Fuco1/bind-keys
Add `bind-keys` macro
GitHub-reference: https://github.com/jwiegley/use-package/issues/87
-2014-02-13 Matus Goljer <dota.keys@gmail.com>
+2023-04-15 Matus Goljer <dota.keys@gmail.com>
Add `bind-keys` macro
-2014-02-12 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2023-04-15 Nicolas Richard <theonewiththeevillook@yahoo.fr>
Move tests to separate file
-2014-02-10 Nicolas Richard <theonewiththeevillook@yahoo.fr>
+2023-04-15 Nicolas Richard <theonewiththeevillook@yahoo.fr>
Allow multiple forms after keywords
@@ -113528,7 +113528,7 @@
will be nil. Otherwise the value will be the list of elements between
the keyword and the next keyword.
-2014-02-05 Adam Spiers <emacs@adamspiers.org>
+2023-04-15 Adam Spiers <emacs@adamspiers.org>
stop describe-personal-keybindings adding trailing space
@@ -113536,41 +113536,41 @@
the *Personal Keybindings* buffer looked pretty ugly.
This fixes that.
-2014-01-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aspiers/best-practices
Start addressing some of @jaalto's submitted issues.
GitHub-reference: https://github.com/jwiegley/use-package/issues/79
-2014-01-06 Adam Spiers <emacs@adamspiers.org>
+2023-04-15 Adam Spiers <emacs@adamspiers.org>
fix bind-key URL (fixes)
Also makes a start on https://github.com/jwiegley/use-package/issues/32.
GitHub-reference: https://github.com/jwiegley/use-package/issues/58
-2014-01-06 Adam Spiers <emacs@adamspiers.org>
+2023-04-15 Adam Spiers <emacs@adamspiers.org>
add 'use-package-' prefix to 'with-elapsed-timer'
Fixes https://github.com/jwiegley/use-package/issues/35.
-2014-01-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aspiers/hyperlink-all-bindings
hyperlink functions in Comments column
GitHub-reference: https://github.com/jwiegley/use-package/issues/76
-2014-01-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aspiers/docs
Synchronise docs and then remove one copy to prevent future issues.
GitHub-reference: https://github.com/jwiegley/use-package/issues/78
-2014-01-06 Adam Spiers <emacs@adamspiers.org>
+2023-04-15 Adam Spiers <emacs@adamspiers.org>
fix DRY violation by only having documentation in one place
@@ -113593,34 +113593,34 @@
other formats etc.), it is better to replace the docs in
use-package.el with a pointer to the README.md.
-2014-01-04 Adam Spiers <emacs@adamspiers.org>
+2023-04-15 Adam Spiers <emacs@adamspiers.org>
hyperlink functions in Comments column
Previously, only the functions in the Command column were hyper-linked.
Also clarify the meaning of the "was" entries in the Comments column.
-2013-12-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aspiers/short-mode
allow :mode and :interpreter to accept a string
GitHub-reference: https://github.com/jwiegley/use-package/issues/73
-2013-12-16 Adam Spiers <emacs@adamspiers.org>
+2023-04-15 Adam Spiers <emacs@adamspiers.org>
allow :mode and :interpreter to accept a string
Fixes https://github.com/jwiegley/use-package/issues/72.
-2013-12-09 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/defun
use-package: use defun as lisp-indent-function
GitHub-reference: https://github.com/jwiegley/use-package/issues/69
-2013-12-09 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
use-package: use defun as lisp-indent-function
@@ -113648,93 +113648,93 @@
the calls to `use-package' as in the first example the use of `defun'
does not really pose a problem.
-2013-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Add a :demand directive, to override deferred loading ()
GitHub-reference: https://github.com/jwiegley/use-package/issues/65
-2013-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
fboundp is a function, not a variable
Fixes https://github.com/jwiegley/use-package/issues/68
-2013-12-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from dabrahams/patch-1
Backward compatibility with emacs-22.1
GitHub-reference: https://github.com/jwiegley/use-package/issues/67
-2013-12-02 Dave Abrahams <dave@boostpro.com>
+2023-04-15 Dave Abrahams <dave@boostpro.com>
Backward compatibility with emacs-22.1
This change supports the emacs that ships with MacOS X, the last version not encumbered by GPLv3.
-2013-12-02 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Default use-package-verbose to nil
-2013-11-05 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from Silex/master
Remove el-get support
GitHub-reference: https://github.com/jwiegley/use-package/issues/64
-2013-11-05 Philippe Vaucher <philippe.vaucher@gmail.com>
+2023-04-15 Philippe Vaucher <philippe.vaucher@gmail.com>
Remove el-get support
-2013-10-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aethanyc/add-missing-keyword
Add :pre-load to use-package-keywords
GitHub-reference: https://github.com/jwiegley/use-package/issues/62
-2013-10-25 Ting-Yu Lin <aethanyc@gmail.com>
+2023-04-15 Ting-Yu Lin <aethanyc@gmail.com>
Add :pre-load to use-package-keywords
The :pre-load keyword cannot be used unless it is in
`use-package-keywords' list.
-2013-10-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from PhilHudson/master
Properly enable runtime dependency for :idle stanza (issue https://github.com/jwiegley/use-package/issues/60)
GitHub-reference: https://github.com/jwiegley/use-package/issues/61
-2013-10-15 Phil Hudson <phil.hudson@iname.com>
+2023-04-15 Phil Hudson <phil.hudson@iname.com>
Properly enable runtime dependency for :idle stanza (issue)
See issue https://github.com/jwiegley/use-package/issues/60.
GitHub-reference: https://github.com/jwiegley/use-package/issues/60
-2013-10-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/comma
remove extra comma (added by 026c46c)
GitHub-reference: https://github.com/jwiegley/use-package/issues/59
-2013-10-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
remove extra comma (added by 026c46c)
-2013-10-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/cleanup
Cleanup
GitHub-reference: https://github.com/jwiegley/use-package/issues/57
-2013-10-12 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
let with-elapsed-timer return last form
@@ -113742,14 +113742,14 @@
with-elapsed-timer: only check verbosity once
-2013-10-12 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
remove after-init-hook for override-global-mode
The INIT-VALUE argument to define-minor-mode is t, so it's enabled by
default.
-2013-10-12 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
macroexpand not needed
@@ -113788,29 +113788,29 @@
(disassemble (lambda () (test-lambda "testing...")))
(disassemble (lambda () (test-expand-lambda "testing...")))
-2013-10-12 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
cl not needed since flet was removed in 82903da
-2013-10-07 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/first-keyword
Add a ":first" keyword for those occasions that it's necessary.
GitHub-reference: https://github.com/jwiegley/use-package/issues/42
-2013-09-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/quasiquote
Quasiquote
GitHub-reference: https://github.com/jwiegley/use-package/issues/56
-2013-09-25 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
use plist-get-value for all non-sexp args
-2013-09-25 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
plist-get-value treats arg as backquoted
@@ -113824,7 +113824,7 @@
,@(cl-loop for i from ?a to ?z
collect `(,(string i) . nifty-function))))
-2013-09-25 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from dudebout/fixes-
@@ -113832,7 +113832,7 @@
GitHub-reference: https://github.com/jwiegley/use-package/issues/55
GitHub-reference: https://github.com/jwiegley/use-package/issues/54
-2013-09-25 Nicolas Dudebout <nicolas.dudebout@gmail.com>
+2023-04-15 Nicolas Dudebout <nicolas.dudebout@gmail.com>
Removes `plist-get-sexp`
@@ -113852,14 +113852,14 @@
:config (my-foo-function))
```
-2013-09-24 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from dudebout/variable-and-function-support
Enables using variables and functions as arguments
GitHub-reference: https://github.com/jwiegley/use-package/issues/54
-2013-09-24 Nicolas Dudebout <nicolas.dudebout@gmail.com>
+2023-04-15 Nicolas Dudebout <nicolas.dudebout@gmail.com>
Enables using variables and functions as arguments
@@ -113870,14 +113870,14 @@
+ when a sexp to be evaluated is required, it is possible to pass a
function instead
-2013-09-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/eval-after-name
pass name (not name-string) to eval-after-load
GitHub-reference: https://github.com/jwiegley/use-package/issues/53
-2013-09-16 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
pass name (not name-string) to eval-after-load
@@ -113885,14 +113885,14 @@
file with the same name as the package and again when loading the
package itself.
-2013-09-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aethanyc/fix-highlight
Fix highlight use-package for Emacs snapshot
GitHub-reference: https://github.com/jwiegley/use-package/issues/49
-2013-09-13 Ting-Yu Lin <aethanyc@gmail.com>
+2023-04-15 Ting-Yu Lin <aethanyc@gmail.com>
Fix highlight use-package for Emacs snapshot
@@ -113904,21 +113904,21 @@
2327 on font-lock.el in the following patch.
http://bzr.savannah.gnu.org/lh/emacs/trunk/revision/111821
-2013-09-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/hilite-redux
highlight use-package before typing package name
GitHub-reference: https://github.com/jwiegley/use-package/issues/47
-2013-09-04 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from aethanyc/improve-output-buffer
Improve (describe-personal-keybindings) output
GitHub-reference: https://github.com/jwiegley/use-package/issues/48
-2013-09-04 Ting-Yu Lin <aethanyc@gmail.com>
+2023-04-15 Ting-Yu Lin <aethanyc@gmail.com>
Improve (describe-personal-keybindings) output
@@ -113928,21 +113928,21 @@
Quote the command-desc output so that it is made into a hyperlink.
-2013-09-03 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
highlight use-package before typing package name
This follow the same pattern as the highlighting for provide and require
from `lisp-font-lock-keywords-2' in font-lock.el
-2013-08-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/master
also check `byte-compile-current-file' for compile time loads, fixes issue https://github.com/jwiegley/use-package/issues/44
GitHub-reference: https://github.com/jwiegley/use-package/issues/45
-2013-08-15 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
also check `byte-compile-current-file' for compile time loads, fixes issue
@@ -113950,105 +113950,105 @@
loading from source
GitHub-reference: https://github.com/jwiegley/use-package/issues/44
-2013-08-15 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Changed :first to :pre-load
Updated and extended documentation.
-2013-08-13 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/master
Byte compilation, fixes for https://github.com/jwiegley/use-package/issues/29 and https://github.com/jwiegley/use-package/issues/30
GitHub-reference: https://github.com/jwiegley/use-package/issues/43
-2013-08-13 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
use lambda around deferred :config forms to compile them, fixes issue
GitHub-reference: https://github.com/jwiegley/use-package/issues/30
-2013-08-13 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
use `eval-when-compile' for loading package at compile time, fixes issue
GitHub-reference: https://github.com/jwiegley/use-package/issues/29
-2013-08-13 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Add a ":first" keyword for those occasions that it's necessary
-2013-08-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/master
refine use-package highlighting regexp
GitHub-reference: https://github.com/jwiegley/use-package/issues/41
-2013-08-11 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
refine use-package highlighting regexp
-2013-07-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from purcell/patch-2
Fix initial line to satisfy package.el
GitHub-reference: https://github.com/jwiegley/use-package/issues/40
-2013-07-28 Steve Purcell <steve@sanityinc.com>
+2023-04-15 Steve Purcell <steve@sanityinc.com>
Fix initial line to satisfy package.el
-2013-07-03 Phil Hudson <phil.hudson@iname.com>
+2023-04-15 Phil Hudson <phil.hudson@iname.com>
Validate keywords. Error if any keyword is unrecognized
Conflicts:
use-package.el
-2013-06-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/ensure-doc
Ensure doc
GitHub-reference: https://github.com/jwiegley/use-package/issues/37
-2013-06-26 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Added documentation to use-package macro
Documentation added for :ensure keyword
-2013-05-15 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from milkypostman/master
package header should be the full filename + ext
GitHub-reference: https://github.com/jwiegley/use-package/issues/28
-2013-05-15 Donald Curtis <dcurtis@milkbox.net>
+2023-04-15 Donald Curtis <dcurtis@milkbox.net>
package header should, hold, sold be the full filename + ext
this fixes a bug in using `(package-buffer-info)`
-2013-04-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/font-lock
fontify use-package form
GitHub-reference: https://github.com/jwiegley/use-package/issues/25
-2013-04-27 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from tarsius/master
some small cleanups
GitHub-reference: https://github.com/jwiegley/use-package/issues/24
-2013-04-27 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
fontify use-package form
@@ -114056,143 +114056,143 @@
quiet byte-compiler; ensure package.el is loaded
-2013-04-27 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
don't use obsolete flet
Unfortunately there isn't a proper dynamically scoped
replacement, so we have to resort to using funcall.
-2013-04-27 Jonas Bernoulli <jonas@bernoul.li>
+2023-04-15 Jonas Bernoulli <jonas@bernoul.li>
enforce use of spaces for indentation
-2013-04-23 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from purcell/patch-1
Add Package-Requires header for ELPA installations
GitHub-reference: https://github.com/jwiegley/use-package/issues/22
-2013-04-23 Steve Purcell <steve@sanityinc.com>
+2023-04-15 Steve Purcell <steve@sanityinc.com>
Add Package-Requires header for ELPA installations
-2013-04-16 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/easy-diminish
needed extra layer of nesting for diminish calls
GitHub-reference: https://github.com/jwiegley/use-package/issues/21
-2013-04-16 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
needed extra layer of nesting for diminish calls
-2013-04-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/easy-diminish
let :diminish "string" guess correct mode symbol
GitHub-reference: https://github.com/jwiegley/use-package/issues/20
-2013-04-14 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from npostavs/bind-override
let bind-key* override minor modes with emulation-mode-map-alists
GitHub-reference: https://github.com/jwiegley/use-package/issues/19
-2013-04-14 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
let :diminish "string" guess correct mode symbol
-2013-04-13 Noam Postavsky <npostavs@gmail.com>
+2023-04-15 Noam Postavsky <npostavs@gmail.com>
let bind-key* override minor modes with emulation-mode-map-alists
-2013-03-23 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from PhilHudson/master
Macro expansion redux
GitHub-reference: https://github.com/jwiegley/use-package/issues/17
-2013-03-23 Phil Hudson <phil.hudson@iname.com>
+2023-04-15 Phil Hudson <phil.hudson@iname.com>
Runtime client code independence redux
Tweak to previous fix for expanding macros correctly at code-planting time. Specifically, eval `use-package-minimum-reported-time' at code-planting time not at runtime (which would require use-package.el to be loaded first).
-2013-02-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Corrected a typo
-2013-02-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/master
Support for idle loading of packages
GitHub-reference: https://github.com/jwiegley/use-package/issues/16
-2013-02-12 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Merge branch 'master' of https://github.com/jwiegley/use-package
-2013-02-12 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
idle initiation of packages
A new feature which adds support for idle startup and loading of packages.
-2013-02-06 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/master
Load time display option.
GitHub-reference: https://github.com/jwiegley/use-package/issues/15
-2013-02-05 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Added minimum load time display option
Makes the minimum load time before use-package displays
a message a customizable option.
-2013-01-28 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from bdd/master
Remove trailing whitespace
GitHub-reference: https://github.com/jwiegley/use-package/issues/14
-2013-01-28 Berk D. Demir <bdd@mindcast.org>
+2023-04-15 Berk D. Demir <bdd@mindcast.org>
Cleanup trailing whitespace
Just `M-x delete-trailing-whitespace' on use-package.el
-2013-01-23 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from PhilHudson/macroexpand
Macroexpand quoted eval-after-load block early
GitHub-reference: https://github.com/jwiegley/use-package/issues/13
-2013-01-23 Phil Hudson <phil.hudson@iname.com>
+2023-04-15 Phil Hudson <phil.hudson@iname.com>
Macroexpand quoted eval-after-load block early
The main `use-package' macro incorrectly planted code containing a call to the `with-elapsed-timer' macro in a quoted block to be run by `eval-after-load'. If package use-package was not loaded at runtime, the block would error saying correctly that `with-elapsed-timer' is undefined. This mod correctly macroexpands the block at code generation time.
-2013-01-18 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/master
Better support for ELPA.
GitHub-reference: https://github.com/jwiegley/use-package/issues/11
-2013-01-18 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Support packages where autoload and elpa name are different
@@ -114201,18 +114201,18 @@
the ELPA name is ecb. This commit allows ensure to take an
argument (other than t).
-2013-01-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/master
Inline documentation
GitHub-reference: https://github.com/jwiegley/use-package/issues/10
-2013-01-17 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Documentation for the use-package macro
-2013-01-17 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Reverting "Documentation for the use-package macro."
@@ -114220,29 +114220,29 @@
This reverts commit abc0ebc92dc1cf9ef9adfe133d0b30bf7382b65c.
-2013-01-17 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
Documentation for the use-package macro
-2013-01-12 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from phillord/master
ELPA support
GitHub-reference: https://github.com/jwiegley/use-package/issues/9
-2012-12-31 Phillip Lord <phillip.lord@russet.org.uk>
+2023-04-15 Phillip Lord <phillip.lord@russet.org.uk>
ELPA package support
-2012-11-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Merge pull request from PhilHudson/master
Support optional diminish replacement string parameter using conses
GitHub-reference: https://github.com/jwiegley/use-package/issues/4
-2012-11-20 Phil Hudson <phil.hudson@iname.com>
+2023-04-15 Phil Hudson <phil.hudson@iname.com>
Support diminishing to a replacement string as well as to nothing
@@ -114255,33 +114255,33 @@
The second and fourth formats are new with this change.
-2012-07-30 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Use-package now accepts function as argument
-2012-07-11 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Only use user-site-lisp-directory if defined
-2012-06-26 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Correct return value from with-elapsed-timer
-2012-06-22 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
More updates to support el-get
Byte-compilation related fix
-2012-06-21 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Added :pre-init
-2012-06-20 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Establish autoloads after :init
-2012-06-17 John Wiegley <johnw@newartisans.com>
+2023-04-15 John Wiegley <johnw@newartisans.com>
Added :mode and :interpreter keywords
@@ -114322,7 +114322,8 @@
This file records repository revisions from
commit f2ae39829812098d8269eafbc0fcb98959ee5bb7 (exclusive) to
-commit 5e039d5a6e99d8380044f410673b8ee51dbc1711 (inclusive).
+2023-04-15d5a6e99d8380044f410673b8ee51dbc1711 (inclusive).
+commit de7901abbc21114721057c907cc52455e228f826 (inclusive).
See ChangeLog.3 for earlier changes.
;; Local Variables:
diff --git a/INSTALL.REPO b/INSTALL.REPO
index dcbbbcb9594..ea88842cfa9 100644
--- a/INSTALL.REPO
+++ b/INSTALL.REPO
@@ -4,7 +4,7 @@ The Emacs repository is hosted on Savannah. The following Git command
will clone the repository to the 'emacs' subdirectory of the current
directory on your local machine:
- git clone git://git.sv.gnu.org/emacs.git
+ git clone https://git.savannah.gnu.org/git/emacs.git
To build the repository code, simply run 'make' in the 'emacs'
directory. This should work if your files are freshly checked out
diff --git a/Makefile.in b/Makefile.in
index 8b77aac38cd..4f2f2f15c97 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1270,7 +1270,7 @@ emacslog = build-aux/gitlog-to-emacslog
# The ChangeLog history files are called ChangeLog.1, ChangeLog.2, ...,
# ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX). $(CHANGELOG_N) stands for
# the newest (highest-numbered) ChangeLog history file.
-CHANGELOG_HISTORY_INDEX_MAX = 4
+CHANGELOG_HISTORY_INDEX_MAX = 3
CHANGELOG_N = ChangeLog.$(CHANGELOG_HISTORY_INDEX_MAX)
# Convert git commit log to ChangeLog file. make-dist uses this.
@@ -1280,7 +1280,7 @@ ChangeLog:
./$(emacslog) -o $(CHANGELOG) -n $(CHANGELOG_HISTORY_INDEX_MAX)
# Check that we are in a good state for changing history.
-PREFERRED_BRANCH = emacs-29
+PREFERRED_BRANCH = emacs-28
preferred-branch-is-current:
git branch | grep -q '^\* $(PREFERRED_BRANCH)$$'
unchanged-history-files:
diff --git a/README b/README
index 64f45764d6d..19d5c96e348 100644
--- a/README
+++ b/README
@@ -2,7 +2,7 @@ Copyright (C) 2001-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.
-This directory tree holds version 29.0.90 of GNU Emacs, the extensible,
+This directory tree holds version 30.0.50 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU
diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS
index 6e080d1f5bb..1273e9a976b 100644
--- a/admin/MAINTAINERS
+++ b/admin/MAINTAINERS
@@ -294,7 +294,7 @@ Po Lu
Tramp
Maintainer: Michael Albinus
- Repository: git://git.savannah.gnu.org/tramp.git
+ Repository: https://git.savannah.gnu.org/git/tramp.git
Mailing List: tramp-devel@gnu.org
Bug Reports: M-x tramp-bug
Notes: For backward compatibility requirements, see
@@ -316,7 +316,7 @@ Modus themes
Org Mode
Home Page: https://orgmode.org/
Maintainer: Org Mode developers
- Repository: git://git.sv.gnu.org/emacs/org-mode.git
+ Repository: https://git.savannah.gnu.org/git/emacs/org-mode.git
Mailing list: emacs-orgmode@gnu.org
Bug Reports: M-x org-submit-bug-report
Notes: Org Mode is maintained as a separate project that is
diff --git a/admin/admin.el b/admin/admin.el
index 735d426b09b..90f810b79c6 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -110,7 +110,7 @@ Root must be the root of an Emacs source tree."
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "configure.ac" version
(rx (and "AC_INIT" (1+ (not (in ?,)))
- ?, (0+ space) ?\[
+ ?, (0+ space)
(submatch (1+ (in "0-9."))))))
(set-version-in-file root "nt/README.W32" version
(rx (and "version" (1+ space)
@@ -843,8 +843,11 @@ $Date: %s $
(package-install pkg)
(require pkg nil t))))
+(declare-function org-html-export-as-html "ox-html.el")
(defvar org-html-postamble)
(defvar org-html-mathjax-template)
+(defvar htmlize-output-type)
+
(defun make-news-html-file (root version)
"Convert the NEWS file into an HTML file."
(interactive (let ((root
diff --git a/admin/authors.el b/admin/authors.el
index 671c3750d57..147282a99a2 100644
--- a/admin/authors.el
+++ b/admin/authors.el
@@ -48,9 +48,7 @@ files.")
("Alexander Gramiak" "Alex Gramiak")
("Alexandru Harsanyi" "Alex Harsanyi")
("Álvar Jesús Ibeas Martín" "Álvar Ibeas")
- (nil "ambihelical")
("Andrea Corallo" "AndreaCorallo")
- ("Andrii Kolomoiets" "andreyk\\.mad@gmail\\.com")
("Andrew Csillag" "Drew Csillag")
("Andrew G Cohen" "Andrew Cohen")
("Anna M. Bigatti" "Anna Bigatti")
@@ -58,26 +56,19 @@ files.")
("Barry A. Warsaw" "Barry A. Warsaw, Century Computing, Inc."
"Barry A. Warsaw, ITB" "Barry Warsaw")
("Bastien Guerry" "Bastien .*bzg")
- ("Benjamin Carlsson" "glacials" "ben@twos\\.dev")
- ("Benjamin Schwerdtner" "Benjamin\\.Schwerdtner@gmail\\.com" "Ben Schw")
("Bill Carpenter" "WJ Carpenter")
("Bill Mann" "William F. Mann")
("Bill Rozas" "Guillermo J. Rozas")
- ("Billy Zheng" "vil963@gmail\\.com")
- (nil "binjo\\.cn@gmail\\.com")
- (nil "bug-gnu-emacs@gnu\\.org") ; mistake
+ (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")
("Brian Sniffen" "Brian T. Sniffen")
- (nil "brotzeitmacher@gmail\\.com")
(nil "castor@my-dejanews")
- (nil "chengang31@gmail\\.com")
+ (nil "chengang31@gmail.com")
(nil "chuntaro")
("Clément Pit-Claudel" "Clément Pit--Claudel")
- (nil "Cristian" "crstml@libero\\.it")
- ("Le Trung Dan" "daanturo@gmail\\.com" "Daanturo")
- ("Daniel Freeman" "dannyfreeman")
("David Abrahams" "Dave Abrahams")
("David J. Biesack" "David Biesack")
("David De La Harpe Golden" "David Golden")
@@ -90,7 +81,7 @@ files.")
(nil "dalanicolai")
(nil "deech@deech")
("Deepak Goel" "D. Goel")
- ("Earl Hyatt" "Earl" "ej32u@protonmail\\.com")
+ ("Earl Hyatt" "Earl" "ej32u@protonmail.com")
("Ed L. Cashin" "Ed L Cashin")
("Edward M. Reingold" "Ed\\(ward\\( M\\)?\\)? Reingold" "Reingold Edward M")
("Emilio C. Lopes" "Emilio Lopes")
@@ -99,27 +90,18 @@ files.")
("Etienne Prud’Homme" "Etienne Prud'Homme")
("Fabián Ezequiel Gallina" "Fabian Ezequiel Gallina" "Fabi.n E\\. Gallina")
(nil "felix.*EmacsWiki")
- (nil "felix\\.dick@web\\.de")
(nil "foudfou")
- ("Feraidoon Mehri"
- "NightMachinary"
- "rudiwillalwaysloveyou@gmail\\.com" "fifymehry@gmail\\.com")
("Francis Litterio" "Fran Litterio")
("Francis J. Wright" "Dr Francis J. Wright" "Francis Wright")
("François Pinard" "Francois Pinard")
("Francesco Potortì" "Francesco Potorti" "Francesco Potorti`")
("Frederic Pierresteguy" "Fred Pierresteguy")
(nil "^FSF")
- (nil "galeo")
- ("Garid Zorigoo" "garid3000" "garidzorigoo@gmail\\.com")
("Gerd Möllmann" "Gerd Moellmann")
- (nil "haqle314")
("Hallvard B. Furuseth" "Hallvard B Furuseth" "Hallvard Furuseth")
- (nil "hokomo@airmail\\.cc" "hokomo")
("Hrvoje Nikšić" "Hrvoje Niksic")
("Ian Dunn" "^Ian D\\>")
;; lisp/org/ChangeLog.1 2010-11-11.
- ("Ignacio Casso" "ignacio\\.decasso@imdea\\.org" "ignaciocasso@hotmail\\.com")
(nil "immerrr")
(nil "aaa bbb")
(nil "Code Extracted") ; lisp/newcomment.el's "Author:" header
@@ -136,8 +118,6 @@ files.")
("Jérémie Courrèges-Anglas" "Jeremie Courreges-Anglas")
("Jeremy Bertram Maitin-Shepard" "Jeremy Maitin-Shepard")
("Jérémy Compostella" "Jeremy Compostella")
- (nil "jgarte@" "jgart")
- (nil "jicksaw@pm\\.me" "jicksaw")
("Jimmy Aguilar Mena" "Ergus")
("Johan Bockgård" "Johan Bockgard")
("John F. Carr" "John F Carr")
@@ -151,7 +131,6 @@ files.")
("Juan León Lahoz García" "Juan-Leon Lahoz Garcia")
("Jürgen Hötzel" "Juergen Hoetzel")
(nil "k3tu0isui")
- (nil "kby@tilde\\.team")
("K. Shane Hartman" "Shane Hartman")
("Kai Großjohann" "Kai Grossjohann")
("Karl Berry" "K. Berry")
@@ -161,14 +140,8 @@ files.")
("Kenichi Handa" "Ken'ichi Handa" "Kenichi HANDA" "K\\. Handa")
("Kevin Greiner" "Kevin J. Greiner")
("Kim F. Storm" "Kim Storm")
- ;; The dash is a kludge, so this contributor is not ignored.
- ("kobarity-" "kobarity@gmail\\.com")
- ("Koen van Greevenbroek" "realcomplex" "koenvg@posteo\\.net")
("Kyle Jones" "Kyle E. Jones")
("Lars Magne Ingebrigtsen" "Lars Ingebrigtsen")
- ("Laurence Warne" "lWarne" "laurencewarne@gmail\\.com")
- (nil "lensplaysgames@gmail\\.com")
- (nil "lorniu@gmail\\.com")
(nil "LynX@bk.ru")
(nil "lu4nx")
("Marcus G. Daniels" "Marcus Daniels")
@@ -190,19 +163,14 @@ files.")
("Michael R. Cook" "Michael Cook")
("Michael Sperber" "Mike Sperber" "Michael Sperber \\[Mr. Preprocessor\\]")
("Michalis V" "^mvar")
- ("Miha Rihtaršič" "Miha Rihtarsic" "miha@kamnitnik\\.top" "miha")
+ ("Miha Rihtaršič" "Miha Rihtarsic")
("Mikio Nakajima" "Nakajima Mikio")
- (nil "montag451@laposte\\.net")
- (nil "na@aisrntairetnraoitn")
("Nelson Jose dos Santos Ferreira" "Nelson Ferreira")
("Noorul Islam" "Noorul Islam K M")
;;; ("Tetsurou Okazaki" "OKAZAKI Tetsurou") ; FIXME?
- (nil "odanoburu@")
- (nil "one\\.last\\.kiss@outlook\\.com")
- ("Cao ZhenXiang" "mail@ookami\\.one")
("Óscar Fuentes" "Oscar Fuentes")
(nil "pillule")
- (nil "psyberbits@gmail\\.com")
+ (nil "psyberbits@gmail.com")
("Paul Eggert" "Paul R\\. Eggert")
("Pavel Janík" "Pavel Janík Ml." "Pavel Janik Ml." "Pavel Janik")
("Pavel Kobiakov" "Pavel Kobyakov")
@@ -215,18 +183,14 @@ files.")
("Philipp Stephani" "Philipp .*phst@google")
("Piotr Zieliński" "Piotr Zielinski")
("Po Lu" "Po Lu Via") ; looks like a mistake
- ("Po Lu" "oldosfan" "luangruo@yahoo\\.com")
("Przemysław Wojnowski" "Przemyslaw Wojnowski")
- ("Qifan Wang" "LdBeth" "andpuke@foxmail\\.com")
- ("R. Bernstein" "rb@dustyfeet\\.com")
+ ("R. Bernstein" "rb@dustyfeet.com")
("Rainer Schöpf" "Rainer Schoepf")
("Raja R. Harinath" "Raja R Harinath")
("Rasmus Pank Roulund" "Rasmus .*rasmus@gmx")
- (nil "rbrtb@")
("Richard G. Bielawski" "Richard G Bielawski" "Richard Bielawski")
("Richard King" "Dick King")
("Richard M. Stallman" "Richard Stallman" "rms@gnu.org")
- (nil "webmaster@robario\\.com")
("Robert J. Chassell" "Bob Chassell")
("Roberto Huelga Díaz" "Roberto Huelga")
("Rodney J. Whitby" "Rod Whitby")
@@ -234,19 +198,17 @@ files.")
("Ron Schnell" "Ronnie Schnell")
("Rui-Tao Dong" "Rui-Tao Dong ~{6-HpLN~}")
("Ryan Thompson" "Ryan .*rct@thompsonclan")
- (nil "rvs314")
(nil "rzl24ozi")
("Sacha Chua" "Sandra Jean Chua")
("Sam Steingold" "Sam Shteingold")
("Satyaki Das" "Indexed search by Satyaki Das")
("Sébastien Vauban" "Sebastien Vauban")
("Sergey Litvinov" "Litvinov Sergey")
- ("Simen Heggestøyl" "simenheg@gmail\\.com")
+ ("Simen Heggestøyl" "simenheg@gmail.com")
(nil "prime.wizard")
("Shun-ichi Goto" "Shun-ichi GOTO")
;; There are other Stefans.
;;; ("Stefan Monnier" "Stefan")
- (nil "ssnnoo")
("Steven L. Baur" "SL Baur" "Steven L Baur")
("Stewart M. Clamen" "Stewart Clamen")
("Stuart D. Herring" "Stuart Herring" "Davis Herring")
@@ -260,7 +222,6 @@ files.")
("Thomas Dye" "Tom Dye")
("Thomas Horsley" "Tom Horsley") ; FIXME ?
("Thomas Wurgler" "Tom Wurgler")
- (nil "thuna\\.cing@gmail\\.com")
("Toby Cubitt" "Toby S\\. Cubitt")
("Tomohiko Morioka" "MORIOKA Tomohiko")
("Torbjörn Axelsson" "Torbjvrn Axelsson")
@@ -269,29 +230,23 @@ files.")
("Tsugutomo Enami" "enami tsugutomo")
("Ulrich Müller" "Ulrich Mueller")
(nil "vividsnow")
- (nil "Valenoern" "valenoern@distributary\\.network")
("Vincent Del Vecchio" "Vince Del Vecchio")
- ("M Visuwesh" "visuweshm@gmail\\.com")
- (nil "vjoki@")
- (nil "whatacold@gmail\\.com")
("William M. Perry" "Bill Perry")
("Wlodzimierz Bzyl" "W.*dek Bzyl")
(nil "xyblor")
- ("Yilkal Argaw" "yilkalargaw" "yilkalargawworkneh@gmail\\.com")
("Yoni Rabkin" "Yoni Rabkin Katzenell")
("Yoshinori Koseki" "KOSEKI Yoshinori" "小関 吉則")
- ("Yuzhana Ego" "YugaEgo" "yet@ego\\.team")
("Yutaka NIIBE" "NIIBE Yutaka")
(nil "stardiviner")
- (nil "lin\\.sun")
+ (nil "lin.sun")
("Nitish Chinta" "nitishch")
("Carlos Pita" "memeplex")
("Vinicius Jose Latorre" "viniciusjl")
("Gaby Launay" "galaunay")
("Dick R. Chiang" "dickmao")
- ("Lin Zhou" "georgealbert@qq\\.com")
- (nil "yan@metatem\\.net")
- (nil "gnu_lists@halloleo\\.hailmail\\.net")
+ ("Lin Zhou" "georgealbert@qq.com")
+ (nil "yan@metatem.net")
+ (nil "gnu_lists@halloleo.hailmail.net")
)
"Alist of author aliases.
@@ -965,30 +920,9 @@ Changes to files in this list are not listed.")
"emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
"test-distrib.c" "testfile"
"tpu-edt.doc" ; see below
- ;; etc/images/gnus/
- "etc/images/gnus/important.pbm"
- "etc/images/gnus/receipt.pbm"
- "etc/images/gnus/unimportant.pbm"
"iso-swed.el"
- ;; lisp/obsolete/
"lisp/obsolete/vc-mcvs.el"
"obsolete/vc-mcvs.el"
- "lisp/obsolete/patcomp.el"
- "lisp/obsolete/abbrevlist.el"
- "lisp/obsolete/assoc.el"
- "obsolete/assoc.el"
- "lisp/obsolete/complete.el"
- "lisp/obsolete/cust-print.el"
- "lisp/obsolete/erc-hecomplete.el"
- "lisp/obsolete/mailpost.el"
- "obsolete/mailpost.el"
- "lisp/obsolete/mouse-sel.el"
- "lisp/obsolete/old-emacs-lock.el"
- "obsolete/old-emacs-lock.el"
- "lisp/obsolete/patcomp.el"
- "lisp/obsolete/pc-select.el"
- "lisp/obsolete/s-region.el"
- "obsolete/pc-select.el"
"nnwarchive.el"
"nnultimate.el"
"nnslashdot.el"
@@ -1024,41 +958,7 @@ Changes to files in this list are not listed.")
"flymake-ui.el"
"pinentry.el"
"ledit.el"
- "lmenu.el"
- "src/pgtkselect.h"
- "test/manual/noverlay/many-errors.h"
- "lisp/better-pixel-scroll.el"
- "test/infra/default-gitlab-ci.yml"
- "test/infra/test-jobs-generator.sh"
- "org-install.el"
- ;; use-package stuff removed after it was added
- "etc/USE-PACKAGE-NEWS"
- "lisp/use-package/bind-chord.el"
- "lisp/use-package/use-package-chords.el"
- "lisp/use-package/use-package-chords-tests.el"
- "test/lisp/use-package/use-package-chords-tests.el"
- ;; Eglot stuff removed after it was added
- "README.mdown"
- "README.md"
- ".travis.yml"
- ;; Tree-sitter stuff
- "admin/notes/tree-sitter/html-manual/Parser_002dbased-Font-Lock.html"
- "admin/notes/tree-sitter/html-manual/Parsing-Program-Source.html"
- "admin/notes/tree-sitter/html-manual/build-manual.sh"
- "admin/notes/tree-sitter/html-manual/Accessing-Node.html"
- "admin/notes/tree-sitter/html-manual/Language-Definitions.html"
- "admin/notes/tree-sitter/html-manual/Multiple-Languages.html"
- "admin/notes/tree-sitter/html-manual/Parser_002dbased-Indentation.html"
- "admin/notes/tree-sitter/html-manual/Pattern-Matching.html"
- "admin/notes/tree-sitter/html-manual/Retrieving-Node.html"
- "admin/notes/tree-sitter/html-manual/Tree_002dsitter-C-API.html"
- "admin/notes/tree-sitter/html-manual/Using-Parser.html"
- "admin/notes/tree-sitter/html-manual/manual.css"
- "admin/notes/tree-sitter/build-module/build.sh"
- "admin/notes/tree-sitter/build-module/batch.sh"
- "doc/misc/gnus-coding.texi"
- "gnus-coding.texi"
- )
+ "lmenu.el")
"File names which are valid, but no longer exist (or cannot be found)
in the repository.")
@@ -1437,153 +1337,6 @@ in the repository.")
("test/lisp/url/url-handlers-test.el" . "url-handlers-tests.el")
("test/src/dired-tests.el" . "dired-tests.el")
(".dir-locals.el" . ".dir-locals.el")
- ;; use-package files that were moved when use-package was added:
- ("use-package.texi" . "use-package.texi")
- ("use-package-core.el" . "use-package-core.el")
- ("bind-key.el" . "use-package-bind-key.el")
- ("use-package.el" . "use-package.el")
- ("use-package-tests.el" . "use-package-tests.el")
- ;; pgtk stuff which used incorrect file names
- ("pgtkmenu.c" . "pgtkmenu.c")
- ("pgtk-win.el" . "pgtk-win.el")
- ("pgtkfns.c" . "pgtkfns.c")
- ("pgtkterm.c" . "pgtkterm.c")
- ("pgtkterm.h" . "pgtkterm.h")
- ("../src/pgtkfns.c" . "pgtkfns.c")
- ("../src/pgtkterm.c" . "pgtkterm.c")
- ("../src/pgtkterm.h" . "pgtkterm.h")
- ("../src/atimer.c" . "atimer.c")
- ("../src/gtkutil.c" . "gtkutil.c")
- ("../src/image.c" . "image.c")
- ("../lisp/faces.el" . "faces.el")
- ("../src/pgkterm.h" . "pgkterm.h")
- ("pgkterm.c" . "pgkterm.c")
- ("../src/emacsgtkfixed.c" . "emacsgtkfixed.c")
- ("../src/xfaces.c" . "xfaces.c")
- ("../src/pgtkgui.h" . "pgtkgui.h")
- ("../src/dispextern.h" . "dispextern.h")
- ("../src/menu.c" . "menu.c")
- ("../lisp/net/browse-url.el" . "browse-url.el")
- ;; miscellany
- ("nsterm.m" . "nsterm.m")
- ("jsonrpc.el" . "jsonrpc.el")
- ("jsonrpc-tests.el" . "jsonrpc-tests.el")
- ("jrpc.el" . "jsonrpc.el")
- ("eldoc.el" . "eldoc.el")
- ("lisp/progmodes/ts-mode.el" . "typescript-ts-mode.el")
- ("icalendar-tests.el" . "icalendar-tests.el")
- ("lisp/progmodes/css-ts-mode.el" . "css-mode.el")
- ("lisp/erc/erc-tests.el" . "erc-tests.el")
- ("lisp/erc/erc-scenarios-base-reconnect.el" . "erc-scenarios-base-reconnect.el")
- ("test/lisp/erc-tests.el" . "erc-tests.el")
- ("eglot.el" . "eglot.el")
- ("eglot-tests.el" . "eglot-tests.el")
- ("NEWS.md" . "EGLOT-NEWS")
- ("test/lisp/comp-tests.el" . "comp-tests.el")
- ("package-vc.el" . "package-vc.el")
- ("package.el" . "package.el")
- ("lisp/net/tramp-docker.el" . "tramp-container.el")
- ("xterm.c" . "xterm.c")
- ("lisp/osc.el" . "ansi-osc.el")
- ("test/lisp/osc-tests.el" . "ansi-osc-tests.el")
- ("lisp/ansi-osc.el" . "ansi-osc-tests.el")
- ("test/lisp/thumbs-tests.el" . "thumbs-tests.el")
- ("rmail.el" . "rmail.el")
- ("window.el" . "window.el")
- ("nsmenu.m" . "nsmenu.m")
- ("nsfont.m" . "nsfont.m")
- ("nsfns.m" . "nsfns.m")
- ("src/nsterm.c" . "nsterm.m")
- ("subr.el" . "subr.el")
- ("test/lisp/image-dired-tests.el" . "image-dired-tests.el")
- ("modus-themes.org" . "modus-themes.org")
- ("emacs-authors-mode.el" . "emacs-authors-mode.el")
- ("lisp/textmodes/etc-authors-mode.el" . "emacs-authors-mode.el")
- ("bytecomp.el" . "bytecomp.el")
- ("test/lisp/makesum-tests.el" . "makesum-tests.el")
- ("rcirc.el" . "rcirc.el")
- ("haiku_support.cc" . "haiku_support.cc")
- ("gnus-art.el" . "gnus-art.el")
- ("mh-mime.el" . "mh-mime.el")
- ("terminal.c" . "terminal.c")
- ("eudc.texi" . "eudc.texi")
- ("gnus-search.el" . "gnus-search.el")
- ("lisp/gnus-search.el" . "gnus-search.el")
- ("ETAGS_good_1" . "ETAGS_good_1")
- ("ETAGS_good_2" . "ETAGS_good_2")
- ("ETAGS_good_3" . "ETAGS_good_3")
- ("ETAGS_good_4" . "ETAGS_good_4")
- ("ETAGS_good_5" . "ETAGS_good_5")
- ("ETAGS_good_6" . "ETAGS_good_6")
- ("test/lisp/eshell-em-script-tests.el" . "eshell-em-script-tests.el")
- ("test/lisp/eshell-em-glob-tests.el" . "eshell-em-glob-tests.el")
- ("lisp/eshell/esh-var-tests.el" . "esh-var-tests.el")
- ("test/lisp/eshell/esh-var-test.el" . "esh-var-tests.el")
- ("gnus-logic.el" . "gnus-logic.el")
- ("sh-script.el" . "sh-script.el")
- ("repeat.el" . "repeat.el")
- ("files.el" . "files.el")
- ("lisp/emacs-lisp/generate-file.el" . "generate-lisp-file.el")
- ("pp.el" . "pp.el")
- ("src/help-fns.el" . "help-fns.el")
- ("print.c" . "print.c")
- ("shell.el" . "shell.el")
- ("xdisp.c" . "xdisp.c")
- ("haikufns.c" . "haikufns.c")
- ("haikuterm.c" . "haikuterm.c")
- ("haikumenu.c" . "haikumenu.c")
- ("haikufont.c" . "haikufont.c")
- ("src/haiku_support.c" . "haiku_support.cc")
- ("src/haiku_draw_support.c" . "haiku_draw_support.cc")
- ("haiku-win.el" . "haiku-win.el")
- ("elisp-mode.el" . "elisp-mode.el")
- ("doc-view.el" . "doc-view.el")
- ("src/lisp/net/rcirc.el" . "rcirc.el")
- ("project.el" . "project.el")
- ("emacsbug.el" . "emacsbug.el")
- ("timefns.c" . "timefns.c")
- ("xwidget.c" . "xwidget.c")
- ("src/xwidget.el" . "xwidget.el")
- ("lisp/net/lisp/net/tramp-sshfs.el" . "tramp-sshfs.el")
- ("tramp-sudoedit.el" . "tramp-sudoedit.el")
- ("test/lisp/mail/undigest.el" . "undigest-tests.el")
- ("Activate.c" . "Activate.c")
- ("quail.el" . "quail.el")
- ("sed1v2.inp" . "sed1v2.inp")
- ("ruby-parenless-call-arguments-indent.rb" . "ruby-parenless-call-arguments-indent.rb")
- ("commands.texi" . "doc/lispref/commands.texi")
- ("message.el" . "message.el")
- ("lisp/debug-early.el" . "debug-early.el")
- ("tabulated-list.el" . "tabulated-list.el")
- ("mouse.el" . "mouse.el")
- ("hi-lock.el" . "hi-lock.el")
- ("man.el" . "man.el")
- ("doc/emacs/frames.tex" . "frames.texi")
- ("lisp/emacs-list/eieio-compat.el" . "eieio-compat.el")
- ("epa.el" . "epa.el")
- ("lisp/emacs-lisp/macroexpand.el" . "macroexp.el")
- ("src/pixel-scroll.el" . "pixel-scroll.el")
- ("test/lisp/mh-e/mh-utils.el" . "mh-utils-tests.el")
- ("compile.el" . "compile.el")
- ("compile-tests.el" . "compile-tests.el")
- ("Makefile.in" . "Makefile.in")
- ("Makefie.in" . "Makefile.in")
- ("test/lisp/net/netrc-tests.el" . "auth-source-tests.el")
- ("test/lisp/ert-x-tests.el" . "ert-x-tests.el")
- ("lisp/mh-e-mh-scan.el" . "mh-scan.el")
- ("lisp/progmodes/c-fonts.el" . "cc-fonts.el")
- ("lisp/emacs/lisp/cl-generic.el" . "cl-generic.el")
- ("doc/lisprefdisplay.texi" . "display.texi")
- ("erc.el" . "erc.el")
- ("erc-tests.el" . "erc-tests.el")
- ("vc/vc-mtn.el" . "vc-mtn.el")
- ("net/rlogin.el" . "rlogin.el")
- ("emacs-lisp/eieio-compat.el" . "eieio-compat.el")
- ("mh-compat.el" . "mh-compat.el")
- ("url-about.el" . "url-about.el")
- ("url-dired.el" . "url-dired.el")
- ("lisp/text-modes/tex-mode.el" . "tex-mode.el")
- ("editfns.c" . "editfns.c")
)
"Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")
diff --git a/admin/find-gc.el b/admin/find-gc.el
index cce4a8402a7..7cb319d867a 100644
--- a/admin/find-gc.el
+++ b/admin/find-gc.el
@@ -100,7 +100,7 @@ Also store it in `find-gc-unsafe-list'."
-(defun trace-call-tree (&optional ignored)
+(defun trace-call-tree (&optional _ignored)
(message "Setting up directories...")
(setq find-gc-subrs-called nil)
(let ((case-fold-search nil)
diff --git a/admin/gitmerge.el b/admin/gitmerge.el
index a172fa2bc9b..396d2fe2ac5 100644
--- a/admin/gitmerge.el
+++ b/admin/gitmerge.el
@@ -293,7 +293,7 @@ should not be skipped."
"Try to resolve conflicts in FILE with smerge.
Returns non-nil if conflicts remain."
(unless (file-exists-p file) (error "Gitmerge-resolve: Can't find %s" file))
- (with-demoted-errors
+ (with-demoted-errors "Error: %S"
(let ((exists (find-buffer-visiting file)))
(with-current-buffer (let ((enable-local-variables :safe)
(enable-local-eval nil))
diff --git a/admin/merge-gnulib b/admin/merge-gnulib
index 6aa52bc7539..917ddda1fd5 100755
--- a/admin/merge-gnulib
+++ b/admin/merge-gnulib
@@ -23,29 +23,30 @@
# written by Paul Eggert
-GNULIB_URL=git://git.savannah.gnu.org/gnulib.git
+GNULIB_URL=https://git.savannah.gnu.org/git/gnulib.git
GNULIB_MODULES='
- alloca-opt binary-io byteswap c-ctype c-strcase
+ alignasof alloca-opt binary-io byteswap c-ctype c-strcase
canonicalize-lgpl
careadlinkat close-stream copy-file-range
count-leading-zeros count-one-bits count-trailing-zeros
crypto/md5 crypto/md5-buffer
crypto/sha1-buffer crypto/sha256-buffer crypto/sha512-buffer
d-type diffseq double-slash-root dtoastr dtotimespec dup2
- environ execinfo explicit_bzero faccessat
+ environ execinfo faccessat
fchmodat fcntl fcntl-h fdopendir file-has-acl
filemode filename filevercmp flexmember fpieee
free-posix fstatat fsusage fsync futimens
getloadavg getopt-gnu getrandom gettime gettimeofday gitlog-to-changelog
ieee754-h ignore-value intprops largefile libgmp lstat
- manywarnings memmem-simple mempcpy memrchr minmax mkostemp mktime
+ manywarnings memmem-simple mempcpy memrchr memset_explicit
+ minmax mkostemp mktime
nanosleep nproc nstrftime
pathmax pipe2 pselect pthread_sigmask
qcopy-acl readlink readlinkat regex
- sig2str sigdescr_np socklen stat-time std-gnu11 stdalign stdbool stddef stdio
+ sig2str sigdescr_np socklen stat-time std-gnu11 stdbool stddef stdio
stpcpy strnlen strtoimax symlink sys_stat sys_time
- tempname time time_r time_rz timegm timer-time timespec-add timespec-sub
+ tempname time-h time_r time_rz timegm timer-time timespec-add timespec-sub
update-copyright unlocked-io utimensat
vla warnings
'
diff --git a/admin/notes/elpa b/admin/notes/elpa
index 1e9e7a9f52b..afcda71d1dd 100644
--- a/admin/notes/elpa
+++ b/admin/notes/elpa
@@ -3,7 +3,7 @@ NOTES ON THE EMACS PACKAGE ARCHIVE
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Git
repository named "elpa", hosted on Savannah. To check it out:
- git clone git://git.sv.gnu.org/emacs/elpa
+ git clone https://git.savannah.gnu.org/git/emacs/elpa
cd elpa
make setup
diff --git a/admin/notes/emba b/admin/notes/emba
index 564cc3c54ac..c88b422a4fa 100644
--- a/admin/notes/emba
+++ b/admin/notes/emba
@@ -83,6 +83,46 @@ Lisp packages, Makefiles, scripts, and other software could determine
whether they run on emba by checking for the environment variable
EMACS_EMBA_CI.
+* Running Emba tests locally
+
+As usual in GitLab, the tests run in containers, which could be
+applied also locally. Unfortunately, the Emba container registry,
+emba.gnu.org:5050, is not accessible publicly. Instead, the container
+images must be build locally. Change the current directory to a
+recent Emacs branch, and apply the command
+
+ docker build --target emacs-inotify --tag emacs-inotify \
+ -f test/infra/Dockerfile.emba .
+
+This creates the Debian-based image emacs-inotify, based on the
+instructions in the file Dockerfile.emba. This image is good for the
+majority of tests. However, there are also other image build
+instructions like emacs-filenotify-gio, emacs-eglot, emacs-gnustep and
+emacs-native-comp-speed{0,1,2}. Use the appropriate one.
+
+The image contains a directory "/checkout", which is a copy of your
+local Emacs git repository. Emacs has been built in this directory
+via "make bootstrap". In order to use the image, start a container
+like
+
+ docker run --interactive --env EMACS_EMBA_CI=1 --name emacs-inotify \
+ emacs-inotify /bin/sh -i
+
+In this container, change the current directory to "/checkout". Now
+you can apply all commands known for Emacs, like
+
+ cd /checkout
+ make -C test files-tests.log
+
+While this container runs, you can also access its filesystem from
+your local Emacs via Tramp. For example, in order to see the result
+of the above test run, open the log file in your local Emacs with
+
+ C-x C-f /docker:emacs-inotify:/checkout/test/lisp/files-tests.log
+
+Note: On local Red Hat-based systems, use "podman" instead of "docker"
+in the shell commands and Tramp file names.
+
This file is part of GNU Emacs.
diff --git a/admin/notes/git-workflow b/admin/notes/git-workflow
index 717fc550776..d33f49a1aca 100644
--- a/admin/notes/git-workflow
+++ b/admin/notes/git-workflow
@@ -16,14 +16,14 @@ Initial setup
Then we want to clone the repository. We normally want to have both
the current master and (if there is one) the active release branch
-(eg emacs-28).
+(eg emacs-29).
mkdir ~/emacs
cd ~/emacs
git clone <membername>@git.sv.gnu.org:/srv/git/emacs.git master
cd master
git config push.default current
-git worktree add ../emacs-28 emacs-28
+git worktree add ../emacs-29 emacs-29
You now have both branches conveniently accessible, and you can do
"git pull" in them once in a while to keep updated.
@@ -67,10 +67,10 @@ which will look like
commit 958b768a6534ae6e77a8547a56fc31b46b63710b
-cd ~/emacs/emacs-28
+cd ~/emacs/emacs-29
git cherry-pick -xe 958b768a6534ae6e77a8547a56fc31b46b63710b
-and optionally add "Backport:" to the commit string. Then
+and add "Backport:" to the commit string. Then
git push
@@ -109,7 +109,7 @@ up-to-date by doing a pull. Then start Emacs with
emacs -l admin/gitmerge.el -f gitmerge
You'll be asked for the branch to merge, which will default to
-(eg) 'origin/emacs-28', which you should accept. Merging a local tracking
+(eg) 'origin/emacs-29', which you should accept. Merging a local tracking
branch is discouraged, since it might not be up-to-date, or worse,
contain commits from you which are not yet pushed upstream.
diff --git a/admin/notes/tree-sitter/build-module/batch.sh b/admin/notes/tree-sitter/build-module/batch.sh
new file mode 100755
index 00000000000..1d4076564dc
--- /dev/null
+++ b/admin/notes/tree-sitter/build-module/batch.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+languages=(
+ 'bash'
+ 'c'
+ 'cmake'
+ 'cpp'
+ 'css'
+ 'c-sharp'
+ 'dockerfile'
+ 'elixir'
+ 'go'
+ 'go-mod'
+ 'heex'
+ 'html'
+ 'javascript'
+ 'json'
+ 'python'
+ 'rust'
+ 'toml'
+ 'tsx'
+ 'typescript'
+ 'yaml'
+)
+
+for language in "${languages[@]}"
+do
+ ./build.sh $language
+done
diff --git a/admin/notes/tree-sitter/build-module/build.sh b/admin/notes/tree-sitter/build-module/build.sh
new file mode 100755
index 00000000000..0832875168b
--- /dev/null
+++ b/admin/notes/tree-sitter/build-module/build.sh
@@ -0,0 +1,92 @@
+#!/bin/bash
+
+lang=$1
+topdir="$PWD"
+
+case $(uname) in
+ "Darwin")
+ soext="dylib"
+ ;;
+ *"MINGW"*)
+ soext="dll"
+ ;;
+ *)
+ soext="so"
+ ;;
+esac
+
+echo "Building ${lang}"
+
+### Retrieve sources
+
+org="tree-sitter"
+repo="tree-sitter-${lang}"
+sourcedir="tree-sitter-${lang}/src"
+grammardir="tree-sitter-${lang}"
+
+case "${lang}" in
+ "dockerfile")
+ org="camdencheek"
+ ;;
+ "cmake")
+ org="uyha"
+ ;;
+ "elixir")
+ org="elixir-lang"
+ ;;
+ "go-mod")
+ # The parser is called "gomod".
+ lang="gomod"
+ org="camdencheek"
+ ;;
+ "heex")
+ org="phoenixframework"
+ ;;
+ "typescript")
+ sourcedir="tree-sitter-typescript/typescript/src"
+ grammardir="tree-sitter-typescript/typescript"
+ ;;
+ "tsx")
+ repo="tree-sitter-typescript"
+ sourcedir="tree-sitter-typescript/tsx/src"
+ grammardir="tree-sitter-typescript/tsx"
+ ;;
+ "yaml")
+ org="ikatyang"
+ ;;
+esac
+
+git clone "https://github.com/${org}/${repo}.git" \
+ --depth 1 --quiet
+cp "${grammardir}"/grammar.js "${sourcedir}"
+# We have to go into the source directory to compile, because some
+# C files refer to files like "../../common/scanner.h".
+cd "${sourcedir}"
+
+### Build
+
+cc -fPIC -c -I. parser.c
+# Compile scanner.c.
+if test -f scanner.c
+then
+ cc -fPIC -c -I. scanner.c
+fi
+# Compile scanner.cc.
+if test -f scanner.cc
+then
+ c++ -fPIC -I. -c scanner.cc
+fi
+# Link.
+if test -f scanner.cc
+then
+ c++ -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}"
+else
+ cc -fPIC -shared *.o -o "libtree-sitter-${lang}.${soext}"
+fi
+
+### Copy out
+
+mkdir -p "${topdir}/dist"
+cp "libtree-sitter-${lang}.${soext}" "${topdir}/dist"
+cd "${topdir}"
+rm -rf "${repo}"
diff --git a/build-aux/config.guess b/build-aux/config.guess
index b30b9fdc8ef..69188da73d7 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -4,7 +4,7 @@
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2022-09-17'
+timestamp='2023-01-01'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -60,7 +60,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 9e118bdee3c..de4259e4047 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -4,7 +4,7 @@
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2022-09-17'
+timestamp='2023-01-21'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -76,7 +76,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2022 Free Software Foundation, Inc.
+Copyright 1992-2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -1075,7 +1075,7 @@ case $cpu-$vendor in
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
;;
- pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*)
cpu=i686
;;
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
diff --git a/build-aux/update-copyright b/build-aux/update-copyright
index ce919bac727..99196fceef6 100755
--- a/build-aux/update-copyright
+++ b/build-aux/update-copyright
@@ -137,7 +137,7 @@
eval 'exec perl -wSx -0777 -pi "$0" "$@"'
if 0;
-my $VERSION = '2020-04-04.15:07'; # UTC
+my $VERSION = '2023-01-11.04:24'; # UTC
# The definition above must lie within the first 8 lines in order
# for the Emacs time-stamp write hook (at end) to update it.
# If you change this file with Emacs, please let the write hook
@@ -280,7 +280,7 @@ if (defined $stmt_re)
}
# Replace the old copyright statement.
- s/$stmt_re/$stmt_wrapped/;
+ s/$stmt_re/$stmt_wrapped/g;
}
}
else
diff --git a/configure.ac b/configure.ac
index ed888982d5a..a9a8f10ec21 100644
--- a/configure.ac
+++ b/configure.ac
@@ -23,7 +23,7 @@ dnl along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
AC_PREREQ([2.65])
dnl Note this is parsed by (at least) make-dist and lisp/cedet/ede/emacs.el.
-AC_INIT([GNU Emacs], [29.0.90], [bug-gnu-emacs@gnu.org], [],
+AC_INIT([GNU Emacs], [30.0.50], [bug-gnu-emacs@gnu.org], [],
[https://www.gnu.org/software/emacs/])
dnl Set emacs_config_options to the options of 'configure', quoted for the shell,
@@ -1139,6 +1139,7 @@ AS_IF([test $gl_gcc_warnings = no],
# clang is unduly picky about some things.
if test "$emacs_cv_clang" = yes; then
+ gl_WARN_ADD([-Wno-bitwise-instead-of-logical])
gl_WARN_ADD([-Wno-missing-braces])
gl_WARN_ADD([-Wno-null-pointer-arithmetic])
gl_WARN_ADD([-Wno-implicit-const-int-float-conversion])
@@ -1841,7 +1842,9 @@ AC_CHECK_HEADERS_ONCE(
coff.h pty.h
sys/resource.h
sys/utsname.h pwd.h utmp.h util.h
- sanitizer/lsan_interface.h])
+ sanitizer/lsan_interface.h
+ sanitizer/asan_interface.h
+ sanitizer/common_interface_defs.h])
AC_CACHE_CHECK([for ADDR_NO_RANDOMIZE],
[emacs_cv_personality_addr_no_randomize],
@@ -2693,39 +2696,6 @@ if test "${HAVE_X11}" = "yes"; then
export LD_RUN_PATH
fi
- if test "${opsys}" = "gnu-linux"; then
- AC_CACHE_CHECK([whether X on GNU/Linux needs -b to link], [emacs_cv_b_link],
- [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
- [[XOpenDisplay ("foo");]])],
- [xgnu_linux_first_failure=no],
- [xgnu_linux_first_failure=yes])
- if test "${xgnu_linux_first_failure}" = "yes"; then
- OLD_CPPFLAGS="$CPPFLAGS"
- OLD_LIBS="$LIBS"
- CPPFLAGS="$CPPFLAGS -b i486-linuxaout"
- LIBS="$LIBS -b i486-linuxaout"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
- [[XOpenDisplay ("foo");]])],
- [xgnu_linux_second_failure=no],
- [xgnu_linux_second_failure=yes])
- if test "${xgnu_linux_second_failure}" = "yes"; then
- # If we get the same failure with -b, there is no use adding -b.
- # So leave it out. This plays safe.
- emacs_cv_b_link=no
- else
- emacs_cv_b_link=yes
- fi
- CPPFLAGS=$OLD_CPPFLAGS
- LIBS=$OLD_LIBS
- else
- emacs_cv_b_link=no
- fi])
- if test "x$emacs_cv_b_link" = xyes ; then
- LD_SWITCH_X_SITE="$LD_SWITCH_X_SITE -b i486-linuxaout"
- C_SWITCH_X_SITE="$C_SWITCH_X_SITE -b i486-linuxaout"
- fi
- fi
-
# Reportedly, some broken Solaris systems have XKBlib.h but are missing
# header files included from there.
AC_CACHE_CHECK([for Xkb], [emacs_cv_xkb],
@@ -3958,21 +3928,10 @@ if test "${HAVE_X11}" = "yes"; then
if test "${HAVE_XCB}" = "yes"; then
AC_CHECK_LIB([X11-xcb], [XGetXCBConnection], [HAVE_X11_XCB=yes])
if test "${HAVE_X11_XCB}" = "yes"; then
- AC_CHECK_LIB([xcb-util], [xcb_aux_sync], [HAVE_XCB_UTIL=yes])
- if test "${HAVE_XCB_UTIL}" = "yes"; then
- AC_DEFINE([USE_XCB], [1],
-[Define to 1 if you have the XCB library and X11-XCB library for mixed
- X11/XCB programming.])
- XCB_LIBS="-lX11-xcb -lxcb -lxcb-util"
- else
- AC_CHECK_LIB([xcb-aux], [xcb_aux_sync], [HAVE_XCB_AUX=yes])
- if test "${HAVE_XCB_AUX}" = "yes"; then
- AC_DEFINE([USE_XCB], [1],
+ AC_DEFINE([USE_XCB], [1],
[Define to 1 if you have the XCB library and X11-XCB library for mixed
- X11/XCB programming.])
- XCB_LIBS="-lX11-xcb -lxcb -lxcb-aux"
- fi
- fi
+X11/XCB programming.])
+ XCB_LIBS="-lX11-xcb -lxcb"
fi
fi
fi
@@ -4240,11 +4199,13 @@ AC_SUBST_FILE([module_env_snippet_26])
AC_SUBST_FILE([module_env_snippet_27])
AC_SUBST_FILE([module_env_snippet_28])
AC_SUBST_FILE([module_env_snippet_29])
+AC_SUBST_FILE([module_env_snippet_30])
module_env_snippet_25="$srcdir/src/module-env-25.h"
module_env_snippet_26="$srcdir/src/module-env-26.h"
module_env_snippet_27="$srcdir/src/module-env-27.h"
module_env_snippet_28="$srcdir/src/module-env-28.h"
module_env_snippet_29="$srcdir/src/module-env-29.h"
+module_env_snippet_30="$srcdir/src/module-env-30.h"
emacs_major_version="${PACKAGE_VERSION%%.*}"
AC_SUBST([emacs_major_version])
@@ -4726,7 +4687,7 @@ AC_SUBST([XINERAMA_LIBS])
### Use Xfixes (-lXfixes) if available
HAVE_XFIXES=no
if test "${HAVE_X11}" = "yes"; then
- XFIXES_REQUIRED=4.0.0
+ XFIXES_REQUIRED=1.0.0
XFIXES_MODULES="xfixes >= $XFIXES_REQUIRED"
EMACS_CHECK_MODULES([XFIXES], [$XFIXES_MODULES])
if test $HAVE_XFIXES = no; then
@@ -5030,6 +4991,7 @@ pthread_sigmask strsignal setitimer \
sendto recvfrom getsockname getifaddrs freeifaddrs \
gai_strerror sync \
getpwent endpwent getgrent endgrent \
+renameat2 \
cfmakeraw cfsetspeed __executable_start log2 pthread_setname_np \
pthread_set_name_np])
LIBS=$OLD_LIBS
@@ -5659,7 +5621,7 @@ case $opsys in
esac
case $opsys in
- gnu-* | solaris )
+ gnu-* | solaris | cygwin )
dnl FIXME Can't we test if this exists (eg /proc/$$)?
AC_DEFINE([HAVE_PROCFS], [1], [Define if you have the /proc filesystem.])
;;
@@ -6423,7 +6385,7 @@ fi
# it temporarily reverts them to their pre-pkg-config values,
# because gnulib needs to work with both src (which uses the
# pkg-config stuff) and lib-src (which does not). For example, gnulib
-# may need to determine whether LIB_CLOCK_GETTIME should contain -lrt,
+# may need to determine whether CLOCK_TIME_LIB should contain -lrt,
# and it therefore needs to run in an environment where LIBS does not
# already contain -lrt merely because 'pkg-config --libs' printed '-lrt'
# for some package unrelated to lib-src.
@@ -6563,6 +6525,12 @@ if test "$window_system" != "none"; then
AC_DEFINE([POLL_FOR_INPUT], [1],
[Define if you poll periodically to detect C-g.])
WINDOW_SYSTEM_OBJ="fontset.o fringe.o image.o"
+
+ if test "$window_system" = "x11"; then
+ AC_DEFINE([HAVE_TEXT_CONVERSION], [1],
+ [Define if the window system has text conversion support.])
+ WINDOW_SYSTEM_OBJ="$WINDOW_SYSTEM_OBJ textconv.o"
+ fi
fi
AC_SUBST([WINDOW_SYSTEM_OBJ])
@@ -6615,7 +6583,9 @@ if test "${HAVE_GTK}" = "yes"; then
fi
if test $USE_ACL -ne 0; then
- ACL_SUMMARY="yes $LIB_ACL"
+ ACL_SUMMARY="yes"
+ test "$LIB_ACL" && ACL_SUMMARY="$ACL_SUMMARY $LIB_ACL"
+ test "$LIB_XATTR" && ACL_SUMMARY="$ACL_SUMMARY $LIB_XATTR"
else
ACL_SUMMARY=no
fi
@@ -6686,6 +6656,7 @@ AC_DEFINE_UNQUOTED([EMACS_CONFIG_FEATURES], ["${emacs_config_features}"],
[Summary of some of the main features enabled by configure.])
AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D}
+ Does Emacs use the X Double Buffer Extension? ${HAVE_XDBE}
Does Emacs use -lXpm? ${HAVE_XPM}
Does Emacs use -ljpeg? ${HAVE_JPEG}
Does Emacs use -ltiff? ${HAVE_TIFF}
diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi
index 29cc22e7557..74315a05bbd 100644
--- a/doc/emacs/files.texi
+++ b/doc/emacs/files.texi
@@ -812,22 +812,21 @@ in these cases, customize the variable
@vindex write-region-inhibit-fsync
Normally, when a program writes a file, the operating system briefly
caches the file's data in main memory before committing the data to
-disk. This can greatly improve performance; for example, when running
-on laptops, it can avoid a disk spin-up each time a file is written.
-However, it risks data loss if the operating system crashes before
-committing the cache to disk.
+secondary storage. Although this can greatly improve performance, it
+risks data loss if the system loses power before committing the cache,
+and on some platforms other processes might not immediately notice the
+file's change.
To lessen this risk, Emacs can invoke the @code{fsync} system call
after saving a file. Using @code{fsync} does not eliminate the risk
-of data loss, partly because many systems do not implement
+of data loss or slow notification, partly because many systems do not support
@code{fsync} properly, and partly because Emacs's file-saving
procedure typically relies also on directory updates that might not
survive a crash even if @code{fsync} works properly.
The @code{write-region-inhibit-fsync} variable controls whether
Emacs invokes @code{fsync} after saving a file. The variable's
-default value is @code{nil} when Emacs is interactive, and @code{t}
-when Emacs runs in batch mode (@pxref{Initial Options, Batch Mode}).
+default value is @code{t}.
Emacs never uses @code{fsync} when writing auto-save files, as these
files might lose data anyway.
@@ -1738,9 +1737,13 @@ only the hunks within the region.
Re-generate the current hunk (@code{diff-refresh-hunk}).
@item C-c C-w
+@vindex diff-ignore-whitespace-switches
@findex diff-ignore-whitespace-hunk
-Re-generate the current hunk, disregarding changes in whitespace
-(@code{diff-ignore-whitespace-hunk}).
+Re-generate the current hunk, disregarding changes in whitespace.
+With a non-@code{nil} prefix arg, re-generate all the hunks
+(@code{diff-ignore-whitespace-hunk}). This calls @code{diff-command}
+with @code{diff-ignore-whitespace-switches}, which defaults to
+@samp{-b}, meaning ignore changes in whitespace only.
@item C-x 4 A
@findex diff-add-change-log-entries-other-window
@@ -1900,6 +1903,11 @@ following in the Trash directory:
liable to also delete this @code{.dir-locals.el} file, so this should
only be done if you delete files from the Trash directory manually.
+@vindex remote-file-name-inhibit-delete-by-moving-to-trash
+ If the variable @code{remote-file-name-inhibit-delete-by-moving-to-trash}
+is non-@code{nil}, remote files are never moved to the Trash. They
+are deleted instead.
+
@ifnottex
If a file is under version control (@pxref{Version Control}), you
should delete it using @kbd{M-x vc-delete-file} instead of @kbd{M-x
diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 2513e6be271..945e12a05d2 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -317,6 +317,16 @@ by using the @kbd{M-x shortdoc} command. This will prompt you for an
area of interest, e.g., @code{string}, and pop you to a buffer where
many of the functions relevant for handling strings are listed.
+You can also request that documentation of functions and commands
+shown in @file{*Help*} buffers popped by @kbd{C-h f} includes examples
+of their use. To that end, add the following to your initialization
+file (@pxref{Init File}):
+
+@example
+(add-hook 'help-fns-describe-function-functions
+ #'shortdoc-help-fns-examples-function)
+@end example
+
@kindex C-h v
@findex describe-variable
@kbd{C-h v} (@code{describe-variable}) is like @kbd{C-h f} but
diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi
index 6fb312ec321..898d9e904f6 100644
--- a/doc/emacs/mini.texi
+++ b/doc/emacs/mini.texi
@@ -953,12 +953,14 @@ File ‘foo.el’ exists; overwrite? (y or n)
@end smallexample
@cindex yes or no prompt
+@vindex yes-or-no-prompt
The second type of yes-or-no query is typically employed if giving
the wrong answer would have serious consequences; it thus features a
-longer prompt ending with @samp{(yes or no)}. For example, if you
-invoke @kbd{C-x k} (@code{kill-buffer}) on a file-visiting buffer with
-unsaved changes, Emacs activates the minibuffer with a prompt like
-this:
+longer prompt ending with @samp{(yes or no)} (or the value of
+@code{yes-or-no-prompt} if you've customized that). For example, if
+you invoke @kbd{C-x k} (@code{kill-buffer}) on a file-visiting buffer
+with unsaved changes, Emacs activates the minibuffer with a prompt
+like this:
@smallexample
Buffer foo.el modified; kill anyway? (yes or no)
diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi
index 171544fc983..37da6b5956d 100644
--- a/doc/emacs/misc.texi
+++ b/doc/emacs/misc.texi
@@ -1810,31 +1810,28 @@ you can give each daemon its own server name like this:
emacs --daemon=foo
@end example
-@findex server-stop-automatically
+@vindex server-stop-automatically
The Emacs server can optionally be stopped automatically when
-certain conditions are met. To do this, call the function
-@code{server-stop-automatically} in your init file (@pxref{Init
-File}), with one of the following arguments:
+certain conditions are met. To do this, set the option
+@code{server-stop-automatically} to one of the following values:
-@itemize
-@item
-With the argument @code{empty}, the server is stopped when it has no
-clients, no unsaved file-visiting buffers and no running processes
-anymore.
-
-@item
-With the argument @code{delete-frame}, when the last client frame is
-being closed, you are asked whether each unsaved file-visiting buffer
-must be saved and each unfinished process can be stopped, and if so,
-the server is stopped.
-
-@item
-With the argument @code{kill-terminal}, when the last client frame is
-being closed with @kbd{C-x C-c} (@code{save-buffers-kill-terminal}),
-you are asked whether each unsaved file-visiting buffer must be saved
-and each unfinished process can be stopped, and if so, the server is
+@table @code
+@item empty
+This value causes the server to be stopped when it has no clients, no
+unsaved file-visiting buffers and no running processes anymore.
+
+@item delete-frame
+This value means that when the last client frame is being closed, you
+are asked whether each unsaved file-visiting buffer must be saved and
+each unfinished process can be stopped, and if so, the server is
stopped.
-@end itemize
+
+@item kill-terminal
+This value means that when the last client frame is being closed with
+@kbd{C-x C-c} (@code{save-buffers-kill-terminal}), you are asked
+whether each unsaved file-visiting buffer must be saved and each
+unfinished process can be stopped, and if so, the server is stopped.
+@end table
@findex server-eval-at
If you have defined a server by a unique server name, it is possible
diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi
index 69b4f56bee1..62df88a731e 100644
--- a/doc/emacs/programs.texi
+++ b/doc/emacs/programs.texi
@@ -163,6 +163,7 @@ Emacs we use it for all languages.
* Left Margin Paren:: An open-paren or similar opening delimiter
starts a defun if it is at the left margin.
* Moving by Defuns:: Commands to move over or mark a major definition.
+* Moving by Sentences:: Commands to move over certain code units.
* Imenu:: Making buffer indexes as menus.
* Which Function:: Which Function mode shows which function you are in.
@end menu
@@ -265,6 +266,66 @@ tree-sitter library provide control of this behavior: if the variable
@code{treesit-defun-tactic} is set to the value @code{top-level}, the
defun commands will find the @emph{outermost} defuns instead.
+@node Moving by Sentences
+@subsection Moving by Sentences
+@cindex sentences, in programming languages
+
+ These commands move point or set up the region based on units of
+code, also called @dfn{sentences}. Even though sentences are usually
+considered when writing human languages, Emacs can use the same
+commands to move over certain constructs in programming languages
+(@pxref{Sentences}, @pxref{Moving by Defuns}). In a programming
+language a sentence is usually a complete language construct smaller
+than defuns, but larger than sexps (@pxref{List Motion,,, elisp, The
+Emacs Lisp Reference Manual}). What exactly is a sentence in this
+case depends on the programming language, but usually it is a complete
+statement, such as a variable definition and initialization, or a
+conditional statement. An example of a sentence in the C language
+could be
+
+@example
+int x = 5;
+@end example
+
+@noindent
+or in the JavaScript language it could look like
+
+@example
+@group
+const thing = () => console.log("Hi");
+@end group
+@group
+const foo = [1] == '1'
+ ? "No way"
+ : "...";
+@end group
+
+@end example
+
+@table @kbd
+@item M-a
+Move to beginning of current or preceding sentence
+(@code{backward-sentence}).
+@item M-e
+Move to end of current or following sentence (@code{forward-sentence}).
+@end table
+
+@cindex move to beginning or end of sentence
+@cindex sentence, move to beginning or end
+@kindex M-a @r{(programming modes)}
+@kindex M-e @r{(programming modes)}
+@findex backward-sentence @r{(programming modes)}
+@findex forward-sentence @r{(programming modes)}
+ The commands to move to the beginning and end of the current
+sentence are @kbd{M-a} (@code{backward-sentence}) and @kbd{M-e}
+(@code{forward-sentence}). If you repeat one of these commands, or
+use a positive numeric argument, each repetition moves to the next
+sentence in the direction of motion.
+
+ @kbd{M-a} with a negative argument @minus{}@var{n} moves forward
+@var{n} times to the next end of a sentence. Likewise, @kbd{M-e} with
+a negative argument moves back to the start of a sentence.
+
@node Imenu
@subsection Imenu
@cindex index of buffer definitions
@@ -431,6 +492,9 @@ large chunks of code:
@table @kbd
@item C-M-q
Reindent all the lines within one parenthetical grouping.
+@item M-q
+Fill a single paragraph in a defun, or reindent all the lines within
+that defun.
@item C-u @key{TAB}
Shift an entire parenthetical grouping rigidly sideways so that its
first line is properly indented.
@@ -451,6 +515,21 @@ indentation of the line where the grouping starts). The function that
etc. To correct the overall indentation as well, type @kbd{@key{TAB}}
first.
+@kindex M-q
+@findex prog-fill-reindent-defun
+@vindex beginning-of-defun-function
+@vindex end-of-defun-function
+@vindex fill-paragraph-function
+ To reindent the entire defun around point, type @kbd{M-q}
+(@code{prog-fill-reindent-defun}). If point is in a comment or a
+string, this command fills and indents the comment or string instead.
+What exactly constitutes a comment, a string, or a defun depends on
+the major mode: the bounds of a defun are decided by the variables
+@code{beginning-of-defun-function} and @code{end-of-defun-function}
+(@pxref{List Motion,,, elisp, The Emacs Lisp Reference Manual}),
+and the filling mechanism is decided by @code{fill-paragraph-function}
+(@pxref{Filling,,, elisp, The Emacs Lisp Reference Manual}).
+
@kindex C-u TAB
If you like the relative indentation within a grouping but not the
indentation of its first line, move point to that first line and type
@@ -1308,6 +1387,12 @@ this, change the value of the variable @code{Man-switches} to
@kbd{M-p} to switch between man pages in different sections. The mode
line shows how many manual pages are available.
+@vindex Man-prefer-synchronous-call
+ By default, @kbd{M-x man} calls the @code{man} program
+asynchronously. You can force the invocation to be synchronous by
+customizing @code{Man-prefer-synchronous-calls} to a non-@code{nil}
+value.
+
@findex woman
@cindex manual pages, on MS-DOS/MS-Windows
An alternative way of reading manual pages is the @kbd{M-x woman}
diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi
index 7037c8c943a..3d3f2562617 100644
--- a/doc/emacs/text.texi
+++ b/doc/emacs/text.texi
@@ -253,6 +253,10 @@ value of @code{sentence-end-double-space}.
of a sentence. Set the variable @code{sentence-end-without-period} to
@code{t} in such cases.
+ Even though the above mentioned sentence movement commands are based
+on human languages, other Emacs modes can set these command to get
+similar functionality (@pxref{Moving by Sentences}).
+
@node Paragraphs
@section Paragraphs
@cindex paragraphs
diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi
index 88e899de1e8..a45517287b7 100644
--- a/doc/lispref/eval.texi
+++ b/doc/lispref/eval.texi
@@ -252,11 +252,8 @@ the original symbol. If the contents are another symbol, this
process, called @dfn{symbol function indirection}, is repeated until
it obtains a non-symbol. @xref{Function Names}, for more information
about symbol function indirection.
-
- One possible consequence of this process is an infinite loop, in the
-event that a symbol's function cell refers to the same symbol.
-Otherwise, we eventually obtain a non-symbol, which ought to be a
-function or other suitable object.
+We eventually obtain a non-symbol, which ought to be a function or
+other suitable object.
@kindex invalid-function
More precisely, we should now have a Lisp function (a lambda
@@ -332,19 +329,17 @@ or just
The built-in function @code{indirect-function} provides an easy way to
perform symbol function indirection explicitly.
-@defun indirect-function function &optional noerror
+@defun indirect-function function
@anchor{Definition of indirect-function}
This function returns the meaning of @var{function} as a function. If
@var{function} is a symbol, then it finds @var{function}'s function
definition and starts over with that value. If @var{function} is not a
symbol, then it returns @var{function} itself.
-This function returns @code{nil} if the final symbol is unbound. It
-signals a @code{cyclic-function-indirection} error if there is a loop
-in the chain of symbols.
+This function returns @code{nil} if the final symbol is unbound.
-The optional argument @var{noerror} is obsolete, kept for backward
-compatibility, and has no effect.
+There is also a second, optional argument that is obsolete and has no
+effect.
Here is how you could define @code{indirect-function} in Lisp:
diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi
index f8781d4895b..b15f2ab4d29 100644
--- a/doc/lispref/files.texi
+++ b/doc/lispref/files.texi
@@ -692,11 +692,9 @@ files that the user does not need to know about.
@defvar write-region-inhibit-fsync
If this variable's value is @code{nil}, @code{write-region} uses the
-@code{fsync} system call after writing a file. Although this slows
-Emacs down, it lessens the risk of data loss after power failure. If
-the value is @code{t}, Emacs does not use @code{fsync}. The default
-value is @code{nil} when Emacs is interactive, and @code{t} when Emacs
-runs in batch mode. @xref{Files and Storage}.
+@code{fsync} system call after writing a file. If the value is
+@code{t}, Emacs does not use @code{fsync}. The default value is
+@code{t}. @xref{Files and Storage}.
@end defvar
@defmac with-temp-file file body@dots{}
@@ -1879,6 +1877,11 @@ no prefix argument is given, and @code{nil} otherwise.
See also @code{delete-directory} in @ref{Create/Delete Dirs}.
@end deffn
+@defopt remote-file-name-inhibit-delete-by-moving-to-trash
+If this variable is non-@code{nil}, remote files are never moved to
+the Trash. They are deleted instead.
+@end defopt
+
@cindex file permissions, setting
@cindex permissions, file
@cindex file modes, setting
@@ -2048,17 +2051,28 @@ data already stored elsewhere on secondary storage until one file or
the other is later modified; this will lose both files if the only
copy on secondary storage is lost due to media failure. Second, the
operating system might not write data to secondary storage
-immediately, which will lose the data if power is lost.
+immediately, which will lose the data if power is lost
+or if there is a media failure.
@findex write-region
Although both sorts of failures can largely be avoided by a suitably
-configured file system, such systems are typically more expensive or
-less efficient. In more-typical systems, to survive media failure you
+configured system, such systems are typically more expensive or
+less efficient. In lower-end systems, to survive media failure you
can copy the file to a different device, and to survive a power
-failure you can use the @code{write-region} function with the
+failure (or be immediately notified of a media failure) you can use
+the @code{write-region} function with the
@code{write-region-inhibit-fsync} variable set to @code{nil}.
+Although this variable is ordinarily @code{t} because that can
+significantly improve performance, it may make sense to temporarily
+bind it to @code{nil} if using Emacs to implement database-like
+transactions that survive power failure on lower-end systems.
@xref{Writing to Files}.
+On some platforms when Emacs changes a file other processes might not
+be notified of the change immediately. Setting
+@code{write-region-inhibit-fsync} to @code{nil} may improve
+notification speed in this case, though there are no guarantees.
+
@node File Names
@section File Names
@cindex file names
@@ -3391,7 +3405,8 @@ first, before handlers for jobs such as remote file access.
@code{file-readable-p}, @code{file-regular-p},
@code{file-remote-p}, @code{file-selinux-context},
@code{file-symlink-p}, @code{file-system-info},
-@code{file-truename}, @code{file-writable-p},
+@code{file-truename}, @code{file-user-uid},
+@code{file-writable-p},
@code{find-backup-file-name},@*
@code{get-file-buffer},
@code{insert-directory},
@@ -3452,7 +3467,8 @@ first, before handlers for jobs such as remote file access.
@code{file-readable-p}, @code{file-regular-p},
@code{file-remote-p}, @code{file-selinux-context},
@code{file-symlink-p}, @code{file-system-info},
-@code{file-truename}, @code{file-writable-p},
+@code{file-truename}, @code{file-user-uid},
+@code{file-writable-p},
@code{find-backup-file-name},
@code{get-file-buffer},
@code{insert-directory},
diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi
index 948c6bb96f8..42441361fea 100644
--- a/doc/lispref/functions.texi
+++ b/doc/lispref/functions.texi
@@ -737,9 +737,12 @@ explicitly in the source file being loaded. This is because
By contrast, in programs that manipulate function definitions for other
purposes, it is better to use @code{fset}, which does not keep such
records. @xref{Function Cells}.
+
+If the resulting function definition chain would be circular, then
+Emacs will signal a @code{cyclic-function-indirection} error.
@end defun
-@defun function-alias-p object &optional noerror
+@defun function-alias-p object
Checks whether @var{object} is a function alias. If it is, it returns
a list of symbols representing the function alias chain, else
@code{nil}. For instance, if @code{a} is an alias for @code{b}, and
@@ -750,9 +753,8 @@ a list of symbols representing the function alias chain, else
@result{} (b c)
@end example
-If there's a loop in the definitions, an error will be signaled. If
-@var{noerror} is non-@code{nil}, the non-looping parts of the chain is
-returned instead.
+There is also a second, optional argument that is obsolete and has no
+effect.
@end defun
You cannot create a new primitive function with @code{defun} or
@@ -1539,6 +1541,9 @@ is not a function, e.g., a keyboard macro (@pxref{Keyboard Macros}):
If you wish to use @code{fset} to make an alternate name for a
function, consider using @code{defalias} instead. @xref{Definition of
defalias}.
+
+If the resulting function definition chain would be circular, then
+Emacs will signal a @code{cyclic-function-indirection} error.
@end defun
@node Closures
diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi
index 59b6b6dab1d..d5e4e1c31d3 100644
--- a/doc/lispref/help.texi
+++ b/doc/lispref/help.texi
@@ -989,3 +989,29 @@ in the function group to insert the function into.
If @var{group} doesn't exist, it will be created. If @var{section}
doesn't exist, it will be added to the end of the function group.
@end defun
+
+You can also query the examples of use of functions defined in
+shortdoc groups.
+
+@defun shortdoc-function-examples function
+This function returns all shortdoc examples for @var{function}. The
+return value is an alist with items of the form
+@w{@code{(@var{group} . @var{examples})}}, where @var{group} is a
+documentation group where @var{function} appears, and @var{examples}
+is a string with the examples of @var{function}s use as defined in
+@var{group}.
+
+@code{shortdoc-function-examples} returns @code{nil} if @var{function}
+is not a function or if it doesn't have any shortdoc examples.
+@end defun
+
+@vindex help-fns-describe-function-functions
+@defun shortdoc-help-fns-examples-function function
+This function queries the registered shortdoc groups and inserts
+examples of use of a given Emacs Lisp @var{function} into the current
+buffer. It is suitable for addition to the
+@code{help-fns-describe-function-functions} hook, in which case
+examples from shortdoc of using a function will be displayed in the
+@file{*Help*} buffer when the documentation of the function is
+requested.
+@end defun
diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi
index e896c69bc38..9928361f7b2 100644
--- a/doc/lispref/internals.texi
+++ b/doc/lispref/internals.texi
@@ -735,14 +735,15 @@ Emacs session.
@section C Dialect
@cindex C programming language
-The C part of Emacs is portable to C99 or later: C11-specific features such
-as @samp{<stdalign.h>} and @samp{_Noreturn} are not used without a check,
+The C part of Emacs is portable to C99 or later: later C features such
+as @samp{<stdckdint.h>} and @samp{[[noreturn]]} are not used without a check,
typically at configuration time, and the Emacs build procedure
-provides a substitute implementation if necessary. Some C11 features,
+provides a substitute implementation if necessary. Some later features,
such as anonymous structures and unions, are too difficult to emulate,
so they are avoided entirely.
-At some point in the future the base C dialect will no doubt change to C11.
+At some point in the future the base C dialect will no doubt change to
+something later than C99.
@node Writing Emacs Primitives
@section Writing Emacs Primitives
@@ -897,15 +898,17 @@ Currently, only the following attributes are recognized:
@table @code
@item noreturn
Declares the C function as one that never returns. This corresponds
-to the C11 keyword @code{_Noreturn} and to @w{@code{__attribute__
-((__noreturn__))}} attribute of GCC (@pxref{Function Attributes,,,
-gcc, Using the GNU Compiler Collection}).
+to C23's @code{[[noreturn]]}, to C11's @code{_Noreturn}, and to GCC's
+@w{@code{__attribute__ ((__noreturn__))}} (@pxref{Function
+Attributes,,, gcc, Using the GNU Compiler Collection}). (Internally,
+Emacs's own C code uses @code{_Noreturn} as it can be defined as a
+macro on C platforms that do not support it.)
@item const
Declares that the function does not examine any values except its
arguments, and has no effects except the return value. This
-corresponds to @w{@code{__attribute__ ((__const__))}} attribute of
-GCC.
+corresponds to C23's @code{[[unsequenced]]} and to GCC's
+@w{@code{__attribute__ ((__const__))}}.
@item noinline
This corresponds to @w{@code{__attribute__ ((__noinline__))}}
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index f3758f5ce60..a509325854f 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -705,7 +705,7 @@ same way.
Normally, when @var{tree} is anything other than a cons cell,
@code{copy-tree} simply returns @var{tree}. However, if @var{vecp} is
non-@code{nil}, it copies vectors too (and operates recursively on
-their elements).
+their elements). This function cannot cope with circular lists.
@end defun
@defun flatten-tree tree
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index 114e5d38a80..4b957a68401 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -2233,10 +2233,12 @@ minibuffer. It returns @code{t} if the user enters @samp{yes},
@code{nil} if the user types @samp{no}. The user must type @key{RET} to
finalize the response. Upper and lower case are equivalent.
-@code{yes-or-no-p} starts by displaying @var{prompt} in the minibuffer,
-followed by @w{@samp{(yes or no) }}. The user must type one of the
-expected responses; otherwise, the function responds @samp{Please answer
-yes or no.}, waits about two seconds and repeats the request.
+@vindex yes-or-no-prompt
+@code{yes-or-no-p} starts by displaying @var{prompt} in the
+minibuffer, followed by the value of @code{yes-or-no-prompt} @w{(default
+@samp{(yes or no) })}. The user must type one of the expected
+responses; otherwise, the function responds @w{@samp{Please answer yes or
+no.}}, waits about two seconds and repeats the request.
@code{yes-or-no-p} requires more work from the user than
@code{y-or-n-p} and is appropriate for more crucial decisions.
diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi
index deaed31aed0..fd497d14f63 100644
--- a/doc/lispref/modes.texi
+++ b/doc/lispref/modes.texi
@@ -2398,6 +2398,7 @@ specifies addition of text properties.
@node %-Constructs
@subsection @code{%}-Constructs in the Mode Line
+@cindex @code{%}-constructs in the mode line
Strings used as mode line constructs can use certain
@code{%}-constructs to substitute various kinds of data. The
@@ -2488,6 +2489,9 @@ The mnemonics of keyboard, terminal, and buffer coding systems.
@item %Z
Like @samp{%z}, but including the end-of-line format.
+@item %&
+@samp{*} if the buffer is modified, and @samp{-} otherwise.
+
@item %*
@samp{%} if the buffer is read only (see @code{buffer-read-only}); @*
@samp{*} if the buffer is modified (see @code{buffer-modified-p}); @*
@@ -2499,9 +2503,6 @@ Like @samp{%z}, but including the end-of-line format.
@samp{-} otherwise. This differs from @samp{%*} only for a modified
read-only buffer. @xref{Buffer Modification}.
-@item %&
-@samp{*} if the buffer is modified, and @samp{-} otherwise.
-
@item %@@
@samp{@@} if the buffer's @code{default-directory} (@pxref{File Name
Expansion}) is on a remote machine, and @samp{-} otherwise.
diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi
index 3be7036f637..bca62a7a8de 100644
--- a/doc/lispref/os.texi
+++ b/doc/lispref/os.texi
@@ -1277,6 +1277,16 @@ This function returns the real @acronym{UID} of the user.
This function returns the effective @acronym{UID} of the user.
@end defun
+@defun file-user-uid
+This function returns the connection-local value for the user's
+effective @acronym{UID}. If @code{default-directory} is local, this
+is equivalent to @code{user-uid}, but for remote files (@pxref{Remote
+Files, , , emacs, The GNU Emacs Manual}), it will return the
+@acronym{UID} for the user associated with that remote connection; if
+the remote connection has no associated user, it will instead return
+-1.
+@end defun
+
@cindex GID
@defun group-gid
This function returns the effective @acronym{GID} of the Emacs process.
diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi
index cba323d3a56..38c9ec8c2f0 100644
--- a/doc/lispref/parsing.texi
+++ b/doc/lispref/parsing.texi
@@ -849,6 +849,53 @@ Each node in the returned tree looks like
@heading More convenience functions
+@defun treesit-node-get node instructions
+This is a convenience function that chains together multiple node
+accessor functions together. For example, to get @var{node}'s
+parent's next sibling's second child's text:
+
+@example
+@group
+(treesit-node-get node
+ '((parent 1)
+ (sibling 1 nil)
+ (child 1 nil)
+ (text nil)))
+@end group
+@end example
+
+@var{instruction} is a list of INSTRUCTIONs of the form
+@w{@code{(@var{fn} @var{arg}...)}}. The following @var{fn}'s are
+supported:
+
+@table @code
+@item (child @var{idx} @var{named})
+Get the @var{idx}'th child.
+
+@item (parent @var{n})
+Go to parent @var{n} times.
+
+@item (field-name)
+Get the field name of the current node.
+
+@item (type)
+Get the type of the current node.
+
+@item (text @var{no-property})
+Get the text of the current node.
+
+@item (children @var{named})
+Get a list of children.
+
+@item (sibling @var{step} @var{named})
+Get the nth prev/next sibling, negative @var{step} means prev sibling,
+positive means next sibling.
+@end table
+
+Note that arguments like @var{named} and @var{no-property} can't be
+omitted, unlike in their original functions.
+@end defun
+
@defun treesit-filter-child node predicate &optional named
This function finds immediate children of @var{node} that satisfy
@var{predicate}.
@@ -1311,7 +1358,8 @@ matches regular expression @var{regexp}. Matching is case-sensitive.
@deffn Predicate pred fn &rest nodes
Matches if function @var{fn} returns non-@code{nil} when passed each
-node in @var{nodes} as arguments.
+node in @var{nodes} as arguments. The function runs with the current
+buffer set to the buffer of node being queried.
@end deffn
Note that a predicate can only refer to capture names that appear in
diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi
index 1b32f18922c..edc7c86533c 100644
--- a/doc/lispref/positions.texi
+++ b/doc/lispref/positions.texi
@@ -858,6 +858,40 @@ top-level defuns, if the value is @code{nested}, navigation functions
recognize nested defuns.
@end defvar
+@defvar treesit-sentence-type-regexp
+The value of this variable is a regexp matching the node type of sentence
+nodes. (For ``node'' and ``node type'', @pxref{Parsing Program Source}.)
+@end defvar
+
+@findex treesit-forward-sentence
+@findex forward-sentence
+@findex backward-sentence
+If Emacs is compiled with tree-sitter, it can use the tree-sitter
+parser information to move across syntax constructs. Since what
+exactly is considered a sentence varies between languages, a major
+mode should set @code{treesit-sentence-type-regexp} to determine that.
+Then the mode can get navigation-by-sentence functionality for free,
+by using @code{forward-sentence} and
+@code{backward-sentence}(@pxref{Moving by Sentences,,, emacs, The
+extensible self-documenting text editor}).
+
+@defvar treesit-sexp-type-regexp
+The value of this variable is a regexp matching the node type of sexp
+nodes. (For ``node'' and ``node type'', @pxref{Parsing Program
+Source}.)
+@end defvar
+
+@findex treesit-forward-sexp
+@findex forward-sexp@r{, and tree-sitter}
+@findex backward-sexp@r{, and tree-sitter}
+If Emacs is compiled with tree-sitter, it can use the tree-sitter
+parser information to move across syntax constructs. Since what
+exactly is considered a sexp varies between languages, a major mode
+should set @code{treesit-sexp-type-regexp} to determine that. Then
+the mode can get navigation-by-sexp functionality for free, by using
+@code{forward-sexp} and @code{backward-sexp}(@pxref{Moving by
+Sentences,,, emacs, The extensible self-documenting text editor}).
+
@node Skipping Characters
@subsection Skipping Characters
@cindex skipping characters
diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi
index 7011b5c72af..dd5b723b479 100644
--- a/doc/lispref/sequences.texi
+++ b/doc/lispref/sequences.texi
@@ -376,45 +376,43 @@ is less than @var{c}, then @var{a} must be less than @var{c}. If you
use a comparison function which does not meet these requirements, the
result of @code{sort} is unpredictable.
-The destructive aspect of @code{sort} for lists is that it rearranges the
-cons cells forming @var{sequence} by changing @sc{cdr}s. A nondestructive
-sort function would create new cons cells to store the elements in their
-sorted order. If you wish to make a sorted copy without destroying the
-original, copy it first with @code{copy-sequence} and then sort.
-
-Sorting does not change the @sc{car}s of the cons cells in @var{sequence};
-the cons cell that originally contained the element @code{a} in
-@var{sequence} still has @code{a} in its @sc{car} after sorting, but it now
-appears in a different position in the list due to the change of
-@sc{cdr}s. For example:
+The destructive aspect of @code{sort} for lists is that it reuses the
+cons cells forming @var{sequence} by changing their contents, possibly
+rearranging them in a different order. This means that the value of
+the input list is undefined after sorting; only the list returned by
+@code{sort} has a well-defined value. Example:
@example
@group
-(setq nums (list 1 3 2 6 5 4 0))
- @result{} (1 3 2 6 5 4 0)
-@end group
-@group
+(setq nums (list 2 1 4 3 0))
(sort nums #'<)
- @result{} (0 1 2 3 4 5 6)
-@end group
-@group
-nums
- @result{} (1 2 3 4 5 6)
+ @result{} (0 1 2 3 4)
+ ; nums is unpredictable at this point
@end group
@end example
-@noindent
-@strong{Warning}: Note that the list in @code{nums} no longer contains
-0; this is the same cons cell that it was before, but it is no longer
-the first one in the list. Don't assume a variable that formerly held
-the argument now holds the entire sorted list! Instead, save the result
-of @code{sort} and use that. Most often we store the result back into
-the variable that held the original list:
+Most often we store the result back into the variable that held the
+original list:
@example
(setq nums (sort nums #'<))
@end example
+If you wish to make a sorted copy without destroying the original,
+copy it first and then sort:
+
+@example
+@group
+(setq nums (list 2 1 4 3 0))
+(sort (copy-sequence nums) #'<)
+ @result{} (0 1 2 3 4)
+@end group
+@group
+nums
+ @result{} (2 1 4 3 0)
+@end group
+@end example
+
For the better understanding of what stable sort is, consider the following
vector example. After sorting, all items whose @code{car} is 8 are grouped
at the beginning of @code{vector}, but their relative order is preserved.
diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi
index 5584cbce9a6..f92c02ae5ed 100644
--- a/doc/lispref/variables.texi
+++ b/doc/lispref/variables.texi
@@ -2558,6 +2558,9 @@ documentation as @var{base-variable} has, if any, unless
the documentation of the variable at the end of the chain of aliases.
This function returns @var{base-variable}.
+
+If the resulting variable definition chain would be circular, then
+Emacs will signal a @code{cyclic-variable-indirection} error.
@end defun
Variable aliases are convenient for replacing an old name for a
@@ -2606,9 +2609,6 @@ look like:
This function returns the variable at the end of the chain of aliases
of @var{variable}. If @var{variable} is not a symbol, or if @var{variable} is
not defined as an alias, the function returns @var{variable}.
-
-This function signals a @code{cyclic-variable-indirection} error if
-there is a loop in the chain of symbols.
@end defun
@example
diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi
index 4b62eee56e2..aacc0d0b0ec 100644
--- a/doc/misc/calc.texi
+++ b/doc/misc/calc.texi
@@ -11042,7 +11042,8 @@ the year even for older dates. The customizable variable
have Calc's date forms switch from the Julian to Gregorian calendar at
any specified date.
-Today's timekeepers introduce an occasional ``leap second''.
+A few platforms support leap seconds, such as the time stamp
+1972-06-30 23:59:60 UTC, an extra second appended to June 1972.
These do not occur regularly and Calc does not take these minor
effects into account. (If it did, it would have to report a
non-integer number of days between, say,
@@ -17342,8 +17343,12 @@ it can be a variable which is a time zone name in upper- or lower-case.
For example @samp{tzone(PST) = tzone(8)} and @samp{tzone(pdt) = tzone(7)}
(for Pacific standard and daylight saving times, respectively).
-North American and European time zone names are defined as follows;
-note that for each time zone there is one name for standard time,
+North American and European time zone names are defined as follows.
+These names are obsolescent and new code should not rely on them:
+the @samp{YST}-related names have disagreed with time in Yukon since 1973,
+and other names could well become confusing or wrong in the future
+as countries change their time zone rules.
+For each time zone there is one name for standard time,
another for daylight saving time, and a third for ``generalized'' time
in which the daylight saving adjustment is computed from context.
@@ -17365,7 +17370,7 @@ To define time zone names that do not appear in the above table,
you must modify the Lisp variable @code{math-tzone-names}. This
is a list of lists describing the different time zone names; its
structure is best explained by an example. The three entries for
-Pacific Time look like this:
+circa-2022 US Pacific Time look like this:
@smallexample
@group
diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi
index 3a808619868..71bf3fcee4a 100644
--- a/doc/misc/cc-mode.texi
+++ b/doc/misc/cc-mode.texi
@@ -330,6 +330,7 @@ Syntactic Symbols
* Multiline Macro Symbols::
* Objective-C Method Symbols::
* Java Symbols::
+* Constraint Symbols::
* Statement Block Symbols::
* K&R Symbols::
@@ -4234,6 +4235,9 @@ The first line in a ``topmost'' definition. @ref{Function Symbols}.
Topmost definition continuation lines. This is only used in the parts
that aren't covered by other symbols such as @code{func-decl-cont} and
@code{knr-argdecl}. @ref{Function Symbols}.
+@item constraint-cont
+Continuation line of a topmost C++20 concept or requires clause.
+@ref{Constraint Symbols}.
@item annotation-top-cont
Topmost definition continuation lines where all previous items are
annotations. @ref{Java Symbols}.
@@ -4397,6 +4401,7 @@ Java. @ref{Java Symbols}.
* Multiline Macro Symbols::
* Objective-C Method Symbols::
* Java Symbols::
+* Constraint Symbols::
* Statement Block Symbols::
* K&R Symbols::
@end menu
@@ -5071,6 +5076,39 @@ syntax due to it being a continuation of a variable declaration where preceding
the declaration is an annotation.
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+@node Constraint Symbols
+@subsection C++ Constraint Symbols
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+The C++20 standard introduced the notion of @dfn{concepts} and
+@dfn{requirements}, a typical instance of which looks something like
+this:
+
+@example
+ 1: template <typename T>
+ 2: requires
+ 3: requires (T t) @{
+ 4: @{ ++t; @}
+ 5: @}
+ 6: && std::is_integral<T>
+ 7: int foo();
+@end example
+
+@ssindex constraint-cont
+Line 1 is assigned the familiar @code{topmost-intro}. Line 2 gets
+@code{topmost-intro-cont}, being the keyword which introduces a
+@dfn{requires clause}. Lines 3, 6, and 7 are assigned the syntax
+@code{constraint-cont}, being continuations of the requires clause
+started on line 2. Lines 4 and 5 get the syntaxes
+@code{defun-block-intro} and @code{defun-close}, being analyzed as
+though part of a function.
+
+Note that the @code{requires} on Line 3 begins a @dfn{requires
+expression}, not a a requires clause, hence its components are not
+assigned @code{constraint-cont}. See
+@url{https://en.cppreference.com/w/cpp/language/requires}.
+
+@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
@node Statement Block Symbols
@subsection Statement Block Symbols
@comment !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi
index b80affbc954..e92bf576e75 100644
--- a/doc/misc/erc.texi
+++ b/doc/misc/erc.texi
@@ -952,7 +952,7 @@ Here, ``password'' refers to your account password, which is usually
your @samp{NickServ} password. To make this work, customize
@code{erc-sasl-user} and @code{erc-sasl-password} or specify the
@code{:user} and @code{:password} keyword arguments when invoking
-@code{erc-tls}. Note that @code{:user} cannot be given interactively.
+@code{erc-tls}.
@item @code{external} (via Client TLS Certificate)
This works in conjunction with the @code{:client-certificate} keyword
diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi
index 1789cded9d3..4e2bddf42af 100644
--- a/doc/misc/eshell.texi
+++ b/doc/misc/eshell.texi
@@ -418,9 +418,9 @@ alias (@pxref{Aliases}). Example:
@example
~ $ which sudo
eshell/sudo is a compiled Lisp function in `em-tramp.el'.
-~ $ alias sudo '*sudo $*'
+~ $ alias sudo '*sudo $@@*'
~ $ which sudo
-sudo is an alias, defined as "*sudo $*"
+sudo is an alias, defined as "*sudo $@@*"
@end example
Some of the built-in commands have different behavior from their
@@ -540,7 +540,7 @@ Manual}.
If @code{eshell-plain-diff-behavior} is non-@code{nil}, then this
command does not use Emacs's internal @code{diff}. This is the same
-as using @samp{alias diff '*diff $*'}.
+as using @samp{alias diff '*diff $@@*'}.
@item dirname
@cmindex dirname
@@ -602,6 +602,8 @@ disabled by default.
@cmindex egrep
@itemx fgrep
@cmindex fgrep
+@itemx rgrep
+@cmindex rgrep
@itemx glimpse
@cmindex glimpse
The @command{grep} commands are compatible with GNU @command{grep},
@@ -610,9 +612,9 @@ but use Emacs's internal @code{grep} instead.
If @code{eshell-plain-grep-behavior} is non-@code{nil}, then these
commands do not use Emacs's internal @code{grep}. This is the same as
-using @samp{alias grep '*grep $*'}, though this setting applies to all
-of the built-in commands for which you would need to create a separate
-alias.
+using @samp{alias grep '*grep $@@*'}, though this setting applies to
+all of the built-in commands for which you would need to create a
+separate alias.
@item history
@cmindex history
@@ -668,7 +670,7 @@ Alias to Emacs's @code{locate} function, which simply runs the external
If @code{eshell-plain-locate-behavior} is non-@code{nil}, then Emacs's
internal @code{locate} is not used. This is the same as using
-@samp{alias locate '*locate $*'}.
+@samp{alias locate '*locate $@@*'}.
@item ls
@cmindex ls
@@ -1047,12 +1049,21 @@ whenever you change the current directory to a different host
the value will automatically update to reflect the search path on that
host.
+@vindex $UID
+@item $UID
+This returns the effective @acronym{UID} for the current user. This
+variable is connection-aware, so when the current directory is remote,
+its value will be @acronym{UID} for the user associated with that
+remote connection.
+
@vindex $_
@item $_
This refers to the last argument of the last command. With a
subscript, you can access any argument of the last command. For
example, @samp{$_[1]} refers to the second argument of the last
-command (excluding the command name itself).
+command (excluding the command name itself). To get all arguments of
+the last command, you can use an index range like @samp{$_[..]}
+(@pxref{Dollars Expansion}).
@vindex $$
@item $$
@@ -1078,6 +1089,7 @@ that are currently visible in the Eshell window. They are both
copied to the environment, so external commands invoked from
Eshell can consult them to do the right thing.
+@vindex $INSIDE_EMACS
@item $INSIDE_EMACS
This variable indicates to external commands that they are being
invoked from within Emacs so they can adjust their behavior if
@@ -1091,24 +1103,47 @@ necessary. Its value is @code{@var{emacs-version},eshell}.
@node Aliases
@section Aliases
-@vindex $*
+@findex eshell-read-aliases-list
Aliases are commands that expand to a longer input line. For example,
-@command{ll} is a common alias for @code{ls -l}, and would be defined
-with the command invocation @kbd{alias ll 'ls -l $*'}; with this defined,
-running @samp{ll foo} in Eshell will actually run @samp{ls -l foo}.
-Aliases defined (or deleted) by the @command{alias} command are
-automatically written to the file named by @code{eshell-aliases-file},
-which you can also edit directly (although you will have to manually
-reload it).
-
-@vindex $1, $2, @dots{}
+@command{ll} is a common alias for @code{ls -l}. To define this alias
+in Eshell, you can use the command invocation @kbd{alias ll 'ls -l
+$@@*'}; with this defined, running @samp{ll foo} in Eshell will
+actually run @samp{ls -l foo}. Aliases defined (or deleted) by the
+@command{alias} command are automatically written to the file named by
+@code{eshell-aliases-file}, which you can also edit directly. After
+doing so, use @w{@kbd{M-x eshell-read-aliases-list}} to load the
+edited aliases.
+
Note that unlike aliases in Bash, arguments must be handled
-explicitly. Typically the alias definition would end in @samp{$*} to
-pass all arguments along. More selective use of arguments via
-@samp{$1}, @samp{$2}, etc., is also possible. For example,
+explicitly. Within aliases, you can use the special variables
+@samp{$*}, @samp{$0}, @samp{$1}, @samp{$2}, etc. to refer to the
+arguments passed to the alias.
+
+@table @code
+
+@vindex $*
+@item $*
+This expands to the list of arguments passed to the alias. For
+example, if you run @code{my-alias 1 2 3}, then @samp{$*} would be the
+list @code{(1 2 3)}. Note that since this variable is a list, using
+@samp{$*} in an alias will pass this list as a single argument to the
+aliased command. Therefore, when defining an alias, you should
+usually use @samp{$@@*} to pass all arguments along, splicing them
+into your argument list (@pxref{Dollars Expansion}).
+
+@vindex $0
+@item $0
+This expands to the name of the alias currently being executed.
+
+@vindex $1, $2, @dots{}, $9
+@item $1, $2, @dots{}, $9
+These variables expand to the nth argument (starting at 1) passed to
+the alias. This lets you selectively use an alias's arguments, so
@kbd{alias mcd 'mkdir $1 && cd $1'} would cause @kbd{mcd foo} to
create and switch to a directory called @samp{foo}.
+@end table
+
@node History
@section History
@cmindex history
@@ -1339,11 +1374,24 @@ index. The exact behavior depends on the type of @var{expr}'s value:
@item a sequence
Expands to the element at the (zero-based) index @var{i} of the
sequence (@pxref{Sequences Arrays Vectors, Sequences, , elisp, The
-Emacs Lisp Reference Manual}).
+Emacs Lisp Reference Manual}). If @var{i} is negative, @var{i} counts
+from the end, so -1 refers to the last element of the sequence.
+
+If @var{i} is a range like @code{@var{start}..@var{end}}, this expands
+to a subsequence from the indices @var{start} to @var{end}, where
+@var{end} is excluded@footnote{This behavior is different from ranges
+in Bash (where both the start and end are included in the range), but
+matches the behavior of similar Emacs Lisp functions, like
+@code{substring} (@pxref{Creating Strings, , , elisp, The Emacs Lisp
+Reference Manual}).}. @var{start} and/or @var{end} can also be
+omitted, which is equivalent to the start and/or end of the entire
+list. For example, @samp{$@var{expr}[-2..]} expands to the last two
+values of @var{expr}.
@item a string
Split the string at whitespace, and then expand to the @var{i}th
-element of the resulting sequence.
+element of the resulting sequence. As above, @var{i} can be a range
+like @code{@var{start}..@var{end}}.
@item an alist
If @var{i} is a non-numeric value, expand to the value associated with
@@ -1370,12 +1418,36 @@ to split the string. @var{regexp} can be any form other than a
number. For example, @samp{$@var{var}[: 0]} will return the first
element of a colon-delimited string.
+@cindex length operator, in variable expansion
@item $#@var{expr}
-Expands to the length of the result of @var{expr}, an expression in
-one of the above forms. For example, @samp{$#@var{var}} returns the
-length of the variable @var{var} and @samp{$#@var{var}[0]} returns the
-length of the first element of @var{var}. Again, signals an error if
-the result of @var{expr} is not a string or a sequence.
+This is the @dfn{length operator}. It expands to the length of the
+result of @var{expr}, an expression in one of the above forms. For
+example, @samp{$#@var{var}} returns the length of the variable
+@var{var} and @samp{$#@var{var}[0]} returns the length of the first
+element of @var{var}. Again, signals an error if the result of
+@var{expr} is not a string or a sequence.
+
+@cindex splice operator, in variable expansion
+@item $@@@var{expr}
+This is the @dfn{splice operator}. It ``splices'' the elements of
+@var{expr} (an expression of one of the above forms) into the
+resulting list of arguments, much like the @samp{,@@} marker in Emacs
+Lisp (@pxref{Backquote, , , elisp, The Emacs Lisp Reference Manual}).
+The elements of @var{expr} become arguments at the same level as the
+other arguments around it. For example, if @var{numbers} is the list
+@code{(1 2 3)}, then:
+
+@example
+@group
+~ $ echo 0 $numbers
+(0
+ (1 2 3))
+@end group
+@group
+~ $ echo 0 $@@numbers
+(0 1 2 3)
+@end group
+@end example
@end table
@@ -2094,7 +2166,7 @@ Allow for a Bash-compatible syntax, such as:
@example
alias arg=blah
-function arg () @{ blah $* @}
+function arg () @{ blah $@@* @}
@end example
@item Pcomplete sometimes gets stuck
@@ -2119,8 +2191,6 @@ Hitting space during a process invocation, such as @command{make}, will
cause it to track the bottom of the output; but backspace no longer
scrolls back.
-@item It's not possible to fully @code{unload-feature} Eshell
-
@item Menu support was removed, but never put back
@item If an interactive process is currently running, @kbd{M-!} doesn't work
@@ -2179,11 +2249,6 @@ So that @kbd{M-@key{DEL}} acts in a predictable manner, etc.
@item Allow all Eshell buffers to share the same history and list-dir
-@item There is a problem with script commands that output to @file{/dev/null}
-
-If a script file, somewhere in the middle, uses @samp{> /dev/null},
-output from all subsequent commands is swallowed.
-
@item Split up parsing of text after @samp{$} in @file{esh-var.el}
Make it similar to the way that @file{esh-arg.el} is structured.
@@ -2392,13 +2457,6 @@ current being used.
This way, the user could change it to use rc syntax: @samp{>[2=1]}.
-@item Allow @samp{$_[-1]}, which would indicate the last element of the array
-
-@item Make @samp{$x[*]} equal to listing out the full contents of @samp{x}
-
-Return them as a list, so that @samp{$_[*]} is all the arguments of the
-last command.
-
@item Copy ANSI code handling from @file{term.el} into @file{em-term.el}
Make it possible for the user to send char-by-char to the underlying
diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi
index bc556ed88e2..836eb38503e 100644
--- a/doc/misc/eww.texi
+++ b/doc/misc/eww.texi
@@ -92,9 +92,10 @@ searched via @code{eww-search-prefix}. The default search engine is
either prefix the file name with @code{file://} or use the command
@kbd{M-x eww-open-file}.
- If you invoke @code{eww} with a prefix argument, as in @w{@kbd{C-u
-M-x eww}}, it will create a new EWW buffer instead of reusing the
-default one, which is normally called @file{*eww*}.
+ If you invoke @code{eww} or @code{eww-open-file} with a prefix
+argument, as in @w{@kbd{C-u M-x eww}}, they will create a new EWW
+buffer instead of reusing the default one, which is normally called
+@file{*eww*}.
@findex eww-quit
@findex eww-reload
diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi
index 03d296a1d42..b6a540a6ea3 100644
--- a/doc/misc/flymake.texi
+++ b/doc/misc/flymake.texi
@@ -1,8 +1,8 @@
\input texinfo @c -*- mode: texinfo; coding: utf-8 -*-
@comment %**start of header
@setfilename ../../info/flymake.info
-@set VERSION 1.2.2
-@set UPDATED November 2021
+@set VERSION 1.3.4
+@set UPDATED April 2023
@settitle GNU Flymake @value{VERSION}
@include docstyle.texi
@syncodeindex pg cp
@@ -142,6 +142,12 @@ highlighted regions to learn what the specific problem
is. Alternatively, place point on the highlighted regions and use the
commands @code{eldoc} or @code{display-local-help}.
+Another easy way to get instant access to the diagnostic text is to
+set @code{flymake-show-diagnostics-at-end-of-line} to a non-@code{nil}
+value. This makes the diagnostic messages appear at the end of the
+line where the regular annotation is located (@pxref{Customizable
+variables})
+
@cindex next and previous diagnostic
If the diagnostics are outside the visible region of the buffer,
@code{flymake-goto-next-error} and @code{flymake-goto-prev-error} are
@@ -314,6 +320,22 @@ Which fringe (if any) should show the warning/error bitmaps.
@item flymake-wrap-around
If non-@code{nil}, moving to errors with @code{flymake-goto-next-error} and
@code{flymake-goto-prev-error} wraps around buffer boundaries.
+
+@item flymake-show-diagnostics-at-end-of-line
+If non-@code{nil}, show summarized descriptions of diagnostics at the
+end of the line. Depending on your preference, this can either be
+distracting and easily confused with actual code, or a significant
+early aid that relieves you from moving around or reaching for the
+mouse to consult an error message.
+
+@item flymake-error-eol
+A custom face for summarizing diagnostic error messages.
+
+@item flymake-warning-eol
+A custom face for summarizing diagnostic warning messages.
+
+@item flymake-note-eol
+A custom face for summarizing diagnostic notes.
@end vtable
@node Extending Flymake
@@ -394,7 +416,7 @@ its @code{flymake-overlay-control} property:
@item
@cindex severity of diagnostic
-@code{flymake-severity} is a non-negative integer specifying the
+@code{severity} is a non-negative integer specifying the
diagnostic's severity. The higher the value, the more serious is the
error. If the overlay property @code{priority} is not specified in
@code{flymake-overlay-control}, @code{flymake-severity} is used to set
@@ -409,6 +431,17 @@ type, in case the name of the symbol associated with it is very long.
@vindex flymake-category
@code{flymake-category} is a symbol whose property list is considered
the default for missing values of any other properties.
+
+@item
+@cindex mode-line appearance of a diagnostic
+@code{mode-line-face} is a face specifier controlling the appearance
+of the indicator of this type of diagnostic in the mode line.
+
+@item
+@cindex summarized appearance of a diagnostic
+@code{echo-face} is a face specifier controlling the appearance of the
+summarized description of this diagnostic when reading diagnostic
+messages (@pxref{Finding diagnostics}).
@end itemize
@cindex predefined diagnostic types
diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi
index f0d3c75d055..be7504c92bf 100644
--- a/doc/misc/gnus.texi
+++ b/doc/misc/gnus.texi
@@ -10528,9 +10528,9 @@ article (@code{gnus-summary-refer-references}).
@kindex A T @r{(Summary)}
Display the full thread where the current article appears
(@code{gnus-summary-refer-thread}). By default this command looks for
-articles only in the current group. Some backends (currently only
-@code{nnimap}) know how to find articles in the thread directly. In
-other cases each header in the current group must be fetched and
+articles only in the current group. If the group belongs to a backend
+that has an associated search engine, articles are found by searching.
+In other cases each header in the current group must be fetched and
examined, so it usually takes a while. If you do it often, you may
consider setting @code{gnus-fetch-old-headers} to @code{invisible}
(@pxref{Filling In Threads}). This won't have any visible effects
@@ -10538,19 +10538,22 @@ normally, but it'll make this command work a whole lot faster. Of
course, it'll make group entry somewhat slow.
@vindex gnus-refer-thread-use-search
-If @code{gnus-refer-thread-use-search} is non-@code{nil} then those backends
-that know how to find threads directly will search not just in the
-current group but all groups on the same server.
+If @code{gnus-refer-thread-use-search} is @code{nil} (the default)
+then thread-referral only looks for articles in the current group. If
+this variable is @code{t} the server to which the current group
+belongs is searched (provided that searching is available for the
+server's backend). If this variable is a list of servers, each server
+in the list is searched.
@vindex gnus-refer-thread-limit
The @code{gnus-refer-thread-limit} variable says how many old (i.e.,
articles before the first displayed in the current group) headers to
-fetch when doing this command. The default is 200. If @code{t}, all
-the available headers will be fetched. This variable can be overridden
-by giving the @kbd{A T} command a numerical prefix.
+fetch when referring a thread. The default is 500. If @code{t}, all
+the available headers will be fetched. This variable can be
+overridden by giving the @kbd{A T} command a numerical prefix.
@vindex gnus-refer-thread-limit-to-thread
-In most cases @code{gnus-refer-thread} adds any articles it finds to
+@code{gnus-summary-refer-thread} tries to add any articles it finds to
the current summary buffer. (When @code{gnus-refer-thread-use-search}
is true and the initial referral starts from a summary buffer for a
non-virtual group this may not be possible. In this case a new
diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi
index 575a086e2c5..caee0ed2c70 100644
--- a/doc/misc/mh-e.texi
+++ b/doc/misc/mh-e.texi
@@ -793,7 +793,7 @@ You should see the scan line for your message, and perhaps others. Use
@cartouche
@smallexample
- 3 t08/24 root received fax files on Wed Aug 24 11:00:13 PDT 1
+ 3 t08/24 root received fax files on Wed Aug 24 11:00:13 -0700 1
# 4+t08/24 To:wohler Test<<This is a test message to get the wheels
-:%% @{+inbox/select@} 4 msgs (1-4) Bot L4 (MH-Folder Show)---------
diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org
index 4bf78379c10..47d3e6c03e3 100644
--- a/doc/misc/modus-themes.org
+++ b/doc/misc/modus-themes.org
@@ -4,9 +4,9 @@
#+language: en
#+options: ':t toc:nil author:t email:t num:t
#+startup: content
-#+macro: stable-version 3.0.0
-#+macro: release-date 2022-10-28
-#+macro: development-version 3.1.0-dev
+#+macro: stable-version 4.1.0
+#+macro: release-date 2023-02-22
+#+macro: development-version 4.2.0-dev
#+macro: file @@texinfo:@file{@@$1@@texinfo:}@@
#+macro: space @@texinfo:@: @@
#+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@
@@ -21,20 +21,27 @@
#+texinfo: @insertcopying
-This manual, written by Protesilaos Stavrou, describes the customization
-options for the ~modus-operandi~ and ~modus-vivendi~ themes, and provides
-every other piece of information pertinent to them.
+This manual, written by Protesilaos Stavrou, describes the
+customization options for the Modus themes, and provides every other
+piece of information pertinent to them.
The documentation furnished herein corresponds to stable version
-{{{stable-version}}}, released on {{{release-date}}}. Any reference to a newer
-feature which does not yet form part of the latest tagged commit, is
-explicitly marked as such.
+{{{stable-version}}}, released on {{{release-date}}}. Any reference
+to a newer feature which does not yet form part of the latest tagged
+commit, is explicitly marked as such.
Current development target is {{{development-version}}}.
-+ Homepage: https://protesilaos.com/emacs/modus-themes.
-+ Git repository: https://git.sr.ht/~protesilaos/modus-themes.
-+ Mailing list: https://lists.sr.ht/~protesilaos/modus-themes.
++ Package name (GNU ELPA): ~modus-themes~
++ Official manual: <https://protesilaos.com/emacs/modus-themes>
++ Change log: <https://protesilaos.com/emacs/modus-themes-changelog>
++ Color palette: <https://protesilaos.com/emacs/modus-themes-colors>
++ Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures>
++ Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes>
+ - Mirrors:
+ + GitHub: <https://github.com/protesilaos/modus-themes>
+ + GitLab: <https://gitlab.com/protesilaos/modus-themes>
++ Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes>
+ Backronym: My Old Display Unexpectedly Sharpened ... themes
#+toc: headlines 8 insert TOC here, with eight headline levels
@@ -45,7 +52,7 @@ Current development target is {{{development-version}}}.
:custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3
:end:
-Copyright (C) 2020-2023 Free Software Foundation, Inc.
+Copyright (C) 2020-2023 Free Software Foundation, Inc.
#+begin_quote
Permission is granted to copy, distribute and/or modify this document
@@ -64,44 +71,46 @@ modify this GNU manual.”
:custom_id: h:f0f3dbcb-602d-40cf-b918-8f929c441baf
:end:
-The Modus themes are designed for accessible readability. They conform
-with the highest standard for color contrast between any given
-combination of background and foreground values. This corresponds to
-the WCAG AAA standard, which specifies a minimum rate of distance in
-relative luminance of 7:1.
+The Modus themes are designed for accessible readability. They
+conform with the highest standard for color contrast between
+combinations of background and foreground values. For small sized
+text, this corresponds to the WCAG AAA standard, which specifies a
+minimum rate of distance in relative luminance of 7:1.
+
+The Modus themes consist of six themes, divided into three subgroups.
+
+- Main themes :: ~modus-operandi~ is the project's main light theme,
+ while ~modus-vivendi~ is its dark counterpart. These two themes are
+ part of the project since its inception. They are designed to cover
+ a broad range of needs and are, in the opinion of the author, the
+ reference for what a highly legible "default" theme should look
+ like.
+
+- Tinted themes :: ~modus-operandi-tinted~ and ~modus-vivendi-tinted~
+ are variants of the two main themes. They slightly tone down the
+ intensity of the background and provide a bit more color variety.
+ ~modus-operandi-tinted~ has a set of base tones that are shades of
+ light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a
+ night sky impression.
+
+- Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its
+ companion ~modus-vivendi-deuteranopia~ are optimized for users with
+ red-green color deficiency. This means that they do not use red and
+ green hues for color-coding purposes, such as for diff removed and
+ added lines. Instead, they implement colors that are discernible by
+ users with deueteranopia or deuteranomaly (mostly yellow and blue
+ hues).
-Modus Operandi (~modus-operandi~) is a light theme, while Modus Vivendi
-(~modus-vivendi~) is dark. Each theme's color palette is designed to meet
-the needs of the numerous interfaces that are possible in the Emacs
-computing environment.
+To ensure that users have a consistently accessible experience, the
+themes strive to achieve as close to full face coverage as possible,
+while still targeting a curated list of well-maintained packages
+([[#h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19][Face coverage]]).
The overarching objective of this project is to always offer accessible
color combinations. There shall never be a compromise on this
principle. If there arises an inescapable trade-off between readability
and stylistic considerations, we will always opt for the former.
-To ensure that users have a consistently accessible experience, the
-themes strive to achieve as close to full face coverage as possible
-([[#h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19][Face coverage]]).
-
-Furthermore, the themes are designed to empower users with red-green
-color deficiency (deuteranopia). This is achieved in three ways:
-
-1. The conformance with the highest legibility standard means that text
- is always readable no matter the perception of its hue.
-
-2. Most contexts use colors on the blue-cyan-magenta-purple side of the
- spectrum. Put differently, green and/or red are seldom used, thus
- minimizing the potential for confusion.
-
- [[#h:0b26cb47-9733-4cb1-87d9-50850cb0386e][Why are colors mostly variants of blue, magenta, cyan?]].
-
-3. In contexts where a red/green color-coding is unavoidable, we provide
- a universal toggle to customize the themes so that a red/blue scheme
- is used instead.
-
- [[#h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe][Option for red-green color deficiency or deuteranopia]].
-
Starting with version 0.12.0 and onwards, the themes are built into GNU
Emacs.
@@ -111,12 +120,8 @@ Emacs.
:end:
#+cindex: Screenshots
-Check the web page with [[https://protesilaos.com/emacs/modus-themes-pictures/][the screen shots]]. There are lots of scenarios
-on display that draw attention to details and important aspects in the
-design of the themes. They also showcase the numerous customization
-options.
-
-[[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization options]].
+Check the web page with [[https://protesilaos.com/emacs/modus-themes-pictures/][the screen shots]]. Note that the themes are
+highly customizable ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization options]]).
** Learn about the latest changes
:properties:
@@ -137,14 +142,21 @@ On older versions of Emacs, they can be installed using Emacs' package
manager or manually from their code repository. There also exist
packages for distributions of GNU/Linux.
+Emacs 28 ships with ~modus-themes~ version =1.6.0=. Emacs 29 includes
+version =3.0.0=. Emacs 30 provides a newer, refactored version that
+thoroughly refashions how the themes are implemented and customized.
+Such major versions are not backward-compatible due to the limited
+resources at the maintainer's disposal to support multiple versions of
+Emacs and of the themes across the years.
+
** Install manually from source
:properties:
:custom_id: h:da3414b7-1426-46b8-8e76-47b845b76fd0
:end:
In the following example, we are assuming that your Emacs files are
-stored in =~/.emacs.d= and that you want to place the Modus themes in
-=~/.emacs.d/modus-themes=.
+stored in {{{file(~/.emacs.d)}}} and that you want to place the Modus
+themes in {{{file(~/.emacs.d/modus-themes)}}}.
1. Get the source and store it in the desired path by running the
following in the command line shell:
@@ -218,17 +230,17 @@ They are now ready to be used: [[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable
:custom_id: h:e6268471-e847-4c9d-998f-49a83257b7f1
:end:
-From time to time, we receive bug reports pertaining to errors with byte
-compilation. These seldom have to do with faulty code in the themes: it
-might be a shortcoming of =package.el=, some regression in the current
-development target of Emacs, a misconfiguration in an otherwise exotic
-setup, and the like.
+From time to time, we receive bug reports pertaining to errors with
+byte compilation. These seldom have to do with faulty code in the
+themes: it might be a shortcoming of {{{file(package.el)}}}, some
+regression in the current development target of Emacs, a
+misconfiguration in an otherwise exotic setup, and the like.
The common solution with a stable version of Emacs is to:
-1. Delete the =modus-themes= package.
+1. Delete the ~modus-themes~ package.
2. Close the current Emacs session.
-3. Install the =modus-themes= again.
+3. Install the ~modus-themes~ again.
For those building Emacs directly from source, the solution may involve
reverting to an earlier commit in emacs.git.
@@ -245,101 +257,110 @@ wrong.
:properties:
:custom_id: h:3f3c3728-1b34-437d-9d0c-b110f5b161a9
:end:
-#+findex: modus-themes-load-themes
#+findex: modus-themes-toggle
-#+findex: modus-themes-load-operandi
-#+findex: modus-themes-load-vivendi
-#+cindex: Essential configuration
+#+findex: modus-themes-load-theme
#+vindex: modus-themes-after-load-theme-hook
+#+cindex: Essential configuration
+
+NOTE that Emacs can load multiple themes, which typically produces
+undesirable results and undoes the work of the designer. Use the
+~disable-theme~ command if you are trying other themes beside the
+Modus collection ([[#h:adb0c49a-f1f9-4690-868b-013a080eed68][Option for disabling other themes while loading Modus]]).
Users of the built-in themes cannot ~require~ the package as usual
-because there is no package to speak of. Instead, things are simpler as
-all one needs is to load the theme of their preference by adding either
-form to their init file:
+because there is no package to speak of. Instead, things are simpler
+as built-in themes are considered safe. All one needs is to load the
+theme of their preference by adding either form to their init file:
#+begin_src emacs-lisp
(load-theme 'modus-operandi) ; Light theme
(load-theme 'modus-vivendi) ; Dark theme
#+end_src
+Remember that the Modus themes are six themes ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]]). Adapt the
+above snippet accordingly.
+
Users of packaged variants of the themes must add a few more lines to
ensure that everything works as intended. First, one has to require the
-main library before loading either theme:
+main library before loading one of the themes:
#+begin_src emacs-lisp
(require 'modus-themes)
#+end_src
-Then it is recommended to load the individual theme files with the
-helper function ~modus-themes-load-themes~:
-
-#+begin_src emacs-lisp
-;; Load the theme files before enabling a theme (else you get an error).
-(modus-themes-load-themes)
-#+end_src
-
-Once the libraries that define the themes are enabled, one can activate
-a theme with either of the following expressions:
+One can activate a theme with something like the following expression,
+replacing ~modus-operandi~ with their preferred Modus theme:
#+begin_src emacs-lisp
-(modus-themes-load-operandi) ; Light theme
-;; OR
-(modus-themes-load-vivendi) ; Dark theme
+(load-theme 'modus-operandi :no-confirm)
#+end_src
Changes to the available customization options must always be evaluated
-before loading a theme ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]). An exception to this
-norm is when using the various Custom interfaces or with commands like
-{{{kbd(M-x customize-set-variable)}}}, which can optionally
-automatically reload the theme ([[#h:9001527a-4e2c-43e0-98e8-3ef72d770639][Option for inhibiting theme reload]]).
+before loading a theme ([[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization Options]]). Reload a theme for
+new changes to take effect.
-This is how a basic setup could look like:
+This is how a basic setup could look like ([[#h:b66b128d-54a4-4265-b59f-4d1ea2feb073][The require-theme for built-in Emacs themes]]):
#+begin_src emacs-lisp
-;;; For the built-in themes which cannot use `require':
-;; Add all your customizations prior to loading the themes
+;;; For the built-in themes which cannot use `require'.
+(require-theme 'modus-themes)
+
+;; Add all your customizations prior to loading the themes.
(setq modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-region '(bg-only no-extend))
+ modus-themes-bold-constructs nil)
-;; Load the theme of your choice:
-(load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi)
+;; Load the theme of your choice.
+(load-theme 'modus-operandi)
+;; Optionally define a key to switch between Modus themes. Also check
+;; the user option `modus-themes-to-toggle'.
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
-;;; For packaged versions which must use `require':
+;;; For packaged versions which must use `require'.
+
(require 'modus-themes)
;; Add all your customizations prior to loading the themes
(setq modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-region '(bg-only no-extend))
+ modus-themes-bold-constructs nil)
-;; Load the theme files before enabling a theme
-(modus-themes-load-themes)
-
-;; Load the theme of your choice:
-(modus-themes-load-operandi) ;; OR (modus-themes-load-vivendi)
+;; Load the theme of your choice.
+(load-theme 'modus-operandi :no-confirm)
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
#+end_src
[[#h:e979734c-a9e1-4373-9365-0f2cd36107b8][Sample configuration with and without use-package]].
-With those granted, bear in mind a couple of technical points on
-~modus-themes-load-operandi~ and ~modus-themes-load-vivendi~, as well as
-~modus-themes-toggle~ which relies on them:
+** The ~require-theme~ for built-in Emacs themes
+:PROPERTIES:
+:CUSTOM_ID: h:b66b128d-54a4-4265-b59f-4d1ea2feb073
+:END:
+
+The version of the Modus themes that is included in Emacs CANNOT use
+the standard ~require~. This is because the built-in themes are not
+included in the ~load-path~ (not my decision). The ~require-theme~
+function must be used in this case as a replacement. For example:
+
+#+begin_src emacs-lisp
+(require-theme 'modus-themes)
+
+;; All customizations here
+(setq modus-themes-bold-constructs t
+ modus-themes-italic-constructs t)
+
+;; Maybe define some palette overrides, such as by using our presets
+(setq modus-themes-common-palette-overrides
+ modus-themes-preset-overrides-intense)
-1. Those functions call ~load-theme~. Some users prefer to opt for
- ~enable-theme~ instead ([[#h:e68560b3-7fb0-42bc-a151-e015948f8a35][Differences between loading and enabling]]).
+;; Load the theme of choice (built-in themes are always "safe" so they
+;; do not need the `no-require' argument of `load-theme').
+(load-theme 'modus-operandi)
-2. The functions will run the ~modus-themes-after-load-theme-hook~ as
- their final step. This can be employed for bespoke configurations
- ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). Experienced users may not wish to rely on
- such a hook and the functions that run it: they may prefer a custom
- solution ([[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]]).
+(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
+#+end_src
** Sample configuration with and without use-package
:properties:
@@ -348,70 +369,66 @@ With those granted, bear in mind a couple of technical points on
#+cindex: use-package configuration
#+cindex: sample configuration
+What follows is a variant of what we demonstrate in the previous
+section ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]).
+
It is common for Emacs users to rely on ~use-package~ for declaring
package configurations in their setup. We use this as an example:
#+begin_src emacs-lisp
-;;; For the built-in themes which cannot use `require':
+;;; For the built-in themes which cannot use `require'.
(use-package emacs
- :init
+ :config
+ (require-theme 'modus-themes) ; `require-theme' is ONLY for the built-in Modus themes
+
;; Add all your customizations prior to loading the themes
(setq modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-region '(bg-only no-extend))
- :config
- ;; Load the theme of your choice:
- (load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi)
- :bind ("<f5>" . modus-themes-toggle))
+ modus-themes-bold-constructs nil)
+
+ ;; Maybe define some palette overrides, such as by using our presets
+ (setq modus-themes-common-palette-overrides
+ modus-themes-preset-overrides-intense)
+
+ ;; Load the theme of your choice.
+ (load-theme 'modus-operandi)
+
+ (define-key global-map (kbd "<f5>") #'modus-themes-toggle))
-;;; For packaged versions which must use `require':
+;;; For packaged versions which must use `require'.
(use-package modus-themes
- :ensure
- :init
+ :ensure t
+ :config
;; Add all your customizations prior to loading the themes
(setq modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-region '(bg-only no-extend))
+ modus-themes-bold-constructs nil)
- ;; Load the theme files before enabling a theme
- (modus-themes-load-themes)
- :config
- ;; Load the theme of your choice:
- (modus-themes-load-operandi) ;; OR (modus-themes-load-vivendi)
- :bind ("<f5>" . modus-themes-toggle))
+ ;; Maybe define some palette overrides, such as by using our presets
+ (setq modus-themes-common-palette-overrides
+ modus-themes-preset-overrides-intense)
+
+ ;; Load the theme of your choice.
+ (load-theme 'modus-operandi)
+
+ (define-key global-map (kbd "<f5>") #'modus-themes-toggle))
#+end_src
The same without ~use-package~:
#+begin_src emacs-lisp
-;;; For the built-in themes which cannot use `require':
-;; Add all your customizations prior to loading the themes
-(setq modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-region '(bg-only no-extend))
-
-;; Load the theme of your choice:
-(load-theme 'modus-operandi) ;; OR (load-theme 'modus-vivendi)
-
-(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
-
-
-
-;;; For packaged versions which must use `require':
-(require 'modus-themes)
+(require 'modus-themes) ; OR for the built-in themes: (require-theme 'modus-themes)
;; Add all your customizations prior to loading the themes
(setq modus-themes-italic-constructs t
- modus-themes-bold-constructs nil
- modus-themes-region '(bg-only no-extend))
+ modus-themes-bold-constructs nil)
-;; Load the theme files before enabling a theme
-(modus-themes-load-themes)
+;; Maybe define some palette overrides, such as by using our presets
+(setq modus-themes-common-palette-overrides
+ modus-themes-preset-overrides-intense)
;; Load the theme of your choice:
-(modus-themes-load-operandi) ;; OR (modus-themes-load-vivendi)
+(load-theme 'modus-operandi :no-confirm)
(define-key global-map (kbd "<f5>") #'modus-themes-toggle)
#+end_src
@@ -433,8 +450,8 @@ package declaration of the themes.
The reason we recommend ~load-theme~ instead of the other option of
~enable-theme~ is that the former does a kind of "reset" on the face
specs. It quite literally loads (or reloads) the theme. Whereas the
-latter simply puts an already loaded theme at the top of the list of
-enabled items, re-using whatever state was last loaded.
+~enable-theme~ function simply puts an already loaded theme to the top
+of the list of enabled items, re-using whatever state was last loaded.
As such, ~load-theme~ reads all customizations that may happen during
any given Emacs session: even after the initial setup of a theme.
@@ -453,10 +470,13 @@ session, are better off using something like this:
#+begin_src emacs-lisp
(require 'modus-themes)
+
+;; Activate your desired themes here
(load-theme 'modus-operandi t t)
(load-theme 'modus-vivendi t t)
-(enable-theme 'modus-operandi) ;; OR (enable-theme 'modus-vivendi)
+;; Enable the preferred one
+(enable-theme 'modus-operandi)
#+end_src
[[#h:b40aca50-a3b2-4c43-be58-2c26fcd14237][Toggle themes without reloading them]].
@@ -467,198 +487,128 @@ With the above granted, other sections of the manual discuss how to
configure custom faces, where ~load-theme~ is expected, though
~enable-theme~ could still apply in stable setups:
-[[#h:1487c631-f4fe-490d-8d58-d72ffa3bd474][Case-by-case face specs using the themes' palette]].
-
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
-* Customization Options
+* Customization options
:properties:
:custom_id: h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f
:end:
The Modus themes are highly configurable, though they should work well
-without any further tweaks. By default, all customization options are
-set to nil, unless otherwise noted in this manual.
+without any further tweaks. We provide a variety of user options.
+The following code block provides an overview. In addition to those
+variables, the themes support a comprehensive system of overrides: it
+can be used to make thoroughgoing changes to the looks of the themes
+([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). We document everything at length in
+the pages of this manual and also provide ready-to-use code samples.
Remember that all customization options must be evaluated before loading
a theme ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]). If the theme is already active, it must be
-reloaded for changes in user options to come into force.
-
-Below is a summary of what you will learn in the subsequent sections of
-this manual.
+reloaded for changes to take effect.
#+begin_src emacs-lisp
+;; In all of the following, WEIGHT is a symbol such as `semibold',
+;; `light', `bold', or anything mentioned in `modus-themes-weights'.
(setq modus-themes-italic-constructs t
modus-themes-bold-constructs nil
- modus-themes-mixed-fonts nil
- modus-themes-subtle-line-numbers nil
- modus-themes-intense-mouseovers nil
- modus-themes-deuteranopia t
- modus-themes-tabs-accented t
+ modus-themes-mixed-fonts t
modus-themes-variable-pitch-ui nil
- modus-themes-inhibit-reload t ; only applies to `customize-set-variable' and related
-
- modus-themes-fringes nil ; {nil,'subtle,'intense}
-
- ;; Options for `modus-themes-lang-checkers' are either nil (the
- ;; default), or a list of properties that may include any of those
- ;; symbols: `straight-underline', `text-also', `background',
- ;; `intense' OR `faint'.
- modus-themes-lang-checkers nil
-
- ;; Options for `modus-themes-mode-line' are either nil, or a list
- ;; that can combine any of `3d' OR `moody', `borderless',
- ;; `accented', a natural number for extra padding (or a cons cell
- ;; of padding and NATNUM), and a floating point for the height of
- ;; the text relative to the base font size (or a cons cell of
- ;; height and FLOAT)
- modus-themes-mode-line '(accented borderless (padding . 4) (height . 0.9))
-
- ;; Same as above:
- ;; modus-themes-mode-line '(accented borderless 4 0.9)
-
- ;; Options for `modus-themes-markup' are either nil, or a list
- ;; that can combine any of `bold', `italic', `background',
- ;; `intense'.
- modus-themes-markup '(background italic)
-
- ;; Options for `modus-themes-syntax' are either nil (the default),
- ;; or a list of properties that may include any of those symbols:
- ;; `faint', `yellow-comments', `green-strings', `alt-syntax'
- modus-themes-syntax nil
-
- ;; Options for `modus-themes-hl-line' are either nil (the default),
- ;; or a list of properties that may include any of those symbols:
- ;; `accented', `underline', `intense'
- modus-themes-hl-line '(underline accented)
-
- ;; Options for `modus-themes-paren-match' are either nil (the
- ;; default), or a list of properties that may include any of those
- ;; symbols: `bold', `intense', `underline'
- modus-themes-paren-match '(bold intense)
-
- ;; Options for `modus-themes-links' are either nil (the default),
- ;; or a list of properties that may include any of those symbols:
- ;; `neutral-underline' OR `no-underline', `faint' OR `no-color',
- ;; `bold', `italic', `background'
- modus-themes-links '(neutral-underline background)
-
- ;; Options for `modus-themes-box-buttons' are either nil (the
- ;; default), or a list that can combine any of `flat', `accented',
- ;; `faint', `variable-pitch', `underline', `all-buttons', the
- ;; symbol of any font weight as listed in `modus-themes-weights',
- ;; and a floating point number (e.g. 0.9) for the height of the
- ;; button's text.
- modus-themes-box-buttons '(variable-pitch flat faint 0.9)
+ modus-themes-custom-auto-reload t
+ modus-themes-disable-other-themes t
;; Options for `modus-themes-prompts' are either nil (the
;; default), or a list of properties that may include any of those
- ;; symbols: `background', `bold', `gray', `intense', `italic'
- modus-themes-prompts '(intense bold)
+ ;; symbols: `italic', `WEIGHT'
+ modus-themes-prompts '(italic bold)
- ;; The `modus-themes-completions' is an alist that reads three
- ;; keys: `matches', `selection', `popup'. Each accepts a nil
- ;; value (or empty list) or a list of properties that can include
- ;; any of the following (for WEIGHT read further below):
+ ;; The `modus-themes-completions' is an alist that reads two
+ ;; keys: `matches', `selection'. Each accepts a nil value (or
+ ;; empty list) or a list of properties that can include any of
+ ;; the following (for WEIGHT read further below):
;;
- ;; `matches' - `background', `intense', `underline', `italic', WEIGHT
- ;; `selection' - `accented', `intense', `underline', `italic', `text-also' WEIGHT
- ;; `popup' - same as `selected'
- ;; `t' - applies to any key not explicitly referenced (check docs)
- ;;
- ;; WEIGHT is a symbol such as `semibold', `light', or anything
- ;; covered in `modus-themes-weights'. Bold is used in the absence
- ;; of an explicit WEIGHT.
- modus-themes-completions '((matches . (extrabold))
- (selection . (semibold accented))
- (popup . (accented intense)))
-
- modus-themes-mail-citations nil ; {nil,'intense,'faint,'monochrome}
-
- ;; Options for `modus-themes-region' are either nil (the default),
- ;; or a list of properties that may include any of those symbols:
- ;; `no-extend', `bg-only', `accented'
- modus-themes-region '(bg-only no-extend)
-
- ;; Options for `modus-themes-diffs': nil, 'desaturated, 'bg-only
- modus-themes-diffs 'desaturated
+ ;; `matches' :: `underline', `italic', `WEIGHT'
+ ;; `selection' :: `underline', `italic', `WEIGHT'
+ modus-themes-completions
+ '((matches . (extrabold))
+ (selection . (semibold italic text-also)))
modus-themes-org-blocks 'gray-background ; {nil,'gray-background,'tinted-background}
- modus-themes-org-agenda ; this is an alist: read the manual or its doc string
- '((header-block . (variable-pitch 1.3))
- (header-date . (grayscale workaholic bold-today 1.1))
- (event . (accented varied))
- (scheduled . uniform)
- (habit . traffic-light))
-
- modus-themes-headings ; this is an alist: read the manual or its doc string
- '((1 . (overline background variable-pitch 1.3))
- (2 . (rainbow overline 1.1))
- (t . (semibold))))
+ ;; The `modus-themes-headings' is an alist: read the manual's
+ ;; node about it or its doc string. Basically, it supports
+ ;; per-level configurations for the optional use of
+ ;; `variable-pitch' typography, a height value as a multiple of
+ ;; the base font size (e.g. 1.5), and a `WEIGHT'.
+ modus-themes-headings
+ '((1 . (variable-pitch 1.5))
+ (2 . (1.3))
+ (agenda-date . (1.3))
+ (agenda-structure . (variable-pitch light 1.8))
+ (t . (1.1))))
+
+;; Remember that more (MUCH MORE) can be done with overrides, which we
+;; document extensively in this manual.
#+end_src
-** Option for inhibiting theme reload
+** Option for reloading the theme on custom change
:properties:
:alt_title: Custom reload theme
:description: Toggle auto-reload of the theme when setting custom variables
:custom_id: h:9001527a-4e2c-43e0-98e8-3ef72d770639
:end:
-#+vindex: modus-themes-inhibit-reload
+#+vindex: modus-themes-custom-auto-reload
Brief: Toggle reloading of the active theme when an option is changed
-through the Customize UI.
+through the Custom UI.
-Symbol: ~modus-themes-inhibit-reload~ (=boolean= type)
+Symbol: ~modus-themes-custom-auto-reload~ (=boolean= type)
Possible values:
1. ~nil~
2. ~t~ (default)
-By default, customizing a theme-related user option through the Custom
-interfaces or with {{{kbd(M-x customize-set-variable)}}} will not reload the
-currently active Modus theme.
+All theme user options take effect when a theme is loaded. Any
+subsequent changes require the theme to be reloaded.
-Enable this behavior by setting this variable to ~nil~.
+When this variable has a non-nil value, any change made via the Custom
+UI or related functions such as ~customize-set-variable~ and ~setopt~
+(Emacs 29), will trigger a reload automatically.
-Regardless of this option, the active theme must be reloaded for changes
-to user options to take effect ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]).
+With a nil value, changes to user options have no further consequences:
+the user must manually reload the theme ([[#h:3f3c3728-1b34-437d-9d0c-b110f5b161a9][Enable and load]]).
-** Option for red-green color deficiency or deuteranopia
+** Option for disabling other themes while loading Modus
:properties:
-:alt_title: Deuteranopia style
-:description: Toggle red/blue color-coding instead of red/green
-:custom_id: h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe
+:alt_title: Disable other themes
+:description: Determine whether loading a Modus themes disables all others
+:custom_id: h:adb0c49a-f1f9-4690-868b-013a080eed68
:end:
-#+vindex: modus-themes-deuteranopia
+#+vindex: modus-themes-disable-other-themes
-Brief: When non-~nil~ use red/blue color-coding instead of red/green,
-where appropriate.
+Brief: Disable all other themes when loading a Modus theme.
-Symbol: ~modus-themes-deuteranopia~ (=boolean= type)
+Symbol: ~modus-themes-disable-other-themes~ (=boolean= type)
Possible values:
-1. ~nil~ (default)
-2. ~t~
+1. ~nil~
+2. ~t~ (default)
-This is to account for red-green color deficiency, also know as
-deuteranopia and variants. It applies to all contexts where there can
-be a color-coded distinction between failure or success, a to-do or done
-state, a mark for deletion versus a mark for selection (e.g. in Dired),
-current and lazily highlighted search matches, removed lines in diffs as
-opposed to added ones, and so on.
+When the value is non-nil, the commands ~modus-themes-toggle~ and
+~modus-themes-select~, as well as the ~modus-themes-load-theme~
+function, will disable all other themes while loading the specified
+Modus theme. This is done to ensure that Emacs does not blend two or
+more themes: such blends lead to awkward results that undermine the
+work of the designer.
-Note that this does not change all colors throughout the active theme,
-but only applies to cases that have color-coding significance. For
-example, regular code syntax highlighting is not affected. There is no
-such need because of the themes' overarching commitment to the highest
-legibility standard, which ensures that text is readable regardless of
-hue, as well as the predominance of colors on the
-blue-cyan-magenta-purple side of the spectrum.
+When the value is nil, the aforementioned commands and function will
+only disable other themes within the Modus collection.
-[[#h:0b26cb47-9733-4cb1-87d9-50850cb0386e][Why are colors mostly variants of blue, magenta, cyan?]].
+This option is provided because Emacs themes are not necessarily
+limited to colors/faces: they can consist of an arbitrary set of
+customizations. Users who use such customization bundles must set
+this variable to a nil value.
** Option for more bold constructs
:properties:
@@ -680,9 +630,9 @@ Possible values:
The default is to use a bold typographic weight only when it is
required.
-With a non-~nil~ value (~t~) display several syntactic constructs in bold
-weight. This concerns keywords and other important aspects of code
-syntax. It also affects certain mode line indicators and command-line
+With a non-~nil~ value (~t~) display several syntactic constructs in
+bold weight. This concerns keywords and other important aspects of
+code syntax. It also affects certain mode line indicators and command
prompts.
Advanced users may also want to configure the exact attributes of the
@@ -718,70 +668,6 @@ Advanced users may also want to configure the exact attributes of the
[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
-** Option for syntax highlighting
-:properties:
-:alt_title: Syntax styles
-:description: Choose the overall aesthetic of code syntax
-:custom_id: h:c119d7b2-fcd4-4e44-890e-5e25733d5e52
-:end:
-#+vindex: modus-themes-syntax
-
-Brief: Set the overall style of code syntax highlighting.
-
-Symbol: ~modus-themes-syntax~ (=choice= type, list of properties)
-
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
-
-+ ~faint~
-+ ~yellow-comments~
-+ ~green-strings~
-+ ~alt-syntax~
-
-The default (a ~nil~ value or an empty list) is to use a balanced
-combination of colors on the cyan-blue-magenta side of the spectrum.
-There is little to no use of greens, yellows, and reds. Comments are
-gray, strings are blue colored, doc strings are a shade of cyan, while
-color combinations are designed to avoid exaggerations.
-
-The property ~faint~ fades the saturation of all applicable colors, where
-that is possible or appropriate.
-
-The property ~yellow-comments~ applies a yellow color to comments.
-
-The property ~green-strings~ applies a green color to strings and a green
-tint to doc strings.
-
-The property ~alt-syntax~ changes the combination of colors beyond strings
-and comments, so that the effective palette is broadened to provide
-greater variety relative to the default.
-
-Combinations of any of those properties are expressed as a list, like in
-these examples:
-
-#+begin_src emacs-lisp
-(faint)
-(green-strings yellow-comments)
-(alt-syntax green-strings yellow-comments)
-(faint alt-syntax green-strings yellow-comments)
-#+end_src
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
-#+begin_src emacs-lisp
-(setq modus-themes-syntax '(faint alt-syntax))
-#+end_src
-
-Independent of this variable, users may also control the use of a bold
-weight or italic text: ~modus-themes-bold-constructs~ and
-~modus-themes-italic-constructs~.
-
-[[#h:b25714f6-0fbe-41f6-89b5-6912d304091e][Option for more bold constructs]].
-
-[[#h:977c900d-0d6d-4dbb-82d9-c2aae69543d6][Option for more italic constructs]].
-
** Option for font mixing
:properties:
:alt_title: Mixed fonts
@@ -805,111 +691,31 @@ tables and code blocks to always inherit from the ~fixed-pitch~ face.
This is to ensure that certain constructs like code blocks and tables
remain monospaced even when users opt for a mode that remaps typeface
families, such as the built-in {{{kbd(M-x variable-pitch-mode)}}}. Otherwise
-the layout would appear broken, due to how spacing is done.
+the layout can appear broken, due to how spacing is done.
For a consistent experience, user may need to specify the font family of
the ~fixed-pitch~ face.
[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
-Furthermore, users may prefer to use another package for handling mixed
-typeface configurations, rather than letting the theme do it, perhaps
-because a purpose-specific package has extra functionality. Two
-possible options are ~org-variable-pitch~ and ~mixed-pitch~.
-
-** Option for links
+** Option for command prompt styles
:properties:
-:alt_title: Link styles
-:description: Choose among several styles, with or without underline
-:custom_id: h:5808be52-361a-4d18-88fd-90129d206f9b
+:alt_title: Command prompts
+:description: Control the style of command prompts
+:custom_id: h:db5a9a7c-2928-4a28-b0f0-6f2b9bd52ba1
:end:
-#+vindex: modus-themes-links
+#+vindex: modus-themes-prompts
-Brief: Control the style of links to web pages, files, buffers...
+Brief: Control the style of command prompts (e.g. minibuffer, shell, IRC
+clients).
-Symbol: ~modus-themes-links~ (=choice= type, list of properties)
+Symbol: ~modus-themes-prompts~ (=choice= type, list of properties)
Possible values are expressed as a list of properties (default is ~nil~ or
an empty list). The list can include any of the following symbols:
-+ Underline style:
- - ~neutral-underline~
- - ~no-underline~
-+ Text coloration:
- - ~faint~
- - ~no-color~
-+ ~bold~
+ ~italic~
-+ ~background~
-
-The default (a ~nil~ value or an empty list) is a prominent text color,
-typically blue, with an underline of the same color.
-
-For the style of the underline, a ~neutral-underline~ property turns the
-color of the line into a subtle gray, while the ~no-underline~ property
-removes the line altogether. If both of those are set, the latter takes
-precedence.
-
-For text coloration, a ~faint~ property desaturates the color of the text
-and the underline, unless the underline is affected by the
-aforementioned properties. While a ~no-color~ property removes the color
-from the text. If both of those are set, the latter takes precedence.
-
-A ~bold~ property applies a heavy typographic weight to the text of the
-link.
-
-An ~italic~ property adds a slant to the link's text (italic or oblique
-forms, depending on the typeface).
-
-A ~background~ property applies a subtle tinted background color.
-
-In case both ~no-underline~ and ~no-color~ are set, then a subtle gray
-background is applied to all links. This can still be combined with the
-~bold~ and ~italic~ properties.
-
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
-#+begin_src emacs-lisp
-(faint)
-(no-underline faint)
-(no-color no-underline bold)
-(italic bold background no-color no-underline)
-#+end_src
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
-#+begin_src emacs-lisp
-(setq modus-themes-links '(neutral-underline background))
-#+end_src
-
-The placement of the underline, meaning its proximity to the text, is
-controlled by ~x-use-underline-position-properties~,
-~x-underline-at-descent-line~, ~underline-minimum-offset~. Please refer to
-their documentation strings.
-
-** Option for box buttons
-:properties:
-:alt_title: Box buttons
-:description: Choose among several styles for buttons
-:custom_id: h:8b85f711-ff40-45b0-b7fc-4727503cd2ec
-:end:
-#+vindex: modus-themes-box-buttons
-
-Brief: Control the style of buttons in the Custom UI and related.
-
-Symbol: ~modus-themes-box-buttons~ (=choice= type, list of properties)
-
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
-
-+ ~flat~
-+ ~accented~
-+ ~faint~
-+ ~variable-pitch~
-+ ~underline~
++ ~italic~
+ A font weight, which must be supported by the underlying typeface:
- ~thin~
- ~ultralight~
@@ -923,213 +729,24 @@ an empty list). The list can include any of the following symbols:
- ~heavy~
- ~extrabold~
- ~ultrabold~
-+ A floating point as a height multiple of the default or a cons cell in
- the form of =(height . FLOAT)=
-+ ~all-buttons~
-
-The default (a ~nil~ value or an empty list) is a gray background
-combined with a pseudo three-dimensional effect.
-
-The ~flat~ property makes the button two dimensional.
-
-The ~accented~ property changes the background from gray to an accent
-color.
-
-The ~faint~ property reduces the overall coloration.
-
-The ~variable-pitch~ property applies a proportionately spaced typeface
-to the button~s text.
-
-[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
-
-The ~underline~ property draws a line below the affected text and
-removes whatever box effect. This is optimal when Emacs runs inside a
-terminal emulator ([[#h:fbb5e254-afd6-4313-bb05-93b3b4f67358][More accurate colors in terminal emulators]]). If
-~flat~ and ~underline~ are defined together, the latter takes
-precedence.
-
-The symbol of a weight attribute adjusts the font of the button
-accordingly, such as ~light~, ~semibold~, etc. Valid symbols are
-defined in the variable ~modus-themes-weights~.
-
-[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
-
-A number, expressed as a floating point (e.g. =0.9=), adjusts the height
-of the button's text to that many times the base font size. The default
-height is the same as =1.0=, though it need not be explicitly stated.
-Instead of a floating point, an acceptable value can be in the form of a
-cons cell like =(height . FLOAT)= or =(height FLOAT)=, where FLOAT is
-the given number.
-
-The ~all-buttons~ property extends the box button effect (or the
-aforementioned properties) to the faces of the generic widget library.
-By default, those do not look like the buttons of the Custom UI as they
-are ordinary text wrapped in square brackets.
-
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
-#+begin_src emacs-lisp
-(flat)
-(variable-pitch flat)
-(variable-pitch flat semibold 0.9)
-(variable-pitch flat semibold (height 0.9)) ; same as above
-(variable-pitch flat semibold (height . 0.9)) ; same as above
-#+end_src
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
-#+begin_src emacs-lisp
-(setq modus-themes-box-buttons '(variable-pitch flat 0.9))
-#+end_src
-
-** Option for command prompt styles
-:properties:
-:alt_title: Command prompts
-:description: Choose among plain, subtle, or intense prompts
-:custom_id: h:db5a9a7c-2928-4a28-b0f0-6f2b9bd52ba1
-:end:
-#+vindex: modus-themes-prompts
-
-Brief: Control the style of command prompts (e.g. minibuffer, shell, IRC
-clients).
-
-Symbol: ~modus-themes-prompts~ (=choice= type, list of properties)
-
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
-
-+ ~background~
-+ ~bold~
-+ ~gray~
-+ ~intense~
-+ ~italic~
The default (a ~nil~ value or an empty list) means to only use a subtle
-accented foreground color.
+colored foreground color.
-The property ~background~ applies a background color to the prompt's text.
-By default, this is a subtle accented value.
+The ~italic~ property adds a slant to the font's forms (italic or
+oblique forms, depending on the typeface).
-The property ~intense~ makes the foreground color more prominent. If the
-~background~ property is also set, it amplifies the value of the
-background as well.
-
-The property ~gray~ changes the prompt's colors to grayscale. This
-affects the foreground and, if the ~background~ property is also set, the
-background. Its effect is subtle, unless it is combined with the
-~intense~ property.
-
-The property ~bold~ makes the text use a bold typographic weight.
-Similarly, ~italic~ adds a slant to the font's forms (italic or oblique
-forms, depending on the typeface).
+The symbol of a font weight attribute such as ~light~, ~semibold~, et
+cetera, adds the given weight to links. Valid symbols are defined in
+the variable ~modus-themes-weights~. The absence of a weight means
+that the one of the underlying text will be used.
Combinations of any of those properties are expressed as a list, like in
these examples:
#+begin_src emacs-lisp
-(intense)
-(bold intense)
-(intense bold gray)
-(intense background gray bold)
-#+end_src
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
-#+begin_src emacs-lisp
-(setq modus-themes-prompts '(background gray))
-#+end_src
-
-** Option for mode line presentation
-:properties:
-:alt_title: Mode line
-:description: Choose among several styles, with or without borders
-:custom_id: h:27943af6-d950-42d0-bc23-106e43f50a24
-:end:
-#+vindex: modus-themes-mode-line
-
-Brief: Control the style of the mode lines.
-
-Symbol: ~modus-themes-mode-line~ (=choice= type, list of properties)
-
-Possible values, which can be expressed as a list of combinations of box
-effect, color, and border visibility:
-
-+ Overall style:
- - ~3d~
- - ~moody~
-+ ~accented~
-+ ~borderless~
-+ A natural number > 1 for extra padding or a cons cell in the form of
- ~(padding . NATNUM)~.
-+ A floating point to set the height of the mode line's text. It can
- also be a cons cell in the form of ~(height . FLOAT)~.
-
-The default (a ~nil~ value or an empty list) is a two-dimensional
-rectangle with a border around it. The active and the inactive mode
-lines use different shades of grayscale values for the background,
-foreground, border.
-
-The ~3d~ property applies a three-dimensional effect to the active mode
-line. The inactive mode lines remain two-dimensional and are toned down
-a bit, relative to the default style.
-
-The ~moody~ property optimizes the mode line for use with the library of
-the same name (hereinafter referred to as 'Moody'). In practice, it
-removes the box effect and replaces it with underline and overline
-properties. It also tones down the inactive mode lines. Despite its
-intended purpose, this option can also be used without the Moody library
-(please consult the themes' manual on this point for more details). If
-both ~3d~ and ~moody~ properties are set, the latter takes precedence.
-
-The ~borderless~ property removes the color of the borders. It does not
-actually remove the borders, but only makes their color the same as the
-background, effectively creating some padding.
-
-The ~accented~ property ensures that the active mode line uses a colored
-background instead of the standard shade of gray.
-
-A positive integer (natural number or natnum) applies a padding effect
-of NATNUM pixels at the boundaries of the mode lines. The default value
-is 1 and does not need to be specified explicitly. The padding has no
-effect when the ~moody~ property is also used, because Moody already
-applies its own tweaks. To ensure that the underline is placed at the
-bottom of the mode line, set ~x-underline-at-descent-line~ to non-~nil~
-(this is not needed when the ~borderless~ property is also set). For
-users on Emacs 29, the ~x-use-underline-position-properties~ variable must
-also be set to nil.
-
-The padding can also be expressed as a cons cell in the form of
-=(padding . NATNUM)= or =(padding NATNUM)= where the key is constant and
-NATNUM is the desired natural number.
-
-A floating point applies an adjusted height to the mode line's text as a
-multiple of the main font size. The default rate is 1.0 and does not
-need to be specified. Apart from a floating point, the height may also
-be expressed as a cons cell in the form of =(height . FLOAT)= or
-=(height FLOAT)= where the key is constant and the FLOAT is the desired
-number.
-
-Combinations of any of those properties are expressed as a list, like in
-these examples:
-
-#+begin_src emacs-lisp
-(accented)
-(borderless 3d)
-(moody accented borderless)
-#+end_src
-
-Same as above, using the padding and height as an example (these
-all yield the same result):
-
-#+begin_src emacs-lisp
-(accented borderless 4 0.9)
-(accented borderless (padding . 4) (height . 0.9))
-(accented borderless (padding 4) (height 0.9))
+(bold italic)
+(italic semibold)
#+end_src
The order in which the properties are set is not significant.
@@ -1137,57 +754,10 @@ The order in which the properties are set is not significant.
In user configuration files the form may look like this:
#+begin_src emacs-lisp
-(setq modus-themes-mode-line '(borderless accented))
+(setq modus-themes-prompts '(extrabold italic))
#+end_src
-Note that Moody does not expose any faces that the themes could style
-directly. Instead it re-purposes existing ones to render its tabs and
-ribbons. As such, there may be cases where the contrast ratio falls
-below the 7:1 target that the themes conform with (WCAG AAA). To hedge
-against this, we configure a fallback foreground for the ~moody~ property,
-which will come into effect when the background of the mode line changes
-to something less accessible, such as Moody ribbons (read the doc string
-of ~set-face-attribute~, specifically ~:distant-foreground~). This fallback
-is activated when Emacs determines that the background and foreground of
-the given construct are too close to each other in terms of color
-distance. In practice, users will need to experiment with the variable
-~face-near-same-color-threshold~ to trigger the effect. We find that a
-value of =45000= shall suffice, contrary to the default =30000=. Though for
-the combinations that involve the ~accented~ and ~moody~ properties, as
-mentioned above, that should be raised up to =70000=. Do not set it too
-high, because it has the adverse effect of always overriding the default
-colors (which have been carefully designed to be highly accessible).
-
-Furthermore, because Moody expects an underline and overline instead of
-a box style, it is strongly advised to set ~x-underline-at-descent-line~
-to a non-~nil~ value.
-
-Finally, note that various packages which heavily modify the mode line,
-such as =doom-modeline=, =nano-modeline=, =powerline=, =spaceline= may not look
-as intended with all possible combinations of this user option.
-
-** Option for accented background in tab interfaces
-:properties:
-:alt_title: Tab style
-:description: Toggle accented background for tabs
-:custom_id: h:27cef8f5-dc4e-4c93-ba41-b899e650d936
-:end:
-#+vindex: modus-themes-tabs-accented
-
-Brief: Toggle accent colors for tabbed interfaces.
-
-Symbol: ~modus-themes-tabs-accented~ (=boolean= type)
-
-Possible values:
-
-+ ~nil~ (default)
-+ ~t~
-
-By default, all tab interfaces use backgrounds which are shades of gray.
-When this option is set to non-~nil~, the backgrounds become colorful.
-
-This affects the built-in ~tab-bar-mode~ and ~tab-line-mode~, as well as the
-Centaur tabs package.
+[[#h:bd75b43a-0bf1-45e7-b8b4-20944ca8b7f8][Make prompts more or less colorful]].
** Option for completion framework aesthetics
:properties:
@@ -1201,204 +771,194 @@ Brief: Set the overall style of completion framework interfaces.
Symbol: ~modus-themes-completions~ (=alist= type properties)
-This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy,
-Orderless, Selectrum, Vertico. The value is an alist that takes the
-form of a =(KEY . PROPERTIES)= combination. =KEY= is a symbol, while
-=PROPERTIES= is a list. Here is a sample, followed by a description
-of the particularities:
+This affects Company, Corfu, Flx, Icomplete/Fido, Ido, Ivy, Orderless,
+Vertico, and the standard =*Completions*= buffer. The value is an
+alist of expressions, each of which takes the form of =(KEY . LIST-OF-PROPERTIES)=.
+=KEY= is a symbol, while =PROPERTIES= is a list. Here is a sample,
+followed by a description of the particularities:
#+begin_src emacs-lisp
(setq modus-themes-completions
- '((matches . (extrabold background intense))
- (selection . (semibold accented intense))
- (popup . (accented))))
+ '((matches . (extrabold underline))
+ (selection . (semibold italic))))
#+end_src
The ~matches~ key refers to the highlighted characters that correspond
-to the user's input. When its properties are ~nil~ or an empty list,
+to the user's input. When its properties are nil or an empty list,
matching characters in the user interface will have a bold weight and
a colored foreground. The list of properties may include any of the
following symbols regardless of the order they may appear in:
-- ~background~ to add a background color;
-
-- ~intense~ to increase the overall coloration (also amplifies
- the ~background~, if present);
-
- ~underline~ to draw a line below the characters;
- ~italic~ to use a slanted font (italic or oblique forms);
-- The symbol of a font weight attribute such as ~light~, ~semibold~, et
- cetera. Valid symbols are defined in the ~modus-themes-weights~
- variable. The absence of a weight means that bold will be used.
+- The symbol of a font weight attribute such as ~light~,
+ ~semibold~, et cetera. Valid symbols are defined in the
+ variable ~modus-themes-weights~. The absence of a weight means
+ that bold will be used.
The ~selection~ key applies to the current line or currently matched
candidate, depending on the specifics of the user interface. When its
-properties are ~nil~ or an empty list, it has a subtle gray background,
+properties are nil or an empty list, it has a subtle gray background,
a bold weight, and the base foreground value for the text. The list
of properties it accepts is as follows (order is not significant):
-- ~accented~ to make the background colorful instead of gray;
-
-- ~text-also~ to apply extra color to the text of the selected line;
-
-- ~intense~ to increase the overall coloration;
-
- ~underline~ to draw a line below the characters;
- ~italic~ to use a slanted font (italic or oblique forms);
-- The symbol of a font weight attribute such as ~light~, ~semibold~, et
- cetera. Valid symbols are defined in the ~modus-themes-weights~
- variable. The absence of a weight means that bold will be used.
-
-The ~popup~ key takes the same values as ~selection~. The only
-difference is that it applies specifically to user interfaces that
-display an inline popup and thus have slightly different styling
-requirements than the minibuffer. The two prominent packages are
-=company= and =corfu=.
+- The symbol of a font weight attribute such as ~light~,
+ ~semibold~, et cetera. Valid symbols are defined in the
+ variable ~modus-themes-weights~. The absence of a weight means
+ that bold will be used.
-Apart from specifying each key separately, a fallback list is accepted.
-This is only useful when the desired aesthetic is the same across all
-keys that are not explicitly referenced. For example, this:
+Apart from specifying each key separately, a catch-all list is
+accepted. This is only useful when the desired aesthetic is the same
+across all keys that are not explicitly referenced. For example,
+this:
#+begin_src emacs-lisp
(setq modus-themes-completions
- '((t . (extrabold intense))))
+ '((t . (extrabold underline))))
#+end_src
Is the same as:
#+begin_src emacs-lisp
(setq modus-themes-completions
- '((matches . (extrabold intense))
- (selection . (extrabold intense))
- (popup . (extrabold intense))))
+ '((matches . (extrabold underline))
+ (selection . (extrabold underline))))
#+end_src
-In the case of the fallback, any property that does not apply to the
-corresponding key is simply ignored (~matches~ does not have ~accented~
-and ~text-also~, while ~selection~ and ~popup~ do not have
-~background~).
-
-[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
-
-Also refer to the documentation of the ~orderless~ package for its
-intersection with ~company~ (if you choose to use those in tandem).
+[[#h:d959f789-0517-4636-8780-18123f936f91][Make completion matches more or less colorful]].
-** Option for mail citations
+** Option for org-mode block styles
:properties:
-:alt_title: Mail citations
-:description: Choose among colorful, desaturated, monochrome citations
-:custom_id: h:5a12765d-0ba0-4a75-ab11-e35d3bbb317d
+:alt_title: Org mode blocks
+:description: Choose among plain, gray, or tinted backgrounds
+:custom_id: h:b7e328c0-3034-4db7-9cdf-d5ba12081ca2
:end:
-#+vindex: modus-themes-mail-citations
+#+vindex: modus-themes-org-blocks
-Brief: Set the overall style of citations/quotes when composing
-emails.
+Brief: Set the overall style of Org code blocks, quotes, and the like.
-Symbol: ~modus-themes-mail-citations~ (=choice= type)
+Symbol: ~modus-themes-org-blocks~ (=choice= type)
Possible values:
1. ~nil~ (default)
-2. ~intense~
-3. ~faint~
-4. ~monochrome~
+2. ~gray-background~
+3. ~tinted-background~
-By default (a ~nil~ value) citations are styled with contrasting hues to
-denote their depth. Colors are easy to tell apart because they
-complement each other, but they otherwise are not very prominent.
-
-Option ~intense~ is similar to the default in terms of using contrasting
-and complementary hues, but applies more saturated colors.
-
-Option ~faint~ maintains the same color-based distinction between citation
-levels though the colors it uses have subtle differences between them.
+Nil (the default) means that the block has no background of its own:
+it uses the one that applies to the rest of the buffer. In this case,
+the delimiter lines have a gray color for their text, making them look
+exactly like all other Org properties.
-Option ~monochrome~ turns all quotes into a shade of gray.
+Option ~gray-background~ applies a subtle gray background to the
+block's contents. It also affects the begin and end lines of the
+block as they get another shade of gray as their background, which
+differentiates them from the contents of the block. All background
+colors extend to the edge of the window, giving the area a
+rectangular, "blocky" presentation. If the begin/end lines do not
+extend in this way, check the value of the Org user option
+~org-fontify-whole-block-delimiter-line~.
+
+Option ~tinted-background~ uses a colored background for the contents
+of the block. The exact color value will depend on the programming
+language and is controlled by the variable ~org-src-block-faces~
+(refer to the theme's source code for the current association list).
+For this to take effect, the Org buffer needs to be restarted with
+~org-mode-restart~.
+
+Code blocks use their major mode's fontification (syntax highlighting)
+only when the variable ~org-src-fontify-natively~ is non-nil. While
+quote/verse blocks require setting
+~org-fontify-quote-and-verse-blocks~ to a non-nil value.
-Whatever the value assigned to this variable, citations in emails are
-controlled by typographic elements or indentation, which the themes do
-not touch.
+[[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][Update Org block delimiter fontification]].
-** Option for fringe visibility
+** Option for the headings' overall style
:properties:
-:alt_title: Fringes
-:description: Choose among invisible, subtle, or intense fringe styles
-:custom_id: h:1983c3fc-74f6-44f3-b917-967c403bebae
+:alt_title: Heading styles
+:description: Choose among several styles, also per heading level
+:custom_id: h:271eff19-97aa-4090-9415-a6463c2f9ae1
:end:
-#+vindex: modus-themes-fringes
-
-Brief: Control the overall coloration of the fringes.
-
-Symbol: ~modus-themes-fringes~ (=choice= type)
-
-Possible values:
-
-1. ~nil~
-2. ~subtle~
-3. ~intense~
+#+vindex: modus-themes-headings
-When the value is nil, do not apply a distinct background color.
+Brief: Heading styles with optional list of values per heading level.
-With a value of ~subtle~ use a gray background color that is
-visible yet close to the main background color.
+Symbol: ~modus-themes-headings~ (=alist= type, multiple properties)
-With ~intense~ use a more pronounced gray background color.
+This is an alist that accepts a =(KEY . LIST-OF-VALUES)= combination.
+The =KEY= is either a number, representing the heading's level (0
+through 8) or ~t~, which pertains to the fallback style. The named
+keys =agenda-date= and =agenda-structure= apply to the Org agenda.
-** Option for language checkers
-:properties:
-:alt_title: Language checkers
-:description: Control the style of language checkers/linters
-:custom_id: h:4b13743a-8ebf-4d2c-a043-cceba10b1eb4
-:end:
-#+vindex: modus-themes-lang-checkers
-
-Brief: Control the style of in-buffer warnings and errors produced by
-spell checkers, code linters, and the like.
+Level 0 is a special heading: it is used for what counts as a document
+title or equivalent, such as the =#+title= construct we find in Org
+files. Levels 1-8 are regular headings.
-Symbol: ~modus-themes-lang-checkers~ (=choice= type, list of properties)
+The =LIST-OF-VALUES= covers symbols that refer to properties, as
+described below. Here is a complete sample with various stylistic
+combinations, followed by a presentation of all available properties:
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
+#+begin_src emacs-lisp
+(setq modus-themes-headings
+ '((1 . (variable-pitch 1.5))
+ (2 . (1.3))
+ (agenda-date . (1.3))
+ (agenda-structure . (variable-pitch light 1.8))
+ (t . (1.1))))
+#+end_src
-+ ~straight-underline~
-+ ~text-also~
-+ ~background~
-+ Overall coloration:
- - ~intense~
- - ~faint~
+Properties:
-The default (a ~nil~ value or an empty list) applies a color-coded
-underline to the affected text, while it leaves the original foreground
-intact. If the display spec of Emacs has support for it, the
-underline's style is that of a wave, otherwise it is a straight line.
++ A font weight, which must be supported by the underlying typeface:
+ - ~thin~
+ - ~ultralight~
+ - ~extralight~
+ - ~light~
+ - ~semilight~
+ - ~regular~
+ - ~medium~
+ - ~semibold~
+ - ~bold~ (default)
+ - ~heavy~
+ - ~extrabold~
+ - ~ultrabold~
++ A floating point as a height multiple of the default or a cons cell in
+ the form of =(height . FLOAT)=.
-The property ~straight-underline~ ensures that the underline under the
-affected text is always drawn as a straight line.
+By default (a ~nil~ value for this variable), all headings have a bold
+typographic weight and use a desaturated text color.
-The property ~text-also~ applies the same color of the underline to the
-affected text.
+A ~variable-pitch~ property changes the font family of the heading to that
+of the ~variable-pitch~ face (normally a proportionately spaced typeface).
-The property ~background~ adds a color-coded background.
+The symbol of a weight attribute adjusts the font of the heading
+accordingly, such as ~light~, ~semibold~, etc. Valid symbols are
+defined in the variable ~modus-themes-weights~. The absence of a weight
+means that bold will be used by virtue of inheriting the ~bold~ face.
-The property ~intense~ amplifies the applicable colors if ~background~
-and/or ~text-also~ are set. If ~intense~ is set on its own, then it implies
-~text-also~.
+[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
-The property ~faint~ uses nuanced colors for the underline and for the
-foreground when ~text-also~ is included. If both ~faint~ and ~intense~ are
-specified, the former takes precedence.
+A number, expressed as a floating point (e.g. 1.5), adjusts the height
+of the heading to that many times the base font size. The default
+height is the same as 1.0, though it need not be explicitly stated.
+Instead of a floating point, an acceptable value can be in the form of a
+cons cell like =(height . FLOAT)= or =(height FLOAT)=, where FLOAT is
+the given number.
-Combinations of any of those properties can be expressed in a list, as
-in those examples:
+Combinations of any of those properties are expressed as a list, like in
+these examples:
#+begin_src emacs-lisp
-(background)
-(straight-underline intense)
-(background text-also straight-underline)
+(semibold)
+(variable-pitch semibold 1.3)
+(variable-pitch semibold (height 1.3)) ; same as above
+(variable-pitch semibold (height . 1.3)) ; same as above
#+end_src
The order in which the properties are set is not significant.
@@ -1406,752 +966,1406 @@ The order in which the properties are set is not significant.
In user configuration files the form may look like this:
#+begin_src emacs-lisp
-(setq modus-themes-lang-checkers '(text-also background))
+(setq modus-themes-headings
+ '((1 . (variable-pitch 1.5))
+ (2 . (1.3))
+ (agenda-date . (1.3))
+ (agenda-structure . (variable-pitch light 1.8))
+ (t . (1.1))))
#+end_src
-NOTE: The placement of the straight underline, though not the wave
-style, is controlled by the built-in variables ~underline-minimum-offset~,
-~x-underline-at-descent-line~, ~x-use-underline-position-properties~.
-
-To disable fringe indicators for Flymake or Flycheck, refer to variables
-~flymake-fringe-indicator-position~ and ~flycheck-indication-mode~,
-respectively.
-
-** Option for line highlighting
-:properties:
-:alt_title: Line highlighting
-:description: Choose style of current line (hl-line-mode)
-:custom_id: h:1dba1cfe-d079-4c13-a810-f768e8789177
-:end:
-#+vindex: modus-themes-hl-line
-
-Brief: Control the style of the current line of ~hl-line-mode~.
-
-Symbol: ~modus-themes-hl-line~ (=choice= type, list of properties)
-
-The value is a list of properties, each designated by a symbol. With
-a ~nil~ value, or an empty list, the style is a subtle gray background
-color.
-
-Possible properties are the following symbols:
-
-+ ~accented~
-+ ~intense~
-+ ~underline~
-
-The property ~accented~ changes the background to a colored variant.
-
-An ~underline~ property draws a line below the highlighted area. Its
-color is similar to the background, so gray by default or an accent
-color when ~accented~ is also set.
-
-An ~intense~ property amplifies the colors in use, which may be both the
-background and the underline.
-
-Combinations of any of those properties are expressed as a list, like in
-these examples:
+When defining the styles per heading level, it is possible to pass a
+non-~nil~ value (~t~) instead of a list of properties. This will retain the
+original aesthetic for that level. For example:
#+begin_src emacs-lisp
-(intense)
-(underline intense)
-(accented intense underline)
-#+end_src
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
+(setq modus-themes-headings
+ '((1 . t) ; keep the default style
+ (2 . (semibold 1.2))
+ (t . (rainbow)))) ; style for all other headings
-#+begin_src emacs-lisp
-(setq modus-themes-hl-line '(underline accented))
+(setq modus-themes-headings
+ '((1 . (variable-pitch 1.5))
+ (2 . (semibold))
+ (t . t))) ; default style for all other levels
#+end_src
-Set ~x-underline-at-descent-line~ to a non-~nil~ value so that the
-placement of the underline coincides with the lower boundary of the
-colored background.
+Note that the text color of headings, of their background, and
+overline can all be set via the overrides. It is possible to have any
+color combination for any heading level (something that could not be
+done in older versions of the themes).
-This style affects several packages that enable ~hl-line-mode~, such as
-=elfeed=, =notmuch=, and =mu4e=.
+[[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]].
-[ Also check the =lin= package on GNU ELPA (by the author of the
- modus-themes) for a stylistic enhancement to ~hl-line-mode~. ]
+[[#h:11297984-85ea-4678-abe9-a73aeab4676a][Make headings more or less colorful]].
-** Option for line numbers
+** Option for variable-pitch font in UI elements
:properties:
-:alt_title: Line numbers
-:description: Toggle subtle style for line numbers
-:custom_id: h:8c4a6230-2e43-4aa2-a631-3b7179392e09
+:alt_title: UI typeface
+:description: Toggle the use of variable-pitch across the User Interface
+:custom_id: h:16cf666c-5e65-424c-a855-7ea8a4a1fcac
:end:
-#+vindex: modus-themes-subtle-line-numbers
+#+vindex: modus-themes-variable-pitch-ui
-Brief: Toggle subtle line numbers.
+Brief: Toggle the use of proportionately spaced (~variable-pitch~) fonts
+in the User Interface.
-Symbol: ~modus-themes-subtle-line-numbers~ (=boolean= type)
+Symbol: ~modus-themes-variable-pitch-ui~ (=boolean= type)
-Possible value:
+Possible values:
1. ~nil~ (default)
2. ~t~
-The default style for ~display-line-numbers-mode~ and its global variant
-is to apply a subtle gray background to the line numbers. The current
-line has a more pronounced background and foreground combination to
-bring more attention to itself.
+This option concerns User Interface elements that are under the direct
+control of Emacs. In particular: the mode line, header line, tab bar,
+and tab line.
+
+The default is to use the same font as the rest of Emacs, which usually
+is a monospaced family.
-Similarly, the faces for ~display-line-numbers-major-tick~ and its
-counterpart ~display-line-numbers-minor-tick~ use appropriate styles that
-involve a bespoke background and foreground combination.
+With a non-~nil~ value (~t~) apply a proportionately spaced typeface. This
+is done by assigning the ~variable-pitch~ face to the relevant items.
-With a non-~nil~ value (~t~), line numbers have no background of their own.
-Instead they retain the primary background of the theme, blending with
-the rest of the buffer. Foreground values for all relevant faces are
-updated to accommodate this aesthetic.
+[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
-** Option for mouseover effects
+** Option for palette overrides
:properties:
-:alt_title: Mouse hover effects
-:description: Toggle intense style for mouseover highlights
-:custom_id: h:9b869620-fcc5-4b5f-9ab8-225d73b7f22f
+:alt_title: Palette overrides
+:description: Refashion color values and/or semantic color mappings
+:custom_id: h:34c7a691-19bb-4037-8d2f-67a07edab150
:end:
-#+vindex: modus-themes-intense-mouseovers
-Brief: Toggle intense mouse hover effects.
+This section describes palette overrides in detail. For a simpler
+alternative, use the presets we provide ([[#h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc][Palette override presets]]).
-Symbol: ~modus-themes-intense-mouseovers~ (=boolean= type)
+Each Modus theme specifies a color palette that declares named color
+values and semantic color mappings:
-Possible value:
++ Named colors consist of a symbol and a string that specifies a
+ hexadecimal RGB value. For example: =(blue-warmer "#354fcf")=.
-1. ~nil~ (default)
-2. ~t~
++ The semantic color mappings associate an abstract construct with a
+ given named color from the palette, like =(heading-2 yellow-faint)=.
+ Both elements of the list are symbols, though the ~cadr~ (value) can
+ be a string that specifies a color, such as =(heading-2 "#354fcf")=.
-By default all mouseover effects apply a highlight with a subtle colored
-background. When non-~nil~, these have a more pronounced effect.
+#+vindex: modus-themes-common-palette-overrides
+Both of those subsets can be overridden, thus refashioning the theme.
+Overrides are either shared, by being stored in the user option
+~modus-themes-common-palette-overrides~, or they are specific to the
+theme they name. In the latter case, the naming scheme of each
+palette variable is =THEME-NAME-palette-overrides=, thus yielding:
-Note that this affects the generic ~highlight~ which, strictly speaking,
-is not limited to mouse usage.
+#+vindex: modus-operandi-palette-overrides
++ ~modus-operandi-palette-overrides~
-** Option for markup style in Org and others
-:properties:
-:alt_title: Markup
-:description: Choose style for markup in Org and others
-:custom_id: h:9d9a4e64-99ac-4018-8f66-3051b9c43fd7
-:end:
-#+vindex: modus-themes-markup
+#+vindex: modus-operandi-deuteranopia-palette-overrides
++ ~modus-operandi-deuteranopia-palette-overrides~
-Brief: Choose style of markup in Org, Markdown, and others (affects
-constructs such as Org's ==verbatim== and =~code~=).
+#+vindex: modus-operandi-tinted-palette-overrides
++ ~modus-operandi-tinted-palette-overrides~
-Symbol: ~modus-themes-markup~ (=boolean= type)
+#+vindex: modus-vivendi-palette-overrides
++ ~modus-vivendi-palette-overrides~
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
+#+vindex: modus-vivendi-deuteranopia-palette-overrides
++ ~modus-vivendi-deuteranopia-palette-overrides~
-1. ~bold~
-2. ~italic~
-3. ~background~
-4. ~intense~
+#+vindex: modus-vivendi-tinted-palette-overrides
++ ~modus-vivendi-tinted-palette-overrides~
-The ~italic~ property applies a typographic slant (italics).
+Theme-specific overrides take precedence over the shared ones. It is
+strongly advised that shared overrides do NOT alter color values, as
+those will not be appropriate for both dark and light themes. Common
+overrides are best limited to the semantic color mappings as those use
+the color value that corresponds to the active theme (e.g. make the
+cursor =blue-warmer= in all themes, whatever the value of
+=blue-warmer= is in each theme).
-The ~bold~ property applies a heavier typographic weight.
+The value of any overrides' variable must mirror a theme's palette.
+Palette variables are named after their theme as =THEME-NAME-palette=.
+For example, the ~modus-operandi-palette~ is like this:
-[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
+#+begin_src emacs-lisp
+(defconst modus-operandi-palette
+ '(
+;;; Basic values
-The ~background~ property adds a background color. The background is a
-shade of gray, unless the ~intense~ property is also set.
+ (bg-main "#ffffff")
+ (bg-dim "#f0f0f0")
+ (fg-main "#000000")
-The ~intense~ property amplifies the existing coloration. When
-~background~ is used, the background color is enhanced as well and
-becomes tinted instead of being gray.
+ ;; ...
-Combinations of any of those properties are expressed as a list,
-like in these examples:
+ (red "#a60000")
+ (red-warmer "#972500")
+ (red-cooler "#a0132f")
+ (red-faint "#7f0000")
+ (red-intense "#d00000")
-#+begin_src emacs-lisp
-(bold)
-(bold italic)
-(bold italic intense)
-(bold italic intense background)
-#+end_src
+ ;; ...
-The order in which the properties are set is not significant.
+;;;; Mappings
-In user configuration files the form may look like this:
+ ;; ...
-#+begin_src emacs-lisp
-(setq modus-themes-markup '(bold italic))
-#+end_src
+ (cursor fg-main)
+ (builtin magenta-warmer)
+ (comment fg-dim)
+ (constant blue-cooler)
+ (docstring green-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
-Also check the variables ~org-hide-emphasis-markers~,
-~org-hide-macro-markers~.
+ ;; ...
+ ))
+#+end_src
-** Option for parenthesis matching
-:properties:
-:alt_title: Matching parentheses
-:description: Choose between various styles for matching delimiters/parentheses
-:custom_id: h:e66a7e4d-a512-4bc7-9f86-fbbb5923bf37
-:end:
-#+vindex: modus-themes-paren-match
+The ~modus-operandi-palette-overrides~ targets the entries that need
+to be changed. For example, to make the main foreground colour a dark
+gray instead of pure black, use a shade of red for comments, and apply
+a cyan hue to keywords:
-Brief: Control the style of matching delimiters produced by
-~show-paren-mode~.
+#+begin_src emacs-lisp
+(setq modus-operandi-palette-overrides
+ '((fg-main "#333333")
+ (comment red-faint)
+ (keyword cyan-cooler)))
+#+end_src
-Symbol: ~modus-themes-paren-match~ (=choice= type, list of properties)
+Changes take effect upon theme reload ([[#h:9001527a-4e2c-43e0-98e8-3ef72d770639][Custom reload theme]]).
+Overrides are removed by setting their variable to a ~nil~ value.
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
+The common accented foregrounds in each palette follow a predictable
+naming scheme: =HUE{,-warmer,-cooler,-faint,-intense}=. =HUE= is one
+of the six basic colors: red, green, blue, yellow, magenta, cyan.
-+ ~bold~
-+ ~intense~
-+ ~underline~
+Named colors that are meant to be used as backgrounds contain =bg= in
+their name, such as =bg-red-intense=. While special purpose
+foregrounds that are meant to be combined with such backgrounds,
+contain =fg= in their name, such as =fg-removed= which complements
+=bg-removed=.
-The default (a ~nil~ value or an empty list) is a subtle background color.
+Named colors can be previewed, such as with the command
+~modus-themes-list-colors~ ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
-The ~bold~ property adds a bold weight to the characters of the matching
-delimiters.
+For a video tutorial that users of all skill levels can approach,
+watch: https://protesilaos.com/codelog/2022-12-17-modus-themes-v4-demo/.
-The ~intense~ property applies a more prominent background color to the
-delimiters.
+*** Palette override presets
+:PROPERTIES:
+:CUSTOM_ID: h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc
+:END:
-The ~underline~ property draws a straight line under the affected text.
+This section shows how to refashion the themes by opting in to the
+stylistic presets we provide. Those presets override the default
+color mappings to amplify or tone down the overall coloration of the
+them.
-Combinations of any of those properties are expressed as a list, like in
-these examples:
+To make almost all aspects of the themes less intense, use this:
#+begin_src emacs-lisp
-(bold)
-(underline intense)
-(bold intense underline)
+;; Always remember to reload the theme for changes to take effect!
+(setq modus-themes-common-palette-overrides modus-themes-preset-overrides-faint)
#+end_src
-The order in which the properties are set is not significant.
+#+vindex: modus-themes-preset-overrides-faint
+With ~modus-themes-preset-overrides-faint~ the grays are toned down,
+gray backgrounds are removed from some contexts, and almost all accent
+colors are desaturated. It makes the themes less attention-grabbing.
-In user configuration files the form may look like this:
+On the opposite end of the stylistic spectrum, we have this
#+begin_src emacs-lisp
-(setq modus-themes-paren-match '(bold intense))
+;; Always remember to reload the theme for changes to take effect!
+(setq modus-themes-common-palette-overrides modus-themes-preset-overrides-intense)
#+end_src
-This customization variable affects the built-in ~show-paren-mode~ and the
-=smartparens= package.
+#+vindex: modus-themes-preset-overrides-intense
+The ~modus-themes-preset-overrides-intense~ makes many background
+colors accented instead of gray and increases coloration in a number
+of places. Colors stand out more and are made easier to spot.
-** Option for active region
-:properties:
-:alt_title: Active region
-:description: Choose between various styles for the active region
-:custom_id: h:60798063-b4ad-45ea-b9a7-ff7b5c0ab74c
-:end:
-#+vindex: modus-themes-region
+Note that the user is not limited to those presets. The system of
+overrides we provide makes it possible to tweak the value of each
+individual named color and to change how values are assigned to
+semantic color mappings ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). Subsequent
+sections provide examples ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
-Brief: Control the style of the region.
+It is also possible to use those presets as a basis and, for example,
+add to them code from the subsequent sections of this manual. This is
+the general idea (extra space for didactic purposes):
-Symbol: ~modus-themes-region~ (=choice= type, list of properties)
+#+begin_src emacs-lisp
+(setq modus-themes-common-palette-overrides
+ `(
+ ;; From the section "Make the mode line borderless"
+ (border-mode-line-active unspecified)
+ (border-mode-line-inactive unspecified)
-Possible values are expressed as a list of properties (default is ~nil~ or
-an empty list). The list can include any of the following symbols:
+ ;; From the section "Make matching parenthesis more or less intense"
+ (bg-paren-match bg-magenta-intense)
+ (underline-paren-match fg-main)
-+ ~no-extend~
-+ ~bg-only~
-+ ~accented~
+ ;; And expand the preset here. Note that the ,@ works because
+ ;; we use the backtick for this list, instead of a straight
+ ;; quote.
+ ,@modus-themes-preset-overrides-intense))
+#+end_src
-The default (a ~nil~ value or an empty list) is a prominent gray
-background that overrides all foreground colors in the area it
-encompasses. Its reach extends to the edge of the window.
+*** Stylistic variants using palette overrides
+:PROPERTIES:
+:CUSTOM_ID: h:df1199d8-eaba-47db-805d-6b568a577bf3
+:END:
-The ~no-extend~ property limits the region to the end of the line, so that
-it does not reach the edge of the window.
+This section contains practical examples of overriding the palette of
+the themes ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). Users can copy the code to
+their init file, evaluate it, and then re-load the theme for changes
+to take effect. To apply overrides at startup simply define them
+before the call that loads the theme. Remember that we also provide
+presets that are easier to apply ([[#h:b0bc811c-227e-42ec-bf67-15e1f41eb7bc][Palette override presets]]).
-The ~bg-only~ property makes the region's background color more subtle to
-allow the underlying text to retain its foreground colors.
+**** Make the mode line borderless
+:PROPERTIES:
+:CUSTOM_ID: h:80ddba52-e188-411f-8cc0-480ebd75befe
+:END:
-The ~accented~ property applies a more colorful background to the region.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). To
+hide the border around the active and inactive mode lines, we need to
+set their color to that of the underlying background.
-Combinations of any of those properties are expressed as a list, like in
-these examples:
+[[#h:e8d781be-eefc-4a81-ac4e-5ed156190df7][Make the active mode line colorful]].
-#+begin_src emacs-lisp
-(no-extend)
-(bg-only accented)
-(accented bg-only no-extend)
-#+end_src
+[[#h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c][Add padding to mode line]].
-The order in which the properties are set is not significant.
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-In user configuration files the form may look like this:
+;; Remove the border
+(setq modus-themes-common-palette-overrides
+ '((border-mode-line-active unspecified)
+ (border-mode-line-inactive unspecified)))
-#+begin_src emacs-lisp
-(setq modus-themes-region '(bg-only no-extend))
+;; Keep the border but make it the same color as the background of the
+;; mode line (thus appearing borderless). The difference with the
+;; above is that this version is a bit thicker because the border are
+;; still there.
+(setq modus-themes-common-palette-overrides
+ '((border-mode-line-active bg-mode-line-active)
+ (border-mode-line-inactive bg-mode-line-inactive)))
#+end_src
-** Option for diff buffer looks
-:properties:
-:alt_title: Diffs
-:description: Choose among intense, desaturated, or background-only diffs
-:custom_id: h:ea7ac54f-5827-49bd-b09f-62424b3b6427
-:end:
-#+vindex: modus-themes-diffs
+**** Make the active mode line colorful
+:PROPERTIES:
+:CUSTOM_ID: h:e8d781be-eefc-4a81-ac4e-5ed156190df7
+:END:
-Brief: Set the overall style of diffs.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show some snippets that apply different stylistic variants.
+Of course, it is possible to use theme-specific overrides to, say,
+have a blue mode line for ~modus-operandi~ and a red one for
+~modus-vivendi~.
-Symbol: ~modus-themes-diffs~ (=choice= type)
+[[#h:80ddba52-e188-411f-8cc0-480ebd75befe][Make the mode line borderless]].
-Possible values:
+[[#h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c][Add padding to mode line]].
-1. ~nil~ (default)
-2. ~desaturated~
-3. ~bg-only~
-
-The default (~nil~) uses fairly intense color combinations for diffs, by
-applying prominently colored backgrounds, with appropriately tinted
-foregrounds.
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-Option ~desaturated~ follows the same principles as with the default
-(~nil~), though it tones down all relevant colors.
+;; Blue background, neutral foreground, intense blue border
+(setq modus-themes-common-palette-overrides
+ '((bg-mode-line-active bg-blue-intense)
+ (fg-mode-line-active fg-main)
+ (border-mode-line-active blue-intense)))
-Option ~bg-only~ applies a background but does not override the text's
-foreground. This makes it suitable for a non-~nil~ value passed to
-~diff-font-lock-syntax~ (note: Magit does not support syntax highlighting
-in diffs---last checked on 2021-12-02).
+;; Subtle blue background, neutral foreground, intense blue border
+(setq modus-themes-common-palette-overrides
+ '((bg-mode-line-active bg-blue-subtle)
+ (fg-mode-line-active fg-main)
+ (border-mode-line-active blue-intense)))
-When the user option ~modus-themes-deuteranopia~ is non-~nil~, all diffs
-will use a red/blue color-coding system instead of the standard
-red/green. Other stylistic changes are made in the interest of
-optimizing for such a use-case.
+;; Subtle red background, red foreground, invisible border
+(setq modus-themes-common-palette-overrides
+ '((bg-mode-line-active bg-red-subtle)
+ (fg-mode-line-active red-warmer)
+ (border-mode-line-active bg-red-subtle)))
+#+end_src
-[[#h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe][Option for red-green color deficiency or deuteranopia]].
+**** Make the tab bar more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:096658d7-a0bd-4a99-b6dc-9b20a20cda37
+:END:
-In versions before =2.0.0= there was an option for foreground-only diffs.
-This is no longer supported at the theme level because there are cases
-where the perceived contrast and overall contextuality were not good
-enough although the applied colors were technically above the 7:1
-contrast threshold.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show how to affect the colors of the built-in ~tab-bar-mode~
+and ~tab-line-mode~.
+
+For consistent theme-wide results, consider changing the mode line,
+fringes, and line numbers. These are shown in other sections of this
+manual.
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+
+;; Make the `tab-bar-mode' mode subtle while keepings its original
+;; gray aesthetic.
+(setq modus-themes-common-palette-overrides
+ '((bg-tab-bar bg-main)
+ (bg-tab-current bg-active)
+ (bg-tab-other bg-dim)))
+
+;; Like the above, but the current tab has a colorful background and
+;; the inactive tabs have a slightly more noticeable gray background.
+(setq modus-themes-common-palette-overrides
+ '((bg-tab-bar bg-main)
+ (bg-tab-current bg-cyan-intense)
+ (bg-tab-other bg-inactive)))
+
+;; Make the tabs colorful, using a monochromatic pattern (e.g. shades
+;; of cyan).
+(setq modus-themes-common-palette-overrides
+ '((bg-tab-bar bg-cyan-nuanced)
+ (bg-tab-current bg-cyan-intense)
+ (bg-tab-other bg-cyan-subtle)))
+
+;; Like the above, but with a dichromatic pattern (cyan and magenta).
+(setq modus-themes-common-palette-overrides
+ '((bg-tab-bar bg-cyan-nuanced)
+ (bg-tab-current bg-magenta-intense)
+ (bg-tab-other bg-cyan-subtle)))
+#+end_src
+
+**** Make the fringe invisible or another color
+:PROPERTIES:
+:CUSTOM_ID: h:c312dcac-36b6-4a1f-b1f5-ab1c9abe27b0
+:END:
-[[#h:e2aed9eb-5e1e-45ec-bbd7-bc4faeab3236][Diffs with only the foreground]].
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show how to make the fringe invisible or how to assign to it a
+different color. The "fringe" is a small area to the right and left
+side of the Emacs window which shows indicators such as for truncation
+or continuation lines.
-[[#h:b0b31802-0216-427e-b071-1a47adcfe608][Ediff without diff color-coding]].
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-** Option for org-mode block styles
-:properties:
-:alt_title: Org mode blocks
-:description: Choose among plain, gray, or tinted backgrounds
-:custom_id: h:b7e328c0-3034-4db7-9cdf-d5ba12081ca2
-:end:
-#+vindex: modus-themes-org-blocks
+;; Make the fringe invisible
+(setq modus-themes-common-palette-overrides
+ '((fringe unspecified)))
-Brief: Set the overall style of Org code blocks, quotes, and the like.
+;; Make the fringe more intense
+(setq modus-themes-common-palette-overrides
+ '((fringe bg-active)))
-Symbol: ~modus-themes-org-blocks~ (=choice= type)
+;; Make the fringe colorful, but nuanced
+(setq modus-themes-common-palette-overrides
+ '((fringe bg-blue-nuanced)))
+#+end_src
-Possible values:
+**** Make links use subtle or no underlines
+:PROPERTIES:
+:CUSTOM_ID: h:6c1d1dea-5cbf-4d92-b7bb-570a7a23ffe9
+:END:
-1. ~nil~ (default)
-2. ~gray-background~ (value ~grayscale~ exists for backward compatibility)
-3. ~tinted-background~ (value ~rainbow~ exists for backward compatibility)
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this example, we showcase the special use of the ~unspecified~ symbol
+that underline mappings can read correctly.
-Nil (the default) means that the block has no background of its own: it
-uses the one that applies to the rest of the buffer. In this case, the
-delimiter lines have a gray color for their text, making them look
-exactly like all other Org properties.
+#+begin_src emacs-lisp
+;; Subtle underlines
+(setq modus-themes-common-palette-overrides
+ '((underline-link border)
+ (underline-link-visited border)
+ (underline-link-symbolic border)))
-Option ~gray-background~ applies a subtle gray background to the block's
-contents. It also affects the begin and end lines of the block as they
-get another shade of gray as their background, which differentiates them
-from the contents of the block. All background colors extend to the
-edge of the window, giving the area a rectangular, "blocky"
-presentation.
-
-Option ~tinted-background~ uses a slightly colored background for the
-contents of the block. The exact color will depend on the programming
-language and is controlled by the variable ~org-src-block-faces~ (refer to
-the theme's source code for the current association list). For this to
-take effect, the Org buffer needs to be restarted with ~org-mode-restart~.
-In this scenario, it may be better to inhibit the extension of the
-delimiter lines' background to the edge of the window because Org does
-not provide a mechanism to update their colors depending on the contents
-of the block. Disable the extension of such backgrounds by setting
-~org-fontify-whole-block-delimiter-line~ to nil.
-
-Code blocks use their major mode's colors only when the variable
-~org-src-fontify-natively~ is non-~nil~. While quote/verse blocks require
-setting ~org-fontify-quote-and-verse-blocks~ to a non-~nil~ value.
+;; No underlines
+(setq modus-themes-common-palette-overrides
+ '((underline-link unspecified)
+ (underline-link-visited unspecified)
+ (underline-link-symbolic unspecified)))
+#+end_src
-[[#h:f44cc6e3-b0f1-4a5e-8a90-9e48fa557b50][Update Org block delimiter fontification]].
+**** Make prompts more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:bd75b43a-0bf1-45e7-b8b4-20944ca8b7f8
+:END:
-Older versions of the themes provided options ~grayscale~ (or ~greyscale~)
-and ~rainbow~. Those will continue to work as they are aliases for
-~gray-background~ and ~tinted-background~, respectively.
+This section contains practical examples of overriding the palette of
+the themes ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). In the following code
+block we show how to add or remove color from prompts.
-** Option for Org agenda constructs
-:properties:
-:alt_title: Org agenda
-:description: Control each element in the presentation of the agenda
-:custom_id: h:68f481bc-5904-4725-a3e6-d7ecfa7c3dbc
-:end:
-#+vindex: modus-themes-org-agenda
+[[#h:db5a9a7c-2928-4a28-b0f0-6f2b9bd52ba1][Option for command prompt styles]].
-Brief: Control the style of the Org agenda. Multiple parameters are
-available, each with its own options.
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-Symbol: ~modus-themes-org-agenda~ (=alist= type, multiple styles)
+;; Keep the background unspecified (like the default), but use a faint
+;; foreground color.
+(setq modus-themes-common-palette-overrides
+ '((fg-prompt cyan-faint)
+ (bg-prompt unspecified)))
-This is an alist that accepts a =(key . value)= combination. Some values
-are specified as a list. Here is a sample, followed by a description of
-all possible combinations:
+;; Add a nuanced background to prompts that complements their foreground.
+(setq modus-themes-common-palette-overrides
+ '((fg-prompt cyan)
+ (bg-prompt bg-cyan-nuanced)))
-#+begin_src emacs-lisp
-(setq modus-themes-org-agenda
- '((header-block . (variable-pitch 1.5))
- (header-date . (grayscale workaholic bold-today 1.2))
- (event . (accented italic varied))
- (scheduled . uniform)
- (habit . traffic-light)))
+;; Add a yellow background and adjust the foreground accordingly.
+(setq modus-themes-common-palette-overrides
+ '((fg-prompt fg-main)
+ (bg-prompt bg-yellow-subtle))) ; try to replace "subtle" with "intense"
#+end_src
-A ~header-block~ key applies to elements that concern the headings which
-demarcate blocks in the structure of the agenda. By default (a ~nil~
-value) those are rendered in a bold typographic weight, plus a height
-that is slightly taller than the default font size. Acceptable values
-come in the form of a list that can include either or both of those
-properties:
+**** Make completion matches more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:d959f789-0517-4636-8780-18123f936f91
+:END:
-- ~variable-pitch~ to use a proportionately spaced typeface;
+This section contains practical examples of overriding the palette of
+the themes ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). Here we demonstrate how
+to activate background coloration for completion matches. We show
+three different degrees of intensity.
+
+[[#h:f1c20c02-7b34-4c35-9c65-99170efb2882][Option for completion framework aesthetics]].
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+;; Add a nuanced background color to completion matches, while keeping
+;; their foreground intact (foregrounds do not need to be specified in
+;; this case, but we do it for didactic purposes).
+(setq modus-themes-common-palette-overrides
+ '((fg-completion-match-0 blue)
+ (fg-completion-match-1 magenta-warmer)
+ (fg-completion-match-2 cyan)
+ (fg-completion-match-3 red)
+ (bg-completion-match-0 bg-blue-nuanced)
+ (bg-completion-match-1 bg-magenta-nuanced)
+ (bg-completion-match-2 bg-cyan-nuanced)
+ (bg-completion-match-3 bg-red-nuanced)))
+
+;; Add intense background colors to completion matches and adjust the
+;; foregrounds accordingly.
+(setq modus-themes-common-palette-overrides
+ '((fg-completion-match-0 fg-main)
+ (fg-completion-match-1 fg-main)
+ (fg-completion-match-2 fg-main)
+ (fg-completion-match-3 fg-main)
+ (bg-completion-match-0 bg-blue-intense)
+ (bg-completion-match-1 bg-yellow-intense)
+ (bg-completion-match-2 bg-cyan-intense)
+ (bg-completion-match-3 bg-red-intense)))
+
+;; Like the above, but with subtle backgrounds.
+(setq modus-themes-common-palette-overrides
+ '((fg-completion-match-0 fg-main)
+ (fg-completion-match-1 fg-main)
+ (fg-completion-match-2 fg-main)
+ (fg-completion-match-3 fg-main)
+ (bg-completion-match-0 bg-blue-subtle)
+ (bg-completion-match-1 bg-yellow-subtle)
+ (bg-completion-match-2 bg-cyan-subtle)
+ (bg-completion-match-3 bg-red-subtle)))
+#+end_src
+
+Adding to the above, it is possible to, say, reduce the number of
+colors to two:
+
+#+begin_src emacs-lisp
+;; No backgrounds (like the default) and just use two colors.
+(setq modus-themes-common-palette-overrides
+ '((fg-completion-match-0 blue)
+ (fg-completion-match-1 yellow)
+ (fg-completion-match-2 blue)
+ (fg-completion-match-3 yellow)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)))
+
+;; Again, a two-color style but this time with backgrounds
+(setq modus-themes-common-palette-overrides
+ '((fg-completion-match-0 blue)
+ (fg-completion-match-1 yellow)
+ (fg-completion-match-2 blue)
+ (fg-completion-match-3 yellow)
+ (bg-completion-match-0 bg-blue-nuanced)
+ (bg-completion-match-1 bg-yellow-nuanced)
+ (bg-completion-match-2 bg-blue-nuanced)
+ (bg-completion-match-3 bg-yellow-nuanced)))
+#+end_src
+
+The user can mix and match to their liking.
+
+**** Make comments yellow and strings green
+:PROPERTIES:
+:CUSTOM_ID: h:26f53daa-0065-48dc-88ab-6a718d16cd95
+:END:
-- A number as a floating point (e.g. 1.5) to set the height of the text
- to that many times the default font height. A float of 1.0 or the
- symbol ~no-scale~ have the same effect of making the font the same
- height as the rest of the buffer. When neither a number nor
- `no-scale' are present, the default is a small increase in height (a
- value of 1.15).
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+previous versions of the themes, we provided an option for yellow-ish
+comments and green-ish strings. For some users, those were still not
+good enough, as the exact values were hardcoded. Here we show how to
+reproduce the effect, but also how to tweak it to one's liking.
- Instead of a floating point, an acceptable value can be in the form of
- a cons cell like =(height . FLOAT)= or =(height FLOAT)=, where FLOAT
- is the given number.
+[[#h:c8767172-bf11-4c96-81dc-e736c464fc9c][Make code syntax use the old alt-syntax style]].
-- The symbol of a weight attribute adjusts the font of the heading
- accordingly, such as ~light~, ~semibold~, etc. Valid symbols are
- defined in the variable ~modus-themes-weights~. The absence of a
- weight means that bold will be used by virtue of inheriting the ~bold~
- face.
+[[#h:943063da-7b27-4ba4-9afe-f8fe77652fd1][Make use of alternative styles for code syntax]].
-[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-In case both a number and ~no-scale~ are in the list, the latter takes
-precedence. If two numbers are specified, the first one is applied.
+;; Yellow comments and green strings like older versions of the Modus
+;; themes
+(setq modus-themes-common-palette-overrides
+ '((comment yellow-cooler)
+ (string green-cooler)))
-Example usage:
+;; Faint yellow comments and a different shade of green for strings
+(setq modus-themes-common-palette-overrides
+ '((comment yellow-faint)
+ (string green-warmer)))
-#+begin_src emacs-lisp
-(header-block . nil)
-(header-block . (1.5))
-(header-block . (no-scale))
-(header-block . (variable-pitch 1.5))
-(header-block . (variable-pitch 1.5 semibold))
+;; Green comments and yellow strings, because now the user has the
+;; freedom to do it
+(setq modus-themes-common-palette-overrides
+ '((comment green)
+ (string yellow-cooler)))
#+end_src
-A ~header-date~ key covers date headings. Dates use only a foreground
-color by default (a ~nil~ value), with weekdays and weekends having a
-slight difference in hueness. The current date has an added gray
-background. This key accepts a list of values that can include any of
-the following properties:
-
-- ~grayscale~ to make weekdays use the main foreground color and
- weekends a more subtle gray;
-
-- ~workaholic~ to make weekdays and weekends look the same in
- terms of color;
+**** Make code syntax use the old alt-syntax style
+:PROPERTIES:
+:CUSTOM_ID: h:c8767172-bf11-4c96-81dc-e736c464fc9c
+:END:
-- ~bold-today~ to apply a bold typographic weight to the current
- date;
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this section we show how to reproduce what previous versions of the
+Modus themes provided as a stylistic alternative for code syntax. The
+upside of using overrides for this purpose is that we can tweak the
+style to our liking, but first let's start with its recreation:
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+
+;; The old "alt-syntax"
+(setq modus-themes-common-palette-overrides
+ '((builtin magenta)
+ (comment fg-dim)
+ (constant magenta-cooler)
+ (docstring magenta-faint)
+ (docmarkup green-faint)
+ (fnname magenta-warmer)
+ (keyword cyan)
+ (preprocessor cyan-cooler)
+ (string red-cooler)
+ (type magenta-cooler)
+ (variable blue-warmer)
+ (rx-construct magenta-warmer)
+ (rx-backslash blue-cooler)))
+#+end_src
+
+The "alt-syntax" could optionally use green strings and yellow
+comments ([[#h:26f53daa-0065-48dc-88ab-6a718d16cd95][Make comments yellow and strings green]]):
+
+#+begin_src emacs-lisp
+;; Same as above, but with yellow comments and green strings
+(setq modus-themes-common-palette-overrides
+ '((builtin magenta)
+ (comment yellow-faint)
+ (constant magenta-cooler)
+ (docstring green-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta-warmer)
+ (keyword cyan)
+ (preprocessor cyan-cooler)
+ (string green-cooler)
+ (type magenta-cooler)
+ (variable blue-warmer)
+ (rx-construct magenta-warmer)
+ (rx-backslash blue-cooler)))
+#+end_src
+
+The standard "alt-syntax" has red strings. As such, it is interesting
+to experiment with faintly red colored comments:
+
+#+begin_src emacs-lisp
+;; Like the old "alt-syntax" but with faint red comments
+(setq modus-themes-common-palette-overrides
+ '((builtin magenta)
+ (comment red-faint)
+ (constant magenta-cooler)
+ (docstring magenta-faint)
+ (docmarkup green-faint)
+ (fnname magenta-warmer)
+ (keyword cyan)
+ (preprocessor cyan-cooler)
+ (string red-cooler)
+ (type magenta-cooler)
+ (variable blue-warmer)
+ (rx-construct magenta-warmer)
+ (rx-backslash blue-cooler)))
+#+end_src
+
+The user can always mix and match styles to their liking.
+
+[[#h:943063da-7b27-4ba4-9afe-f8fe77652fd1][Make use of alternative styles for code syntax]].
+
+**** Make use of alternative styles for code syntax
+:PROPERTIES:
+:CUSTOM_ID: h:943063da-7b27-4ba4-9afe-f8fe77652fd1
+:END:
-- ~bold-all~ to render all date headings in a bold weight;
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). The
+idea here is to change how named colors are mapped to code syntax.
+Each of the following snippets give the ~modus-themes~ a different
+feel while editing code.
+
+Note that my ~modus-themes~ and ~ef-themes~ do not use the same
+palettes, so some things are different. If you copy from the latter
+to the former, double-check that the entries exist in the given Modus
+theme palette.
+
+[[#h:26f53daa-0065-48dc-88ab-6a718d16cd95][Make comments yellow and strings green]].
+
+[[*Make code syntax use the old alt-syntax style][Make code syntax use the old alt-syntax style]].
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+
+;; Mimic `ef-night' theme (from my `ef-themes') for code syntax
+;; highlighting, while still using the Modus colors (and other
+;; mappings).
+(setq modus-themes-common-palette-overrides
+ '((builtin green-cooler)
+ (comment yellow-faint)
+ (constant magenta-cooler)
+ (fnname cyan-cooler)
+ (keyword blue-warmer)
+ (preprocessor red-warmer)
+ (docstring cyan-faint)
+ (string blue-cooler)
+ (type magenta-cooler)
+ (variable cyan)))
+
+;; Mimic `ef-summer' theme (from my `ef-themes') for code syntax
+;; highlighting, while still using the Modus colors (and other
+;; mappings).
+(setq modus-themes-common-palette-overrides
+ '((builtin magenta)
+ (comment yellow-faint)
+ (constant red-cooler)
+ (fnname magenta-warmer)
+ (keyword magenta-cooler)
+ (preprocessor green-warmer)
+ (docstring cyan-faint)
+ (string yellow-warmer)
+ (type cyan-warmer)
+ (variable blue-warmer)))
+
+;; Mimic `ef-bio' theme (from my `ef-themes') for code syntax
+;; highlighting, while still using the Modus colors (and other
+;; mappings).
+(setq modus-themes-common-palette-overrides
+ '((builtin green)
+ (comment yellow-faint)
+ (constant blue)
+ (fnname green-warmer)
+ (keyword green-cooler)
+ (preprocessor green)
+ (docstring green-faint)
+ (string magenta-cooler)
+ (type cyan-warmer)
+ (variable blue-warmer)))
+
+;; Mimic `ef-trio-light' theme (from my `ef-themes') for code syntax
+;; highlighting, while still using the Modus colors (and other
+;; mappings).
+(setq modus-themes-common-palette-overrides
+ '((builtin magenta-cooler)
+ (comment yellow-faint)
+ (constant magenta-warmer)
+ (fnname blue-warmer)
+ (keyword magenta)
+ (preprocessor red-cooler)
+ (docstring magenta-faint)
+ (string green-cooler)
+ (type cyan-cooler)
+ (variable cyan-warmer)))
+#+end_src
+
+**** Make matching parenthesis more or less intense
+:PROPERTIES:
+:CUSTOM_ID: h:259cf8f5-48ec-4b13-8a69-5d6387094468
+:END:
-- ~underline-today~ applies an underline to the current date while
- removing the background it has by default;
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this code block we show how to change the background of matching
+delimiters when ~show-paren-mode~ is enabled. We also demonstrate how
+to enable underlines for those highlights.
-- A number as a floating point (e.g. 1.2) to set the height of the text
- to that many times the default font height. The default is the same
- as the base font height (the equivalent of 1.0). Instead of a
- floating point, an acceptable value can be in the form of a cons cell
- like =(height . FLOAT)= or =(height FLOAT)=, where FLOAT is the given
- number.
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-For example:
+;; Change the background to a shade of magenta
+(setq modus-themes-common-palette-overrides
+ '((bg-paren-match bg-magenta-intense)))
-#+begin_src emacs-lisp
-(header-date . nil)
-(header-date . (workaholic))
-(header-date . (grayscale bold-all))
-(header-date . (grayscale workaholic))
-(header-date . (grayscale workaholic bold-today))
-(header-date . (grayscale workaholic bold-today scale-heading))
+;; Enable underlines by applying a color to them
+(setq modus-themes-common-palette-overrides
+ '((bg-paren-match bg-magenta-intense)
+ (underline-paren-match fg-main)))
#+end_src
-An ~event~ key covers (i) headings with a plain time stamp that are
-shown on the agenda, also known as events, (ii) entries imported from
-the diary, and (iii) other items that derive from a symbolic expression
-or sexp (phases of the moon, holidays, etc.). By default all those look
-the same and have a subtle foreground color (the default is a ~nil~ value
-or an empty list). This key accepts a list of properties. Those are:
-
-- ~accented~ applies an accent value to the event's foreground,
- replacing the original gray. It makes all entries stand out more.
-- ~italic~ adds a slant to the font's forms (italic or oblique forms,
- depending on the typeface).
-- ~varied~ differentiates between events with a plain time stamp and
- entries that are generated from either the diary or a symbolic
- expression. It generally puts more emphasis on events. When ~varied~
- is combined with ~accented~, it makes only events use an accent color,
- while diary/sexp entries retain their original subtle foreground.
- When ~varied~ is used in tandem with ~italic~, it applies a slant only
- to diary and sexp entries, not events. And when ~varied~ is the sole
- property passed to the ~event~ key, it has the same meaning as the
- list (italic varied). The combination of ~varied~, ~accented~,
- ~italic~ covers all of the aforementioned cases.
+**** Make box buttons more or less gray
+:PROPERTIES:
+:CUSTOM_ID: h:4f6b6ca3-f5bb-4830-8312-baa232305360
+:END:
-For example:
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). By
+default, the boxed buttons that appear in {{{kbd(M-x customize)}}} and
+related are distinct shades of gray. The following set of overrides
+removes the gray from the active buttons and amplifies it for the
+inactive ones.
#+begin_src emacs-lisp
-(event . nil)
-(event . (italic))
-(event . (accented italic))
-(event . (accented italic varied))
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+(setq modus-themes-common-palette-overrides
+ '((bg-button-active bg-main)
+ (fg-button-active fg-main)
+ (bg-button-inactive bg-inactive)
+ (fg-button-inactive "gray50")))
#+end_src
-A ~scheduled~ key applies to tasks with a scheduled date. By default (a
-~nil~ value), those use varying shades of yellow to denote (i) a past or
-current date and (ii) a future date. Valid values are symbols:
+**** Make TODO and DONE more or less intense
+:PROPERTIES:
+:CUSTOM_ID: h:b57bb50b-a863-4ea8-bb38-6de2275fa868
+:END:
-- ~nil~ (default);
-- ~uniform~ to make all scheduled dates the same color;
-- ~rainbow~ to use contrasting colors for past, present, future
- scheduled dates.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show how to affect just the =TODO= and =DONE= keywords that we
+encounter in Org buffers. The idea is to make those pop out more or
+to subdue them.
-For example:
+[[#h:11297984-85ea-4678-abe9-a73aeab4676a][Make headings more or less colorful]].
+
+[[#h:bb5b396f-5532-4d52-ab13-149ca24854f1][Make inline code in prose use alternative styles]].
#+begin_src emacs-lisp
-(scheduled . nil)
-(scheduled . uniform)
-(scheduled . rainbow)
-#+end_src
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-A ~habit~ key applies to the ~org-habit~ graph. All possible value are
-passed as a symbol. Those are:
-
-- The default (~nil~) is meant to conform with the original aesthetic of
- ~org-habit~. It employs all four color codes that correspond to the
- org-habit states---clear, ready, alert, and overdue---while
- distinguishing between their present and future variants. This
- results in a total of eight colors in use: red, yellow, green, blue,
- in tinted and shaded versions. They cover the full set of information
- provided by the ~org-habit~ consistency graph.
-- ~simplified~ is like the default except that it removes the dichotomy
- between current and future variants by applying uniform color-coded
- values. It applies a total of four colors: red, yellow, green, blue.
- They produce a simplified consistency graph that is more legible (or
- less busy) than the default. The intent is to shift focus towards the
- distinction between the four states of a habit task, rather than each
- state's present/future outlook.
-- ~traffic-light~ further reduces the available colors to red, yellow, and
- green. As in ~simplified~, present and future variants appear
- uniformly, but differently from it, the ~clear~ state is rendered in a
- green hue, instead of the original blue. This is meant to capture the
- use-case where a habit task being too early is less important than it
- being too late. The difference between ready and clear states is
- attenuated by painting both of them using shades of green. This
- option thus highlights the alert and overdue states.
-- When ~modus-themes-deuteranopia~ is non-~nil~ the exact style of the habit
- graph adapts to the needs of users with red-green color deficiency by
- substituting every instance of green with blue or cyan (depending on
- the specifics).
-
-[[#h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe][Option for red-green color deficiency or deuteranopia]].
+;; Increase intensity
+(setq modus-themes-common-palette-overrides
+ '((prose-done green-intense)
+ (prose-todo red-intense)))
-For example:
+;; Tone down intensity
+(setq modus-themes-common-palette-overrides
+ '((prose-done green-faint) ; OR replace `green-faint' with `olive'
+ (prose-todo red-faint))) ; OR replace `red-faint' with `rust'
-#+begin_src emacs-lisp
-(habit . nil)
-(habit . simplified)
-(habit . traffic-light)
+;; Keep TODO at its default (so no override for it), but make DONE
+;; gray.
+(setq modus-themes-common-palette-overrides
+ '((prose-done fg-dim)))
#+end_src
-Putting it all together, the alist can look like this:
+**** Make headings more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:11297984-85ea-4678-abe9-a73aeab4676a
+:END:
-#+begin_src emacs-lisp
-'((header-block . (1.5 variable-pitch))
- (header-date . (grayscale workaholic bold-today))
- (event . (accented varied))
- (scheduled . uniform)
- (habit . traffic-light))
-
-;; Or else:
-(setq modus-themes-org-agenda
- '((header-block . (1.5 variable-pitch))
- (header-date . (grayscale workaholic bold-today))
- (event . (accented varied))
- (scheduled . uniform)
- (habit . traffic-light)))
-#+end_src
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show how to alter the looks of headings, such as in Org mode.
+Using overrides here offers far more flexibility than what we could
+achieve with previous versions of the themes: the user can mix and
+match styles at will.
+
+[[#h:b57bb50b-a863-4ea8-bb38-6de2275fa868][Make TODO and DONE more intense]].
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+
+;; Apply more colorful foreground to some headings (headings 0-8).
+;; Level 0 is for Org #+title and related.
+(setq modus-themes-common-palette-overrides
+ '((fg-heading-1 blue-warmer)
+ (fg-heading-2 yellow-cooler)
+ (fg-heading-3 cyan-cooler)))
+
+;; Like the above, but with gradient colors
+(setq modus-themes-common-palette-overrides
+ '((fg-heading-1 blue)
+ (fg-heading-2 cyan)
+ (fg-heading-3 green)))
+
+;; Add color to level 1 heading, but use the main foreground for
+;; others
+(setq modus-themes-common-palette-overrides
+ '((fg-heading-1 blue)
+ (fg-heading-2 fg-main)
+ (fg-heading-3 fg-main)))
+
+;; Apply colorful foreground, background, and overline (headings 0-8)
+(setq modus-themes-common-palette-overrides
+ '((fg-heading-1 blue-warmer)
+ (bg-heading-1 bg-blue-nuanced)
+ (overline-heading-1 blue)))
+
+;; Apply gray scale foreground, background, and overline (headings 0-8)
+(setq modus-themes-common-palette-overrides
+ '((fg-heading-1 fg-main)
+ (bg-heading-1 bg-dim)
+ (overline-heading-1 border)))
+#+end_src
+
+**** Make Org agenda more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:a5af0452-a50f-481d-bf60-d8143f98105f
+:END:
-** Option for the headings' overall style
-:properties:
-:alt_title: Heading styles
-:description: Choose among several styles, also per heading level
-:custom_id: h:271eff19-97aa-4090-9415-a6463c2f9ae1
-:end:
-#+vindex: modus-themes-headings
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we provide three distinct code blocks. The first adds
+alternative and more varied colors to the Org agenda (and related).
+The second uses faint coloration. The third makes the agenda use
+various shades of blue. Mix and match at will, while also combining
+these styles with what we show in the other chapters with practical
+stylistic variants.
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+;; Make the Org agenda use alternative and varied colors.
+(setq modus-themes-common-palette-overrides
+ '((date-common cyan) ; default value (for timestamps and more)
+ (date-deadline red-warmer)
+ (date-event magenta-warmer)
+ (date-holiday blue) ; for M-x calendar
+ (date-now yellow-warmer)
+ (date-scheduled magenta-cooler)
+ (date-weekday cyan-cooler)
+ (date-weekend blue-faint)))
+#+end_src
+
+An example with faint coloration:
+
+#+begin_src emacs-lisp
+;; Make the Org agenda use faint colors.
+(setq modus-themes-common-palette-overrides
+ '((date-common cyan-faint) ; for timestamps and more
+ (date-deadline red-faint)
+ (date-event fg-alt) ; default
+ (date-holiday magenta) ; default (for M-x calendar)
+ (date-now fg-main) ; default
+ (date-scheduled yellow-faint)
+ (date-weekday fg-dim)
+ (date-weekend fg-dim)))
+#+end_src
+
+A third example that makes the agenda more blue:
+
+#+begin_src emacs-lisp
+;; Make the Org agenda use more blue instead of yellow and red.
+(setq modus-themes-common-palette-overrides
+ '((date-common cyan) ; default value (for timestamps and more)
+ (date-deadline blue-cooler)
+ (date-event blue-faint)
+ (date-holiday blue) ; for M-x calendar
+ (date-now blue-faint)
+ (date-scheduled blue)
+ (date-weekday fg-main)
+ (date-weekend fg-dim)))
+#+end_src
+
+**** Make inline code in prose use alternative styles
+:PROPERTIES:
+:CUSTOM_ID: h:bb5b396f-5532-4d52-ab13-149ca24854f1
+:END:
-Brief: Heading styles with optional list of values for levels 0-8.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+the following code block we show how to affect constructs such as
+Org's verbatim, code, and macro entries. We also provide mappings for
+tables, property drawers, tags, and code block delimiters, though we
+do not show every possible permutation.
+
+[[#h:b57bb50b-a863-4ea8-bb38-6de2275fa868][Make TODO and DONE more or less intense]].
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+
+;; These are all the mappings at their default values for didactic
+;; purposes
+(setq modus-themes-common-palette-overrides
+ '((prose-block fg-dim)
+ (prose-code green-cooler)
+ (prose-done green)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo red)
+ (prose-verbatim magenta-warmer)))
+
+;; Make code block delimiters use a shade of red, tone down verbatim,
+;; code, and macro, and amplify the style of property drawers
+(setq modus-themes-common-palette-overrides
+ '((prose-block red-faint)
+ (prose-code fg-dim)
+ (prose-macro magenta-faint)
+ (prose-metadata cyan)
+ (prose-metadata-value green-warmer)
+ (prose-verbatim fg-dim)))
+
+;; Like the above but with more color variety for the inline code
+;; elements
+(setq modus-themes-common-palette-overrides
+ '((prose-block red-faint)
+ (prose-code blue-cooler)
+ (prose-macro yellow-warmer)
+ (prose-metadata cyan)
+ (prose-metadata-value green-warmer)
+ (prose-verbatim red-warmer)))
+#+end_src
+
+**** Make mail citations and headers more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:7da7a4ad-5d3a-4f11-9796-5a1abed0f0c4
+:END:
-Symbol: ~modus-themes-headings~ (=alist= type, multiple properties)
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this section we show how to change the coloration of email message
+headers and citations. Before we show the code, this is the anatomy
+of a message:
+
+#+begin_example message
+From: Protesilaos <info@protesilaos.com>
+To: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+Subject: Test subject
+--- Headers above this line; message and citations below ---
+This is some sample text
+
+> > Older quote
+> Newer quote
+#+end_example
-This is an alist that accepts a =(key . list-of-values)= combination.
-The key is either a number, representing the heading's level (0-8) or t,
-which pertains to the fallback style.
+We thus have the following:
+
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
+
+
+;; Reduce the intensity of mail citations and headers
+(setq modus-themes-common-palette-overrides
+ '((mail-cite-0 cyan-faint)
+ (mail-cite-1 yellow-faint)
+ (mail-cite-2 green-faint)
+ (mail-cite-3 red-faint)
+ (mail-part olive)
+ (mail-recipient indigo)
+ (mail-subject maroon)
+ (mail-other slate)))
+
+;; Make mail citations more intense; adjust the headers accordingly
+(setq modus-themes-common-palette-overrides
+ '((mail-cite-0 blue)
+ (mail-cite-1 yellow)
+ (mail-cite-2 green)
+ (mail-cite-3 magenta)
+ (mail-part magenta-cooler)
+ (mail-recipient cyan)
+ (mail-subject red-warmer)
+ (mail-other cyan-cooler)))
+
+;; Make all citations faint and neutral; make most headers green but
+;; use red for the subject lie so that it stands out
+(setq modus-themes-common-palette-overrides
+ '((mail-cite-0 fg-dim)
+ (mail-cite-1 fg-alt)
+ (mail-cite-2 fg-dim)
+ (mail-cite-3 fg-alt)
+ (mail-part yellow-cooler)
+ (mail-recipient green-cooler)
+ (mail-subject red-cooler)
+ (mail-other green)))
+#+end_src
+
+**** Make the region preserve text colors, plus other styles
+:PROPERTIES:
+:CUSTOM_ID: h:c8605d37-66e1-42aa-986e-d7514c3af6fe
+:END:
-Level 0 is a special heading: it is used for what counts as a document
-title or equivalent, such as the =#+title= construct we find in Org
-files. Levels 1-8 are regular headings.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show how to make the region respect the underlying text colors
+or how to make the background more/less intense while combining it
+with an appropriate foreground value.
-The list of values covers symbols that refer to properties, as described
-below. Here is a complete sample, followed by a presentation of all
-available properties:
+[[#h:a5140c9c-18b2-45db-8021-38d0b5074116][Do not extend the region background]].
#+begin_src emacs-lisp
-(setq modus-themes-headings
- '((1 . (background overline variable-pitch 1.5))
- (2 . (overline rainbow 1.3))
- (3 . (overline 1.1))
- (t . (monochrome))))
-#+end_src
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-Properties:
-+ ~rainbow~
-+ ~overline~
-+ ~background~
-+ ~monochrome~
-+ A font weight, which must be supported by the underlying typeface:
- - ~thin~
- - ~ultralight~
- - ~extralight~
- - ~light~
- - ~semilight~
- - ~regular~
- - ~medium~
- - ~semibold~
- - ~bold~
- - ~heavy~
- - ~extrabold~
- - ~ultrabold~
-+ ~no-bold~ (deprecated alias of a ~regular~ weight)
-+ A floating point as a height multiple of the default or a cons cell in
- the form of =(height . FLOAT)=.
+;; A background with no specific foreground (use foreground of
+;; underlying text)
+(setq modus-themes-common-palette-overrides
+ '((bg-region bg-ochre) ; try to replace `bg-ochre' with `bg-lavender', `bg-sage'
+ (fg-region unspecified)))
-By default (a ~nil~ value for this variable), all headings have a bold
-typographic weight and use a desaturated text color.
+;; Subtle gray with a prominent blue foreground
+(setq modus-themes-common-palette-overrides
+ '((bg-region bg-dim)
+ (fg-region blue-cooler)))
-A ~rainbow~ property makes the text color more saturated.
-
-An ~overline~ property draws a line above the area of the heading.
-
-A ~background~ property adds a subtle tinted color to the background of
-the heading.
-
-A ~monochrome~ property makes the heading the same as the base color,
-which is that of the ~default~ face's foreground. When ~background~ is also
-set, ~monochrome~ changes its color to gray. If both ~monochrome~ and
-~rainbow~ are set, the former takes precedence.
+;; Intense magenta background combined with the main foreground
+(setq modus-themes-common-palette-overrides
+ '((bg-region bg-magenta-intense)
+ (fg-region fg-main)))
+#+end_src
-A ~variable-pitch~ property changes the font family of the heading to that
-of the ~variable-pitch~ face (normally a proportionately spaced typeface).
+**** Make mouse highlights more or less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:b5cab69d-d7cb-451c-8ff9-1f545ceb6caf
+:END:
-The symbol of a weight attribute adjusts the font of the heading
-accordingly, such as ~light~, ~semibold~, etc. Valid symbols are
-defined in the variable ~modus-themes-weights~. The absence of a weight
-means that bold will be used by virtue of inheriting the ~bold~ face.
-For backward compatibility, the ~no-bold~ value is accepted, though
-users are encouraged to specify a ~regular~ weight instead.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+the following code block we show how to affect the semantic color
+mapping that covers mouse hover effects and related highlights:
-[[#h:2793a224-2109-4f61-a106-721c57c01375][Configure bold and italic faces]].
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-A number, expressed as a floating point (e.g. 1.5), adjusts the height
-of the heading to that many times the base font size. The default
-height is the same as 1.0, though it need not be explicitly stated.
-Instead of a floating point, an acceptable value can be in the form of a
-cons cell like =(height . FLOAT)= or =(height FLOAT)=, where FLOAT is
-the given number.
-Combinations of any of those properties are expressed as a list, like in
-these examples:
+;; Make the background an intense yellow
+(setq modus-themes-common-palette-overrides
+ '((bg-hover bg-yellow-intense)))
-#+begin_src emacs-lisp
-(semibold)
-(rainbow background)
-(overline monochrome semibold 1.3)
-(overline monochrome semibold (height 1.3)) ; same as above
-(overline monochrome semibold (height . 1.3)) ; same as above
+;; Make the background subtle green
+(setq modus-themes-common-palette-overrides
+ '((bg-hover bg-green-subtle)))
#+end_src
-The order in which the properties are set is not significant.
+**** Make language underlines less colorful
+:PROPERTIES:
+:CUSTOM_ID: h:03dbd5af-6bae-475e-85a2-cec189f69598
+:END:
-In user configuration files the form may look like this:
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]).
+Here we show how to affect the color of the underlines that are used
+by code linters and prose spell checkers.
#+begin_src emacs-lisp
-(setq modus-themes-headings
- '((1 . (background overline rainbow 1.5))
- (2 . (background overline 1.3))
- (t . (overline semibold))))
-#+end_src
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-When defining the styles per heading level, it is possible to pass a
-non-~nil~ value (~t~) instead of a list of properties. This will retain the
-original aesthetic for that level. For example:
-#+begin_src emacs-lisp
-(setq modus-themes-headings
- '((1 . t) ; keep the default style
- (2 . (background overline))
- (t . (rainbow)))) ; style for all other headings
+;; Make the underlines less intense
+(setq modus-themes-common-palette-overrides
+ '((underline-err red-faint)
+ (underline-warning yellow-faint)
+ (underline-note cyan-faint)))
-(setq modus-themes-headings
- '((1 . (background overline))
- (2 . (rainbow semibold))
- (t . t))) ; default style for all other levels
+;; Change the color-coding of the underlines
+(setq modus-themes-common-palette-overrides
+ '((underline-err yellow-intense)
+ (underline-warning magenta-intense)
+ (underline-note green-intense)))
#+end_src
-For Org users, the extent of the heading depends on the variable
-~org-fontify-whole-heading-line~. This affects the ~overline~ and
-~background~ properties. Depending on the version of Org, there may be
-others, such as ~org-fontify-done-headline~.
+**** Make line numbers use alternative styles
+:PROPERTIES:
+:CUSTOM_ID: h:b6466f51-cb58-4007-9ebe-53a27af655c7
+:END:
-** Option for variable-pitch font in UI elements
-:properties:
-:alt_title: UI typeface
-:description: Toggle the use of variable-pitch across the User Interface
-:custom_id: h:16cf666c-5e65-424c-a855-7ea8a4a1fcac
-:end:
-#+vindex: modus-themes-variable-pitch-ui
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this section we show how to affect the ~display-line-numbers-mode~.
-Brief: Toggle the use of proportionately spaced (~variable-pitch~) fonts
-in the User Interface.
+#+begin_src emacs-lisp
+;; These overrides are common to all Modus themes. We also provide
+;; theme-specific options, such as `modus-operandi-palette-overrides'.
+;;
+;; In general, the theme-specific overrides are better for overriding
+;; color values, such as redefining what `blue-faint' looks like. The
+;; common overrides are best used for changes to semantic color
+;; mappings, as we show below.
-Symbol: ~modus-themes-variable-pitch-ui~ (=boolean= type)
-Possible values:
+;; Make line numbers less intense
+(setq modus-themes-common-palette-overrides
+ '((fg-line-number-inactive "gray50")
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive unspecified)
+ (bg-line-number-active unspecified)))
-1. ~nil~ (default)
-2. ~t~
+;; Like the above, but use a shade of red for the current line number
+(setq modus-themes-common-palette-overrides
+ '((fg-line-number-inactive "gray50")
+ (fg-line-number-active red-cooler)
+ (bg-line-number-inactive unspecified)
+ (bg-line-number-active unspecified)))
-This option concerns User Interface elements that are under the direct
-control of Emacs. In particular: the mode line, header line, tab bar,
-and tab line.
+;; Make all numbers more intense, use a more pronounce gray
+;; background, and make the current line have a colored background
+(setq modus-themes-common-palette-overrides
+ '((fg-line-number-inactive fg-main)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-inactive)
+ (bg-line-number-active bg-cyan-intense)))
+#+end_src
-The default is to use the same font as the rest of Emacs, which usually
-is a monospaced family.
+**** Make diffs use only a foreground
+:PROPERTIES:
+:CUSTOM_ID: h:b3761482-bcbf-4990-a41e-4866fb9dad15
+:END:
-With a non-~nil~ value (~t~) apply a proportionately spaced typeface. This
-is done by assigning the ~variable-pitch~ face to the relevant items.
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this section we show how to change diff buffers (e.g. in ~magit~) to
+only use color-coded text without any added background. What we
+basically do is to disable the applicable backgrounds and then
+intensify the foregrounds. Since the deuteranopia-optimized themes do
+not use the red-green color coding, we make an extra set of
+adjustments for them by overriding their palettes directly instead of
+just using the "common" overrides.
+
+#+begin_src emacs-lisp
+;; Diffs with only foreground colours. Word-wise ("refined") diffs
+;; have a gray background to draw attention to themselves.
+(setq modus-themes-common-palette-overrides
+ '((bg-added unspecified)
+ (bg-added-faint unspecified)
+ (bg-added-refine bg-inactive)
+ (fg-added green)
+ (fg-added-intense green-intense)
+
+ (bg-changed unspecified)
+ (bg-changed-faint unspecified)
+ (bg-changed-refine bg-inactive)
+ (fg-changed yellow)
+ (fg-changed-intense yellow-intense)
+
+ (bg-removed unspecified)
+ (bg-removed-faint unspecified)
+ (bg-removed-refine bg-inactive)
+ (fg-removed red)
+ (fg-removed-intense red-intense)
+
+ (bg-diff-context unspecified)))
+
+;; Because deuteranopia cannot use the typical red-yellow-green
+;; combination, we need to arrange for a yellow-purple-blue sequence.
+;; Notice that the above covers the "common" overrides, so we do not
+;; need to reproduce the whole list of them.
+(setq modus-operandi-deuteranopia-palette-overrides
+ '((fg-added blue)
+ (fg-added-intense blue-intense)
+
+ (fg-changed magenta-cooler)
+ (fg-changed-intense magenta-intense)
+
+ (fg-removed yellow-warmer)
+ (fg-removed-intense yellow-intense)))
+
+(setq modus-vivendi-deuteranopia-palette-overrides
+ '((fg-added blue)
+ (fg-added-intense blue-intense)
+
+ (fg-changed magenta-cooler)
+ (fg-changed-intense magenta-intense)
+
+ (fg-removed yellow)
+ (fg-removed-intense yellow-intense)))
+#+end_src
+
+**** Make deuteranopia diffs red and blue instead of yellow and blue
+:PROPERTIES:
+:CUSTOM_ID: h:16389ea1-4cb6-4b18-9409-384324113541
+:END:
-[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
+This is one of our practical examples to override the semantic colors
+of the Modus themes ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][Stylistic variants using palette overrides]]). In
+this section we show how to implement a red+blue color coding for
+diffs in the themes ~modus-operandi-deuteranopia~ and
+~modus-vivendi-deuteranopia~. As those themes are optimized for users
+with red-green color deficiency, they do not use the typical red+green
+color coding for diffs, defaulting instead to yellow+blue which are
+discernible. Users with deuteranomaly or, generally, those who like a
+different aesthetic, can use the following to make diffs use the
+red+yellow+blue color coding for removed, changed, and added lines
+respectively. This is achieved by overriding the "changed" and
+"removed" entries to use the colors of regular ~modus-operandi~ and
+~modus-vivendi~.
+
+#+begin_src emacs-lisp
+(setq modus-operandi-deuteranopia-palette-overrides
+ '((bg-changed "#ffdfa9")
+ (bg-changed-faint "#ffefbf")
+ (bg-changed-refine "#fac090")
+ (bg-changed-fringe "#d7c20a")
+ (fg-changed "#553d00")
+ (fg-changed-intense "#655000")
+
+ (bg-removed "#ffd8d5")
+ (bg-removed-faint "#ffe9e9")
+ (bg-removed-refine "#f3b5af")
+ (bg-removed-fringe "#d84a4f")
+ (fg-removed "#8f1313")
+ (fg-removed-intense "#aa2222")))
+
+(setq modus-vivendi-deuteranopia-palette-overrides
+ '((bg-changed "#363300")
+ (bg-changed-faint "#2a1f00")
+ (bg-changed-refine "#4a4a00")
+ (bg-changed-fringe "#8a7a00")
+ (fg-changed "#efef80")
+ (fg-changed-intense "#c0b05f")
+
+ (bg-removed "#4f1119")
+ (bg-removed-faint "#380a0f")
+ (bg-removed-refine "#781a1f")
+ (bg-removed-fringe "#b81a1f")
+ (fg-removed "#ffbfbf")
+ (fg-removed-intense "#ff9095")))
+#+end_src
* Advanced customization
:properties:
@@ -2220,7 +2434,7 @@ the background). It thus falls back to the closest approximation, which
seldom is appropriate for the purposes of the Modus themes.
In such a case, the user is expected to update their terminal's color
-palette such as by adapting these resources:
+palette such as by adapting these resources ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]):
#+begin_src emacs-lisp
! Theme: modus-operandi
@@ -2268,27 +2482,46 @@ xterm*color14: #6ae4b9
xterm*color15: #ffffff
#+end_src
-** Visualize the active Modus theme's palette
+** Preview theme colors
:properties:
:custom_id: h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d
:end:
+#+cindex: Preview named colors or semantic color mappings
+
#+findex: modus-themes-list-colors
+The command ~modus-themes-list-colors~ uses minibuffer completion to
+select an item from the Modus themes and then produces a buffer with
+previews of its color palette entries. The buffer has a naming scheme
+that reflects the given choice, like =modus-operandi-list-colors= for
+the ~modus-operandi~ theme.
+
#+findex: modus-themes-list-colors-current
-#+cindex: Preview color values
+The command ~modus-themes-list-colors-current~ skips the minibuffer
+selection process and just produces a preview for the current Modus
+theme.
-The command ~modus-themes-list-colors~ prompts for a choice between
-=modus-operandi= and =modus-vivendi= to produce a help buffer that shows a
-preview of each variable in the given theme's color palette. The
-command ~modus-themes-list-colors-current~ skips the prompt, using the
-current Modus theme.
+When called with a prefix argument (=C-u= with the default key
+bindings), these commands will show a preview of the palette's
+semantic color mappings instead of the named colors. In this context,
+"named colors" are entries that associate a symbol to a string color
+value, such as =(blue-warmer "#354fcf")=. Whereas "semantic color
+mappings" associate a named color to a symbol, like =(string
+blue-warmer)=, thus making the theme render all string constructs in
+the =blue-warmer= color value ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
+
+#+findex: modus-themes-preview-colors
+#+findex: modus-themes-preview-colors-current
+Aliases for those commands are ~modus-themes-preview-colors~ and
+~modus-themes-preview-colors-current~.
Each row shows a foreground and background coloration using the
underlying value it references. For example a line with =#a60000= (a
shade of red) will show red text followed by a stripe with that same
color as a backdrop.
-The name of the buffer describes the given Modus theme. It is thus
-called =*modus-operandi-list-colors*= or =*modus-vivendi-list-colors*=.
+The name of the buffer describes the given Modus theme and what the
+contents are, such as =*modus-operandi-list-colors*= for named colors
+and ==*modus-operandi-list-mappings*= for the semantic color mappings.
** Per-theme customization settings
:properties:
@@ -2306,12 +2539,12 @@ other).
(defun my-demo-modus-operandi ()
(interactive)
(setq modus-themes-bold-constructs t) ; ENABLE bold
- (modus-themes-load-operandi))
+ (modus-themes-load-theme 'modus-operandi))
(defun my-demo-modus-vivendi ()
(interactive)
(setq modus-themes-bold-constructs nil) ; DISABLE bold
- (modus-themes-load-vivendi))
+ (modus-themes-load-theme 'modus-vivendi))
(defun my-demo-modus-themes-toggle ()
(if (eq (car custom-enabled-themes) 'modus-operandi)
@@ -2325,232 +2558,188 @@ equivalent the themes provide.
For a more elaborate design, it is better to inspect the source code of
~modus-themes-toggle~ and relevant functions.
-** Case-by-case face specs using the themes' palette
-:properties:
-:custom_id: h:1487c631-f4fe-490d-8d58-d72ffa3bd474
-:end:
-#+findex: modus-themes-color
-#+findex: modus-themes-color-alts
-#+cindex: Extracting individual colors
+** Get a single color from the palette
+:PROPERTIES:
+:CUSTOM_ID: h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e
+:END:
-This section is about tweaking individual faces. If you plan to do
-things at scale, consult the next section: [[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Set multiple faces]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
-We already covered in previous sections how to toggle between the themes
-and how to configure options prior to loading. We also explained that
-some of the functions made available to users will fire up a hook that
-can be used to pass tweaks in the post-theme-load phase.
+#+findex: modus-themes-get-color-value
+The fuction ~modus-themes-get-color-value~ can be called from Lisp to
+return the value of a color from the active Modus theme palette. It
+takea a =COLOR= argument and an optional =OVERRIDES=.
-Now assume you wish to change a single face, say, the ~cursor~. And you
-would like to get the standard "blue" color value of the active Modus
-theme, whether it is Modus Operandi or Modus Vivendi. To do that, you
-can use the ~modus-themes-color~ function. It accepts a symbol that is
-associated with a color in ~modus-themes-operandi-colors~ and
-~modus-themes-vivendi-colors~. Like this:
+=COLOR= is a symbol that represents a named color entry in the
+palette.
-#+begin_src emacs-lisp
-(modus-themes-color 'blue)
-#+end_src
+[[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]].
-The function always extracts the color value of the active Modus theme.
+If the value is the name of another color entry in the palette (so a
+mapping), this function recurs until it finds the underlying color
+value.
-#+begin_src emacs-lisp
-(progn
- (load-theme 'modus-operandi t)
- (modus-themes-color 'blue)) ; "#0031a9" for `modus-operandi'
+With an optional =OVERRIDES= argument as a non-nil value, it accounts
+for palette overrides. Else it reads only the default palette.
-(progn
- (load-theme 'modus-vivendi t)
- (modus-themes-color 'blue)) ; "#2fafff" for `modus-vivendi'
-#+end_src
+[[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]].
-Do {{{kbd(C-h v)}}} on the aforementioned variables to check all the available
-symbols that can be passed to this function. Or simply invoke the
-command ~modus-themes-list-colors~ to produce a buffer with a preview of
-each entry in the palette.
+With optional =THEME= as a symbol among ~modus-themes-items~, use the
+palette of that item. Else use the current Modus theme.
-[[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Visualize the active Modus theme's palette]].
+If =COLOR= is not present in the palette, this function returns the
+~unspecified~ symbol, which is safe when used as a face attribute's
+value.
-With that granted, let us expand the example to actually change the
-~cursor~ face's background property. We employ the built-in function of
-~set-face-attribute~:
+An example with ~modus-operandi~ to show how this function behaves
+with/without overrides and when recursive mappings are introduced.
#+begin_src emacs-lisp
-(set-face-attribute 'cursor nil :background (modus-themes-color 'blue))
-#+end_src
-
-If you evaluate this form, your cursor will become blue. But if you
-change themes, such as with ~modus-themes-toggle~, your edits will be
-lost, because the newly loaded theme will override the ~:background~
-attribute you had assigned to that face.
+;; Here we show the recursion of palette mappings. In general, it is
+;; better for the user to specify named colors to avoid possible
+;; confusion with their configuration, though those still work as
+;; expected.
+(setq modus-themes-common-palette-overrides
+ '((cursor red)
+ (fg-mode-line-active cursor)
+ (border-mode-line-active fg-mode-line-active)))
-For such changes to persist, we need to make them after loading the
-theme. So we rely on ~modus-themes-after-load-theme-hook~, which gets
-called from ~modus-themes-load-operandi~, ~modus-themes-load-vivendi~, as
-well as the command ~modus-themes-toggle~. Here is a sample function that
-tweaks two faces and then gets added to the hook:
+;; Ignore the overrides and get the original value.
+(modus-themes-get-color-value 'border-mode-line-active)
+;; => "#5a5a5a"
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (set-face-attribute 'cursor nil :background (modus-themes-color 'blue))
- (set-face-attribute 'font-lock-type-face nil :foreground (modus-themes-color 'magenta-alt)))
-
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
+;; Read from the overrides and deal with any recursion to find the
+;; underlying value.
+(modus-themes-get-color-value 'border-mode-line-active :overrides)
+;; => "#a60000"
#+end_src
-[[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]].
+** Use theme colors in code with modus-themes-with-colors
+:properties:
+:custom_id: h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae
+:end:
+#+cindex: Use colors from the palette anywhere
-Using this principle, it is possible to override the styles of faces
-without having to find color values for each case.
+[[#h:1cc552c1-5f5f-4a56-ae78-7b69e8512c4e][Get a single color from the palette]].
-Another application is to control the precise weight for bold
-constructs. This is particularly useful if your typeface has several
-variants such as "heavy", "extrabold", "semibold". All you have to do
-is edit the ~bold~ face. For example:
+Note that users most probably do not need the following. Just rely on
+the comprehensive overrides we provide ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]).
+
+#+findex: modus-themes-with-colors
+Advanced users may want to apply colors from the palette of the active
+Modus theme in their custom code. The ~modus-themes-with-colors~
+macro supplies those to any form called inside of it. For example:
#+begin_src emacs-lisp
-(set-face-attribute 'bold nil :weight 'semibold)
+(modus-themes-with-colors
+ (list blue-warmer magenta-cooler fg-added warning variable fg-heading-4))
+;; => ("#354fcf" "#531ab6" "#005000" "#884900" "#005e8b" "#721045")
#+end_src
-Remember to use the custom function and hook combo we demonstrated
-above. Because the themes do not hard-wire a specific weight, this
-simple form is enough to change the weight of all bold constructs
-throughout the interface.
-
-Finally, there are cases where you want to tweak colors though wish to
-apply different ones to each theme, say, a blue hue for Modus Operandi
-and a shade of red for Modus Vivendi. To this end, we provide
-~modus-themes-color-alts~ as a convenience function to save you from the
-trouble of writing separate wrappers for each theme. It still returns a
-single value by querying either of ~modus-themes-operandi-colors~ and
-~modus-themes-vivendi-colors~, only here you pass the two keys you want,
-first for ~modus-operandi~ then ~modus-vivendi~.
-
-Take the previous example with the ~cursor~ face:
+The above return value is for ~modus-operandi~ when that is the active
+theme. Switching to another theme and evaluating this code anew will
+give us the relevant results for that theme (remember that since
+version 4, the Modus themes consist of six items ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]])). The
+same with ~modus-vivendi~ as the active theme:
#+begin_src emacs-lisp
-;; Blue for `modus-operandi' and red for `modus-vivendi'
-(set-face-attribute 'cursor nil :background (modus-themes-color-alts 'blue 'red))
+(modus-themes-with-colors
+ (list blue-warmer magenta-cooler fg-added warning variable fg-heading-4))
+;; => ("#79a8ff" "#b6a0ff" "#a0e0a0" "#fec43f" "#00d3d0" "#feacd0")
#+end_src
-** Face specs at scale using the themes' palette
-:properties:
-:custom_id: h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae
-:end:
-#+findex: modus-themes-with-colors
-#+cindex: Extracting colors en masse
+The ~modus-themes-with-colors~ has access to the whole palette of the
+active theme, meaning that it can instantiate both (i) named colors
+like =blue-warmer= and (ii) semantic color mappings like =warning=.
+We provide commands to inspect those ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]).
-The examples here are for large scale operations. For simple, one-off
-tweaks, you may prefer the approach documented in the previous section
-([[#h:1487c631-f4fe-490d-8d58-d72ffa3bd474][Case-by-case face specs using the themes' palette]]).
+Others sections in this manual show how to use the aforementioned
+macro ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]).
-The ~modus-themes-with-colors~ macro lets you retrieve multiple color
-values by employing the backquote/backtick and comma notation. The
-values are stored in the alists ~modus-themes-operandi-colors~ and
-~modus-themes-vivendi-colors~, while the macro always queries that of the
-active Modus theme (preview the current palette with the command
-~modus-themes-list-colors~).
+Because the ~modus-themes-with-colors~ will most likely be used to
+customize faces, note that any function that calls it must be run at
+startup after the theme loads. The same function must also be
+assigned to the ~modus-themes-after-load-theme-hook~ for its effects
+to persist and be updated when switching between Modus themes (e.g. to
+update the exact value of =blue-warmer= when toggling between
+~modus-operandi~ to ~modus-vivendi~.
-[[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Visualize the active Modus theme's palette]].
+** Do not extend the region background
+:PROPERTIES:
+:CUSTOM_ID: h:a5140c9c-18b2-45db-8021-38d0b5074116
+:END:
-Here is an abstract example that just returns a list of color values
-while ~modus-operandi~ is enabled:
+By the default, the background of the ~region~ face extends from the
+end of the line to the edge of the window. To limit it to the end of
+the line, we need to override the face's =:extend= attribute. Adding
+this to the Emacs configuration file will suffice:
#+begin_src emacs-lisp
-(modus-themes-with-colors
- (list fg-main
- blue-faint
- magenta
- magenta-alt-other
- cyan-alt-other
- fg-special-cold
- blue-alt
- magenta-faint
- cyan
- fg-main
- green-faint
- red-alt-faint
- blue-alt-faint
- fg-special-warm
- cyan-alt
- blue))
-;; =>
-;; ("#000000" "#002f88" "#721045" "#5317ac"
-;; "#005a5f" "#093060" "#2544bb" "#752f50"
-;; "#00538b" "#000000" "#104410" "#702f00"
-;; "#003f78" "#5d3026" "#30517f" "#0031a9")
+;; Do not extend `region' background past the end of the line.
+(custom-set-faces
+ '(region ((t :extend nil))))
#+end_src
-Getting a list of colors may have its applications, though what you are
-most likely interested in is how to use those variables to configure
-several faces at once. To do so we can rely on the built-in
-~custom-set-faces~ function, which sets face specifications for the
-special ~user~ theme. That "theme" gets applied on top of regular themes
-like ~modus-operandi~ and ~modus-vivendi~.
-
-This is how it works:
+[[#h:c8605d37-66e1-42aa-986e-d7514c3af6fe][Make the region preserve text colors, plus other styles]].
-#+begin_src emacs-lisp
-(modus-themes-with-colors
- (custom-set-faces
- `(cursor ((,class :background ,blue)))
- `(mode-line ((,class :background ,yellow-nuanced-bg
- :foreground ,yellow-nuanced-fg)))
- `(mode-line-inactive ((,class :background ,blue-nuanced-bg
- :foreground ,blue-nuanced-fg)))))
-#+end_src
+** Add padding to mode line
+:PROPERTIES:
+:CUSTOM_ID: h:5a0c58cc-f97f-429c-be08-927b9fbb0a9c
+:END:
-The above snippet will immediately refashion the faces it names once it
-is evaluated. However, if you switch between the Modus themes, say,
-from ~modus-operandi~ to ~modus-vivendi~, the colors will not get updated to
-match those of the new theme. To make things work across the themes, we
-need to employ the same technique we discussed in the previous section,
-namely, to pass our changes at the post-theme-load phase via a hook.
+Emacs faces do not have a concept of "padding" for the space between
+the text and its box boundaries. We can approximate the effect by
+adding a =:box= attribute, making its border several pixels thick, and
+using the mode line's background color for it. This way the thick
+border will not stand out and will appear as a continuation of the
+mode line.
-The themes provide the ~modus-themes-after-load-theme-hook~, which gets
-called from ~modus-themes-load-operandi~, ~modus-themes-load-vivendi~, as
-well as the command ~modus-themes-toggle~. With this knowledge, you can
-wrap the macro in a function and then assign that function to the hook.
-Thus:
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
#+begin_src emacs-lisp
(defun my-modus-themes-custom-faces ()
(modus-themes-with-colors
(custom-set-faces
- `(cursor ((,class :background ,blue)))
- `(mode-line ((,class :background ,yellow-nuanced-bg
- :foreground ,yellow-nuanced-fg)))
- `(mode-line-inactive ((,class :background ,blue-nuanced-bg
- :foreground ,blue-nuanced-fg))))))
+ ;; Add "padding" to the mode lines
+ `(mode-line ((,c :box (:line-width 10 :color ,bg-mode-line-active))))
+ `(mode-line-inactive ((,c :box (:line-width 10 :color ,bg-mode-line-inactive)))))))
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
-[[#h:86f6906b-f090-46cc-9816-1fe8aeb38776][A theme-agnostic hook for theme loading]].
-
-To discover the faces defined by all loaded libraries, you may do
-{{{kbd(M-x list-faces-display)}}}. Be warned that when you ~:inherit~ a face
-you are introducing an implicit dependency, so try to avoid doing so for
-libraries other than the built-in {{{file(faces.el)}}} (or at least understand
-that things may break if you inherit from a yet-to-be-loaded face).
+The above has the effect of removing the border around the mode lines.
+In older versions of the themes, we provided the option for a padded
+mode line which could also have borders around it. Those were not
+real border, however, but an underline and an overline. Adjusting the
+above:
-Also bear in mind that these examples are meant to work with the Modus
-themes. If you are cycling between multiple themes you may encounter
-unforeseen issues, such as the colors of the Modus themes being applied
-to a non-Modus item.
+#+begin_src emacs-lisp
+(defun my-modus-themes-custom-faces ()
+ (modus-themes-with-colors
+ (custom-set-faces
+ ;; Add "padding" to the mode lines
+ `(mode-line ((,c :underline ,border-mode-line-active
+ :overline ,border-mode-line-active
+ :box (:line-width 10 :color ,bg-mode-line-active))))
+ `(mode-line-inactive ((,c :underline ,border-mode-line-inactive
+ :overline ,border-mode-line-inactive
+ :box (:line-width 10 :color ,bg-mode-line-inactive)))))))
-Finally, note that you can still use other functions where those make
-sense. For example, the ~modus-themes-color-alts~ that was discussed in
-the previous section. Adapt the above example like this:
+;; ESSENTIAL to make the underline move to the bottom of the box:
+(setq x-underline-at-descent-line t)
-#+begin_src emacs-lisp
-...
-(modus-themes-with-colors
- (custom-set-faces
- `(cursor ((,class :background ,(modus-themes-color-alts 'blue 'green))))
- ...))
+(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
+The reason we no longer provide this option is because it depends on a
+non-nil value for ~x-underline-at-descent-line~. That variable
+affects ALL underlines, including those of links. The effect is
+intrusive and looks awkard in prose.
+
+As such, the Modus themes no longer provide that option but instead
+offer this piece of documentation to make the user fully aware of the
+state of affairs.
+
** Remap face with local value
:properties:
:custom_id: h:7a93cb6f-4eca-4d56-a85c-9dcd813d6b0f
@@ -2564,7 +2753,7 @@ activates ~hl-line-mode~, but we wish to keep it distinct from other
buffers. This is where ~face-remap-add-relative~ can be applied and may
be combined with ~modus-themes-with-colors~ to deliver consistent results.
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
In this example we will write a simple interactive function that adjusts
the background color of the ~region~ face. This is the sample code:
@@ -2572,12 +2761,12 @@ the background color of the ~region~ face. This is the sample code:
#+begin_src emacs-lisp
(defvar my-rainbow-region-colors
(modus-themes-with-colors
- `((red . ,red-subtle-bg)
- (green . ,green-subtle-bg)
- (yellow . ,yellow-subtle-bg)
- (blue . ,blue-subtle-bg)
- (magenta . ,magenta-subtle-bg)
- (cyan . ,cyan-subtle-bg)))
+ `((red . ,bg-red-subtle)
+ (green . ,bg-green-subtle)
+ (yellow . ,bg-yellow-subtle)
+ (blue . ,bg-blue-subtle)
+ (magenta . ,bg-magenta-subtle)
+ (cyan . ,bg-cyan-subtle)))
"Sample list of color values for `my-rainbow-region'.")
(defun my-rainbow-region (color)
@@ -2613,768 +2802,6 @@ Perhaps you may wish to generalize those findings in to a set of
functions that also accept an arbitrary face. We shall leave the
experimentation up to you.
-** Cycle through arbitrary colors
-:properties:
-:custom_id: h:77dc4a30-b96a-4849-85a8-fee3c2995305
-:end:
-#+cindex: Cycle colors
-
-Users may opt to customize individual faces of the themes to accommodate
-their particular needs. One such case is with the color intensity of
-comments, specifically the foreground of ~font-lock-comment-face~. The
-Modus themes set that to a readable value, in accordance with their
-accessibility objective, though users may prefer to lower the overall
-contrast on an on-demand basis.
-
-One way to achieve this is to design a command that cycles through three
-distinct levels of intensity, though the following can be adapted to any
-kind of cyclic behavior, such as to switch between red, green, and blue.
-
-In the following example, we employ the ~modus-themes-color~ function
-which reads a symbol that represents an entry in the active theme's
-color palette ([[#h:1487c631-f4fe-490d-8d58-d72ffa3bd474][Case-by-case face specs using the themes' palette]]).
-Those are stored in ~my-modus-themes-comment-colors~.
-
-#+begin_src emacs-lisp
-(defvar my-modus-themes-comment-colors
- ;; We are abusing the palette here, as those colors have their own
- ;; purpose in the palette, so please ignore the semantics of their
- ;; names.
- '((low . bg-region)
- (medium . bg-tab-inactive-alt)
- (high . fg-alt))
- "Alist of levels of intensity mapped to color palette entries.
-The entries are found in `modus-themes-operandi-colors' or
-`modus-themes-vivendi-colors'.")
-
-(defvar my-modus-themes--adjust-comment-color-state nil
- "The cyclic state of `my-modus-themes-adjust-comment-color'.
-For internal use.")
-
-(defun my-modus-themes--comment-foreground (degree state)
- "Set `font-lock-comment-face' foreground.
-Use `my-modus-themes-comment-colors' to extract the color value
-for each level of intensity.
-
-This is complementary to `my-modus-themes-adjust-comment-color'."
- (let ((palette-colors my-modus-themes-comment-colors))
- (set-face-foreground
- 'font-lock-comment-face
- (modus-themes-color (alist-get degree palette-colors)))
- (setq my-modus-themes--adjust-comment-color-state state)
- (message "Comments are set to %s contrast" degree)))
-
-(defun my-modus-themes-adjust-comment-color ()
- "Cycle through levels of intensity for comments.
-The levels are determined by `my-modus-themes-comment-colors'."
- (interactive)
- (pcase my-modus-themes--adjust-comment-color-state
- ('nil
- (my-modus-themes--comment-foreground 'low 1))
- (1
- (my-modus-themes--comment-foreground 'medium 2))
- (_
- (my-modus-themes--comment-foreground 'high nil))))
-#+end_src
-
-With the above, {{{kbd(M-x my-modus-themes-adjust-comment-color)}}} will cycle
-through the three levels of intensity that have been specified.
-
-Another approach is to not read from the active theme's color palette
-and instead provide explicit color values, either in hexadecimal RGB
-notation (like =#123456=) or as the names that are displayed in the output
-of {{{kbd(M-x list-colors-display)}}}. In this case, the alist with the
-colors will have to account for the active theme, so as to set the
-appropriate colors. While this introduces a bit more complexity, it
-ultimately offers greater flexibility on the choice of colors for such a
-niche functionality (so there is no need to abuse the palette of the
-active Modus theme):
-
-#+begin_src emacs-lisp
-(defvar my-modus-themes-comment-colors
- '((light . ((low . "gray75")
- (medium . "gray50")
- (high . "#505050"))) ; the default for `modus-operandi'
-
- (dark . ((low . "gray25")
- (medium . "gray50")
- (high . "#a8a8a8")))) ; the default for `modus-vivendi'
- "Alist of levels of intensity mapped to color values.
-For such colors, consult the command `list-colors-display'. Pass
-the name of a color or its hex value.")
-
-(defvar my-modus-themes--adjust-comment-color-state nil
- "The cyclic state of `my-modus-themes-adjust-comment-color'.
-For internal use.")
-
-(defun my-modus-themes--comment-foreground (degree state)
- "Set `font-lock-comment-face' foreground.
-Use `my-modus-themes-comment-colors' to extract the color value
-for each level of intensity.
-
-This is complementary to `my-modus-themes-adjust-comment-color'."
- (let* ((colors my-modus-themes-comment-colors)
- (levels (pcase (car custom-enabled-themes)
- ('modus-operandi (alist-get 'light colors))
- ('modus-vivendi (alist-get 'dark colors)))))
- (set-face-foreground
- 'font-lock-comment-face
- (alist-get degree levels))
- (setq my-modus-themes--adjust-comment-color-state state)
- (message "Comments are set to %s contrast" degree)))
-
-(defun my-modus-themes-adjust-comment-color ()
- "Cycle through levels of intensity for comments.
-The levels are determined by `my-modus-themes-comment-colors'."
- (interactive)
- (pcase my-modus-themes--adjust-comment-color-state
- ('nil
- (my-modus-themes--comment-foreground 'low 1))
- (1
- (my-modus-themes--comment-foreground 'medium 2))
- (_
- (my-modus-themes--comment-foreground 'high nil))))
-#+end_src
-
-The effect of the above configurations on ~font-lock-comment-face~ is
-global. To make it buffer-local, one must tweak the code to employ the
-function ~face-remap-add-relative~ ([[#h:7a93cb6f-4eca-4d56-a85c-9dcd813d6b0f][Remap face with local value]]).
-
-So this form in ~my-modus-themes--comment-foreground~:
-
-#+begin_src emacs-lisp
-;; example 1
-(...
- (set-face-foreground
- 'font-lock-comment-face
- (modus-themes-color (alist-get degree palette-colors)))
- ...)
-
-;; example 2
-(...
- (set-face-foreground
- 'font-lock-comment-face
- (alist-get degree levels))
- ...)
-#+end_src
-
-Must become this:
-
-#+begin_src emacs-lisp
-;; example 1
-(...
- (face-remap-add-relative
- 'font-lock-comment-face
- `(:foreground ,(modus-themes-color (alist-get degree palette-colors))))
- ...)
-
-;; example 2
-(...
- (face-remap-add-relative
- 'font-lock-comment-face
- `(:foreground ,(alist-get degree levels)))
- ...)
-#+end_src
-
-** Override colors
-:properties:
-:custom_id: h:307d95dd-8dbd-4ece-a543-10ae86f155a6
-:end:
-#+vindex: modus-themes-operandi-color-overrides
-#+vindex: modus-themes-vivendi-color-overrides
-#+cindex: Change a theme's colors
-
-The themes provide a mechanism for overriding their color values. This
-is controlled by the variables ~modus-themes-operandi-color-overrides~ and
-~modus-themes-vivendi-color-overrides~, which are alists that should
-mirror a subset of the associations in ~modus-themes-operandi-colors~ and
-~modus-themes-vivendi-colors~ respectively. As with all customizations,
-overriding must be done before loading the affected theme.
-
-[[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Visualize the active Modus theme's palette]].
-
-Let us approach the present topic one step at a time. Here is a
-simplified excerpt of the default palette for Modus Operandi with some
-basic background values that apply to buffers and the mode line
-(remember to inspect the actual value to find out all the associations
-that can be overridden):
-
-#+begin_src emacs-lisp
-(defconst modus-themes-operandi-colors
- '((bg-main . "#ffffff")
- (bg-dim . "#f8f8f8")
- (bg-alt . "#f0f0f0")
- (bg-active . "#d7d7d7")
- (bg-inactive . "#efefef")))
-#+end_src
-
-As one can tell, we bind a key to a hexadecimal RGB color value. Now
-say we wish to override those specific values and have our changes
-propagate to all faces that use those keys. We could write something
-like this, which adds a subtle ocher tint:
-
-#+begin_src emacs-lisp
-(setq modus-themes-operandi-color-overrides
- '((bg-main . "#fefcf4")
- (bg-dim . "#faf6ef")
- (bg-alt . "#f7efe5")
- (bg-active . "#e8dfd1")
- (bg-inactive . "#f6ece5")))
-#+end_src
-
-Once this is evaluated, any subsequent loading of ~modus-operandi~ will
-use those values instead of the defaults. No further intervention is
-required.
-
-To reset the changes, we apply this and reload the theme:
-
-#+begin_src emacs-lisp
-(setq modus-themes-operandi-color-overrides nil)
-#+end_src
-
-Users who wish to leverage such a mechanism can opt to implement it
-on-demand by means of a global minor mode. The following snippet covers
-both themes and expands to some more associations in the palette:
-
-#+begin_src emacs-lisp
-(define-minor-mode my-modus-themes-tinted
- "Tweak some Modus themes colors."
- :init-value nil
- :global t
- (if my-modus-themes-tinted
- (setq modus-themes-operandi-color-overrides
- '((bg-main . "#fefcf4")
- (bg-dim . "#faf6ef")
- (bg-alt . "#f7efe5")
- (bg-hl-line . "#f4f0e3")
- (bg-active . "#e8dfd1")
- (bg-inactive . "#f6ece5")
- (bg-region . "#c6bab1")
- (bg-header . "#ede3e0")
- (bg-tab-active . "#fdf6eb")
- (bg-tab-inactive . "#c8bab8"))
- modus-themes-vivendi-color-overrides
- '((bg-main . "#100b17")
- (bg-dim . "#161129")
- (bg-alt . "#181732")
- (bg-hl-line . "#191628")
- (bg-active . "#282e46")
- (bg-inactive . "#1a1e39")
- (bg-region . "#393a53")
- (bg-header . "#202037")
- (bg-tab-active . "#120f18")
- (bg-tab-inactive . "#3a3a5a")))
- (setq modus-themes-operandi-color-overrides nil
- modus-themes-vivendi-color-overrides nil)))
-#+end_src
-
-A more neutral style for ~modus-themes-operandi-color-overrides~ can
-look like this:
-
-#+begin_src emacs-lisp
-'((bg-main . "#f7f7f7")
- (bg-dim . "#f2f2f2")
- (bg-alt . "#e8e8e8")
- (bg-hl-line . "#eaeaef")
- (bg-active . "#e0e0e0")
- (bg-inactive . "#e6e6e6")
- (bg-region . "#b5b5b5")
- (bg-header . "#e4e4e4")
- (bg-tab-active . "#f5f5f5")
- (bg-tab-inactive . "#c0c0c0"))
-#+end_src
-
-With those in place, one can use {{{kbd(M-x my-modus-themes-tinted)}}}
-and then load the Modus theme of their choice. The new palette subset
-will come into effect: subtle ocher tints (or shades of gray) for Modus
-Operandi and night sky blue shades for Modus Vivendi. Switching between
-the two themes, such as with {{{kbd(M-x modus-themes-toggle)}}} will
-also use the overrides.
-
-Given that this is a user-level customization, one is free to implement
-whatever color values they desire, even if the possible combinations
-fall below the minimum 7:1 contrast ratio that governs the design of the
-themes (the WCAG AAA legibility standard). Alternatively, this can also
-be done programmatically ([[#h:4589acdc-2505-41fc-9f5e-699cfc45ab00][Override color saturation]]).
-
-The above are expanded into a fully fledged derivative elsewhere in this
-document ([[#h:736c0ff5-8c9c-4565-82cf-989e57d07d4a][Override colors completely]]).
-
-For manual interventions it is advised to inspect the source code of
-~modus-themes-operandi-colors~ and ~modus-themes-vivendi-colors~ for the
-inline commentary: it explains what the intended use of each palette
-subset is.
-
-Furthermore, users may benefit from the ~modus-themes-contrast~ function
-that we provide: [[#h:02e25930-e71a-493d-828a-8907fc80f874][test color combinations]]. It measures the contrast
-ratio between two color values, so it can help in overriding the palette
-(or a subset thereof) without making the end result inaccessible.
-
-** Override color saturation
-:properties:
-:custom_id: h:4589acdc-2505-41fc-9f5e-699cfc45ab00
-:end:
-#+cindex: Change a theme's color saturation
-
-In the previous section we documented how one can override color values
-manually ([[#h:307d95dd-8dbd-4ece-a543-10ae86f155a6][Override colors]]). Here we use a programmatic approach which
-leverages the built-in ~color-saturate-name~ function to adjust the
-saturation of all color values used by the active Modus theme. Our goal
-is to prepare a counterpart of the active theme's palette that holds
-modified color values, adjusted for a percent change in saturation. A
-positive number amplifies the effect, while a negative one will move
-towards a grayscale spectrum.
-
-We start with a function that can be either called from Lisp or invoked
-interactively. In the former scenario, we pass to it the rate of change
-we want. While in the latter, a minibuffer prompt asks for a number to
-apply the desired effect. In either case, we intend to assign anew the
-value of ~modus-themes-operandi-color-overrides~ (light theme) and the
-same for ~modus-themes-vivendi-color-overrides~ (dark theme).
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-saturate (percent)
- "Saturate current Modus theme palette overrides by PERCENT."
- (interactive
- (list (read-number "Saturation by percent: ")))
- (let* ((theme (modus-themes--current-theme))
- (palette (pcase theme
- ('modus-operandi modus-themes-operandi-colors)
- ('modus-vivendi modus-themes-vivendi-colors)
- (_ (error "No Modus theme is active"))))
- (overrides (pcase theme
- ('modus-operandi 'modus-themes-operandi-color-overrides)
- ('modus-vivendi 'modus-themes-vivendi-color-overrides)
- (_ (error "No Modus theme is active")))))
- (let (name cons colors)
- (dolist (cons palette)
- (setq name (color-saturate-name (cdr cons) percent))
- (setq name (format "%s" name))
- (setq cons `(,(car cons) . ,name))
- (push cons colors))
- (set overrides colors))
- (pcase theme
- ('modus-operandi (modus-themes-load-operandi))
- ('modus-vivendi (modus-themes-load-vivendi)))))
-
-;; sample Elisp calls (or call `my-modus-themes-saturate' interactively)
-(my-modus-themes-saturate 50)
-(my-modus-themes-saturate -75)
-#+end_src
-
-Using the above has an immediate effect, as it reloads the active Modus
-theme.
-
-The =my-modus-themes-saturate= function stores new color values in the
-variables ~modus-themes-operandi-color-overrides~ and
-~modus-themes-vivendi-color-overrides~, meaning that it undoes changes
-implemented by the user on individual colors. To have both automatic
-saturation adjustment across the board and retain per-case edits to the
-palette, some tweaks to the above function are required. For example:
-
-#+begin_src emacs-lisp
-(defvar my-modus-themes-vivendi-extra-color-overrides
- '((fg-main . "#ead0c0")
- (bg-main . "#050515"))
- "My bespoke colors for `modus-vivendi'.")
-
-(defvar my-modus-themes-operandi-extra-color-overrides
- '((fg-main . "#1a1a1a")
- (bg-main . "#fefcf4"))
- "My bespoke colors for `modus-operandi'.")
-
-(defun my-modus-themes-saturate (percent)
- "Saturate current Modus theme palette overrides by PERCENT.
-Preserve the color values stored in
-`my-modus-themes-operandi-extra-color-overrides',
-`my-modus-themes-vivendi-extra-color-overrides'."
- (interactive
- (list (read-number "Saturation by percent: ")))
- (let* ((theme (modus-themes--current-theme))
- (palette (pcase theme
- ('modus-operandi modus-themes-operandi-colors)
- ('modus-vivendi modus-themes-vivendi-colors)
- (_ (error "No Modus theme is active"))))
- (overrides (pcase theme
- ('modus-operandi 'modus-themes-operandi-color-overrides)
- ('modus-vivendi 'modus-themes-vivendi-color-overrides)
- (_ (error "No Modus theme is active"))))
- (extra-overrides (pcase theme
- ('modus-operandi my-modus-themes-operandi-extra-color-overrides)
- ('modus-vivendi my-modus-themes-vivendi-extra-color-overrides)
- (_ (error "No Modus theme is active")))))
- (let (name cons colors)
- (dolist (cons palette)
- (setq name (color-saturate-name (cdr cons) percent))
- (setq name (format "%s" name))
- (setq cons `(,(car cons) . ,name))
- (push cons colors))
- (set overrides (append extra-overrides colors)))
- (pcase theme
- ('modus-operandi (modus-themes-load-operandi))
- ('modus-vivendi (modus-themes-load-vivendi)))))
-#+end_src
-
-To disable the effect, one must reset the aforementioned variables of
-the themes to ~nil~. Or specify a command for it, such as by taking
-inspiration from the ~modus-themes-toggle~ we already provide:
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-revert-overrides ()
- "Reset palette overrides and reload active Modus theme."
- (interactive)
- (setq modus-themes-operandi-color-overrides nil
- modus-themes-vivendi-color-overrides nil)
- (pcase (modus-themes--current-theme)
- ('modus-operandi (modus-themes-load-operandi))
- ('modus-vivendi (modus-themes-load-vivendi))))
-#+end_src
-
-** Override colors through blending
-:properties:
-:custom_id: h:80c326bf-fe32-47b2-8c59-58022256fd6e
-:end:
-#+cindex: Change theme colors through blending
-
-This is yet another method of overriding color values.
-
-[[#h:307d95dd-8dbd-4ece-a543-10ae86f155a6][Override colors]].
-
-[[#h:4589acdc-2505-41fc-9f5e-699cfc45ab00][Override color saturation]].
-
-Building on ideas and concepts from the previous sections, this method
-blends the entire palette at once with the chosen colors. The function
-~my-modus-themes-interpolate~ blends two colors, taking a value from the
-themes and mixing it with a user-defined color to arrive at a midpoint.
-This scales to all background and foreground colors with the help of the
-~my-modus-themes-tint-palette~ function.
-
-#+begin_src emacs-lisp
-(setq my-modus-operandi-bg-blend "#fbf1c7"
- my-modus-operandi-fg-blend "#3a6084"
- my-modus-vivendi-bg-blend "#3a4042"
- my-modus-vivendi-fg-blend "#d7b765")
-
-;; Adapted from the `kurecolor-interpolate' function of kurecolor.el
-(defun my-modus-themes-interpolate (color1 color2)
- (cl-destructuring-bind (r g b)
- (mapcar #'(lambda (n) (* (/ n 2) 255.0))
- (cl-mapcar '+ (color-name-to-rgb color1) (color-name-to-rgb color2)))
- (format "#%02X%02X%02X" r g b)))
-
-(defun my-modus-themes-tint-palette (palette bg-blend fg-blend)
- "Modify Modus PALETTE programmatically and return a new palette.
-Blend background colors with BG-BLEND and foreground colors with FG-BLEND."
- (let (name cons colors)
- (dolist (cons palette)
- (let ((blend (if (string-match "bg" (symbol-name (car cons)))
- bg-blend
- fg-blend)))
- (setq name (my-modus-themes-interpolate (cdr cons) blend)))
- (setq name (format "%s" name))
- (setq cons `(,(car cons) . ,name))
- (push cons colors))
- colors))
-
-(define-minor-mode modus-themes-tinted-mode
- "Tweak some Modus themes colors."
- :init-value nil
- :global t
- (if modus-themes-tinted-mode
- (setq modus-themes-operandi-color-overrides
- (my-modus-themes-tint-palette modus-themes-operandi-colors
- my-modus-operandi-bg-blend
- my-modus-operandi-fg-blend)
- modus-themes-vivendi-color-overrides
- (my-modus-themes-tint-palette modus-themes-vivendi-colors
- my-modus-vivendi-bg-blend
- my-modus-vivendi-fg-blend))
- (setq modus-themes-operandi-color-overrides nil
- modus-themes-vivendi-color-overrides nil)))
-
-(modus-themes-tinted-mode 1)
-#+end_src
-
-** Override colors completely
-:PROPERTIES:
-:CUSTOM_ID: h:736c0ff5-8c9c-4565-82cf-989e57d07d4a
-:END:
-
-Based on the ideas we have already covered in these sections, the
-following code block provides a complete, bespoke pair of color palettes
-which override the defaults. They are implemented as a minor mode, as
-explained before ([[#h:307d95dd-8dbd-4ece-a543-10ae86f155a6][Override colors]]). We call them "Summertime" for
-convenience.
-
-#+begin_src emacs-lisp
-;; Read the relevant blog post:
-;; <https://protesilaos.com/codelog/2022-07-26-modus-themes-color-override-demo/>
-(define-minor-mode modus-themes-summertime
- "Refashion the Modus themes by overriding their colors.
-
-This is a complete technology demonstration to show how to
-manually override the colors of the Modus themes. I have taken
-good care of those overrides to make them work as a fully fledged
-color scheme that is compatible with all user options of the
-Modus themes.
-
-These overrides are usable by those who (i) like something more
-fancy than the comparatively austere looks of the Modus themes,
-and (ii) can cope with a lower contrast ratio.
-
-The overrides are set up as a minor mode, so that the user can
-activate the effect on demand. Those who want to load the
-overrides at all times can either add them directly to their
-configuration or enable `modus-themes-summertime' BEFORE loading
-either of the Modus themes (if the overrides are evaluated after
-the theme, the theme must be reloaded).
-
-Remember that all changes to theme-related variables require a
-reload of the theme to take effect (the Modus themes have lots of
-user options, apart from those overrides).
-
-The `modus-themes-summertime' IS NOT an official extension to the
-Modus themes and DOES NOT comply with its lofty accessibility
-standards. It is included in the official manual as guidance for
-those who want to make use of the color overriding facility we
-provide."
- :init-value nil
- :global t
- (if modus-themes-summertime
- (setq modus-themes-operandi-color-overrides
- '((bg-main . "#fff0f2")
- (bg-dim . "#fbe6ef")
- (bg-alt . "#f5dae6")
- (bg-hl-line . "#fad8e3")
- (bg-active . "#efcadf")
- (bg-inactive . "#f3ddef")
- (bg-active-accent . "#ffbbef")
- (bg-region . "#dfc5d1")
- (bg-region-accent . "#efbfef")
- (bg-region-accent-subtle . "#ffd6ef")
- (bg-header . "#edd3e0")
- (bg-tab-active . "#ffeff2")
- (bg-tab-inactive . "#f8d3ef")
- (bg-tab-inactive-accent . "#ffd9f5")
- (bg-tab-inactive-alt . "#e5c0d5")
- (bg-tab-inactive-alt-accent . "#f3cce0")
- (fg-main . "#543f78")
- (fg-dim . "#5f476f")
- (fg-alt . "#7f6f99")
- (fg-unfocused . "#8f6f9f")
- (fg-active . "#563068")
- (fg-inactive . "#8a5698")
- (fg-docstring . "#5f5fa7")
- (fg-comment-yellow . "#a9534f")
- (fg-escape-char-construct . "#8b207f")
- (fg-escape-char-backslash . "#a06d00")
- (bg-special-cold . "#d3e0f4")
- (bg-special-faint-cold . "#e0efff")
- (bg-special-mild . "#c4ede0")
- (bg-special-faint-mild . "#e0f0ea")
- (bg-special-warm . "#efd0c4")
- (bg-special-faint-warm . "#ffe4da")
- (bg-special-calm . "#f0d3ea")
- (bg-special-faint-calm . "#fadff9")
- (fg-special-cold . "#405fb8")
- (fg-special-mild . "#407f74")
- (fg-special-warm . "#9d6f4f")
- (fg-special-calm . "#af509f")
- (bg-completion . "#ffc5e5")
- (bg-completion-subtle . "#f7cfef")
- (red . "#ed2f44")
- (red-alt . "#e0403d")
- (red-alt-other . "#e04059")
- (red-faint . "#ed4f44")
- (red-alt-faint . "#e0603d")
- (red-alt-other-faint . "#e06059")
- (green . "#217a3c")
- (green-alt . "#417a1c")
- (green-alt-other . "#006f3c")
- (green-faint . "#318a4c")
- (green-alt-faint . "#518a2c")
- (green-alt-other-faint . "#20885c")
- (yellow . "#b06202")
- (yellow-alt . "#a95642")
- (yellow-alt-other . "#a06f42")
- (yellow-faint . "#b07232")
- (yellow-alt-faint . "#a96642")
- (yellow-alt-other-faint . "#a08042")
- (blue . "#275ccf")
- (blue-alt . "#475cc0")
- (blue-alt-other . "#3340ef")
- (blue-faint . "#476ce0")
- (blue-alt-faint . "#575ccf")
- (blue-alt-other-faint . "#3f60d7")
- (magenta . "#bf317f")
- (magenta-alt . "#d033c0")
- (magenta-alt-other . "#844fe4")
- (magenta-faint . "#bf517f")
- (magenta-alt-faint . "#d053c0")
- (magenta-alt-other-faint . "#846fe4")
- (cyan . "#007a9f")
- (cyan-alt . "#3f709f")
- (cyan-alt-other . "#107f7f")
- (cyan-faint . "#108aaf")
- (cyan-alt-faint . "#3f80af")
- (cyan-alt-other-faint . "#3088af")
- (red-active . "#cd2f44")
- (green-active . "#116a6c")
- (yellow-active . "#993602")
- (blue-active . "#475ccf")
- (magenta-active . "#7f2ccf")
- (cyan-active . "#007a8f")
- (red-nuanced-bg . "#ffdbd0")
- (red-nuanced-fg . "#ed6f74")
- (green-nuanced-bg . "#dcf0dd")
- (green-nuanced-fg . "#3f9a4c")
- (yellow-nuanced-bg . "#fff3aa")
- (yellow-nuanced-fg . "#b47232")
- (blue-nuanced-bg . "#e3e3ff")
- (blue-nuanced-fg . "#201f6f")
- (magenta-nuanced-bg . "#fdd0ff")
- (magenta-nuanced-fg . "#c0527f")
- (cyan-nuanced-bg . "#dbefff")
- (cyan-nuanced-fg . "#0f3f60")
- (bg-diff-heading . "#b7cfe0")
- (fg-diff-heading . "#041645")
- (bg-diff-added . "#d6f0d6")
- (fg-diff-added . "#004520")
- (bg-diff-changed . "#fcefcf")
- (fg-diff-changed . "#524200")
- (bg-diff-removed . "#ffe0ef")
- (fg-diff-removed . "#891626")
- (bg-diff-refine-added . "#84cfa4")
- (fg-diff-refine-added . "#002a00")
- (bg-diff-refine-changed . "#cccf8f")
- (fg-diff-refine-changed . "#302010")
- (bg-diff-refine-removed . "#da92b0")
- (fg-diff-refine-removed . "#500010")
- (bg-diff-focus-added . "#a6e5c6")
- (fg-diff-focus-added . "#002c00")
- (bg-diff-focus-changed . "#ecdfbf")
- (fg-diff-focus-changed . "#392900")
- (bg-diff-focus-removed . "#efbbcf")
- (fg-diff-focus-removed . "#5a0010"))
- modus-themes-vivendi-color-overrides
- '((bg-main . "#25152a")
- (bg-dim . "#2a1930")
- (bg-alt . "#382443")
- (bg-hl-line . "#332650")
- (bg-active . "#463358")
- (bg-inactive . "#2d1f3a")
- (bg-active-accent . "#50308f")
- (bg-region . "#5d4a67")
- (bg-region-accent . "#60509f")
- (bg-region-accent-subtle . "#3f285f")
- (bg-header . "#3a2543")
- (bg-tab-active . "#26162f")
- (bg-tab-inactive . "#362647")
- (bg-tab-inactive-accent . "#36265a")
- (bg-tab-inactive-alt . "#3e2f5a")
- (bg-tab-inactive-alt-accent . "#3e2f6f")
- (fg-main . "#debfe0")
- (fg-dim . "#d0b0da")
- (fg-alt . "#ae85af")
- (fg-unfocused . "#8e7f9f")
- (fg-active . "#cfbfef")
- (fg-inactive . "#b0a0c0")
- (fg-docstring . "#c8d9f7")
- (fg-comment-yellow . "#cf9a70")
- (fg-escape-char-construct . "#ff75aa")
- (fg-escape-char-backslash . "#dbab40")
- (bg-special-cold . "#2a3f58")
- (bg-special-faint-cold . "#1e283f")
- (bg-special-mild . "#0f3f31")
- (bg-special-faint-mild . "#0f281f")
- (bg-special-warm . "#44331f")
- (bg-special-faint-warm . "#372213")
- (bg-special-calm . "#4a314f")
- (bg-special-faint-calm . "#3a223f")
- (fg-special-cold . "#c0b0ff")
- (fg-special-mild . "#bfe0cf")
- (fg-special-warm . "#edc0a6")
- (fg-special-calm . "#ff9fdf")
- (bg-completion . "#502d70")
- (bg-completion-subtle . "#451d65")
- (red . "#ff5f6f")
- (red-alt . "#ff8f6d")
- (red-alt-other . "#ff6f9d")
- (red-faint . "#ffa0a0")
- (red-alt-faint . "#f5aa80")
- (red-alt-other-faint . "#ff9fbf")
- (green . "#51ca5c")
- (green-alt . "#71ca3c")
- (green-alt-other . "#51ca9c")
- (green-faint . "#78bf78")
- (green-alt-faint . "#99b56f")
- (green-alt-other-faint . "#88bf99")
- (yellow . "#f0b262")
- (yellow-alt . "#f0e242")
- (yellow-alt-other . "#d0a272")
- (yellow-faint . "#d2b580")
- (yellow-alt-faint . "#cabf77")
- (yellow-alt-other-faint . "#d0ba95")
- (blue . "#778cff")
- (blue-alt . "#8f90ff")
- (blue-alt-other . "#8380ff")
- (blue-faint . "#82b0ec")
- (blue-alt-faint . "#a0acef")
- (blue-alt-other-faint . "#80b2f0")
- (magenta . "#ff70cf")
- (magenta-alt . "#ff77f0")
- (magenta-alt-other . "#ca7fff")
- (magenta-faint . "#e0b2d6")
- (magenta-alt-faint . "#ef9fe4")
- (magenta-alt-other-faint . "#cfa6ff")
- (cyan . "#30cacf")
- (cyan-alt . "#60caff")
- (cyan-alt-other . "#40b79f")
- (cyan-faint . "#90c4ed")
- (cyan-alt-faint . "#a0bfdf")
- (cyan-alt-other-faint . "#a4d0bb")
- (red-active . "#ff6059")
- (green-active . "#64dc64")
- (yellow-active . "#ffac80")
- (blue-active . "#4fafff")
- (magenta-active . "#cf88ff")
- (cyan-active . "#50d3d0")
- (red-nuanced-bg . "#440a1f")
- (red-nuanced-fg . "#ffcccc")
- (green-nuanced-bg . "#002904")
- (green-nuanced-fg . "#b8e2b8")
- (yellow-nuanced-bg . "#422000")
- (yellow-nuanced-fg . "#dfdfb0")
- (blue-nuanced-bg . "#1f1f5f")
- (blue-nuanced-fg . "#bfd9ff")
- (magenta-nuanced-bg . "#431641")
- (magenta-nuanced-fg . "#e5cfef")
- (cyan-nuanced-bg . "#042f49")
- (cyan-nuanced-fg . "#a8e5e5")
- (bg-diff-heading . "#304466")
- (fg-diff-heading . "#dae7ff")
- (bg-diff-added . "#0a383a")
- (fg-diff-added . "#94ba94")
- (bg-diff-changed . "#2a2000")
- (fg-diff-changed . "#b0ba9f")
- (bg-diff-removed . "#50163f")
- (fg-diff-removed . "#c6adaa")
- (bg-diff-refine-added . "#006a46")
- (fg-diff-refine-added . "#e0f6e0")
- (bg-diff-refine-changed . "#585800")
- (fg-diff-refine-changed . "#ffffcc")
- (bg-diff-refine-removed . "#952838")
- (fg-diff-refine-removed . "#ffd9eb")
- (bg-diff-focus-added . "#1d4c3f")
- (fg-diff-focus-added . "#b4dfb4")
- (bg-diff-focus-changed . "#424200")
- (fg-diff-focus-changed . "#d0daaf")
- (bg-diff-focus-removed . "#6f0f39")
- (fg-diff-focus-removed . "#eebdba")))
- (setq modus-themes-operandi-color-overrides nil
- modus-themes-vivendi-color-overrides nil)))
-#+end_src
-
** Font configurations for Org and others
:properties:
:custom_id: h:defcf4fc-8fa8-4c29-b12e-7119582cc929
@@ -3400,8 +2827,8 @@ the ~variable-pitch~ (proportional spacing) and ~fixed-pitch~ (monospaced)
faces respectively. It may also be convenient to set your main typeface
by configuring the ~default~ face the same way.
-[ The =fontaine= package on GNU ELPA (by the author of the modus-themes)
- is designed to handle this case. ]
+[ The ~fontaine~ package on GNU ELPA (by Protesilaos) is designed to
+ handle this case. ]
Put something like this in your initialization file (also consider
reading the doc string of ~set-face-attribute~):
@@ -3537,7 +2964,7 @@ of the themes, which can make it easier to redefine faces in bulk).
(add-hook 'modus-themes-after-load-theme-hook #'my-modes-themes-bold-italic-faces)
#+end_src
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
** Custom Org todo keyword and priority faces
:properties:
@@ -3623,8 +3050,6 @@ Their documentation strings will offer you further guidance.
Recall that the themes let you retrieve a color from their palette. Do
it if you plan to control face attributes.
-[[#h:1487c631-f4fe-490d-8d58-d72ffa3bd474][Custom face specs using the themes' palette]].
-
[[#h:02e25930-e71a-493d-828a-8907fc80f874][Check color combinations]].
** Custom Org emphasis faces
@@ -3649,7 +3074,7 @@ specification of that variable looks like this:
With the exception of ~org-verbatim~ and ~org-code~ faces, everything else
uses the corresponding type of emphasis: a bold typographic weight, or
-italicized, underlined, and struck through text.
+italicised, underlined, and struck through text.
The best way for users to add some extra attributes, such as a
foreground color, is to define their own faces and assign them to the
@@ -3872,8 +3297,8 @@ palette in large part because certain colors are only meant to be used
in combination with some others. Consult the source code for the
minutia and relevant commentary.
-Such knowledge may prove valuable while attempting to override some of
-the themes' colors: [[#h:307d95dd-8dbd-4ece-a543-10ae86f155a6][Override colors]].
+Such knowledge may prove valuable while attempting to customize the
+theme's color palette.
** Load theme depending on time of day
:properties:
@@ -3884,9 +3309,9 @@ While we do provide ~modus-themes-toggle~ to manually switch between the
themes, users may also set up their system to perform such a task
automatically at sunrise and sunset.
-This can be accomplished by specifying the coordinates of one's location
-using the built-in {{{file(solar.el)}}} and then configuring the =circadian=
-package:
+This can be accomplished by specifying the coordinates of one's
+location using the built-in {{{file(solar.el)}}} and then configuring
+the ~circadian~ package:
#+begin_src emacs-lisp
(use-package solar ; built-in
@@ -3895,7 +3320,7 @@ package:
calendar-longitude 33.36))
(use-package circadian ; you need to install this
- :ensure
+ :ensure t
:after solar
:config
(setq circadian-themes '((:sunrise . modus-operandi)
@@ -3925,9 +3350,10 @@ To remap the buffer's backdrop, we start with a function like this one:
#+begin_src emacs-lisp
(defun my-pdf-tools-backdrop ()
- (face-remap-add-relative
- 'default
- `(:background ,(modus-themes-color 'bg-alt))))
+ (modus-themes-with-colors
+ (face-remap-add-relative
+ 'default
+ `(:background ,bg-dim))))
(add-hook 'pdf-tools-enabled-hook #'my-pdf-tools-backdrop)
#+end_src
@@ -3946,9 +3372,10 @@ at something like the following, which builds on the above example:
#+begin_src emacs-lisp
(defun my-pdf-tools-backdrop ()
- (face-remap-add-relative
- 'default
- `(:background ,(modus-themes-color 'bg-alt))))
+ (modus-themes-with-colors
+ (face-remap-add-relative
+ 'default
+ `(:background ,bg-dim))))
(defun my-pdf-tools-midnight-mode-toggle ()
(when (derived-mode-p 'pdf-view-mode)
@@ -3972,101 +3399,6 @@ With those in place, PDFs have a distinct backdrop for their page, while
buffers with major-mode as ~pdf-view-mode~ automatically switches to dark
mode when ~modus-themes-toggle~ is called.
-** Decrease mode line height
-:properties:
-:custom_id: h:03be4438-dae1-4961-9596-60a307c070b5
-:end:
-#+cindex: Decrease mode line height
-
-By default, the mode line of the Modus themes is set to 1 pixel width
-for its =:box= attribute. In contrast, the mode line of stock Emacs is -1
-pixel. This small difference is considered necessary for the purposes
-of accessibility as our out-of-the-box design has a prominent color
-around the mode line (a border) to make its boundaries clear. With a
-negative width the border and the text on the mode line can feel a bit
-more difficult to read under certain scenaria.
-
-Furthermore, the user option ~modus-themes-mode-line~ ([[#h:27943af6-d950-42d0-bc23-106e43f50a24][Mode line]]) does not
-allow for such a negative value because there are many edge cases that
-simply make for a counter-intuitive set of possibilities, such as a =0=
-value not being acceptable by the underlying face infrastructure, and
-negative values greater than =-2= not being particularly usable.
-
-For these reasons, users who wish to decrease the overall height of the
-mode line must handle things on their own by implementing the methods
-for face customization documented herein.
-
-[[#h:1487c631-f4fe-490d-8d58-d72ffa3bd474][Basic face customization]].
-
-One such method is to create a function that configures the desired
-faces and hook it to ~modus-themes-after-load-theme-hook~ so that it
-persists while switching between the Modus themes with the command
-~modus-themes-toggle~.
-
-This one simply disables the box altogether, which will reduce the
-height of the mode lines, but also remove their border:
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (set-face-attribute 'mode-line nil :box nil)
- (set-face-attribute 'mode-line-inactive nil :box nil))
-
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
-#+end_src
-
-The above relies on the ~set-face-attribute~ function, though users who
-plan to re-use colors from the theme and do so at scale are better off
-with the more streamlined combination of the ~modus-themes-with-colors~
-macro and ~custom-set-faces~.
-
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face customization at scale]].
-
-As explained before in this document, this approach has a syntax that is
-consistent with the source code of the themes, so it probably is easier
-to re-use parts of the design.
-
-The following emulates the stock Emacs style, while still using the
-colors of the Modus themes (whichever attribute is not explicitly stated
-is inherited from the underlying theme):
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (modus-themes-with-colors
- (custom-set-faces
- `(mode-line ((,class :box (:line-width -1 :style released-button))))
- `(mode-line-inactive ((,class :box (:line-width -1 :color ,bg-region)))))))
-
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
-#+end_src
-
-And this one is like the out-of-the-box style of the Modus themes, but
-with the -1 height instead of 1:
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (modus-themes-with-colors
- (custom-set-faces
- `(mode-line ((,class :box (:line-width -1 :color ,fg-alt))))
- `(mode-line-inactive ((,class :box (:line-width -1 :color ,bg-region)))))))
-
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
-#+end_src
-
-Finally, to also change the background color of the active mode line,
-such as that it looks like the "accented" variant which is possible via
-the user option ~modus-themes-mode-line~, the =:background= attribute needs
-to be specified as well:
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (modus-themes-with-colors
- (custom-set-faces
- `(mode-line ((,class :box (:line-width -1 :color ,fg-alt) :background ,bg-active-accent)))
- `(mode-line-inactive ((,class :box (:line-width -1 :color ,bg-region)))))))
-
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
-#+end_src
-
** Toggle themes without reloading them
:properties:
:custom_id: h:b40aca50-a3b2-4c43-be58-2c26fcd14237
@@ -4106,13 +3438,13 @@ varying skill levels, from beginners to experts. This means that we try
to make things easier by not expecting anyone reading this document to
be proficient in Emacs Lisp or programming in general.
-Such a case is with the use of the ~modus-themes-after-load-theme-hook~,
-which runs after ~modus-themes-toggle~, ~modus-themes-load-operandi~, or
-~modus-themes-load-vivendi~ is evaluated. We recommend using that hook
-for advanced customizations, because (1) we know for sure that it is
+Such a case is with the use of ~modus-themes-after-load-theme-hook~,
+which runs after the ~modus-themes-load-theme~ function (used by the
+command ~modus-themes-toggle~). We recommend using that hook for
+advanced customizations, because (1) we know for sure that it is
available once the themes are loaded, and (2) anyone consulting this
-manual, especially the sections on enabling and loading the themes, will
-be in a good position to benefit from that hook.
+manual, especially the sections on enabling and loading the themes,
+will be in a good position to benefit from that hook.
Advanced users who have a need to switch between the Modus themes and
other items will find that such a hook does not meet their requirements:
@@ -4138,246 +3470,26 @@ also has the benefit that it does not depend on functions such as
~modus-themes-toggle~ and the others mentioned above. ~enable-theme~ is
called internally by ~load-theme~, so the hook works everywhere.
-Now this specific piece of Elisp may be simple for experienced users,
-but it is not easy to read for newcomers, including the author of the
-Modus themes for the first several months of their time as an Emacs
-user. Hence our hesitation to recommend it as part of the standard
-setup of the Modus themes (it is generally a good idea to understand
-what the implications are of advising a function).
-
-** Diffs with only the foreground
-:properties:
-:custom_id: h:e2aed9eb-5e1e-45ec-bbd7-bc4faeab3236
-:end:
-#+cindex: Foreground-only diffs
-
-Buffers that show differences between versions of a file or buffer, such
-as in ~diff-mode~ and ~ediff~ always use color-coded background and
-foreground combinations.
-
-[[#h:ea7ac54f-5827-49bd-b09f-62424b3b6427][Option for diff buffer looks]].
-
-User may, however, prefer a style that removes the color-coded
-backgrounds from regular changes while keeping them for word-wise (aka
-"refined") changes---backgrounds for word-wise diffs are helpful in
-context. To make this happen, one can use the ~modus-themes-with-colors~
-macro ([[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]]):
+The downside of the theme-agnostic hook is that any functions added to
+it will likely not be able to benefit from macro calls that read the
+active theme, such as ~modus-themes-with-colors~. Not all Emacs
+themes have the same capabilities.
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (modus-themes-with-colors
- (custom-set-faces
- `(modus-themes-diff-added ((,class :background unspecified :foreground ,green))) ; OR ,blue for deuteranopia
- `(modus-themes-diff-changed ((,class :background unspecified :foreground ,yellow)))
- `(modus-themes-diff-removed ((,class :background unspecified :foreground ,red)))
-
- `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added :foreground ,fg-diff-added)))
- ;; `(modus-themes-diff-refine-added ((,class :background ,bg-diff-added-deuteran :foreground ,fg-diff-added-deuteran)))
- `(modus-themes-diff-refine-changed ((,class :background ,bg-diff-changed :foreground ,fg-diff-changed)))
- `(modus-themes-diff-refine-removed ((,class :background ,bg-diff-removed :foreground ,fg-diff-removed)))
-
- `(modus-themes-diff-focus-added ((,class :background ,bg-dim :foreground ,green))) ; OR ,blue for deuteranopia
- `(modus-themes-diff-focus-changed ((,class :background ,bg-dim :foreground ,yellow)))
- `(modus-themes-diff-focus-removed ((,class :background ,bg-dim :foreground ,red)))
-
- `(modus-themes-diff-heading ((,class :background ,bg-alt :foreground ,fg-main)))
-
- `(diff-indicator-added ((,class :foreground ,green))) ; OR ,blue for deuteranopia
- `(diff-indicator-changed ((,class :foreground ,yellow)))
- `(diff-indicator-removed ((,class :foreground ,red)))
-
- `(magit-diff-added ((,class :background unspecified :foreground ,green-faint)))
- `(magit-diff-changed ((,class :background unspecified :foreground ,yellow-faint)))
- `(magit-diff-removed ((,class :background unspecified :foreground ,red-faint)))
- `(magit-diff-context-highlight ((,class :background ,bg-dim :foreground ,fg-dim))))))
-
-;; This is so that the changes persist when switching between
-;; `modus-operandi' and `modus-vivendi'.
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
-#+end_src
-
-This used to be an optional style of ~modus-themes-diffs~, but has been
-removed since version =2.0.0= to ensure that the accessibility standard
-and aesthetic quality of the themes is not compromised.
-
-** Ediff without diff color-coding
-:properties:
-:custom_id: h:b0b31802-0216-427e-b071-1a47adcfe608
-:end:
-
-Ediff uses the same color-coding as ordinary diffs in ~diff-mode~, Magit,
-etc. ([[#h:ea7ac54f-5827-49bd-b09f-62424b3b6427][Option for diff buffer looks]]). This is consistent with the
-principle of least surprise.
-
-Users may, however, prefer to treat Ediff differently on the premise
-that it does not need any particular color-coding to show added or
-removed lines/words: it does not use the =+= or =-= markers, after all.
-
-This can be achieved by customizing the Ediff faces with color
-combinations that do not carry the same connotations as those of diffs.
-Consider this example, which leverages the ~modus-themes-with-colors~
-macro ([[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]]):
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-custom-faces ()
- (modus-themes-with-colors
- (custom-set-faces
- `(ediff-current-diff-A ((,class :inherit unspecified :background ,bg-special-faint-cold :foreground ,fg-special-cold)))
- `(ediff-current-diff-B ((,class :inherit unspecified :background ,bg-special-faint-warm :foreground ,fg-special-warm)))
- `(ediff-current-diff-C ((,class :inherit unspecified :background ,bg-special-faint-calm :foreground ,fg-special-calm)))
- `(ediff-fine-diff-A ((,class :inherit unspecified :background ,bg-special-cold :foreground ,fg-special-cold)))
- `(ediff-fine-diff-B ((,class :inherit unspecified :background ,bg-special-warm :foreground ,fg-special-warm)))
- `(ediff-fine-diff-C ((,class :inherit unspecified :background ,bg-special-calm :foreground ,fg-special-calm))))))
-
-;; This is so that the changes persist when switching between
-;; `modus-operandi' and `modus-vivendi'.
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
-#+end_src
-
-Remove the =:foreground= and its value to preserve the underlying
-coloration.
-
-[[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Visualize the active Modus theme's palette]].
-
-** Near-monochrome syntax highlighting
-:properties:
-:custom_id: h:c1f3fa8e-7a63-4a6f-baf3-a7febc0661f0
-:end:
-#+cindex: Monochrome code syntax
-
-While the Modus themes do provide a user option to control the overall
-style of syntax highlighting in programming major modes, they do not
-cover the possibility of a monochromatic or near-monochromatic design
-([[#h:c119d7b2-fcd4-4e44-890e-5e25733d5e52][Option for syntax highlighting]]). This is due to the multitude of
-preferences involved: one may like comments to be styled with an accent
-value, another may want certain constructs to be bold, a third may apply
-italics to doc strings but not comments... The possibilities are
-virtually endless. As such, this sort of design is best handled at the
-user level in accordance with the information furnished elsewhere in
-this manual.
-
-[[#h:1487c631-f4fe-490d-8d58-d72ffa3bd474][Case-by-case face specs using the themes' palette]].
-
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
-
-The gist is that we want to override the font-lock faces. For our
-changes to persist while switching between ~modus-operandi~ and
-~modus-vivendi~ we wrap our face overrides in a function that we hook to
-~modus-themes-after-load-theme-hook~.
-
-Users who want to replicate the structure of the themes' source code are
-advised to use the examples with ~custom-set-faces~. Those who prefer a
-different approach can use the snippets which call ~set-face-attribute~.
-Below are the code blocks.
-
-The following uses a yellow accent value for comments and green hues for
-strings. Regexp grouping constructs have color values that work in the
-context of a green string. All other elements use the main foreground
-color, except warnings such as the ~user-error~ function in Elisp
-buffers which gets a subtle red tint (not to be confused with the
-~warning~ face which is used for genuine warnings). Furthermore, notice
-the ~modus-themes-bold~ and ~modus-themes-slant~ which apply the
-preference set in the user options ~modus-themes-bold-constructs~ and
-~modus-themes-italic-constructs~, respectively. Users who do not want
-this conditionally must replace these faces with ~bold~ and ~italic~
-respectively (or ~unspecified~ to disable the effect altogether).
-
-#+begin_src emacs-lisp
-;; This is the hook. It will not be replicated across all code samples.
-(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-subtle-syntax)
-
-(defun my-modus-themes-subtle-syntax ()
- (modus-themes-with-colors
- (custom-set-faces
- `(font-lock-builtin-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-comment-delimiter-face ((,class :inherit font-lock-comment-face)))
- `(font-lock-comment-face ((,class :inherit unspecified :foreground ,fg-comment-yellow)))
- `(font-lock-constant-face ((,class :foreground unspecified)))
- `(font-lock-doc-face ((,class :inherit modus-themes-slant :foreground ,fg-special-mild)))
- `(font-lock-function-name-face ((,class :foreground unspecified)))
- `(font-lock-keyword-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-negation-char-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-preprocessor-face ((,class :foreground unspecified)))
- `(font-lock-regexp-grouping-backslash ((,class :inherit bold :foreground ,yellow)))
- `(font-lock-regexp-grouping-construct ((,class :inherit bold :foreground ,blue-alt-other)))
- `(font-lock-string-face ((,class :foreground ,green-alt-other)))
- `(font-lock-type-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-variable-name-face ((,class :foreground unspecified)))
- `(font-lock-warning-face ((,class :inherit modus-themes-bold :foreground ,red-nuanced-fg))))))
-
-;; Same as above with `set-face-attribute' instead of `custom-set-faces'
-(defun my-modus-themes-subtle-syntax ()
- (modus-themes-with-colors
- (set-face-attribute 'font-lock-builtin-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-comment-delimiter-face nil :inherit 'font-lock-comment-face)
- (set-face-attribute 'font-lock-comment-face nil :inherit 'unspecified :foreground fg-comment-yellow)
- (set-face-attribute 'font-lock-constant-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-doc-face nil :inherit 'modus-themes-slant :foreground fg-special-mild)
- (set-face-attribute 'font-lock-function-name-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-keyword-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-negation-char-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-preprocessor-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-regexp-grouping-backslash nil :inherit 'bold :foreground yellow)
- (set-face-attribute 'font-lock-regexp-grouping-construct nil :inherit 'bold :foreground blue-alt-other)
- (set-face-attribute 'font-lock-string-face nil :foreground green-alt-other)
- (set-face-attribute 'font-lock-type-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-variable-name-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-warning-face nil :inherit 'modus-themes-bold :foreground red-nuanced-fg)))
-#+end_src
-
-The following sample is the same as above, except strings are blue and
-comments are gray. Regexp constructs are adapted accordingly.
-
-#+begin_src emacs-lisp
-(defun my-modus-themes-subtle-syntax ()
- (modus-themes-with-colors
- (custom-set-faces
- `(font-lock-builtin-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-comment-delimiter-face ((,class :inherit font-lock-comment-face)))
- `(font-lock-comment-face ((,class :inherit unspecified :foreground ,fg-alt)))
- `(font-lock-constant-face ((,class :foreground unspecified)))
- `(font-lock-doc-face ((,class :inherit modus-themes-slant :foreground ,fg-docstring)))
- `(font-lock-function-name-face ((,class :foreground unspecified)))
- `(font-lock-keyword-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-negation-char-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-preprocessor-face ((,class :foreground unspecified)))
- `(font-lock-regexp-grouping-backslash ((,class :inherit bold :foreground ,fg-escape-char-backslash)))
- `(font-lock-regexp-grouping-construct ((,class :inherit bold :foreground ,fg-escape-char-construct)))
- `(font-lock-string-face ((,class :foreground ,blue-alt)))
- `(font-lock-type-face ((,class :inherit modus-themes-bold :foreground unspecified)))
- `(font-lock-variable-name-face ((,class :foreground unspecified)))
- `(font-lock-warning-face ((,class :inherit modus-themes-bold :foreground ,red-nuanced-fg))))))
-
-;; Same as above with `set-face-attribute' instead of `custom-set-faces'
-(defun my-modus-themes-subtle-syntax ()
- (modus-themes-with-colors
- (set-face-attribute 'font-lock-builtin-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-comment-delimiter-face nil :inherit 'font-lock-comment-face)
- (set-face-attribute 'font-lock-comment-face nil :inherit 'unspecified :foreground fg-alt)
- (set-face-attribute 'font-lock-constant-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-doc-face nil :inherit 'modus-themes-slant :foreground fg-docstring)
- (set-face-attribute 'font-lock-function-name-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-keyword-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-negation-char-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-preprocessor-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-regexp-grouping-backslash nil :inherit 'bold :foreground fg-escape-char-backslash)
- (set-face-attribute 'font-lock-regexp-grouping-construct nil :inherit 'bold :foreground fg-escape-char-construct)
- (set-face-attribute 'font-lock-string-face nil :foreground blue-alt)
- (set-face-attribute 'font-lock-type-face nil :inherit 'modus-themes-bold :foreground 'unspecified)
- (set-face-attribute 'font-lock-variable-name-face nil :foreground 'unspecified)
- (set-face-attribute 'font-lock-warning-face nil :inherit 'modus-themes-bold :foreground red-nuanced-fg)))
-#+end_src
+In this document, we cover ~modus-themes-after-load-theme-hook~ though
+the user can replace it with ~after-enable-theme-hook~ should they
+need to (provided they understand the implications).
** Custom hl-todo colors
:PROPERTIES:
:CUSTOM_ID: h:2ef83a21-2f0a-441e-9634-473feb940743
:END:
-The =hl-todo= package provides the user option ~hl-todo-keyword-faces~:
-it specifies a pair of keyword and corresponding color value. The Modus
-themes configure that option in the interest of legibility. While this
-works for our purposes, users may still prefer to apply their custom
-values, in which case the following approach is necessary:
+The ~hl-todo~ package provides the user option
+~hl-todo-keyword-faces~: it specifies a pair of keyword and
+corresponding color value. The Modus themes configure that option in
+the interest of legibility. While this works for our purposes, users
+may still prefer to apply their custom values, in which case the
+following approach is necessary:
#+begin_src emacs-lisp
(defun my-modus-themes-hl-todo-faces ()
@@ -4411,7 +3523,7 @@ otherwise the defaults are not always legible.
:CUSTOM_ID: h:439c9e46-52e2-46be-b1dc-85841dd99671
:END:
-The =solaire-mode= package dims the background of what it considers
+The ~solaire-mode~ package dims the background of what it considers
ancillary "UI" buffers, such as the minibuffer and Dired buffers. The
Modus themes used to support Solaire on the premise that the user was
(i) opting in to it, (ii) understood why certain buffers were more gray,
@@ -4441,23 +3553,23 @@ arrangement that compromises on our accessibility standards and/or
hinders our efforts to provide the best possible experience while using
the Modus themes.
-As such, =solaire-mode= is not---and will not be---supported by the
+As such, ~solaire-mode~ is not---and will not be---supported by the
Modus themes (or any other of my themes, for that matter). Users who
want it must style the faces manually. Below is some sample code, based
on what we cover at length elsewhere in this manual:
[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
#+begin_src emacs-lisp
(defun my-modus-themes-custom-faces ()
(modus-themes-with-colors
(custom-set-faces
- `(solaire-default-face ((,class :inherit default :background ,bg-alt :foreground ,fg-dim)))
- `(solaire-line-number-face ((,class :inherit solaire-default-face :foreground ,fg-unfocused)))
- `(solaire-hl-line-face ((,class :background ,bg-active)))
- `(solaire-org-hide-face ((,class :background ,bg-alt :foreground ,bg-alt))))))
+ `(solaire-default-face ((,c :inherit default :background ,bg-dim :foreground ,fg-dim)))
+ `(solaire-line-number-face ((,c :inherit solaire-default-face :foreground ,fg-unfocused)))
+ `(solaire-hl-line-face ((,c :background ,bg-active)))
+ `(solaire-org-hide-face ((,c :background ,bg-dim :foreground ,bg-dim))))))
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
@@ -4487,65 +3599,51 @@ affected face groups. The items with an appended asterisk =*= tend to
have lots of extensions, so the "full support" may not be 100% true…
+ ace-window
-+ alert
++ agda2-mode
+ all-the-icons
+ all-the-icons-dired
+ all-the-icons-ibuffer
+ annotate
+ ansi-color
+ anzu
-+ apropos
-+ artbollocks-mode
+ auctex and TeX
+ auto-dim-other-buffers
+ avy
-+ awesome-tray
+ bbdb
+ binder
-+ bm
+ bongo
+ boon
+ bookmark
-+ breakpoint (provided by the built-in {{{file(gdb-mi.el)}}} library)
+ calendar and diary
-+ calfw
-+ calibredb
+ centaur-tabs
-+ cfrs
+ change-log and log-view (such as ~vc-print-log~, ~vc-print-root-log~)
+ chart
+ cider
+ circe
+ citar
-+ color-rg
++ clojure-mode
+ column-enforce-mode
+ company-mode*
-+ company-posframe
+ compilation-mode
+ completions
+ consult
+ corfu
+ corfu-quick
+ counsel*
-+ counsel-css
-+ cov
+ cperl-mode
+ crontab-mode
+ css-mode
+ csv-mode
+ ctrlf
+ custom (what you get with {{{kbd(M-x customize)}}})
-+ dap-mode
+- dashboard
+ deadgrep
-+ debbugs
+ deft
-+ denote
+ devdocs
+ dictionary
+ diff-hl
+ diff-mode
+ dim-autoload
-+ dir-treeview
+ dired
+ dired-async
+ dired-git
@@ -4553,11 +3651,8 @@ have lots of extensions, so the "full support" may not be 100% true…
+ dired-narrow
+ dired-subtree
+ diredfl
-+ diredp (dired+)
+ display-fill-column-indicator-mode
+ doom-modeline
-+ easy-jekyll
-+ ebdb
+ ediff
+ ein (Emacs IPython Notebook)
+ eglot
@@ -4571,36 +3666,23 @@ have lots of extensions, so the "full support" may not be 100% true…
+ emms
+ enh-ruby-mode (enhanced-ruby-mode)
+ epa
-+ equake
+ erc
-+ eros
+ ert
+ eshell
+ eshell-fringe-status
-+ eshell-git-prompt
-+ eshell-prompt-extras (epe)
-+ eshell-syntax-highlighting
+ evil* (evil-mode)
-+ evil-goggles
-+ evil-snipe
-+ evil-visual-mark-mode
+ eww
+ exwm
+ eyebrowse
-+ fancy-dabbrev
+ flycheck
+ flycheck-color-mode-line
+ flycheck-indicator
-+ flycheck-posframe
+ flymake
+ flyspell
+ flx
-+ freeze-it
+ focus
+ fold-this
+ font-lock (generic syntax highlighting)
-+ forge
-+ fountain (fountain-mode)
+ geiser
+ git-commit
+ git-gutter (and variants)
@@ -4609,23 +3691,16 @@ have lots of extensions, so the "full support" may not be 100% true…
+ gnus
+ gotest
+ golden-ratio-scroll-screen
-+ helm*
-+ helm-ls-git
-+ helm-switch-shell
-+ helm-xref
+ helpful
-+ highlight-indentation
+ highlight-numbers
+ highlight-parentheses ([[#h:24bab397-dcb2-421d-aa6e-ec5bd622b913][Note on highlight-parentheses.el]])
+ highlight-thing
-+ hl-defined
+ hl-fill-column
+ hl-line-mode
+ hl-todo
+ hydra
+ ibuffer
+ icomplete
-+ icomplete-vertical
+ ido-mode
+ iedit
+ iflipb
@@ -4635,7 +3710,6 @@ have lots of extensions, so the "full support" may not be 100% true…
+ info
+ info+ (info-plus)
+ info-colors
-+ interaction-log
+ ioccur
+ isearch, occur, etc.
+ ivy*
@@ -4644,34 +3718,25 @@ have lots of extensions, so the "full support" may not be 100% true…
+ journalctl-mode
+ js2-mode
+ julia
-+ jupyter
+ kaocha-runner
+ keycast
+ ledger-mode
+ leerzeichen
+ line numbers (~display-line-numbers-mode~ and global variant)
-+ lsp-mode
-+ lsp-ui
-+ macrostep
+ magit
-+ magit-imerge
+ make-mode
+ man
+ marginalia
+ markdown-mode
+ markup-faces (~adoc-mode~)
-+ mentor
+ messages
-+ mini-modeline
+ minimap
-+ mmm-mode
+ mode-line
+ mood-line
+ moody
+ mpdel
+ mu4e
+ multiple-cursors
-+ nano-modeline
+ neotree
+ notmuch
+ num3-mode
@@ -4698,11 +3763,8 @@ have lots of extensions, so the "full support" may not be 100% true…
+ pdf-tools
+ persp-mode
+ perspective
-+ phi-grep
-+ pomidor
+ popup
+ powerline
-+ powerline-evil
+ prism ([[#h:a94272e0-99da-4149-9e80-11a7e67a2cf2][Note for prism.el]])
+ prescient
+ proced
@@ -4710,19 +3772,15 @@ have lots of extensions, so the "full support" may not be 100% true…
+ pulse
+ pyim
+ quick-peek
-+ racket-mode
-+ rainbow-blocks
+ rainbow-delimiters
+ rcirc
++ rcirc-color
+ recursion-indicator
+ regexp-builder (also known as ~re-builder~)
+ rg (rg.el)
+ ripgrep
+ rmail
+ ruler-mode
-+ selectrum
-+ selectrum-prescient
-+ semantic
+ sesman
+ shell-script-mode
+ shortdoc
@@ -4734,9 +3792,7 @@ have lots of extensions, so the "full support" may not be 100% true…
+ slime (slbd)
+ sly
+ smart-mode-line
-+ smartparens
+ smerge
-+ spaceline
+ speedbar
+ spell-fu
+ stripes
@@ -4746,20 +3802,16 @@ have lots of extensions, so the "full support" may not be 100% true…
+ sx
+ symbol-overlay
+ syslog-mode
-+ tab-bar-groups
+ tab-bar-mode
+ tab-line-mode
+ table (built-in {{{file(table.el)}}})
+ telega
-+ telephone-line
+ terraform-mode
+ term
+ textsec
-+ tomatinho
+ transient (pop-up windows such as Magit's)
+ trashed
+ tree-sitter
-+ treemacs
+ tty-menu
+ tuareg
+ typescript
@@ -4779,15 +3831,12 @@ have lots of extensions, so the "full support" may not be 100% true…
+ which-key
+ whitespace-mode
+ window-divider-mode
-+ winum
+ writegood-mode
+ woman
+ xah-elisp-mode
-+ xref
+ xterm-color (and ansi-colors)
+ yaml-mode
+ yasnippet
-+ ztree
Plus many other miscellaneous faces that are provided by Emacs.
@@ -4802,34 +3851,45 @@ inherit from some basic faces or their dependencies which are directly
supported by the themes.
+ ag
++ apropos
+ apt-sources-list
++ bbdb
++ bm
++ breakpoint (provided by the built-in {{{file(gdb-mi.el)}}} library)
+ buffer-expose
+ bufler
+ counsel-notmuch
+ counsel-org-capture-string
+ dashboard (emacs-dashboard)
+ define-word
++ denote
+ disk-usage
+ dtache
+ dynamic-ruler
+ easy-kill
++ ebdb
+ edit-indirect
+ egerrit
+ elfeed-summary
+ evil-owl
+ flyspell-correct
+ fortran-mode
++ freeze-it
++ forge
+ git-walktree
+ goggles
+ highlight-defined
+ highlight-escape-sequences (~hes-mode~)
++ icomplete-vertical
+ i3wm-config-mode
++ lin
+ minibuffer-line
+ no-emoji
+ org-remark
+ parrot
+ perl-mode
+ php-mode
++ pulsar
+ rjsx-mode
+ side-hustle
+ spell-fu
@@ -4840,6 +3900,7 @@ supported by the themes.
+ vdiff
+ vertico-indexed
+ vertico-mouse
++ xref
* Notes on individual packages
:properties:
@@ -4883,11 +3944,12 @@ anew.
:CUSTOM_ID: h:a195e37c-e58c-4148-b254-8ba1ed8a731a
:END:
-The =git-gutter= and =git-gutter-fr= packages default to drawing bitmaps
-for the indicators they display (e.g. bitmap of a plus sign for added
-lines). In Doom Emacs, these bitmaps are replaced with contiguous lines
-which may look nicer, but require a change to the foreground of the
-relevant faces to yield the desired color combinations.
+The ~git-gutter~ and ~git-gutter-fr~ packages default to drawing
+bitmaps for the indicators they display (e.g. bitmap of a plus sign
+for added lines). In Doom Emacs, these bitmaps are replaced with
+contiguous lines which may look nicer, but require a change to the
+foreground of the relevant faces to yield the desired color
+combinations.
Since this is Doom-specific, we urge users to apply changes in their
local setup. Below is some sample code, based on what we cover at
@@ -4895,16 +3957,21 @@ length elsewhere in this manual:
[[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]].
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
#+begin_src emacs-lisp
(defun my-modus-themes-custom-faces ()
(modus-themes-with-colors
(custom-set-faces
- ;; Replace green with blue if you use `modus-themes-deuteranopia'.
- `(git-gutter-fr:added ((,class :foreground ,green-fringe-bg)))
- `(git-gutter-fr:deleted ((,class :foreground ,red-fringe-bg)))
- `(git-gutter-fr:modified ((,class :foreground ,yellow-fringe-bg))))))
+ ;; Make foreground the same as background for a uniform bar on
+ ;; Doom Emacs.
+ ;;
+ ;; Doom should not be implementing such hacks because themes
+ ;; cannot support them:
+ ;; <https://protesilaos.com/codelog/2022-08-04-doom-git-gutter-modus-themes/>.
+ `(git-gutter-fr:added ((,c :foreground ,bg-added-intense)))
+ `(git-gutter-fr:deleted ((,c :foreground ,bg-removed-intense)))
+ `(git-gutter-fr:modified ((,c :foreground ,bg-changed-intense))))))
(add-hook 'modus-themes-after-load-theme-hook #'my-modus-themes-custom-faces)
#+end_src
@@ -4917,24 +3984,24 @@ If the above does not work, try this instead:
(after! modus-themes
(modus-themes-with-colors
(custom-set-faces
- ;; Replace green with blue if you use `modus-themes-deuteranopia'.
- `(git-gutter-fr:added ((,class :foreground ,green-fringe-bg)))
- `(git-gutter-fr:deleted ((,class :foreground ,red-fringe-bg)))
- `(git-gutter-fr:modified ((,class :foreground ,yellow-fringe-bg))))))
+ ;; Make foreground the same as background for a uniform bar on
+ ;; Doom Emacs.
+ ;;
+ ;; Doom should not be implementing such hacks because themes
+ ;; cannot support them:
+ ;; <https://protesilaos.com/codelog/2022-08-04-doom-git-gutter-modus-themes/>.
+ `(git-gutter-fr:added ((,c :foreground ,bg-added-intense)))
+ `(git-gutter-fr:deleted ((,c :foreground ,bg-removed-intense)))
+ `(git-gutter-fr:modified ((,c :foreground ,bg-changed-intense))))))
#+end_src
-Replace ~green-fringe-bg~ with ~blue-fringe-bg~ if you want to optimize
-for red-green color deficiency.
-
-[[#h:3ed03a48-20d8-4ce7-b214-0eb7e4c79abe][Option for red-green color deficiency or deuteranopia]].
-
** Note on php-mode multiline comments
:PROPERTIES:
:CUSTOM_ID: h:d0a3157b-9c04-46e8-8742-5fb2a7ae8798
:END:
Depending on your build of Emacs and/or the environment it runs in,
-multiline comments in PHP with the =php-mode= package use the
+multiline comments in PHP with the ~php-mode~ package use the
~font-lock-doc-face~ instead of ~font-lock-comment-face~.
This seems to make all comments use the appropriate face:
@@ -5042,10 +4109,10 @@ elsewhere in this document. For example:
#+begin_src emacs-lisp
(modus-themes-with-colors
(custom-set-faces
- `(fill-column-indicator ((,class :foreground ,bg-active)))))
+ `(fill-column-indicator ((,c :foreground ,bg-active)))))
#+end_src
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
To make the line thicker, set the height to be equal to the base font
size instead of the one pixel we use. This is done by specifying a rate
@@ -5055,7 +4122,7 @@ For example:
#+begin_src emacs-lisp
(modus-themes-with-colors
(custom-set-faces
- `(fill-column-indicator ((,class :height 1.0 :background ,bg-inactive :foreground ,bg-inactive)))))
+ `(fill-column-indicator ((,c :height 1.0 :background ,bg-inactive :foreground ,bg-inactive)))))
#+end_src
** Note on highlight-parentheses.el
@@ -5063,10 +4130,10 @@ For example:
:CUSTOM_ID: h:24bab397-dcb2-421d-aa6e-ec5bd622b913
:END:
-The =highlight-parentheses= package provides contextual coloration of
+The ~highlight-parentheses~ package provides contextual coloration of
surrounding parentheses, highlighting only those which are around the
-point. The package expects users to customize the applicable colors on
-their own by configuring certain variables.
+point. The package expects users to customize the applicable colors
+on their own by configuring certain variables.
To make the Modus themes work as expected with this, we need to use some
of the techniques that are discussed at length in the various
@@ -5113,14 +4180,14 @@ found):
;; Here we set color combinations that involve both a background
;; and a foreground value.
- (setq highlight-parentheses-background-colors (list cyan-refine-bg
- magenta-refine-bg
- green-refine-bg
- yellow-refine-bg)
- highlight-parentheses-colors (list cyan-refine-fg
- magenta-refine-fg
- green-refine-fg
- yellow-refine-fg))
+ (setq highlight-parentheses-background-colors (list bg-cyan-intense
+ bg-magenta-intense
+ bg-green-intense
+ bg-yellow-intense)
+ highlight-parentheses-colors (list cyan
+ magenta
+ green
+ yellow))
;; And here we pass only foreground colors while disabling any
;; backgrounds.
@@ -5160,14 +4227,14 @@ implementation:
;; Here we set color combinations that involve both a background
;; and a foreground value.
- (setq highlight-parentheses-background-colors (list cyan-refine-bg
- magenta-refine-bg
- green-refine-bg
- yellow-refine-bg)
- highlight-parentheses-colors (list cyan-refine-fg
- magenta-refine-fg
- green-refine-fg
- yellow-refine-fg))
+ (setq highlight-parentheses-background-colors (list bg-cyan-intense
+ bg-magenta-intense
+ bg-green-intense
+ bg-yellow-intense)
+ highlight-parentheses-colors (list cyan
+ magenta
+ green
+ yellow))
;; And here we pass only foreground colors while disabling any
;; backgrounds.
@@ -5221,7 +4288,7 @@ Users who might prefer to fall below the minimum 7:1 contrast ratio in
relative luminance (the accessibility target we conform with), can opt
to configure the relevant faces on their own.
-[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+[[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
This example uses more vivid background colors, though it comes at the
very high cost of degraded legibility.
@@ -5229,14 +4296,14 @@ very high cost of degraded legibility.
#+begin_src emacs-lisp
(modus-themes-with-colors
(custom-set-faces
- `(mmm-cleanup-submode-face ((,class :background ,yellow-refine-bg)))
- `(mmm-code-submode-face ((,class :background ,bg-active)))
- `(mmm-comment-submode-face ((,class :background ,blue-refine-bg)))
- `(mmm-declaration-submode-face ((,class :background ,cyan-refine-bg)))
- `(mmm-default-submode-face ((,class :background ,bg-alt)))
- `(mmm-init-submode-face ((,class :background ,magenta-refine-bg)))
- `(mmm-output-submode-face ((,class :background ,red-refine-bg)))
- `(mmm-special-submode-face ((,class :background ,green-refine-bg)))))
+ `(mmm-cleanup-submode-face ((,c :background ,bg-yellow-intense)))
+ `(mmm-code-submode-face ((,c :background ,bg-inactive)))
+ `(mmm-comment-submode-face ((,c :background ,bg-blue-intense)))
+ `(mmm-declaration-submode-face ((,c :background ,bg-cyan-intense)))
+ `(mmm-default-submode-face ((,c :background ,bg-dim)))
+ `(mmm-init-submode-face ((,c :background ,bg-magenta-intense)))
+ `(mmm-output-submode-face ((,c :background ,bg-red-intense)))
+ `(mmm-special-submode-face ((,c :background ,bg-green-intense)))))
#+end_src
** Note on prism.el
@@ -5250,13 +4317,14 @@ implements an alternative to the typical coloration of code. Instead of
highlighting the syntactic constructs, it applies color to different
levels of depth in the code structure.
-As {{{file(prism.el)}}} offers a broad range of customizations, we cannot
-style it directly at the theme level: that would run contrary to the
-spirit of the package. Instead, we may offer preset color schemes.
-Those should offer a starting point for users to adapt to their needs.
+As {{{file(prism.el)}}} offers a broad range of customizations, we
+cannot style it directly at the theme level: that would run contrary
+to the spirit of the package. Instead, we may offer preset color
+schemes. Those should offer a starting point for users to adapt to
+their needs.
In the following code snippets, we employ the ~modus-themes-with-colors~
-macro: [[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]].
+macro: [[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Use theme colors in code with modus-themes-with-colors]].
These are the minimum recommended settings with 16 colors:
@@ -5269,20 +4337,20 @@ These are the minimum recommended settings with 16 colors:
:colors (modus-themes-with-colors
(list fg-main
magenta
- cyan-alt-other
- magenta-alt-other
+ cyan-cooler
+ magenta-cooler
blue
- magenta-alt
- cyan-alt
- red-alt-other
+ magenta-warmer
+ cyan-warmer
+ red-cooler
green
fg-main
cyan
yellow
- blue-alt
- red-alt
- green-alt-other
- fg-special-warm)))
+ blue-warmer
+ red-warmer
+ green-cooler
+ yellow-faint)))
#+end_src
With 8 colors:
@@ -5296,11 +4364,11 @@ With 8 colors:
:colors (modus-themes-with-colors
(list blue
magenta
- magenta-alt-other
- cyan-alt-other
+ magenta-cooler
+ cyan-cooler
fg-main
- blue-alt
- red-alt-other
+ blue-warmer
+ red-cooler
cyan)))
#+end_src
@@ -5316,8 +4384,8 @@ to the themes' default aesthetic:
:colors (modus-themes-with-colors
(list blue
magenta
- magenta-alt-other
- green-alt)))
+ magenta-cooler
+ green-warmer)))
#+end_src
If you need to apply desaturation and lightening, you can use what the
@@ -5330,47 +4398,11 @@ examples with the 4, 8, 16 colors):
:lightens (cl-loop for i from 0 below 16 collect (* i 2.5))
:colors (modus-themes-with-colors
(list fg-main
- cyan-alt-other
- magenta-alt-other
+ cyan-cooler
+ magenta-cooler
magenta)))
#+end_src
-** Note on god-mode.el
-:properties:
-:alt_title: Note for god-mode
-:custom_id: h:4da1d515-3e05-47ef-9e45-8251fc7e986a
-:end:
-
-The ~god-mode~ library does not provide faces that could be configured by
-the Modus themes. Users who would like to get some visual feedback on
-the status of {{{kbd(M-x god-mode)}}} are instead encouraged by upstream to
-set up their own configurations, such as by changing the ~mode-line~ face
-([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]). This is an adaptation of the approach
-followed in the upstream README:
-
-#+begin_src emacs-lisp
-(defun my-god-mode-update-mode-line ()
- "Make `mode-line' blue if God local mode is active."
- (modus-themes-with-colors
- (if god-local-mode
- (set-face-attribute 'mode-line nil
- :foreground blue-active
- :background bg-active-accent
- :box blue)
- (set-face-attribute 'mode-line nil
- :foreground fg-active
- :background bg-active
- :box fg-alt))))
-
-(add-hook 'post-command-hook 'my-god-mode-update-mode-line)
-#+end_src
-
-We employ the ~modus-themes-with-colors~ which provides access to color
-variables defined by the active theme. Its use is covered elsewhere in
-this manual ([[#h:51ba3547-b8c8-40d6-ba5a-4586477fd4ae][Face specs at scale using the themes' palette]]). As for the
-attributes that can be passed to each face, start by consulting the
-documentation string of ~set-face-attribute~.
-
** Note on company-mode overlay pop-up
:properties:
:custom_id: h:20cef8c4-d11f-4053-8b2c-2872925780b1
@@ -5387,6 +4419,8 @@ instead of overlays.[fn::
https://github.com/company-mode/company-mode/issues/1010][fn::
https://github.com/tumashu/company-posframe/]
+Also consider the ~corfu~ package.
+
** Note on ERC escaped color sequences
:properties:
:custom_id: h:98bdf319-1e32-4469-8a01-771200fba65c
@@ -5446,10 +4480,10 @@ Consult the doc string of ~shr-use-colors~.
:end:
#+cindex: Fonts in EWW, Elfeed, Ement, and SHR
-By default, packages that build on top of the Simple HTML Remember (=shr=)
-use proportionately spaced fonts. This is controlled by the user option
-~shr-use-fonts~, which is set to non-~nil~ by default. To use the standard
-font instead, set that variable to nil.
+By default, packages that build on top of the Simple HTML Remember
+(~shr~) use proportionately spaced fonts. This is controlled by the
+user option ~shr-use-fonts~, which is set to non-~nil~ by default. To
+use the standard font instead, set that variable to nil.
[[#h:defcf4fc-8fa8-4c29-b12e-7119582cc929][Font configurations for Org and others]].
@@ -5466,9 +4500,10 @@ This is a non-exhaustive list.
:custom_id: h:8e636056-356c-4ca7-bc78-ebe61031f585
:end:
-The =ement.el= library by Adam Porter (also known as "alphapapa") defaults
-to a method of colorizing usernames in a rainbow style. This is
-controlled by the user option ~ement-room-prism~ and can be disabled with:
+The {{{file(ement.el)}}} library by Adam Porter (also known as
+"alphapapa") defaults to a method of colorizing usernames in a rainbow
+style. This is controlled by the user option ~ement-room-prism~ and
+can be disabled with:
#+begin_src emacs-lisp
(setq ement-room-prism nil)
@@ -5482,7 +4517,7 @@ slightly below our nominal target. Try this instead:
(setq ement-room-prism-minimum-contrast 7)
#+end_src
-With regard to fonts, Ement depends on =shr= ([[#h:e6c5451f-6763-4be7-8fdb-b4706a422a4c][Note on SHR fonts]]).
+With regard to fonts, Ement depends on ~shr~ ([[#h:e6c5451f-6763-4be7-8fdb-b4706a422a4c][Note on SHR fonts]]).
Since we are here, here is an excerpt from Ement's source code:
@@ -5500,38 +4535,6 @@ would be a good baseline for many themes and/or user configurations.
Our target is the highest of the sort, though we do not demand that
everyone conforms with it.
-** Note on Helm grep
-:properties:
-:custom_id: h:d28879a2-8e4b-4525-986e-14c0f873d229
-:end:
-
-There is one face from the Helm package that is meant to highlight the
-matches of a grep or grep-like command (=ag= or =ripgrep=). It is
-~helm-grep-match~. However, this face can only apply when the user does
-not pass =--color=always= as a command-line option for their command.
-
-Here is the docstring for that face, which is defined in the
-{{{file(helm-grep.el)}}} library (you can always visit the source code with
-{{{kbd(M-x find-library)}}}).
-
-#+begin_quote
-Face used to highlight grep matches. Have no effect when grep backend
-use "--color="
-#+end_quote
-
-The user must either remove =--color= from the flags passed to the grep
-function, or explicitly use =--color=never= (or equivalent). Helm
-provides user-facing customization options for controlling the grep
-function's parameters, such as ~helm-grep-default-command~ and
-~helm-grep-git-grep-command~.
-
-When =--color=always= is in effect, the grep output will use red text in
-bold letter forms to present the matching part in the list of
-candidates. That style still meets the contrast ratio target of >= 7:1
-(accessibility standard WCAG AAA), because it draws the reference to
-ANSI color number 1 (red) from the already-supported array of
-~ansi-color-names-vector~.
-
** Note on pdf-tools link hints
:properties:
:custom_id: h:2659d13e-b1a5-416c-9a89-7c3ce3a76574
@@ -5603,7 +4606,7 @@ those buttons. Disabling the logo fixes the problem:
The built-in ~goto-address-mode~ uses heuristics to identify URLs and
email addresses in the current buffer. It then applies a face to them
-to change their style. Some packages, such as =notmuch=, use this
+to change their style. Some packages, such as ~notmuch~, use this
minor-mode automatically.
The faces are not declared with ~defface~, meaning that it is better
@@ -5849,15 +4852,15 @@ A good theme is one that does so with consistency, though not
uniformity.
In practical terms, a color scheme is what one uses when, for example,
-they edit the first sixteen escape sequences of a terminal emulator to
-the hues of their preference. The terminal offers the option to choose,
-say, the exact value of what counts as "red", but does not provide the
-means to control where that is mapped to and whether it should also have
-other qualities such as a bold weight for the underlying text or an
-added background color. In contradistinction, Emacs uses constructs
-known as "faces" which allow the user/developer to specify where a given
-color will be used and whether it should be accompanied by other
-typographic or stylistic attributes.
+they replace the first sixteen escape sequences of a terminal emulator
+with color values of their preference. The terminal offers the option
+to choose, say, the exact value of what counts as "red", but does not
+provide the means to control where that is mapped to and whether it
+should also have other qualities such as a bold weight for the
+underlying text or an added background color. In contradistinction,
+Emacs uses constructs known as "faces" which allow the user/developer
+to specify where a given color will be used and whether it should be
+accompanied by other typographic or stylistic attributes.
By configuring the multitude of faces on offer we thus control both
which colors are applied and how they appear in their context. When a
@@ -5876,9 +4879,7 @@ it is already understood that one must follow the indicator or headline
to view its contents and (ii) underlining everything would make the
interface virtually unusable.
-[[#h:5808be52-361a-4d18-88fd-90129d206f9b][Option for links]].
-
-Again, one must exercise judgment in order to avoid discrimination,
+Again, one must exercise judgement in order to avoid discrimination,
where "discrimination" refers to:
+ The treatment of substantially different magnitudes as if they were of
@@ -5888,9 +4889,9 @@ where "discrimination" refers to:
(To treat similar things differently; to treat dissimilar things alike.)
-If, in other words, one was to enforce uniformity without accounting for
-the particular requirements of each case---the contextual demands for
-usability beyond matters of color---they would be making a
+If, in other words, one is to enforce uniformity without accounting
+for the particular requirements of each case---the contextual demands
+for usability beyond matters of color---they are making a
not-so-obvious error of treating different cases as if they were the
same.
@@ -5923,13 +4924,13 @@ doing so would run contrary to how this project is maintained where
details matter greatly.
Each program has its own requirements so it won't always be
-possible---or indeed desirable---to have 1:1 correspondence between what
-applies to Emacs and what should be done elsewhere. No port should ever
-strive to be a faithful copy of the Emacs implementation, as no other
-program is an Emacs equivalent, but instead try to follow the spirit of
-the design. For example, some of the customization options accept a
-list as their value, or an alist, which may not be possible to reproduce
-on other platforms.
+possible---or indeed desirable---to have 1:1 correspondence between
+what applies to Emacs and what should be done elsewhere. No port
+should ever strive to be a copy of the Emacs implementation, as no
+other program is an Emacs equivalent, but instead try to follow the
+spirit of the design. For example, some of the customization options
+accept a list as their value, or an alist, which may not be possible
+to reproduce on other platforms.
[[#h:bf1c82f2-46c7-4eb2-ad00-dd11fdd8b53f][Customization options]].
@@ -5939,10 +4940,10 @@ standards are not compromised and (ii) the overall character of the
themes remains consistent.
The former criterion should be crystal clear as it pertains to the
-scientific foundations of the themes: high legibility and taking care of
-the needs of users with red-green color deficiency (deuteranopia) by
-avoiding red+green color coding paradigms and/or by providing red+blue
-variants.
+scientific foundations of the themes: high legibility and taking care
+of the needs of users with red-green color deficiency (deuteranopia)
+by avoiding red+green color coding paradigms and/or by providing
+yellow+blue variants ([[#h:f0f3dbcb-602d-40cf-b918-8f929c441baf][Overview]]).
The latter criterion is the "je ne sais quoi" of the artistic aspect of
the themes, which is partially fleshed out in this manual.
@@ -5951,7 +4952,7 @@ the themes, which is partially fleshed out in this manual.
With regard to the artistic aspect (where "art" qua skill may amount to
an imprecise science), there is no hard-and-fast rule in effect as it
-requires one to exercise discretion and make decisions based on
+requires one to exercize discretion and make decisions based on
context-dependent information or constraints. As is true with most
things in life, when in doubt, do not cling on to the letter of the law
but try to understand its spirit.
@@ -5980,13 +4981,17 @@ in which you can contribute to their ongoing development.
:end:
#+cindex: Sources of the themes
-The ~modus-operandi~ and ~modus-vivendi~ themes are built into Emacs 28.
-
-The source code of the themes is [[https://git.sr.ht/~protesilaos/modus-themes][available on SourceHut]]. Or check the
-[[https://gitlab.com/protesilaos/modus-themes/][GitLab mirror (former main source)]] and the [[https://github.com/protesilaos/modus-themes/][GitHub mirror]].
-
-An HTML version of this manual is provided as an extension of the
-[[https://protesilaos.com/emacs/modus-themes/][author's personal website]] (does not rely on any non-free code).
++ Package name (GNU ELPA): ~modus-themes~
++ Official manual: <https://protesilaos.com/emacs/modus-themes>
++ Change log: <https://protesilaos.com/emacs/modus-themes-changelog>
++ Color palette: <https://protesilaos.com/emacs/modus-themes-colors>
++ Sample pictures: <https://protesilaos.com/emacs/modus-themes-pictures>
++ Git repo on SourceHut: <https://git.sr.ht/~protesilaos/modus-themes>
+ - Mirrors:
+ + GitHub: <https://github.com/protesilaos/modus-themes>
+ + GitLab: <https://gitlab.com/protesilaos/modus-themes>
++ Mailing list: <https://lists.sr.ht/~protesilaos/modus-themes>
++ Backronym: My Old Display Unexpectedly Sharpened ... themes
** Issues you can help with
:properties:
@@ -5994,10 +4999,8 @@ An HTML version of this manual is provided as an extension of the
:end:
#+cindex: Contributing
-#+findex: modus-themes-report-bug
A few tasks you can help with by sending an email to the general
-[[https://lists.sr.ht/~protesilaos/modus-themes][modus-themes public mailing list]] (or use the command
-~modus-themes-report-bug~).
+[[https://lists.sr.ht/~protesilaos/modus-themes][modus-themes public mailing list]].
+ Suggest refinements to packages that are covered.
+ Report packages not covered thus far.
@@ -6014,10 +5017,6 @@ It is preferable that your feedback includes some screenshots, GIFs, or
short videos, as well as further instructions to reproduce a given
setup. Though this is not a requirement.
-#+findex: modus-themes-version
-Also consider mentioning the version of the themes you are using, such
-as by invoking the command ~modus-themes-version~.
-
Whatever you do, bear in mind the overarching objective of the Modus
themes: to keep a contrast ratio that is greater or equal to 7:1 between
background and foreground colors. If a compromise is ever necessary
@@ -6097,45 +5096,50 @@ The Modus themes are a collective effort. Every bit of work matters.
+ Author/maintainer :: Protesilaos Stavrou.
-+ Contributions to code or documentation :: Alex Griffin, Anders
- Johansson, Antonio Ruiz, Basil L.{{{space()}}} Contovounesios, Björn
- Lindström, Carlo Zancanaro, Christian Tietze, Daniel Mendler, Eli
- Zaretskii, Fritz Grabo, Illia Ostapyshyn, Kévin Le Gouguec, Koen van
- Greevenbroek, Kostadin Ninev, Madhavan Krishnan, Manuel Giraud,
- Markus Beppler, Matthew Stevenson, Mauro Aranda, Nicolas De
- Jaeghere, Paul David, Philip Kaludercic, Pierre Téchoueyres, Rudolf
- Adamkovič, Stephen Gildea, Shreyas Ragavan, Stefan Kangas, Utkarsh
- Singh, Vincent Murphy, Xinglu Chen, Yuanchen Xie, okamsn.
++ Contributions to code or documentation :: Aleksei Gusev, Alex
+ Griffin, Anders Johansson, Antonio Ruiz, Basil L.{{{space()}}}
+ Contovounesios, Björn Lindström, Carlo Zancanaro, Christian Tietze,
+ Daniel Mendler, Eli Zaretskii, Fritz Grabo, Illia Ostapyshyn, Kévin
+ Le Gouguec, Koen van Greevenbroek, Kostadin Ninev, Madhavan
+ Krishnan, Manuel Giraud, Markus Beppler, Matthew Stevenson, Mauro
+ Aranda, Nicolas De Jaeghere, Paul David, Philip Kaludercic, Pierre
+ Téchoueyres, Rudolf Adamkovič, Sergey Nichiporchik, Stephen Gildea,
+ Shreyas Ragavan, Stefan Kangas, Utkarsh Singh, Vincent Murphy,
+ Xinglu Chen, Yuanchen Xie, okamsn.
+ Ideas and user feedback :: Aaron Jensen, Adam Porter, Adam Spiers,
- Adrian Manea, Alex Griffin, Alex Koen, Alex Peitsinis, Alexey
- Shmalko, Alok Singh, Anders Johansson, André Alexandre Gomes, Andrew
- Tropin, Antonio Hernández Blas, Arif Rezai, Augusto Stoffel, Basil
- L.{{{space()}}} Contovounesios, Burgess Chang, Christian Tietze,
+ Adrian Manea, Aleksei Pirogov, Alex Griffin, Alex Koen, Alex
+ Peitsinis, Alexey Shmalko, Alok Singh, Anders Johansson, André
+ Alexandre Gomes, Andrew Tropin, Antonio Hernández Blas, Arif Rezai,
+ Augusto Stoffel, Basil L.{{{space()}}} Contovounesios, Bernd
+ Rellermeyer, Burgess Chang, Charlotte Van Petegem, Christian Tietze,
Christopher Dimech, Christopher League, Damien Cassou, Daniel
Mendler, Dario Gjorgjevski, David Edmondson, Davor Rotim, Divan
Santana, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Farasha
Euker, Feng Shu, Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia,
Gonçalo Marrafa, Guilherme Semente, Gustavo Barros, Hörmetjan
- Yiltiz, Ilja Kocken, Iris Garcia, Ivan Popovych, Jeremy Friesen,
- Jerry Zhang, Johannes Grødem, John Haman, Jonas Collberg, Jorge
- Morais, Joshua O'Connor, Julio C. Villasante, Kenta Usami, Kevin
- Fleming, Kévin Le Gouguec, Kevin Kainan Li, Kostadin Ninev, Len
- Trigg, Lennart C. Karssen, Luis Miguel Castañeda, Magne Hov, Manuel
- Uberti, Mark Bestley, Mark Burton, Mark Simpson, Markus Beppler,
- Matt Armstrong, Matthias Fuchs, Mauro Aranda, Maxime Tréca, Michael
- Goldenberg, Morgan Smith, Morgan Willcock, Murilo Pereira, Nicky van
- Foreest, Nicolas De Jaeghere, Pablo Stafforini, Paul Poloskov,
- Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, Pierre
- Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov, Ryan
- Phillips, Rytis Paškauskas, Rudolf Adamkovič, Sam Kleinman, Samuel
- Culpepper, Saša Janiška, Shreyas Ragavan, Simon Pugnet, Tassilo
- Horn, Thibaut Verron, Thomas Heartman, Togan Muftuoglu, Tony Zorman,
- Trey Merkley, Tomasz Hołubowicz, Toon Claes, Uri Sharf, Utkarsh
- Singh, Vincent Foley. As well as users: Ben, CsBigDataHub1, Emacs
+ Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan Popovych, James
+ Ferguson, Jeremy Friesen, Jerry Zhang, Johannes Grødem, John Haman,
+ Jonas Collberg, Jorge Morais, Joshua O'Connor, Julio C. Villasante,
+ Kenta Usami, Kevin Fleming, Kévin Le Gouguec, Kevin Kainan Li,
+ Kostadin Ninev, Laith Bahodi, Len Trigg, Lennart C. Karssen, Luis
+ Miguel Castañeda, Magne Hov, Manuel Giraud, Manuel Uberti, Mark
+ Bestley, Mark Burton, Mark Simpson, Marko Kocic, Markus Beppler,
+ Matt Armstrong, Matthias Fuchs, Mattias Engdegård, Mauro Aranda,
+ Maxime Tréca, Michael Goldenberg, Morgan Smith, Morgan Willcock,
+ Murilo Pereira, Nicky van Foreest, Nicolas De Jaeghere, Pablo
+ Stafforini, Paul Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu,
+ Philip Kaludercic, Pierre Téchoueyres, Przemysław Kryger, Robert
+ Hepple, Roman Rudakov, Russell Sim, Ryan Phillips, Rytis Paškauskas,
+ Rudolf Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška,
+ Shreyas Ragavan, Simon Pugnet, Tassilo Horn, Thanos Apollo, Thibaut
+ Verron, Thomas Heartman, Togan Muftuoglu, Tony Zorman, Trey Merkley,
+ Tomasz Hołubowicz, Toon Claes, Uri Sharf, Utkarsh Singh, Vincent
+ Foley, Zoltan Kiraly. As well as users: Ben, CsBigDataHub1, Emacs
Contrib, Eugene, Fourchaux, Fredrik, Moesasji, Nick, Summer Emacs,
- TheBlob42, Trey, bepolymathe, bit9tream, derek-upham, doolio,
- fleimgruber, gitrj95, iSeeU, jixiuf, okamsn, pRot0ta1p.
+ TheBlob42, TitusMu, Trey, bepolymathe, bit9tream, bangedorrunt,
+ derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, okamsn,
+ pRot0ta1p, soaringbird, tumashu, wakamenod.
+ Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii,
Glenn Morris, Mauro Aranda, Richard Stallman, Stefan Kangas (core
@@ -6153,42 +5157,6 @@ themes' design and/or aspects of their functionality.
All errors are my own.
-* Other notes about the project
-:properties:
-:custom_id: h:13752581-4378-478c-af17-165b6e76bc1b
-:end:
-#+cindex: Development notes
-
-If you are curious about the principles that govern the development of
-this project read the essay [[https://protesilaos.com/codelog/2020-03-17-design-modus-themes-emacs/][On the design of the Modus themes]]
-(2020-03-17).
-
-Here are some more publications for those interested in the kind of work
-that goes into this project (sometimes the commits also include details
-of this sort):
-
-+ [[https://protesilaos.com/codelog/2020-05-10-modus-operandi-palette-review/][Modus Operandi theme subtle palette review]] (2020-05-10)
-+ [[https://protesilaos.com/codelog/2020-06-13-modus-vivendi-palette-review/][Modus Vivendi theme subtle palette review]] (2020-06-13)
-+ [[https://protesilaos.com/codelog/2020-07-04-modus-themes-faint-colours/][Modus themes: new "faint syntax" option]] (2020-07-04)
-+ [[https://protesilaos.com/codelog/2020-07-08-modus-themes-nuanced-colours/][Modus themes: major review of "nuanced" colours]] (2020-07-08)
-+ [[https://protesilaos.com/codelog/2020-09-14-modus-themes-review-blues/][Modus themes: review of blue colours]] (2020-09-14)
-+ [[https://protesilaos.com/codelog/2020-12-27-modus-themes-review-rainbow-delimiters/][Modus themes: review rainbow-delimiters faces]] (2020-12-27)
-+ [[https://protesilaos.com/codelog/2021-01-11-modus-themes-review-select-faint-colours/][Modus themes: review of select "faint" colours]] (2021-01-11)
-+ [[https://protesilaos.com/codelog/2021-02-25-modus-themes-diffs-deuteranopia/][The Modus themes now cover deuteranopia in diffs]] (2021-02-25)
-+ [[https://protesilaos.com/codelog/2021-06-02-modus-themes-org-agenda/][Introducing the variable modus-themes-org-agenda]] (2021-06-02)
-+ [[https://protesilaos.com/codelog/2022-01-02-review-modus-themes-org-habit-colours/][Modus themes: review of the org-habit graph colours]] (2022-01-02)
-+ [[https://protesilaos.com/codelog/2022-01-03-modus-themes-port-faq/][Re: VSCode or Vim ports of the Emacs modus-themes?]] (2022-01-03)
-+ [[https://protesilaos.com/codelog/2022-04-20-modus-themes-case-study-avy/][Modus themes: case study on Avy faces and colour combinations]] (2022-04-20)
-+ [[https://protesilaos.com/codelog/2022-04-21-modus-themes-colour-theory/][Emacs: colour theory and techniques used in the Modus themes]] (2022-04-21)
-
-And here are the canonical sources of this project:
-
-+ Manual :: <https://protesilaos.com/emacs/modus-themes>
-+ Change Log :: <https://protesilaos.com/emacs/modus-themes-changelog>
-+ Screenshots :: <https://protesilaos.com/emacs/modus-themes-pictures>
-+ Git repository :: https://git.sr.ht/~protesilaos/modus-themes
-+ Mailing list :: https://lists.sr.ht/~protesilaos/modus-themes
-
* GNU Free Documentation License
:properties:
:appendix: t
diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi
index d71895da5db..4a0311cad42 100644
--- a/doc/misc/newsticker.texi
+++ b/doc/misc/newsticker.texi
@@ -307,11 +307,16 @@ news ticker.
@findex newsticker-start-ticker
@findex newsticker-stop-ticker
+@vindex newsticker-ticker-period
Headlines can be displayed in the echo area, either scrolling like
messages in a stock-quote ticker, or just changing. This can be
started with the command @code{newsticker-start-ticker}. It can be
stopped with @code{newsticker-stop-ticker}.
+The ticker by default runs continuously. To only run it once, at a
+specific time interval, set the @code{newsticker-ticker-period}
+variable.
+
@node Navigation
@section Navigation
@@ -542,8 +547,10 @@ are shown in the echo area, i.e., the ``ticker''.
@itemize
@item
@vindex newsticker-display-interval
+@vindex newsticker-ticker-period
@vindex newsticker-scroll-smoothly
-@code{newsticker-ticker-interval} and
+@code{newsticker-ticker-interval},
+@code{newsticker-ticker-period}, and
@code{newsticker-scroll-smoothly} define how headlines are shown in
the echo area.
@end itemize
diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi
index 41930f154c2..6b10d1ab2a4 100644
--- a/doc/misc/rcirc.texi
+++ b/doc/misc/rcirc.texi
@@ -691,11 +691,11 @@ window is showing them), the mode line will now show you the abbreviated
channel or nick name. Use @kbd{C-c C-@key{SPC}} to switch to these
buffers.
-@cindex rcirc-track-abbrevate-flag
+@cindex rcirc-track-abbreviate-flag
By default the channel names are abbreviated, set
-@code{rcirc-track-abbrevate-flag} to a non-@code{nil} value. This might be
-interesting if the IRC activities are not tracked in the mode line,
-but somewhere else.
+@code{rcirc-track-abbreviate-flag} to a non-@code{nil} value. This
+might be interesting if the IRC activities are not tracked in the mode
+line, but somewhere else.
@vindex rcirc-mode-hook
If you prefer not to load @code{rcirc} immediately, you can delay the
diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi
index d4b39d4ee39..9bf7c36b481 100644
--- a/doc/misc/sc.texi
+++ b/doc/misc/sc.texi
@@ -404,7 +404,7 @@ from the alist with the @code{sc-mail-field} function. Thus, if the
following fields were present in the original article:
@example
-Date:@: 08 April 1991, 17:32:09 EST
+Date:@: 08 Apr 1991 17:32:09 -0500
Subject:@: Better get out your asbestos suit
@end example
@@ -415,7 +415,7 @@ then, the following lisp constructs return:
@example
(sc-mail-field "date")
-==> "08 April 1991, 17:32:09 EST"
+==> "08 Apr 1991 17:32:09 -0500"
(sc-mail-field "subject")
==> "Better get out your asbestos suit"
diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex
index 7858bf152c3..1ddfef4b878 100644
--- a/doc/misc/texinfo.tex
+++ b/doc/misc/texinfo.tex
@@ -3,9 +3,9 @@
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2022-11-12.22}
+\def\texinfoversion{2023-03-04.12}
%
-% Copyright 1985--1986, 1988, 1990--2023 Free Software Foundation, Inc.
+% Copyright 1985, 1986, 1988, 1990-2023 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -58,12 +58,6 @@
\message{Loading texinfo [version \texinfoversion]:}
-% If in a .fmt file, print the version number
-% and turn on active characters that we couldn't do earlier because
-% they might have appeared in the input file name.
-\everyjob{\message{[Texinfo version \texinfoversion]}%
- \catcode`+=\active \catcode`\_=\active}
-
% LaTeX's \typeout. This ensures that the messages it is used for
% are identical in format to the corresponding ones from latex/pdflatex.
\def\typeout{\immediate\write17}%
@@ -530,7 +524,7 @@
% ... but they get defined via ``\envdef\foo{...}'':
\long\def\envdef#1#2{\def#1{\startenvironment#1#2}}
-\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
+\long\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}}
% Check whether we're in the right environment:
\def\checkenv#1{%
@@ -591,6 +585,9 @@
% @/ allows a line break.
\let\/=\allowbreak
+% @- allows explicit insertion of hyphenation points
+\def\-{\discretionary{\normaldash}{}{}}%
+
% @. is an end-of-sentence period.
\def\.{.\spacefactor=\endofsentencespacefactor\space}
@@ -1197,13 +1194,17 @@ output) for that.)}
%
% Set color, and create a mark which defines \thiscolor accordingly,
% so that \makeheadline knows which color to restore.
+ \def\curcolor{0 0 0}%
\def\setcolor#1{%
- \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
- \domark
- \pdfsetcolor{#1}%
+ \ifx#1\curcolor\else
+ \xdef\currentcolordefs{\gdef\noexpand\thiscolor{#1}}%
+ \domark
+ \pdfsetcolor{#1}%
+ \xdef\curcolor{#1}%
+ \fi
}
%
- \def\maincolor{\rgbBlack}
+ \let\maincolor\rgbBlack
\pdfsetcolor{\maincolor}
\edef\thiscolor{\maincolor}
\def\currentcolordefs{}
@@ -1359,7 +1360,7 @@ output) for that.)}
%
% by default, use black for everything.
\def\urlcolor{\rgbBlack}
- \def\linkcolor{\rgbBlack}
+ \let\linkcolor\rgbBlack
\def\endlink{\setcolor{\maincolor}\pdfendlink}
%
% Adding outlines to PDF; macros for calculating structure of outlines
@@ -1537,9 +1538,10 @@ output) for that.)}
\next}
\def\makelink{\addtokens{\toksB}%
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
+ \def\pdflink#1{\pdflinkpage{#1}{#1}}%
+ \def\pdflinkpage#1#2{%
\startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}}
- \setcolor{\linkcolor}#1\endlink}
+ \setcolor{\linkcolor}#2\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
\else
% non-pdf mode
@@ -1786,10 +1788,11 @@ output) for that.)}
\next}
\def\makelink{\addtokens{\toksB}%
{\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0}
- \def\pdflink#1{%
+ \def\pdflink#1{\pdflinkpage{#1}{#1}}%
+ \def\pdflinkpage#1#2{%
\special{pdf:bann << /Border [0 0 0]
/Type /Annot /Subtype /Link /A << /S /GoTo /D (#1) >> >>}%
- \setcolor{\linkcolor}#1\endlink}
+ \setcolor{\linkcolor}#2\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
%
%
@@ -2134,6 +2137,11 @@ end
\pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
}%
\fi\fi
+%
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
+%
+% (end of cmaps)
% Set the font macro #1 to the font named \fontprefix#2.
@@ -2149,11 +2157,10 @@ end
\def\setfont#1#2#3#4#5{%
\font#1=\fontprefix#2#3 scaled #4
\csname cmap#5\endcsname#1%
+ \ifx#2\ttshape\hyphenchar#1=-1 \fi
+ \ifx#2\ttbshape\hyphenchar#1=-1 \fi
+ \ifx#2\ttslshape\hyphenchar#1=-1 \fi
}
-% This is what gets called when #5 of \setfont is empty.
-\let\cmap\gobble
-%
-% (end of cmaps)
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
@@ -2674,26 +2681,23 @@ end
\gdef\setcodequotes{\let`\codequoteleft \let'\codequoteright}
\gdef\setregularquotes{\let`\lq \let'\rq}
}
+\setregularquotes
-% Allow an option to not use regular directed right quote/apostrophe
-% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
-% The undirected quote is ugly, so don't make it the default, but it
-% works for pasting with more pdf viewers (at least evince), the
-% lilypond developers report. xpdf does work with the regular 0x27.
+% output for ' in @code
+% in tt font hex 0D (undirected) or 27 (curly right quote)
%
\def\codequoteright{%
\ifusingtt
{\ifflagclear{txicodequoteundirected}%
{\ifflagclear{codequoteundirected}%
{'}%
- {\char'15 }}%
- {\char'15 }}%
+ {\char"0D }}%
+ {\char"0D }}%
{'}%
}
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
+% output for ` in @code
+% in tt font hex 12 (grave accent) or 60 (curly left quote)
% \relax disables Spanish ligatures ?` and !` of \tt font.
%
\def\codequoteleft{%
@@ -2701,8 +2705,8 @@ end
{\ifflagclear{txicodequotebacktick}%
{\ifflagclear{codequotebacktick}%
{\relax`}%
- {\char'22 }}%
- {\char'22 }}%
+ {\char"12 }}%
+ {\char"12 }}%
{\relax`}%
}
@@ -2721,7 +2725,7 @@ end
\errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
\fi\fi
}
-%
+
\parseargdef\codequotebacktick{%
\def\temp{#1}%
\ifx\temp\onword
@@ -2736,6 +2740,11 @@ end
\fi\fi
}
+% Turn them on by default
+\let\SETtxicodequoteundirected = t
+\let\SETtxicodequotebacktick = t
+
+
% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
\def\noligaturesquoteleft{\relax\lq}
@@ -2815,13 +2824,6 @@ end
% @sansserif, explicit sans.
\def\sansserif#1{{\sf #1}}
-% We can't just use \exhyphenpenalty, because that only has effect at
-% the end of a paragraph. Restore normal hyphenation at the end of the
-% group within which \nohyphenation is presumably called.
-%
-\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation}
-\def\restorehyphenation{\hyphenchar\font = `- }
-
\newif\iffrenchspacing
\frenchspacingfalse
@@ -2890,27 +2892,29 @@ end
% Switch to typewriter.
\tt
%
- % But `\ ' produces the large typewriter interword space.
+ % `\ ' produces the large typewriter interword space.
\def\ {{\spaceskip = 0pt{} }}%
%
- % Turn off hyphenation.
- \nohyphenation
- %
\plainfrenchspacing
#1%
}%
\null % reset spacefactor to 1000
}
-% We *must* turn on hyphenation at `-' and `_' in @code.
-% (But see \codedashfinish below.)
+% This is for LuaTeX: It is not sufficient to disable hyphenation at
+% explicit dashes by setting `\hyphenchar` to -1.
+\def\dashnobreak{%
+ \normaldash
+ \penalty 10000 }
+
+% We must turn on hyphenation at `-' and `_' in @code.
% Otherwise, it is too hard to avoid overfull hboxes
% in the Emacs manual, the Library manual, etc.
+% We explicitly allow hyphenation at these characters
+% using \discretionary.
%
-% Unfortunately, TeX uses one parameter (\hyphenchar) to control
-% both hyphenation at - and hyphenation within words.
-% We must therefore turn them both off (\tclose does that)
-% and arrange explicitly to hyphenate at a dash. -- rms.
+% Hyphenation at - and hyphenation within words was turned off
+% by default for the tt fonts using the \hyphenchar parameter of TeX.
{
\catcode`\-=\active \catcode`\_=\active
\catcode`\'=\active \catcode`\`=\active
@@ -2923,13 +2927,9 @@ end
\let-\codedash
\let_\codeunder
\else
- \let-\normaldash
+ \let-\dashnobreak
\let_\realunder
\fi
- % Given -foo (with a single dash), we do not want to allow a break
- % after the hyphen.
- \global\let\codedashprev=\codedash
- %
\codex
}
%
@@ -2939,21 +2939,30 @@ end
%
% Now, output a discretionary to allow a line break, unless
% (a) the next character is a -, or
- % (b) the preceding character is a -.
+ % (b) the preceding character is a -, or
+ % (c) we are at the start of the string.
+ % In both cases (b) and (c), \codedashnobreak should be set to \codedash.
+ %
% E.g., given --posix, we do not want to allow a break after either -.
% Given --foo-bar, we do want to allow a break between the - and the b.
\ifx\next\codedash \else
- \ifx\codedashprev\codedash
+ \ifx\codedashnobreak\codedash
\else \discretionary{}{}{}\fi
\fi
% we need the space after the = for the case when \next itself is a
% space token; it would get swallowed otherwise. As in @code{- a}.
- \global\let\codedashprev= \next
+ \global\let\codedashnobreak= \next
}
}
\def\normaldash{-}
%
-\def\codex #1{\tclose{#1}\endgroup}
+\def\codex #1{\tclose{%
+ % Given -foo (with a single dash), we do not want to allow a break
+ % after the -. \codedashnobreak is set to the first character in
+ % @code.
+ \futurelet\codedashnobreak\relax
+ #1%
+}\endgroup}
\def\codeunder{%
% this is all so @math{@code{var_name}+1} can work. In math mode, _
@@ -3200,7 +3209,7 @@ end
% definition of @key with no lozenge.
%
-\def\key#1{{\setregularquotes \nohyphenation \tt #1}\null}
+\def\key#1{{\setregularquotes \tt #1}\null}
% @clicksequence{File @click{} Open ...}
\def\clicksequence#1{\begingroup #1\endgroup}
@@ -3740,13 +3749,14 @@ $$%
want the contents after the title page.}}%
\parseargdef\shorttitlepage{%
- \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+ {\headingsoff \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}\pageone}
\envdef\titlepage{%
% Open one extra group, as we want to close it in the middle of \Etitlepage.
\begingroup
\parindent=0pt \textfonts
+ \headingsoff
% Leave some space at the very top of the page.
\vglue\titlepagetopglue
% No rule at page bottom unless we print one at the top with @title.
@@ -3774,11 +3784,9 @@ $$%
% If we use the new definition of \page, we always get a blank page
% after the title page, which we certainly don't want.
\oldpage
+ \pageone
\endgroup
%
- % Need this before the \...aftertitlepage checks so that if they are
- % in effect the toc pages will come out with page numbers.
- \HEADINGSon
}
\def\finishtitlepage{%
@@ -3947,35 +3955,24 @@ $$%
}
\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
-\HEADINGSoff % it's the default
-% When we turn headings on, set the page number to 1.
+% Set the page number to 1.
\def\pageone{
\global\pageno=1
\global\arabiccount = \pagecount
}
+\let\contentsalignmacro = \chappager
+
+% \def\HEADINGSon{\HEADINGSdouble} % defined by \CHAPPAGon
+
% For double-sided printing, put current file name in lower left corner,
% chapter name on inside top of right hand pages, document
% title on inside top of left hand pages, and page numbers on outside top
% edge of all pages.
-\def\HEADINGSdouble{%
-\pageone
-\HEADINGSdoublex
-}
-\let\contentsalignmacro = \chappager
-
-% For single-sided printing, chapter title goes across top left of page,
-% page number on top right.
-\def\HEADINGSsingle{%
-\pageone
-\HEADINGSsinglex
-}
-\def\HEADINGSon{\HEADINGSdouble}
-
-\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex}
+\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdouble}
\let\HEADINGSdoubleafter=\HEADINGSafter
-\def\HEADINGSdoublex{%
+\def\HEADINGSdouble{%
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
\global\evenheadline={\line{\folio\hfil\thistitle}}
@@ -3985,8 +3982,10 @@ $$%
\global\let\contentsalignmacro = \chapoddpage
}
-\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex}
-\def\HEADINGSsinglex{%
+% For single-sided printing, chapter title goes across top left of page,
+% page number on top right.
+\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsingle}
+\def\HEADINGSsingle{%
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
\global\evenheadline={\line{\thischapter\hfil\folio}}
@@ -3998,7 +3997,6 @@ $$%
% for @setchapternewpage off
\def\HEADINGSsinglechapoff{%
-\pageone
\global\evenfootline={\hfil}
\global\oddfootline={\hfil}
\global\evenheadline={\line{\thischapter\hfil\folio}}
@@ -4104,6 +4102,7 @@ $$%
\nobreak\kern\dimen0
\endgroup
\itemxneedsnegativevskiptrue
+ \penalty 10021 % for \indexpar
\fi
}
@@ -4220,6 +4219,7 @@ $$%
% We can be in inner vertical mode in a footnote, although an
% @itemize looks awful there.
}%
+ \penalty 10021 % for \indexpar
\flushcr
}
@@ -4724,13 +4724,11 @@ $$%
% except not \outer, so it can be used within macros and \if's.
\edef\newwrite{\makecsname{ptexnewwrite}}
-% \newindex {foo} defines an index named IX.
+% \newindex {IX} defines an index named IX.
% It automatically defines \IXindex such that
% \IXindex ...rest of line... puts an entry in the index IX.
% It also defines \IXindfile to be the number of the output channel for
% the file that accumulates this index. The file's extension is IX.
-% The name of an index should be no more than 2 characters long
-% for the sake of vms.
%
\def\newindex#1{%
\expandafter\chardef\csname#1indfile\endcsname=0
@@ -4786,28 +4784,19 @@ $$%
% and it is the two-letter name of the index.
\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
-\def\doindexxxx #1{\doind{\indexname}{#1}}
+\def\doindexxxx #1{\indexpar\doind{\indexname}{#1}}
% like the previous two, but they put @code around the argument.
\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
-\def\docodeindexxxx #1{\docind{\indexname}{#1}}
-
+\def\docodeindexxxx #1{\indexpar\docind{\indexname}{#1}}
-% Used for the aux, toc and index files to prevent expansion of Texinfo
-% commands.
-%
-\def\atdummies{%
- \definedummyletter\@%
- \definedummyletter\ %
- \definedummyletter\{%
- \definedummyletter\}%
- \definedummyletter\&%
- %
- % Do the redefinitions.
- \definedummies
- \otherbackslash
+% End any open paragraph, unless we are immediately after @item in
+% @itemize or @enumerate.
+\def\indexpar{%
+\ifnum\lastpenalty=10021 \else\endgraf\fi
}
+
% \definedummyword defines \#1 as \string\#1\space, thus effectively
% preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
@@ -4823,110 +4812,91 @@ $$%
%
\def\definedummyword #1{\def#1{\string#1\space}}%
\def\definedummyletter#1{\def#1{\string#1}}%
-\let\definedummyaccent\definedummyletter
-% Called from \atdummies to prevent the expansion of commands.
+% Used for the aux, toc and index files to prevent expansion of Texinfo
+% commands. Most of the commands are controlled through the
+% \ifdummies conditional.
%
-\def\definedummies{%
+\def\atdummies{%
+ \dummiestrue
%
- \let\commondummyword\definedummyword
- \let\commondummyletter\definedummyletter
- \let\commondummyaccent\definedummyaccent
- \commondummiesnofonts
+ \definedummyletter\@%
+ \definedummyletter\ %
+ \definedummyletter\{%
+ \definedummyletter\}%
+ \definedummyletter\&%
%
\definedummyletter\_%
\definedummyletter\-%
%
- % Non-English letters.
- \definedummyword\AA
- \definedummyword\AE
- \definedummyword\DH
- \definedummyword\L
- \definedummyword\O
- \definedummyword\OE
- \definedummyword\TH
- \definedummyword\aa
- \definedummyword\ae
- \definedummyword\dh
- \definedummyword\exclamdown
- \definedummyword\l
- \definedummyword\o
- \definedummyword\oe
- \definedummyword\ordf
- \definedummyword\ordm
- \definedummyword\questiondown
- \definedummyword\ss
- \definedummyword\th
- %
- % Although these internal commands shouldn't show up, sometimes they do.
- \definedummyword\bf
- \definedummyword\gtr
- \definedummyword\hat
- \definedummyword\less
- \definedummyword\sf
- \definedummyword\sl
- \definedummyword\tclose
- \definedummyword\tt
- %
- \definedummyword\LaTeX
- \definedummyword\TeX
- %
- % Assorted special characters.
- \definedummyword\ampchar
- \definedummyword\atchar
- \definedummyword\arrow
- \definedummyword\backslashchar
- \definedummyword\bullet
- \definedummyword\comma
- \definedummyword\copyright
- \definedummyword\registeredsymbol
- \definedummyword\dots
- \definedummyword\enddots
- \definedummyword\entrybreak
- \definedummyword\equiv
- \definedummyword\error
- \definedummyword\euro
- \definedummyword\expansion
- \definedummyword\geq
- \definedummyword\guillemetleft
- \definedummyword\guillemetright
- \definedummyword\guilsinglleft
- \definedummyword\guilsinglright
- \definedummyword\lbracechar
- \definedummyword\leq
- \definedummyword\mathopsup
- \definedummyword\minus
- \definedummyword\ogonek
- \definedummyword\pounds
- \definedummyword\point
- \definedummyword\print
- \definedummyword\quotedblbase
- \definedummyword\quotedblleft
- \definedummyword\quotedblright
- \definedummyword\quoteleft
- \definedummyword\quoteright
- \definedummyword\quotesinglbase
- \definedummyword\rbracechar
- \definedummyword\result
- \definedummyword\sub
- \definedummyword\sup
- \definedummyword\textdegree
- %
\definedummyword\subentry
%
% We want to disable all macros so that they are not expanded by \write.
+ \let\commondummyword\definedummyword
\macrolist
\let\value\dummyvalue
%
- \normalturnoffactive
-}
-
-% \commondummiesnofonts: common to \definedummies and \indexnofonts.
-% Define \commondummyletter, \commondummyaccent and \commondummyword before
-% using. Used for accents, font commands, and various control letters.
-%
-\def\commondummiesnofonts{%
- % Control letters and accents.
+ \turnoffactive
+}
+
+\newif\ifdummies
+\newif\ifindexnofonts
+
+\def\commondummyletter#1{%
+ \expandafter\let\csname\string#1:impl\endcsname#1%
+ \edef#1{%
+ \noexpand\ifindexnofonts
+ % empty expansion
+ \noexpand\else
+ \noexpand\ifdummies\string#1%
+ \noexpand\else
+ \noexpand\jumptwofi % dispose of the \fi
+ \expandafter\noexpand\csname\string#1:impl\endcsname
+ \noexpand\fi
+ \noexpand\fi}%
+}
+
+\def\commondummyaccent#1{%
+ \expandafter\let\csname\string#1:impl\endcsname#1%
+ \edef#1{%
+ \noexpand\ifindexnofonts
+ \noexpand\expandafter % dispose of \else ... \fi
+ \noexpand\asis
+ \noexpand\else
+ \noexpand\ifdummies\string#1%
+ \noexpand\else
+ \noexpand\jumptwofi % dispose of the \fi
+ \expandafter\noexpand\csname\string#1:impl\endcsname
+ \noexpand\fi
+ \noexpand\fi}%
+}
+
+% Like \commondummyaccent but add a \space at the end of the dummy expansion
+% #2 is the expansion used for \indexnofonts. #2 is always followed by
+% \asis to remove a pair of following braces.
+\def\commondummyword#1#2{%
+ \expandafter\let\csname\string#1:impl\endcsname#1%
+ \expandafter\def\csname\string#1:ixnf\endcsname{#2\asis}%
+ \edef#1{%
+ \noexpand\ifindexnofonts
+ \noexpand\expandafter % dispose of \else ... \fi
+ \expandafter\noexpand\csname\string#1:ixnf\endcsname
+ \noexpand\else
+ \noexpand\ifdummies\string#1\space
+ \noexpand\else
+ \noexpand\jumptwofi % dispose of the \fi \fi
+ \expandafter\noexpand\csname\string#1:impl\endcsname
+ \noexpand\fi
+ \noexpand\fi}%
+}
+\def\jumptwofi#1\fi\fi{\fi\fi#1}
+
+% For \atdummies and \indexnofonts. \atdummies sets
+% \dummiestrue and \indexnofonts sets \indexnofontstrue.
+\def\definedummies{
+ % @-sign is always an escape character when reading auxiliary files
+ \escapechar = `\@
+ %
\commondummyletter\!%
\commondummyaccent\"%
\commondummyaccent\'%
@@ -4940,58 +4910,123 @@ $$%
\commondummyaccent\^%
\commondummyaccent\`%
\commondummyaccent\~%
- \commondummyword\u
- \commondummyword\v
- \commondummyword\H
- \commondummyword\dotaccent
- \commondummyword\ogonek
- \commondummyword\ringaccent
- \commondummyword\tieaccent
- \commondummyword\ubaraccent
- \commondummyword\udotaccent
- \commondummyword\dotless
+ %
+ % Control letters and accents.
+ \commondummyword\u {}%
+ \commondummyword\v {}%
+ \commondummyword\H {}%
+ \commondummyword\dotaccent {}%
+ \commondummyword\ogonek {}%
+ \commondummyword\ringaccent {}%
+ \commondummyword\tieaccent {}%
+ \commondummyword\ubaraccent {}%
+ \commondummyword\udotaccent {}%
+ \commondummyword\dotless {}%
%
% Texinfo font commands.
- \commondummyword\b
- \commondummyword\i
- \commondummyword\r
- \commondummyword\sansserif
- \commondummyword\sc
- \commondummyword\slanted
- \commondummyword\t
+ \commondummyword\b {}%
+ \commondummyword\i {}%
+ \commondummyword\r {}%
+ \commondummyword\sansserif {}%
+ \commondummyword\sc {}%
+ \commondummyword\slanted {}%
+ \commondummyword\t {}%
%
% Commands that take arguments.
- \commondummyword\abbr
- \commondummyword\acronym
- \commondummyword\anchor
- \commondummyword\cite
- \commondummyword\code
- \commondummyword\command
- \commondummyword\dfn
- \commondummyword\dmn
- \commondummyword\email
- \commondummyword\emph
- \commondummyword\env
- \commondummyword\file
- \commondummyword\image
- \commondummyword\indicateurl
- \commondummyword\inforef
- \commondummyword\kbd
- \commondummyword\key
- \commondummyword\math
- \commondummyword\option
- \commondummyword\pxref
- \commondummyword\ref
- \commondummyword\samp
- \commondummyword\strong
- \commondummyword\tie
- \commondummyword\U
- \commondummyword\uref
- \commondummyword\url
- \commondummyword\var
- \commondummyword\verb
- \commondummyword\w
- \commondummyword\xref
+ \commondummyword\abbr {}%
+ \commondummyword\acronym {}%
+ \commondummyword\anchor {}%
+ \commondummyword\cite {}%
+ \commondummyword\code {}%
+ \commondummyword\command {}%
+ \commondummyword\dfn {}%
+ \commondummyword\dmn {}%
+ \commondummyword\email {}%
+ \commondummyword\emph {}%
+ \commondummyword\env {}%
+ \commondummyword\file {}%
+ \commondummyword\image {}%
+ \commondummyword\indicateurl{}%
+ \commondummyword\inforef {}%
+ \commondummyword\kbd {}%
+ \commondummyword\key {}%
+ \commondummyword\math {}%
+ \commondummyword\option {}%
+ \commondummyword\pxref {}%
+ \commondummyword\ref {}%
+ \commondummyword\samp {}%
+ \commondummyword\strong {}%
+ \commondummyword\tie {}%
+ \commondummyword\U {}%
+ \commondummyword\uref {}%
+ \commondummyword\url {}%
+ \commondummyword\var {}%
+ \commondummyword\verb {}%
+ \commondummyword\w {}%
+ \commondummyword\xref {}%
+ %
+ \commondummyword\AA {AA}%
+ \commondummyword\AE {AE}%
+ \commondummyword\DH {DZZ}%
+ \commondummyword\L {L}%
+ \commondummyword\O {O}%
+ \commondummyword\OE {OE}%
+ \commondummyword\TH {TH}%
+ \commondummyword\aa {aa}%
+ \commondummyword\ae {ae}%
+ \commondummyword\dh {dzz}%
+ \commondummyword\exclamdown {!}%
+ \commondummyword\l {l}%
+ \commondummyword\o {o}%
+ \commondummyword\oe {oe}%
+ \commondummyword\ordf {a}%
+ \commondummyword\ordm {o}%
+ \commondummyword\questiondown {?}%
+ \commondummyword\ss {ss}%
+ \commondummyword\th {th}%
+ %
+ \commondummyword\LaTeX {LaTeX}%
+ \commondummyword\TeX {TeX}%
+ %
+ % Assorted special characters.
+ \commondummyword\ampchar {\normalamp}%
+ \commondummyword\atchar {\@}%
+ \commondummyword\arrow {->}%
+ \commondummyword\backslashchar {\realbackslash}%
+ \commondummyword\bullet {bullet}%
+ \commondummyword\comma {,}%
+ \commondummyword\copyright {copyright}%
+ \commondummyword\dots {...}%
+ \commondummyword\enddots {...}%
+ \commondummyword\entrybreak {}%
+ \commondummyword\equiv {===}%
+ \commondummyword\error {error}%
+ \commondummyword\euro {euro}%
+ \commondummyword\expansion {==>}%
+ \commondummyword\geq {>=}%
+ \commondummyword\guillemetleft {<<}%
+ \commondummyword\guillemetright {>>}%
+ \commondummyword\guilsinglleft {<}%
+ \commondummyword\guilsinglright {>}%
+ \commondummyword\lbracechar {\{}%
+ \commondummyword\leq {<=}%
+ \commondummyword\mathopsup {sup}%
+ \commondummyword\minus {-}%
+ \commondummyword\pounds {pounds}%
+ \commondummyword\point {.}%
+ \commondummyword\print {-|}%
+ \commondummyword\quotedblbase {"}%
+ \commondummyword\quotedblleft {"}%
+ \commondummyword\quotedblright {"}%
+ \commondummyword\quoteleft {`}%
+ \commondummyword\quoteright {'}%
+ \commondummyword\quotesinglbase {,}%
+ \commondummyword\rbracechar {\}}%
+ \commondummyword\registeredsymbol {R}%
+ \commondummyword\result {=>}%
+ \commondummyword\sub {}%
+ \commondummyword\sup {}%
+ \commondummyword\textdegree {o}%
}
\let\indexlbrace\relax
@@ -5042,18 +5077,7 @@ $$%
% would be for a given command (usually its argument).
%
\def\indexnofonts{%
- % Accent commands should become @asis.
- \def\commondummyaccent##1{\let##1\asis}%
- % We can just ignore other control letters.
- \def\commondummyletter##1{\let##1\empty}%
- % All control words become @asis by default; overrides below.
- \let\commondummyword\commondummyaccent
- \commondummiesnofonts
- %
- % Don't no-op \tt, since it isn't a user-level command
- % and is used in the definitions of the active chars like <, >, |, etc.
- % Likewise with the other plain tex font commands.
- %\let\tt=\asis
+ \indexnofontstrue
%
\def\ { }%
\def\@{@}%
@@ -5065,84 +5089,19 @@ $$%
\let\lbracechar\{%
\let\rbracechar\}%
%
- % Non-English letters.
- \def\AA{AA}%
- \def\AE{AE}%
- \def\DH{DZZ}%
- \def\L{L}%
- \def\OE{OE}%
- \def\O{O}%
- \def\TH{TH}%
- \def\aa{aa}%
- \def\ae{ae}%
- \def\dh{dzz}%
- \def\exclamdown{!}%
- \def\l{l}%
- \def\oe{oe}%
- \def\ordf{a}%
- \def\ordm{o}%
- \def\o{o}%
- \def\questiondown{?}%
- \def\ss{ss}%
- \def\th{th}%
- %
- \let\do\indexnofontsdef
- %
- \do\LaTeX{LaTeX}%
- \do\TeX{TeX}%
- %
- % Assorted special characters.
- \do\atchar{@}%
- \do\arrow{->}%
- \do\bullet{bullet}%
- \do\comma{,}%
- \do\copyright{copyright}%
- \do\dots{...}%
- \do\enddots{...}%
- \do\equiv{==}%
- \do\error{error}%
- \do\euro{euro}%
- \do\expansion{==>}%
- \do\geq{>=}%
- \do\guillemetleft{<<}%
- \do\guillemetright{>>}%
- \do\guilsinglleft{<}%
- \do\guilsinglright{>}%
- \do\leq{<=}%
- \do\lbracechar{\{}%
- \do\minus{-}%
- \do\point{.}%
- \do\pounds{pounds}%
- \do\print{-|}%
- \do\quotedblbase{"}%
- \do\quotedblleft{"}%
- \do\quotedblright{"}%
- \do\quoteleft{`}%
- \do\quoteright{'}%
- \do\quotesinglbase{,}%
- \do\rbracechar{\}}%
- \do\registeredsymbol{R}%
- \do\result{=>}%
- \do\textdegree{o}%
%
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
- % makeinfo does not expand macros in the argument to @deffn, which ends up
- % writing an index entry, and texindex isn't prepared for an index sort entry
- % that starts with \.
%
% Since macro invocations are followed by braces, we can just redefine them
% to take a single TeX argument. The case of a macro invocation that
% goes to end-of-line is not handled.
%
+ \def\commondummyword##1{\let##1\asis}%
\macrolist
\let\value\indexnofontsvalue
}
-% Give the control sequence a definition that removes the {} that follows
-% its use, e.g. @AA{} -> AA
-\def\indexnofontsdef#1#2{\def#1##1{#2}}%
-
@@ -5392,7 +5351,9 @@ $$%
% ..., ready, GO:
%
\def\safewhatsit#1{\ifhmode
+ \whatsitpenalty = \lastpenalty
#1%
+ \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
\else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
\whatsitskip = \lastskip
@@ -5616,6 +5577,11 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\newdimen\entryrightmargin
\entryrightmargin=0pt
+% for PDF output, whether to make the text of the entry a link to the page
+% number. set for @contents and @shortcontents where there is only one
+% page number.
+\newif\iflinkentrytext
+
% \entry typesets a paragraph consisting of the text (#1), dot leaders, and
% then page number (#2) flushed to the right margin. It is used for index
% and table of contents entries. The paragraph is indented by \leftskip.
@@ -5642,7 +5608,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
}
\def\entrybreak{\unskip\space\ignorespaces}%
\def\doentry{%
- % Save the text of the entry
+ % Save the text of the entry in \boxA
\global\setbox\boxA=\hbox\bgroup
\bgroup % Instead of the swallowed brace.
\noindent
@@ -5652,12 +5618,21 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% with catcodes occurring.
}
{\catcode`\@=11
+% #1 is the page number
\gdef\finishentry#1{%
- \egroup % end box A
+ \egroup % end \boxA
\dimen@ = \wd\boxA % Length of text of entry
+ % add any leaders and page number to \boxA.
\global\setbox\boxA=\hbox\bgroup
- \unhbox\boxA
- % #1 is the page number.
+ \ifpdforxetex
+ \iflinkentrytext
+ \pdflinkpage{#1}{\unhbox\boxA}%
+ \else
+ \unhbox\boxA
+ \fi
+ \else
+ \unhbox\boxA
+ \fi
%
% Get the width of the page numbers, and only use
% leaders if they are present.
@@ -5676,6 +5651,8 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi
\fi
\egroup % end \boxA
+ %
+ % now output
\ifdim\wd\boxB = 0pt
\noindent\unhbox\boxA\par
\nobreak
@@ -6375,7 +6352,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi
}
-\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname}
+\parseargdef\setchapternewpage{\csname CHAPPAG#1\endcsname\HEADINGSon}
\def\CHAPPAGoff{%
\global\let\contentsalignmacro = \chappager
@@ -6392,7 +6369,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\global\let\pchapsepmacro=\chapoddpage
\global\def\HEADINGSon{\HEADINGSdouble}}
-\CHAPPAGon
+\setchapternewpage on
% \chapmacro - Chapter opening.
%
@@ -6772,6 +6749,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\def\thistitle{}% no title in double-sided headings
% Record where the Roman numerals started.
\ifnum\romancount=0 \global\romancount=\pagecount \fi
+ \linkentrytexttrue
}
% \raggedbottom in plain.tex hardcodes \topskip so override it
@@ -6899,7 +6877,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Chapters, in the short toc.
% See comments in \dochapentry re vbox and related settings.
\def\shortchapentry#1#2#3#4{%
- \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}%
+ \tocentry{\shortchaplabel{#2}\labelspace #1}{#4}%
}
% Appendices, in the main contents.
@@ -6914,7 +6892,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Unnumbered chapters.
\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
-\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}}
+\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{#4}}
% Sections.
\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}}
@@ -6946,24 +6924,24 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Move the page numbers slightly to the right
\advance\entryrightmargin by -0.05em
\chapentryfonts
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \tocentry{#1}{#2}%
\endgroup
\nobreak\vskip .25\baselineskip plus.1\baselineskip
}
\def\dosecentry#1#2{\begingroup
\secentryfonts \leftskip=\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \tocentry{#1}{#2}%
\endgroup}
\def\dosubsecentry#1#2{\begingroup
\subsecentryfonts \leftskip=2\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \tocentry{#1}{#2}%
\endgroup}
\def\dosubsubsecentry#1#2{\begingroup
\subsubsecentryfonts \leftskip=3\tocindent
- \tocentry{#1}{\dopageno\bgroup#2\egroup}%
+ \tocentry{#1}{#2}%
\endgroup}
% We use the same \entry macro as for the index entries.
@@ -6972,9 +6950,6 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Space between chapter (or whatever) number and the title.
\def\labelspace{\hskip1em \relax}
-\def\dopageno#1{{\rm #1}}
-\def\doshortpageno#1{{\rm #1}}
-
\def\chapentryfonts{\secfonts \rm}
\def\secentryfonts{\textfonts}
\def\subsecentryfonts{\textfonts}
@@ -7119,8 +7094,7 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\newdimen\cartouter\newdimen\cartinner
\newskip\normbskip\newskip\normpskip\newskip\normlskip
-
-\envdef\cartouche{%
+\envparseargdef\cartouche{%
\cartouchefontdefs
\ifhmode\par\fi % can't be in the midst of a paragraph.
\startsavinginserts
@@ -7150,16 +7124,19 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
\hbox\bgroup
- \hskip\lskip
- \vrule\kern3pt
- \vbox\bgroup
- \kern3pt
- \hsize=\cartinner
- \baselineskip=\normbskip
- \lineskip=\normlskip
- \parskip=\normpskip
- \vskip -\parskip
- \comment % For explanation, see the end of def\group.
+ \hskip\lskip
+ \vrule\kern3pt
+ \vbox\bgroup
+ \hsize=\cartinner
+ \baselineskip=\normbskip
+ \lineskip=\normlskip
+ \parskip=\normpskip
+ \def\arg{#1}%
+ \ifx\arg\empty\else
+ \centerV{\hfil \bf #1 \hfil}%
+ \fi
+ \kern3pt
+ \vskip -\parskip
}
\def\Ecartouche{%
\ifhmode\par\fi
@@ -7410,8 +7387,9 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\endgroup
%
\def\setupverb{%
- \tt % easiest (and conventionally used) font for verbatim
+ \tt
\def\par{\leavevmode\endgraf}%
+ \parindent = 0pt
\setcodequotes
\tabeightspaces
% Respect line breaks,
@@ -7587,32 +7565,19 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\exdentamount=\defbodyindent
}
-\def\dodefunx#1{%
- % First, check whether we are in the right environment:
- \checkenv#1%
- %
- % As above, allow line break if we have multiple x headers in a row.
- % It's not a great place, though.
- \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
- %
- % And now, it's time to reuse the body of the original defun:
- \expandafter\gobbledefun#1%
-}
-\def\gobbledefun#1\startdefun{}
-
-% \printdefunline \deffnheader{text}
+% Called as \printdefunline \deffooheader{text}
%
\def\printdefunline#1#2{%
\begingroup
\plainfrenchspacing
- % call \deffnheader:
+ % call \deffooheader:
#1#2 \endheader
% common ending:
\interlinepenalty = 10000
\advance\rightskip by 0pt plus 1fil\relax
\endgraf
\nobreak\vskip -\parskip
- \penalty\defunpenalty % signal to \startdefun and \dodefunx
+ \penalty\defunpenalty % signal to \startdefun and \deffoox
% Some of the @defun-type tags do not enable magic parentheses,
% rendering the following check redundant. But we don't optimize.
\checkparencounts
@@ -7621,7 +7586,25 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\def\Edefun{\endgraf\medbreak}
-% \makedefun{deffoo}{ (definition of \deffooheader) }
+% @defblock, @defline do not automatically create index entries
+\envdef\defblock{%
+ \startdefun
+}
+\let\Edefblock\Edefun
+
+\def\defline{%
+ \doingtypefnfalse
+ \parseargusing\activeparens{\printdefunline\deflineheader}%
+}
+\def\deflineheader#1 #2 #3\endheader{%
+ \defname{#1}{}{#2}\magicamp\defunargs{#3\unskip}%
+}
+\def\deftypeline{%
+ \doingtypefntrue
+ \parseargusing\activeparens{\printdefunline\deflineheader}%
+}
+
+% \makedefun{deffoo} (\deffooheader parameters) { (\deffooheader expansion) }
%
% Define \deffoo, \deffoox \Edeffoo and \deffooheader.
\def\makedefun#1{%
@@ -7636,8 +7619,18 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\doingtypefnfalse % distinguish typed functions from all else
\parseargusing\activeparens{\printdefunline#3}%
}%
- \def#2{\dodefunx#1}%
- \def#3%
+ \def#2{%
+ % First, check whether we are in the right environment:
+ \checkenv#1%
+ %
+ % As in \startdefun, allow line break if we have multiple x headers
+ % in a row. It's not a great place, though.
+ \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
+ %
+ \doingtypefnfalse % distinguish typed functions from all else
+ \parseargusing\activeparens{\printdefunline#3}%
+ }%
+ \def#3% definition of \deffooheader follows
}
\newif\ifdoingtypefn % doing typed function?
@@ -7831,10 +7824,12 @@ might help (with 'rm \jobname.?? \jobname.??s')%
% Print arguments. Use slanted for @def*, typewriter for @deftype*.
\def\defunargs#1{%
- \df \ifdoingtypefn \tt \else \sl \fi
- \ifflagclear{txicodevaristt}{}%
- {\def\var##1{{\setregularquotes \ttsl ##1}}}%
- #1%
+ \bgroup
+ \df \ifdoingtypefn \tt \else \sl \fi
+ \ifflagclear{txicodevaristt}{}%
+ {\def\var##1{{\setregularquotes \ttsl ##1}}}%
+ #1%
+ \egroup
}
% We want ()&[] to print specially on the defun line.
@@ -8592,6 +8587,87 @@ might help (with 'rm \jobname.?? \jobname.??s')%
\fi \macnamexxx}
+% @linemacro
+
+\parseargdef\linemacro{%
+ \linegetargs#1 \linegetargs
+ \expandafter\linegetparamlist\argl;%
+ \begingroup \macrobodyctxt \usembodybackslash
+ \parselinemacrobody
+}
+
+% Parse the arguments to a @linemacro line. Set \macname to the name
+% of the macro and \argl to the list of arguments.
+\def\linegetargs#1 #2\linegetargs{%
+ \macname={#1}%
+ \def\argl{#2}%
+}
+
+% Build up \paramlist which will be used as the parameter text for the macro.
+% At the end it will be like "#1 #2 #3\endlinemacro".
+\def\linegetparamlist#1;{%
+ \paramno=0\def\paramlist{}%
+ \let\hash\relax \let\xeatspaces\relax
+ \linegetparamlistxxx#1; %
+}
+\def\linegetparamlistxxx#1 {%
+ \if#1;\let\next=\linegetparamlistxxxx
+ \else \let\next=\linegetparamlistxxx
+ \advance\paramno by 1
+ \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
+ {\noexpand\xeatspaces{\hash\the\paramno}}%
+ \edef\paramlist{\paramlist\hash\the\paramno\space}%
+ \fi\next}
+\def\linegetparamlistxxxx{%
+ \ifx\paramlist\empty
+ \def\paramlist{\hash 1\endlinemacro}%
+ \else
+ \expandafter\fixparamlist\paramlist\fixparamlist
+ \fi
+}
+% Replace final space token
+\def\fixparamlist#1 \fixparamlist{%
+ \def\paramlist{#1\endlinemacro}%
+}
+
+% Read the body of the macro, replacing backslash-surrounded variables
+%
+{\catcode`\ =\other\long\gdef\parselinemacrobody#1@end linemacro{%
+\let\xeatspaces\relax
+\xdef\macrobody{#1}%
+\endgroup
+\linemacrodef
+}}
+
+% Make the definition
+\def\linemacrodef{%
+ \let\hash=##%
+ \let\xeatspaces\relax
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup
+ \noexpand\scanctxt
+ \noexpand\parsearg
+ \expandafter\noexpand\csname\the\macname @@\endcsname
+ }
+ \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+ \egroup
+ \expandafter\noexpand
+ \csname\the\macname @@@\endcsname##1 \noexpand\endlinemacro
+ % Note that we append a space to the macro line to terminate the last
+ % argument in case the final argument is empty. @xeatspaces may be needed
+ % to remove this space.
+ }
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter\csname\the\macname @@@\endcsname\paramlist{%
+ \newlinechar=13 % split \macrobody into lines
+ \let\noexpand\xeatspaces\noexpand\eatspaces
+ \noexpand\scantokens{\macrobody}%
+ }
+}
+
+
+
% @alias.
% We need some trickery to remove the optional spaces around the equal
% sign. Make them active and then expand them all to nothing.
@@ -9873,12 +9949,10 @@ directory should work if nowhere else does.}
% For native Unicode handling (XeTeX and LuaTeX)
\nativeunicodechardefs
\else
- % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX)
+ % For treating UTF-8 as byte sequences (TeX, eTeX and pdfTeX).
+ % Since we already invoke \utfeightchardefs at the top level,
+ % making non-ascii chars active is sufficient.
\setnonasciicharscatcode\active
- % since we already invoked \utfeightchardefs at the top level
- % (below), do not re-invoke it, otherwise our check for duplicated
- % definitions gets triggered. Making non-ascii chars active is
- % sufficient.
\fi
%
\else
@@ -9903,7 +9977,6 @@ directory should work if nowhere else does.}
\fi
}
-% emacs-page
% A message to be logged when using a character that isn't available
% the default font encoding (OT1).
%
@@ -9912,12 +9985,6 @@ directory should work if nowhere else does.}
% Take account of \c (plain) vs. \, (Texinfo) difference.
\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
-% First, make active non-ASCII characters in order for them to be
-% correctly categorized when TeX reads the replacement text of
-% macros containing the character definitions.
-\setnonasciicharscatcode\active
-%
-
\def\gdefchar#1#2{%
\gdef#1{%
\ifpassthroughchars
@@ -9927,8 +9994,14 @@ directory should work if nowhere else does.}
\fi
}}
+\begingroup
+
+% Make non-ASCII characters active for defining the character definition
+% macros.
+\setnonasciicharscatcode\active
+
% Latin1 (ISO-8859-1) character definitions.
-\def\latonechardefs{%
+\gdef\latonechardefs{%
\gdefchar^^a0{\tie}
\gdefchar^^a1{\exclamdown}
\gdefchar^^a2{{\tcfont \char162}} % cent
@@ -10033,7 +10106,7 @@ directory should work if nowhere else does.}
}
% Latin9 (ISO-8859-15) encoding character definitions.
-\def\latninechardefs{%
+\gdef\latninechardefs{%
% Encoding is almost identical to Latin1.
\latonechardefs
%
@@ -10048,7 +10121,7 @@ directory should work if nowhere else does.}
}
% Latin2 (ISO-8859-2) character definitions.
-\def\lattwochardefs{%
+\gdef\lattwochardefs{%
\gdefchar^^a0{\tie}
\gdefchar^^a1{\ogonek{A}}
\gdefchar^^a2{\u{}}
@@ -10152,6 +10225,8 @@ directory should work if nowhere else does.}
\gdefchar^^ff{\dotaccent{}}
}
+\endgroup % active chars
+
% UTF-8 character definitions.
%
% This code to support UTF-8 is based on LaTeX's utf8.def, with some
@@ -10489,7 +10564,7 @@ directory should work if nowhere else does.}
\DeclareUnicodeCharacter{00AE}{\registeredsymbol{}}%
\DeclareUnicodeCharacter{00AF}{\={ }}%
%
- \DeclareUnicodeCharacter{00B0}{\textdegree}
+ \DeclareUnicodeCharacter{00B0}{\textdegree}%
\DeclareUnicodeCharacter{00B1}{\ensuremath\pm}%
\DeclareUnicodeCharacter{00B2}{$^2$}%
\DeclareUnicodeCharacter{00B3}{$^3$}%
@@ -11204,14 +11279,14 @@ directory should work if nowhere else does.}
\relax
}
-% Define all Unicode characters we know about. This makes UTF-8 the default
-% input encoding and allows @U to work.
+% Define all Unicode characters we know about
\iftxinativeunicodecapable
\nativeunicodechardefsatu
\else
\utfeightchardefs
\fi
+
\message{formatting,}
\newdimen\defaultparindent \defaultparindent = 15pt
@@ -11539,7 +11614,7 @@ directory should work if nowhere else does.}
\fi
}
-\microtypeON
+\microtypeOFF
\parseargdef\microtype{%
\def\txiarg{#1}%
@@ -11556,6 +11631,9 @@ directory should work if nowhere else does.}
\message{and turning on texinfo input format.}
+% Make UTF-8 the default encoding.
+\documentencodingzzz{UTF-8}
+
\def^^L{\par} % remove \outer, so ^L can appear in an @comment
\catcode`\^^K = 10 % treat vertical tab as whitespace
@@ -11618,23 +11696,32 @@ directory should work if nowhere else does.}
% Used sometimes to turn off (effectively) the active characters even after
% parsing them.
\def\turnoffactive{%
- \normalturnoffactive
+ \passthroughcharstrue
+ \let-=\normaldash
+ \let"=\normaldoublequote
+ \let$=\normaldollar %$ font-lock fix
+ \let+=\normalplus
+ \let<=\normalless
+ \let>=\normalgreater
+ \let^=\normalcaret
+ \let_=\normalunderscore
+ \let|=\normalverticalbar
+ \let~=\normaltilde
\otherbackslash
+ \setregularquotes
+ \unsepspaces
}
-\catcode`\@=0
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have \loadconf turn them back on.
+\catcode`+=\other \catcode`\_=\other
+
% \backslashcurfont outputs one backslash character in current font,
% as in \char`\\.
\global\chardef\backslashcurfont=`\\
-% \realbackslash is an actual character `\' with catcode other.
-{\catcode`\\=\other @gdef@realbackslash{\}}
-
-% In Texinfo, backslash is an active character; it prints the backslash
-% in fixed width font.
-\catcode`\\=\active % @ for escape char from now on.
-
% Print a typewriter backslash. For math mode, we can't simply use
% \backslashcurfont: the story here is that in math mode, the \char
% of \backslashcurfont ends up printing the roman \ from the math symbol
@@ -11644,109 +11731,120 @@ directory should work if nowhere else does.}
% ignored family value; char position "5C). We can't use " for the
% usual hex value because it has already been made active.
-@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
+\def\ttbackslash{{\tt \ifmmode \mathchar29020 \else \backslashcurfont \fi}}
+\let\backslashchar = \ttbackslash % \backslashchar{} is for user documents.
-% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
-@gdef@otherbackslash{@let\=@realbackslash}
-
-% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-%
-{@catcode`- = @active
- @gdef@normalturnoffactive{%
- @passthroughcharstrue
- @let-=@normaldash
- @let"=@normaldoublequote
- @let$=@normaldollar %$ font-lock fix
- @let+=@normalplus
- @let<=@normalless
- @let>=@normalgreater
- @let^=@normalcaret
- @let_=@normalunderscore
- @let|=@normalverticalbar
- @let~=@normaltilde
- @let\=@ttbackslash
- @setregularquotes
- @unsepspaces
- }
-}
-
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have @fixbackslash turn them back on.
-@catcode`+=@other @catcode`@_=@other
-
-% \enablebackslashhack - allow file to begin `\input texinfo'
-%
-% If a .fmt file is being used, we don't want the `\input texinfo' to show up.
-% That is what \eatinput is for; after that, the `\' should revert to printing
-% a backslash.
-% If the file did not have a `\input texinfo', then it is turned off after
-% the first line; otherwise the first `\' in the file would cause an error.
-% This is used on the very last line of this file, texinfo.tex.
-% We also use @c to call @fixbackslash, in case ends of lines are hidden.
-{
-@catcode`@^=7
-@catcode`@^^M=13@gdef@enablebackslashhack{%
- @global@let\ = @eatinput%
- @catcode`@^^M=13%
- @def@c{@fixbackslash@c}%
- % Definition for the newline at the end of this file.
- @def ^^M{@let^^M@secondlinenl}%
- % Definition for a newline in the main Texinfo file.
- @gdef @secondlinenl{@fixbackslash}%
+% These are made active for url-breaking, so need
+% active definitions as the normal characters.
+\def\normaldot{.}
+\def\normalquest{?}
+\def\normalslash{/}
+
+% \newlinesloadsconf - call \loadconf as soon as possible in the
+% file, e.g. at the first newline.
+%
+{\catcode`\^=7
+\catcode`\^^M=13
+\gdef\newlineloadsconf{%
+ \catcode`\^^M=13 %
+ \newlineloadsconfzz%
+}
+\gdef\newlineloadsconfzz#1^^M{%
+ \def\c{\loadconf\c}%
+ % Definition for the first newline read in the file
+ \def ^^M{\loadconf}%
% In case the first line has a whole-line command on it
- @let@originalparsearg@parsearg
- @def@parsearg{@fixbackslash@originalparsearg}
+ \let\originalparsearg\parsearg%
+ \def\parsearg{\loadconf\originalparsearg}%
}}
-{@catcode`@^=7 @catcode`@^^M=13%
-@gdef@eatinput input texinfo#1^^M{@fixbackslash}}
% Emergency active definition of newline, in case an active newline token
% appears by mistake.
-{@catcode`@^=7 @catcode13=13%
-@gdef@enableemergencynewline{%
- @gdef^^M{%
- @par%
- %<warning: active newline>@par%
+{\catcode`\^=7 \catcode13=13%
+\gdef\enableemergencynewline{%
+ \gdef^^M{%
+ \par%
+ %<warning: active newline>\par%
}}}
-@gdef@fixbackslash{%
- @ifx\@eatinput @let\ = @ttbackslash @fi
- @catcode13=5 % regular end of line
- @enableemergencynewline
- @let@c=@comment
- @let@parsearg@originalparsearg
+% \loadconf gets called at the beginning of every Texinfo file.
+% If texinfo.cnf is present on the system, read it. Useful for site-wide
+% @afourpaper, etc. Not opening texinfo.cnf directly in texinfo.tex
+% makes it possible to make a format file for Texinfo.
+%
+\gdef\loadconf{%
+ \relax % Terminate the filename if running as "tex '&texinfo' FILE.texi".
+ %
+ % Turn off the definitions that trigger \loadconf
+ \everyjobreset
+ \catcode13=5 % regular end of line
+ \enableemergencynewline
+ \let\c=\comment
+ \let\parsearg\originalparsearg
+ %
% Also turn back on active characters that might appear in the input
% file name, in case not using a pre-dumped format.
- @catcode`+=@active
- @catcode`@_=@active
- %
- % If texinfo.cnf is present on the system, read it.
- % Useful for site-wide @afourpaper, etc. This macro, @fixbackslash, gets
- % called at the beginning of every Texinfo file. Not opening texinfo.cnf
- % directly in this file, texinfo.tex, makes it possible to make a format
- % file for Texinfo.
+ \catcode`+=\active
+ \catcode`\_=\active
%
- @openin 1 texinfo.cnf
- @ifeof 1 @else @input texinfo.cnf @fi
- @closein 1
+ \openin 1 texinfo.cnf
+ \ifeof 1 \else \input texinfo.cnf \fi
+ \closein 1
}
+% Redefine some control sequences to be controlled by the \ifdummies
+% and \ifindexnofonts switches. Do this at the end so that the control
+% sequences are all defined.
+\definedummies
+
+
+
+
+\catcode`\@=0
+
+% \realbackslash is an actual character `\' with catcode other.
+{\catcode`\\=\other @gdef@realbackslash{\}}
+
+% In Texinfo, backslash is an active character; it prints the backslash
+% in fixed width font.
+\catcode`\\=\active % @ for escape char from now on.
+
+@let\ = @ttbackslash
+
+% If in a .fmt file, print the version number.
+% \eatinput stops the `\input texinfo' from showing up.
+% After that, `\' should revert to printing a backslash.
+% Turn on active characters that we couldn't do earlier because
+% they might have appeared in the input file name.
+%
+@everyjob{@message{[Texinfo version @texinfoversion]}%
+ @global@let\ = @eatinput
+ @catcode`+=@active @catcode`@_=@active}
+
+{@catcode`@^=7 @catcode`@^^M=13%
+@gdef@eatinput input texinfo#1^^M{@loadconf}}
+
+@def@everyjobreset{@ifx\@eatinput @let\ = @ttbackslash @fi}
+
+% \otherbackslash defines an active \ to be a literal `\' character with
+% catcode other.
+@gdef@otherbackslash{@let\=@realbackslash}
+
+% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
+% the literal character `\'.
+%
+{@catcode`- = @active
+ @gdef@normalturnoffactive{%
+ @turnoffactive
+ @let\=@ttbackslash
+ }
+}
% Say @foo, not \foo, in error messages.
@escapechar = `@@
-% These (along with & and #) are made active for url-breaking, so need
-% active definitions as the normal characters.
-@def@normaldot{.}
-@def@normalquest{?}
-@def@normalslash{/}
-
% These look ok in all fonts, so just make them not special.
% @hashchar{} gets its own user-level command, because of #line.
@catcode`@& = @other @def@normalamp{&}
@@ -11761,15 +11859,11 @@ directory should work if nowhere else does.}
@c Do this last of all since we use ` in the previous @catcode assignments.
@catcode`@'=@active
@catcode`@`=@active
-@setregularquotes
@c Local variables:
@c eval: (add-hook 'before-save-hook 'time-stamp nil t)
@c time-stamp-pattern: "texinfoversion{%Y-%02m-%02d.%02H}"
-@c page-delimiter: "^\\\\message\\|emacs-page"
+@c page-delimiter: "^\\\\message"
@c End:
-@c vim:sw=2:
-
-@enablebackslashhack
-
+@newlineloadsconf
diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi
index f9617f7a5cd..65892f8621e 100644
--- a/doc/misc/tramp.texi
+++ b/doc/misc/tramp.texi
@@ -361,7 +361,7 @@ Another way is to follow the terminal session below:
@example
@group
$ cd ~/emacs
-$ git clone git://git.savannah.gnu.org/tramp.git
+$ git clone https://git.savannah.gnu.org/git/tramp.git
@end group
@end example
@@ -927,6 +927,17 @@ pod is used.
This method does not support user names.
+@item @option{toolbox}
+@cindex method @option{toolbox}
+@cindex @option{toolbox} method
+
+Integration of Toolbox system containers. The host name may be either
+a container's name or ID, as returned by @samp{toolbox list -c}.
+Without a host name, the default Toolbox container for the host will
+be used.
+
+This method does not support user names.
+
@end table
@@ -2721,6 +2732,7 @@ entry, @option{Seconds between keepalives} option. Set this to 5.
There is no counter which could be set.
+@anchor{Using ssh connection sharing}
@subsection Using ssh connection sharing
@vindex ControlPath@r{, ssh option}
@@ -2750,20 +2762,33 @@ allows you to set the @option{ControlPath} provided the variable
Note how @samp{%r}, @samp{%h} and @samp{%p} must be encoded as
@samp{%%r}, @samp{%%h} and @samp{%%p}.
-@vindex tramp-use-ssh-controlmaster-options
-If the @file{~/.ssh/config} file is configured appropriately for the
-above behavior, then any changes to @command{ssh} can be suppressed
-with this @code{nil} setting:
+@vindex tramp-use-connection-share
+Using a predefined string in @code{tramp-ssh-controlmaster-options},
+or puzzling an own string, happens only when user option
+@code{tramp-use-connection-share} is set to @code{t}. If the
+@file{~/.ssh/config} file is configured appropriately for the above
+behavior, then any changes to @command{ssh} can be suppressed with
+this @code{nil} setting:
@lisp
-(customize-set-variable 'tramp-use-ssh-controlmaster-options nil)
+(customize-set-variable 'tramp-use-connection-share nil)
@end lisp
+Sometimes, it is not possible to use OpenSSH's @option{ControlMaster}
+option for remote processes. This could result in concurrent access
+to the OpenSSH socket when reading data by different processes, which
+could block Emacs. In this case, setting
+@code{tramp-use-connection-share} to @code{suppress} disables shared
+access. It is not needed to set this user option permanently to
+@code{suppress}, binding the user option prior calling
+@code{make-process} is sufficient. @value{tramp} does this for
+esxample for compilation processes on its own.
+
@vindex ProxyCommand@r{, ssh option}
@vindex ProxyJump@r{, ssh option}
-This should also be set to @code{nil} if you use the
-@option{ProxyCommand} or @option{ProxyJump} options in your
-@command{ssh} configuration.
+@code{tramp-use-connection-share} should also be set to @code{nil} or
+@code{suppress} if you use the @option{ProxyCommand} or
+@option{ProxyJump} options in your @command{ssh} configuration.
In order to use the @option{ControlMaster} option, @value{tramp} must
check whether the @command{ssh} client supports this option. This is
@@ -2785,12 +2810,16 @@ Host *
Check the @samp{ssh_config(5)} man page whether these options are
supported on your proxy host.
-On MS Windows, @code{tramp-use-ssh-controlmaster-options} is set to
-@code{nil} by default, because the MS Windows and MSYS2
-implementations of @command{OpenSSH} do not support this option properly.
+On MS Windows, @code{tramp-use-connection-share} is set to @code{nil}
+by default, because the MS Windows and MSYS2 implementations of
+@command{OpenSSH} do not support this option properly.
-In PuTTY, you can achieve connection sharing in the @option{Connection/SSH}
-entry, enabling the @option{Share SSH connections if possible} option.
+In PuTTY, you can achieve connection sharing in the
+@option{Connection/SSH} entry, enabling the @option{Share SSH
+connections if possible} option. @code{tramp-use-connection-share}
+must be set to @code{nil}. If @code{tramp-use-connection-share} is
+set to @code{t} or @code{suppress}, @command{plink} is called with the
+option @option{-share} or @option{-noshare}, respectively.
@subsection Configure direct copying between two remote servers
@@ -3174,6 +3203,11 @@ auto-saved files to the same directory as the original file.
Alternatively, set the user option @code{tramp-auto-save-directory}
to direct all auto saves to that location.
+@c Since Emacs 30.
+@vindex remote-file-name-inhibit-auto-save
+If you want to suppress auto-saving of remote files at all, set user
+option @code{remote-file-name-inhibit-auto-save} to non-@code{nil}.
+
@c Since Emacs 29.
@vindex remote-file-name-inhibit-auto-save-visited
An alternative to @code{auto-save-mode} is
@@ -3472,12 +3506,7 @@ much more appropriate.
@value{tramp} can complete the following @value{tramp} file name
components: method names, user names, host names, and file names
-located on remote hosts. User name and host name completion is
-activated only, if file name completion has one of the styles
-@code{basic}, @code{emacs21}, or @code{emacs22}.
-@ifinfo
-@xref{Completion Styles, , , emacs}.
-@end ifinfo
+located on remote hosts.
For example, type @kbd{C-x C-f @value{prefixwithspace} s @key{TAB}},
@value{tramp} completion choices show up as
@@ -3511,10 +3540,7 @@ directory @file{/sbin} on your local host.
Type @kbd{s h @value{postfixhop}} for the minibuffer completion to
@samp{@value{prefix}ssh@value{postfixhop}}. Typing @kbd{@key{TAB}}
shows host names @value{tramp} extracts from @file{~/.ssh/config}
-@c bug#50387
-file, for example@footnote{Some completion styles, like
-@code{substring} or @code{flex}, require to type at least one
-character after the trailing @samp{@value{postfixhop}}.}.
+file, for example:
@example
@group
@@ -3942,12 +3968,12 @@ connection-local variables.
@vindex async-shell-command-width
@vindex COLUMNS@r{, environment variable}
-If Emacs supports the user option @code{async-shell-command-width}
-(since @w{Emacs 27}), @value{tramp} cares about its value for
-asynchronous shell commands. It specifies the number of display
-columns for command output. For synchronous shell commands, a similar
-effect can be achieved by adding the environment variable
-@env{COLUMNS} to @code{tramp-remote-process-environment}.
+@value{tramp} cares about the user option
+@code{async-shell-command-width} for asynchronous shell commands. It
+specifies the number of display columns for command output. For
+synchronous shell commands, a similar effect can be achieved by adding
+the environment variable @env{COLUMNS} to
+@code{tramp-remote-process-environment}.
@subsection Running @code{eshell} on a remote host
@@ -4297,9 +4323,10 @@ It does not use @code{tramp-remote-path}.
In order to gain even more performance, it is recommended to bind
@code{tramp-verbose} to 0 when running @code{make-process} or
@code{start-file-process}. Furthermore, you might set
-@code{tramp-use-ssh-controlmaster-options} to @code{nil} in order to
-bypass @value{tramp}'s handling of the @option{ControlMaster} options,
-and use your own settings in @file{~/.ssh/config}.
+@code{tramp-use-connection-share} to @code{nil} in order to bypass
+@value{tramp}'s handling of the @option{ControlMaster} options, and
+use your own settings in @file{~/.ssh/config}, @ref{Using ssh
+connection sharing}.
@node Cleanup remote connections
@@ -4838,8 +4865,8 @@ Where is the latest @value{tramp}?
@item
Which systems does it work on?
-The package works successfully on @w{Emacs 26}, @w{Emacs 27}, @w{Emacs
-28}, and @w{Emacs 29}.
+The package works successfully on @w{Emacs 27}, @w{Emacs 28}, @w{Emacs
+29}, and @w{Emacs 30}.
While Unix and Unix-like systems are the primary remote targets,
@value{tramp} has equal success connecting to other platforms, such as
@@ -4898,6 +4925,36 @@ Disable file locks. Set @code{remote-file-name-inhibit-locks} to
the same remote file.
@item
+@vindex remote-file-name-inhibit-auto-save
+Keep auto-save files local. This is already the default configuration
+in Emacs, don't change it. If you want to disable auto-saving for
+remote files at all, set @code{remote-file-name-inhibit-auto-save} to
+@code{t}, but think about the consequences!
+
+If you want to disable auto-saving just for selected connections, for
+example due to security considerations, use connection-local variables
+in order to set @code{buffer-auto-save-file-name}. If you, for
+example, want to disable auto-saving for all @option{sudo}
+connections, apply the following code.
+@ifinfo
+@xref{Connection Variables, , , emacs}.
+@end ifinfo
+
+@lisp
+@group
+(connection-local-set-profile-variables
+ 'my-auto-save-profile
+ '((buffer-auto-save-file-name . nil)))
+@end group
+
+@group
+(connection-local-set-profiles
+ '(:application tramp :protocol "sudo")
+ 'my-auto-save-profile)
+@end group
+@end lisp
+
+@item
Disable excessive traces. Set @code{tramp-verbose} to 3 or lower,
default being 3. Increase trace levels temporarily when hunting for
bugs.
@@ -5211,6 +5268,7 @@ HISTFILE=/dev/null
@item
Where are remote files trashed to?
+@vindex remote-file-name-inhibit-delete-by-moving-to-trash
Emacs can trash file instead of deleting
@ifinfo
them, @ref{Misc File Ops, Trashing , , emacs}.
@@ -5218,9 +5276,10 @@ them, @ref{Misc File Ops, Trashing , , emacs}.
@ifnotinfo
them.
@end ifnotinfo
-Remote files are always trashed to the local trash, except remote
-encrypted files (@pxref{Keeping files encrypted}), which are deleted
-anyway.
+Remote files are always trashed to the local trash, except the user
+option @code{remote-file-name-inhibit-delete-by-moving-to-trash} is
+non-@code{nil}, or it is a remote encrypted file (@pxref{Keeping files
+encrypted}), which are deleted anyway.
If Emacs is configured to use the XDG conventions for the trash
directory, remote files cannot be restored with the respective tools,
diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi
index 299fb3fcb31..2f505c6acea 100644
--- a/doc/misc/trampver.texi
+++ b/doc/misc/trampver.texi
@@ -7,10 +7,10 @@
@c In the Tramp GIT, the version number and the bug report address
@c are auto-frobbed from configure.ac.
-@set trampver 2.6.0.29.1
+@set trampver 2.7.0-pre
@set trampurl https://www.gnu.org/software/tramp/
@set tramp-bug-report-address tramp-devel@@gnu.org
-@set emacsver 26.1
+@set emacsver 27.1
@c Other flags from configuration.
@set instprefix /usr/local
diff --git a/etc/AUTHORS b/etc/AUTHORS
index 3bffc9355e4..647b73aea4e 100644
--- a/etc/AUTHORS
+++ b/etc/AUTHORS
@@ -10,13 +10,11 @@ Aaron Ecay: changed ob-R.el ob-core.el org-src.el ox-latex.el nsterm.m
org.el org.texi package.el paren.el
Aaron Jensen: changed frameset.el nsterm.m xdisp-tests.el xdisp.c
- Info.plist.in flyspell.el icomplete.el mouse.el server.el systhread.c
- w32term.c xterm.c
+ Info.plist.in flyspell.el mouse.el server.el systhread.c w32term.c
+ xterm.c
Aaron Larson: co-wrote bibtex.el
-Aaron L. Zeng: changed savehist.el
-
Aaron S. Hawley: wrote lisp-tests.el undo-tests.el
and changed simple.el files.texi isearch.el morse.el sgml-mode.el
tar-mode.el textmodes/table.el thingatpt.el add-log.el autoinsert.el
@@ -25,8 +23,6 @@ and changed simple.el files.texi isearch.el morse.el sgml-mode.el
Abdó Roig-Maranges: changed org.el org-agenda.el ox-html.el ox-odt.el
-Abhiseck Paira: changed eww.el
-
Abraham Nahum: changed configure.ac dgux4.h sysdep.c
Abramo Bagnara: changed term.c
@@ -37,8 +33,6 @@ Achim Gratz: changed org.el org-compat.el org.texi org-clock.el
ob-python.el ob-ref.el ob-sh.el org-element.el org-exp-blocks.el
and 22 other files
-Ackerley Tng: changed xref.el
-
Adam Gołębiowski: changed lib-src/Makefile.in
Adam Hupp: changed emacs.py emacs2.py emacs3.py gud.el
@@ -74,7 +68,7 @@ Adrian Robert: co-wrote ns-win.el
and changed nsterm.m nsfns.m nsfont.m nsterm.h nsmenu.m configure.ac
src/Makefile.in macos.texi README config.in emacs.c font.c keyboard.c
nsgui.h nsimage.m xdisp.c image.c lib-src/Makefile.in lisp.h menu.c
- Makefile.in and 79 other files
+ Makefile.in and 78 other files
Ævar Arnfjörð Bjarmason: changed rcirc.el
@@ -90,8 +84,6 @@ Aidan Kehoe: changed ipa.el lread.c mm-util.el erc-log.el erc.el
gnus-sum.el gnus-util.el latin-ltx.el nnfolder.el ob-tangle.el
objects.texi
-Akash Hiremath: changed README.md eglot.el
-
Ake Stenhoff: co-wrote imenu.el
and changed cc-mode.el perl-mode.el
@@ -108,13 +100,14 @@ and changed url-expand.el process.c url-parse.el w32proc.c message.el
Alakazam Petrofsky: changed hanoi.el
-Alan Mackenzie: wrote cc-awk.el debug-early.el
+Alan Mackenzie: wrote cc-awk.el
and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el
cc-langs.el cc-mode.el cc-styles.el cc-vars.el
-and changed cc-mode.texi bytecomp.el minibuf.c window.c edebug.el
- follow.el lisp.h display.texi eval.c keyboard.c subr.el frame.c lread.c
- syntax.texi xdisp.c progmodes/compile.el programs.texi font-lock.el
- modes.texi window.el windows.texi and 189 other files
+and changed cc-mode.texi minibuf.c bytecomp.el window.c edebug.el
+ follow.el display.texi subr.el syntax.texi progmodes/compile.el
+ programs.texi eval.c keyboard.c lisp.h modes.texi window.el
+ windows.texi cus-start.el font-lock.el frame.c isearch.el
+ and 167 other files
Alan Modra: changed unexelf.c
@@ -127,11 +120,9 @@ Alan Shutko: changed diary-lib.el calendar.el bindings.el cal-hebrew.el
Alan Third: wrote dabbrev-tests.el image-transforms-tests.el
and changed nsterm.m nsterm.h nsfns.m image.c nsmenu.m configure.ac
- nsimage.m ns-win.el macfont.m dispextern.h nsfont.m frame.el
- display.texi xdisp.c frame.c frame.h image.el macos.texi nsselect.m
- xterm.c .gitlab-ci.yml and 39 other files
-
-Alan Zimmerman: changed eglot.el
+ nsimage.m ns-win.el macfont.m dispextern.h frame.el nsfont.m
+ display.texi xdisp.c frame.c frame.h macos.texi xterm.c .gitlab-ci.yml
+ Makefile.in emacs.c and 39 other files
Alastair Burt: changed gnus-art.el smiley.el
@@ -140,16 +131,12 @@ and changed sieve.el gnus-msg.el gnus.texi message.el sieve.texi
Albert L. Ting: changed gnus-group.el mail-hist.el
-Aleksandr Vityazev: changed cl.texi tramp-compat.el treesit.el
+Aleksandr Vityazev: changed tramp-compat.el
Aleksei Gusev: changed progmodes/compile.el
-Aleksey Kladov: changed eglot.el
-
-Alexander Adolf: wrote eudc-capf.el eudcb-ecomplete.el
- eudcb-macos-contacts.el eudcb-mailabbrev.el
-and changed eudc.texi message.el eudc-vars.el ecompleterc eudc-tests.el
- eudc.el mailrc
+Alexander Adolf: wrote eudcb-macos-contacts.el
+and changed eudc.texi
Alexander Becher: changed vc-annotate.el
@@ -185,8 +172,7 @@ Alexander Zhuckov: changed ebrowse.c
Alexandre Adolphe: changed cus-face.el dispextern.h display.texi nsfont.m
nsterm.m w32term.c xdisp.c xfaces.c xterm.c
-Alexandre Duret-Lutz: changed gnus-icalendar.el nnmaildir.el
- gnus-icalendar-tests.el
+Alexandre Duret-Lutz: changed nnmaildir.el
Alexandre Garreau: changed message.el
@@ -203,7 +189,7 @@ and changed emacs3.py vc-hooks.el vc.el xml.el
Alexandr Vityazev: changed shortdoc.el
-Alex Bochannek: changed gnus-sum.el gnus.texi gnus-score.el gnus-topic.el
+Alex Bochannek: changed gnus.texi gnus-sum.el gnus-score.el gnus-topic.el
gnus-util.el gnus-fun.el gnus-group.el gnus.el ange-ftp.el gnus-art.el
nnimap.el tramp-sh.el
@@ -215,8 +201,6 @@ Alexei Khlebnikov: changed autorevert.el vc-git.el
Alex Kosorukoff: changed org-capture.el
-Alex Kost: changed scheme.el
-
Alex Mcgrath: changed rcirc.el
Alex Murray: changed erc-desktop-notifications.el network-stream.el
@@ -230,7 +214,8 @@ Alex Reed: changed verilog-mode.el
Alex Rezinsky: wrote which-func.el
Alex Schroeder: wrote ansi-color.el cus-theme.el erc-compat.el
- erc-join.el erc-lang.el erc-ring.el master.el spam-stat.el sql.el
+ erc-hecomplete.el erc-join.el erc-lang.el erc-ring.el master.el
+ spam-stat.el sql.el
and co-wrote longlines.el mail/rmailmm.el
and changed erc.el erc-track.el erc-button.el erc-stamp.el erc-match.el
erc-autoaway.el erc-nickserv.el rcirc.texi Makefile erc-autojoin.el
@@ -251,11 +236,10 @@ Ali Bahrami: changed configure configure.ac sol2-10.h
Alin C. Soare: changed lisp-mode.el hexl.el
-Allen Li: changed abbrev.el abbrev-tests.el abbrevs.texi find-dired.el
- recentf.el sending.texi autoload.el bookmark.el comint.el dired-aux.el
- dired-x.el dired.texi elec-pair.el gnus-group.el misc.texi nsm.el
- progmodes/compile.el ring-tests.el ring.el sequences.texi subr.el
- xref.el
+Allen Li: changed abbrev.el abbrev-tests.el abbrevs.texi recentf.el
+ sending.texi autoload.el bookmark.el comint.el dired-x.el gnus-group.el
+ misc.texi nsm.el progmodes/compile.el ring-tests.el ring.el
+ sequences.texi subr.el xref.el
Allen S. Rout: changed org-capture.el
@@ -272,9 +256,9 @@ Alyssa Ross: changed progmodes/compile.el simple.el
Ami Fischman: changed bindings.el calendar.el diary-lib.el print.c
savehist.el vc-git.el
-Amin Bandali: changed erc.el erc.texi erc-backend.el erc-button.el
- erc-compat.el erc-track.el erc-dcc.el erc-desktop-notifications.el
- erc-match.el erc-services.el erc-speedbar.el erc-status-sidebar.el
+Amin Bandali: changed erc.el erc-backend.el erc-button.el erc-compat.el
+ erc-track.el erc-dcc.el erc-desktop-notifications.el erc-match.el
+ erc-services.el erc-speedbar.el erc-status-sidebar.el erc.texi
erc-autoaway.el erc-fill.el erc-goodies.el erc-ibuffer.el erc-imenu.el
erc-join.el erc-lang.el erc-list.el erc-log.el and 11 other files
@@ -295,17 +279,13 @@ Anders Waldenborg: changed emacsclient.c
Andrea Corallo: wrote comp-cstr-tests.el comp-cstr.el comp-tests.el
comp.el
-and changed comp.c pdumper.c lread.c bytecomp.el startup.el configure.ac
- comp.h loadup.el lisp.h data.c alloc.c emacs.c .gitlab-ci.yml
- cl-macs.el nadvice.el comp-test-funcs.el elisp-mode.el lisp/Makefile.in
- subr.el Makefile.in advice.el and 70 other files
+and changed comp.c pdumper.c lread.c bytecomp.el comp.h configure.ac
+ lisp.h startup.el loadup.el alloc.c data.c emacs.c .gitlab-ci.yml
+ nadvice.el cl-macs.el advice.el comp-test-funcs.el help.el
+ lisp/Makefile.in package.el Makefile.in and 61 other files
André A. Gomes: changed ispell.el
-Andrea Greselin: changed electric.el
-
-Andrea Monaco: changed rmailsum.el
-
Andrea Rossetti: changed ruler-mode.el
Andrea Russo: changed erc-dcc.el info-look.el
@@ -336,18 +316,18 @@ Andreas Luik: changed xfns.c xterm.c
Andreas Merziger: changed calendar.el
-Andreas Politz: changed buffer-tests.el buffer.c itree.h filenotify.el
- inotify.c itree.c alloc.c editfns.c xdisp.c buffer.h bytecomp.el
- check-sanitize.sh configure.ac elp.el emacs-compat.h filecache.el
- fileio.c filenotify-tests.el fns.c frame.c ibuffer.el
- and 30 other files
+Andreas Politz: changed filenotify.el inotify.c buffer-tests.el
+ bytecomp.el editfns.c elp.el filecache.el filenotify-tests.el frame.c
+ ibuffer.el idlwave.el ido.el imenu.el modes.texi outline.el
+ sh-script.el sql.el startup.el strokes.el subr.el term.el
+ and 5 other files
Andreas Rottmann: changed emacsclient.1 emacsclient.c misc.texi server.el
Andreas Schwab: changed configure.ac lisp.h xdisp.c process.c alloc.c
- coding.c Makefile.in emacs.c files.el fileio.c keyboard.c fns.c lread.c
- xterm.c src/Makefile.in editfns.c print.c eval.c font.c xfns.c sysdep.c
- and 662 other files
+ coding.c Makefile.in files.el fileio.c keyboard.c emacs.c lread.c
+ xterm.c fns.c src/Makefile.in editfns.c print.c eval.c font.c xfns.c
+ sysdep.c and 656 other files
Andreas Seltenreich: changed nnweb.el gnus.texi message.el gnus-sum.el
gnus.el nnslashdot.el gnus-srvr.el gnus-util.el mm-url.el mm-uu.el
@@ -380,21 +360,19 @@ Andrew Choi: changed macterm.c darwin.h mac-win.el sysdep.c emacs.c mac.c
Andrew Csillag: wrote m4-mode.el
-Andrew De Angelis: changed nsxwidget.h nsxwidget.m xwidget.c xwidget.el
-
Andrew Eggenberger: changed cl-extra.el seq.el
Andrew G Cohen: wrote nnselect.el spam-wash.el
-and changed nnir.el gnus-sum.el nnimap.el gnus-group.el gnus.texi
- gnus-msg.el gnus-int.el gnus-search.el auth-source.el gnus-art.el
- gnus-cache.el gnus.el nnheader.el nnspool.el deps.mk dns.el
- fns-tests.el fns.c gnus-agent.el gnus-cloud.el gnus-registry.el
- and 13 other files
+and changed nnir.el gnus-sum.el nnimap.el gnus-msg.el gnus-group.el
+ gnus.texi gnus-int.el gnus-art.el gnus-cache.el gnus.el nnheader.el
+ nnspool.el auth-source.el dns.el gnus-agent.el gnus-cloud.el
+ gnus-registry.el gnus-srvr.el gnus-start.el nndiary.el nnfolder.el
+ and 5 other files
Andrew Hall: changed paren.el
-Andrew Hyatt: changed bug-triage CONTRIBUTE buffer.c face-remap.el
- org-archive.el org.el org.texi simple.el
+Andrew Hyatt: changed bug-triage CONTRIBUTE org-archive.el org.el
+ org.texi
Andrew Innes: changed makefile.nt w32fns.c w32term.c w32.c w32proc.c
fileio.c ms-w32.h w32-fns.el dos-w32.el w32term.h makefile.def
@@ -409,7 +387,7 @@ Andrew Robbins: changed net-utils.el
Andrew Schein: changed sql.el
-Andrew Schwartzmeyer: changed eglot.el subr-tests.el subr.el
+Andrew Schwartzmeyer: changed subr-tests.el subr.el
Andrew Whatson: changed comp.el
@@ -423,10 +401,9 @@ Andrey Slusar: changed gnus-async.el gnus.el
Andrey Zhdanov: changed gud.el
-Andrii Kolomoiets: changed eglot.el vc-hg.el progmodes/python.el vc.el
- eglot-tests.el vc-dir.el vc-git.el EGLOT-NEWS README.md cyril-util.el
- ewoc.el frame.c frame.el maintaining.texi ns-win.el nsterm.h nsterm.m
- package.el project.el vc-dispatcher.el vc-svn.el
+Andrii Kolomoiets: changed vc-hg.el progmodes/python.el vc.el vc-dir.el
+ vc-git.el cyril-util.el ewoc.el frame.c frame.el maintaining.texi
+ ns-win.el nsterm.h nsterm.m project.el vc-dispatcher.el vc-svn.el
Andrzej P: changed gdb-mi.el
@@ -456,22 +433,17 @@ Ansgar Burchardt: changed latin-ltx.el
Antoine Beaupré: changed vc-git.el
-Antoine Kalmbach: changed README.md eglot.el
-
-Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi ada-prj.el
+Antoine Levitt: changed gnus-group.el gnus-sum.el message.texi
ange-ftp.el cus-edit.el dired-x.el ebnf2ps.el emerge.el erc-button.el
erc-goodies.el erc-stamp.el erc-track.el files.el find-file.el
gnus-art.el gnus-uu.el gnus.el gnus.texi message.el mh-funcs.el
- and 9 other files
+ mh-mime.el and 7 other files
Antonin Houska: changed newcomment.el
-Antonio Ruiz: changed handwrite.el
-
-Arash Esbati: changed reftex-vars.el efaq-w32.texi reftex.el gnus.texi
- reftex-auc.el reftex-cite.el reftex-parse.el reftex-ref.el
- reftex-tests.el tex-mode.el eglot.el ispell.el nnmaildir.el
- reftex-dcr.el reftex-global.el reftex-toc.el
+Arash Esbati: changed reftex-vars.el efaq-w32.texi reftex-auc.el
+ reftex-ref.el reftex.el gnus.texi nnmaildir.el reftex-cite.el
+ reftex-dcr.el reftex-toc.el
Arik Mitschang: changed smime.el
@@ -500,12 +472,10 @@ Artem Chuprina: changed message.el
Artem Loenko: changed src/Makefile.in
-Artem Pyanykh: changed EGLOT-NEWS README eglot.el
-
Arthur Miller: changed help-fns.el ange-ftp.el bytecomp.el comp.c comp.el
- dired-tests.el dired.c dired.el edebug.el files.texi help.texi lisp.h
- ls-lisp.el sysdep.c tramp-adb.el tramp-rclone.el tramp-sh.el
- tramp-smb.el tramp.el wdired.el
+ dired-tests.el dired.c dired.el files.texi help.texi lisp.h ls-lisp.el
+ sysdep.c tramp-adb.el tramp-rclone.el tramp-sh.el tramp-smb.el tramp.el
+ wdired.el
Artur Malabarba: wrote char-fold-tests.el faces-tests.el isearch-tests.el
let-alist.el simple-tests.el sort-tests.el tabulated-list-tests.el
@@ -517,8 +487,6 @@ and changed package.el isearch.el char-fold.el files.el tabulated-list.el
Artyom Loenko: changed Info.plist.in
-Arun Isaac: changed quail/indian.el
-
Arun Persaud: changed org-agenda.el org-src.el
Asher Gordon: changed gomoku.el mml.el
@@ -533,14 +501,8 @@ Atsuo Ohki: changed lread.c
Aubrey Jaffer: changed info.el unexelf.c
-August Feng: changed bookmark.el
-
-Augusto Stoffel: co-wrote ansi-osc.el
-and changed progmodes/python.el isearch.el eglot.el comint.el eldoc.el
- project.el README.md font-lock.el man.el misc.texi modes.texi
- outline.el pcmpl-git.el pcmpl-gnu.el pcmpl-linux.el pcmpl-rpm.el
- pcmpl-unix.el pcmpl-x.el pcomplete-tests.el pcomplete.el
- progmodes/compile.el and 6 other files
+Augusto Stoffel: changed progmodes/python.el comint.el isearch.el
+ eldoc.el misc.texi progmodes/compile.el search.texi
Aurélien Aptel: changed alloc.c emacs-module.h lisp.h Makefile
configure.ac cus-face.el data.c dispextern.h display.texi dynlib.c
@@ -549,7 +511,7 @@ Aurélien Aptel: changed alloc.c emacs-module.h lisp.h Makefile
Axel Boldt: changed ehelp.el electric.el
-Axel Svensson: changed characters.el display.texi x-win.el
+Axel Svensson: changed x-win.el
Bahodir Mansurov: changed quail/cyrillic.el
@@ -559,7 +521,8 @@ B. Anyos: changed w32term.c
Baoqiu Cui: changed org-docbook.el
-Barry A. Warsaw: wrote elp.el man.el regi.el reporter.el supercite.el
+Barry A. Warsaw: wrote assoc.el elp.el man.el regi.el reporter.el
+ supercite.el
and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el
cc-guess.el cc-langs.el cc-menus.el cc-mode.el cc-styles.el cc-vars.el
and changed c++-mode.el cplus-md1.el syntax.c syntax.h
@@ -576,11 +539,11 @@ Bartosz Duszel: changed allout.el bib-mode.el cc-cmds.el hexl.el icon.el
sendmail.el ses.el simple.el verilog-mode.el vi.el vip.el viper-cmd.el
xscheme.el
-Basil L. Contovounesios: changed simple.el subr.el message.el eww.el
+Basil L. Contovounesios: changed simple.el message.el subr.el eww.el
custom.el bibtex.el text.texi gnus-sum.el modes.texi customize.texi
files.texi gnus-group.el gnus-win.el gravatar.el internals.texi json.el
- map.el shr.el subr-tests.el window.c battery-tests.el
- and 322 other files
+ shr.el window.c battery-tests.el button.el custom-tests.el
+ and 279 other files
Bastian Beischer: changed semantic/complete.el calc-yank.el include.el
mru-bookmark.el refs.el senator.el
@@ -607,8 +570,6 @@ Ben Harris: changed configure.ac
Benjamin Andresen: wrote ob-screen.el
-Benjamin Carlsson: changed info.texi
-
Benjamin Drieu: wrote pong.el
and changed org-clock.el org.el
@@ -616,15 +577,12 @@ Benjamin Ragheb: changed fortune.el
Benjamin Riefenstahl: changed files.el image-mode.el nnrss-tests.el
w32select.c emacs.c image.el lisp.h mac-win.el macterm.c ms-w32.h
- mule-cmds.el mule-tests.el mule.el nnrss.el runemacs.c tcl.el thumbs.el
- w32.c w32.h
+ mule-cmds.el nnrss.el runemacs.c tcl.el w32.c w32.h
Benjamin Rutt: co-wrote gnus-dired.el
and changed vc.el gnus-msg.el message.el diff-mode.el ffap.el nnimap.el
nnmbox.el simple.el vc-cvs.el
-Benjamin Schwerdtner: changed progmodes/python.el
-
Ben Key: changed w32.c w32fns.c w32menu.c configure.bat INSTALL w32.h
w32term.c configure.ac emacs.c keyboard.c make-docfile.c ms-w32.h
nsfont.m nsterm.m sound.c xfaces.c
@@ -634,8 +592,6 @@ Ben Menasha: changed nnmh.el
Ben North: changed outline.el buffer.c fill.el isearch.el lisp-mode.el
paren.el w32term.c xfaces.c
-Benson Chu: changed font-lock.el
-
Bernhard Herzog: changed vc-hg.el menu.c xsmfns.c
Bernhard Rotter: changed em-cmpl.el esh-ext.el esh-util.el
@@ -673,10 +629,7 @@ and changed mh-customize.el mh-search.el mh-alias.el mh-e.texi Makefile
image.el mh-tool-bar.el mh-xemacs.el display.texi mh-pick.el
and 82 other files
-Billy Zheng: changed README.md eglot.el
-
Bjarte Johansen: wrote ob-sed.el
-and changed use-package-bind-key.el
Björn Holby: changed vhdl-mode.el
@@ -691,7 +644,8 @@ Björn Torkelsson: changed gnus-art.el gnus-group.el gnus-srvr.el
gnus-cus.el gnus-gl.el gnus-nocem.el gnus-score.el gnus-topic.el
gnus.el mail-source.el nnmail.el
-Bob Glickstein: changed isearch.el sendmail.el
+Bob Glickstein: wrote sregex.el
+and changed isearch.el sendmail.el
Bob Halley: changed ccl.c esh-io.el
@@ -701,11 +655,9 @@ Bob Nnamtrop: changed viper-cmd.el
Bob Olson: co-wrote cperl-mode.el
-Bob Rogers: wrote ietf-drums-date-tests.el ietf-drums-date.el
- ietf-drums-tests.el
-and changed ietf-drums.el vc-dir.el vc-svn.el cperl-mode.el diff.el
- ewoc.el ffap.el files.el maintaining.texi sql.el thingatpt.el
- time-date.el vc.el vc1-xtra.texi
+Bob Rogers: changed vc-dir.el vc-svn.el cperl-mode.el diff.el ewoc.el
+ ffap.el files.el ietf-drums.el maintaining.texi sql.el thingatpt.el
+ vc.el vc1-xtra.texi
Bob Weiner: changed info.el quail.el dframe.el etags.c rmail.el
rmailsum.el speedbar.el
@@ -735,27 +687,17 @@ Bozhidar Batsov: changed ruby-mode.el subr-x.el subr.el bytecomp.el
Brad Howes: changed gnus-demon.el
-Brady Trainor: changed README.md eglot.el
-
-Brahimi Saifullah: changed wid-edit.el
-
Brandon Craig Rhodes: changed flyspell.el
Braun Gábor: changed cua-base.el simple.el
Brendan Kehoe: changed hpux9.h
-Brendan O'Dea: changed em-unix.el woman.el
-
Brent Goodrick: changed abbrev.el
-Brent Westbrook: changed eudcb-mailabbrev.el
-
Brian Burns: changed INSTALL INSTALL.W64
-Brian Cully: wrote tramp-container.el
-and changed EGLOT-NEWS README.md eglot-tests.el eglot.el
- em-tramp-tests.el em-tramp.el eshell.texi macos.texi tramp.texi
+Brian Cully: changed macos.texi
Brian D. Carlstrom: changed gud.el smtpmail.el
@@ -766,10 +708,9 @@ Brian Fox: changed Makefile.in Makefile configure.ac minibuf.c dired.el
Brian Jenkins: changed frame.c frames.texi hooks.texi
-Brian Leung: changed eglot.el README.md comint.el c-ts-mode.el gud.el
- shell.el Makefile advice.el comp.c comp.el eglot-tests.el em-hist.el
- em-prompt.el esh-mode.el files.el find-func.el flymake.el gdb-mi.el
- help.el nadvice.el progmodes/python.el shortdoc.el
+Brian Leung: changed comint.el gud.el advice.el comp.c comp.el em-hist.el
+ files.el find-func.el flymake.el gdb-mi.el help.el nadvice.el shell.el
+ shortdoc.el
Brian Marick: co-wrote hideif.el
@@ -798,8 +739,6 @@ Bruno Félix Rezende Ribeiro: changed os.texi finder.el functions.texi
Bruno Haible: co-wrote po.el
and changed INSTALL emacs.1 epaths.in info.el paths.el
-Bryan C. Mills: changed lread.c
-
Bryan Henderson: changed Makefile term.el
Bryan O'Sullivan: changed ange-ftp.el
@@ -815,9 +754,7 @@ Callum Cameron: changed term.el
Cameron Desautels: changed cus-edit.el custom.texi help.el regexp-opt.el
ruby-mode.el titdic-cnv.el
-Campbell Barton: changed bookmark.el subr.el
-
-Cao Zhenxiang: changed fw.el project.el
+Campbell Barton: changed bookmark.el
Carl D. Roth: changed gnus-nocem.el
@@ -866,7 +803,7 @@ Changwoo Ryu: changed files.el
Chao-Hong Liu: changed TUTORIAL.cn TUTORIAL.zh
-Charles A. Roelli: changed vc.el nsterm.m simple.el nsfns.m isearch.el
+Charles A. Roelli: changed nsterm.m vc.el simple.el nsfns.m isearch.el
nsmenu.m nsterm.h process.c register.el diff-mode.el display.texi
files.el files.texi fixit.texi macfont.m minibuf.c nsfont.m nsimage.m
nsselect.m org-clock.el progmodes/python.el and 47 other files
@@ -882,8 +819,6 @@ Charles Sebold: changed org-plot.el
Charlie Martin: wrote autoinsert.el
-Charl P. Botha: changed js.el
-
Chen Bin: changed fns.c subr-tests.el
Cheng Gao: changed Makefile.in flymake.el frame.c tips.texi url-dired.el
@@ -899,7 +834,7 @@ and co-wrote longlines.el tango-dark-theme.el tango-theme.el
and changed simple.el display.texi xdisp.c files.el frames.texi
cus-edit.el files.texi custom.el subr.el text.texi faces.el keyboard.c
startup.el package.el misc.texi emacs.texi modes.texi mouse.el
- custom.texi image.c window.el and 934 other files
+ custom.texi image.c window.el and 932 other files
Chris Chase: co-wrote idlw-shell.el idlwave.el
@@ -944,8 +879,6 @@ Christian Egli: changed org-taskjuggler.el org.texi
Christian Faulhammer: changed configure configure.ac src/Makefile.in
vc-bzr.el
-Christian Garbs: changed EGLOT-NEWS README.md eglot.el
-
Christian Limpach: co-wrote ns-win.el
and changed configure.ac
@@ -1061,14 +994,14 @@ and changed calc.el replace.el update-game-score.c calc-ext.el
Colin Williams: changed calc.texi
-Colin Woodbury: changed cl-seq.el files.el progmodes/python.el files.texi
- frame.c macros.texi shortdoc.el
+Colin Woodbury: changed files.el cl-seq.el files.texi macros.texi
+ shortdoc.el
Constantin Kulikov: changed server.el startup.el
Constantino Calancha: changed dired.el
-Corwin Brust: changed erc-services.el package.el
+Corwin Brust: changed erc-services.el
Courtney Bane: changed term.c
@@ -1094,23 +1027,21 @@ Dale Hagglund: changed unexelf.c
Dale R. Worley: wrote emerge.el (public domain)
and changed mail-extr.el
-Dale Sedivec: changed eglot.el sgml-mode.el wisent/python.el
+Dale Sedivec: changed sgml-mode.el wisent/python.el
Damien Cassou: wrote auth-source-pass-tests.el hierarchy-tests.el
hierarchy.el
and co-wrote auth-source-pass.el auth-source-tests.el
-and changed seq.el seq-tests.el sequences.texi simple.el auth.texi
- bindings.el checkdoc.el ispell.el message.el sending.texi shortdoc.el
- simple-tests.el auth-source.el autorevert.el checkdoc-tests.el
- emacsbug.el imenu-tests.el imenu.el info.el isearch.el json-tests.el
- and 7 other files
+and changed simple.el auth.texi checkdoc.el ispell.el message.el
+ seq-tests.el seq.el simple-tests.el auth-source.el autorevert.el
+ checkdoc-tests.el imenu-tests.el imenu.el info.el isearch.el
+ json-tests.el json.el message-tests.el package.el rmc.el sending.texi
+ and 3 other files
Damien Elmes: changed erc.el erc-dcc.el erc-track.el erc-log.el
erc-pcomplete.el README erc-button.el erc-nets.el erc-ring.el Makefile
erc-fill.el erc-match.el erc-members.el erc-nickserv.el
-Damien Merenne: changed eglot.el
-
Damon Anton Permezel: wrote hanoi.el (public domain)
Damyan Pepper: changed font.c font.h ftfont.c w32font.c
@@ -1122,10 +1053,10 @@ Dan Christensen: changed gnus-sum.el nndoc.el nnfolder.el gnus-art.el
Dan Davison: wrote ob-matlab.el ob-octave.el
and co-wrote ob-R.el ob-core.el ob-exp.el ob-java.el ob-lob.el ob-perl.el
ob-python.el ob-ref.el org-src.el
-and changed ob.el ob-sh.el org.el ox.el ox-latex.el eglot.el ob-tangle.el
- ob-C.el ob-clojure.el ob-haskell.el ob-ruby.el ob-scheme.el ob-table.el
+and changed ob.el ob-sh.el org.el ox.el ox-latex.el ob-tangle.el ob-C.el
+ ob-clojure.el ob-haskell.el ob-ruby.el ob-scheme.el ob-table.el
ob-ditaa.el ob-dot.el ob-gnuplot.el ob-js.el ob-ocaml.el ob-org.el
- ob-plantuml.el ob-sass.el and 13 other files
+ ob-plantuml.el ob-sass.el ob-screen.el and 12 other files
Daniel Barrett: changed dbnotn.rnc
@@ -1138,9 +1069,9 @@ Daniel Clemente: changed generic-x.el ox-html.el
Daniel Colascione: wrote alloc-tests.el generator-tests.el generator.el
lisp-tests.el
and co-wrote js.el
-and changed keyboard.c emacs.c w32fns.c alloc.c image.c cl-macs.el
- frame.c lisp.h src/Makefile.in configure.ac frame.el process.c xterm.el
- sh-script.el xfaces.c xterm.c coding.c cygw32.c data.c dbusbind.c fns.c
+and changed keyboard.c emacs.c w32fns.c alloc.c image.c cl-macs.el lisp.h
+ src/Makefile.in configure.ac frame.c frame.el process.c xterm.el
+ sh-script.el xfaces.c coding.c cygw32.c data.c dbusbind.c fns.c font.c
and 213 other files
Daniel Dehennin: changed gnus-mlspl.el mml2015.el gnus-msg.el gnus.texi
@@ -1155,10 +1086,6 @@ Daniel Engeler: changed sysdep.c elisp.texi emacs.texi internals.texi
Daniele Nicolodi: changed url-http.el
-Daniel Fleischer: changed TUTORIAL browse-url.el startup.el
-
-Daniel Freeman: changed eglot.el eglot.texi
-
Daniel Gröber: changed rxvt.el
Daniel Hackney: wrote package-tests.el
@@ -1175,9 +1102,9 @@ Daniel Kahn Gillmor: changed mml-sec.el
Daniel Koning: changed simple.el artist.el commands.texi subr.el
-Daniel LaLiberte: wrote edebug.el isearch.el
+Daniel LaLiberte: wrote cust-print.el edebug.el isearch.el
and co-wrote hideif.el
-and changed cust-print.el mlconvert.el eval-region.el
+and changed mlconvert.el eval-region.el
Daniel Lenski: changed speedbar.el
@@ -1185,18 +1112,18 @@ Daniel Lopez: changed progmodes/compile.el
Daniel Lublin: changed dns-mode.el
-Daniel Martín: changed c-ts-mode.el nsterm.m shortdoc.el ns-win.el
- simple.el diff-mode-tests.el erc.texi files.el files.texi indent.erts
- msdos-xtra.texi progmodes/python.el search.texi .lldbinit basic.texi
- c-ts-mode-tests.el cmacexp.el compilation.txt compile-tests.el
- compile.texi configure.ac and 42 other files
+Daniel Martín: changed shortdoc.el nsterm.m erc.texi files.el files.texi
+ msdos-xtra.texi ns-win.el basic.texi cmacexp.el compilation.txt
+ compile-tests.el cscope.el diff.el dired.el display.texi editfns.c
+ emacs.texi files-tests.el find-func-tests.el find-func.el frame.c
+ and 18 other files
Daniel McClanahan: changed lisp-mode.el
Daniel M Coffman: changed arc-mode.el
-Daniel Mendler: changed minibuffer.el minibuf.texi simple.el elp.el
- help-fns.el info.el minibuf.c minibuffer-tests.el xref.el
+Daniel Mendler: changed minibuffer.el minibuf.texi simple.el help-fns.el
+ info.el minibuf.c minibuffer-tests.el xref.el
Daniel M German: co-wrote org-protocol.el
@@ -1204,8 +1131,6 @@ Daniel Néri: changed message.el
Daniel Ortmann: changed paragraphs.el
-Daniel Pettersson: changed em-cmpl.el
-
Daniel Pfeiffer: wrote conf-mode.el copyright.el executable.el
sh-script.el skeleton.el two-column.el
and co-wrote apropos.el progmodes/compile.el wyse50.el
@@ -1276,7 +1201,7 @@ and co-wrote latin-ltx.el socks.el
and changed configure.ac help.el mule-cmds.el fortran.el mule-conf.el
xterm.c browse-url.el mule.el coding.c src/Makefile.in european.el
fns.c mule-diag.el simple.el wid-edit.el cus-edit.el cus-start.el
- files.el keyboard.c byte-opt.el info.el and 772 other files
+ files.el keyboard.c byte-opt.el info.el and 771 other files
Dave Pearson: wrote 5x5.el quickurl.el
@@ -1315,9 +1240,7 @@ David Edmondson: changed message.el erc.el mml2015.el process.c
gnus-cite.el gnus-cloud.el gnus.texi imap.el mm-uu.el mm-view.el
nnfolder.el nnimap.el nnml.el rcirc.el shr.el
-Davide Masserut: changed bindings.el sh-script.el basic.texi
- dictionary.el eglot.el faces.el go-ts-mode-tests.el go-ts-mode.el
- indent.erts
+Davide Masserut: changed bindings.el basic.texi
David Engster: wrote mairix.el nnmairix.el
and co-wrote gitmerge.el
@@ -1327,8 +1250,6 @@ and changed cedet/semantic.el db.el insert.el semantic/complete.el c.by
wisent/python.el analyze.el bovine/el.el bovine/grammar.el
decorate/mode.el and 88 other files
-David Florness: changed eglot.el
-
David Gillespie: wrote calc-aent.el calc-alg.el calc-arith.el calc-bin.el
calc-comb.el calc-cplx.el calc-embed.el calc-ext.el calc-fin.el
calc-forms.el calc-frac.el calc-funcs.el calc-graph.el calc-help.el
@@ -1338,7 +1259,7 @@ David Gillespie: wrote calc-aent.el calc-alg.el calc-arith.el calc-bin.el
calc-store.el calc-stuff.el calc-trail.el calc-undo.el calc-units.el
calc-vec.el calc-yank.el calc.el calcalg2.el calcalg3.el calccomp.el
calcsel2.el cl-compat.el cl-extra.el cl-macs.el cl-seq.el cl.texi
- edmacro.el emacs-lisp/cl-lib.el
+ edmacro.el emacs-lisp/cl-lib.el obsolete/complete.el
and changed info.el bytecomp.el cl.el complete.el
David Glasser: changed package.el tar-mode.el
@@ -1420,7 +1341,7 @@ and co-wrote util-modes.el
and changed w32menu.c w32term.c close.png close.xpm empty.png empty.xpm
end-guide.png end-guide.xpm files.el guide.png guide.xpm handle.png
handle.xpm keyboard.c leaf.png leaf.xpm no-guide.png no-guide.xpm
- no-handle.png no-handle.xpm open.png and 22 other files
+ no-handle.png no-handle.xpm open.png and 21 other files
David Raynes: changed ns-win.el
@@ -1450,10 +1371,10 @@ Debarshi Ray: changed erc-backend.el erc.el
Decklin Foster: changed nngateway.el
-Deepak Goel: changed idlw-shell.el ada-xref.el feedmail.el files.el
- find-func.el flymake.el mh-search.el mh-seq.el mh-thread.el mh-xface.el
- org.el simple.el vc.el vhdl-mode.el wdired.el README ada-mode.el
- allout.el appt.el apropos.el artist.el and 85 other files
+Deepak Goel: changed idlw-shell.el feedmail.el files.el find-func.el
+ flymake.el mh-search.el mh-seq.el mh-thread.el mh-xface.el org.el
+ simple.el vc.el vhdl-mode.el wdired.el README allout.el appt.el
+ apropos.el artist.el bibtex.el bindings.el and 83 other files
D. E. Evans: changed basic.texi
@@ -1477,14 +1398,10 @@ Dennis Gilmore: changed sparc.h
Denys Duchier: changed pop3.el
-Denys Nykula: changed TUTORIAL.uk language/cyrillic.el
-
Derek Atkins: changed imap.el pgg-pgp.el
Derek L. Davies: changed gud.el
-Derek Passen: changed README.md eglot.el
-
Derek Peschel: changed etags.c
Derek Upham: changed nxml-mode.el
@@ -1506,11 +1423,11 @@ Diane Murray: changed erc.el erc-backend.el erc-menu.el erc-button.el
erc-goodies.el erc-ibuffer.el erc-log.el erc-nicklist.el url-http.el
Makefile erc-dcc.el and 36 other files
-Dick R. Chiang: changed ffap-tests.el erc-backend.el ffap.el
- gnus-group.el gnus-topic.el gnus.texi hl-line.el image.c message.el
- package.el bindings.el buffer-tests.el buffer.c checkdoc.el
- cl-macs-tests.el cl-macs.el comint-tests.el erc-common.el erc-compat.el
- erc-goodies.el erc-networks-tests.el and 28 other files
+Dick R. Chiang: changed ffap-tests.el ffap.el gnus-group.el gnus.texi
+ message.el bindings.el buffer-tests.el buffer.c checkdoc.el
+ cl-macs-tests.el cl-macs.el comint-tests.el gnus-srvr.el gnus-sum.el
+ gnus-topic.el gnutls.c key.pub key.sec minibuffer.el misc.texi mml.el
+ and 7 other files
Didier Verna: wrote gnus-diary.el nndiary.el
and co-wrote nnml.el
@@ -1527,10 +1444,10 @@ Dieter Schoen: wrote ob-lua.el
Dieter Schuster: changed etags.c
Dima Kogan: wrote diff-mode-tests.el
-and changed diff-mode.el erc-backend.el image.c comint.el font.c gud.el
- hideshow.el autorevert.el find-file.el subword.el BOOST.tests
- PCRE.tests PTESTS TESTS align.el alloc.c ediff-mult.el ediff.el
- erc-button.el isearch.el keyboard.c and 12 other files
+and changed diff-mode.el erc-backend.el image.c font.c gud.el hideshow.el
+ autorevert.el comint.el find-file.el subword.el BOOST.tests PCRE.tests
+ PTESTS TESTS align.el alloc.c ediff-mult.el ediff.el erc-button.el
+ isearch.el keyboard.c and 12 other files
Dirk Herrmann: co-wrote bibtex.el
@@ -1556,11 +1473,11 @@ Dmitry Gorbik: changed org.el
Dmitry Gutov: wrote elisp-mode-tests.el jit-lock-tests.el json-tests.el
vc-hg-tests.el xref-tests.el
-and changed xref.el ruby-mode.el project.el vc-git.el ruby-ts-mode.el
- elisp-mode.el etags.el ruby-mode-tests.el js.el vc.el vc-hg.el
- package.el symref/grep.el dired-aux.el ruby-ts-mode-tests.el simple.el
- progmodes/python.el treesit.el log-edit.el ruby-ts.rb rust-ts-mode.el
- and 155 other files
+and changed xref.el ruby-mode.el project.el vc-git.el elisp-mode.el
+ etags.el ruby-mode-tests.el js.el vc.el vc-hg.el package.el
+ symref/grep.el dired-aux.el simple.el log-edit.el minibuffer.el
+ progmodes/grep.el ido.el maintaining.texi menu-bar.el package-test.el
+ and 122 other files
Dmitry Kurochkin: changed isearch.el
@@ -1593,16 +1510,13 @@ Drake Wilson: changed emacsclient.c files.el misc.texi
Drew Adams: wrote light-blue-theme.el
and co-wrote color.el
and changed dired.el cus-edit.el imenu.el info.el ls-lisp.el menu-bar.el
- dired-aux.el dired.texi faces.el files.el frame.el help-fns.el
- help-mode.el help.el help.texi isearch.el modes.texi mouse.el
- wid-edit.el ange-ftp.el apropos.el and 25 other files
-
-Duncan Findlay: changed frame.el keyboard.c xterm.el
+ dired.texi faces.el files.el frame.el help-fns.el help-mode.el help.el
+ help.texi isearch.el modes.texi mouse.el wid-edit.el ange-ftp.el
+ apropos.el bindings.el and 22 other files
-Earl Hyatt: changed autotype.texi ffap.el seq-tests.el sequences.texi
- windows.texi control.texi cus-edit.el eshell.texi hi-lock.el misc.texi
+Earl Hyatt: changed ffap.el seq-tests.el sequences.texi windows.texi
+ autotype.texi control.texi cus-edit.el hi-lock.el misc.texi
pcase-tests.el pcase.el replace.el search.texi seq.el tab-bar.el
- texinfo.el
E. Choroba: changed cperl-mode.el simple.el
@@ -1659,9 +1573,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c]
chartab-tests.el coding-tests.el etags-tests.el rxvt.el tty-colors.el
and co-wrote help-tests.el
and changed xdisp.c display.texi w32.c msdos.c w32fns.c simple.el
- files.el fileio.c keyboard.c emacs.c text.texi w32term.c dispnew.c
- configure.ac frames.texi w32proc.c files.texi xfaces.c window.c
- dispextern.h lisp.h and 1324 other files
+ files.el fileio.c emacs.c keyboard.c w32term.c text.texi dispnew.c
+ w32proc.c files.texi frames.texi configure.ac lisp.h dispextern.h
+ process.c editfns.c and 1237 other files
Eliza Velasquez: changed server.el
@@ -1682,18 +1596,18 @@ Emilio C. Lopes: changed woman.el cmuscheme.el help.el vc.el advice.el
and 58 other files
Emmanuel Briot: wrote xml.el
-and changed ada-mode.el ada-stmt.el ada-prj.el ada-xref.el
+and changed ada-stmt.el
Era Eriksson: changed bibtex.el dired.el json.el ses.el ses.texi shell.el
tramp.el tramp.texi
Eric Abrahamsen: wrote gnus-dbus.el gnus-search-tests.el gnus-search.el
gnus-test-headers.el
-and changed gnus-registry.el gnus-sum.el gnus.texi gnus-group.el
- gnus-start.el nnimap.el eieio-base.el nnir.el gnus-agent.el gnus.el
+and changed gnus-sum.el gnus-group.el gnus-registry.el gnus-start.el
+ gnus.texi eieio-base.el nnimap.el nnir.el gnus-agent.el gnus.el
registry.el gnus-srvr.el eieio.el gnus-cache.el gnus-msg.el
- gnus-score.el message.el nnmaildir.el files.el files.texi gnus-art.el
- and 51 other files
+ gnus-score.el message.el files.el files.texi gnus-art.el gnus-util.el
+ and 50 other files
Eric Bélanger: changed image.c
@@ -1807,8 +1721,6 @@ Ernesto Alfonso: changed simple.el
E Sabof: changed hi-lock.el image-dired.el
-Eshel Yaron: changed eglot.el eww.el
-
Espen Skoglund: wrote pascal.el
Espen Wiborg: changed utf-7.el
@@ -1826,13 +1738,11 @@ Eugene Ha: changed configure.ac
Evangelos Evangelou: changed progmodes/f90.el
-Evan Klitzke: changed cc-langs.el
-
Evan Moses: changed progmodes/python.el
Evgeni Dobrev: changed man.el
-Evgeni Kolev: changed eglot.el perl-mode.el README.md go-ts-mode.el
+Evgeni Kolev: changed perl-mode.el
Evgeny Fraimovitch: changed emacsclient.c
@@ -1850,11 +1760,9 @@ and changed python-tests.el subr-x.el imenu.el wisent/python.el
Fabrice Bauzac: changed objects.texi dired-aux.el fixit.texi ibuf-ext.el
search.texi
-Fabrice Bauzac-Stehly: changed ldap.el
-
Fabrice Nicol: changed etags.c etags.1
-Fabrice Niessen: wrote leuven-dark-theme.el leuven-theme.el
+Fabrice Niessen: wrote leuven-theme.el
and changed org-agenda.el
Fabrice Popineau: changed ms-w32.h w32.c w32fns.c w32heap.c w32term.c
@@ -1862,8 +1770,6 @@ Fabrice Popineau: changed ms-w32.h w32.c w32fns.c w32heap.c w32term.c
w32proc.c w32term.h INSTALL addsection.c alloc.c dispextern.h
emacs-x64.manifest emacs-x86.manifest etags.c and 24 other files
-Fangrui Song: changed eglot.el
-
Fan Kai: changed esh-arg.el
Faried Nawaz: changed message.el
@@ -1876,14 +1782,11 @@ and changed minibuf.c esh-var.el minibuf.texi mouse.el package.el rect.el
edebug.el em-dirs.el eshell-tests.el eww.el fileio-tests.el fileio.c
files.texi gamegrid.el keyboard.c and 8 other files
-Felician Nemeth: changed rmc.el
-
-Felicián Németh: changed eglot.el EGLOT-NEWS README.md eglot-tests.el
- project.el xref.el
+Felicián Németh: changed project.el xref.el
Felipe Ochoa: changed faces.el js.el paren.el
-Felix Dietrich: changed tramp-archive.el mailcap-tests.el mailcap.el
+Felix Dietrich: changed tramp-archive.el
Felix E. Klee: co-wrote svg.el
and changed display.texi
@@ -1899,10 +1802,7 @@ Felix S. T. Wu: co-wrote vi.el (public domain)
Feng Li: changed calc-ext.el pascal.el which-func.el
-Feng Shu: changed org.el org.texi ox.el ox-html.el ox-latex.el xwidget.el
- ox-odt.el
-
-Feraidoon Mehri: changed dired-aux.el
+Feng Shu: changed org.el org.texi ox.el ox-html.el ox-latex.el ox-odt.el
Ferdinand Pieper: changed flow-fill-tests.el flow-fill.el
@@ -1910,18 +1810,14 @@ Ferenc Wagner: changed nnweb.el
Filipe Cabecinhas: changed nsterm.m
-Filipp Gunbin: changed ldap.el compilation.txt progmodes/compile.el
- sql.el auth-source-tests.el auth-source.el autorevert.el dired-aux.el
- gnus-ml.el shell.el sysdep.c abbrev-tests.el abbrev.el cc-menus.el
- compile-tests.el custom.el dabbrev.el epa-ks.el ert.el eudc-vars.el
- eudc.texi and 19 other files
+Filipp Gunbin: changed compilation.txt progmodes/compile.el
+ auth-source-tests.el auth-source.el autorevert.el dired-aux.el
+ gnus-ml.el shell.el sysdep.c cc-menus.el compile-tests.el custom.el
+ dabbrev.el gnus-sum.el imenu.el info.el info.texi keymaps.texi ldap.el
+ processes.texi search.texi and 3 other files
-F. Jason Park: changed erc.el erc-backend.el erc-tests.el foonet.eld
- erc.texi erc-networks.el erc-compat.el erc-dcc.el erc-sasl.el
- barnet.eld erc-scenarios-misc.el erc-services.el erc-common.el
- erc-networks-tests.el erc-scenarios-base-reconnect.el
- erc-scenarios-common.el socks-tests.el auth-source-pass-tests.el
- auth-source-pass.el erc-join.el erc-sasl-tests.el and 104 other files
+F. Jason Park: changed socks-tests.el erc-tests.el erc.el socks.el
+ erc-button.el erc-ring.el erc-services.el puny-tests.el puny.el
Flemming Hoejstrup Hansen: changed forms.el
@@ -1931,12 +1827,10 @@ Florian Beck: changed org.el
Florian Ragwitz: changed gnus-html.el sieve-manage.el
-Florian Rommel: changed configure.ac frames.texi pgtkterm.c window.c
-
Florian V. Savigny: changed sql.el
-Florian Weimer: changed message.el gnus.el coding.c configure.ac
- gnus-sum.el gnus.texi mm-decode.el mm-util.el
+Florian Weimer: changed message.el gnus.el coding.c gnus-sum.el gnus.texi
+ mm-decode.el mm-util.el
Francesco Pizzolante: changed org-clock.el org-macs.el org.el ox-html.el
@@ -1984,8 +1878,6 @@ Frank Weinberg: changed gnus-art.el
Frédéric Bothamy: changed TUTORIAL.fr
-Frédéric Giquel: changed process.c
-
Frederic Han: changed iso-cvt.el
Frederic Lepied: wrote expand.el
@@ -2008,7 +1900,7 @@ Fred Oberhauser: changed nnmail.el
Fredrik Axelsson: changed cus-start.el window.c
-Fredrik Bergroth: changed eglot.el editfns.c
+Fredrik Bergroth: changed editfns.c
Friedrich Beckmann: changed vhdl-mode.el
@@ -2016,6 +1908,8 @@ Friedrich Delgado Friedrichs: changed org.el
Fritz Knabe: changed mh-mime.el
+Fritz Stelzer: changed xref.el
+
F. Thomas May: wrote blackbox.el
Fujii Hironori: changed w32fns.c
@@ -2023,21 +1917,19 @@ Fujii Hironori: changed w32fns.c
Gábor Vida: changed gnus-demon.el auth-source.el ido.el
Gabriel Do Nascimento Ribeiro: changed remember.el mb-depth.el repeat.el
- tab-bar.el tab-line.el bookmark.el cmuscheme.el comint.el
- dired-tests.el dired.el esh-mode.el etags.el faces.el gnus-sum.el
- goto-addr.el hl-line.el ibuf-ext.el idlwave.el inf-lisp.el mh-gnus.el
- mh-letter.el and 16 other files
+ tab-line.el cmuscheme.el comint.el esh-mode.el etags.el gnus-sum.el
+ hl-line.el idlwave.el inf-lisp.el mh-gnus.el mh-letter.el mh-mime.el
+ mh-seq.el mh-utils.el minibuf.c minibuffer.el mule-cmds.el package.el
+ and 10 other files
Gaby Launay: changed auth-source-pass.el
Gareth Jones: changed fns.c gnus-score.el
-Garid Zorigoo: changed quail/cyrillic.el
-
-Garret Buell: changed eglot.el
-
Garrett Wollman: changed sendmail.el
+Gary Delp: wrote mailpost.el (public domain)
+
Gary D. Foster: wrote crisp.el scroll-all.el
and changed gnus-group.el gnus-topic.el
@@ -2045,7 +1937,7 @@ Gary Fredericks: changed window.el
Gary Howell: changed server.el
-Gary Oberbrunner: changed eglot.el gud.el
+Gary Oberbrunner: changed gud.el
Gary Wong: changed termcap.c tparam.c
@@ -2091,8 +1983,8 @@ George V. Reilly: changed emacs.ico makefile.nt
Gerd Möllmann: wrote authors.el ebrowse.el jit-lock.el tooltip.el
and changed xdisp.c xterm.c dispnew.c dispextern.h xfns.c xfaces.c
window.c keyboard.c lisp.h faces.el alloc.c buffer.c startup.el xterm.h
- fns.c term.c configure.ac simple.el frame.c xmenu.c emacs.c
- and 621 other files
+ fns.c simple.el term.c configure.ac frame.c xmenu.c emacs.c
+ and 610 other files
Gergely Nagy: changed erc.el
@@ -2120,7 +2012,7 @@ and changed configure.ac Makefile.in src/Makefile.in calendar.el
lisp/Makefile.in diary-lib.el files.el make-dist rmail.el
progmodes/f90.el bytecomp.el admin.el misc/Makefile.in simple.el
authors.el startup.el emacs.texi lib-src/Makefile.in display.texi
- ack.texi subr.el and 1796 other files
+ ack.texi subr.el and 1786 other files
Glynn Clements: wrote gamegrid.el snake.el tetris.el
@@ -2129,8 +2021,6 @@ Göktuğ Kayaalp: changed electric.el european.el text.texi vc-cvs.el
Gong Qijian: changed startup.el
-Gonzalo Larumbe: changed vhdl-mode.el
-
Göran Uddeborg: changed isc4-1.h
Gordon Matzigkeit: changed gnus-uu.el
@@ -2151,8 +2041,6 @@ and changed messagexmas.el
Greg McGary: co-wrote po.el
and changed tar-mode.el
-Greg Minshall: changed eldoc.el
-
Gregoire Jadi: changed proced.el
Grégoire Jadi: changed org.texi configure.ac emacsgtkfixed.c keyboard.c
@@ -2169,10 +2057,10 @@ Gregor Schmid: changed intervals.c intervals.h tcl-mode.el textprop.c
Gregory Chernov: changed nnslashdot.el
-Gregory Heytings: changed xdisp.c editfns.c keyboard.c buffer.c subr.el
- dispextern.h lisp.h buffer.h display.texi efaq.texi files.el isearch.el
- minibuffer.el Makefile.in bytecode.c bytecomp.el composite.c emake
- positions.texi help-fns.el mailcap.el and 76 other files
+Gregory Heytings: changed isearch.el minibuffer.el efaq.texi mini.texi
+ quail.el search.texi simple.el HELLO buffers.texi diff-mode.el emake
+ facemenu.el fbterm.el files.el fringe.c help-macro.el icomplete.el
+ keyboard.c misc-lang.el modula2.el pcmpl-gnu.el and 6 other files
Grégory Mounié: changed display.texi hi-lock.el man.el xfns.c
@@ -2187,15 +2075,11 @@ Guanpeng Xu: changed add-log.el TUTORIAL.cn display.texi mouse.el
Gunnar Horrigmo: changed gnus-sum.el
-Gustaf Waldemarson: changed gdb-mi.el
-
Gustav Hållberg: changed descr-text.el diff-mode.el progmodes/compile.el
rect.el vc.el
Gustav Wikström: changed org-agenda.el org.texi
-Guy Gastineau: changed erc.el
-
Guy Geens: changed gnus-score.el
Gwern Branwen: changed browse-url.el
@@ -2231,7 +2115,7 @@ Harald Hanche-Olsen: changed misc.texi server.el sgml-mode.el skeleton.el
Harald Jörg: wrote cperl-mode-tests.el
and changed cperl-mode.el perl-mode.el grammar.pl cperl-bug-19709.pl
- cperl-indent-exp.pl cperl-indent-styles.pl gud.el
+ cperl-indent-exp.pl cperl-indent-styles.pl
Harald Maier: changed w32heap.c
@@ -2313,8 +2197,6 @@ Hugh Brown: changed progmodes/grep.el building.texi
Hugh Daschbach: changed dbus-tests.el dbus.el org.gnu.Emacs.TestDBus.xml
-Hugo Heagren: changed window.el windows.texi
-
Hynek Schlawack: changed gnus-art.el gnus-sum.el
Ian Dunn: changed eww.el doc-view.el image-mode.el vc-hg.el
@@ -2332,26 +2214,21 @@ and changed ange-ftp.el desktop.el tex-mode.el
Ian W: changed ispell.el
-Ignacio Casso: changed custom.el customize.texi data.c select.el
-
İ. Göktuğ Kayaalp: changed eww.el frame.h frames.texi mwheel.el vc-rcs.el
Igor Kuzmin: wrote cconv.el
Igor Saprykin: changed ftfont.c
-Ihor Radchenko: wrote org-fold-core.el org-fold.el org-persist.el
-and changed ox.el fns.c help-mode.el oc.el org-element.el
+Ihor Radchenko: changed fns.c
Iku Iwasa: changed auth-source-pass-tests.el auth-source-pass.el
-Ikumi Keita: changed display.texi files.el characters.el fill.el
- japan-util.el kinsoku.el minibuf.c
+Ikumi Keita: changed characters.el display.texi files.el japan-util.el
+ kinsoku.el minibuf.c
Ilja Weis: co-wrote gnus-topic.el
-Illia Danko: changed README.md eglot.el
-
Illia Ostapyshyn: changed cus-start.el calc-graph.el
Ilya N. Golubev: changed mm-util.el shell.el
@@ -2377,17 +2254,15 @@ Inge Frick: changed easymenu.el keyboard.c view.el compile.el
Inge Wallin: co-wrote avl-tree.el ewoc.el
-Ingo Lohmar: changed eglot.el sql.el EGLOT-NEWS README.md calendar.el
- calendar.texi eglot-tests.el help-fns.el js.el ls-lisp.el org-agenda.el
- org.el
+Ingo Lohmar: changed sql.el calendar.el calendar.texi help-fns.el js.el
+ ls-lisp.el org-agenda.el org.el
Inoue Seiichiro: changed xterm.c xfns.c xterm.h
International Business Machines: changed emacs.c fileio.c process.c
sysdep.c unexcoff.c
-Ioannis Kappas: changed ansi-color-tests.el ansi-color.el package.el
- process-tests.el
+Ioannis Kappas: changed package.el process-tests.el
Ippei Furuhashi: changed org.texi org-colview.el org-table.el org.el
@@ -2408,8 +2283,7 @@ Itai Y. Efrat: changed browse-url.el
Itai Zukerman: changed mm-decode.el
Ivan Andrus: changed editfns.c epg.el ffap.el find-file.el ibuf-ext.el
- ibuffer.el newcomment.el nextstep/templates/Info.plist.in nxml-mode.el
- progmodes/python.el
+ ibuffer.el newcomment.el nxml-mode.el progmodes/python.el
Ivan Boldyrev: changed mml1991.el
@@ -2424,7 +2298,7 @@ Ivan Shmakov: changed eww.el shr.el desktop.el eww.texi faces.el files.el
erc-track.el facemenu.el files.texi iso-transl.el misearch.el nndoc.el
rcirc.el simple.el smerge-mode.el and 5 other files
-Ivan Sokolov: changed ansi-color.el easy-mmode.el project.el
+Ivan Sokolov: changed ansi-color.el project.el
Ivan Vilata i Balaguer: changed org-clock.el org.texi
@@ -2452,24 +2326,21 @@ Jacob Morzinski: changed mh-comp.el
Jacques Duthen: co-wrote ps-print.el ps-samp.el
-Jae-hyeon Park: changed fontset.el gnus-icalendar.el
+Jae-hyeon Park: changed fontset.el
Jaesup Kwak: changed xwidget.c nsxwidget.m xwidget.el nsxwidget.h
xwidget.h Info.plist.in configure.ac emacs.c nsterm.m src/Makefile.in
Jaeyoun Chung: changed hangul3.el hanja3.el gnus-mule.el hangul.el
-Jai Flack: changed gnus-search.el
-
-Jake Moss: changed gdb-mi.el
-
Jakub-W: changed calculator.el
J. Alexander Branham: wrote conf-mode-tests.el
-and changed checkdoc.el indent.el text.texi bibtex.el eglot.el
- em-rebind.el esh-util.el js.el lpr.el message.el subr.el .dir-locals.el
- README.md auth-source-pass.el bug-reference.el comint.el conf-mode.el
- dired-x.el dired.el ediff-diff.el ediff-help.el and 45 other files
+and changed checkdoc.el indent.el text.texi bibtex.el em-rebind.el
+ esh-util.el js.el lpr.el message.el subr.el .dir-locals.el
+ auth-source-pass.el bug-reference.el comint.el conf-mode.el dired-x.el
+ dired.el ediff-diff.el ediff-help.el ediff-hook.el ediff-init.el
+ and 43 other files
Jambunathan K: wrote ox-odt.el
and co-wrote ox-html.el
@@ -2489,9 +2360,7 @@ and changed fns.c nxml-mode.texi window.c xselect.c
James Cloos: wrote arabic.el
and changed url-history.el xfns.c xterm.c xterm.h
-James Nguyen: changed README.md
-
-James N. V. Cash: changed tab-bar.el crm.el eldoc.el help-fns.el
+James N. V. Cash: changed tab-bar.el eldoc.el help-fns.el
James R. Larus: co-wrote mh-e.el
@@ -2503,7 +2372,7 @@ James TD Smith: changed org.el org-colview.el org-clock.el
org-remember.el org-plot.el org-agenda.el org-compat.el org-habit.el
org.texi
-James Thomas: changed quail/indian.el gnus-msg.el ind-util.el
+James Thomas: changed ind-util.el quail/indian.el
James Troup: changed gnus-sum.el
@@ -2542,13 +2411,9 @@ Jan Schormann: wrote solitaire.el
Jan Seeger: changed ox-publish.el parse-time.el
-Jan Stranik: changed ebrowse.c
-
Jan Synacek: changed emacs-lisp-intro.texi minibuffer.el mwheel.el
vc-git.el
-Jan Synáček: changed maintaining.texi project.el
-
Jan Tatarik: wrote gnus-icalendar-tests.el gnus-icalendar.el
and changed gnus-score.el gnus-logic.el
@@ -2620,9 +2485,7 @@ Jay Sachs: changed gnus-score.el gnus-win.el
J.D. Smith: co-wrote idlw-help.el idlw-shell.el idlwave.el
and changed idlw-rinfo.el idlw-toolbar.el comint.el idlwave.texi vc.el
bibtex.el files.texi hideshow.el idlw-complete-structtag.el misc.texi
- mouse.el tree-widget.el
-
-Jean Abou Samra: changed scheme.el
+ mouse.el
Jean-Christophe Helary: changed emacs-lisp-intro.texi ns-win.el
package-tests.el package.el strings.texi subr-x.el ucs-normalize.el
@@ -2654,7 +2517,6 @@ Jeff Morgenthaler: changed flow-ctrl.el vt200.el vt201.el vt220.el
vt240.el
Jeff Norden: wrote kermit.el
-and changed outline.el
Jeff Peck: wrote sun.el
and changed emacstool.1 emacstool.c
@@ -2666,9 +2528,7 @@ and changed mh-e.el mh-comp.el mh-utils.el mh-mime.el mh-customize.el
Jeff Spencer: changed dired.el
-Jeff Walsh: changed pgtkterm.c pgtkterm.h gtkutil.c pgtkfns.c comp.c
- pgtkmenu.c image.c xdisp.c configure.ac ftcrfont.c pgtkgui.h pgtkim.c
- pgtkselect.c pgtkselect.h xwidget.c
+Jeff Walsh: changed comp.c xwidget.c
Jelle Licht: changed auth-source-pass-tests.el auth-source-pass.el
@@ -2743,26 +2603,24 @@ Jim Diamond: changed server.el
Jim Kingdon: co-wrote pcvs.el
and changed emacs.texi emacsclient.c functions.texi hp300bsd.h rmail.el
-Jim Meyering: changed lread.c make-docfile.c w32.c w32font.c configure.ac
- copyright.el ebrowse.c emacs.c nsfont.m pop.c term.c xfaces.c xselect.c
- xterm.c alloc.c artist.el autoinsert.el buffer.h callproc.c character.h
- charset.c and 55 other files
+Jim Meyering: changed lread.c make-docfile.c w32.c w32font.c copyright.el
+ ebrowse.c emacs.c nsfont.m pop.c term.c xfaces.c xselect.c xterm.c
+ alloc.c artist.el autoinsert.el buffer.h callproc.c character.h
+ charset.c configure and 55 other files
-Jimmy Aguilar Mena: changed xdisp.c simple.el xfaces.c minibuffer.el
- dispextern.h mini.texi mouse.el face-remap.el hl-line.el icomplete.el
- uniquify.el xwidget.c
+Jimmy Aguilar Mena: changed xdisp.c xfaces.c dispextern.h mouse.el
+ face-remap.el hl-line.el icomplete.el uniquify.el xwidget.c
Jimmy Yuen Ho Wong: changed nsm.el gnutls.c gnutls.el disass.el
net-utils.el
Jim Paris: changed process.c
-Jim Porter: changed eshell.texi esh-cmd.el esh-var-tests.el
- eshell-tests.el esh-var.el esh-proc-tests.el esh-io.el esh-proc.el
- esh-util.el eshell-tests-helpers.el em-pred.el esh-arg.el
- esh-cmd-tests.el tramp.el em-pred-tests.el em-dirs-tests.el server.el
- em-basic.el em-extpipe-tests.el esh-opt-tests.el esh-opt.el
- and 90 other files
+Jim Porter: changed delsel.el ansi-color-tests.el ansi-color.el
+ bindings.el esh-var.el term-tests.el term.el tramp.el callproc.c
+ dichromacy-theme.el diff-mode.el em-pred.el eshell-tests.el eshell.texi
+ files-tests.el gdb-mi.el grep-tests.el ispell.el leuven-theme.el man.el
+ menu-bar.el and 10 other files
Jim Radford: changed gnus-start.el
@@ -2772,12 +2630,8 @@ Jim Thompson: co-wrote ps-print.el ps-samp.el
Jim Wilson: changed alloca.c oldXMenu/Makefile.in
-Jin Choi: changed progmodes/python.el
-
Jindrich Makovicka: changed eval.c fns.c
-Jindřich Makovička: changed pgtkfns.c pgtkselect.c pgtkterm.c
-
Jirka Kosek: changed mule.el
Joachim Nilsson: changed cc-styles.el
@@ -2802,18 +2656,13 @@ Joanna Pluta: changed TUTORIAL.pl
João Cachopo: changed spam.el
-João Guerra: changed tab-line.el
-
-João P. L. De Carvalho: changed sh-script.el
-
-João Távora: wrote eglot-tests.el eglot.el elec-pair.el electric-tests.el
- flymake-cc.el jsonrpc-tests.el jsonrpc.el message-tests.el
- shorthands.el
-and changed flymake.el icomplete.el README.md eldoc.el minibuffer.el
- flymake-proc.el elisp-mode.el flymake.texi EGLOT-NEWS flymake-tests.el
- eglot.texi flymake-elisp.el electric.el elisp-mode-tests.el lread.c
- Makefile flymake-ui.el progmodes/python.el text.texi xref.el
- json-tests.el and 64 other files
+João Távora: wrote elec-pair.el electric-tests.el flymake-cc.el
+ jsonrpc-tests.el jsonrpc.el message-tests.el shorthands.el
+and changed flymake.el icomplete.el minibuffer.el flymake-proc.el
+ eldoc.el elisp-mode.el flymake.texi flymake-tests.el flymake-elisp.el
+ electric.el elisp-mode-tests.el lread.c flymake-ui.el
+ progmodes/python.el text.texi xref.el json-tests.el project.el
+ tex-mode.el buffers.texi cfengine.el and 55 other files
Jochen Hein: changed gnus-art.el
@@ -2881,11 +2730,9 @@ and changed complete.el
John Anthony: changed inf-lisp.el ruby-mode.el text-mode.el
-Johnathan C. Maudlin: changed README.md eglot.el
-
John Basrai: changed man.el
-John Cummings: changed files-tests.el files.el
+John Cummings: changed files.el
John F. Carr: changed dired.c
@@ -2930,17 +2777,14 @@ John Tobey: changed gud.el
John W. Eaton: co-wrote octave.el
-John Wiegley: wrote align.el bind-key.el cal-bahai.el em-alias.el
- em-banner.el em-basic.el em-cmpl.el em-dirs.el em-glob.el em-hist.el
- em-ls.el em-pred.el em-prompt.el em-rebind.el em-script.el em-smart.el
+John Wiegley: wrote align.el cal-bahai.el em-alias.el em-banner.el
+ em-basic.el em-cmpl.el em-dirs.el em-glob.el em-hist.el em-ls.el
+ em-pred.el em-prompt.el em-rebind.el em-script.el em-smart.el
em-term.el em-unix.el em-xtra.el erc-identd.el esh-arg.el esh-cmd.el
esh-ext.el esh-io.el esh-mode.el esh-module.el esh-opt.el esh-proc.el
- esh-util.el esh-var.el eshell-tests-helpers.el eshell-tests.el
- eshell/eshell.el eudcb-mab.el isearchb.el org-attach.el org-crypt.el
- org-habit.el pcmpl-cvs.el pcomplete.el remember.el timeclock.el
- use-package-bind-key.el use-package-core.el use-package-delight.el
- use-package-diminish.el use-package-ensure.el use-package-jump.el
- use-package-lint.el use-package.el
+ esh-util.el esh-var.el eshell-tests.el eshell/eshell.el eudcb-mab.el
+ isearchb.el org-attach.el org-crypt.el org-habit.el pcmpl-cvs.el
+ pcomplete.el remember.el timeclock.el
and co-wrote org-pcomplete.el
and changed org-clock.el org-agenda.el erc-chess.el org.el erc.el
iswitchb.el ido.el alloc.c allout.el auth-source.el cal-menu.el
@@ -2955,11 +2799,11 @@ John Yates: changed hideshow.el
Jon Anders Skorpen: changed ox-publish.el
Jonas Bernoulli: wrote transient.el
-and changed epa.el epa-file.el emoji.el lisp-mnt.el tips.texi
- dired-aux.el dired-x.el dired.el eieio.el epa-dired.el font-lock.el
- progmodes/compile.el simple.el transient.texi allout.el button.el
- comint.el cus-edit.el eldoc.el emacs-module-tests.el epa-hook.el
- and 14 other files
+and changed epa.el epa-file.el lisp-mnt.el tips.texi dired-aux.el
+ dired-x.el dired.el eieio.el epa-dired.el font-lock.el
+ progmodes/compile.el simple.el allout.el button.el comint.el
+ cus-edit.el eldoc.el emacs-module-tests.el epa-hook.el epg-config.el
+ epg.el and 11 other files
Jonas Hoersch: changed org-inlinetask.el org.el
@@ -3004,8 +2848,6 @@ Joost Diepenmaat: changed org.el
Joost Kremers: changed reftex-toc.el
-Joram Schrijver: changed eglot.el
-
Jordan Wilson: changed doc-view.el
Jordon Biondo: changed subr.el
@@ -3021,10 +2863,9 @@ and changed erc.el erc-track.el erc-backend.el erc-match.el misc.el
Jorge P. De Morais Neto: changed TUTORIAL cl.texi
-Jose A. Ortega Ruiz: changed doc-view.el misc.texi mixal-mode.el
- gnus-sum.el imenu.el url-http.el
+Jose A. Ortega Ruiz: changed mixal-mode.el gnus-sum.el url-http.el
-Jose E. Marchesi: changed ada-mode.el gomoku.el simple.el smtpmail.el
+Jose E. Marchesi: changed gomoku.el simple.el smtpmail.el
José L. Doménech: changed dired-aux.el
@@ -3038,7 +2879,7 @@ and changed xterm.c xfns.c keyboard.c screen.c dispnew.c xdisp.c window.c
Joseph M. Kelsey: changed fileio.c skeleton.el
-Josh Elsasser: changed eglot.el README.md configure.ac
+Josh Elsasser: changed configure.ac
Josh Feinstein: changed erc-join.el erc.el
@@ -3052,8 +2893,7 @@ Joshua Datko: changed fortune.el
Joshua Varner: changed intro.texi
-Jostein Kjønigsen: changed csharp-mode.el typescript-ts-mode.el js.el
- progmodes/compile.el eglot.el json-ts-mode.el nxml-mode.el treesit.el
+Jostein Kjønigsen: changed nxml-mode.el progmodes/compile.el
Jouni K. Seppänen: changed gnus.texi nnimap.el mm-url.el
@@ -3070,7 +2910,7 @@ and co-wrote help-tests.el keymap-tests.el
and changed subr.el desktop.el w32fns.c faces.el simple.el emacsclient.c
files.el server.el bs.el help-fns.el xdisp.c org.el w32term.c w32.c
buffer.c keyboard.c ido.el image.c window.c eval.c allout.el
- and 1229 other files
+ and 1223 other files
Juan Pechiar: changed ob-octave.el
@@ -3109,17 +2949,15 @@ Jure Cuhalev: changed ispell.el
Jürgen Hartmann: changed window.el
Jürgen Hötzel: wrote tramp-adb.el
-and changed callproc.c eglot.el tramp-gvfs.el tramp-sh.el comint.el
- em-unix.el esh-util.el tramp-cache.el tramp.el url-handlers.el
- wid-edit.el
+and changed tramp-gvfs.el tramp-sh.el callproc.c comint.el em-unix.el
+ esh-util.el tramp-cache.el tramp.el url-handlers.el wid-edit.el
-Juri Linkov: wrote compose.el emoji.el files-x.el misearch.el
- repeat-tests.el replace-tests.el tab-bar-tests.el tab-bar.el
- tab-line.el
+Juri Linkov: wrote compose.el files-x.el misearch.el repeat-tests.el
+ replace-tests.el tab-bar-tests.el tab-bar.el tab-line.el
and changed isearch.el simple.el info.el replace.el dired.el dired-aux.el
- minibuffer.el progmodes/grep.el subr.el window.el vc.el mouse.el
- outline.el diff-mode.el repeat.el image-mode.el files.el menu-bar.el
- search.texi startup.el progmodes/compile.el and 472 other files
+ progmodes/grep.el subr.el window.el image-mode.el mouse.el diff-mode.el
+ files.el menu-bar.el minibuffer.el progmodes/compile.el startup.el
+ faces.el vc.el display.texi search.texi and 446 other files
Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h
w32console.c w32heap.c w32inevt.c w32term.h
@@ -3130,13 +2968,8 @@ Justin Burkett: changed window.el
Justin Gordon: changed ox-md.el
-Justin Schell: wrote vc-git-tests.el
-and changed vc-git.el
-
Justin Sheehy: changed gnus-sum.el nntp.el
-Justin Talbott: wrote use-package-ensure-system-package.el
-
Justin Timmons: changed apropos.el progmodes/python.el
Justus Piater: changed org-agenda.el smtpmail.el
@@ -3153,9 +2986,7 @@ and changed message.el gnus-agent.el gnus-sum.el files.el nnmail.el
Kailash C. Chowksey: changed HELLO ind-util.el kannada.el knd-util.el
lisp/Makefile.in loadup.el
-Kai Ma: changed nsterm.m
-
-Kai Tetzlaff: changed sieve-manage.el ox-publish.el sieve.el url-http.el
+Kai Tetzlaff: changed ox-publish.el url-http.el
Kalle Kankare: changed image.c
@@ -3194,7 +3025,7 @@ and changed simple.el files.el CONTRIBUTE doc-view.el image-mode.el
Karl Heuer: changed keyboard.c lisp.h xdisp.c buffer.c xfns.c xterm.c
alloc.c files.el frame.c configure.ac window.c data.c minibuf.c
editfns.c fns.c process.c Makefile.in fileio.c simple.el keymap.c
- indent.c and 447 other files
+ indent.c and 446 other files
Karl Kleinpaste: changed gnus-sum.el gnus-art.el gnus-picon.el
gnus-score.el gnus-uu.el gnus-xmas.el gnus.el mm-uu.el mml.el nnmail.el
@@ -3228,8 +3059,8 @@ and changed gnus-art.el gnus-sum.el message.el mm-decode.el gnus.texi
Kaushal Modi: changed dired-aux.el files.el isearch.el apropos.el
calc-yank.el custom.texi desktop.el dired.el dired.texi ediff-diff.el
- eww.el ffap.el maintaining.texi printing.el ps-print.el shortdoc.el
- tips.texi variables.texi vc-hooks.el vc1-xtra.texi woman.el
+ eww.el ffap.el maintaining.texi printing.el ps-print.el tips.texi
+ variables.texi vc-hooks.el vc1-xtra.texi woman.el
Kaushik Srenevasan: changed gdb-mi.el
@@ -3237,7 +3068,7 @@ Kaveh R. Ghazi: changed delta88k.h xterm.c
Kayvan Sylvan: changed supercite.el
-Kazuhiro Ito: changed coding.c uudecode.el flow-fill.el font.c image.c
+Kazuhiro Ito: changed coding.c uudecode.el flow-fill.el font.c
japan-util.el keyboard.c make-mode.el starttls.el xdisp.c
Kazushi Marukawa: changed filelock.c hexl.c profile.c unexalpha.c
@@ -3266,8 +3097,8 @@ Kelvin White: changed erc.el erc-pcomplete.el erc.texi erc-backend.el
Ken Brown: changed configure.ac gmalloc.c sheap.c emacs.c w32fns.c
fileio.c w32term.c unexcw.c conf_post.h cygwin.h filenotify-tests.el
- src/Makefile.in sysdep.c keyboard.c lisp.h atimer.c browse-url.el
- dispextern.h emacs.rc.in fileio-tests.el frame.c and 54 other files
+ src/Makefile.in lisp.h sysdep.c browse-url.el dispextern.h emacs.rc.in
+ fileio-tests.el frame.c image.c keyboard.c and 50 other files
Ken Brush: changed emacsclient.c
@@ -3277,7 +3108,7 @@ and co-wrote ps-def.el ps-mule.el ps-print.el ps-samp.el quail.el
and changed coding.c mule-cmds.el mule.el fontset.c charset.c xdisp.c
font.c fontset.el xterm.c fileio.c mule-conf.el ftfont.c characters.el
fns.c mule-diag.el coding.h charset.h ccl.c xfaces.c editfns.c
- composite.c and 386 other files
+ composite.c and 387 other files
Kenichi Okada: co-wrote sasl-cram.el sasl-digest.el
@@ -3313,7 +3144,6 @@ Kevin Blake: changed font-lock.el ring.el
Kevin Broadey: wrote foldout.el
Kevin Brubeck Unhammer: changed erc-join.el erc-track.el erc.el
- mail-extr.el
Kevin Christian: changed gnus-score.el
@@ -3336,11 +3166,9 @@ and changed gnus-agent.el gnus-sum.el gnus-start.el gnus-int.el nntp.el
Kevin Layer: changed mml.el w32proc.c
-Kévin Le Gouguec: changed progmodes/python.el font-lock.el gnus-sum.el
- configure.ac dired-aux-tests.el dired-aux.el electric-tests.el faces.el
- font-lock-tests.el fontset.el gnus.el leim/Makefile.in message.texi
- project.el python-tests.el sh-script.el shr.el simple.el subr-tests.el
- subr.el use-package.texi xfaces.c
+Kévin Le Gouguec: changed font-lock.el gnus-sum.el progmodes/python.el
+ dired-aux-tests.el dired-aux.el electric-tests.el font-lock-tests.el
+ gnus.el message.texi project.el python-tests.el sh-script.el shr.el
Kevin Rodgers: changed compile.el mailabbrev.el progmodes/compile.el
dired-x.el files.el ange-ftp.el byte-opt.el desktop.el diff-mode.el
@@ -3354,14 +3182,14 @@ and changed info-look.el info.el checkdoc.el cl.texi compilation.txt
progmodes/compile.el woman.el browse-url.el copyright.el dig.el
files.el flyspell.el keyboard.c mailcap.el and 88 other files
-Kien Nguyen: changed browse-url.el comp.c files.el w32.c
+Kien Nguyen: changed comp.c
Kim F. Storm: wrote bindat.el cua-base.el cua-gmrk.el cua-rect.el ido.el
keypad.el kmacro.el
and changed xdisp.c dispextern.h process.c simple.el window.c keyboard.c
xterm.c dispnew.c subr.el w32term.c lisp.h fringe.c display.texi
macterm.c alloc.c fns.c xfaces.c keymap.c xfns.c xterm.h .gdbinit
- and 249 other files
+ and 248 other files
Kimit Yada: changed copyright.el
@@ -3369,8 +3197,6 @@ Kim-Minh Kaplan: changed gnus-picon.el gnus-sum.el gnus-start.el
gnus-win.el gnus-xmas.el gnus.texi imap.el message.el nndraft.el
nnml.el
-Kira Bruneau: changed files.el pgtk-win.el
-
Kirill A. Korinskiy: changed fortune.el
Kirk Kelsey: changed make-mode.el vc-hg.el
@@ -3379,10 +3205,6 @@ Kishore Kumar: changed terminal.el
Kiso Katsuyuki: changed tab-line.el
-Kjartan Oli Agustsson: changed doc-view.el
-
-Kjartan Óli Ágústsson: changed doc-view.el
-
Klaus Straubinger: changed url-http.el url-history.el pcmpl-rpm.el
url-cookie.el url.el
@@ -3395,26 +3217,21 @@ Knut Anders Hatlen: changed nnimap.el imap.el
Koaunghi Un: wrote hanja3.el
and changed hanja.el hangul.el hangul3.el hanja-jis.el symbol-ksc.el
-Kobarity-: changed progmodes/python.el python-tests.el hideshow-tests.el
- hideshow.el
-
Kobayashi Yasuhiro: changed w32fns.c configure.bat indent.c info.el
w32term.c w32term.h window.c xfns.c
Kodi Arfer: changed org.texi ox-html.el
-Koen Van Greevenbroek: changed pgtkterm.c
-
Koichi Arakawa: changed tramp-sh.el w32proc.c
Konrad Hinsen: wrote ol-eshell.el
and changed ob-python.el
Konstantin Kharlamov: changed smerge-mode.el diff-mode.el files.el
- ada-mode.el autorevert.el calc-aent.el calc-ext.el calc-lang.el
- cc-mode.el cperl-mode.el css-mode.el cua-rect.el dnd.el ebnf-abn.el
- ebnf-dtd.el ebnf-ebx.el emacs-module-tests.el epg.el faces.el
- gnus-art.el gtkutil.c and 27 other files
+ autorevert.el calc-aent.el calc-ext.el calc-lang.el cc-mode.el
+ cperl-mode.el css-mode.el cua-rect.el dnd.el ebnf-abn.el ebnf-dtd.el
+ ebnf-ebx.el emacs-module-tests.el epg.el faces.el gnus-art.el gtkutil.c
+ hideif.el and 26 other files
Konstantin Kliakhandler: changed org-agenda.el
@@ -3446,7 +3263,7 @@ Kyle Hubert: changed ediff-util.el
Kyle Jones: wrote life.el
and changed saveconf.el buffer.c mail-utils.el sendmail.el
-Kyle Meyer: changed loaddefs-gen.el org-compat.el ox.el
+Kyle Meyer: changed org-compat.el ox.el
Kyotaro Horiguchi: changed coding.c indent.c
@@ -3475,38 +3292,34 @@ and co-wrote dabbrev.el imenu.el
Lars Ljung: changed esh-ext.el isearch.el
Lars Magne Ingebrigtsen: wrote compface.el decompress-tests.el dns.el
- dom.el ecomplete.el emoji.el erc-tests.el eww.el exif.el format-spec.el
+ dom.el ecomplete.el erc-tests.el eww.el exif.el format-spec.el
gnus-agent.el gnus-art.el gnus-async.el gnus-bcklg.el gnus-cache.el
gnus-cloud.el gnus-demon.el gnus-draft.el gnus-dup.el gnus-eform.el
gnus-fun.el gnus-group.el gnus-html.el gnus-int.el gnus-logic.el
gnus-picon.el gnus-range.el gnus-salt.el gnus-spec.el gnus-srvr.el
gnus-start.el gnus-sum.el gnus-undo.el gnus-util.el gnus-uu.el
- gnus-win.el icons.el ietf-drums.el image-converter.el mail-parse.el
+ gnus-win.el ietf-drums.el image-converter.el mail-parse.el
mail-prsvr.el mail-source.el message.el messcompat.el mm-archive.el
mm-view.el mml.el netrc.el network-stream-tests.el network-stream.el
nnagent.el nndir.el nndraft.el nngateway.el nnmail.el nnoo.el nntp.el
- nnweb.el nsm.el parse-time-tests.el puny.el qp.el range.el rfc2045.el
+ nnweb.el nsm.el parse-time-tests.el puny.el qp.el rfc2045.el
rfc2104-tests.el rfc2231.el rtree.el score-mode.el shr-tests.el shr.el
spam.el text-property-search-tests.el text-property-search.el
- url-domsuf.el url-queue.el yank-media.el
+ url-domsuf.el url-queue.el
and co-wrote gnus-kill.el gnus-mh.el gnus-msg.el gnus-score.el
gnus-topic.el gnus.el gssapi.el mailcap.el mm-bodies.el mm-decode.el
mm-encode.el mm-util.el nnbabyl.el nndoc.el nneething.el nnfolder.el
nnheader.el nnimap.el nnmbox.el nnmh.el nnml.el nnspool.el nnvirtual.el
rfc2047.el svg.el time-date.el
-and changed subr.el simple.el gnus.texi files.el display.texi process.c
- help-fns.el text.texi image.c dired.el help.el image.el package.el
- edebug.el shortdoc.el dired-aux.el gnutls.c minibuffer.el subr-x.el
- auth-source.el smtpmail.el and 1061 other files
+and changed gnus.texi simple.el subr.el files.el process.c display.texi
+ text.texi dired.el gnutls.c gnus-ems.el smtpmail.el help-fns.el
+ auth-source.el url-http.el edebug.el image.el gnus-cite.el pop3.el
+ dired-aux.el fns.c image.c and 867 other files
Lars Rasmusson: changed ebrowse.c
Lasse Rasinen: changed gnus-start.el
-Lassi Kortela: changed dns-mode.el
-
-Laurence Warne: changed proced.el progmodes/python.el python-tests.el
-
Laurent Martelli: changed mm-decode.el
Lawrence Mitchell: wrote erc-backend.el erc-log.el
@@ -3527,16 +3340,15 @@ Lee Duhem: changed eval.c
Leigh Stoller: changed emacsclient.c server.el
-Lele Gaifax: changed progmodes/python.el TUTORIAL.it python-tests.el
- flymake.el configure.ac copyright-tests.el copyright.el dnd.el
- flymake-proc.el flymake.texi isearch.el pgtkfns.c xterm.c
+Lele Gaifax: changed TUTORIAL.it progmodes/python.el flymake.el
+ python-tests.el flymake-proc.el flymake.texi isearch.el
Lennart Borgman: co-wrote ert-x.el
-and changed nxml-mode.el tutorial.el re-builder.el window.el ada-xref.el
- buff-menu.el emacs-lisp/debug.el emacsclient.c filesets.el flymake.el
- help-fns.el isearch.el linum.el lisp-mode.el lisp.el mouse.el
- progmodes/grep.el recentf.el remember.el replace.el reveal.el
- and 6 other files
+and changed nxml-mode.el tutorial.el re-builder.el window.el buff-menu.el
+ emacs-lisp/debug.el emacsclient.c filesets.el flymake.el help-fns.el
+ isearch.el linum.el lisp-mode.el lisp.el mouse.el progmodes/grep.el
+ recentf.el remember.el replace.el reveal.el ruby-mode.el
+ and 5 other files
Lennart Staflin: changed dired.el diary-ins.el diary-lib.el tq.el xdisp.c
@@ -3560,8 +3372,6 @@ Leo P. White: changed eieio-custom.el
Leo Vivier: changed dired-aux.el
-Le Trung Dan: changed files.el files.texi package-vc.el shortdoc.el
-
Levin Du: changed parse-time.el org-clock.el
Le Wang: changed org-src.el comint.el hilit-chg.el misc.el
@@ -3576,12 +3386,8 @@ Liang Wang: changed etags.el
Liāu, Kiong-Gē 廖宮毅: changed comp.c mingw-cfg.site
-Lin Sun: changed calc.el package.el
-
Lin Zhou: changed w32fns.c w32term.h
-Liu Hui: changed eglot.el
-
Lixin Chin: changed bibtex.el
Lloyd Zusman: changed mml.el pgg-gpg.el
@@ -3599,8 +3405,6 @@ Lucid, Inc.: changed byte-opt.el byte-run.el bytecode.c bytecomp.el
delsel.el disass.el faces.el font-lock.el mailabbrev.el select.el
xfaces.c xselect.c
-Lucien Cartier-Tilet: changed battery.el
-
Luc Teirlinck: wrote help-at-pt.el
and changed files.el autorevert.el cus-edit.el subr.el simple.el
frames.texi startup.el display.texi files.texi dired.el comint.el
@@ -3633,7 +3437,7 @@ Lute Kamstra: changed modes.texi emacs-lisp/debug.el generic-x.el
generic.el font-lock.el simple.el subr.el battery.el debugging.texi
easy-mmode.el elisp.texi emacs-lisp/generic.el hl-line.el info.el
octave.el basic.texi bindings.el calc.el cmdargs.texi diff-mode.el
- doclicense.texi and 289 other files
+ doclicense.texi and 288 other files
Lynn Slater: wrote help-macro.el
@@ -3654,18 +3458,13 @@ Malcolm Purvis: changed spam-stat.el
Manoj Srivastava: wrote manoj-dark-theme.el
-Manuel Giraud: changed vc.el ox-html.el bookmark.el image-dired.el
- longlines.el ox-publish.el keyboard.c paragraphs.el simple.el
- basic.texi battery.el bookmark-tests.el cus-start.el dired.texi
- dispextern.h easymenu.el find-dired.el ibuf-ext.el ibuf-macs.el
- idlwave.el image.c and 11 other files
+Manuel Giraud: changed ox-html.el ox-publish.el vc.el idlwave.el org.texi
Manuel Gómez: changed speedbar.el
Manuel Serrano: wrote flyspell.el
-Manuel Uberti: changed eglot.el project.el minibuffer.el reftex-cite.el
- xref.el
+Manuel Uberti: changed project.el
Marcelo Toledo: changed TUTORIAL.pt_BR TUTORIAL.cn TUTORIAL.cs
TUTORIAL.de TUTORIAL.es TUTORIAL.fr TUTORIAL.it TUTORIAL.ja TUTORIAL.ko
@@ -3680,8 +3479,6 @@ Marcin Borkowski: wrote fill-tests.el lisp-tests.el
and changed battery.el doc-view.el elisp-mode-tests.el fill.el lisp.el
parse-time.el studly.el
-Marcin Pajkowski: changed eglot.el
-
Marc Lefranc: changed gnus-art.el
Marco Centurion: changed dired-aux.el files.el files.texi
@@ -3705,8 +3502,6 @@ Marcus Harnisch: changed gnus-art.el
Marcus Karlsson: changed image.c
-Marcus Swanson: changed README.md eglot.el
-
Marek Martin: changed nnfolder.el
Marien Zwart: changed progmodes/python.el
@@ -3721,8 +3516,6 @@ and changed erc.el erc-dcc.el erc-speak.el Makefile erc-bbdb.el
erc-nickserv.el erc-ring.el gud.el org.texi artist.el cl-extra.el
and 48 other files
-Mario Rodas: changed eglot.el README.md
-
Mark A. Hershberger: changed xml.el nnrss.el mm-url.el cperl-mode.el
isearch.el vc-bzr.el OpenDocument-schema-v1.3+libreoffice.rnc
OpenDocument-schema-v1.3.rnc cc-mode.texi compilation.txt ede.texi
@@ -3766,7 +3559,7 @@ Mark Oteiza: wrote mailcap-tests.el md4-tests.el xdg-tests.el xdg.el
and changed image-dired.el dunnet.el mpc.el eww.el json.el calc-units.el
lcms.c subr-x.el subr.el message.el tex-mode.el cl-macs.el cl.texi
ibuffer.el lcms-tests.el mailcap.el progmodes/python.el cl-print.el
- eldoc.el emacs-lisp/chart.el files.el and 172 other files
+ eldoc.el emacs-lisp/chart.el files.el and 173 other files
Mark Plaksin: changed nnrss.el term.el
@@ -3784,14 +3577,12 @@ Markus Heiser: changed gud.el
Markus Holmberg: changed thingatpt.el
-Markus Kopp: changed pixel-scroll.el
-
Markus Rost: wrote cus-test.el
and changed cus-edit.el files.el progmodes/compile.el rmail.el
tex-mode.el find-func.el rmailsum.el simple.el cus-dep.el dired.el
mule-cmds.el rmailout.el checkdoc.el configure.ac custom.el emacsbug.el
gnus.el help-fns.el ls-lisp.el mwheel.el sendmail.el
- and 126 other files
+ and 125 other files
Markus Sauermann: changed lisp-mode.el
@@ -3814,10 +3605,6 @@ Martin Boyer: changed bibtex.el menu-bar.el
Martin Buchholz: changed etags.c
-Martin Carlson: changed eglot.el
-
-Martin Jerabek: changed rng-uri.el
-
Martin Jesper Low Madsen: changed auth-source.el
Martin Joerg: changed tramp-sh.el
@@ -3839,8 +3626,8 @@ Martin Pohlack: changed iimage.el pc-select.el
Martin Rudalics: changed window.el window.c windows.texi frame.c xdisp.c
xterm.c frames.texi w32fns.c w32term.c xfns.c frame.el display.texi
- frame.h help.el cus-start.el buffer.c window.h mouse.el dispnew.c
- keyboard.c nsfns.m and 214 other files
+ frame.h cus-start.el help.el buffer.c window.h mouse.el dispnew.c
+ nsfns.m gtkutil.c and 212 other files
Martin Stjernholm: wrote cc-bytecomp.el
and co-wrote cc-align.el cc-cmds.el cc-compat.el cc-defs.el cc-engine.el
@@ -3884,8 +3671,7 @@ Masayuki Ataka: changed texinfmt.el texinfo.el characters.el cmuscheme.el
Masayuki Fujii: changed dnd.el w32-win.el
-Mathias Dahl: wrote image-dired-dired.el image-dired-external.el
- image-dired-tags.el image-dired-util.el image-dired.el
+Mathias Dahl: wrote image-dired.el
and changed tumme.el dired.el dired.texi abbrev.el abbrevs.texi
Mathias Megyei: changed lisp/Makefile.in
@@ -3894,10 +3680,10 @@ Mathieu Othacehe: changed tramp-adb.el
Mats Lidell: changed TUTORIAL.sv european.el gnus-art.el org-element.el
-Matt Armstrong: changed itree.c buffer-tests.el buffer.c itree.h alloc.c
- display.texi editfns.c filelock-tests.el package.el .clang-format
- buffer.h coding.c commands.texi eval.c filelock.c files.el
- gnus-topic.el gnus.el imap.el lisp-mnt.el lisp.h and 12 other files
+Matt Armstrong: changed display.texi filelock-tests.el buffer.c
+ commands.texi filelock.c files.el gnus-topic.el gnus.el imap.el
+ lisp-mnt.el map-tests.el marker.c message.el shell.el simple.el
+ userlock.el
Matt Beshara: changed js.el nsfns.m
@@ -3934,12 +3720,9 @@ Matthias Dahl: changed faces.el process.c process.h
Matthias Förste: changed files.el
-Matthias Meulien: wrote ansi-osc-tests.el
-and co-wrote ansi-osc.el
-and changed diff-mode.el bookmark.el vc-dir.el comint.el outline.el
- progmodes/python.el vc.el buff-menu.el doc-view.el eww.el gnus-sum.el
- help-mode.el image-dired.el info.el man.el prog-mode.el project.el
- simple.el tab-bar.el tabify.el vc-git.el and 3 other files
+Matthias Meulien: changed bookmark.el progmodes/python.el vc-dir.el
+ buff-menu.el prog-mode.el simple.el tab-bar.el tabify.el vc-git.el
+ vc-tests.el
Matthias Wiehl: changed gnus.el
@@ -3954,16 +3737,14 @@ Matt Hodges: changed textmodes/table.el faces.el iswitchb.el simple.el
edebug.texi eldoc.el em-hist.el em-pred.el fixit.texi icon.el ido.el
locate.el paragraphs.el pcomplete.el repeat.el and 3 other files
-Mattias Engdegård: changed byte-opt.el rx.el bytecomp.el
- bytecomp-tests.el rx-tests.el searching.texi fns.c subr.el bytecode.c
- eval.c calc-tests.el lread.c progmodes/compile.el lisp.h files.el
- fns-tests.el print.c autorevert.el gdb-mi.el alloc.c
- regex-emacs-tests.el and 675 other files
+Mattias Engdegård: changed byte-opt.el rx.el rx-tests.el searching.texi
+ bytecomp-tests.el bytecomp.el calc-tests.el progmodes/compile.el
+ subr.el autorevert.el gdb-mi.el files.el regex-emacs-tests.el mouse.el
+ regexp-opt.el replace.el calc.el coding.c filenotify.el regex-emacs.c
+ calc-ext.el and 539 other files
Mattias M: changed asm-mode-tests.el asm-mode.el
-Matt Kramer: changed tab-line.el
-
Matt Lundin: changed org-agenda.el org.el org-bibtex.el org-footnote.el
ox-publish.el org-bbdb.el org-datetree.el org-gnus.el
@@ -3977,14 +3758,14 @@ Matt Swift: changed dired.el editfns.c lisp-mode.el mm-decode.el
outline.el progmodes/compile.el rx.el simple.el startup.el
Mauro Aranda: changed wid-edit.el cus-edit.el custom.el wid-edit-tests.el
- widget.texi perl-mode.el custom-tests.el checkdoc-tests.el checkdoc.el
- cperl-mode-tests.el cus-edit-tests.el cus-theme.el customize.texi
- files.texi gnus.texi octave.el pong.el align.el auth-source.el
- autorevert.el button.el and 44 other files
+ widget.texi custom-tests.el checkdoc-tests.el checkdoc.el
+ cus-edit-tests.el cus-theme.el customize.texi files.texi gnus.texi
+ octave.el pong.el autorevert.el button.el cc-mode.texi control.texi
+ custom--test-theme.el dbus.texi and 35 other files
Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el
-Maxim Nikulin: changed mailcap.el os.texi timefns.c
+Maxim Nikulin: changed mailcap.el
Max Mikhanosha: changed org-agenda.el org-habit.el keyboard.c org.el
@@ -4001,10 +3782,9 @@ Michael Albinus: wrote autorevert-tests.el dbus-tests.el dbus.el
url-tramp.el vc-tests.el zeroconf.el
and co-wrote tramp-cache.el tramp-sh.el tramp.el
and changed tramp.texi tramp-adb.el trampver.el trampver.texi dbusbind.c
- files.el ange-ftp.el files.texi file-notify-tests.el dbus.texi
- gitlab-ci.yml autorevert.el tramp-fish.el kqueue.c os.texi
- Dockerfile.emba tramp-gw.el test/Makefile.in README shell.el
- tramp-imap.el and 307 other files
+ files.el ange-ftp.el file-notify-tests.el files.texi dbus.texi
+ autorevert.el tramp-fish.el kqueue.c tramp-gw.el os.texi shell.el
+ tramp-imap.el gitlab-ci.yml lisp.h README xesam.el and 278 other files
Michael Ben-Gershon: changed acorn.h configure.ac riscix1-1.h riscix1-2.h
unexec.c
@@ -4031,8 +3811,6 @@ Michael Downes: changed gnus-sum.el
Michael D. Prange: wrote fortran.el
and changed tex-mode.el
-Michael Eliachevitch: changed eglot.texi
-
Michael Gauland: co-wrote ob-scheme.el
and changed ebnf2ps.el org-src.el
@@ -4042,15 +3820,12 @@ Michael Harnois: changed nnimap.el
Michael Heerdegen: changed bytecomp.el cl-macs.el subr.el control.texi
copyright.el css-mode.el dired.el easy-mmode.el eieio-core.el
- filesets.el gv.el hi-lock.el macroexp.el modula2.el ob-C.el ob-core.el
- ob-exp.el ob-groovy.el ob-haskell.el ob-lisp.el ob-lob.el
- and 235 other files
+ filesets.el hi-lock.el macroexp.el modula2.el ob-C.el ob-core.el
+ ob-exp.el ob-groovy.el ob-haskell.el ob-lisp.el ob-lob.el ob-lua.el
+ and 229 other files
Michael Hendricks: changed help.el
-Michael Herstine: changed backtrace.el ert-tests.el ert-x-tests.el ert.el
- ert.texi
-
Michael Hoffman: changed term.el xterm.el
Michael Hotchin: changed progmodes/compile.el
@@ -4070,10 +3845,6 @@ and changed viper*.el ediff*.el viper.texi ediff.texi ediff-merge.el
Michael K. Johnson: changed configure.ac emacs.c process.c sysdep.c
syssignal.h systty.h unexcoff.c
-Michael Levine: changed fields-tests.el
-
-Michael Livshin: changed EGLOT-NEWS README.md eglot.el
-
Michael Marchionna: changed nsterm.m
Michael Markert: changed ob.el org-agenda.el org-docbook.el org-table.el
@@ -4104,14 +3875,14 @@ Michael Schmidt: co-wrote modula2.el (public domain)
Michael Schuldt: changed calc-comb.el
Michael Shields: changed spam.el gnus-art.el gnus-sum.el gnus-cite.el
- server.el Makefile.in gnus-group.el gnus.el intel386.h nndraft.el
- pgg-def.el window.c window.el
+ Makefile.in gnus-group.el gnus.el intel386.h nndraft.el pgg-def.el
+ server.el window.c window.el
Michael Sperber: changed org.el nnmail.el aix3-1.h aix4-2.h gnus-sum.el
gnus.texi mail-source.el mailcap.el nnml.el org-capture.el
org-footnote.el
-Michael Staats: changed pc-select.el
+Michael Staats: wrote pc-select.el
Michael Vehrs: changed quail.el woman.el
@@ -4124,16 +3895,12 @@ Michael Weylandt: changed ox-latex.el
Michael Witten: changed TUTORIAL fixit.texi intro.texi
-Michal Dubiel: changed eglot.el
-
Michalis V: changed dired-aux.el em-cmpl.el help-mode.el tcl.el
Michal Jankowski: changed insdel.c keyboard.c
Michał Kondraciuk: changed cus-edit.el
-Michal Krzywkowski: changed eglot.el eglot-tests.el README.md
-
Michał Krzywkowski: changed elide-head.el
Michal Nazarewicz: wrote cc-mode-tests.el descr-text-tests.el
@@ -4163,11 +3930,11 @@ Microelectronics and Computer Technology Corporation: changed
Miguel Ruiz: changed ob-gnuplot.el
-Miha Rihtaršič: changed comint.el shell.el keyboard.c term.el esh-mode.el
- ielm.el minibuf.c ansi-color-tests.el ansi-color.el bindings.el
- commands.texi eterm-color.ti minibuffer.el simple.el term-tests.el
- bug-reference.el calc-store.el cc-styles.el crm.el data.c delsel.el
- and 13 other files
+Mihai Olteanu: changed hexl.el
+
+Miha Rihtaršič: changed keyboard.c commands.texi minibuf.c minibuffer.el
+ simple.el bindings.el comint.el data.c delsel.el errors.texi
+ esh-mode.el eval.c ibuffer.el macros.c process.c sh-script.el
Mihir Rege: changed js.el
@@ -4185,10 +3952,9 @@ Mike Hamrick: changed dispextern.h term.c termchar.h xfaces.c
Mike Kazantsev: changed erc-dcc.el
-Mike Kupfer: changed mh-comp.el mh-e.el mh-mime.el mh-utils.el files.el
- ftcrfont.c mh-compat.el mh-utils-tests.el emacs-mime.texi files.texi
- gnus-mh.el gnus.texi mh-acros.el mh-e.texi mh-identity.el mh-scan.el
- xftfont.c
+Mike Kupfer: changed mh-comp.el mh-e.el ftcrfont.c mh-utils.el
+ emacs-mime.texi gnus-mh.el gnus.texi mh-acros.el mh-compat.el mh-e.texi
+ mh-identity.el mh-mime.el xftfont.c
Mike Lamb: changed em-unix.el esh-util.el pcmpl-unix.el
@@ -4203,8 +3969,8 @@ Mike Newton: co-wrote bibtex.el
Mike Rowan: changed process.c alloc.c dispnew.c keyboard.c process.h
sysdep.c xdisp.c
-Mike Williams: wrote thingatpt.el
-and changed sgml-mode.el mouse-sel.el xml-lite.el
+Mike Williams: wrote mouse-sel.el thingatpt.el
+and changed sgml-mode.el xml-lite.el
Mike Woolley: changed gnus-sum.el
@@ -4220,7 +3986,7 @@ Miles Bader: wrote button.el face-remap.el image-file.el macroexp.el
and changed comint.el faces.el simple.el editfns.c xfaces.c xdisp.c
info.el minibuf.c display.texi quick-install-emacs wid-edit.el xterm.c
dispextern.h subr.el window.el cus-edit.el diff-mode.el xfns.c
- bytecomp.el help.el lisp.h and 272 other files
+ bytecomp.el help.el lisp.h and 271 other files
Milton Wulei: changed gdb-ui.el
@@ -4232,8 +3998,6 @@ Mirko Vukovic: changed emacs.texi maintaining.texi
Miro Bezjak: wrote ob-groovy.el
-Misha Gusarov: changed pgtkterm.c
-
Mitchel Humpherys: changed vc-git.el
Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el
@@ -4244,20 +4008,14 @@ Miyoshi Masanori: changed mouse.el smtpmail.el xdisp.c
Mohsen Banan: wrote persian.el
and changed loadup.el
-Mohsin Kaleem: changed eglot.el
-
Mon Key: changed animate.el imap.el syntax.el
-Morgan J. Smith: changed gnus-group-tests.el
-
-Morgan Smith: changed image-dired.el vc-git.el window.el
-
Morten Welinder: wrote [many MS-DOS files] arc-mode.el desktop.el
- dosfns.c internal.el msdos.h pc-win.el
+ dosfns.c internal.el msdos.h pc-win.el s-region.el
and changed msdos.c sed1.inp config.bat keyboard.c sed2.inp fileio.c
sed3.inp dos-fns.el callproc.c add-log.el alpha.h data.c editfns.c
emacs.c etags.c files.el info.el lread.c mainmake osf1.h tar-mode.el
- and 74 other files
+ and 73 other files
Mosur Mohan: changed etags.c
@@ -4267,16 +4025,8 @@ Muchenxuan Tong: changed org-agenda.el org-mobile.el org-timer.el
Murata Shuuichirou: changed coding.c
-M Visuwesh: changed dired-aux.el ind-util.el quail/indian.el delsel.el
- eww.el find-dired.el image.el mailcap.el mouse.el arc-mode.el comint.el
- doc-view.el emacsbug.el gnus-group.el gnus-srvr.el gnus-sum.el gnus.el
- help-fns.el image-crop.el language/indian.el mark.texi
- and 9 other files
-
Myles English: changed org-clock.el
-Nacho Barrientos: changed url-http.el bindat-tests.el bindat.el
-
Nachum Dershowitz: co-wrote cal-hebrew.el
Nagy Andras: co-wrote gnus-sieve.el
@@ -4295,9 +4045,9 @@ Naofumi Yasufuku: changed tramp-sh.el
Naohiro Aota: changed fontset.c ftfont.c gnus-art.el mm-view.el tls.el
xftfont.c
-Naoya Yamashita: changed gv-tests.el gv.el use-package-core.el
+Naoya Yamashita: changed gv-tests.el gv.el
-Narendra Joshi: changed repeat.el vcursor.el
+Narendra Joshi: changed repeat.el
Nathaniel Flath: changed cc-menus.el cc-engine.el cc-fonts.el cc-langs.el
cc-mode.el cc-vars.el
@@ -4340,8 +4090,6 @@ Nicholas Maniscalco: changed term.el
Nicholas Strauss: changed lunar.el
-Nicholas Vollmer: changed emacs.1.in
-
Nick Alcock: changed control.texi customize.texi display.texi files.el
frames.texi gnus.el keymaps.texi modes.texi nonascii.texi syntax.texi
text.texi windows.texi
@@ -4377,10 +4125,10 @@ Nicolás Bértolo: changed comp.c comp.el emacs.c lread.c comp.h lisp.h
Nicolas Calderon Asselin: changed org-clock.el
-Nicolas Goaziou: wrote oc-basic.el oc-biblatex.el oc-bibtex.el oc-csl.el
- oc-natbib.el oc.el ol-doi.el org-duration.el org-element.el org-keys.el
- org-lint.el org-macro.el org-num.el ox-ascii.el ox-latex.el ox-md.el
- ox-org.el ox.el
+Nicolas Goaziou: wrote oc-basic.el oc-biblatex.el oc-csl.el oc-natbib.el
+ oc.el ol-doi.el org-duration.el org-element.el org-keys.el org-lint.el
+ org-macro.el org-num.el ox-ascii.el ox-latex.el ox-md.el ox-org.el
+ ox.el
and co-wrote ox-beamer.el ox-icalendar.el ox-koma-letter.el ox-man.el
and changed org-list.el org.el ox-html.el org-footnote.el ox-texinfo.el
org.texi ox-publish.el ox-odt.el org-inlinetask.el org-indent.el
@@ -4390,8 +4138,6 @@ and changed org-list.el org.el ox-html.el org-footnote.el ox-texinfo.el
Nicolas Graner: changed eww.el message.el
-Nicolas Martyanoff: changed em-cmpl.el lisp-mode.el
-
Nicolas Petton: wrote map-tests.el map.el seq-tests.el seq.el
thunk-tests.el thunk.el url-handlers-tests.el
and co-wrote auth-source-pass.el auth-source-tests.el subr-tests.el
@@ -4402,10 +4148,10 @@ and changed README authors.el configure.ac sed2v2.inp sequences.texi
and 37 other files
Nicolas Richard: wrote cl-seq-tests.el cmds-tests.el replace-tests.el
-and changed ffap.el package.el use-package.el byte-run.el help.el
- keyboard.c landmark.el org.el simple.el DEBUG README.md align.el
- battery.el cl-seq.el eieio-opt.el elisp-mode.el gv.el ido.el isearch.el
- ispell.el minibuffer.el and 12 other files
+and changed ffap.el package.el byte-run.el help.el keyboard.c landmark.el
+ org.el simple.el DEBUG align.el battery.el cl-seq.el eieio-opt.el
+ elisp-mode.el gv.el ido.el isearch.el ispell.el minibuffer.el ob.el
+ pcmpl-unix.el and 9 other files
Niels Giesen: changed icalendar.el org-agenda.el org-clock.el
org-docbook.el org-table.el ox-icalendar.el ox-latex.el
@@ -4448,12 +4194,12 @@ Noah Swainland: changed calc.el goto-addr.el misc.texi
Noam Postavsky: changed progmodes/python.el lisp-mode.el bytecomp.el
lisp-mode-tests.el term.el xdisp.c cl-macs.el eval.c simple.el data.c
- emacs-lisp/debug.el modes.texi elisp-mode.el help-fns.el subr.el ert.el
+ emacs-lisp/debug.el modes.texi help-fns.el subr.el elisp-mode.el ert.el
isearch.el processes.texi search.c cl-print.el diff-mode.el
and 362 other files
Nobuyoshi Nakada: co-wrote ruby-mode.el
-and changed ehelp.el ruby-mode-tests.el
+and changed ruby-mode-tests.el
Nobuyuki Hikichi: changed news-risc.h
@@ -4484,8 +4230,6 @@ Olaf Rogalsky: changed keyboard.c help.el mouse.el xt-mouse.el
Olaf Sylvester: wrote bs.el
-Olaf Trygve Berglihn: changed bibtex.el
-
Ola Nilsson: changed sh-script.el
Ole Aamot: changed compile.el
@@ -4499,7 +4243,7 @@ Oleh Krehel: co-wrote subr-tests.el
and changed dired-aux.el outline.el checkdoc.el files.el subr.el buffer.c
check-declare.el alloc.c appt.el buffer.h calc.el category.c
cl-indent.el cus-edit.el custom.el derived.el dired-x.el dired.el
- dired.texi display.texi easy-mmode.el and 16 other files
+ dired.texi display.texi easy-mmode.el and 15 other files
Oleksandr Gavenko: changed generic-x.el progmodes/grep.el
@@ -4515,8 +4259,8 @@ and changed gamegrid.el gnus-cite.el nonascii.texi rx.el startup.el
Oliver Seidel: wrote otodo-mode.el
and co-wrote todo-mode.el
-Olivier Certner: changed erc-track.el erc-ibuffer.el ediff-diff.el
- erc-services.el erc-stamp.el
+Olivier Certner: changed erc-track.el erc-ibuffer.el erc-services.el
+ erc-stamp.el
Olivier Laurens: changed forms.el
@@ -4528,8 +4272,7 @@ Olli Savia: changed etags.c syssignal.h
Olof Ohlsson Sax: changed vc-svn.el
-Omar Polo: changed rcirc.el rcirc.texi README.md configure.ac eglot.el
- emacsclient.c project.el sysdep.c vc.el
+Omar Polo: changed configure.ac emacsclient.c sysdep.c vc.el
Orivej Desh: changed tramp-sh.el
@@ -4541,10 +4284,10 @@ and co-wrote eudc-bob.el eudc-export.el eudc-hotlist.el eudc-vars.el
and changed ph.el
Óscar Fuentes: changed ido.el password-cache.el progmodes/grep.el ses.el
- vc-hooks.el xfns.c CPP-DEFINES INSTALL.W64 addpm.c addsection.c
- browse-url.el callproc.c cmdproxy.c configure.ac diff-mode.el
- em-cmpl.el emacsclient.c keyboard.c ms-w32.h preprep.c vc-bzr.el
- and 11 other files
+ vc-hooks.el xfns.c CPP-DEFINES addpm.c addsection.c browse-url.el
+ callproc.c cmdproxy.c configure.ac diff-mode.el em-cmpl.el
+ emacsclient.c keyboard.c ms-w32.h preprep.c vc-bzr.el vc-cvs.el
+ and 10 other files
Øyvind Stegard: changed gnus-msg.el
@@ -4563,8 +4306,6 @@ Patric Mueller: changed gnus-sum.el
Pat Thoyts: changed xfns.c
-Paul A. Patience: changed cc-awk.el
-
Paul Curry: changed cc-subword.el
Paul D. Smith: wrote snmp-mode.el
@@ -4573,9 +4314,9 @@ and changed imenu.el make-mode.el
Paul Eggert: wrote rcs2log
and co-wrote cal-dst.el
and changed lisp.h configure.ac alloc.c fileio.c process.c editfns.c
- sysdep.c xdisp.c fns.c image.c emacs.c keyboard.c data.c lread.c
- xterm.c eval.c gnulib-comp.m4 callproc.c Makefile.in buffer.c frame.c
- and 1863 other files
+ sysdep.c xdisp.c fns.c image.c keyboard.c data.c emacs.c lread.c
+ xterm.c eval.c gnulib-comp.m4 callproc.c Makefile.in frame.c buffer.c
+ and 1847 other files
Paul Fisher: changed fns.c
@@ -4587,13 +4328,11 @@ Paul Jarc: wrote nnmaildir.el (public domain) nnnil.el (public domain)
and changed message.el gnus-util.el gnus-int.el gnus.el gnus-agent.el
gnus-start.el gnus-sum.el nnmail.el
-Paul M. Rodriguez: changed eglot.el
-
-Paul Pogonyshev: changed subr.el byte-opt.el bytecomp.el desktop.el
- emacs-lisp/debug.el eval.c package.el progmodes/python.el which-func.el
- align.el bytecode.c cc-langs.el cl-macs.el configure.ac dabbrev.el
+Paul Pogonyshev: changed subr.el byte-opt.el bytecomp.el
+ emacs-lisp/debug.el eval.c progmodes/python.el which-func.el align.el
+ bytecode.c cc-langs.el cl-macs.el configure.ac dabbrev.el desktop.el
display.texi eldoc.el elisp-mode.el ert.el ert.texi etags.el
- and 21 other files
+ fns-tests.el and 21 other files
Paul Rankin: changed outline.el
@@ -4603,7 +4342,7 @@ Paul Reilly: changed dgux.h lwlib-Xm.c lwlib.c xlwmenu.c configure.ac
lwlib/Makefile.in mail/rmailmm.el rmailedit.el rmailkwd.el
and 10 other files
-Paul Rivier: changed ada-mode.el mixal-mode.el reftex-vars.el reftex.el
+Paul Rivier: changed mixal-mode.el reftex-vars.el reftex.el
Paul Rubin: changed config.h sun2.h texinfmt.el window.c
@@ -4618,23 +4357,21 @@ Paul Stodghill: changed gnus-agent.el gnus-util.el
Paul Van Der Walt: changed message.el
Paul W. Rankin: changed bookmark.el font-lock.el nsterm.m outline.el
- which-func.el
Pavel Janík: co-wrote eudc-bob.el eudc-export.el eudc-hotlist.el
eudc-vars.el eudc.el eudcb-bbdb.el eudcb-ldap.el eudcb-ph.el
and changed keyboard.c xterm.c COPYING xdisp.c process.c emacs.c lisp.h
menu-bar.el ldap.el make-dist xfns.c buffer.c coding.c eval.c fileio.c
flyspell.el fns.c indent.c Makefile.in callint.c cus-start.el
- and 702 other files
+ and 699 other files
Pavel Kobiakov: wrote flymake-proc.el flymake.el
and changed flymake.texi
Peder O. Klingenberg: wrote dns-mode-tests.el
-and changed dns-mode.el icalendar.el mm-decode.el org.el calc-comb.el
- calc.texi dunnet.el emacsbug.el emacsclient.c eww.el gnus.texi
- misc.texi snake.el subr.el url-http.el url-queue.el url-util.el
- url-vars.el url.texi
+and changed dns-mode.el icalendar.el mm-decode.el calc-comb.el calc.texi
+ dunnet.el emacsbug.el emacsclient.c eww.el gnus.texi misc.texi snake.el
+ subr.el url-http.el url-queue.el url-util.el url-vars.el url.texi
Pedro Andres Aranda Gutierrez: changed cus-face.el xfaces.c
@@ -4663,9 +4400,6 @@ and co-wrote erc-dcc.el
Perry E. Metzger: changed xdisp.c bindings.el buffer.c display.texi
frames.texi modes.texi
-Perry Smith: wrote ruby-ts-mode.el
-and changed eglot.el ruby-ts-mode-tests.el
-
Per Starbäck: changed ispell.el characters.el dired.el gnus-start.el BUGS
apropos.el bibtex.el bytecomp.el charset.h coding.c doctor.el emacs.c
european.el iso-transl.el pcmpl-gnu.el progmodes/python.el replace.el
@@ -4700,8 +4434,7 @@ Peter Kleiweg: wrote ps-mode.el
Peter Liljenberg: wrote elint.el
Peter Münster: changed image-dired.el gnus-delay.el gnus-demon.el
- gnus-group.el gnus-start.el gnus.texi image-dired-external.el
- org-agenda.el org.el
+ gnus-group.el gnus-start.el gnus.texi org-agenda.el org.el
Peter O'Gorman: changed configure.ac frame.h hpux10-20.h termhooks.h
@@ -4759,13 +4492,11 @@ Philip Hudson: changed em-hist.el
Philip Jackson: wrote find-cmd.el ol-irc.el
and changed org-irc.el
-Philip Kaludercic: wrote epa-ks.el package-vc.el
-and changed rcirc.el package.el rcirc.texi vc-git.el vc.el package.texi
- project.el message.el simple.el subr.el vc-hg.el .dir-locals.el
- custom.el gravatar.el outline.el vc-svn.el vc/vc-bzr.el windmove.el
- window.el bytecomp.el custom.texi and 65 other files
-
-Philipp Edelmann: changed eglot.el
+Philip Kaludercic: wrote epa-ks.el
+and changed rcirc.el rcirc.texi project.el gravatar.el outline.el
+ message.el windmove.el css-mode.el epa.texi erc.el fns-tests.el fns.c
+ ispell.el message.texi nnmaildir.el progmodes/python.el recentf.el
+ replace.el sgml-mode.el skeleton.el subr.el timeclock.el
Philippe Schnoebelen: wrote gomoku.el mpuz.el
and changed cl-extra.el
@@ -4787,10 +4518,8 @@ Philipp Stephani: wrote callint-tests.el checkdoc-tests.el
lread-tests.el mouse-tests.el startup-tests.el xt-mouse-tests.el
and changed emacs-module.c emacs-module-tests.el configure.ac json.c
process.c eval.c internals.texi json-tests.el process-tests.el alloc.c
- emacs-module.h.in emacs.c lread.c nsterm.m bytecomp.el lisp.h pdumper.c
- seccomp-filter.c callproc.c cl-macs.el gtkutil.c and 188 other files
-
-Phillip Dixon: changed eglot.el
+ emacs-module.h.in emacs.c lread.c nsterm.m lisp.h pdumper.c bytecomp.el
+ callproc.c seccomp-filter.c gtkutil.c files.el and 185 other files
Phillip Lord: wrote ps-print-tests.el w32-feature.el
and changed build-zips.sh build-dep-zips.py lisp/Makefile.in undo.c
@@ -4802,10 +4531,9 @@ and changed build-zips.sh build-dep-zips.py lisp/Makefile.in undo.c
Phil Sainty: wrote autoload-longlines-mode-tests.el
autoload-major-mode-tests.el autoload-minor-mode-tests.el
so-long-tests-helpers.el so-long-tests.el so-long.el spelling-tests.el
-and changed term.el comint.el buffer.c diff.el goto-addr.el modes.texi
- cl-macs.el derived.el easy-mmode.el ecomplete.el emacs.texi files.texi
- lisp.el misc.texi package.el progmodes/grep.el simple.el subr-x.el
- subword.el trouble.texi xdisp.c
+and changed comint.el term.el diff.el goto-addr.el cl-macs.el derived.el
+ easy-mmode.el emacs.texi files.texi lisp.el misc.texi package.el
+ progmodes/grep.el simple.el subword.el trouble.texi
Phil Sung: changed wdired.el dired.texi follow.el progmodes/python.el
@@ -4831,8 +4559,6 @@ Pieter Schoenmakers: changed TUTORIAL.nl
Pieter Van Oostrum: changed package.el package-tests.el package.texi
shell-tests.el shell.el
-Pieter Van Prooijen: changed xsettings.c ftcrfont.c xsettings.h
-
Piet van Oostrum: changed data.c fileio.c flyspell.el smtpmail.el
Pinku Surana: changed sql.el
@@ -4842,18 +4568,15 @@ Piotr Trojanek: changed gnutls.c process.c
Piotr Zieliński: wrote org-mouse.el
Pip Cet: wrote image-circular-tests.el
-and changed xdisp.c comp.c byte-opt.el fns.c pdumper.c alloc.c
+and changed xdisp.c comp.c fns.c pdumper.c alloc.c byte-opt.el
display.texi ftcrfont.c image.c xterm.c bytecomp-tests.el bytecomp.el
ccl-tests.el ccl.c ccl.el cmds.c comint.el comp-test-funcs.el
- comp-tests.el comp.el composite.c and 29 other files
-
-Platon Pronko: changed tramp.el
+ comp-tests.el comp.el composite.c and 28 other files
-Po Lu: changed xterm.c haikuterm.c haiku_support.cc xfns.c xterm.h
- xwidget.c haiku_support.h haikufns.c nsterm.m pgtkterm.c
- pixel-scroll.el gtkutil.c haiku-win.el x-dnd.el frames.texi
- haikuselect.c xselect.c xwidget.el keyboard.c haikuterm.h xmenu.c
- and 199 other files
+Po Lu: changed xdisp.c anti.texi browse-url.el callproc.c cc-compat.el
+ config.bat esh-cmd.el fileio.c langinfo.h loadup.el mouse.el msdos.c
+ msdos.h nsfns.m nsterm.m process.c sed1v2.inp sed2v2.inp sed3v2.inp
+ sedlibmk.inp tooltip.el xterm.c
Pontus Michael: changed simple.el
@@ -4863,9 +4586,8 @@ Primoz Peterlin: changed TUTORIAL.sl
Protesilaos Stavrou: wrote modus-operandi-theme.el modus-themes.el
modus-vivendi-theme.el
-and changed modus-themes.org eww.el vc-dir.el TUTORIAL.el_GR log-view.el
- modus-themes.texi vc-git.el apropos.el custom.el diff-mode.el
- language/greek.el log-edit.el minibuffer.el perl-mode.el shortdoc.el
+and changed modus-themes.org vc-dir.el log-view.el modus-themes.texi
+ vc-git.el apropos.el custom.el diff-mode.el perl-mode.el shortdoc.el
shr.el vc-cvs.el vc-hg.el vc-svn.el vc/vc-bzr.el
Przemysław Wojnowski: wrote obarray-tests.el sgml-mode-tests.el
@@ -4877,8 +4599,6 @@ Puneeth Chaganti: changed org.texi ox.el org-agenda.el org-capture.el
Qiantan Hong: changed xwidget.c
-Qifan Wang: changed eww.texi shr.el
-
Radon Rosborough: changed package.el custom.texi package.texi startup.el
eval.c lread.c org.texi os.texi xterm.c
@@ -4923,8 +4643,6 @@ and changed libc.el browse-url.el eww.el eww.texi fileio.c info.el
Ramakrishnan M: changed mlm-util.el
-Rami Chowdhury: changed eglot.el
-
Rami Ylimäki: changed efaq.texi term.c tparam.h termchar.h tty-colors.el
xterm.el
@@ -4932,20 +4650,13 @@ Randall Smith: changed dired.el
Randal Schwartz: wrote pp.el
-Randy Taylor: changed build.sh eglot.el batch.sh rust-ts-mode.el
- dockerfile-ts-mode.el c-ts-mode.el go-ts-mode.el cmake-ts-mode.el
- cus-theme.el font-lock.el java-ts-mode.el js.el json-ts-mode.el
- modes.texi progmodes/python.el project.el sh-script.el
- typescript-ts-mode.el yaml-ts-mode.el
-
Ransom Williams: changed files.el
Rasmus Pank Roulund: wrote org-tempo.el
and co-wrote ox-koma-letter.el
and changed ox-latex.el gnus-icalendar.el gnus-notifications.el org.el
- ange-ftp.el gnus-fun.el gnus-sum.el gnus.texi icomplete.el ido.el
- message.texi ob-C.el org-entities.el org-src.el org.texi ox-html.el
- ox.el vc-git.el
+ ange-ftp.el gnus-fun.el gnus-sum.el gnus.texi ido.el message.texi
+ ob-C.el org-entities.el org-src.el org.texi ox-html.el ox.el vc-git.el
Raul Acevedo: changed info.el options.el
@@ -4981,11 +4692,8 @@ and changed vhdl-mode.texi
Reuben Thomas: changed ispell.el whitespace.el dired-x.el files.el
sh-script.el emacsclient-tests.el remember.el README emacsclient.c
- misc.texi msdos.c simple.el INSTALL ada-mode.el ada-xref.el alloc.c
- arc-mode.el authors.el config.bat copyright cperl-mode.el
- and 38 other files
-
-Ricardo Martins: changed eglot.el
+ misc.texi msdos.c simple.el INSTALL alloc.c arc-mode.el authors.el
+ config.bat copyright dired-x.texi dired.el dosfns.c and 35 other files
Ricardo Wurmus: changed xwidget.el xwidget.c configure.ac xwidget.h
@@ -4998,9 +4706,7 @@ Richard Dawe: changed config.in src/Makefile.in
Richard G. Bielawski: changed modes.texi paren.el
-Richard Hansen: changed bindat-tests.el bindat.el whitespace.el
- processes.texi whitespace-tests.el ert-x.el easy-mmode.el
- ert-x-tests.el info-edit.el info.el
+Richard Hansen: changed easy-mmode.el
Richard Hoskins: changed message.el
@@ -5032,7 +4738,7 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-langs.el
and changed files.el keyboard.c simple.el xterm.c xdisp.c rmail.el
fileio.c process.c sysdep.c buffer.c xfns.c window.c subr.el
configure.ac startup.el sendmail.el emacs.c Makefile.in editfns.c
- info.el dired.el and 1338 other files
+ info.el dired.el and 1336 other files
Richard Ryniker: changed sendmail.el
@@ -5079,11 +4785,10 @@ Roberto Rodríguez: changed glossary.texi widget.texi
Robert P. Goldman: changed org.texi ob-exp.el org.el ox-latex.el
Robert Pluim: wrote nsm-tests.el
-and changed configure.ac process.c blocks.awk keymap.el font.c
- network-stream-tests.el processes.texi custom.texi ftfont.c gtkutil.c
- process-tests.el vc-git.el emoji-zwj.awk terminal.c unicode
- char-fold.el gnutls.el keymaps.texi network-stream.el nsm.el nsterm.m
- and 187 other files
+and changed configure.ac process.c blocks.awk network-stream-tests.el
+ font.c processes.texi ftfont.c gtkutil.c vc-git.el process-tests.el
+ custom.texi emoji-zwj.awk gnutls.el network-stream.el nsm.el tramp.texi
+ unicode mml-sec.el nsterm.m xfns.c auth.texi and 140 other files
Robert Thorpe: changed cus-start.el indent.el rmail.texi
@@ -5149,19 +4854,11 @@ Roy Hashimoto: changed mm-view.el
Roy Liu: changed ns-win.el
-R Primus: changed eglot.el
-
Rüdiger Sonderfeld: wrote inotify-tests.el reftex-tests.el
and changed eww.el octave.el shr.el bibtex.el configure.ac
- misc/Makefile.in reftex-vars.el vc-git.el TUTORIAL.de ada-mode.el
- autoinsert.el building.texi bytecomp.el calc-lang.el cc-langs.el
- dired.texi editfns.c emacs.c emacs.texi epa.el erc.el
- and 40 other files
-
-Rudolf Adamkovič: co-wrote quail/slovak.el
-and changed files.el scheme.el
-
-Rudolf Schlatte: changed README.md eglot.el
+ misc/Makefile.in reftex-vars.el vc-git.el TUTORIAL.de autoinsert.el
+ building.texi bytecomp.el calc-lang.el cc-langs.el dired.texi editfns.c
+ emacs.c emacs.texi epa.el erc.el eww.texi and 39 other files
Rui-Tao Dong: changed nnweb.el
@@ -5201,8 +4898,6 @@ Ryo Yoshitake: changed xterm.c frame.c frame.h mac.c macfns.c w32fns.c
Ryszard Kubiak: co-wrote ogonek.el
-R-Zip: changed eglot.el
-
Sacha Chua: wrote erc-pcomplete.el
and changed erc.el org.el erc-button.el org.texi
@@ -5216,15 +4911,13 @@ Samer Masterson: changed esh-arg.el startup.el url-handlers.el CONTRIBUTE
Sam Falkner: changed nntp.el
-Sam James: changed configure.ac info.el
-
Sam Kendall: changed etags.c etags.el
Sam Steingold: wrote gulp.el midnight.el
and changed progmodes/compile.el cl-indent.el simple.el vc-cvs.el vc.el
- mouse.el vc-hg.el files.el gnus-sum.el tex-mode.el etags.el
- font-lock.el sgml-mode.el subr.el window.el ange-ftp.el inf-lisp.el
- message.el package.el rcirc.el vc-git.el and 215 other files
+ mouse.el vc-hg.el etags.el files.el font-lock.el tex-mode.el
+ ange-ftp.el gnus-sum.el message.el sgml-mode.el vc-git.el window.el
+ add-log.el bindings.el bookmark.el bug-reference.el and 186 other files
Samuel Bronson: changed custom.el emacsclient.c keyboard.c
progmodes/grep.el semantic/format.el unexmacosx.c
@@ -5239,8 +4932,6 @@ Samuel Thibault: changed gnu.h sysdep.c term.c
Sanghyuk Suh: changed mac-win.el macterm.c
-Santiago Calandrino: changed gdb-mi.el
-
Santiago Payà i Miralta: changed vc-hg.el
Saroj Thirumalai: changed printing.el
@@ -5296,14 +4987,8 @@ Sean O'Rourke: changed complete.el comint.el dabbrev.el find-func.el
Sean Sieger: changed emacs-lisp-intro.texi
-Sean Whitton: wrote em-elecslash.el em-extpipe-tests.el em-extpipe.el
-and changed vc-git.el project.el bindings.el vc-dispatcher.el
- eshell-tests.el server.el simple.el vc.el window.el .dir-locals.el
- cl-macs.el eshell-tests-helpers.el eshell.texi files.texi ftfont.c
- startup.el subr.el term.el INSTALL buffer.c calc-yank.el
- and 22 other files
-
-Sebastian Fieber: changed gnus-art.el mm-decode.el mm-view.el
+Sean Whitton: changed project.el bindings.el files.texi simple.el
+ killing.texi rect.el repeat.el
Sebastian Freundt: changed nnmaildir.el
@@ -5320,8 +5005,8 @@ and changed ox-publish.el ftfont.c ox-jsinfo.el
Sebastian Tennant: changed desktop.el
-Sebastian Urban: changed display.texi text.texi basic.texi docstyle.texi
- emacs.texi fixit.texi help.el
+Sebastian Urban: changed display.texi basic.texi docstyle.texi emacs.texi
+ fixit.texi text.texi
Sebastian Wiesner: changed bytecomp.el comint.el files.el replace.el
simple.el
@@ -5332,15 +5017,12 @@ Sébastien Gross: changed hideshow.el
Sebastien Kirche: changed mail-extr.el
-Sébastien Miquel: changed font-lock.el
-
Sébastien Vauban: changed org.el org-agenda.el ox-latex.el ob-core.el
org-clock.el ox-ascii.el ox-html.el
Seiji Zenitani: changed nsfns.m frame.c xterm.c PkgInfo document.icns
- find-func.el frame.h help-fns.el macfns.c
- nextstep/templates/Info.plist.in nsfont.m nsterm.m w32fns.c xdisp.c
- xfns.c
+ find-func.el frame.h help-fns.el macfns.c nsfont.m nsterm.m w32fns.c
+ xdisp.c xfns.c
Sen Nagata: wrote crm.el rfc2368.el
@@ -5352,8 +5034,6 @@ Sergei Organov: changed vc.el
Serge Tupchii: changed etags.c
-Sergey Kostyaev: changed eglot.el
-
Sergey Litvinov: co-wrote ob-fortran.el
and changed ob-maxima.el ob-octave.el
@@ -5363,8 +5043,8 @@ Sergey Poznyakoff: changed rmail.el mh-mime.el rmail.texi smtpmail.el
Sergey Trofimov: changed window.el
-Sergey Vinokurov: changed data.c buffer.c emacs-module-tests.el
- emacs-module.c memory-report.el
+Sergey Vinokurov: changed emacs-module-tests.el emacs-module.c
+ memory-report.el
Sergio Durigan Junior: changed eudcb-bbdb.el gdb-mi.el
@@ -5379,8 +5059,6 @@ and changed ert.texi lisp-mode.el programs.texi text.texi
Shanavas M: changed buffer-tests.el
-Sharaf Zaman: changed pgtkterm.c
-
Shaun Johnson: changed ob-tangle.el org-exp-blocks.el
Shawn Boles: changed url-cookie.el
@@ -5406,14 +5084,14 @@ Shinichirou Sugou: changed etags.c
Shitikanth Kashyap: changed progmodes/python.el tabulated-list.el
-Shohei Yoshida: changed configure.ac emacsclient.c
+Shohei Yoshida: changed configure.ac
Shoji Nishimura: changed org.el
Sho Nakatani: changed doc-view.el
-Shuguang Sun: changed dired-aux.el doc-view.el tramp-adb.el
- tramp-archive.el tramp-integration.el
+Shuguang Sun: changed dired-aux.el tramp-adb.el tramp-archive.el
+ tramp-integration.el
Shuhei Kobayashi: wrote hex-util.el hmac-def.el hmac-md5.el
and changed gnus-group.el message.el nnmail.el
@@ -5436,7 +5114,7 @@ and changed css-mode.el project.el json-tests.el json.el scss-mode.scss
sgml-mode.el less-css-mode.less maintaining.texi modes.texi page.el
ring.el rot13.el scheme.el sql.el apropos.el asm-mode.el autoconf.el
autoinsert.el browse-url.el check-declare.el color.el
- and 16 other files
+ and 15 other files
Simona Arizanova: changed help.el
@@ -5460,12 +5138,12 @@ Simon Leinen: changed Makefile.in smtpmail.el Makefile cm.c cm.h hpux9.h
indent.c leim/Makefile.in process.c sc.texi sgml-mode.el term.c vc.el
xfns.c xmenu.c xterm.c
-Simon Marshall: wrote regexp-opt.el
+Simon Marshall: wrote fast-lock.el lazy-lock.el regexp-opt.el
and co-wrote comint.el shell.el
-and changed font-lock.el fast-lock.el lazy-lock.el rmail.el fortran.el
- sendmail.el subr.el dired.el sh-script.el texinfo.el add-log.el
- compile.el outline.el help.el menu-bar.el perl-mode.el ps-print.el
- rmailsum.el bytecomp.el cc-fonts.el data.c and 58 other files
+and changed font-lock.el rmail.el fortran.el sendmail.el subr.el dired.el
+ sh-script.el texinfo.el add-log.el compile.el outline.el help.el
+ menu-bar.el perl-mode.el ps-print.el rmailsum.el bytecomp.el
+ cc-fonts.el data.c faces.el lisp-mode.el and 56 other files
Simon Schubert: changed json.el
@@ -5489,41 +5167,39 @@ Sriram Thaiyar: changed ruby-mode-tests.el ruby-mode.el
Stanislav Shalunov: wrote uce.el
-Stefan Baums: changed misc-lang.el HELLO
-
Stefan Bruda: co-wrote prolog.el
Stefan Guath: changed find-dired.el
Stefan Kangas: wrote bookmark-tests.el cal-julian-tests.el
- delim-col-tests.el emacs-authors-mode.el image-tests.el life-tests.el
- loadhist-tests.el lunar-tests.el mail-utils-tests.el misc-tests.el
- morse-tests.el paragraphs-tests.el password-cache-tests.el qp-tests.el
+ delim-col-tests.el etc-authors-mode.el life-tests.el loadhist-tests.el
+ lunar-tests.el mail-utils-tests.el misc-tests.el morse-tests.el
+ netrc-tests.el paragraphs-tests.el password-cache-tests.el qp-tests.el
rfc2045-tests.el sasl-cram-tests.el sasl-tests.el saveplace-tests.el
studly-tests.el tabify-tests.el time-tests.el timezone-tests.el
- underline-tests.el uudecode-tests.el wallpaper.el warnings-tests.el
+ underline-tests.el uudecode-tests.el warnings-tests.el
and co-wrote help-tests.el keymap-tests.el
-and changed image-dired.el package.el efaq.texi cperl-mode.el subr.el
- checkdoc.el help.el bookmark.el simple.el dired.el files.el dired-x.el
- gnus.texi keymap.c image-mode.el erc.el ediff-util.el speedbar.el
- browse-url.el bytecomp-tests.el bytecomp.el and 1657 other files
+and changed efaq.texi checkdoc.el package.el cperl-mode.el bookmark.el
+ help.el keymap.c subr.el simple.el erc.el ediff-util.el idlwave.el
+ time.el bytecomp-tests.el comp.el emacs-lisp-intro.texi speedbar.el
+ bytecomp.el edebug.el flyspell.el ibuffer.el and 1352 other files
Stefan Merten: co-wrote rst.el
Stefan Monnier: wrote bibtex-style.el bytecomp-tests.el
cl-generic-tests.el cl-generic.el cl-preloaded.el cl-print.el cl.el
- css-mode.el cursor-sensor.el cvs-status.el diff-mode.el
- external-completion.el fileloop.el find-func-tests.el footnote-tests.el
- gv.el inline.el lisp-mnt-tests.el lisp-tests.el log-edit.el log-view.el
- macroexp-tests.el minibuffer-tests.el minibuffer.el mpc.el nadvice.el
- oclosure.el pcase.el pcvs-defs.el pcvs-info.el pcvs-parse.el
- pcvs-util.el radix-tree.el regexp-opt-tests.el reveal.el smerge-mode.el
- smie.el subword-tests.el vc-mtn.el
+ css-mode.el cursor-sensor.el cvs-status.el diff-mode.el fileloop.el
+ find-func-tests.el footnote-tests.el gv.el inline.el lisp-mnt-tests.el
+ lisp-tests.el log-edit.el log-view.el macroexp-tests.el
+ minibuffer-tests.el minibuffer.el mpc.el nadvice.el pcase.el
+ pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el radix-tree.el
+ regexp-opt-tests.el reveal.el smerge-mode.el smie.el subword-tests.el
+ vc-mtn.el
and co-wrote font-lock.el gitmerge.el pcvs.el
and changed subr.el simple.el keyboard.c bytecomp.el cl-macs.el files.el
- lisp.h vc.el xdisp.c eval.c alloc.c buffer.c sh-script.el
- progmodes/compile.el tex-mode.el keymap.c window.c help-fns.el lread.c
- lisp-mode.el newcomment.el and 1660 other files
+ lisp.h vc.el xdisp.c alloc.c eval.c sh-script.el progmodes/compile.el
+ keymap.c buffer.c window.c tex-mode.el lisp-mode.el newcomment.el
+ help-fns.el lread.c and 1612 other files
Stefano Facchini: changed gtkutil.c
@@ -5543,9 +5219,9 @@ Steinar Bang: changed gnus-setup.el imap.el
Štěpán Němec: changed loadhist.el files.el gnus-sum.el loading.texi
subr.el INSTALL calc-ext.el checkdoc.el cl.texi comint.el edebug.texi
- ediff-init.el elisp-mode.el emacs-lisp/cl-lib.el find-func.el
- fixit.texi font-lock.el functions.texi gnus-art.el gnus.texi
- help-fns.el and 23 other files
+ ediff-init.el emacs-lisp/cl-lib.el find-func.el fixit.texi font-lock.el
+ functions.texi gnus-art.el gnus.texi help-fns.el help.el
+ and 22 other files
Stéphane Boucher: changed replace.el
@@ -5556,11 +5232,11 @@ Stephen A. Wood: changed fortran.el
Stephen Berman: wrote todo-mode-tests.el
and co-wrote todo-mode.el
-and changed wdired.el todo-mode.texi wdired-tests.el diary-lib.el
- dired.el dired-tests.el doc-view.el files.el info.el minibuffer.el
- outline.el todo-test-1.todo allout.el eww.el find-dired.el frames.texi
- hl-line.el menu-bar.el mouse.el otodo-mode.el subr.el
- and 63 other files
+and changed wdired.el todo-mode.texi diary-lib.el dired.el
+ wdired-tests.el dired-tests.el doc-view.el files.el info.el
+ minibuffer.el todo-test-1.todo eww.el frames.texi hl-line.el
+ menu-bar.el mouse.el otodo-mode.el subr.el .gitattributes TUTORIAL
+ allout.el and 59 other files
Stephen C. Gilardi: changed configure.ac
@@ -5574,20 +5250,20 @@ and changed diary-lib.el octave.el org-agenda.el locate.el replace.el
Stephen Gildea: wrote refcard.tex
and co-wrote mh-funcs.el mh-search.el
-and changed time-stamp.el time-stamp-tests.el mh-e.el mh-utils-tests.el
- mh-junk.el mh-utils.el mh-comp.el mh-show.el mh-e.texi files.el
- mh-customize.el mh-folder.el mh-scan.el mh-xface-tests.el
- test-all-mh-variants.sh backups.texi comp-tests.el compile.texi
- dns-mode.el fileio.c files.texi and 20 other files
+and changed time-stamp.el time-stamp-tests.el mh-e.el mh-junk.el
+ mh-comp.el mh-utils-tests.el mh-utils.el mh-e.texi mh-show.el files.el
+ mh-customize.el mh-xface-tests.el backups.texi compile.texi dns-mode.el
+ fileio.c files.texi finder.el fortran.el goto-addr.el iso8601-tests.el
+ and 17 other files
Stephen J. Turnbull: changed ediff-init.el strings.texi subr.el
Stephen Leake: wrote elisp-mode-tests.el
-and changed ada-mode.el ada-xref.el elisp-mode.el xref.el eglot.el
- window.el mode-local.el project.el CONTRIBUTE ada-prj.el vc-mtn.el
- ada-stmt.el cedet-global.el ede/generic.el simple.el autoload.el
- bytecomp.el cl-generic.el ede/locate.el files.texi functions.texi
- and 36 other files
+and changed elisp-mode.el xref.el window.el mode-local.el CONTRIBUTE
+ project.el vc-mtn.el ada-stmt.el cedet-global.el ede/generic.el
+ simple.el autoload.el bytecomp.el cl-generic.el ede/locate.el
+ files.texi functions.texi package.el progmodes/grep.el windows.texi
+ INSTALL.REPO and 32 other files
Stephen Pegoraro: changed xterm.c
@@ -5619,13 +5295,10 @@ Steven Tamm: changed macterm.c mac.c macfns.c configure.ac mac-win.el
src/Makefile.in Makefile.in config.h config.in dispnew.c eval.c
fileio.c fns.c generic-x.el image.c and 4 other files
-Steven Vanzyl: changed README.md eglot.el
-
Steve Nygard: changed unexnext.c
Steve Purcell: wrote less-css-mode.el
-and changed eglot.el README.md package.el eglot-tests.el nnimap.el
- nsterm.m ruby-mode.el sql.el
+and changed package.el nnimap.el nsterm.m ruby-mode.el sql.el
Steve Scott: changed rcirc.el
@@ -5690,8 +5363,6 @@ and changed indian.el devanagari.el ind-util.el devan-util.el
lisp/Makefile.in malayalam.el mlm-util.el mule-conf.el tamil.el
tml-util.el
-Taiju Higashi: changed configure.ac ja-dic-cnv.el leim/Makefile.in
-
Takaaki Ota: wrote textmodes/table.el
and changed appt.el dired.c etags.c ldap.el progmodes/compile.el
recentf.el replace.el subr.el w32bdf.c
@@ -5715,8 +5386,6 @@ Tak Kunihiro: wrote pixel-scroll.el
and changed frames.texi mouse.el mwheel.el dired.el lists.texi ns-win.el
subr.el
-Taniguchi Kohei: changed README.md eglot.el
-
Tao Fang: changed url-http.el
Taro Kawagishi: wrote md4.el ntlm.el sasl-ntlm.el
@@ -5727,8 +5396,8 @@ and co-wrote ol-gnus.el
and changed bug-reference.el reftex-vars.el tex-mode.el browse-url.el
gnus.texi reftex-cite.el tsdh-dark-theme.el tsdh-light-theme.el
gnus-sum.el maintaining.texi file-notify-tests.el gnus-art.el misc.texi
- reftex.el org-gnus.el prog-mode.el simple.el subword.el dired.el
- image-mode.el json.el and 105 other files
+ reftex.el org-gnus.el prog-mode.el subword.el dired.el image-mode.el
+ json.el lisp-mode.el and 99 other files
Tatsuya Ichikawa: changed gnus-agent.el gnus-cache.el
@@ -5768,12 +5437,8 @@ Thamer Mahmoud: changed arabic.el
Theodore Jump: changed makefile.nt makefile.def w32-win.el w32faces.c
-Theodor Thornhill: changed typescript-ts-mode.el java-ts-mode.el
- c-ts-mode.el eglot.el js.el css-mode.el project.el csharp-mode.el
- json-ts-mode.el treesit.el c-ts-common.el eglot-tests.el EGLOT-NEWS
- README.md c-ts-mode-tests.el compile-tests.el indent-bsd.erts
- indent.erts maintaining.texi mwheel.el ruby-ts-mode.el
- and 4 other files
+Theodor Thornhill: changed project.el css-mode.el maintaining.texi
+ mwheel.el shell.el tutorial.el
Theresa O'Connor: wrote json.el
and changed erc.el erc-viper.el erc-log.el erc-track.el viper.el
@@ -5788,7 +5453,7 @@ and co-wrote hideshow.el
and changed ewoc.el vc.el info.el processes.texi zone.el lisp-mode.el
scheme.el text.texi vc-rcs.el display.texi fileio.c files.el vc-git.el
TUTORIAL.it bindat.el cc-vars.el configure.ac dcl-mode.el diff-mode.el
- dired.el elisp.texi and 169 other files
+ dired.el elisp.texi and 168 other files
Thierry Banel: co-wrote ob-C.el
and changed calc-arith.el
@@ -5798,8 +5463,8 @@ Thierry Emery: changed kinsoku.el timezone.el url-http.el wid-edit.el
Thierry Volpiatto: changed bookmark.el files.el dired-aux.el
eshell/eshell.el gnus-sum.el keyboard.c net-utils.el package.el
tramp.el eldoc.el files.texi image-mode.el info.el man.el minibuffer.el
- pcmpl-gnu.el subr.el use-package.el winner.el woman.el avoid.el
- and 18 other files
+ pcmpl-gnu.el subr.el winner.el woman.el avoid.el commands.texi
+ and 16 other files
Thomas Bach: changed wisent/python.el
@@ -5815,11 +5480,11 @@ Thomas Dorner: changed ange-ftp.el
Thomas Dye: changed org.texi org-bibtex.el ob-R.el org.el
Thomas Fitzsimmons: wrote soap-client.el
-and changed soap-inspect.el eudc.el eudc-vars.el eudc.texi ldap.el
- ntlm.el url-http.el eudcb-bbdb.el eudcb-ldap.el eudc-bob.el
- eudc-tests.el ntlm-tests.el eudc-export.el eudcb-ph.el package.el
- README authinfo bbdb diary-lib.el display.texi eudc-capf.el
- and 8 other files
+and changed soap-inspect.el ldap.el eudc.texi eudc-vars.el eudc.el
+ ntlm.el url-http.el eudcb-bbdb.el eudcb-ldap.el ntlm-tests.el
+ eudc-bob.el eudc-export.el eudcb-ph.el package.el README authinfo
+ diary-lib.el display.texi eudc-hotlist.el eudcb-macos-contacts.el
+ icalendar.el and 3 other files
Thomas Horsley: changed cxux-crt0.s cxux.h cxux7.h emacs.c nh3000.h
nh4000.h simple.el sysdep.c xterm.c
@@ -5843,7 +5508,8 @@ Thomas Steffen: co-wrote deuglify.el
Thomas W Murphy: changed outline.el
-Thomas Wurgler: changed emacs-lock.el subr.el
+Thomas Wurgler: wrote old-emacs-lock.el
+and changed emacs-lock.el subr.el
Thor Kristoffersen: changed nntp.el
@@ -5880,11 +5546,7 @@ Timo Myyrä: changed battery.el configure.ac english.el european.el
Timo Savola: changed emacs.c gtkutil.c startup.el x-win.el xfns.c xterm.c
xterm.h
-Timo Taipalus: changed display.texi image.c image.el
-
-Timothee Denizou: changed tetris.el
-
-Tim Ruffing: changed emacs.service term.c
+Tim Ruffing: changed emacs.service
Tim Van Holder: changed emacsclient.c Makefile.in configure.ac
progmodes/compile.el which-func.el
@@ -5893,13 +5555,12 @@ Tino Calancha: wrote buff-menu-tests.el ediff-ptch-tests.el
em-ls-tests.el ffap-tests.el hi-lock-tests.el ls-lisp-tests.el
register-tests.el rmc-tests.el
and changed ibuffer.el dired.el ibuf-ext.el dired-tests.el replace.el
- dired-aux.el simple.el replace-tests.el subr.el dired.texi files.el
- ibuf-macs.el ibuffer-tests.el ls-lisp.el cl-macs.el diff-mode.el
- cl-seq.el dired-x.el display.texi ediff-ptch.el em-ls.el
- and 116 other files
+ dired-aux.el simple.el replace-tests.el dired.texi files.el
+ ibuf-macs.el subr.el ibuffer-tests.el ls-lisp.el cl-macs.el
+ diff-mode.el cl-seq.el dired-x.el ediff-ptch.el em-ls.el files-tests.el
+ and 113 other files
-Titus von der Malsburg: changed window.el display.texi simple.el
- windows.texi
+Titus von der Malsburg: changed simple.el window.el
Tobias Bading: changed gtkutil.c progmodes/compile.el xfns.c
@@ -5909,7 +5570,7 @@ Tobias Gerdin: changed xref.el
Tobias Ringström: changed etags.c
-Tobias Rittweiler: changed eglot.el xref-tests.el xref.el eglot-tests.el
+Tobias Rittweiler: changed xref-tests.el xref.el
Tobias Zawada: changed find-func.el hideshow.el wid-edit.el
@@ -5932,21 +5593,19 @@ Tomas Nordin: changed progmodes/python.el
Tomasz Gajewski: changed cpp-root.el
-Tomasz Hołubowicz: changed EGLOT-NEWS README.md eglot.el
-
Tomasz Konojacki: changed perl-mode.el
Tom Breton: changed autoinsert.el cus-edit.el gnus-agent.el lread.c
Tom Fitzhenry: changed vc-hg.el
-Tom Gillespie: changed files.el lisp-mode.el
+Tom Gillespie: changed files.el
Tom Hageman: changed etags.c
Tom Houlder: wrote mantemp.el
-Tom Levy: changed cl-generic.el gv.el sequences.texi simple.el
+Tom Levy: changed sequences.texi
Tommi Komulainen: changed progmodes/python.el
@@ -5978,7 +5637,7 @@ and co-wrote package.el tcl.el
and changed data.c lisp.h js.el buffer.c data-tests.el mhtml-mode.el
alloc.c css-mode.el js-tests.el process.c window.c bytecode.c editfns.c
files.el fns.c keyboard.c keymap.c lread.c makefile.el xfns.c cmds.c
- and 210 other files
+ and 208 other files
Tom Willemse: changed elec-pair.el package.el perl-mode.el prog-mode.el
progmodes/python.el simple.el
@@ -5990,8 +5649,6 @@ Torbjörn Axelsson: changed options.el
Torbjörn Einarsson: wrote progmodes/f90.el
and changed f90.el
-Tor Kringeland: changed iso-transl.el
-
Torsten Anders: changed ox-beamer.el
Torsten Bronger: changed latin-ltx.el
@@ -6006,12 +5663,9 @@ Toru Tsuneyoshi: changed ange-ftp.el buff-menu.el cus-start.el fileio.c
Toshiaki Nomura: changed uxpds.h
-Travis Jeffery: changed nextstep/templates/Info.plist.in
-
Trent W. Buck: changed rcirc.el remember.el rx.el
-Trevor Murphy: changed eglot.el find-dired.el gnus.texi nnimap.el org.el
- window.el
+Trevor Murphy: changed find-dired.el gnus.texi nnimap.el org.el window.el
Trevor Spiteri: changed progmodes/grep.el
@@ -6019,8 +5673,6 @@ Trey Jackson: changed spam-stat.el
Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el
-Troels Henriksen: changed EGLOT-NEWS README.md eglot.el
-
Troels Nielsen: changed process.c buffer.c progmodes/compile.el window.el
Troy Hinckley: changed progmodes/compile.el
@@ -6060,11 +5712,11 @@ and changed org-gnus.el smime.el
Ulrich Leodolter: changed w32proc.c
-Ulrich Müller: changed configure.ac calc-units.el
- emacsclient-mail.desktop lib-src/Makefile.in src/Makefile.in version.el
- Makefile.in doctor.el emacs.1 files.el gamegrid.el gud.el server.el
- ChgPane.c ChgSel.c HELLO INSTALL XMakeAssoc.c authors.el bytecomp.el
- case-table.el and 44 other files
+Ulrich Müller: changed configure.ac calc-units.el lib-src/Makefile.in
+ src/Makefile.in version.el doctor.el emacs.1 files.el gamegrid.el
+ gud.el server.el ChgPane.c ChgSel.c HELLO INSTALL Makefile.in
+ XMakeAssoc.c authors.el bytecomp.el case-table.el configure
+ and 40 other files
Ulrich Neumerkel: changed xterm.c
@@ -6075,8 +5727,6 @@ and changed files.el
Ury Marshak: changed nsfns.m
-Usami Kenta: changed eglot.el htmlfontify.el
-
Utkarsh Singh: changed em-script.el files.el outline.el tex-mode.el
vc-git.el window.el
@@ -6088,7 +5738,7 @@ Vagn Johansen: changed gnus-cache.el vc-svn.el
Vaidheeswaran C: changed help-mode.el tabulated-list.el
-Väinö Järvelä: changed eglot.el nsfns.m
+Väinö Järvelä: changed nsfns.m
Valentin Gatien-Baron: changed emacs-module.c
@@ -6133,14 +5783,10 @@ and changed ses.el ses.texi 5x5.el calc-alg.el calc-vec.el calc.texi
package.el progmodes/compile.el recentf.el reftex-parse.el
and 3 other files
-Vincent Bernat: changed gnus-int.el nnimap.el xsettings.c
+Vincent Bernat: changed gnus-int.el nnimap.el
Vincent Del Vecchio: changed info.el mh-utils.el
-Vincenzo Pupillo: changed java-ts-mode.el
-
-Vince Salvino: changed msdos.texi w32.c w32fns.c
-
Vinicius Jose Latorre: wrote delim-col.el ebnf-abn.el ebnf-bnf.el
ebnf-dtd.el ebnf-ebx.el ebnf-iso.el ebnf-otz.el ebnf-yac.el ebnf2ps.el
printing.el whitespace.el
@@ -6150,6 +5796,8 @@ and changed ps-prin1.ps ps-bdf.el ps-prin0.ps blank-mode.el ps-prin3.ps
easymenu.el loading.texi menu-bar.el misc.texi progmodes/compile.el
ps-print-def.el ps-vars.el
+Visuwesh M: changed dired-aux.el
+
Vitalie Spinu: changed comint.el eieio-base.el message.el ob-R.el
ob-core.el ob-tangle.el subr.el
@@ -6168,10 +5816,10 @@ Vladimir Kazanov: changed java.srt
Vladimir Lomov: changed ox-html.el
-Vladimir Nikishkin: changed scm.el textmodes/table.el
+Vladimir Nikishkin: changed scm.el
Vladimir Panteleev: wrote bat-mode-tests.el
-and changed eglot.el ert.texi xselect.c bat-mode.el
+and changed ert.texi bat-mode.el
Vladimir Volovich: changed smime.el
@@ -6179,8 +5827,6 @@ Volker Sobek: changed programs.texi
Walter C. Pelissero: changed browse-url.el url-methods.el
-Wamm K. D: changed hierarchy.el hierarchy-tests.el
-
Wang Diancheng: changed gdb-mi.el nnml.el
Warren Lynn: changed tramp-sh.el
@@ -6237,8 +5883,8 @@ William Sommerfeld: wrote emacsclient.c scribe.el server.el
William Stevenson: wrote adwaita-theme.el
and changed artist.el
-William Xu: changed dired.el arc-mode.el gcc.el hideif.el nsterm.m
- outline.el url.el webjump.el xref.el
+William Xu: changed arc-mode.el gcc.el hideif.el nsterm.m outline.el
+ url.el webjump.el xref.el
Will Mengarini: wrote repeat.el
@@ -6291,11 +5937,9 @@ W. Trevor King: changed xterm.el
Xavier Maillard: changed gnus-faq.texi gnus-score.el mh-utils.el spam.el
-Xi Lu: changed etags.c htmlfontify.el ruby-mode.el CTAGS.good_crlf
- CTAGS.good_update Makefile TUTORIAL.cn crlf eww.el shortdoc.el
- tramp-sh.el
+Xi Lu: changed etags.c htmlfontify.el ruby-mode.el tramp-sh.el
-Xu Chunyang: changed eglot.el eww.el dom.el gud.el netrc.el
+Xu Chunyang: changed eww.el dom.el gud.el netrc.el
Xue Fuqiao: changed display.texi emacs-lisp-intro.texi files.texi
maintaining.texi text.texi windows.texi nonascii.texi frames.texi
@@ -6309,9 +5953,9 @@ Yair F: changed hebrew.el
Yamamoto Mitsuharu: wrote uvs.el
and changed macterm.c macfns.c mac-win.el xterm.c mac.c macterm.h image.c
- macmenu.c macgui.h xdisp.c ftcrfont.c ftfont.c xfns.c keyboard.c
+ macmenu.c macgui.h xdisp.c ftfont.c xfns.c ftcrfont.c keyboard.c
macselect.c macfont.m configure.ac w32term.c dispextern.h
- src/Makefile.in unexmacosx.c and 113 other files
+ src/Makefile.in unexmacosx.c and 111 other files
Yan Gajdos: changed vc-git.el
@@ -6319,8 +5963,6 @@ Yann Dirson: changed imenu.el
Yann Hodique: changed ox-publish.el package.el rcirc.el
-Yaraslau Tamashevich: changed faces.el
-
Yasuhiro Kimura: changed schemas.xml japan-util.el
Yasuoka Masahiko: changed configure.ac
@@ -6332,13 +5974,9 @@ Yavor Doganov: changed configure.ac Makefile.in emacs.1 etags.1 make-dist
Ye Qianchuan: changed descr-text.el
-Yichao Yu: changed pgtkim.c pgtkterm.c pgtkterm.h xfns.c xterm.c
-
-Yikai Zhao: changed memory-report.el sh-script.el
-
-Yilkal Argaw: changed manoj-dark-theme.el
+Yichao Yu: changed xfns.c xterm.c
-Yoav Marco: changed sqlite-mode.el
+Yikai Zhao: changed memory-report.el
Yoichi Nakayama: changed browse-url.el finder.el man.el rfc2368.el
@@ -6357,11 +5995,9 @@ Yoshinari Nomura: changed ox-html.el ox.el
Yoshinori Koseki: wrote iimage.el
and changed fontset.el message.el nnheader.el nnmail.el
-Yuan Fu: changed treesit.el treesit.c c-ts-mode.el parsing.texi
- progmodes/python.el modes.texi js.el treesit-tests.el indent.erts
- typescript-ts-mode.el css-mode.el treesit.h configure.ac
- java-ts-mode.el print.c sh-script.el c-ts-common.el gdb-mi.el
- rust-ts-mode.el go-ts-mode.el starter-guide and 53 other files
+Yuan Fu: changed gdb-mi.el building.texi doc-view.el outline.el
+ simple-tests.el cus-start.el display.texi gud.el simple.el text.texi
+ window.el xdisp.c
Yuanle Song: changed rng-xsd.el
@@ -6369,11 +6005,13 @@ Yuchen Pei: changed calendar.texi diary-lib.el icalendar-tests.el
Yue Daian: wrote cl-font-lock.el
+Yuga Ego: changed custom.texi emacs-lisp-intro.texi
+
Yu-ji Hosokawa: changed README.W32
Yukihiro Matsumoto: co-wrote ruby-mode.el
-Yuri D'Elia: changed mouse.el message.el package.el
+Yuri D'Elia: changed message.el package.el
Yuri Karaban: changed pop3.el
@@ -6383,28 +6021,19 @@ Yuri Shtil: changed etags.c
Yuriy Vostrikov: changed vc-git.el
-Yury Kholodkov: changed warnings.el
-
Yutaka Niibe: changed indent.c xdisp.c configure.ac dispnew.c sysdep.c
Makefile.in config.in dired.el emacs.c fill.el fns.c gmalloc.c
gnu-linux.h indent.h process.c simple.el src/Makefile.in term.c
window.c
-Yuuki Harano: changed pgtkterm.c pgtkfns.c pgtkterm.h gtkutil.c
- pgtk-win.el pgtkselect.c configure.ac frame.c image.c pgtkmenu.c
- emacs.c alloc.c emacsgtkfixed.c frame.h gtkutil.h pgtkgui.h xdisp.c
- xwidget.c font.h org.gnu.emacs.defaults.gschema.xml pgtkim.c
- and 39 other files
+Yuuki Harano: changed nsterm.m
Yuya Nishihara: changed vc-hooks.el
-Yuzhana Ego: changed custom.texi diff-mode.el emacs-lisp-intro.texi
- info.el
-
Yves Baumes: changed package.el
-Zachary Kanfer: changed org.el cus-edit.el files.el files.texi keyboard.c
- newcomment.el simple.el
+Zachary Kanfer: changed org.el cus-edit.el keyboard.c newcomment.el
+ simple.el
Zajcev Evgeny: changed display.texi image.c battery.el buffer.c fileio.c
lread.c svg.el window.el xdisp.c
@@ -6431,14 +6060,6 @@ Zoran Milojevic: changed avoid.el
Йордан Миладинов: changed cyrillic.el
-समीर सिंह Sameer Singh: wrote indonesian.el misc-lang.el philippine.el
-and changed fontset.el HELLO language/indian.el quail/indian.el loadup.el
- BidiBrackets.txt BidiMirroring.txt Blocks.txt IVD_Sequences.txt
- IdnaMappingTable.txt NormalizationTest.txt PropertyValueAliases.txt
- ScriptExtensions.txt Scripts.txt SpecialCasing.txt UnicodeData.txt
- characters.el confusables.txt copyright.html emoji-data.txt
- emoji-sequences.txt and 7 other files
-
উৎসব রায়: changed quail/indian.el
Local Variables:
diff --git a/etc/DEBUG b/etc/DEBUG
index cfa033d6c0c..c4f0852abb3 100644
--- a/etc/DEBUG
+++ b/etc/DEBUG
@@ -1007,6 +1007,28 @@ Address sanitization is incompatible with undefined-behavior
sanitization, unfortunately. Address sanitization is also
incompatible with the --with-dumping=unexec option of 'configure'.
+*** Address poisoning/unpoisoning
+
+When compiled with address sanitization, Emacs will also try to mark
+dead/free lisp objects as poisoned, forbidding them from being
+accessed without being unpoisoned first. This adds an extra layer
+of checking with objects in internal free lists, which may otherwise
+evade traditional use-after-free checks. To disable this, add
+'allow_user_poisoning=0' to ASAN_OPTIONS, or build Emacs with
+'-DGC_ASAN_POISON_OBJECTS=0' in CFLAGS.
+
+While using GDB, memory addresses can be inspected by using helper
+functions additionally provided by the ASan library:
+
+ (gdb) call __asan_describe_address(ptr)
+
+To check whether an address range is poisoned or not, use:
+
+ (gdb) call __asan_region_is_poisoned(ptr, 8)
+
+Additional functions can be found in the header
+'sanitizer/asan_interface.h' in your compiler's headers directory.
+
** Running Emacs under Valgrind
Valgrind <https://valgrind.org/> is free software that can be useful
diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS
index d10412afd33..7369b3bf545 100644
--- a/etc/EGLOT-NEWS
+++ b/etc/EGLOT-NEWS
@@ -12,13 +12,66 @@ This file is about changes in Eglot, the Emacs client for LSP
(Language Server Protocol) distributed with GNU Emacs since Emacs
version 29.1 and with GNU ELPA since 2018.
-Note: references to Eglot issues are presented as "github#nnnn".
-This refers to https://github.com/joaotavora/eglot/issues/.
-That is, to look up issue github#1234, go to
+Note: references to some Eglot issues are presented as "github#nnnn".
+This refers to https://github.com/joaotavora/eglot/issues/. That is,
+to look up issue github#1234, go to
https://github.com/joaotavora/eglot/issues/1234.
-* Changes in Eglot bundled with Emacs 29
+* Changes in Eglot 1.14 (3/4/2023)
+
+** Faster, more responsive completion
+
+Eglot takes advantage of LSP's "isIncomplete" flag in responses to
+completion requests to drive new completion-caching mechanism for the
+duration of each completion session. Once a full set of completions
+is obtained for a given position, the server needn't be contacted in
+many scenarios, resulting in significantly less communication
+overhead. This works with the popular Company package and stock
+completion-at-point interfaces.
+
+A variable 'eglot-cache-session-completions', t by default, controls
+this. The mechanism was tested with ccls, jdtls, pylsp, golsp and
+clangd. Notably, the C/C++ language server Clangd version 15 has a
+bug in its "isIcomplete" flag (it is fixed in later versions). If you
+run into problems, disable this mechanism like so:
+
+(add-hook 'c-common-mode-hook
+ (lambda () (setq-local eglot-cache-session-completions nil)))
+
+** At-point documentation less obtrusive in echo area
+
+Eglot takes advantage of new features of ElDoc to separate short
+documentation strings from large ones, sending the former to be shown in
+the ElDoc's echo area and the latter to be shown in other outlets,
+such as the *eldoc* buffer obtainable with 'C-h .'.
+
+** New variable 'eglot-prefer-plaintext'
+
+Customize this to t to opt-in to docstrings in plain text instead of
+Markdown.
+
+(bug#61373)
+
+** Progress indicators inhabit the mode-line by default
+
+To switch to the echo area, customize 'eglot-report-progress' to
+'messages'. To switch off progress reporting completely, set to nil.
+
+** Snippet support is easier to enable
+
+The user needn't manually activate 'yas-minor-mode' or
+'yas-global-mode'. If YASnippet is installed and the server supports
+snippets, it is used automatically, unless the symbol 'yasnippet' has
+been added to 'eglot-stay-out-of'.
+
+
+* Changes in Eglot 1.13 (15/03/2023)
+
+** ELPA installations on Emacs 26.3 are supported again.
+
+
+* Changes in Eglot 1.12 (13/03/2023)
** LSP inlay hints are now supported.
Inlay hints are small text annotations not unlike diagnostics, but
@@ -328,7 +381,7 @@ This disconnects the server after last managed buffer is killed.
(github#217, github#270)
-** Completion support support has been fixed.
+** Completion support has been fixed.
Among other things, consider LSP's "filterText" cookies, which enable
a kind of poor-man's flex-matching for some backends.
diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS
index 434bfab94e9..8f1b89f268b 100644
--- a/etc/ERC-NEWS
+++ b/etc/ERC-NEWS
@@ -12,6 +12,183 @@ extensible IRC (Internet Relay Chat) client distributed with
GNU Emacs since Emacs version 22.1.
+* Changes in ERC 5.6
+
+** Module 'keep-place' now offers a visual indicator.
+Remember your place in ERC buffers a bit more easily while retaining
+the freedom to look around. Optionally sync the indicator to any
+progress made when you haven't yet caught up to the live stream. See
+options 'erc-keep-place-indicator-style' and friends and new module
+'keep-place-indicator', which for now must be added manually to
+'erc-modules'.
+
+** Module 'fill' now offers a style based on 'visual-line-mode'.
+This fill style mimics the "hanging indent" look of 'erc-fill-static'
+and provides some movement and editing commands to optionally tame the
+less familiar aspects of 'visual-line' behavior. An interactive
+helper called 'erc-fill-wrap-nudge' allows for dynamic "refilling" of
+buffers on the fly. Set 'erc-fill-function' to 'erc-fill-wrap' to get
+started.
+
+** A unified interactive entry point.
+New users are often dismayed to discover that M-x ERC doesn't connect
+to its default network, Libera.Chat, over TLS. Though perhaps a
+decade overdue, this is no longer the case. Other UX improvements in
+this area aim to make the process of connecting interactively slightly
+more streamlined and less repetitive, even for veteran users.
+
+** New buffer-display option 'erc-interactive-display'.
+A point of friction for new users and one only just introduced with
+ERC 5.5 has been the lack of visual feedback when first connecting via
+M-x erc. As explained below in the news for 5.5, the discovery of a
+security issue led to new ERC buffers being "buried" on creation. On
+further reflection, this was judged to have been an overcorrection in
+the case of interactive invocations, hence the new option
+'erc-interactive-display', which is set to 'buffer' (i.e., "take me
+there") by default. Accompanying this addition are "display"-suffixed
+aliases for related options 'erc-join-buffer' and 'erc-auto-query',
+which users have reported as being difficult to discover and remember.
+
+** Setting a module's mode variable via Customize earns a warning.
+Trying and failing to activate a module via its minor mode's Custom
+widget has been an age-old annoyance for new users. Previously
+ineffective, this method now actually works, but it also admonishes
+users to edit the 'erc-modules' widget instead.
+
+** The option 'erc-timestamp-use-align-to' is more versatile.
+While this option has always offered to right-align stamps via the
+'display' text property, it's now more effective at doing so when set
+to a number indicating an offset from the right edge. And when set to
+the symbol 'margin', it displays stamps in the right margin, although,
+at the moment, this is mostly intended for use by other modules, such
+as 'fill-wrap', described above. For both these variants, users of
+the 'log' module may want to customize 'erc-log-filter-function' to
+'erc-stamp-prefix-log-filter' to avoid ragged right-hand stamps
+appearing in their saved logs.
+
+** Smarter reconnect handling for users on the move.
+ERC now offers a new, experimental reconnect strategy in the function
+'erc-server-delayed-check-reconnect', which tests for underlying
+connectivity before attempting to reconnect in earnest. See options
+'erc-server-reconnect-function' and 'erc-nickname-in-use-functions' to
+get started.
+
+** Easily constrain all ERC-related business to a dedicated frame.
+The option 'erc-reuse-frames' can now be set to 'displayed', which
+tells ERC to show new buffers in frames already occupied by buffers
+from the same connection. This customization depends on the option
+'erc-buffer-display' (formerly 'erc-join-buffer') being set to
+'frame'. If you find the name 'displayed' unhelpful, please suggest
+an alternative by writing to the mailing list.
+
+** Some keybindings are now set by modules rather than their libraries.
+To put it another way, simply loading a built-in module's library no
+longer modifies 'erc-mode-map'. Instead, modifications occur during
+module setup. This should not impact most user configs since ERC
+doesn't bother with keys already taken and only removes bindings it's
+previously created. Note that while all affected bindings still
+reside in 'erc-mode-map', future built-in modules will use their own
+minor-mode maps, and new third-party modules should do the same.
+
+** The option 'erc-timestamp-format-right' has been deprecated.
+Having to account for this option prevented other ERC modules from
+easily determining what right-hand stamps would look like before
+insertion, which is knowledge needed for certain UI decisions. The
+way ERC has chosen to address this is imperfect and boils down to
+asking users who've customized this option to switch to
+'erc-timestamp-format' instead. If you're affected by this and feel
+that some other solution, like automatic migration, is justified,
+please make that known on the bug list.
+
+** The 'nicknames' entry in 'erc-button-alist' is officially exceptional.
+It's no secret that the 'buttons' module treats potential nicknames
+specially. To simplify ERC's move to next-gen "rich UI" extensions,
+this special treatment is being canonized. From now on, all values
+other than the symbol 'erc-button-buttonize-nicks' appearing in the
+"FORM" field (third element) of this entry are considered deprecated
+and will incur a warning.
+
+** Miscellaneous UX changes.
+Some minor quality-of-life niceties have finally made their way to
+ERC. For example, the function 'erc-echo-timestamp' is now
+interactive and can be invoked on any message to view its timestamp in
+the echo area. Also, the 'irccontrols' module now supports additional
+colors and special handling for "spoilers" (hidden text). And issuing
+an "/MOTD" now dispatches a purpose-built command handler.
+
+** Changes in the library API.
+
+*** Some top-level dependencies have been removed.
+The library 'erc-goodies' is no longer loaded by ERC's main library.
+This was done to further cement the move toward a unidirectional
+dependency flow begun in 5.5. Additionally, a few barely used and
+newly introduced dependencies are now lazily loaded, which may upset
+some third-party code. The first of these is 'pp' because its
+'pp-to-string' is autoloaded in all supported ERC versions. Also gone
+are 'thingatpt', 'time-date', and 'iso8601'. All were used ultra
+sparingly, and the latter two have only been around for one minor
+release cycle, so their removal hopefully won't cause much churn.
+
+*** Some ERC-applied text properties have changed.
+Chiefly, 'rear-sticky' has been replaced by 'erc-command', which
+records the IRC command (or numeric) associated with a message. Less
+impactfully, the value of the 'field' property for ERC's prompt has
+changed from 't' to the more useful 'erc-prompt', although the
+property of the same name has been retained.
+
+*** ERC now manages timestamp-related properties a bit differently.
+For starters, the 'cursor-sensor-functions' property no longer
+contains unique closures and thus no longer proves effective for
+traversing messages. To compensate, a new property, 'erc-timestamp',
+now spans message bodies but not the newlines delimiting them.
+Somewhat relatedly, the function 'erc-insert-aligned' has been
+deprecated and removed from the primary client code path.
+
+*** The role of a module's Custom group is now more clearly defined.
+Associating built-in modules with Custom groups and provided library
+features has improved. More specifically, a module's group now enjoys
+the singular purpose of determining where the module's minor mode
+variable lives in the Customize interface. And although ERC is now
+slightly more adept at linking these entities, third-parties are still
+encouraged to keep a module's name aligned with its group's as well as
+the provided feature of its containing library, if only for the usual
+reasons of namespace hygiene and discoverability.
+
+*** ERC now supports arbitrary CHANTYPES.
+Specifically, channels can be prefixed with any predesignated
+character, mainly to afford more flexibility to specialty services,
+like bridges to other protocols.
+
+*** 'erc-cmd-HELP' recognizes subcommands.
+Some IRC "slash" commands are hierarchical and require users to
+specify a subcommand to actually carry out anything of consequence.
+Built-in modules can now provide more detailed help for a particular
+subcommand by telling ERC to defer to a specialized handler.
+
+*** Longtime quasi modules have been made proper.
+The 'fill' module is now defined by 'define-erc-module'. The same
+goes for ERC's imenu integration, which has 'imenu' now appearing in
+the default value of 'erc-modules'.
+
+*** ERC's prompt survives the insertion of user input and messages.
+Previously, ERC's prompt and its input marker disappeared while
+running hooks during message insertion, and the position of its
+"insert marker" (ERC's per-buffer process mark) was inconsistent
+during these spells. To make insertion handling more predictable in
+preparation for incorporating various protocol extensions, the prompt
+and its bounding markers have become perennial fixtures. In rare
+cases, these changes may mean third-party code needs tweaking, for
+example, requiring the use of 'insert-before-markers' instead of
+'insert'. As always, users feeling unduly inconvenienced by these
+changes are encouraged to voice their concerns on the bug list.
+
+*** Miscellaneous changes
+For autoloading purposes, 'Info-goto-node' has been supplanted by
+plain old 'info' in 'erc-button-alist', and two helper macros from GNU
+ELPA's Compat library are now available to third-party modules as
+'erc-compat-call' and 'erc-compat-function'.
+
+
* Changes in ERC 5.5
** Smarter buffer naming for withstanding collisions.
diff --git a/etc/NEWS b/etc/NEWS
index 84dbb94a71a..b121002b246 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1,15 +1,15 @@
GNU Emacs NEWS -- history of user-visible changes.
-Copyright (C) 2021-2023 Free Software Foundation, Inc.
+Copyright (C) 2022-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.
Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
If possible, use 'M-x report-emacs-bug'.
-This file is about changes in Emacs version 29.
+This file is about changes in Emacs version 30.
See file HISTORY for a list of GNU Emacs versions and release dates.
-See files NEWS.28, NEWS.27, ..., NEWS.18, and NEWS.1-17 for changes
+See files NEWS.29, NEWS.28, ..., NEWS.18, and NEWS.1-17 for changes
in older Emacs versions.
You can narrow news to a specific version by calling 'view-emacs-news'
@@ -22,4897 +22,480 @@ When you add a new item, use the appropriate mark if you are sure it
applies, and please also update docstrings as needed.
-* Installation Changes in Emacs 29.1
-
----
-** Ahead-of-time native compilation can now be requested via configure.
-Use '--with-native-compilation=aot' to request that all the Lisp files
-in the Emacs tree should be natively compiled ahead of time. (This is
-slow on most machines.)
-
-This feature existed in Emacs 28.1, but was less easy to request.
-
-+++
-** Emacs can be built with the tree-sitter parsing library.
-This library, together with separate grammar libraries for each
-language, provides incremental parsing capabilities for several
-popular programming languages and other formatted files. Emacs built
-with this library offers major modes, described elsewhere in this
-file, that are based on the tree-sitter's parsers. If you have the
-tree-sitter library installed, the configure script will automatically
-include it in the build; use '--without-tree-sitter' at configure time
-to disable that.
-
-Emacs modes based on the tree-sitter library require an additional
-grammar library for each mode. These grammar libraries provide the
-tree-sitter library with language-specific lexical analysis and
-parsing capabilities, and are developed separately from the
-tree-sitter library itself. If you don't have a grammar library
-required by some Emacs major mode, and your distro doesn't provide it
-as an installable package, you can compile and install such a library
-yourself. Many libraries can be downloaded from the tree-sitter site:
-
- https://github.com/tree-sitter
-
-Emacs provides a user command, 'treesit-install-language-grammar',
-that automates the download and build process of a grammar library.
-It prompts for the language, the URL of the language grammar's VCS
-repository, and then uses the installed C/C++ compiler to build the
-library and install it.
-
-You can also do this manually. To compile such a library after
-cloning its Git repository, compile the files "scanner.c" and
-"parser.c" (sometimes named "scanner.cc" and "parser.cc") in the "src"
-subdirectory of the library's source tree using the C or C++ compiler,
-then link these two files into a shared library named
-"libtree-sitter-LANG.so", where LANG is the name of the language
-supported by the grammar as it is expected by the Emacs major mode
-(for example, "c" for 'c-ts-mode', "cpp" for 'c++-ts-mode', "python"
-for 'python-ts-mode', etc.). Then place the shared library you've
-built in the same directory where you keep the other shared libraries
-used by Emacs, or in the "tree-sitter" subdirectory of your
-'user-emacs-directory', or in a directory mentioned in the variable
-'treesit-extra-load-path'.
-
-You only need to install language grammar libraries required by the
-Emacs modes you will use, as Emacs loads these libraries only when the
-corresponding mode is turned on in some buffer for the first time in
-an Emacs session.
-
-+++
-** Emacs can be built with built-in support for accessing SQLite databases.
-This uses the popular sqlite3 library, and can be disabled by using
-the '--without-sqlite3' option to the 'configure' script.
-
-+++
-** Support for the WebP image format.
-This support is built by default when the libwebp library is
-available, and includes support for animated WebP images. To disable
-WebP support, use the '--without-webp' configure flag. Image
-specifiers can now use ':type webp'.
-
-+++
-** Emacs has been ported to the Haiku operating system.
-The configuration process should automatically detect and build for
-Haiku. There is also an optional window-system port to Haiku, which
-can be enabled by configuring Emacs with the option '--with-be-app',
-which will require the Haiku Application Kit development headers and a
-C++ compiler to be present on your system. If Emacs is not built with
-the option '--with-be-app', the resulting Emacs will only run in
-text-mode terminals.
-
-To enable Cairo support, ensure that the Cairo and FreeType
-development files are present on your system, and configure Emacs with
-'--with-be-cairo'.
-
-Unlike X, there is no compile-time option to enable or disable
-double-buffering; it is always enabled. To disable it, change the
-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
-"...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-<fingerprint>.pdmp".
-If a constant file name is required, the file can be renamed to
-"emacs.pdmp", and Emacs will find it during startup anyway.
-
----
-** Emacs on X now uses XInput 2 for input events.
-If your X server has support and you have the XInput 2 development
-headers installed, Emacs will use the X Input Extension for handling
-input. If this causes problems, you can configure Emacs with the
-option '--without-xinput2' to disable this support.
-
-'(featurep 'xinput2)' can be used to test for the presence of XInput 2
-support from Lisp programs.
-
-+++
-** Emacs now supports being built with pure GTK.
-To use this option, make sure the GTK 3 (version 3.22.23 or later) and
-Cairo development files are installed, and configure Emacs with the
-option '--with-pgtk'. Unlike the default X and GTK build, the
-resulting Emacs binary will work on any underlying window system
-supported by GDK, such as Wayland and Broadway. We recommend that you
-use this configuration only if you are running a window system other
-than X that's supported by GDK. Running this configuration on X is
-known to have problems, such as undesirable frame positioning and
-various issues with keyboard input of sequences such as 'C-;' and
-'C-S-u'.
-
----
-** Emacs no longer reduces the size of the Japanese dictionary.
-Building Emacs includes generation of a Japanese dictionary, which is
-used by Japanese input methods. Previously, the build included a step
-of reducing the size of this dictionary's vocabulary. This vocabulary
-reduction is now optional, by default off. If you need the Emacs
-build to include the vocabulary reduction, configure Emacs with the
-option '--with-small-ja-dic'. In an Emacs source tree already
-configured without that option, you can force the vocabulary reduction
-by saying
-
- make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION=''
-
-after deleting "lisp/leim/ja-dic/ja-dic.el".
-
----
-** The docstrings of preloaded files are not in "etc/DOC" any more.
-Instead, they're fetched as needed from the corresponding ".elc"
-files, as was already the case for all the non-preloaded files.
+* Installation Changes in Emacs 30.1
-* Startup Changes in Emacs 29.1
-
-+++
-** '--batch' and '--script' now adjust the garbage collection levels.
-These switches now set 'gc-cons-percentage' to 1.0 (up from the
-default of 0.1). This means that batch processes will typically use
-more memory than before, but use less time doing garbage collection.
-Batch jobs that are supposed to run for a long time should adjust the
-limit back down again.
-
-+++
-** Emacs can now be used more easily in an executable script.
-If you start an executable script with
-
- #!/usr/bin/emacs -x
-
-Emacs will start without reading any init files (like with '--quick'),
-and then execute the rest of the script file as Emacs Lisp. When it
-reaches the end of the script, Emacs will exit with an exit code from
-the value of the final form.
-
-+++
-** Emacs now supports setting 'user-emacs-directory' via '--init-directory'.
-Use the '--init-directory' command-line option to set
-'user-emacs-directory'.
-
-+++
-** Emacs now has a '--fingerprint' option.
-This will output a string identifying the current Emacs build, and exit.
-
-+++
-** New hook 'after-pdump-load-hook'.
-This is run at the end of the Emacs startup process, and is meant to
-be used to reinitialize data structures that would normally be done at
-load time.
-
-** Native Compilation
-
-+++
-*** New command 'native-compile-prune-cache'.
-This command deletes old subdirectories of the eln cache (but not the
-ones for the current Emacs version). Note that subdirectories of the
-system directory where the "*.eln" files are installed (usually, the
-last entry in 'native-comp-eln-load-path') are not deleted.
-
----
-*** New function 'startup-redirect-eln-cache'.
-This function can be called in your init files to change the
-user-specific directory where Emacs stores the "*.eln" files produced
-by native compilation of Lisp packages Emacs loads. The default
-eln cache directory is unchanged: it is the "eln-cache" subdirectory
-of 'user-emacs-directory'.
+* Startup Changes in Emacs 30.1
-* Incompatible changes in Emacs 29.1
-
-+++
-** The image commands have changed key bindings.
-In previous Emacs versions, images have had the '+', '-' and 'r' keys
-bound when point is over an image. In Emacs 29.1, additional commands
-were added, and this made it more likely that users would trigger the
-image commands by mistake. To avoid this, all image commands have
-moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -',
-and 'r' is now 'i r'. In addition, these commands are now repeating,
-so, for example, you can rotate an image twice by typing 'i r r'.
-
-+++
-** Emacs now picks the correct coding-system for X input methods.
-Previously, Emacs would use 'locale-coding-system' for input
-methods, which could in some circumstances be incorrect, especially
-when the input method chose to fall back to some other coding system.
-
-Emacs now automatically detects the coding-system used by input
-methods, and uses that to decode input in preference to the value of
-'locale-coding-system'. This unfortunately means that users who have
-changed the coding system used to decode X keyboard input must adjust
-their customizations to 'locale-coding-system' to the variable
-'x-input-coding-system' instead.
-
-+++
-** Bookmarks no longer include context for encrypted files.
-If you're visiting an encrypted file, setting a bookmark no longer
-includes excerpts from that buffer in the bookmarks file. This is
-implemented by the new hook 'bookmark-inhibit-context-functions',
-where packages can register a function which returns non-nil for file
-names to be excluded from adding such excerpts.
-
----
-** 'show-paren-mode' is now disabled in 'special-mode' buffers.
-In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted
-off. In Emacs 28.1, the mode was switched on in all buffers. In
-Emacs 29.1, this was changed to be switched on in all editing-related
-buffers, but not in buffers that inherit from 'special-mode'. To go
-back to how things worked in Emacs 28.1, put the following in your
-init file:
-
- (setopt show-paren-predicate t)
-
-+++
-** Explicitly-set read-only state is preserved when reverting a buffer.
-If you use the 'C-x C-q' command to change the read-only state of the
-buffer and then revert it, Emacs would previously use the file
-permission bits to determine whether the buffer should be read-only
-after reverting the buffer. Emacs now remembers the decision made in
-'C-x C-q'.
-
----
-** The Gtk selection face is no longer used for the region.
-The combination of a Gtk-controlled background and a foreground color
-controlled by the internal Emacs machinery led to low-contrast faces
-in common default setups. Emacs now uses the same 'region' face on
-Gtk and non-Gtk setups.
-
----
-** 'C-h f' and 'C-h x' may now require confirmation when you press 'RET'.
-If the text in the minibuffer cannot be completed to a single function
-or command, typing 'RET' will not automatically complete to the shortest
-candidate, but will instead ask for confirmation. Typing 'TAB' will
-complete as much as possible, and another 'TAB' will show all the
-possible completions. This allows you to insist on the functions name
-even if Help doesn't appear to know about it, by confirming with a
-second 'RET'.
-
-** Dired
-
----
-*** 'w' ('dired-copy-filename-as-kill') has changed behavior.
-If there are several files marked, file names containing space and
-quote characters will be quoted "like this".
-
----
-*** The 'd' command now more consistently skips dot files.
-In previous Emacs versions, commands like 'C-u 10 d' would put the "D"
-mark on the next ten files, no matter whether they were dot files
-(i.e., "." and "..") or not, while marking the next ten lines with the
-mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot
-files. These now work equivalently.
-
-+++
-** Warning about "eager macro-expansion failure" is now an error.
-
----
-** Previously, the X "reverseVideo" value at startup was heeded for all frames.
-This meant that if you had a "reverseVideo" resource on the initial
-display, and then opened up a new frame on a display without any
-explicit "reverseVideo" setting, it would get heeded there, too. (This
-included terminal frames.) In Emacs 29, the "reverseVideo" X resource
-is handled like all the other X resources, and set on a per-frame basis.
-
-+++
-** 'E' in 'query-replace' now edits the replacement with exact case.
-Previously, this command did the same as 'e'.
-
----
-** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp.
-
-+++
-** Setting the goal columns now also affects '<prior>' and '<next>'.
-Previously, 'C-x C-n' only affected 'next-line' and 'previous-line',
-but it now also affects 'scroll-up-command' and 'scroll-down-command'.
-
----
-** Isearch in "*Help*" and "*info*" now char-folds quote characters by default.
-This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer
-contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These
-quotation characters look somewhat similar in some fonts. To switch
-this off, disable the new 'isearch-fold-quotes-mode' minor mode.
-
----
-** Sorting commands no longer necessarily change modification status.
-In earlier Emacs versions, commands like 'sort-lines' would always
-change buffer modification status to "modified", whether they changed
-something in the buffer or not. This has been changed: the buffer is
-marked as modified only if the sorting ended up actually changing the
-contents of the buffer.
-
----
-** 'string-lines' handles trailing newlines differently.
-It no longer returns an empty final string if the string ends with a
-newline.
-
----
-** 'TAB' and '<backtab>' are now bound in 'button-map'.
-This means that if point is on a button, 'TAB' will take you to the
-next button, even if the mode has bound it to something else. This
-also means that 'TAB' on a button in an 'outline-minor-mode' heading
-will move point instead of collapsing the outline.
-
----
-** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'.
-Instead of adding text property 'keymap' with 'outline-minor-mode-cycle'
-on outline headings in 'outline-minor-mode', the keymap
-'outline-minor-mode-cycle' is now active in the whole buffer.
-But keybindings in 'outline-minor-mode-cycle' still take effect
-only on outline headings because they are bound with the help of
-'outline-minor-mode-cycle--bind' that checks if point is on a heading.
-
----
-** 'Info-default-directory-list' is no longer populated at Emacs startup.
-If you have code in your init file that removes directories from
-'Info-default-directory-list', this will no longer work.
-
----
-** 'C-k' no longer deletes files in 'ido-mode'.
-To get the previous action back, put something like the following in
-your Init file:
-
- (require 'ido)
- (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head)
-
----
-** New user option 'term-clear-full-screen-programs'.
-By default, term.el will now work like most terminals when displaying
-full-screen programs: When they exit, the output is cleared, leaving
-what was displayed in the window before the programs started. Set
-this user option to nil to revert back to the old behavior.
-
----
-** Support for old EIEIO functions is not autoloaded any more.
-You need an explicit '(require 'eieio-compat)' to use 'defmethod'
-and 'defgeneric' (which have been made obsolete in Emacs 25.1 with
-'cl-defmethod' and 'cl-defgeneric').
-Similarly you might need to '(require 'eieio-compat)' before loading
-files that were compiled with an old EIEIO (Emacs<25).
-
----
-** 'C-x 8 .' has been moved to 'C-x 8 . .'.
-This is to open up the 'C-x 8 .' map to bind further characters there.
-
----
-** 'C-x 8 =' has been moved to 'C-x 8 = ='.
-You can now use 'C-x 8 =' to insert several characters with macron;
-for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH
-MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the
-previous 'C-x ='.
-
-** Eshell
+* Changes in Emacs 30.1
-*** Eshell's PATH is now derived from 'exec-path'.
-For consistency with remote connections, Eshell now uses 'exec-path'
-to determine the execution path on the local or remote system, instead
-of using the PATH environment variable directly.
+** X selection requests are now handled much faster and asynchronously.
+This means it should be less necessary to disable the likes of
+'select-active-regions' when Emacs is running over a slow network
+connection.
----
-*** 'source' and '.' no longer accept the '--help' option.
-This is for compatibility with the shell versions of these commands,
-which don't handle options like '--help' in any special way.
-
-+++
-*** String delimiters in argument predicates/modifiers are more restricted.
-Previously, some argument predicates/modifiers allowed arbitrary
-characters as string delimiters. To provide more unified behavior
-across all predicates/modifiers, the list of allowed delimiters has
-been restricted to "...", '...', /.../, |...|, (...), [...], <...>,
-and {...}. See the "(eshell) Argument Predication and Modification"
-node in the Eshell manual for more details.
+** Emacs now updates invisible frames that are made visible by a compositor.
+If an invisible or an iconified frame is shown to the user by the
+compositing manager, Emacs will now redisplay such a frame even though
+'frame-visible-p' returns nil or 'icon' for it. This can happen, for
+example, as part of preview for iconified frames.
+++
-*** Eshell pipelines now only pipe stdout by default.
-To pipe both stdout and stderr, use the '|&' operator instead of '|'.
-
----
-** The 'delete-forward-char' command now deletes by grapheme clusters.
-This command is by default bound to the '<Delete>' function key
-(a.k.a. '<deletechar>'). When invoked without a prefix argument or
-with a positive prefix numeric argument, the command will now delete
-complete grapheme clusters produced by character composition. For
-example, if point is before an Emoji sequence, pressing '<Delete>'
-will delete the entire sequence, not just a single character at its
-beginning.
+** 'write-region-inhibit-fsync' now defaults to t in interactive mode,
+as it has in batch mode since Emacs 24.
+++
-** 'load-history' does not treat autoloads specially any more.
-An autoload definition appears just as a '(defun . NAME)' and the
-'(t . NAME)' entries are not generated any more.
+** New user option 'remote-file-name-inhibit-delete-by-moving-to-trash'.
+When non-nil, this option suppresses moving remote files to the local
+trash when deleting. Default is nil.
---
-** The Tamil input methods no longer insert Tamil digits.
-The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert
-the Tamil digits, as those digit characters are not used nowadays by
-speakers of the Tamil language. To get back the previous behavior,
-use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input
-methods instead.
-
-+++
-** New variable 'current-time-list' governing default timestamp form.
-Functions like 'current-time' now yield '(TICKS . HZ)' timestamps if
-this new variable is nil. The variable defaults to t, which means
-these functions default to timestamps of the forms '(HI LO US PS)',
-'(HI LO US)' or '(HI LO)', which are less regular and less efficient.
-This is part of a long-planned change first documented in Emacs 27.
-Developers are encouraged to test timestamp-related code with this
-variable set to nil, as it will default to nil in a future Emacs
-version and will be removed some time after that.
+** New user option 'remote-file-name-inhibit-auto-save'.
+If this user option is non-nil, 'auto-save-mode' will not auto-save
+remote buffers. The default is nil.
+++
-** Functions that recreate the "*scratch*" buffer now also initialize it.
-When functions like 'other-buffer' and 'server-execute' recreate
-"*scratch*", they now also insert 'initial-scratch-message' and set
-the major mode according to 'initial-major-mode', like at Emacs
-startup. Previously, these functions ignored
-'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'.
-
----
-** Naming of Image-Dired thumbnail files has changed.
-Names of thumbnail files generated when 'image-dired-thumbnail-storage'
-is 'image-dired' now always end in ".jpg". This fixes various issues
-on different platforms, but means that thumbnails generated in Emacs 28
-will not be used in Emacs 29, and vice-versa. If disk space is an
-issue, consider deleting the 'image-dired-dir' directory (usually
-"~/.emacs.d/image-dired/") after upgrading to Emacs 29.
-
----
-** The 'rlogin' method in the URL library is now obsolete.
-Emacs will now display a warning if you request a URL like
-"rlogin://foo@example.org".
-
----
-** Setting 'url-gateway-method' to 'rlogin' is now obsolete.
-Emacs will now display a warning when setting it to that value.
-The user options 'url-gateway-rlogin-host',
-'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name'
-are also obsolete.
-
----
-** The user function 'url-irc-function' now takes a SCHEME argument.
-The user option 'url-irc-function' is now called with a sixth argument
-corresponding to the scheme portion of the target URL. For example,
-this would be "ircs" for a URL like "ircs://irc.libera.chat".
-
----
-** The linum.el library is now obsolete.
-We recommend using either the built-in 'display-line-numbers-mode', or
-the 'nlinum' package from GNU ELPA instead. The former has better
-performance, but the latter is closer to a drop-in replacement.
-
-1. To use 'display-line-numbers-mode', add something like this to your
- Init file:
-
- (global-display-line-numbers-mode 1)
- ;; Alternatively, to use it only in programming modes:
- (add-hook 'prog-mode-hook #'display-line-numbers-mode)
-
-2. To use 'nlinum', add this to your Init file:
-
- (package-install 'nlinum)
- (global-nlinum-mode 1)
- ;; Alternatively, to use it only in programming modes:
- (add-hook 'prog-mode-hook #'nlinum-mode)
-
-3. To continue using the obsolete package 'linum', add this line to
- your Init file, in addition to any existing customizations:
-
- (require 'linum)
-
----
-** The thumbs.el library is now obsolete.
-We recommend using command 'image-dired' instead.
-
----
-** The autoarg.el library is now marked obsolete.
-This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor
-modes to emulate the behavior of the historical editor Twenex Emacs.
-We believe it is no longer useful.
-
----
-** The quickurl.el library is now obsolete.
-Use 'abbrev', 'skeleton' or 'tempo' instead.
-
----
-** The rlogin.el library, and the 'rsh' command are now obsolete.
-Use something like 'M-x shell RET ssh <host> RET' instead.
-
----
-** The url-about.el library is now obsolete.
-
----
-** The autoload.el library is now obsolete.
-It is superseded by the new loaddefs-gen.el library.
-
----
-** The netrc.el library is now obsolete.
-Use the 'auth-source-netrc-parse-all' function in auth-source.el
-instead.
-
----
-** The url-dired.el library is now obsolete.
+** New user option 'yes-or-no-prompt'.
+This allows the user to customize the prompt that is appended by
+'yes-or-no-p' when asking questions. The default value is
+"(yes or no) ".
---
-** The fast-lock.el and lazy-lock.el libraries have been removed.
-They have been obsolete since Emacs 22.1.
-
-The variable 'font-lock-support-mode' is occasionally useful for
-debugging purposes. It is now a regular variable (instead of a user
-option) and can be set to nil to disable Just-in-time Lock mode.
-
-+++
-** The 'utf-8-auto' coding-system now produces BOM on encoding.
-This is actually a bugfix, since this is how 'utf-8-auto' was
-documented from day one; it just didn't behave according to
-documentation. It turns out some Lisp programs were using this
-coding-system on the wrong assumption that the "auto" part means some
-automagic handling of the end-of-line (EOL) format conversion; those
-programs will now start to fail, because BOM signature in UTF-8 encoded
-text is rarely expected. That is the reason we mention this bugfix
-here.
-
-In general, this coding-system should probably never be used for
-encoding, only for decoding.
+** New face 'display-time-date-and-time'.
+This is used for displaying the time and date components of
+'display-time-mode'.
-* Changes in Emacs 29.1
-
-+++
-** New user option 'major-mode-remap-alist' to specify favorite major modes.
-This user option lets you remap the default modes (e.g. 'perl-mode' or
-'latex-mode') to your favorite ones (e.g. 'cperl-mode' or
-'LaTeX-mode') without having to use 'defalias', which can have
-undesirable side effects.
-This applies to all modes specified via 'auto-mode-alist', file-local
-variables, etc.
-
----
-** Emacs now supports Unicode Standard version 15.0.
-
----
-** New user option 'electric-quote-replace-consecutive'.
-
----
-** Emacs is now capable of editing files with very long lines.
-The display of long lines has been optimized, and Emacs should no
-longer choke when a buffer on display contains long lines. The
-variable 'long-line-threshold' controls whether and when these display
-optimizations are in effect.
-
-A companion variable 'large-hscroll-threshold' controls when another
-set of display optimizations are in effect, which are aimed
-specifically at speeding up display of long lines that are truncated
-on display.
-
-If you still experience slowdowns while editing files with long lines,
-this may be due to line truncation, or to one of the enabled minor
-modes, or to the current major mode. Try turning off line truncation
-with 'C-x x t', or try disabling all known slow minor modes with
-'M-x so-long-minor-mode', or try disabling both known slow minor modes
-and the major mode with 'M-x so-long-mode', or visit the file with
-'M-x find-file-literally' instead of the usual 'C-x C-f'.
-
-In buffers in which these display optimizations are in effect, the
-'fontification-functions', 'pre-command-hook' and 'post-command-hook'
-hooks are executed on a narrowed portion of the buffer, whose size is
-controlled by the variables 'long-line-optimizations-region-size' and
-'long-line-optimizations-bol-search-limit', as if they were in a
-'with-restriction' form. This may, in particular, cause occasional
-mis-fontifications in these buffers. Modes which are affected by
-these optimizations and by the fact that the buffer is narrowed,
-should adapt and either modify their algorithm so as not to expect the
-entire buffer to be accessible, or, if accessing outside of the
-narrowed region doesn't hurt performance, use the
-'without-restriction' form to temporarily lift the restriction and
-access portions of the buffer outside of the narrowed region.
-
-The new function 'long-line-optimizations-p' returns non-nil when
-these optimizations are in effect in the current buffer.
-
-+++
-** New command to change the font size globally.
-To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to
-decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x
-C-M-0'. The final key in these commands may be repeated without the
-leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+'
-and 'C-x C-M-+ + +' increase the font size by three steps. When
-'mouse-wheel-mode' is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also
-increase and decrease the font size globally. Additionally, the
-user option 'global-text-scale-adjust-resizes-frames' controls whether
-the frames are resized when the font size is changed.
-
----
-** New config variable 'syntax-wholeline-max' to reduce the cost of long lines.
-This variable is used by some operations (mostly syntax-propertization
-and font-locking) to treat lines longer than this variable as if they
-were made up of various smaller lines. This can help reduce the
-slowdowns seen in buffers made of a single long line, but can also
-cause misbehavior in the presence of such long lines (though most of
-that misbehavior should usually be limited to mis-highlighting). You
-can recover the previous behavior with:
-
- (setq syntax-wholeline-max most-positive-fixnum)
-
----
-** New bindings in 'find-function-setup-keys' for 'find-library'.
-When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to
-'find-library', 'C-x 4 L' is now bound to 'find-library-other-window'
-and 'C-x 5 L' is now bound to 'find-library-other-frame'.
-
-+++
-** New key binding after 'M-x' or 'M-X': 'M-X'.
-Emacs allows different completion predicates to be used with 'M-x'
-(i.e., 'execute-extended-command') via the
-'read-extended-command-predicate' user option. Emacs also has the
-'M-X' (note upper case X) command, which only displays commands
-especially relevant to the current buffer. Emacs now allows toggling
-between these modes while the user is inputting a command by hitting
-'M-X' while in the minibuffer.
-
----
-** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved.
-
----
-** New commands 'duplicate-line' and 'duplicate-dwim'.
-'duplicate-line' duplicates the current line the specified number of times.
-'duplicate-dwim' duplicates the region if it is active. If not, it
-works like 'duplicate-line'. An active rectangular region is
-duplicated on its right-hand side.
-
----
-** Files with the ".eld" extension are now visited in 'lisp-data-mode'.
-
-+++
-** 'network-lookup-address-info' can now check numeric IP address validity.
-Specifying 'numeric' as the new optional HINTS argument makes it
-check if the passed address is a valid IPv4/IPv6 address (without DNS
-traffic).
-
- (network-lookup-address-info "127.1" 'ipv4 'numeric)
- => ([127 0 0 1 0])
-
-+++
-** New command 'find-sibling-file'.
-This command jumps to a file considered a "sibling file", which is
-determined according to the new user option 'find-sibling-rules'.
-
-+++
-** New user option 'delete-selection-temporary-region'.
-When non-nil, 'delete-selection-mode' will only delete the temporary
-regions (usually set by mouse-dragging or shift-selection).
-
-+++
-** New user option 'switch-to-prev-buffer-skip-regexp'.
-This should be a regexp or a list of regexps; buffers whose names
-match those regexps will be ignored by 'switch-to-prev-buffer' and
-'switch-to-next-buffer'.
-
-+++
-** New command 'rename-visited-file'.
-This command renames the file visited by the current buffer by moving
-it to a new name or location, and also makes the buffer visit this new
-file.
-
-** Menus
-
----
-*** The entries following the buffers in the "Buffers" menu can now be altered.
-Change the 'menu-bar-buffers-menu-command-entries' variable to alter
-the entries that follow the buffer list.
-
----
-** 'delete-process' is now a command.
-When called interactively, it will kill the process running in the
-current buffer (if any). This can be useful if you have runaway
-output in the current buffer (from a process or a network connection),
-and want to stop it.
-
-+++
-** New command 'restart-emacs'.
-This is like 'save-buffers-kill-emacs', but instead of just killing
-the current Emacs process at the end, it starts a new Emacs process
-(using the same command line arguments as the running Emacs process).
-'kill-emacs' and 'save-buffers-kill-emacs' have also gained new
-optional arguments to restart instead of just killing the current
-process.
-
-** Drag and Drop
-
-+++
-*** New user option 'mouse-drag-mode-line-buffer'.
-If non-nil, dragging on the buffer name part of the mode-line will
-drag the buffer's associated file to other programs. This option is
-currently only available on X, Haiku and Nextstep (GNUstep or macOS).
-
-+++
-*** New user option 'mouse-drag-and-drop-region-cross-program'.
-If non-nil, this option allows dragging text in the region from Emacs
-to another program.
-
----
-*** New user option 'mouse-drag-and-drop-region-scroll-margin'.
-If non-nil, this option allows scrolling a window while dragging text
-around without a scroll wheel.
-
-+++
-*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'.
-This prevents mouse drag gestures from putting empty strings onto the
-kill ring.
-
-+++
-*** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'.
-These options allow adjusting point and scrolling a window when
-dragging items from another program.
-
-+++
-*** The X Direct Save (XDS) protocol is now supported.
-This means dropping an image or file link from programs such as
-Firefox will no longer create a temporary file in a random directory,
-instead asking you where to save the file first.
-
-+++
-** New user option 'record-all-keys'.
-If non-nil, this option will force recording of all input keys,
-including those typed in response to passwords prompt (this was the
-previous behavior). The default is nil, which inhibits recording of
-passwords.
-
-+++
-** New function 'command-query'.
-This function makes its argument command prompt the user for
-confirmation before executing.
-
-+++
-** The 'disabled' property of a command's symbol can now be a list.
-The first element of the list should be the symbol 'query', which will
-cause the command disabled this way prompt the user with a y/n or a
-yes/no question before executing. The new function 'command-query' is
-a convenient method of making commands disabled in this way.
-
----
-** 'count-words' will now report buffer totals if given a prefix.
-Without a prefix, it will only report the word count for the narrowed
-part of the buffer.
-
-+++
-** 'count-words' will now report sentence count when used interactively.
-
-+++
-** New user option 'set-message-functions'.
-It allows more flexible control of how echo-area messages are displayed
-by adding functions to this list. The default value is a list of one
-element: 'set-minibuffer-message', which displays echo-area messages
-at the end of the minibuffer text when the minibuffer is active.
-Other useful functions include 'inhibit-message', which allows
-specifying, via 'inhibit-message-regexps', the list of messages whose
-display shall be inhibited; and 'set-multi-message' that accumulates
-recent messages and displays them stacked together.
-
----
-** New user option 'find-library-include-other-files'.
-If set to nil, commands like 'find-library' will only include library
-files in the completion candidates. The default is t, which preserves
-previous behavior, whereby non-library files could also be included.
-
-+++
-** New command 'sqlite-mode-open-file' for examining an sqlite3 file.
-This uses the new 'sqlite-mode' which allows listing the tables in a
-DB file, and examining and modifying the columns and the contents of
-those tables.
-
----
-** 'write-file' will now copy some file mode bits.
-If the current buffer is visiting a file that is executable, the
-'C-x 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 faces for font-lock.
-These faces are primarily meant for use with tree-sitter. They are:
-'font-lock-bracket-face', 'font-lock-delimiter-face',
-'font-lock-escape-face', 'font-lock-function-call-face',
-'font-lock-misc-punctuation-face', 'font-lock-number-face',
-'font-lock-operator-face', 'font-lock-property-name-face',
-'font-lock-property-use-face', 'font-lock-punctuation-face',
-'font-lock-regexp-face', and 'font-lock-variable-use-face'.
-
-+++
-** New face 'variable-pitch-text'.
-This face is like 'variable-pitch' (from which it inherits), but is
-slightly larger, which should help with the visual size differences
-between the default, non-proportional font and proportional fonts when
-mixed.
-
-+++
-** New face 'mode-line-active'.
-This inherits from the 'mode-line' face, but is the face actually used
-on the mode lines (along with 'mode-line-inactive').
-
-+++
-** New face attribute pseudo-value 'reset'.
-This value stands for the value of the corresponding attribute of the
-'default' face. It can be used to reset attribute values produced by
-inheriting from other faces.
-
-+++
-** New X resource: "borderThickness".
-This controls the thickness of the external borders of the menu bars
-and pop-up menus.
-
-+++
-** New X resource: "inputStyle".
-This controls the style of the pre-edit and status areas of X input
-methods.
-
-+++
-** New X resources: "highlightForeground" and "highlightBackground".
-Only in the Lucid build, this controls colors used for highlighted
-menu item widgets.
-
-+++
-** On X, Emacs now tries to synchronize window resize with the window manager.
-This leads to less flicker and empty areas of a frame being displayed
-when a frame is being resized. Unfortunately, it does not work on
-some ancient buggy window managers, so if Emacs appears to freeze, but
-is still responsive to input, you can turn it off by setting the X
-resource "synchronizeResize" to "off".
-
-+++
-** On X, Emacs can optionally synchronize display with the graphics hardware.
-When this is enabled by setting the X resource "synchronizeResize" to
-"extended", frame content "tearing" is drastically reduced. This is
-only supported on the Motif, Lucid, and no-toolkit builds, and
-requires an X compositing manager supporting the extended frame
-synchronization protocol (see
-https://fishsoup.net/misc/wm-spec-synchronization.html).
-
-This behavior can be toggled on and off via the frame parameter
-'use-frame-synchronization'.
-
-+++
-** New frame parameter 'alpha-background' and X resource "alphaBackground".
-This controls the opacity of the text background when running on a
-composited display.
-
-+++
-** New frame parameter 'shaded'.
-With window managers which support this, it controls whether or not a
-frame's contents will be hidden, leaving only the title bar on display.
-
----
-** New user option 'x-gtk-use-native-input'.
-This controls whether or not GTK input methods are used by Emacs,
-instead of XIM input methods.
-
-+++
-** New user option 'use-system-tooltips'.
-This controls whether to use the toolkit tooltips, or Emacs's own
-native implementation of tooltips as small frames. This option is
-only meaningful if Emacs was built with GTK+, Nextstep, or Haiku
-support, and defaults to t, which makes Emacs use the toolkit
-tooltips. The existing GTK-specific option
-'x-gtk-use-system-tooltips' is now an alias of this new option.
-
-+++
-** Non-native tooltips are now supported on Nextstep.
-This means Emacs built with GNUstep or built on macOS is now able to
-display different faces and images inside tooltips when the
-'use-system-tooltips' user option is nil.
-
----
-** New minor mode 'pixel-scroll-precision-mode'.
-When enabled, and if your mouse supports it, you can scroll the
-display up or down at pixel resolution, according to what your mouse
-wheel reports. Unlike 'pixel-scroll-mode', this mode scrolls the
-display pixel-by-pixel, as opposed to only animating line-by-line
-scrolls.
-
-** Terminal Emacs
-
----
-*** Emacs will now use 24-bit colors on terminals that support "Tc" capability.
-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".
-
----
-*** Select active regions with xterm selection support.
-On terminals with xterm "setSelection" support, the active region may be
-saved to the X primary selection, following the
-'select-active-regions' variable. This support is enabled when
-'tty-select-active-regions' is non-nil.
-
----
-*** New command to set up display of unsupported characters.
-The new command 'standard-display-by-replacement-char' produces Lisp
-code that sets up the 'standard-display-table' to use a replacement
-character for display of characters that the text-mode terminal
-doesn't support. This code is intended to be used in your init files.
-This feature is most useful with the Linux console and similar
-terminals, where Emacs has a reliable way of determining which
-characters have glyphs in the font loaded into the terminal's memory.
-
----
-*** New functions to set terminal output buffer size.
-The new functions 'tty--set-output-buffer-size' and
-'tty--output-buffer-size' allow setting and retrieving the output
-buffer size of a terminal device. The default buffer size is and has
-always been BUFSIZ, which is defined in your system's stdio.h. When
-you set a buffer size with 'tty--set-output-buffer-size', this also
-prevents Emacs from explicitly flushing the tty output stream, except
-at the end of display update.
-
-** ERT
-
-+++
-*** 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.
-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
-tests so that they all have unique names.
-
-+++
-*** ERT can generate JUnit test reports.
-When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT
-generates a JUnit test report under this file name. This is useful
-for Emacs integration into CI/CD test environments.
-
----
-*** Unbound test symbols now signal an 'ert-test-unbound' error.
-This affects the 'ert-select-tests' function and its callers.
-
-** Emoji
-
-+++
-*** Emacs now has several new methods for inserting Emoji.
-The Emoji commands are under the new 'C-x 8 e' prefix.
-
-+++
-*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i').
-This command guides you through various Emoji categories and
-combinations in a graphical menu system.
-
-+++
-*** New command 'emoji-search' (bound to 'C-x 8 e s').
-This command lets you search for Emoji based on names.
-
-+++
-*** New command 'emoji-list' (bound to 'C-x 8 e l').
-This command lists all Emoji (categorized by themes) in a special
-buffer and lets you choose one of them.
-
----
-*** New command 'emoji-recent' (bound to 'C-x 8 e r').
-This command lets you choose among the Emoji you have recently
-inserted.
-
-+++
-*** New command 'emoji-describe' (bound to 'C-x 8 e d').
-This command will tell you the name of the Emoji at point. (It also
-works for non-Emoji characters.)
-
----
-*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'.
-These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
-can be used on any character, but are mainly useful for Emoji.
-
----
-*** New command 'emoji-zoom-reset'.
-This is bound to 'C-x 8 e 0', and undoes any size changes performed by
-'emoji-zoom-increase' and 'emoji-zoom-decrease'.
-
----
-*** New input method 'emoji'.
-This allows you to enter Emoji using short strings, eg ':face_palm:'
-or ':scream:'.
-
-** Help
-
----
-*** Variable values displayed by 'C-h v' in "*Help*" are now fontified.
-
-+++
-*** New user option 'help-clean-buttons'.
-If non-nil, link buttons in "*Help*" buffers will have any surrounding
-quotes removed.
-
----
-*** 'M-x apropos-variable' output now includes values of variables.
-Such apropos buffer is more easily viewed with outlining after
-enabling 'outline-minor-mode' in 'apropos-mode'.
-
-+++
-*** New docstring syntax to indicate that symbols shouldn't be links.
-When displaying docstrings in "*Help*" buffers, strings that are
-"`like-this'" are made into links (if they point to a bound
-function/variable). This can lead to false positives when talking
-about values that are symbols that happen to have the same names as
-functions/variables. To inhibit this buttonification, use the new
-"\\+`like-this'" syntax.
-
-+++
-*** New user option 'help-window-keep-selected'.
-If non-nil, commands to show the info manual and the source will reuse
-the same window in which the "*Help*" buffer is shown.
-
----
-*** Commands like 'C-h f' have changed how they describe menu bindings.
-For instance, previously a command might be described as having the
-following bindings:
-
- It is bound to <open>, C-x C-f, <menu-bar> <file> <new-file>.
-
-This has been changed to:
-
- It is bound to <open> and C-x C-f.
- It can also be invoked from the menu: File → Visit New File...
-
-+++
-*** The 'C-h .' command now accepts a prefix argument.
-'C-u C-h .' would previously inhibit displaying a warning message if
-there's no local help at point. This has been changed to call
-'button-describe'/'widget-describe' and display button/widget help
-instead.
-
----
-*** New user option 'help-enable-variable-value-editing'.
-If enabled, 'e' on a value in "*Help*" will pop you to a new buffer
-where you can edit the value. This is not enabled by default, because
-it is easy to make an edit that yields an invalid result.
-
----
-*** 'C-h b' uses outlining by default.
-Set 'describe-bindings-outline' to nil to get back the old behavior.
-
----
-*** Jumping to function/variable source now saves mark before moving point.
-Jumping to source from a "*Help*" buffer moves point when the source
-buffer is already open. Now, the old point is pushed onto mark ring.
-
-+++
-*** New key bindings in "*Help*" buffers: 'n' and 'p'.
-These will take you (respectively) to the next and previous "page".
-
----
-*** 'describe-char' now also outputs the name of Emoji sequences.
-
-+++
-*** New key binding in "*Help*" buffer: 'I'.
-This will take you to the Emacs Lisp manual entry for the item
-displayed, if any.
-
----
-*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted.
-It now only includes local minor modes at the start, and the global
-minor modes are listed after the major mode.
-
-+++
-*** The user option 'help-window-select' now affects apropos commands.
-The apropos commands will now select the apropos window if
-'help-window-select' is non-nil.
+* Editing Changes in Emacs 30.1
---
-*** 'describe-keymap' now considers the symbol at point.
-If the symbol at point is a keymap, 'describe-keymap' suggests it as
-the default candidate.
+** On X, Emacs now supports input methods which perform "string conversion".
+This means an input method can now ask Emacs to delete text
+surrounding point and replace it with something else, as well as query
+Emacs for surrounding text. If your input method allows you to "undo"
+mistaken compositions, this will now work as well.
---
-*** New command 'help-quick' displays an overview of common commands.
-The command pops up a buffer at the bottom of the screen with a few
-helpful commands for various tasks. You can toggle the display using
-'C-h C-q'.
-
-** Emacs now comes with Org v9.6.
-See the file "ORG-NEWS" for user-visible changes in Org.
-
-** Outline Mode
-
-+++
-*** Support for customizing the default visibility state of headings.
-Customize the user option 'outline-default-state' to define what
-headings will be visible initially, after Outline mode is turned on.
-When the value is a number, the user option 'outline-default-rules'
-determines the visibility of the subtree starting at the corresponding
-level. Values are provided to control showing a heading subtree
-depending on whether the heading matches a regexp, or on whether its
-subtree has long lines or is itself too long.
-
-** Outline Minor Mode
-
-+++
-*** New user option 'outline-minor-mode-use-buttons'.
-If non-nil, Outline Minor Mode will use buttons to hide/show outlines
-in addition to the ellipsis. The default is nil, but in 'help-mode'
-it has the value 'insert' that inserts the buttons directly into the
-buffer, and you can use 'RET' to cycle outline visibility. When
-the value is 'in-margins', Outline Minor Mode uses the window margins
-for buttons that hide/show outlines.
-
-+++
-*** Buttons and headings now have their own keymaps.
-'outline-button-icon-map', 'outline-overlay-button-map', and
-'outline-inserted-button-map' are now available as defined keymaps
-instead of being anonymous keymaps.
-
-** Windows
-
-+++
-*** New commands 'split-root-window-below' and 'split-root-window-right'.
-These commands split the root window in two, and are bound to 'C-x w 2'
-and 'C-x w 3', respectively. A number of other useful window-related
-commands are now available with key sequences that start with the
-'C-x w' prefix.
-
-+++
-*** New display action 'display-buffer-full-frame'.
-This action removes other windows from the frame when displaying a
-buffer on that frame.
-
-+++
-*** 'display-buffer' now can set up the body size of the chosen window.
-For example, a 'display-buffer-alist' entry of
-
- (window-width . (body-columns . 40))
-
-will make the body of the chosen window 40 columns wide. For the
-height use 'window-height' and 'body-lines', respectively.
-
-+++
-*** 'display-buffer' provides more options for using an existing window.
-The display buffer action functions 'display-buffer-use-some-window' and
-'display-buffer-use-least-recent-window' now honor the action alist
-entry 'window-min-height' as well as the entries listed below to make
-the display of several buffers in a row more amenable.
-
-+++
-*** New buffer display action alist entry 'lru-frames'.
-This allows to specify which frames 'display-buffer' should consider
-when using a window that shows another buffer.
-
-+++
-*** New buffer display action alist entry 'lru-time'.
-'display-buffer' will ignore windows with a use time higher than that
-when using a window that shows another buffer.
-
-+++
-*** New buffer display action alist entry 'bump-use-time'.
-This has 'display-buffer' bump the use time of any window it returns,
-making it a less likely candidate for displaying another buffer.
-
-+++
-*** New buffer display action alist entry 'window-min-width'.
-This allows to specify a minimum width of the window used to display a
-buffer.
-
----
-*** You can customize on which window 'scroll-other-window' operates.
-This is controlled by the new 'other-window-scroll-default' variable.
-
-** Frames
-
-+++
-*** Deleted frames can now be undeleted.
-The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when
-'undelete-frame-mode' is enabled. Without a prefix argument, undelete
-the most recently deleted frame. With a numerical prefix argument
-between 1 and 16, where 1 is the most recently deleted frame, undelete
-the corresponding deleted frame.
-
-+++
-*** The variable 'icon-title-format' can now have the value t.
-That value means to use 'frame-title-format' for iconified frames.
-This is useful with some window managers and desktop environments
-which treat changes in frame's title as requests to raise the frame
-and/or give it input focus, or if you want the frame's title to be the
-same no matter if the frame is iconified or not.
-
-** Tab Bars and Tab Lines
-
----
-*** New user option 'tab-bar-auto-width' to automatically determine tab width.
-This option is non-nil by default, which resizes tab-bar tabs so that
-their width is evenly distributed across the tab bar. A companion
-option 'tab-bar-auto-width-max' controls the maximum width of a tab
-before its name on display is truncated.
-
----
-*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist.
-It prompts for the name of a tab and switches to it, creating a new
-tab if no tab exists by that name.
-
----
-*** New keymap 'tab-bar-history-mode-map'.
-By default, it contains 'C-c <left>' and 'C-c <right>' to browse
-the history of tab window configurations back and forward.
-
----
-** Better detection of text suspiciously reordered on display.
-The function 'bidi-find-overridden-directionality' has been extended
-to detect reordering effects produced by embeddings and isolates
-(started by directional formatting control characters such as RLO and
-LRI). The new command 'highlight-confusing-reorderings' finds and
-highlights segments of buffer text whose reordering for display is
-suspicious and could be malicious.
-
-** Emacs Server and Client
-
-+++
-*** New command-line option '-r'/'--reuse-frame' for emacsclient.
-With this command-line option, Emacs reuses an existing graphical client
-frame if one exists; otherwise it creates a new frame.
-
-+++
-*** New command-line option '-w N'/'--timeout=N' for emacsclient.
-With this command-line option, emacsclient will exit if Emacs does not
-respond within N seconds. The default is to wait forever.
-
-+++
-*** 'server-stop-automatically' can be used to automatically stop the server.
-The Emacs server will be automatically stopped when certain conditions
-are met. The conditions are given by the argument, which can be
-'empty', 'delete-frame' or 'kill-terminal'.
-
-** Rcirc
-
-+++
-*** New command 'rcirc-when'.
-
-+++
-*** New user option 'rcirc-cycle-completion-flag'.
-Rcirc will use the default 'completion-at-point' mechanism. The
-conventional IRC behavior of completing by cycling through the
-available options can be restored by enabling this option.
-
-+++
-*** New user option 'rcirc-bridge-bot-alist'.
-If you are in a channel where a bot is responsible for bridging
-between networks, you can use this variable to make these messages
-appear more native. For example, you might set the option to:
-
- (setopt rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+")))
-
-for messages like
-
- 09:47 <bridge> {john} I am not on IRC
-
-to be reformatted into
-
- 09:47 <john> I am not on IRC
-
----
-*** New formatting commands.
-Most IRC clients (including rcirc) support basic formatting using
-control codes. Under the 'C-c C-f' prefix a few commands have been
-added to insert these automatically. For example, if a region is
-active and 'C-c C-f C-b' is invoked, markup is inserted for the region
-to be highlighted in bold.
-
-** Imenu
-
-+++
-*** 'imenu' is now bound to 'M-g i' globally.
-
----
-*** New function 'imenu-flush-cache'.
-Use it if you want Imenu to forget the buffer's index alist and
-recreate it anew next time 'imenu' is invoked.
-
----
-** Emacs is now capable of abandoning a window's redisplay that takes too long.
-This is controlled by the new variable 'max-redisplay-ticks'. If that
-variable is set to a non-zero value, display of a window will be
-aborted after that many low-level redisplay operations, thus
-preventing Emacs from becoming wedged when visiting files with very
-long lines. The default is zero, which disables the feature: Emacs
-will wait forever for redisplay to finish. (We believe you won't need
-this feature, given the ability to display buffers with very long
-lines.)
-
-
-* Editing Changes in Emacs 29.1
-
-+++
-** 'M-SPC' is now bound to 'cycle-spacing'.
-Formerly it invoked 'just-one-space'. The actions performed by
-'cycle-spacing' and their order can now be customized via the user
-option 'cycle-spacing-actions'.
-
----
-** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars.
-These commands now behave as case-sensitive for interactive calls when
-they are invoked with an uppercase character, regardless of the value
-of 'case-fold-search'.
-
----
-** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping.
-These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other
-windows without looking at customizations in that other window. These
-functions now check whether they have been rebound in the buffer shown
-in that other window, and then call the remapped function instead. In
-addition, these commands now also respect the
-'scroll-error-top-bottom' user option.
-
----
-** Indentation of 'cl-flet' and 'cl-labels' has changed.
-These forms now indent like this:
-
- (cl-flet ((bla (x)
- (* x x)))
- (bla 42))
-
-This change also affects 'cl-macrolet', 'cl-flet*' and
-'cl-symbol-macrolet'.
-
-+++
-** New user option 'translate-upper-case-key-bindings'.
-Set this option to nil to inhibit the default translation of upper
-case keys to their lower case variants.
-
-+++
-** New command 'ensure-empty-lines'.
-This command increases (or decreases) the number of empty lines before
-point.
-
----
-** Improved mouse behavior with auto-scrolling modes.
-When clicking inside the 'scroll-margin' or 'hscroll-margin' region,
-point is now moved only when releasing the mouse button. This no
-longer results in a bogus selection, unless the mouse has also been
-dragged.
-
-+++
-** 'kill-ring-max' now defaults to 120.
-
----
-** New user option 'yank-menu-max-items'.
-Customize this option to limit the number of entries in the menu
-"Edit → Paste from Kill Menu". The default is 60.
-
----
-** New user option 'copy-region-blink-predicate'.
-By default, when copying a region with 'kill-ring-save', Emacs only
-blinks point and mark when the region is not denoted visually, that
-is, when either the region is inactive, or the 'region' face is
-indistinguishable from the 'default' face.
-
-Users who would rather enable blinking unconditionally can now set
-this user option to 'always'. To disable blinking unconditionally,
-either set this option to 'ignore', or set 'copy-region-blink-delay'
-to 0.
-
-+++
-** Performing a pinch gesture on a touchpad now increases the text scale.
-
-** Show Paren Mode
-
-+++
-*** New user option 'show-paren-context-when-offscreen'.
-When non-nil, if the point is in a closing delimiter and the opening
-delimiter is offscreen, shows some context around the opening
-delimiter in the echo area. The default is nil.
-
-This option can also be set to the symbols 'overlay' or 'child-frame',
-in which case the context is shown in an overlay or child-frame at the
-top-left of the current window. The latter option requires a
-graphical frame. On non-graphical frames, the context is shown in the
-echo area.
-
-** Comint
-
-+++
-*** 'comint-term-environment' is now aware of connection-local variables.
-The user option 'comint-terminfo-terminal' and the variable
-'system-uses-terminfo' can now be set as connection-local variables to
-change the terminal used on a remote host.
-
----
-*** New user option 'comint-delete-old-input'.
-When nil, this prevents comint from deleting the current input when
-inserting previous input using '<mouse-2>'. The default is t, to
-preserve previous behavior.
-
----
-*** New minor mode 'comint-fontify-input-mode'.
-This minor mode is enabled by default in "*shell*" and "*ielm*"
-buffers. It fontifies input text according to 'shell-mode' or
-'emacs-lisp-mode' font-lock rules. Customize the user options
-'shell-fontify-input-enable' and 'ielm-fontify-input-enable' to nil if
-you don't want to enable input fontification by default.
-
-** Mwheel
-
----
-*** New user options for alternate wheel events.
-The user options 'mouse-wheel-down-alternate-event' and
-'mouse-wheel-up-alternate-event' as well as the variables
-'mouse-wheel-left-alternate-event' and
-'mouse-wheel-right-alternate-event' have been added to better support
-systems where two kinds of wheel events can be received.
-
-** Internationalization
-
----
-*** The '<Delete>' function key now allows deleting the entire composed sequence.
-For the details, see the item about the 'delete-forward-char' command
-above.
-
----
-*** New user option 'composition-break-at-point'.
-Setting it to a non-nil value temporarily disables automatic
-composition of character sequences at point, and thus makes it easier
-to edit such sequences by allowing point to "enter" the composed
-sequence.
-
----
-*** Support for many old scripts and writing systems.
-Emacs now supports, and has language-environments and input methods,
-for several dozens of old scripts that were used in the past for
-various languages. For each such script Emacs now has font-selection
-and character composition rules, a language environment, and an input
-method. The newly-added scripts and the corresponding language
-environments are:
-
- Tai Tham script and the Northern Thai language environment
-
- Brahmi script and language environment
-
- Kaithi script and language environment
-
- Tirhuta script and language environment
-
- Sharada script and language environment
-
- Siddham script and language environment
-
- Syloti Nagri script and language environment
-
- Modi script and language environment
-
- Baybayin script and Tagalog language environment
-
- Hanunoo script and language environment
-
- Buhid script and language environment
-
- Tagbanwa script and language environment
-
- Limbu script and language environment
-
- Balinese script and language environment
-
- Javanese script and language environment
-
- Sundanese script and language environment
-
- Batak script and language environment
-
- Rejang script and language environment
-
- Makasar script and language environment
-
- Lontara script and language environment
-
- Hanifi Rohingya script and language environment
-
- Grantha script and language environment
-
- Kharoshthi script and language environment
-
- Lepcha script and language environment
-
- Meetei Mayek script and language environment
-
- Adlam script and language environment
-
- Mende Kikakui script and language environment
-
- Wancho script and language environment
-
- Toto script and language environment
-
- Gothic script and language environment
-
- Coptic script and language environment
-
----
-*** The "Oriya" language environment was renamed to "Odia".
-This is to follow the change in the official name of the script. The
-'oriya' input method was also renamed to 'odia'. However, the old
-name of the language environment and the input method are still
-supported.
-
----
-*** New Greek translation of the Emacs tutorial.
-Type 'C-u C-h t' to select it in case your language setup does not do
-so automatically.
-
----
-*** New Ukrainian translation of the Emacs Tutorial.
-
----
-*** New default phonetic input method for the Tamil language environment.
-The default input method for the Tamil language environment is now
-"tamil-phonetic" which is a customizable phonetic input method. To
-change the input method's translation rules, customize the user option
-'tamil-translation-rules'.
-
----
-*** New 'tamil99' input method for the Tamil language.
-This supports the keyboard layout specifically designed for the Tamil
-language.
-
----
-*** New input method 'slovak-qwerty'.
-This is a variant of the 'slovak' input method, which corresponds to
-the QWERTY Slovak keyboards.
-
----
-*** New input method 'cyrillic-chuvash'.
-This input method is based on the russian-computer input method, and
-is intended for typing in the Chuvash language written in the Cyrillic
-script.
-
----
-*** New input method 'cyrillic-mongolian'.
-This input method is for typing in the Mongolian language using the
-Cyrillic script.
+** New command 'kill-matching-buffers-no-ask'.
+This works like 'kill-matching-buffers', but without asking for
+confirmation.
-* Changes in Specialized Modes and Packages in Emacs 29.1
-
-** Ecomplete
-
----
-*** New commands 'ecomplete-edit' and 'ecomplete-remove'.
-These allow you to (respectively) edit and bulk-remove entries from
-the ecomplete database.
-
----
-*** New user option 'ecomplete-auto-select'.
-If non-nil and there's only one matching option, auto-select that.
+* Changes in Specialized Modes and Packages in Emacs 30.1
---
-*** New user option 'ecomplete-filter-regexp'.
-If non-nil, this user option describes what entries not to add to the
-database stored on disk.
+** Variable order and truncation can now be configured in 'gdb-many-windows'.
+The new user option 'gdb-locals-table-row-config' allows users to
+configure the order and max length of various properties in the local
+variables buffer when using 'gdb-many-windows'.
-** Auth Source
+By default, this user option is set to write the properties in the order:
+name, type and value, where the name and type are truncated to 20
+characters, and the value is truncated according to the value of
+'gdb-locals-value-limit'.
-+++
-*** New user option 'auth-source-pass-extra-query-keywords'.
-Whether to recognize additional keyword params, like ':max' and
-':require', as well as accept lists of query terms paired with
-applicable keywords. This disables most known behavioral quirks
-unique to auth-source-pass, such as wildcard subdomain matching.
-
-** Dired
-
-+++
-*** 'dired-guess-shell-command' moved from dired-x to dired.
-This means that 'dired-do-shell-command' will now provide smarter
-defaults without first having to require 'dired-x'. See the node
-"(emacs) Shell Command Guessing" in the Emacs manual for more details.
-
----
-*** 'dired-clean-up-buffers-too' moved from dired-x to dired.
-This means that Dired now offers to kill buffers visiting files and
-dirs when they are deleted in Dired. Before, you had to require
-'dired-x' to enable this behavior. To disable this behavior,
-customize the user option 'dired-clean-up-buffers-too' to nil. The
-related user option 'dired-clean-confirm-killing-deleted-buffers'
-(which see) has also been moved to 'dired'.
-
-+++
-*** 'dired-do-relsymlink' moved from dired-x to dired.
-The corresponding key 'Y' is now bound by default in Dired.
-
-+++
-*** 'dired-do-relsymlink-regexp' moved from dired-x to dired.
-The corresponding key sequence '% Y' is now bound by default in Dired.
-
----
-*** 'M-G' is now bound to 'dired-goto-subdir'.
-Before, that binding was only available if the dired-x package was
-loaded.
+If you want to get back the old behavior, set the user option to the value
-+++
-*** 'dired-info' and 'dired-man' moved from dired-x to dired.
-The 'dired-info' and 'dired-man' commands have been moved from the
-dired-x package to dired. They have also been renamed to
-'dired-do-info' and 'dired-do-man'; the old command names are obsolete
-aliases.
-
-The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound
-in Dired mode by default. The user options 'dired-bind-man' and
-'dired-bind-info' no longer have any effect and are obsolete.
-
-To get the old behavior back and unbind these keys in Dired mode, add
-the following to your Init file:
-
- (with-eval-after-load 'dired
- (keymap-set dired-mode-map "N" nil)
- (keymap-set dired-mode-map "I" nil))
-
----
-*** New command 'dired-do-eww'.
-This command visits the file on the current line with EWW.
-
----
-*** New user option 'dired-omit-lines'.
-This is used by 'dired-omit-mode', and now allows you to hide based on
-other things than just the file names.
-
-+++
-*** New user option 'dired-mouse-drag-files'.
-If non-nil, dragging file names with the mouse in a Dired buffer will
-initiate a drag-and-drop session allowing them to be opened in other
-programs.
-
-+++
-*** 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 behavior
-back, say:
-
- (setopt dired-free-space 'separate)
-
----
-*** New user option 'dired-make-directory-clickable'.
-If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
-the directory components at the directory displayed at the start of
-the buffer will take you to that directory.
-
----
-*** Search and replace in Dired/Wdired supports more regexps.
-For example, the regexp ".*" will match only characters that are part
-of the file name. Also "^.*$" can be used to match at the beginning
-of the file name and at the end of the file name. This is used only
-when searching on file names. In Wdired this can be used when the new
-user option 'wdired-search-replace-filenames' is non-nil (which is the
-default).
-
-** Elisp
-
----
-*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e').
-This command evals the forms in the active region or in the whole buffer.
-
----
-*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'.
-These commands (bound to 'C-c C-f' and 'C-c C-b', respectively)
-byte-compile the visited file and the current buffer, respectively.
-
-** Games
-
----
-*** New user option 'tetris-allow-repetitions'.
-This controls how randomness is implemented (whether to use pure
-randomness as before, or to use a bag).
-
-** Battery
-
-+++
-*** New user option 'battery-update-functions'.
-This can be used to trigger actions based on the battery status.
-
-** DocView
-
----
-*** doc-view can now generate SVG images when viewing PDF files.
-If Emacs is built with SVG support, doc-view can generate SVG files
-when using MuPDF as the converter for PDF files, which generally leads
-to sharper images (especially when zooming), and allows customization
-of background and foreground color of the page via the new user
-options 'doc-view-svg-background' and 'doc-view-svg-foreground'. To
-activate this behavior, set 'doc-view-mupdf-use-svg' to non-nil if
-your Emacs has SVG support. Note that, with some versions of MuPDF,
-SVG generation is known to sometimes produce SVG files that are buggy
-or can take a long time to render.
-
-** Enriched Mode
-
-+++
-*** New command 'enriched-toggle-markup'.
-This allows you to see the markup in 'enriched-mode' buffers (e.g.,
-the "HELLO" file).
-
-** Shell Script Mode
-
----
-*** New user option 'sh-indent-statement-after-and'.
-This controls how statements like the following are indented:
-
- foo &&
- bar
-
-*** New Flymake backend using the ShellCheck program.
-It is enabled by default, but requires that the external "shellcheck"
-command is installed.
-
-** CC Mode
-
----
-*** C++ Mode now supports most of the new features in the C++20 Standard.
-
----
-*** In Objective-C Mode, no extra types are recognized by default.
-The default value of 'objc-font-lock-extra-types' has been changed to
-nil, since too many identifiers were getting misfontified as types.
-This may cause some actual types not to get fontified. To get the old
-behavior back, customize the user option to the value suggested in its
-doc string.
-
-** Cperl Mode
-
----
-*** New user option 'cperl-file-style'.
-This option determines the indentation style to be used. It can also
-be used as a file-local variable.
-
-** Gud
-
----
-*** 'gud-go' is now bound to 'C-c C-v'.
-If given a prefix, it will prompt for an argument to use for the
-run/continue command.
-
----
-*** 'perldb' now recognizes '-E'.
-As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates
-all optional features of the Perl version in use. 'perldb' now uses
-this invocation as its default.
-
-** Customize
-
----
-*** New command 'custom-toggle-hide-all-widgets'.
-This is bound to 'H' and toggles whether to hide or show the widget
-contents.
-
-** Diff Mode
-
----
-*** New user option 'diff-whitespace-style'.
-Sets the value of the buffer-local variable 'whitespace-style' in
-'diff-mode' buffers. By default, this variable is '(face trailing)',
-which preserves behavior of previous Emacs versions.
-
-+++
-*** New user option 'diff-add-log-use-relative-names'.
-If non-nil insert file names in ChangeLog skeletons relative to the
-VC root directory.
-
-** Ispell
-
----
-*** 'ispell-region' and 'ispell-buffer' now push the mark.
-These commands push onto the mark ring the location of the last
-misspelled word where corrections were offered, so that you can then
-skip back to that location with 'C-x C-x'.
-
-** Dabbrev
-
----
-*** New function 'dabbrev-capf' for use on 'completion-at-point-functions'.
-
-+++
-*** New user option 'dabbrev-ignored-buffer-modes'.
-Buffers with major modes in this list will be ignored. By default,
-this includes "binary" buffers like 'archive-mode' and 'image-mode'.
-
-** Package
-
-+++
-*** New command 'package-update'.
-This command allows you to upgrade packages without using 'M-x
-list-packages'.
-
-+++
-*** New command 'package-update-all'.
-This command allows updating all packages without any queries.
-
-+++
-*** New commands 'package-recompile' and 'package-recompile-all'.
-These commands can be useful if the ".elc" files are out of date
-(invalid byte code and macros).
-
-+++
-*** New DWIM action on 'x' in "*Packages*" buffer.
-If no packages are marked, 'x' will install the package under point if
-it isn't already, and remove it if it is installed.
-
-+++
-*** New command 'package-vc-install'.
-Packages can now be installed directly from source by cloning from
-their repository.
-
-+++
-*** New command 'package-vc-install-from-checkout'.
-An existing checkout can now be loaded via package.el, by creating a
-symbolic link from the usual package directory to the checkout.
-
-+++
-*** New command 'package-vc-checkout'.
-Used to fetch the source of a package by cloning a repository without
-activating the package.
-
-+++
-*** New command 'package-vc-prepare-patch'.
-This command allows you to send patches to package maintainers, for
-packages checked out using 'package-vc-install'.
-
-+++
-*** New command 'package-report-bug'.
-This command helps you compose an email for sending bug reports to
-package maintainers.
-
-+++
-*** New user option 'package-vc-selected-packages'.
-By customizing this user option you can specify specific packages to
-install.
-
-** Emacs Sessions (Desktop)
-
-+++
-*** New user option to load a locked desktop if locking Emacs is not running.
-The option 'desktop-load-locked-desktop' can now be set to the value
-'check-pid', which means to allow loading a locked ".emacs.desktop"
-file if the Emacs process which locked it is no longer running on the
-local machine. This allows avoiding questions about locked desktop
-files when the Emacs session which locked it crashes, or was otherwise
-interrupted and didn't exit gracefully. See the "(emacs) Saving
-Emacs Sessions" node in the Emacs manual for more details.
-
-** Miscellaneous
-
-+++
-*** New command 'scratch-buffer'.
-This command switches to the "*scratch*" buffer. If "*scratch*" doesn't
-exist, the command creates it first. You can use this command if you
-inadvertently delete the "*scratch*" buffer.
-
-** Debugging
-
----
-*** 'q' in a "*Backtrace*" buffer no longer clears the buffer.
-Instead it just buries the buffer and switches the mode from
-'debugger-mode' to 'backtrace-mode', since commands like 'e' are no
-longer available after exiting the recursive edit.
-
-+++
-*** New user option 'debug-allow-recursive-debug'.
-This user option controls whether the 'e' (in a "*Backtrace*"
-buffer or while edebugging) and 'C-x C-e' (while edebugging) commands
-lead to a (further) backtrace. By default, this variable is nil,
-which is a change in behavior from previous Emacs versions.
-
-+++
-*** 'e' in edebug can now take a prefix arg to pretty-print the results.
-When invoked with a prefix argument, as in 'C-u e', this command will
-pop up a new buffer and show the full pretty-printed value there.
-
-+++
-*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results.
-When invoked with a non-zero prefix argument, as in 'C-u C-x C-e',
-this command will pop up a new buffer and show the full pretty-printed
-value there.
-
-+++
-*** You can now generate a backtrace from Lisp errors in redisplay.
-To do this, set the new variable 'backtrace-on-redisplay-error' to a
-non-nil value. The backtrace will be written to a special buffer
-named "*Redisplay-trace*". This buffer will not be automatically
-displayed in a window.
+ (setopt gdb-locals-table-row-config
+ `((type . 0) (name . 0) (value . ,gdb-locals-value-limit)))
** Compile
-+++
-*** New user option 'compilation-hidden-output'.
-This can be used to make specific parts of compilation output
-invisible.
-
-+++
-*** The 'compilation-auto-jump-to-first-error' user option has been extended.
-It can now have the additional values 'if-location-known' (which will
-only jump if the location of the first error is known), and
-'first-known' (which will jump to the first known error location).
-
-+++
-*** New user option 'compilation-max-output-line-length'.
-Lines longer than the value of this option will have their ends
-hidden, with a button to reveal the hidden text. This speeds up
-operations like grepping on files that have few newlines. The default
-value is 400; set to nil to disable hiding.
-
-** Flymake
-
-+++
-*** New user option 'flymake-mode-line-lighter'.
-
-+++
-** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'.
-This mode switches 'word-wrap' on, and breaks on all the whitespace
-characters instead of just 'SPC' and 'TAB'.
-
----
-** New mode, 'emacs-news-mode', for editing the NEWS file.
-This mode adds some highlighting, makes the 'M-q' command aware of the
-format of NEWS entries, and has special commands for doing maintenance
-of the Emacs NEWS files. In addition, this mode turns on
-'outline-minor-mode', and thus displays customizable icons (see
-'icon-preference') in the margins. To disable these icons, set
-'outline-minor-mode-use-buttons' to a nil value.
-
----
-** Kmacro
-Kmacros are now OClosures and have a new constructor 'kmacro' which
-uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form'
-(which is now declared obsolete).
-
----
-** savehist.el can now truncate variables that are too long.
-An element of user option 'savehist-additional-variables' can now be
-of the form '(VARIABLE . MAX-ELTS)', which means to truncate the
-VARIABLE's value to at most MAX-ELTS elements (if the value is a list)
-before saving the value.
-
-** Minibuffer and Completions
-
-+++
-*** New commands for navigating completions from the minibuffer.
-When the minibuffer is the current buffer, typing 'M-<up>' or
-'M-<down>' selects a previous/next completion candidate from the
-"*Completions*" buffer and inserts it to the minibuffer.
-When the user option 'minibuffer-completion-auto-choose' is nil,
-'M-<up>' and 'M-<down>' do the same, but without inserting
-a completion candidate to the minibuffer, then 'M-RET' can be used
-to choose the currently active candidate from the "*Completions*"
-buffer and exit the minibuffer. With a prefix argument, 'C-u M-RET'
-inserts the currently active candidate to the minibuffer, but doesn't
-exit the minibuffer. These keys are also available for in-buffer
-completion, but they don't insert candidates automatically, you need
-to type 'M-RET' to insert the selected candidate to the buffer.
-
-+++
-*** Choosing a completion with a prefix argument doesn't exit the minibuffer.
-This means that typing 'C-u RET' on a completion candidate in the
-"*Completions*" buffer inserts the completion into the minibuffer,
-but doesn't exit the minibuffer.
-
-+++
-*** The "*Completions*" buffer can now be automatically selected.
-To enable this behavior, customize the user option
-'completion-auto-select' to t, then pressing 'TAB' will switch to the
-"*Completions*" buffer when it pops up that buffer. If the value is
-'second-tab', then the first 'TAB' will display "*Completions*", and
-the second one will switch to the "*Completions*" buffer.
-
----
-*** New user option 'completion-auto-wrap'.
-When non-nil, the commands 'next-completion' and 'previous-completion'
-automatically wrap around on reaching the beginning or the end of
-the "*Completions*" buffer.
-
-+++
-*** New values for the 'completion-auto-help' user option.
-There are two new values to control the way the "*Completions*" buffer
-behaves after pressing a 'TAB' if completion is not unique. The value
-'always' updates or shows the "*Completions*" buffer after any attempt
-to complete. The value 'visual' is like 'always', but only updates
-the completions if they are already visible. The default value t
-always hides the completion buffer after some completion is made.
-
----
-*** New commands to complete the minibuffer history.
-'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete'
-but completes on the history items instead of the default completion
-table. 'minibuffer-complete-defaults' ('C-x <down>') completes
-on the list of default items.
-
-+++
-*** User option 'minibuffer-eldef-shorten-default' is now obsolete.
-Customize the user option 'minibuffer-default-prompt-format' instead.
-
-+++
-*** New user option 'completions-sort'.
-This option controls the sorting of the completion candidates in
-the "*Completions*" buffer. Available styles are no sorting,
-alphabetical (the default), or a custom sort function.
-
-+++
-*** New user option 'completions-max-height'.
-This option limits the height of the "*Completions*" buffer.
-
-+++
-*** New user option 'completions-header-format'.
-This is a string to control the header line to show in the
-"*Completions*" buffer before the list of completions.
-If it contains "%s", that is replaced with the number of completions.
-If nil, the header line is not shown.
-
-+++
-*** New user option 'completions-highlight-face'.
-When this user option names a face, the current
-candidate in the "*Completions*" buffer is highlighted with that face.
-The nil value disables this highlighting. The default is to highlight
-using the 'completions-highlight' face.
-
-+++
-*** You can now define abbrevs for the minibuffer modes.
-'minibuffer-mode-abbrev-table' and
-'minibuffer-inactive-mode-abbrev-table' are now defined.
-
-** Isearch and Replace
-
-+++
-*** Changes in how Isearch responds to 'mouse-yank-at-point'.
-If a user does 'C-s' and then uses '<mouse-2>' ('mouse-yank-primary')
-outside the echo area, Emacs will, by default, end the Isearch and
-yank the text at mouse cursor. But if 'mouse-yank-at-point' is
-non-nil, the text will now be added to the Isearch instead.
-
-+++
-*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'.
-Now with these values the search will wrap around not only on repeating
-with 'C-s C-s', but also after typing a character.
-
-+++
-*** New user option 'char-fold-override'.
-Non-nil means that the default definitions of equivalent characters
-are overridden.
-
-*** New command 'describe-char-fold-equivalences'.
-It displays character equivalences used by 'char-fold-to-regexp'.
-
-+++
-*** New command 'isearch-emoji-by-name'.
-It is bound to 'C-x 8 e RET' during an incremental search. The
-command accepts the Unicode name of an Emoji (for example, "smiling
-face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer
-completion, and adds the Emoji into the search string.
-
-** GDB/MI
-
----
-*** New user option 'gdb-debuginfod-enable-setting'.
-On capable platforms, GDB 10.1 and later can download missing source
-and debug info files from special-purpose servers, called "debuginfod
-servers". Use this new option to control whether 'M-x gdb' instructs
-GDB to download missing files from debuginfod servers when you debug
-the corresponding programs. The default is to ask you at the
-beginning of each debugging session whether to download the files for
-that session.
-
-** Glyphless Characters
-
-+++
-*** New minor mode 'glyphless-display-mode'.
-This allows an easy way to toggle seeing all glyphless characters in
-the current buffer.
-
----
-*** The extra slot of 'glyphless-char-display' can now have cons values.
-The extra slot of the 'glyphless-char-display' char-table can now have
-values that are cons cells, specifying separate values for text-mode
-and GUI terminals.
-
-+++
-*** "Replacement character" feature for undisplayable characters on TTYs.
-The 'acronym' method of displaying glyphless characters on text-mode
-frames treats single-character acronyms specially: they are displayed
-without the surrounding '[..]' "box", thus in effect treating such
-"acronyms" as replacement characters.
-
-** Registers
-
-+++
-*** Buffer names can now be stored in registers.
-For instance, to enable jumping to the "*Messages*" buffer with
-'C-x r j m':
-
- (set-register ?m '(buffer . "*Messages*"))
-
-** Pixel Fill
-
-+++
-*** This is a new package that deals with filling variable-pitch text.
-
-+++
-*** New function 'pixel-fill-region'.
-This fills the region to be no wider than a specified pixel width.
-
-** Info
-
-+++
-*** Command 'info-apropos' now takes a prefix argument to search for regexps.
-
----
-*** New command 'Info-goto-node-web' and key binding 'G'.
-This will take you to the "gnu.org" web server's version of the current
-info node. This command only works for the Emacs and Emacs Lisp manuals.
-
-** Shortdoc
-
----
-*** New command 'shortdoc-copy-function-as-kill' bound to 'w'.
-It copies the name of the function near point into the kill ring.
-
----
-*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'.
-This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
+*** New user option 'grep-use-headings'.
+When non-nil, the output of Grep is split into sections, one for each
+file, instead of having file names prefixed to each line. It is
+equivalent to the "--heading" option of some tools such as 'git grep'
+and 'rg'. The headings are displayed using the new 'grep-heading'
+face.
** VC
---
-*** New command 'vc-pull-and-push'.
-This commands first does a "pull" command, and if that is successful,
-does a "push" command afterwards. Currently supported in Git and Bzr.
-
-+++
-*** 'C-x v b' prefix key is used now for branch commands.
-'vc-print-branch-log' is bound to 'C-x v b l', and new commands are
-'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s').
-The VC Directory buffer now uses the prefix 'b' for these branch-related
-commands.
-
-+++
-*** New command 'vc-dir-mark-by-regexp' bound to '% m' and '* %'.
-This command marks files based on a regexp. If given a prefix
-argument, unmark instead.
-
-+++
-*** New command 'C-x v !' ('vc-edit-next-command').
-This prefix command requests editing of the next VC shell command
-before execution. For example, in a Git repository, you can produce a
-log of more than one branch by typing 'C-x v ! C-x v b l' and then
-appending additional branch names to the 'git log' command.
-
-The intention is that this command can be used to access a wide
-variety of version control system-specific functionality from VC
-without complexifying either the VC command set or the backend API.
-
----
-*** 'C-x v v' in a diffs buffer allows to commit only some of the changes.
-This command is intended to allow you to commit only some of the
-changes you have in your working tree. Begin by creating a buffer
-with the changes against the last commit, e.g. with 'C-x v D'
-('vc-root-diff'). Then edit the diffs to remove the hunks you don't
-want to commit. Finally, type 'C-x v v' in that diff buffer to commit
-only part of your changes, those whose hunks were left in the buffer.
-
----
-*** 'C-x v v' on an unregistered file will now use the most specific backend.
-Previously, if you had an SVN-covered "~/" directory, and a Git-covered
-directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file
-"~/foo/bar/zot" would register it in the SVN repository in "~/" instead of
-in the Git repository in "~/foo/bar". This makes this command
-consistent with 'vc-responsible-backend'.
-
----
-*** Log Edit now fontifies long Git commit summary lines.
-Writing shorter summary lines avoids truncation in contexts in which
-Git commands display summary lines. See the two new user options
-'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'.
-
----
-*** New 'log-edit-headers-separator' face.
-It is used to style the line that separates the 'log-edit' headers
-from the 'log-edit' summary.
-
----
-*** The function 'vc-read-revision' accepts a new MULTIPLE argument.
-If non-nil, multiple revisions can be queried. This is done using
-'completing-read-multiple'.
-
----
-*** New function 'vc-read-multiple-revisions'.
-This function invokes 'vc-read-revision' with a non-nil value for
-MULTIPLE.
-
-+++
-*** New command 'vc-prepare-patch'.
-Patches for any version control system can be prepared using VC. The
-command will query what commits to send and will compose messages for
-your mail user agent. The behavior of 'vc-prepare-patch' can be
-modified by the user options 'vc-prepare-patches-separately' and
-'vc-default-patch-addressee'.
-
-** Message
-
----
-*** New user option 'mml-attach-file-at-the-end'.
-If non-nil, 'C-c C-a' will put attached files at the end of the message.
-
----
-*** Message Mode now supports image yanking.
-
-+++
-*** New user option 'message-server-alist'.
-This controls automatic insertion of the "X-Message-SMTP-Method"
-header before sending a message.
-
-** HTML Mode
-
----
-*** HTML Mode now supports "text/html" and "image/*" yanking.
-
-** Texinfo Mode
-
----
-*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition.
-It narrows to the current node.
+*** New user option 'vc-git-shortlog-switches'.
+This is a string or a list of strings that specifies the Git log
+switches for shortlogs, such as the one produced by 'C-x v L'.
+'vc-git-log-switches' is no longer used for shortlogs.
-** EUDC
-
-+++
-*** Deprecations planned for next release.
-After Emacs 29.1, some aspects of EUDC will be deprecated. The goal
-of these deprecations is to simplify EUDC server configuration by
-making 'eudc-server-hotlist' the only place to add servers. There
-will not be a need to set the server using the 'eudc-set-server'
-command. Instead, the 'eudc-server-hotlist' user option should be
-customized to have an entry for the server. The plan is to obsolete
-the 'eudc-hotlist' package since Customize is sufficient for changing
-'eudc-server-hotlist'. How the 'eudc-server' user option works in this
-context is to-be-determined; it can't be removed, because that would
-break compatibility, but it may become synchronized with
-'eudc-server-hotlist' so that 'eudc-server' is always equal to '(car
-eudc-server-hotlist)'. The first entry in 'eudc-server-hotlist' is the
-first server tried by 'eudc-expand-try-all'. The hotlist
-simplification will allow 'eudc-query-form' to show a drop down of
-possible servers, instead of requiring a call to 'eudc-set-server'
-like it does in this release. The default value of
-'eudc-ignore-options-file' will be changed from nil to t.
-
-+++
-*** New user option 'eudc-ignore-options-file' that defaults to nil.
-The 'eudc-ignore-options-file' user option can be configured to ignore
-the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most
-users should configure this to t and put EUDC configuration in the
-main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el").
-
-+++
-*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'.
-The user option 'eudc-expansion-overwrites-query' is renamed to
-'eudc-expansion-save-query-as-kill' to reflect the actual behavior of
-the user option. The former is kept as alias.
-
-+++
-*** New command 'eudc-expand-try-all'.
-This command can be used in place of 'eudc-expand-inline'. It takes a
-prefix argument that causes 'eudc-expand-try-all' to return matches
-from all servers instead of just the matches from the first server to
-return any. This is useful for example, if one wants to search LDAP
-for a name that happens to match a contact in one's BBDB.
-
-+++
-*** New behavior and default for user option 'eudc-inline-expansion-format'.
-EUDC inline expansion result formatting defaulted to
-
- ("%s %s <%s>" firstname name email)
-
-Since email address specifications need to comply with RFC 5322 in
-order to be useful in messages, there was a risk to produce syntax
-which was standard with RFC 822, but is marked as obsolete syntax by
-its successor RFC 5322. Also, the first and last name part was never
-enclosed in double quotes, potentially producing invalid address
-specifications, which may be rejected by a receiving MTA. Thus, this
-variable can now additionally be set to nil (the new default), or a
-function. In both cases, the formatted result will be in compliance
-with RFC 5322. When set to nil, a default format very similar to the
-old default will be produced. When set to a function, that function
-is called, and the returned values are used to populate the phrase and
-comment parts (see RFC 5322 for definitions). In both cases, the
-phrase part will be automatically quoted if necessary.
-
-+++
-*** New function 'eudc-capf-complete' with 'message-mode' integration.
-EUDC can now contribute email addresses to 'completion-at-point' by
-adding the new function 'eudc-capf-complete' to
-'completion-at-point-functions' in 'message-mode'.
-
-+++
-*** Additional attributes of query and results in eudcb-macos-contacts.el.
-The EUDC back-end for the macOS Contacts app now provides a wider set
-of attributes to use for queries, and delivers more attributes in
-query results.
-
-+++
-*** New back-end for ecomplete.
-A new back-end for ecomplete allows information from that database to
-be queried by EUDC, too. The attributes present in the EUDC query are
-used to select the entry type in the ecomplete database.
-
-+++
-*** New back-end for mailabbrev.
-A new back-end for mailabbrev allows information from that database to
-be queried by EUDC, too. The attributes 'email', 'name', and 'firstname'
-are supported only.
-
-** EWW/SHR
-
-+++
-*** New user option to automatically rename EWW buffers.
-The 'eww-auto-rename-buffer' user option can be configured to rename
-rendered web pages by using their title, URL, or a user-defined
-function which returns a string. For the first two cases, the length
-of the resulting name is controlled by the user option
-'eww-buffer-name-length'. By default, no automatic renaming is
-performed.
-
-+++
-*** New user option 'shr-allowed-images'.
-This complements 'shr-blocked-images', but allows specifying just the
-allowed images.
-
-+++
-*** New user option 'shr-use-xwidgets-for-media'.
-If non-nil (and Emacs has been built with support for xwidgets),
-display <video> elements with an xwidget. Note that this is
-experimental; it is known to crash Emacs on some systems, and just
-doesn't work on other systems. Also see etc/PROBLEMS.
-
-+++
-*** New user option 'eww-url-transformers'.
-These are used to alter an URL before using it. By default it removes
-the common "utm_" trackers from URLs.
-
-** Find Dired
-
----
-*** New command 'find-dired-with-command'.
-This enables users to run 'find-dired' with an arbitrary command,
-enabling running commands previously unsupported and also enabling new
-commands to be built on top.
-
-** Gnus
-
-+++
-*** Tool bar changes in Gnus/Message.
-There were previously two styles of tool bars available in Gnus and
-Message, referred to as 'gnus-summary-tool-bar-retro',
-'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and
-'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and
-'message-tool-bar-gnome'. The "retro" tool bars have been removed (as
-well as the icons used), and the "gnome" tool bars are now the only
-pre-defined toolbars.
-
----
-*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed.
-The 'gnus-summary-down-thread' binding to 'M-C-d' was shadowed by
-'gnus-summary-read-document', and these commands are also available on
-'T u' and 'T d' respectively.
-
----
-*** Gnus now uses a variable-pitch font in the headers by default.
-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)
-
----
-*** The default value of 'gnus-treat-fold-headers' is now 'head'.
-
----
-*** New face 'gnus-header'.
-All other 'gnus-header-*' faces inherit from this face now.
-
-+++
-*** New user option 'gnus-treat-emojize-symbols'.
-If non-nil, symbols that have an Emoji representation will be
-displayed as emojis. The default is nil.
-
-+++
-*** New command 'gnus-article-emojize-symbols'.
-This is bound to 'W D e' and will display symbols that have Emoji
-representation as Emoji.
-
-+++
-*** New mu backend for gnus-search.
-Configuration is very similar to the notmuch and namazu backends. It
-supports the unified search syntax.
-
----
-*** 'gnus-html-image-cache-ttl' is now a seconds count.
-Formerly it was a pair of numbers '(A B)' that represented 65536*A + B,
-to cater to older Emacs implementations that lacked bignums.
-The older form still works but is undocumented.
-
-** Rmail
-
----
-*** Rmail partial summaries can now be applied one on top of the other.
-You can now narrow the set of messages selected by Rmail summary's
-criteria (recipients, topic, senders, etc.) by making a summary of the
-already summarized messages. For example, invoking
-'rmail-summary-by-senders', followed by 'rmail-summary-by-topic' will
-produce a summary where both the senders and the topic are according
-to your selection. The new user option
-'rmail-summary-progressively-narrow' controls whether the stacking of
-the filters is in effect; customize it to a non-nil value to enable
-this feature.
-
----
-*** New Rmail summary: by thread.
-The new command 'rmail-summary-by-thread' produces a summary of
-messages that belong to a single thread of discussion.
-
-** EIEIO
-
-+++
-*** 'slot-value' can now be used to access slots of 'cl-defstruct' objects.
-
-** Align
-
----
-*** Alignment in 'text-mode' has changed.
-Previously, 'M-x align' didn't do anything, and you had to say 'C-u
-M-x align' for it to work. This has now been changed. The default
-regexp for 'C-u M-x align-regexp' has also been changed to be easier
-for inexperienced users to use.
-
-** Help
-
----
-*** New mode, 'emacs-news-view-mode', for viewing the NEWS file.
-This mode is used by the 'C-h N' command, and adds buttons to manual
-entries and symbol references.
-
----
-*** New user option 'help-link-key-to-documentation'.
-When this option is non-nil (which is the default), key bindings
-displayed in the "*Help*" buffer will be linked to the documentation
-for the command they are bound to. This does not affect listings of
-key bindings and functions (such as 'C-h b').
-
-** Info Look
-
----
-*** info-look specs can now be expanded at run time instead of a load time.
-The new ':doc-spec-function' element can be used to compute the
-':doc-spec' element when the user asks for info on that particular
-mode (instead of at load time).
-
-** Ansi Color
-
----
-*** Support for ANSI 256-color and 24-bit colors.
-256-color and 24-bit color codes are now handled by ANSI color
-filters and displayed with the specified color.
-
-** Term Mode
-
----
-*** New user option 'term-bind-function-keys'.
-If non-nil, 'term-mode' will pass the function keys on to the
-underlying shell instead of using the normal Emacs bindings.
-
----
-*** Support for ANSI 256-color and 24-bit colors, italic and other fonts.
-'term-mode' can now display 256-color and 24-bit color codes. It can
-also handle ANSI codes for faint, italic and blinking text, displaying
-it with new 'term-{faint,italic,slow-blink,fast-blink}' faces.
-
-** Project
-
-+++
-*** 'project-find-file' and 'project-or-external-find-file' can include all.
-The commands 'project-find-file' and 'project-or-external-find-file'
-now accept a prefix argument, which is interpreted to mean "include
-all files".
-
-+++
-*** New command 'project-list-buffers' bound to 'C-x p C-b'.
-This command displays a list of buffers from the current project.
-
-+++
-*** 'project-kill-buffers' can display the list of buffers to kill.
-Customize the user option 'project-kill-buffers-display-buffer-list'
-to enable the display of the buffer list.
-
-*** New user option 'project-vc-extra-root-markers'.
-Use it to add detection of nested projects (inside a VCS repository),
-or projects outside of VCS repositories.
-
-As a consequence, the 'VC project backend' is formally renamed to
-'VC-aware project backend'.
-
-+++
-*** New user option 'project-vc-include-untracked'.
-If non-nil, files untracked by a VCS are considered to be part of
-the project by a VC project based on that VCS.
-
-** Xref
-
-+++
-*** New command 'xref-go-forward'.
-It is bound to 'C-M-,' and jumps to the location where you previously
-invoked 'xref-go-back' ('M-,', also known as 'xref-pop-marker-stack').
-
-+++
-*** The depth of the Xref marker stack is now infinite.
-The implementation of the Xref marker stack was changed in a way that
-allows as many places to be saved on the stack as needed, limited only
-by the available memory. Therefore, the variables
-'find-tag-marker-ring-length' and 'xref-marker-ring-length' are now
-obsolete and unused; setting them has no effect.
-
-+++
-*** 'xref-query-replace-in-results' prompting change.
-This command no longer prompts for FROM when called without prefix
-argument. This makes the most common case faster: replacing entire
-matches.
-
-+++
-*** New command 'xref-find-references-and-replace' to rename one identifier.
-
----
-*** New variable 'xref-current-item' (renamed from a private version).
-
----
-*** New function 'xref-show-xrefs'.
-
-*** 'outline-minor-mode' is supported in Xref buffers.
-You can enable outlining by adding 'outline-minor-mode' to
-'xref-after-update-hook'.
-
-** File Notifications
-
-+++
-*** The new command 'file-notify-rm-all-watches' removes all file notifications.
-
-** Sql
-
----
-*** Sql now supports sending of passwords in-process.
-To improve security, if an sql product has ':password-in-comint' set
-to t, a password supplied via the minibuffer will be sent in-process,
-as opposed to via the command-line.
-
-** Image Mode
-
-+++
-*** New command 'image-transform-fit-to-window'.
-This command fits the image to the current window by scaling down or
-up as necessary. Unlike 'image-transform-fit-both', this does not
-only scale the image down, but up as well. It is bound to 's w' in
-Image Mode by default.
-
----
-*** New command 'image-mode-wallpaper-set'.
-This command sets the desktop background to the current image. It is
-bound to 'W' by default.
-
-+++
-*** 'image-transform-fit-to-{height,width}' are now obsolete.
-Use the new command 'image-transform-fit-to-window' instead.
-The keybinding for 'image-transform-fit-to-width' is now 's i'.
-
----
-*** User option 'image-auto-resize' can now be set to 'fit-window'.
-This works like 'image-transform-fit-to-window'.
-
----
-*** New user option 'image-auto-resize-max-scale-percent'.
-The new 'fit-window' option will never scale an image more than this
-much (in percent). It is nil by default, which means no limit.
-
----
-*** New user option 'image-text-based-formats'.
-This controls whether or not to show a message when opening certain
-image formats saying how to edit it as text. The default is to show
-this message for SVG and XPM.
-
-+++
-*** New command 'image-transform-set-percent'.
-It allows setting the image size to a percentage of its original size,
-and is bound to 's p' in Image mode.
-
-+++
-*** 'image-transform-original' renamed to 'image-transform-reset-to-original'.
-The old name was confusing, and is now an obsolete function alias.
-
-+++
-*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'.
-The old name was confusing, and is now an obsolete function alias.
-
-** Images
-
-+++
-** New commands 'image-crop' and 'image-cut'.
-These commands allow interactively cropping/cutting the image at
-point. The commands are bound to keys 'i c' and 'i x' (respectively)
-in the local keymap over images. They rely on external programs, by
-default "convert" from ImageMagick, to do the actual cropping/eliding
-of the image file.
-
-+++
-*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'.
-These commands horizontally and vertically flip the image under point,
-and are bound to 'i h' and 'i v', respectively.
+** Diff Mode
+++
-*** Users can now add special image conversion functions.
-This is done via 'image-converter-add-handler'.
-
-** Image Dired
+*** 'diff-ignore-whitespace-hunk' can now be applied to all hunks.
+When called with a non-nil prefix argument,
+'diff-ignore-whitespace-hunk' now iterates over all the hunks in the
+current diff, regenerating them without whitespace changes.
+++
-*** 'image-dired-image-mode' is now based on 'image-mode'.
-This avoids converting images in the background, and makes Image-Dired
-noticeably faster. New keybindings from 'image-mode' are now
-available in the "*image-dired-display-image*" buffer; press '?' or
-'h' in that buffer to see the full list.
-
----
-*** Navigation and marking commands now work in image display buffer.
-The following new bindings have been added:
-- 'n', 'SPC' => 'image-dired-display-next'
-- 'p', 'DEL' => 'image-dired-display-previous'
-- 'm' => 'image-dired-mark-thumb-original-file'
-- 'd' => 'image-dired-flag-thumb-original-file'
-- 'u' => 'image-dired-unmark-thumb-original-file'
-
----
-*** New command 'image-dired-unmark-all-marks'.
-It removes all marks from all files in the thumbnail and the
-associated Dired buffer, and is bound to 'U' in the thumbnail and
-display buffer.
-
----
-*** New command 'image-dired-do-flagged-delete'.
-It deletes all flagged files, and is bound to 'x' in the thumbnail
-buffer. It replaces the command 'image-dired-delete-marked', which is
-now an obsolete alias.
+*** New user option 'diff-ignore-whitespace-switches'.
+This allows changing which type of whitespace changes are ignored when
+regenerating hunks with 'diff-ignore-whitespace-hunk'. Defaults to
+the previously hard-coded "-b".
----
-*** New command 'image-dired-copy-filename-as-kill'.
-It copies the name of the marked or current image to the kill ring,
-and is bound to 'w' in the thumbnail buffer.
-
----
-*** New command 'image-dired-wallpaper-set'.
-This command sets the desktop background to the image at point in the
-thumbnail buffer. It is bound to 'W' by default.
-
----
-*** 'image-dired-slideshow-start' is now bound to 'S'.
-It is bound in both the thumbnail and display buffer, and no longer
-prompts for a timeout; use a numerical prefix (e.g. 'C-u 8 S') to set
-the timeout.
-
----
-*** New user option 'image-dired-marking-shows-next'.
-If this option is non-nil (the default), marking, unmarking or
-flagging an image in either the thumbnail or display buffer shows the
-next image.
-
----
-*** New face 'image-dired-thumb-flagged'.
-If 'image-dired-thumb-mark' is non-nil (the default), this face is
-used for images that are flagged for deletion in the Dired buffer
-associated with Image-Dired.
-
----
-*** Image information is now shown in the header line of the thumbnail buffer.
-This replaces the message that most navigation commands in the
-thumbnail buffer used to show at the bottom of the screen.
-
----
-*** New specifiers for 'image-dired-display-properties-format'.
-This is used to format the new header line. The new specifiers are:
-"%d" for the name of the directory that the file is in, "%n" for
-file's number in the thumbnail buffer, and "%s" for the file size.
-
-The default format has been updated to use this. If you prefer the
-old format, add this to your Init file:
-
- (setopt image-dired-display-properties-format "%b: %f (%t): %c")
-
----
-*** New faces for the header line of the thumbnail buffer.
-These faces correspond to different parts of the header line, as
-specified in 'image-dired-display-properties-format':
-- 'image-dired-thumb-header-directory-name'
-- 'image-dired-thumb-header-file-name'
-- 'image-dired-thumb-header-file-size'
-- 'image-dired-thumb-header-image-count'
-
----
-*** PDF support.
-Image-Dired now displays thumbnails for PDF files. Type 'RET' on a
-PDF file in the thumbnail buffer to visit the corresponding PDF.
-
----
-*** Support GraphicsMagick command line tools.
-Support for the GraphicsMagick command line tool ("gm") has been
-added, and is used when it is available instead of ImageMagick.
+** Buffer Selection
---
-*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020).
-This standard allows sharing generated thumbnails across different
-programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and
-1024x1024 pixels. See the user option 'image-dired-thumbnail-storage'
-to use it; it is not enabled by default.
+*** New user option 'bs-default-action-list'.
+You can now configure how to display the "*buffer-selection*" buffer
+using this new option. (Or set 'display-buffer-alist' directly.)
----
-*** Reduce dependency on external "exiftool" program.
-The 'image-dired-copy-with-exif-file-name' command no longer requires
-an external "exiftool" program to be available. The user options
-'image-dired-cmd-read-exif-data-program' and
-'image-dired-cmd-read-exif-data-options' are now obsolete.
-
----
-*** Support for bookmark.el.
-The command 'bookmark-set' (bound to 'C-x r m') is now supported in
-the thumbnail view, and will create a bookmark that opens the current
-directory in Image-Dired.
-
----
-*** The 'image-dired-slideshow-start' command no longer prompts.
-It no longer inconveniently prompts for a number of images and a
-delay: it runs indefinitely, but stops automatically on any command.
-You can set the delay with a prefix argument, or a negative prefix
-argument to prompt for a delay. Customize the user option
-'image-dired-slideshow-delay' to change the default from 5 seconds.
-
-+++
-*** 'image-dired-show-all-from-dir-max-files' increased to 1000.
-This user option controls asking for confirmation when starting
-Image-Dired in a directory with many files. Since Image-Dired creates
-thumbnails in the background in recent versions, this is not as
-important as it used to be. You can now also customize this option to
-nil to disable this confirmation completely.
-
----
-*** 'image-dired-thumb-size' increased to 128.
+** Eshell
+++
-*** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'.
-
----
-*** 'image-dired-display-image-mode' renamed to 'image-dired-image-mode'.
-The corresponding keymap is now named 'image-dired-image-mode-map'.
+*** New splice operator for Eshell dollar expansions.
+Dollar expansions in Eshell now let you splice the elements of the
+expansion in-place using '$@expr'. This makes it easier to fill lists
+of arguments into a command, such as when defining aliases. For more
+information, see the "(eshell) Dollars Expansion" node in the Eshell
+manual.
+++
-*** Some commands have been renamed to be shorter.
-- 'image-dired-display-thumbnail-original-image' has been renamed to
- 'image-dired-display-this'.
-- 'image-dired-display-next-thumbnail-original' has been renamed to
- 'image-dired-display-next'.
-- 'image-dired-display-previous-thumbnail-original' has been renamed
- to 'image-dired-display-previous'.
-The old names are now obsolete aliases.
+*** Eshell now supports negative numbers and ranges for indices.
+Now, you can retrieve the last element of a list with '$my-list[-1]'
+or get a sublist of elements 2 through 4 with '$my-list[2..5]'. For
+more information, see the "(eshell) Dollars Expansion" node in the
+Eshell manual.
---
-*** 'image-dired-thumb-{height,width}' are now obsolete.
-Customize 'image-dired-thumb-size' instead, which will set both the
-height and width.
+*** Eshell now uses 'field' properties in its output.
+In particular, this means that pressing the '<home>' key moves the
+point to the beginning of your input, not the beginning of the whole
+line. If you want to go back to the old behavior, add something like
+this to your configuration:
----
-*** HTML image gallery generation is now obsolete.
-The 'image-dired-gallery-generate' command and these user options are
-now obsolete: 'image-dired-gallery-thumb-image-root-url',
-'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir',
-'image-dired-gallery-image-root-url'.
+ (keymap-set eshell-mode-map "<home>" #'eshell-bol-ignoring-prompt)
---
-*** 'image-dired-rotate-thumbnail-{left,right}' are now obsolete.
-Instead, use commands 'image-dired-refresh-thumb' to generate a new
-thumbnail, or 'image-rotate' to rotate the thumbnail without updating
-the thumbnail file.
+*** You can now properly unload Eshell.
+Calling '(unload-feature 'eshell)' no longer signals an error, and now
+correctly unloads Eshell and all of its modules.
+++
-*** Some commands and user options are now obsolete.
-Since 'image-dired-display-image-mode' is now based on 'image-mode',
-some commands and user options are no longer needed and are now obsolete:
-'image-dired-cmd-create-temp-image-options',
-'image-dired-cmd-create-temp-image-program',
-'image-dired-display-current-image-full',
-'image-dired-display-current-image-sized',
-'image-dired-display-window-height-correction',
-'image-dired-display-window-width-correction',
-'image-dired-temp-image-file'.
-
-** Exif
-
----
-*** New function 'exif-field'.
-This is a convenience function to extract the field data from
-'exif-parse-file' and 'exif-parse-buffer'.
-
-** Bookmarks
-
----
-*** 'list-bookmarks' now includes a type column.
-Types are registered via a 'bookmark-handler-type' symbol property on
-the jumping function.
+*** 'eshell-read-aliases-list' is now an interactive command.
+After manually editing 'eshell-aliases-file', you can use this command
+to load the edited aliases.
+++
-*** 'bookmark-sort-flag' can now be set to 'last-modified'.
-This will display bookmark list from most recently set to least
-recently set.
-
----
-*** When editing a bookmark annotation, 'C-c C-k' will now cancel.
-It is bound to the new command 'bookmark-edit-annotation-cancel'.
+*** 'rgrep' is now a builtin command.
+Running 'rgrep' in Eshell now uses the Emacs grep facility instead of
+calling external rgrep.
----
-*** New user option 'bookmark-fringe-mark'.
-This option controls the bitmap used to indicate bookmarks in the
-fringe (or nil to disable showing this marker).
-
-** Xwidget
-
----
-*** New user option 'xwidget-webkit-buffer-name-format'.
-This option controls how xwidget-webkit buffers are named.
-
----
-*** New user option 'xwidget-webkit-cookie-file'.
-This option controls whether the xwidget-webkit buffers save cookies
-set by web pages, and if so, in which file to save them.
+** Shell Mode
+++
-*** New minor mode 'xwidget-webkit-edit-mode'.
-When this mode is enabled, self-inserting characters and other common
-web browser shortcut keys are redefined to send themselves to the
-WebKit widget.
+*** New user option 'shell-get-old-input-include-continuation-lines'.
+When this user option is non-nil, 'shell-get-old-input' ('C-RET')
+includes multiple shell "\" continuation lines from command output.
+Default is nil.
-+++
-*** New minor mode 'xwidget-webkit-isearch-mode'.
-This mode acts similarly to incremental search, and allows searching
-the contents of a WebKit widget. In xwidget-webkit mode, it is bound
-to 'C-s' and 'C-r'.
+** Prog Mode
+++
-*** New command 'xwidget-webkit-browse-history'.
-This command displays a buffer containing the page load history of
-the current WebKit widget, and allows you to navigate it.
-
----
-*** On X, the WebKit inspector is now available inside xwidgets.
-To access the inspector, right click on the widget and select "Inspect
-Element".
-
----
-*** "Open in New Window" in a WebKit widget's context menu now works.
-The newly created buffer will be displayed via 'display-buffer', which
-can be customized through the usual mechanism of 'display-buffer-alist'
-and friends.
+*** New command 'prog-fill-reindent-defun'.
+This command either fills a single paragraph in a defun, such as a
+docstring, or a comment, or (re)indents the surrounding defun if
+point is not in a comment or a string. It is by default bound to
+'M-q' in 'prog-mode' and all its descendants.
** Tramp
+++
-*** New connection methods "docker", "podman" and "kubernetes".
-They allow accessing containers provided by Docker and similar
-programs.
-
----
-*** Tramp supports abbreviating remote home directories now.
-When calling 'abbreviate-file-name' on a Tramp file name, the result
-will abbreviate the user's home directory, for example by abbreviating
-"/ssh:user@host:/home/user" to "/ssh:user@host:~".
+*** New connection method "toolbox".
+This allows accessing system containers provided by Toolbox.
+++
-*** New user option 'tramp-use-scp-direct-remote-copying'.
-When set to non-nil, Tramp does not copy files between two remote
-hosts via a local copy in its temporary directory, but lets the 'scp'
-command do this job.
+*** Rename 'tramp-use-ssh-controlmaster-options' to 'tramp-use-connection-share.
+The old name still exists as defvaralias. This user option controls
+now connection sharing for both ssh-based and plink-based methods. It
+allows the values t, nil, and 'suppress'. The latter suppresses
+also "ControlMaster" settings in the user's "~/.ssh/config" file,
+or connection share configuration in PuTTY sessions, respectively.
-+++
-*** Proper password prompts for methods "doas", "sudo" and "sudoedit".
-The password prompts for these methods reflect now the credentials of
-the user requesting such a connection, and not of the user who is the
-target. This has always been needed, just the password prompt and the
-related 'auth-sources' entry were wrong.
+** EWW
+++
-*** New user option 'tramp-completion-use-cache'.
-During user and host name completion in the minibuffer, results from
-Tramp's connection cache are taken into account. This can be disabled
-by setting the user option 'tramp-completion-use-cache' to nil.
-
-** Browse URL
+*** 'eww-open-file' can now display the file in a new buffer.
+By default, the command reuses the "*eww*" buffer, but if called with
+the new argument NEW-BUFFER non-nil, it will use a new buffer instead.
+Interactively, invoke 'eww-open-file' with a prefix argument to
+activate this behavior.
----
-*** New user option 'browse-url-default-scheme'.
-This user option decides which URL scheme that 'browse-url' and
-related functions will use by default. For example, you could
-customize this to "https" to always prefer HTTPS URLs.
-
----
-*** New user option 'browse-url-irc-function'.
-This option specifies a function for opening "irc://" links. It
-defaults to the new function 'browse-url-irc'.
-
----
-*** New function 'browse-url-irc'.
-This multipurpose autoloaded function can be used for opening "irc://"
-and "ircs://" URLS by any caller that passes a URL string as an initial
-arg.
-
----
-*** Support for the Netscape web browser has been removed.
-This support has been obsolete since Emacs 25.1. The final version of
-the Netscape web browser was released in February, 2008.
-
----
-*** Support for the Galeon web browser has been removed.
-This support has been obsolete since Emacs 25.1. The final version of
-the Galeon web browser was released in September, 2008.
-
----
-*** Support for the Mozilla web browser is now obsolete.
-Note that this historical web browser is different from Mozilla
-Firefox; it is its predecessor.
-
-** Python Mode
+** go-ts-mode
+++
-*** Project shells and a new user option 'python-shell-dedicated'.
-When called with a prefix argument, 'run-python' now offers the choice
-of creating a shell dedicated to the current project. This shell runs
-in the project root directory and is shared among all project buffers.
+*** New command 'go-ts-mode-docstring'.
+This command adds a docstring comment to the current defun. If a
+comment already exists, point is only moved to the comment. It is
+bound to 'C-c C-d' in 'go-ts-mode'.
-Without a prefix argument, the kind of shell (buffer-dedicated,
-project-dedicated or global) is specified by the new
-'python-shell-dedicated' user option.
-
-** Ruby Mode
-
----
-*** New user option 'ruby-toggle-block-space-before-parameters'.
-
----
-*** Support for endless methods.
-
----
-*** New user options that determine indentation logic.
-'ruby-method-params-indent', 'ruby-block-indent',
-'ruby-after-operator-indent', 'ruby-method-call-indent',
-'ruby-parenless-call-arguments-indent'. See the docstrings for
-explanations and examples.
-
-** Eshell
-
-+++
-*** New feature to easily bypass Eshell's own pipelining.
-Prefixing '|', '<' or '>' with an asterisk, i.e. '*|', '*<' or '*>',
-will cause the whole command to be passed to the operating system
-shell. This is particularly useful to bypass Eshell's own pipelining
-support for pipelines which will move a lot of data. See section
-"Running Shell Pipelines Natively" in the Eshell manual, node
-"(eshell) Pipelines".
-
-+++
-*** New module to help supplying absolute file names to remote commands.
-After enabling the new 'eshell-elecslash' module, typing a forward
-slash as the first character of a command line argument will
-automatically insert the Tramp prefix. The automatic insertion
-applies only when 'default-directory' is remote and the command is a
-Lisp function. This frees you from having to keep track of whether
-commands are Lisp function or external when supplying absolute file
-name arguments. See the "(eshell) Electric forward slash" node in the
-Eshell manual for details.
-
-+++
-*** Improved support for redirection operators in Eshell.
-Eshell now supports a wider variety of redirection operators. For
-example, you can now redirect both stdout and stderr via '&>' or
-duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more
-information, see the "(eshell) Redirection" node in the Eshell manual.
-
-+++
-*** New eshell built-in command 'doas'.
-The privilege-escalation program 'doas' has been added to the existing
-'su' and 'sudo' commands from the 'eshell-tramp' module. The external
-command may still be accessed by using '*doas'.
-
-+++
-*** Double-quoting an Eshell expansion now treats the result as a single string.
-If an Eshell expansion like '$FOO' is surrounded by double quotes, the
-result will always be a single string, no matter the type that would
-otherwise be returned.
-
-+++
-*** Concatenating Eshell expansions now works more similarly to other shells.
-When concatenating an Eshell expansion that returns a list, "adjacent"
-elements of each operand are now concatenated together,
-e.g. '$(list "a" "b")c' returns '("a" "bc")'. See the "(eshell)
-Expansion" node in the Eshell manual for more details.
-
-+++
-*** Eshell subcommands with multiline numeric output return lists of numbers.
-If every line of the output of an Eshell subcommand like '${COMMAND}'
-is numeric, the result will be a list of numbers (or a single number
-if only one line of output). Previously, this only converted numbers
-when there was a single line of output.
-
----
-*** Built-in Eshell commands now follow Posix/GNU argument syntax conventions.
-Built-in commands in Eshell now accept command-line options with
-values passed as a single token, such as '-oVALUE' or
-'--option=VALUE'. New commands can take advantage of this with the
-'eshell-eval-using-options' macro. See "Defining new built-in
-commands" in the "(eshell) Built-ins" node of the Eshell manual.
-
----
-*** Eshell globs ending with "/" now match only directories.
-Additionally, globs ending with "**/" or "***/" no longer raise an
-error, and now expand to all directories recursively (following
-symlinks in the latter case).
+** Man-mode
+++
-*** Lisp forms in Eshell now treat a nil result as a failed exit status.
-When executing a command that looks like '(lisp form)' and returns
-nil, Eshell will set the exit status (available in the '$?'
-variable) to 2. This allows commands like that to be used in
-conditionals. To change this behavior, customize the new
-'eshell-lisp-form-nil-is-failure' user option.
-
-** Shell
+*** New user option 'Man-prefer-synchronous-call'.
+When this is non-nil, call the 'man' program synchronously rather than
+asynchronously (which is the default behavior).
----
-*** New user option 'shell-kill-buffer-on-exit'.
-Enabling this will automatically kill a "*shell*" buffer as soon as
-the shell session terminates.
+** DocView
---
-*** New minor mode 'shell-highlight-undef-mode'.
-Customize 'shell-highlight-undef-enable' to t if you want to enable
-this minor mode in "*shell*" buffers. It will highlight undefined
-commands with a warning face as you type.
+*** New face 'doc-view-svg-face'.
+This replaces 'doc-view-svg-foreground' and 'doc-view-svg-background'.
-** Calc
+** Shortdoc
+++
-*** New user option 'calc-kill-line-numbering'.
-Set it to nil to exclude line numbering from kills and copies.
-
-** Hierarchy
+*** New function 'shortdoc-function-examples'.
+This function returns examples of use of a given Emacs Lisp function
+from the available shortdoc information.
+++
-*** Tree Display can delay computation of children.
-'hierarchy-add-tree' and 'hierarchy-add-trees' have an optional
-argument which allows tree-widget display to be activated and computed
-only when the user expands the node.
-
-** Proced
-
----
-*** proced.el shows system processes of remote hosts.
-When 'default-directory' is remote, and 'proced' is invoked with a
-negative argument like 'C-u - proced', the system processes of that
-remote host are shown. Alternatively, the user option
-'proced-show-remote-processes' can be set to non-nil.
-'proced-signal-function' has been marked obsolete.
-
----
-*** Proced can now optionally show process details in color.
-New user option 'proced-enable-color-flag' enables coloring of Proced
-buffers. This option is disabled by default; customize it to a
-non-nil value to enable colors.
-
-** Miscellaneous
+*** New function 'shortdoc-help-fns-examples-function'.
+This function inserts into the current buffer examples of use of a
+given Emacs Lisp function, which it gleans from the shortdoc
+information. If you want 'describe-function' ('C-h f') to insert
+examples of using the function into regular "*Help*" buffers, add the
+following to your init file:
----
-*** New user option 'webjump-use-internal-browser'.
-When non-nil, WebJump will use an internal browser to open web pages,
-instead of the default external browser.
+ (add-hook 'help-fns-describe-function-functions
+ #'shortdoc-help-fns-examples-function)
-+++
-*** New user option 'font-lock-ignore'.
-This option provides a mechanism to selectively disable font-lock
-keyword-driven fontifications.
+** Package
---
-*** New user option 'auto-save-visited-predicate'.
-This user option is a predicate function which is called by
-'auto-save-visited-mode' to decide whether or not to save a buffer.
-You can use it to automatically save only specific buffers, for
-example buffers using a particular mode or in some directory.
+*** New user option 'package-vc-register-as-project'.
+When non-nil, it will automatically register every package as a
+project, that you can quickly select using 'project-switch-project'
+('C-x p p').
----
-*** New user option 'remote-file-name-inhibit-auto-save-visited'.
-If this user option is non-nil, 'auto-save-visited-mode' will not
-auto-save remote buffers. The default is nil.
+** Flymake
+++
-*** New package vtable.el for formatting tabular data.
-This package allows formatting data using variable-pitch fonts.
-The resulting tables can display text in variable pitch fonts, text
-using fonts of different sizes, and images. See the "(vtable) Top"
-manual for more details.
-
----
-*** New minor mode 'elide-head-mode'.
-Enabling this minor mode turns on hiding header material, like
-'elide-head' does; disabling it shows the header. The commands
-'elide-head' and 'elide-head-show' are now obsolete.
-
-*** New package ansi-osc.el.
-Support for OSC ("Operating System Command") escape sequences has been
-extracted from comint.el in order to provide interpretation of OSC
-sequences in compilation buffers.
-
-Adding the new function 'ansi-osc-compilation-filter' to
-'compilation-filter-hook' enables interpretation of OSC escape
-sequences in compilation buffers. By default, all sequences are
-filtered out.
-
-The list of handlers (already covering OSC 7 and 8) has been extended
-with a handler for OSC 2, the command to set a window title.
-
----
-*** 'recentf-mode' now uses abbreviated file names by default.
-This means that e.g. "/home/foo/bar" is now displayed as "~/bar".
-Customize the user option 'recentf-filename-handlers' to nil to get
-back the old behavior.
-
----
-*** New command 'recentf-open'.
-This command prompts for a recently opened file in the minibuffer, and
-visits it.
-
----
-*** 'ffap-machine-at-point' no longer pings hosts by default.
-It will now simply look at a hostname to determine if it is valid,
-instead of also trying to ping it. Customize the user option
-'ffap-machine-p-known' to 'ping' to get the old behavior back.
-
----
-*** The 'run-dig' command is now obsolete; use 'dig' instead.
-
----
-*** Some 'bib-mode' commands and variables have been renamed.
-To respect Emacs naming conventions, the variable 'unread-bib-file'
-has been renamed to 'bib-unread-file'. The following commands have
-also been renamed:
- 'addbib' to 'bib-add'
- 'return-key-bib' to 'bib-return-key'
- 'mark-bib' to 'bib-mark'
- 'unread-bib' to 'bib-unread'
-
----
-*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'.
-The old name is still available as an obsolete function alias.
-
----
-*** The url-irc library now understands "ircs://" links.
-
----
-*** New command 'world-clock-copy-time-as-kill' for 'world-clock-mode'.
-It copies the current line into the kill ring.
-
----
-*** 'edit-abbrevs' now uses font-locking.
-The new face 'abbrev-table-name' is used to display the abbrev table
-name.
-
----
-*** New key binding 'O' in "*Buffer List*".
-This key is now bound to 'Buffer-menu-view-other-window', which will
-view this line's buffer in View mode in another window.
-
-** Scheme Mode
-
----
-*** Auto-detection of Scheme library files.
-Emacs now automatically enables the Scheme mode when opening R6RS
-Scheme Library Source (".sls") files and R7RS Scheme Library
-Definition (".sld") files.
-
----
-*** Imenu members for R6RS and R7RS library members.
-Imenu now lists the members directly nested in R6RS Scheme libraries
-('library') and R7RS libraries ('define-library').
+*** New user option 'flymake-show-diagnostics-at-end-of-line'.
+When non-nil, Flymake shows summarized descriptions of diagnostics at
+the end of the line. Depending on your preference, this can either be
+distracting and easily confused with actual code, or a significant
+early aid that relieves you from moving the buffer or reaching for the
+mouse to consult an error message.
-* New Modes and Packages in Emacs 29.1
+* New Modes and Packages in Emacs 30.1
-+++
-** Eglot: Emacs Client for the Language Server Protocol.
-Emacs now comes with the Eglot package, which enhances various Emacs
-features, such as completion, documentation, error detection, etc.,
-based on data provided by language servers using the Language Server
-Protocol (LSP). See the new Info manual "(eglot) Top" for more. Also
-see "etc/EGLOT-NEWS".
+** New major modes based on the tree-sitter library
+++
-** use-package: Declarative package configuration.
-use-package is now shipped with Emacs. It provides the 'use-package'
-macro, which allows you to isolate package configuration in your init
-file in a way that is declarative, tidy, and performance-oriented.
-See the new Info manual "(use-package) Top" for more.
-
----
-** New package 'wallpaper'.
-This package provides the command 'wallpaper-set', which sets the
-desktop background image. Depending on the system and the desktop,
-this may require an external program (such as "swaybg", "gm",
-"display" or "xloadimage"). If so, a suitable command should be
-detected automatically in most cases. It can also be customized
-manually if needed, using the new user options 'wallpaper-command' and
-'wallpaper-command-args'.
-
-+++
-** New package 'oclosure'.
-This allows the creation of OClosures, which are "functions with
-slots" or "function objects" that expose additional information about
-themselves. Use the new macros 'oclosure-define' and
-'oclosure-lambda' to create OClosures. See the "(elisp) OClosures"
-node for more information.
-
-+++
-*** New generic function 'oclosure-interactive-form'.
-Used by 'interactive-form' when called on an OClosure.
-This allows specific OClosure types to compute their interactive specs
-on demand rather than precompute them when created.
+*** New major mode 'html-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+HTML files.
---
-** New theme 'leuven-dark'.
-This is a dark version of the 'leuven' theme.
-
-+++
-** New mode 'erts-mode'.
-This mode is used to edit files geared towards testing actions in
-Emacs buffers, like indentation and the like. The new ert function
-'ert-test-erts-file' is used to parse these files.
+*** New major mode 'heex-ts-mode'.
+A major mode based on the tree-sitter library for editing HEEx files.
---
-** New major mode 'js-json-mode'.
-This is a lightweight variant of 'js-mode' that is used by default
-when visiting JSON files.
-
-+++
-** New major mode 'csharp-mode'.
-A major mode based on CC Mode for editing programs in the C# language.
-This mode is auto-enabled for files with the ".cs" extension.
-
-+++
-** New major modes based on the tree-sitter library.
-These new major modes are available if Emacs was built with the
-tree-sitter library. They provide support for font-locking,
-indentation, and navigation by defuns based on parsing the buffer text
-by a tree-sitter parser. Some major modes also offer support for
-Imenu and 'which-func'.
-
-The new modes based on tree-sitter are for now entirely optional, and
-you must turn them on manually, or load them in your init file, or
-customize 'auto-mode-alist' to turn them on automatically for certain
-files. You can also customize 'major-mode-remap-alist' to
-automatically turn on some tree-sitter based modes for the same files
-for which a "built-in" mode would be turned on. For example:
-
- (add-to-list 'major-mode-remap-alist '(ruby-mode . ruby-ts-mode))
-
-If you try these modes and don't like them, you can go back to the
-"built-in" modes by restarting Emacs. (If you use desktop.el to save
-and restore Emacs sessions, make sure no buffer under these modes is
-recorded in the desktop file, before restarting.) But please tell us
-why you didn't like the tree-sitter based modes, so that we could try
-improving them.
-
-Each major mode based on tree-sitter needs a language grammar library,
-usually named "libtree-sitter-LANG.so" ("libtree-sitter-LANG.dll" on
-MS-Windows), where LANG is the corresponding language name. Emacs
-looks for these libraries in the following places:
-
- . in the directories mentioned in the list 'treesit-extra-load-path'
- . in the "tree-sitter" subdirectory of your 'user-emacs-directory'
- (by default, "~/.emacs.d/tree-sitter")
- . in the standard system directories where other shared libraries are
- usually installed
-
-We recommend to install these libraries in one of the standard system
-locations (the last place in the above list).
-
-If a language grammar library required by a mode is not found in any
-of the above places, the mode will display a warning when you try to
-turn it on.
-
-+++
-*** New major mode 'typescript-ts-mode'.
-A major mode based on the tree-sitter library for editing programs
-in the TypeScript language.
-
-+++
-*** New major mode 'tsx-ts-mode'.
-A major mode based on the tree-sitter library for editing programs
-in the TypeScript language, with support for TSX.
-
-+++
-*** New major mode 'c-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the C language.
-
-+++
-*** New major mode 'c++-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the C++ language.
-
-+++
-*** New command 'c-or-c++-ts-mode'.
-A command that automatically guesses the language of a header file,
-and enables either 'c-ts-mode' or 'c++-ts-mode' accordingly.
-
-+++
-*** New major mode 'java-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the Java language.
-
-+++
-*** New major mode 'python-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the Python language.
-
-+++
-*** New major mode 'css-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-CSS (Cascading Style Sheets).
-
-+++
-*** New major mode 'json-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the JSON language.
-
-+++
-*** New major mode 'csharp-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the C# language.
-
-+++
-*** New major mode 'bash-ts-mode'.
-Am optional major mode based on the tree-sitter library for editing
-Bash shell scripts.
-
-+++
-*** New major mode 'dockerfile-ts-mode'.
-A major mode based on the tree-sitter library for editing
-Dockerfiles.
-
-+++
-*** New major mode 'cmake-ts-mode'.
-A major mode based on the tree-sitter library for editing CMake files.
-
-+++
-*** New major mode 'toml-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-files written in TOML, a format for writing configuration files.
-
-+++
-*** New major mode 'go-ts-mode'.
-A major mode based on the tree-sitter library for editing programs in
-the Go language.
-
-+++
-*** New major mode 'go-mod-ts-mode'.
-A major mode based on the tree-sitter library for editing "go.mod"
+*** New major mode 'elixir-ts-mode'.
+A major mode based on the tree-sitter library for editing Elixir
files.
-+++
-*** New major mode 'yaml-ts-mode'.
-A major mode based on the tree-sitter library for editing files
-written in YAML.
-
-+++
-*** New major mode 'rust-ts-mode'.
-A major mode based on the tree-sitter library for editing programs in
-the Rust language.
-
---
-*** New major mode 'ruby-ts-mode'.
-An optional major mode based on the tree-sitter library for editing
-programs in the Ruby language.
+** The highly accessible Modus themes collection has six items.
+The 'modus-operandi' and 'modus-vivendi' are the main themes that have
+been part of Emacs since version 28. The former is light, the latter
+dark. In addition to these, we now have 'modus-operandi-tinted' and
+'modus-vivendi-tinted' for easier legibility, as well as
+'modus-operandi-deuteranopia' and 'modus-vivendi-deuteranopia' to
+cover the needs of users with red-green color deficiency. The Info
+manual "(modus-themes) Top" describes the details and showcases all
+their customization options.
-* Incompatible Lisp Changes in Emacs 29.1
-
-+++
-** The implementation of overlays has changed.
-Emacs now uses an implementation of overlays that is much more
-efficient than the original one, and should speed up all the
-operations that involve overlays, especially when there are lots of
-them in a buffer.
-
-As result of this, some minor incompatibilities in behavior could be
-observed, as described below. Except those minor incompatibilities,
-no other changes in behavior of overlays should be visible on the Lisp
-or user level, with the exception of better performance and the order
-of overlays returned by functions that don't promise any particular
-order.
-
----
-*** The function 'overlay-recenter' is now a no-op.
-This function does nothing, and in particular has no effect on the
-value returned by 'overlay-lists'. The purpose of 'overlay-recenter'
-was to allow more efficient lookup of overlays around a certain buffer
-position; however with the new implementation the lookup of overlays
-is efficient regardless of their position, and there's no longer any
-need to "optimize" the lookup, nor any notion of a "center" of the
-overlays.
-
----
-*** The function 'overlay-lists' returns one unified list of overlays.
-This function used to return a cons of two lists, one with overlays
-before the "center" position, the other after that "center". It now
-returns a list whose 'car' is the list of all the buffer overlays, and
-whose 'cdr' is always nil.
-
-+++
-** 'format-prompt' now uses 'substitute-command-keys'.
-This means that both the prompt and 'minibuffer-default-prompt-format'
-will have key definitions and single quotes handled specially.
-
-+++
-** New function 'substitute-quotes'.
-This function works like 'substitute-command-keys' but only
-substitutes quote characters.
-
----
-** 'find-image' now uses 'create-image'.
-This means that images found through 'find-image' also have
-auto-scaling applied. (This only makes a difference on HiDPI
-displays.)
-
-+++
-** Changes in how "raw" in-memory XBM images are specified.
-Some years back Emacs gained the ability to scale images, and you
-could then specify ':width' and ':height' when using 'create-image' on all
-image types -- except XBM images, because this format already used the
-':width' and ':height' arguments to specify the width/height of the "raw"
-in-memory format. This meant that if you used these specifications
-on, for instance, XBM files, Emacs would refuse to display them. This
-has been changed, and ':width'/':height' now works as with all other image
-formats, and the way to specify the width/height of the "raw"
-in-memory format is now by using ':data-width' and ':data-height'.
-
-+++
-** "loaddefs.el" generation has been reimplemented.
-The various "loaddefs.el" files in the Emacs tree (which contain
-information about autoloads, built-in packages and package prefixes)
-used to be generated by functions in autoloads.el. These are now
-generated by loaddefs-gen.el instead. This leads to functionally
-equivalent "loaddefs.el" files, but they do not use exactly the same
-syntax, so using 'M-x update-file-autoloads' no longer works. (This
-didn't work well in most files in the past, either, but it will now
-signal an error in any file.)
-
-In addition, files are scanned in a slightly different way.
-Previously, ';;;###' specs inside a top-level form (i.e., something
-like '(when ... ;;;### ...)' would be ignored. They are now parsed as
-usual.
-
----
-** Themes have special autoload cookies.
-All built-in themes are scraped for ';;;###theme-autoload' cookies
-that are loaded along with the regular auto-loaded code.
-
-+++
-** 'buffer-modified-p' has been extended.
-This function was previously documented to return only nil or t. This
-has been changed to nil/'autosaved'/non-nil. The new 'autosaved'
-value means that the buffer is modified, but that it hasn't been
-modified since the time of last auto-save.
-
----
-** 'with-silent-modifications' also restores buffer autosave status.
-'with-silent-modifications' is a macro meant to be used by the font
-locking machinery to allow applying text properties without changing
-the modification status of the buffer. However, it didn't restore the
-buffer autosave status, so applying font locking to a modified buffer
-that had already been auto-saved would trigger another auto-saving.
-This is no longer the case.
-
----
-** 'prin1' doesn't always escape "." and "?" in symbols any more.
-Previously, symbols like 'foo.bar' would be printed by 'prin1' as
-"foo\.bar". This now prints as "foo.bar" instead. The Emacs Lisp
-reader interprets these strings as referring to the same symbol, so
-this is virtually always backwards-compatible, but there may
-theoretically be code out there that expects a specific printed
-representation.
-
-The same is the case with the "?" character: The 'foo?' symbol is now
-printed as "foo?" instead of "foo\?".
-
-If the "." and "?" characters are the first character in the symbol,
-they will still be escaped, so the '.foo' symbol is still printed as
-"\.foo" and the '?bar' symbol is still printed as "\?bar".
-
-+++
-** Remapping 'mode-line' face no longer works as expected.
-'mode-line' is now the parent face of the new 'mode-line-active' face,
-and remapping parent of basic faces does not work reliably.
-Instead of remapping 'mode-line', you have to remap 'mode-line-active'.
-
-+++
-** 'make-process' has been extended to support ptys when ':stderr' is set.
-Previously, setting ':stderr' to a non-nil value would force the
-process's connection to use pipes. Now, Emacs will use a pty for
-stdin and stdout if requested no matter the value of ':stderr'.
-
----
-** User option 'mail-source-ignore-errors' is now obsolete.
-The whole mechanism for prompting users to continue in case of
-mail-source errors has been removed, so this option is no longer
-needed.
-
-** Fonts
-
----
-*** Emacs now supports 'medium' fonts.
-Emacs previously didn't distinguish between the 'regular'/'normal'
-weight and the 'medium' weight, but it now also supports the (heavier)
-'medium' weight. However, this means that if you specify a weight of
-'normal' and the font doesn't have this weight, Emacs won't find the
-font spec. In these cases, replacing ":weight 'normal" with ":weight
-'medium" should fix the issue.
-
----
-** Keymap descriptions by Help commands have changed.
-'help--describe-command', 'C-h b' and associated functions that output
-keymap descriptions have changed. In particular, prefix commands are
-not output at all, and instead of "??" for closures/functions, these
-functions output "[closure]"/"[lambda]". You can get back the old
-behavior of including prefix commands by customizing the new option
-'describe-bindings-show-prefix-commands' to a non-nil value.
-
----
-** 'downcase' details have changed slightly.
-In certain locales, changing the case of an ASCII-range character may
-turn it into a multibyte character, most notably with "I" in Turkish
-(the lowercase is "ı", 0x0131). Previously, 'downcase' on a unibyte
-string was buggy, and would mistakenly just return the lower byte of
-this, 0x31 (the digit "1"). 'downcase' on a unibyte string has now
-been changed to downcase such characters as if they were ASCII. To
-get proper locale-dependent downcasing, the string has to be converted
-to multibyte first. (This goes for the other case-changing functions,
-too.)
-
----
-** Functions in 'tramp-foreign-file-name-handler-alist' have changed.
-Functions to determine which Tramp file name handler to use are now
-passed a file name in dissected form (via 'tramp-dissect-file-name')
-instead of in string form.
-
----
-** 'def' indentation changes.
-In 'emacs-lisp-mode', forms with a symbol with a name that start with
-"def" have been automatically indented as if they were 'defun'-like
-forms, for instance:
-
- (defzot 1
- 2 3)
-
-This heuristic has now been removed, and all functions/macros that
-want to be indented this way have to be marked with
-
- (declare (indent defun))
-
-or the like. If the function/macro definition itself can't be
-changed, the indentation can also be adjusted by saying something
-like:
-
- (put 'defzot 'lisp-indent-function 'defun)
-
----
-** The 'inhibit-changing-match-data' variable is now obsolete.
-Instead, functions like 'string-match' and 'looking-at' now take an
-optional INHIBIT-MODIFY argument.
+* Incompatible Lisp Changes in Emacs 30.1
---
-** 'gnus-define-keys' is now obsolete.
-Use 'define-keymap' instead.
+** The escape sequence '\x' not followed by hex digits is now an error.
+Previously, '\x' without at least one hex digit denoted character code
+zero (NUL) but as this was neither intended nor documented or even
+known by anyone, it is now treated as an error by the Lisp reader.
---
-** MozRepl has been removed from js.el.
-MozRepl was removed from Firefox in 2017, so this code doesn't work
-with recent versions of Firefox.
+** Connection-local variables are applied in buffers visiting a remote file.
+This overrides possible directory-local or file-local variables with
+the same name.
---
-** The function 'image-dired-get-exif-data' is now obsolete.
-Use 'exif-parse-file' and 'exif-field' instead.
+** User option 'tramp-completion-reread-directory-timeout' has been removed.
+This user option has been obsoleted in Emacs 27, use
+'remote-file-name-inhibit-cache' instead.
---
-** 'insert-directory' alternatives should not change the free disk space line.
-This change is now applied in 'dired-insert-directory'.
-
----
-** 'compilation-last-buffer' is (finally) declared obsolete.
-It has been obsolete since Emacs 22.1, actually.
-
----
-** Calling 'lsh' now elicits a byte-compiler warning.
-'lsh' behaves in somewhat surprising and platform-dependent ways for
-negative arguments, and is generally slower than 'ash', which should be
-used instead. This warning can be suppressed by surrounding calls to
-'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)',
-but switching to 'ash' is generally much preferable.
-
----
-** Some functions and variables obsolete since Emacs 24 have been removed:
-'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode',
-'Info-edit-map', 'allout-abbreviate-flattened-numbering',
-'allout-exposure-change-hook', 'allout-mode-deactivate-hook',
-'allout-structure-added-hook', 'allout-structure-deleted-hook',
-'allout-structure-shifted-hook', 'ansi-color-unfontify-region',
-'archive-extract-hooks', 'auth-source-forget-user-or-password',
-'auth-source-hide-passwords', 'auth-source-user-or-password',
-'automatic-hscrolling', 'automount-dir-prefix', 'bibtex-complete',
-'bibtex-entry-field-alist', 'buffer-has-markers-at',
-'buffer-substring-filters', 'byte-compile-disable-print-circle',
-'c-prepare-bug-report-hooks', 'cfengine-mode-abbrevs',
-'change-log-acknowledgement', 'chart-map',
-'checkdoc-comment-style-hooks', 'comint--unquote&expand-filename',
-'comint-dynamic-complete', 'comint-dynamic-complete-as-filename',
-'comint-dynamic-simple-complete', 'comint-unquote-filename',
-'command-history-map', 'compilation-parse-errors-function',
-'completion-annotate-function', 'condition-case-no-debug',
-'count-lines-region', 'crisp-mode-modeline-string',
-'custom-print-functions', 'cvs-string-prefix-p', 'data-debug-map',
-'deferred-action-function', 'deferred-action-list',
-'dired-pop-to-buffer', 'dired-shrink-to-fit',
-'dired-sort-set-modeline', 'dired-x-submit-report',
-'display-buffer-function',
-'ediff-choose-window-setup-function-automatically',
-'eieio-defgeneric', 'eieio-defmethod', 'emacs-lock-from-exiting',
-'erc-complete-word', 'erc-dcc-chat-filter-hook',
-'eshell-add-to-window-buffer-names', 'eshell-cmpl-suffix-list',
-'eshell-for', 'eshell-remove-from-window-buffer-names',
-'eshell-status-in-modeline', 'filesets-cache-fill-content-hooks',
-'font-list-limit', 'font-lock-maximum-size',
-'font-lock-reference-face', 'gnus-carpal',
-'gnus-debug-exclude-variables', 'gnus-debug-files',
-'gnus-local-domain', 'gnus-outgoing-message-group',
-'gnus-registry-user-format-function-M', 'gnus-secondary-servers',
-'gnus-subscribe-newsgroup-hooks', 'gud-inhibit-global-bindings',
-'hangul-input-method-inactivate', 'hfy-post-html-hooks',
-'image-extension-data', 'image-library-alist',
-'inactivate-current-input-method-function', 'inactivate-input-method',
-'inhibit-first-line-modes-regexps',
-'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook',
-'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook',
-'latex-string-prefix-p', 'macro-declaration-function' (function),
-'macro-declaration-function' (variable), 'mail-complete',
-'mail-complete-function', 'mail-mailer-swallows-blank-line',
-'mail-sent-via', 'make-register', 'makefile-complete',
-'menu-bar-kill-ring-save', 'meta-complete-symbol', 'meta-mode-map',
-'mh-kill-folder-suppress-prompt-hooks',
-'minibuffer-completing-symbol',
-'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350',
-'mpc-string-prefix-p', 'msb-after-load-hooks',
-'nndiary-request-accept-article-hooks',
-'nndiary-request-create-group-hooks',
-'nndiary-request-update-info-hooks', 'nnimap-split-rule',
-'nntp-authinfo-file', 'ns-alternatives-map',
-'ns-store-cut-buffer-internal', 'package-menu-view-commentary',
-'pascal-last-completions', 'pascal-show-completions',
-'pascal-toggle-completions', 'pcomplete-arg-quote-list',
-'pcomplete-quote-argument', 'prolog-char-quote-workaround',
-'python-buffer', 'python-guess-indent', 'python-indent',
-'python-info-ppss-comment-or-string-p', 'python-info-ppss-context',
-'python-info-ppss-context-type', 'python-preoutput-result',
-'python-proc', 'python-send-receive', 'python-send-string',
-'python-use-skeletons', 'quail-inactivate', 'quail-inactivate-hook',
-'query-replace-interactive', 'rcirc-activity-hooks',
-'rcirc-print-hooks', 'rcirc-receive-message-hooks',
-'rcirc-sentinel-hooks', 'read-filename-at-point', 'redraw-modeline',
-'reftex-index-map', 'reftex-index-phrases-map',
-'reftex-select-bib-map', 'reftex-select-label-map', 'reftex-toc-map',
-'register-name-alist', 'register-value', 'report-emacs-bug-info',
-'report-emacs-bug-pretest-address',
-'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to',
-'rmail-dont-reply-to-names', 'robin-inactivate',
-'robin-inactivate-hook', 'rst-block-face', 'rst-comment-face',
-'rst-definition-face', 'rst-directive-face', 'rst-emphasis1-face',
-'rst-emphasis2-face', 'rst-external-face', 'rst-literal-face',
-'rst-reference-face', 'semantic-change-hooks',
-'semantic-edits-delete-change-hooks',
-'semantic-edits-new-change-hooks',
-'semantic-edits-reparse-change-hooks', 'semantic-grammar-map',
-'semantic-grammar-syntax-table', 'semantic-lex-reset-hooks',
-'semanticdb-elisp-sym-function-arglist',
-'semanticdb-save-database-hooks', 'set-face-underline-p',
-'set-register-value', 'sh-maybe-here-document', 'speedbar-key-map',
-'speedbar-syntax-table', 'starttls-any-program-available',
-'strokes-modeline-string', 'strokes-report-bug',
-'term-default-bg-color', 'term-default-fg-color',
-'tex-string-prefix-p', 'timeclock-modeline-display',
-'timeclock-modeline-display', 'timeclock-update-modeline',
-'toggle-emacs-lock', 'tooltip-use-echo-area', 'turn-on-cwarn-mode',
-'turn-on-iimage-mode', 'ucs-input-inactivate', 'ucs-insert',
-'url-recreate-url-attributes', 'user-variable-p',
-'vc-string-prefix-p', 'vc-toggle-read-only', 'view-return-to-alist',
-'view-return-to-alist-update', 'w32-default-color-map' (function),
-'which-func-mode' (function), 'window-system-version',
-'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'.
-
----
-** Some functions and variables obsolete since Emacs 23 have been removed:
-'find-emacs-lisp-shadows', 'newsticker-cache-filename',
-'process-filter-multibyte-p', 'redisplay-end-trigger-functions',
-'set-process-filter-multibyte', 'set-window-redisplay-end-trigger',
-'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode',
-'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'.
-
----
-** Some functions and variables obsolete since Emacs 21 or 22 have been removed:
-'c-toggle-auto-state', 'find-file-not-found-hooks',
-'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'.
-
-+++
-** New generic function 'function-documentation'.
-It can dynamically generate a raw docstring depending on the type of a
-function. Used mainly for docstrings of OClosures.
-
-+++
-** Base64 encoding no longer tolerates latin-1 input.
-The functions 'base64-encode-string', 'base64url-encode-string',
-'base64-encode-region' and 'base64url-encode-region' no longer accept
-characters in the range U+0080..U+00FF as substitutes for single bytes
-in the range 128..255, but signal an error for all multibyte characters.
-The input must be unibyte encoded text.
-
-+++
-** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'.
-It was previously only run by 'clone-indirect-buffer' and
-'clone-indirect-buffer-other-window'. Since 'make-indirect-buffer' is
-called by both of these, the hook is now run by all 3 of these
-functions.
-
----
-** '?\' at the end of a line now signals an error.
-Previously, it produced a nonsense value, -1, that was never intended.
-
----
-** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed:
-abbrevlist.el, assoc.el, complete.el, cust-print.el,
-erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el,
-patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el.
-
-+++
-** Many seldom-used generalized variables have been made obsolete.
-Emacs has a number of rather obscure generalized variables defined,
-that, for instance, allowed you to say things like:
-
- (setf (point-min) 4)
-
-These never caught on and have been made obsolete. The form above,
-for instance, is the same as saying
-
- (narrow-to-region 4 (point-max))
-
-The following generalized variables have been made obsolete:
-'buffer-file-name', 'buffer-local-value', 'buffer-modified-p',
-'buffer-name', 'buffer-string', 'buffer-substring', 'current-buffer',
-'current-column', 'current-global-map', 'current-input-mode',
-'current-local-map', 'current-window-configuration',
-'default-file-modes', 'documentation-property', 'eq', 'frame-height',
-'frame-width', 'frame-visible-p', 'global-key-binding',
-'local-key-binding', 'mark', 'mark-marker', 'marker-position',
-'mouse-position', 'point', 'point-marker', 'point-max', 'point-min',
-'read-mouse-position', 'screen-height', 'screen-width',
-'selected-frame', 'selected-screen', 'selected-window',
-'standard-case-table', 'syntax-table', 'visited-file-modtime',
-'window-height', 'window-width', and 'x-get-secondary-selection'.
+** User options 'eshell-NAME-unload-hook' are now obsolete.
+These hooks were named incorrectly, and so they never actually ran
+when unloading the correspending feature. Instead, you should use
+hooks named after the feature name, like 'esh-mode-unload-hook'.
-* Lisp Changes in Emacs 29.1
-
-+++
-** Interpreted closures are "safe for space".
-As was already the case for byte-compiled closures, instead of capturing
-the whole current lexical environment, interpreted closures now only
-capture the part of the environment that they need.
-The previous behavior could occasionally lead to memory leaks or
-to problems where a printed closure would not be 'read'able because
-of an un'read'able value in an unrelated lexical variable.
-
-+++
-** New accessor function 'file-attribute-file-identifier'.
-It returns the list of the inode number and device identifier
-retrieved by 'file-attributes'. This value can be used to identify a
-file uniquely. The device identifier can be a single number or (for
-remote files) a cons of 2 numbers.
-
-+++
-** New macro 'while-let'.
-This is like 'when-let', but repeats until a binding form is nil.
-
-+++
-** New function 'make-obsolete-generalized-variable'.
-This can be used to mark setters used by 'setf' as obsolete, and the
-byte-compiler will then warn about using them.
-
-+++
-** New functions 'pos-eol' and 'pos-bol'.
-These are like 'line-end-position' and 'line-beginning-position'
-(respectively), but ignore fields (and are more efficient).
-
-+++
-** New function 'compiled-function-p'.
-This returns non-nil if its argument is either a built-in, or a
-byte-compiled, or a natively-compiled function object, or a function
-loaded from a dynamic module.
-
----
-** 'deactivate-mark' can have new value 'dont-save'.
-This value means that Emacs should deactivate the mark as usual, but
-without setting the primary selection, if 'select-active-regions' is
-enabled.
-
-+++
-** New 'declare' form 'interactive-args'.
-This can be used to specify what forms to put into 'command-history'
-when executing commands interactively.
-
-+++
-** The FORM argument of 'time-convert' is mandatory.
-'time-convert' can still be called without it, as before, but the
-compiler now emits a warning about this deprecated usage.
-
-+++
-** Emacs now supports user-customizable and themable icons.
-These can be used for buttons in buffers and the like. See the
-"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details.
-
-+++
-** New arguments MESSAGE and TIMEOUT of 'set-transient-map'.
-MESSAGE specifies a message to display after activating the transient
-map, including a special formatting spec to list available keys.
-TIMEOUT is the idle time after which to deactivate the transient map.
-The default timeout value can be defined by the new variable
-'set-transient-map-timeout'.
-
-+++
-** New forms 'with-restriction' and 'without-restriction'.
-These forms can be used as enhanced alternatives to the
-'save-restriction' form combined with, respectively,
-'narrow-to-region' and 'widen'. They also accept an optional label
-argument, with which labeled narrowings can be created and lifted.
-See the "(elisp) Narrowing" node for details.
-
-** Connection Local Variables
-
-+++
-*** Some connection-local variables are now user options.
-The variables 'connection-local-profile-alist' and
-'connection-local-criteria-alist' are now user options, in order to
-make it more convenient to inspect and modify them.
-
-+++
-*** New function 'connection-local-update-profile-variables'.
-This function allows to modify the settings of an existing
-connection-local profile.
-
-+++
-*** New macro 'with-connection-local-application-variables'.
-This macro works like 'with-connection-local-variables', but it allows
-to use another application but 'tramp'. This is useful when running
-code in a buffer where Tramp has already set some connection-local
-variables.
-
-+++
-*** New macro 'setq-connection-local'.
-This allows dynamically setting variable values for a particular
-connection within the body of 'with-connection-local-{application-}variables'.
-See the "(elisp) Connection Local Variables" node in the Lisp
-Reference manual for more information.
-
-+++
-** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'.
-These function now take an optional comparison PREDICATE argument.
-
-+++
-** 'read-multiple-choice' can now use long-form answers.
-
-+++
-** 'M-s c' in 'read-regexp' now toggles case folding.
-
-+++
-** 'completing-read' now allows a function as its REQUIRE-MATCH argument.
-This function is called to see whether what the user has typed is a
-match. This is also available from functions that call
-'completing-read', like 'read-file-name'.
-
-+++
-** 'posn-col-row' can now give position data based on windows.
-Previously, it reported data only based on the frame.
-
-+++
-** 'file-expand-wildcards' can now also take a regexp as PATTERN argument.
-
----
-** vc-mtn (the VC backend for Monotone) has been made obsolete.
-
-+++
-** 'gui-set-selection' can specify different values for different data types.
-If DATA is a string, then its text properties are searched for values
-for each specific data type while the selection is being converted.
-
----
-** New eldoc function 'elisp-eldoc-var-docstring-with-value'.
-This function includes the current value of the variable in eldoc display
-and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'.
-
-+++
-** 'save-some-buffers' can now be extended to save other things.
-Traditionally, 'save-some-buffers' saved buffers, and also saved
-abbrevs. This has been generalized via the
-'save-some-buffers-functions' variable, and packages can now register
-things to be saved.
-
-+++
-** New function 'string-equal-ignore-case'.
-This compares strings ignoring case differences.
-
-+++
-** 'symbol-file' can now report natively-compiled ".eln" files.
-If Emacs was built with native-compilation enabled, Lisp programs can
-now call 'symbol-file' with the new optional 3rd argument non-nil to
-request the name of the ".eln" file which defined a given symbol.
-
-+++
-** New macro 'with-memoization' provides a very primitive form of memoization.
-
-+++
-** 'max-char' can now report the maximum codepoint according to Unicode.
-When called with a new optional argument UNICODE non-nil, 'max-char'
-will now report the maximum valid codepoint defined by the Unicode
-Standard.
-
-** Seq
-
-+++
-*** New function 'seq-split'.
-This returns a list of sub-sequences of the specified sequence.
-
-+++
-*** New function 'seq-remove-at-position'.
-This function returns a copy of the specified sequence where the
-element at a given (zero-based) index got removed.
-
-+++
-*** New function 'seq-positions'.
-This returns a list of the (zero-based) indices of elements matching a
-given predicate in the specified sequence.
-
-+++
-*** New function 'seq-keep'.
-This is like 'seq-map', but removes all nil results from the returned
-list.
-
-** Themes
-
----
-*** New hooks 'enable-theme-functions' and 'disable-theme-functions'.
-These are run after enabling and disabling a theme, respectively.
-
----
-*** Themes can now be made obsolete.
-Using 'make-obsolete' on a theme is now supported. This will make
-'load-theme' issue a warning when loading the theme.
+* Lisp Changes in Emacs 30.1
-+++
-** New hook 'display-monitors-changed-functions'.
-It is called whenever the configuration of different monitors on a
-display changes.
+** New variable 'inhibit-auto-fill' to temporarily prevent auto-fill.
-+++
-** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES argument.
-This argument can be used to override values of print-related settings.
+** Functions and variables to transpose sexps
+++
-** New minor mode 'header-line-indent-mode'.
-This is meant to be used by Lisp programs that show a header line
-which should be kept aligned with the buffer contents when the user
-switches 'display-line-numbers-mode' on or off, and when the width of
-line-number display changes. See the "(elisp) Header Lines" node in
-the Emacs Lisp Reference manual for more information.
+*** New helper variable 'transpose-sexps-function'.
+Emacs now can set this variable to customize the behavior of the
+'transpose-sexps' function.
+++
-** New global minor mode 'lost-selection-mode'.
-This global minor mode makes Emacs deactivate the mark in all buffers
-when the primary selection is obtained by another program.
+*** New function 'transpose-sexps-default-function'.
+The previous implementation is moved into its own function, to be
+bound by 'transpose-sexps-function'.
----
-** On X, Emacs will try to preserve selection ownership when a frame is deleted.
-This means that if you make Emacs the owner of a selection, such as by
-selecting some text into the clipboard or primary selection, and then
-delete the current frame, you will still be able to insert the
-contents of that selection into other programs as long as another
-frame is open on the same display. This behavior can be disabled by
-setting the user option 'x-auto-preserve-selections' to nil.
+*** New function 'treesit-transpose-sexps'.
+Tree-sitter now unconditionally sets 'transpose-sexps-function' for all
+tree-sitter enabled modes. This functionality utilizes the new
+'transpose-sexps-function'.
-+++
-** New predicate 'char-uppercase-p'.
-This returns non-nil if its argument its an uppercase character.
+** Functions and variables to move by program statements
-** Byte Compilation
+*** New variable 'forward-sentence-function'.
+Major modes can now set this variable to customize the behavior of the
+'forward-sentence' command.
----
-*** Byte compilation will now warn about some quoting mistakes in docstrings.
-When writing code snippets that contains the "'" character (APOSTROPHE),
-that quote character has to be escaped to avoid Emacs displaying it as
-"’" (LEFT SINGLE QUOTATION MARK), which would make code examples like
+*** New function 'forward-sentence-default-function'.
+The previous implementation of 'forward-sentence' is moved into its
+own function, to be bound by 'forward-sentence-function'.
- (setq foo '(1 2 3))
+*** New buffer-local variable 'treesit-sentence-type-regexp'.
+Similarly to 'treesit-defun-type-regexp', this variable is used to
+define "sentences" in tree-sitter enabled modes.
-invalid. Emacs will now warn during byte compilation if it seems
-something like that, and also warn about when using RIGHT/LEFT SINGLE
-QUOTATION MARK directly. In both these cases, if these characters
-should really be present in the docstring, they should be quoted with
-"\=".
+*** New function 'treesit-forward-sentence'.
+All tree-sitter enabled modes that define 'treesit-sentence-type-regexp'
+now set 'forward-sentence-function' to call 'treesit-forward-sentence'.
----
-*** Byte compilation will now warn about some malformed 'defcustom' types.
-It is very common to write 'defcustom' types on the form:
+** Functions and variables to move by program sexps
- :type '(choice (const :tag "foo" 'bar))
+*** New buffer-local variable 'treesit-sexp-type-regexp'.
+Similarly to 'treesit-defun-type-regexp', this variable is used to
+define "sexps" in tree-sitter enabled modes.
-I.e., double-quoting the 'bar', which is almost never the correct
-value. The byte compiler will now issue a warning if it encounters
-these forms.
+*** New function 'treesit-forward-sexp'.
+Tree-sitter conditionally sets 'forward-sexp-function' for major modes
+that have defined 'treesit-sexp-type-regexp' to enable sexp-related
+motion commands.
-+++
-** 'restore-buffer-modified-p' can now alter buffer auto-save state.
-With a FLAG value of 'autosaved', it will mark the buffer as having
-been auto-saved since the time of last modification.
+** New or changed byte-compilation warnings
---
-** New minor mode 'isearch-fold-quotes-mode'.
-This sets up 'search-default-mode' so that quote characters are
-char-folded into each other. It is used, by default, in "*Help*" and
-"*info*" buffers.
+*** Warn about empty bodies for more special forms and macros.
+The compiler now warns about an empty body argument to 'when',
+'unless', 'ignore-error' and 'with-suppressed-warnings' in addition to
+the existing warnings for 'let' and 'let*'. Example:
-+++
-** New macro 'buffer-local-set-state'.
-This is a helper macro to be used by minor modes that wish to restore
-buffer-local variables back to their original states when the mode is
-switched off.
+ (when (> x 2))
----
-** New macro 'with-buffer-unmodified-if-unchanged'.
-If the buffer is marked as unmodified, and code does modifications
-that, in total, means that the buffer is identical to the buffer
-before, mark the buffer as unmodified again.
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'empty-body'.
---
-** New function 'malloc-trim'.
-This function allows returning unused memory back to the operating
-system, and is mainly meant as a debugging tool. It is currently
-available only when Emacs was built with glibc as the C library.
+*** Warn about quoted error names in 'condition-case' and 'ignore-error'.
+The compiler now warns about quoted condition (error) names
+in 'condition-case' and 'ignore-error'. Example:
----
-** 'x-show-tip' no longer hard-codes a timeout default.
-The new variable 'x-show-tooltip-timeout' allows the user to alter
-this for packages that don't use 'tooltip-show', but instead call the
-lower level function directly.
+ (condition-case nil
+ (/ x y)
+ ('arith-error "division by zero"))
----
-** New function 'current-cpu-time'.
-It gives access to the CPU time used by the Emacs process, for
-example for benchmarking purposes.
+Quoting them adds the error name 'quote' to those handled or ignored
+respectively, which was probably not intended.
---
-** New function 'string-edit'.
-This is meant to be used when the user has to edit a (potentially)
-long string. It pops up a new buffer where you can edit the string,
-and a callback is called when the user types 'C-c C-c'.
-
-+++
-** New function 'read-string-from-buffer'.
-This is a modal version of 'string-edit', and can be used as an
-alternative to 'read-string'.
-
-+++
-** The return value of 'clear-message-function' is not ignored anymore.
-If the function returns 'dont-clear-message', then the message is not
-cleared, with the assumption that the function cleared it itself.
-
-+++
-** The local variables section now supports defining fallback modes.
-This was previously only available when using a property line (i.e.,
-putting the modes on the first line of a file).
-
-+++
-** New function 'flush-standard-output'.
-This enables display of lines that don't end in a newline from
-batch-based Emacs scripts.
-
-+++
-** New convenience function 'buttonize-region'.
-This works like 'buttonize', but for a region instead of a string.
+*** Warn about comparison with literal constants without defined identity.
+The compiler now warns about comparisons by identity with a literal
+string, cons, vector, record, function, large integer or float as this
+may not match any value at all. Example:
-+++
-** 'macroexp-let2*' can omit TEST argument and use single-var bindings.
-
-+++
-** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'.
-See the "(cl) Macro-Writing Macros" manual section for descriptions.
+ (eq x "hello")
-+++
-** New variable 'last-event-device' and new function 'device-class'.
-On X Windows, 'last-event-device' specifies the input extension device
-from which the last input event originated, and 'device-class' can be
-used to determine the type of an input device.
+Only literals for symbols and small integers (fixnums), including
+characters, are guaranteed to have a consistent (unique) identity.
+This warning applies to 'eq', 'eql', 'memq', 'memql', 'assq', 'rassq',
+'remq' and 'delq'.
-+++
-** Variable 'track-mouse' can have a new value 'drag-source'.
-This means the same as 'dropping', but modifies the mouse position
-list in reported motion events if there is no frame underneath the
-mouse pointer.
+To compare by (structural) value, use 'equal', 'member', 'assoc',
+'rassoc', 'remove' or 'delete' instead. Floats and bignums can also
+be compared using 'eql', '=' and 'memql'. Function literals cannot be
+compared reliably at all.
-+++
-** New functions for dragging items from Emacs to other programs.
-The new functions 'x-begin-drag', 'dnd-begin-file-drag',
-'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents
-(such as files and text) from Emacs to other programs.
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
---
-** New function 'ietf-drums-parse-date-string'.
-This function parses RFC5322 (and RFC822) date strings, and should be
-used instead of 'parse-time-string' when parsing data that's standards
-compliant.
-
-+++
-** New macro 'setopt'.
-This is like 'setq', but is meant to be used for user options instead
-of plain variables, and uses 'custom-set'/'set-default' to set them.
-
-+++
-** New utility predicate 'mode-line-window-selected-p'.
-This is meant to be used from ':eval' mode line constructs to create
-different mode line looks for selected and unselected windows.
-
-+++
-** New variable 'messages-buffer-name'.
-This variable (defaulting to "*Messages*") allows packages to override
-where messages are logged.
+*** Warn about 'condition-case' without handlers.
+The compiler now warns when the 'condition-case' form is used without
+any actual handlers, as in
-+++
-** New function 'readablep'.
-This function says whether an object can be written out and then
-read back by the Emacs Lisp reader.
-
-+++
-** New variable 'print-unreadable-function'.
-This variable allows changing how Emacs prints unreadable objects.
+ (condition-case nil (read buffer))
----
-** The user option 'polling-period' now accepts floating point values.
-This means Emacs can now poll for input during Lisp execution more
-frequently than once in a second.
+because it has no effect other than the execution of the body form.
+In particular, no errors are caught or suppressed. If the intention
+was to catch all errors, add an explicit handler for 'error', or use
+'ignore-error' or 'ignore-errors'.
----
-** New function 'bidi-string-strip-control-characters'.
-This utility function is meant for displaying strings when it is
-essential that there's no bidirectional context. It removes all the
-bidirectional formatting control characters (such as RLM, LRO, PDF,
-etc.) from its argument string. The characters it removes are listed
-in the value of 'bidi-control-characters'.
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
---
-** The Gnus range functions have been moved to a new library, range.el.
-All the old names have been made obsolete.
+*** Warn about 'unwind-protect' without unwind forms.
+The compiler now warns when the 'unwind-protect' form is used without
+any unwind forms, as in
-+++
-** New function 'function-alias-p'.
-This predicate says whether an object is a function alias, and if it
-is, the alias chain is returned.
+ (unwind-protect (read buffer))
-+++
-** New variable 'lisp-directory' holds the directory of Emacs's own Lisp files.
+because the behavior is identical to that of the argument; there is
+no protection of any kind. Perhaps the intended unwind forms have
+been misplaced or forgotten, or the use of 'unwind-protect' could be
+simplified away.
-+++
-** New facility for handling session state: 'multisession-value'.
-This can be used as a convenient way to store (simple) application
-state, and the command 'list-multisession-values' allows users to list
-(and edit) this data.
-
-+++
-** New function 'get-display-property'.
-This is like 'get-text-property', but works on the 'display' text
-property.
-
-+++
-** New function 'add-display-text-property'.
-This is like 'put-text-property', but works on the 'display' text
-property.
-
-+++
-** New 'min-width' 'display' property.
-This allows setting a minimum display width for a region of text.
-
-+++
-** New 'cursor-face' text property.
-This uses 'cursor-face' instead of the default face when cursor is on or
-near the character and 'cursor-face-highlight-mode' is enabled. The
-user option 'cursor-face-highlight-nonselected-window' is similar to
-'highlight-nonselected-windows', but for this property.
-
-+++
-** New event type 'touch-end'.
-This event is sent whenever the user's finger moves off the mouse
-wheel on some mice, or when the user's finger moves off the touchpad.
-
-+++
-** New event type 'pinch'.
-This event is sent when a user performs a pinch gesture on a touchpad,
-which is comprised of placing two fingers on the touchpad and moving
-them towards or away from each other.
-
-+++
-** New hook 'x-pre-popup-menu-hook'.
-This hook, run before 'x-popup-menu', is about to display a
-deck-of-cards menu on screen.
-
----
-** New hook 'post-select-region-hook'.
-This hook is run immediately after 'select-active-regions'. It causes
-the region to be set as the primary selection.
-
-+++
-** New function 'buffer-match-p'.
-Check if a buffer satisfies some condition. Some examples for
-conditions can be regular expressions that match a buffer name, a
-cons-cell like '(major-mode . shell-mode)' that matches any buffer
-where 'major-mode' is 'shell-mode' or a combination with a condition
-like '(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'.
-
-+++
-** New function 'match-buffers'.
-It uses 'buffer-match-p' to gather a list of buffers that match a
-condition.
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'suspicious'.
---
-** New optional arguments TEXT-FACE and DEFAULT-FACE for 'tooltip-show'.
-They allow changing the faces used for the tooltip text and frame
-colors of the resulting tooltip frame from the default 'tooltip' face.
+*** Warn about more ignored function return values.
+The compiler now warns when the return value from certain functions is
+ignored. Example:
-** Text Security and Suspiciousness
+ (progn (nreverse my-list) my-list)
-+++
-*** New library textsec.el.
-This library contains a number of checks for whether a string is
-"suspicious". This usually means that the string contains characters
-that have glyphs that can be confused with other, more commonly used
-glyphs, or contains bidirectional (or other) formatting characters
-that may be used to confuse a user.
+will elicit a warning because it is usually pointless to call
+'nreverse' on a list without using the returned value. To silence the
+warning, make use of the value in some way, such as assigning it to a
+variable. You can also wrap the function call in '(ignore ...)'.
-+++
-*** New user option 'textsec-check'.
-If non-nil (which is the default), Emacs packages that are vulnerable
-to attackers trying to confuse the users will use the textsec library
-to mark suspicious text. For instance shr/eww will mark suspicious
-URLs and links, Gnus will mark suspicious From addresses, and
-Message mode will query the user if the user is sending mail to a
-suspicious address. If this variable is nil, these checks are
-disabled.
+This warning can be suppressed using 'with-suppressed-warnings' with
+the warning name 'ignored-return-value'.
+++
-*** New function 'textsec-suspicious-p'.
-This is the main function Emacs applications should be using to check
-whether a string is suspicious. It heeds the 'textsec-check' user
-option.
-
-** Keymaps and Key Definitions
+** New function 'file-user-uid'.
+This function is like 'user-uid', but is aware of file name handlers,
+so it will return the remote UID for remote files (or -1 if the
+connection has no associated user).
+++
-*** 'where-is-internal' can now filter events marked as non key events.
-If a command maps to a key binding like '[some-event]', and 'some-event'
-has a symbol plist containing a non-nil 'non-key-event' property, then
-that binding is ignored by 'where-is-internal'.
+** 'fset', 'defalias' and 'defvaralias' now signal an error for cyclic aliases.
+Previously, 'fset', 'defalias' and 'defvaralias' could be made to
+build circular function and variable indirection chains as in
-+++
-*** New functions for defining and manipulating keystrokes.
-These all take the syntax defined by 'key-valid-p', which is basically
-the same syntax as the one accepted by the 'kbd' macro. None of the
-older functions have been deprecated or altered, but they are now
-de-emphasized in the documentation, and we encourage Lisp programs to
-switch to these new functions.
+ (defalias 'able 'baker)
+ (defalias 'baker 'able)
-+++
-*** Use 'keymap-set' instead of 'define-key'.
+but trying to use them would sometimes make Emacs hang. Now, an attempt
+to create such a loop results in an error.
-+++
-*** Use 'keymap-global-set' instead of 'global-set-key'.
-
-+++
-*** Use 'keymap-local-set' instead of 'local-set-key'.
-
-+++
-*** Use 'keymap-global-unset' instead of 'global-unset-key'.
-
-+++
-*** Use 'keymap-local-unset' instead of 'local-unset-key'.
-
-+++
-*** Use 'keymap-substitute' instead of 'substitute-key-definition'.
-
-+++
-*** Use 'keymap-set-after' instead of 'define-key-after'.
-
-+++
-*** Use 'keymap-lookup' instead of 'lookup-key' and 'key-binding'.
-
-+++
-*** Use 'keymap-local-lookup' instead of 'local-key-binding'.
-
-+++
-*** Use 'keymap-global-lookup' instead of 'global-key-binding'.
-
-+++
-*** 'define-key' now takes an optional REMOVE argument.
-If non-nil, remove the definition from the keymap. This is subtly
-different from setting a definition to nil (when the keymap has a
-parent).
-
-+++
-*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.
-If non-nil, show the help buffer immediately, before any user input.
-
-+++
-*** New function 'key-valid-p'.
-The 'kbd' function is quite permissive, and will try to return
-something usable even if the syntax of the argument isn't completely
-correct. The 'key-valid-p' predicate does a stricter check of the
-syntax.
-
----
-*** New function 'key-parse'.
-This is like 'kbd', but only returns vectors instead of a mix of
-vectors and strings.
-
-+++
-*** New ':type' for 'defcustom' for keys.
-The new 'key' type can be used for options that should be a valid key
-according to 'key-valid-p'. The type 'key-sequence' is now obsolete.
-
-+++
-** New function 'define-keymap'.
-This function allows defining a number of keystrokes with one form.
-
-+++
-** New macro 'defvar-keymap'.
-This macro allows defining keymap variables more conveniently.
-
-** 'defvar-keymap' can specify 'repeat-mode' behavior for the keymap.
-Use ':repeat t' to have all bindings be repeatable or for more
-advanced usage:
-
- :repeat (:enter (commands ...) :exit (commands ...))
-
----
-** 'kbd' can now be used in built-in, preloaded libraries.
-It no longer depends on edmacro.el and cl-lib.el.
-
-+++
-** New substitution in docstrings and 'substitute-command-keys'.
-Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example
-\\`C-k') in a docstring or when calling 'substitute-command-keys',
-which will use the same face as a command substitution. This should
-be used only when a key sequence has no corresponding command, for
-example when it is read directly with 'read-key-sequence'. It must be
-a valid key sequence according to 'key-valid-p'.
-
----
-** 'lookup-key' is more permissive when searching for extended menu items.
-In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
-for a menu item '[menu-bar Foo-Bar]', first try to find an exact
-match, then look for the lowercased '[menu-bar foo-bar]'.
-
-This has been extended, so that when looking for a menu item with a
-symbol containing spaces, as in '[menu-bar Foo\ Bar]', first look for
-an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
-'[menu-bar foo-bar]'. This further improves backwards-compatibility
-when converting menus to use 'easy-menu-define'.
-
-+++
-** New function 'file-name-split'.
-This returns a list of all the components of a file name.
-
-+++
-** New function 'file-name-parent-directory'.
-This returns the parent directory of a file name.
-
-+++
-** New macro 'with-undo-amalgamate'.
-It records a particular sequence of operations as a single undo step.
-
-+++
-** New command 'yank-media'.
-This command supports yanking non-plain-text media like images and
-HTML from other applications into Emacs. It is only supported in
-modes that have registered support for it, and only on capable
-platforms.
-
-+++
-** New command 'yank-media-types'.
-This command lets you examine all data in the current selection and
-the clipboard, and insert it into the buffer.
-
-+++
-** New variable 'yank-transform-functions'.
-This variable allows the user to alter the string to be inserted.
-
----
-** New command 'yank-in-context'.
-This command tries to preserve string/comment syntax when yanking.
-
----
-** New function 'minibuffer-lazy-highlight-setup'.
-This function allows setting up the minibuffer so that lazy
-highlighting of its content is applied in the original window.
-
-+++
-** New text property 'inhibit-isearch'.
-If set, 'isearch' will skip these areas, which can be useful (for
-instance) when covering huge amounts of data (that has no meaningful
-searchable data, like image data) with a 'display' text property.
-
-+++
-** 'insert-image' now takes an INHIBIT-ISEARCH optional argument.
-It marks the image with the 'inhibit-isearch' text property, which
-inhibits 'isearch' matching the STRING argument.
-
----
-** New variable 'replace-regexp-function'.
-Function to call to convert the entered FROM string to an Emacs
-regexp in 'query-replace' and similar commands. It can be used to
-implement a different regexp syntax for search/replace.
-
----
-** New variables to customize defaults of FROM for 'query-replace*' commands.
-The new variable 'query-replace-read-from-default' can be set to a
-function that returns the default value of FROM when 'query-replace'
-prompts for a string to be replaced. An example of such a function is
-'find-tag-default'.
-
-The new variable 'query-replace-read-from-regexp-default' can be set
-to a function (such as 'find-tag-default-as-regexp') that returns the
-default value of FROM when 'query-replace-regexp' prompts for a regexp
-whose matches are to be replaced. If these variables are nil (which
-is the default), 'query-replace' and 'query-replace-regexp' take the
-default value from the previous FROM-TO pair.
-
-** Lisp pretty-printer ('pp')
-
----
-*** New function 'pp-emacs-lisp-code'.
-'pp' formats general Lisp sexps. This function does much the same,
-but applies formatting rules appropriate for Emacs Lisp code. Note
-that this could currently be quite slow, and is thus appropriate only
-for relatively small code fragments.
-
----
-*** New user option 'pp-use-max-width'.
-If non-nil, 'pp' and all 'pp-*' commands that format the results, will
-attempt to limit the line length when formatting long lists and
-vectors. This uses 'pp-emacs-lisp-code', and thus could be slow for
-large lists.
-
-+++
-** New function 'file-has-changed-p'.
-This convenience function is useful when writing code that parses
-files at run-time, and allows Lisp programs to re-parse files only
-when they have changed.
-
-+++
-** 'abbreviate-file-name' now respects magic file name handlers.
-
----
-** New function 'font-has-char-p'.
-This can be used to check whether a specific font has a glyph for a
-character.
-
-+++
-** 'window-text-pixel-size' now accepts a new argument IGNORE-LINE-AT-END.
-This controls whether or not the last screen line of the text being
-measured will be counted for the purpose of calculating the text
-dimensions.
-
-+++
-** 'window-text-pixel-size' understands a new meaning of FROM.
-Specifying a cons as the FROM argument allows to start measuring text
-from a specified amount of pixels above or below a position.
-
-+++
-** 'window-body-width' and 'window-body-height' can use remapped faces.
-Specifying 'remap' as the PIXELWISE argument now checks if the default
-face was remapped, and if so, uses the remapped face to determine the
-character width/height.
-
-+++
-** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P.
-This means the vscroll will not be reset when set on a window that is
-"frozen" due to a mini-window being resized.
-
-** XDG Support
-
----
-*** New function 'xdg-state-home'.
-It returns the new 'XDG_STATE_HOME' environment variable. It should
-point to a file name that "contains state data that should persist
-between (application) restarts, but that is not important or portable
-enough to the user that it should be stored in $XDG_DATA_HOME".
-(This variable was introduced in the XDG Base Directory Specification
-version 0.8 released on May 8, 2021.)
-
----
-*** New function 'xdg-current-desktop'.
-It returns a list of strings, corresponding to the colon-separated
-list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which
-identify the current desktop environment.
-(This variable was introduced in XDG Desktop Entry Specification
-version 1.2.)
-
----
-*** New function 'xdg-session-type'.
-It returns the 'XDG_SESSION_TYPE' environment variable. (This is not
-part of any official standard; see the man page pam_systemd(8) for
-more information.)
-
-+++
-** New macro 'with-delayed-message'.
-This macro is like 'progn', but will output the specified message if
-the body takes longer to execute than the specified timeout.
-
----
-** New function 'funcall-with-delayed-message'.
-This function is like 'funcall', but will output the specified message
-if the function takes longer to execute than the specified timeout.
-
-** Locale
-
----
-*** New variable 'current-locale-environment'.
-This holds the value of the previous call to 'set-locale-environment'.
-
----
-*** New macro 'with-locale-environment'.
-This macro can be used to change the locale temporarily while
-executing code.
-
-** Table
-
----
-*** New user option 'table-latex-environment'.
-This allows switching between "table" and "tabular".
-
-** Tabulated List Mode
-
-+++
-*** A column can now be set to an image descriptor.
-The 'tabulated-list-entries' variable now supports using an image
-descriptor, which means to insert an image in that column instead of
-text. See the documentation string of that variable for details.
-
-+++
-** ':keys' in 'menu-item' can now be a function.
-If so, it is called whenever the menu is computed, and can be used to
-calculate the keys dynamically.
-
-+++
-** New major mode 'clean-mode'.
-This is a new major mode meant for debugging. It kills absolutely all
-local variables and removes overlays and text properties.
-
-+++
-** 'kill-all-local-variables' can now kill all local variables.
-If given the new optional KILL-PERMANENT argument, it also kills
-permanent local variables.
-
-+++
-** Third 'mapconcat' argument SEPARATOR is now optional.
-An explicit nil always meant the empty string, now it can be left out.
-
-+++
-** New function 'image-at-point-p'.
-This function returns t if point is on a valid image, and nil
-otherwise.
-
-+++
-** New function 'buffer-text-pixel-size'.
-This is similar to 'window-text-pixel-size', but can be used when the
-buffer isn't displayed.
-
-+++
-** New function 'string-pixel-width'.
-This returns the width of a string in pixels. This can be useful when
-dealing with variable pitch fonts and glyphs that have widths that
-aren't integer multiples of the default font.
-
-+++
-** New function 'string-glyph-split'.
-This function splits a string into a list of strings representing
-separate glyphs. This takes into account combining characters and
-grapheme clusters, by treating each sequence of characters composed on
-display as a single unit.
-
-** Xwidget
-
-+++
-*** The function 'make-xwidget' now accepts an optional RELATED argument.
-This argument is used as another widget for the newly created WebKit
-widget to share settings and subprocesses with. It must be another
-WebKit widget.
-
-+++
-*** New function 'xwidget-perform-lispy-event'.
-This function allows you to send events to xwidgets. Usually, some
-equivalent of the event will be sent, but there is no guarantee of
-what the widget will actually receive.
-
-On GTK+, only key and function key events are implemented.
-
-+++
-*** New function 'xwidget-webkit-load-html'.
-This function is used to load HTML text into WebKit xwidgets
-directly, in contrast to creating a temporary file to hold the
-markup, and passing the URI of the file as an argument to
-'xwidget-webkit-goto-uri'.
-
-+++
-*** New functions for performing searches on WebKit xwidgets.
-Some new functions, such as 'xwidget-webkit-search', have been added
-for performing searches on WebKit xwidgets.
-
-+++
-*** New function 'xwidget-webkit-back-forward-list'.
-This function returns the history of page-loads in a WebKit xwidget.
-
-+++
-*** New function 'xwidget-webkit-estimated-load-progress'.
-This function returns the estimated progress of page loading in a
-WebKit xwidget.
-
-+++
-*** New function 'xwidget-webkit-stop-loading'.
-This function terminates all data transfer during page loads in a
-WebKit xwidget.
-
-+++
-*** 'load-changed' xwidget events are now more detailed.
-In particular, they can now have different arguments based on the
-state of the WebKit widget. 'load-finished' is sent when a load has
-completed, 'load-started' when a load first starts, 'load-redirected'
-after a redirect, and 'load-committed' when the WebKit widget first
-commits to the load.
-
-+++
-*** New event type 'xwidget-display-event'.
-These events are sent whenever an xwidget requests that Emacs displays
-another xwidget. The only arguments to this event are the xwidget
-that should be displayed, and the xwidget that asked to display it.
-
-+++
-*** New function 'xwidget-webkit-set-cookie-storage-file'.
-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.
-
-+++
-** Timestamps like '(1 . 1000)' now work without warnings being generated.
-For example, '(time-add nil '(1 . 1000))' no longer warns that the
-'(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a
-temporary transition aid for Emacs 27, has served its purpose.
-
-+++
-** 'encode-time' now also accepts a 6-element list with just time and date.
-'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR))' is now short for
-'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'.
-
-+++
-** 'date-to-time' now accepts arguments that lack month, day, or time.
-The function now assumes the earliest possible values if its argument
-lacks month, day, or time. For example, (date-to-time "2021-12-04")
-now assumes a time of "00:00" instead of signaling an error.
-
-+++
-** 'format-seconds' now allows suppressing zero-value trailing elements.
-The new "%x" non-printing control character will suppress zero-value
-elements that appear after "%x".
-
-+++
-** New events for taking advantage of touchscreen devices.
-The events 'touchscreen-begin', 'touchscreen-update', and
-'touchscreen-end' have been added to take better advantage of
-touch-capable display panels.
-
-+++
-** New error symbol 'permission-denied'.
-This is a subcategory of 'file-error', and is signaled when some file
-operation fails because the OS doesn't allow Emacs to access a file or
-a directory.
-
-+++
-** The ':underline' face attribute now accepts a new property.
-The property ':position' now specifies the position of the underline
-when used as part of a property list specification for the
-':underline' attribute.
-
-+++
-** 'defalias' records a more precise history of definitions.
-This is recorded in the 'function-history' symbol property.
-
----
-** New hook 'save-place-after-find-file-hook'.
-This is called at the end of 'save-place-find-file-hook'.
-
----
-** 'indian-tml-base-table' no longer translates digits.
-Use 'indian-tml-base-digits-table' if you want digits translation.
-
----
-** 'indian-tml-itrans-v5-hash' no longer translates digits.
-Use 'indian-tml-itrans-digits-v5-hash' if you want digits
-translation.
-
-+++
-** 'shell-quote-argument' has a new optional argument POSIX.
-This is useful when quoting shell arguments for a remote shell
-invocation. Such shells are POSIX conformant by default.
-
-+++
-** 'make-process' can set connection type independently for input and output.
-When calling 'make-process', communication via pty can be enabled
-selectively for just input or output by passing a cons cell for
-':connection-type', e.g. '(pipe . pty)'. When examining a process
-later, you can determine whether a particular stream for a process
-uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the
-second argument to 'process-tty-name'.
-
-+++
-** 'signal-process' now consults the list 'signal-process-functions'.
-This is to determine which function has to be called in order to
-deliver the signal. This allows Tramp to send the signal to remote
-asynchronous processes. The hitherto existing implementation has been
-moved to 'internal-default-signal-process'.
-
-+++
-** Some system information functions honor remote systems now.
-'list-system-processes' returns remote process IDs.
-'memory-info' returns memory information of remote systems.
-'process-attributes' expects a remote process ID.
-This happens only when the current buffer's 'default-directory' is
-remote. In order to preserve the old behavior, bind
-'default-directory' to a local directory, like
-
- (let ((default-directory temporary-file-directory))
- (list-system-processes))
-
-+++
-** New functions 'take' and 'ntake'.
-'(take N LIST)' returns the first N elements of LIST; 'ntake' does
-the same but works by modifying LIST destructively.
-
----
-** 'string-split' is now an alias for 'split-string'.
-
-+++
-** 'format-spec' now accepts functions in the replacement.
-The function is called only when used in the format string. This is
-useful to avoid side-effects such as prompting, when the value is not
-actually being used for anything.
-
-+++
-** The variable 'max-specpdl-size' has been made obsolete.
-Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion
-and stack usage. 'max-specpdl-size' is still present as a plain
-variable for compatibility but its limiting powers have been taken away.
-
-** New function 'external-completion-table'.
-This function returns a completion table designed to ease
-communication between Emacs's completion facilities and external tools
-offering completion services, particularly tools whose full working
-set is too big to transfer to Emacs every time a completion is
-needed. The table uses new 'external' completion style exclusively
-and cannot work with regular styles such as 'basic' or 'flex'.
-
-+++
-** Magic file name handlers for 'make-directory-internal' are no longer needed.
-Instead, Emacs uses the already-existing 'make-directory' handlers.
-
-+++
-** '(make-directory DIR t)' returns non-nil if DIR already exists.
-This can let a caller know whether it created DIR. Formerly,
-'make-directory's return value was unspecified.
+Since circular alias chains now cannot occur, 'function-alias-p',
+'indirect-function' and 'indirect-variable' will never signal an error.
+Their 'noerror' arguments have no effect and are therefore obsolete.
-* Changes in Emacs 29.1 on Non-Free Operating Systems
-
-** MS-Windows
-
----
-*** Emacs now supports double-buffering on MS-Windows to reduce display flicker.
-(This was supported on Free systems since Emacs 26.1.)
-
-To disable double-buffering (e.g., if it causes display problems), set
-the frame parameter 'inhibit-double-buffering' to a non-nil value.
-You can do that either by adding
-
- '(inhibit-double-buffering . t)
-
-to 'default-frame-alist', or by modifying the frame parameters of the
-selected frame by evaluating
-
- (modify-frame-parameters nil '((inhibit-double-buffering . t)))
-
-+++
-*** Emacs now supports system dark mode.
-On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now
-follow the system's dark mode: GUI frames use the appropriate light or
-dark title bar and scroll bars, based on the user's Windows-wide color
-settings.
-
----
-*** Emacs now uses native image APIs to display some image formats.
-On Windows 2000 and later, Emacs now defaults to using the native
-image APIs for displaying the BMP, GIF, JPEG, PNG, and TIFF images.
-This means Emacs on MS-Windows needs no longer use external image
-support libraries to display those images. Other image types -- XPM,
-SVG, and WEBP -- still need support libraries for Emacs to be able to
-display them.
-
-The use of native image APIs is controlled by the variable
-'w32-use-native-image-API', whose value now defaults to t on systems
-where those APIs are available.
-
-+++
-*** Emacs now supports display of BMP images using native image APIs.
-When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now
-has built-in support for displaying BMP images.
-
----
-*** GUI Yes/No dialogs now include a "Cancel" button.
-The "Cancel" button is in addition to "Yes" and "No", and is intended
-to allow users to quit the dialog, as an equivalent of 'C-g' when Emacs
-asks a yes/no question via the echo area. This is controlled by the
-new variable 'w32-yes-no-dialog-show-cancel', by default t. Set it to
-nil to get back the old behavior of showing a modal dialog with only
-two buttons: "Yes" and "No".
-
-** Cygwin
-
----
-*** 'process-attributes' is now implemented.
-
-** macOS
-
-+++
-*** The 'ns-popup-font-panel' command has been removed.
-Use the general command 'M-x menu-set-font' instead.
+* Changes in Emacs 30.1 on Non-Free Operating Systems
----------------------------------------------------------------------
diff --git a/etc/NEWS.29 b/etc/NEWS.29
new file mode 100644
index 00000000000..84dbb94a71a
--- /dev/null
+++ b/etc/NEWS.29
@@ -0,0 +1,4940 @@
+GNU Emacs NEWS -- history of user-visible changes.
+
+Copyright (C) 2021-2023 Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
+Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'.
+If possible, use 'M-x report-emacs-bug'.
+
+This file is about changes in Emacs version 29.
+
+See file HISTORY for a list of GNU Emacs versions and release dates.
+See files NEWS.28, NEWS.27, ..., NEWS.18, and NEWS.1-17 for changes
+in older Emacs versions.
+
+You can narrow news to a specific version by calling 'view-emacs-news'
+with a prefix argument or by typing 'C-u C-h C-n'.
+
+Temporary note:
++++ indicates that all relevant manuals in doc/ have been updated.
+--- means no change in the manuals is needed.
+When you add a new item, use the appropriate mark if you are sure it
+applies, and please also update docstrings as needed.
+
+
+* Installation Changes in Emacs 29.1
+
+---
+** Ahead-of-time native compilation can now be requested via configure.
+Use '--with-native-compilation=aot' to request that all the Lisp files
+in the Emacs tree should be natively compiled ahead of time. (This is
+slow on most machines.)
+
+This feature existed in Emacs 28.1, but was less easy to request.
+
++++
+** Emacs can be built with the tree-sitter parsing library.
+This library, together with separate grammar libraries for each
+language, provides incremental parsing capabilities for several
+popular programming languages and other formatted files. Emacs built
+with this library offers major modes, described elsewhere in this
+file, that are based on the tree-sitter's parsers. If you have the
+tree-sitter library installed, the configure script will automatically
+include it in the build; use '--without-tree-sitter' at configure time
+to disable that.
+
+Emacs modes based on the tree-sitter library require an additional
+grammar library for each mode. These grammar libraries provide the
+tree-sitter library with language-specific lexical analysis and
+parsing capabilities, and are developed separately from the
+tree-sitter library itself. If you don't have a grammar library
+required by some Emacs major mode, and your distro doesn't provide it
+as an installable package, you can compile and install such a library
+yourself. Many libraries can be downloaded from the tree-sitter site:
+
+ https://github.com/tree-sitter
+
+Emacs provides a user command, 'treesit-install-language-grammar',
+that automates the download and build process of a grammar library.
+It prompts for the language, the URL of the language grammar's VCS
+repository, and then uses the installed C/C++ compiler to build the
+library and install it.
+
+You can also do this manually. To compile such a library after
+cloning its Git repository, compile the files "scanner.c" and
+"parser.c" (sometimes named "scanner.cc" and "parser.cc") in the "src"
+subdirectory of the library's source tree using the C or C++ compiler,
+then link these two files into a shared library named
+"libtree-sitter-LANG.so", where LANG is the name of the language
+supported by the grammar as it is expected by the Emacs major mode
+(for example, "c" for 'c-ts-mode', "cpp" for 'c++-ts-mode', "python"
+for 'python-ts-mode', etc.). Then place the shared library you've
+built in the same directory where you keep the other shared libraries
+used by Emacs, or in the "tree-sitter" subdirectory of your
+'user-emacs-directory', or in a directory mentioned in the variable
+'treesit-extra-load-path'.
+
+You only need to install language grammar libraries required by the
+Emacs modes you will use, as Emacs loads these libraries only when the
+corresponding mode is turned on in some buffer for the first time in
+an Emacs session.
+
++++
+** Emacs can be built with built-in support for accessing SQLite databases.
+This uses the popular sqlite3 library, and can be disabled by using
+the '--without-sqlite3' option to the 'configure' script.
+
++++
+** Support for the WebP image format.
+This support is built by default when the libwebp library is
+available, and includes support for animated WebP images. To disable
+WebP support, use the '--without-webp' configure flag. Image
+specifiers can now use ':type webp'.
+
++++
+** Emacs has been ported to the Haiku operating system.
+The configuration process should automatically detect and build for
+Haiku. There is also an optional window-system port to Haiku, which
+can be enabled by configuring Emacs with the option '--with-be-app',
+which will require the Haiku Application Kit development headers and a
+C++ compiler to be present on your system. If Emacs is not built with
+the option '--with-be-app', the resulting Emacs will only run in
+text-mode terminals.
+
+To enable Cairo support, ensure that the Cairo and FreeType
+development files are present on your system, and configure Emacs with
+'--with-be-cairo'.
+
+Unlike X, there is no compile-time option to enable or disable
+double-buffering; it is always enabled. To disable it, change the
+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
+"...dir/libexec/emacs/29.1/x86_64-pc-linux-gnu/emacs-<fingerprint>.pdmp".
+If a constant file name is required, the file can be renamed to
+"emacs.pdmp", and Emacs will find it during startup anyway.
+
+---
+** Emacs on X now uses XInput 2 for input events.
+If your X server has support and you have the XInput 2 development
+headers installed, Emacs will use the X Input Extension for handling
+input. If this causes problems, you can configure Emacs with the
+option '--without-xinput2' to disable this support.
+
+'(featurep 'xinput2)' can be used to test for the presence of XInput 2
+support from Lisp programs.
+
++++
+** Emacs now supports being built with pure GTK.
+To use this option, make sure the GTK 3 (version 3.22.23 or later) and
+Cairo development files are installed, and configure Emacs with the
+option '--with-pgtk'. Unlike the default X and GTK build, the
+resulting Emacs binary will work on any underlying window system
+supported by GDK, such as Wayland and Broadway. We recommend that you
+use this configuration only if you are running a window system other
+than X that's supported by GDK. Running this configuration on X is
+known to have problems, such as undesirable frame positioning and
+various issues with keyboard input of sequences such as 'C-;' and
+'C-S-u'.
+
+---
+** Emacs no longer reduces the size of the Japanese dictionary.
+Building Emacs includes generation of a Japanese dictionary, which is
+used by Japanese input methods. Previously, the build included a step
+of reducing the size of this dictionary's vocabulary. This vocabulary
+reduction is now optional, by default off. If you need the Emacs
+build to include the vocabulary reduction, configure Emacs with the
+option '--with-small-ja-dic'. In an Emacs source tree already
+configured without that option, you can force the vocabulary reduction
+by saying
+
+ make -C leim generate-ja-dic JA_DIC_NO_REDUCTION_OPTION=''
+
+after deleting "lisp/leim/ja-dic/ja-dic.el".
+
+---
+** The docstrings of preloaded files are not in "etc/DOC" any more.
+Instead, they're fetched as needed from the corresponding ".elc"
+files, as was already the case for all the non-preloaded files.
+
+
+* Startup Changes in Emacs 29.1
+
++++
+** '--batch' and '--script' now adjust the garbage collection levels.
+These switches now set 'gc-cons-percentage' to 1.0 (up from the
+default of 0.1). This means that batch processes will typically use
+more memory than before, but use less time doing garbage collection.
+Batch jobs that are supposed to run for a long time should adjust the
+limit back down again.
+
++++
+** Emacs can now be used more easily in an executable script.
+If you start an executable script with
+
+ #!/usr/bin/emacs -x
+
+Emacs will start without reading any init files (like with '--quick'),
+and then execute the rest of the script file as Emacs Lisp. When it
+reaches the end of the script, Emacs will exit with an exit code from
+the value of the final form.
+
++++
+** Emacs now supports setting 'user-emacs-directory' via '--init-directory'.
+Use the '--init-directory' command-line option to set
+'user-emacs-directory'.
+
++++
+** Emacs now has a '--fingerprint' option.
+This will output a string identifying the current Emacs build, and exit.
+
++++
+** New hook 'after-pdump-load-hook'.
+This is run at the end of the Emacs startup process, and is meant to
+be used to reinitialize data structures that would normally be done at
+load time.
+
+** Native Compilation
+
++++
+*** New command 'native-compile-prune-cache'.
+This command deletes old subdirectories of the eln cache (but not the
+ones for the current Emacs version). Note that subdirectories of the
+system directory where the "*.eln" files are installed (usually, the
+last entry in 'native-comp-eln-load-path') are not deleted.
+
+---
+*** New function 'startup-redirect-eln-cache'.
+This function can be called in your init files to change the
+user-specific directory where Emacs stores the "*.eln" files produced
+by native compilation of Lisp packages Emacs loads. The default
+eln cache directory is unchanged: it is the "eln-cache" subdirectory
+of 'user-emacs-directory'.
+
+
+* Incompatible changes in Emacs 29.1
+
++++
+** The image commands have changed key bindings.
+In previous Emacs versions, images have had the '+', '-' and 'r' keys
+bound when point is over an image. In Emacs 29.1, additional commands
+were added, and this made it more likely that users would trigger the
+image commands by mistake. To avoid this, all image commands have
+moved to the 'i' prefix keymap, so '+' is now 'i +', '-' is now 'i -',
+and 'r' is now 'i r'. In addition, these commands are now repeating,
+so, for example, you can rotate an image twice by typing 'i r r'.
+
++++
+** Emacs now picks the correct coding-system for X input methods.
+Previously, Emacs would use 'locale-coding-system' for input
+methods, which could in some circumstances be incorrect, especially
+when the input method chose to fall back to some other coding system.
+
+Emacs now automatically detects the coding-system used by input
+methods, and uses that to decode input in preference to the value of
+'locale-coding-system'. This unfortunately means that users who have
+changed the coding system used to decode X keyboard input must adjust
+their customizations to 'locale-coding-system' to the variable
+'x-input-coding-system' instead.
+
++++
+** Bookmarks no longer include context for encrypted files.
+If you're visiting an encrypted file, setting a bookmark no longer
+includes excerpts from that buffer in the bookmarks file. This is
+implemented by the new hook 'bookmark-inhibit-context-functions',
+where packages can register a function which returns non-nil for file
+names to be excluded from adding such excerpts.
+
+---
+** 'show-paren-mode' is now disabled in 'special-mode' buffers.
+In Emacs versions previous to Emacs 28.1, 'show-paren-mode' defaulted
+off. In Emacs 28.1, the mode was switched on in all buffers. In
+Emacs 29.1, this was changed to be switched on in all editing-related
+buffers, but not in buffers that inherit from 'special-mode'. To go
+back to how things worked in Emacs 28.1, put the following in your
+init file:
+
+ (setopt show-paren-predicate t)
+
++++
+** Explicitly-set read-only state is preserved when reverting a buffer.
+If you use the 'C-x C-q' command to change the read-only state of the
+buffer and then revert it, Emacs would previously use the file
+permission bits to determine whether the buffer should be read-only
+after reverting the buffer. Emacs now remembers the decision made in
+'C-x C-q'.
+
+---
+** The Gtk selection face is no longer used for the region.
+The combination of a Gtk-controlled background and a foreground color
+controlled by the internal Emacs machinery led to low-contrast faces
+in common default setups. Emacs now uses the same 'region' face on
+Gtk and non-Gtk setups.
+
+---
+** 'C-h f' and 'C-h x' may now require confirmation when you press 'RET'.
+If the text in the minibuffer cannot be completed to a single function
+or command, typing 'RET' will not automatically complete to the shortest
+candidate, but will instead ask for confirmation. Typing 'TAB' will
+complete as much as possible, and another 'TAB' will show all the
+possible completions. This allows you to insist on the functions name
+even if Help doesn't appear to know about it, by confirming with a
+second 'RET'.
+
+** Dired
+
+---
+*** 'w' ('dired-copy-filename-as-kill') has changed behavior.
+If there are several files marked, file names containing space and
+quote characters will be quoted "like this".
+
+---
+*** The 'd' command now more consistently skips dot files.
+In previous Emacs versions, commands like 'C-u 10 d' would put the "D"
+mark on the next ten files, no matter whether they were dot files
+(i.e., "." and "..") or not, while marking the next ten lines with the
+mouse (in 'transient-mark-mode') and then hitting 'd' would skip dot
+files. These now work equivalently.
+
++++
+** Warning about "eager macro-expansion failure" is now an error.
+
+---
+** Previously, the X "reverseVideo" value at startup was heeded for all frames.
+This meant that if you had a "reverseVideo" resource on the initial
+display, and then opened up a new frame on a display without any
+explicit "reverseVideo" setting, it would get heeded there, too. (This
+included terminal frames.) In Emacs 29, the "reverseVideo" X resource
+is handled like all the other X resources, and set on a per-frame basis.
+
++++
+** 'E' in 'query-replace' now edits the replacement with exact case.
+Previously, this command did the same as 'e'.
+
+---
+** '/ a' in "*Packages*" buffer now limits by archive name(s) instead of regexp.
+
++++
+** Setting the goal columns now also affects '<prior>' and '<next>'.
+Previously, 'C-x C-n' only affected 'next-line' and 'previous-line',
+but it now also affects 'scroll-up-command' and 'scroll-down-command'.
+
+---
+** Isearch in "*Help*" and "*info*" now char-folds quote characters by default.
+This means that you can say 'C-s `foo' (GRAVE ACCENT) if the buffer
+contains "‘foo" (LEFT SINGLE QUOTATION MARK) and the like. These
+quotation characters look somewhat similar in some fonts. To switch
+this off, disable the new 'isearch-fold-quotes-mode' minor mode.
+
+---
+** Sorting commands no longer necessarily change modification status.
+In earlier Emacs versions, commands like 'sort-lines' would always
+change buffer modification status to "modified", whether they changed
+something in the buffer or not. This has been changed: the buffer is
+marked as modified only if the sorting ended up actually changing the
+contents of the buffer.
+
+---
+** 'string-lines' handles trailing newlines differently.
+It no longer returns an empty final string if the string ends with a
+newline.
+
+---
+** 'TAB' and '<backtab>' are now bound in 'button-map'.
+This means that if point is on a button, 'TAB' will take you to the
+next button, even if the mode has bound it to something else. This
+also means that 'TAB' on a button in an 'outline-minor-mode' heading
+will move point instead of collapsing the outline.
+
+---
+** 'outline-minor-mode-cycle-map' is now parent of 'outline-minor-mode'.
+Instead of adding text property 'keymap' with 'outline-minor-mode-cycle'
+on outline headings in 'outline-minor-mode', the keymap
+'outline-minor-mode-cycle' is now active in the whole buffer.
+But keybindings in 'outline-minor-mode-cycle' still take effect
+only on outline headings because they are bound with the help of
+'outline-minor-mode-cycle--bind' that checks if point is on a heading.
+
+---
+** 'Info-default-directory-list' is no longer populated at Emacs startup.
+If you have code in your init file that removes directories from
+'Info-default-directory-list', this will no longer work.
+
+---
+** 'C-k' no longer deletes files in 'ido-mode'.
+To get the previous action back, put something like the following in
+your Init file:
+
+ (require 'ido)
+ (keymap-set ido-file-completion-map "C-k" #'ido-delete-file-at-head)
+
+---
+** New user option 'term-clear-full-screen-programs'.
+By default, term.el will now work like most terminals when displaying
+full-screen programs: When they exit, the output is cleared, leaving
+what was displayed in the window before the programs started. Set
+this user option to nil to revert back to the old behavior.
+
+---
+** Support for old EIEIO functions is not autoloaded any more.
+You need an explicit '(require 'eieio-compat)' to use 'defmethod'
+and 'defgeneric' (which have been made obsolete in Emacs 25.1 with
+'cl-defmethod' and 'cl-defgeneric').
+Similarly you might need to '(require 'eieio-compat)' before loading
+files that were compiled with an old EIEIO (Emacs<25).
+
+---
+** 'C-x 8 .' has been moved to 'C-x 8 . .'.
+This is to open up the 'C-x 8 .' map to bind further characters there.
+
+---
+** 'C-x 8 =' has been moved to 'C-x 8 = ='.
+You can now use 'C-x 8 =' to insert several characters with macron;
+for example, 'C-x 8 = a' will insert U+0101 LATIN SMALL LETTER A WITH
+MACRON. To insert a lone macron, type 'C-x 8 = =' instead of the
+previous 'C-x ='.
+
+** Eshell
+
+*** Eshell's PATH is now derived from 'exec-path'.
+For consistency with remote connections, Eshell now uses 'exec-path'
+to determine the execution path on the local or remote system, instead
+of using the PATH environment variable directly.
+
+---
+*** 'source' and '.' no longer accept the '--help' option.
+This is for compatibility with the shell versions of these commands,
+which don't handle options like '--help' in any special way.
+
++++
+*** String delimiters in argument predicates/modifiers are more restricted.
+Previously, some argument predicates/modifiers allowed arbitrary
+characters as string delimiters. To provide more unified behavior
+across all predicates/modifiers, the list of allowed delimiters has
+been restricted to "...", '...', /.../, |...|, (...), [...], <...>,
+and {...}. See the "(eshell) Argument Predication and Modification"
+node in the Eshell manual for more details.
+
++++
+*** Eshell pipelines now only pipe stdout by default.
+To pipe both stdout and stderr, use the '|&' operator instead of '|'.
+
+---
+** The 'delete-forward-char' command now deletes by grapheme clusters.
+This command is by default bound to the '<Delete>' function key
+(a.k.a. '<deletechar>'). When invoked without a prefix argument or
+with a positive prefix numeric argument, the command will now delete
+complete grapheme clusters produced by character composition. For
+example, if point is before an Emoji sequence, pressing '<Delete>'
+will delete the entire sequence, not just a single character at its
+beginning.
+
++++
+** 'load-history' does not treat autoloads specially any more.
+An autoload definition appears just as a '(defun . NAME)' and the
+'(t . NAME)' entries are not generated any more.
+
+---
+** The Tamil input methods no longer insert Tamil digits.
+The input methods 'tamil-itrans' and 'tamil-inscript' no longer insert
+the Tamil digits, as those digit characters are not used nowadays by
+speakers of the Tamil language. To get back the previous behavior,
+use the new 'tamil-itrans-digits' and 'tamil-inscript-digits' input
+methods instead.
+
++++
+** New variable 'current-time-list' governing default timestamp form.
+Functions like 'current-time' now yield '(TICKS . HZ)' timestamps if
+this new variable is nil. The variable defaults to t, which means
+these functions default to timestamps of the forms '(HI LO US PS)',
+'(HI LO US)' or '(HI LO)', which are less regular and less efficient.
+This is part of a long-planned change first documented in Emacs 27.
+Developers are encouraged to test timestamp-related code with this
+variable set to nil, as it will default to nil in a future Emacs
+version and will be removed some time after that.
+
++++
+** Functions that recreate the "*scratch*" buffer now also initialize it.
+When functions like 'other-buffer' and 'server-execute' recreate
+"*scratch*", they now also insert 'initial-scratch-message' and set
+the major mode according to 'initial-major-mode', like at Emacs
+startup. Previously, these functions ignored
+'initial-scratch-message' and left "*scratch*" in 'fundamental-mode'.
+
+---
+** Naming of Image-Dired thumbnail files has changed.
+Names of thumbnail files generated when 'image-dired-thumbnail-storage'
+is 'image-dired' now always end in ".jpg". This fixes various issues
+on different platforms, but means that thumbnails generated in Emacs 28
+will not be used in Emacs 29, and vice-versa. If disk space is an
+issue, consider deleting the 'image-dired-dir' directory (usually
+"~/.emacs.d/image-dired/") after upgrading to Emacs 29.
+
+---
+** The 'rlogin' method in the URL library is now obsolete.
+Emacs will now display a warning if you request a URL like
+"rlogin://foo@example.org".
+
+---
+** Setting 'url-gateway-method' to 'rlogin' is now obsolete.
+Emacs will now display a warning when setting it to that value.
+The user options 'url-gateway-rlogin-host',
+'url-gateway-rlogin-parameters', and 'url-gateway-rlogin-user-name'
+are also obsolete.
+
+---
+** The user function 'url-irc-function' now takes a SCHEME argument.
+The user option 'url-irc-function' is now called with a sixth argument
+corresponding to the scheme portion of the target URL. For example,
+this would be "ircs" for a URL like "ircs://irc.libera.chat".
+
+---
+** The linum.el library is now obsolete.
+We recommend using either the built-in 'display-line-numbers-mode', or
+the 'nlinum' package from GNU ELPA instead. The former has better
+performance, but the latter is closer to a drop-in replacement.
+
+1. To use 'display-line-numbers-mode', add something like this to your
+ Init file:
+
+ (global-display-line-numbers-mode 1)
+ ;; Alternatively, to use it only in programming modes:
+ (add-hook 'prog-mode-hook #'display-line-numbers-mode)
+
+2. To use 'nlinum', add this to your Init file:
+
+ (package-install 'nlinum)
+ (global-nlinum-mode 1)
+ ;; Alternatively, to use it only in programming modes:
+ (add-hook 'prog-mode-hook #'nlinum-mode)
+
+3. To continue using the obsolete package 'linum', add this line to
+ your Init file, in addition to any existing customizations:
+
+ (require 'linum)
+
+---
+** The thumbs.el library is now obsolete.
+We recommend using command 'image-dired' instead.
+
+---
+** The autoarg.el library is now marked obsolete.
+This library provides the 'autoarg-mode' and 'autoarg-kp-mode' minor
+modes to emulate the behavior of the historical editor Twenex Emacs.
+We believe it is no longer useful.
+
+---
+** The quickurl.el library is now obsolete.
+Use 'abbrev', 'skeleton' or 'tempo' instead.
+
+---
+** The rlogin.el library, and the 'rsh' command are now obsolete.
+Use something like 'M-x shell RET ssh <host> RET' instead.
+
+---
+** The url-about.el library is now obsolete.
+
+---
+** The autoload.el library is now obsolete.
+It is superseded by the new loaddefs-gen.el library.
+
+---
+** The netrc.el library is now obsolete.
+Use the 'auth-source-netrc-parse-all' function in auth-source.el
+instead.
+
+---
+** The url-dired.el library is now obsolete.
+
+---
+** The fast-lock.el and lazy-lock.el libraries have been removed.
+They have been obsolete since Emacs 22.1.
+
+The variable 'font-lock-support-mode' is occasionally useful for
+debugging purposes. It is now a regular variable (instead of a user
+option) and can be set to nil to disable Just-in-time Lock mode.
+
++++
+** The 'utf-8-auto' coding-system now produces BOM on encoding.
+This is actually a bugfix, since this is how 'utf-8-auto' was
+documented from day one; it just didn't behave according to
+documentation. It turns out some Lisp programs were using this
+coding-system on the wrong assumption that the "auto" part means some
+automagic handling of the end-of-line (EOL) format conversion; those
+programs will now start to fail, because BOM signature in UTF-8 encoded
+text is rarely expected. That is the reason we mention this bugfix
+here.
+
+In general, this coding-system should probably never be used for
+encoding, only for decoding.
+
+
+* Changes in Emacs 29.1
+
++++
+** New user option 'major-mode-remap-alist' to specify favorite major modes.
+This user option lets you remap the default modes (e.g. 'perl-mode' or
+'latex-mode') to your favorite ones (e.g. 'cperl-mode' or
+'LaTeX-mode') without having to use 'defalias', which can have
+undesirable side effects.
+This applies to all modes specified via 'auto-mode-alist', file-local
+variables, etc.
+
+---
+** Emacs now supports Unicode Standard version 15.0.
+
+---
+** New user option 'electric-quote-replace-consecutive'.
+
+---
+** Emacs is now capable of editing files with very long lines.
+The display of long lines has been optimized, and Emacs should no
+longer choke when a buffer on display contains long lines. The
+variable 'long-line-threshold' controls whether and when these display
+optimizations are in effect.
+
+A companion variable 'large-hscroll-threshold' controls when another
+set of display optimizations are in effect, which are aimed
+specifically at speeding up display of long lines that are truncated
+on display.
+
+If you still experience slowdowns while editing files with long lines,
+this may be due to line truncation, or to one of the enabled minor
+modes, or to the current major mode. Try turning off line truncation
+with 'C-x x t', or try disabling all known slow minor modes with
+'M-x so-long-minor-mode', or try disabling both known slow minor modes
+and the major mode with 'M-x so-long-mode', or visit the file with
+'M-x find-file-literally' instead of the usual 'C-x C-f'.
+
+In buffers in which these display optimizations are in effect, the
+'fontification-functions', 'pre-command-hook' and 'post-command-hook'
+hooks are executed on a narrowed portion of the buffer, whose size is
+controlled by the variables 'long-line-optimizations-region-size' and
+'long-line-optimizations-bol-search-limit', as if they were in a
+'with-restriction' form. This may, in particular, cause occasional
+mis-fontifications in these buffers. Modes which are affected by
+these optimizations and by the fact that the buffer is narrowed,
+should adapt and either modify their algorithm so as not to expect the
+entire buffer to be accessible, or, if accessing outside of the
+narrowed region doesn't hurt performance, use the
+'without-restriction' form to temporarily lift the restriction and
+access portions of the buffer outside of the narrowed region.
+
+The new function 'long-line-optimizations-p' returns non-nil when
+these optimizations are in effect in the current buffer.
+
++++
+** New command to change the font size globally.
+To increase the font size, type 'C-x C-M-+' or 'C-x C-M-='; to
+decrease it, type 'C-x C-M--'; to restore the font size, type 'C-x
+C-M-0'. The final key in these commands may be repeated without the
+leading 'C-x' and without the modifiers, e.g. 'C-x C-M-+ C-M-+ C-M-+'
+and 'C-x C-M-+ + +' increase the font size by three steps. When
+'mouse-wheel-mode' is enabled, 'C-M-wheel-up' and 'C-M-wheel-down' also
+increase and decrease the font size globally. Additionally, the
+user option 'global-text-scale-adjust-resizes-frames' controls whether
+the frames are resized when the font size is changed.
+
+---
+** New config variable 'syntax-wholeline-max' to reduce the cost of long lines.
+This variable is used by some operations (mostly syntax-propertization
+and font-locking) to treat lines longer than this variable as if they
+were made up of various smaller lines. This can help reduce the
+slowdowns seen in buffers made of a single long line, but can also
+cause misbehavior in the presence of such long lines (though most of
+that misbehavior should usually be limited to mis-highlighting). You
+can recover the previous behavior with:
+
+ (setq syntax-wholeline-max most-positive-fixnum)
+
+---
+** New bindings in 'find-function-setup-keys' for 'find-library'.
+When 'find-function-setup-keys' is enabled, 'C-x L' is now bound to
+'find-library', 'C-x 4 L' is now bound to 'find-library-other-window'
+and 'C-x 5 L' is now bound to 'find-library-other-frame'.
+
++++
+** New key binding after 'M-x' or 'M-X': 'M-X'.
+Emacs allows different completion predicates to be used with 'M-x'
+(i.e., 'execute-extended-command') via the
+'read-extended-command-predicate' user option. Emacs also has the
+'M-X' (note upper case X) command, which only displays commands
+especially relevant to the current buffer. Emacs now allows toggling
+between these modes while the user is inputting a command by hitting
+'M-X' while in the minibuffer.
+
+---
+** Interactively, 'kill-buffer' will now offer to save the buffer if unsaved.
+
+---
+** New commands 'duplicate-line' and 'duplicate-dwim'.
+'duplicate-line' duplicates the current line the specified number of times.
+'duplicate-dwim' duplicates the region if it is active. If not, it
+works like 'duplicate-line'. An active rectangular region is
+duplicated on its right-hand side.
+
+---
+** Files with the ".eld" extension are now visited in 'lisp-data-mode'.
+
++++
+** 'network-lookup-address-info' can now check numeric IP address validity.
+Specifying 'numeric' as the new optional HINTS argument makes it
+check if the passed address is a valid IPv4/IPv6 address (without DNS
+traffic).
+
+ (network-lookup-address-info "127.1" 'ipv4 'numeric)
+ => ([127 0 0 1 0])
+
++++
+** New command 'find-sibling-file'.
+This command jumps to a file considered a "sibling file", which is
+determined according to the new user option 'find-sibling-rules'.
+
++++
+** New user option 'delete-selection-temporary-region'.
+When non-nil, 'delete-selection-mode' will only delete the temporary
+regions (usually set by mouse-dragging or shift-selection).
+
++++
+** New user option 'switch-to-prev-buffer-skip-regexp'.
+This should be a regexp or a list of regexps; buffers whose names
+match those regexps will be ignored by 'switch-to-prev-buffer' and
+'switch-to-next-buffer'.
+
++++
+** New command 'rename-visited-file'.
+This command renames the file visited by the current buffer by moving
+it to a new name or location, and also makes the buffer visit this new
+file.
+
+** Menus
+
+---
+*** The entries following the buffers in the "Buffers" menu can now be altered.
+Change the 'menu-bar-buffers-menu-command-entries' variable to alter
+the entries that follow the buffer list.
+
+---
+** 'delete-process' is now a command.
+When called interactively, it will kill the process running in the
+current buffer (if any). This can be useful if you have runaway
+output in the current buffer (from a process or a network connection),
+and want to stop it.
+
++++
+** New command 'restart-emacs'.
+This is like 'save-buffers-kill-emacs', but instead of just killing
+the current Emacs process at the end, it starts a new Emacs process
+(using the same command line arguments as the running Emacs process).
+'kill-emacs' and 'save-buffers-kill-emacs' have also gained new
+optional arguments to restart instead of just killing the current
+process.
+
+** Drag and Drop
+
++++
+*** New user option 'mouse-drag-mode-line-buffer'.
+If non-nil, dragging on the buffer name part of the mode-line will
+drag the buffer's associated file to other programs. This option is
+currently only available on X, Haiku and Nextstep (GNUstep or macOS).
+
++++
+*** New user option 'mouse-drag-and-drop-region-cross-program'.
+If non-nil, this option allows dragging text in the region from Emacs
+to another program.
+
+---
+*** New user option 'mouse-drag-and-drop-region-scroll-margin'.
+If non-nil, this option allows scrolling a window while dragging text
+around without a scroll wheel.
+
++++
+*** The value of 'mouse-drag-copy-region' can now be the symbol 'non-empty'.
+This prevents mouse drag gestures from putting empty strings onto the
+kill ring.
+
++++
+*** New user options 'dnd-indicate-insertion-point' and 'dnd-scroll-margin'.
+These options allow adjusting point and scrolling a window when
+dragging items from another program.
+
++++
+*** The X Direct Save (XDS) protocol is now supported.
+This means dropping an image or file link from programs such as
+Firefox will no longer create a temporary file in a random directory,
+instead asking you where to save the file first.
+
++++
+** New user option 'record-all-keys'.
+If non-nil, this option will force recording of all input keys,
+including those typed in response to passwords prompt (this was the
+previous behavior). The default is nil, which inhibits recording of
+passwords.
+
++++
+** New function 'command-query'.
+This function makes its argument command prompt the user for
+confirmation before executing.
+
++++
+** The 'disabled' property of a command's symbol can now be a list.
+The first element of the list should be the symbol 'query', which will
+cause the command disabled this way prompt the user with a y/n or a
+yes/no question before executing. The new function 'command-query' is
+a convenient method of making commands disabled in this way.
+
+---
+** 'count-words' will now report buffer totals if given a prefix.
+Without a prefix, it will only report the word count for the narrowed
+part of the buffer.
+
++++
+** 'count-words' will now report sentence count when used interactively.
+
++++
+** New user option 'set-message-functions'.
+It allows more flexible control of how echo-area messages are displayed
+by adding functions to this list. The default value is a list of one
+element: 'set-minibuffer-message', which displays echo-area messages
+at the end of the minibuffer text when the minibuffer is active.
+Other useful functions include 'inhibit-message', which allows
+specifying, via 'inhibit-message-regexps', the list of messages whose
+display shall be inhibited; and 'set-multi-message' that accumulates
+recent messages and displays them stacked together.
+
+---
+** New user option 'find-library-include-other-files'.
+If set to nil, commands like 'find-library' will only include library
+files in the completion candidates. The default is t, which preserves
+previous behavior, whereby non-library files could also be included.
+
++++
+** New command 'sqlite-mode-open-file' for examining an sqlite3 file.
+This uses the new 'sqlite-mode' which allows listing the tables in a
+DB file, and examining and modifying the columns and the contents of
+those tables.
+
+---
+** 'write-file' will now copy some file mode bits.
+If the current buffer is visiting a file that is executable, the
+'C-x 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 faces for font-lock.
+These faces are primarily meant for use with tree-sitter. They are:
+'font-lock-bracket-face', 'font-lock-delimiter-face',
+'font-lock-escape-face', 'font-lock-function-call-face',
+'font-lock-misc-punctuation-face', 'font-lock-number-face',
+'font-lock-operator-face', 'font-lock-property-name-face',
+'font-lock-property-use-face', 'font-lock-punctuation-face',
+'font-lock-regexp-face', and 'font-lock-variable-use-face'.
+
++++
+** New face 'variable-pitch-text'.
+This face is like 'variable-pitch' (from which it inherits), but is
+slightly larger, which should help with the visual size differences
+between the default, non-proportional font and proportional fonts when
+mixed.
+
++++
+** New face 'mode-line-active'.
+This inherits from the 'mode-line' face, but is the face actually used
+on the mode lines (along with 'mode-line-inactive').
+
++++
+** New face attribute pseudo-value 'reset'.
+This value stands for the value of the corresponding attribute of the
+'default' face. It can be used to reset attribute values produced by
+inheriting from other faces.
+
++++
+** New X resource: "borderThickness".
+This controls the thickness of the external borders of the menu bars
+and pop-up menus.
+
++++
+** New X resource: "inputStyle".
+This controls the style of the pre-edit and status areas of X input
+methods.
+
++++
+** New X resources: "highlightForeground" and "highlightBackground".
+Only in the Lucid build, this controls colors used for highlighted
+menu item widgets.
+
++++
+** On X, Emacs now tries to synchronize window resize with the window manager.
+This leads to less flicker and empty areas of a frame being displayed
+when a frame is being resized. Unfortunately, it does not work on
+some ancient buggy window managers, so if Emacs appears to freeze, but
+is still responsive to input, you can turn it off by setting the X
+resource "synchronizeResize" to "off".
+
++++
+** On X, Emacs can optionally synchronize display with the graphics hardware.
+When this is enabled by setting the X resource "synchronizeResize" to
+"extended", frame content "tearing" is drastically reduced. This is
+only supported on the Motif, Lucid, and no-toolkit builds, and
+requires an X compositing manager supporting the extended frame
+synchronization protocol (see
+https://fishsoup.net/misc/wm-spec-synchronization.html).
+
+This behavior can be toggled on and off via the frame parameter
+'use-frame-synchronization'.
+
++++
+** New frame parameter 'alpha-background' and X resource "alphaBackground".
+This controls the opacity of the text background when running on a
+composited display.
+
++++
+** New frame parameter 'shaded'.
+With window managers which support this, it controls whether or not a
+frame's contents will be hidden, leaving only the title bar on display.
+
+---
+** New user option 'x-gtk-use-native-input'.
+This controls whether or not GTK input methods are used by Emacs,
+instead of XIM input methods.
+
++++
+** New user option 'use-system-tooltips'.
+This controls whether to use the toolkit tooltips, or Emacs's own
+native implementation of tooltips as small frames. This option is
+only meaningful if Emacs was built with GTK+, Nextstep, or Haiku
+support, and defaults to t, which makes Emacs use the toolkit
+tooltips. The existing GTK-specific option
+'x-gtk-use-system-tooltips' is now an alias of this new option.
+
++++
+** Non-native tooltips are now supported on Nextstep.
+This means Emacs built with GNUstep or built on macOS is now able to
+display different faces and images inside tooltips when the
+'use-system-tooltips' user option is nil.
+
+---
+** New minor mode 'pixel-scroll-precision-mode'.
+When enabled, and if your mouse supports it, you can scroll the
+display up or down at pixel resolution, according to what your mouse
+wheel reports. Unlike 'pixel-scroll-mode', this mode scrolls the
+display pixel-by-pixel, as opposed to only animating line-by-line
+scrolls.
+
+** Terminal Emacs
+
+---
+*** Emacs will now use 24-bit colors on terminals that support "Tc" capability.
+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".
+
+---
+*** Select active regions with xterm selection support.
+On terminals with xterm "setSelection" support, the active region may be
+saved to the X primary selection, following the
+'select-active-regions' variable. This support is enabled when
+'tty-select-active-regions' is non-nil.
+
+---
+*** New command to set up display of unsupported characters.
+The new command 'standard-display-by-replacement-char' produces Lisp
+code that sets up the 'standard-display-table' to use a replacement
+character for display of characters that the text-mode terminal
+doesn't support. This code is intended to be used in your init files.
+This feature is most useful with the Linux console and similar
+terminals, where Emacs has a reliable way of determining which
+characters have glyphs in the font loaded into the terminal's memory.
+
+---
+*** New functions to set terminal output buffer size.
+The new functions 'tty--set-output-buffer-size' and
+'tty--output-buffer-size' allow setting and retrieving the output
+buffer size of a terminal device. The default buffer size is and has
+always been BUFSIZ, which is defined in your system's stdio.h. When
+you set a buffer size with 'tty--set-output-buffer-size', this also
+prevents Emacs from explicitly flushing the tty output stream, except
+at the end of display update.
+
+** ERT
+
++++
+*** 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.
+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
+tests so that they all have unique names.
+
++++
+*** ERT can generate JUnit test reports.
+When environment variable 'EMACS_TEST_JUNIT_REPORT' is set, ERT
+generates a JUnit test report under this file name. This is useful
+for Emacs integration into CI/CD test environments.
+
+---
+*** Unbound test symbols now signal an 'ert-test-unbound' error.
+This affects the 'ert-select-tests' function and its callers.
+
+** Emoji
+
++++
+*** Emacs now has several new methods for inserting Emoji.
+The Emoji commands are under the new 'C-x 8 e' prefix.
+
++++
+*** New command 'emoji-insert' (bound to 'C-x 8 e e' and 'C-x 8 e i').
+This command guides you through various Emoji categories and
+combinations in a graphical menu system.
+
++++
+*** New command 'emoji-search' (bound to 'C-x 8 e s').
+This command lets you search for Emoji based on names.
+
++++
+*** New command 'emoji-list' (bound to 'C-x 8 e l').
+This command lists all Emoji (categorized by themes) in a special
+buffer and lets you choose one of them.
+
+---
+*** New command 'emoji-recent' (bound to 'C-x 8 e r').
+This command lets you choose among the Emoji you have recently
+inserted.
+
++++
+*** New command 'emoji-describe' (bound to 'C-x 8 e d').
+This command will tell you the name of the Emoji at point. (It also
+works for non-Emoji characters.)
+
+---
+*** New commands 'emoji-zoom-increase' and 'emoji-zoom-decrease'.
+These are bound to 'C-x 8 e +' and 'C-x 8 e -', respectively. They
+can be used on any character, but are mainly useful for Emoji.
+
+---
+*** New command 'emoji-zoom-reset'.
+This is bound to 'C-x 8 e 0', and undoes any size changes performed by
+'emoji-zoom-increase' and 'emoji-zoom-decrease'.
+
+---
+*** New input method 'emoji'.
+This allows you to enter Emoji using short strings, eg ':face_palm:'
+or ':scream:'.
+
+** Help
+
+---
+*** Variable values displayed by 'C-h v' in "*Help*" are now fontified.
+
++++
+*** New user option 'help-clean-buttons'.
+If non-nil, link buttons in "*Help*" buffers will have any surrounding
+quotes removed.
+
+---
+*** 'M-x apropos-variable' output now includes values of variables.
+Such apropos buffer is more easily viewed with outlining after
+enabling 'outline-minor-mode' in 'apropos-mode'.
+
++++
+*** New docstring syntax to indicate that symbols shouldn't be links.
+When displaying docstrings in "*Help*" buffers, strings that are
+"`like-this'" are made into links (if they point to a bound
+function/variable). This can lead to false positives when talking
+about values that are symbols that happen to have the same names as
+functions/variables. To inhibit this buttonification, use the new
+"\\+`like-this'" syntax.
+
++++
+*** New user option 'help-window-keep-selected'.
+If non-nil, commands to show the info manual and the source will reuse
+the same window in which the "*Help*" buffer is shown.
+
+---
+*** Commands like 'C-h f' have changed how they describe menu bindings.
+For instance, previously a command might be described as having the
+following bindings:
+
+ It is bound to <open>, C-x C-f, <menu-bar> <file> <new-file>.
+
+This has been changed to:
+
+ It is bound to <open> and C-x C-f.
+ It can also be invoked from the menu: File → Visit New File...
+
++++
+*** The 'C-h .' command now accepts a prefix argument.
+'C-u C-h .' would previously inhibit displaying a warning message if
+there's no local help at point. This has been changed to call
+'button-describe'/'widget-describe' and display button/widget help
+instead.
+
+---
+*** New user option 'help-enable-variable-value-editing'.
+If enabled, 'e' on a value in "*Help*" will pop you to a new buffer
+where you can edit the value. This is not enabled by default, because
+it is easy to make an edit that yields an invalid result.
+
+---
+*** 'C-h b' uses outlining by default.
+Set 'describe-bindings-outline' to nil to get back the old behavior.
+
+---
+*** Jumping to function/variable source now saves mark before moving point.
+Jumping to source from a "*Help*" buffer moves point when the source
+buffer is already open. Now, the old point is pushed onto mark ring.
+
++++
+*** New key bindings in "*Help*" buffers: 'n' and 'p'.
+These will take you (respectively) to the next and previous "page".
+
+---
+*** 'describe-char' now also outputs the name of Emoji sequences.
+
++++
+*** New key binding in "*Help*" buffer: 'I'.
+This will take you to the Emacs Lisp manual entry for the item
+displayed, if any.
+
+---
+*** The 'C-h m' ('describe-mode') "*Help*" buffer has been reformatted.
+It now only includes local minor modes at the start, and the global
+minor modes are listed after the major mode.
+
++++
+*** The user option 'help-window-select' now affects apropos commands.
+The apropos commands will now select the apropos window if
+'help-window-select' is non-nil.
+
+---
+*** 'describe-keymap' now considers the symbol at point.
+If the symbol at point is a keymap, 'describe-keymap' suggests it as
+the default candidate.
+
+---
+*** New command 'help-quick' displays an overview of common commands.
+The command pops up a buffer at the bottom of the screen with a few
+helpful commands for various tasks. You can toggle the display using
+'C-h C-q'.
+
+** Emacs now comes with Org v9.6.
+See the file "ORG-NEWS" for user-visible changes in Org.
+
+** Outline Mode
+
++++
+*** Support for customizing the default visibility state of headings.
+Customize the user option 'outline-default-state' to define what
+headings will be visible initially, after Outline mode is turned on.
+When the value is a number, the user option 'outline-default-rules'
+determines the visibility of the subtree starting at the corresponding
+level. Values are provided to control showing a heading subtree
+depending on whether the heading matches a regexp, or on whether its
+subtree has long lines or is itself too long.
+
+** Outline Minor Mode
+
++++
+*** New user option 'outline-minor-mode-use-buttons'.
+If non-nil, Outline Minor Mode will use buttons to hide/show outlines
+in addition to the ellipsis. The default is nil, but in 'help-mode'
+it has the value 'insert' that inserts the buttons directly into the
+buffer, and you can use 'RET' to cycle outline visibility. When
+the value is 'in-margins', Outline Minor Mode uses the window margins
+for buttons that hide/show outlines.
+
++++
+*** Buttons and headings now have their own keymaps.
+'outline-button-icon-map', 'outline-overlay-button-map', and
+'outline-inserted-button-map' are now available as defined keymaps
+instead of being anonymous keymaps.
+
+** Windows
+
++++
+*** New commands 'split-root-window-below' and 'split-root-window-right'.
+These commands split the root window in two, and are bound to 'C-x w 2'
+and 'C-x w 3', respectively. A number of other useful window-related
+commands are now available with key sequences that start with the
+'C-x w' prefix.
+
++++
+*** New display action 'display-buffer-full-frame'.
+This action removes other windows from the frame when displaying a
+buffer on that frame.
+
++++
+*** 'display-buffer' now can set up the body size of the chosen window.
+For example, a 'display-buffer-alist' entry of
+
+ (window-width . (body-columns . 40))
+
+will make the body of the chosen window 40 columns wide. For the
+height use 'window-height' and 'body-lines', respectively.
+
++++
+*** 'display-buffer' provides more options for using an existing window.
+The display buffer action functions 'display-buffer-use-some-window' and
+'display-buffer-use-least-recent-window' now honor the action alist
+entry 'window-min-height' as well as the entries listed below to make
+the display of several buffers in a row more amenable.
+
++++
+*** New buffer display action alist entry 'lru-frames'.
+This allows to specify which frames 'display-buffer' should consider
+when using a window that shows another buffer.
+
++++
+*** New buffer display action alist entry 'lru-time'.
+'display-buffer' will ignore windows with a use time higher than that
+when using a window that shows another buffer.
+
++++
+*** New buffer display action alist entry 'bump-use-time'.
+This has 'display-buffer' bump the use time of any window it returns,
+making it a less likely candidate for displaying another buffer.
+
++++
+*** New buffer display action alist entry 'window-min-width'.
+This allows to specify a minimum width of the window used to display a
+buffer.
+
+---
+*** You can customize on which window 'scroll-other-window' operates.
+This is controlled by the new 'other-window-scroll-default' variable.
+
+** Frames
+
++++
+*** Deleted frames can now be undeleted.
+The 16 most recently deleted frames can be undeleted with 'C-x 5 u' when
+'undelete-frame-mode' is enabled. Without a prefix argument, undelete
+the most recently deleted frame. With a numerical prefix argument
+between 1 and 16, where 1 is the most recently deleted frame, undelete
+the corresponding deleted frame.
+
++++
+*** The variable 'icon-title-format' can now have the value t.
+That value means to use 'frame-title-format' for iconified frames.
+This is useful with some window managers and desktop environments
+which treat changes in frame's title as requests to raise the frame
+and/or give it input focus, or if you want the frame's title to be the
+same no matter if the frame is iconified or not.
+
+** Tab Bars and Tab Lines
+
+---
+*** New user option 'tab-bar-auto-width' to automatically determine tab width.
+This option is non-nil by default, which resizes tab-bar tabs so that
+their width is evenly distributed across the tab bar. A companion
+option 'tab-bar-auto-width-max' controls the maximum width of a tab
+before its name on display is truncated.
+
+---
+*** 'C-x t RET' creates a new tab when the provided tab name doesn't exist.
+It prompts for the name of a tab and switches to it, creating a new
+tab if no tab exists by that name.
+
+---
+*** New keymap 'tab-bar-history-mode-map'.
+By default, it contains 'C-c <left>' and 'C-c <right>' to browse
+the history of tab window configurations back and forward.
+
+---
+** Better detection of text suspiciously reordered on display.
+The function 'bidi-find-overridden-directionality' has been extended
+to detect reordering effects produced by embeddings and isolates
+(started by directional formatting control characters such as RLO and
+LRI). The new command 'highlight-confusing-reorderings' finds and
+highlights segments of buffer text whose reordering for display is
+suspicious and could be malicious.
+
+** Emacs Server and Client
+
++++
+*** New command-line option '-r'/'--reuse-frame' for emacsclient.
+With this command-line option, Emacs reuses an existing graphical client
+frame if one exists; otherwise it creates a new frame.
+
++++
+*** New command-line option '-w N'/'--timeout=N' for emacsclient.
+With this command-line option, emacsclient will exit if Emacs does not
+respond within N seconds. The default is to wait forever.
+
++++
+*** 'server-stop-automatically' can be used to automatically stop the server.
+The Emacs server will be automatically stopped when certain conditions
+are met. The conditions are given by the argument, which can be
+'empty', 'delete-frame' or 'kill-terminal'.
+
+** Rcirc
+
++++
+*** New command 'rcirc-when'.
+
++++
+*** New user option 'rcirc-cycle-completion-flag'.
+Rcirc will use the default 'completion-at-point' mechanism. The
+conventional IRC behavior of completing by cycling through the
+available options can be restored by enabling this option.
+
++++
+*** New user option 'rcirc-bridge-bot-alist'.
+If you are in a channel where a bot is responsible for bridging
+between networks, you can use this variable to make these messages
+appear more native. For example, you might set the option to:
+
+ (setopt rcirc-bridge-bot-alist '(("bridge" . "{\\(.+?\\)}[[:space:]]+")))
+
+for messages like
+
+ 09:47 <bridge> {john} I am not on IRC
+
+to be reformatted into
+
+ 09:47 <john> I am not on IRC
+
+---
+*** New formatting commands.
+Most IRC clients (including rcirc) support basic formatting using
+control codes. Under the 'C-c C-f' prefix a few commands have been
+added to insert these automatically. For example, if a region is
+active and 'C-c C-f C-b' is invoked, markup is inserted for the region
+to be highlighted in bold.
+
+** Imenu
+
++++
+*** 'imenu' is now bound to 'M-g i' globally.
+
+---
+*** New function 'imenu-flush-cache'.
+Use it if you want Imenu to forget the buffer's index alist and
+recreate it anew next time 'imenu' is invoked.
+
+---
+** Emacs is now capable of abandoning a window's redisplay that takes too long.
+This is controlled by the new variable 'max-redisplay-ticks'. If that
+variable is set to a non-zero value, display of a window will be
+aborted after that many low-level redisplay operations, thus
+preventing Emacs from becoming wedged when visiting files with very
+long lines. The default is zero, which disables the feature: Emacs
+will wait forever for redisplay to finish. (We believe you won't need
+this feature, given the ability to display buffers with very long
+lines.)
+
+
+* Editing Changes in Emacs 29.1
+
++++
+** 'M-SPC' is now bound to 'cycle-spacing'.
+Formerly it invoked 'just-one-space'. The actions performed by
+'cycle-spacing' and their order can now be customized via the user
+option 'cycle-spacing-actions'.
+
+---
+** 'zap-to-char' and 'zap-up-to-char' are case-sensitive for upper-case chars.
+These commands now behave as case-sensitive for interactive calls when
+they are invoked with an uppercase character, regardless of the value
+of 'case-fold-search'.
+
+---
+** 'scroll-other-window' and 'scroll-other-window-down' now respect remapping.
+These commands (bound to 'C-M-v' and 'C-M-V') used to scroll the other
+windows without looking at customizations in that other window. These
+functions now check whether they have been rebound in the buffer shown
+in that other window, and then call the remapped function instead. In
+addition, these commands now also respect the
+'scroll-error-top-bottom' user option.
+
+---
+** Indentation of 'cl-flet' and 'cl-labels' has changed.
+These forms now indent like this:
+
+ (cl-flet ((bla (x)
+ (* x x)))
+ (bla 42))
+
+This change also affects 'cl-macrolet', 'cl-flet*' and
+'cl-symbol-macrolet'.
+
++++
+** New user option 'translate-upper-case-key-bindings'.
+Set this option to nil to inhibit the default translation of upper
+case keys to their lower case variants.
+
++++
+** New command 'ensure-empty-lines'.
+This command increases (or decreases) the number of empty lines before
+point.
+
+---
+** Improved mouse behavior with auto-scrolling modes.
+When clicking inside the 'scroll-margin' or 'hscroll-margin' region,
+point is now moved only when releasing the mouse button. This no
+longer results in a bogus selection, unless the mouse has also been
+dragged.
+
++++
+** 'kill-ring-max' now defaults to 120.
+
+---
+** New user option 'yank-menu-max-items'.
+Customize this option to limit the number of entries in the menu
+"Edit → Paste from Kill Menu". The default is 60.
+
+---
+** New user option 'copy-region-blink-predicate'.
+By default, when copying a region with 'kill-ring-save', Emacs only
+blinks point and mark when the region is not denoted visually, that
+is, when either the region is inactive, or the 'region' face is
+indistinguishable from the 'default' face.
+
+Users who would rather enable blinking unconditionally can now set
+this user option to 'always'. To disable blinking unconditionally,
+either set this option to 'ignore', or set 'copy-region-blink-delay'
+to 0.
+
++++
+** Performing a pinch gesture on a touchpad now increases the text scale.
+
+** Show Paren Mode
+
++++
+*** New user option 'show-paren-context-when-offscreen'.
+When non-nil, if the point is in a closing delimiter and the opening
+delimiter is offscreen, shows some context around the opening
+delimiter in the echo area. The default is nil.
+
+This option can also be set to the symbols 'overlay' or 'child-frame',
+in which case the context is shown in an overlay or child-frame at the
+top-left of the current window. The latter option requires a
+graphical frame. On non-graphical frames, the context is shown in the
+echo area.
+
+** Comint
+
++++
+*** 'comint-term-environment' is now aware of connection-local variables.
+The user option 'comint-terminfo-terminal' and the variable
+'system-uses-terminfo' can now be set as connection-local variables to
+change the terminal used on a remote host.
+
+---
+*** New user option 'comint-delete-old-input'.
+When nil, this prevents comint from deleting the current input when
+inserting previous input using '<mouse-2>'. The default is t, to
+preserve previous behavior.
+
+---
+*** New minor mode 'comint-fontify-input-mode'.
+This minor mode is enabled by default in "*shell*" and "*ielm*"
+buffers. It fontifies input text according to 'shell-mode' or
+'emacs-lisp-mode' font-lock rules. Customize the user options
+'shell-fontify-input-enable' and 'ielm-fontify-input-enable' to nil if
+you don't want to enable input fontification by default.
+
+** Mwheel
+
+---
+*** New user options for alternate wheel events.
+The user options 'mouse-wheel-down-alternate-event' and
+'mouse-wheel-up-alternate-event' as well as the variables
+'mouse-wheel-left-alternate-event' and
+'mouse-wheel-right-alternate-event' have been added to better support
+systems where two kinds of wheel events can be received.
+
+** Internationalization
+
+---
+*** The '<Delete>' function key now allows deleting the entire composed sequence.
+For the details, see the item about the 'delete-forward-char' command
+above.
+
+---
+*** New user option 'composition-break-at-point'.
+Setting it to a non-nil value temporarily disables automatic
+composition of character sequences at point, and thus makes it easier
+to edit such sequences by allowing point to "enter" the composed
+sequence.
+
+---
+*** Support for many old scripts and writing systems.
+Emacs now supports, and has language-environments and input methods,
+for several dozens of old scripts that were used in the past for
+various languages. For each such script Emacs now has font-selection
+and character composition rules, a language environment, and an input
+method. The newly-added scripts and the corresponding language
+environments are:
+
+ Tai Tham script and the Northern Thai language environment
+
+ Brahmi script and language environment
+
+ Kaithi script and language environment
+
+ Tirhuta script and language environment
+
+ Sharada script and language environment
+
+ Siddham script and language environment
+
+ Syloti Nagri script and language environment
+
+ Modi script and language environment
+
+ Baybayin script and Tagalog language environment
+
+ Hanunoo script and language environment
+
+ Buhid script and language environment
+
+ Tagbanwa script and language environment
+
+ Limbu script and language environment
+
+ Balinese script and language environment
+
+ Javanese script and language environment
+
+ Sundanese script and language environment
+
+ Batak script and language environment
+
+ Rejang script and language environment
+
+ Makasar script and language environment
+
+ Lontara script and language environment
+
+ Hanifi Rohingya script and language environment
+
+ Grantha script and language environment
+
+ Kharoshthi script and language environment
+
+ Lepcha script and language environment
+
+ Meetei Mayek script and language environment
+
+ Adlam script and language environment
+
+ Mende Kikakui script and language environment
+
+ Wancho script and language environment
+
+ Toto script and language environment
+
+ Gothic script and language environment
+
+ Coptic script and language environment
+
+---
+*** The "Oriya" language environment was renamed to "Odia".
+This is to follow the change in the official name of the script. The
+'oriya' input method was also renamed to 'odia'. However, the old
+name of the language environment and the input method are still
+supported.
+
+---
+*** New Greek translation of the Emacs tutorial.
+Type 'C-u C-h t' to select it in case your language setup does not do
+so automatically.
+
+---
+*** New Ukrainian translation of the Emacs Tutorial.
+
+---
+*** New default phonetic input method for the Tamil language environment.
+The default input method for the Tamil language environment is now
+"tamil-phonetic" which is a customizable phonetic input method. To
+change the input method's translation rules, customize the user option
+'tamil-translation-rules'.
+
+---
+*** New 'tamil99' input method for the Tamil language.
+This supports the keyboard layout specifically designed for the Tamil
+language.
+
+---
+*** New input method 'slovak-qwerty'.
+This is a variant of the 'slovak' input method, which corresponds to
+the QWERTY Slovak keyboards.
+
+---
+*** New input method 'cyrillic-chuvash'.
+This input method is based on the russian-computer input method, and
+is intended for typing in the Chuvash language written in the Cyrillic
+script.
+
+---
+*** New input method 'cyrillic-mongolian'.
+This input method is for typing in the Mongolian language using the
+Cyrillic script.
+
+
+* Changes in Specialized Modes and Packages in Emacs 29.1
+
+** Ecomplete
+
+---
+*** New commands 'ecomplete-edit' and 'ecomplete-remove'.
+These allow you to (respectively) edit and bulk-remove entries from
+the ecomplete database.
+
+---
+*** New user option 'ecomplete-auto-select'.
+If non-nil and there's only one matching option, auto-select that.
+
+---
+*** New user option 'ecomplete-filter-regexp'.
+If non-nil, this user option describes what entries not to add to the
+database stored on disk.
+
+** Auth Source
+
++++
+*** New user option 'auth-source-pass-extra-query-keywords'.
+Whether to recognize additional keyword params, like ':max' and
+':require', as well as accept lists of query terms paired with
+applicable keywords. This disables most known behavioral quirks
+unique to auth-source-pass, such as wildcard subdomain matching.
+
+** Dired
+
++++
+*** 'dired-guess-shell-command' moved from dired-x to dired.
+This means that 'dired-do-shell-command' will now provide smarter
+defaults without first having to require 'dired-x'. See the node
+"(emacs) Shell Command Guessing" in the Emacs manual for more details.
+
+---
+*** 'dired-clean-up-buffers-too' moved from dired-x to dired.
+This means that Dired now offers to kill buffers visiting files and
+dirs when they are deleted in Dired. Before, you had to require
+'dired-x' to enable this behavior. To disable this behavior,
+customize the user option 'dired-clean-up-buffers-too' to nil. The
+related user option 'dired-clean-confirm-killing-deleted-buffers'
+(which see) has also been moved to 'dired'.
+
++++
+*** 'dired-do-relsymlink' moved from dired-x to dired.
+The corresponding key 'Y' is now bound by default in Dired.
+
++++
+*** 'dired-do-relsymlink-regexp' moved from dired-x to dired.
+The corresponding key sequence '% Y' is now bound by default in Dired.
+
+---
+*** 'M-G' is now bound to 'dired-goto-subdir'.
+Before, that binding was only available if the dired-x package was
+loaded.
+
++++
+*** 'dired-info' and 'dired-man' moved from dired-x to dired.
+The 'dired-info' and 'dired-man' commands have been moved from the
+dired-x package to dired. They have also been renamed to
+'dired-do-info' and 'dired-do-man'; the old command names are obsolete
+aliases.
+
+The keys 'I' ('dired-do-info') and 'N' ('dired-do-man') are now bound
+in Dired mode by default. The user options 'dired-bind-man' and
+'dired-bind-info' no longer have any effect and are obsolete.
+
+To get the old behavior back and unbind these keys in Dired mode, add
+the following to your Init file:
+
+ (with-eval-after-load 'dired
+ (keymap-set dired-mode-map "N" nil)
+ (keymap-set dired-mode-map "I" nil))
+
+---
+*** New command 'dired-do-eww'.
+This command visits the file on the current line with EWW.
+
+---
+*** New user option 'dired-omit-lines'.
+This is used by 'dired-omit-mode', and now allows you to hide based on
+other things than just the file names.
+
++++
+*** New user option 'dired-mouse-drag-files'.
+If non-nil, dragging file names with the mouse in a Dired buffer will
+initiate a drag-and-drop session allowing them to be opened in other
+programs.
+
++++
+*** 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 behavior
+back, say:
+
+ (setopt dired-free-space 'separate)
+
+---
+*** New user option 'dired-make-directory-clickable'.
+If non-nil (which is the default), hitting 'RET' or 'mouse-1' on
+the directory components at the directory displayed at the start of
+the buffer will take you to that directory.
+
+---
+*** Search and replace in Dired/Wdired supports more regexps.
+For example, the regexp ".*" will match only characters that are part
+of the file name. Also "^.*$" can be used to match at the beginning
+of the file name and at the end of the file name. This is used only
+when searching on file names. In Wdired this can be used when the new
+user option 'wdired-search-replace-filenames' is non-nil (which is the
+default).
+
+** Elisp
+
+---
+*** New command 'elisp-eval-region-or-buffer' (bound to 'C-c C-e').
+This command evals the forms in the active region or in the whole buffer.
+
+---
+*** New commands 'elisp-byte-compile-file' and 'elisp-byte-compile-buffer'.
+These commands (bound to 'C-c C-f' and 'C-c C-b', respectively)
+byte-compile the visited file and the current buffer, respectively.
+
+** Games
+
+---
+*** New user option 'tetris-allow-repetitions'.
+This controls how randomness is implemented (whether to use pure
+randomness as before, or to use a bag).
+
+** Battery
+
++++
+*** New user option 'battery-update-functions'.
+This can be used to trigger actions based on the battery status.
+
+** DocView
+
+---
+*** doc-view can now generate SVG images when viewing PDF files.
+If Emacs is built with SVG support, doc-view can generate SVG files
+when using MuPDF as the converter for PDF files, which generally leads
+to sharper images (especially when zooming), and allows customization
+of background and foreground color of the page via the new user
+options 'doc-view-svg-background' and 'doc-view-svg-foreground'. To
+activate this behavior, set 'doc-view-mupdf-use-svg' to non-nil if
+your Emacs has SVG support. Note that, with some versions of MuPDF,
+SVG generation is known to sometimes produce SVG files that are buggy
+or can take a long time to render.
+
+** Enriched Mode
+
++++
+*** New command 'enriched-toggle-markup'.
+This allows you to see the markup in 'enriched-mode' buffers (e.g.,
+the "HELLO" file).
+
+** Shell Script Mode
+
+---
+*** New user option 'sh-indent-statement-after-and'.
+This controls how statements like the following are indented:
+
+ foo &&
+ bar
+
+*** New Flymake backend using the ShellCheck program.
+It is enabled by default, but requires that the external "shellcheck"
+command is installed.
+
+** CC Mode
+
+---
+*** C++ Mode now supports most of the new features in the C++20 Standard.
+
+---
+*** In Objective-C Mode, no extra types are recognized by default.
+The default value of 'objc-font-lock-extra-types' has been changed to
+nil, since too many identifiers were getting misfontified as types.
+This may cause some actual types not to get fontified. To get the old
+behavior back, customize the user option to the value suggested in its
+doc string.
+
+** Cperl Mode
+
+---
+*** New user option 'cperl-file-style'.
+This option determines the indentation style to be used. It can also
+be used as a file-local variable.
+
+** Gud
+
+---
+*** 'gud-go' is now bound to 'C-c C-v'.
+If given a prefix, it will prompt for an argument to use for the
+run/continue command.
+
+---
+*** 'perldb' now recognizes '-E'.
+As of Perl 5.10, 'perl -E 0' behaves like 'perl -e 0' but also activates
+all optional features of the Perl version in use. 'perldb' now uses
+this invocation as its default.
+
+** Customize
+
+---
+*** New command 'custom-toggle-hide-all-widgets'.
+This is bound to 'H' and toggles whether to hide or show the widget
+contents.
+
+** Diff Mode
+
+---
+*** New user option 'diff-whitespace-style'.
+Sets the value of the buffer-local variable 'whitespace-style' in
+'diff-mode' buffers. By default, this variable is '(face trailing)',
+which preserves behavior of previous Emacs versions.
+
++++
+*** New user option 'diff-add-log-use-relative-names'.
+If non-nil insert file names in ChangeLog skeletons relative to the
+VC root directory.
+
+** Ispell
+
+---
+*** 'ispell-region' and 'ispell-buffer' now push the mark.
+These commands push onto the mark ring the location of the last
+misspelled word where corrections were offered, so that you can then
+skip back to that location with 'C-x C-x'.
+
+** Dabbrev
+
+---
+*** New function 'dabbrev-capf' for use on 'completion-at-point-functions'.
+
++++
+*** New user option 'dabbrev-ignored-buffer-modes'.
+Buffers with major modes in this list will be ignored. By default,
+this includes "binary" buffers like 'archive-mode' and 'image-mode'.
+
+** Package
+
++++
+*** New command 'package-update'.
+This command allows you to upgrade packages without using 'M-x
+list-packages'.
+
++++
+*** New command 'package-update-all'.
+This command allows updating all packages without any queries.
+
++++
+*** New commands 'package-recompile' and 'package-recompile-all'.
+These commands can be useful if the ".elc" files are out of date
+(invalid byte code and macros).
+
++++
+*** New DWIM action on 'x' in "*Packages*" buffer.
+If no packages are marked, 'x' will install the package under point if
+it isn't already, and remove it if it is installed.
+
++++
+*** New command 'package-vc-install'.
+Packages can now be installed directly from source by cloning from
+their repository.
+
++++
+*** New command 'package-vc-install-from-checkout'.
+An existing checkout can now be loaded via package.el, by creating a
+symbolic link from the usual package directory to the checkout.
+
++++
+*** New command 'package-vc-checkout'.
+Used to fetch the source of a package by cloning a repository without
+activating the package.
+
++++
+*** New command 'package-vc-prepare-patch'.
+This command allows you to send patches to package maintainers, for
+packages checked out using 'package-vc-install'.
+
++++
+*** New command 'package-report-bug'.
+This command helps you compose an email for sending bug reports to
+package maintainers.
+
++++
+*** New user option 'package-vc-selected-packages'.
+By customizing this user option you can specify specific packages to
+install.
+
+** Emacs Sessions (Desktop)
+
++++
+*** New user option to load a locked desktop if locking Emacs is not running.
+The option 'desktop-load-locked-desktop' can now be set to the value
+'check-pid', which means to allow loading a locked ".emacs.desktop"
+file if the Emacs process which locked it is no longer running on the
+local machine. This allows avoiding questions about locked desktop
+files when the Emacs session which locked it crashes, or was otherwise
+interrupted and didn't exit gracefully. See the "(emacs) Saving
+Emacs Sessions" node in the Emacs manual for more details.
+
+** Miscellaneous
+
++++
+*** New command 'scratch-buffer'.
+This command switches to the "*scratch*" buffer. If "*scratch*" doesn't
+exist, the command creates it first. You can use this command if you
+inadvertently delete the "*scratch*" buffer.
+
+** Debugging
+
+---
+*** 'q' in a "*Backtrace*" buffer no longer clears the buffer.
+Instead it just buries the buffer and switches the mode from
+'debugger-mode' to 'backtrace-mode', since commands like 'e' are no
+longer available after exiting the recursive edit.
+
++++
+*** New user option 'debug-allow-recursive-debug'.
+This user option controls whether the 'e' (in a "*Backtrace*"
+buffer or while edebugging) and 'C-x C-e' (while edebugging) commands
+lead to a (further) backtrace. By default, this variable is nil,
+which is a change in behavior from previous Emacs versions.
+
++++
+*** 'e' in edebug can now take a prefix arg to pretty-print the results.
+When invoked with a prefix argument, as in 'C-u e', this command will
+pop up a new buffer and show the full pretty-printed value there.
+
++++
+*** 'C-x C-e' now interprets a non-zero prefix arg to pretty-print the results.
+When invoked with a non-zero prefix argument, as in 'C-u C-x C-e',
+this command will pop up a new buffer and show the full pretty-printed
+value there.
+
++++
+*** You can now generate a backtrace from Lisp errors in redisplay.
+To do this, set the new variable 'backtrace-on-redisplay-error' to a
+non-nil value. The backtrace will be written to a special buffer
+named "*Redisplay-trace*". This buffer will not be automatically
+displayed in a window.
+
+** Compile
+
++++
+*** New user option 'compilation-hidden-output'.
+This can be used to make specific parts of compilation output
+invisible.
+
++++
+*** The 'compilation-auto-jump-to-first-error' user option has been extended.
+It can now have the additional values 'if-location-known' (which will
+only jump if the location of the first error is known), and
+'first-known' (which will jump to the first known error location).
+
++++
+*** New user option 'compilation-max-output-line-length'.
+Lines longer than the value of this option will have their ends
+hidden, with a button to reveal the hidden text. This speeds up
+operations like grepping on files that have few newlines. The default
+value is 400; set to nil to disable hiding.
+
+** Flymake
+
++++
+*** New user option 'flymake-mode-line-lighter'.
+
++++
+** New minor mode 'word-wrap-whitespace-mode' for extending 'word-wrap'.
+This mode switches 'word-wrap' on, and breaks on all the whitespace
+characters instead of just 'SPC' and 'TAB'.
+
+---
+** New mode, 'emacs-news-mode', for editing the NEWS file.
+This mode adds some highlighting, makes the 'M-q' command aware of the
+format of NEWS entries, and has special commands for doing maintenance
+of the Emacs NEWS files. In addition, this mode turns on
+'outline-minor-mode', and thus displays customizable icons (see
+'icon-preference') in the margins. To disable these icons, set
+'outline-minor-mode-use-buttons' to a nil value.
+
+---
+** Kmacro
+Kmacros are now OClosures and have a new constructor 'kmacro' which
+uses the 'key-parse' syntax. It replaces the old 'kmacro-lambda-form'
+(which is now declared obsolete).
+
+---
+** savehist.el can now truncate variables that are too long.
+An element of user option 'savehist-additional-variables' can now be
+of the form '(VARIABLE . MAX-ELTS)', which means to truncate the
+VARIABLE's value to at most MAX-ELTS elements (if the value is a list)
+before saving the value.
+
+** Minibuffer and Completions
+
++++
+*** New commands for navigating completions from the minibuffer.
+When the minibuffer is the current buffer, typing 'M-<up>' or
+'M-<down>' selects a previous/next completion candidate from the
+"*Completions*" buffer and inserts it to the minibuffer.
+When the user option 'minibuffer-completion-auto-choose' is nil,
+'M-<up>' and 'M-<down>' do the same, but without inserting
+a completion candidate to the minibuffer, then 'M-RET' can be used
+to choose the currently active candidate from the "*Completions*"
+buffer and exit the minibuffer. With a prefix argument, 'C-u M-RET'
+inserts the currently active candidate to the minibuffer, but doesn't
+exit the minibuffer. These keys are also available for in-buffer
+completion, but they don't insert candidates automatically, you need
+to type 'M-RET' to insert the selected candidate to the buffer.
+
++++
+*** Choosing a completion with a prefix argument doesn't exit the minibuffer.
+This means that typing 'C-u RET' on a completion candidate in the
+"*Completions*" buffer inserts the completion into the minibuffer,
+but doesn't exit the minibuffer.
+
++++
+*** The "*Completions*" buffer can now be automatically selected.
+To enable this behavior, customize the user option
+'completion-auto-select' to t, then pressing 'TAB' will switch to the
+"*Completions*" buffer when it pops up that buffer. If the value is
+'second-tab', then the first 'TAB' will display "*Completions*", and
+the second one will switch to the "*Completions*" buffer.
+
+---
+*** New user option 'completion-auto-wrap'.
+When non-nil, the commands 'next-completion' and 'previous-completion'
+automatically wrap around on reaching the beginning or the end of
+the "*Completions*" buffer.
+
++++
+*** New values for the 'completion-auto-help' user option.
+There are two new values to control the way the "*Completions*" buffer
+behaves after pressing a 'TAB' if completion is not unique. The value
+'always' updates or shows the "*Completions*" buffer after any attempt
+to complete. The value 'visual' is like 'always', but only updates
+the completions if they are already visible. The default value t
+always hides the completion buffer after some completion is made.
+
+---
+*** New commands to complete the minibuffer history.
+'minibuffer-complete-history' ('C-x <up>') is like 'minibuffer-complete'
+but completes on the history items instead of the default completion
+table. 'minibuffer-complete-defaults' ('C-x <down>') completes
+on the list of default items.
+
++++
+*** User option 'minibuffer-eldef-shorten-default' is now obsolete.
+Customize the user option 'minibuffer-default-prompt-format' instead.
+
++++
+*** New user option 'completions-sort'.
+This option controls the sorting of the completion candidates in
+the "*Completions*" buffer. Available styles are no sorting,
+alphabetical (the default), or a custom sort function.
+
++++
+*** New user option 'completions-max-height'.
+This option limits the height of the "*Completions*" buffer.
+
++++
+*** New user option 'completions-header-format'.
+This is a string to control the header line to show in the
+"*Completions*" buffer before the list of completions.
+If it contains "%s", that is replaced with the number of completions.
+If nil, the header line is not shown.
+
++++
+*** New user option 'completions-highlight-face'.
+When this user option names a face, the current
+candidate in the "*Completions*" buffer is highlighted with that face.
+The nil value disables this highlighting. The default is to highlight
+using the 'completions-highlight' face.
+
++++
+*** You can now define abbrevs for the minibuffer modes.
+'minibuffer-mode-abbrev-table' and
+'minibuffer-inactive-mode-abbrev-table' are now defined.
+
+** Isearch and Replace
+
++++
+*** Changes in how Isearch responds to 'mouse-yank-at-point'.
+If a user does 'C-s' and then uses '<mouse-2>' ('mouse-yank-primary')
+outside the echo area, Emacs will, by default, end the Isearch and
+yank the text at mouse cursor. But if 'mouse-yank-at-point' is
+non-nil, the text will now be added to the Isearch instead.
+
++++
+*** Changes for values 'no' and 'no-ding' of 'isearch-wrap-pause'.
+Now with these values the search will wrap around not only on repeating
+with 'C-s C-s', but also after typing a character.
+
++++
+*** New user option 'char-fold-override'.
+Non-nil means that the default definitions of equivalent characters
+are overridden.
+
+*** New command 'describe-char-fold-equivalences'.
+It displays character equivalences used by 'char-fold-to-regexp'.
+
++++
+*** New command 'isearch-emoji-by-name'.
+It is bound to 'C-x 8 e RET' during an incremental search. The
+command accepts the Unicode name of an Emoji (for example, "smiling
+face" or "heart with arrow"), like 'C-x 8 e e', with minibuffer
+completion, and adds the Emoji into the search string.
+
+** GDB/MI
+
+---
+*** New user option 'gdb-debuginfod-enable-setting'.
+On capable platforms, GDB 10.1 and later can download missing source
+and debug info files from special-purpose servers, called "debuginfod
+servers". Use this new option to control whether 'M-x gdb' instructs
+GDB to download missing files from debuginfod servers when you debug
+the corresponding programs. The default is to ask you at the
+beginning of each debugging session whether to download the files for
+that session.
+
+** Glyphless Characters
+
++++
+*** New minor mode 'glyphless-display-mode'.
+This allows an easy way to toggle seeing all glyphless characters in
+the current buffer.
+
+---
+*** The extra slot of 'glyphless-char-display' can now have cons values.
+The extra slot of the 'glyphless-char-display' char-table can now have
+values that are cons cells, specifying separate values for text-mode
+and GUI terminals.
+
++++
+*** "Replacement character" feature for undisplayable characters on TTYs.
+The 'acronym' method of displaying glyphless characters on text-mode
+frames treats single-character acronyms specially: they are displayed
+without the surrounding '[..]' "box", thus in effect treating such
+"acronyms" as replacement characters.
+
+** Registers
+
++++
+*** Buffer names can now be stored in registers.
+For instance, to enable jumping to the "*Messages*" buffer with
+'C-x r j m':
+
+ (set-register ?m '(buffer . "*Messages*"))
+
+** Pixel Fill
+
++++
+*** This is a new package that deals with filling variable-pitch text.
+
++++
+*** New function 'pixel-fill-region'.
+This fills the region to be no wider than a specified pixel width.
+
+** Info
+
++++
+*** Command 'info-apropos' now takes a prefix argument to search for regexps.
+
+---
+*** New command 'Info-goto-node-web' and key binding 'G'.
+This will take you to the "gnu.org" web server's version of the current
+info node. This command only works for the Emacs and Emacs Lisp manuals.
+
+** Shortdoc
+
+---
+*** New command 'shortdoc-copy-function-as-kill' bound to 'w'.
+It copies the name of the function near point into the kill ring.
+
+---
+*** 'N' and 'P' are now bound to 'shortdoc-{next,previous}-section'.
+This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
+
+** VC
+
+---
+*** New command 'vc-pull-and-push'.
+This commands first does a "pull" command, and if that is successful,
+does a "push" command afterwards. Currently supported in Git and Bzr.
+
++++
+*** 'C-x v b' prefix key is used now for branch commands.
+'vc-print-branch-log' is bound to 'C-x v b l', and new commands are
+'vc-create-branch' ('C-x v b c') and 'vc-switch-branch' ('C-x v b s').
+The VC Directory buffer now uses the prefix 'b' for these branch-related
+commands.
+
++++
+*** New command 'vc-dir-mark-by-regexp' bound to '% m' and '* %'.
+This command marks files based on a regexp. If given a prefix
+argument, unmark instead.
+
++++
+*** New command 'C-x v !' ('vc-edit-next-command').
+This prefix command requests editing of the next VC shell command
+before execution. For example, in a Git repository, you can produce a
+log of more than one branch by typing 'C-x v ! C-x v b l' and then
+appending additional branch names to the 'git log' command.
+
+The intention is that this command can be used to access a wide
+variety of version control system-specific functionality from VC
+without complexifying either the VC command set or the backend API.
+
+---
+*** 'C-x v v' in a diffs buffer allows to commit only some of the changes.
+This command is intended to allow you to commit only some of the
+changes you have in your working tree. Begin by creating a buffer
+with the changes against the last commit, e.g. with 'C-x v D'
+('vc-root-diff'). Then edit the diffs to remove the hunks you don't
+want to commit. Finally, type 'C-x v v' in that diff buffer to commit
+only part of your changes, those whose hunks were left in the buffer.
+
+---
+*** 'C-x v v' on an unregistered file will now use the most specific backend.
+Previously, if you had an SVN-covered "~/" directory, and a Git-covered
+directory in "~/foo/bar", using 'C-x v v' on a new, unregistered file
+"~/foo/bar/zot" would register it in the SVN repository in "~/" instead of
+in the Git repository in "~/foo/bar". This makes this command
+consistent with 'vc-responsible-backend'.
+
+---
+*** Log Edit now fontifies long Git commit summary lines.
+Writing shorter summary lines avoids truncation in contexts in which
+Git commands display summary lines. See the two new user options
+'vc-git-log-edit-summary-target-len' and 'vc-git-log-edit-summary-max-len'.
+
+---
+*** New 'log-edit-headers-separator' face.
+It is used to style the line that separates the 'log-edit' headers
+from the 'log-edit' summary.
+
+---
+*** The function 'vc-read-revision' accepts a new MULTIPLE argument.
+If non-nil, multiple revisions can be queried. This is done using
+'completing-read-multiple'.
+
+---
+*** New function 'vc-read-multiple-revisions'.
+This function invokes 'vc-read-revision' with a non-nil value for
+MULTIPLE.
+
++++
+*** New command 'vc-prepare-patch'.
+Patches for any version control system can be prepared using VC. The
+command will query what commits to send and will compose messages for
+your mail user agent. The behavior of 'vc-prepare-patch' can be
+modified by the user options 'vc-prepare-patches-separately' and
+'vc-default-patch-addressee'.
+
+** Message
+
+---
+*** New user option 'mml-attach-file-at-the-end'.
+If non-nil, 'C-c C-a' will put attached files at the end of the message.
+
+---
+*** Message Mode now supports image yanking.
+
++++
+*** New user option 'message-server-alist'.
+This controls automatic insertion of the "X-Message-SMTP-Method"
+header before sending a message.
+
+** HTML Mode
+
+---
+*** HTML Mode now supports "text/html" and "image/*" yanking.
+
+** Texinfo Mode
+
+---
+*** 'texinfo-mode' now has a specialized 'narrow-to-defun' definition.
+It narrows to the current node.
+
+** EUDC
+
++++
+*** Deprecations planned for next release.
+After Emacs 29.1, some aspects of EUDC will be deprecated. The goal
+of these deprecations is to simplify EUDC server configuration by
+making 'eudc-server-hotlist' the only place to add servers. There
+will not be a need to set the server using the 'eudc-set-server'
+command. Instead, the 'eudc-server-hotlist' user option should be
+customized to have an entry for the server. The plan is to obsolete
+the 'eudc-hotlist' package since Customize is sufficient for changing
+'eudc-server-hotlist'. How the 'eudc-server' user option works in this
+context is to-be-determined; it can't be removed, because that would
+break compatibility, but it may become synchronized with
+'eudc-server-hotlist' so that 'eudc-server' is always equal to '(car
+eudc-server-hotlist)'. The first entry in 'eudc-server-hotlist' is the
+first server tried by 'eudc-expand-try-all'. The hotlist
+simplification will allow 'eudc-query-form' to show a drop down of
+possible servers, instead of requiring a call to 'eudc-set-server'
+like it does in this release. The default value of
+'eudc-ignore-options-file' will be changed from nil to t.
+
++++
+*** New user option 'eudc-ignore-options-file' that defaults to nil.
+The 'eudc-ignore-options-file' user option can be configured to ignore
+the 'eudc-options-file' (typically "~/.emacs.d/eudc-options"). Most
+users should configure this to t and put EUDC configuration in the
+main Emacs initialization file ("~/.emacs" or "~/.emacs.d/init.el").
+
++++
+*** 'eudc-expansion-overwrites-query' to 'eudc-expansion-save-query-as-kill'.
+The user option 'eudc-expansion-overwrites-query' is renamed to
+'eudc-expansion-save-query-as-kill' to reflect the actual behavior of
+the user option. The former is kept as alias.
+
++++
+*** New command 'eudc-expand-try-all'.
+This command can be used in place of 'eudc-expand-inline'. It takes a
+prefix argument that causes 'eudc-expand-try-all' to return matches
+from all servers instead of just the matches from the first server to
+return any. This is useful for example, if one wants to search LDAP
+for a name that happens to match a contact in one's BBDB.
+
++++
+*** New behavior and default for user option 'eudc-inline-expansion-format'.
+EUDC inline expansion result formatting defaulted to
+
+ ("%s %s <%s>" firstname name email)
+
+Since email address specifications need to comply with RFC 5322 in
+order to be useful in messages, there was a risk to produce syntax
+which was standard with RFC 822, but is marked as obsolete syntax by
+its successor RFC 5322. Also, the first and last name part was never
+enclosed in double quotes, potentially producing invalid address
+specifications, which may be rejected by a receiving MTA. Thus, this
+variable can now additionally be set to nil (the new default), or a
+function. In both cases, the formatted result will be in compliance
+with RFC 5322. When set to nil, a default format very similar to the
+old default will be produced. When set to a function, that function
+is called, and the returned values are used to populate the phrase and
+comment parts (see RFC 5322 for definitions). In both cases, the
+phrase part will be automatically quoted if necessary.
+
++++
+*** New function 'eudc-capf-complete' with 'message-mode' integration.
+EUDC can now contribute email addresses to 'completion-at-point' by
+adding the new function 'eudc-capf-complete' to
+'completion-at-point-functions' in 'message-mode'.
+
++++
+*** Additional attributes of query and results in eudcb-macos-contacts.el.
+The EUDC back-end for the macOS Contacts app now provides a wider set
+of attributes to use for queries, and delivers more attributes in
+query results.
+
++++
+*** New back-end for ecomplete.
+A new back-end for ecomplete allows information from that database to
+be queried by EUDC, too. The attributes present in the EUDC query are
+used to select the entry type in the ecomplete database.
+
++++
+*** New back-end for mailabbrev.
+A new back-end for mailabbrev allows information from that database to
+be queried by EUDC, too. The attributes 'email', 'name', and 'firstname'
+are supported only.
+
+** EWW/SHR
+
++++
+*** New user option to automatically rename EWW buffers.
+The 'eww-auto-rename-buffer' user option can be configured to rename
+rendered web pages by using their title, URL, or a user-defined
+function which returns a string. For the first two cases, the length
+of the resulting name is controlled by the user option
+'eww-buffer-name-length'. By default, no automatic renaming is
+performed.
+
++++
+*** New user option 'shr-allowed-images'.
+This complements 'shr-blocked-images', but allows specifying just the
+allowed images.
+
++++
+*** New user option 'shr-use-xwidgets-for-media'.
+If non-nil (and Emacs has been built with support for xwidgets),
+display <video> elements with an xwidget. Note that this is
+experimental; it is known to crash Emacs on some systems, and just
+doesn't work on other systems. Also see etc/PROBLEMS.
+
++++
+*** New user option 'eww-url-transformers'.
+These are used to alter an URL before using it. By default it removes
+the common "utm_" trackers from URLs.
+
+** Find Dired
+
+---
+*** New command 'find-dired-with-command'.
+This enables users to run 'find-dired' with an arbitrary command,
+enabling running commands previously unsupported and also enabling new
+commands to be built on top.
+
+** Gnus
+
++++
+*** Tool bar changes in Gnus/Message.
+There were previously two styles of tool bars available in Gnus and
+Message, referred to as 'gnus-summary-tool-bar-retro',
+'gnus-group-tool-bar-retro' and 'message-tool-bar-retro', and
+'gnus-summary-tool-bar-gnome', 'gnus-group-tool-bar-gnome' and
+'message-tool-bar-gnome'. The "retro" tool bars have been removed (as
+well as the icons used), and the "gnome" tool bars are now the only
+pre-defined toolbars.
+
+---
+*** 'gnus-summary-up-thread' and 'gnus-summary-down-thread' bindings removed.
+The 'gnus-summary-down-thread' binding to 'M-C-d' was shadowed by
+'gnus-summary-read-document', and these commands are also available on
+'T u' and 'T d' respectively.
+
+---
+*** Gnus now uses a variable-pitch font in the headers by default.
+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)
+
+---
+*** The default value of 'gnus-treat-fold-headers' is now 'head'.
+
+---
+*** New face 'gnus-header'.
+All other 'gnus-header-*' faces inherit from this face now.
+
++++
+*** New user option 'gnus-treat-emojize-symbols'.
+If non-nil, symbols that have an Emoji representation will be
+displayed as emojis. The default is nil.
+
++++
+*** New command 'gnus-article-emojize-symbols'.
+This is bound to 'W D e' and will display symbols that have Emoji
+representation as Emoji.
+
++++
+*** New mu backend for gnus-search.
+Configuration is very similar to the notmuch and namazu backends. It
+supports the unified search syntax.
+
+---
+*** 'gnus-html-image-cache-ttl' is now a seconds count.
+Formerly it was a pair of numbers '(A B)' that represented 65536*A + B,
+to cater to older Emacs implementations that lacked bignums.
+The older form still works but is undocumented.
+
+** Rmail
+
+---
+*** Rmail partial summaries can now be applied one on top of the other.
+You can now narrow the set of messages selected by Rmail summary's
+criteria (recipients, topic, senders, etc.) by making a summary of the
+already summarized messages. For example, invoking
+'rmail-summary-by-senders', followed by 'rmail-summary-by-topic' will
+produce a summary where both the senders and the topic are according
+to your selection. The new user option
+'rmail-summary-progressively-narrow' controls whether the stacking of
+the filters is in effect; customize it to a non-nil value to enable
+this feature.
+
+---
+*** New Rmail summary: by thread.
+The new command 'rmail-summary-by-thread' produces a summary of
+messages that belong to a single thread of discussion.
+
+** EIEIO
+
++++
+*** 'slot-value' can now be used to access slots of 'cl-defstruct' objects.
+
+** Align
+
+---
+*** Alignment in 'text-mode' has changed.
+Previously, 'M-x align' didn't do anything, and you had to say 'C-u
+M-x align' for it to work. This has now been changed. The default
+regexp for 'C-u M-x align-regexp' has also been changed to be easier
+for inexperienced users to use.
+
+** Help
+
+---
+*** New mode, 'emacs-news-view-mode', for viewing the NEWS file.
+This mode is used by the 'C-h N' command, and adds buttons to manual
+entries and symbol references.
+
+---
+*** New user option 'help-link-key-to-documentation'.
+When this option is non-nil (which is the default), key bindings
+displayed in the "*Help*" buffer will be linked to the documentation
+for the command they are bound to. This does not affect listings of
+key bindings and functions (such as 'C-h b').
+
+** Info Look
+
+---
+*** info-look specs can now be expanded at run time instead of a load time.
+The new ':doc-spec-function' element can be used to compute the
+':doc-spec' element when the user asks for info on that particular
+mode (instead of at load time).
+
+** Ansi Color
+
+---
+*** Support for ANSI 256-color and 24-bit colors.
+256-color and 24-bit color codes are now handled by ANSI color
+filters and displayed with the specified color.
+
+** Term Mode
+
+---
+*** New user option 'term-bind-function-keys'.
+If non-nil, 'term-mode' will pass the function keys on to the
+underlying shell instead of using the normal Emacs bindings.
+
+---
+*** Support for ANSI 256-color and 24-bit colors, italic and other fonts.
+'term-mode' can now display 256-color and 24-bit color codes. It can
+also handle ANSI codes for faint, italic and blinking text, displaying
+it with new 'term-{faint,italic,slow-blink,fast-blink}' faces.
+
+** Project
+
++++
+*** 'project-find-file' and 'project-or-external-find-file' can include all.
+The commands 'project-find-file' and 'project-or-external-find-file'
+now accept a prefix argument, which is interpreted to mean "include
+all files".
+
++++
+*** New command 'project-list-buffers' bound to 'C-x p C-b'.
+This command displays a list of buffers from the current project.
+
++++
+*** 'project-kill-buffers' can display the list of buffers to kill.
+Customize the user option 'project-kill-buffers-display-buffer-list'
+to enable the display of the buffer list.
+
+*** New user option 'project-vc-extra-root-markers'.
+Use it to add detection of nested projects (inside a VCS repository),
+or projects outside of VCS repositories.
+
+As a consequence, the 'VC project backend' is formally renamed to
+'VC-aware project backend'.
+
++++
+*** New user option 'project-vc-include-untracked'.
+If non-nil, files untracked by a VCS are considered to be part of
+the project by a VC project based on that VCS.
+
+** Xref
+
++++
+*** New command 'xref-go-forward'.
+It is bound to 'C-M-,' and jumps to the location where you previously
+invoked 'xref-go-back' ('M-,', also known as 'xref-pop-marker-stack').
+
++++
+*** The depth of the Xref marker stack is now infinite.
+The implementation of the Xref marker stack was changed in a way that
+allows as many places to be saved on the stack as needed, limited only
+by the available memory. Therefore, the variables
+'find-tag-marker-ring-length' and 'xref-marker-ring-length' are now
+obsolete and unused; setting them has no effect.
+
++++
+*** 'xref-query-replace-in-results' prompting change.
+This command no longer prompts for FROM when called without prefix
+argument. This makes the most common case faster: replacing entire
+matches.
+
++++
+*** New command 'xref-find-references-and-replace' to rename one identifier.
+
+---
+*** New variable 'xref-current-item' (renamed from a private version).
+
+---
+*** New function 'xref-show-xrefs'.
+
+*** 'outline-minor-mode' is supported in Xref buffers.
+You can enable outlining by adding 'outline-minor-mode' to
+'xref-after-update-hook'.
+
+** File Notifications
+
++++
+*** The new command 'file-notify-rm-all-watches' removes all file notifications.
+
+** Sql
+
+---
+*** Sql now supports sending of passwords in-process.
+To improve security, if an sql product has ':password-in-comint' set
+to t, a password supplied via the minibuffer will be sent in-process,
+as opposed to via the command-line.
+
+** Image Mode
+
++++
+*** New command 'image-transform-fit-to-window'.
+This command fits the image to the current window by scaling down or
+up as necessary. Unlike 'image-transform-fit-both', this does not
+only scale the image down, but up as well. It is bound to 's w' in
+Image Mode by default.
+
+---
+*** New command 'image-mode-wallpaper-set'.
+This command sets the desktop background to the current image. It is
+bound to 'W' by default.
+
++++
+*** 'image-transform-fit-to-{height,width}' are now obsolete.
+Use the new command 'image-transform-fit-to-window' instead.
+The keybinding for 'image-transform-fit-to-width' is now 's i'.
+
+---
+*** User option 'image-auto-resize' can now be set to 'fit-window'.
+This works like 'image-transform-fit-to-window'.
+
+---
+*** New user option 'image-auto-resize-max-scale-percent'.
+The new 'fit-window' option will never scale an image more than this
+much (in percent). It is nil by default, which means no limit.
+
+---
+*** New user option 'image-text-based-formats'.
+This controls whether or not to show a message when opening certain
+image formats saying how to edit it as text. The default is to show
+this message for SVG and XPM.
+
++++
+*** New command 'image-transform-set-percent'.
+It allows setting the image size to a percentage of its original size,
+and is bound to 's p' in Image mode.
+
++++
+*** 'image-transform-original' renamed to 'image-transform-reset-to-original'.
+The old name was confusing, and is now an obsolete function alias.
+
++++
+*** 'image-transform-reset' renamed to 'image-transform-reset-to-initial'.
+The old name was confusing, and is now an obsolete function alias.
+
+** Images
+
++++
+** New commands 'image-crop' and 'image-cut'.
+These commands allow interactively cropping/cutting the image at
+point. The commands are bound to keys 'i c' and 'i x' (respectively)
+in the local keymap over images. They rely on external programs, by
+default "convert" from ImageMagick, to do the actual cropping/eliding
+of the image file.
+
++++
+*** New commands: 'image-flip-horizontally' and 'image-flip-vertically'.
+These commands horizontally and vertically flip the image under point,
+and are bound to 'i h' and 'i v', respectively.
+
++++
+*** Users can now add special image conversion functions.
+This is done via 'image-converter-add-handler'.
+
+** Image Dired
+
++++
+*** 'image-dired-image-mode' is now based on 'image-mode'.
+This avoids converting images in the background, and makes Image-Dired
+noticeably faster. New keybindings from 'image-mode' are now
+available in the "*image-dired-display-image*" buffer; press '?' or
+'h' in that buffer to see the full list.
+
+---
+*** Navigation and marking commands now work in image display buffer.
+The following new bindings have been added:
+- 'n', 'SPC' => 'image-dired-display-next'
+- 'p', 'DEL' => 'image-dired-display-previous'
+- 'm' => 'image-dired-mark-thumb-original-file'
+- 'd' => 'image-dired-flag-thumb-original-file'
+- 'u' => 'image-dired-unmark-thumb-original-file'
+
+---
+*** New command 'image-dired-unmark-all-marks'.
+It removes all marks from all files in the thumbnail and the
+associated Dired buffer, and is bound to 'U' in the thumbnail and
+display buffer.
+
+---
+*** New command 'image-dired-do-flagged-delete'.
+It deletes all flagged files, and is bound to 'x' in the thumbnail
+buffer. It replaces the command 'image-dired-delete-marked', which is
+now an obsolete alias.
+
+---
+*** New command 'image-dired-copy-filename-as-kill'.
+It copies the name of the marked or current image to the kill ring,
+and is bound to 'w' in the thumbnail buffer.
+
+---
+*** New command 'image-dired-wallpaper-set'.
+This command sets the desktop background to the image at point in the
+thumbnail buffer. It is bound to 'W' by default.
+
+---
+*** 'image-dired-slideshow-start' is now bound to 'S'.
+It is bound in both the thumbnail and display buffer, and no longer
+prompts for a timeout; use a numerical prefix (e.g. 'C-u 8 S') to set
+the timeout.
+
+---
+*** New user option 'image-dired-marking-shows-next'.
+If this option is non-nil (the default), marking, unmarking or
+flagging an image in either the thumbnail or display buffer shows the
+next image.
+
+---
+*** New face 'image-dired-thumb-flagged'.
+If 'image-dired-thumb-mark' is non-nil (the default), this face is
+used for images that are flagged for deletion in the Dired buffer
+associated with Image-Dired.
+
+---
+*** Image information is now shown in the header line of the thumbnail buffer.
+This replaces the message that most navigation commands in the
+thumbnail buffer used to show at the bottom of the screen.
+
+---
+*** New specifiers for 'image-dired-display-properties-format'.
+This is used to format the new header line. The new specifiers are:
+"%d" for the name of the directory that the file is in, "%n" for
+file's number in the thumbnail buffer, and "%s" for the file size.
+
+The default format has been updated to use this. If you prefer the
+old format, add this to your Init file:
+
+ (setopt image-dired-display-properties-format "%b: %f (%t): %c")
+
+---
+*** New faces for the header line of the thumbnail buffer.
+These faces correspond to different parts of the header line, as
+specified in 'image-dired-display-properties-format':
+- 'image-dired-thumb-header-directory-name'
+- 'image-dired-thumb-header-file-name'
+- 'image-dired-thumb-header-file-size'
+- 'image-dired-thumb-header-image-count'
+
+---
+*** PDF support.
+Image-Dired now displays thumbnails for PDF files. Type 'RET' on a
+PDF file in the thumbnail buffer to visit the corresponding PDF.
+
+---
+*** Support GraphicsMagick command line tools.
+Support for the GraphicsMagick command line tool ("gm") has been
+added, and is used when it is available instead of ImageMagick.
+
+---
+*** Support Thumbnail Managing Standard v0.9.0 (Dec 2020).
+This standard allows sharing generated thumbnails across different
+programs. Version 0.9.0 adds two larger thumbnail sizes: 512x512 and
+1024x1024 pixels. See the user option 'image-dired-thumbnail-storage'
+to use it; it is not enabled by default.
+
+---
+*** Reduce dependency on external "exiftool" program.
+The 'image-dired-copy-with-exif-file-name' command no longer requires
+an external "exiftool" program to be available. The user options
+'image-dired-cmd-read-exif-data-program' and
+'image-dired-cmd-read-exif-data-options' are now obsolete.
+
+---
+*** Support for bookmark.el.
+The command 'bookmark-set' (bound to 'C-x r m') is now supported in
+the thumbnail view, and will create a bookmark that opens the current
+directory in Image-Dired.
+
+---
+*** The 'image-dired-slideshow-start' command no longer prompts.
+It no longer inconveniently prompts for a number of images and a
+delay: it runs indefinitely, but stops automatically on any command.
+You can set the delay with a prefix argument, or a negative prefix
+argument to prompt for a delay. Customize the user option
+'image-dired-slideshow-delay' to change the default from 5 seconds.
+
++++
+*** 'image-dired-show-all-from-dir-max-files' increased to 1000.
+This user option controls asking for confirmation when starting
+Image-Dired in a directory with many files. Since Image-Dired creates
+thumbnails in the background in recent versions, this is not as
+important as it used to be. You can now also customize this option to
+nil to disable this confirmation completely.
+
+---
+*** 'image-dired-thumb-size' increased to 128.
+
++++
+*** 'image-dired-db-file' renamed to 'image-dired-tags-db-file'.
+
+---
+*** 'image-dired-display-image-mode' renamed to 'image-dired-image-mode'.
+The corresponding keymap is now named 'image-dired-image-mode-map'.
+
++++
+*** Some commands have been renamed to be shorter.
+- 'image-dired-display-thumbnail-original-image' has been renamed to
+ 'image-dired-display-this'.
+- 'image-dired-display-next-thumbnail-original' has been renamed to
+ 'image-dired-display-next'.
+- 'image-dired-display-previous-thumbnail-original' has been renamed
+ to 'image-dired-display-previous'.
+The old names are now obsolete aliases.
+
+---
+*** 'image-dired-thumb-{height,width}' are now obsolete.
+Customize 'image-dired-thumb-size' instead, which will set both the
+height and width.
+
+---
+*** HTML image gallery generation is now obsolete.
+The 'image-dired-gallery-generate' command and these user options are
+now obsolete: 'image-dired-gallery-thumb-image-root-url',
+'image-dired-gallery-hidden-tags', 'image-dired-gallery-dir',
+'image-dired-gallery-image-root-url'.
+
+---
+*** 'image-dired-rotate-thumbnail-{left,right}' are now obsolete.
+Instead, use commands 'image-dired-refresh-thumb' to generate a new
+thumbnail, or 'image-rotate' to rotate the thumbnail without updating
+the thumbnail file.
+
++++
+*** Some commands and user options are now obsolete.
+Since 'image-dired-display-image-mode' is now based on 'image-mode',
+some commands and user options are no longer needed and are now obsolete:
+'image-dired-cmd-create-temp-image-options',
+'image-dired-cmd-create-temp-image-program',
+'image-dired-display-current-image-full',
+'image-dired-display-current-image-sized',
+'image-dired-display-window-height-correction',
+'image-dired-display-window-width-correction',
+'image-dired-temp-image-file'.
+
+** Exif
+
+---
+*** New function 'exif-field'.
+This is a convenience function to extract the field data from
+'exif-parse-file' and 'exif-parse-buffer'.
+
+** Bookmarks
+
+---
+*** 'list-bookmarks' now includes a type column.
+Types are registered via a 'bookmark-handler-type' symbol property on
+the jumping function.
+
++++
+*** 'bookmark-sort-flag' can now be set to 'last-modified'.
+This will display bookmark list from most recently set to least
+recently set.
+
+---
+*** When editing a bookmark annotation, 'C-c C-k' will now cancel.
+It is bound to the new command 'bookmark-edit-annotation-cancel'.
+
+---
+*** New user option 'bookmark-fringe-mark'.
+This option controls the bitmap used to indicate bookmarks in the
+fringe (or nil to disable showing this marker).
+
+** Xwidget
+
+---
+*** New user option 'xwidget-webkit-buffer-name-format'.
+This option controls how xwidget-webkit buffers are named.
+
+---
+*** New user option 'xwidget-webkit-cookie-file'.
+This option controls whether the xwidget-webkit buffers save cookies
+set by web pages, and if so, in which file to save them.
+
++++
+*** New minor mode 'xwidget-webkit-edit-mode'.
+When this mode is enabled, self-inserting characters and other common
+web browser shortcut keys are redefined to send themselves to the
+WebKit widget.
+
++++
+*** New minor mode 'xwidget-webkit-isearch-mode'.
+This mode acts similarly to incremental search, and allows searching
+the contents of a WebKit widget. In xwidget-webkit mode, it is bound
+to 'C-s' and 'C-r'.
+
++++
+*** New command 'xwidget-webkit-browse-history'.
+This command displays a buffer containing the page load history of
+the current WebKit widget, and allows you to navigate it.
+
+---
+*** On X, the WebKit inspector is now available inside xwidgets.
+To access the inspector, right click on the widget and select "Inspect
+Element".
+
+---
+*** "Open in New Window" in a WebKit widget's context menu now works.
+The newly created buffer will be displayed via 'display-buffer', which
+can be customized through the usual mechanism of 'display-buffer-alist'
+and friends.
+
+** Tramp
+
++++
+*** New connection methods "docker", "podman" and "kubernetes".
+They allow accessing containers provided by Docker and similar
+programs.
+
+---
+*** Tramp supports abbreviating remote home directories now.
+When calling 'abbreviate-file-name' on a Tramp file name, the result
+will abbreviate the user's home directory, for example by abbreviating
+"/ssh:user@host:/home/user" to "/ssh:user@host:~".
+
++++
+*** New user option 'tramp-use-scp-direct-remote-copying'.
+When set to non-nil, Tramp does not copy files between two remote
+hosts via a local copy in its temporary directory, but lets the 'scp'
+command do this job.
+
++++
+*** Proper password prompts for methods "doas", "sudo" and "sudoedit".
+The password prompts for these methods reflect now the credentials of
+the user requesting such a connection, and not of the user who is the
+target. This has always been needed, just the password prompt and the
+related 'auth-sources' entry were wrong.
+
++++
+*** New user option 'tramp-completion-use-cache'.
+During user and host name completion in the minibuffer, results from
+Tramp's connection cache are taken into account. This can be disabled
+by setting the user option 'tramp-completion-use-cache' to nil.
+
+** Browse URL
+
+---
+*** New user option 'browse-url-default-scheme'.
+This user option decides which URL scheme that 'browse-url' and
+related functions will use by default. For example, you could
+customize this to "https" to always prefer HTTPS URLs.
+
+---
+*** New user option 'browse-url-irc-function'.
+This option specifies a function for opening "irc://" links. It
+defaults to the new function 'browse-url-irc'.
+
+---
+*** New function 'browse-url-irc'.
+This multipurpose autoloaded function can be used for opening "irc://"
+and "ircs://" URLS by any caller that passes a URL string as an initial
+arg.
+
+---
+*** Support for the Netscape web browser has been removed.
+This support has been obsolete since Emacs 25.1. The final version of
+the Netscape web browser was released in February, 2008.
+
+---
+*** Support for the Galeon web browser has been removed.
+This support has been obsolete since Emacs 25.1. The final version of
+the Galeon web browser was released in September, 2008.
+
+---
+*** Support for the Mozilla web browser is now obsolete.
+Note that this historical web browser is different from Mozilla
+Firefox; it is its predecessor.
+
+** Python Mode
+
++++
+*** Project shells and a new user option 'python-shell-dedicated'.
+When called with a prefix argument, 'run-python' now offers the choice
+of creating a shell dedicated to the current project. This shell runs
+in the project root directory and is shared among all project buffers.
+
+Without a prefix argument, the kind of shell (buffer-dedicated,
+project-dedicated or global) is specified by the new
+'python-shell-dedicated' user option.
+
+** Ruby Mode
+
+---
+*** New user option 'ruby-toggle-block-space-before-parameters'.
+
+---
+*** Support for endless methods.
+
+---
+*** New user options that determine indentation logic.
+'ruby-method-params-indent', 'ruby-block-indent',
+'ruby-after-operator-indent', 'ruby-method-call-indent',
+'ruby-parenless-call-arguments-indent'. See the docstrings for
+explanations and examples.
+
+** Eshell
+
++++
+*** New feature to easily bypass Eshell's own pipelining.
+Prefixing '|', '<' or '>' with an asterisk, i.e. '*|', '*<' or '*>',
+will cause the whole command to be passed to the operating system
+shell. This is particularly useful to bypass Eshell's own pipelining
+support for pipelines which will move a lot of data. See section
+"Running Shell Pipelines Natively" in the Eshell manual, node
+"(eshell) Pipelines".
+
++++
+*** New module to help supplying absolute file names to remote commands.
+After enabling the new 'eshell-elecslash' module, typing a forward
+slash as the first character of a command line argument will
+automatically insert the Tramp prefix. The automatic insertion
+applies only when 'default-directory' is remote and the command is a
+Lisp function. This frees you from having to keep track of whether
+commands are Lisp function or external when supplying absolute file
+name arguments. See the "(eshell) Electric forward slash" node in the
+Eshell manual for details.
+
++++
+*** Improved support for redirection operators in Eshell.
+Eshell now supports a wider variety of redirection operators. For
+example, you can now redirect both stdout and stderr via '&>' or
+duplicate one output handle to another via 'NEW-FD>&OLD-FD'. For more
+information, see the "(eshell) Redirection" node in the Eshell manual.
+
++++
+*** New eshell built-in command 'doas'.
+The privilege-escalation program 'doas' has been added to the existing
+'su' and 'sudo' commands from the 'eshell-tramp' module. The external
+command may still be accessed by using '*doas'.
+
++++
+*** Double-quoting an Eshell expansion now treats the result as a single string.
+If an Eshell expansion like '$FOO' is surrounded by double quotes, the
+result will always be a single string, no matter the type that would
+otherwise be returned.
+
++++
+*** Concatenating Eshell expansions now works more similarly to other shells.
+When concatenating an Eshell expansion that returns a list, "adjacent"
+elements of each operand are now concatenated together,
+e.g. '$(list "a" "b")c' returns '("a" "bc")'. See the "(eshell)
+Expansion" node in the Eshell manual for more details.
+
++++
+*** Eshell subcommands with multiline numeric output return lists of numbers.
+If every line of the output of an Eshell subcommand like '${COMMAND}'
+is numeric, the result will be a list of numbers (or a single number
+if only one line of output). Previously, this only converted numbers
+when there was a single line of output.
+
+---
+*** Built-in Eshell commands now follow Posix/GNU argument syntax conventions.
+Built-in commands in Eshell now accept command-line options with
+values passed as a single token, such as '-oVALUE' or
+'--option=VALUE'. New commands can take advantage of this with the
+'eshell-eval-using-options' macro. See "Defining new built-in
+commands" in the "(eshell) Built-ins" node of the Eshell manual.
+
+---
+*** Eshell globs ending with "/" now match only directories.
+Additionally, globs ending with "**/" or "***/" no longer raise an
+error, and now expand to all directories recursively (following
+symlinks in the latter case).
+
++++
+*** Lisp forms in Eshell now treat a nil result as a failed exit status.
+When executing a command that looks like '(lisp form)' and returns
+nil, Eshell will set the exit status (available in the '$?'
+variable) to 2. This allows commands like that to be used in
+conditionals. To change this behavior, customize the new
+'eshell-lisp-form-nil-is-failure' user option.
+
+** Shell
+
+---
+*** New user option 'shell-kill-buffer-on-exit'.
+Enabling this will automatically kill a "*shell*" buffer as soon as
+the shell session terminates.
+
+---
+*** New minor mode 'shell-highlight-undef-mode'.
+Customize 'shell-highlight-undef-enable' to t if you want to enable
+this minor mode in "*shell*" buffers. It will highlight undefined
+commands with a warning face as you type.
+
+** Calc
+
++++
+*** New user option 'calc-kill-line-numbering'.
+Set it to nil to exclude line numbering from kills and copies.
+
+** Hierarchy
+
++++
+*** Tree Display can delay computation of children.
+'hierarchy-add-tree' and 'hierarchy-add-trees' have an optional
+argument which allows tree-widget display to be activated and computed
+only when the user expands the node.
+
+** Proced
+
+---
+*** proced.el shows system processes of remote hosts.
+When 'default-directory' is remote, and 'proced' is invoked with a
+negative argument like 'C-u - proced', the system processes of that
+remote host are shown. Alternatively, the user option
+'proced-show-remote-processes' can be set to non-nil.
+'proced-signal-function' has been marked obsolete.
+
+---
+*** Proced can now optionally show process details in color.
+New user option 'proced-enable-color-flag' enables coloring of Proced
+buffers. This option is disabled by default; customize it to a
+non-nil value to enable colors.
+
+** Miscellaneous
+
+---
+*** New user option 'webjump-use-internal-browser'.
+When non-nil, WebJump will use an internal browser to open web pages,
+instead of the default external browser.
+
++++
+*** New user option 'font-lock-ignore'.
+This option provides a mechanism to selectively disable font-lock
+keyword-driven fontifications.
+
+---
+*** New user option 'auto-save-visited-predicate'.
+This user option is a predicate function which is called by
+'auto-save-visited-mode' to decide whether or not to save a buffer.
+You can use it to automatically save only specific buffers, for
+example buffers using a particular mode or in some directory.
+
+---
+*** New user option 'remote-file-name-inhibit-auto-save-visited'.
+If this user option is non-nil, 'auto-save-visited-mode' will not
+auto-save remote buffers. The default is nil.
+
++++
+*** New package vtable.el for formatting tabular data.
+This package allows formatting data using variable-pitch fonts.
+The resulting tables can display text in variable pitch fonts, text
+using fonts of different sizes, and images. See the "(vtable) Top"
+manual for more details.
+
+---
+*** New minor mode 'elide-head-mode'.
+Enabling this minor mode turns on hiding header material, like
+'elide-head' does; disabling it shows the header. The commands
+'elide-head' and 'elide-head-show' are now obsolete.
+
+*** New package ansi-osc.el.
+Support for OSC ("Operating System Command") escape sequences has been
+extracted from comint.el in order to provide interpretation of OSC
+sequences in compilation buffers.
+
+Adding the new function 'ansi-osc-compilation-filter' to
+'compilation-filter-hook' enables interpretation of OSC escape
+sequences in compilation buffers. By default, all sequences are
+filtered out.
+
+The list of handlers (already covering OSC 7 and 8) has been extended
+with a handler for OSC 2, the command to set a window title.
+
+---
+*** 'recentf-mode' now uses abbreviated file names by default.
+This means that e.g. "/home/foo/bar" is now displayed as "~/bar".
+Customize the user option 'recentf-filename-handlers' to nil to get
+back the old behavior.
+
+---
+*** New command 'recentf-open'.
+This command prompts for a recently opened file in the minibuffer, and
+visits it.
+
+---
+*** 'ffap-machine-at-point' no longer pings hosts by default.
+It will now simply look at a hostname to determine if it is valid,
+instead of also trying to ping it. Customize the user option
+'ffap-machine-p-known' to 'ping' to get the old behavior back.
+
+---
+*** The 'run-dig' command is now obsolete; use 'dig' instead.
+
+---
+*** Some 'bib-mode' commands and variables have been renamed.
+To respect Emacs naming conventions, the variable 'unread-bib-file'
+has been renamed to 'bib-unread-file'. The following commands have
+also been renamed:
+ 'addbib' to 'bib-add'
+ 'return-key-bib' to 'bib-return-key'
+ 'mark-bib' to 'bib-mark'
+ 'unread-bib' to 'bib-unread'
+
+---
+*** 'outlineify-sticky' command is renamed to 'allout-outlinify-sticky'.
+The old name is still available as an obsolete function alias.
+
+---
+*** The url-irc library now understands "ircs://" links.
+
+---
+*** New command 'world-clock-copy-time-as-kill' for 'world-clock-mode'.
+It copies the current line into the kill ring.
+
+---
+*** 'edit-abbrevs' now uses font-locking.
+The new face 'abbrev-table-name' is used to display the abbrev table
+name.
+
+---
+*** New key binding 'O' in "*Buffer List*".
+This key is now bound to 'Buffer-menu-view-other-window', which will
+view this line's buffer in View mode in another window.
+
+** Scheme Mode
+
+---
+*** Auto-detection of Scheme library files.
+Emacs now automatically enables the Scheme mode when opening R6RS
+Scheme Library Source (".sls") files and R7RS Scheme Library
+Definition (".sld") files.
+
+---
+*** Imenu members for R6RS and R7RS library members.
+Imenu now lists the members directly nested in R6RS Scheme libraries
+('library') and R7RS libraries ('define-library').
+
+
+* New Modes and Packages in Emacs 29.1
+
++++
+** Eglot: Emacs Client for the Language Server Protocol.
+Emacs now comes with the Eglot package, which enhances various Emacs
+features, such as completion, documentation, error detection, etc.,
+based on data provided by language servers using the Language Server
+Protocol (LSP). See the new Info manual "(eglot) Top" for more. Also
+see "etc/EGLOT-NEWS".
+
++++
+** use-package: Declarative package configuration.
+use-package is now shipped with Emacs. It provides the 'use-package'
+macro, which allows you to isolate package configuration in your init
+file in a way that is declarative, tidy, and performance-oriented.
+See the new Info manual "(use-package) Top" for more.
+
+---
+** New package 'wallpaper'.
+This package provides the command 'wallpaper-set', which sets the
+desktop background image. Depending on the system and the desktop,
+this may require an external program (such as "swaybg", "gm",
+"display" or "xloadimage"). If so, a suitable command should be
+detected automatically in most cases. It can also be customized
+manually if needed, using the new user options 'wallpaper-command' and
+'wallpaper-command-args'.
+
++++
+** New package 'oclosure'.
+This allows the creation of OClosures, which are "functions with
+slots" or "function objects" that expose additional information about
+themselves. Use the new macros 'oclosure-define' and
+'oclosure-lambda' to create OClosures. See the "(elisp) OClosures"
+node for more information.
+
++++
+*** New generic function 'oclosure-interactive-form'.
+Used by 'interactive-form' when called on an OClosure.
+This allows specific OClosure types to compute their interactive specs
+on demand rather than precompute them when created.
+
+---
+** New theme 'leuven-dark'.
+This is a dark version of the 'leuven' theme.
+
++++
+** New mode 'erts-mode'.
+This mode is used to edit files geared towards testing actions in
+Emacs buffers, like indentation and the like. The new ert function
+'ert-test-erts-file' is used to parse these files.
+
+---
+** New major mode 'js-json-mode'.
+This is a lightweight variant of 'js-mode' that is used by default
+when visiting JSON files.
+
++++
+** New major mode 'csharp-mode'.
+A major mode based on CC Mode for editing programs in the C# language.
+This mode is auto-enabled for files with the ".cs" extension.
+
++++
+** New major modes based on the tree-sitter library.
+These new major modes are available if Emacs was built with the
+tree-sitter library. They provide support for font-locking,
+indentation, and navigation by defuns based on parsing the buffer text
+by a tree-sitter parser. Some major modes also offer support for
+Imenu and 'which-func'.
+
+The new modes based on tree-sitter are for now entirely optional, and
+you must turn them on manually, or load them in your init file, or
+customize 'auto-mode-alist' to turn them on automatically for certain
+files. You can also customize 'major-mode-remap-alist' to
+automatically turn on some tree-sitter based modes for the same files
+for which a "built-in" mode would be turned on. For example:
+
+ (add-to-list 'major-mode-remap-alist '(ruby-mode . ruby-ts-mode))
+
+If you try these modes and don't like them, you can go back to the
+"built-in" modes by restarting Emacs. (If you use desktop.el to save
+and restore Emacs sessions, make sure no buffer under these modes is
+recorded in the desktop file, before restarting.) But please tell us
+why you didn't like the tree-sitter based modes, so that we could try
+improving them.
+
+Each major mode based on tree-sitter needs a language grammar library,
+usually named "libtree-sitter-LANG.so" ("libtree-sitter-LANG.dll" on
+MS-Windows), where LANG is the corresponding language name. Emacs
+looks for these libraries in the following places:
+
+ . in the directories mentioned in the list 'treesit-extra-load-path'
+ . in the "tree-sitter" subdirectory of your 'user-emacs-directory'
+ (by default, "~/.emacs.d/tree-sitter")
+ . in the standard system directories where other shared libraries are
+ usually installed
+
+We recommend to install these libraries in one of the standard system
+locations (the last place in the above list).
+
+If a language grammar library required by a mode is not found in any
+of the above places, the mode will display a warning when you try to
+turn it on.
+
++++
+*** New major mode 'typescript-ts-mode'.
+A major mode based on the tree-sitter library for editing programs
+in the TypeScript language.
+
++++
+*** New major mode 'tsx-ts-mode'.
+A major mode based on the tree-sitter library for editing programs
+in the TypeScript language, with support for TSX.
+
++++
+*** New major mode 'c-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the C language.
+
++++
+*** New major mode 'c++-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the C++ language.
+
++++
+*** New command 'c-or-c++-ts-mode'.
+A command that automatically guesses the language of a header file,
+and enables either 'c-ts-mode' or 'c++-ts-mode' accordingly.
+
++++
+*** New major mode 'java-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the Java language.
+
++++
+*** New major mode 'python-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the Python language.
+
++++
+*** New major mode 'css-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+CSS (Cascading Style Sheets).
+
++++
+*** New major mode 'json-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the JSON language.
+
++++
+*** New major mode 'csharp-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the C# language.
+
++++
+*** New major mode 'bash-ts-mode'.
+Am optional major mode based on the tree-sitter library for editing
+Bash shell scripts.
+
++++
+*** New major mode 'dockerfile-ts-mode'.
+A major mode based on the tree-sitter library for editing
+Dockerfiles.
+
++++
+*** New major mode 'cmake-ts-mode'.
+A major mode based on the tree-sitter library for editing CMake files.
+
++++
+*** New major mode 'toml-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+files written in TOML, a format for writing configuration files.
+
++++
+*** New major mode 'go-ts-mode'.
+A major mode based on the tree-sitter library for editing programs in
+the Go language.
+
++++
+*** New major mode 'go-mod-ts-mode'.
+A major mode based on the tree-sitter library for editing "go.mod"
+files.
+
++++
+*** New major mode 'yaml-ts-mode'.
+A major mode based on the tree-sitter library for editing files
+written in YAML.
+
++++
+*** New major mode 'rust-ts-mode'.
+A major mode based on the tree-sitter library for editing programs in
+the Rust language.
+
+---
+*** New major mode 'ruby-ts-mode'.
+An optional major mode based on the tree-sitter library for editing
+programs in the Ruby language.
+
+
+* Incompatible Lisp Changes in Emacs 29.1
+
++++
+** The implementation of overlays has changed.
+Emacs now uses an implementation of overlays that is much more
+efficient than the original one, and should speed up all the
+operations that involve overlays, especially when there are lots of
+them in a buffer.
+
+As result of this, some minor incompatibilities in behavior could be
+observed, as described below. Except those minor incompatibilities,
+no other changes in behavior of overlays should be visible on the Lisp
+or user level, with the exception of better performance and the order
+of overlays returned by functions that don't promise any particular
+order.
+
+---
+*** The function 'overlay-recenter' is now a no-op.
+This function does nothing, and in particular has no effect on the
+value returned by 'overlay-lists'. The purpose of 'overlay-recenter'
+was to allow more efficient lookup of overlays around a certain buffer
+position; however with the new implementation the lookup of overlays
+is efficient regardless of their position, and there's no longer any
+need to "optimize" the lookup, nor any notion of a "center" of the
+overlays.
+
+---
+*** The function 'overlay-lists' returns one unified list of overlays.
+This function used to return a cons of two lists, one with overlays
+before the "center" position, the other after that "center". It now
+returns a list whose 'car' is the list of all the buffer overlays, and
+whose 'cdr' is always nil.
+
++++
+** 'format-prompt' now uses 'substitute-command-keys'.
+This means that both the prompt and 'minibuffer-default-prompt-format'
+will have key definitions and single quotes handled specially.
+
++++
+** New function 'substitute-quotes'.
+This function works like 'substitute-command-keys' but only
+substitutes quote characters.
+
+---
+** 'find-image' now uses 'create-image'.
+This means that images found through 'find-image' also have
+auto-scaling applied. (This only makes a difference on HiDPI
+displays.)
+
++++
+** Changes in how "raw" in-memory XBM images are specified.
+Some years back Emacs gained the ability to scale images, and you
+could then specify ':width' and ':height' when using 'create-image' on all
+image types -- except XBM images, because this format already used the
+':width' and ':height' arguments to specify the width/height of the "raw"
+in-memory format. This meant that if you used these specifications
+on, for instance, XBM files, Emacs would refuse to display them. This
+has been changed, and ':width'/':height' now works as with all other image
+formats, and the way to specify the width/height of the "raw"
+in-memory format is now by using ':data-width' and ':data-height'.
+
++++
+** "loaddefs.el" generation has been reimplemented.
+The various "loaddefs.el" files in the Emacs tree (which contain
+information about autoloads, built-in packages and package prefixes)
+used to be generated by functions in autoloads.el. These are now
+generated by loaddefs-gen.el instead. This leads to functionally
+equivalent "loaddefs.el" files, but they do not use exactly the same
+syntax, so using 'M-x update-file-autoloads' no longer works. (This
+didn't work well in most files in the past, either, but it will now
+signal an error in any file.)
+
+In addition, files are scanned in a slightly different way.
+Previously, ';;;###' specs inside a top-level form (i.e., something
+like '(when ... ;;;### ...)' would be ignored. They are now parsed as
+usual.
+
+---
+** Themes have special autoload cookies.
+All built-in themes are scraped for ';;;###theme-autoload' cookies
+that are loaded along with the regular auto-loaded code.
+
++++
+** 'buffer-modified-p' has been extended.
+This function was previously documented to return only nil or t. This
+has been changed to nil/'autosaved'/non-nil. The new 'autosaved'
+value means that the buffer is modified, but that it hasn't been
+modified since the time of last auto-save.
+
+---
+** 'with-silent-modifications' also restores buffer autosave status.
+'with-silent-modifications' is a macro meant to be used by the font
+locking machinery to allow applying text properties without changing
+the modification status of the buffer. However, it didn't restore the
+buffer autosave status, so applying font locking to a modified buffer
+that had already been auto-saved would trigger another auto-saving.
+This is no longer the case.
+
+---
+** 'prin1' doesn't always escape "." and "?" in symbols any more.
+Previously, symbols like 'foo.bar' would be printed by 'prin1' as
+"foo\.bar". This now prints as "foo.bar" instead. The Emacs Lisp
+reader interprets these strings as referring to the same symbol, so
+this is virtually always backwards-compatible, but there may
+theoretically be code out there that expects a specific printed
+representation.
+
+The same is the case with the "?" character: The 'foo?' symbol is now
+printed as "foo?" instead of "foo\?".
+
+If the "." and "?" characters are the first character in the symbol,
+they will still be escaped, so the '.foo' symbol is still printed as
+"\.foo" and the '?bar' symbol is still printed as "\?bar".
+
++++
+** Remapping 'mode-line' face no longer works as expected.
+'mode-line' is now the parent face of the new 'mode-line-active' face,
+and remapping parent of basic faces does not work reliably.
+Instead of remapping 'mode-line', you have to remap 'mode-line-active'.
+
++++
+** 'make-process' has been extended to support ptys when ':stderr' is set.
+Previously, setting ':stderr' to a non-nil value would force the
+process's connection to use pipes. Now, Emacs will use a pty for
+stdin and stdout if requested no matter the value of ':stderr'.
+
+---
+** User option 'mail-source-ignore-errors' is now obsolete.
+The whole mechanism for prompting users to continue in case of
+mail-source errors has been removed, so this option is no longer
+needed.
+
+** Fonts
+
+---
+*** Emacs now supports 'medium' fonts.
+Emacs previously didn't distinguish between the 'regular'/'normal'
+weight and the 'medium' weight, but it now also supports the (heavier)
+'medium' weight. However, this means that if you specify a weight of
+'normal' and the font doesn't have this weight, Emacs won't find the
+font spec. In these cases, replacing ":weight 'normal" with ":weight
+'medium" should fix the issue.
+
+---
+** Keymap descriptions by Help commands have changed.
+'help--describe-command', 'C-h b' and associated functions that output
+keymap descriptions have changed. In particular, prefix commands are
+not output at all, and instead of "??" for closures/functions, these
+functions output "[closure]"/"[lambda]". You can get back the old
+behavior of including prefix commands by customizing the new option
+'describe-bindings-show-prefix-commands' to a non-nil value.
+
+---
+** 'downcase' details have changed slightly.
+In certain locales, changing the case of an ASCII-range character may
+turn it into a multibyte character, most notably with "I" in Turkish
+(the lowercase is "ı", 0x0131). Previously, 'downcase' on a unibyte
+string was buggy, and would mistakenly just return the lower byte of
+this, 0x31 (the digit "1"). 'downcase' on a unibyte string has now
+been changed to downcase such characters as if they were ASCII. To
+get proper locale-dependent downcasing, the string has to be converted
+to multibyte first. (This goes for the other case-changing functions,
+too.)
+
+---
+** Functions in 'tramp-foreign-file-name-handler-alist' have changed.
+Functions to determine which Tramp file name handler to use are now
+passed a file name in dissected form (via 'tramp-dissect-file-name')
+instead of in string form.
+
+---
+** 'def' indentation changes.
+In 'emacs-lisp-mode', forms with a symbol with a name that start with
+"def" have been automatically indented as if they were 'defun'-like
+forms, for instance:
+
+ (defzot 1
+ 2 3)
+
+This heuristic has now been removed, and all functions/macros that
+want to be indented this way have to be marked with
+
+ (declare (indent defun))
+
+or the like. If the function/macro definition itself can't be
+changed, the indentation can also be adjusted by saying something
+like:
+
+ (put 'defzot 'lisp-indent-function 'defun)
+
+---
+** The 'inhibit-changing-match-data' variable is now obsolete.
+Instead, functions like 'string-match' and 'looking-at' now take an
+optional INHIBIT-MODIFY argument.
+
+---
+** 'gnus-define-keys' is now obsolete.
+Use 'define-keymap' instead.
+
+---
+** MozRepl has been removed from js.el.
+MozRepl was removed from Firefox in 2017, so this code doesn't work
+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'.
+
+---
+** 'compilation-last-buffer' is (finally) declared obsolete.
+It has been obsolete since Emacs 22.1, actually.
+
+---
+** Calling 'lsh' now elicits a byte-compiler warning.
+'lsh' behaves in somewhat surprising and platform-dependent ways for
+negative arguments, and is generally slower than 'ash', which should be
+used instead. This warning can be suppressed by surrounding calls to
+'lsh' with the construct '(with-suppressed-warnings ((suspicious lsh)) ...)',
+but switching to 'ash' is generally much preferable.
+
+---
+** Some functions and variables obsolete since Emacs 24 have been removed:
+'Buffer-menu-buffer+size-width', 'Electric-buffer-menu-mode',
+'Info-edit-map', 'allout-abbreviate-flattened-numbering',
+'allout-exposure-change-hook', 'allout-mode-deactivate-hook',
+'allout-structure-added-hook', 'allout-structure-deleted-hook',
+'allout-structure-shifted-hook', 'ansi-color-unfontify-region',
+'archive-extract-hooks', 'auth-source-forget-user-or-password',
+'auth-source-hide-passwords', 'auth-source-user-or-password',
+'automatic-hscrolling', 'automount-dir-prefix', 'bibtex-complete',
+'bibtex-entry-field-alist', 'buffer-has-markers-at',
+'buffer-substring-filters', 'byte-compile-disable-print-circle',
+'c-prepare-bug-report-hooks', 'cfengine-mode-abbrevs',
+'change-log-acknowledgement', 'chart-map',
+'checkdoc-comment-style-hooks', 'comint--unquote&expand-filename',
+'comint-dynamic-complete', 'comint-dynamic-complete-as-filename',
+'comint-dynamic-simple-complete', 'comint-unquote-filename',
+'command-history-map', 'compilation-parse-errors-function',
+'completion-annotate-function', 'condition-case-no-debug',
+'count-lines-region', 'crisp-mode-modeline-string',
+'custom-print-functions', 'cvs-string-prefix-p', 'data-debug-map',
+'deferred-action-function', 'deferred-action-list',
+'dired-pop-to-buffer', 'dired-shrink-to-fit',
+'dired-sort-set-modeline', 'dired-x-submit-report',
+'display-buffer-function',
+'ediff-choose-window-setup-function-automatically',
+'eieio-defgeneric', 'eieio-defmethod', 'emacs-lock-from-exiting',
+'erc-complete-word', 'erc-dcc-chat-filter-hook',
+'eshell-add-to-window-buffer-names', 'eshell-cmpl-suffix-list',
+'eshell-for', 'eshell-remove-from-window-buffer-names',
+'eshell-status-in-modeline', 'filesets-cache-fill-content-hooks',
+'font-list-limit', 'font-lock-maximum-size',
+'font-lock-reference-face', 'gnus-carpal',
+'gnus-debug-exclude-variables', 'gnus-debug-files',
+'gnus-local-domain', 'gnus-outgoing-message-group',
+'gnus-registry-user-format-function-M', 'gnus-secondary-servers',
+'gnus-subscribe-newsgroup-hooks', 'gud-inhibit-global-bindings',
+'hangul-input-method-inactivate', 'hfy-post-html-hooks',
+'image-extension-data', 'image-library-alist',
+'inactivate-current-input-method-function', 'inactivate-input-method',
+'inhibit-first-line-modes-regexps',
+'inhibit-first-line-modes-suffixes', 'input-method-inactivate-hook',
+'intdos', 'javascript-generic-mode', 'javascript-generic-mode-hook',
+'latex-string-prefix-p', 'macro-declaration-function' (function),
+'macro-declaration-function' (variable), 'mail-complete',
+'mail-complete-function', 'mail-mailer-swallows-blank-line',
+'mail-sent-via', 'make-register', 'makefile-complete',
+'menu-bar-kill-ring-save', 'meta-complete-symbol', 'meta-mode-map',
+'mh-kill-folder-suppress-prompt-hooks',
+'minibuffer-completing-symbol',
+'minibuffer-local-filename-must-match-map', 'mode25', 'mode4350',
+'mpc-string-prefix-p', 'msb-after-load-hooks',
+'nndiary-request-accept-article-hooks',
+'nndiary-request-create-group-hooks',
+'nndiary-request-update-info-hooks', 'nnimap-split-rule',
+'nntp-authinfo-file', 'ns-alternatives-map',
+'ns-store-cut-buffer-internal', 'package-menu-view-commentary',
+'pascal-last-completions', 'pascal-show-completions',
+'pascal-toggle-completions', 'pcomplete-arg-quote-list',
+'pcomplete-quote-argument', 'prolog-char-quote-workaround',
+'python-buffer', 'python-guess-indent', 'python-indent',
+'python-info-ppss-comment-or-string-p', 'python-info-ppss-context',
+'python-info-ppss-context-type', 'python-preoutput-result',
+'python-proc', 'python-send-receive', 'python-send-string',
+'python-use-skeletons', 'quail-inactivate', 'quail-inactivate-hook',
+'query-replace-interactive', 'rcirc-activity-hooks',
+'rcirc-print-hooks', 'rcirc-receive-message-hooks',
+'rcirc-sentinel-hooks', 'read-filename-at-point', 'redraw-modeline',
+'reftex-index-map', 'reftex-index-phrases-map',
+'reftex-select-bib-map', 'reftex-select-label-map', 'reftex-toc-map',
+'register-name-alist', 'register-value', 'report-emacs-bug-info',
+'report-emacs-bug-pretest-address',
+'rmail-default-dont-reply-to-names', 'rmail-dont-reply-to',
+'rmail-dont-reply-to-names', 'robin-inactivate',
+'robin-inactivate-hook', 'rst-block-face', 'rst-comment-face',
+'rst-definition-face', 'rst-directive-face', 'rst-emphasis1-face',
+'rst-emphasis2-face', 'rst-external-face', 'rst-literal-face',
+'rst-reference-face', 'semantic-change-hooks',
+'semantic-edits-delete-change-hooks',
+'semantic-edits-new-change-hooks',
+'semantic-edits-reparse-change-hooks', 'semantic-grammar-map',
+'semantic-grammar-syntax-table', 'semantic-lex-reset-hooks',
+'semanticdb-elisp-sym-function-arglist',
+'semanticdb-save-database-hooks', 'set-face-underline-p',
+'set-register-value', 'sh-maybe-here-document', 'speedbar-key-map',
+'speedbar-syntax-table', 'starttls-any-program-available',
+'strokes-modeline-string', 'strokes-report-bug',
+'term-default-bg-color', 'term-default-fg-color',
+'tex-string-prefix-p', 'timeclock-modeline-display',
+'timeclock-modeline-display', 'timeclock-update-modeline',
+'toggle-emacs-lock', 'tooltip-use-echo-area', 'turn-on-cwarn-mode',
+'turn-on-iimage-mode', 'ucs-input-inactivate', 'ucs-insert',
+'url-recreate-url-attributes', 'user-variable-p',
+'vc-string-prefix-p', 'vc-toggle-read-only', 'view-return-to-alist',
+'view-return-to-alist-update', 'w32-default-color-map' (function),
+'which-func-mode' (function), 'window-system-version',
+'winner-mode-leave-hook', 'x-cut-buffer-or-selection-value'.
+
+---
+** Some functions and variables obsolete since Emacs 23 have been removed:
+'find-emacs-lisp-shadows', 'newsticker-cache-filename',
+'process-filter-multibyte-p', 'redisplay-end-trigger-functions',
+'set-process-filter-multibyte', 'set-window-redisplay-end-trigger',
+'unify-8859-on-decoding-mode', 'unify-8859-on-encoding-mode',
+'vc-arch-command', 'window-redisplay-end-trigger', 'x-selection'.
+
+---
+** Some functions and variables obsolete since Emacs 21 or 22 have been removed:
+'c-toggle-auto-state', 'find-file-not-found-hooks',
+'ls-lisp-dired-ignore-case', 'query-replace-regexp-eval'.
+
++++
+** New generic function 'function-documentation'.
+It can dynamically generate a raw docstring depending on the type of a
+function. Used mainly for docstrings of OClosures.
+
++++
+** Base64 encoding no longer tolerates latin-1 input.
+The functions 'base64-encode-string', 'base64url-encode-string',
+'base64-encode-region' and 'base64url-encode-region' no longer accept
+characters in the range U+0080..U+00FF as substitutes for single bytes
+in the range 128..255, but signal an error for all multibyte characters.
+The input must be unibyte encoded text.
+
++++
+** The 'clone-indirect-buffer-hook' is now run by 'make-indirect-buffer'.
+It was previously only run by 'clone-indirect-buffer' and
+'clone-indirect-buffer-other-window'. Since 'make-indirect-buffer' is
+called by both of these, the hook is now run by all 3 of these
+functions.
+
+---
+** '?\' at the end of a line now signals an error.
+Previously, it produced a nonsense value, -1, that was never intended.
+
+---
+** Some libraries obsolete since Emacs 24.1 and 24.3 have been removed:
+abbrevlist.el, assoc.el, complete.el, cust-print.el,
+erc-hecomplete.el, mailpost.el, mouse-sel.el, old-emacs-lock.el,
+patcomp.el, pc-mode.el, pc-select.el, s-region.el, and sregex.el.
+
++++
+** Many seldom-used generalized variables have been made obsolete.
+Emacs has a number of rather obscure generalized variables defined,
+that, for instance, allowed you to say things like:
+
+ (setf (point-min) 4)
+
+These never caught on and have been made obsolete. The form above,
+for instance, is the same as saying
+
+ (narrow-to-region 4 (point-max))
+
+The following generalized variables have been made obsolete:
+'buffer-file-name', 'buffer-local-value', 'buffer-modified-p',
+'buffer-name', 'buffer-string', 'buffer-substring', 'current-buffer',
+'current-column', 'current-global-map', 'current-input-mode',
+'current-local-map', 'current-window-configuration',
+'default-file-modes', 'documentation-property', 'eq', 'frame-height',
+'frame-width', 'frame-visible-p', 'global-key-binding',
+'local-key-binding', 'mark', 'mark-marker', 'marker-position',
+'mouse-position', 'point', 'point-marker', 'point-max', 'point-min',
+'read-mouse-position', 'screen-height', 'screen-width',
+'selected-frame', 'selected-screen', 'selected-window',
+'standard-case-table', 'syntax-table', 'visited-file-modtime',
+'window-height', 'window-width', and 'x-get-secondary-selection'.
+
+
+* Lisp Changes in Emacs 29.1
+
++++
+** Interpreted closures are "safe for space".
+As was already the case for byte-compiled closures, instead of capturing
+the whole current lexical environment, interpreted closures now only
+capture the part of the environment that they need.
+The previous behavior could occasionally lead to memory leaks or
+to problems where a printed closure would not be 'read'able because
+of an un'read'able value in an unrelated lexical variable.
+
++++
+** New accessor function 'file-attribute-file-identifier'.
+It returns the list of the inode number and device identifier
+retrieved by 'file-attributes'. This value can be used to identify a
+file uniquely. The device identifier can be a single number or (for
+remote files) a cons of 2 numbers.
+
++++
+** New macro 'while-let'.
+This is like 'when-let', but repeats until a binding form is nil.
+
++++
+** New function 'make-obsolete-generalized-variable'.
+This can be used to mark setters used by 'setf' as obsolete, and the
+byte-compiler will then warn about using them.
+
++++
+** New functions 'pos-eol' and 'pos-bol'.
+These are like 'line-end-position' and 'line-beginning-position'
+(respectively), but ignore fields (and are more efficient).
+
++++
+** New function 'compiled-function-p'.
+This returns non-nil if its argument is either a built-in, or a
+byte-compiled, or a natively-compiled function object, or a function
+loaded from a dynamic module.
+
+---
+** 'deactivate-mark' can have new value 'dont-save'.
+This value means that Emacs should deactivate the mark as usual, but
+without setting the primary selection, if 'select-active-regions' is
+enabled.
+
++++
+** New 'declare' form 'interactive-args'.
+This can be used to specify what forms to put into 'command-history'
+when executing commands interactively.
+
++++
+** The FORM argument of 'time-convert' is mandatory.
+'time-convert' can still be called without it, as before, but the
+compiler now emits a warning about this deprecated usage.
+
++++
+** Emacs now supports user-customizable and themable icons.
+These can be used for buttons in buffers and the like. See the
+"(elisp) Icons" and "(emacs) Icons" nodes in the manuals for details.
+
++++
+** New arguments MESSAGE and TIMEOUT of 'set-transient-map'.
+MESSAGE specifies a message to display after activating the transient
+map, including a special formatting spec to list available keys.
+TIMEOUT is the idle time after which to deactivate the transient map.
+The default timeout value can be defined by the new variable
+'set-transient-map-timeout'.
+
++++
+** New forms 'with-restriction' and 'without-restriction'.
+These forms can be used as enhanced alternatives to the
+'save-restriction' form combined with, respectively,
+'narrow-to-region' and 'widen'. They also accept an optional label
+argument, with which labeled narrowings can be created and lifted.
+See the "(elisp) Narrowing" node for details.
+
+** Connection Local Variables
+
++++
+*** Some connection-local variables are now user options.
+The variables 'connection-local-profile-alist' and
+'connection-local-criteria-alist' are now user options, in order to
+make it more convenient to inspect and modify them.
+
++++
+*** New function 'connection-local-update-profile-variables'.
+This function allows to modify the settings of an existing
+connection-local profile.
+
++++
+*** New macro 'with-connection-local-application-variables'.
+This macro works like 'with-connection-local-variables', but it allows
+to use another application but 'tramp'. This is useful when running
+code in a buffer where Tramp has already set some connection-local
+variables.
+
++++
+*** New macro 'setq-connection-local'.
+This allows dynamically setting variable values for a particular
+connection within the body of 'with-connection-local-{application-}variables'.
+See the "(elisp) Connection Local Variables" node in the Lisp
+Reference manual for more information.
+
++++
+** 'plist-get', 'plist-put' and 'plist-member' are no longer limited to 'eq'.
+These function now take an optional comparison PREDICATE argument.
+
++++
+** 'read-multiple-choice' can now use long-form answers.
+
++++
+** 'M-s c' in 'read-regexp' now toggles case folding.
+
++++
+** 'completing-read' now allows a function as its REQUIRE-MATCH argument.
+This function is called to see whether what the user has typed is a
+match. This is also available from functions that call
+'completing-read', like 'read-file-name'.
+
++++
+** 'posn-col-row' can now give position data based on windows.
+Previously, it reported data only based on the frame.
+
++++
+** 'file-expand-wildcards' can now also take a regexp as PATTERN argument.
+
+---
+** vc-mtn (the VC backend for Monotone) has been made obsolete.
+
++++
+** 'gui-set-selection' can specify different values for different data types.
+If DATA is a string, then its text properties are searched for values
+for each specific data type while the selection is being converted.
+
+---
+** New eldoc function 'elisp-eldoc-var-docstring-with-value'.
+This function includes the current value of the variable in eldoc display
+and can be used as a more detailed alternative to 'elisp-eldoc-var-docstring'.
+
++++
+** 'save-some-buffers' can now be extended to save other things.
+Traditionally, 'save-some-buffers' saved buffers, and also saved
+abbrevs. This has been generalized via the
+'save-some-buffers-functions' variable, and packages can now register
+things to be saved.
+
++++
+** New function 'string-equal-ignore-case'.
+This compares strings ignoring case differences.
+
++++
+** 'symbol-file' can now report natively-compiled ".eln" files.
+If Emacs was built with native-compilation enabled, Lisp programs can
+now call 'symbol-file' with the new optional 3rd argument non-nil to
+request the name of the ".eln" file which defined a given symbol.
+
++++
+** New macro 'with-memoization' provides a very primitive form of memoization.
+
++++
+** 'max-char' can now report the maximum codepoint according to Unicode.
+When called with a new optional argument UNICODE non-nil, 'max-char'
+will now report the maximum valid codepoint defined by the Unicode
+Standard.
+
+** Seq
+
++++
+*** New function 'seq-split'.
+This returns a list of sub-sequences of the specified sequence.
+
++++
+*** New function 'seq-remove-at-position'.
+This function returns a copy of the specified sequence where the
+element at a given (zero-based) index got removed.
+
++++
+*** New function 'seq-positions'.
+This returns a list of the (zero-based) indices of elements matching a
+given predicate in the specified sequence.
+
++++
+*** New function 'seq-keep'.
+This is like 'seq-map', but removes all nil results from the returned
+list.
+
+** Themes
+
+---
+*** New hooks 'enable-theme-functions' and 'disable-theme-functions'.
+These are run after enabling and disabling a theme, respectively.
+
+---
+*** Themes can now be made obsolete.
+Using 'make-obsolete' on a theme is now supported. This will make
+'load-theme' issue a warning when loading the theme.
+
++++
+** New hook 'display-monitors-changed-functions'.
+It is called whenever the configuration of different monitors on a
+display changes.
+
++++
+** 'prin1' and 'prin1-to-string' now take an optional OVERRIDES argument.
+This argument can be used to override values of print-related settings.
+
++++
+** New minor mode 'header-line-indent-mode'.
+This is meant to be used by Lisp programs that show a header line
+which should be kept aligned with the buffer contents when the user
+switches 'display-line-numbers-mode' on or off, and when the width of
+line-number display changes. See the "(elisp) Header Lines" node in
+the Emacs Lisp Reference manual for more information.
+
++++
+** New global minor mode 'lost-selection-mode'.
+This global minor mode makes Emacs deactivate the mark in all buffers
+when the primary selection is obtained by another program.
+
+---
+** On X, Emacs will try to preserve selection ownership when a frame is deleted.
+This means that if you make Emacs the owner of a selection, such as by
+selecting some text into the clipboard or primary selection, and then
+delete the current frame, you will still be able to insert the
+contents of that selection into other programs as long as another
+frame is open on the same display. This behavior can be disabled by
+setting the user option 'x-auto-preserve-selections' to nil.
+
++++
+** New predicate 'char-uppercase-p'.
+This returns non-nil if its argument its an uppercase character.
+
+** Byte Compilation
+
+---
+*** Byte compilation will now warn about some quoting mistakes in docstrings.
+When writing code snippets that contains the "'" character (APOSTROPHE),
+that quote character has to be escaped to avoid Emacs displaying it as
+"’" (LEFT SINGLE QUOTATION MARK), which would make code examples like
+
+ (setq foo '(1 2 3))
+
+invalid. Emacs will now warn during byte compilation if it seems
+something like that, and also warn about when using RIGHT/LEFT SINGLE
+QUOTATION MARK directly. In both these cases, if these characters
+should really be present in the docstring, they should be quoted with
+"\=".
+
+---
+*** Byte compilation will now warn about some malformed 'defcustom' types.
+It is very common to write 'defcustom' types on the form:
+
+ :type '(choice (const :tag "foo" 'bar))
+
+I.e., double-quoting the 'bar', which is almost never the correct
+value. The byte compiler will now issue a warning if it encounters
+these forms.
+
++++
+** 'restore-buffer-modified-p' can now alter buffer auto-save state.
+With a FLAG value of 'autosaved', it will mark the buffer as having
+been auto-saved since the time of last modification.
+
+---
+** New minor mode 'isearch-fold-quotes-mode'.
+This sets up 'search-default-mode' so that quote characters are
+char-folded into each other. It is used, by default, in "*Help*" and
+"*info*" buffers.
+
++++
+** New macro 'buffer-local-set-state'.
+This is a helper macro to be used by minor modes that wish to restore
+buffer-local variables back to their original states when the mode is
+switched off.
+
+---
+** New macro 'with-buffer-unmodified-if-unchanged'.
+If the buffer is marked as unmodified, and code does modifications
+that, in total, means that the buffer is identical to the buffer
+before, mark the buffer as unmodified again.
+
+---
+** New function 'malloc-trim'.
+This function allows returning unused memory back to the operating
+system, and is mainly meant as a debugging tool. It is currently
+available only when Emacs was built with glibc as the C library.
+
+---
+** 'x-show-tip' no longer hard-codes a timeout default.
+The new variable 'x-show-tooltip-timeout' allows the user to alter
+this for packages that don't use 'tooltip-show', but instead call the
+lower level function directly.
+
+---
+** New function 'current-cpu-time'.
+It gives access to the CPU time used by the Emacs process, for
+example for benchmarking purposes.
+
+---
+** New function 'string-edit'.
+This is meant to be used when the user has to edit a (potentially)
+long string. It pops up a new buffer where you can edit the string,
+and a callback is called when the user types 'C-c C-c'.
+
++++
+** New function 'read-string-from-buffer'.
+This is a modal version of 'string-edit', and can be used as an
+alternative to 'read-string'.
+
++++
+** The return value of 'clear-message-function' is not ignored anymore.
+If the function returns 'dont-clear-message', then the message is not
+cleared, with the assumption that the function cleared it itself.
+
++++
+** The local variables section now supports defining fallback modes.
+This was previously only available when using a property line (i.e.,
+putting the modes on the first line of a file).
+
++++
+** New function 'flush-standard-output'.
+This enables display of lines that don't end in a newline from
+batch-based Emacs scripts.
+
++++
+** New convenience function 'buttonize-region'.
+This works like 'buttonize', but for a region instead of a string.
+
++++
+** 'macroexp-let2*' can omit TEST argument and use single-var bindings.
+
++++
+** New macro-writing macros, 'cl-with-gensyms' and 'cl-once-only'.
+See the "(cl) Macro-Writing Macros" manual section for descriptions.
+
++++
+** New variable 'last-event-device' and new function 'device-class'.
+On X Windows, 'last-event-device' specifies the input extension device
+from which the last input event originated, and 'device-class' can be
+used to determine the type of an input device.
+
++++
+** Variable 'track-mouse' can have a new value 'drag-source'.
+This means the same as 'dropping', but modifies the mouse position
+list in reported motion events if there is no frame underneath the
+mouse pointer.
+
++++
+** New functions for dragging items from Emacs to other programs.
+The new functions 'x-begin-drag', 'dnd-begin-file-drag',
+'dnd-begin-drag-files', and 'dnd-direct-save' allow dragging contents
+(such as files and text) from Emacs to other programs.
+
+---
+** New function 'ietf-drums-parse-date-string'.
+This function parses RFC5322 (and RFC822) date strings, and should be
+used instead of 'parse-time-string' when parsing data that's standards
+compliant.
+
++++
+** New macro 'setopt'.
+This is like 'setq', but is meant to be used for user options instead
+of plain variables, and uses 'custom-set'/'set-default' to set them.
+
++++
+** New utility predicate 'mode-line-window-selected-p'.
+This is meant to be used from ':eval' mode line constructs to create
+different mode line looks for selected and unselected windows.
+
++++
+** New variable 'messages-buffer-name'.
+This variable (defaulting to "*Messages*") allows packages to override
+where messages are logged.
+
++++
+** New function 'readablep'.
+This function says whether an object can be written out and then
+read back by the Emacs Lisp reader.
+
++++
+** New variable 'print-unreadable-function'.
+This variable allows changing how Emacs prints unreadable objects.
+
+---
+** The user option 'polling-period' now accepts floating point values.
+This means Emacs can now poll for input during Lisp execution more
+frequently than once in a second.
+
+---
+** New function 'bidi-string-strip-control-characters'.
+This utility function is meant for displaying strings when it is
+essential that there's no bidirectional context. It removes all the
+bidirectional formatting control characters (such as RLM, LRO, PDF,
+etc.) from its argument string. The characters it removes are listed
+in the value of 'bidi-control-characters'.
+
+---
+** The Gnus range functions have been moved to a new library, range.el.
+All the old names have been made obsolete.
+
++++
+** New function 'function-alias-p'.
+This predicate says whether an object is a function alias, and if it
+is, the alias chain is returned.
+
++++
+** New variable 'lisp-directory' holds the directory of Emacs's own Lisp files.
+
++++
+** New facility for handling session state: 'multisession-value'.
+This can be used as a convenient way to store (simple) application
+state, and the command 'list-multisession-values' allows users to list
+(and edit) this data.
+
++++
+** New function 'get-display-property'.
+This is like 'get-text-property', but works on the 'display' text
+property.
+
++++
+** New function 'add-display-text-property'.
+This is like 'put-text-property', but works on the 'display' text
+property.
+
++++
+** New 'min-width' 'display' property.
+This allows setting a minimum display width for a region of text.
+
++++
+** New 'cursor-face' text property.
+This uses 'cursor-face' instead of the default face when cursor is on or
+near the character and 'cursor-face-highlight-mode' is enabled. The
+user option 'cursor-face-highlight-nonselected-window' is similar to
+'highlight-nonselected-windows', but for this property.
+
++++
+** New event type 'touch-end'.
+This event is sent whenever the user's finger moves off the mouse
+wheel on some mice, or when the user's finger moves off the touchpad.
+
++++
+** New event type 'pinch'.
+This event is sent when a user performs a pinch gesture on a touchpad,
+which is comprised of placing two fingers on the touchpad and moving
+them towards or away from each other.
+
++++
+** New hook 'x-pre-popup-menu-hook'.
+This hook, run before 'x-popup-menu', is about to display a
+deck-of-cards menu on screen.
+
+---
+** New hook 'post-select-region-hook'.
+This hook is run immediately after 'select-active-regions'. It causes
+the region to be set as the primary selection.
+
++++
+** New function 'buffer-match-p'.
+Check if a buffer satisfies some condition. Some examples for
+conditions can be regular expressions that match a buffer name, a
+cons-cell like '(major-mode . shell-mode)' that matches any buffer
+where 'major-mode' is 'shell-mode' or a combination with a condition
+like '(and "\\`\\*.+\\*\\'" (major-mode . special-mode))'.
+
++++
+** New function 'match-buffers'.
+It uses 'buffer-match-p' to gather a list of buffers that match a
+condition.
+
+---
+** New optional arguments TEXT-FACE and DEFAULT-FACE for 'tooltip-show'.
+They allow changing the faces used for the tooltip text and frame
+colors of the resulting tooltip frame from the default 'tooltip' face.
+
+** Text Security and Suspiciousness
+
++++
+*** New library textsec.el.
+This library contains a number of checks for whether a string is
+"suspicious". This usually means that the string contains characters
+that have glyphs that can be confused with other, more commonly used
+glyphs, or contains bidirectional (or other) formatting characters
+that may be used to confuse a user.
+
++++
+*** New user option 'textsec-check'.
+If non-nil (which is the default), Emacs packages that are vulnerable
+to attackers trying to confuse the users will use the textsec library
+to mark suspicious text. For instance shr/eww will mark suspicious
+URLs and links, Gnus will mark suspicious From addresses, and
+Message mode will query the user if the user is sending mail to a
+suspicious address. If this variable is nil, these checks are
+disabled.
+
++++
+*** New function 'textsec-suspicious-p'.
+This is the main function Emacs applications should be using to check
+whether a string is suspicious. It heeds the 'textsec-check' user
+option.
+
+** Keymaps and Key Definitions
+
++++
+*** 'where-is-internal' can now filter events marked as non key events.
+If a command maps to a key binding like '[some-event]', and 'some-event'
+has a symbol plist containing a non-nil 'non-key-event' property, then
+that binding is ignored by 'where-is-internal'.
+
++++
+*** New functions for defining and manipulating keystrokes.
+These all take the syntax defined by 'key-valid-p', which is basically
+the same syntax as the one accepted by the 'kbd' macro. None of the
+older functions have been deprecated or altered, but they are now
+de-emphasized in the documentation, and we encourage Lisp programs to
+switch to these new functions.
+
++++
+*** Use 'keymap-set' instead of 'define-key'.
+
++++
+*** Use 'keymap-global-set' instead of 'global-set-key'.
+
++++
+*** Use 'keymap-local-set' instead of 'local-set-key'.
+
++++
+*** Use 'keymap-global-unset' instead of 'global-unset-key'.
+
++++
+*** Use 'keymap-local-unset' instead of 'local-unset-key'.
+
++++
+*** Use 'keymap-substitute' instead of 'substitute-key-definition'.
+
++++
+*** Use 'keymap-set-after' instead of 'define-key-after'.
+
++++
+*** Use 'keymap-lookup' instead of 'lookup-key' and 'key-binding'.
+
++++
+*** Use 'keymap-local-lookup' instead of 'local-key-binding'.
+
++++
+*** Use 'keymap-global-lookup' instead of 'global-key-binding'.
+
++++
+*** 'define-key' now takes an optional REMOVE argument.
+If non-nil, remove the definition from the keymap. This is subtly
+different from setting a definition to nil (when the keymap has a
+parent).
+
++++
+*** 'read-multiple-choice' now takes an optional SHOW-HELP argument.
+If non-nil, show the help buffer immediately, before any user input.
+
++++
+*** New function 'key-valid-p'.
+The 'kbd' function is quite permissive, and will try to return
+something usable even if the syntax of the argument isn't completely
+correct. The 'key-valid-p' predicate does a stricter check of the
+syntax.
+
+---
+*** New function 'key-parse'.
+This is like 'kbd', but only returns vectors instead of a mix of
+vectors and strings.
+
++++
+*** New ':type' for 'defcustom' for keys.
+The new 'key' type can be used for options that should be a valid key
+according to 'key-valid-p'. The type 'key-sequence' is now obsolete.
+
++++
+** New function 'define-keymap'.
+This function allows defining a number of keystrokes with one form.
+
++++
+** New macro 'defvar-keymap'.
+This macro allows defining keymap variables more conveniently.
+
+** 'defvar-keymap' can specify 'repeat-mode' behavior for the keymap.
+Use ':repeat t' to have all bindings be repeatable or for more
+advanced usage:
+
+ :repeat (:enter (commands ...) :exit (commands ...))
+
+---
+** 'kbd' can now be used in built-in, preloaded libraries.
+It no longer depends on edmacro.el and cl-lib.el.
+
++++
+** New substitution in docstrings and 'substitute-command-keys'.
+Use \\`KEYSEQ' to insert a literal key sequence "KEYSEQ" (for example
+\\`C-k') in a docstring or when calling 'substitute-command-keys',
+which will use the same face as a command substitution. This should
+be used only when a key sequence has no corresponding command, for
+example when it is read directly with 'read-key-sequence'. It must be
+a valid key sequence according to 'key-valid-p'.
+
+---
+** 'lookup-key' is more permissive when searching for extended menu items.
+In Emacs 28.1, the behavior of 'lookup-key' was changed: when looking
+for a menu item '[menu-bar Foo-Bar]', first try to find an exact
+match, then look for the lowercased '[menu-bar foo-bar]'.
+
+This has been extended, so that when looking for a menu item with a
+symbol containing spaces, as in '[menu-bar Foo\ Bar]', first look for
+an exact match, then the lowercased '[menu-bar foo\ bar]' and finally
+'[menu-bar foo-bar]'. This further improves backwards-compatibility
+when converting menus to use 'easy-menu-define'.
+
++++
+** New function 'file-name-split'.
+This returns a list of all the components of a file name.
+
++++
+** New function 'file-name-parent-directory'.
+This returns the parent directory of a file name.
+
++++
+** New macro 'with-undo-amalgamate'.
+It records a particular sequence of operations as a single undo step.
+
++++
+** New command 'yank-media'.
+This command supports yanking non-plain-text media like images and
+HTML from other applications into Emacs. It is only supported in
+modes that have registered support for it, and only on capable
+platforms.
+
++++
+** New command 'yank-media-types'.
+This command lets you examine all data in the current selection and
+the clipboard, and insert it into the buffer.
+
++++
+** New variable 'yank-transform-functions'.
+This variable allows the user to alter the string to be inserted.
+
+---
+** New command 'yank-in-context'.
+This command tries to preserve string/comment syntax when yanking.
+
+---
+** New function 'minibuffer-lazy-highlight-setup'.
+This function allows setting up the minibuffer so that lazy
+highlighting of its content is applied in the original window.
+
++++
+** New text property 'inhibit-isearch'.
+If set, 'isearch' will skip these areas, which can be useful (for
+instance) when covering huge amounts of data (that has no meaningful
+searchable data, like image data) with a 'display' text property.
+
++++
+** 'insert-image' now takes an INHIBIT-ISEARCH optional argument.
+It marks the image with the 'inhibit-isearch' text property, which
+inhibits 'isearch' matching the STRING argument.
+
+---
+** New variable 'replace-regexp-function'.
+Function to call to convert the entered FROM string to an Emacs
+regexp in 'query-replace' and similar commands. It can be used to
+implement a different regexp syntax for search/replace.
+
+---
+** New variables to customize defaults of FROM for 'query-replace*' commands.
+The new variable 'query-replace-read-from-default' can be set to a
+function that returns the default value of FROM when 'query-replace'
+prompts for a string to be replaced. An example of such a function is
+'find-tag-default'.
+
+The new variable 'query-replace-read-from-regexp-default' can be set
+to a function (such as 'find-tag-default-as-regexp') that returns the
+default value of FROM when 'query-replace-regexp' prompts for a regexp
+whose matches are to be replaced. If these variables are nil (which
+is the default), 'query-replace' and 'query-replace-regexp' take the
+default value from the previous FROM-TO pair.
+
+** Lisp pretty-printer ('pp')
+
+---
+*** New function 'pp-emacs-lisp-code'.
+'pp' formats general Lisp sexps. This function does much the same,
+but applies formatting rules appropriate for Emacs Lisp code. Note
+that this could currently be quite slow, and is thus appropriate only
+for relatively small code fragments.
+
+---
+*** New user option 'pp-use-max-width'.
+If non-nil, 'pp' and all 'pp-*' commands that format the results, will
+attempt to limit the line length when formatting long lists and
+vectors. This uses 'pp-emacs-lisp-code', and thus could be slow for
+large lists.
+
++++
+** New function 'file-has-changed-p'.
+This convenience function is useful when writing code that parses
+files at run-time, and allows Lisp programs to re-parse files only
+when they have changed.
+
++++
+** 'abbreviate-file-name' now respects magic file name handlers.
+
+---
+** New function 'font-has-char-p'.
+This can be used to check whether a specific font has a glyph for a
+character.
+
++++
+** 'window-text-pixel-size' now accepts a new argument IGNORE-LINE-AT-END.
+This controls whether or not the last screen line of the text being
+measured will be counted for the purpose of calculating the text
+dimensions.
+
++++
+** 'window-text-pixel-size' understands a new meaning of FROM.
+Specifying a cons as the FROM argument allows to start measuring text
+from a specified amount of pixels above or below a position.
+
++++
+** 'window-body-width' and 'window-body-height' can use remapped faces.
+Specifying 'remap' as the PIXELWISE argument now checks if the default
+face was remapped, and if so, uses the remapped face to determine the
+character width/height.
+
++++
+** 'set-window-vscroll' now accepts a new argument PRESERVE-VSCROLL-P.
+This means the vscroll will not be reset when set on a window that is
+"frozen" due to a mini-window being resized.
+
+** XDG Support
+
+---
+*** New function 'xdg-state-home'.
+It returns the new 'XDG_STATE_HOME' environment variable. It should
+point to a file name that "contains state data that should persist
+between (application) restarts, but that is not important or portable
+enough to the user that it should be stored in $XDG_DATA_HOME".
+(This variable was introduced in the XDG Base Directory Specification
+version 0.8 released on May 8, 2021.)
+
+---
+*** New function 'xdg-current-desktop'.
+It returns a list of strings, corresponding to the colon-separated
+list of names in the 'XDG_CURRENT_DESKTOP' environment variable, which
+identify the current desktop environment.
+(This variable was introduced in XDG Desktop Entry Specification
+version 1.2.)
+
+---
+*** New function 'xdg-session-type'.
+It returns the 'XDG_SESSION_TYPE' environment variable. (This is not
+part of any official standard; see the man page pam_systemd(8) for
+more information.)
+
++++
+** New macro 'with-delayed-message'.
+This macro is like 'progn', but will output the specified message if
+the body takes longer to execute than the specified timeout.
+
+---
+** New function 'funcall-with-delayed-message'.
+This function is like 'funcall', but will output the specified message
+if the function takes longer to execute than the specified timeout.
+
+** Locale
+
+---
+*** New variable 'current-locale-environment'.
+This holds the value of the previous call to 'set-locale-environment'.
+
+---
+*** New macro 'with-locale-environment'.
+This macro can be used to change the locale temporarily while
+executing code.
+
+** Table
+
+---
+*** New user option 'table-latex-environment'.
+This allows switching between "table" and "tabular".
+
+** Tabulated List Mode
+
++++
+*** A column can now be set to an image descriptor.
+The 'tabulated-list-entries' variable now supports using an image
+descriptor, which means to insert an image in that column instead of
+text. See the documentation string of that variable for details.
+
++++
+** ':keys' in 'menu-item' can now be a function.
+If so, it is called whenever the menu is computed, and can be used to
+calculate the keys dynamically.
+
++++
+** New major mode 'clean-mode'.
+This is a new major mode meant for debugging. It kills absolutely all
+local variables and removes overlays and text properties.
+
++++
+** 'kill-all-local-variables' can now kill all local variables.
+If given the new optional KILL-PERMANENT argument, it also kills
+permanent local variables.
+
++++
+** Third 'mapconcat' argument SEPARATOR is now optional.
+An explicit nil always meant the empty string, now it can be left out.
+
++++
+** New function 'image-at-point-p'.
+This function returns t if point is on a valid image, and nil
+otherwise.
+
++++
+** New function 'buffer-text-pixel-size'.
+This is similar to 'window-text-pixel-size', but can be used when the
+buffer isn't displayed.
+
++++
+** New function 'string-pixel-width'.
+This returns the width of a string in pixels. This can be useful when
+dealing with variable pitch fonts and glyphs that have widths that
+aren't integer multiples of the default font.
+
++++
+** New function 'string-glyph-split'.
+This function splits a string into a list of strings representing
+separate glyphs. This takes into account combining characters and
+grapheme clusters, by treating each sequence of characters composed on
+display as a single unit.
+
+** Xwidget
+
++++
+*** The function 'make-xwidget' now accepts an optional RELATED argument.
+This argument is used as another widget for the newly created WebKit
+widget to share settings and subprocesses with. It must be another
+WebKit widget.
+
++++
+*** New function 'xwidget-perform-lispy-event'.
+This function allows you to send events to xwidgets. Usually, some
+equivalent of the event will be sent, but there is no guarantee of
+what the widget will actually receive.
+
+On GTK+, only key and function key events are implemented.
+
++++
+*** New function 'xwidget-webkit-load-html'.
+This function is used to load HTML text into WebKit xwidgets
+directly, in contrast to creating a temporary file to hold the
+markup, and passing the URI of the file as an argument to
+'xwidget-webkit-goto-uri'.
+
++++
+*** New functions for performing searches on WebKit xwidgets.
+Some new functions, such as 'xwidget-webkit-search', have been added
+for performing searches on WebKit xwidgets.
+
++++
+*** New function 'xwidget-webkit-back-forward-list'.
+This function returns the history of page-loads in a WebKit xwidget.
+
++++
+*** New function 'xwidget-webkit-estimated-load-progress'.
+This function returns the estimated progress of page loading in a
+WebKit xwidget.
+
++++
+*** New function 'xwidget-webkit-stop-loading'.
+This function terminates all data transfer during page loads in a
+WebKit xwidget.
+
++++
+*** 'load-changed' xwidget events are now more detailed.
+In particular, they can now have different arguments based on the
+state of the WebKit widget. 'load-finished' is sent when a load has
+completed, 'load-started' when a load first starts, 'load-redirected'
+after a redirect, and 'load-committed' when the WebKit widget first
+commits to the load.
+
++++
+*** New event type 'xwidget-display-event'.
+These events are sent whenever an xwidget requests that Emacs displays
+another xwidget. The only arguments to this event are the xwidget
+that should be displayed, and the xwidget that asked to display it.
+
++++
+*** New function 'xwidget-webkit-set-cookie-storage-file'.
+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.
+
++++
+** Timestamps like '(1 . 1000)' now work without warnings being generated.
+For example, '(time-add nil '(1 . 1000))' no longer warns that the
+'(1 . 1000)' acts like '(1000 . 1000000)'. This warning, which was a
+temporary transition aid for Emacs 27, has served its purpose.
+
++++
+** 'encode-time' now also accepts a 6-element list with just time and date.
+'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR))' is now short for
+'(encode-time (list SECOND MINUTE HOUR DAY MONTH YEAR nil -1 nil))'.
+
++++
+** 'date-to-time' now accepts arguments that lack month, day, or time.
+The function now assumes the earliest possible values if its argument
+lacks month, day, or time. For example, (date-to-time "2021-12-04")
+now assumes a time of "00:00" instead of signaling an error.
+
++++
+** 'format-seconds' now allows suppressing zero-value trailing elements.
+The new "%x" non-printing control character will suppress zero-value
+elements that appear after "%x".
+
++++
+** New events for taking advantage of touchscreen devices.
+The events 'touchscreen-begin', 'touchscreen-update', and
+'touchscreen-end' have been added to take better advantage of
+touch-capable display panels.
+
++++
+** New error symbol 'permission-denied'.
+This is a subcategory of 'file-error', and is signaled when some file
+operation fails because the OS doesn't allow Emacs to access a file or
+a directory.
+
++++
+** The ':underline' face attribute now accepts a new property.
+The property ':position' now specifies the position of the underline
+when used as part of a property list specification for the
+':underline' attribute.
+
++++
+** 'defalias' records a more precise history of definitions.
+This is recorded in the 'function-history' symbol property.
+
+---
+** New hook 'save-place-after-find-file-hook'.
+This is called at the end of 'save-place-find-file-hook'.
+
+---
+** 'indian-tml-base-table' no longer translates digits.
+Use 'indian-tml-base-digits-table' if you want digits translation.
+
+---
+** 'indian-tml-itrans-v5-hash' no longer translates digits.
+Use 'indian-tml-itrans-digits-v5-hash' if you want digits
+translation.
+
++++
+** 'shell-quote-argument' has a new optional argument POSIX.
+This is useful when quoting shell arguments for a remote shell
+invocation. Such shells are POSIX conformant by default.
+
++++
+** 'make-process' can set connection type independently for input and output.
+When calling 'make-process', communication via pty can be enabled
+selectively for just input or output by passing a cons cell for
+':connection-type', e.g. '(pipe . pty)'. When examining a process
+later, you can determine whether a particular stream for a process
+uses a pty by passing one of 'stdin', 'stdout', or 'stderr' as the
+second argument to 'process-tty-name'.
+
++++
+** 'signal-process' now consults the list 'signal-process-functions'.
+This is to determine which function has to be called in order to
+deliver the signal. This allows Tramp to send the signal to remote
+asynchronous processes. The hitherto existing implementation has been
+moved to 'internal-default-signal-process'.
+
++++
+** Some system information functions honor remote systems now.
+'list-system-processes' returns remote process IDs.
+'memory-info' returns memory information of remote systems.
+'process-attributes' expects a remote process ID.
+This happens only when the current buffer's 'default-directory' is
+remote. In order to preserve the old behavior, bind
+'default-directory' to a local directory, like
+
+ (let ((default-directory temporary-file-directory))
+ (list-system-processes))
+
++++
+** New functions 'take' and 'ntake'.
+'(take N LIST)' returns the first N elements of LIST; 'ntake' does
+the same but works by modifying LIST destructively.
+
+---
+** 'string-split' is now an alias for 'split-string'.
+
++++
+** 'format-spec' now accepts functions in the replacement.
+The function is called only when used in the format string. This is
+useful to avoid side-effects such as prompting, when the value is not
+actually being used for anything.
+
++++
+** The variable 'max-specpdl-size' has been made obsolete.
+Now 'max-lisp-eval-depth' alone is used for limiting Lisp recursion
+and stack usage. 'max-specpdl-size' is still present as a plain
+variable for compatibility but its limiting powers have been taken away.
+
+** New function 'external-completion-table'.
+This function returns a completion table designed to ease
+communication between Emacs's completion facilities and external tools
+offering completion services, particularly tools whose full working
+set is too big to transfer to Emacs every time a completion is
+needed. The table uses new 'external' completion style exclusively
+and cannot work with regular styles such as 'basic' or 'flex'.
+
++++
+** Magic file name handlers for 'make-directory-internal' are no longer needed.
+Instead, Emacs uses the already-existing 'make-directory' handlers.
+
++++
+** '(make-directory DIR t)' returns non-nil if DIR already exists.
+This can let a caller know whether it created DIR. Formerly,
+'make-directory's return value was unspecified.
+
+
+* Changes in Emacs 29.1 on Non-Free Operating Systems
+
+** MS-Windows
+
+---
+*** Emacs now supports double-buffering on MS-Windows to reduce display flicker.
+(This was supported on Free systems since Emacs 26.1.)
+
+To disable double-buffering (e.g., if it causes display problems), set
+the frame parameter 'inhibit-double-buffering' to a non-nil value.
+You can do that either by adding
+
+ '(inhibit-double-buffering . t)
+
+to 'default-frame-alist', or by modifying the frame parameters of the
+selected frame by evaluating
+
+ (modify-frame-parameters nil '((inhibit-double-buffering . t)))
+
++++
+*** Emacs now supports system dark mode.
+On Windows 10 (version 1809 and higher) and Windows 11, Emacs will now
+follow the system's dark mode: GUI frames use the appropriate light or
+dark title bar and scroll bars, based on the user's Windows-wide color
+settings.
+
+---
+*** Emacs now uses native image APIs to display some image formats.
+On Windows 2000 and later, Emacs now defaults to using the native
+image APIs for displaying the BMP, GIF, JPEG, PNG, and TIFF images.
+This means Emacs on MS-Windows needs no longer use external image
+support libraries to display those images. Other image types -- XPM,
+SVG, and WEBP -- still need support libraries for Emacs to be able to
+display them.
+
+The use of native image APIs is controlled by the variable
+'w32-use-native-image-API', whose value now defaults to t on systems
+where those APIs are available.
+
++++
+*** Emacs now supports display of BMP images using native image APIs.
+When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now
+has built-in support for displaying BMP images.
+
+---
+*** GUI Yes/No dialogs now include a "Cancel" button.
+The "Cancel" button is in addition to "Yes" and "No", and is intended
+to allow users to quit the dialog, as an equivalent of 'C-g' when Emacs
+asks a yes/no question via the echo area. This is controlled by the
+new variable 'w32-yes-no-dialog-show-cancel', by default t. Set it to
+nil to get back the old behavior of showing a modal dialog with only
+two buttons: "Yes" and "No".
+
+** Cygwin
+
+---
+*** 'process-attributes' is now implemented.
+
+** macOS
+
++++
+*** The 'ns-popup-font-panel' command has been removed.
+Use the general command 'M-x menu-set-font' instead.
+
+
+----------------------------------------------------------------------
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+
+Local variables:
+coding: utf-8
+mode: outline
+mode: emacs-news
+paragraph-separate: "[ ]"
+end:
diff --git a/etc/PROBLEMS b/etc/PROBLEMS
index 3c75e81b8b9..928870c42f6 100644
--- a/etc/PROBLEMS
+++ b/etc/PROBLEMS
@@ -1239,6 +1239,20 @@ you should use an Emacs input method instead.
* X runtime problems
+** X security problems
+
+*** Emacs faces trouble when running as an untrusted client.
+
+When Emacs is running as an untrusted client under X servers with the
+Security extension, it is unable to use some window manager features
+but reports them to the window manager anyway. This can lead to
+constant prompting by the window manager about Emacs being
+unresponsive. To resolve the problem, place:
+
+ (setq x-detect-server-trust t)
+
+in your early-init.el.
+
** X keyboard problems
*** `x-focus-frame' fails to activate the frame.
@@ -1710,8 +1724,8 @@ which can be carried out at the same time:
7) If selecting text with the mouse is slow, the main culprit is
likely `select-active-regions', coupled with a program monitoring
- the clipboard on the X server you are connected to. Try turning
- that off.
+ the clipboard or primary selection on the X server you are
+ connected to. Try turning that off.
However, over networks with moderate to high latency, with no
clipboard monitor running, the bottleneck is likely to be
@@ -1721,6 +1735,12 @@ which can be carried out at the same time:
cause Emacs features that relies on accurate mouse position
reporting to stop working reliably.
+8) If creating or resizing frames is slow, turn off
+ `frame-resize-pixelwise' (this will not take effect until you
+ create a new frame); then, enable `x-lax-frame-positioning'. This
+ means frame placement will be less accurate, but makes frame
+ creation, movement, and resize visibly faster.
+
*** Emacs gives the error, Couldn't find per display information.
This can result if the X server runs out of memory because Emacs uses
diff --git a/etc/images/symbols/README b/etc/images/symbols/README
new file mode 100644
index 00000000000..f69a4ba8760
--- /dev/null
+++ b/etc/images/symbols/README
@@ -0,0 +1,43 @@
+This directory contains icons for some inline symbols.
+
+COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES
+
+Files: *.svg
+Author: Yuan Fu <casouri@gmail.com>
+Copyright (C) 2023 Free Software Foundation, Inc.
+License: GNU General Public License version 3 or later (see COPYING)
+
+How I made these icons: I made them with Figma, and exported them into
+SVG. I made the shapes with vectors (SVG paths) rather than strokes,
+merged all the shapes into a single shape with union operation, and
+stripped filling attributes from the SVG files. This way the icons can
+be colored like normal text! I'm not exactly sure how it works, but as
+long as the icon uses SVG path, and there is only one path in the
+file, and there is no filling attributes, the icons can be colored as
+text.
+
+FWIW, this is the command I used to strip filling attributes:
+
+sed -i 's/fill="none"//g' <file>
+sed -i 's/fill="black"//g' <file>
+
+Naming: Use underscore to separate styles, dash are considered normal
+character so you can use it for names. End with the intended optical
+size for the icon.
+
+There should also be an order for all the keywords. Right now we have
+directions (left/right), circle, fill, and optical size. Among them,
+the order should be
+
+1. direction
+2. circle
+3. fill
+4. size
+
+E.g., arrow_right_circle_fill_16.
+
+
+
+Every time you modify the SVG icons, please use the ImageMagick
+`convert' utility to convert them to PBM icons, for the sake of
+Emacsen that cannot display SVG images.
diff --git a/etc/images/symbols/check-mark_16.pbm b/etc/images/symbols/check-mark_16.pbm
new file mode 100644
index 00000000000..5588c0c4c01
--- /dev/null
+++ b/etc/images/symbols/check-mark_16.pbm
Binary files differ
diff --git a/etc/images/symbols/check-mark_16.svg b/etc/images/symbols/check-mark_16.svg
new file mode 100644
index 00000000000..10bf765f4d2
--- /dev/null
+++ b/etc/images/symbols/check-mark_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M6.58449 9.82778L3.75736 6.99807L2.3425 8.41164L6.58321 12.6562L13.6575 5.58837L12.2439 4.17351L6.58449 9.82778Z" />
+</svg>
diff --git a/etc/images/symbols/chevron_down_16.pbm b/etc/images/symbols/chevron_down_16.pbm
new file mode 100644
index 00000000000..3d9b75d1bcc
--- /dev/null
+++ b/etc/images/symbols/chevron_down_16.pbm
Binary files differ
diff --git a/etc/images/symbols/chevron_down_16.svg b/etc/images/symbols/chevron_down_16.svg
new file mode 100644
index 00000000000..016e4a5720e
--- /dev/null
+++ b/etc/images/symbols/chevron_down_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M14 4.5L14 7L8 12L2 7L2 4.5L8 9.5L14 4.5Z" />
+</svg>
diff --git a/etc/images/symbols/chevron_left_16.pbm b/etc/images/symbols/chevron_left_16.pbm
new file mode 100644
index 00000000000..d965458790d
--- /dev/null
+++ b/etc/images/symbols/chevron_left_16.pbm
Binary files differ
diff --git a/etc/images/symbols/chevron_left_16.svg b/etc/images/symbols/chevron_left_16.svg
new file mode 100644
index 00000000000..3f1d044c8ce
--- /dev/null
+++ b/etc/images/symbols/chevron_left_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M11 3.05H8.5L4 8.00001L8.5 13H11L6.5 8.00001L11 3.05Z" />
+</svg>
diff --git a/etc/images/symbols/chevron_right_16.pbm b/etc/images/symbols/chevron_right_16.pbm
new file mode 100644
index 00000000000..938785dce28
--- /dev/null
+++ b/etc/images/symbols/chevron_right_16.pbm
Binary files differ
diff --git a/etc/images/symbols/chevron_right_16.svg b/etc/images/symbols/chevron_right_16.svg
new file mode 100644
index 00000000000..e2806c2a648
--- /dev/null
+++ b/etc/images/symbols/chevron_right_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M4.95455 3H7.45455L12 8L7.45455 13H4.95455L9.5 8L4.95455 3Z" />
+</svg>
diff --git a/etc/images/symbols/chevron_up_16.pbm b/etc/images/symbols/chevron_up_16.pbm
new file mode 100644
index 00000000000..ae6b215b7bd
--- /dev/null
+++ b/etc/images/symbols/chevron_up_16.pbm
Binary files differ
diff --git a/etc/images/symbols/chevron_up_16.svg b/etc/images/symbols/chevron_up_16.svg
new file mode 100644
index 00000000000..1c4b9c47622
--- /dev/null
+++ b/etc/images/symbols/chevron_up_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M2 11.5L2 9L8 4L14 9L14 11.5L8 6.5L2 11.5Z" />
+</svg>
diff --git a/etc/images/symbols/cross_16.pbm b/etc/images/symbols/cross_16.pbm
new file mode 100644
index 00000000000..52996cdd589
--- /dev/null
+++ b/etc/images/symbols/cross_16.pbm
Binary files differ
diff --git a/etc/images/symbols/cross_16.svg b/etc/images/symbols/cross_16.svg
new file mode 100644
index 00000000000..f210cf230b6
--- /dev/null
+++ b/etc/images/symbols/cross_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M5.17157 3.75736L3.75736 5.17157L6.58579 8L3.75736 10.8284L5.17157 12.2426L8 9.41421L10.8284 12.2426L12.2426 10.8284L9.41421 8L12.2426 5.17157L10.8284 3.75736L8 6.58579L5.17157 3.75736Z" />
+</svg>
diff --git a/etc/images/symbols/cross_circle_16.pbm b/etc/images/symbols/cross_circle_16.pbm
new file mode 100644
index 00000000000..57c537b0850
--- /dev/null
+++ b/etc/images/symbols/cross_circle_16.pbm
Binary files differ
diff --git a/etc/images/symbols/cross_circle_16.svg b/etc/images/symbols/cross_circle_16.svg
new file mode 100644
index 00000000000..1c05c7d8611
--- /dev/null
+++ b/etc/images/symbols/cross_circle_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8ZM13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3C10.7614 3 13 5.23858 13 8ZM9.76777 4.81802L11.182 6.23223L9.41421 8L11.182 9.76777L9.76777 11.182L8 9.41421L6.23223 11.182L4.81802 9.76777L6.58579 8L4.81802 6.23223L6.23223 4.81802L8 6.58579L9.76777 4.81802Z" />
+</svg>
diff --git a/etc/images/symbols/cross_circle_fill_16.pbm b/etc/images/symbols/cross_circle_fill_16.pbm
new file mode 100644
index 00000000000..81c3d377b35
--- /dev/null
+++ b/etc/images/symbols/cross_circle_fill_16.pbm
Binary files differ
diff --git a/etc/images/symbols/cross_circle_fill_16.svg b/etc/images/symbols/cross_circle_fill_16.svg
new file mode 100644
index 00000000000..62da8aa5fda
--- /dev/null
+++ b/etc/images/symbols/cross_circle_fill_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM10.1213 4.46447L11.5355 5.87868L9.41421 8L11.5355 10.1213L10.1213 11.5355L8 9.41421L5.87868 11.5355L4.46447 10.1213L6.58579 8L4.46447 5.87868L5.87868 4.46447L8 6.58579L10.1213 4.46447Z" />
+</svg>
diff --git a/etc/images/symbols/heart_16.pbm b/etc/images/symbols/heart_16.pbm
new file mode 100644
index 00000000000..b3a8904b6e7
--- /dev/null
+++ b/etc/images/symbols/heart_16.pbm
Binary files differ
diff --git a/etc/images/symbols/heart_16.svg b/etc/images/symbols/heart_16.svg
new file mode 100644
index 00000000000..68bd767bd32
--- /dev/null
+++ b/etc/images/symbols/heart_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 5.5C8 5.5 9.5 3.5 11 3.5C12.5 3.5 14 4.5 14 6.5C14 10.1005 8 13.5 8 13.5C8 13.5 2 10.1005 2 6.5C2 4.5 3.34315 3.5 5 3.5C6.5 3.5 8 5.5 8 5.5ZM8 7.5C9 6.5 10 5.5 11 5.5C11.4898 5.5 11.738 5.65071 12 6C12.3515 6.46863 12.2982 7.40369 12 8C11 10 8 11.5 8 11.5C8 11.5 5 10 4 8C3.70858 7.41714 3.64853 6.46863 4 6C4.26197 5.65071 4.55933 5.5 5 5.5C6 5.5 7 6.5 8 7.5Z" />
+</svg>
diff --git a/etc/images/symbols/heart_fill_16.pbm b/etc/images/symbols/heart_fill_16.pbm
new file mode 100644
index 00000000000..88722ed6228
--- /dev/null
+++ b/etc/images/symbols/heart_fill_16.pbm
Binary files differ
diff --git a/etc/images/symbols/heart_fill_16.svg b/etc/images/symbols/heart_fill_16.svg
new file mode 100644
index 00000000000..e1a90a55742
--- /dev/null
+++ b/etc/images/symbols/heart_fill_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M11 3.5C9.5 3.5 8 5.5 8 5.5C8 5.5 6.5 3.5 5 3.5C3.34315 3.5 2 4.5 2 6.5C2 10.1005 8 13.5 8 13.5C8 13.5 14 10.1005 14 6.5C14 4.5 12.5 3.5 11 3.5Z" />
+</svg>
diff --git a/etc/images/symbols/heart_half_16.pbm b/etc/images/symbols/heart_half_16.pbm
new file mode 100644
index 00000000000..6d5724b1aea
--- /dev/null
+++ b/etc/images/symbols/heart_half_16.pbm
Binary files differ
diff --git a/etc/images/symbols/heart_half_16.svg b/etc/images/symbols/heart_half_16.svg
new file mode 100644
index 00000000000..0ccdf620d33
--- /dev/null
+++ b/etc/images/symbols/heart_half_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 5.5C8 5.5 9.5 3.5 11 3.5C12.5 3.5 14 4.5 14 6.5C14 10.1005 8 13.5 8 13.5C8 13.5 2 10.1005 2 6.5C2 4.5 3.34315 3.5 5 3.5C6.5 3.5 8 5.5 8 5.5ZM12 8C11 10 8 11.5 8 11.5V7.5C9 6.5 10 5.5 11 5.5C11.4898 5.5 11.738 5.65071 12 6C12.3515 6.46863 12.2982 7.40369 12 8Z" />
+</svg>
diff --git a/etc/images/symbols/menu_16.pbm b/etc/images/symbols/menu_16.pbm
new file mode 100644
index 00000000000..72baff379e5
--- /dev/null
+++ b/etc/images/symbols/menu_16.pbm
Binary files differ
diff --git a/etc/images/symbols/menu_16.svg b/etc/images/symbols/menu_16.svg
new file mode 100644
index 00000000000..bddc433b2eb
--- /dev/null
+++ b/etc/images/symbols/menu_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M14 3H2V5H14V3ZM14 7H2V9H14V7ZM2 11H14V13H2V11Z" />
+</svg>
diff --git a/etc/images/symbols/minus_16.pbm b/etc/images/symbols/minus_16.pbm
new file mode 100644
index 00000000000..4f73340f179
--- /dev/null
+++ b/etc/images/symbols/minus_16.pbm
Binary files differ
diff --git a/etc/images/symbols/minus_16.svg b/etc/images/symbols/minus_16.svg
new file mode 100644
index 00000000000..9cb61d8d379
--- /dev/null
+++ b/etc/images/symbols/minus_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M13 7H3V9H13V7Z" />
+</svg>
diff --git a/etc/images/symbols/minus_circle_16.pbm b/etc/images/symbols/minus_circle_16.pbm
new file mode 100644
index 00000000000..049bb004b0f
--- /dev/null
+++ b/etc/images/symbols/minus_circle_16.pbm
Binary files differ
diff --git a/etc/images/symbols/minus_circle_16.svg b/etc/images/symbols/minus_circle_16.svg
new file mode 100644
index 00000000000..ced8594774f
--- /dev/null
+++ b/etc/images/symbols/minus_circle_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8ZM13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3C10.7614 3 13 5.23858 13 8ZM11.5 7V9H4.5V7H11.5Z" />
+</svg>
diff --git a/etc/images/symbols/minus_circle_fill_16.pbm b/etc/images/symbols/minus_circle_fill_16.pbm
new file mode 100644
index 00000000000..830d2d3e5c6
--- /dev/null
+++ b/etc/images/symbols/minus_circle_fill_16.pbm
Binary files differ
diff --git a/etc/images/symbols/minus_circle_fill_16.svg b/etc/images/symbols/minus_circle_fill_16.svg
new file mode 100644
index 00000000000..e298ccaa8b2
--- /dev/null
+++ b/etc/images/symbols/minus_circle_fill_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM12 7V9H4V7H12Z" />
+</svg>
diff --git a/etc/images/symbols/plus_16.pbm b/etc/images/symbols/plus_16.pbm
new file mode 100644
index 00000000000..c369231b636
--- /dev/null
+++ b/etc/images/symbols/plus_16.pbm
Binary files differ
diff --git a/etc/images/symbols/plus_16.svg b/etc/images/symbols/plus_16.svg
new file mode 100644
index 00000000000..a4d2f84f318
--- /dev/null
+++ b/etc/images/symbols/plus_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M9 3H7V7H3V9H7V13H9V9H13V7H9V3Z" />
+</svg>
diff --git a/etc/images/symbols/plus_circle_16.pbm b/etc/images/symbols/plus_circle_16.pbm
new file mode 100644
index 00000000000..ae616fb4682
--- /dev/null
+++ b/etc/images/symbols/plus_circle_16.pbm
Binary files differ
diff --git a/etc/images/symbols/plus_circle_16.svg b/etc/images/symbols/plus_circle_16.svg
new file mode 100644
index 00000000000..921857f5a84
--- /dev/null
+++ b/etc/images/symbols/plus_circle_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M15 8C15 11.866 11.866 15 8 15C4.13401 15 1 11.866 1 8C1 4.13401 4.13401 1 8 1C11.866 1 15 4.13401 15 8ZM13 8C13 10.7614 10.7614 13 8 13C5.23858 13 3 10.7614 3 8C3 5.23858 5.23858 3 8 3C10.7614 3 13 5.23858 13 8ZM7 7V4.5H9V7H11.5V9H9V11.5H7V9H4.5V7H7Z" />
+</svg>
diff --git a/etc/images/symbols/plus_circle_fill_16.pbm b/etc/images/symbols/plus_circle_fill_16.pbm
new file mode 100644
index 00000000000..b0e52cdaa08
--- /dev/null
+++ b/etc/images/symbols/plus_circle_fill_16.pbm
Binary files differ
diff --git a/etc/images/symbols/plus_circle_fill_16.svg b/etc/images/symbols/plus_circle_fill_16.svg
new file mode 100644
index 00000000000..7f5de4ae3a8
--- /dev/null
+++ b/etc/images/symbols/plus_circle_fill_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M8 15C11.866 15 15 11.866 15 8C15 4.13401 11.866 1 8 1C4.13401 1 1 4.13401 1 8C1 11.866 4.13401 15 8 15ZM7 7V4H9V7H12V9H9V12H7V9H4V7H7Z" />
+</svg>
diff --git a/etc/images/symbols/star_16.pbm b/etc/images/symbols/star_16.pbm
new file mode 100644
index 00000000000..4a63706a4f7
--- /dev/null
+++ b/etc/images/symbols/star_16.pbm
Binary files differ
diff --git a/etc/images/symbols/star_16.svg b/etc/images/symbols/star_16.svg
new file mode 100644
index 00000000000..7ccbd6f01a5
--- /dev/null
+++ b/etc/images/symbols/star_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.6458 5.73475L8 1L6.3542 5.73475L1.34261 5.83688L5.33704 8.86525L3.8855 13.6631L8 10.8L12.1145 13.6631L10.663 8.86525L14.6574 5.83688L9.6458 5.73475ZM8.70534 7.02918L8 5L7.29466 7.02918L5.14683 7.07295L6.85873 8.37082L6.23664 10.4271L8 9.2L9.76336 10.4271L9.14127 8.37082L10.8532 7.07295L8.70534 7.02918Z" />
+</svg>
diff --git a/etc/images/symbols/star_fill_16.pbm b/etc/images/symbols/star_fill_16.pbm
new file mode 100644
index 00000000000..9bb2a2fb15b
--- /dev/null
+++ b/etc/images/symbols/star_fill_16.pbm
Binary files differ
diff --git a/etc/images/symbols/star_fill_16.svg b/etc/images/symbols/star_fill_16.svg
new file mode 100644
index 00000000000..0e03675edd5
--- /dev/null
+++ b/etc/images/symbols/star_fill_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path d="M8 1L9.6458 5.73475L14.6574 5.83688L10.663 8.86525L12.1145 13.6631L8 10.8L3.8855 13.6631L5.33704 8.86525L1.3426 5.83688L6.3542 5.73475L8 1Z" />
+</svg>
diff --git a/etc/images/symbols/star_half_16.pbm b/etc/images/symbols/star_half_16.pbm
new file mode 100644
index 00000000000..a57fd8687e4
--- /dev/null
+++ b/etc/images/symbols/star_half_16.pbm
Binary files differ
diff --git a/etc/images/symbols/star_half_16.svg b/etc/images/symbols/star_half_16.svg
new file mode 100644
index 00000000000..6c735ad64ae
--- /dev/null
+++ b/etc/images/symbols/star_half_16.svg
@@ -0,0 +1,3 @@
+<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.72809 5.62149L8 1L6.27191 5.62149L1.34261 5.83688L5.2039 8.90851L3.8855 13.6631L8 10.94L12.1145 13.6631L10.7961 8.90851L14.6574 5.83688L9.72809 5.62149ZM10.3511 11.236L8 9.67997V3.99997L8.98747 6.64082L11.8042 6.7639L9.59777 8.51912L10.3511 11.236Z" />
+</svg>
diff --git a/etc/publicsuffix.txt b/etc/publicsuffix.txt
index 60d72fd0d53..9d0dfc04ea9 100644
--- a/etc/publicsuffix.txt
+++ b/etc/publicsuffix.txt
@@ -380,11 +380,29 @@ org.bi
// biz : https://en.wikipedia.org/wiki/.biz
biz
-// bj : https://en.wikipedia.org/wiki/.bj
+// bj : https://nic.bj/bj-suffixes.txt
+// submitted by registry <contact@nic.bj>
bj
-asso.bj
-barreau.bj
-gouv.bj
+africa.bj
+agro.bj
+architectes.bj
+assur.bj
+avocats.bj
+co.bj
+com.bj
+eco.bj
+econo.bj
+edu.bj
+info.bj
+loisirs.bj
+money.bj
+net.bj
+org.bj
+ote.bj
+resto.bj
+restaurant.bj
+tourism.bj
+univ.bj
// bm : http://www.bermudanic.bm/dnr-text.txt
bm
@@ -7171,7 +7189,7 @@ org.zw
// newGTLDs
-// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2022-11-29T15:14:18Z
+// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2023-03-18T15:13:13Z
// This list is auto-generated, don't edit it manually.
// aaa : 2015-02-26 American Automobile Association, Inc.
aaa
@@ -8370,7 +8388,7 @@ glass
// gle : 2014-07-24 Charleston Road Registry Inc.
gle
-// global : 2014-04-17 Dot Global Domain Registry Limited
+// global : 2014-04-17 Identity Digital Limited
global
// globo : 2013-12-19 Globo Comunicação e Participações S.A
@@ -8880,9 +8898,6 @@ limo
// lincoln : 2014-11-13 Ford Motor Company
lincoln
-// linde : 2014-12-04 Linde Aktiengesellschaft
-linde
-
// link : 2013-11-14 Nova Registry Ltd
link
@@ -8913,9 +8928,6 @@ locker
// locus : 2015-06-25 Locus Analytics LLC
locus
-// loft : 2015-07-30 Annco, Inc.
-loft
-
// lol : 2015-01-30 XYZ.COM LLC
lol
@@ -8952,9 +8964,6 @@ luxe
// luxury : 2013-10-17 Luxury Partners, LLC
luxury
-// macys : 2015-07-31 Macys, Inc.
-macys
-
// madrid : 2014-05-01 Comunidad de Madrid
madrid
@@ -9456,7 +9465,7 @@ pub
// pwc : 2015-10-29 PricewaterhouseCoopers LLP
pwc
-// qpon : 2013-11-14 dotCOOL, Inc.
+// qpon : 2013-11-14 dotQPON LLC
qpon
// quebec : 2013-12-19 PointQuébec Inc
@@ -9702,9 +9711,6 @@ sener
// services : 2014-02-27 Binky Moon, LLC
services
-// ses : 2015-07-23 SES
-ses
-
// seven : 2015-08-06 Seven West Media Ltd
seven
@@ -9789,7 +9795,7 @@ smart
// smile : 2014-12-18 Amazon Registry Services, Inc.
smile
-// sncf : 2015-02-19 Société Nationale des Chemins de fer Francais S N C F
+// sncf : 2015-02-19 Société Nationale SNCF
sncf
// soccer : 2015-03-26 Binky Moon, LLC
@@ -10026,7 +10032,7 @@ toray
// toshiba : 2014-04-10 TOSHIBA Corporation
toshiba
-// total : 2015-08-06 TOTAL SE
+// total : 2015-08-06 TotalEnergies SE
total
// tours : 2015-01-22 Binky Moon, LLC
@@ -10461,9 +10467,6 @@ xin
// xn--jlq480n2rg : 2019-12-19 Amazon Registry Services, Inc.
亚马逊
-// xn--jlq61u9w7b : 2015-01-08 Nokia Corporation
-诺基亚
-
// xn--jvr189m : 2015-02-26 Amazon Registry Services, Inc.
食品
@@ -10668,6 +10671,11 @@ adobeaemcloud.net
hlx.page
hlx3.page
+// Adobe Developer Platform : https://developer.adobe.com
+// Submitted by Jesse MacFadyen<jessem@adobe.com>
+adobeio-static.net
+adobeioruntime.net
+
// Agnat sp. z o.o. : https://domena.pl
// Submitted by Przemyslaw Plewa <it-admin@domena.pl>
beep.pl
@@ -10682,6 +10690,24 @@ airkitapps.eu
// Submitted by Etienne Stalmans <security@aiven.io>
aivencloud.com
+// Akamai : https://www.akamai.com/
+// Submitted by Akamai Team <publicsuffixlist@akamai.com>
+akadns.net
+akamai.net
+akamai-staging.net
+akamaiedge.net
+akamaiedge-staging.net
+akamaihd.net
+akamaihd-staging.net
+akamaiorigin.net
+akamaiorigin-staging.net
+akamaized.net
+akamaized-staging.net
+edgekey.net
+edgekey-staging.net
+edgesuite.net
+edgesuite-staging.net
+
// alboto.ca : http://alboto.ca
// Submitted by Anton Avramov <avramov@alboto.ca>
barsy.ca
@@ -10926,6 +10952,10 @@ cdn.prod.atlassian-dev.net
// Submitted by Lukas Reschke <lukas@authentick.net>
translated.page
+// Autocode : https://autocode.com
+// Submitted by Jacob Lee <jacob@autocode.com>
+autocode.dev
+
// AVM : https://avm.de
// Submitted by Andreas Weise <a.weise@avm.de>
myfritz.net
@@ -11054,6 +11084,11 @@ cafjs.com
// Submitted by Marcus Popp <admin@callidomus.com>
mycd.eu
+// Canva Pty Ltd : https://canva.com/
+// Submitted by Joel Aquilina <publicsuffixlist@canva.com>
+canva-apps.cn
+canva-apps.com
+
// Carrd : https://carrd.co
// Submitted by AJ <aj@carrd.co>
drr.ac
@@ -11971,6 +12006,7 @@ u.channelsdvr.net
// Fastly Inc. : http://www.fastly.com/
// Submitted by Fastly Security <security@fastly.com>
edgecompute.app
+fastly-edge.com
fastly-terrarium.com
fastlylb.net
map.fastlylb.net
@@ -12485,6 +12521,10 @@ ngo.ng
edu.scot
sch.so
+// HostFly : https://www.ie.ua
+// Submitted by Bohdan Dub <support@hostfly.com.ua>
+ie.ua
+
// HostyHosting (hostyhosting.com)
hostyhosting.io
@@ -12943,6 +12983,7 @@ cloudapp.net
azurestaticapps.net
1.azurestaticapps.net
2.azurestaticapps.net
+3.azurestaticapps.net
centralus.azurestaticapps.net
eastasia.azurestaticapps.net
eastus2.azurestaticapps.net
@@ -13009,7 +13050,19 @@ netlify.app
// ngrok : https://ngrok.com/
// Submitted by Alan Shreve <alan@ngrok.com>
+ngrok.app
+ngrok-free.app
+ngrok.dev
+ngrok-free.dev
ngrok.io
+ap.ngrok.io
+au.ngrok.io
+eu.ngrok.io
+in.ngrok.io
+jp.ngrok.io
+sa.ngrok.io
+us.ngrok.io
+ngrok.pizza
// Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/
// Submitted by Nicholas Ford <nick@nimbushosting.co.uk>
@@ -13529,6 +13582,56 @@ rocky.page
спб.рус
я.рус
+// SAKURA Internet Inc. : https://www.sakura.ad.jp/
+// Submitted by Internet Service Department <rs-vendor-ml@sakura.ad.jp>
+180r.com
+dojin.com
+sakuratan.com
+sakuraweb.com
+x0.com
+2-d.jp
+bona.jp
+crap.jp
+daynight.jp
+eek.jp
+flop.jp
+halfmoon.jp
+jeez.jp
+matrix.jp
+mimoza.jp
+ivory.ne.jp
+mail-box.ne.jp
+mints.ne.jp
+mokuren.ne.jp
+opal.ne.jp
+sakura.ne.jp
+sumomo.ne.jp
+topaz.ne.jp
+netgamers.jp
+nyanta.jp
+o0o0.jp
+rdy.jp
+rgr.jp
+rulez.jp
+s3.isk01.sakurastorage.jp
+s3.isk02.sakurastorage.jp
+saloon.jp
+sblo.jp
+skr.jp
+tank.jp
+uh-oh.jp
+undo.jp
+rs.webaccel.jp
+user.webaccel.jp
+websozai.jp
+xii.jp
+squares.net
+jpn.org
+kirara.st
+x0.to
+from.tv
+sakura.tv
+
// Salesforce.com, Inc. https://salesforce.com/
// Submitted by Michael Biven <mbiven@salesforce.com>
*.builder.code.com
@@ -13681,6 +13784,9 @@ vp4.me
// Snowflake Inc : https://www.snowflake.com/
// Submitted by Faith Olapade <faith.olapade@snowflake.com>
+snowflake.app
+privatelink.snowflake.app
+streamlit.app
streamlitapp.com
// Snowplow Analytics : https://snowplowanalytics.com/
@@ -13956,6 +14062,10 @@ hk.org
ltd.hk
inc.hk
+// UK Intis Telecom LTD : https://it.com
+// Submitted by ITComdomains <to@it.com>
+it.com
+
// UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/
// see also: whois -h whois.udr.org.yt help
// Submitted by Atanunu Igbunuroghene <publicsuffixlist@udr.org.yt>
diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex
index 3124ce4f7c7..815a2db2f6d 100644
--- a/etc/refcards/ru-refcard.tex
+++ b/etc/refcards/ru-refcard.tex
@@ -40,7 +40,7 @@
\newlength{\ColThreeWidth}
\setlength{\ColThreeWidth}{25mm}
-\newcommand{\versionemacs}[0]{29} % version of Emacs this is for
+\newcommand{\versionemacs}[0]{30} % version of Emacs this is for
\newcommand{\cyear}[0]{2023} % copyright year
\newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill
diff --git a/etc/themes/modus-operandi-deuteranopia-theme.el b/etc/themes/modus-operandi-deuteranopia-theme.el
new file mode 100644
index 00000000000..fff62e3da9f
--- /dev/null
+++ b/etc/themes/modus-operandi-deuteranopia-theme.el
@@ -0,0 +1,419 @@
+;;; modus-operandi-deuteranopia-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
+
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+;; URL: https://git.sr.ht/~protesilaos/modus-themes
+;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
+;; Keywords: faces, theme, accessibility
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
+
+;;; Code:
+
+
+
+(eval-and-compile
+ (unless (and (fboundp 'require-theme)
+ load-file-name
+ (equal (file-name-directory load-file-name)
+ (expand-file-name "themes/" data-directory))
+ (require-theme 'modus-themes t))
+ (require 'modus-themes))
+
+ (deftheme modus-operandi-deuteranopia
+ "Elegant, highly legible and customizable light theme.
+This variant is optimized for users with red-green color
+deficiency (deuteranopia). It conforms with the highest
+legibility standard for color contrast between background and
+foreground in any given piece of text, which corresponds to a
+minimum contrast in relative luminance of 7:1 (WCAG AAA
+standard).")
+
+ (defconst modus-operandi-deuteranopia-palette
+ '(
+;;; Basic values
+
+ (bg-main "#ffffff")
+ (bg-dim "#f0f0f0")
+ (fg-main "#000000")
+ (fg-dim "#595959")
+ (fg-alt "#193668")
+ (bg-active "#c4c4c4")
+ (bg-inactive "#e0e0e0")
+ (border "#9f9f9f")
+
+;;; Common accent foregrounds
+
+ (red "#a60000")
+ (red-warmer "#972500")
+ (red-cooler "#a0132f")
+ (red-faint "#7f0000")
+ (red-intense "#d00000")
+ (green "#006800")
+ (green-warmer "#316500")
+ (green-cooler "#00663f")
+ (green-faint "#2a5045")
+ (green-intense "#008900")
+ (yellow "#7b5000")
+ (yellow-warmer "#884900")
+ (yellow-cooler "#7a4f2f")
+ (yellow-faint "#624416")
+ (yellow-intense "#808000")
+ (blue "#0031a9")
+ (blue-warmer "#3548cf")
+ (blue-cooler "#0000b0")
+ (blue-faint "#003497")
+ (blue-intense "#0000ff")
+ (magenta "#721045")
+ (magenta-warmer "#8f0075")
+ (magenta-cooler "#531ab6")
+ (magenta-faint "#7c318f")
+ (magenta-intense "#dd22dd")
+ (cyan "#005e8b")
+ (cyan-warmer "#3f578f")
+ (cyan-cooler "#005f5f")
+ (cyan-faint "#005077")
+ (cyan-intense "#008899")
+
+;;; Uncommon accent foregrounds
+
+ (rust "#8a290f")
+ (gold "#80601f")
+ (olive "#56692d")
+ (slate "#2f3f83")
+ (indigo "#4a3a8a")
+ (maroon "#731c52")
+ (pink "#7b435c")
+
+;;; Common accent backgrounds
+
+ (bg-red-intense "#ff8f88")
+ (bg-green-intense "#8adf80")
+ (bg-yellow-intense "#f3d000")
+ (bg-blue-intense "#bfc9ff")
+ (bg-magenta-intense "#dfa0f0")
+ (bg-cyan-intense "#a4d5f9")
+
+ (bg-red-subtle "#ffcfbf")
+ (bg-green-subtle "#b3fabf")
+ (bg-yellow-subtle "#fff576")
+ (bg-blue-subtle "#ccdfff")
+ (bg-magenta-subtle "#ffddff")
+ (bg-cyan-subtle "#bfefff")
+
+ (bg-red-nuanced "#fff1f0")
+ (bg-green-nuanced "#ecf7ed")
+ (bg-yellow-nuanced "#fff3da")
+ (bg-blue-nuanced "#f3f3ff")
+ (bg-magenta-nuanced "#fdf0ff")
+ (bg-cyan-nuanced "#ebf6fa")
+
+;;; Uncommon accent backgrounds
+
+ (bg-ochre "#f0e0cc")
+ (bg-lavender "#dfdbfa")
+ (bg-sage "#c0e7d4")
+
+;;; Graphs
+
+ (bg-graph-red-0 "#b0b029")
+ (bg-graph-red-1 "#e0cab4")
+ (bg-graph-green-0 "#90b7c0")
+ (bg-graph-green-1 "#a3dfe5")
+ (bg-graph-yellow-0 "#ffcf00")
+ (bg-graph-yellow-1 "#f9ff00")
+ (bg-graph-blue-0 "#7f9fff")
+ (bg-graph-blue-1 "#9fc6ff")
+ (bg-graph-magenta-0 "#b0b0d0")
+ (bg-graph-magenta-1 "#d0dfdf")
+ (bg-graph-cyan-0 "#6faad9")
+ (bg-graph-cyan-1 "#bfe0ff")
+
+;;; Special purpose
+
+ (bg-completion "#c0deff")
+ (bg-hover "#97dfed")
+ (bg-hover-secondary "#f5d0a0")
+ (bg-hl-line "#dae5ec")
+ (bg-region "#bdbdbd")
+ (fg-region "#000000")
+
+ (bg-char-0 "#7feaff")
+ (bg-char-1 "#ffaaff")
+ (bg-char-2 "#dff000")
+
+ (bg-mode-line-active "#d0d6ff")
+ (fg-mode-line-active "#0f0f0f")
+ (border-mode-line-active "#4f4f74")
+ (bg-mode-line-inactive "#e6e6e6")
+ (fg-mode-line-inactive "#585858")
+ (border-mode-line-inactive "#a3a3a3")
+
+ (modeline-err "#603a00")
+ (modeline-warning "#454500")
+ (modeline-info "#023d92")
+
+ (bg-tab-bar "#dfdfdf")
+ (bg-tab-current "#ffffff")
+ (bg-tab-other "#c2c2c2")
+
+;;; Diffs
+
+ (bg-added "#d5d7ff")
+ (bg-added-faint "#e6e6ff")
+ (bg-added-refine "#babcef")
+ (bg-added-fringe "#275acc")
+ (fg-added "#303099")
+ (fg-added-intense "#0303cc")
+
+ (bg-changed "#eecfdf")
+ (bg-changed-faint "#f0dde5")
+ (bg-changed-refine "#e0b0d0")
+ (bg-changed-fringe "#9f6ab0")
+ (fg-changed "#6f1343")
+ (fg-changed-intense "#7f0f9f")
+
+ (bg-removed "#f4f099")
+ (bg-removed-faint "#f6f6b7")
+ (bg-removed-refine "#f0e56f")
+ (bg-removed-fringe "#c0b200")
+ (fg-removed "#553d00")
+ (fg-removed-intense "#7f6f00")
+
+ (bg-diff-context "#f3f3f3")
+
+;;; Paren match
+
+ (bg-paren-match "#5fcfff")
+ (bg-paren-expression "#efd3f5")
+ (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+ (fringe bg-dim)
+ (cursor blue-intense)
+
+ (keybind blue-cooler)
+ (name blue-cooler)
+ (identifier yellow-faint)
+
+ (err yellow-warmer)
+ (warning yellow-cooler)
+ (info blue)
+
+ (underline-err yellow-intense)
+ (underline-warning magenta-faint)
+ (underline-note cyan)
+
+;;;; Code mappings
+
+ (builtin magenta-warmer)
+ (comment yellow)
+ (constant blue-cooler)
+ (docstring green-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
+ (preprocessor red-cooler)
+ (string blue-warmer)
+ (type cyan-cooler)
+ (variable cyan)
+ (rx-construct yellow-cooler)
+ (rx-backslash blue-cooler)
+
+;;;; Accent mappings
+
+ (accent-0 blue)
+ (accent-1 yellow-warmer)
+ (accent-2 cyan)
+ (accent-3 magenta-cooler)
+
+;;;; Button mappings
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-active)
+ (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+ (fg-completion-match-0 blue)
+ (fg-completion-match-1 yellow-warmer)
+ (fg-completion-match-2 cyan)
+ (fg-completion-match-3 magenta-cooler)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+ (date-common cyan)
+ (date-deadline yellow-warmer)
+ (date-event fg-alt)
+ (date-holiday yellow-warmer)
+ (date-now blue-faint)
+ (date-scheduled yellow-cooler)
+ (date-weekday cyan)
+ (date-weekend yellow-faint)
+
+;;;; Line number mappings
+
+ (fg-line-number-inactive fg-dim)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-dim)
+ (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+ (fg-link blue-warmer)
+ (bg-link unspecified)
+ (underline-link blue-warmer)
+
+ (fg-link-symbolic cyan)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic cyan)
+
+ (fg-link-visited yellow-faint)
+ (bg-link-visited unspecified)
+ (underline-link-visited yellow-faint)
+
+;;;; Mail mappings
+
+ (mail-cite-0 blue-warmer)
+ (mail-cite-1 yellow)
+ (mail-cite-2 blue-cooler)
+ (mail-cite-3 yellow-faint)
+ (mail-part blue)
+ (mail-recipient blue)
+ (mail-subject yellow-warmer)
+ (mail-other cyan-faint)
+
+;;;; Prompt mappings
+
+ (fg-prompt blue)
+ (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+ (prose-block fg-dim)
+ (prose-code cyan-cooler)
+ (prose-done blue)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo yellow-warmer)
+ (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+ (rainbow-0 blue)
+ (rainbow-1 yellow)
+ (rainbow-2 blue-warmer)
+ (rainbow-3 yellow-cooler)
+ (rainbow-4 blue-cooler)
+ (rainbow-5 yellow-warmer)
+ (rainbow-6 blue-faint)
+ (rainbow-7 yellow-faint)
+ (rainbow-8 cyan)
+
+;;;; Heading mappings
+
+ (fg-heading-0 cyan-cooler)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 yellow-faint)
+ (fg-heading-3 fg-alt)
+ (fg-heading-4 magenta)
+ (fg-heading-5 green-faint)
+ (fg-heading-6 red-faint)
+ (fg-heading-7 cyan-warmer)
+ (fg-heading-8 fg-dim)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 unspecified)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 unspecified)
+ (bg-heading-4 unspecified)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 unspecified)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 unspecified)
+ (overline-heading-2 unspecified)
+ (overline-heading-3 unspecified)
+ (overline-heading-4 unspecified)
+ (overline-heading-5 unspecified)
+ (overline-heading-6 unspecified)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "The entire palette of the `modus-operandi-deuteranopia' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
+with both as symbols. The latter is a named color that already
+exists in the palette and is associated with a HEX-VALUE.")
+
+ (defcustom modus-operandi-deuteranopia-palette-overrides nil
+ "Overrides for `modus-operandi-deuteranopia-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Palette overrides"))
+
+ (modus-themes-theme modus-operandi-deuteranopia
+ modus-operandi-deuteranopia-palette
+ modus-operandi-deuteranopia-palette-overrides)
+
+ (provide-theme 'modus-operandi-deuteranopia))
+
+;;;###theme-autoload
+(put 'modus-operandi-deuteranopia 'theme-properties '(:background-mode light :kind color-scheme :family modus))
+
+;;; modus-operandi-deuteranopia-theme.el ends here
diff --git a/etc/themes/modus-operandi-theme.el b/etc/themes/modus-operandi-theme.el
index 0d258a26bc8..0705f926de6 100644
--- a/etc/themes/modus-operandi-theme.el
+++ b/etc/themes/modus-operandi-theme.el
@@ -1,13 +1,11 @@
;;; modus-operandi-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
-;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
-;; Version: 3.0.0
-;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
;; This file is part of GNU Emacs.
@@ -27,26 +25,11 @@
;;; Commentary:
;;
-;; Modus Operandi is the light variant of the Modus themes (Modus
-;; Vivendi is the dark one). The themes are designed for color-contrast
-;; accessibility. More specifically:
-;;
-;; 1. Provide a consistent minimum contrast ratio between background
-;; and foreground values of 7:1 or higher. This meets the highest
-;; such accessibility criterion per the guidelines of the Worldwide
-;; Web Consortium's Working Group on Accessibility (WCAG AAA
-;; standard).
-;;
-;; 2. Offer as close to full face coverage as possible. The list is
-;; already quite long, with more additions to follow as part of the
-;; ongoing development process.
-;;
-;; For a complete view of the project, also refer to the following files
-;; (should be distributed in the same repository/directory as the
-;; current item):
-;;
-;; - modus-themes.el (Main code shared between the themes)
-;; - modus-vivendi-theme.el (Dark theme)
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
@@ -67,7 +50,364 @@ between background and foreground in any given piece of text,
which corresponds to a minimum contrast in relative luminance of
7:1 (WCAG AAA standard).")
- (modus-themes-theme modus-operandi)
+ (defconst modus-operandi-palette
+ '(
+;;; Basic values
+
+ (bg-main "#ffffff")
+ (bg-dim "#f0f0f0")
+ (fg-main "#000000")
+ (fg-dim "#595959")
+ (fg-alt "#193668")
+ (bg-active "#c4c4c4")
+ (bg-inactive "#e0e0e0")
+ (border "#9f9f9f")
+
+;;; Common accent foregrounds
+
+ (red "#a60000")
+ (red-warmer "#972500")
+ (red-cooler "#a0132f")
+ (red-faint "#7f0000")
+ (red-intense "#d00000")
+ (green "#006800")
+ (green-warmer "#316500")
+ (green-cooler "#00663f")
+ (green-faint "#2a5045")
+ (green-intense "#008900")
+ (yellow "#6f5500")
+ (yellow-warmer "#884900")
+ (yellow-cooler "#7a4f2f")
+ (yellow-faint "#624416")
+ (yellow-intense "#808000")
+ (blue "#0031a9")
+ (blue-warmer "#3548cf")
+ (blue-cooler "#0000b0")
+ (blue-faint "#003497")
+ (blue-intense "#0000ff")
+ (magenta "#721045")
+ (magenta-warmer "#8f0075")
+ (magenta-cooler "#531ab6")
+ (magenta-faint "#7c318f")
+ (magenta-intense "#dd22dd")
+ (cyan "#005e8b")
+ (cyan-warmer "#3f578f")
+ (cyan-cooler "#005f5f")
+ (cyan-faint "#005077")
+ (cyan-intense "#008899")
+
+;;; Uncommon accent foregrounds
+
+ (rust "#8a290f")
+ (gold "#80601f")
+ (olive "#56692d")
+ (slate "#2f3f83")
+ (indigo "#4a3a8a")
+ (maroon "#731c52")
+ (pink "#7b435c")
+
+;;; Common accent backgrounds
+
+ (bg-red-intense "#ff8f88")
+ (bg-green-intense "#8adf80")
+ (bg-yellow-intense "#f3d000")
+ (bg-blue-intense "#bfc9ff")
+ (bg-magenta-intense "#dfa0f0")
+ (bg-cyan-intense "#a4d5f9")
+
+ (bg-red-subtle "#ffcfbf")
+ (bg-green-subtle "#b3fabf")
+ (bg-yellow-subtle "#fff576")
+ (bg-blue-subtle "#ccdfff")
+ (bg-magenta-subtle "#ffddff")
+ (bg-cyan-subtle "#bfefff")
+
+ (bg-red-nuanced "#fff1f0")
+ (bg-green-nuanced "#ecf7ed")
+ (bg-yellow-nuanced "#fff3da")
+ (bg-blue-nuanced "#f3f3ff")
+ (bg-magenta-nuanced "#fdf0ff")
+ (bg-cyan-nuanced "#ebf6fa")
+
+;;; Uncommon accent backgrounds
+
+ (bg-ochre "#f0e0cc")
+ (bg-lavender "#dfdbfa")
+ (bg-sage "#c0e7d4")
+
+;;; Graphs
+
+ (bg-graph-red-0 "#ef7969")
+ (bg-graph-red-1 "#ffaab4")
+ (bg-graph-green-0 "#4faa09")
+ (bg-graph-green-1 "#8fef00")
+ (bg-graph-yellow-0 "#ffcf00")
+ (bg-graph-yellow-1 "#f9ff00")
+ (bg-graph-blue-0 "#7090ff")
+ (bg-graph-blue-1 "#9fc6ff")
+ (bg-graph-magenta-0 "#e07fff")
+ (bg-graph-magenta-1 "#fad0ff")
+ (bg-graph-cyan-0 "#70d3f0")
+ (bg-graph-cyan-1 "#afefff")
+
+;;; Special purpose
+
+ (bg-completion "#c0deff")
+ (bg-hover "#94d4ff")
+ (bg-hover-secondary "#f5d0a0")
+ (bg-hl-line "#dae5ec")
+ (bg-region "#bdbdbd")
+ (fg-region "#000000")
+
+ (bg-char-0 "#7feaff")
+ (bg-char-1 "#ffaaff")
+ (bg-char-2 "#dff000")
+
+ (bg-mode-line-active "#c8c8c8")
+ (fg-mode-line-active "#000000")
+ (border-mode-line-active "#5a5a5a")
+ (bg-mode-line-inactive "#e6e6e6")
+ (fg-mode-line-inactive "#585858")
+ (border-mode-line-inactive "#a3a3a3")
+
+ (modeline-err "#7f0000")
+ (modeline-warning "#5f0070")
+ (modeline-info "#002580")
+
+ (bg-tab-bar "#dfdfdf")
+ (bg-tab-current "#ffffff")
+ (bg-tab-other "#c2c2c2")
+
+;;; Diffs
+
+ (bg-added "#c1f2d1")
+ (bg-added-faint "#d8f8e1")
+ (bg-added-refine "#aee5be")
+ (bg-added-fringe "#6cc06c")
+ (fg-added "#005000")
+ (fg-added-intense "#006700")
+
+ (bg-changed "#ffdfa9")
+ (bg-changed-faint "#ffefbf")
+ (bg-changed-refine "#fac090")
+ (bg-changed-fringe "#d7c20a")
+ (fg-changed "#553d00")
+ (fg-changed-intense "#655000")
+
+ (bg-removed "#ffd8d5")
+ (bg-removed-faint "#ffe9e9")
+ (bg-removed-refine "#f3b5af")
+ (bg-removed-fringe "#d84a4f")
+ (fg-removed "#8f1313")
+ (fg-removed-intense "#aa2222")
+
+ (bg-diff-context "#f3f3f3")
+
+;;; Paren match
+
+ (bg-paren-match "#5fcfff")
+ (bg-paren-expression "#efd3f5")
+ (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+ (fringe bg-dim)
+ (cursor fg-main)
+
+ (keybind blue-cooler)
+ (name magenta)
+ (identifier yellow-cooler)
+
+ (err red)
+ (warning yellow-warmer)
+ (info cyan-cooler)
+
+ (underline-err red-intense)
+ (underline-warning yellow-intense)
+ (underline-note cyan-intense)
+
+;;;; Code mappings
+
+ (builtin magenta-warmer)
+ (comment fg-dim)
+ (constant blue-cooler)
+ (docstring green-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
+ (preprocessor red-cooler)
+ (string blue-warmer)
+ (type cyan-cooler)
+ (variable cyan)
+ (rx-construct green-cooler)
+ (rx-backslash magenta)
+
+;;;; Accent mappings
+
+ (accent-0 blue)
+ (accent-1 magenta-warmer)
+ (accent-2 cyan)
+ (accent-3 red)
+
+;;;; Button mappings
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-active)
+ (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+ (fg-completion-match-0 blue)
+ (fg-completion-match-1 magenta-warmer)
+ (fg-completion-match-2 cyan)
+ (fg-completion-match-3 red)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+ (date-common cyan)
+ (date-deadline red)
+ (date-event fg-alt)
+ (date-holiday magenta)
+ (date-now fg-main)
+ (date-scheduled yellow-warmer)
+ (date-weekday cyan)
+ (date-weekend red-faint)
+
+;;;; Line number mappings
+
+ (fg-line-number-inactive fg-dim)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-dim)
+ (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+ (fg-link blue-warmer)
+ (bg-link unspecified)
+ (underline-link blue-warmer)
+
+ (fg-link-symbolic cyan)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic cyan)
+
+ (fg-link-visited magenta)
+ (bg-link-visited unspecified)
+ (underline-link-visited magenta)
+
+;;;; Mail mappings
+
+ (mail-cite-0 blue-faint)
+ (mail-cite-1 yellow-warmer)
+ (mail-cite-2 cyan-cooler)
+ (mail-cite-3 red-cooler)
+ (mail-part cyan)
+ (mail-recipient magenta-cooler)
+ (mail-subject magenta-warmer)
+ (mail-other magenta-faint)
+
+;;;; Prompt mappings
+
+ (fg-prompt cyan-cooler)
+ (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+ (prose-block fg-dim)
+ (prose-code green-cooler)
+ (prose-done green)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo red)
+ (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+ (rainbow-0 fg-main)
+ (rainbow-1 magenta-intense)
+ (rainbow-2 cyan-intense)
+ (rainbow-3 red-warmer)
+ (rainbow-4 yellow-intense)
+ (rainbow-5 magenta-cooler)
+ (rainbow-6 green-intense)
+ (rainbow-7 blue-warmer)
+ (rainbow-8 magenta-warmer)
+
+;;;; Heading mappings
+
+ (fg-heading-0 cyan-cooler)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 yellow-faint)
+ (fg-heading-3 fg-alt)
+ (fg-heading-4 magenta)
+ (fg-heading-5 green-faint)
+ (fg-heading-6 red-faint)
+ (fg-heading-7 cyan-warmer)
+ (fg-heading-8 fg-dim)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 unspecified)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 unspecified)
+ (bg-heading-4 unspecified)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 unspecified)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 unspecified)
+ (overline-heading-2 unspecified)
+ (overline-heading-3 unspecified)
+ (overline-heading-4 unspecified)
+ (overline-heading-5 unspecified)
+ (overline-heading-6 unspecified)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "The entire palette of the `modus-operandi' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
+with both as symbols. The latter is a named color that already
+exists in the palette and is associated with a HEX-VALUE.")
+
+ (defcustom modus-operandi-palette-overrides nil
+ "Overrides for `modus-operandi-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Palette overrides"))
+
+ (modus-themes-theme modus-operandi
+ modus-operandi-palette
+ modus-operandi-palette-overrides)
(provide-theme 'modus-operandi))
diff --git a/etc/themes/modus-operandi-tinted-theme.el b/etc/themes/modus-operandi-tinted-theme.el
new file mode 100644
index 00000000000..4bb820cf686
--- /dev/null
+++ b/etc/themes/modus-operandi-tinted-theme.el
@@ -0,0 +1,416 @@
+;;; modus-operandi-tinted-theme.el --- Elegant, highly legible and customizable light theme -*- lexical-binding:t -*-
+
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+;; URL: https://git.sr.ht/~protesilaos/modus-themes
+;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
+
+;;; Code:
+
+
+
+(eval-and-compile
+ (unless (and (fboundp 'require-theme)
+ load-file-name
+ (equal (file-name-directory load-file-name)
+ (expand-file-name "themes/" data-directory))
+ (require-theme 'modus-themes t))
+ (require 'modus-themes))
+
+ (deftheme modus-operandi-tinted
+ "Elegant, highly legible and customizable light theme.
+Conforms with the highest legibility standard for color contrast
+between background and foreground in any given piece of text,
+which corresponds to a minimum contrast in relative luminance of
+7:1 (WCAG AAA standard).")
+
+ (defconst modus-operandi-tinted-palette
+ '(
+;;; Basic values
+
+ (bg-main "#fbf7f0")
+ (bg-dim "#ede7db")
+ (fg-main "#000000")
+ (fg-dim "#595959")
+ (fg-alt "#193668")
+ (bg-active "#c9b9b0")
+ (bg-inactive "#dfd5cf")
+ (border "#9f9690")
+
+;;; Common accent foregrounds
+
+ (red "#a60000")
+ (red-warmer "#972500")
+ (red-cooler "#a0132f")
+ (red-faint "#7f0000")
+ (red-intense "#d00000")
+ (green "#006800")
+ (green-warmer "#316500")
+ (green-cooler "#00663f")
+ (green-faint "#2a5045")
+ (green-intense "#008900")
+ (yellow "#6f5500")
+ (yellow-warmer "#884900")
+ (yellow-cooler "#7a4f2f")
+ (yellow-faint "#624416")
+ (yellow-intense "#808000")
+ (blue "#0031a9")
+ (blue-warmer "#3548cf")
+ (blue-cooler "#0000b0")
+ (blue-faint "#003497")
+ (blue-intense "#0000ff")
+ (magenta "#721045")
+ (magenta-warmer "#8f0075")
+ (magenta-cooler "#531ab6")
+ (magenta-faint "#7c318f")
+ (magenta-intense "#dd22dd")
+ (cyan "#005e8b")
+ (cyan-warmer "#3f578f")
+ (cyan-cooler "#005f5f")
+ (cyan-faint "#005077")
+ (cyan-intense "#008899")
+
+;;; Uncommon accent foregrounds
+
+ (rust "#8a290f")
+ (gold "#80601f")
+ (olive "#56692d")
+ (slate "#2f3f83")
+ (indigo "#4a3a8a")
+ (maroon "#731c52")
+ (pink "#7b435c")
+
+;;; Common accent backgrounds
+
+ (bg-red-intense "#ff8f88")
+ (bg-green-intense "#8adf80")
+ (bg-yellow-intense "#f3d000")
+ (bg-blue-intense "#bfc9ff")
+ (bg-magenta-intense "#dfa0f0")
+ (bg-cyan-intense "#a4d5f9")
+
+ (bg-red-subtle "#ffcfbf")
+ (bg-green-subtle "#b3fabf")
+ (bg-yellow-subtle "#fff576")
+ (bg-blue-subtle "#ccdfff")
+ (bg-magenta-subtle "#ffddff")
+ (bg-cyan-subtle "#bfefff")
+
+ (bg-red-nuanced "#ffe8f0")
+ (bg-green-nuanced "#e0f5e0")
+ (bg-yellow-nuanced "#f9ead0")
+ (bg-blue-nuanced "#ebebff")
+ (bg-magenta-nuanced "#f6e7ff")
+ (bg-cyan-nuanced "#e1f3fc")
+
+;;; Uncommon accent backgrounds
+
+ (bg-ochre "#f0e0cc")
+ (bg-lavender "#dfdbfa")
+ (bg-sage "#c0e7d4")
+
+;;; Graphs
+
+ (bg-graph-red-0 "#ef7969")
+ (bg-graph-red-1 "#ffaab4")
+ (bg-graph-green-0 "#4faa09")
+ (bg-graph-green-1 "#8fef00")
+ (bg-graph-yellow-0 "#ffcf00")
+ (bg-graph-yellow-1 "#f9ff00")
+ (bg-graph-blue-0 "#7090ff")
+ (bg-graph-blue-1 "#9fc6ff")
+ (bg-graph-magenta-0 "#e07fff")
+ (bg-graph-magenta-1 "#fad0ff")
+ (bg-graph-cyan-0 "#70d3f0")
+ (bg-graph-cyan-1 "#afefff")
+
+;;; Special purpose
+
+ (bg-completion "#f0c1cf")
+ (bg-hover "#94d4ff")
+ (bg-hover-secondary "#f5d0a0")
+ (bg-hl-line "#f1d5d0")
+ (bg-region "#c2bcb5")
+ (fg-region "#000000")
+
+ (bg-char-0 "#7feaff")
+ (bg-char-1 "#ffaaff")
+ (bg-char-2 "#dff000")
+
+ (bg-mode-line-active "#cab9b2")
+ (fg-mode-line-active "#000000")
+ (border-mode-line-active "#545454")
+ (bg-mode-line-inactive "#dfd9cf")
+ (fg-mode-line-inactive "#585858")
+ (border-mode-line-inactive "#a59a94")
+
+ (modeline-err "#7f0000")
+ (modeline-warning "#5f0070")
+ (modeline-info "#002580")
+
+ (bg-tab-bar "#e0d4ce")
+ (bg-tab-current "#fbf7f0")
+ (bg-tab-other "#c8b8b2")
+
+;;; Diffs
+
+ (bg-added "#c3ebc1")
+ (bg-added-faint "#dcf8d1")
+ (bg-added-refine "#acd6a5")
+ (bg-added-fringe "#6cc06c")
+ (fg-added "#005000")
+ (fg-added-intense "#006700")
+
+ (bg-changed "#ffdfa9")
+ (bg-changed-faint "#ffefbf")
+ (bg-changed-refine "#fac090")
+ (bg-changed-fringe "#c0b200")
+ (fg-changed "#553d00")
+ (fg-changed-intense "#655000")
+
+ (bg-removed "#f4d0cf")
+ (bg-removed-faint "#ffe9e5")
+ (bg-removed-refine "#f3b5a7")
+ (bg-removed-fringe "#d84a4f")
+ (fg-removed "#8f1313")
+ (fg-removed-intense "#aa2222")
+
+ (bg-diff-context "#efe9df")
+
+;;; Paren match
+
+ (bg-paren-match "#7fdfcf")
+ (bg-paren-expression "#efd3f5")
+ (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+ (fringe bg-dim)
+ (cursor red)
+
+ (keybind blue-cooler)
+ (name magenta)
+ (identifier yellow-cooler)
+
+ (err red)
+ (warning yellow-warmer)
+ (info cyan-cooler)
+
+ (underline-err red-intense)
+ (underline-warning yellow-intense)
+ (underline-note cyan-intense)
+
+;;;; Code mappings
+
+ (builtin magenta-warmer)
+ (comment red-faint)
+ (constant blue-cooler)
+ (docstring green-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
+ (preprocessor red-cooler)
+ (string blue-warmer)
+ (type cyan-cooler)
+ (variable cyan)
+ (rx-construct green-cooler)
+ (rx-backslash magenta)
+
+;;;; Accent mappings
+
+ (accent-0 blue)
+ (accent-1 magenta-warmer)
+ (accent-2 cyan)
+ (accent-3 red)
+
+;;;; Button mappings
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-active)
+ (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+ (fg-completion-match-0 blue)
+ (fg-completion-match-1 magenta-warmer)
+ (fg-completion-match-2 cyan)
+ (fg-completion-match-3 red)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+ (date-common cyan)
+ (date-deadline red)
+ (date-event fg-alt)
+ (date-holiday magenta)
+ (date-now fg-main)
+ (date-scheduled yellow-warmer)
+ (date-weekday cyan)
+ (date-weekend red-faint)
+
+;;;; Line number mappings
+
+ (fg-line-number-inactive fg-dim)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-dim)
+ (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+ (fg-link blue-warmer)
+ (bg-link unspecified)
+ (underline-link blue-warmer)
+
+ (fg-link-symbolic cyan)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic cyan)
+
+ (fg-link-visited magenta)
+ (bg-link-visited unspecified)
+ (underline-link-visited magenta)
+
+;;;; Mail mappings
+
+ (mail-cite-0 blue-faint)
+ (mail-cite-1 yellow-warmer)
+ (mail-cite-2 cyan-cooler)
+ (mail-cite-3 red-cooler)
+ (mail-part cyan)
+ (mail-recipient magenta-cooler)
+ (mail-subject magenta-warmer)
+ (mail-other magenta-faint)
+
+;;;; Prompt mappings
+
+ (fg-prompt cyan-cooler)
+ (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+ (prose-block fg-dim)
+ (prose-code green-cooler)
+ (prose-done green)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo red)
+ (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+ (rainbow-0 fg-main)
+ (rainbow-1 magenta-intense)
+ (rainbow-2 cyan-intense)
+ (rainbow-3 red-warmer)
+ (rainbow-4 yellow-intense)
+ (rainbow-5 magenta-cooler)
+ (rainbow-6 green-intense)
+ (rainbow-7 blue-warmer)
+ (rainbow-8 magenta-warmer)
+
+;;;; Heading mappings
+
+ (fg-heading-0 cyan-cooler)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 yellow-faint)
+ (fg-heading-3 fg-alt)
+ (fg-heading-4 magenta)
+ (fg-heading-5 green-faint)
+ (fg-heading-6 red-faint)
+ (fg-heading-7 cyan-warmer)
+ (fg-heading-8 fg-dim)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 unspecified)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 unspecified)
+ (bg-heading-4 unspecified)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 unspecified)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 unspecified)
+ (overline-heading-2 unspecified)
+ (overline-heading-3 unspecified)
+ (overline-heading-4 unspecified)
+ (overline-heading-5 unspecified)
+ (overline-heading-6 unspecified)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "The entire palette of the `modus-operandi-tinted' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
+with both as symbols. The latter is a named color that already
+exists in the palette and is associated with a HEX-VALUE.")
+
+ (defcustom modus-operandi-tinted-palette-overrides nil
+ "Overrides for `modus-operandi-tinted-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Palette overrides"))
+
+ (modus-themes-theme modus-operandi-tinted
+ modus-operandi-tinted-palette
+ modus-operandi-tinted-palette-overrides)
+
+ (provide-theme 'modus-operandi-tinted))
+
+;;;###theme-autoload
+(put 'modus-operandi-tinted 'theme-properties '(:background-mode light :kind color-scheme :family modus))
+
+;;; modus-operandi-tinted-theme.el ends here
diff --git a/etc/themes/modus-themes.el b/etc/themes/modus-themes.el
index 79409cd01b1..805f25b458f 100644
--- a/etc/themes/modus-themes.el
+++ b/etc/themes/modus-themes.el
@@ -1,12 +1,12 @@
;;; modus-themes.el --- Elegant, highly legible and customizable themes -*- lexical-binding:t -*-
-;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
-;; Version: 3.0.0
+;; Version: 4.1.0
;; Package-Requires: ((emacs "27.1"))
;; Keywords: faces, theme, accessibility
@@ -27,57 +27,11 @@
;;; Commentary:
;;
-;; The Modus themes conform with the highest standard for color-contrast
-;; accessibility between background and foreground values (WCAG AAA).
-;; This file contains all customization variables, helper functions,
-;; interactive commands, and face specifications. Please refer to the
-;; official Info manual for further documentation (distributed with the
-;; themes, or available at: <https://protesilaos.com/emacs/modus-themes>).
-;;
-;; The themes share the following customization variables:
-;;
-;; modus-themes-completions (alist)
-;; modus-themes-headings (alist)
-;; modus-themes-org-agenda (alist)
-;; modus-themes-bold-constructs (boolean)
-;; modus-themes-deuteranopia (boolean)
-;; modus-themes-inhibit-reload (boolean)
-;; modus-themes-intense-mouseovers (boolean)
-;; modus-themes-italic-constructs (boolean)
-;; modus-themes-mixed-fonts (boolean)
-;; modus-themes-subtle-line-numbers (boolean)
-;; modus-themes-variable-pitch-ui (boolean)
-;; modus-themes-box-buttons (choice)
-;; modus-themes-diffs (choice)
-;; modus-themes-fringes (choice)
-;; modus-themes-hl-line (choice)
-;; modus-themes-lang-checkers (choice)
-;; modus-themes-links (choice)
-;; modus-themes-mail-citations (choice)
-;; modus-themes-markup (choice)
-;; modus-themes-mode-line (choice)
-;; modus-themes-org-blocks (choice)
-;; modus-themes-paren-match (choice)
-;; modus-themes-prompts (choice)
-;; modus-themes-region (choice)
-;; modus-themes-syntax (choice)
-;;
-;; There also exist two unique customization variables for overriding
-;; color palette values. The specifics are documented in the manual.
-;; The symbols are:
-;;
-;; modus-themes-operandi-color-overrides (alist)
-;; modus-themes-vivendi-color-overrides (alist)
-;;
-;; Check the manual for all supported packages (there are hundreds of
-;; them).
-;;
-;; For a complete view of the project, also refer to the following files
-;; (should be distributed in the same repository/directory as the
-;; current item):
-;;
-;; - modus-operandi-theme.el (Light theme)
-;; - modus-vivendi-theme.el (Dark theme)
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
@@ -88,7 +42,7 @@
(require 'subr-x))
(defgroup modus-themes ()
- "Options for `modus-operandi', `modus-vivendi' themes.
+ "User options for the Modus themes.
The Modus themes conform with the WCAG AAA standard for color
contrast between background and foreground combinations (a
minimum contrast of 7:1---the highest standard of its kind). The
@@ -103,1139 +57,156 @@ cover the blue-cyan-magenta side of the spectrum."
:tag "Modus Themes")
(defgroup modus-themes-faces ()
- "Faces defined by `modus-operandi' and `modus-vivendi' themes."
+ "Faces defined by the Modus themes."
:group 'modus-themes
:link '(info-link "(modus-themes) Top")
:prefix "modus-themes-"
:tag "Modus Themes Faces")
-(defvar modus-themes--version "3.0.0"
- "Current version of the Modus themes.
-
-The version either is the last tagged release, such as '1.0.0',
-or an in-development version like '1.1.0-dev'. As we use
-semantic versioning, tags of the '1.0.1' sort are not reported:
-those would count as part of '1.1.0-dev'.")
-
-;;;###autoload
-(defun modus-themes-version (&optional insert)
- "Print `modus-themes--version' in the echo area.
-If optional INSERT argument is provided from Lisp or as a prefix
-argument, insert the `modus-themes--version' at point."
- (interactive "P")
- (funcall (if insert 'insert 'message) modus-themes--version))
-
-;;;###autoload
-(defun modus-themes-report-bug ()
- "Submit a bug report or issue to the Modus themes developers."
- (interactive)
- (reporter-submit-bug-report
- "~protesilaos/modus-themes@lists.sr.ht"
- (format "modus-themes (%s)\n" modus-themes--version)
- ;; I am just getting started with this. Let's first see what people
- ;; think about it.
- nil nil nil nil))
-
-;;; Variables for each theme variant
-
-;;;; Modus Operandi
-
-(defconst modus-themes-operandi-colors
- '(;; base values
- (bg-main . "#ffffff") (fg-main . "#000000")
- (bg-dim . "#f8f8f8") (fg-dim . "#282828")
- (bg-alt . "#f0f0f0") (fg-alt . "#505050")
- ;; specifically for on/off states and must be combined with
- ;; themselves, though the backgrounds are also meant to be used with
- ;; other "active" values, defined further below; bg-active-accent
- ;; can work as a substitute for bg-active
- (bg-active . "#d7d7d7") (fg-active . "#0a0a0a")
- (bg-inactive . "#efefef") (fg-inactive . "#404148")
- (bg-active-accent . "#d0d6ff")
- ;; these special values are intended as alternatives to the base
- ;; values for cases where we need to avoid confusion between the
- ;; highlighted constructs; they must either be used as pairs based
- ;; on their name or each can be combined with {fg,bg}-{main,alt,dim}
- ;; always in accordance with their role as background or foreground
- (bg-special-cold . "#dde3f4") (bg-special-faint-cold . "#f0f1ff") (fg-special-cold . "#093060")
- (bg-special-mild . "#c4ede0") (bg-special-faint-mild . "#ebf5eb") (fg-special-mild . "#184034")
- (bg-special-warm . "#f0e0d4") (bg-special-faint-warm . "#fef2ea") (fg-special-warm . "#5d3026")
- (bg-special-calm . "#f8ddea") (bg-special-faint-calm . "#faeff9") (fg-special-calm . "#61284f")
- ;; foregrounds that can be combined with bg-main, bg-dim, bg-alt
- (red . "#a60000")
- (red-alt . "#972500")
- (red-alt-other . "#a0132f")
- (red-faint . "#7f1010")
- (red-alt-faint . "#702f00")
- (red-alt-other-faint . "#7f002f")
- (green . "#005e00")
- (green-alt . "#315b00")
- (green-alt-other . "#145c33")
- (green-faint . "#104410")
- (green-alt-faint . "#30440f")
- (green-alt-other-faint . "#0f443f")
- (yellow . "#813e00")
- (yellow-alt . "#70480f")
- (yellow-alt-other . "#863927")
- (yellow-faint . "#5f4400")
- (yellow-alt-faint . "#5d5000")
- (yellow-alt-other-faint . "#5e3a20")
- (blue . "#0031a9")
- (blue-alt . "#2544bb")
- (blue-alt-other . "#0000c0")
- (blue-faint . "#003497")
- (blue-alt-faint . "#0f3d8c")
- (blue-alt-other-faint . "#001087")
- (magenta . "#721045")
- (magenta-alt . "#8f0075")
- (magenta-alt-other . "#5317ac")
- (magenta-faint . "#752f50")
- (magenta-alt-faint . "#7b206f")
- (magenta-alt-other-faint . "#55348e")
- (cyan . "#00538b")
- (cyan-alt . "#30517f")
- (cyan-alt-other . "#005a5f")
- (cyan-faint . "#005077")
- (cyan-alt-faint . "#354f6f")
- (cyan-alt-other-faint . "#125458")
- ;; these foreground values can only be combined with bg-main and are
- ;; thus not suitable for general purpose highlighting
- (red-intense . "#b60000")
- (orange-intense . "#904200")
- (green-intense . "#006800")
- (yellow-intense . "#605b00")
- (blue-intense . "#1f1fce")
- (magenta-intense . "#a8007f")
- (purple-intense . "#7f10d0")
- (cyan-intense . "#005f88")
- ;; those foregrounds are meant exclusively for bg-active, bg-inactive
- (red-active . "#8a0000")
- (green-active . "#004c2e")
- (yellow-active . "#702f00")
- (blue-active . "#0030b4")
- (magenta-active . "#5c2092")
- (cyan-active . "#003f8a")
- ;; the "subtle" values below be combined with fg-dim, while the
- ;; "intense" should be paired with fg-main
- (red-subtle-bg . "#f2b0a2")
- (red-intense-bg . "#ff9f9f")
- (green-subtle-bg . "#aecf90")
- (green-intense-bg . "#5ada88")
- (yellow-subtle-bg . "#e4c340")
- (yellow-intense-bg . "#f5df23")
- (blue-subtle-bg . "#b5d0ff")
- (blue-intense-bg . "#77baff")
- (magenta-subtle-bg . "#f0d3ff")
- (magenta-intense-bg . "#d5baff")
- (cyan-subtle-bg . "#c0efff")
- (cyan-intense-bg . "#42cbd4")
- ;; those background values must be combined with fg-main and should
- ;; only be used for indicators that are placed on the fringes
- (red-fringe-bg . "#f08290")
- (green-fringe-bg . "#62c86a")
- (yellow-fringe-bg . "#dbba3f")
- (blue-fringe-bg . "#82afff")
- (magenta-fringe-bg . "#e0a3ff")
- (cyan-fringe-bg . "#2fcddf")
- ;; those background values should only be used for graphs or similar
- ;; applications where colored blocks are expected to be positioned
- ;; next to each other
- (red-graph-0-bg . "#ef7969")
- (red-graph-1-bg . "#ffaab4")
- (green-graph-0-bg . "#4faa09")
- (green-graph-1-bg . "#8fef00")
- (yellow-graph-0-bg . "#ffcf00")
- (yellow-graph-1-bg . "#f9ff00")
- (blue-graph-0-bg . "#7090ff")
- (blue-graph-1-bg . "#9fc6ff")
- (magenta-graph-0-bg . "#e07fff")
- (magenta-graph-1-bg . "#fad0ff")
- (cyan-graph-0-bg . "#70d3f0")
- (cyan-graph-1-bg . "#afefff")
- ;; the following are for cases where both the foreground and the
- ;; background need to have a similar hue and so must be combined
- ;; with themselves, even though the foregrounds can be paired with
- ;; any of the base backgrounds
- (red-refine-bg . "#ffcccc") (red-refine-fg . "#780000")
- (green-refine-bg . "#aceaac") (green-refine-fg . "#004c00")
- (yellow-refine-bg . "#fff29a") (yellow-refine-fg . "#604000")
- (blue-refine-bg . "#8fcfff") (blue-refine-fg . "#002f88")
- (magenta-refine-bg . "#ffccff") (magenta-refine-fg . "#770077")
- (cyan-refine-bg . "#8eecf4") (cyan-refine-fg . "#004850")
- ;; the "nuanced" backgrounds can be combined with all of the above
- ;; foregrounds, as well as those included here, while the "nuanced"
- ;; foregrounds can in turn also be combined with bg-main, bg-dim,
- ;; bg-alt
- (red-nuanced-bg . "#fff1f0") (red-nuanced-fg . "#5f0000")
- (green-nuanced-bg . "#ecf7ed") (green-nuanced-fg . "#004000")
- (yellow-nuanced-bg . "#fff3da") (yellow-nuanced-fg . "#3f3000")
- (blue-nuanced-bg . "#f3f3ff") (blue-nuanced-fg . "#201f55")
- (magenta-nuanced-bg . "#fdf0ff") (magenta-nuanced-fg . "#541f4f")
- (cyan-nuanced-bg . "#ebf6fa") (cyan-nuanced-fg . "#0f3360")
- ;; the following are reserved for specific cases
- ;;
- ;; bg-hl-line is between bg-dim and bg-alt, so it should
- ;; work with all accents that cover those two, plus bg-main
- ;;
- ;; bg-hl-alt and bg-hl-alt-intense should only be used when no
- ;; other grayscale or fairly neutral background is available to
- ;; properly draw attention to a given construct
- ;;
- ;; bg-header is between bg-active and bg-inactive, so it
- ;; can be combined with any of the "active" values, plus the
- ;; "special" and base foreground colors
- ;;
- ;; bg-paren-match, bg-paren-match-intense, bg-region,
- ;; bg-region-accent and bg-tab-active must be combined with fg-main,
- ;; while bg-tab-inactive should be combined with fg-dim, whereas
- ;; bg-tab-inactive-alt goes together with fg-main
- ;;
- ;; bg-completion-* and bg-char-* variants are meant to be combined
- ;; with fg-main
- ;;
- ;; fg-escape-char-construct and fg-escape-char-backslash can
- ;; be combined bg-main, bg-dim, bg-alt
- ;;
- ;; fg-lang-error, fg-lang-warning, fg-lang-note can be
- ;; combined with bg-main, bg-dim, bg-alt
- ;;
- ;; fg-mark-sel, fg-mark-del, fg-mark-alt can be combined
- ;; with bg-main, bg-dim, bg-alt, bg-hl-line
- ;;
- ;; fg-unfocused must be combined with bg-main
- ;;
- ;; fg-docstring, fg-comment-yellow can be combined with
- ;; bg-main, bg-dim, bg-alt
- ;;
- ;; the window divider colors apply to faces with just an fg value
- ;;
- ;; all pairs are combinable with themselves
- (bg-hl-line . "#f2eff3")
- (bg-hl-line-intense . "#e0e0e0")
- (bg-hl-line-intense-accent . "#cfe2ff")
- (bg-hl-alt . "#fbeee0")
- (bg-hl-alt-intense . "#e8dfd1")
- (bg-paren-match . "#e0af82")
- (bg-paren-match-intense . "#c488ff")
- (bg-paren-expression . "#dff0ff")
- (bg-region . "#bcbcbc")
- (bg-region-accent . "#afafef")
- (bg-region-accent-subtle . "#efdfff")
-
- (bg-completion . "#b7dbff")
- (bg-completion-subtle . "#def3ff")
-
- (bg-char-0 . "#7feaff")
- (bg-char-1 . "#ffaaff")
- (bg-char-2 . "#dff000")
-
- (bg-tab-active . "#f6f6f6")
- (bg-tab-inactive . "#b7b7b7")
- (bg-tab-inactive-accent . "#a9b4f6")
- (bg-tab-inactive-alt . "#9f9f9f")
- (bg-tab-inactive-alt-accent . "#9fa6d0")
-
- (red-tab . "#680000")
- (green-tab . "#003900")
- (yellow-tab . "#393000")
- (orange-tab . "#502300")
- (blue-tab . "#000080")
- (cyan-tab . "#052f60")
- (magenta-tab . "#5f004d")
- (purple-tab . "#400487")
-
- (fg-escape-char-construct . "#8b1030")
- (fg-escape-char-backslash . "#654d0f")
-
- (fg-lang-error . "#9f004f")
- (fg-lang-warning . "#604f0f")
- (fg-lang-note . "#4040ae")
- (fg-lang-underline-error . "#ef4f54")
- (fg-lang-underline-warning . "#cf9f00")
- (fg-lang-underline-note . "#3f6fef")
-
- (fg-window-divider-inner . "#888888")
- (fg-window-divider-outer . "#585858")
-
- (fg-unfocused . "#56576d")
-
- (fg-docstring . "#2a486a")
- (fg-comment-yellow . "#794319")
-
- (bg-header . "#e5e5e5") (fg-header . "#2a2a2a")
-
- (bg-whitespace . "#f5efef") (fg-whitespace . "#624956")
-
- (bg-diff-heading . "#b7cfe0") (fg-diff-heading . "#041645")
- (bg-diff-added . "#d4fad4") (fg-diff-added . "#004500")
- (bg-diff-added-deuteran . "#daefff") (fg-diff-added-deuteran . "#002044")
- (bg-diff-changed . "#fcefcf") (fg-diff-changed . "#524200")
- (bg-diff-removed . "#ffe8ef") (fg-diff-removed . "#691616")
-
- (bg-diff-refine-added . "#94cf94") (fg-diff-refine-added . "#002a00")
- (bg-diff-refine-added-deuteran . "#77c0ef") (fg-diff-refine-added-deuteran . "#000035")
- (bg-diff-refine-changed . "#cccf8f") (fg-diff-refine-changed . "#302010")
- (bg-diff-refine-removed . "#daa2b0") (fg-diff-refine-removed . "#400000")
-
- (bg-diff-focus-added . "#bbeabb") (fg-diff-focus-added . "#002c00")
- (bg-diff-focus-added-deuteran . "#bacfff") (fg-diff-focus-added-deuteran . "#001755")
- (bg-diff-focus-changed . "#ecdfbf") (fg-diff-focus-changed . "#392900")
- (bg-diff-focus-removed . "#efcbcf") (fg-diff-focus-removed . "#4a0000")
-
- (bg-mark-sel . "#a0f0cf") (fg-mark-sel . "#005040")
- (bg-mark-del . "#ffccbb") (fg-mark-del . "#840040")
- (bg-mark-alt . "#f5d88f") (fg-mark-alt . "#782900"))
- "The entire palette of the `modus-operandi' theme.
-Each element has the form (NAME . HEX) with the former as a
-symbol and the latter as a string.")
-
-;;;; Modus Vivendi
-
-(defconst modus-themes-vivendi-colors
- '(;; base values
- (bg-main . "#000000") (fg-main . "#ffffff")
- (bg-dim . "#100f10") (fg-dim . "#e0e6f0")
- (bg-alt . "#191a1b") (fg-alt . "#a8a8a8")
- ;; specifically for on/off states and must be combined with
- ;; themselves, though the backgrounds are also meant to be used with
- ;; other "active" values, defined further below; bg-active-accent
- ;; can work as a substitute for bg-active
- (bg-active . "#323232") (fg-active . "#f4f4f4")
- (bg-inactive . "#1e1e1e") (fg-inactive . "#bfc0c4")
- (bg-active-accent . "#2a2a66")
- ;; these special values are intended as alternatives to the base
- ;; values for cases where we need to avoid confusion between the
- ;; highlighted constructs; they must either be used as pairs based
- ;; on their name or each can be combined with {fg,bg}-{main,alt,dim}
- ;; always in accordance with their role as background or foreground
- (bg-special-cold . "#203448") (bg-special-faint-cold . "#0e183a") (fg-special-cold . "#c6eaff")
- (bg-special-mild . "#00322e") (bg-special-faint-mild . "#001f1a") (fg-special-mild . "#bfebe0")
- (bg-special-warm . "#382f27") (bg-special-faint-warm . "#241613") (fg-special-warm . "#f8dec0")
- (bg-special-calm . "#392a48") (bg-special-faint-calm . "#251232") (fg-special-calm . "#fbd6f4")
- ;; foregrounds that can be combined with bg-main, bg-dim, bg-alt
- (red . "#ff8059")
- (red-alt . "#ef8b50")
- (red-alt-other . "#ff9077")
- (red-faint . "#ffa0a0")
- (red-alt-faint . "#f5aa80")
- (red-alt-other-faint . "#ff9fbf")
- (green . "#44bc44")
- (green-alt . "#70b900")
- (green-alt-other . "#00c06f")
- (green-faint . "#78bf78")
- (green-alt-faint . "#99b56f")
- (green-alt-other-faint . "#88bf99")
- (yellow . "#d0bc00")
- (yellow-alt . "#c0c530")
- (yellow-alt-other . "#d3b55f")
- (yellow-faint . "#d2b580")
- (yellow-alt-faint . "#cabf77")
- (yellow-alt-other-faint . "#d0ba95")
- (blue . "#2fafff")
- (blue-alt . "#79a8ff" )
- (blue-alt-other . "#00bcff")
- (blue-faint . "#82b0ec")
- (blue-alt-faint . "#a0acef")
- (blue-alt-other-faint . "#80b2f0")
- (magenta . "#feacd0")
- (magenta-alt . "#f78fe7")
- (magenta-alt-other . "#b6a0ff")
- (magenta-faint . "#e0b2d6")
- (magenta-alt-faint . "#ef9fe4")
- (magenta-alt-other-faint . "#cfa6ff")
- (cyan . "#00d3d0")
- (cyan-alt . "#4ae2f0")
- (cyan-alt-other . "#6ae4b9")
- (cyan-faint . "#90c4ed")
- (cyan-alt-faint . "#a0bfdf")
- (cyan-alt-other-faint . "#a4d0bb")
- ;; these foreground values can only be combined with bg-main and are
- ;; thus not suitable for general purpose highlighting
- (red-intense . "#fe6060")
- (orange-intense . "#fba849")
- (green-intense . "#4fe42f")
- (yellow-intense . "#f0dd60")
- (blue-intense . "#4fafff")
- (magenta-intense . "#ff62d4")
- (purple-intense . "#9f80ff")
- (cyan-intense . "#3fdfd0")
- ;; those foregrounds are meant exclusively for bg-active, bg-inactive
- (red-active . "#ffa7ba")
- (green-active . "#70d73f")
- (yellow-active . "#dbbe5f")
- (blue-active . "#34cfff")
- (magenta-active . "#d5b1ff")
- (cyan-active . "#00d8b4")
- ;; the "subtle" values below be combined with fg-dim, while the
- ;; "intense" should be paired with fg-main
- (red-subtle-bg . "#762422")
- (red-intense-bg . "#a4202a")
- (green-subtle-bg . "#2f4a00")
- (green-intense-bg . "#006800")
- (yellow-subtle-bg . "#604200")
- (yellow-intense-bg . "#874900")
- (blue-subtle-bg . "#10387c")
- (blue-intense-bg . "#2a40b8")
- (magenta-subtle-bg . "#49366e")
- (magenta-intense-bg . "#7042a2")
- (cyan-subtle-bg . "#00415e")
- (cyan-intense-bg . "#005f88")
- ;; those background values must be combined with fg-main and should
- ;; only be used for indicators that are placed on the fringes
- (red-fringe-bg . "#8f1f4b")
- (green-fringe-bg . "#006700")
- (yellow-fringe-bg . "#6f4f00")
- (blue-fringe-bg . "#3f33af")
- (magenta-fringe-bg . "#6f2f89")
- (cyan-fringe-bg . "#004f8f")
- ;; those background values should only be used for graphs or similar
- ;; applications where colored blocks are expected to be positioned
- ;; next to each other
- (red-graph-0-bg . "#b52c2c")
- (red-graph-1-bg . "#702020")
- (green-graph-0-bg . "#4fd100")
- (green-graph-1-bg . "#007800")
- (yellow-graph-0-bg . "#f1e00a")
- (yellow-graph-1-bg . "#b08600")
- (blue-graph-0-bg . "#2fafef")
- (blue-graph-1-bg . "#1f2f8f")
- (magenta-graph-0-bg . "#bf94fe")
- (magenta-graph-1-bg . "#5f509f")
- (cyan-graph-0-bg . "#47dfea")
- (cyan-graph-1-bg . "#00808f")
- ;; the following are for cases where both the foreground and the
- ;; background need to have a similar hue and so must be combined
- ;; with themselves, even though the foregrounds can be paired with
- ;; any of the base backgrounds
- (red-refine-bg . "#77002a") (red-refine-fg . "#ffb9ab")
- (green-refine-bg . "#00422a") (green-refine-fg . "#9ff0cf")
- (yellow-refine-bg . "#693200") (yellow-refine-fg . "#e2d980")
- (blue-refine-bg . "#242679") (blue-refine-fg . "#8ecfff")
- (magenta-refine-bg . "#71206a") (magenta-refine-fg . "#ffcaf0")
- (cyan-refine-bg . "#004065") (cyan-refine-fg . "#8ae4f2")
- ;; the "nuanced" backgrounds can be combined with all of the above
- ;; foregrounds, as well as those included here, while the "nuanced"
- ;; foregrounds can in turn also be combined with bg-main, bg-dim,
- ;; bg-alt
- (red-nuanced-bg . "#2c0614") (red-nuanced-fg . "#ffcccc")
- (green-nuanced-bg . "#001904") (green-nuanced-fg . "#b8e2b8")
- (yellow-nuanced-bg . "#221000") (yellow-nuanced-fg . "#dfdfb0")
- (blue-nuanced-bg . "#0f0e39") (blue-nuanced-fg . "#bfd9ff")
- (magenta-nuanced-bg . "#230631") (magenta-nuanced-fg . "#e5cfef")
- (cyan-nuanced-bg . "#041529") (cyan-nuanced-fg . "#a8e5e5")
- ;; the following are reserved for specific cases
- ;;
- ;; bg-hl-line is between bg-dim and bg-alt, so it should
- ;; work with all accents that cover those two, plus bg-main
- ;;
- ;; bg-hl-alt and bg-hl-alt-intense should only be used when no
- ;; other grayscale or fairly neutral background is available to
- ;; properly draw attention to a given construct
- ;;
- ;; bg-header is between bg-active and bg-inactive, so it
- ;; can be combined with any of the "active" values, plus the
- ;; "special" and base foreground colors
- ;;
- ;; bg-paren-match, bg-paren-match-intense, bg-region,
- ;; bg-region-accent and bg-tab-active must be combined with fg-main,
- ;; while bg-tab-inactive should be combined with fg-dim, whereas
- ;; bg-tab-inactive-alt goes together with fg-main
- ;;
- ;; bg-completion-* and bg-char-* variants are meant to be combined
- ;; with fg-main
- ;;
- ;; fg-escape-char-construct and fg-escape-char-backslash can
- ;; be combined bg-main, bg-dim, bg-alt
- ;;
- ;; fg-lang-error, fg-lang-warning, fg-lang-note can be
- ;; combined with bg-main, bg-dim, bg-alt
- ;;
- ;; fg-mark-sel, fg-mark-del, fg-mark-alt can be combined
- ;; with bg-main, bg-dim, bg-alt, bg-hl-line
- ;;
- ;; fg-unfocused must be combined with bg-main
- ;;
- ;; fg-docstring, fg-comment-yellow can be combined with
- ;; bg-main, bg-dim, bg-alt
- ;;
- ;; the window divider colors apply to faces with just an fg value
- ;;
- ;; all pairs are combinable with themselves
- (bg-hl-line . "#151823")
- (bg-hl-line-intense . "#292929")
- (bg-hl-line-intense-accent . "#002a4f")
- (bg-hl-alt . "#181732")
- (bg-hl-alt-intense . "#282e46")
- (bg-paren-match . "#6f3355")
- (bg-paren-match-intense . "#7416b5")
- (bg-paren-expression . "#221044")
- (bg-region . "#3c3c3c")
- (bg-region-accent . "#4f3d88")
- (bg-region-accent-subtle . "#240f55")
-
- (bg-completion . "#142f69")
- (bg-completion-subtle . "#0e194b")
-
- (bg-char-0 . "#0050af")
- (bg-char-1 . "#7f1f7f")
- (bg-char-2 . "#625a00")
-
- (bg-tab-active . "#0e0e0e")
- (bg-tab-inactive . "#424242")
- (bg-tab-inactive-accent . "#35398f")
- (bg-tab-inactive-alt . "#595959")
- (bg-tab-inactive-alt-accent . "#505588")
-
- (red-tab . "#ffc0bf")
- (green-tab . "#88ef88")
- (yellow-tab . "#d2e580")
- (orange-tab . "#f5ca80")
- (blue-tab . "#92d9ff")
- (cyan-tab . "#60e7e0")
- (magenta-tab . "#ffb8ff")
- (purple-tab . "#cfcaff")
-
- (fg-escape-char-construct . "#e7a59a")
- (fg-escape-char-backslash . "#abab00")
-
- (fg-lang-error . "#ef8690")
- (fg-lang-warning . "#b0aa00")
- (fg-lang-note . "#9d9def")
- (fg-lang-underline-error . "#ff4a6f")
- (fg-lang-underline-warning . "#d0de00")
- (fg-lang-underline-note . "#5f6fff")
-
- (fg-window-divider-inner . "#646464")
- (fg-window-divider-outer . "#969696")
-
- (fg-unfocused . "#93959b")
-
- (fg-docstring . "#b0d6f5")
- (fg-comment-yellow . "#d0a070")
-
- (bg-header . "#212121") (fg-header . "#dddddd")
-
- (bg-whitespace . "#101424") (fg-whitespace . "#aa9e9f")
-
- (bg-diff-heading . "#304466") (fg-diff-heading . "#dae7ff")
- (bg-diff-added . "#0a280a") (fg-diff-added . "#94ba94")
- (bg-diff-added-deuteran . "#001a3f") (fg-diff-added-deuteran . "#c4cdf2")
- (bg-diff-changed . "#2a2000") (fg-diff-changed . "#b0ba9f")
- (bg-diff-removed . "#40160f") (fg-diff-removed . "#c6adaa")
-
- (bg-diff-refine-added . "#005a36") (fg-diff-refine-added . "#e0f6e0")
- (bg-diff-refine-added-deuteran . "#234f8f") (fg-diff-refine-added-deuteran . "#dde4ff")
- (bg-diff-refine-changed . "#585800") (fg-diff-refine-changed . "#ffffcc")
- (bg-diff-refine-removed . "#852828") (fg-diff-refine-removed . "#ffd9eb")
-
- (bg-diff-focus-added . "#1d3c25") (fg-diff-focus-added . "#b4ddb4")
- (bg-diff-focus-added-deuteran . "#003959") (fg-diff-focus-added-deuteran . "#bfe4ff")
- (bg-diff-focus-changed . "#424200") (fg-diff-focus-changed . "#d0daaf")
- (bg-diff-focus-removed . "#601f29") (fg-diff-focus-removed . "#eebdba")
-
- (bg-mark-sel . "#002f2f") (fg-mark-sel . "#60cfa2")
- (bg-mark-del . "#5a0000") (fg-mark-del . "#ff99aa")
- (bg-mark-alt . "#3f2210") (fg-mark-alt . "#f0aa20"))
- "The entire palette of the `modus-vivendi' theme.
-Each element has the form (NAME . HEX) with the former as a
-symbol and the latter as a string.")
+(make-obsolete-variable 'modus-themes-operandi-colors nil "4.0.0")
+(make-obsolete-variable 'modus-themes-vivendi-colors nil "4.0.0")
+(make-obsolete-variable 'modus-themes-version nil "4.0.0")
+(make-obsolete 'modus-themes-report-bug nil "4.0.0")
-;;; Custom faces
+;;;; Custom faces
;; These faces are used internally to ensure consistency between various
;; groups and to streamline the evaluation of relevant customization
;; options.
-(defface modus-themes-subtle-red nil
- "Subtle red background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-subtle-green nil
- "Subtle green background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-subtle-yellow nil
- "Subtle yellow background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-subtle-blue nil
- "Subtle blue background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-subtle-magenta nil
- "Subtle magenta background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-subtle-cyan nil
- "Subtle cyan background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-subtle-neutral nil
- "Subtle gray background combined with a dimmed foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-red nil
- "Intense red background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-green nil
- "Intense green background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-yellow nil
- "Intense yellow background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-blue nil
- "Intense blue background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-magenta nil
- "Intense magenta background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-cyan nil
- "Intense cyan background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-intense-neutral nil
- "Intense gray background combined with the main foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-refine-red nil
- "Combination of accented red background and foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-refine-green nil
- "Combination of accented green background and foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-refine-yellow nil
- "Combination of accented yellow background and foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-refine-blue nil
- "Combination of accented blue background and foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-refine-magenta nil
- "Combination of accented magenta background and foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-refine-cyan nil
- "Combination of accented cyan background and foreground.
-This is used for general purpose highlighting, mostly in buffers
-or for completion interfaces.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-active-red nil
- "A red background meant for use on the mode line or similar.
-This is combined with the mode lines primary foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-active-green nil
- "A green background meant for use on the mode line or similar.
-This is combined with the mode lines primary foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-active-yellow nil
- "A yellow background meant for use on the mode line or similar.
-This is combined with the mode lines primary foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-active-blue nil
- "A blue background meant for use on the mode line or similar.
-This is combined with the mode lines primary foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-active-magenta nil
- "A magenta background meant for use on the mode line or similar.
-This is combined with the mode lines primary foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-active-cyan nil
- "A cyan background meant for use on the mode line or similar.
-This is combined with the mode lines primary foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-fringe-red nil
- "A red background meant for use on the fringe or similar.
-This is combined with the main foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-fringe-green nil
- "A green background meant for use on the fringe or similar.
-This is combined with the main foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-fringe-yellow nil
- "A yellow background meant for use on the fringe or similar.
-This is combined with the main foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-fringe-blue nil
- "A blue background meant for use on the fringe or similar.
-This is combined with the main foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-fringe-magenta nil
- "A magenta background meant for use on the fringe or similar.
-This is combined with the main foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-fringe-cyan nil
- "A cyan background meant for use on the fringe or similar.
-This is combined with the main foreground value.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-nuanced-red nil
- "A nuanced red background.
-This does not specify a foreground of its own. Instead it is
-meant to serve as the backdrop for elements such as Org blocks,
-headings, and any other surface that needs to retain the colors
-on display.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-nuanced-green nil
- "A nuanced green background.
-This does not specify a foreground of its own. Instead it is
-meant to serve as the backdrop for elements such as Org blocks,
-headings, and any other surface that needs to retain the colors
-on display.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-nuanced-yellow nil
- "A nuanced yellow background.
-This does not specify a foreground of its own. Instead it is
-meant to serve as the backdrop for elements such as Org blocks,
-headings, and any other surface that needs to retain the colors
-on display.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-nuanced-blue nil
- "A nuanced blue background.
-This does not specify a foreground of its own. Instead it is
-meant to serve as the backdrop for elements such as Org blocks,
-headings, and any other surface that needs to retain the colors
-on display.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-nuanced-magenta nil
- "A nuanced magenta background.
-This does not specify a foreground of its own. Instead it is
-meant to serve as the backdrop for elements such as Org blocks,
-headings, and any other surface that needs to retain the colors
-on display.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-nuanced-cyan nil
- "A nuanced cyan background.
-This does not specify a foreground of its own. Instead it is
-meant to serve as the backdrop for elements such as Org blocks,
-headings, and any other surface that needs to retain the colors
-on display.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-special-cold nil
- "Combines the special cold background and foreground values.
-This is intended for cases when a neutral gray background is not
-suitable and where a combination of more saturated colors would
-not be appropriate.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-special-mild nil
- "Combines the special mild background and foreground values.
-This is intended for cases when a neutral gray background is not
-suitable and where a combination of more saturated colors would
-not be appropriate.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-special-warm nil
- "Combines the special warm background and foreground values.
-This is intended for cases when a neutral gray background is not
-suitable and where a combination of more saturated colors would
-not be appropriate.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-special-calm nil
- "Combines the special calm background and foreground values.
-This is intended for cases when a neutral gray background is not
-suitable and where a combination of more saturated colors would
-not be appropriate.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-added nil
- "Combines green colors for the added state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-changed nil
- "Combines yellow colors for the changed state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-removed nil
- "Combines red colors for the removed state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-refine-added nil
- "Combines green colors for word-wise added state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-refine-changed nil
- "Combines yellow colors for word-wise changed state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-refine-removed nil
- "Combines red colors for word-wise removed state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-focus-added nil
- "Combines green colors for the focused added state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-focus-changed nil
- "Combines yellow colors for the focused changed state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-focus-removed nil
- "Combines red colors for the focused removed state in diffs.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-diff-heading nil
- "Combines blue colors for the diff hunk heading.
-The applied colors are contingent on the value assigned to
-`modus-themes-diffs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-pseudo-header nil
- "Generic style for some elements that function like headings.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-mark-alt nil
- "Combines yellow colors for marking special lines.
-This is intended for use in modes such as Dired, Ibuffer, Proced.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-mark-del nil
- "Combines red colors for marking deletable lines.
-This is intended for use in modes such as Dired, Ibuffer, Proced.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-mark-sel nil
- "Combines green colors for marking lines.
-This is intended for use in modes such as Dired, Ibuffer, Proced.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-mark-symbol nil
- "Applies a blue color and other styles for mark indicators.
-This is intended for use in modes such as Dired, Ibuffer, Proced.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-0 nil
- "General purpose face for use as the document's title.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-1 nil
- "General purpose face for use in headings level 1.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-2 nil
- "General purpose face for use in headings level 2.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-3 nil
- "General purpose face for use in headings level 3.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-4 nil
- "General purpose face for use in headings level 4.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-5 nil
- "General purpose face for use in headings level 5.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-6 nil
- "General purpose face for use in headings level 6.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-7 nil
- "General purpose face for use in headings level 7.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-heading-8 nil
- "General purpose face for use in headings level 8.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-headings' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-hl-line nil
- "General purpose face for the current line.
-The exact attributes assigned to this face are contingent on the
-values assigned to the `modus-themes-hl-line' variable.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
+(dolist (color '( red green blue yellow magenta cyan
+ red-warmer green-warmer blue-warmer yellow-warmer magenta-warmer cyan-warmer
+ red-cooler green-cooler blue-cooler yellow-cooler magenta-cooler cyan-cooler
+ red-faint green-faint blue-faint yellow-faint magenta-faint cyan-faint
+ red-intense green-intense blue-intense yellow-intense magenta-intense cyan-intense))
+ (custom-declare-face
+ (intern (format "modus-themes-fg-%s" color))
+ nil (format "Face with %s foreground." color)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(dolist (color '(red green yellow blue magenta cyan))
+ (custom-declare-face
+ (intern (format "modus-themes-nuanced-%s" color))
+ nil (format "Nuanced %s background." color)
+ :package-version '(modus-themes . "4.1.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(dolist (color '(red green yellow blue magenta cyan))
+ (custom-declare-face
+ (intern (format "modus-themes-subtle-%s" color))
+ nil (format "Subtle %s background." color)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(dolist (color '(red green yellow blue magenta cyan))
+ (custom-declare-face
+ (intern (format "modus-themes-intense-%s" color))
+ nil (format "Intense %s background." color)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(dolist (scope '(alt del sel))
+ (custom-declare-face
+ (intern (format "modus-themes-mark-%s" scope))
+ nil (format "Mark of type %s." scope)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(dolist (scope '(note warning error))
+ (custom-declare-face
+ (intern (format "modus-themes-lang-%s" scope))
+ nil (format "Linter or spell check of type %s." scope)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(dolist (scope '(current lazy))
+ (custom-declare-face
+ (intern (format "modus-themes-search-%s" scope))
+ nil (format "Search of type %s." scope)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(define-obsolete-variable-alias
+ 'modus-themes-search-success
+ 'modus-themes-search-current
+ "4.0.0")
+
+(define-obsolete-variable-alias
+ 'modus-themes-search-success-lazy
+ 'modus-themes-search-lazy
+ "4.0.0")
+
+(dolist (scope '(code macro verbatim))
+ (custom-declare-face
+ (intern (format "modus-themes-prose-%s" scope))
+ nil (format "Construct of type %s for prose." scope)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(define-obsolete-variable-alias
+ 'modus-themes-markup-code
+ 'modus-themes-prose-code
+ "4.0.0")
+
+(define-obsolete-variable-alias
+ 'modus-themes-markup-macro
+ 'modus-themes-prose-macro
+ "4.0.0")
+
+(define-obsolete-variable-alias
+ 'modus-themes-markup-verbatim
+ 'modus-themes-prose-verbatim
+ "4.0.0")
+
+(dotimes (n 9)
+ (custom-declare-face
+ (intern (format "modus-themes-heading-%d" n))
+ nil (format "Level %d heading." n)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
(defface modus-themes-bold nil
"Generic face for applying a conditional bold weight.
-This behaves in accordance with `modus-themes-bold-constructs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
+This behaves in accordance with `modus-themes-bold-constructs'."
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:group 'modus-themes-faces)
(defface modus-themes-slant nil
"Generic face for applying a conditional slant (italics).
-This behaves in accordance with `modus-themes-italic-constructs'.
-
-The actual styling of the face is done by `modus-themes-faces'."
+This behaves in accordance with `modus-themes-italic-constructs'."
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:group 'modus-themes-faces)
-(defface modus-themes-variable-pitch nil
- "Generic face for applying a conditional `variable-pitch'.
-This behaves in accordance with `modus-themes-mixed-fonts' and/or
-`modus-themes-variable-pitch-ui'.
-
-The actual styling of the face is done by `modus-themes-faces'."
+(defface modus-themes-key-binding nil
+ "Face for key bindings."
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:group 'modus-themes-faces)
(defface modus-themes-fixed-pitch nil
- "Generic face for applying a conditional `fixed-pitch'.
-This behaves in accordance with `modus-themes-mixed-fonts'.
-
-The actual styling of the face is done by `modus-themes-faces'."
+ "Face for `fixed-pitch' if `modus-themes-mixed-fonts' is non-nil."
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:group 'modus-themes-faces)
(defface modus-themes-ui-variable-pitch nil
- "Face for `modus-themes-variable-pitch-ui'.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-lang-note nil
- "Generic face for linter or spell checker notes.
-The exact attributes and color combinations are controlled by
-`modus-themes-lang-checkers'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-lang-warning nil
- "Generic face for linter or spell checker warnings.
-The exact attributes and color combinations are controlled by
-`modus-themes-lang-checkers'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-lang-error nil
- "Generic face for linter or spell checker errors.
-The exact attributes and color combinations are controlled by
-`modus-themes-lang-checkers'.
-
-The actual styling of the face is done by `modus-themes-faces'."
+ "Face for `variable-pitch' if `modus-themes-variable-pitch-ui' is non-nil."
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:group 'modus-themes-faces)
(defface modus-themes-reset-soft nil
@@ -1243,231 +214,201 @@ The actual styling of the face is done by `modus-themes-faces'."
This is intended to be inherited by faces that should not retain
properties from their context (e.g. an overlay over an underlined
-text should not be underlined as well) yet still blend in. Also
-see `modus-themes-reset-hard'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-reset-hard nil
- "Generic face to set all face properties to nil.
-
-This is intended to be inherited by faces that should not retain
-properties from their context (e.g. an overlay over an underlined
-text should not be underlined as well) and not blend in. Also
-see `modus-themes-reset-soft'.
-
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-key-binding nil
- "Generic face for key bindings.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-search-success nil
- "Generic face for successful search.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-search-success-modeline nil
- "Generic mode line indicator for successful search.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-search-success-lazy nil
- "Generic face for successful, lazily highlighted search.
-The actual styling of the face is done by `modus-themes-faces'."
+text should not be underlined as well) yet still blend in."
:group 'modus-themes-faces)
(defface modus-themes-prompt nil
- "Generic face for command prompts.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-;; "Grue" is "green" and "blue".
-(defface modus-themes-grue nil
- "Generic face for `modus-themes-deuteranopia' foreground.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-grue-active nil
- "Face for `modus-themes-deuteranopia' active foreground.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-grue-nuanced nil
- "Face for `modus-themes-deuteranopia' nuanced foreground.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-grue-background-active nil
- "Face for `modus-themes-deuteranopia' active background.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-grue-background-intense nil
- "Face for `modus-themes-deuteranopia' intense background.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-grue-background-subtle nil
- "Face for `modus-themes-deuteranopia' subtle background.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-grue-background-refine nil
- "Face for `modus-themes-deuteranopia' refined background.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-link-symlink nil
- "Face for `modus-themes-links' symbolic link.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-link-broken nil
- "Face for `modus-themes-links' broken link.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-tab-backdrop nil
- "Face of backdrop in tabbed interfaces.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-tab-active nil
- "Face of active tab.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-tab-inactive nil
- "Face of inactive tab.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-markup-code nil
- "Face of inline code markup.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-markup-macro nil
- "Face of macro markup.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-markup-verbatim nil
- "Face of verbatim markup.
-The actual styling of the face is done by `modus-themes-faces'."
+ "Generic face for command prompts."
:group 'modus-themes-faces)
(defface modus-themes-completion-selected nil
- "Face for current selection in completion UIs.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-completion-selected-popup nil
- "Face for current selection in completion UI popups.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-completion-match-0 nil
- "Face for completions matches 0.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-completion-match-1 nil
- "Face for completions matches 1.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-completion-match-2 nil
- "Face for completions matches 2.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-completion-match-3 nil
- "Face for completions matches 3.
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-box-button nil
- "Face for widget buttons (e.g. in the Custom UI).
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
-
-(defface modus-themes-box-button-pressed nil
- "Face for pressed widget buttons (e.g. in the Custom UI).
-The actual styling of the face is done by `modus-themes-faces'."
- :group 'modus-themes-faces)
+ "Face for current selection in completion UIs."
+ :group 'modus-themes-faces)
+
+(defface modus-themes-button nil
+ "Face for graphical buttons."
+ :group 'modus-themes-faces)
+
+(dotimes (n 4)
+ (custom-declare-face
+ (intern (format "modus-themes-completion-match-%d" n))
+ nil (format "Completions match level %d." n)
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :group 'modus-themes-faces))
+
+(make-obsolete-variable 'modus-themes-reset-hard nil "4.0.0")
+(make-obsolete-variable 'modus-themes-subtle-neutral nil "4.0.0")
+(make-obsolete-variable 'modus-themes-intense-neutral nil "4.0.0")
+(make-obsolete-variable 'modus-themes-refine-red nil "4.0.0")
+(make-obsolete-variable 'modus-themes-refine-green nil "4.0.0")
+(make-obsolete-variable 'modus-themes-refine-yellow nil "4.0.0")
+(make-obsolete-variable 'modus-themes-refine-blue nil "4.0.0")
+(make-obsolete-variable 'modus-themes-refine-magenta nil "4.0.0")
+(make-obsolete-variable 'modus-themes-refine-cyan nil "4.0.0")
+(make-obsolete-variable 'modus-themes-active-red nil "4.0.0")
+(make-obsolete-variable 'modus-themes-active-green nil "4.0.0")
+(make-obsolete-variable 'modus-themes-active-yellow nil "4.0.0")
+(make-obsolete-variable 'modus-themes-active-blue nil "4.0.0")
+(make-obsolete-variable 'modus-themes-active-magenta nil "4.0.0")
+(make-obsolete-variable 'modus-themes-active-cyan nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringe-red nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringe-green nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringe-yellow nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringe-blue nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringe-magenta nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringe-cyan nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-red-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-green-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-yellow-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-blue-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-magenta-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-cyan-nuanced nil "4.0.0")
+(make-obsolete-variable 'modus-themes-special-calm nil "4.0.0")
+(make-obsolete-variable 'modus-themes-special-cold nil "4.0.0")
+(make-obsolete-variable 'modus-themes-special-mild nil "4.0.0")
+(make-obsolete-variable 'modus-themes-special-warm nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-added nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-changed nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-removed nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-refine-added nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-refine-changed nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-refine-removed nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-focus-added nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-focus-changed nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-focus-removed nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diff-heading nil "4.0.0")
+(make-obsolete-variable 'modus-themes-pseudo-header nil "4.0.0")
+(make-obsolete-variable 'modus-themes-mark-symbol nil "4.0.0")
+(make-obsolete-variable 'modus-themes-hl-line nil "4.0.0")
+(make-obsolete-variable 'modus-themes-search-success-modeline nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue-active nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue-background-active nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue-background-intense nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue-background-subtle nil "4.0.0")
+(make-obsolete-variable 'modus-themes-grue-background-refine nil "4.0.0")
+(make-obsolete-variable 'modus-themes-link-broken nil "4.0.0")
+(make-obsolete-variable 'modus-themes-link-symlink nil "4.0.0")
+(make-obsolete-variable 'modus-themes-tab-backdrop nil "4.0.0")
+(make-obsolete-variable 'modus-themes-tab-active nil "4.0.0")
+(make-obsolete-variable 'modus-themes-tab-inactive nil "4.0.0")
+(make-obsolete-variable 'modus-themes-completion-selected-popup nil "4.0.0")
+(make-obsolete-variable 'modus-themes-box-button nil "4.0.0")
+(make-obsolete-variable 'modus-themes-box-button-pressed nil "4.0.0")
-;;; Customization variables
+;;;; Customization variables
+
+(defcustom modus-themes-custom-auto-reload t
+ "Automatically reload theme after setting options with Customize.
-(defcustom modus-themes-inhibit-reload t
- "Control theme reload when setting options with Customize.
+All theme user options take effect when a theme is loaded. Any
+subsequent changes require the theme to be reloaded.
-By default, customizing a theme-related user option through the
-Custom interfaces or with `customize-set-variable' will not
-reload the currently active Modus theme.
+When this variable has a non-nil value, any change made via the
+Custom UI or related functions such as `customize-set-variable'
+and `setopt' (Emacs 29), will trigger a reload automatically.
-Enable this behavior by setting this variable to nil."
+With a nil value, changes to user options have no further
+consequences. The user must manually reload the theme."
:group 'modus-themes
- :package-version '(modus-themes . "1.5.0")
- :version "28.1"
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:type 'boolean
:link '(info-link "(modus-themes) Custom reload theme"))
+(make-obsolete-variable 'modus-themes-inhibit-reload 'modus-themes-custom-auto-reload "4.0.0")
+
(defun modus-themes--set-option (sym val)
"Custom setter for theme related user options.
Will set SYM to VAL, and reload the current theme, unless
-`modus-themes-inhibit-reload' is non-nil."
+`modus-themes-custom-auto-reload' is nil."
(set-default sym val)
- (unless (or modus-themes-inhibit-reload
- ;; Check if a theme is being loaded, in which case we
- ;; don't want to reload a theme if the setter is
- ;; invoked. `custom--inhibit-theme-enable' is set to nil
- ;; by `enable-theme'.
- (null (bound-and-true-p custom--inhibit-theme-enable)))
- (let ((modus-themes-inhibit-reload t))
- (pcase (modus-themes--current-theme)
- ('modus-operandi (modus-themes-load-operandi))
- ('modus-vivendi (modus-themes-load-vivendi))))))
-
-(defcustom modus-themes-operandi-color-overrides nil
- "Override colors in the Modus Operandi palette.
-
-For form, see `modus-themes-operandi-colors'."
+ (when (and modus-themes-custom-auto-reload
+ ;; Check if a theme is being loaded, in which case we
+ ;; don't want to reload a theme if the setter is
+ ;; invoked. `custom--inhibit-theme-enable' is set to nil
+ ;; by `enable-theme'.
+ (bound-and-true-p custom--inhibit-theme-enable))
+ (when-let* ((modus-themes-custom-auto-reload t)
+ (theme (modus-themes--current-theme)))
+ (modus-themes-load-theme theme))))
+
+(defcustom modus-themes-disable-other-themes t
+ "Disable all other themes when loading a Modus theme.
+
+When the value is non-nil, the commands `modus-themes-toggle' and
+`modus-themes-select', as well as the `modus-themes-load-theme'
+function, will disable all other themes while loading the
+specified Modus theme. This is done to ensure that Emacs does
+not blend two or more themes: such blends lead to awkward results
+that undermine the work of the designer.
+
+When the value is nil, the aforementioned commands and function
+will only disable other themes within the Modus collection.
+
+This option is provided because Emacs themes are not necessarily
+limited to colors/faces: they can consist of an arbitrary set of
+customizations. Users who use such customization bundles must
+set this variable to a nil value."
:group 'modus-themes
- :package-version '(modus-themes . "1.1.0")
- :version "28.1"
- :type '(alist :key-type symbol :value-type color)
+ :package-version '(modus-themes . "4.1.0")
+ :version "30.1"
+ :type 'boolean
+ :link '(info-link "(modus-themes) Disable other themes"))
+
+(defconst modus-themes-items
+ '( modus-operandi modus-vivendi
+ modus-operandi-tinted modus-vivendi-tinted
+ modus-operandi-deuteranopia modus-vivendi-deuteranopia)
+ "Symbols of the Modus themes.")
+
+(defcustom modus-themes-to-toggle '(modus-operandi modus-vivendi)
+ "Specify two Modus themes for `modus-themes-toggle' command.
+The variable `modus-themes-items' contains the symbols of all
+official themes that form part of this collection.
+
+The default value of this user option includes the original
+themes: `modus-operandi' (light) and `modus-vivendi' (dark).
+
+If the value is nil or otherwise does not specify two valid Modus
+themes, the command `modus-themes-toggle' reverts to selecting a
+theme from the list of available Modus themes. In effect, it is
+the same as using the command `modus-themes-select'."
+ :type `(choice
+ (const :tag "No toggle" nil)
+ (list :tag "Pick two themes to toggle between"
+ (choice :tag "Theme one of two"
+ ,@(mapcar (lambda (theme)
+ (list 'const theme))
+ modus-themes-items))
+ (choice :tag "Theme two of two"
+ ,@(mapcar (lambda (theme)
+ (list 'const theme))
+ modus-themes-items))))
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Override colors"))
+ :group 'modus-themes)
-(defcustom modus-themes-vivendi-color-overrides nil
- "Override colors in the Modus Vivendi palette.
+(defvaralias 'modus-themes-post-load-hook 'modus-themes-after-load-theme-hook)
-For form, see `modus-themes-vivendi-colors'."
- :group 'modus-themes
- :package-version '(modus-themes . "1.1.0")
- :version "28.1"
- :type '(alist :key-type symbol :value-type color)
+(defcustom modus-themes-after-load-theme-hook nil
+ "Hook that runs after loading a Modus theme.
+This is used by the command `modus-themes-toggle'."
+ :type 'hook
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Override colors"))
-
-;; The byte compiler complains when a defcustom isn't a top level form
-(let* ((names (mapcar (lambda (pair)
- (symbol-name (car pair)))
- modus-themes-operandi-colors))
- (colors (mapcar #'intern (sort names #'string<))))
- (put 'modus-themes-operandi-color-overrides
- 'custom-options (copy-sequence colors))
- (put 'modus-themes-vivendi-color-overrides
- 'custom-options (copy-sequence colors)))
+ :group 'modus-themes)
+
+(make-obsolete-variable 'modus-themes-operandi-color-overrides nil "4.0.0")
+(make-obsolete-variable 'modus-themes-vivendi-color-overrides nil "4.0.0")
(defvaralias 'modus-themes-slanted-constructs 'modus-themes-italic-constructs)
@@ -1510,7 +451,9 @@ tables and code blocks, to remain monospaced when users opt for
something like the command `variable-pitch-mode'.
Users may need to explicitly configure the font family of
-`fixed-pitch' in order to get a consistent experience."
+`fixed-pitch' in order to get a consistent experience with their
+typography (also check the `fontaine' package on GNU ELPA (by
+Protesilaos))."
:group 'modus-themes
:package-version '(modus-themes . "1.7.0")
:version "29.1"
@@ -1519,68 +462,60 @@ Users may need to explicitly configure the font family of
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Mixed fonts"))
-(defcustom modus-themes-intense-mouseovers nil
- "When non-nil use more intense style for mouse hover effects.
-
-This affects the generic `highlight' face which, strictly
-speaking, is not limited to mouse usage."
- :group 'modus-themes
- :package-version '(modus-themes . "2.3.0")
- :version "29.1"
- :type 'boolean
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Mouse hover effects"))
-
-(defconst modus-themes--headings-choice
- '(set :tag "Properties" :greedy t
- (const :tag "Background color" background)
+(make-obsolete-variable 'modus-themes-intense-mouseovers nil "4.0.0")
+
+(defconst modus-themes--weight-widget
+ '(choice :tag "Font weight (must be supported by the typeface)"
+ (const :tag "Unspecified (use whatever the default is)" nil)
+ (const :tag "Thin" thin)
+ (const :tag "Ultra-light" ultralight)
+ (const :tag "Extra-light" extralight)
+ (const :tag "Light" light)
+ (const :tag "Semi-light" semilight)
+ (const :tag "Regular" regular)
+ (const :tag "Medium" medium)
+ (const :tag "Semi-bold" semibold)
+ (const :tag "Bold" bold)
+ (const :tag "Extra-bold" extrabold)
+ (const :tag "Ultra-bold" ultrabold))
+ "List of supported font weights used by `defcustom' forms.")
+
+(defconst modus-themes--headings-widget
+ `(set :tag "Properties" :greedy t
(const :tag "Proportionately spaced font (variable-pitch)" variable-pitch)
- (const :tag "Overline" overline)
- (choice :tag "Font weight (must be supported by the typeface)"
- (const :tag "Bold (default)" nil)
- (const :tag "Thin" thin)
- (const :tag "Ultra-light" ultralight)
- (const :tag "Extra-light" extralight)
- (const :tag "Light" light)
- (const :tag "Semi-light" semilight)
- (const :tag "Regular" regular)
- (const :tag "Medium" medium)
- (const :tag "Semi-bold" semibold)
- (const :tag "Extra-bold" extrabold)
- (const :tag "Ultra-bold" ultrabold))
+ ,modus-themes--weight-widget
(radio :tag "Height"
(float :tag "Floating point to adjust height by")
(cons :tag "Cons cell of `(height . FLOAT)'"
(const :tag "The `height' key (constant)" height)
- (float :tag "Floating point")))
- (choice :tag "Colors"
- (const :tag "Subtle colors" nil)
- (const :tag "Rainbow colors" rainbow)
- (const :tag "Monochrome" monochrome)))
+ (float :tag "Floating point"))))
"Refer to the doc string of `modus-themes-headings'.
This is a helper variable intended for internal use.")
(defcustom modus-themes-headings nil
- "Heading styles with optional list of values for levels 0-8.
+ "Heading styles with optional list of values per heading level.
-This is an alist that accepts a (key . list-of-values)
-combination. The key is either a number, representing the
+This is an alist that accepts a (KEY . LIST-OF-VALUES)
+combination. The KEY is either a number, representing the
heading's level (0-8) or t, which pertains to the fallback style.
+The named keys `agenda-date' and `agenda-structure' apply to the
+Org agenda.
-Level 0 is a special heading: it is used for what counts as a
-document title or equivalent, such as the #+title construct we
-find in Org files. Levels 1-8 are regular headings.
+Level 0 is used for what counts as a document title or
+equivalent, such as the #+title construct we find in Org files.
+Levels 1-8 are regular headings.
-The list of values covers symbols that refer to properties, as
-described below. Here is a complete sample, followed by a
-presentation of all available properties:
+The LIST-OF-VALUES covers symbols that refer to properties, as
+described below. Here is a complete sample with various
+stylistic combinations, followed by a presentation of all
+available properties:
(setq modus-themes-headings
- (quote ((1 . (background overline variable-pitch 1.5))
- (2 . (overline rainbow 1.3))
- (3 . (overline 1.1))
- (t . (monochrome)))))
+ (quote ((1 . (variable-pitch 1.5))
+ (2 . (1.3))
+ (agenda-date . (1.3))
+ (agenda-structure . (variable-pitch light 1.8))
+ (t . (1.1)))))
By default (a nil value for this variable), all headings have a
bold typographic weight, use a desaturated text color, have a
@@ -1588,20 +523,6 @@ font family that is the same as the `default' face (typically
monospaced), and a height that is equal to the `default' face's
height.
-A `rainbow' property makes the text color more saturated.
-
-An `overline' property draws a line above the area of the
-heading.
-
-A `background' property applies a subtle tinted color to the
-background of the heading.
-
-A `monochrome' property makes the heading the same as the base
-color, which is that of the `default' face's foreground. When
-`background' is also set, `monochrome' changes its color to gray.
-If both `monochrome' and `rainbow' are set, the former takes
-precedence.
-
A `variable-pitch' property changes the font family of the
heading to that of the `variable-pitch' face (normally a
proportionately spaced typeface).
@@ -1611,9 +532,7 @@ accordingly, such as `light', `semibold', etc. Valid symbols are
defined in the variable `modus-themes-weights'. The absence of a
weight means that bold will be used by virtue of inheriting the
`bold' face (check the manual for tweaking bold and italic
-faces). For backward compatibility, the `no-bold' value is
-accepted, though users are encouraged to specify a `regular'
-weight instead.
+faces).
A number, expressed as a floating point (e.g. 1.5), adjusts the
height of the heading to that many times the base font size. The
@@ -1626,19 +545,20 @@ Combinations of any of those properties are expressed as a list,
like in these examples:
(semibold)
- (rainbow background)
- (overline monochrome semibold 1.3)
- (overline monochrome semibold (height 1.3)) ; same as above
- (overline monochrome semibold (height . 1.3)) ; same as above
+ (variable-pitch semibold 1.3)
+ (variable-pitch semibold (height 1.3)) ; same as above
+ (variable-pitch semibold (height . 1.3)) ; same as above
The order in which the properties are set is not significant.
In user configuration files the form may look like this:
(setq modus-themes-headings
- (quote ((1 . (background overline rainbow 1.5))
- (2 . (background overline 1.3))
- (t . (overline semibold)))))
+ (quote ((1 . (variable-pitch 1.5))
+ (2 . (1.3))
+ (agenda-date . (1.3))
+ (agenda-structure . (variable-pitch light 1.8))
+ (t . (1.1)))))
When defining the styles per heading level, it is possible to
pass a non-nil value (t) instead of a list of properties. This
@@ -1646,350 +566,39 @@ will retain the original aesthetic for that level. For example:
(setq modus-themes-headings
(quote ((1 . t) ; keep the default style
- (2 . (background overline))
- (t . (rainbow))))) ; style for all other headings
+ (2 . (semibold 1.2))
+ (t . (variable-pitch))))) ; style for all other headings
(setq modus-themes-headings
- (quote ((1 . (background overline))
- (2 . (rainbow semibold))
+ (quote ((1 . (variable-pitch extrabold 1.5))
+ (2 . (semibold))
(t . t)))) ; default style for all other levels
-For Org users, the extent of the heading depends on the variable
-`org-fontify-whole-heading-line'. This affects the `overline'
-and `background' properties. Depending on the version of Org,
-there may be others, such as `org-fontify-done-headline'."
+Note that the text color of headings, of their background, and
+overline can all be set via the overrides. It is possible to
+have any color combination for any heading level (something that
+could not be done in older versions of the themes).
+
+Read Info node `(modus-themes) Option for palette overrides' as
+well as Info node `(modus-themes) Make headings more or less
+colorful'. Else check `modus-themes-common-palette-overrides'
+and related user options."
:group 'modus-themes
- :package-version '(modus-themes . "2.5.0")
- :version "29.1"
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:type `(alist
:options ,(mapcar (lambda (el)
- (list el modus-themes--headings-choice))
- '(0 1 2 3 4 5 6 7 8 t))
+ (list el modus-themes--headings-widget))
+ '(0 1 2 3 4 5 6 7 8 t agenda-date agenda-structure))
:key-type symbol
- :value-type ,modus-themes--headings-choice)
+ :value-type ,modus-themes--headings-widget)
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Heading styles"))
-(defcustom modus-themes-org-agenda nil
- "Control the style of individual Org agenda constructs.
-
-This is an alist that accepts a (key . value) combination. Here
-is a sample, followed by a description of all possible
-combinations:
-
- (setq modus-themes-org-agenda
- (quote ((header-block . (variable-pitch 1.5 semibold))
- (header-date . (grayscale workaholic bold-today 1.2))
- (event . (accented italic varied))
- (scheduled . uniform)
- (habit . traffic-light))))
-
-A `header-block' key applies to elements that concern the
-headings which demarcate blocks in the structure of the agenda.
-By default (a nil value) those are rendered in a bold typographic
-weight, plus a height that is slightly taller than the default
-font size. Acceptable values come in the form of a list that can
-include either or both of those properties:
-
-- `variable-pitch' to use a proportionately spaced typeface;
-
-- A number as a floating point (e.g. 1.5) to set the height of
- the text to that many times the default font height. A float
- of 1.0 or the symbol `no-scale' have the same effect of making
- the font the same height as the rest of the buffer. When
- neither a number nor `no-scale' are present, the default is a
- small increase in height (a value of 1.15).
-
- Instead of a floating point, an acceptable value can be in the
- form of a cons cell like (height . FLOAT) or (height FLOAT),
- where FLOAT is the given number.
-
-- The symbol of a weight attribute adjusts the font of the
- heading accordingly, such as `light', `semibold', etc. Valid
- symbols are defined in the variable `modus-themes-weights'.
- The absence of a weight means that bold will be used by virtue
- of inheriting the `bold' face (check the manual for tweaking
- bold and italic faces).
-
-In case both a number and `no-scale' are in the list, the latter
-takes precedence. If two numbers are specified, the first one is
-applied.
-
-Example usage:
-
- (header-block . nil)
- (header-block . (1.5))
- (header-block . (no-scale))
- (header-block . (variable-pitch 1.5))
- (header-block . (variable-pitch 1.5 semibold))
-
-A `header-date' key covers date headings. Dates use only a
-foreground color by default (a nil value), with weekdays and
-weekends having a slight difference in hueness. The current date
-has an added gray background. This key accepts a list of values
-that can include any of the following properties:
-
-- `grayscale' to make weekdays use the main foreground color and
- weekends a more subtle gray;
-
-- `workaholic' to make weekdays and weekends look the same in
- terms of color;
-
-- `bold-today' to apply a bold typographic weight to the current
- date;
-
-- `bold-all' to render all date headings in a bold weight;
-
-- `underline-today' applies an underline to the current date
- while removing the background it has by default;
-
-- A number as a floating point (e.g. 1.2) to set the height of
- the text to that many times the default font height. The
- default is the same as the base font height (the equivalent of
- 1.0). Instead of a floating point, an acceptable value can be
- in the form of a cons cell like (height . FLOAT) or (height
- FLOAT), where FLOAT is the given number.
-
-For example:
-
- (header-date . nil)
- (header-date . (workaholic))
- (header-date . (grayscale bold-all))
- (header-date . (grayscale workaholic))
- (header-date . (grayscale workaholic bold-today))
- (header-date . (grayscale workaholic bold-today 1.2))
-
-An `event' key covers (i) headings with a plain time stamp that
-are shown on the agenda, also known as events, (ii) entries
-imported from the diary, and (iii) other items that derive from a
-symbolic expression or sexp (phases of the moon, holidays, etc.).
-By default all those look the same and have a subtle foreground
-color (the default is a nil value or an empty list). This key
-accepts a list of properties. Those are:
-
-- `accented' applies an accent value to the event's foreground,
- replacing the original gray. It makes all entries stand out more.
-- `italic' adds a slant to the font's forms (italic or oblique
- forms, depending on the typeface).
-- `varied' differentiates between events with a plain time stamp
- and entries that are generated from either the diary or a
- symbolic expression. It generally puts more emphasis on
- events. When `varied' is combined with `accented', it makes
- only events use an accent color, while diary/sexp entries
- retain their original subtle foreground. When `varied' is used
- in tandem with `italic', it applies a slant only to diary and
- sexp entries, not events. And when `varied' is the sole
- property passed to the `event' key, it has the same meaning as
- the list (italic varied). The combination of `varied',
- `accented', `italic' covers all of the aforementioned cases.
-
-For example:
-
- (event . nil)
- (event . (italic))
- (event . (accented italic))
- (event . (accented italic varied))
-
-A `scheduled' key applies to tasks with a scheduled date. By
-default (a nil value), these use varying shades of yellow to
-denote (i) a past or current date and (ii) a future date. Valid
-values are symbols:
-
-- nil (default);
-- `uniform' to make all scheduled dates the same color;
-- `rainbow' to use contrasting colors for past, present, future
- scheduled dates.
-
-For example:
-
- (scheduled . nil)
- (scheduled . uniform)
- (scheduled . rainbow)
-
-A `habit' key applies to the `org-habit' graph. All possible
-value are passed as a symbol. Those are:
-
-- The default (nil) is meant to conform with the original
- aesthetic of `org-habit'. It employs all four color codes that
- correspond to the org-habit states---clear, ready, alert, and
- overdue---while distinguishing between their present and future
- variants. This results in a total of eight colors in use: red,
- yellow, green, blue, in tinted and shaded versions. They cover
- the full set of information provided by the `org-habit'
- consistency graph.
-
-- `simplified' is like the default except that it removes the
- dichotomy between current and future variants by applying
- uniform color-coded values. It applies a total of four colors:
- red, yellow, green, blue. They produce a simplified
- consistency graph that is more legible (or less \"busy\") than
- the default. The intent is to shift focus towards the
- distinction between the four states of a habit task, rather
- than each state's present/future outlook.
-
-- `traffic-light' further reduces the available colors to red,
- yellow, and green. As in `simplified', present and future
- variants appear uniformly, but differently from it, the CLEAR
- state is rendered in a green hue, instead of the original blue.
- This is meant to capture the use-case where a habit task being
- too early is less important than it being too late. The
- difference between READY and CLEAR states is attenuated by
- painting both of them using shades of green. This option thus
- highlights the alert and overdue states.
-
-- When `modus-themes-deuteranopia' is non-nil the exact style of
- the habit graph adapts to the needs of users with red-green
- color deficiency by substituting every instance of green with
- blue or cyan (depending on the specifics).
-
-For example:
-
- (habit . nil)
- (habit . simplified)
- (habit . traffic-light)"
- :group 'modus-themes
- :package-version '(modus-themes . "2.3.0")
- :version "29.1"
- :type '(set
- (cons :tag "Block header"
- (const header-block)
- (set :tag "Header presentation" :greedy t
- (choice :tag "Font style"
- (const :tag "Use the original typeface (default)" nil)
- (const :tag "Use `variable-pitch' font" variable-pitch))
- (choice :tag "Font weight (must be supported by the typeface)"
- (const :tag "Bold (default)" nil)
- (const :tag "Thin" thin)
- (const :tag "Ultra-light" ultralight)
- (const :tag "Extra-light" extralight)
- (const :tag "Light" light)
- (const :tag "Semi-light" semilight)
- (const :tag "Regular" regular)
- (const :tag "Medium" medium)
- (const :tag "Semi-bold" semibold)
- (const :tag "Extra-bold" extrabold)
- (const :tag "Ultra-bold" ultrabold))
- (radio :tag "Scaling"
- (const :tag "Slight increase in height (default)" nil)
- (const :tag "Do not scale" no-scale)
- (radio :tag "Number (float) to adjust height by"
- (float :tag "Just the number")
- (cons :tag "Cons cell of `(height . FLOAT)'"
- (const :tag "The `height' key (constant)" height)
- (float :tag "Floating point"))))))
- (cons :tag "Date header" :greedy t
- (const header-date)
- (set :tag "Header presentation" :greedy t
- (const :tag "Use grayscale for date headers" grayscale)
- (const :tag "Do not differentiate weekdays from weekends" workaholic)
- (const :tag "Make today bold" bold-today)
- (const :tag "Make all dates bold" bold-all)
- (const :tag "Make today underlined; remove the background" underline-today)
- (radio :tag "Number (float) to adjust height by"
- (float :tag "Just the number")
- (cons :tag "Cons cell of `(height . FLOAT)'"
- (const :tag "The `height' key (constant)" height)
- (float :tag "Floating point")))))
- (cons :tag "Event entry" :greedy t
- (const event)
- (set :tag "Text presentation" :greedy t
- (const :tag "Apply an accent color" accented)
- (const :tag "Italic font slant (oblique forms)" italic)
- (const :tag "Differentiate events from diary/sexp entries" varied)))
- (cons :tag "Scheduled tasks"
- (const scheduled)
- (choice (const :tag "Yellow colors to distinguish current and future tasks (default)" nil)
- (const :tag "Uniform subtle warm color for all scheduled tasks" uniform)
- (const :tag "Rainbow-colored scheduled tasks" rainbow)))
- (cons :tag "Habit graph"
- (const habit)
- (choice (const :tag "Follow the original design of `org-habit' (default)" nil)
- (const :tag "Do not distinguish between present and future variants" simplified)
- (const :tag "Use only red, yellow, green" traffic-light))))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Org agenda"))
-
-(defcustom modus-themes-fringes 'subtle
- "Control the visibility of fringes.
-
-When the value is nil, do not apply a distinct background color.
-
-With a value of `subtle' use a gray background color that is
-visible yet close to the main background color.
-
-With `intense' use a more pronounced gray background color."
- :group 'modus-themes
- :package-version '(modus-themes . "3.0.0")
- :version "29.1"
- :type '(choice
- (const :format "[%v] %t\n" :tag "No visible fringes" nil)
- (const :format "[%v] %t\n" :tag "Subtle gray background" subtle)
- (const :format "[%v] %t\n" :tag "Intense gray background" intense))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Fringes"))
-
-(defcustom modus-themes-lang-checkers nil
- "Control the style of spelling and code checkers/linters.
-
-The value is a list of properties, each designated by a symbol.
-The default (nil) applies a color-coded underline to the affected
-text, while it leaves the original foreground intact. If the
-display spec of Emacs has support for it, the underline's style
-is that of a wave, otherwise it is a straight line.
-
-The property `straight-underline' ensures that the underline
-under the affected text is always drawn as a straight line.
-
-The property `text-also' applies the same color of the underline
-to the affected text.
-
-The property `background' adds a color-coded background.
-
-The property `intense' amplifies the applicable colors if
-`background' and/or `text-also' are set. If `intense' is set on
-its own, then it implies `text-also'.
-
-The property `faint' uses nuanced colors for the underline and
-for the foreground when `text-also' is included. If both `faint'
-and `intense' are specified, the former takes precedence.
-
-Combinations of any of those properties can be expressed in a
-list, as in those examples:
-
- (background)
- (straight-underline intense)
- (background text-also straight-underline)
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-lang-checkers (quote (text-also background)))
-
-NOTE: The placement of the straight underline, though not the
-wave style, is controlled by the built-in variables
-`underline-minimum-offset', `x-underline-at-descent-line',
-`x-use-underline-position-properties'.
-
-To disable fringe indicators for Flymake or Flycheck, refer to
-variables `flymake-fringe-indicator-position' and
-`flycheck-indication-mode', respectively."
- :group 'modus-themes
- :package-version '(modus-themes . "1.7.0")
- :version "29.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Straight underline" straight-underline)
- (const :tag "Colorise text as well" text-also)
- (const :tag "With background" background)
- (choice :tag "Overall coloration"
- (const :tag "Intense colors" intense)
- (const :tag "Faint colors" faint)))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Language checkers"))
+(make-obsolete-variable 'modus-themes-org-agenda nil "4.0.0")
+(make-obsolete-variable 'modus-themes-fringes nil "4.0.0")
+(make-obsolete-variable 'modus-themes-lang-checkers nil "4.0.0")
(defcustom modus-themes-org-blocks nil
"Set the overall style of Org code blocks, quotes, and the like.
@@ -2004,208 +613,48 @@ block's contents. It also affects the begin and end lines of the
block as they get another shade of gray as their background,
which differentiates them from the contents of the block. All
background colors extend to the edge of the window, giving the
-area a rectangular, \"blocky\" presentation.
+area a rectangular, \"blocky\" presentation. If the begin/end
+lines do not extend in this way, check the value of the Org user
+option `org-fontify-whole-block-delimiter-line'.
-Option `tinted-background' uses a slightly colored background for
-the contents of the block. The exact color will depend on the
+Option `tinted-background' uses a colored background for the
+contents of the block. The exact color value will depend on the
programming language and is controlled by the variable
`org-src-block-faces' (refer to the theme's source code for the
current association list). For this to take effect, the Org
-buffer needs to be restarted with `org-mode-restart'. In this
-scenario, it may be better to inhibit the extension of the
-delimiter lines' background to the edge of the window because Org
-does not provide a mechanism to update their colors depending on
-the contents of the block. Disable the extension of such
-backgrounds by setting `org-fontify-whole-block-delimiter-line'
-to nil.
-
-Code blocks use their major mode's colors only when the variable
-`org-src-fontify-natively' is non-nil. While quote/verse blocks
-require setting `org-fontify-quote-and-verse-blocks' to a non-nil
-value.
+buffer needs to be restarted with `org-mode-restart'.
-Older versions of the themes provided options `grayscale' (or
-`greyscale') and `rainbow'. Those will continue to work as they
-are aliases for `gray-background' and `tinted-background',
-respectively."
+Code blocks use their major mode's fontification (syntax
+highlighting) only when the variable `org-src-fontify-natively'
+is non-nil. While quote/verse blocks require setting
+`org-fontify-quote-and-verse-blocks' to a non-nil value."
:group 'modus-themes
- :package-version '(modus-themes . "2.1.0")
- :version "28.1"
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:type '(choice
(const :format "[%v] %t\n" :tag "No Org block background (default)" nil)
(const :format "[%v] %t\n" :tag "Subtle gray block background" gray-background)
- (const :format "[%v] %t\n" :tag "Alias for `gray-background'" grayscale) ; for backward compatibility
- (const :format "[%v] %t\n" :tag "Alias for `gray-background'" greyscale)
- (const :format "[%v] %t\n" :tag "Color-coded background per programming language" tinted-background)
- (const :format "[%v] %t\n" :tag "Alias for `tinted-background'" rainbow)) ; back compat
+ (const :format "[%v] %t\n" :tag "Color-coded background per programming language" tinted-background))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
:link '(info-link "(modus-themes) Org mode blocks"))
-(defcustom modus-themes-mode-line nil
- "Control the overall style of the mode line.
-
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is a two-dimensional
-rectangle with a border around it. The active and the inactive
-mode lines use different shades of grayscale values for the
-background, foreground, border.
-
-The `3d' property applies a three-dimensional effect to the
-active mode line. The inactive mode lines remain two-dimensional
-and are toned down a bit, relative to the default style.
-
-The `moody' property optimizes the mode line for use with the
-library of the same name (hereinafter referred to as Moody).
-In practice, it removes the box effect and replaces it with
-underline and overline properties. It also tones down the
-inactive mode lines. Despite its intended purpose, this option
-can also be used without the Moody library (please consult the
-themes' manual on this point for more details). If both `3d' and
-`moody' properties are set, the latter takes precedence.
-
-The `borderless' property removes the color of the borders. It
-does not actually remove the borders, but only makes their color
-the same as the background, effectively creating some padding.
-
-The `accented' property ensures that the active mode line uses a
-colored background instead of the standard shade of gray.
-
-A positive integer (natural number or natnum) applies a padding
-effect of NATNUM pixels at the boundaries of the mode lines. The
-default value is 1 and does not need to be specified explicitly.
-The padding has no effect when the `moody' property is also used,
-because Moody already applies its own tweaks. To ensure that the
-underline is placed at the bottom of the mode line, set
-`x-underline-at-descent-line' to non-nil (this is not needed when
-the `borderless' property is also set). For users on Emacs 29,
-the `x-use-underline-position-properties' variable must also be
-set to nil.
-
-The padding can also be expressed as a cons cell in the form
-of (padding . NATNUM) or (padding NATNUM) where the key is
-constant and NATNUM is the desired natural number.
-
-A floating point (e.g. 0.9) applies an adjusted height to the
-mode line's text as a multiple of the main font size. The
-default rate is 1.0 and does not need to be specified. Apart
-from a floating point, the height may also be expressed as a cons
-cell in the form of (height . FLOAT) or (height FLOAT) where the
-key is constant and the FLOAT is the desired number.
+(make-obsolete-variable 'modus-themes-mode-line nil "4.0.0")
+(make-obsolete-variable 'modus-themes-diffs nil "4.0.0")
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
- (accented)
- (borderless 3d)
- (moody accented borderless)
-
-Same as above, using the padding and height as an example (these
-all yield the same result):
-
- (accented borderless 4 0.9)
- (accented borderless (padding . 4) (height . 0.9))
- (accented borderless (padding 4) (height 0.9))
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-mode-line (quote (borderless accented)))
-
-Note that Moody does not expose any faces that the themes could
-style directly. Instead it re-purposes existing ones to render
-its tabs and ribbons. As such, there may be cases where the
-contrast ratio falls below the 7:1 target that the themes conform
-with (WCAG AAA). To hedge against this, we configure a fallback
-foreground for the `moody' property, which will come into effect
-when the background of the mode line changes to something less
-accessible, such as Moody ribbons (read the doc string of
-`set-face-attribute', specifically `:distant-foreground'). This
-fallback is activated when Emacs determines that the background
-and foreground of the given construct are too close to each other
-in terms of color distance. In practice, users will need to
-experiment with the variable `face-near-same-color-threshold' to
-trigger the effect. We find that a value of 45000 shall suffice,
-contrary to the default 30000. Though for the combinations that
-involve the `accented' and `moody' properties, as mentioned
-above, that should be raised up to 70000. Do not set it too
-high, because it has the adverse effect of always overriding the
-default colors (which have been carefully designed to be highly
-accessible).
-
-Furthermore, because Moody expects an underline and overline
-instead of a box style, it is strongly advised to set
-`x-underline-at-descent-line' to a non-nil value."
- :group 'modus-themes
- :package-version '(modus-themes . "2.3.0")
- :version "29.1"
- :type '(set :tag "Properties" :greedy t
- (choice :tag "Overall style"
- (const :tag "Rectangular Border" nil)
- (const :tag "3d borders" 3d)
- (const :tag "No box effects (Moody-compatible)" moody))
- (const :tag "Colored background" accented)
- (const :tag "Without border color" borderless)
- (radio :tag "Padding"
- (natnum :tag "Natural number (e.g. 4)")
- (cons :tag "Cons cell of `(padding . NATNUM)'"
- (const :tag "The `padding' key (constant)" padding)
- (natnum :tag "Natural number")))
- (radio :tag "Height"
- (float :tag "Floating point (e.g. 0.9)")
- (cons :tag "Cons cell of `(height . FLOAT)'"
- (const :tag "The `height' key (constant)" height)
- (float :tag "Floating point"))))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Mode line"))
-
-(defcustom modus-themes-diffs nil
- "Adjust the overall style of diffs.
-
-The default (nil) uses fairly intense color combinations for
-diffs, by applying prominently colored backgrounds, with
-appropriately tinted foregrounds.
-
-Option `desaturated' follows the same principles as with the
-default (nil), though it tones down all relevant colors.
-
-Option `bg-only' applies a background but does not override the
-text's foreground. This makes it suitable for a non-nil value
-passed to `diff-font-lock-syntax' (note: Magit does not support
-syntax highlighting in diffs---last checked on 2021-12-02).
-
-When the user option `modus-themes-deuteranopia' is non-nil, all
-diffs will use a red/blue color-coding system instead of the
-standard red/green. Other stylistic changes are made in the
-interest of optimizing for such a use-case."
- :group 'modus-themes
- :package-version '(modus-themes . "2.0.0")
- :version "29.1"
- :type '(choice
- (const :format "[%v] %t\n" :tag "Intensely colored backgrounds (default)" nil)
- (const :format "[%v] %t\n" :tag "Slightly accented backgrounds with tinted text" desaturated)
- (const :format "[%v] %t\n" :tag "Apply color-coded backgrounds; keep syntax colors intact" bg-only))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Diffs"))
-
-(defcustom modus-themes-completions
- '((selection . (intense))
- (popup . (intense)))
+(defcustom modus-themes-completions nil
"Control the style of completion user interfaces.
-This affects Company, Corfu, Flx, Helm, Icomplete/Fido, Ido, Ivy,
-Orderless, Selectrum, Vertico. The value is an alist that takes
-the form of a (KEY . PROPERTIES) combination. KEY is a symbol,
-while PROPERTIES is a list. Here is a sample, followed by a
-description of the particularities:
+This affects Company, Corfu, Flx, Icomplete/Fido, Ido, Ivy,
+Orderless, Vertico, and the standard *Completions* buffer. The
+value is an alist of expressions, each of which takes the form
+of (KEY . LIST-OF-PROPERTIES). KEY is a symbol, while PROPERTIES
+is a list. Here is a sample, followed by a description of the
+particularities:
(setq modus-themes-completions
- (quote ((matches . (extrabold background intense))
- (selection . (semibold accented intense))
- (popup . (accented)))))
+ (quote ((matches . (extrabold underline))
+ (selection . (semibold italic)))))
The `matches' key refers to the highlighted characters that
correspond to the user's input. When its properties are nil or
@@ -2214,11 +663,6 @@ have a bold weight and a colored foreground. The list of
properties may include any of the following symbols regardless of
the order they may appear in:
-- `background' to add a background color;
-
-- `intense' to increase the overall coloration (also amplifies
- the `background', if present);
-
- `underline' to draw a line below the characters;
- `italic' to use a slanted font (italic or oblique forms);
@@ -2235,13 +679,6 @@ a subtle gray background, a bold weight, and the base foreground
value for the text. The list of properties it accepts is as
follows (order is not significant):
-- `accented' to make the background colorful instead of gray;
-
-- `text-also' to apply extra color to the text of the selected
- line;
-
-- `intense' to increase the overall coloration;
-
- `underline' to draw a line below the characters;
- `italic' to use a slanted font (italic or oblique forms);
@@ -2251,99 +688,39 @@ follows (order is not significant):
variable `modus-themes-weights'. The absence of a weight means
that bold will be used.
-The `popup' key takes the same values as `selection'. The only
-difference is that it applies specifically to user interfaces
-that display an inline popup and thus have slightly different
-styling requirements than the minibuffer. The two prominent
-packages are `company' and `corfu'.
-
-Apart from specifying each key separately, a fallback list is
+Apart from specifying each key separately, a catch-all list is
accepted. This is only useful when the desired aesthetic is the
same across all keys that are not explicitly referenced. For
example, this:
(setq modus-themes-completions
- (quote ((t . (extrabold intense)))))
+ (quote ((t . (extrabold underline)))))
Is the same as:
(setq modus-themes-completions
- (quote ((matches . (extrabold intense))
- (selection . (extrabold intense))
- (popup . (extrabold intense)))))
-
-In the case of the fallback, any property that does not apply to
-the corresponding key is simply ignored (`matches' does not have
-`accented' and `text-also', while `selection' and `popup' do not
-have `background').
-
-Check the manual for tweaking `bold' and `italic' faces: Info
-node `(modus-themes) Configure bold and italic faces'.
-
-Also refer to the documentation of the `orderless' package for
-its intersection with `company' (if you choose to use those in
-tandem)."
+ (quote ((matches . (extrabold underline))
+ (selection . (extrabold underline)))))"
:group 'modus-themes
- :package-version '(modus-themes . "3.0.0")
- :version "29.1"
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
:type `(set
(cons :tag "Matches"
(const matches)
(set :tag "Style of matches" :greedy t
- (choice :tag "Font weight (must be supported by the typeface)"
- (const :tag "Bold (default)" nil)
- (const :tag "Thin" thin)
- (const :tag "Ultra-light" ultralight)
- (const :tag "Extra-light" extralight)
- (const :tag "Light" light)
- (const :tag "Semi-light" semilight)
- (const :tag "Regular" regular)
- (const :tag "Medium" medium)
- (const :tag "Semi-bold" semibold)
- (const :tag "Extra-bold" extrabold)
- (const :tag "Ultra-bold" ultrabold))
- (const :tag "With added background" background)
- (const :tag "Increased coloration" intense)
+ ,modus-themes--weight-widget
(const :tag "Italic font (oblique or slanted forms)" italic)
(const :tag "Underline" underline)))
(cons :tag "Selection"
(const selection)
(set :tag "Style of selection" :greedy t
- (choice :tag "Font weight (must be supported by the typeface)"
- (const :tag "Bold (default)" nil)
- (const :tag "Thin" thin)
- (const :tag "Ultra-light" ultralight)
- (const :tag "Extra-light" extralight)
- (const :tag "Light" light)
- (const :tag "Semi-light" semilight)
- (const :tag "Regular" regular)
- (const :tag "Medium" medium)
- (const :tag "Semi-bold" semibold)
- (const :tag "Extra-bold" extrabold)
- (const :tag "Ultra-bold" ultrabold))
- (const :tag "Apply color to the line's text" text-also)
- (const :tag "With accented background" accented)
- (const :tag "Increased coloration" intense)
+ ,modus-themes--weight-widget
(const :tag "Italic font (oblique or slanted forms)" italic)
(const :tag "Underline" underline)))
- (cons :tag "Popup"
- (const popup)
- (set :tag "Style of completion pop-ups" :greedy t
- (choice :tag "Font weight (must be supported by the typeface)"
- (const :tag "Bold (default)" nil)
- (const :tag "Thin" thin)
- (const :tag "Ultra-light" ultralight)
- (const :tag "Extra-light" extralight)
- (const :tag "Light" light)
- (const :tag "Semi-light" semilight)
- (const :tag "Regular" regular)
- (const :tag "Medium" medium)
- (const :tag "Semi-bold" semibold)
- (const :tag "Extra-bold" extrabold)
- (const :tag "Ultra-bold" ultrabold))
- (const :tag "Apply color to the line's text" text-also)
- (const :tag "With accented background" accented)
- (const :tag "Increased coloration" intense)
+ (cons :tag "Fallback for both matches and selection"
+ (const t)
+ (set :tag "Style of both matches and selection" :greedy t
+ ,modus-themes--weight-widget
(const :tag "Italic font (oblique or slanted forms)" italic)
(const :tag "Underline" underline))))
:set #'modus-themes--set-option
@@ -2355,512 +732,584 @@ tandem)."
The value is a list of properties, each designated by a symbol.
The default (a nil value or an empty list) means to only use a
-subtle accented foreground color.
-
-The property `background' applies a background color to the
-prompt's text. By default, this is a subtle accented value.
-
-The property `intense' makes the foreground color more prominent.
-If the `background' property is also set, it amplifies the value
-of the background as well.
+subtle colored foreground color.
-The property `gray' changes the prompt's colors to grayscale.
-This affects the foreground and, if the `background' property is
-also set, the background. Its effect is subtle, unless it is
-combined with the `intense' property.
-
-The property `bold' makes the text use a bold typographic weight.
-Similarly, `italic' adds a slant to the font's forms (italic or
+The `italic' property adds a slant to the font's forms (italic or
oblique forms, depending on the typeface).
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
- (intense)
- (bold intense)
- (intense bold gray)
- (intense background gray bold)
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-prompts (quote (background gray)))"
- :group 'modus-themes
- :package-version '(modus-themes . "1.5.0")
- :version "28.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "With Background" background)
- (const :tag "Intense" intense)
- (const :tag "Grayscale" gray)
- (const :tag "Bold font weight" bold)
- (const :tag "Italic font slant" italic))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Command prompts"))
-
-(defcustom modus-themes-hl-line '(intense)
- "Control the current line highlight of `hl-line-mode'.
-
-The value is a list of properties, each designated by a symbol.
-With a nil value, or an empty list, the style is a subtle gray
-background color.
-
-The property `accented' changes the background to a colored
-variant.
-
-An `underline' property draws a line below the highlighted area.
-Its color is similar to the background, so gray by default or an
-accent color when `accented' is also set.
-
-An `intense' property amplifies the colors in use, which may be
-both the background and the underline.
-
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
- (intense)
- (underline intense)
- (accented intense underline)
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-hl-line (quote (underline accented)))
-
-Set `x-underline-at-descent-line' to a non-nil value so that the
-placement of the underline coincides with the lower boundary of
-the colored background."
- :group 'modus-themes
- :package-version '(modus-themes . "3.0.0")
- :version "29.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Colored background" accented)
- (const :tag "Underline" underline)
- (const :tag "Intense style" intense))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Line highlighting"))
-
-(defcustom modus-themes-subtle-line-numbers nil
- "Use more subtle style for command `display-line-numbers-mode'."
- :group 'modus-themes
- :package-version '(modus-themes . "1.2.0")
- :version "28.1"
- :type 'boolean
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Line numbers"))
-
-(defcustom modus-themes-markup nil
- "Style markup in Org, Markdown, and others.
-
-This affects constructs such as Org's =verbatim= and ~code~.
-
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is a foreground
-color.
-
-The `italic' property applies a typographic slant (italics).
-
-The `bold' property applies a heavier typographic weight.
-
-The `background' property adds a background color. The
-background is a shade of gray, unless the `intense' property is
-also set.
-
-The `intense' property amplifies the existing coloration. When
-`background' is used, the background color is enhanced as well
-and becomes tinted instead of being gray.
+The symbol of a font weight attribute such as `light', `semibold',
+et cetera, adds the given weight to links. Valid symbols are
+defined in the variable `modus-themes-weights'. The absence of a
+weight means that the one of the underlying text will be used.
Combinations of any of those properties are expressed as a list,
like in these examples:
- (bold)
(bold italic)
- (bold italic intense)
- (bold italic intense background)
+ (italic semibold)
The order in which the properties are set is not significant.
In user configuration files the form may look like this:
- (setq modus-themes-markup (quote (bold italic)))
-
-Also check the variables `org-hide-emphasis-markers',
-`org-hide-macro-markers'."
+ (setq modus-themes-prompts (quote (extrabold italic)))"
:group 'modus-themes
- :package-version '(modus-themes . "2.1.0")
- :version "29.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Added background" background)
- (const :tag "Intense colors" intense)
- (const :tag "Bold weight" bold)
- (const :tag "Italics (slanted text)" italic))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Markup"))
-
-(defcustom modus-themes-paren-match nil
- "Control the style of matching parentheses or delimiters.
-
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is a subtle background
-color.
-
-The `bold' property adds a bold weight to the characters of the
-matching delimiters.
-
-The `intense' property applies a more prominent background color
-to the delimiters.
-
-The `underline' property draws a straight line under the affected
-text.
-
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
- (bold)
- (underline intense)
- (bold intense underline)
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-paren-match (quote (bold intense)))"
- :group 'modus-themes
- :package-version '(modus-themes . "1.5.0")
- :version "28.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Bold weight" bold)
- (const :tag "Intense background color" intense)
- (const :tag "Underline" underline))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Matching parentheses"))
-
-(defcustom modus-themes-syntax nil
- "Control the overall style of code syntax highlighting.
-
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is to use a balanced
-combination of colors on the cyan-blue-magenta side of the
-spectrum. There is little to no use of greens, yellows, and
-reds. Comments are gray, strings are blue colored, doc strings
-are a shade of cyan, while color combinations are designed to
-avoid exaggerations.
-
-The property `faint' fades the saturation of all applicable
-colors, where that is possible or appropriate.
-
-The property `yellow-comments' applies a yellow color to
-comments.
-
-The property `green-strings' applies a green color to strings and
-a green tint to doc strings.
-
-The property `alt-syntax' changes the combination of colors
-beyond strings and comments, so that the effective palette is
-broadened to provide greater variety relative to the default.
-
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
- (faint)
- (green-strings yellow-comments)
- (alt-syntax green-strings yellow-comments)
- (faint alt-syntax green-strings yellow-comments)
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-syntax (quote (faint alt-syntax)))
-
-Independent of this variable, users may also control the use of a
-bold weight or italic text: `modus-themes-bold-constructs' and
-`modus-themes-italic-constructs'."
- :group 'modus-themes
- :package-version '(modus-themes . "1.5.0")
- :version "28.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Faint colors" faint)
- (const :tag "Yellow comments" yellow-comments)
- (const :tag "Green strings" green-strings)
- (const :tag "Alternative set of colors" alt-syntax))
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type `(set :tag "Properties" :greedy t
+ (const :tag "Italic font slant" italic)
+ ,modus-themes--weight-widget)
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Syntax styles"))
-
-(defcustom modus-themes-links nil
- "Set the style of links.
-
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is a prominent text
-color, typically blue, with an underline of the same color.
-
-For the style of the underline, a `neutral-underline' property
-turns the color of the line into a subtle gray, while the
-`no-underline' property removes the line altogether. If both of
-those are set, the latter takes precedence.
-
-For text coloration, a `faint' property desaturates the color of
-the text and the underline, unless the underline is affected by
-the aforementioned properties. While a `no-color' property
-removes the color from the text. If both of those are set, the
-latter takes precedence.
-
-A `bold' property applies a heavy typographic weight to the text
-of the link.
-
-An `italic' property adds a slant to the link's text (italic or
-oblique forms, depending on the typeface).
-
-A `background' property applies a subtle tinted background color.
-
-In case both `no-underline' and `no-color' are set, then a subtle
-gray background is applied to all links. This can still be
-combined with the `bold' and `italic' properties.
-
-Combinations of any of those properties are expressed as a list,
-like in these examples:
-
- (faint)
- (no-underline faint)
- (no-color no-underline bold)
- (italic bold background no-color no-underline)
-
-The order in which the properties are set is not significant.
-
-In user configuration files the form may look like this:
-
- (setq modus-themes-links (quote (neutral-underline background)))
+ :link '(info-link "(modus-themes) Command prompts"))
-The placement of the underline, meaning its proximity to the
-text, is controlled by `x-use-underline-position-properties',
-`x-underline-at-descent-line', `underline-minimum-offset'.
-Please refer to their documentation strings."
+(make-obsolete-variable 'modus-themes-subtle-line-numbers nil "4.0.0")
+(make-obsolete-variable 'modus-themes-markup nil "4.0.0")
+(make-obsolete-variable 'modus-themes-paren-match nil "4.0.0")
+(make-obsolete-variable 'modus-themes-syntax nil "4.0.0")
+(make-obsolete-variable 'modus-themes-links nil "4.0.0")
+(make-obsolete-variable 'modus-themes-region nil "4.0.0")
+(make-obsolete-variable 'modus-themes-deuteranopia nil "4.0.0")
+(make-obsolete-variable 'modus-themes-mail-citations nil "4.0.0")
+(make-obsolete-variable 'modus-themes-tabs-accented nil "4.0.0")
+(make-obsolete-variable 'modus-themes-box-buttons nil "4.0.0")
+
+(defcustom modus-themes-common-palette-overrides nil
+ "Set palette overrides for all the Modus themes.
+
+Mirror the elements of a theme's palette, overriding their value.
+The palette variables are named THEME-NAME-palette, while
+individual theme overrides are THEME-NAME-palette-overrides. The
+THEME-NAME is one of the symbols in `modus-themes-items'. For
+example:
+
+- `modus-operandi-palette'
+- `modus-operandi-palette-overrides'
+
+Individual theme overrides take precedence over these common
+overrides.
+
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
:group 'modus-themes
- :package-version '(modus-themes . "1.5.0")
- :version "28.1"
- :type '(set :tag "Properties" :greedy t
- (choice :tag "Text coloration"
- (const :tag "Saturared color (default)" nil)
- (const :tag "Faint coloration" faint)
- (const :tag "No color (use main black/white)" no-color))
- (choice :tag "Underline"
- (const :tag "Same color as text (default)" nil)
- (const :tag "Neutral (gray) underline color" neutral-underline)
- (const :tag "No underline" no-underline))
- (const :tag "Bold font weight" bold)
- (const :tag "Italic font slant" italic)
- (const :tag "Subtle background color" background))
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ ;; ;; NOTE 2023-01-07: The following is a functioning version of the
+ ;; ;; intended :type. However, I think the Custom UI is really
+ ;; ;; awkward for this specific case. Maybe the generic type I have
+ ;; ;; above is better, as it encourages the user to write out the
+ ;; ;; code and read the manual. Counter-arguments are welcome.
+ ;;
+ ;; :type `(repeat (list (radio :tag "Palette key to override"
+ ;; ,@(mapcar (lambda (x)
+ ;; (list 'const x))
+ ;; (mapcar #'car (modus-themes--current-theme-palette))))
+ ;; (choice :tag "Value to assign" :value unspecified
+ ;; (const :tag "`unspecified' (remove the original color)" unspecified)
+ ;; (string :tag "String with color name (e.g. \"gray50\") or hex RGB (e.g. \"#123456\")"
+ ;; :match-inline (color-supported-p val))
+ ;; (radio :tag "Palette key to map to"
+ ;; ,@(mapcar (lambda (x)
+ ;; (list 'const x))
+ ;; (mapcar #'car (modus-themes--current-theme-palette)))))))
:set #'modus-themes--set-option
:initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Link styles"))
-
-(defcustom modus-themes-region nil
- "Control the overall style of the active region.
-
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is a prominent gray
-background that overrides all foreground colors in the area it
-encompasses. Its reach extends to the edge of the window.
+ :link '(info-link "(modus-themes) Palette overrides"))
-The `no-extend' property limits the region to the end of the
-line, so that it does not reach the edge of the window.
+
-The `bg-only' property makes the region's background color more
-subtle to allow the underlying text to retain its foreground
-colors.
+;;;; Presets of palette overrides
+
+(defvar modus-themes-preset-overrides-faint
+ '((bg-completion bg-inactive)
+ (bg-hover bg-cyan-subtle)
+ (bg-hover-secondary bg-magenta-subtle)
+ (bg-hl-line bg-dim)
+ (bg-paren-match bg-cyan-subtle)
+ (bg-region bg-active)
+
+ (bg-mode-line-active bg-inactive)
+ (border-mode-line-active fg-dim)
+ (bg-mode-line-inactive bg-dim)
+ (border-mode-line-inactive bg-active)
+
+ (bg-tab-bar bg-inactive)
+ (bg-tab-current bg-main)
+ (bg-tab-other bg-active)
+
+ (fringe unspecified)
+ (builtin maroon)
+ (comment fg-dim)
+ (constant blue-faint)
+ (docstring fg-alt)
+ (docmarkup magenta-faint)
+ (fnname pink)
+ (keyword indigo)
+ (preprocessor rust)
+ (string slate)
+ (type cyan-faint)
+ (variable cyan-faint)
+ (rx-construct gold)
+ (rx-backslash olive)
+
+ (underline-err red-faint)
+ (underline-warning yellow-faint)
+ (underline-note cyan-faint)
+
+ (bg-button-active bg-main)
+ (fg-button-active fg-main)
+ (bg-button-inactive bg-inactive)
+ (fg-button-inactive "gray50")
+
+ (date-common cyan-faint)
+ (date-deadline red-faint)
+ (date-event fg-alt)
+ (date-holiday magenta)
+ (date-now fg-main)
+ (date-scheduled yellow-faint)
+ (date-weekday fg-dim)
+ (date-weekend fg-dim)
+
+ (name maroon)
+ (identifier fg-dim)
+
+ (fg-line-number-active fg-main)
+ (fg-line-number-inactive "gray50")
+ (bg-line-number-active unspecified)
+ (bg-line-number-inactive unspecified)
+
+ (fg-link blue-faint)
+ (bg-link unspecified)
+ (underline-link bg-active)
+
+ (fg-link-symbolic cyan-faint)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic bg-active)
+
+ (fg-link-visited magenta-faint)
+ (bg-link-visited unspecified)
+ (underline-link-visited bg-active)
+
+ (mail-cite-0 cyan-faint)
+ (mail-cite-1 yellow-faint)
+ (mail-cite-2 green-faint)
+ (mail-cite-3 red-faint)
+ (mail-part olive)
+ (mail-recipient indigo)
+ (mail-subject maroon)
+ (mail-other slate)
+
+ (fg-prompt cyan-faint)
+
+ (prose-code olive)
+ (prose-done green-faint)
+ (prose-macro indigo)
+ (prose-tag rust)
+ (prose-todo red-faint)
+ (prose-verbatim maroon)
+
+ (rainbow-0 fg-main)
+ (rainbow-1 magenta)
+ (rainbow-2 cyan)
+ (rainbow-3 red-faint)
+ (rainbow-4 yellow-faint)
+ (rainbow-5 magenta-cooler)
+ (rainbow-6 green)
+ (rainbow-7 blue-warmer)
+ (rainbow-8 magenta-faint))
+ "Preset for palette overrides with faint coloration.
+
+This changes many parts of the theme to make them look less
+colorful/intense. Grays are toned down, gray backgrounds are
+removed from some contexts, and almost all accent colors are
+desaturated.
+
+To set a preset, assign its symbol without a quote as the value
+of the `modus-themes-common-palette-overrides' or as the value of
+theme-specific options such as `modus-operandi-palette-overrides'.
+
+Also see `modus-themes-preset-overrides-intense'.
+
+For overriding named colors and/or semantic color mappings read
+Info node `(modus-themes) Option for palette overrides'.")
+
+(defvar modus-themes-preset-overrides-intense
+ '((bg-region bg-cyan-intense)
+
+ (bg-completion bg-cyan-subtle)
+ (bg-hover bg-yellow-intense)
+ (bg-hover-secondary bg-magenta-intense)
+ (bg-hl-line bg-cyan-subtle)
+
+ (bg-mode-line-active bg-blue-subtle)
+ (fg-mode-line-active fg-main)
+ (border-mode-line-active blue-intense)
+
+ (fringe bg-inactive)
+ (comment red-faint)
+
+ (date-common cyan)
+ (date-deadline red)
+ (date-event blue)
+ (date-holiday magenta-warmer)
+ (date-now blue-faint)
+ (date-scheduled yellow-warmer)
+ (date-weekday fg-main)
+ (date-weekend red-faint)
+
+ (keybind blue-intense)
+
+ (mail-cite-0 blue)
+ (mail-cite-1 yellow)
+ (mail-cite-2 green)
+ (mail-cite-3 magenta)
+ (mail-part magenta-cooler)
+ (mail-recipient cyan)
+ (mail-subject red-warmer)
+ (mail-other cyan-cooler)
+
+ (fg-prompt blue-intense)
+
+ (prose-block red-faint)
+ (prose-done green-intense)
+ (prose-metadata cyan-faint)
+ (prose-metadata-value blue-cooler)
+ (prose-table cyan)
+ (prose-todo red-intense)
+
+ (fg-heading-0 blue-cooler)
+ (fg-heading-1 magenta-cooler)
+ (fg-heading-2 magenta-warmer)
+ (fg-heading-3 blue)
+ (fg-heading-4 cyan)
+ (fg-heading-5 green-warmer)
+ (fg-heading-6 yellow)
+ (fg-heading-7 red)
+ (fg-heading-8 magenta)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 bg-magenta-nuanced)
+ (bg-heading-2 bg-red-nuanced)
+ (bg-heading-3 bg-blue-nuanced)
+ (bg-heading-4 bg-cyan-nuanced)
+ (bg-heading-5 bg-green-nuanced)
+ (bg-heading-6 bg-yellow-nuanced)
+ (bg-heading-7 bg-red-nuanced)
+ (bg-heading-8 bg-magenta-nuanced)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 magenta-cooler)
+ (overline-heading-2 magenta-warmer)
+ (overline-heading-3 blue)
+ (overline-heading-4 cyan)
+ (overline-heading-5 green)
+ (overline-heading-6 yellow-cooler)
+ (overline-heading-7 red-cooler)
+ (overline-heading-8 magenta))
+ "Preset for palette overrides with faint coloration.
+
+This changes many parts of the theme to make them look more
+colorful/intense. Many background colors are accented and
+coloration is increased to pop out more.
+
+To set a preset, assign its symbol without a quote as the value
+of the `modus-themes-common-palette-overrides' or as the value of
+theme-specific options such as `modus-operandi-palette-overrides'.
+
+Also see `modus-themes-preset-overrides-faint'.
+
+For overriding named colors and/or semantic color mappings read
+Info node `(modus-themes) Option for palette overrides'.")
-The `accented' property applies a more colorful background to the
-region.
+
-Combinations of any of those properties are expressed as a list,
-like in these examples:
+;;;; Helper functions for theme setup
- (no-extend)
- (bg-only accented)
- (accented bg-only no-extend)
+;; This is the WCAG formula: https://www.w3.org/TR/WCAG20-TECHS/G18.html
+(defun modus-themes-wcag-formula (hex)
+ "Get WCAG value of color value HEX.
+The value is defined in hexadecimal RGB notation, such #123456."
+ (cl-loop for k in '(0.2126 0.7152 0.0722)
+ for x in (color-name-to-rgb hex)
+ sum (* k (if (<= x 0.03928)
+ (/ x 12.92)
+ (expt (/ (+ x 0.055) 1.055) 2.4)))))
-The order in which the properties are set is not significant.
+;;;###autoload
+(defun modus-themes-contrast (c1 c2)
+ "Measure WCAG contrast ratio between C1 and C2.
+C1 and C2 are color values written in hexadecimal RGB."
+ (let ((ct (/ (+ (modus-themes-wcag-formula c1) 0.05)
+ (+ (modus-themes-wcag-formula c2) 0.05))))
+ (max ct (/ ct))))
-In user configuration files the form may look like this:
+(make-obsolete 'modus-themes-color nil "4.0.0")
+(make-obsolete 'modus-themes-color-alts nil "4.0.0")
+
+(declare-function cl-remove-if-not "cl-seq" (cl-pred cl-list &rest cl-keys))
+
+(defun modus-themes--list-enabled-themes ()
+ "Return list of `custom-enabled-themes' with modus- prefix."
+ (cl-remove-if-not
+ (lambda (theme)
+ (string-prefix-p "modus-" (symbol-name theme)))
+ custom-enabled-themes))
+
+(defun modus-themes--enable-themes ()
+ "Enable the Modus themes."
+ (mapc (lambda (theme)
+ (unless (memq theme custom-known-themes)
+ (load-theme theme :no-confirm :no-enable)))
+ modus-themes-items))
+
+(defun modus-themes--list-known-themes ()
+ "Return list of `custom-known-themes' with modus- prefix."
+ (modus-themes--enable-themes)
+ (cl-remove-if-not
+ (lambda (theme)
+ (string-prefix-p "modus-" (symbol-name theme)))
+ custom-known-themes))
- (setq modus-themes-region (quote (bg-only no-extend)))"
- :group 'modus-themes
- :package-version '(modus-themes . "1.5.0")
- :version "28.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Do not extend to the edge of the window" no-extend)
- (const :tag "Background only (preserve underlying colors)" bg-only)
- (const :tag "Accented background" accented))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Active region"))
-
-(defcustom modus-themes-deuteranopia nil
- "When non-nil use red/blue color-coding instead of red/green.
-
-This is to account for red-green color deficiency, also know as
-deuteranopia and variants. It applies to all contexts where
-there can be a color-coded distinction between failure or
-success, a to-do or done state, a mark for deletion versus a mark
-for selection (e.g. in Dired), current and lazily highlighted
-search matches, removed lines in diffs as opposed to added ones,
-and so on.
-
-Note that this does not change all colors throughout the active
-theme, but only applies to cases that have color-coding
-significance. For example, regular code syntax highlighting is
-not affected. There is no such need because of the themes'
-overarching commitment to the highest legibility standard, which
-ensures that text is readable regardless of hue, as well as the
-predominance of colors on the blue-cyan-magenta-purple side of
-the spectrum."
- :group 'modus-themes
- :package-version '(modus-themes . "2.0.0")
- :version "29.1"
- :type 'boolean
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Deuteranopia style"))
+(defun modus-themes--current-theme ()
+ "Return first enabled Modus theme."
+ (car (or (modus-themes--list-enabled-themes)
+ (modus-themes--list-known-themes))))
+
+(defun modus-themes--palette-symbol (theme &optional overrides)
+ "Return THEME palette as a symbol.
+With optional OVERRIDES, return THEME palette overrides as a
+symbol."
+ (when-let ((suffix (cond
+ ((and theme overrides)
+ "palette-overrides")
+ (theme
+ "palette"))))
+ (intern (format "%s-%s" theme suffix))))
+
+(defun modus-themes--palette-value (theme &optional overrides)
+ "Return palette value of THEME with optional OVERRIDES."
+ (let ((base-value (symbol-value (modus-themes--palette-symbol theme))))
+ (if overrides
+ (append (symbol-value (modus-themes--palette-symbol theme :overrides))
+ modus-themes-common-palette-overrides
+ base-value)
+ base-value)))
+
+(defun modus-themes--current-theme-palette (&optional overrides)
+ "Return palette value of active Modus theme, else produce `user-error'.
+With optional OVERRIDES return palette value plus whatever
+overrides."
+ (if-let ((theme (modus-themes--current-theme)))
+ (if overrides
+ (modus-themes--palette-value theme :overrides)
+ (modus-themes--palette-value theme))
+ (user-error "No enabled Modus theme could be found")))
+
+(defun modus-themes--disable-themes ()
+ "Disable themes per `modus-themes-disable-other-themes'."
+ (mapc #'disable-theme
+ (if modus-themes-disable-other-themes
+ custom-enabled-themes
+ (modus-themes--list-known-themes))))
+
+(defun modus-themes-load-theme (theme)
+ "Load THEME while disabling other themes.
+
+Which themes are disabled is determined by the user option
+`modus-themes-disable-other-themes'.
+
+Run the `modus-themes-after-load-theme-hook' as the final step
+after loading the THEME."
+ (modus-themes--disable-themes)
+ (load-theme theme :no-confirm)
+ (run-hooks 'modus-themes-after-load-theme-hook))
-(defcustom modus-themes-mail-citations nil
- "Control the color of citations/quotes in messages or emails.
+(defun modus-themes--retrieve-palette-value (color palette)
+ "Return COLOR from PALETTE.
+Use recursion until COLOR is retrieved as a string. Refrain from
+doing so if the value of COLOR is not a key in the PALETTE.
-By default (a nil value) citations are styled with contrasting
-hues to denote their depth. Colors are easy to tell apart
-because they complement each other, but they otherwise are not
-very prominent.
+Return `unspecified' if the value of COLOR cannot be determined.
+This symbol is accepted by faces and is thus harmless.
-Option `intense' is similar to the default in terms of using
-contrasting and complementary hues, but applies more saturated
-colors.
+This function is used in the macros `modus-themes-theme',
+`modus-themes-with-colors'."
+ (let ((value (car (alist-get color palette))))
+ (cond
+ ((or (stringp value)
+ (eq value 'unspecified))
+ value)
+ ((and (symbolp value)
+ (memq value (mapcar #'car palette)))
+ (modus-themes--retrieve-palette-value value palette))
+ (t
+ 'unspecified))))
-Option `faint' maintains the same color-based distinction between
-citation levels though the colors it uses have subtle differences
-between them.
+(defun modus-themes-get-color-value (color &optional overrides theme)
+ "Return color value of named COLOR for current Modus theme.
-Option `monochrome' turns all quotes into a shade of gray.
+COLOR is a symbol that represents a named color entry in the
+palette.
-Whatever the value assigned to this variable, citations in emails
-are controlled by typographic elements and/or indentation, which
-the themes do not touch."
- :group 'modus-themes
- :package-version '(modus-themes . "2.1.0")
- :version "29.1"
- :type '(choice
- (const :format "[%v] %t\n" :tag "Colorful email citations with contrasting hues (default)" nil)
- (const :format "[%v] %t\n" :tag "Like the default, but with more saturated colors" intense)
- (const :format "[%v] %t\n" :tag "Like the default, but with less saturated colors" faint)
- (const :format "[%v] %t\n" :tag "Deprecated alias of `faint'" desaturated)
- (const :format "[%v] %t\n" :tag "Uniformly gray mail citations" monochrome))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Mail citations"))
+If the value is the name of another color entry in the
+palette (so a mapping), recur until you find the underlying color
+value.
-(defcustom modus-themes-tabs-accented nil
- "Toggle accented tab backgrounds, instead of the default gray.
-This affects the built-in tab-bar mode and tab-line mode, as well
-as the Centaur tabs package."
- :group 'modus-themes
- :package-version '(modus-themes . "1.6.0")
- :version "28.1"
- :type 'boolean
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Tab style"))
+With optional OVERRIDES as a non-nil value, account for palette
+overrides. Else use the default palette.
-(defcustom modus-themes-box-buttons nil
- "Control the style of buttons in the Custom UI and related.
+With optional THEME as a symbol among `modus-themes-items', use
+the palette of that item. Else use the current Modus theme.
-The value is a list of properties, each designated by a symbol.
-The default (a nil value or an empty list) is a gray background
-combined with a pseudo three-dimensional effect.
+If COLOR is not present in the palette, return the `unspecified'
+symbol, which is safe when used as a face attribute's value."
+ (if-let* ((palette (if theme
+ (modus-themes--palette-value theme overrides)
+ (modus-themes--current-theme-palette overrides)))
+ (value (modus-themes--retrieve-palette-value color palette)))
+ value
+ 'unspecified))
-The `flat' property makes the button two dimensional.
+;;;; Commands
-The `accented' property changes the background from gray to an
-accent color.
+(make-obsolete 'modus-themes-load-themes nil "4.0.0")
+(make-obsolete 'modus-themes-load-operandi nil "4.0.0; Check `modus-themes-load-theme'")
+(make-obsolete 'modus-themes-load-vivendi nil "4.0.0; Check `modus-themes-load-theme'")
-The `faint' property reduces the overall coloration.
+(defvar modus-themes--select-theme-history nil
+ "Minibuffer history of `modus-themes--select-prompt'.")
-The `variable-pitch' property applies a proportionately spaced
-typeface to the button's text.
+(defun modus-themes--select-prompt ()
+ "Minibuffer prompt to select a Modus theme."
+ (intern
+ (completing-read
+ "Select Modus theme: "
+ (modus-themes--list-known-themes)
+ nil t nil
+ 'modus-themes--select-theme-history)))
-The `underline' property draws a line below the affected text and
-removes whatever box effect. This is optimal when Emacs runs
-inside a terminal emulator. If `flat' and `underline' are
-defined together, the latter takes precedence.
+;;;###autoload
+(defun modus-themes-select (theme)
+ "Load a Modus THEME using minibuffer completion.
+Run `modus-themes-after-load-theme-hook' after loading the theme.
+Disable other themes per `modus-themes-disable-other-themes'."
+ (interactive (list (modus-themes--select-prompt)))
+ (modus-themes-load-theme theme))
+
+(defun modus-themes--toggle-theme-p ()
+ "Return non-nil if `modus-themes-to-toggle' are valid."
+ (mapc (lambda (theme)
+ (if (or (memq theme modus-themes-items)
+ (memq theme (modus-themes--list-known-themes)))
+ theme
+ (user-error "`%s' is not part of `modus-themes-items'" theme)))
+ modus-themes-to-toggle))
-The symbol of a weight attribute adjusts the font of the button
-accordingly, such as `light', `semibold', etc. Valid symbols are
-defined in the variable `modus-themes-weights'.
+;;;###autoload
+(defun modus-themes-toggle ()
+ "Toggle between the two `modus-themes-to-toggle'.
+If `modus-themes-to-toggle' does not specify two Modus themes,
+prompt with completion for a theme among our collection (this is
+practically the same as the `modus-themes-select' command).
-A number, expressed as a floating point (e.g. 0.9), adjusts the
-height of the button's text to that many times the base font
-size. The default height is the same as 1.0, though it need not
-be explicitly stated. Instead of a floating point, an acceptable
-value can be in the form of a cons cell like (height . FLOAT)
-or (height FLOAT), where FLOAT is the given number.
+Run `modus-themes-after-load-theme-hook' after loading the theme.
+Disable other themes per `modus-themes-disable-other-themes'."
+ (interactive)
+ (if-let* ((themes (modus-themes--toggle-theme-p))
+ (one (car themes))
+ (two (cadr themes)))
+ (if (eq (car custom-enabled-themes) one)
+ (modus-themes-load-theme two)
+ (modus-themes-load-theme one))
+ (modus-themes-load-theme (modus-themes--select-prompt))))
+
+(defun modus-themes--list-colors-render (buffer theme &optional mappings &rest _)
+ "Render colors in BUFFER from THEME for `modus-themes-list-colors'.
+Optional MAPPINGS changes the output to only list the semantic
+color mappings of the palette, instead of its named colors."
+ (let* ((current-palette (modus-themes--palette-value theme mappings))
+ (palette (if mappings
+ (seq-remove (lambda (cell)
+ (stringp (cadr cell)))
+ current-palette)
+ current-palette))
+ (current-buffer buffer)
+ (current-theme theme))
+ (with-help-window buffer
+ (with-current-buffer standard-output
+ (erase-buffer)
+ (when (<= (display-color-cells) 256)
+ (insert (concat "Your display terminal may not render all color previews!\n"
+ "It seems to only support <= 256 colors.\n\n"))
+ (put-text-property (point-min) (point) 'face 'warning))
+ ;; We need this to properly render the first line.
+ (insert " ")
+ (dolist (cell palette)
+ (let* ((name (car cell))
+ (color (modus-themes-get-color-value name mappings theme))
+ (pad (make-string 10 ?\s))
+ (fg (if (eq color 'unspecified)
+ (progn
+ (readable-foreground-color (modus-themes-get-color-value 'bg-main nil theme))
+ (setq pad (make-string 6 ?\s)))
+ (readable-foreground-color color))))
+ (let ((old-point (point)))
+ (insert (format "%s %s" color pad))
+ (put-text-property old-point (point) 'face `( :foreground ,color)))
+ (let ((old-point (point)))
+ (insert (format " %s %s %s\n" color pad name))
+ (put-text-property old-point (point)
+ 'face `( :background ,color
+ :foreground ,fg
+ :extend t)))
+ ;; We need this to properly render the last line.
+ (insert " ")))
+ (setq-local revert-buffer-function
+ (lambda (_ignore-auto _noconfirm)
+ (modus-themes--list-colors-render current-buffer current-theme mappings)))))))
-The `all-buttons' property extends the box button effect (or the
-aforementioned properties) to the faces of the generic widget
-library. By default, those do not look like the buttons of the
-Custom UI as they are ordinary text wrapped in square brackets.
+(defvar modus-themes--list-colors-prompt-history '()
+ "Minibuffer history for `modus-themes--list-colors-prompt'.")
-Combinations of any of those properties are expressed as a list,
-like in these examples:
+(defun modus-themes--list-colors-prompt ()
+ "Prompt for Modus theme.
+Helper function for `modus-themes-list-colors'."
+ (let ((def (format "%s" (modus-themes--current-theme))))
+ (completing-read
+ (format "Use palette from theme [%s]: " def)
+ (modus-themes--list-known-themes) nil t nil
+ 'modus-themes--list-colors-prompt-history def)))
- (flat)
- (variable-pitch flat)
- (variable-pitch flat semibold 0.9)
- (variable-pitch flat semibold (height 0.9)) ; same as above
- (variable-pitch flat semibold (height . 0.9)) ; same as above
+(defun modus-themes-list-colors (theme &optional mappings)
+ "Preview named colors of the Modus THEME of choice.
+With optional prefix argument for MAPPINGS preview the semantic
+color mappings instead of the named colors."
+ (interactive (list (intern (modus-themes--list-colors-prompt)) current-prefix-arg))
+ (modus-themes--list-colors-render
+ (format (if mappings "*%s-list-mappings*" "*%s-list-colors*") theme)
+ theme
+ mappings))
-The order in which the properties are set is not significant.
+(defalias 'modus-themes-preview-colors 'modus-themes-list-colors
+ "Alias of `modus-themes-list-colors'.")
-In user configuration files the form may look like this:
+(defun modus-themes-list-colors-current (&optional mappings)
+ "Call `modus-themes-list-colors' for the current Modus theme.
+Optional prefix argument MAPPINGS has the same meaning as for
+`modus-themes-list-colors'."
+ (interactive "P")
+ (modus-themes-list-colors (modus-themes--current-theme) mappings))
- (setq modus-themes-box-buttons (quote (variable-pitch flat 0.9)))"
- :group 'modus-themes
- :package-version '(modus-themes . "2.3.0")
- :version "29.1"
- :type '(set :tag "Properties" :greedy t
- (const :tag "Two-dimensional button" flat)
- (const :tag "Accented background instead of gray" accented)
- (const :tag "Reduce overall coloration" faint)
- (const :tag "Proportionately spaced font (variable-pitch)" variable-pitch)
- (const :tag "Underline instead of a box effect" underline)
- (const :tag "Apply box button style to generic widget faces" all-buttons)
- (choice :tag "Font weight (must be supported by the typeface)"
- (const :tag "Thin" thin)
- (const :tag "Ultra-light" ultralight)
- (const :tag "Extra-light" extralight)
- (const :tag "Light" light)
- (const :tag "Semi-light" semilight)
- (const :tag "Regular (default)" nil)
- (const :tag "Medium" medium)
- (const :tag "Bold" bold)
- (const :tag "Semi-bold" semibold)
- (const :tag "Extra-bold" extrabold)
- (const :tag "Ultra-bold" ultrabold))
- (radio :tag "Height"
- (float :tag "Floating point to adjust height by")
- (cons :tag "Cons cell of `(height . FLOAT)'"
- (const :tag "The `height' key (constant)" height)
- (float :tag "Floating point"))))
- :set #'modus-themes--set-option
- :initialize #'custom-initialize-default
- :link '(info-link "(modus-themes) Box buttons"))
+(defalias 'modus-themes-preview-colors-current 'modus-themes-list-colors-current
+ "Alias of `modus-themes-list-colors-current'.")
-;;; Internal functions
+;;;; Internal functions
(defun modus-themes--warn (option)
"Warn that OPTION has changed."
@@ -2890,51 +1339,6 @@ list given LIST-PRED, using DEFAULT as a fallback."
(car val)
val))
-(defun modus-themes--palette (theme)
- "Return color palette for Modus theme THEME.
-THEME is a symbol, either `modus-operandi' or `modus-vivendi'."
- (pcase theme
- ('modus-operandi
- (append modus-themes-operandi-color-overrides
- modus-themes-operandi-colors))
- ('modus-vivendi
- (append modus-themes-vivendi-color-overrides
- modus-themes-vivendi-colors))
- (_theme
- (error "'%s' is not a Modus theme" theme))))
-
-(defvar modus-themes-faces)
-(defvar modus-themes-custom-variables)
-
-(defmacro modus-themes-theme (name)
- "Bind NAME's color palette around face specs and variables.
-
-NAME should be the proper name of a Modus theme, either
-`modus-operandi' or `modus-vivendi'.
-
-Face specifications are passed to `custom-theme-set-faces'.
-While variables are handled by `custom-theme-set-variables'.
-Those are stored in `modus-themes-faces' and
-`modus-themes-custom-variables' respectively."
- (declare (indent 0))
- (let ((palette-sym (gensym))
- (colors (mapcar #'car modus-themes-operandi-colors)))
- `(let* ((class '((class color) (min-colors 89)))
- (,palette-sym (modus-themes--palette ',name))
- ,@(mapcar (lambda (color)
- (list color `(alist-get ',color ,palette-sym)))
- colors))
- (custom-theme-set-faces ',name ,@modus-themes-faces)
- (custom-theme-set-variables ',name ,@modus-themes-custom-variables))))
-
-(defun modus-themes--current-theme ()
- "Return current modus theme."
- (car
- (seq-filter
- (lambda (theme)
- (string-match-p "^modus" (symbol-name theme)))
- custom-enabled-themes)))
-
;; Helper functions that are meant to ease the implementation of the
;; above customization variables.
(defun modus-themes--bold-weight ()
@@ -2957,145 +1361,13 @@ Those are stored in `modus-themes-faces' and
(when modus-themes-variable-pitch-ui
(list :inherit 'variable-pitch)))
-(defun modus-themes--fringe (mainbg subtlebg intensebg)
- "Conditional use of background colors for fringes.
-MAINBG is the default. SUBTLEBG should be a subtle grayscale
-value. INTENSEBG must be a more pronounced grayscale color."
- (pcase modus-themes-fringes
- ('intense (list :background intensebg))
- ('subtle (list :background subtlebg))
- (_ (list :background mainbg))))
-
-(defun modus-themes--line-numbers (mainfg mainbg altfg &optional altbg)
- "Conditional use of colors for line numbers.
-MAINBG and MAINFG are the default colors. ALTFG is a color that
-combines with the theme's primary background (white/black)."
- (if modus-themes-subtle-line-numbers
- (list :background (or altbg 'unspecified) :foreground altfg)
- (list :background mainbg :foreground mainfg)))
-
-(defun modus-themes--markup (mainfg intensefg subtlebg intensebg)
- "Conditional use of colors for markup in Org and others.
-MAINFG is the default foreground. SUBTLEBG is a gray background.
-INTENSEBG is a colorful background for use with the main
-foreground. INTENSEFG is an alternative to the default."
- (let ((properties modus-themes-markup))
- (list
- :inherit
- (cond
- ((and (memq 'bold properties)
- (memq 'italic properties))
- (list 'bold-italic 'modus-themes-fixed-pitch))
- ((memq 'italic properties)
- (list 'italic 'modus-themes-fixed-pitch))
- ((memq 'bold properties)
- (list 'bold 'modus-themes-fixed-pitch))
- (t 'modus-themes-fixed-pitch))
- :background
- (cond
- ((and (memq 'background properties)
- (memq 'intense properties))
- intensebg)
- ((memq 'background properties)
- subtlebg)
- (t
- 'unspecified))
- :foreground
- (cond
- ((and (memq 'background properties)
- (memq 'intense properties))
- mainfg)
- ((memq 'intense properties)
- intensefg)
- (t
- mainfg)))))
-
-(defun modus-themes--lang-check (underline subtlefg intensefg intensefg-alt subtlebg intensebg faintfg)
- "Conditional use of foreground colors for language checkers.
-UNDERLINE is a color-code value for the affected text's underline
-property. SUBTLEFG and INTENSEFG follow the same color-coding
-pattern and represent a value that is faint or vibrant
-respectively. INTENSEFG-ALT is used when the intensity is high.
-SUBTLEBG and INTENSEBG are color-coded background colors that
-differ in overall intensity. FAINTFG is a nuanced color."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-lang-checkers)))
- (list :underline
- (list :color
- (if (memq 'faint properties)
- faintfg underline)
- :style
- (if (memq 'straight-underline properties)
- 'line 'wave))
- :background
- (cond
- ((and (memq 'background properties)
- (memq 'faint properties))
- subtlebg)
- ((and (memq 'background properties)
- (memq 'intense properties))
- intensebg)
- ((memq 'background properties)
- subtlebg)
- ('unspecified))
- :foreground
- (cond
- ((and (memq 'faint properties)
- (memq 'text-also properties))
- faintfg)
- ((and (memq 'background properties)
- (memq 'intense properties))
- intensefg-alt)
- ((memq 'intense properties)
- intensefg)
- ((memq 'text-also properties)
- subtlefg)
- ('unspecified)))))
-
-(defun modus-themes--prompt (mainfg intensefg grayfg subtlebg intensebg intensebg-fg subtlebggray intensebggray)
+(defun modus-themes--prompt (fg bg)
"Conditional use of colors for text prompt faces.
-MAINFG is the prompt's standard foreground. INTENSEFG is a more
-prominent alternative to the main foreground, while GRAYFG is a
-less luminant shade of gray.
-
-SUBTLEBG is a subtle accented background that works with either
-MAINFG or INTENSEFG.
-
-INTENSEBG is a more pronounced accented background color that
-should be combinable with INTENSEBG-FG.
-
-SUBTLEBGGRAY and INTENSEBGGRAY are background values. The former
-can be combined with GRAYFG, while the latter only works with the
-theme's fallback text color."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-prompts)))
- (list :foreground
- (cond
- ((and (memq 'gray properties)
- (memq 'intense properties))
- 'unspecified)
- ((memq 'gray properties)
- grayfg)
- ((and (memq 'background properties)
- (memq 'intense properties))
- intensebg-fg)
- ((memq 'intense properties)
- intensefg)
- (mainfg))
- :background
- (cond
- ((and (memq 'gray properties)
- (memq 'background properties)
- (memq 'intense properties))
- intensebggray)
- ((and (memq 'gray properties)
- (memq 'background properties))
- subtlebggray)
- ((and (memq 'background properties)
- (memq 'intense properties))
- intensebg)
- ((memq 'background properties)
- subtlebg)
- ('unspecified))
- :inherit
+FG is the prompt's standard foreground. BG is a background
+color that is combined with FG-FOR-BG."
+ (let* ((properties (modus-themes--list-or-warn 'modus-themes-prompts))
+ (weight (modus-themes--weight properties)))
+ (list :inherit
(cond
((and (memq 'bold properties)
(memq 'italic properties))
@@ -3104,104 +1376,16 @@ theme's fallback text color."
'italic)
((memq 'bold properties)
'bold)
- ('unspecified)))))
-
-(defun modus-themes--paren (normalbg intensebg)
- "Conditional use of intense colors for matching parentheses.
-NORMALBG should be the special palette color bg-paren-match or
-something similar. INTENSEBG must be easier to discern next to
-other backgrounds, such as the special palette color
-bg-paren-match-intense."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-paren-match)))
- (list :inherit
- (if (memq 'bold properties)
- 'bold
- 'unspecified)
- :background
- (if (memq 'intense properties)
- intensebg
- normalbg)
- :underline
- (if (memq 'underline properties)
- t
- nil))))
-
-(defun modus-themes--syntax-foreground (fg faint)
- "Apply foreground value to code syntax.
-FG is the default. FAINT is typically the same color in its
-desaturated version."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-syntax)))
- (list :foreground
- (cond
- ((memq 'faint properties)
- faint)
- (fg)))))
-
-(defun modus-themes--syntax-extra (fg faint alt &optional faint-alt)
- "Apply foreground value to code syntax.
-FG is the default. FAINT is typically the same color in its
-desaturated version. ALT is another hue while optional FAINT-ALT
-is its subtle alternative."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-syntax)))
- (list :foreground
- (cond
- ((and (memq 'alt-syntax properties)
- (memq 'faint properties))
- (or faint-alt alt))
- ((memq 'faint properties)
- faint)
- ((memq 'alt-syntax properties)
- alt)
- (fg)))))
-
-(defun modus-themes--syntax-string (fg faint green alt &optional faint-green faint-alt)
- "Apply foreground value to strings in code syntax.
-FG is the default. FAINT is typically the same color in its
-desaturated version. GREEN is a color variant in that side of
-the spectrum. ALT is another hue. Optional FAINT-GREEN is a
-subtle alternative to GREEN. Optional FAINT-ALT is a subtle
-alternative to ALT."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-syntax)))
- (list :foreground
- (cond
- ((and (memq 'faint properties)
- (memq 'green-strings properties))
- (or faint-green green))
- ((and (memq 'alt-syntax properties)
- (memq 'faint properties))
- (or faint-alt faint))
- ((memq 'faint properties)
- faint)
- ((memq 'green-strings properties)
- green)
- ((memq 'alt-syntax properties)
- alt)
- (fg)))))
-
-(defun modus-themes--syntax-comment (fg yellow &optional faint-yellow faint)
- "Apply foreground value to strings in code syntax.
-FG is the default. YELLOW is a color variant of that name while
-optional FAINT-YELLOW is its subtle variant. Optional FAINT is
-an alternative to the default value."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-syntax)))
- (list :foreground
- (cond
- ((and (memq 'faint properties)
- (memq 'yellow-comments properties))
- (or faint-yellow yellow))
- ((and (memq 'alt-syntax properties)
- (memq 'yellow-comments properties)
- (not (memq 'green-strings properties)))
- yellow)
- ((memq 'yellow-comments properties)
- yellow)
- ((memq 'faint properties)
- (or faint fg))
- (fg)))))
-
-(defun modus-themes--key-cdr (key alist)
- "Get cdr of KEY in ALIST."
- (cdr (assoc key alist)))
+ ('unspecified))
+ :background bg
+ :foreground fg
+ :weight
+ ;; If we have `bold' specifically, we inherit the face of
+ ;; the same name. This allows the user to customise that
+ ;; face, such as to change its font family.
+ (if (and weight (not (eq weight 'bold)))
+ weight
+ 'unspecified))))
(defconst modus-themes-weights
'( thin ultralight extralight light semilight regular medium
@@ -3209,29 +1393,23 @@ an alternative to the default value."
"List of font weights.")
(defun modus-themes--weight (list)
- "Search for `modus-themes--heading' weight in LIST."
+ "Search for `modus-themes-weights' weight in LIST."
(catch 'found
(dolist (elt list)
(when (memq elt modus-themes-weights)
(throw 'found elt)))))
-(defun modus-themes--heading (level fg fg-alt bg bg-gray border)
+(defun modus-themes--heading (level fg &optional bg ol)
"Conditional styles for `modus-themes-headings'.
LEVEL is the heading's position in their order. FG is the
-default text color. FG-ALT is an accented, more saturated value
-than the default. BG is a nuanced, typically accented,
-background that can work well with either of the foreground
-values. BG-GRAY is a gray background. BORDER is a color value
-that combines well with the background and foreground."
- (let* ((key (modus-themes--key-cdr level modus-themes-headings))
- (style (or key (modus-themes--key-cdr t modus-themes-headings)))
+default text color. Optional BG is an appropriate background.
+Optional OL is the color of an overline."
+ (let* ((key (alist-get level modus-themes-headings))
+ (style (or key (alist-get t modus-themes-headings)))
(style-listp (listp style))
(properties style)
(var (when (memq 'variable-pitch properties) 'variable-pitch))
- (varbold (if var
- (append (list 'bold) (list var))
- 'bold))
(weight (when style-listp (modus-themes--weight style))))
(list :inherit
(cond
@@ -3239,336 +1417,28 @@ that combines well with the background and foreground."
;; deprecate a variable's value.
((or weight (memq 'no-bold properties))
var)
- (varbold))
- :background
- (cond
- ((and (memq 'monochrome properties)
- (memq 'background properties))
- bg-gray)
- ((memq 'background properties)
- bg)
- ('unspecified))
- :foreground
- (cond
- ((memq 'monochrome properties)
- 'unspecified)
- ((memq 'rainbow properties)
- fg-alt)
- (fg))
- :height
- (modus-themes--property-lookup properties 'height #'floatp 'unspecified)
- :weight
- (or weight 'unspecified)
- :overline
- (if (memq 'overline properties)
- border
- 'unspecified))))
-
-(defun modus-themes--agenda-structure (fg)
- "Control the style of the Org agenda structure.
-FG is the foreground color to use."
- (let* ((properties (modus-themes--key-cdr 'header-block modus-themes-org-agenda))
- (weight (modus-themes--weight properties)))
- (list :inherit
- (cond
- ((and weight (memq 'variable-pitch properties))
- 'variable-pitch)
- (weight 'unspecified)
- ((memq 'variable-pitch properties)
- (list 'bold 'variable-pitch))
+ (var (append (list 'bold) (list var)))
('bold))
- :weight
- (or weight 'unspecified)
- :height
- (cond ((memq 'no-scale properties) 'unspecified)
- ((modus-themes--property-lookup properties 'height #'floatp 1.15)))
- :foreground fg)))
-
-(defun modus-themes--agenda-date (defaultfg grayscalefg &optional workaholicfg grayscaleworkaholicfg bg bold ul)
- "Control the style of date headings in Org agenda buffers.
-DEFAULTFG is the original accent color for the foreground.
-GRAYSCALEFG is a neutral color. Optional WORKAHOLICFG and
-GRAYSCALEWORKAHOLICFG are alternative foreground colors.
-Optional BG is a background color. Optional BOLD applies a bold
-weight. Optional UL applies an underline."
- (let ((properties (modus-themes--key-cdr 'header-date modus-themes-org-agenda)))
- (list :inherit
- (cond
- ((or (memq 'bold-all properties)
- (and bold (memq 'bold-today properties)))
- 'bold)
- (t
- 'unspecified))
- :background
- (cond
- ((memq 'underline-today properties)
- 'unspecified)
- ((or bg 'unspecified)))
- :foreground
- (cond
- ((and (memq 'grayscale properties)
- (memq 'workaholic properties))
- (or grayscaleworkaholicfg grayscalefg))
- ((memq 'grayscale properties)
- grayscalefg)
- ((memq 'workaholic properties)
- (or workaholicfg defaultfg))
- (t
- defaultfg))
- :height
- (modus-themes--property-lookup properties 'height #'floatp 'unspecified)
- :underline
- (if (and ul (memq 'underline-today properties))
- t
- 'unspecified))))
-
-(defun modus-themes--agenda-event (fg-accent &optional varied)
- "Control the style of the Org agenda events.
-FG-ACCENT is the accent color to use. Optional VARIED is a
-toggle to behave in accordance with the semantics of the `varied'
-property that the `event' key accepts in
-`modus-themes-org-agenda'."
- (let ((properties (modus-themes--key-cdr 'event modus-themes-org-agenda)))
- (list :foreground
- (cond
- ((or (and (memq 'varied properties) varied)
- (and (memq 'accented properties)
- (memq 'varied properties)
- varied))
- 'unspecified)
- ((memq 'accented properties)
- fg-accent)
- ('unspecified))
- :inherit
- (cond
- ((and (memq 'italic properties)
- (memq 'varied properties)
- varied)
- '(shadow italic))
- ((and (memq 'accented properties)
- (memq 'varied properties)
- varied)
- 'shadow)
- ((or (and (memq 'varied properties) varied)
- (and (memq 'italic properties) varied))
- '(shadow italic))
- ((and (memq 'italic properties)
- (not (memq 'varied properties)))
- '(shadow italic))
- ('shadow)))))
-
-(defun modus-themes--agenda-scheduled (defaultfg uniformfg rainbowfg)
- "Control the style of the Org agenda scheduled tasks.
-DEFAULTFG is an accented foreground color that is meant to
-differentiate between past or present and future tasks.
-UNIFORMFG is a more subtle color that eliminates the color coding
-for scheduled tasks. RAINBOWFG is a prominent accent value that
-clearly distinguishes past, present, future tasks."
- (pcase (modus-themes--key-cdr 'scheduled modus-themes-org-agenda)
- ('uniform (list :foreground uniformfg))
- ('rainbow (list :foreground rainbowfg))
- (_ (list :foreground defaultfg))))
-
-(defun modus-themes--agenda-habit (default traffic simple &optional default-d traffic-d simple-d)
- "Specify background values for `modus-themes-org-agenda' habits.
-DEFAULT is the original foregrounc color. TRAFFIC is to be used
-when the traffic-light style is applied, while SIMPLE corresponds
-to the simplified style.
-
-Optional DEFAULT-D, TRAFFIC-D, SIMPLE-D are alternatives to the
-main colors, meant for dopia when `modus-themes-deuteranopia' is
-non-nil."
- (let ((habit (modus-themes--key-cdr 'habit modus-themes-org-agenda)))
- (cond
- ((and modus-themes-deuteranopia (null habit))
- (list :background (or default-d default)))
- ((and modus-themes-deuteranopia (eq habit 'traffic-light))
- (list :background (or traffic-d traffic)))
- ((and modus-themes-deuteranopia (eq habit 'simplified))
- (list :background (or simple-d simple)))
- (t
- (pcase habit
- ('traffic-light (list :background traffic))
- ('simplified (list :background simple))
- (_ (list :background default)))))))
-
-(defun modus-themes--org-block (bgblk fgdefault &optional fgblk)
- "Conditionally set the background of Org blocks.
-BGBLK applies to a distinct neutral background. Else blocks have
-no background of their own (the default), so they look the same
-as the rest of the buffer. FGDEFAULT is used when no distinct
-background is present. While optional FGBLK specifies a
-foreground value that can be combined with BGBLK.
-
-`modus-themes-org-blocks' also accepts `tinted-background' (alias
-`rainbow') as a value which applies to `org-src-block-faces' (see
-the theme's source code)."
- (if (or (eq modus-themes-org-blocks 'gray-background)
- (eq modus-themes-org-blocks 'grayscale)
- (eq modus-themes-org-blocks 'greyscale))
- (list :background bgblk :foreground (or fgblk fgdefault) :extend t)
- (list :background 'unspecified :foreground fgdefault)))
-
-(defun modus-themes--org-block-delim (bgaccent fgaccent bg fg)
- "Conditionally set the styles of Org block delimiters.
-BG, FG, BGACCENT, FGACCENT apply a background and foreground
-color respectively.
-
-The former pair is a grayscale combination that should be more
-distinct than the background of the block. It is applied to the
-default styles or when `modus-themes-org-blocks' is set
-to `grayscale' (or `greyscale').
-
-The latter pair should be more subtle than the background of the
-block, as it is used when `modus-themes-org-blocks' is
-set to `rainbow'."
- (pcase modus-themes-org-blocks
- ('gray-background (list :background bg :foreground fg :extend t))
- ('grayscale (list :background bg :foreground fg :extend t))
- ('greyscale (list :background bg :foreground fg :extend t))
- ('tinted-background (list :background bgaccent :foreground fgaccent :extend nil))
- ('rainbow (list :background bgaccent :foreground fgaccent :extend nil))
- (_ (list :foreground fg :extend nil))))
-
-(defun modus-themes--mode-line-attrs
- (fg bg fg-alt bg-alt fg-accent bg-accent border border-3d &optional alt-style fg-distant)
- "Color combinations for `modus-themes-mode-line'.
-
-FG and BG are the default colors. FG-ALT and BG-ALT are meant to
-accommodate the options for a 3D mode line or a `moody' compliant
-one. FG-ACCENT and BG-ACCENT are used for all variants. BORDER
-applies to all permutations of the mode line, except the
-three-dimensional effect, where BORDER-3D is used instead.
-
-Optional ALT-STYLE applies an appropriate style to the mode
-line's box property.
-
-Optional FG-DISTANT should be close to the main background
-values. It is intended to be used as a distant-foreground
-property."
- (let* ((properties (modus-themes--list-or-warn 'modus-themes-mode-line))
- (padding (modus-themes--property-lookup properties 'padding #'natnump 1))
- (height (modus-themes--property-lookup properties 'height #'floatp 'unspecified))
- (padded (> padding 1))
- (base (cond ((memq 'accented properties)
- (cons fg-accent bg-accent))
- ((and (or (memq 'moody properties)
- (memq '3d properties))
- (not (memq 'borderless properties)))
- (cons fg-alt bg-alt))
- ((cons fg bg))))
- (line (cond ((not (or (memq 'moody properties) padded))
- 'unspecified)
- ((and (not (memq 'moody properties))
- padded
- (memq 'borderless properties))
- 'unspecified)
- ((and (memq 'borderless properties)
- (memq 'accented properties))
- bg-accent)
- ((memq 'borderless properties)
- bg)
- (border))))
- (list :foreground (car base)
- :background (cdr base)
- :height height
- :box
- (cond ((memq 'moody properties)
- 'unspecified)
- ((and (memq '3d properties) padded)
- (list :line-width padding
- :color
- (cond ((and (memq 'accented properties)
- (memq 'borderless properties))
- bg-accent)
- ((or (memq 'accented properties)
- (memq 'borderless properties))
- bg)
- (bg-alt))
- :style (when alt-style 'released-button)))
- ((and (memq 'accented properties) padded)
- (list :line-width padding :color bg-accent))
- ((memq '3d properties)
- (list :line-width padding
- :color
- (cond ((and (memq 'accented properties)
- (memq 'borderless properties))
- bg-accent)
- ((memq 'borderless properties) bg)
- (border-3d))
- :style (when alt-style 'released-button)))
- ((and (memq 'accented properties)
- (memq 'borderless properties))
- (list :line-width padding :color bg-accent))
- ((or (memq 'borderless properties) padded)
- (list :line-width padding :color bg))
- (border))
- :overline line
- :underline line
- :distant-foreground
- (if (memq 'moody properties)
- fg-distant
- 'unspecified))))
-
-;; Basically this is just for the keycast key indicator.
-(defun modus-themes--mode-line-padded-box (color)
- "Set padding of mode line box attribute with given COLOR."
- (list :box (list :color color
- :line-width
- (or (cl-loop
- for x in modus-themes-mode-line
- if (natnump x) return x)
- 1))))
-
-(defun modus-themes--diff (mainbg mainfg altbg altfg &optional deubg deufg deualtbg deualtfg bg-only-fg)
- "Color combinations for `modus-themes-diffs'.
-
-MAINBG must be one of the dedicated backgrounds for diffs while
-MAINFG must be the same for the foreground.
-
-ALTBG needs to be a slightly accented background that is meant to
-be combined with ALTFG. Both must be less intense than MAINBG
-and MAINFG respectively.
-
-DEUBG and DEUFG must be combinations of colors that account for
-red-green color defficiency (deuteranopia). They are the
-equivalent of MAINBG and MAINFG.
-
-DEUALTBG and DEUALTFG are the equivalent of ALTBG and ALTFG for
-deuteranopia.
-
-Optional non-nil BG-ONLY-FG applies ALTFG else leaves the
-foreground unspecified."
- (if modus-themes-deuteranopia
- (pcase modus-themes-diffs
- ('desaturated (list :background (or deualtbg altbg) :foreground (or deualtfg altfg)))
- ('bg-only (list :background (or deualtbg altbg) :foreground (if bg-only-fg (or deualtfg altfg) 'unspecified)))
- (_ (list :background (or deubg mainbg) :foreground (or deufg mainfg))))
- (pcase modus-themes-diffs
- ('desaturated (list :background altbg :foreground altfg))
- ('bg-only (list :background altbg :foreground (if bg-only-fg altfg 'unspecified)))
- (_ (list :background mainbg :foreground mainfg)))))
-
-(defun modus-themes--deuteran (deuteran main)
- "Determine whether to color-code success as DEUTERAN or MAIN."
- (if modus-themes-deuteranopia
- (list deuteran)
- (list main)))
-
-(defun modus-themes--completion-line (key bg fg bgintense fgintense &optional bgaccent bgaccentintense)
- "Styles for `modus-themes-completions'.
-KEY is the key of a cons cell. BG and FG are the main colors.
-BGINTENSE works with the main foreground. FGINTENSE works on its
-own. BGACCENT and BGACCENTINTENSE are colorful variants of the
-other backgrounds."
+ :background (or bg 'unspecified)
+ :foreground fg
+ :overline (or ol 'unspecified)
+ :height (modus-themes--property-lookup properties 'height #'floatp 'unspecified)
+ :weight (or weight 'unspecified))))
+
+(defun modus-themes--org-block (fg bg)
+ "Conditionally set the FG and BG of Org blocks."
+ (let ((gray (or (eq modus-themes-org-blocks 'gray-background)
+ (eq modus-themes-org-blocks 'grayscale) ; for backward compatibility
+ (eq modus-themes-org-blocks 'greyscale))))
+ (list :inherit 'modus-themes-fixed-pitch
+ :background (if gray bg 'unspecified)
+ :foreground (if gray 'unspecified fg)
+ :extend (if gray t 'unspecified))))
+
+(defun modus-themes--completion-line (bg)
+ "Styles for `modus-themes-completions' with BG as the background."
(let* ((var (modus-themes--list-or-warn 'modus-themes-completions))
- (properties (or (alist-get key var) (alist-get t var)))
- (popup (eq key 'popup))
- (selection (eq key 'selection))
- (line (or popup selection))
- (text (memq 'text-also properties))
- (accented (memq 'accented properties))
- (intense (memq 'intense properties))
+ (properties (or (alist-get 'selection var) (alist-get t var)))
(italic (memq 'italic properties))
(weight (modus-themes--weight properties))
(bold (when (and weight (eq weight 'bold)) 'bold)))
@@ -3581,35 +1451,18 @@ other backgrounds."
'unspecified)
(italic 'bold-italic)
('bold))
- :background
- (cond
- ((and accented intense line)
- bgaccentintense)
- ((and accented line)
- bgaccent)
- (intense bgintense)
- (bg))
- :foreground
- (cond
- ((and line text intense)
- fgintense)
- ((and line text)
- fg)
- ('unspecified))
+ :background bg
+ :foreground 'unspecified
:underline
(if (memq 'underline properties) t 'unspecified)
:weight
(if (and weight (null bold)) weight 'unspecified))))
-(defun modus-themes--completion-match (key bg fg bgintense fgintense)
+(defun modus-themes--completion-match (fg bg)
"Styles for `modus-themes-completions'.
-KEY is the key of a cons cell. BG and FG are the main colors.
-BGINTENSE works with the main foreground. FGINTENSE works on its
-own."
+FG and BG are the main colors."
(let* ((var (modus-themes--list-or-warn 'modus-themes-completions))
- (properties (or (alist-get key var) (alist-get t var)))
- (background (memq 'background properties))
- (intense (memq 'intense properties))
+ (properties (or (alist-get 'matches var) (alist-get t var)))
(italic (memq 'italic properties))
(weight (modus-themes--weight properties))
(bold (when (and weight (eq weight 'bold)) 'bold)))
@@ -3622,443 +1475,13 @@ own."
'unspecified)
(italic 'bold-italic)
('bold))
- :background
- (cond
- ((and background intense)
- bgintense)
- (background bg)
- ('unspecified))
- :foreground
- (cond
- ((and background intense)
- 'unspecified)
- (background fg)
- (intense fgintense)
- (fg))
+ :background bg
+ :foreground fg
:underline
(if (memq 'underline properties) t 'unspecified)
:weight
(if (and weight (null bold)) weight 'unspecified))))
-(defun modus-themes--link (fg fgfaint underline bg bgneutral)
- "Conditional application of link styles.
-FG is the link's default color for its text and underline
-property. FGFAINT is a desaturated color for the text and
-underline. UNDERLINE is a gray color only for the undeline. BG
-is a background color and BGNEUTRAL is its fallback value."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-links)))
- (list :inherit
- (cond
- ((and (memq 'bold properties)
- (memq 'italic properties))
- 'bold-italic)
- ((memq 'italic properties)
- 'italic)
- ((memq 'bold properties)
- 'bold)
- ('unspecified))
- :background
- (cond
- ((and (memq 'no-color properties)
- (memq 'no-underline properties))
- bgneutral)
- ((memq 'background properties)
- bg)
- ('unspecified))
- :foreground
- (cond
- ((memq 'no-color properties)
- 'unspecified)
- ((memq 'faint properties)
- fgfaint)
- (fg))
- :underline
- (cond
- ((memq 'no-underline properties)
- 'unspecified)
- ((memq 'neutral-underline properties)
- underline)
- (t)))))
-
-(defun modus-themes--link-color (fg fgfaint &optional neutralfg)
- "Extend `modus-themes--link'.
-FG is the main accented foreground. FGFAINT is also accented,
-yet desaturated. Optional NEUTRALFG is a gray value."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-links)))
- (list :foreground
- (cond
- ((memq 'no-color properties)
- (or neutralfg 'unspecified))
- ((memq 'faint properties)
- fgfaint)
- (fg))
- :underline
- (cond
- ((memq 'no-underline properties)
- 'unspecified)
- ((memq 'neutral-underline properties)
- (or neutralfg 'unspecified))
- (t)))))
-
-(defun modus-themes--region (bg fg bgsubtle bgaccent bgaccentsubtle)
- "Apply `modus-themes-region' styles.
-
-BG and FG are the main values that are used by default. BGSUBTLE
-is a subtle background value that can be combined with all colors
-used to fontify text and code syntax. BGACCENT is a colored
-background that combines well with FG. BGACCENTSUBTLE can be
-combined with all colors used to fontify text."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-region)))
- (list :background
- (cond
- ((and (memq 'accented properties)
- (memq 'bg-only properties))
- bgaccentsubtle)
- ((memq 'accented properties)
- bgaccent)
- ((memq 'bg-only properties)
- bgsubtle)
- (bg))
- :foreground
- (cond
- ((and (memq 'accented properties)
- (memq 'bg-only properties))
- 'unspecified)
- ((memq 'bg-only properties)
- 'unspecified)
- (fg))
- :extend
- (cond
- ((memq 'no-extend properties)
- nil)
- (t)))))
-
-(defun modus-themes--hl-line
- (bgdefault bgintense bgaccent bgaccentsubtle lineneutral lineaccent lineneutralintense lineaccentintense)
- "Apply `modus-themes-hl-line' styles.
-
-BGDEFAULT is a subtle neutral background. BGINTENSE is like the
-default, but more prominent. BGACCENT is a prominent accented
-background, while BGACCENTSUBTLE is more subtle. LINENEUTRAL and
-LINEACCENT are color values that can remain distinct against the
-buffer's possible backgrounds: the former is neutral, the latter
-is accented. LINENEUTRALINTENSE and LINEACCENTINTENSE are their
-more prominent alternatives."
- (let ((properties (modus-themes--list-or-warn 'modus-themes-hl-line)))
- (list :background
- (cond
- ((and (memq 'intense properties)
- (memq 'accented properties))
- bgaccent)
- ((memq 'accented properties)
- bgaccentsubtle)
- ((memq 'intense properties)
- bgintense)
- (bgdefault))
- :underline
- (cond
- ((and (memq 'intense properties)
- (memq 'accented properties)
- (memq 'underline properties))
- lineaccentintense)
- ((and (memq 'accented properties)
- (memq 'underline properties))
- lineaccent)
- ((and (memq 'intense properties)
- (memq 'underline properties))
- lineneutralintense)
- ((or (memq 'no-background properties)
- (memq 'underline properties))
- lineneutral)
- ('unspecified)))))
-
-(defun modus-themes--mail-cite (mainfg intensefg subtlefg)
- "Combinations for `modus-themes-mail-citations'.
-
-MAINFG is an accented foreground value. SUBTLEFG is its
-desaturated counterpart. INTENSEFG is a more saturated variant."
- (pcase modus-themes-mail-citations
- ('monochrome (list :inherit 'shadow))
- ('intense (list :foreground intensefg))
- ('faint (list :foreground subtlefg))
- ('desaturated (list :foreground subtlefg))
- (_ (list :foreground mainfg))))
-
-(defun modus-themes--tab (bg &optional bgaccent fg fgaccent box-p bold-p var-p)
- "Helper function for tabs.
-BG is the default background, while BGACCENT is its more colorful
-alternative. Optional FG is a foreground color that combines
-with BG. Same principle FGACCENT.
-
-BOX-P and BOLD-P determine the use of a box property and the
-application of a bold weight, respectively. VAR-P controls the
-application of a variable-pitch font."
- (let ((background (if modus-themes-tabs-accented (or bgaccent bg) bg))
- (foreground (if modus-themes-tabs-accented (or fgaccent fg) fg)))
- (list
- :inherit (cond
- ((and bold-p var-p)
- (if modus-themes-variable-pitch-ui
- '(variable-pitch bold)
- '(bold)))
- (bold-p 'bold)
- (var-p (when modus-themes-variable-pitch-ui 'variable-pitch))
- ('unspecified))
- :background background
- :foreground (or foreground 'unspecified)
- :box (if box-p (list :line-width 2 :color background) 'unspecified))))
-
-(defun modus-themes--button (bg bgfaint bgaccent bgaccentfaint border &optional pressed-button-p)
- "Apply `modus-themes-box-buttons' styles.
-
-BG is the main background. BGFAINT is its subtle alternative.
-BGACCENT is its accented variant and BGACCENTFAINT is the same
-but less intense. BORDER is the color around the box.
-
-When optional PRESSED-BUTTON-P is non-nil, the box uses the
-pressed button style, else the released button."
- (let* ((properties modus-themes-box-buttons)
- (weight (modus-themes--weight properties)))
- (list :inherit
- (cond
- ((and (memq 'variable-pitch properties)
- (eq weight 'bold))
- (list 'bold 'variable-pitch))
- ((memq 'variable-pitch properties)
- 'variable-pitch)
- ((eq weight 'bold)
- 'bold)
- ('unspecified))
- :background
- (cond
- ((and (memq 'accented properties)
- (memq 'faint properties)
- bgaccentfaint))
- ((memq 'faint properties)
- bgfaint)
- ((memq 'accented properties)
- bgaccent)
- (bg))
- :box
- (cond
- ((memq 'underline properties)
- 'unspecified)
- ((memq 'flat properties)
- (list :line-width -1 :color border))
- ((list :line-width -1
- :style (if pressed-button-p
- 'pressed-button
- 'released-button)
- :color border)))
- :weight
- (cond
- ((eq weight 'bold)
- 'unspecified) ; we :inherit the `bold' face above
- (weight weight)
- ('unspecified))
- :height
- (modus-themes--property-lookup properties 'height #'floatp 'unspecified)
- :underline
- (if (memq 'underline properties)
- t
- 'unspecified))))
-
-
-
-;;;; Utilities for DIY users
-
-;;;;; List colors (a variant of M-x list-colors-display)
-
-(defun modus-themes--list-colors-render (buffer theme &rest _)
- "Render colors in BUFFER from THEME.
-Routine for `modus-themes-list-colors'."
- (let ((palette (seq-uniq (modus-themes--palette theme)
- (lambda (x y)
- (eq (car x) (car y)))))
- (current-buffer buffer)
- (current-theme theme))
- (with-help-window buffer
- (with-current-buffer standard-output
- (erase-buffer)
- (when (<= (display-color-cells) 256)
- (insert (concat "Your display terminal may not render all color previews!\n"
- "It seems to only support <= 256 colors.\n\n"))
- (put-text-property (point-min) (point) 'face 'warning))
- ;; We need this to properly render the first line.
- (insert " ")
- (dolist (cell palette)
- (let* ((name (car cell))
- (color (cdr cell))
- (fg (readable-foreground-color color))
- (pad (make-string 5 ?\s)))
- (let ((old-point (point)))
- (insert (format "%s %s" color pad))
- (put-text-property old-point (point) 'face `( :foreground ,color)))
- (let ((old-point (point)))
- (insert (format " %s %s %s\n" color pad name))
- (put-text-property old-point (point)
- 'face `( :background ,color
- :foreground ,fg
- :extend t)))
- ;; We need this to properly render the last line.
- (insert " ")))
- (setq-local revert-buffer-function
- (lambda (_ignore-auto _noconfirm)
- (modus-themes--list-colors-render current-buffer current-theme)))))))
-
-(defvar modus-themes--list-colors-prompt-history '()
- "Minibuffer history for `modus-themes--list-colors-prompt'.")
-
-(defun modus-themes--list-colors-prompt ()
- "Prompt for Modus theme.
-Helper function for `modus-themes-list-colors'."
- (let ((def (format "%s" (modus-themes--current-theme))))
- (completing-read
- (format "Use palette from theme [%s]: " def)
- '(modus-operandi modus-vivendi) nil t nil
- 'modus-themes--list-colors-prompt-history def)))
-
-(defun modus-themes-list-colors (theme)
- "Preview palette of the Modus THEME of choice."
- (interactive (list (intern (modus-themes--list-colors-prompt))))
- (modus-themes--list-colors-render
- (format "*%s-list-colors*" theme)
- theme))
-
-(defun modus-themes-list-colors-current ()
- "Call `modus-themes-list-colors' for the current Modus theme."
- (interactive)
- (modus-themes-list-colors (modus-themes--current-theme)))
-
-;;;;; Formula to measure relative luminance
-
-;; This is the WCAG formula: https://www.w3.org/TR/WCAG20-TECHS/G18.html
-(defun modus-themes-wcag-formula (hex)
- "Get WCAG value of color value HEX.
-The value is defined in hexadecimal RGB notation, such as those in
-`modus-themes-operandi-colors' and `modus-themes-vivendi-colors'."
- (cl-loop for k in '(0.2126 0.7152 0.0722)
- for x in (color-name-to-rgb hex)
- sum (* k (if (<= x 0.03928)
- (/ x 12.92)
- (expt (/ (+ x 0.055) 1.055) 2.4)))))
-
-;;;###autoload
-(defun modus-themes-contrast (c1 c2)
- "Measure WCAG contrast ratio between C1 and C2.
-C1 and C2 are color values written in hexadecimal RGB."
- (let ((ct (/ (+ (modus-themes-wcag-formula c1) 0.05)
- (+ (modus-themes-wcag-formula c2) 0.05))))
- (max ct (/ ct))))
-
-;;;;; Retrieve colors from the themes
-
-(defun modus-themes-current-palette ()
- "Return current color palette."
- (modus-themes--palette (modus-themes--current-theme)))
-
-;;;###autoload
-(defun modus-themes-color (color)
- "Return color value for COLOR from current palette.
-COLOR is a key in `modus-themes-operandi-colors' or
-`modus-themes-vivendi-colors'."
- (alist-get color (modus-themes-current-palette)))
-
-;;;###autoload
-(defun modus-themes-color-alts (light-color dark-color)
- "Return color value from current palette.
-When Modus Operandi is enabled, return color value for color
-LIGHT-COLOR. When Modus Vivendi is enabled, return color value
-for DARK-COLOR. LIGHT-COLOR and DARK-COLOR are keys in
-`modus-themes-operandi-colors' or `modus-themes-vivendi-colors'."
- (let* ((theme (modus-themes--current-theme))
- (color (pcase theme
- ('modus-operandi light-color)
- ('modus-vivendi dark-color)
- (_theme
- (error "'%s' is not a Modus theme" theme)))))
- (alist-get color (modus-themes--palette theme))))
-
-(defmacro modus-themes-with-colors (&rest body)
- "Evaluate BODY with colors from current palette bound.
-For colors bound, see `modus-themes-operandi-colors' or
-`modus-themes-vivendi-colors'."
- (declare (indent 0))
- (let ((palette-sym (gensym))
- (colors (mapcar #'car modus-themes-operandi-colors)))
- `(let* ((class '((class color) (min-colors 89)))
- (,palette-sym (modus-themes-current-palette))
- ,@(mapcar (lambda (color)
- (list color `(alist-get ',color ,palette-sym)))
- colors))
- (ignore class ,@colors) ; Silence unused variable warnings
- ,@body)))
-
-
-
-;;;; Commands
-
-;;;###autoload
-(defun modus-themes-load-themes ()
- "Ensure that the Modus themes are in `custom-enabled-themes'.
-
-This function is intended for use in package declarations such as
-those defined with the help of `use-package'. The idea is to add
-this function to the `:init' stage of the package's loading, so
-that subsequent calls that assume the presence of a loaded theme,
-like `modus-themes-toggle' or `modus-themes-load-operandi', will
-continue to work as intended even if they are lazy-loaded (such
-as when they are declared in the `:config' phase)."
- (unless (or (custom-theme-p 'modus-operandi)
- (custom-theme-p 'modus-vivendi))
- (load-theme 'modus-operandi t t)
- (load-theme 'modus-vivendi t t)))
-
-(defvar modus-themes-after-load-theme-hook nil
- "Hook that runs after the `modus-themes-toggle' routines.")
-
-;;;###autoload
-(defun modus-themes-load-operandi ()
- "Load `modus-operandi' and disable `modus-vivendi'.
-Also run `modus-themes-after-load-theme-hook'."
- (interactive)
- (disable-theme 'modus-vivendi)
- (load-theme 'modus-operandi t)
- (run-hooks 'modus-themes-after-load-theme-hook))
-
-;;;###autoload
-(defun modus-themes-load-vivendi ()
- "Load `modus-vivendi' and disable `modus-operandi'.
-Also run `modus-themes-after-load-theme-hook'."
- (interactive)
- (disable-theme 'modus-operandi)
- (load-theme 'modus-vivendi t)
- (run-hooks 'modus-themes-after-load-theme-hook))
-
-(defun modus-themes--load-prompt ()
- "Helper for `modus-themes-toggle'."
- (let ((theme
- (intern
- (completing-read "Load Modus theme (will disable all others): "
- '(modus-operandi modus-vivendi) nil t))))
- (mapc #'disable-theme custom-enabled-themes)
- (pcase theme
- ('modus-operandi (modus-themes-load-operandi))
- ('modus-vivendi (modus-themes-load-vivendi)))))
-
-;;;###autoload
-(defun modus-themes-toggle ()
- "Toggle between `modus-operandi' and `modus-vivendi' themes.
-Also runs `modus-themes-after-load-theme-hook' at its last stage
-by virtue of calling either of `modus-themes-load-operandi' and
-`modus-themes-load-vivendi' functions."
- (interactive)
- (modus-themes-load-themes)
- (pcase (modus-themes--current-theme)
- ('modus-operandi (modus-themes-load-vivendi))
- ('modus-vivendi (modus-themes-load-operandi))
- (_ (modus-themes--load-prompt))))
-
;;;; Face specifications
@@ -4067,901 +1490,568 @@ by virtue of calling either of `modus-themes-load-operandi' and
'(
;;;; custom faces
;; these bespoke faces are inherited by other constructs below
+;;;;; just the foregrounds
+ `(modus-themes-fg-red ((,c :foreground ,red)))
+ `(modus-themes-fg-red-warmer ((,c :foreground ,red-warmer)))
+ `(modus-themes-fg-red-cooler ((,c :foreground ,red-cooler)))
+ `(modus-themes-fg-red-faint ((,c :foreground ,red-faint)))
+ `(modus-themes-fg-red-intense ((,c :foreground ,red-intense)))
+ `(modus-themes-fg-green ((,c :foreground ,green)))
+ `(modus-themes-fg-green-warmer ((,c :foreground ,green-warmer)))
+ `(modus-themes-fg-green-cooler ((,c :foreground ,green-cooler)))
+ `(modus-themes-fg-green-faint ((,c :foreground ,green-faint)))
+ `(modus-themes-fg-green-intense ((,c :foreground ,green-intense)))
+ `(modus-themes-fg-yellow ((,c :foreground ,yellow)))
+ `(modus-themes-fg-yellow-warmer ((,c :foreground ,yellow-warmer)))
+ `(modus-themes-fg-yellow-cooler ((,c :foreground ,yellow-cooler)))
+ `(modus-themes-fg-yellow-faint ((,c :foreground ,yellow-faint)))
+ `(modus-themes-fg-yellow-intense ((,c :foreground ,yellow-intense)))
+ `(modus-themes-fg-blue ((,c :foreground ,blue)))
+ `(modus-themes-fg-blue-warmer ((,c :foreground ,blue-warmer)))
+ `(modus-themes-fg-blue-cooler ((,c :foreground ,blue-cooler)))
+ `(modus-themes-fg-blue-faint ((,c :foreground ,blue-faint)))
+ `(modus-themes-fg-blue-intense ((,c :foreground ,blue-intense)))
+ `(modus-themes-fg-magenta ((,c :foreground ,magenta)))
+ `(modus-themes-fg-magenta-warmer ((,c :foreground ,magenta-warmer)))
+ `(modus-themes-fg-magenta-cooler ((,c :foreground ,magenta-cooler)))
+ `(modus-themes-fg-magenta-faint ((,c :foreground ,magenta-faint)))
+ `(modus-themes-fg-magenta-intense ((,c :foreground ,magenta-intense)))
+ `(modus-themes-fg-cyan ((,c :foreground ,cyan)))
+ `(modus-themes-fg-cyan-warmer ((,c :foreground ,cyan-warmer)))
+ `(modus-themes-fg-cyan-cooler ((,c :foreground ,cyan-cooler)))
+ `(modus-themes-fg-cyan-faint ((,c :foreground ,cyan-faint)))
+ `(modus-themes-fg-cyan-intense ((,c :foreground ,cyan-intense)))
+;;;;; nuanced colored backgrounds
+ `(modus-themes-nuanced-red ((,c :background ,bg-red-nuanced :extend t)))
+ `(modus-themes-nuanced-green ((,c :background ,bg-green-nuanced :extend t)))
+ `(modus-themes-nuanced-yellow ((,c :background ,bg-yellow-nuanced :extend t)))
+ `(modus-themes-nuanced-blue ((,c :background ,bg-blue-nuanced :extend t)))
+ `(modus-themes-nuanced-magenta ((,c :background ,bg-magenta-nuanced :extend t)))
+ `(modus-themes-nuanced-cyan ((,c :background ,bg-cyan-nuanced :extend t)))
;;;;; subtle colored backgrounds
- `(modus-themes-subtle-red ((,class :background ,red-subtle-bg :foreground ,fg-dim)))
- `(modus-themes-subtle-green ((,class :background ,green-subtle-bg :foreground ,fg-dim)))
- `(modus-themes-subtle-yellow ((,class :background ,yellow-subtle-bg :foreground ,fg-dim)))
- `(modus-themes-subtle-blue ((,class :background ,blue-subtle-bg :foreground ,fg-dim)))
- `(modus-themes-subtle-magenta ((,class :background ,magenta-subtle-bg :foreground ,fg-dim)))
- `(modus-themes-subtle-cyan ((,class :background ,cyan-subtle-bg :foreground ,fg-dim)))
- `(modus-themes-subtle-neutral ((,class :background ,bg-inactive :foreground ,fg-inactive)))
+ `(modus-themes-subtle-red ((,c :background ,bg-red-subtle :foreground ,fg-main)))
+ `(modus-themes-subtle-green ((,c :background ,bg-green-subtle :foreground ,fg-main)))
+ `(modus-themes-subtle-yellow ((,c :background ,bg-yellow-subtle :foreground ,fg-main)))
+ `(modus-themes-subtle-blue ((,c :background ,bg-blue-subtle :foreground ,fg-main)))
+ `(modus-themes-subtle-magenta ((,c :background ,bg-magenta-subtle :foreground ,fg-main)))
+ `(modus-themes-subtle-cyan ((,c :background ,bg-cyan-subtle :foreground ,fg-main)))
;;;;; intense colored backgrounds
- `(modus-themes-intense-red ((,class :background ,red-intense-bg :foreground ,fg-main)))
- `(modus-themes-intense-green ((,class :background ,green-intense-bg :foreground ,fg-main)))
- `(modus-themes-intense-yellow ((,class :background ,yellow-intense-bg :foreground ,fg-main)))
- `(modus-themes-intense-blue ((,class :background ,blue-intense-bg :foreground ,fg-main)))
- `(modus-themes-intense-magenta ((,class :background ,magenta-intense-bg :foreground ,fg-main)))
- `(modus-themes-intense-cyan ((,class :background ,cyan-intense-bg :foreground ,fg-main)))
- `(modus-themes-intense-neutral ((,class :background ,bg-active :foreground ,fg-main)))
-;;;;; refined background and foreground combinations
- ;; general purpose styles that use an accented foreground against an
- ;; accented background
- `(modus-themes-refine-red ((,class :background ,red-refine-bg :foreground ,red-refine-fg)))
- `(modus-themes-refine-green ((,class :background ,green-refine-bg :foreground ,green-refine-fg)))
- `(modus-themes-refine-yellow ((,class :background ,yellow-refine-bg :foreground ,yellow-refine-fg)))
- `(modus-themes-refine-blue ((,class :background ,blue-refine-bg :foreground ,blue-refine-fg)))
- `(modus-themes-refine-magenta ((,class :background ,magenta-refine-bg :foreground ,magenta-refine-fg)))
- `(modus-themes-refine-cyan ((,class :background ,cyan-refine-bg :foreground ,cyan-refine-fg)))
-;;;;; "active" combinations, mostly for use on the mode line
- `(modus-themes-active-red ((,class :background ,red-active :foreground ,bg-active)))
- `(modus-themes-active-green ((,class :background ,green-active :foreground ,bg-active)))
- `(modus-themes-active-yellow ((,class :background ,yellow-active :foreground ,bg-active)))
- `(modus-themes-active-blue ((,class :background ,blue-active :foreground ,bg-active)))
- `(modus-themes-active-magenta ((,class :background ,magenta-active :foreground ,bg-active)))
- `(modus-themes-active-cyan ((,class :background ,cyan-active :foreground ,bg-active)))
-;;;;; nuanced backgrounds
- ;; useful for adding an accented background that is suitable for all
- ;; main foreground colors (intended for use in Org source blocks)
- `(modus-themes-nuanced-red ((,class :background ,red-nuanced-bg :extend t)))
- `(modus-themes-nuanced-green ((,class :background ,green-nuanced-bg :extend t)))
- `(modus-themes-nuanced-yellow ((,class :background ,yellow-nuanced-bg :extend t)))
- `(modus-themes-nuanced-blue ((,class :background ,blue-nuanced-bg :extend t)))
- `(modus-themes-nuanced-magenta ((,class :background ,magenta-nuanced-bg :extend t)))
- `(modus-themes-nuanced-cyan ((,class :background ,cyan-nuanced-bg :extend t)))
-;;;;; fringe-specific combinations
- `(modus-themes-fringe-red ((,class :background ,red-fringe-bg :foreground ,fg-main)))
- `(modus-themes-fringe-green ((,class :background ,green-fringe-bg :foreground ,fg-main)))
- `(modus-themes-fringe-yellow ((,class :background ,yellow-fringe-bg :foreground ,fg-main)))
- `(modus-themes-fringe-blue ((,class :background ,blue-fringe-bg :foreground ,fg-main)))
- `(modus-themes-fringe-magenta ((,class :background ,magenta-fringe-bg :foreground ,fg-main)))
- `(modus-themes-fringe-cyan ((,class :background ,cyan-fringe-bg :foreground ,fg-main)))
-;;;;; special base values
- ;; these are closer to the grayscale than the accents defined above
- ;; and should only be used when the next closest alternative would be
- ;; a grayscale value than an accented one
- `(modus-themes-special-cold ((,class :background ,bg-special-cold :foreground ,fg-special-cold)))
- `(modus-themes-special-mild ((,class :background ,bg-special-mild :foreground ,fg-special-mild)))
- `(modus-themes-special-warm ((,class :background ,bg-special-warm :foreground ,fg-special-warm)))
- `(modus-themes-special-calm ((,class :background ,bg-special-calm :foreground ,fg-special-calm)))
-;;;;; diff-specific combinations
- ;; intended for `diff-mode' or equivalent
- `(modus-themes-diff-added
- ((,class ,@(modus-themes--diff
- bg-diff-focus-added fg-diff-focus-added
- green-nuanced-bg fg-diff-added
- bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran
- blue-nuanced-bg fg-diff-added-deuteran))))
- `(modus-themes-diff-changed
- ((,class ,@(modus-themes--diff
- bg-diff-focus-changed fg-diff-focus-changed
- yellow-nuanced-bg fg-diff-changed))))
- `(modus-themes-diff-removed
- ((,class ,@(modus-themes--diff
- bg-diff-focus-removed fg-diff-focus-removed
- red-nuanced-bg fg-diff-removed))))
- `(modus-themes-diff-refine-added
- ((,class ,@(modus-themes--diff
- bg-diff-refine-added fg-diff-refine-added
- bg-diff-focus-added fg-diff-focus-added
- bg-diff-refine-added-deuteran fg-diff-refine-added-deuteran
- bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran))))
- `(modus-themes-diff-refine-changed
- ((,class ,@(modus-themes--diff
- bg-diff-refine-changed fg-diff-refine-changed
- bg-diff-focus-changed fg-diff-focus-changed))))
- `(modus-themes-diff-refine-removed
- ((,class ,@(modus-themes--diff
- bg-diff-refine-removed fg-diff-refine-removed
- bg-diff-focus-removed fg-diff-focus-removed))))
- `(modus-themes-diff-focus-added
- ((,class ,@(modus-themes--diff
- bg-diff-focus-added fg-diff-focus-added
- bg-diff-added fg-diff-added
- bg-diff-focus-added-deuteran fg-diff-focus-added-deuteran
- bg-diff-added-deuteran fg-diff-added-deuteran))))
- `(modus-themes-diff-focus-changed
- ((,class ,@(modus-themes--diff
- bg-diff-focus-changed fg-diff-focus-changed
- bg-diff-changed fg-diff-changed))))
- `(modus-themes-diff-focus-removed
- ((,class ,@(modus-themes--diff
- bg-diff-focus-removed fg-diff-focus-removed
- bg-diff-removed fg-diff-removed))))
- `(modus-themes-diff-heading
- ((,class ,@(modus-themes--diff
- bg-diff-heading fg-diff-heading
- cyan-nuanced-bg cyan-nuanced-fg
- bg-header fg-main
- bg-header fg-main
- t))))
-;;;;; deuteranopia-specific
- `(modus-themes-grue ((,class :foreground ,@(modus-themes--deuteran blue green))))
- `(modus-themes-grue-active ((,class :foreground ,@(modus-themes--deuteran blue-active green-active))))
- `(modus-themes-grue-nuanced ((,class :foreground ,@(modus-themes--deuteran blue-nuanced-fg green-nuanced-fg))))
- `(modus-themes-grue-background-active ((,class :inherit ,@(modus-themes--deuteran
- 'modus-themes-fringe-blue
- 'modus-themes-fringe-green))))
- `(modus-themes-grue-background-intense ((,class :inherit ,@(modus-themes--deuteran
- 'modus-themes-intense-blue
- 'modus-themes-intense-green))))
- `(modus-themes-grue-background-subtle ((,class :inherit ,@(modus-themes--deuteran
- 'modus-themes-subtle-blue
- 'modus-themes-subtle-green))))
- `(modus-themes-grue-background-subtle ((,class :inherit ,@(modus-themes--deuteran
- 'modus-themes-refine-blue
- 'modus-themes-refine-green))))
+ `(modus-themes-intense-red ((,c :background ,bg-red-intense :foreground ,fg-main)))
+ `(modus-themes-intense-green ((,c :background ,bg-green-intense :foreground ,fg-main)))
+ `(modus-themes-intense-yellow ((,c :background ,bg-yellow-intense :foreground ,fg-main)))
+ `(modus-themes-intense-blue ((,c :background ,bg-blue-intense :foreground ,fg-main)))
+ `(modus-themes-intense-magenta ((,c :background ,bg-magenta-intense :foreground ,fg-main)))
+ `(modus-themes-intense-cyan ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
;;;;; mark indicators
;; color combinations intended for Dired, Ibuffer, or equivalent
- `(modus-themes-pseudo-header ((,class :inherit bold :foreground ,fg-main)))
- `(modus-themes-mark-alt ((,class :inherit bold :background ,bg-mark-alt :foreground ,fg-mark-alt)))
- `(modus-themes-mark-del ((,class :inherit bold :background ,bg-mark-del :foreground ,fg-mark-del)))
- `(modus-themes-mark-sel ((,class :inherit bold
- :background ,@(modus-themes--deuteran
- cyan-refine-bg
- bg-mark-sel)
- :foreground ,fg-mark-sel)))
- `(modus-themes-mark-symbol ((,class :inherit bold :foreground ,blue-alt)))
+ `(modus-themes-mark-alt ((,c :inherit bold :background ,bg-yellow-subtle :foreground ,yellow)))
+ `(modus-themes-mark-del ((,c :inherit bold :background ,bg-red-subtle :foreground ,red)))
+ `(modus-themes-mark-sel ((,c :inherit bold :background ,bg-cyan-subtle :foreground ,cyan)))
;;;;; heading levels
;; styles for regular headings used in Org, Markdown, Info, etc.
- `(modus-themes-heading-0
- ((,class ,@(modus-themes--heading
- 0 cyan-alt-other blue-alt
- cyan-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-1
- ((,class ,@(modus-themes--heading
- 1 fg-main magenta-alt-other
- magenta-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-2
- ((,class ,@(modus-themes--heading
- 2 fg-special-warm magenta-alt
- red-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-3
- ((,class ,@(modus-themes--heading
- 3 fg-special-cold blue
- blue-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-4
- ((,class ,@(modus-themes--heading
- 4 fg-special-mild cyan
- cyan-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-5
- ((,class ,@(modus-themes--heading
- 5 fg-special-calm green-alt-other
- green-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-6
- ((,class ,@(modus-themes--heading
- 6 yellow-nuanced-fg yellow-alt-other
- yellow-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-7
- ((,class ,@(modus-themes--heading
- 7 red-nuanced-fg red-alt
- red-nuanced-bg bg-alt bg-region))))
- `(modus-themes-heading-8
- ((,class ,@(modus-themes--heading
- 8 magenta-nuanced-fg magenta
- bg-alt bg-alt bg-region))))
+ `(modus-themes-heading-0 ((,c ,@(modus-themes--heading 0 fg-heading-0 bg-heading-0 overline-heading-0))))
+ `(modus-themes-heading-1 ((,c ,@(modus-themes--heading 1 fg-heading-1 bg-heading-1 overline-heading-1))))
+ `(modus-themes-heading-2 ((,c ,@(modus-themes--heading 2 fg-heading-2 bg-heading-2 overline-heading-2))))
+ `(modus-themes-heading-3 ((,c ,@(modus-themes--heading 3 fg-heading-3 bg-heading-3 overline-heading-3))))
+ `(modus-themes-heading-4 ((,c ,@(modus-themes--heading 4 fg-heading-4 bg-heading-4 overline-heading-4))))
+ `(modus-themes-heading-5 ((,c ,@(modus-themes--heading 5 fg-heading-5 bg-heading-5 overline-heading-5))))
+ `(modus-themes-heading-6 ((,c ,@(modus-themes--heading 6 fg-heading-6 bg-heading-6 overline-heading-6))))
+ `(modus-themes-heading-7 ((,c ,@(modus-themes--heading 7 fg-heading-7 bg-heading-7 overline-heading-7))))
+ `(modus-themes-heading-8 ((,c ,@(modus-themes--heading 8 fg-heading-8 bg-heading-8 overline-heading-8))))
;;;;; language checkers
- `(modus-themes-lang-error ((,class ,@(modus-themes--lang-check
- fg-lang-underline-error fg-lang-error
- red red-refine-fg red-nuanced-bg red-refine-bg red-faint))))
- `(modus-themes-lang-note ((,class ,@(modus-themes--lang-check
- fg-lang-underline-note fg-lang-note
- blue-alt blue-refine-fg blue-nuanced-bg blue-refine-bg blue-faint))))
- `(modus-themes-lang-warning ((,class ,@(modus-themes--lang-check
- fg-lang-underline-warning fg-lang-warning
- yellow yellow-refine-fg yellow-nuanced-bg yellow-refine-bg yellow-faint))))
-;;;;; links
- `(modus-themes-link-broken ((,class :inherit button ,@(modus-themes--link-color red red-faint))))
- `(modus-themes-link-symlink ((,class :inherit button ,@(modus-themes--link-color cyan cyan-faint))))
+ `(modus-themes-lang-error ((,c :underline (:style wave :color ,underline-err))))
+ `(modus-themes-lang-note ((,c :underline (:style wave :color ,underline-note))))
+ `(modus-themes-lang-warning ((,c :underline (:style wave :color ,underline-warning))))
;;;;; markup
- `(modus-themes-markup-code
- ((,class ,@(modus-themes--markup cyan-alt-other cyan-intense bg-alt
- bg-special-faint-mild))))
- `(modus-themes-markup-macro
- ((,class ,@(modus-themes--markup magenta-alt-other purple-intense bg-alt
- bg-special-faint-cold))))
- `(modus-themes-markup-verbatim
- ((,class ,@(modus-themes--markup magenta-alt magenta-intense bg-alt
- bg-special-faint-calm))))
+ `(modus-themes-prose-code ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-code)))
+ `(modus-themes-prose-macro ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-macro)))
+ `(modus-themes-prose-verbatim ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-verbatim)))
;;;;; search
- `(modus-themes-search-success ((,class :inherit modus-themes-intense-yellow)))
- `(modus-themes-search-success-lazy ((,class :inherit modus-themes-subtle-cyan)))
- `(modus-themes-search-success-modeline ((,class :foreground ,@(modus-themes--deuteran
- blue-active
- green-active))))
-;;;;; tabs
- `(modus-themes-tab-active ((,class ,@(modus-themes--tab bg-tab-active nil nil nil t t))))
- `(modus-themes-tab-backdrop ((,class ,@(modus-themes--tab bg-active bg-active-accent nil nil nil nil t))))
- `(modus-themes-tab-inactive ((,class ,@(modus-themes--tab bg-tab-inactive bg-tab-inactive-accent fg-dim nil t))))
+ `(modus-themes-search-current ((,c :background ,bg-yellow-intense :foreground ,fg-main)))
+ `(modus-themes-search-lazy ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
;;;;; completion frameworks
- `(modus-themes-completion-match-0
- ((,class ,@(modus-themes--completion-match
- 'matches bg-special-faint-calm magenta-alt
- magenta-subtle-bg magenta-intense))))
- `(modus-themes-completion-match-1
- ((,class ,@(modus-themes--completion-match
- 'matches bg-special-faint-cold blue
- blue-subtle-bg blue-intense))))
- `(modus-themes-completion-match-2
- ((,class ,@(modus-themes--completion-match
- 'matches bg-special-faint-mild green
- green-subtle-bg green-intense))))
- `(modus-themes-completion-match-3
- ((,class ,@(modus-themes--completion-match
- 'matches bg-special-faint-warm yellow
- yellow-subtle-bg orange-intense))))
- `(modus-themes-completion-selected
- ((,class ,@(modus-themes--completion-line
- 'selection bg-inactive blue-alt
- bg-active blue-active
- bg-completion-subtle bg-completion))))
- `(modus-themes-completion-selected-popup
- ((,class ,@(modus-themes--completion-line
- 'popup bg-active blue-alt
- bg-region blue-active
- cyan-subtle-bg cyan-refine-bg))))
-;;;;; buttons
- `(modus-themes-box-button
- ((,class ,@(modus-themes--button bg-active bg-main bg-active-accent
- bg-special-cold bg-region))))
- `(modus-themes-box-button-pressed
- ((,class ,@(modus-themes--button bg-active bg-main bg-active-accent
- bg-special-cold bg-region t))))
+ `(modus-themes-completion-match-0 ((,c ,@(modus-themes--completion-match fg-completion-match-0 bg-completion-match-0))))
+ `(modus-themes-completion-match-1 ((,c ,@(modus-themes--completion-match fg-completion-match-1 bg-completion-match-1))))
+ `(modus-themes-completion-match-2 ((,c ,@(modus-themes--completion-match fg-completion-match-2 bg-completion-match-2))))
+ `(modus-themes-completion-match-3 ((,c ,@(modus-themes--completion-match fg-completion-match-3 bg-completion-match-3))))
+ `(modus-themes-completion-selected ((,c ,@(modus-themes--completion-line bg-completion))))
;;;;; typography
- `(modus-themes-bold ((,class ,@(modus-themes--bold-weight))))
- `(modus-themes-fixed-pitch ((,class ,@(modus-themes--fixed-pitch))))
- `(modus-themes-slant ((,class ,@(modus-themes--slant))))
- `(modus-themes-ui-variable-pitch ((,class ,@(modus-themes--variable-pitch-ui))))
+ `(modus-themes-bold ((,c ,@(modus-themes--bold-weight))))
+ `(modus-themes-fixed-pitch ((,c ,@(modus-themes--fixed-pitch))))
+ `(modus-themes-slant ((,c ,@(modus-themes--slant))))
+ `(modus-themes-ui-variable-pitch ((,c ,@(modus-themes--variable-pitch-ui))))
;;;;; other custom faces
- `(modus-themes-hl-line ((,class ,@(modus-themes--hl-line
- bg-hl-line bg-hl-line-intense
- bg-hl-line-intense-accent blue-nuanced-bg
- bg-region blue-intense-bg
- fg-alt blue-intense)
- :extend t)))
- `(modus-themes-key-binding ((,class :inherit (bold modus-themes-fixed-pitch)
- :foreground ,blue-alt-other)))
- `(modus-themes-prompt ((,class ,@(modus-themes--prompt
- cyan-alt-other blue-alt-other fg-alt
- cyan-nuanced-bg blue-refine-bg fg-main
- bg-alt bg-active))))
- `(modus-themes-reset-hard ((,class :inherit (fixed-pitch modus-themes-reset-soft)
- :family ,(face-attribute 'default :family))))
- `(modus-themes-reset-soft ((,class :background ,bg-main :foreground ,fg-main
- :weight normal :slant normal :strike-through nil
- :box nil :underline nil :overline nil :extend nil)))
+ `(modus-themes-button ((,c :inherit variable-pitch :box ,border :background ,bg-button-active :foreground ,fg-button-active)))
+ `(modus-themes-key-binding ((,c :inherit (bold modus-themes-fixed-pitch) :foreground ,keybind)))
+ `(modus-themes-prompt ((,c ,@(modus-themes--prompt fg-prompt bg-prompt))))
+ `(modus-themes-reset-soft ((,c :background ,bg-main :foreground ,fg-main
+ :weight normal :slant normal :strike-through nil
+ :box nil :underline nil :overline nil :extend nil)))
;;;; standard faces
;;;;; absolute essentials
- `(default ((,class :background ,bg-main :foreground ,fg-main)))
- `(cursor ((,class :background ,fg-main)))
- `(fringe ((,class ,@(modus-themes--fringe bg-main bg-inactive bg-active)
- :foreground ,fg-main)))
- `(vertical-border ((,class :foreground ,fg-window-divider-inner)))
+ `(default ((,c :background ,bg-main :foreground ,fg-main)))
+ `(cursor ((,c :background ,cursor)))
+ `(fringe ((,c :background ,fringe :foreground ,fg-main)))
+ `(menu ((,c :background ,bg-tab-bar :foreground ,fg-main)))
+ `(scroll-bar ((,c :background ,fringe :foreground ,fg-dim)))
+ `(tool-bar ((,c :background ,bg-tab-bar :foreground ,fg-main)))
+ `(vertical-border ((,c :foreground ,border)))
;;;;; basic and/or ungrouped styles
- `(bold ((,class :weight bold)))
- `(bold-italic ((,class :inherit (bold italic))))
- `(underline ((,class :underline ,fg-alt)))
- `(buffer-menu-buffer ((,class :inherit bold)))
- `(child-frame-border ((,class :background ,fg-window-divider-inner)))
- `(comint-highlight-input ((,class :inherit bold)))
- `(comint-highlight-prompt ((,class :inherit modus-themes-prompt)))
- `(confusingly-reordered ((,class :inherit modus-themes-lang-error)))
- `(edmacro-label ((,class :inherit bold :foreground ,cyan)))
- `(elisp-shorthand-font-lock-face ((,class :inherit font-lock-variable-name-face)))
- `(error ((,class :inherit bold :foreground ,red)))
- `(escape-glyph ((,class :foreground ,fg-escape-char-construct)))
- `(file-name-shadow ((,class :inherit shadow)))
- `(header-line ((,class :inherit modus-themes-ui-variable-pitch
- :background ,bg-header :foreground ,fg-header)))
- `(header-line-highlight ((,class :inherit highlight)))
- `(help-argument-name ((,class :inherit modus-themes-slant :foreground ,cyan)))
- `(help-key-binding ((,class :inherit modus-themes-key-binding)))
- `(homoglyph ((,class :foreground ,red-alt-faint)))
- `(ibuffer-locked-buffer ((,class :foreground ,yellow-alt-other-faint)))
- `(icon-button ((,class :inherit modus-themes-box-button)))
- `(italic ((,class :slant italic)))
- `(nobreak-hyphen ((,class :foreground ,fg-escape-char-construct)))
- `(nobreak-space ((,class :foreground ,fg-escape-char-construct :underline t)))
- `(menu ((,class :inverse-video unspecified :inherit modus-themes-intense-neutral)))
- `(minibuffer-prompt ((,class :inherit modus-themes-prompt)))
- `(mm-command-output ((,class :foreground ,red-alt-other)))
- `(mm-uu-extract ((,class :background ,bg-dim :foreground ,fg-special-mild)))
- `(next-error ((,class :inherit modus-themes-subtle-red :extend t)))
- `(pgtk-im-0 ((,class :inherit modus-themes-refine-cyan)))
- `(read-multiple-choice-face ((,class :inherit (bold modus-themes-mark-alt))))
- `(rectangle-preview ((,class :inherit modus-themes-special-warm)))
- `(region ((,class ,@(modus-themes--region bg-region fg-main
- bg-hl-alt-intense bg-region-accent
- bg-region-accent-subtle))))
- `(secondary-selection ((,class :inherit modus-themes-special-cold)))
- `(separator-line ((,class :underline ,bg-region)))
- `(shadow ((,class :foreground ,fg-alt)))
- `(success ((,class :inherit (bold modus-themes-grue))))
- `(trailing-whitespace ((,class :background ,red-intense-bg)))
- `(warning ((,class :inherit bold :foreground ,yellow)))
+ `(bold ((,c :weight bold)))
+ `(bold-italic ((,c :inherit (bold italic))))
+ `(underline ((,c :underline ,fg-dim)))
+ `(buffer-menu-buffer ((,c :inherit bold)))
+ `(child-frame-border ((,c :background ,border)))
+ `(comint-highlight-input ((,c :inherit bold)))
+ `(comint-highlight-prompt ((,c :inherit modus-themes-prompt)))
+ `(confusingly-reordered ((,c :inherit modus-themes-lang-error)))
+ `(edmacro-label ((,c :inherit bold :foreground ,accent-0)))
+ `(elisp-shorthand-font-lock-face ((,c :inherit font-lock-variable-name-face)))
+ `(error ((,c :inherit bold :foreground ,err)))
+ `(escape-glyph ((,c :foreground ,err)))
+ `(file-name-shadow ((,c :inherit shadow)))
+ `(header-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-dim)))
+ `(header-line-highlight ((,c :inherit highlight)))
+ `(help-argument-name ((,c :inherit modus-themes-slant :foreground ,variable)))
+ `(help-key-binding ((,c :inherit modus-themes-key-binding)))
+ `(highlight ((,c :background ,bg-hover :foreground ,fg-main)))
+ `(homoglyph ((,c :foreground ,warning)))
+ `(ibuffer-locked-buffer ((,c :foreground ,warning)))
+ `(icon-button ((,c :inherit modus-themes-button)))
+ `(italic ((,c :slant italic)))
+ `(nobreak-hyphen ((,c :foreground ,err)))
+ `(nobreak-space ((,c :foreground ,err :underline t)))
+ `(menu ((,c :inverse-video unspecified :background ,bg-active :foreground ,fg-main)))
+ `(minibuffer-prompt ((,c :inherit modus-themes-prompt)))
+ `(mm-command-output ((,c :foreground ,mail-part)))
+ `(mm-uu-extract ((,c :foreground ,mail-part)))
+ `(next-error ((,c :inherit modus-themes-subtle-red :extend t)))
+ `(pgtk-im-0 ((,c :inherit modus-themes-intense-cyan)))
+ `(read-multiple-choice-face ((,c :inherit (bold modus-themes-mark-alt))))
+ `(rectangle-preview ((,c :inherit secondary-selection)))
+ `(region ((,c :background ,bg-region :foreground ,fg-region)))
+ `(secondary-selection ((,c :background ,bg-hover-secondary :foreground ,fg-main)))
+ `(separator-line ((,c :underline ,bg-active)))
+ `(shadow ((,c :foreground ,fg-dim)))
+ `(success ((,c :inherit bold :foreground ,info)))
+ `(trailing-whitespace ((,c :background ,bg-red-intense)))
+ `(warning ((,c :inherit bold :foreground ,warning)))
;;;;; buttons, links, widgets
- `(button ((,class ,@(modus-themes--link
- blue-alt-other blue-alt-other-faint
- bg-region blue-nuanced-bg bg-alt))))
- `(link ((,class :inherit button)))
- `(link-visited ((,class :inherit button
- ,@(modus-themes--link-color
- magenta-alt-other magenta-alt-other-faint fg-alt))))
- `(tooltip ((,class :background ,bg-special-cold :foreground ,fg-main)))
- `(widget-button ((,class ,@(if (memq 'all-buttons modus-themes-box-buttons)
- (list :inherit 'modus-themes-box-button)
- (list :inherit 'bold :foreground blue-alt)))))
- `(widget-button-pressed ((,class ,@(if (memq 'all-buttons modus-themes-box-buttons)
- (list :inherit 'modus-themes-box-button-pressed)
- (list :inherit 'bold :foreground magenta-alt)))))
- `(widget-documentation ((,class :foreground ,green)))
- `(widget-field ((,class :background ,bg-alt :foreground ,fg-main :extend nil)))
- `(widget-inactive ((,class :inherit shadow :background ,bg-dim)))
- `(widget-single-line-field ((,class :inherit widget-field)))
-;;;;; alert
- `(alert-high-face ((,class :inherit bold :foreground ,red-alt)))
- `(alert-low-face ((,class :foreground ,fg-special-mild)))
- `(alert-moderate-face ((,class :inherit bold :foreground ,yellow)))
- `(alert-trivial-face ((,class :foreground ,fg-special-calm)))
- `(alert-urgent-face ((,class :inherit bold :foreground ,red-intense)))
+ `(button ((,c :background ,bg-link :foreground ,fg-link :underline ,underline-link)))
+ `(link ((,c :inherit button)))
+ `(link-visited ((,c :background ,bg-link-visited :foreground ,fg-link-visited :underline ,underline-link-visited)))
+ `(tooltip ((,c :background ,bg-active :foreground ,fg-main)))
+;;;;; agda2-mode
+ `(agda2-highlight-bound-variable-face ((,c :inherit font-lock-variable-name-face)))
+ `(agda2-highlight-catchall-clause-face ((,c :background ,bg-inactive)))
+ `(agda2-highlight-coinductive-constructor-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-coverage-problem-face ((,c :inherit modus-themes-lang-error)))
+ `(agda2-highlight-datatype-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-deadcode-face ((,c :background ,bg-active)))
+ `(agda2-highlight-dotted-face ((,c :inherit font-lock-variable-name-face)))
+ `(agda2-highlight-error-face ((,c :inherit modus-themes-lang-error)))
+ `(agda2-highlight-field-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-function-face ((,c :inherit font-lock-function-name-face)))
+ `(agda2-highlight-generalizable-variable-face ((,c :inherit font-lock-variable-name-face)))
+ `(agda2-highlight-incomplete-pattern-face ((,c :inherit modus-themes-lang-warning)))
+ `(agda2-highlight-inductive-constructor-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-keyword-face ((,c :inherit font-lock-keyword-face)))
+ `(agda2-highlight-macro-face ((,c :inherit font-lock-keyword-face)))
+ `(agda2-highlight-module-face ((,c :inherit font-lock-variable-name-face)))
+ `(agda2-highlight-number-face ((,c :inherit shadow)))
+ `(agda2-highlight-operator-face ((,c :inherit font-lock-variable-name-face)))
+ `(agda2-highlight-positivity-problem-face ((,c :inherit modus-themes-lang-warning)))
+ `(agda2-highlight-postulate-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-pragma-face ((,c :inherit font-lock-preprocessor-face)))
+ `(agda2-highlight-primitive-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-primitive-type-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-record-face ((,c :inherit font-lock-type-face)))
+ `(agda2-highlight-string-face ((,c :inherit font-lock-string-face)))
+ `(agda2-highlight-symbol-face ((,c :inherit font-lock-constant-face)))
+ `(agda2-highlight-termination-problem-face ((,c :inherit modus-themes-lang-warning)))
+ `(agda2-highlight-typechecks-face ((,c :inherit font-lock-warning-face)))
+ `(agda2-highlight-unsolved-constraint-face ((,c :inherit modus-themes-lang-warning)))
+ `(agda2-highlight-unsolved-meta-face ((,c :inherit modus-themes-lang-warning)))
;;;;; all-the-icons
- `(all-the-icons-blue ((,class :foreground ,blue-alt-other)))
- `(all-the-icons-blue-alt ((,class :foreground ,blue-alt)))
- `(all-the-icons-cyan ((,class :foreground ,cyan-intense)))
- `(all-the-icons-cyan-alt ((,class :foreground ,cyan-alt)))
- `(all-the-icons-dblue ((,class :foreground ,blue-faint)))
- `(all-the-icons-dcyan ((,class :foreground ,cyan-faint)))
- `(all-the-icons-dgreen ((,class :foreground ,green)))
- `(all-the-icons-dmaroon ((,class :foreground ,magenta-alt-faint)))
- `(all-the-icons-dorange ((,class :foreground ,red-alt-faint)))
- `(all-the-icons-dpink ((,class :foreground ,magenta-faint)))
- `(all-the-icons-dpurple ((,class :foreground ,magenta-alt-other-faint)))
- `(all-the-icons-dred ((,class :foreground ,red-faint)))
- `(all-the-icons-dsilver ((,class :foreground ,cyan-alt-faint)))
- `(all-the-icons-dyellow ((,class :foreground ,yellow-alt-faint)))
- `(all-the-icons-green ((,class :foreground ,green-intense)))
- `(all-the-icons-lblue ((,class :foreground ,blue-alt-other)))
- `(all-the-icons-lcyan ((,class :foreground ,cyan)))
- `(all-the-icons-lgreen ((,class :foreground ,green-alt-other)))
- `(all-the-icons-lmaroon ((,class :foreground ,magenta-alt)))
- `(all-the-icons-lorange ((,class :foreground ,red-alt)))
- `(all-the-icons-lpink ((,class :foreground ,magenta)))
- `(all-the-icons-lpurple ((,class :foreground ,magenta-faint)))
- `(all-the-icons-lred ((,class :foreground ,red)))
- `(all-the-icons-lsilver ((,class :foreground ,fg-docstring)))
- `(all-the-icons-lyellow ((,class :foreground ,yellow-alt)))
- `(all-the-icons-maroon ((,class :foreground ,magenta-intense)))
- `(all-the-icons-orange ((,class :foreground ,orange-intense)))
- `(all-the-icons-pink ((,class :foreground ,fg-special-calm)))
- `(all-the-icons-purple ((,class :foreground ,magenta-alt-other)))
- `(all-the-icons-purple-alt ((,class :foreground ,purple-intense)))
- `(all-the-icons-red ((,class :foreground ,red-intense)))
- `(all-the-icons-red-alt ((,class :foreground ,red-alt-other)))
- `(all-the-icons-silver ((,class :foreground ,fg-special-cold)))
- `(all-the-icons-yellow ((,class :foreground ,yellow)))
+ `(all-the-icons-blue ((,c :foreground ,blue-cooler)))
+ `(all-the-icons-blue-warmer ((,c :foreground ,blue-warmer)))
+ `(all-the-icons-cyan ((,c :foreground ,cyan-intense)))
+ `(all-the-icons-cyan-warmer ((,c :foreground ,cyan-warmer)))
+ `(all-the-icons-dblue ((,c :foreground ,blue-faint)))
+ `(all-the-icons-dcyan ((,c :foreground ,cyan-faint)))
+ `(all-the-icons-dgreen ((,c :foreground ,green-faint)))
+ `(all-the-icons-dmaroon ((,c :foreground ,magenta-faint)))
+ `(all-the-icons-dorange ((,c :foreground ,red-faint)))
+ `(all-the-icons-dpink ((,c :foreground ,magenta-faint)))
+ `(all-the-icons-dpurple ((,c :foreground ,magenta-cooler)))
+ `(all-the-icons-dred ((,c :foreground ,red-faint)))
+ `(all-the-icons-dsilver ((,c :foreground ,cyan-faint)))
+ `(all-the-icons-dyellow ((,c :foreground ,yellow-faint)))
+ `(all-the-icons-green ((,c :foreground ,green)))
+ `(all-the-icons-lblue ((,c :foreground ,blue-cooler)))
+ `(all-the-icons-lcyan ((,c :foreground ,cyan)))
+ `(all-the-icons-lgreen ((,c :foreground ,green-warmer)))
+ `(all-the-icons-lmaroon ((,c :foreground ,magenta-warmer)))
+ `(all-the-icons-lorange ((,c :foreground ,red-warmer)))
+ `(all-the-icons-lpink ((,c :foreground ,magenta)))
+ `(all-the-icons-lpurple ((,c :foreground ,magenta-faint)))
+ `(all-the-icons-lred ((,c :foreground ,red)))
+ `(all-the-icons-lyellow ((,c :foreground ,yellow-warmer)))
+ `(all-the-icons-maroon ((,c :foreground ,yellow-cooler)))
+ `(all-the-icons-red ((,c :foreground ,red-intense)))
+ `(all-the-icons-red-warmer ((,c :foreground ,red-cooler)))
+ `(all-the-icons-yellow ((,c :foreground ,yellow-intense)))
;;;;; all-the-icons-dired
- `(all-the-icons-dired-dir-face ((,class :foreground ,cyan-faint)))
+ `(all-the-icons-dired-dir-face ((,c :foreground ,cyan-faint)))
;;;;; all-the-icons-ibuffer
- `(all-the-icons-ibuffer-dir-face ((,class :foreground ,cyan-faint)))
- `(all-the-icons-ibuffer-file-face ((,class :foreground ,blue-faint)))
- `(all-the-icons-ibuffer-mode-face ((,class :foreground ,cyan)))
- `(all-the-icons-ibuffer-size-face ((,class :foreground ,cyan-alt-other)))
+ `(all-the-icons-ibuffer-dir-face ((,c :foreground ,cyan-faint)))
+ `(all-the-icons-ibuffer-file-face ((,c :foreground ,blue-faint)))
+ `(all-the-icons-ibuffer-mode-face ((,c :foreground ,cyan)))
+ `(all-the-icons-ibuffer-size-face ((,c :foreground ,cyan-cooler)))
;;;;; annotate
- `(annotate-annotation ((,class :inherit modus-themes-subtle-blue)))
- `(annotate-annotation-secondary ((,class :inherit modus-themes-subtle-green)))
- `(annotate-highlight ((,class :background ,blue-nuanced-bg :underline ,blue-intense)))
- `(annotate-highlight-secondary ((,class :background ,green-nuanced-bg :underline ,green-intense)))
+ `(annotate-annotation ((,c :inherit modus-themes-subtle-blue)))
+ `(annotate-annotation-secondary ((,c :inherit modus-themes-subtle-magenta)))
+ `(annotate-highlight ((,c :background ,bg-blue-subtle :underline ,blue-intense)))
+ `(annotate-highlight-secondary ((,c :background ,bg-magenta-subtle :underline ,magenta-intense)))
;;;;; ansi-color
;; Those are in Emacs28.
- `(ansi-color-black ((,class :background "black" :foreground "black")))
- `(ansi-color-blue ((,class :background ,blue :foreground ,blue)))
- `(ansi-color-bold ((,class :inherit bold)))
- `(ansi-color-bright-black ((,class :background "gray35" :foreground "gray35")))
- `(ansi-color-bright-blue ((,class :background ,blue-alt :foreground ,blue-alt)))
- `(ansi-color-bright-cyan ((,class :background ,cyan-alt-other :foreground ,cyan-alt-other)))
- `(ansi-color-bright-green ((,class :background ,green-alt-other :foreground ,green-alt-other)))
- `(ansi-color-bright-magenta ((,class :background ,magenta-alt-other :foreground ,magenta-alt-other)))
- `(ansi-color-bright-red ((,class :background ,red-alt :foreground ,red-alt)))
- `(ansi-color-bright-white ((,class :background "white" :foreground "white")))
- `(ansi-color-bright-yellow ((,class :background ,yellow-alt :foreground ,yellow-alt)))
- `(ansi-color-cyan ((,class :background ,cyan :foreground ,cyan)))
- `(ansi-color-green ((,class :background ,green :foreground ,green)))
- `(ansi-color-magenta ((,class :background ,magenta :foreground ,magenta)))
- `(ansi-color-red ((,class :background ,red :foreground ,red)))
- `(ansi-color-white ((,class :background "gray65" :foreground "gray65")))
- `(ansi-color-yellow ((,class :background ,yellow :foreground ,yellow)))
+ `(ansi-color-black ((,c :background "black" :foreground "black")))
+ `(ansi-color-blue ((,c :background ,blue :foreground ,blue)))
+ `(ansi-color-bold ((,c :inherit bold)))
+ `(ansi-color-bright-black ((,c :background "gray35" :foreground "gray35")))
+ `(ansi-color-bright-blue ((,c :background ,blue-warmer :foreground ,blue-warmer)))
+ `(ansi-color-bright-cyan ((,c :background ,cyan-cooler :foreground ,cyan-cooler)))
+ `(ansi-color-bright-green ((,c :background ,green-cooler :foreground ,green-cooler)))
+ `(ansi-color-bright-magenta ((,c :background ,magenta-cooler :foreground ,magenta-cooler)))
+ `(ansi-color-bright-red ((,c :background ,red-warmer :foreground ,red-warmer)))
+ `(ansi-color-bright-white ((,c :background "white" :foreground "white")))
+ `(ansi-color-bright-yellow ((,c :background ,yellow-warmer :foreground ,yellow-warmer)))
+ `(ansi-color-cyan ((,c :background ,cyan :foreground ,cyan)))
+ `(ansi-color-green ((,c :background ,green :foreground ,green)))
+ `(ansi-color-magenta ((,c :background ,magenta :foreground ,magenta)))
+ `(ansi-color-red ((,c :background ,red :foreground ,red)))
+ `(ansi-color-white ((,c :background "gray65" :foreground "gray65")))
+ `(ansi-color-yellow ((,c :background ,yellow :foreground ,yellow)))
;;;;; anzu
- `(anzu-match-1 ((,class :inherit modus-themes-subtle-cyan)))
- `(anzu-match-2 ((,class :inherit modus-themes-search-success)))
- `(anzu-match-3 ((,class :inherit modus-themes-subtle-yellow)))
- `(anzu-mode-line ((,class :inherit (bold modus-themes-search-success-modeline))))
- `(anzu-mode-line-no-match ((,class :inherit bold :foreground ,red-active)))
- `(anzu-replace-highlight ((,class :inherit modus-themes-refine-red :underline t)))
- `(anzu-replace-to ((,class :inherit modus-themes-search-success)))
-;;;;; apropos
- `(apropos-button ((,class :foreground ,magenta-alt-other)))
- `(apropos-function-button ((,class :foreground ,magenta)))
- `(apropos-keybinding ((,class :inherit modus-themes-key-binding)))
- `(apropos-misc-button ((,class :foreground ,green-alt-other)))
- `(apropos-property ((,class :inherit modus-themes-bold :foreground ,magenta-alt)))
- `(apropos-symbol ((,class :inherit modus-themes-pseudo-header)))
- `(apropos-user-option-button ((,class :foreground ,cyan)))
- `(apropos-variable-button ((,class :foreground ,blue-alt)))
-;;;;; artbollocks-mode
- `(artbollocks-face ((,class :inherit modus-themes-lang-note)))
- `(artbollocks-lexical-illusions-face ((,class :background ,bg-alt :foreground ,red-alt :underline t)))
- `(artbollocks-passive-voice-face ((,class :inherit modus-themes-lang-warning)))
- `(artbollocks-weasel-words-face ((,class :inherit modus-themes-lang-error)))
+ `(anzu-match-1 ((,c :inherit modus-themes-subtle-cyan)))
+ `(anzu-match-2 ((,c :inherit modus-themes-search-current)))
+ `(anzu-match-3 ((,c :inherit modus-themes-subtle-yellow)))
+ `(anzu-mode-line ((,c :inherit bold)))
+ `(anzu-mode-line-no-match ((,c :inherit error)))
+ `(anzu-replace-highlight ((,c :inherit modus-themes-intense-red :underline t)))
+ `(anzu-replace-to ((,c :inherit modus-themes-search-current)))
;;;;; auctex and Tex
- `(font-latex-bold-face ((,class :inherit bold)))
- `(font-latex-doctex-documentation-face ((,class :inherit font-lock-doc-face)))
- `(font-latex-doctex-preprocessor-face ((,class :inherit font-lock-preprocessor-face)))
- `(font-latex-italic-face ((,class :inherit italic)))
- `(font-latex-math-face ((,class :inherit font-lock-constant-face)))
- `(font-latex-script-char-face ((,class :inherit font-lock-builtin-face)))
- `(font-latex-sectioning-5-face ((,class :inherit (bold modus-themes-variable-pitch) :foreground ,blue-nuanced-fg)))
- `(font-latex-sedate-face ((,class :inherit font-lock-keyword-face)))
- `(font-latex-slide-title-face ((,class :inherit modus-themes-heading-1)))
- `(font-latex-string-face ((,class :inherit font-lock-string-face)))
- `(font-latex-subscript-face ((,class :height 0.95)))
- `(font-latex-superscript-face ((,class :height 0.95)))
- `(font-latex-underline-face ((,class :inherit underline)))
- `(font-latex-verbatim-face ((,class :inherit modus-themes-markup-verbatim)))
- `(font-latex-warning-face ((,class :inherit font-lock-warning-face)))
- `(tex-verbatim ((,class :inherit modus-themes-markup-verbatim)))
- `(texinfo-heading ((,class :foreground ,magenta)))
- `(TeX-error-description-error ((,class :inherit error)))
- `(TeX-error-description-help ((,class :inherit success)))
- `(TeX-error-description-tex-said ((,class :inherit success)))
- `(TeX-error-description-warning ((,class :inherit warning)))
+ `(font-latex-bold-face ((,c :inherit bold)))
+ `(font-latex-doctex-documentation-face ((,c :inherit font-lock-doc-face)))
+ `(font-latex-doctex-preprocessor-face ((,c :inherit font-lock-preprocessor-face)))
+ `(font-latex-italic-face ((,c :inherit italic)))
+ `(font-latex-math-face ((,c :inherit font-lock-constant-face)))
+ `(font-latex-script-char-face ((,c :inherit font-lock-builtin-face)))
+ `(font-latex-sectioning-5-face ((,c :inherit (bold modus-themes-variable-pitch) :foreground ,fg-alt)))
+ `(font-latex-sedate-face ((,c :inherit font-lock-keyword-face)))
+ `(font-latex-slide-title-face ((,c :inherit modus-themes-heading-1)))
+ `(font-latex-string-face ((,c :inherit font-lock-string-face)))
+ `(font-latex-subscript-face ((,c :height 0.95)))
+ `(font-latex-superscript-face ((,c :height 0.95)))
+ `(font-latex-underline-face ((,c :inherit underline)))
+ `(font-latex-verbatim-face ((,c :inherit modus-themes-prose-verbatim)))
+ `(font-latex-warning-face ((,c :inherit font-lock-warning-face)))
+ `(tex-verbatim ((,c :inherit modus-themes-prose-verbatim)))
+ ;; `(texinfo-heading ((,c :foreground ,magenta)))
+ `(TeX-error-description-error ((,c :inherit error)))
+ `(TeX-error-description-help ((,c :inherit success)))
+ `(TeX-error-description-tex-said ((,c :inherit success)))
+ `(TeX-error-description-warning ((,c :inherit warning)))
;;;;; auto-dim-other-buffers
- `(auto-dim-other-buffers-face ((,class :background ,bg-alt)))
+ `(auto-dim-other-buffers-face ((,c :background ,bg-inactive)))
;;;;; avy
- `(avy-background-face ((,class :background ,bg-dim :foreground ,fg-dim :extend t)))
- `(avy-goto-char-timer-face ((,class :inherit (modus-themes-intense-neutral bold))))
- `(avy-lead-face ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-0)))
- `(avy-lead-face-0 ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-1)))
- `(avy-lead-face-1 ((,class :inherit (modus-themes-special-warm modus-themes-reset-soft))))
- `(avy-lead-face-2 ((,class :inherit (bold modus-themes-reset-soft) :background ,bg-char-2)))
+ `(avy-background-face ((,c :background ,bg-dim :foreground ,fg-dim :extend t)))
+ `(avy-goto-char-timer-face ((,c :inherit bold :background ,bg-active)))
+ `(avy-lead-face ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-char-0)))
+ `(avy-lead-face-0 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-char-1)))
+ `(avy-lead-face-1 ((,c :inherit modus-themes-reset-soft :background ,bg-inactive)))
+ `(avy-lead-face-2 ((,c :inherit (bold modus-themes-reset-soft) :background ,bg-char-2)))
;;;;; aw (ace-window)
- `(aw-background-face ((,class :foreground ,fg-unfocused)))
- `(aw-key-face ((,class :inherit modus-themes-key-binding)))
- `(aw-leading-char-face ((,class :inherit (bold modus-themes-reset-soft) :height 1.5
- :foreground ,red-intense)))
- `(aw-minibuffer-leading-char-face ((,class :inherit (modus-themes-intense-red bold))))
- `(aw-mode-line-face ((,class :inherit bold)))
-;;;;; awesome-tray
- `(awesome-tray-module-awesome-tab-face ((,class :inherit bold :foreground ,red-alt-other)))
- `(awesome-tray-module-battery-face ((,class :inherit bold :foreground ,cyan-alt-other)))
- `(awesome-tray-module-buffer-name-face ((,class :inherit bold :foreground ,yellow-alt-other)))
- `(awesome-tray-module-circe-face ((,class :inherit bold :foreground ,blue-alt)))
- `(awesome-tray-module-date-face ((,class :inherit bold :foreground ,fg-dim)))
- `(awesome-tray-module-evil-face ((,class :inherit bold :foreground ,green-alt)))
- `(awesome-tray-module-git-face ((,class :inherit bold :foreground ,magenta)))
- `(awesome-tray-module-last-command-face ((,class :inherit bold :foreground ,blue-alt-other)))
- `(awesome-tray-module-location-face ((,class :inherit bold :foreground ,yellow)))
- `(awesome-tray-module-mode-name-face ((,class :inherit bold :foreground ,green)))
- `(awesome-tray-module-parent-dir-face ((,class :inherit bold :foreground ,cyan)))
- `(awesome-tray-module-rvm-face ((,class :inherit bold :foreground ,magenta-alt-other)))
-;;;;; bbdb
- `(bbdb-name ((,class :foreground ,magenta-alt-other)))
- `(bbdb-organization ((,class :foreground ,red-alt-other)))
- `(bbdb-field-name ((,class :foreground ,cyan-alt-other)))
+ `(aw-background-face ((,c :foreground "gray50")))
+ `(aw-key-face ((,c :inherit modus-themes-key-binding)))
+ `(aw-leading-char-face ((,c :inherit (bold modus-themes-reset-soft) :height 1.5 :foreground ,red-intense)))
+ `(aw-minibuffer-leading-char-face ((,c :inherit (modus-themes-intense-red bold))))
+ `(aw-mode-line-face ((,c :inherit bold)))
;;;;; binder
- `(binder-sidebar-highlight ((,class :inherit modus-themes-subtle-cyan)))
- `(binder-sidebar-marked ((,class :inherit modus-themes-mark-sel)))
- `(binder-sidebar-missing ((,class :inherit modus-themes-subtle-red)))
- `(binder-sidebar-tags ((,class :foreground ,cyan)))
-;;;;; bm
- `(bm-face ((,class :inherit modus-themes-subtle-yellow :extend t)))
- `(bm-fringe-face ((,class :inherit modus-themes-fringe-yellow)))
- `(bm-fringe-persistent-face ((,class :inherit modus-themes-fringe-blue)))
- `(bm-persistent-face ((,class :inherit modus-themes-intense-blue :extend t)))
+ `(binder-sidebar-highlight ((,c :inherit modus-themes-subtle-cyan)))
+ `(binder-sidebar-marked ((,c :inherit modus-themes-mark-sel)))
+ `(binder-sidebar-missing ((,c :inherit modus-themes-subtle-red)))
+ `(binder-sidebar-tags ((,c :foreground ,variable)))
;;;;; bongo
- `(bongo-album-title ((,class :foreground ,fg-active)))
- `(bongo-artist ((,class :foreground ,magenta-active)))
- `(bongo-currently-playing-track ((,class :inherit bold)))
- `(bongo-elapsed-track-part ((,class :inherit modus-themes-subtle-magenta :underline t)))
- `(bongo-filled-seek-bar ((,class :background ,blue-intense-bg :foreground ,fg-main)))
- `(bongo-marked-track ((,class :foreground ,fg-mark-alt)))
- `(bongo-marked-track-line ((,class :background ,bg-mark-alt)))
- `(bongo-played-track ((,class :foreground ,fg-unfocused :strike-through t)))
- `(bongo-track-length ((,class :inherit shadow)))
- `(bongo-track-title ((,class :foreground ,blue-active)))
- `(bongo-unfilled-seek-bar ((,class :background ,bg-special-cold :foreground ,fg-main)))
+ `(bongo-album-title (( )))
+ `(bongo-artist ((,c :foreground ,accent-0)))
+ `(bongo-currently-playing-track ((,c :inherit bold)))
+ `(bongo-elapsed-track-part ((,c :background ,bg-inactive :underline t)))
+ `(bongo-filled-seek-bar ((,c :background ,bg-hover)))
+ `(bongo-marked-track ((,c :inherit modus-themes-mark-alt)))
+ `(bongo-marked-track-line ((,c :background ,bg-dim)))
+ `(bongo-played-track ((,c :inherit shadow :strike-through t)))
+ `(bongo-track-length ((,c :inherit shadow)))
+ `(bongo-track-title ((,c :foreground ,accent-1)))
+ `(bongo-unfilled-seek-bar ((,c :background ,bg-dim)))
;;;;; boon
- `(boon-modeline-cmd ((,class :inherit modus-themes-active-blue)))
- `(boon-modeline-ins ((,class :inherit modus-themes-active-red)))
- `(boon-modeline-off ((,class :inherit modus-themes-active-yellow)))
- `(boon-modeline-spc ((,class :inherit modus-themes-active-green)))
+ `(boon-modeline-cmd ((,c :inherit modus-themes-intense-blue)))
+ `(boon-modeline-ins ((,c :inherit modus-themes-intense-red)))
+ `(boon-modeline-off ((,c :inherit modus-themes-intense-yellow)))
+ `(boon-modeline-spc ((,c :inherit modus-themes-intense-green)))
;;;;; bookmark
- `(bookmark-face ((,class :inherit modus-themes-fringe-cyan)))
- `(bookmark-menu-bookmark ((,class :inherit bold)))
-;;;;; breakpoint (built-in gdb-mi.el)
- `(breakpoint-disabled ((,class :inherit shadow)))
- `(breakpoint-enabled ((,class :inherit bold :foreground ,red)))
+ `(bookmark-face ((,c :inherit success)))
+ `(bookmark-menu-bookmark ((,c :inherit bold)))
;;;;; calendar and diary
- `(calendar-month-header ((,class :inherit modus-themes-pseudo-header)))
- `(calendar-today ((,class :inherit bold :underline t)))
- `(calendar-weekday-header ((,class :foreground ,fg-unfocused)))
- `(calendar-weekend-header ((,class :foreground ,red-faint)))
- `(diary ((,class :background ,blue-nuanced-bg :foreground ,blue-alt-other)))
- `(diary-anniversary ((,class :foreground ,red-alt-other)))
- `(diary-time ((,class :foreground ,cyan)))
- `(holiday ((,class :background ,magenta-nuanced-bg :foreground ,magenta-alt)))
-;;;;; calfw
- `(cfw:face-annotation ((,class :foreground ,fg-special-warm)))
- `(cfw:face-day-title ((,class :foreground ,fg-main)))
- `(cfw:face-default-content ((,class :foreground ,green-alt)))
- `(cfw:face-default-day ((,class :inherit (cfw:face-day-title bold))))
- `(cfw:face-disable ((,class :foreground ,fg-unfocused)))
- `(cfw:face-grid ((,class :foreground ,fg-window-divider-outer)))
- `(cfw:face-header ((,class :inherit bold :foreground ,fg-main)))
- `(cfw:face-holiday ((,class :foreground ,magenta-alt-other)))
- `(cfw:face-periods ((,class :foreground ,cyan-alt-other)))
- `(cfw:face-saturday ((,class :inherit bold :foreground ,cyan-alt-other)))
- `(cfw:face-select ((,class :inherit modus-themes-intense-blue)))
- `(cfw:face-sunday ((,class :inherit bold :foreground ,cyan-alt-other)))
- `(cfw:face-title ((,class :inherit modus-themes-heading-1 :background ,bg-main :overline nil :foreground ,fg-special-cold)))
- `(cfw:face-today ((,class :background ,bg-inactive)))
- `(cfw:face-today-title ((,class :background ,bg-active)))
- `(cfw:face-toolbar ((,class :background ,bg-alt :foreground ,bg-alt)))
- `(cfw:face-toolbar-button-off ((,class :inherit shadow)))
- `(cfw:face-toolbar-button-on ((,class :inherit bold :background ,blue-nuanced-bg
- :foreground ,blue-alt)))
+ `(calendar-month-header ((,c :inherit bold)))
+ `(calendar-today ((,c :inherit bold :underline t)))
+ `(calendar-weekday-header ((,c :foreground ,date-weekday)))
+ `(calendar-weekend-header ((,c :foreground ,date-weekend)))
+ `(diary ((,c :background ,bg-dim :foreground ,accent-0)))
+ `(diary-anniversary ((,c :foreground ,accent-1)))
+ `(diary-time ((,c :foreground ,date-common)))
+ `(holiday ((,c :foreground ,date-holiday)))
;;;;; calibredb
- `(calibredb-archive-face ((,class :foreground ,magenta-alt-faint)))
- `(calibredb-author-face ((,class :foreground ,blue-faint)))
- `(calibredb-comment-face ((,class :inherit shadow)))
- `(calibredb-date-face ((,class :foreground ,cyan)))
- `(calibredb-edit-annotation-header-title-face ((,class :inherit bold)))
- `(calibredb-favorite-face ((,class :foreground ,red-alt)))
+ ;; NOTE 2022-12-27: Calibredb needs to be reviewed. I had to
+ ;; change the applicable colours for the transition to
+ ;; modus-themes version 4, but I cannot test this currently (it
+ ;; depends on an external program).
+ `(calibredb-archive-face ((,c :foreground ,accent-3)))
+ `(calibredb-author-face ((,c :foreground ,name)))
+ `(calibredb-comment-face ((,c :inherit shadow)))
+ `(calibredb-date-face ((,c :foreground ,date-common)))
+ `(calibredb-edit-annotation-header-title-face ((,c :inherit bold)))
+ `(calibredb-favorite-face ((,c :foreground ,red-warmer)))
`(calibredb-file-face (( )))
- `(calibredb-format-face ((,class :foreground ,cyan-faint)))
- `(calibredb-highlight-face ((,class :inherit success)))
+ `(calibredb-format-face ((,c :foreground ,fg-alt)))
+ `(calibredb-highlight-face ((,c :inherit success)))
`(calibredb-id-face (( )))
`(calibredb-ids-face (( )))
- `(calibredb-search-header-highlight-face ((,class :inherit modus-themes-hl-line)))
- `(calibredb-search-header-library-name-face ((,class :foreground ,blue-active)))
- `(calibredb-search-header-library-path-face ((,class :inherit bold)))
- `(calibredb-search-header-sort-face ((,class :inherit bold :foreground ,magenta-active)))
- `(calibredb-search-header-total-face ((,class :inherit bold :foreground ,cyan-active)))
- `(calibredb-search-header-filter-face ((,class :inherit bold)))
- `(calibredb-mark-face ((,class :inherit modus-themes-mark-sel)))
+ `(calibredb-search-header-highlight-face ((,c :background ,bg-hl-line :extend t)))
+ `(calibredb-search-header-library-name-face ((,c :foreground ,accent-2)))
+ `(calibredb-search-header-library-path-face ((,c :inherit bold)))
+ `(calibredb-search-header-sort-face ((,c :inherit bold :foreground ,accent-1)))
+ `(calibredb-search-header-total-face ((,c :inherit bold :foreground ,accent-0)))
+ `(calibredb-search-header-filter-face ((,c :inherit bold)))
+ `(calibredb-mark-face ((,c :inherit modus-themes-mark-sel)))
`(calibredb-size-face (( )))
- `(calibredb-tag-face ((,class :foreground ,magenta-alt-faint)))
+ `(calibredb-tag-face ((,c :foreground ,fg-alt)))
;;;;; centaur-tabs
- `(centaur-tabs-active-bar-face ((,class :background ,blue-active)))
- `(centaur-tabs-close-mouse-face ((,class :inherit bold :foreground ,red-active :underline t)))
- `(centaur-tabs-close-selected ((,class :inherit centaur-tabs-selected)))
- `(centaur-tabs-close-unselected ((,class :inherit centaur-tabs-unselected)))
- `(centaur-tabs-modified-marker-selected ((,class :inherit centaur-tabs-selected)))
- `(centaur-tabs-modified-marker-unselected ((,class :inherit centaur-tabs-unselected)))
- `(centaur-tabs-default ((,class :background ,bg-main)))
- `(centaur-tabs-selected ((,class :inherit modus-themes-tab-active)))
- `(centaur-tabs-selected-modified ((,class :inherit (italic centaur-tabs-selected))))
- `(centaur-tabs-unselected ((,class :inherit modus-themes-tab-inactive)))
- `(centaur-tabs-unselected-modified ((,class :inherit (italic centaur-tabs-unselected))))
-;;;;; cfrs
- `(cfrs-border-color ((,class :background ,fg-window-divider-inner)))
+ `(centaur-tabs-active-bar-face ((,c :background ,blue)))
+ `(centaur-tabs-close-mouse-face ((,c :inherit bold :foreground ,red :underline t)))
+ `(centaur-tabs-close-selected ((,c :inherit centaur-tabs-selected)))
+ `(centaur-tabs-close-unselected ((,c :inherit centaur-tabs-unselected)))
+ `(centaur-tabs-modified-marker-selected ((,c :inherit centaur-tabs-selected)))
+ `(centaur-tabs-modified-marker-unselected ((,c :inherit centaur-tabs-unselected)))
+ `(centaur-tabs-default ((,c :background ,bg-main)))
+ `(centaur-tabs-selected ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current)))
+ `(centaur-tabs-selected-modified ((,c :inherit (italic centaur-tabs-selected))))
+ `(centaur-tabs-unselected ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other)))
+ `(centaur-tabs-unselected-modified ((,c :inherit (italic centaur-tabs-unselected))))
;;;;; change-log and log-view (`vc-print-log' and `vc-print-root-log')
- `(change-log-acknowledgment ((,class :inherit shadow)))
- `(change-log-conditionals ((,class :foreground ,yellow)))
- `(change-log-date ((,class :foreground ,cyan)))
- `(change-log-email ((,class :foreground ,cyan-alt-other)))
- `(change-log-file ((,class :inherit bold :foreground ,fg-special-cold)))
- `(change-log-function ((,class :foreground ,green-alt-other)))
- `(change-log-list ((,class :foreground ,magenta-alt)))
- `(change-log-name ((,class :foreground ,magenta-alt-other)))
- `(log-edit-header ((,class :foreground ,fg-special-warm)))
- `(log-edit-headers-separator ((,class :height 1 :background ,fg-window-divider-inner :extend t)))
- `(log-edit-summary ((,class :inherit bold :foreground ,blue)))
- `(log-edit-unknown-header ((,class :inherit shadow)))
- `(log-view-commit-body ((,class :foreground ,blue-nuanced-fg)))
- `(log-view-file ((,class :inherit bold :foreground ,fg-special-cold)))
- `(log-view-message ((,class :background ,bg-alt :foreground ,fg-alt)))
+ `(change-log-acknowledgment ((,c :foreground ,identifier)))
+ `(change-log-conditionals ((,c :inherit error)))
+ `(change-log-date ((,c :foreground ,date-common)))
+ `(change-log-email ((,c :foreground ,fg-alt)))
+ `(change-log-file ((,c :inherit bold)))
+ `(change-log-function ((,c :inherit warning)))
+ `(change-log-list ((,c :inherit bold)))
+ `(change-log-name ((,c :foreground ,name)))
+ `(log-edit-header ((,c :inherit bold)))
+ `(log-edit-headers-separator ((,c :height 1 :background ,border :extend t)))
+ `(log-edit-summary ((,c :inherit bold :foreground ,blue)))
+ `(log-edit-unknown-header ((,c :inherit shadow)))
+ `(log-view-commit-body (( )))
+ `(log-view-file ((,c :inherit bold)))
+ `(log-view-message ((,c :foreground ,identifier)))
;;;;; cider
- `(cider-debug-code-overlay-face ((,class :background ,bg-alt)))
- `(cider-debug-prompt-face ((,class :foreground ,magenta-alt :underline t)))
- `(cider-deprecated-face ((,class :inherit modus-themes-refine-yellow)))
- `(cider-docview-emphasis-face ((,class :inherit italic :foreground ,fg-special-cold)))
- `(cider-docview-literal-face ((,class :foreground ,blue-alt)))
- `(cider-docview-strong-face ((,class :inherit bold :foreground ,fg-special-cold)))
- `(cider-docview-table-border-face ((,class :inherit shadow)))
- `(cider-enlightened-face ((,class :box (:line-width -1 :color ,yellow-alt :style nil) :background ,bg-dim)))
- `(cider-enlightened-local-face ((,class :inherit bold :foreground ,yellow-alt-other)))
- `(cider-error-highlight-face ((,class :foreground ,red :underline t)))
- `(cider-fragile-button-face ((,class :box (:line-width 3 :color ,fg-alt :style released-button) :foreground ,yellow)))
- `(cider-fringe-good-face ((,class :foreground ,green-active)))
- `(cider-instrumented-face ((,class :box (:line-width -1 :color ,red :style nil) :background ,bg-dim)))
- `(cider-reader-conditional-face ((,class :inherit italic :foreground ,fg-special-warm)))
- `(cider-repl-input-face ((,class :inherit bold)))
- `(cider-repl-prompt-face ((,class :inherit modus-themes-prompt)))
- `(cider-repl-stderr-face ((,class :inherit bold :foreground ,red)))
- `(cider-repl-stdout-face ((,class :foreground ,blue)))
- `(cider-result-overlay-face ((,class :box (:line-width -1 :color ,blue :style nil) :background ,bg-dim)))
- `(cider-stacktrace-error-class-face ((,class :inherit bold :foreground ,red)))
- `(cider-stacktrace-error-message-face ((,class :inherit italic :foreground ,red-alt-other)))
- `(cider-stacktrace-face ((,class :foreground ,fg-main)))
- `(cider-stacktrace-filter-active-face ((,class :foreground ,cyan-alt :underline t)))
- `(cider-stacktrace-filter-inactive-face ((,class :foreground ,cyan-alt)))
- `(cider-stacktrace-fn-face ((,class :inherit bold :foreground ,fg-main)))
- `(cider-stacktrace-ns-face ((,class :inherit (shadow italic))))
- `(cider-stacktrace-promoted-button-face ((,class :box (:line-width 3 :color ,fg-alt :style released-button) :foreground ,red)))
- `(cider-stacktrace-suppressed-button-face ((,class :box (:line-width 3 :color ,fg-alt :style pressed-button)
- :background ,bg-alt :foreground ,fg-alt)))
- `(cider-test-error-face ((,class :inherit modus-themes-subtle-red)))
- `(cider-test-failure-face ((,class :inherit (modus-themes-intense-red bold))))
- `(cider-test-success-face ((,class :inherit modus-themes-grue-background-intense)))
- `(cider-traced-face ((,class :box (:line-width -1 :color ,cyan :style nil) :background ,bg-dim)))
- `(cider-warning-highlight-face ((,class :foreground ,yellow :underline t)))
+ `(cider-deprecated-face ((,c :inherit warning)))
+ `(cider-enlightened-face ((,c :box ,warning)))
+ `(cider-enlightened-local-face ((,c :inherit warning)))
+ `(cider-error-highlight-face ((,c :inherit modus-themes-lang-error)))
+ `(cider-fringe-good-face ((,c :foreground ,info)))
+ `(cider-instrumented-face ((,c :box ,err)))
+ `(cider-reader-conditional-face ((,c :inherit font-lock-type-face)))
+ `(cider-repl-prompt-face ((,c :inherit minibuffer-prompt)))
+ `(cider-repl-stderr-face ((,c :foreground ,err)))
+ `(cider-repl-stdout-face (( )))
+ `(cider-warning-highlight-face ((,c :inherit modus-themes-lang-warning)))
;;;;; circe (and lui)
- `(circe-fool-face ((,class :inherit shadow)))
- `(circe-highlight-nick-face ((,class :inherit bold :foreground ,blue)))
- `(circe-prompt-face ((,class :inherit modus-themes-prompt)))
- `(circe-server-face ((,class :foreground ,fg-unfocused)))
- `(lui-button-face ((,class :inherit button)))
- `(lui-highlight-face ((,class :foreground ,magenta-alt)))
- `(lui-time-stamp-face ((,class :foreground ,blue-nuanced-fg)))
+ `(circe-fool-face ((,c :inherit shadow)))
+ `(circe-highlight-nick-face ((,c :inherit error)))
+ `(circe-prompt-face ((,c :inherit modus-themes-prompt)))
+ `(circe-server-face ((,c :inherit shadow)))
+ `(lui-button-face ((,c :inherit button)))
+ `(lui-highlight-face ((,c :inherit error)))
+ `(lui-time-stamp-face ((,c :foreground ,date-common)))
;;;;; citar
- `(citar ((,class :inherit shadow)))
+ `(citar ((,c :inherit shadow)))
`(citar-highlight (( )))
-;;;;; color-rg
- `(color-rg-font-lock-column-number ((,class :foreground ,magenta-alt-other)))
- `(color-rg-font-lock-command ((,class :inherit bold :foreground ,fg-main)))
- `(color-rg-font-lock-file ((,class :inherit bold :foreground ,fg-special-cold)))
- `(color-rg-font-lock-flash ((,class :inherit modus-themes-intense-blue)))
- `(color-rg-font-lock-function-location ((,class :inherit modus-themes-special-calm)))
- `(color-rg-font-lock-header-line-directory ((,class :foreground ,blue-active)))
- `(color-rg-font-lock-header-line-edit-mode ((,class :foreground ,magenta-active)))
- `(color-rg-font-lock-header-line-keyword ((,class :foreground ,green-active)))
- `(color-rg-font-lock-header-line-text ((,class :foreground ,fg-active)))
- `(color-rg-font-lock-line-number ((,class :foreground ,fg-special-warm)))
- `(color-rg-font-lock-mark-changed ((,class :inherit bold :foreground ,blue)))
- `(color-rg-font-lock-mark-deleted ((,class :inherit bold :foreground ,red)))
- `(color-rg-font-lock-match ((,class :inherit modus-themes-special-calm)))
- `(color-rg-font-lock-position-splitter ((,class :inherit shadow)))
+;;;;; clojure-mode
+ `(clojure-keyword-face ((,c :inherit font-lock-builtin-face)))
;;;;; column-enforce-mode
- `(column-enforce-face ((,class :inherit modus-themes-refine-yellow)))
+ `(column-enforce-face ((,c :inherit modus-themes-intense-yellow)))
;;;;; company-mode
- `(company-echo-common ((,class :inherit modus-themes-completion-match-0)))
- `(company-preview ((,class :background ,bg-dim :foreground ,fg-dim)))
- `(company-preview-common ((,class :inherit company-echo-common)))
- `(company-preview-search ((,class :inherit modus-themes-special-calm)))
- `(company-template-field ((,class :inherit modus-themes-intense-magenta)))
- `(company-scrollbar-bg ((,class :background ,bg-active)))
- `(company-scrollbar-fg ((,class :background ,fg-active)))
- `(company-tooltip ((,class :background ,bg-alt)))
- `(company-tooltip-annotation ((,class :inherit completions-annotations)))
- `(company-tooltip-common ((,class :inherit company-echo-common)))
- `(company-tooltip-deprecated ((,class :inherit company-tooltip :strike-through t)))
- `(company-tooltip-mouse ((,class :inherit highlight)))
- `(company-tooltip-scrollbar-thumb ((,class :background ,fg-active)))
- `(company-tooltip-scrollbar-track ((,class :background ,bg-active)))
- `(company-tooltip-search ((,class :inherit (modus-themes-search-success-lazy bold))))
- `(company-tooltip-search-selection ((,class :inherit modus-themes-search-success :underline t)))
- `(company-tooltip-selection ((,class :inherit modus-themes-completion-selected-popup)))
-;;;;; company-posframe
- `(company-posframe-active-backend-name ((,class :inherit bold :background ,bg-active :foreground ,blue-active)))
- `(company-posframe-inactive-backend-name ((,class :background ,bg-active :foreground ,fg-active)))
- `(company-posframe-metadata ((,class :background ,bg-inactive :foreground ,fg-inactive)))
+ `(company-echo-common ((,c :inherit modus-themes-completion-match-0)))
+ `(company-preview ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(company-preview-common ((,c :inherit company-echo-common)))
+ `(company-preview-search ((,c :background ,bg-yellow-intense)))
+ `(company-scrollbar-bg ((,c :background ,bg-active)))
+ `(company-scrollbar-fg ((,c :background ,fg-main)))
+ `(company-template-field ((,c :background ,bg-active)))
+ `(company-tooltip ((,c :background ,bg-dim)))
+ `(company-tooltip-annotation ((,c :inherit completions-annotations)))
+ `(company-tooltip-common ((,c :inherit company-echo-common)))
+ `(company-tooltip-deprecated ((,c :inherit company-tooltip :strike-through t)))
+ `(company-tooltip-mouse ((,c :inherit highlight)))
+ `(company-tooltip-scrollbar-thumb ((,c :background ,fg-alt)))
+ `(company-tooltip-scrollbar-track ((,c :background ,bg-inactive)))
+ `(company-tooltip-search ((,c :inherit secondary-selection)))
+ `(company-tooltip-search-selection ((,c :inherit secondary-selection :underline t)))
+ `(company-tooltip-selection ((,c :inherit modus-themes-completion-selected)))
;;;;; compilation
- `(compilation-column-number ((,class :inherit compilation-line-number)))
- `(compilation-error ((,class :inherit modus-themes-bold :foreground ,red)))
- `(compilation-info ((,class :inherit modus-themes-bold :foreground ,fg-special-cold)))
- `(compilation-line-number ((,class :foreground ,fg-special-warm)))
- `(compilation-mode-line-exit ((,class :inherit bold)))
- `(compilation-mode-line-fail ((,class :inherit modus-themes-bold :foreground ,red-active)))
- `(compilation-mode-line-run ((,class :inherit modus-themes-bold :foreground ,cyan-active)))
- `(compilation-warning ((,class :inherit modus-themes-bold :foreground ,yellow-alt)))
+ `(compilation-column-number ((,c :inherit compilation-line-number)))
+ `(compilation-error ((,c :inherit modus-themes-bold :foreground ,err)))
+ `(compilation-info ((,c :inherit modus-themes-bold :foreground ,info)))
+ `(compilation-line-number ((,c :inherit shadow)))
+ `(compilation-mode-line-exit ((,c :inherit bold)))
+ `(compilation-mode-line-fail ((,c :inherit bold :foreground ,modeline-err)))
+ `(compilation-mode-line-run ((,c :inherit bold :foreground ,modeline-warning)))
+ `(compilation-warning ((,c :inherit modus-themes-bold :foreground ,warning)))
;;;;; completions
- `(completions-annotations ((,class :inherit modus-themes-slant :foreground ,cyan-faint)))
- `(completions-common-part ((,class :inherit modus-themes-completion-match-0)))
- `(completions-first-difference ((,class :inherit modus-themes-completion-match-1)))
+ `(completions-annotations ((,c :inherit modus-themes-slant :foreground ,docstring)))
+ `(completions-common-part ((,c :inherit modus-themes-completion-match-0)))
+ `(completions-first-difference ((,c :inherit modus-themes-completion-match-1)))
;;;;; consult
- `(consult-async-running ((,class :inherit bold :foreground ,blue)))
- `(consult-async-split ((,class :foreground ,magenta-alt)))
- `(consult-bookmark ((,class :foreground ,blue)))
- `(consult-file ((,class :foreground ,fg-special-cold)))
- `(consult-imenu-prefix ((,class :inherit shadow)))
- `(consult-key ((,class :inherit modus-themes-key-binding)))
- `(consult-line-number ((,class :foreground ,fg-special-warm)))
- `(consult-line-number-prefix ((,class :foreground ,fg-unfocused)))
- `(consult-narrow-indicator ((,class :foreground ,magenta-alt)))
- `(consult-preview-cursor ((,class :inherit modus-themes-intense-blue)))
- `(consult-preview-insertion ((,class :inherit modus-themes-special-warm)))
+ `(consult-async-split ((,c :inherit error)))
+ `(consult-file ((,c :inherit modus-themes-bold :foreground ,info)))
+ `(consult-key ((,c :inherit modus-themes-key-binding)))
+ `(consult-imenu-prefix ((,c :inherit shadow)))
+ `(consult-line-number ((,c :inherit shadow)))
+ `(consult-line-number-prefix ((,c :inherit shadow)))
;;;;; corfu
- `(corfu-current ((,class :inherit modus-themes-completion-selected-popup)))
- `(corfu-bar ((,class :background ,fg-alt)))
- `(corfu-border ((,class :background ,bg-active)))
- `(corfu-default ((,class :background ,bg-alt)))
+ `(corfu-current ((,c :inherit modus-themes-completion-selected)))
+ `(corfu-bar ((,c :background ,fg-dim)))
+ `(corfu-border ((,c :background ,bg-active)))
+ `(corfu-default ((,c :background ,bg-dim)))
;;;;; corfu-quick
- `(corfu-quick1 ((,class :inherit bold :background ,bg-char-0)))
- `(corfu-quick2 ((,class :inherit bold :background ,bg-char-1)))
+ `(corfu-quick1 ((,c :inherit bold :background ,bg-char-0)))
+ `(corfu-quick2 ((,c :inherit bold :background ,bg-char-1)))
;;;;; counsel
- `(counsel-active-mode ((,class :foreground ,magenta-alt-other)))
- `(counsel-application-name ((,class :foreground ,red-alt-other)))
- `(counsel-key-binding ((,class :inherit modus-themes-key-binding)))
- `(counsel-outline-1 ((,class :inherit org-level-1)))
- `(counsel-outline-2 ((,class :inherit org-level-2)))
- `(counsel-outline-3 ((,class :inherit org-level-3)))
- `(counsel-outline-4 ((,class :inherit org-level-4)))
- `(counsel-outline-5 ((,class :inherit org-level-5)))
- `(counsel-outline-6 ((,class :inherit org-level-6)))
- `(counsel-outline-7 ((,class :inherit org-level-7)))
- `(counsel-outline-8 ((,class :inherit org-level-8)))
- `(counsel-outline-default ((,class :foreground ,fg-main)))
- `(counsel-variable-documentation ((,class :inherit modus-themes-slant :foreground ,yellow-alt-other)))
-;;;;; counsel-css
- `(counsel-css-selector-depth-face-1 ((,class :foreground ,blue)))
- `(counsel-css-selector-depth-face-2 ((,class :foreground ,cyan)))
- `(counsel-css-selector-depth-face-3 ((,class :foreground ,green)))
- `(counsel-css-selector-depth-face-4 ((,class :foreground ,yellow)))
- `(counsel-css-selector-depth-face-5 ((,class :foreground ,magenta)))
- `(counsel-css-selector-depth-face-6 ((,class :foreground ,red)))
-;;;;; cov
- `(cov-coverage-not-run-face ((,class :foreground ,red-intense)))
- `(cov-coverage-run-face ((,class :foreground ,green-intense)))
- `(cov-heavy-face ((,class :foreground ,magenta-intense)))
- `(cov-light-face ((,class :foreground ,blue-intense)))
- `(cov-med-face ((,class :foreground ,yellow-intense)))
- `(cov-none-face ((,class :foreground ,cyan-intense)))
+ `(counsel-active-mode ((,c :foreground ,keyword)))
+ `(counsel-application-name ((,c :foreground ,name)))
+ `(counsel-key-binding ((,c :inherit modus-themes-key-binding)))
+ `(counsel-outline-default ((,c :foreground ,fg-main)))
+ `(counsel-variable-documentation ((,c :inherit font-lock-doc-face)))
;;;;; cperl-mode
- `(cperl-nonoverridable-face ((,class :foreground unspecified)))
- `(cperl-array-face ((,class :inherit font-lock-keyword-face)))
- `(cperl-hash-face ((,class :inherit font-lock-variable-name-face)))
+ `(cperl-nonoverridable-face ((,c :foreground unspecified)))
+ `(cperl-array-face ((,c :inherit font-lock-keyword-face)))
+ `(cperl-hash-face ((,c :inherit font-lock-variable-name-face)))
;;;;; crontab-mode
- `(crontab-minute ((,class :foreground ,blue-alt)))
- `(crontab-hour ((,class :foreground ,magenta-alt-other)))
- `(crontab-month-day ((,class :foreground ,magenta-alt)))
- `(crontab-month ((,class :foreground ,blue)))
- `(crontab-week-day ((,class :foreground ,cyan)))
- `(crontab-predefined ((,class :foreground ,blue-alt)))
+ `(crontab-minute ((,c :foreground ,string)))
+ `(crontab-hour ((,c :foreground ,keyword)))
+ `(crontab-month-day ((,c :foreground ,builtin)))
+ `(crontab-month ((,c :foreground ,constant)))
+ `(crontab-week-day ((,c :foreground ,variable)))
+ `(crontab-predefined ((,c :foreground ,string)))
;;;;; css-mode
- `(css-property ((,class :inherit font-lock-type-face)))
- `(css-selector ((,class :inherit font-lock-keyword-face)))
+ `(css-property ((,c :inherit font-lock-type-face)))
+ `(css-selector ((,c :inherit font-lock-keyword-face)))
;;;;; csv-mode
- `(csv-separator-face ((,class :foreground ,red-intense)))
+ `(csv-separator-face ((,c :foreground ,red-intense)))
;;;;; ctrlf
- `(ctrlf-highlight-active ((,class :inherit modus-themes-search-success)))
- `(ctrlf-highlight-line ((,class :inherit modus-themes-hl-line)))
- `(ctrlf-highlight-passive ((,class :inherit modus-themes-search-success-lazy)))
+ `(ctrlf-highlight-active ((,c :inherit modus-themes-search-current)))
+ `(ctrlf-highlight-line ((,c :background ,bg-hl-line :extend t)))
+ `(ctrlf-highlight-passive ((,c :inherit modus-themes-search-lazy)))
;;;;; custom (M-x customize)
- `(custom-button ((,class :inherit modus-themes-box-button)))
- `(custom-button-mouse ((,class :inherit (highlight custom-button))))
- `(custom-button-pressed ((,class :inherit modus-themes-box-button-pressed)))
- `(custom-changed ((,class :inherit modus-themes-subtle-cyan)))
- `(custom-comment ((,class :inherit shadow)))
- `(custom-comment-tag ((,class :background ,bg-alt :foreground ,yellow-alt-other)))
- `(custom-face-tag ((,class :inherit bold :foreground ,blue-intense)))
- `(custom-group-tag ((,class :inherit modus-themes-pseudo-header :foreground ,magenta-alt)))
- `(custom-group-tag-1 ((,class :inherit modus-themes-special-warm)))
- `(custom-invalid ((,class :inherit (modus-themes-intense-red bold))))
- `(custom-modified ((,class :inherit modus-themes-subtle-cyan)))
- `(custom-rogue ((,class :inherit modus-themes-refine-magenta)))
- `(custom-set ((,class :foreground ,blue-alt)))
- `(custom-state ((,class :foreground ,red-alt-faint)))
- `(custom-themed ((,class :inherit modus-themes-subtle-blue)))
- `(custom-variable-obsolete ((,class :inherit shadow)))
- `(custom-variable-tag ((,class :foreground ,cyan)))
-;;;;; dap-mode
- `(dap-mouse-eval-thing-face ((,class :box (:line-width -1 :color ,blue-active :style nil)
- :background ,bg-active :foreground ,fg-main)))
- `(dap-result-overlay-face ((,class :box (:line-width -1 :color ,bg-active :style nil)
- :background ,bg-active :foreground ,fg-main)))
- `(dap-ui-breakpoint-verified-fringe ((,class :inherit bold :foreground ,green-active)))
- `(dap-ui-compile-errline ((,class :inherit bold :foreground ,red-intense)))
- `(dap-ui-locals-scope-face ((,class :inherit bold :foreground ,magenta :underline t)))
- `(dap-ui-locals-variable-face ((,class :inherit bold :foreground ,cyan)))
- `(dap-ui-locals-variable-leaf-face ((,class :inherit italic :foreground ,cyan-alt-other)))
- `(dap-ui-marker-face ((,class :inherit modus-themes-subtle-blue)))
- `(dap-ui-sessions-stack-frame-face ((,class :inherit bold :foreground ,magenta-alt)))
- `(dap-ui-sessions-terminated-active-face ((,class :inherit bold :foreground ,fg-alt)))
- `(dap-ui-sessions-terminated-face ((,class :inherit shadow)))
+ `(custom-button ((,c :inherit modus-themes-button)))
+ `(custom-button-mouse ((,c :inherit (highlight custom-button))))
+ `(custom-button-pressed ((,c :inherit (secondary-selection custom-button))))
+ `(custom-changed ((,c :background ,bg-changed)))
+ `(custom-comment ((,c :inherit shadow)))
+ `(custom-comment-tag ((,c :inherit (bold shadow))))
+ `(custom-invalid ((,c :inherit error :strike-through t)))
+ `(custom-modified ((,c :inherit custom-changed)))
+ `(custom-rogue ((,c :inherit custom-invalid)))
+ `(custom-set ((,c :inherit success)))
+ `(custom-state ((,c :foreground ,warning)))
+ `(custom-themed ((,c :inherit custom-changed)))
+ `(custom-variable-obsolete ((,c :inherit shadow)))
+ `(custom-face-tag ((,c :inherit bold :foreground ,type)))
+ `(custom-group-tag ((,c :inherit bold :foreground ,builtin)))
+ `(custom-group-tag-1 ((,c :inherit bold :foreground ,constant)))
+ `(custom-variable-tag ((,c :inherit bold :foreground ,variable)))
+;;;;; dashboard
+ `(dashboard-heading ((,c :foreground ,name)))
+ `(dashboard-items-face (( ))) ; use the underlying style of all-the-icons
;;;;; deadgrep
- `(deadgrep-filename-face ((,class :inherit bold :foreground ,fg-special-cold)))
- `(deadgrep-match-face ((,class :inherit modus-themes-special-calm)))
- `(deadgrep-meta-face ((,class :inherit shadow)))
- `(deadgrep-regexp-metachar-face ((,class :inherit bold :foreground ,yellow-intense)))
- `(deadgrep-search-term-face ((,class :inherit bold :foreground ,green-intense)))
-;;;;; debbugs
- `(debbugs-gnu-archived ((,class :inverse-video t)))
- `(debbugs-gnu-done ((,class :inherit shadow)))
- `(debbugs-gnu-forwarded ((,class :foreground ,fg-special-warm)))
- `(debbugs-gnu-handled ((,class :foreground ,blue)))
- `(debbugs-gnu-new ((,class :foreground ,red)))
- `(debbugs-gnu-pending ((,class :foreground ,cyan)))
- `(debbugs-gnu-stale-1 ((,class :foreground ,yellow-nuanced-fg)))
- `(debbugs-gnu-stale-2 ((,class :foreground ,yellow)))
- `(debbugs-gnu-stale-3 ((,class :foreground ,yellow-alt)))
- `(debbugs-gnu-stale-4 ((,class :foreground ,yellow-alt-other)))
- `(debbugs-gnu-stale-5 ((,class :foreground ,red-alt)))
- `(debbugs-gnu-tagged ((,class :foreground ,magenta-alt)))
+ `(deadgrep-filename-face ((,c :inherit bold :foreground ,name)))
+ `(deadgrep-match-face ((,c :inherit match)))
+ `(deadgrep-meta-face ((,c :inherit shadow)))
+ `(deadgrep-regexp-metachar-face ((,c :inherit font-lock-regexp-grouping-construct)))
+ `(deadgrep-search-term-face ((,c :inherit success)))
;;;;; deft
- `(deft-filter-string-face ((,class :inherit bold :foreground ,blue)))
- `(deft-header-face ((,class :foreground ,fg-special-warm)))
- `(deft-separator-face ((,class :foreground "gray50")))
- `(deft-summary-face ((,class :inherit (shadow modus-themes-slant))))
- `(deft-time-face ((,class :foreground ,cyan)))
- `(deft-title-face ((,class :inherit bold)))
-;;;;; denote
- `(denote-faces-date ((,class :foreground ,cyan)))
- `(denote-faces-keywords ((,class :inherit modus-themes-bold :foreground ,magenta-alt)))
+ `(deft-filter-string-face ((,c :inherit success)))
+ `(deft-header-face ((,c :inherit shadow)))
+ `(deft-separator-face ((,c :foreground "gray50")))
+ `(deft-summary-face ((,c :inherit (shadow modus-themes-slant))))
+ `(deft-time-face ((,c :foreground ,date-common)))
+ `(deft-title-face ((,c :inherit bold)))
;;;;; devdocs
- `(devdocs-code-block ((,class :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t)))
+ `(devdocs-code-block ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t)))
;;;;; dictionary
- `(dictionary-button-face ((,class :inherit bold :foreground ,fg-special-cold)))
- `(dictionary-reference-face ((,class :inherit button)))
- `(dictionary-word-definition-face (()))
- `(dictionary-word-entry-face ((,class :inherit font-lock-comment-face)))
+ `(dictionary-button-face ((,c :inherit bold)))
+ `(dictionary-reference-face ((,c :inherit link)))
+ `(dictionary-word-definition-face (( )))
+ `(dictionary-word-entry-face ((,c :inherit font-lock-comment-face)))
;;;;; diff-hl
- `(diff-hl-change ((,class :inherit modus-themes-fringe-yellow)))
- `(diff-hl-delete ((,class :inherit modus-themes-fringe-red)))
- `(diff-hl-insert ((,class :inherit modus-themes-grue-background-active)))
- `(diff-hl-reverted-hunk-highlight ((,class :background ,fg-main :foreground ,bg-main)))
+ `(diff-hl-change ((,c :background ,bg-changed-fringe)))
+ `(diff-hl-delete ((,c :background ,bg-removed-fringe)))
+ `(diff-hl-insert ((,c :background ,bg-added-fringe)))
+ `(diff-hl-reverted-hunk-highlight ((,c :background ,fg-main :foreground ,bg-main)))
;;;;; diff-mode
- `(diff-added ((,class :inherit modus-themes-diff-added)))
- `(diff-changed ((,class :inherit modus-themes-diff-changed :extend t)))
- `(diff-changed-unspecified ((,class :inherit diff-changed)))
- `(diff-context ((,class ,@(unless (eq modus-themes-diffs 'bg-only) (list :foreground fg-unfocused)))))
- `(diff-error ((,class :inherit modus-themes-intense-red)))
- `(diff-file-header ((,class :inherit (bold diff-header))))
- `(diff-function ((,class :inherit modus-themes-diff-heading)))
- `(diff-header ((,class :foreground ,fg-main)))
- `(diff-hunk-header ((,class :inherit (bold modus-themes-diff-heading))))
- `(diff-index ((,class :inherit bold :foreground ,blue-alt)))
- `(diff-indicator-added ((,class :inherit (modus-themes-grue diff-added bold))))
- `(diff-indicator-changed ((,class :inherit (diff-changed bold) :foreground ,yellow)))
- `(diff-indicator-removed ((,class :inherit (diff-removed bold) :foreground ,red)))
- `(diff-nonexistent ((,class :inherit (modus-themes-neutral bold))))
- `(diff-refine-added ((,class :inherit modus-themes-diff-refine-added)))
- `(diff-refine-changed ((,class :inherit modus-themes-diff-refine-changed)))
- `(diff-refine-removed ((,class :inherit modus-themes-diff-refine-removed)))
- `(diff-removed ((,class :inherit modus-themes-diff-removed)))
+ `(diff-added ((,c :background ,bg-added :foreground ,fg-added)))
+ `(diff-changed ((,c :background ,bg-changed :foreground ,fg-changed :extend t)))
+ `(diff-changed-unspecified ((,c :inherit diff-changed)))
+ `(diff-removed ((,c :background ,bg-removed :foreground ,fg-removed)))
+ `(diff-refine-added ((,c :background ,bg-added-refine :foreground ,fg-added)))
+ `(diff-refine-changed ((,c :background ,bg-changed-refine :foreground ,fg-changed)))
+ `(diff-refine-removed ((,c :background ,bg-removed-refine :foreground ,fg-removed)))
+ `(diff-indicator-added ((,c :inherit diff-added :foreground ,fg-added-intense)))
+ `(diff-indicator-changed ((,c :inherit diff-changed :foreground ,fg-changed-intense)))
+ `(diff-indicator-removed ((,c :inherit diff-removed :foreground ,fg-removed-intense)))
+ `(diff-context (( )))
+ `(diff-error ((,c :inherit error)))
+ `(diff-file-header ((,c :inherit bold)))
+ `(diff-function ((,c :background ,bg-inactive)))
+ `(diff-header (( )))
+ `(diff-hunk-header ((,c :inherit bold :background ,bg-inactive)))
+ `(diff-index ((,c :inherit italic)))
+ `(diff-nonexistent ((,c :inherit bold)))
;;;;; dim-autoload
- `(dim-autoload-cookie-line ((,class :inherit font-lock-comment-face)))
-;;;;; dir-treeview
- `(dir-treeview-archive-face ((,class :foreground ,fg-special-warm)))
- `(dir-treeview-archive-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,yellow)))
- `(dir-treeview-audio-face ((,class :foreground ,magenta)))
- `(dir-treeview-audio-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,magenta-alt)))
- `(dir-treeview-control-face ((,class :inherit shadow)))
- `(dir-treeview-control-mouse-face ((,class :inherit highlight)))
- `(dir-treeview-default-icon-face ((,class :inherit (shadow bold) :family "Font Awesome")))
- `(dir-treeview-default-filename-face ((,class :foreground ,fg-main)))
- `(dir-treeview-directory-face ((,class :foreground ,blue)))
- `(dir-treeview-directory-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,blue-alt)))
- `(dir-treeview-executable-face ((,class :foreground ,red-alt)))
- `(dir-treeview-executable-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,red-alt-other)))
- `(dir-treeview-image-face ((,class :foreground ,green-alt-other)))
- `(dir-treeview-image-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,green-alt)))
- `(dir-treeview-indent-face ((,class :inherit shadow)))
- `(dir-treeview-label-mouse-face ((,class :inherit highlight)))
- `(dir-treeview-start-dir-face ((,class :inherit modus-themes-pseudo-header)))
- `(dir-treeview-symlink-face ((,class :inherit modus-themes-link-symlink)))
- `(dir-treeview-video-face ((,class :foreground ,magenta-alt-other)))
- `(dir-treeview-video-icon-face ((,class :inherit dir-treeview-default-icon-face :foreground ,magenta-alt-other)))
+ `(dim-autoload-cookie-line ((,c :inherit font-lock-comment-face)))
;;;;; dired
- `(dired-broken-symlink ((,class :inherit modus-themes-link-broken)))
- `(dired-directory ((,class :foreground ,blue)))
- `(dired-flagged ((,class :inherit modus-themes-mark-del)))
- `(dired-header ((,class :inherit modus-themes-pseudo-header)))
- `(dired-ignored ((,class :inherit shadow)))
- `(dired-mark ((,class :inherit modus-themes-mark-symbol)))
- `(dired-marked ((,class :inherit modus-themes-mark-sel)))
- `(dired-perm-write ((,class :foreground ,fg-special-warm)))
- `(dired-symlink ((,class :inherit modus-themes-link-symlink)))
- `(dired-warning ((,class :inherit bold :foreground ,yellow)))
+ `(dired-broken-symlink ((,c :inherit button :foreground ,err)))
+ `(dired-directory ((,c :foreground ,accent-0)))
+ `(dired-flagged ((,c :inherit modus-themes-mark-del)))
+ `(dired-header ((,c :inherit bold)))
+ `(dired-ignored ((,c :inherit shadow)))
+ `(dired-mark ((,c :inherit bold)))
+ `(dired-marked ((,c :inherit modus-themes-mark-sel)))
+ `(dired-perm-write ((,c :inherit shadow)))
+ `(dired-symlink ((,c :inherit button :background ,bg-link-symbolic :foreground ,fg-link-symbolic :underline ,underline-link-symbolic)))
+ `(dired-warning ((,c :inherit warning)))
;;;;; dired-async
- `(dired-async-failures ((,class :inherit bold :foreground ,red-active)))
- `(dired-async-message ((,class :inherit bold :foreground ,blue-active)))
- `(dired-async-mode-message ((,class :inherit bold :foreground ,cyan-active)))
+ `(dired-async-failures ((,c :inherit error)))
+ `(dired-async-message ((,c :inherit bold)))
+ `(dired-async-mode-message ((,c :inherit bold)))
;;;;; dired-git
- `(dired-git-branch-else ((,class :inherit bold :foreground ,magenta-alt)))
- `(dired-git-branch-master ((,class :inherit bold :foreground ,magenta-alt-other)))
+ `(dired-git-branch-else ((,c :inherit bold :foreground ,accent-0)))
+ `(dired-git-branch-master ((,c :inherit bold :foreground ,accent-1)))
;;;;; dired-git-info
- `(dgi-commit-message-face ((,class :foreground ,cyan-alt-other)))
+ `(dgi-commit-message-face ((,c :foreground ,docstring)))
;;;;; dired-narrow
- `(dired-narrow-blink ((,class :inherit (modus-themes-subtle-cyan bold))))
+ `(dired-narrow-blink ((,c :inherit (modus-themes-subtle-cyan bold))))
;;;;; dired-subtree
;; remove backgrounds from dired-subtree faces, else they break
;; dired-{flagged,marked} and any other face that sets a background
@@ -4974,739 +2064,410 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(dired-subtree-depth-5-face (()))
`(dired-subtree-depth-6-face (()))
;;;;; diredfl
- `(diredfl-autofile-name ((,class :inherit modus-themes-special-cold)))
- `(diredfl-compressed-file-name ((,class :foreground ,fg-special-warm)))
- `(diredfl-compressed-file-suffix ((,class :foreground ,red-alt)))
- `(diredfl-date-time ((,class :foreground ,cyan)))
- `(diredfl-deletion ((,class :inherit modus-themes-mark-del)))
- `(diredfl-deletion-file-name ((,class :inherit modus-themes-mark-del)))
- `(diredfl-dir-heading ((,class :inherit modus-themes-pseudo-header)))
- `(diredfl-dir-name ((,class :inherit dired-directory)))
- `(diredfl-dir-priv ((,class :foreground ,blue-alt)))
- `(diredfl-exec-priv ((,class :foreground ,magenta-alt)))
- `(diredfl-executable-tag ((,class :foreground ,magenta-alt)))
- `(diredfl-file-name ((,class :foreground ,fg-main)))
- `(diredfl-file-suffix ((,class :foreground ,magenta-alt-other)))
- `(diredfl-flag-mark ((,class :inherit modus-themes-mark-sel)))
- `(diredfl-flag-mark-line ((,class :inherit modus-themes-mark-sel)))
- `(diredfl-ignored-file-name ((,class :inherit shadow)))
- `(diredfl-link-priv ((,class :foreground ,blue-alt-other)))
- `(diredfl-no-priv ((,class :foreground "gray50")))
- `(diredfl-number ((,class :foreground ,cyan-alt-other-faint)))
- `(diredfl-other-priv ((,class :foreground ,yellow)))
- `(diredfl-rare-priv ((,class :foreground ,red)))
- `(diredfl-read-priv ((,class :foreground ,fg-main)))
- `(diredfl-symlink ((,class :inherit dired-symlink)))
- `(diredfl-tagged-autofile-name ((,class :inherit modus-themes-refine-magenta)))
- `(diredfl-write-priv ((,class :foreground ,cyan)))
-;;;;; dired+
- `(diredp-autofile-name ((,class :inherit modus-themes-special-cold)))
- `(diredp-compressed-file-name ((,class :foreground ,fg-special-warm)))
- `(diredp-compressed-file-suffix ((,class :foreground ,red-alt)))
- `(diredp-date-time ((,class :foreground ,cyan)))
- `(diredp-deletion ((,class :inherit modus-themes-mark-del)))
- `(diredp-deletion-file-name ((,class :inherit modus-themes-mark-del)))
- `(diredp-dir-heading ((,class :inherit modus-themes-pseudo-header)))
- `(diredp-dir-name ((,class :inherit dired-directory)))
- `(diredp-dir-priv ((,class :foreground ,blue-alt)))
- `(diredp-exec-priv ((,class :foreground ,magenta-alt)))
- `(diredp-executable-tag ((,class :foreground ,magenta-alt)))
- `(diredp-file-name ((,class :foreground ,fg-main)))
- `(diredp-file-suffix ((,class :foreground ,magenta-alt-other)))
- `(diredp-flag-mark ((,class :inherit modus-themes-mark-sel)))
- `(diredp-flag-mark-line ((,class :inherit modus-themes-mark-sel)))
- `(diredp-ignored-file-name ((,class :inherit shadow)))
- `(diredp-link-priv ((,class :foreground ,blue-alt-other)))
- `(diredp-mode-line-flagged ((,class :foreground ,red-active)))
- `(diredp-mode-line-marked ((,class :foreground ,green-active)))
- `(diredp-no-priv ((,class :foreground "gray50")))
- `(diredp-number ((,class :foreground ,cyan-alt-other-faint)))
- `(diredp-omit-file-name ((,class :inherit shadow :strike-through t)))
- `(diredp-other-priv ((,class :foreground ,yellow)))
- `(diredp-rare-priv ((,class :foreground ,red)))
- `(diredp-read-priv ((,class :foreground ,fg-main)))
- `(diredp-symlink ((,class :inherit dired-symlink)))
- `(diredp-tagged-autofile-name ((,class :inherit modus-themes-refine-magenta)))
- `(diredp-write-priv ((,class :foreground ,cyan)))
+ `(diredfl-autofile-name ((,c :background ,bg-inactive)))
+ `(diredfl-compressed-file-name ((,c :foreground ,warning)))
+ `(diredfl-compressed-file-suffix ((,c :foreground ,err)))
+ `(diredfl-date-time ((,c :foreground ,date-common)))
+ `(diredfl-deletion ((,c :inherit dired-flagged)))
+ `(diredfl-deletion-file-name ((,c :inherit diredfl-deletion)))
+ `(diredfl-dir-heading ((,c :inherit bold)))
+ `(diredfl-dir-name ((,c :inherit dired-directory)))
+ `(diredfl-dir-priv ((,c :inherit dired-directory)))
+ `(diredfl-exec-priv ((,c :foreground ,accent-1)))
+ `(diredfl-executable-tag ((,c :inherit diredfl-exec-priv)))
+ `(diredfl-file-name ((,c :foreground ,fg-main)))
+ `(diredfl-file-suffix ((,c :foreground ,variable)))
+ `(diredfl-flag-mark ((,c :inherit dired-marked)))
+ `(diredfl-flag-mark-line ((,c :inherit dired-marked)))
+ `(diredfl-ignored-file-name ((,c :inherit shadow)))
+ `(diredfl-link-priv ((,c :foreground ,fg-link)))
+ `(diredfl-no-priv ((,c :inherit shadow)))
+ `(diredfl-number ((,c :inherit shadow)))
+ `(diredfl-other-priv ((,c :foreground ,accent-2)))
+ `(diredfl-rare-priv ((,c :foreground ,accent-3)))
+ `(diredfl-read-priv ((,c :foreground ,fg-main)))
+ `(diredfl-symlink ((,c :inherit dired-symlink)))
+ `(diredfl-tagged-autofile-name ((,c :inherit (diredfl-autofile-name dired-marked))))
+ `(diredfl-write-priv ((,c :foreground ,accent-0)))
;;;;; display-fill-column-indicator-mode
- `(fill-column-indicator ((,class :height 1 :background ,bg-region :foreground ,bg-region)))
+ `(fill-column-indicator ((,c :height 1 :background ,bg-active :foreground ,bg-active)))
;;;;; doom-modeline
- `(doom-modeline-bar ((,class :inherit modus-themes-active-blue)))
- `(doom-modeline-bar-inactive ((,class :background ,fg-inactive :foreground ,bg-main)))
- `(doom-modeline-battery-charging ((,class :foreground ,green-active)))
- `(doom-modeline-battery-critical ((,class :inherit bold :foreground ,red-active)))
- `(doom-modeline-battery-error ((,class :inherit bold :box (:line-width -2)
- :foreground ,red-active)))
- `(doom-modeline-battery-full ((,class :foreground ,blue-active)))
- `(doom-modeline-battery-normal ((,class :foreground ,fg-active)))
- `(doom-modeline-battery-warning ((,class :inherit bold :foreground ,yellow-active)))
- `(doom-modeline-buffer-file ((,class :inherit bold :foreground ,fg-active)))
- `(doom-modeline-buffer-major-mode ((,class :inherit bold :foreground ,cyan-active)))
- `(doom-modeline-buffer-minor-mode ((,class :foreground ,fg-inactive)))
- `(doom-modeline-buffer-modified ((,class :inherit bold :foreground ,magenta-active)))
- `(doom-modeline-buffer-path ((,class :inherit bold :foreground ,fg-active)))
- `(doom-modeline-debug ((,class :inherit bold :foreground ,yellow-active)))
- `(doom-modeline-debug-visual ((,class :inherit bold :foreground ,red-active)))
- `(doom-modeline-evil-emacs-state ((,class :inherit bold :foreground ,magenta-active)))
- `(doom-modeline-evil-insert-state ((,class :inherit bold :foreground ,green-active)))
- `(doom-modeline-evil-motion-state ((,class :inherit bold :foreground ,fg-inactive)))
- `(doom-modeline-evil-normal-state ((,class :inherit bold :foreground ,fg-active)))
- `(doom-modeline-evil-operator-state ((,class :inherit bold :foreground ,blue-active)))
- `(doom-modeline-evil-replace-state ((,class :inherit bold :foreground ,red-active)))
- `(doom-modeline-evil-visual-state ((,class :inherit bold :foreground ,cyan-active)))
- `(doom-modeline-highlight ((,class :inherit bold :foreground ,blue-active)))
- `(doom-modeline-host ((,class :inherit italic)))
- `(doom-modeline-info ((,class :foreground ,green-active)))
- `(doom-modeline-lsp-error ((,class :inherit bold :foreground ,red-active)))
- `(doom-modeline-lsp-success ((,class :inherit (bold modus-themes-grue-active))))
- `(doom-modeline-lsp-warning ((,class :inherit bold :foreground ,yellow-active)))
- `(doom-modeline-panel ((,class :inherit modus-themes-active-blue)))
- `(doom-modeline-persp-buffer-not-in-persp ((,class :inherit italic :foreground ,yellow-active)))
- `(doom-modeline-persp-name ((,class :foreground ,fg-active)))
- `(doom-modeline-project-dir ((,class :inherit bold :foreground ,blue-active)))
- `(doom-modeline-project-parent-dir ((,class :foreground ,blue-active)))
- `(doom-modeline-project-root-dir ((,class :foreground ,fg-active)))
- `(doom-modeline-unread-number ((,class :inherit italic :foreground ,fg-active)))
- `(doom-modeline-urgent ((,class :inherit bold :foreground ,red-active)))
- `(doom-modeline-warning ((,class :inherit bold :foreground ,yellow-active)))
-;;;;; easy-jekyll
- `(easy-jekyll-help-face ((,class :background ,bg-dim :foreground ,blue-alt-other)))
-;;;;; ebdb
- `(ebdb-address-default ((,class :foreground ,fg-special-calm)))
- `(ebdb-defunct ((,class :inherit shadow)))
- `(ebdb-field-hidden ((,class :foreground ,magenta)))
- `(ebdb-label ((,class :foreground ,cyan-alt-other)))
- `(ebdb-mail-default ((,class :foreground ,fg-main)))
- `(ebdb-mail-primary ((,class :foreground ,magenta-alt)))
- `(ebdb-marked ((,class :background ,cyan-intense-bg)))
- `(ebdb-organization-name ((,class :foreground ,red-alt-other)))
- `(ebdb-person-name ((,class :foreground ,magenta-alt-other)))
- `(ebdb-phone-default ((,class :foreground ,cyan)))
- `(eieio-custom-slot-tag-face ((,class :foreground ,red-alt)))
+ `(doom-modeline-bar ((,c :background ,blue)))
+ `(doom-modeline-bar-inactive ((,c :background ,border)))
+ `(doom-modeline-battery-charging ((,c :foreground ,modeline-info)))
+ `(doom-modeline-battery-critical ((,c :underline t :foreground ,modeline-err)))
+ `(doom-modeline-battery-error ((,c :underline t :foreground ,modeline-err)))
+ `(doom-modeline-battery-full (( )))
+ `(doom-modeline-battery-warning ((,c :inherit warning)))
+ `(doom-modeline-buffer-file ((,c :inherit bold)))
+ `(doom-modeline-buffer-major-mode (( )))
+ `(doom-modeline-buffer-minor-mode (( )))
+ `(doom-modeline-buffer-modified ((,c :foreground ,modeline-err)))
+ `(doom-modeline-buffer-path (( )))
+ `(doom-modeline-evil-emacs-state ((,c :inherit italic)))
+ `(doom-modeline-evil-insert-state ((,c :foreground ,modeline-info)))
+ `(doom-modeline-evil-motion-state (( )))
+ `(doom-modeline-evil-normal-state (( )))
+ `(doom-modeline-evil-operator-state ((,c :inherit bold)))
+ `(doom-modeline-evil-replace-state ((,c :inherit error)))
+ `(doom-modeline-evil-visual-state ((,c :inherit warning)))
+ `(doom-modeline-info ((,c :inherit success)))
+ `(doom-modeline-input-method (( )))
+ `(doom-modeline-lsp-error ((,c :inherit bold-italic)))
+ `(doom-modeline-lsp-running (( )))
+ `(doom-modeline-lsp-success ((,c :inherit success)))
+ `(doom-modeline-lsp-warning ((,c :inherit warning)))
+ `(doom-modeline-notification ((,c :inherit error)))
+ `(doom-modeline-project-dir (( )))
+ `(doom-modeline-project-parent-dir (( )))
+ `(doom-modeline-project-root-dir (( )))
+ `(doom-modeline-repl-success ((,c :inherit success)))
+ `(doom-modeline-repl-warning ((,c :inherit warning)))
+ `(doom-modeline-time (( )))
+ `(doom-modeline-urgent ((,c :inherit bold-italic :foreground ,modeline-err)))
+ `(doom-modeline-warning ((,c :inherit warning)))
;;;;; ediff
- `(ediff-current-diff-A ((,class :inherit modus-themes-diff-removed)))
- `(ediff-current-diff-Ancestor ((,class ,@(modus-themes--diff
- bg-special-cold fg-special-cold
- blue-nuanced-bg blue))))
- `(ediff-current-diff-B ((,class :inherit modus-themes-diff-added)))
- `(ediff-current-diff-C ((,class :inherit modus-themes-diff-changed)))
- `(ediff-even-diff-A ((,class :background ,bg-alt)))
- `(ediff-even-diff-Ancestor ((,class :background ,bg-alt)))
- `(ediff-even-diff-B ((,class :background ,bg-alt)))
- `(ediff-even-diff-C ((,class :background ,bg-alt)))
- `(ediff-fine-diff-A ((,class :inherit modus-themes-diff-refine-removed)))
- `(ediff-fine-diff-Ancestor ((,class :inherit modus-themes-refine-cyan)))
- `(ediff-fine-diff-B ((,class :inherit modus-themes-diff-refine-added)))
- `(ediff-fine-diff-C ((,class :inherit modus-themes-diff-refine-changed)))
- `(ediff-odd-diff-A ((,class :inherit ediff-even-diff-A)))
- `(ediff-odd-diff-Ancestor ((,class :inherit ediff-even-diff-Ancestor)))
- `(ediff-odd-diff-B ((,class :inherit ediff-even-diff-B)))
- `(ediff-odd-diff-C ((,class :inherit ediff-even-diff-C)))
+ `(ediff-current-diff-A ((,c :background ,bg-removed :foreground ,fg-removed)))
+ `(ediff-current-diff-Ancestor ((,c :background ,bg-region))) ; TODO 2022-11-29: Needs review
+ `(ediff-current-diff-B ((,c :background ,bg-added :foreground ,fg-added)))
+ `(ediff-current-diff-C ((,c :background ,bg-changed :foreground ,fg-changed)))
+ `(ediff-even-diff-A ((,c :background ,bg-diff-context)))
+ `(ediff-even-diff-Ancestor ((,c :background ,bg-diff-context)))
+ `(ediff-even-diff-B ((,c :background ,bg-diff-context)))
+ `(ediff-even-diff-C ((,c :background ,bg-diff-context)))
+ `(ediff-fine-diff-A ((,c :background ,bg-removed-refine :foreground ,fg-removed)))
+ `(ediff-fine-diff-Ancestor ((,c :inherit modus-themes-subtle-cyan)))
+ `(ediff-fine-diff-B ((,c :background ,bg-added-refine :foreground ,fg-added)))
+ `(ediff-fine-diff-C ((,c :background ,bg-changed-refine :foreground ,fg-changed)))
+ `(ediff-odd-diff-A ((,c :inherit ediff-even-diff-A)))
+ `(ediff-odd-diff-Ancestor ((,c :inherit ediff-even-diff-Ancestor)))
+ `(ediff-odd-diff-B ((,c :inherit ediff-even-diff-B)))
+ `(ediff-odd-diff-C ((,c :inherit ediff-even-diff-C)))
;;;;; ein (Emacs IPython Notebook)
- `(ein:basecell-input-area-face ((,class :background ,bg-dim :extend t)))
+ `(ein:basecell-input-area-face ((,c :background ,bg-dim :extend t)))
`(ein:cell-output-area (( )))
- `(ein:cell-output-area-error ((,class :background ,red-nuanced-bg :extend t)))
- `(ein:cell-output-stderr ((,class :background ,red-nuanced-bg :extend t)))
+ `(ein:cell-output-area-error ((,c :background ,bg-removed :extend t)))
+ `(ein:cell-output-stderr ((,c :background ,bg-removed :extend t)))
`(ein:markdowncell-input-area-face (( )))
- `(ein:notification-tab-normal ((,class :underline t)))
+ `(ein:notification-tab-normal ((,c :underline t)))
;;;;; eglot
- `(eglot-mode-line ((,class :inherit modus-themes-bold :foreground ,magenta-active)))
+ `(eglot-mode-line ((,c :inherit modus-themes-bold :foreground ,modeline-info)))
;;;;; el-search
- `(el-search-highlight-in-prompt-face ((,class :inherit bold :foreground ,magenta-alt)))
- `(el-search-match ((,class :inherit modus-themes-search-success)))
- `(el-search-other-match ((,class :inherit modus-themes-special-mild)))
- `(el-search-occur-match ((,class :inherit modus-themes-special-calm)))
+ `(el-search-highlight-in-prompt-face ((,c :inherit italic)))
+ `(el-search-match ((,c :inherit modus-themes-search-current)))
+ `(el-search-other-match ((,c :inherit modus-themes-search-lazy)))
+ `(el-search-occur-match ((,c :inherit match)))
;;;;; eldoc
;; NOTE: see https://github.com/purcell/package-lint/issues/187
- (list 'eldoc-highlight-function-argument `((,class :inherit bold
- :background ,yellow-nuanced-bg
- :foreground ,yellow-alt-other)))
+ (list 'eldoc-highlight-function-argument `((,c :inherit modus-themes-mark-alt)))
;;;;; eldoc-box
- `(eldoc-box-body ((,class :background ,bg-alt :foreground ,fg-main)))
- `(eldoc-box-border ((,class :background ,fg-alt)))
+ `(eldoc-box-body ((,c :background ,bg-dim :foreground ,fg-main)))
+ `(eldoc-box-border ((,c :background ,border)))
;;;;; elfeed
- `(elfeed-log-date-face ((,class :inherit elfeed-search-date-face)))
- `(elfeed-log-debug-level-face ((,class :inherit elfeed-search-filter-face)))
- `(elfeed-log-error-level-face ((,class :inherit error)))
- `(elfeed-log-info-level-face ((,class :inherit success)))
- `(elfeed-log-warn-level-face ((,class :inherit warning)))
- `(elfeed-search-date-face ((,class :foreground ,cyan)))
- `(elfeed-search-feed-face ((,class :foreground ,blue-faint)))
- `(elfeed-search-filter-face ((,class :inherit bold :foreground ,magenta-active)))
- `(elfeed-search-last-update-face ((,class :inherit bold :foreground ,cyan-active)))
- `(elfeed-search-tag-face ((,class :foreground ,magenta-alt-faint)))
- `(elfeed-search-title-face ((,class :foreground ,fg-dim)))
- `(elfeed-search-unread-count-face ((,class :inherit bold :foreground ,fg-active)))
- `(elfeed-search-unread-title-face ((,class :inherit bold :foreground ,fg-main)))
+ `(elfeed-log-date-face ((,c :inherit elfeed-search-date-face)))
+ `(elfeed-log-debug-level-face ((,c :inherit elfeed-search-filter-face)))
+ `(elfeed-log-error-level-face ((,c :inherit error)))
+ `(elfeed-log-info-level-face ((,c :inherit success)))
+ `(elfeed-log-warn-level-face ((,c :inherit warning)))
+ `(elfeed-search-date-face ((,c :foreground ,date-common)))
+ `(elfeed-search-feed-face ((,c :foreground ,accent-1)))
+ `(elfeed-search-filter-face ((,c :inherit bold)))
+ `(elfeed-search-last-update-face ((,c :inherit bold :foreground ,date-common)))
+ `(elfeed-search-tag-face ((,c :foreground ,accent-0)))
+ `(elfeed-search-title-face ((,c :foreground ,fg-dim)))
+ `(elfeed-search-unread-count-face (( )))
+ `(elfeed-search-unread-title-face ((,c :inherit bold :foreground ,fg-main)))
;;;;; elfeed-score
- `(elfeed-score-date-face ((,class :foreground ,blue)))
- `(elfeed-score-debug-level-face ((,class :foreground ,magenta-alt-other)))
- `(elfeed-score-error-level-face ((,class :foreground ,red)))
- `(elfeed-score-info-level-face ((,class :foreground ,cyan)))
- `(elfeed-score-warn-level-face ((,class :foreground ,yellow)))
+ `(elfeed-score-date-face ((,c :foreground ,date-common)))
+ `(elfeed-score-debug-level-face ((,c :inherit bold)))
+ `(elfeed-score-error-level-face ((,c :inherit error)))
+ `(elfeed-score-info-level-face ((,c :inherit success)))
+ `(elfeed-score-warn-level-face ((,c :inherit warning)))
;;;;; elpher
- `(elpher-gemini-heading1 ((,class :inherit modus-themes-heading-1)))
- `(elpher-gemini-heading2 ((,class :inherit modus-themes-heading-2)))
- `(elpher-gemini-heading3 ((,class :inherit modus-themes-heading-3)))
+ `(elpher-gemini-heading1 ((,c :inherit modus-themes-heading-1)))
+ `(elpher-gemini-heading2 ((,c :inherit modus-themes-heading-2)))
+ `(elpher-gemini-heading3 ((,c :inherit modus-themes-heading-3)))
;;;;; embark
- `(embark-keybinding ((,class :inherit modus-themes-key-binding)))
- `(embark-collect-marked ((,class :inherit modus-themes-mark-sel)))
+ `(embark-keybinding ((,c :inherit modus-themes-key-binding)))
+ `(embark-collect-marked ((,c :inherit modus-themes-mark-sel)))
;;;;; ement (ement.el)
- `(ement-room-fully-read-marker ((,class :background ,cyan-subtle-bg)))
- `(ement-room-membership ((,class :inherit shadow)))
- `(ement-room-mention ((,class :background ,bg-hl-alt-intense)))
- `(ement-room-name ((,class :inherit bold)))
- `(ement-room-reactions ((,class :inherit shadow)))
- `(ement-room-read-receipt-marker ((,class :background ,yellow-subtle-bg)))
- `(ement-room-self ((,class :inherit bold :foreground ,magenta)))
- `(ement-room-self-message ((,class :foreground ,magenta-faint)))
- `(ement-room-timestamp ((,class :inherit shadow)))
- `(ement-room-timestamp-header ((,class :inherit bold :foreground ,cyan)))
- `(ement-room-user ((,class :inherit bold :foreground ,blue)))
+ `(ement-room-fully-read-marker ((,c :inherit success)))
+ `(ement-room-membership ((,c :inherit shadow)))
+ `(ement-room-mention ((,c :inherit highlight)))
+ `(ement-room-name ((,c :inherit bold)))
+ `(ement-room-reactions ((,c :inherit shadow)))
+ `(ement-room-read-receipt-marker ((,c :inherit match)))
+ `(ement-room-self ((,c :inherit bold :foreground ,accent-1)))
+ `(ement-room-self-message ((,c :foreground ,fg-alt)))
+ `(ement-room-timestamp ((,c :inherit shadow)))
+ `(ement-room-timestamp-header ((,c :inherit bold :foreground ,date-common)))
+ `(ement-room-user ((,c :inherit bold :foreground ,accent-0)))
;;;;; emms
- `(emms-browser-album-face ((,class :foreground ,magenta-alt-other)))
- `(emms-browser-artist-face ((,class :foreground ,cyan)))
- `(emms-browser-composer-face ((,class :foreground ,magenta-alt)))
- `(emms-browser-performer-face ((,class :inherit emms-browser-artist-face)))
- `(emms-browser-track-face ((,class :inherit emms-playlist-track-face)))
- `(emms-browser-year/genre-face ((,class :foreground ,cyan-alt-other)))
- `(emms-playlist-track-face ((,class :foreground ,blue-alt)))
- `(emms-playlist-selected-face ((,class :inherit bold :foreground ,blue-alt-other)))
- `(emms-metaplaylist-mode-current-face ((,class :inherit emms-playlist-selected-face)))
- `(emms-metaplaylist-mode-face ((,class :foreground ,cyan)))
+ `(emms-browser-album-face ((,c :foreground ,keyword)))
+ `(emms-browser-artist-face ((,c :foreground ,variable)))
+ `(emms-browser-composer-face ((,c :foreground ,builtin)))
+ `(emms-browser-performer-face ((,c :inherit emms-browser-artist-face)))
+ `(emms-browser-track-face ((,c :inherit emms-playlist-track-face)))
+ `(emms-browser-year/genre-face ((,c :foreground ,type)))
+ `(emms-playlist-track-face ((,c :foreground ,string)))
+ `(emms-playlist-selected-face ((,c :inherit bold :foreground ,constant)))
+ `(emms-metaplaylist-mode-current-face ((,c :inherit emms-playlist-selected-face)))
+ `(emms-metaplaylist-mode-face ((,c :foreground ,variable)))
;;;;; enh-ruby-mode (enhanced-ruby-mode)
- `(enh-ruby-heredoc-delimiter-face ((,class :inherit font-lock-constant-face)))
- `(enh-ruby-op-face ((,class :foreground ,fg-main)))
- `(enh-ruby-regexp-delimiter-face ((,class :inherit font-lock-regexp-grouping-construct)))
- `(enh-ruby-regexp-face ((,class :inherit font-lock-string-face)))
- `(enh-ruby-string-delimiter-face ((,class :inherit font-lock-string-face)))
- `(erm-syn-errline ((,class :inherit modus-themes-lang-error)))
- `(erm-syn-warnline ((,class :inherit modus-themes-lang-warning)))
+ `(enh-ruby-heredoc-delimiter-face ((,c :inherit font-lock-constant-face)))
+ `(enh-ruby-op-face ((,c :foreground ,fg-main)))
+ `(enh-ruby-regexp-delimiter-face ((,c :inherit font-lock-regexp-grouping-construct)))
+ `(enh-ruby-regexp-face ((,c :inherit font-lock-string-face)))
+ `(enh-ruby-string-delimiter-face ((,c :inherit font-lock-string-face)))
+ `(erm-syn-errline ((,c :inherit modus-themes-lang-error)))
+ `(erm-syn-warnline ((,c :inherit modus-themes-lang-warning)))
;;;;; epa
- `(epa-field-body ((,class :foreground ,fg-main)))
- `(epa-field-name ((,class :inherit bold :foreground ,fg-dim)))
- `(epa-mark ((,class :inherit bold :foreground ,magenta)))
- `(epa-string ((,class :foreground ,blue-alt)))
- `(epa-validity-disabled ((,class :foreground ,red)))
- `(epa-validity-high ((,class :inherit bold :foreground ,cyan)))
- `(epa-validity-low ((,class :inherit shadow)))
- `(epa-validity-medium ((,class :foreground ,green-alt)))
-;;;;; equake
- `(equake-buffer-face ((,class :background ,bg-main :foreground ,fg-main)))
- `(equake-shell-type-eshell ((,class :background ,bg-inactive :foreground ,blue-active)))
- `(equake-shell-type-rash ((,class :background ,bg-inactive :foreground ,red-active)))
- `(equake-shell-type-shell ((,class :background ,bg-inactive :foreground ,cyan-active)))
- `(equake-shell-type-term ((,class :background ,bg-inactive :foreground ,yellow-active)))
- `(equake-shell-type-vterm ((,class :background ,bg-inactive :foreground ,magenta-active)))
- `(equake-tab-active ((,class :background ,fg-alt :foreground ,bg-alt)))
- `(equake-tab-inactive ((,class :foreground ,fg-inactive)))
+ `(epa-field-body (( )))
+ `(epa-field-name ((,c :inherit bold :foreground ,fg-dim)))
+ `(epa-mark ((,c :inherit bold)))
+ `(epa-string ((,c :foreground ,string)))
+ `(epa-validity-disabled ((,c :foreground ,err)))
+ `(epa-validity-high ((,c :inherit success)))
+ `(epa-validity-low ((,c :inherit shadow)))
+ `(epa-validity-medium ((,c :foreground ,info)))
;;;;; erc
- `(erc-action-face ((,class :foreground ,cyan-alt-other)))
- `(erc-bold-face ((,class :inherit bold)))
- `(erc-button ((,class :inherit button)))
- `(erc-command-indicator-face ((,class :inherit bold :foreground ,cyan-alt)))
- `(erc-current-nick-face ((,class :inherit bold :foreground ,red-alt)))
- `(erc-dangerous-host-face ((,class :inherit modus-themes-intense-red)))
- `(erc-direct-msg-face ((,class :foreground ,fg-special-warm)))
- `(erc-error-face ((,class :inherit bold :foreground ,red)))
- `(erc-fool-face ((,class :inherit shadow)))
- `(erc-header-line ((,class :background ,bg-header :foreground ,fg-header)))
- `(erc-input-face ((,class :foreground ,magenta)))
- `(erc-inverse-face ((,class :inherit erc-default-face :inverse-video t)))
- `(erc-keyword-face ((,class :inherit bold :foreground ,magenta-alt-other)))
- `(erc-my-nick-face ((,class :inherit bold :foreground ,magenta)))
- `(erc-my-nick-prefix-face ((,class :inherit erc-my-nick-face)))
- `(erc-nick-default-face ((,class :inherit bold :foreground ,blue)))
- `(erc-nick-msg-face ((,class :inherit warning)))
- `(erc-nick-prefix-face ((,class :inherit erc-nick-default-face)))
- `(erc-notice-face ((,class :inherit font-lock-comment-face)))
- `(erc-pal-face ((,class :inherit bold :foreground ,magenta-alt)))
- `(erc-prompt-face ((,class :inherit modus-themes-prompt)))
- `(erc-timestamp-face ((,class :foreground ,cyan)))
- `(erc-underline-face ((,class :underline t)))
- `(bg:erc-color-face0 ((,class :background "white")))
- `(bg:erc-color-face1 ((,class :background "black")))
- `(bg:erc-color-face10 ((,class :background ,cyan-subtle-bg)))
- `(bg:erc-color-face11 ((,class :background ,cyan-intense-bg)))
- `(bg:erc-color-face12 ((,class :background ,blue-subtle-bg)))
- `(bg:erc-color-face13 ((,class :background ,magenta-subtle-bg)))
- `(bg:erc-color-face14 ((,class :background "gray60")))
- `(bg:erc-color-face15 ((,class :background "gray80")))
- `(bg:erc-color-face2 ((,class :background ,blue-intense-bg)))
- `(bg:erc-color-face3 ((,class :background ,green-intense-bg)))
- `(bg:erc-color-face4 ((,class :background ,red-subtle-bg)))
- `(bg:erc-color-face5 ((,class :background ,red-intense-bg)))
- `(bg:erc-color-face6 ((,class :background ,magenta-refine-bg)))
- `(bg:erc-color-face7 ((,class :background ,yellow-subtle-bg)))
- `(bg:erc-color-face8 ((,class :background ,yellow-refine-bg)))
- `(bg:erc-color-face9 ((,class :background ,green-subtle-bg)))
- `(fg:erc-color-face0 ((,class :foreground "white")))
- `(fg:erc-color-face1 ((,class :foreground "black")))
- `(fg:erc-color-face10 ((,class :foreground ,cyan)))
- `(fg:erc-color-face11 ((,class :foreground ,cyan-alt-other)))
- `(fg:erc-color-face12 ((,class :foreground ,blue)))
- `(fg:erc-color-face13 ((,class :foreground ,magenta-alt)))
- `(fg:erc-color-face14 ((,class :foreground "gray60")))
- `(fg:erc-color-face15 ((,class :foreground "gray80")))
- `(fg:erc-color-face2 ((,class :foreground ,blue-alt-other)))
- `(fg:erc-color-face3 ((,class :foreground ,green)))
- `(fg:erc-color-face4 ((,class :foreground ,red)))
- `(fg:erc-color-face5 ((,class :foreground ,red-alt)))
- `(fg:erc-color-face6 ((,class :foreground ,magenta-alt-other)))
- `(fg:erc-color-face7 ((,class :foreground ,yellow-alt-other)))
- `(fg:erc-color-face8 ((,class :foreground ,yellow-alt)))
- `(fg:erc-color-face9 ((,class :foreground ,green-alt-other)))
-;;;;; eros
- `(eros-result-overlay-face ((,class :box (:line-width -1 :color ,blue)
- :background ,bg-dim :foreground ,fg-dim)))
+ `(erc-action-face ((,c :foreground ,accent-2)))
+ `(erc-bold-face ((,c :inherit bold)))
+ `(erc-button ((,c :inherit button)))
+ `(erc-command-indicator-face ((,c :inherit bold :foreground ,accent-3)))
+ `(erc-current-nick-face ((,c :inherit match)))
+ `(erc-dangerous-host-face ((,c :inherit modus-themes-intense-red)))
+ `(erc-direct-msg-face ((,c :inherit shadow)))
+ `(erc-error-face ((,c :inherit error)))
+ `(erc-fool-face ((,c :inherit shadow)))
+ `(erc-input-face ((,c :foreground ,fnname)))
+ `(erc-inverse-face ((,c :inherit erc-default-face :inverse-video t)))
+ `(erc-keyword-face ((,c :inherit bold :foreground ,keyword)))
+ `(erc-my-nick-face ((,c :inherit bold :foreground ,name)))
+ `(erc-my-nick-prefix-face ((,c :inherit erc-my-nick-face)))
+ `(erc-nick-default-face ((,c :inherit bold :foreground ,accent-0)))
+ `(erc-nick-msg-face ((,c :inherit warning)))
+ `(erc-nick-prefix-face ((,c :inherit erc-nick-default-face)))
+ `(erc-notice-face ((,c :inherit font-lock-comment-face)))
+ `(erc-pal-face ((,c :inherit bold :foreground ,accent-1)))
+ `(erc-prompt-face ((,c :inherit modus-themes-prompt)))
+ `(erc-timestamp-face ((,c :foreground ,date-common)))
+ `(erc-underline-face ((,c :underline t)))
;;;;; ert
- `(ert-test-result-expected ((,class :inherit modus-themes-intense-green)))
- `(ert-test-result-unexpected ((,class :inherit modus-themes-intense-red)))
+ `(ert-test-result-expected ((,c :inherit modus-themes-intense-cyan)))
+ `(ert-test-result-unexpected ((,c :inherit modus-themes-intense-red)))
;;;;; eshell
- `(eshell-ls-archive ((,class :foreground ,cyan-alt)))
- `(eshell-ls-backup ((,class :inherit shadow)))
- `(eshell-ls-clutter ((,class :foreground ,red-alt)))
- `(eshell-ls-directory ((,class :foreground ,blue-alt)))
- `(eshell-ls-executable ((,class :foreground ,magenta-alt)))
- `(eshell-ls-missing ((,class :inherit modus-themes-intense-red)))
- `(eshell-ls-product ((,class :inherit shadow)))
- `(eshell-ls-readonly ((,class :foreground ,yellow-faint)))
- `(eshell-ls-special ((,class :foreground ,magenta)))
- `(eshell-ls-symlink ((,class :inherit modus-themes-link-symlink)))
- `(eshell-ls-unreadable ((,class :background ,bg-inactive :foreground ,fg-inactive)))
- `(eshell-prompt ((,class :inherit modus-themes-prompt)))
+ `(eshell-ls-archive ((,c :foreground ,accent-2)))
+ `(eshell-ls-backup ((,c :inherit shadow)))
+ `(eshell-ls-clutter ((,c :inherit shadow)))
+ `(eshell-ls-directory ((,c :foreground ,accent-0)))
+ `(eshell-ls-executable ((,c :foreground ,accent-1)))
+ `(eshell-ls-missing ((,c :inherit error)))
+ `(eshell-ls-product ((,c :inherit shadow)))
+ `(eshell-ls-readonly ((,c :foreground ,warning)))
+ `(eshell-ls-special ((,c :foreground ,accent-3)))
+ `(eshell-ls-symlink ((,c :inherit link)))
+ `(eshell-ls-unreadable ((,c :inherit shadow)))
+ `(eshell-prompt ((,c :inherit modus-themes-prompt)))
;;;;; eshell-fringe-status
- `(eshell-fringe-status-failure ((,class :inherit error)))
- `(eshell-fringe-status-success ((,class :inherit success)))
-;;;;; eshell-git-prompt
- `(eshell-git-prompt-add-face ((,class :foreground ,magenta-alt-other)))
- `(eshell-git-prompt-branch-face ((,class :foreground ,magenta-alt)))
- `(eshell-git-prompt-directory-face ((,class :inherit bold :foreground ,blue)))
- `(eshell-git-prompt-exit-fail-face ((,class :inherit error)))
- `(eshell-git-prompt-exit-success-face ((,class :inherit success)))
- `(eshell-git-prompt-modified-face ((,class :foreground ,yellow)))
- `(eshell-git-prompt-powerline-clean-face ((,class :background ,green-refine-bg)))
- `(eshell-git-prompt-powerline-dir-face ((,class :background ,blue-refine-bg)))
- `(eshell-git-prompt-powerline-not-clean-face ((,class :background ,yellow-fringe-bg)))
- `(eshell-git-prompt-robyrussell-branch-face ((,class :foreground ,magenta-alt)))
- `(eshell-git-prompt-robyrussell-git-dirty-face ((,class :foreground ,yellow)))
- `(eshell-git-prompt-robyrussell-git-face ((,class :foreground ,magenta-alt-other)))
-;;;;; eshell-prompt-extras (epe)
- `(epe-dir-face ((,class :inherit bold :foreground ,blue)))
- `(epe-git-dir-face ((,class :foreground ,red-alt-other)))
- `(epe-git-face ((,class :foreground ,magenta-alt)))
- `(epe-pipeline-delimiter-face ((,class :inherit shadow)))
- `(epe-pipeline-host-face ((,class :foreground ,fg-main)))
- `(epe-pipeline-time-face ((,class :foreground ,fg-main)))
- `(epe-pipeline-user-face ((,class :foreground ,magenta-alt-other)))
- `(epe-remote-face ((,class :inherit (shadow modus-themes-slant))))
- `(epe-status-face ((,class :foreground ,magenta-alt-other)))
- `(epe-venv-face ((,class :inherit (shadow modus-themes-slant))))
-;;;;; eshell-syntax-highlighting
- `(eshell-syntax-highlighting-directory-face ((,class :inherit eshell-ls-directory)))
- `(eshell-syntax-highlighting-invalid-face ((,class :foreground ,red)))
- `(eshell-syntax-highlighting-shell-command-face ((,class :foreground ,fg-main)))
+ `(eshell-fringe-status-failure ((,c :inherit error)))
+ `(eshell-fringe-status-success ((,c :inherit success)))
;;;;; evil-mode
- `(evil-ex-commands ((,class :foreground ,magenta-alt-other)))
- `(evil-ex-info ((,class :foreground ,cyan-alt-other)))
- `(evil-ex-lazy-highlight ((,class :inherit modus-themes-search-success-lazy)))
- `(evil-ex-search ((,class :inherit modus-themes-search-success)))
- `(evil-ex-substitute-matches ((,class :inherit modus-themes-refine-yellow :underline t)))
- `(evil-ex-substitute-replacement ((,class :inherit modus-themes-search-success)))
-;;;;; evil-goggles
- `(evil-goggles-change-face ((,class :inherit modus-themes-refine-yellow)))
- `(evil-goggles-commentary-face ((,class :inherit (modus-themes-subtle-neutral modus-themes-slant))))
- `(evil-goggles-default-face ((,class :inherit modus-themes-subtle-neutral)))
- `(evil-goggles-delete-face ((,class :inherit modus-themes-refine-red)))
- `(evil-goggles-fill-and-move-face ((,class :inherit evil-goggles-default-face)))
- `(evil-goggles-indent-face ((,class :inherit evil-goggles-default-face)))
- `(evil-goggles-join-face ((,class :inherit modus-themes-subtle-green)))
- `(evil-goggles-nerd-commenter-face ((,class :inherit evil-goggles-commentary-face)))
- `(evil-goggles-paste-face ((,class :inherit modus-themes-subtle-cyan)))
- `(evil-goggles-record-macro-face ((,class :inherit modus-themes-special-cold)))
- `(evil-goggles-replace-with-register-face ((,class :inherit modus-themes-refine-magenta)))
- `(evil-goggles-set-marker-face ((,class :inherit modus-themes-intense-magenta)))
- `(evil-goggles-shift-face ((,class :inherit evil-goggles-default-face)))
- `(evil-goggles-surround-face ((,class :inherit evil-goggles-default-face)))
- `(evil-goggles-yank-face ((,class :inherit modus-themes-subtle-blue)))
-;;;;; evil-snipe
- `(evil-snipe-first-match-face ((,class :inherit (bold modus-themes-intense-blue))))
- `(evil-snipe-matches-face ((,class :inherit modus-themes-refine-magenta)))
-;;;;; evil-visual-mark-mode
- `(evil-visual-mark-face ((,class :inherit modus-themes-intense-magenta)))
+ `(evil-ex-commands ((,c :inherit font-lock-keyword-face)))
+ `(evil-ex-info ((,c :inherit font-lock-type-face)))
+ `(evil-ex-lazy-highlight ((,c :inherit modus-themes-search-lazy)))
+ `(evil-ex-search ((,c :inherit modus-themes-search-current)))
+ `(evil-ex-substitute-matches ((,c :inherit modus-themes-intense-yellow :underline t)))
+ `(evil-ex-substitute-replacement ((,c :inherit modus-themes-search-current)))
;;;;; eww
- `(eww-invalid-certificate ((,class :foreground ,red-faint)))
- `(eww-valid-certificate ((,class :foreground ,blue-faint)))
- `(eww-form-checkbox ((,class :inherit eww-form-text)))
- `(eww-form-file ((,class :inherit eww-form-submit)))
- `(eww-form-select ((,class :inherit eww-form-submit)))
- `(eww-form-submit ((,class :inherit modus-themes-box-button)))
- `(eww-form-text ((,class :inherit widget-field)))
- `(eww-form-textarea ((,class :inherit eww-form-text)))
+ `(eww-invalid-certificate ((,c :foreground ,err)))
+ `(eww-valid-certificate ((,c :foreground ,info)))
+ `(eww-form-checkbox ((,c :inherit eww-form-text)))
+ `(eww-form-file ((,c :inherit eww-form-submit)))
+ `(eww-form-select ((,c :inherit eww-form-submit)))
+ `(eww-form-submit ((,c :inherit modus-themes-button)))
+ `(eww-form-text ((,c :inherit widget-field)))
+ `(eww-form-textarea ((,c :inherit eww-form-text)))
;;;;; eyebrowse
- `(eyebrowse-mode-line-active ((,class :inherit bold :foreground ,blue-active)))
-;;;;; fancy-dabbrev
- `(fancy-dabbrev-menu-face ((,class :background ,bg-alt :foreground ,fg-alt)))
- `(fancy-dabbrev-preview-face ((,class :inherit shadow :underline t)))
- `(fancy-dabbrev-selection-face ((,class :inherit (modus-themes-intense-cyan bold))))
+ `(eyebrowse-mode-line-active ((,c :inherit mode-line-emphasis)))
;;;;; flycheck
- `(flycheck-error ((,class :inherit modus-themes-lang-error)))
- `(flycheck-error-list-checker-name ((,class :foreground ,magenta-active)))
- `(flycheck-error-list-column-number ((,class :foreground ,fg-special-cold)))
- `(flycheck-error-list-error ((,class :inherit modus-themes-bold :foreground ,red)))
- `(flycheck-error-list-filename ((,class :foreground ,blue)))
- `(flycheck-error-list-highlight ((,class :inherit modus-themes-hl-line)))
- `(flycheck-error-list-id ((,class :foreground ,magenta-alt-other)))
- `(flycheck-error-list-id-with-explainer ((,class :inherit flycheck-error-list-id :box t)))
- `(flycheck-error-list-info ((,class :foreground ,cyan)))
- `(flycheck-error-list-line-number ((,class :foreground ,fg-special-warm)))
- `(flycheck-error-list-warning ((,class :foreground ,yellow)))
- `(flycheck-fringe-error ((,class :inherit modus-themes-fringe-red)))
- `(flycheck-fringe-info ((,class :inherit modus-themes-fringe-cyan)))
- `(flycheck-fringe-warning ((,class :inherit modus-themes-fringe-yellow)))
- `(flycheck-info ((,class :inherit modus-themes-lang-note)))
- `(flycheck-verify-select-checker ((,class :box (:line-width 1 :color nil :style released-button))))
- `(flycheck-warning ((,class :inherit modus-themes-lang-warning)))
+ `(flycheck-error ((,c :inherit modus-themes-lang-error)))
+ `(flycheck-fringe-error ((,c :inherit modus-themes-intense-red)))
+ `(flycheck-fringe-info ((,c :inherit modus-themes-intense-cyan)))
+ `(flycheck-fringe-warning ((,c :inherit modus-themes-intense-yellow)))
+ `(flycheck-info ((,c :inherit modus-themes-lang-note)))
+ `(flycheck-warning ((,c :inherit modus-themes-lang-warning)))
;;;;; flycheck-color-mode-line
- `(flycheck-color-mode-line-error-face ((,class :inherit flycheck-fringe-error)))
- `(flycheck-color-mode-line-info-face ((,class :inherit flycheck-fringe-info)))
- `(flycheck-color-mode-line-running-face ((,class :inherit italic :foreground ,fg-inactive)))
- `(flycheck-color-mode-line-info-face ((,class :inherit flycheck-fringe-warning)))
+ `(flycheck-color-mode-line-error-face ((,c :inherit flycheck-fringe-error)))
+ `(flycheck-color-mode-line-info-face ((,c :inherit flycheck-fringe-info)))
+ `(flycheck-color-mode-line-running-face ((,c :inherit italic)))
+ `(flycheck-color-mode-line-info-face ((,c :inherit flycheck-fringe-warning)))
;;;;; flycheck-indicator
- `(flycheck-indicator-disabled ((,class :inherit modus-themes-slant :foreground ,fg-inactive)))
- `(flycheck-indicator-error ((,class :inherit modus-themes-bold :foreground ,red-active)))
- `(flycheck-indicator-info ((,class :inherit modus-themes-bold :foreground ,blue-active)))
- `(flycheck-indicator-running ((,class :inherit modus-themes-bold :foreground ,magenta-active)))
- `(flycheck-indicator-success ((,class :inherit (modus-themes-bold modus-themes-grue-active))))
- `(flycheck-indicator-warning ((,class :inherit modus-themes-bold :foreground ,yellow-active)))
-;;;;; flycheck-posframe
- `(flycheck-posframe-background-face ((,class :background ,bg-alt)))
- `(flycheck-posframe-border-face ((,class :inherit shadow)))
- `(flycheck-posframe-error-face ((,class :inherit bold :foreground ,red)))
- `(flycheck-posframe-face ((,class :inherit modus-themes-slant :foreground ,fg-main)))
- `(flycheck-posframe-info-face ((,class :inherit bold :foreground ,cyan)))
- `(flycheck-posframe-warning-face ((,class :inherit bold :foreground ,yellow)))
+ `(flycheck-indicator-disabled ((,c :inherit modus-themes-slant :foreground ,fg-dim)))
+ `(flycheck-indicator-error ((,c :inherit error)))
+ `(flycheck-indicator-info ((,c :inherit bold)))
+ `(flycheck-indicator-running ((,c :inherit modus-themes-slant)))
+ `(flycheck-indicator-success ((,c :inherit success)))
+ `(flycheck-indicator-warning ((,c :inherit warning)))
;;;;; flymake
- `(flymake-error ((,class :inherit modus-themes-lang-error)))
- `(flymake-note ((,class :inherit modus-themes-lang-note)))
- `(flymake-warning ((,class :inherit modus-themes-lang-warning)))
+ `(flymake-error ((,c :inherit modus-themes-lang-error)))
+ `(flymake-note ((,c :inherit modus-themes-lang-note)))
+ `(flymake-warning ((,c :inherit modus-themes-lang-warning)))
;;;;; flyspell
- `(flyspell-duplicate ((,class :inherit modus-themes-lang-warning)))
- `(flyspell-incorrect ((,class :inherit modus-themes-lang-error)))
+ `(flyspell-duplicate ((,c :inherit modus-themes-lang-warning)))
+ `(flyspell-incorrect ((,c :inherit modus-themes-lang-error)))
;;;;; flx
- `(flx-highlight-face ((,class :inherit modus-themes-completion-match-0)))
-;;;;; freeze-it
- `(freeze-it-show ((,class :background ,bg-dim :foreground ,fg-special-warm)))
+ `(flx-highlight-face ((,c :inherit modus-themes-completion-match-0)))
;;;;; focus
- `(focus-unfocused ((,class :foreground ,fg-unfocused)))
+ `(focus-unfocused ((,c :foreground "gray50")))
;;;;; fold-this
- `(fold-this-overlay ((,class :inherit modus-themes-special-mild)))
+ `(fold-this-overlay ((,c :background ,bg-inactive)))
;;;;; font-lock
- `(font-lock-builtin-face ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-extra
- magenta-alt magenta-alt-faint
- magenta magenta-faint))))
- `(font-lock-comment-delimiter-face ((,class :inherit font-lock-comment-face)))
- `(font-lock-comment-face ((,class :inherit modus-themes-slant
- ,@(modus-themes--syntax-comment
- fg-alt fg-comment-yellow yellow-alt-other-faint))))
- `(font-lock-constant-face ((,class ,@(modus-themes--syntax-extra
- blue-alt-other blue-alt-other-faint
- magenta-alt-other magenta-alt-other-faint))))
- `(font-lock-doc-face ((,class :inherit modus-themes-slant
- ,@(modus-themes--syntax-string
- fg-docstring fg-special-cold
- fg-special-mild fg-special-calm
- fg-special-mild magenta-nuanced-fg))))
- `(font-lock-function-name-face ((,class ,@(modus-themes--syntax-extra
- magenta magenta-faint
- magenta-alt magenta-alt-faint))))
- `(font-lock-keyword-face ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-extra
- magenta-alt-other magenta-alt-other-faint
- cyan cyan-faint))))
- `(font-lock-negation-char-face ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-foreground
- yellow yellow-faint))))
- `(font-lock-preprocessor-face ((,class ,@(modus-themes--syntax-extra
- red-alt-other red-alt-other-faint
- cyan-alt-other cyan-alt-faint))))
- `(font-lock-regexp-grouping-backslash ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-string
- fg-escape-char-backslash yellow-alt-faint
- yellow-alt magenta-alt
- red-faint green-alt-other-faint))))
- `(font-lock-regexp-grouping-construct ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-string
- fg-escape-char-construct red-alt-other-faint
- red-alt-other blue-alt-other
- blue-faint blue-alt-other-faint))))
- `(font-lock-string-face ((,class ,@(modus-themes--syntax-string
- blue-alt blue-alt-faint
- green-alt-other red-alt-other
- green-alt-faint red-alt-faint))))
- `(font-lock-type-face ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-extra
- cyan-alt-other cyan-alt-faint
- magenta-alt-other magenta-alt-other-faint))))
- `(font-lock-variable-name-face ((,class ,@(modus-themes--syntax-extra
- cyan cyan-faint
- blue-alt blue-alt-faint))))
- `(font-lock-warning-face ((,class :inherit modus-themes-bold
- ,@(modus-themes--syntax-comment
- yellow red yellow-alt-faint red-faint))))
-;;;;; forge
- `(forge-post-author ((,class :inherit bold :foreground ,fg-main)))
- `(forge-post-date ((,class :foreground ,fg-special-cold)))
- `(forge-topic-closed ((,class :inherit shadow)))
- `(forge-topic-merged ((,class :inherit shadow)))
- `(forge-topic-open ((,class :foreground ,fg-special-mild)))
- `(forge-topic-unmerged ((,class :inherit modus-themes-slant :foreground ,magenta)))
- `(forge-topic-unread ((,class :inherit bold :foreground ,fg-main)))
-;;;;; fountain-mode
- `(fountain-character ((,class :foreground ,blue-alt-other)))
- `(fountain-comment ((,class :inherit font-lock-comment-face)))
- `(fountain-dialog ((,class :foreground ,blue-alt)))
- `(fountain-metadata-key ((,class :foreground ,green-alt-other)))
- `(fountain-metadata-value ((,class :foreground ,blue)))
- `(fountain-non-printing ((,class :inherit shadow)))
- `(fountain-note ((,class :inherit modus-themes-slant :foreground ,yellow)))
- `(fountain-page-break ((,class :inherit bold :foreground ,red-alt)))
- `(fountain-page-number ((,class :inherit bold :foreground ,red-alt-other)))
- `(fountain-paren ((,class :foreground ,cyan)))
- `(fountain-scene-heading ((,class :inherit bold :foreground ,blue-nuanced-fg)))
- `(fountain-section-heading ((,class :inherit modus-themes-heading-1)))
- `(fountain-section-heading-1 ((,class :inherit modus-themes-heading-1)))
- `(fountain-section-heading-2 ((,class :inherit modus-themes-heading-2)))
- `(fountain-section-heading-3 ((,class :inherit modus-themes-heading-3)))
- `(fountain-section-heading-4 ((,class :inherit modus-themes-heading-4)))
- `(fountain-section-heading-5 ((,class :inherit modus-themes-heading-5)))
- `(fountain-synopsis ((,class :foreground ,cyan-alt)))
- `(fountain-trans ((,class :foreground ,yellow-alt-other)))
+ `(font-lock-builtin-face ((,c :inherit modus-themes-bold :foreground ,builtin)))
+ `(font-lock-comment-delimiter-face ((,c :inherit font-lock-comment-face)))
+ `(font-lock-comment-face ((,c :inherit modus-themes-slant :foreground ,comment)))
+ `(font-lock-constant-face ((,c :foreground ,constant)))
+ `(font-lock-doc-face ((,c :inherit modus-themes-slant :foreground ,docstring)))
+ `(font-lock-doc-markup-face ((,c :inherit modus-themes-slant :foreground ,docmarkup)))
+ `(font-lock-function-name-face ((,c :foreground ,fnname)))
+ `(font-lock-keyword-face ((,c :inherit modus-themes-bold :foreground ,keyword)))
+ `(font-lock-negation-char-face ((,c :inherit error)))
+ `(font-lock-preprocessor-face ((,c :foreground ,preprocessor)))
+ `(font-lock-regexp-grouping-backslash ((,c :inherit modus-themes-bold :foreground ,rx-backslash)))
+ `(font-lock-regexp-grouping-construct ((,c :inherit modus-themes-bold :foreground ,rx-construct)))
+ `(font-lock-string-face ((,c :foreground ,string)))
+ `(font-lock-type-face ((,c :inherit modus-themes-bold :foreground ,type)))
+ `(font-lock-variable-name-face ((,c :foreground ,variable)))
+ `(font-lock-warning-face ((,c :inherit modus-themes-bold :foreground ,warning)))
;;;;; geiser
- `(geiser-font-lock-autodoc-current-arg ((,class :inherit bold
- :background ,yellow-nuanced-bg
- :foreground ,yellow-alt-other)))
- `(geiser-font-lock-autodoc-identifier ((,class :foreground ,cyan)))
- `(geiser-font-lock-doc-button ((,class :inherit button :foreground ,fg-docstring)))
- `(geiser-font-lock-doc-link ((,class :inherit button)))
- `(geiser-font-lock-error-link ((,class :inherit button :foreground ,red)))
- `(geiser-font-lock-image-button ((,class :inherit button :foreground ,green-alt)))
- `(geiser-font-lock-repl-input ((,class :inherit bold)))
- `(geiser-font-lock-repl-output ((,class :inherit font-lock-keyword-face)))
- `(geiser-font-lock-repl-prompt ((,class :inherit modus-themes-prompt)))
- `(geiser-font-lock-xref-header ((,class :inherit bold)))
- `(geiser-font-lock-xref-link ((,class :inherit button)))
+ `(geiser-font-lock-autodoc-current-arg ((,c :inherit modus-themes-mark-alt)))
+ `(geiser-font-lock-autodoc-identifier ((,c :foreground ,docstring)))
+ `(geiser-font-lock-doc-button ((,c :inherit button)))
+ `(geiser-font-lock-doc-link ((,c :inherit button)))
+ `(geiser-font-lock-error-link ((,c :inherit button :foreground ,err)))
+ `(geiser-font-lock-image-button ((,c :inherit button :foreground ,info)))
+ `(geiser-font-lock-repl-input ((,c :inherit bold)))
+ `(geiser-font-lock-repl-output ((,c :inherit font-lock-keyword-face)))
+ `(geiser-font-lock-repl-prompt ((,c :inherit modus-themes-prompt)))
+ `(geiser-font-lock-xref-header ((,c :inherit bold)))
+ `(geiser-font-lock-xref-link ((,c :inherit button)))
;;;;; git-commit
- `(git-commit-comment-action ((,class :inherit font-lock-comment-face)))
- `(git-commit-comment-branch-local ((,class :inherit font-lock-comment-face :foreground ,blue-alt)))
- `(git-commit-comment-branch-remote ((,class :inherit font-lock-comment-face :foreground ,magenta-alt)))
- `(git-commit-comment-detached ((,class :inherit font-lock-comment-face :foreground ,cyan-alt)))
- `(git-commit-comment-file ((,class :inherit font-lock-comment-face :foreground ,cyan)))
- `(git-commit-comment-heading ((,class :inherit (bold font-lock-comment-face))))
- `(git-commit-keyword ((,class :foreground ,magenta)))
- `(git-commit-known-pseudo-header ((,class :foreground ,cyan-alt-other)))
- `(git-commit-nonempty-second-line ((,class :inherit error)))
- `(git-commit-overlong-summary ((,class :inherit warning)))
- `(git-commit-pseudo-header ((,class :foreground ,blue)))
- `(git-commit-summary ((,class :inherit bold :foreground ,blue)))
+ `(git-commit-comment-action ((,c :inherit font-lock-comment-face)))
+ `(git-commit-comment-branch-local ((,c :inherit font-lock-comment-face :foreground ,accent-0)))
+ `(git-commit-comment-branch-remote ((,c :inherit font-lock-comment-face :foreground ,accent-1)))
+ `(git-commit-comment-heading ((,c :inherit (bold font-lock-comment-face))))
+ `(git-commit-comment-file ((,c :inherit font-lock-comment-face :foreground ,name)))
+ `(git-commit-keyword ((,c :foreground ,keyword)))
+ `(git-commit-nonempty-second-line ((,c :inherit error)))
+ `(git-commit-overlong-summary ((,c :inherit warning)))
+ `(git-commit-summary ((,c :inherit bold :foreground ,blue)))
;;;;; git-gutter
- `(git-gutter:added ((,class :inherit modus-themes-grue-background-active)))
- `(git-gutter:deleted ((,class :inherit modus-themes-fringe-red)))
- `(git-gutter:modified ((,class :inherit modus-themes-fringe-yellow)))
- `(git-gutter:separator ((,class :inherit modus-themes-fringe-cyan)))
- `(git-gutter:unchanged ((,class :inherit modus-themes-fringe-magenta)))
+ `(git-gutter:added ((,c :background ,bg-added-fringe)))
+ `(git-gutter:deleted ((,c :background ,bg-removed-fringe)))
+ `(git-gutter:modified ((,c :background ,bg-changed-fringe)))
+ `(git-gutter:separator ((,c :inherit modus-themes-intense-cyan)))
+ `(git-gutter:unchanged ((,c :inherit modus-themes-intense-magenta)))
;;;;; git-gutter-fr
- `(git-gutter-fr:added ((,class :inherit modus-themes-grue-background-active)))
- `(git-gutter-fr:deleted ((,class :inherit modus-themes-fringe-red)))
- `(git-gutter-fr:modified ((,class :inherit modus-themes-fringe-yellow)))
+ `(git-gutter-fr:added ((,c :background ,bg-added-fringe)))
+ `(git-gutter-fr:deleted ((,c :background ,bg-removed-fringe)))
+ `(git-gutter-fr:modified ((,c :background ,bg-changed-fringe)))
;;;;; git-rebase
- `(git-rebase-comment-hash ((,class :inherit font-lock-comment-face :foreground ,cyan)))
- `(git-rebase-comment-heading ((,class :inherit (bold font-lock-comment-face))))
- `(git-rebase-description ((,class :foreground ,fg-main)))
- `(git-rebase-hash ((,class :foreground ,cyan-alt-other)))
+ `(git-rebase-comment-hash ((,c :inherit (bold font-lock-comment-face) :foreground ,identifier)))
+ `(git-rebase-comment-heading ((,c :inherit (bold font-lock-comment-face))))
+ `(git-rebase-description ((,c :foreground ,fg-main)))
+ `(git-rebase-hash ((,c :foreground ,identifier)))
;;;;; git-timemachine
- `(git-timemachine-commit ((,class :inherit bold :foreground ,yellow-active)))
- `(git-timemachine-minibuffer-author-face ((,class :foreground ,fg-special-warm)))
- `(git-timemachine-minibuffer-detail-face ((,class :foreground ,red-alt)))
+ `(git-timemachine-commit ((,c :inherit warning)))
+ `(git-timemachine-minibuffer-author-face ((,c :foreground ,name)))
+ `(git-timemachine-minibuffer-detail-face ((,c :foreground ,fg-main)))
;;;;; gnus
- `(gnus-button ((,class :inherit button)))
- `(gnus-cite-1 ((,class :inherit message-cited-text-1)))
- `(gnus-cite-2 ((,class :inherit message-cited-text-2)))
- `(gnus-cite-3 ((,class :inherit message-cited-text-3)))
- `(gnus-cite-4 ((,class :inherit message-cited-text-4)))
- `(gnus-cite-5 ((,class :inherit gnus-cite-1)))
- `(gnus-cite-6 ((,class :inherit gnus-cite-2)))
- `(gnus-cite-7 ((,class :inherit gnus-cite-3)))
- `(gnus-cite-8 ((,class :inherit gnus-cite-4)))
- `(gnus-cite-9 ((,class :inherit gnus-cite-1)))
- `(gnus-cite-10 ((,class :inherit gnus-cite-2)))
- `(gnus-cite-11 ((,class :inherit gnus-cite-3)))
- `(gnus-cite-attribution ((,class :inherit italic :foreground ,fg-main)))
- `(gnus-emphasis-bold ((,class :inherit bold)))
- `(gnus-emphasis-bold-italic ((,class :inherit bold-italic)))
- `(gnus-emphasis-highlight-words ((,class :inherit modus-themes-refine-yellow)))
- `(gnus-emphasis-italic ((,class :inherit italic)))
- `(gnus-emphasis-underline-bold ((,class :inherit gnus-emphasis-bold :underline t)))
- `(gnus-emphasis-underline-bold-italic ((,class :inherit gnus-emphasis-bold-italic :underline t)))
- `(gnus-emphasis-underline-italic ((,class :inherit gnus-emphasis-italic :underline t)))
- `(gnus-group-mail-1 ((,class :inherit bold :foreground ,magenta-alt)))
- `(gnus-group-mail-1-empty ((,class :foreground ,magenta-alt)))
- `(gnus-group-mail-2 ((,class :inherit bold :foreground ,magenta)))
- `(gnus-group-mail-2-empty ((,class :foreground ,magenta)))
- `(gnus-group-mail-3 ((,class :inherit bold :foreground ,magenta-alt-other)))
- `(gnus-group-mail-3-empty ((,class :foreground ,magenta-alt-other)))
- `(gnus-group-mail-low ((,class :inherit bold :foreground ,magenta-nuanced-fg)))
- `(gnus-group-mail-low-empty ((,class :foreground ,magenta-nuanced-fg)))
- `(gnus-group-news-1 ((,class :inherit bold :foreground ,green)))
- `(gnus-group-news-1-empty ((,class :foreground ,green)))
- `(gnus-group-news-2 ((,class :inherit bold :foreground ,cyan)))
- `(gnus-group-news-2-empty ((,class :foreground ,cyan)))
- `(gnus-group-news-3 ((,class :inherit bold :foreground ,yellow-nuanced-fg)))
- `(gnus-group-news-3-empty ((,class :foreground ,yellow-nuanced-fg)))
- `(gnus-group-news-4 ((,class :inherit bold :foreground ,cyan-nuanced-fg)))
- `(gnus-group-news-4-empty ((,class :foreground ,cyan-nuanced-fg)))
- `(gnus-group-news-5 ((,class :inherit bold :foreground ,red-nuanced-fg)))
- `(gnus-group-news-5-empty ((,class :foreground ,red-nuanced-fg)))
- `(gnus-group-news-6 ((,class :inherit bold :foreground ,fg-unfocused)))
- `(gnus-group-news-6-empty ((,class :foreground ,fg-unfocused)))
- `(gnus-group-news-low ((,class :inherit bold :foreground ,green-nuanced-fg)))
- `(gnus-group-news-low-empty ((,class :foreground ,green-nuanced-fg)))
- `(gnus-header-content ((,class :inherit message-header-other)))
- `(gnus-header-from ((,class :inherit message-header-to :underline nil)))
- `(gnus-header-name ((,class :inherit message-header-name)))
- `(gnus-header-newsgroups ((,class :inherit message-header-newsgroups)))
- `(gnus-header-subject ((,class :inherit message-header-subject)))
- `(gnus-server-agent ((,class :inherit bold :foreground ,cyan)))
- `(gnus-server-closed ((,class :inherit bold :foreground ,magenta)))
- `(gnus-server-cloud ((,class :inherit bold :foreground ,cyan-alt)))
- `(gnus-server-cloud-host ((,class :inherit modus-themes-refine-cyan)))
- `(gnus-server-denied ((,class :inherit bold :foreground ,red)))
- `(gnus-server-offline ((,class :inherit bold :foreground ,yellow)))
- `(gnus-server-opened ((,class :inherit bold :foreground ,green)))
- `(gnus-signature ((,class :inherit italic :foreground ,fg-special-cold)))
- `(gnus-splash ((,class :inherit shadow)))
- `(gnus-summary-cancelled ((,class :inherit modus-themes-mark-alt :extend t)))
- `(gnus-summary-high-ancient ((,class :inherit bold :foreground ,fg-alt)))
- `(gnus-summary-high-read ((,class :inherit bold :foreground ,fg-special-cold)))
- `(gnus-summary-high-ticked ((,class :inherit bold :foreground ,red-alt-other)))
- `(gnus-summary-high-undownloaded ((,class :inherit bold :foreground ,yellow)))
- `(gnus-summary-high-unread ((,class :inherit bold :foreground ,fg-main)))
- `(gnus-summary-low-ancient ((,class :inherit italic :foreground ,fg-alt)))
- `(gnus-summary-low-read ((,class :inherit italic :foreground ,fg-alt)))
- `(gnus-summary-low-ticked ((,class :inherit italic :foreground ,red-refine-fg)))
- `(gnus-summary-low-undownloaded ((,class :inherit italic :foreground ,yellow-refine-fg)))
- `(gnus-summary-low-unread ((,class :inherit italic :foreground ,fg-special-cold)))
- `(gnus-summary-normal-ancient ((,class :foreground ,fg-special-calm)))
- `(gnus-summary-normal-read ((,class :inherit shadow)))
- `(gnus-summary-normal-ticked ((,class :foreground ,red-alt-other)))
- `(gnus-summary-normal-undownloaded ((,class :foreground ,yellow)))
- `(gnus-summary-normal-unread ((,class :foreground ,fg-main)))
- `(gnus-summary-selected ((,class :inherit highlight :extend t)))
+ `(gnus-button ((,c :inherit button)))
+ `(gnus-cite-1 ((,c :inherit message-cited-text-1)))
+ `(gnus-cite-2 ((,c :inherit message-cited-text-2)))
+ `(gnus-cite-3 ((,c :inherit message-cited-text-3)))
+ `(gnus-cite-4 ((,c :inherit message-cited-text-4)))
+ `(gnus-cite-5 ((,c :inherit message-cited-text-1)))
+ `(gnus-cite-6 ((,c :inherit message-cited-text-2)))
+ `(gnus-cite-7 ((,c :inherit message-cited-text-3)))
+ `(gnus-cite-8 ((,c :inherit message-cited-text-4)))
+ `(gnus-cite-9 ((,c :inherit message-cited-text-1)))
+ `(gnus-cite-10 ((,c :inherit message-cited-text-2)))
+ `(gnus-cite-11 ((,c :inherit message-cited-text-3)))
+ `(gnus-cite-attribution ((,c :inherit italic)))
+ `(gnus-emphasis-bold ((,c :inherit bold)))
+ `(gnus-emphasis-bold-italic ((,c :inherit bold-italic)))
+ `(gnus-emphasis-highlight-words ((,c :inherit warning)))
+ `(gnus-emphasis-italic ((,c :inherit italic)))
+ `(gnus-emphasis-underline-bold ((,c :inherit gnus-emphasis-bold :underline t)))
+ `(gnus-emphasis-underline-bold-italic ((,c :inherit gnus-emphasis-bold-italic :underline t)))
+ `(gnus-emphasis-underline-italic ((,c :inherit gnus-emphasis-italic :underline t)))
+ `(gnus-group-mail-1 ((,c :inherit (bold gnus-group-mail-1-empty))))
+ `(gnus-group-mail-1-empty ((,c :foreground ,magenta-warmer)))
+ `(gnus-group-mail-2 ((,c :inherit (bold gnus-group-mail-2-empty))))
+ `(gnus-group-mail-2-empty ((,c :foreground ,magenta)))
+ `(gnus-group-mail-3 ((,c :inherit (bold gnus-group-mail-3-empty))))
+ `(gnus-group-mail-3-empty ((,c :foreground ,magenta-cooler)))
+ `(gnus-group-mail-low ((,c :inherit (bold gnus-group-mail-low-empty))))
+ `(gnus-group-mail-low-empty ((,c :foreground ,fg-dim)))
+ `(gnus-group-news-1 ((,c :inherit (bold gnus-group-news-1-empty))))
+ `(gnus-group-news-1-empty ((,c :foreground ,green)))
+ `(gnus-group-news-2 ((,c :inherit (bold gnus-group-news-2-empty))))
+ `(gnus-group-news-2-empty ((,c :foreground ,cyan)))
+ `(gnus-group-news-3 ((,c :inherit (bold gnus-group-news-3-empty))))
+ `(gnus-group-news-3-empty ((,c :foreground ,yellow-faint)))
+ `(gnus-group-news-4 ((,c :inherit (bold gnus-group-news-4-empty))))
+ `(gnus-group-news-4-empty ((,c :foreground ,magenta-faint)))
+ `(gnus-group-news-5 ((,c :inherit (bold gnus-group-news-5-empty))))
+ `(gnus-group-news-5-empty ((,c :foreground ,fg-alt)))
+ `(gnus-group-news-6 ((,c :inherit (bold gnus-group-news-6-empty))))
+ `(gnus-group-news-6-empty ((,c :foreground ,fg-dim)))
+ `(gnus-group-news-low ((,c :inherit (bold gnus-group-news-low-empty))))
+ `(gnus-group-news-low-empty ((,c :foreground ,fg-dim)))
+ `(gnus-header-content ((,c :inherit message-header-other)))
+ `(gnus-header-from ((,c :inherit message-header-to :underline nil)))
+ `(gnus-header-name ((,c :inherit message-header-name)))
+ `(gnus-header-newsgroups ((,c :inherit message-header-newsgroups)))
+ `(gnus-header-subject ((,c :inherit message-header-subject)))
+ `(gnus-server-agent ((,c :inherit bold)))
+ `(gnus-server-closed ((,c :inherit italic)))
+ `(gnus-server-cloud ((,c :inherit bold :foreground ,fg-alt)))
+ `(gnus-server-cloud-host ((,c :inherit bold :foreground ,fg-alt :underline t)))
+ `(gnus-server-denied ((,c :inherit error)))
+ `(gnus-server-offline ((,c :inherit shadow)))
+ `(gnus-server-opened ((,c :inherit success)))
+ `(gnus-summary-cancelled ((,c :inherit italic :foreground ,warning)))
+ `(gnus-summary-high-ancient ((,c :inherit bold :foreground ,fg-alt)))
+ `(gnus-summary-high-read ((,c :inherit bold :foreground ,fg-dim)))
+ `(gnus-summary-high-ticked ((,c :inherit bold :foreground ,err)))
+ `(gnus-summary-high-undownloaded ((,c :inherit bold-italic :foreground ,warning)))
+ `(gnus-summary-high-unread ((,c :inherit bold)))
+ `(gnus-summary-low-ancient ((,c :inherit italic)))
+ `(gnus-summary-low-read ((,c :inherit (shadow italic))))
+ `(gnus-summary-low-ticked ((,c :inherit italic :foreground ,err)))
+ `(gnus-summary-low-undownloaded ((,c :inherit italic :foreground ,warning)))
+ `(gnus-summary-low-unread ((,c :inherit italic)))
+ `(gnus-summary-normal-ancient (( )))
+ `(gnus-summary-normal-read ((,c :inherit shadow)))
+ `(gnus-summary-normal-ticked ((,c :foreground ,err)))
+ `(gnus-summary-normal-undownloaded ((,c :foreground ,warning)))
+ `(gnus-summary-normal-unread (( )))
+ `(gnus-summary-selected ((,c :inherit highlight)))
;;;;; gotest
- `(go-test--ok-face ((,class :inherit success)))
- `(go-test--error-face ((,class :inherit error)))
- `(go-test--warning-face ((,class :inherit warning)))
- `(go-test--pointer-face ((,class :foreground ,magenta-alt-other)))
- `(go-test--standard-face ((,class :foreground ,fg-special-cold)))
+ `(go-test--ok-face ((,c :inherit success)))
+ `(go-test--error-face ((,c :inherit error)))
+ `(go-test--warning-face ((,c :inherit warning)))
+ `(go-test--pointer-face ((,c :foreground ,accent-0)))
+ `(go-test--standard-face (( )))
;;;;; golden-ratio-scroll-screen
- `(golden-ratio-scroll-highlight-line-face ((,class :background ,cyan-subtle-bg :foreground ,fg-main)))
-;;;;; helm
- `(helm-M-x-key ((,class :inherit modus-themes-key-binding)))
- `(helm-action ((,class :underline t)))
- `(helm-bookmark-addressbook ((,class :foreground ,green-alt)))
- `(helm-bookmark-directory ((,class :inherit bold :foreground ,blue)))
- `(helm-bookmark-file ((,class :foreground ,fg-main)))
- `(helm-bookmark-file-not-found ((,class :background ,bg-alt :foreground ,fg-alt)))
- `(helm-bookmark-gnus ((,class :foreground ,magenta)))
- `(helm-bookmark-info ((,class :foreground ,cyan-alt)))
- `(helm-bookmark-man ((,class :foreground ,yellow-alt)))
- `(helm-bookmark-w3m ((,class :foreground ,blue-alt)))
- `(helm-buffer-archive ((,class :inherit bold :foreground ,cyan)))
- `(helm-buffer-directory ((,class :inherit bold :foreground ,blue)))
- `(helm-buffer-file ((,class :foreground ,fg-main)))
- `(helm-buffer-modified ((,class :foreground ,yellow-alt)))
- `(helm-buffer-not-saved ((,class :foreground ,red-alt)))
- `(helm-buffer-process ((,class :foreground ,magenta)))
- `(helm-buffer-saved-out ((,class :inherit bold :background ,bg-alt :foreground ,red)))
- `(helm-buffer-size ((,class :inherit shadow)))
- `(helm-candidate-number ((,class :foreground ,cyan-active)))
- `(helm-candidate-number-suspended ((,class :foreground ,yellow-active)))
- `(helm-comint-prompts-buffer-name ((,class :foreground ,green-active)))
- `(helm-comint-prompts-promptidx ((,class :foreground ,cyan-active)))
- `(helm-delete-async-message ((,class :inherit bold :foreground ,magenta-active)))
- `(helm-eob-line ((,class :background ,bg-main :foreground ,fg-main)))
- `(helm-eshell-prompts-buffer-name ((,class :foreground ,green-active)))
- `(helm-eshell-prompts-promptidx ((,class :foreground ,cyan-active)))
- `(helm-etags-file ((,class :foreground ,fg-dim :underline t)))
- `(helm-ff-backup-file ((,class :inherit shadow)))
- `(helm-ff-denied ((,class :inherit modus-themes-intense-red)))
- `(helm-ff-directory ((,class :inherit helm-buffer-directory)))
- `(helm-ff-dirs ((,class :inherit bold :foreground ,blue-alt-other)))
- `(helm-ff-dotted-directory ((,class :inherit bold :background ,bg-alt :foreground ,fg-alt)))
- `(helm-ff-dotted-symlink-directory ((,class :inherit (button helm-ff-dotted-directory))))
- `(helm-ff-executable ((,class :foreground ,magenta-alt)))
- `(helm-ff-file ((,class :foreground ,fg-main)))
- `(helm-ff-file-extension ((,class :foreground ,fg-special-warm)))
- `(helm-ff-invalid-symlink ((,class :inherit modus-themes-link-broken)))
- `(helm-ff-pipe ((,class :inherit modus-themes-special-calm)))
- `(helm-ff-prefix ((,class :inherit modus-themes-special-warm)))
- `(helm-ff-socket ((,class :foreground ,red-alt-other)))
- `(helm-ff-suid ((,class :inherit modus-themes-special-warm)))
- `(helm-ff-symlink ((,class :inherit modus-themes-link-symlink)))
- `(helm-ff-truename ((,class :foreground ,blue-alt-other)))
- `(helm-fd-finish ((,class :inherit success)))
- `(helm-grep-cmd-line ((,class :foreground ,yellow-alt-other)))
- `(helm-grep-file ((,class :inherit bold :foreground ,fg-special-cold)))
- `(helm-grep-finish ((,class :inherit bold)))
- `(helm-grep-lineno ((,class :foreground ,fg-special-warm)))
- `(helm-grep-match ((,class :inherit modus-themes-special-calm)))
- `(helm-header ((,class :inherit bold :foreground ,fg-special-cold)))
- `(helm-header-line-left-margin ((,class :inherit bold :foreground ,yellow-intense)))
- `(helm-history-deleted ((,class :inherit modus-themes-special-warm)))
- `(helm-history-remote ((,class :foreground ,red-alt-other)))
- `(helm-lisp-completion-info ((,class :inherit modus-themes-bold :foreground ,fg-special-cold)))
- `(helm-lisp-show-completion ((,class :inherit modus-themes-special-warm)))
- `(helm-locate-finish ((,class :inherit success)))
- `(helm-match ((,class :inherit modus-themes-completion-match-0)))
- `(helm-match-item ((,class :inherit helm-match)))
- `(helm-minibuffer-prompt ((,class :inherit modus-themes-prompt)))
- `(helm-moccur-buffer ((,class :inherit button :foreground ,cyan-alt-other)))
- `(helm-mode-prefix ((,class :inherit modus-themes-special-calm)))
- `(helm-non-file-buffer ((,class :inherit shadow)))
- `(helm-prefarg ((,class :foreground ,red-active)))
- `(helm-resume-need-update ((,class :inherit modus-themes-special-calm)))
- `(helm-selection ((,class :inherit modus-themes-completion-selected)))
- `(helm-selection-line ((,class :background ,bg-hl-alt-intense)))
- `(helm-separator ((,class :foreground ,fg-special-mild)))
- `(helm-time-zone-current ((,class :foreground ,green)))
- `(helm-time-zone-home ((,class :foreground ,magenta)))
- `(helm-source-header ((,class :inherit modus-themes-pseudo-header :foreground ,fg-special-warm)))
- `(helm-top-columns ((,class :inherit helm-header)))
- `(helm-ucs-char ((,class :foreground ,yellow-alt-other)))
- `(helm-visible-mark ((,class :inherit modus-themes-subtle-cyan)))
-;;;;; helm-ls-git
- `(helm-ls-git-added-copied-face ((,class :foreground ,green-intense)))
- `(helm-ls-git-added-modified-face ((,class :foreground ,yellow-intense)))
- `(helm-ls-git-conflict-face ((,class :inherit bold :foreground ,red-intense)))
- `(helm-ls-git-deleted-and-staged-face ((,class :foreground ,red-nuanced-fg)))
- `(helm-ls-git-deleted-not-staged-face ((,class :foreground ,red)))
- `(helm-ls-git-modified-and-staged-face ((,class :foreground ,yellow-nuanced-fg)))
- `(helm-ls-git-modified-not-staged-face ((,class :foreground ,yellow)))
- `(helm-ls-git-renamed-modified-face ((,class :foreground ,magenta)))
- `(helm-ls-git-untracked-face ((,class :foreground ,fg-special-cold)))
-;;;;; helm-switch-shell
- `(helm-switch-shell-new-shell-face ((,class :inherit modus-themes-completion-match-0)))
-;;;;; helm-xref
- `(helm-xref-file-name ((,class :inherit modus-themes-bold :foreground ,fg-special-cold)))
+ `(golden-ratio-scroll-highlight-line-face ((,c :background ,bg-cyan-subtle :foreground ,fg-main)))
;;;;; helpful
- `(helpful-heading ((,class :inherit modus-themes-heading-1)))
+ `(helpful-heading ((,c :inherit modus-themes-heading-1)))
;;;;; highlight region or ad-hoc regexp
;; HACK 2022-06-23: The :inverse-video prevents hl-line-mode from
;; overriding the background. Such an override really defeats the
;; purpose of setting those highlights.
;;
- ;; NOTE 2022-10-04: We do not use the ,class here but instead
+ ;; NOTE 2022-10-04: We do not use the ,c here but instead
;; hardcode color values. We have to do this as the themes lack
;; entries in their palette for such an edge case. Defining those
;; entries is not appropriate.
@@ -5714,26 +2475,26 @@ by virtue of calling either of `modus-themes-load-operandi' and
:background "white" :foreground "#227f9f" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#66cbdc" :inverse-video t)))
- `(hi-black-b ((,class :inverse-video t)))
- `(hi-black-hb ((,class :background ,bg-main :foreground ,fg-alt :inverse-video t)))
+ `(hi-black-b ((,c :inverse-video t)))
+ `(hi-black-hb ((,c :background ,bg-main :foreground ,fg-dim :inverse-video t)))
`(hi-blue ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#3366dd" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#aaccff" :inverse-video t)))
- `(hi-blue-b ((,class :inherit (bold hi-blue))))
+ `(hi-blue-b ((,c :inherit (bold hi-blue))))
`(hi-green ((((class color) (min-colors 88) (background light))
- :background "white" :foreground "#008a00" :inverse-video t)
- (((class color) (min-colors 88) (background dark))
- :background "black" :foreground "#66dd66" :inverse-video t)))
- `(hi-green-b ((,class :inherit (bold hi-green))))
+ :background "white" :foreground "#008a00" :inverse-video t)
+ (((class color) (min-colors 88) (background dark))
+ :background "black" :foreground "#66dd66" :inverse-video t)))
+ `(hi-green-b ((,c :inherit (bold hi-green))))
`(hi-pink ((((class color) (min-colors 88) (background light))
- :background "white" :foreground "#bd30aa" :inverse-video t)
- (((class color) (min-colors 88) (background dark))
- :background "black" :foreground "#ff88ee" :inverse-video t)))
+ :background "white" :foreground "#bd30aa" :inverse-video t)
+ (((class color) (min-colors 88) (background dark))
+ :background "black" :foreground "#ff88ee" :inverse-video t)))
`(hi-red-b ((((class color) (min-colors 88) (background light))
- :background "white" :foreground "#dd0000" :inverse-video t)
- (((class color) (min-colors 88) (background dark))
- :background "black" :foreground "#f06666" :inverse-video t)))
+ :background "white" :foreground "#dd0000" :inverse-video t)
+ (((class color) (min-colors 88) (background dark))
+ :background "black" :foreground "#f06666" :inverse-video t)))
`(hi-salmon ((((class color) (min-colors 88) (background light))
:background "white" :foreground "#bf555a" :inverse-video t)
(((class color) (min-colors 88) (background dark))
@@ -5742,1734 +2503,1298 @@ by virtue of calling either of `modus-themes-load-operandi' and
:background "white" :foreground "#af6400" :inverse-video t)
(((class color) (min-colors 88) (background dark))
:background "black" :foreground "#faea00" :inverse-video t)))
- `(highlight ((,class ,@(if modus-themes-intense-mouseovers
- (list :background blue-intense-bg :foreground fg-main)
- (list :background cyan-subtle-bg :foreground fg-main)))))
- `(highlight-changes ((,class :foreground ,red-alt :underline nil)))
- `(highlight-changes-delete ((,class :background ,red-nuanced-bg
- :foreground ,red :underline t)))
- `(hl-line ((,class :inherit modus-themes-hl-line)))
-;;;;; highlight-indentation
- `(highlight-indentation-face ((,class :inherit modus-themes-hl-line)))
- `(highlight-indentation-current-column-face ((,class :background ,bg-active)))
+ `(highlight-changes ((,c :foreground ,warning :underline nil)))
+ `(highlight-changes-delete ((,c :foreground ,err :underline t)))
+ `(hl-line ((,c :background ,bg-hl-line :extend t)))
;;;;; highlight-numbers
- `(highlight-numbers-number ((,class :foreground ,blue-alt-other)))
+ `(highlight-numbers-number ((,c :foreground ,constant)))
;;;;; highlight-thing
- `(highlight-thing ((,class :inherit modus-themes-special-calm)))
-;;;;; hl-defined
- `(hdefd-functions ((,class :foreground ,blue)))
- `(hdefd-undefined ((,class :foreground ,red-alt)))
- `(hdefd-variables ((,class :foreground ,cyan-alt)))
+ `(highlight-thing ((,c :inherit match)))
;;;;; hl-fill-column
- `(hl-fill-column-face ((,class :background ,bg-active :foreground ,fg-active)))
+ `(hl-fill-column-face ((,c :background ,bg-active)))
;;;;; hl-todo
- `(hl-todo ((,class :inherit (bold modus-themes-slant) :foreground ,red-alt-other)))
+ `(hl-todo ((,c :inherit (bold font-lock-comment-face) :foreground ,err)))
;;;;; hydra
- `(hydra-face-amaranth ((,class :inherit bold :foreground ,yellow-alt)))
- `(hydra-face-blue ((,class :inherit bold :foreground ,blue)))
- `(hydra-face-pink ((,class :inherit bold :foreground ,magenta-alt-faint)))
- `(hydra-face-red ((,class :inherit bold :foreground ,red-faint)))
- `(hydra-face-teal ((,class :inherit bold :foreground ,cyan-alt-other)))
+ `(hydra-face-amaranth ((,c :inherit bold :foreground ,yellow-warmer)))
+ `(hydra-face-blue ((,c :inherit bold :foreground ,blue)))
+ `(hydra-face-pink ((,c :inherit bold :foreground ,magenta)))
+ `(hydra-face-red ((,c :inherit bold :foreground ,red-faint)))
+ `(hydra-face-teal ((,c :inherit bold :foreground ,cyan-cooler)))
;;;;; icomplete
- `(icomplete-first-match ((,class :inherit modus-themes-completion-match-0)))
- `(icomplete-selected-match ((,class :inherit modus-themes-completion-selected)))
-;;;;; icomplete-vertical
- `(icomplete-vertical-separator ((,class :inherit shadow)))
+ `(icomplete-first-match ((,c :inherit modus-themes-completion-match-0)))
+ `(icomplete-selected-match ((,c :inherit modus-themes-completion-selected)))
;;;;; ido-mode
- `(ido-first-match ((,class :inherit modus-themes-completion-match-0)))
- `(ido-incomplete-regexp ((,class :inherit error)))
- `(ido-indicator ((,class :inherit modus-themes-subtle-yellow)))
- `(ido-only-match ((,class :inherit ido-first-match)))
- `(ido-subdir ((,class :foreground ,blue)))
- `(ido-virtual ((,class :foreground ,magenta-alt-other)))
+ `(ido-first-match ((,c :inherit modus-themes-completion-match-0)))
+ `(ido-incomplete-regexp ((,c :inherit error)))
+ `(ido-indicator ((,c :inherit bold)))
+ `(ido-only-match ((,c :inherit ido-first-match)))
+ `(ido-subdir ((,c :foreground ,accent-0)))
+ `(ido-virtual ((,c :foreground ,accent-1)))
;;;;; iedit
- `(iedit-occurrence ((,class :inherit modus-themes-refine-blue)))
- `(iedit-read-only-occurrence ((,class :inherit modus-themes-intense-yellow)))
+ `(iedit-occurrence ((,c :inherit modus-themes-intense-blue)))
+ `(iedit-read-only-occurrence ((,c :inherit modus-themes-intense-yellow)))
;;;;; iflipb
- `(iflipb-current-buffer-face ((,class :inherit bold :foreground ,cyan-alt)))
- `(iflipb-other-buffer-face ((,class :inherit shadow)))
+ `(iflipb-current-buffer-face ((,c :inherit bold :foreground ,name)))
+ `(iflipb-other-buffer-face ((,c :inherit shadow)))
;;;;; image-dired
- `(image-dired-thumb-flagged ((,class :background ,red-intense-bg)))
- `(image-dired-thumb-header-file-name ((,class :inherit bold)))
- `(image-dired-thumb-header-file-size ((,class :foreground ,blue-active)))
- `(image-dired-thumb-mark ((,class :inherit modus-themes-grue-background-intense)))
+ `(image-dired-thumb-flagged ((,c :inherit modus-themes-intense-red)))
+ `(image-dired-thumb-header-file-name ((,c :inherit bold)))
+ `(image-dired-thumb-header-file-size ((,c :foreground ,constant)))
+ `(image-dired-thumb-mark ((,c :inherit modus-themes-intense-cyan)))
;;;;; imenu-list
- `(imenu-list-entry-face-0 ((,class :foreground ,cyan)))
- `(imenu-list-entry-face-1 ((,class :foreground ,blue)))
- `(imenu-list-entry-face-2 ((,class :foreground ,cyan-alt-other)))
- `(imenu-list-entry-face-3 ((,class :foreground ,blue-alt)))
- `(imenu-list-entry-subalist-face-0 ((,class :inherit bold :foreground ,magenta-alt-other :underline t)))
- `(imenu-list-entry-subalist-face-1 ((,class :inherit bold :foreground ,magenta :underline t)))
- `(imenu-list-entry-subalist-face-2 ((,class :inherit bold :foreground ,green-alt-other :underline t)))
- `(imenu-list-entry-subalist-face-3 ((,class :inherit bold :foreground ,red-alt-other :underline t)))
+ `(imenu-list-entry-face-0 ((,c :foreground ,fg-heading-0)))
+ `(imenu-list-entry-face-1 ((,c :foreground ,fg-heading-1)))
+ `(imenu-list-entry-face-2 ((,c :foreground ,fg-heading-2)))
+ `(imenu-list-entry-face-3 ((,c :foreground ,fg-heading-3)))
+ `(imenu-list-entry-subalist-face-0 ((,c :inherit bold :foreground ,fg-heading-4 :underline t)))
+ `(imenu-list-entry-subalist-face-1 ((,c :inherit bold :foreground ,fg-heading-5 :underline t)))
+ `(imenu-list-entry-subalist-face-2 ((,c :inherit bold :foreground ,fg-heading-6 :underline t)))
+ `(imenu-list-entry-subalist-face-3 ((,c :inherit bold :foreground ,fg-heading-7 :underline t)))
;;;;; indium
- `(indium-breakpoint-face ((,class :foreground ,red-active)))
- `(indium-frame-url-face ((,class :inherit (shadow button))))
- `(indium-keyword-face ((,class :inherit font-lock-keyword-face)))
- `(indium-litable-face ((,class :inherit modus-themes-slant :foreground ,fg-special-warm)))
- `(indium-repl-error-face ((,class :inherit error)))
- `(indium-repl-prompt-face ((,class :inherit modus-themes-prompt)))
- `(indium-repl-stdout-face ((,class :foreground ,fg-main)))
+ `(indium-breakpoint-face ((,c :foreground ,err)))
+ `(indium-frame-url-face ((,c :inherit (shadow button))))
+ `(indium-keyword-face ((,c :inherit font-lock-keyword-face)))
+ `(indium-litable-face ((,c :inherit modus-themes-slant)))
+ `(indium-repl-error-face ((,c :inherit error)))
+ `(indium-repl-prompt-face ((,c :inherit modus-themes-prompt)))
+ `(indium-repl-stdout-face (( )))
;;;;; info
- `(Info-quoted ((,class :inherit modus-themes-markup-verbatim))) ; the capitalization is canonical
- `(info-header-node ((,class :inherit (shadow bold))))
- `(info-header-xref ((,class :foreground ,blue-active)))
- `(info-index-match ((,class :inherit match)))
- `(info-menu-header ((,class :inherit modus-themes-pseudo-header)))
- `(info-menu-star ((,class :foreground ,red)))
- `(info-node ((,class :inherit bold)))
- `(info-title-1 ((,class :inherit modus-themes-heading-1)))
- `(info-title-2 ((,class :inherit modus-themes-heading-2)))
- `(info-title-3 ((,class :inherit modus-themes-heading-3)))
- `(info-title-4 ((,class :inherit modus-themes-heading-4)))
+ `(Info-quoted ((,c :inherit modus-themes-prose-verbatim))) ; the capitalization is canonical
+ `(info-header-node ((,c :inherit (shadow bold))))
+ `(info-header-xref ((,c :foreground ,fg-link)))
+ `(info-index-match ((,c :inherit match)))
+ `(info-menu-header ((,c :inherit bold)))
+ `(info-menu-star ((,c :foreground ,red-intense)))
+ `(info-node ((,c :inherit bold)))
+ `(info-title-1 ((,c :inherit modus-themes-heading-1)))
+ `(info-title-2 ((,c :inherit modus-themes-heading-2)))
+ `(info-title-3 ((,c :inherit modus-themes-heading-3)))
+ `(info-title-4 ((,c :inherit modus-themes-heading-4)))
;;;;; info+ (info-plus)
- `(info-command-ref-item ((,class :inherit font-lock-function-name-face)))
- `(info-constant-ref-item ((,class :inherit font-lock-constant-face)))
- `(info-custom-delimited ((,class :inherit modus-themes-markup-verbatim)))
- `(info-double-quoted-name ((,class :inherit font-lock-string-face)))
+ `(info-command-ref-item ((,c :inherit font-lock-function-name-face)))
+ `(info-constant-ref-item ((,c :inherit font-lock-constant-face)))
+ `(info-custom-delimited ((,c :inherit modus-themes-prose-verbatim)))
+ `(info-double-quoted-name ((,c :inherit font-lock-string-face)))
`(info-file (( )))
- `(info-function-ref-item ((,class :inherit font-lock-function-name-face)))
- `(info-glossary-word ((,class :inherit modus-themes-box-button)))
+ `(info-function-ref-item ((,c :inherit font-lock-function-name-face)))
+ `(info-glossary-word ((,c :inherit modus-themes-button)))
`(info-indented-text (( )))
`(info-isolated-backquote (( )))
`(info-isolated-quote (( )))
- `(info-macro-ref-item ((,class :inherit font-lock-keyword-face)))
- `(info-menu ((,class :inherit bold)))
- `(info-quoted-name ((,class :inherit modus-themes-markup-verbatim)))
- `(info-reference-item ((,class :inherit bold)))
- `(info-special-form-ref-item ((,class :inherit warning)))
- `(info-string ((,class :inherit font-lock-string-face)))
- `(info-syntax-class-item ((,class :inherit modus-themes-markup-code)))
- `(info-user-option-ref-item ((,class :inherit font-lock-variable-name-face)))
- `(info-variable-ref-item ((,class :inherit font-lock-variable-name-face)))
+ `(info-macro-ref-item ((,c :inherit font-lock-keyword-face)))
+ `(info-menu ((,c :inherit bold)))
+ `(info-quoted-name ((,c :inherit modus-themes-prose-verbatim)))
+ `(info-reference-item ((,c :inherit bold)))
+ `(info-special-form-ref-item ((,c :inherit warning)))
+ `(info-string ((,c :inherit font-lock-string-face)))
+ `(info-syntax-class-item ((,c :inherit modus-themes-prose-code)))
+ `(info-user-option-ref-item ((,c :inherit font-lock-variable-name-face)))
+ `(info-variable-ref-item ((,c :inherit font-lock-variable-name-face)))
;;;;; info-colors
- `(info-colors-lisp-code-block ((,class :inherit modus-themes-fixed-pitch)))
- `(info-colors-ref-item-command ((,class :inherit font-lock-function-name-face)))
- `(info-colors-ref-item-constant ((,class :inherit font-lock-constant-face)))
- `(info-colors-ref-item-function ((,class :inherit font-lock-function-name-face)))
- `(info-colors-ref-item-macro ((,class :inherit font-lock-keyword-face)))
- `(info-colors-ref-item-other ((,class :inherit font-lock-doc-face)))
- `(info-colors-ref-item-special-form ((,class :inherit font-lock-keyword-face)))
- `(info-colors-ref-item-syntax-class ((,class :inherit font-lock-builtin-face)))
- `(info-colors-ref-item-type ((,class :inherit font-lock-type-face)))
- `(info-colors-ref-item-user-option ((,class :inherit font-lock-variable-name-face)))
- `(info-colors-ref-item-variable ((,class :inherit font-lock-variable-name-face)))
-;;;;; interaction-log
- `(ilog-buffer-face ((,class :foreground ,magenta-alt-other)))
- `(ilog-change-face ((,class :foreground ,magenta-alt)))
- `(ilog-echo-face ((,class :foreground ,yellow-alt-other)))
- `(ilog-load-face ((,class :foreground ,green)))
- `(ilog-message-face ((,class :inherit shadow)))
- `(ilog-non-change-face ((,class :foreground ,blue)))
+ `(info-colors-lisp-code-block ((,c :inherit modus-themes-fixed-pitch)))
+ `(info-colors-ref-item-command ((,c :inherit font-lock-function-name-face)))
+ `(info-colors-ref-item-constant ((,c :inherit font-lock-constant-face)))
+ `(info-colors-ref-item-function ((,c :inherit font-lock-function-name-face)))
+ `(info-colors-ref-item-macro ((,c :inherit font-lock-keyword-face)))
+ `(info-colors-ref-item-other ((,c :inherit font-lock-doc-face)))
+ `(info-colors-ref-item-special-form ((,c :inherit font-lock-keyword-face)))
+ `(info-colors-ref-item-syntax-class ((,c :inherit font-lock-builtin-face)))
+ `(info-colors-ref-item-type ((,c :inherit font-lock-type-face)))
+ `(info-colors-ref-item-user-option ((,c :inherit font-lock-variable-name-face)))
+ `(info-colors-ref-item-variable ((,c :inherit font-lock-variable-name-face)))
;;;;; ioccur
- `(ioccur-cursor ((,class :foreground ,fg-main)))
- `(ioccur-invalid-regexp ((,class :foreground ,red)))
- `(ioccur-match-face ((,class :inherit modus-themes-special-calm)))
- `(ioccur-match-overlay-face ((,class :inherit modus-themes-special-cold :extend t)))
- `(ioccur-num-line-face ((,class :foreground ,fg-special-warm)))
- `(ioccur-overlay-face ((,class :inherit modus-themes-refine-blue :extend t)))
- `(ioccur-regexp-face ((,class :inherit (modus-themes-intense-magenta bold))))
- `(ioccur-title-face ((,class :inherit modus-themes-pseudo-header :foreground ,fg-special-cold)))
+ `(ioccur-cursor ((,c :foreground ,fg-main)))
+ `(ioccur-invalid-regexp ((,c :inherit error)))
+ `(ioccur-match-face ((,c :inherit match)))
+ `(ioccur-match-overlay-face ((,c :background ,bg-inactive :extend t)))
+ `(ioccur-num-line-face ((,c :inherit shadow)))
+ `(ioccur-overlay-face ((,c :background ,bg-hl-line :extend t)))
+ `(ioccur-regexp-face ((,c :inherit (modus-themes-search-current bold))))
+ `(ioccur-title-face ((,c :inherit bold :foreground ,name)))
;;;;; isearch, occur, and the like
- `(isearch ((,class :inherit modus-themes-search-success)))
- `(isearch-fail ((,class :inherit modus-themes-refine-red)))
- `(isearch-group-1 ((,class :inherit modus-themes-refine-blue)))
- `(isearch-group-2 ((,class :inherit modus-themes-refine-magenta)))
- `(lazy-highlight ((,class :inherit modus-themes-search-success-lazy)))
- `(match ((,class :inherit modus-themes-special-calm)))
- `(query-replace ((,class :inherit modus-themes-intense-red)))
+ `(isearch ((,c :inherit modus-themes-search-current)))
+ `(isearch-fail ((,c :inherit modus-themes-intense-red)))
+ `(isearch-group-1 ((,c :inherit modus-themes-intense-blue)))
+ `(isearch-group-2 ((,c :inherit modus-themes-intense-magenta)))
+ `(lazy-highlight ((,c :inherit modus-themes-search-lazy)))
+ `(match ((,c :background ,bg-magenta-subtle :foreground ,fg-main)))
+ `(query-replace ((,c :inherit modus-themes-intense-red)))
;;;;; ivy
- `(ivy-action ((,class :inherit modus-themes-key-binding)))
- `(ivy-confirm-face ((,class :inherit success)))
- `(ivy-current-match ((,class :inherit modus-themes-completion-selected)))
- `(ivy-cursor ((,class :background ,fg-main :foreground ,bg-main)))
- `(ivy-highlight-face ((,class :foreground ,magenta)))
- `(ivy-match-required-face ((,class :inherit error)))
+ `(ivy-action ((,c :inherit modus-themes-key-binding)))
+ `(ivy-confirm-face ((,c :inherit success)))
+ `(ivy-current-match ((,c :inherit modus-themes-completion-selected)))
+ `(ivy-match-required-face ((,c :inherit error)))
`(ivy-minibuffer-match-face-1 (( )))
- `(ivy-minibuffer-match-face-2 ((,class :inherit modus-themes-completion-match-0)))
- `(ivy-minibuffer-match-face-3 ((,class :inherit modus-themes-completion-match-1)))
- `(ivy-minibuffer-match-face-4 ((,class :inherit modus-themes-completion-match-2)))
- `(ivy-org ((,class :foreground ,cyan-alt-other)))
- `(ivy-remote ((,class :foreground ,magenta)))
- `(ivy-separator ((,class :inherit shadow)))
- `(ivy-subdir ((,class :foreground ,blue)))
- `(ivy-virtual ((,class :foreground ,magenta-alt-other)))
+ `(ivy-minibuffer-match-face-2 ((,c :inherit modus-themes-completion-match-0)))
+ `(ivy-minibuffer-match-face-3 ((,c :inherit modus-themes-completion-match-1)))
+ `(ivy-minibuffer-match-face-4 ((,c :inherit modus-themes-completion-match-2)))
+ `(ivy-remote ((,c :inherit italic)))
+ `(ivy-separator ((,c :inherit shadow)))
+ `(ivy-subdir ((,c :foreground ,accent-0)))
+ `(ivy-virtual ((,c :foreground ,accent-1)))
;;;;; ivy-posframe
- `(ivy-posframe-border ((,class :background ,fg-window-divider-inner)))
- `(ivy-posframe-cursor ((,class :background ,fg-main :foreground ,bg-main)))
+ `(ivy-posframe-border ((,c :background ,border)))
+ `(ivy-posframe-cursor ((,c :background ,fg-main :foreground ,bg-main)))
;;;;; jira (org-jira)
- `(jiralib-comment-face ((,class :background ,bg-alt)))
- `(jiralib-comment-header-face ((,class :inherit bold)))
- `(jiralib-issue-info-face ((,class :inherit modus-themes-special-warm)))
- `(jiralib-issue-info-header-face ((,class :inherit (modus-themes-special-warm bold))))
- `(jiralib-issue-summary-face ((,class :inherit bold)))
- `(jiralib-link-filter-face ((,class :underline t)))
- `(jiralib-link-issue-face ((,class :underline t)))
- `(jiralib-link-project-face ((,class :underline t)))
+ `(jiralib-comment-face ((,c :background ,bg-inactive)))
+ `(jiralib-comment-header-face ((,c :inherit bold)))
+ `(jiralib-issue-info-face ((,c :background ,bg-inactive)))
+ `(jiralib-issue-info-header-face ((,c :inherit bold :background ,bg-inactive)))
+ `(jiralib-issue-summary-face ((,c :inherit bold)))
+ `(jiralib-link-filter-face ((,c :underline t)))
+ `(jiralib-link-issue-face ((,c :underline t)))
+ `(jiralib-link-project-face ((,c :underline t)))
;;;;; journalctl-mode
- `(journalctl-error-face ((,class :inherit error)))
- `(journalctl-finished-face ((,class :inherit success)))
- `(journalctl-host-face ((,class :foreground ,blue)))
- `(journalctl-process-face ((,class :foreground ,cyan-alt-other)))
- `(journalctl-starting-face ((,class :foreground ,green)))
- `(journalctl-timestamp-face ((,class :foreground ,fg-special-cold)))
- `(journalctl-warning-face ((,class :inherit warning)))
+ `(journalctl-error-face ((,c :inherit error)))
+ `(journalctl-finished-face ((,c :inherit success)))
+ `(journalctl-host-face ((,c :foreground ,name)))
+ `(journalctl-process-face ((,c :foreground ,warning)))
+ `(journalctl-starting-face ((,c :foreground ,info)))
+ `(journalctl-timestamp-face ((,c :foreground ,date-common)))
+ `(journalctl-warning-face ((,c :inherit warning)))
;;;;; js2-mode
- `(js2-error ((,class :inherit modus-themes-lang-error)))
- `(js2-external-variable ((,class :inherit font-lock-variable-name-face)))
- `(js2-function-call ((,class :inherit font-lock-function-name-face)))
- `(js2-function-param ((,class :inherit font-lock-constant-face)))
- `(js2-instance-member ((,class :inherit font-lock-keyword-face)))
- `(js2-jsdoc-html-tag-delimiter ((,class :foreground ,fg-main)))
- `(js2-jsdoc-html-tag-name ((,class :inherit font-lock-function-name-face)))
- `(js2-jsdoc-tag ((,class :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal)))
- `(js2-jsdoc-type ((,class :inherit (font-lock-type-face font-lock-comment-face) :weight normal)))
- `(js2-jsdoc-value ((,class :inherit (font-lock-constant-face font-lock-comment-face) :weight normal)))
- `(js2-object-property ((,class :foreground ,fg-main)))
- `(js2-object-property-access ((,class :foreground ,fg-main)))
- `(js2-private-function-call ((,class :inherit font-lock-preprocessor-face)))
- `(js2-private-member ((,class :inherit font-lock-warning-face)))
- `(js2-warning ((,class :inherit modus-themes-lang-warning)))
+ `(js2-error ((,c :inherit modus-themes-lang-error)))
+ `(js2-external-variable ((,c :inherit font-lock-variable-name-face)))
+ `(js2-function-call ((,c :inherit font-lock-function-name-face)))
+ `(js2-function-param ((,c :inherit font-lock-constant-face)))
+ `(js2-instance-member ((,c :inherit font-lock-keyword-face)))
+ `(js2-jsdoc-html-tag-delimiter ((,c :foreground ,fg-main)))
+ `(js2-jsdoc-html-tag-name ((,c :inherit font-lock-function-name-face)))
+ `(js2-jsdoc-tag ((,c :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal)))
+ `(js2-jsdoc-type ((,c :inherit (font-lock-type-face font-lock-comment-face) :weight normal)))
+ `(js2-jsdoc-value ((,c :inherit (font-lock-constant-face font-lock-comment-face) :weight normal)))
+ `(js2-object-property ((,c :foreground ,fg-main)))
+ `(js2-object-property-access ((,c :foreground ,fg-main)))
+ `(js2-private-function-call ((,c :inherit font-lock-preprocessor-face)))
+ `(js2-private-member ((,c :inherit font-lock-warning-face)))
+ `(js2-warning ((,c :inherit modus-themes-lang-warning)))
;;;;; julia
- `(julia-macro-face ((,class :inherit font-lock-builtin-face)))
- `(julia-quoted-symbol-face ((,class :inherit font-lock-constant-face)))
-;;;;; jupyter
- `(jupyter-eval-overlay ((,class :inherit bold :foreground ,blue)))
- `(jupyter-repl-input-prompt ((,class :foreground ,cyan-alt-other)))
- `(jupyter-repl-output-prompt ((,class :foreground ,magenta-alt-other)))
- `(jupyter-repl-traceback ((,class :inherit modus-themes-intense-red)))
+ `(julia-macro-face ((,c :inherit font-lock-builtin-face)))
+ `(julia-quoted-symbol-face ((,c :inherit font-lock-constant-face)))
;;;;; kaocha-runner
- `(kaocha-runner-error-face ((,class :inherit error)))
- `(kaocha-runner-success-face ((,class :inherit success)))
- `(kaocha-runner-warning-face ((,class :inherit warning)))
+ `(kaocha-runner-error-face ((,c :inherit error)))
+ `(kaocha-runner-success-face ((,c :inherit success)))
+ `(kaocha-runner-warning-face ((,c :inherit warning)))
;;;;; keycast
- `(keycast-command ((,class :inherit bold :foreground ,blue-active)))
- ;; FIXME 2022-05-03: The padding breaks `keycast-tab-bar-mode'
- `(keycast-key ((,class ;; ,@(modus-themes--mode-line-padded-box blue-active)
- :background ,blue-active :foreground ,bg-main)))
+ `(keycast-command ((,c :inherit bold)))
+ `(keycast-key ((,c :background ,keybind :foreground ,bg-main)))
;;;;; ledger-mode
- `(ledger-font-auto-xact-face ((,class :foreground ,magenta)))
- `(ledger-font-account-name-face ((,class :foreground ,fg-special-cold)))
- `(ledger-font-directive-face ((,class :foreground ,magenta-alt-other)))
- `(ledger-font-posting-date-face ((,class :inherit bold :foreground ,fg-main)))
- `(ledger-font-periodic-xact-face ((,class :foreground ,cyan-alt-other)))
- `(ledger-font-posting-amount-face ((,class :foreground ,fg-special-mild)))
- `(ledger-font-payee-cleared-face ((,class :foreground ,blue-alt)))
- `(ledger-font-payee-pending-face ((,class :foreground ,yellow)))
- `(ledger-font-payee-uncleared-face ((,class :foreground ,red-alt-other)))
- `(ledger-font-xact-highlight-face ((,class :background ,bg-hl-alt)))
+ `(ledger-font-auto-xact-face ((,c :inherit font-lock-builtin-face)))
+ `(ledger-font-account-name-face ((,c :foreground ,name)))
+ `(ledger-font-directive-face ((,c :inherit font-lock-keyword-face)))
+ `(ledger-font-posting-date-face ((,c :inherit modus-themes-bold :foreground ,date-common)))
+ `(ledger-font-periodic-xact-face ((,c :inherit font-lock-variable-name-face)))
+ `(ledger-font-posting-amount-face ((,c :inherit font-lock-constant-face)))
+ `(ledger-font-payee-cleared-face ((,c :inherit success)))
+ `(ledger-font-payee-pending-face ((,c :inherit warning)))
+ `(ledger-font-payee-uncleared-face ((,c :inherit error)))
+ `(ledger-font-xact-highlight-face ((,c :background ,bg-hl-line :extend t)))
;;;;; leerzeichen
- `(leerzeichen ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
+ `(leerzeichen ((,c :background ,bg-inactive)))
;;;;; line numbers (display-line-numbers-mode and global variant)
;; Here we cannot inherit `modus-themes-fixed-pitch'. We need to
;; fall back to `default' otherwise line numbers do not scale when
;; using `text-scale-adjust'.
- `(line-number
- ((,class :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default)
- ,@(modus-themes--line-numbers
- fg-alt bg-dim
- fg-unfocused))))
- `(line-number-current-line
- ((,class :inherit (bold line-number)
- ,@(modus-themes--line-numbers
- fg-main bg-active
- blue-alt-other))))
- `(line-number-major-tick
- ((,class :inherit (bold line-number)
- ,@(modus-themes--line-numbers
- yellow-nuanced-fg yellow-nuanced-bg
- red-alt))))
- `(line-number-minor-tick
- ((,class :inherit (bold line-number)
- ,@(modus-themes--line-numbers
- fg-alt bg-inactive
- fg-inactive))))
-;;;;; lsp-mode
- `(lsp-face-highlight-read ((,class :inherit modus-themes-subtle-blue :underline t)))
- `(lsp-face-highlight-textual ((,class :inherit modus-themes-subtle-blue)))
- `(lsp-face-highlight-write ((,class :inherit (modus-themes-refine-blue bold))))
- `(lsp-face-semhl-constant ((,class :foreground ,blue-alt-other)))
- `(lsp-face-semhl-deprecated ((,class :inherit modus-themes-lang-warning)))
- `(lsp-face-semhl-enummember ((,class :foreground ,blue-alt-other)))
- `(lsp-face-semhl-field ((,class :foreground ,cyan-alt)))
- `(lsp-face-semhl-field-static ((,class :inherit modus-themes-slant :foreground ,cyan-alt)))
- `(lsp-face-semhl-function ((,class :foreground ,magenta)))
- `(lsp-face-semhl-method ((,class :foreground ,magenta)))
- `(lsp-face-semhl-namespace ((,class :inherit modus-themes-bold :foreground ,magenta-alt)))
- `(lsp-face-semhl-preprocessor ((,class :foreground ,red-alt-other)))
- `(lsp-face-semhl-static-method ((,class :inherit modus-themes-slant :foreground ,magenta)))
- `(lsp-face-semhl-type-class ((,class :foreground ,magenta-alt)))
- `(lsp-face-semhl-type-enum ((,class :foreground ,magenta-alt)))
- `(lsp-face-semhl-type-primitive ((,class :inherit modus-themes-slant :foreground ,magenta-alt)))
- `(lsp-face-semhl-type-template ((,class :inherit modus-themes-slant :foreground ,magenta-alt)))
- `(lsp-face-semhl-type-typedef ((,class :inherit modus-themes-slant :foreground ,magenta-alt)))
- `(lsp-face-semhl-variable ((,class :foreground ,cyan)))
- `(lsp-face-semhl-variable-local ((,class :foreground ,cyan)))
- `(lsp-face-semhl-variable-parameter ((,class :foreground ,cyan-alt-other)))
- `(lsp-lens-face ((,class :inherit shadow :height 0.8)))
- `(lsp-lens-mouse-face ((,class :height 0.8 :foreground ,blue-alt-other :underline t)))
- `(lsp-ui-doc-background ((,class :background ,bg-alt)))
- `(lsp-ui-doc-header ((,class :background ,bg-header :foreground ,fg-header)))
- `(lsp-ui-doc-url ((,class :inherit button)))
- `(lsp-ui-peek-filename ((,class :foreground ,fg-special-warm)))
- `(lsp-ui-peek-footer ((,class :background ,bg-header :foreground ,fg-header)))
- `(lsp-ui-peek-header ((,class :background ,bg-header :foreground ,fg-header)))
- `(lsp-ui-peek-highlight ((,class :inherit modus-themes-subtle-blue)))
- `(lsp-ui-peek-line-number ((,class :inherit shadow)))
- `(lsp-ui-peek-list ((,class :background ,bg-dim)))
- `(lsp-ui-peek-peek ((,class :background ,bg-alt)))
- `(lsp-ui-peek-selection ((,class :inherit modus-themes-subtle-cyan)))
- `(lsp-ui-sideline-code-action ((,class :foreground ,yellow)))
- `(lsp-ui-sideline-current-symbol ((,class :inherit bold :height 0.99 :box (:line-width -1 :style nil) :foreground ,fg-main)))
- `(lsp-ui-sideline-symbol ((,class :inherit bold :height 0.99 :box (:line-width -1 :style nil) :foreground ,fg-alt)))
- `(lsp-ui-sideline-symbol-info ((,class :inherit italic :height 0.99)))
-;;;;; macrostep
- `(macrostep-compiler-macro-face ((,class :inherit italic)))
- `(macrostep-expansion-highlight-face ((,class :background ,blue-nuanced-bg)))
- `(macrostep-gensym-1 ((,class :inherit bold :foreground ,blue :box t)))
- `(macrostep-gensym-2 ((,class :inherit bold :foreground ,green :box t)))
- `(macrostep-gensym-3 ((,class :inherit bold :foreground ,yellow :box t)))
- `(macrostep-gensym-4 ((,class :inherit bold :foreground ,red :box t)))
- `(macrostep-gensym-5 ((,class :inherit bold :foreground ,magenta :box t)))
- `(macrostep-macro-face ((,class :inherit button :foreground ,green-alt)))
+ `(line-number ((,c :inherit ,(if modus-themes-mixed-fonts '(fixed-pitch default) 'default) :background ,bg-line-number-inactive :foreground ,fg-line-number-inactive)))
+ `(line-number-current-line ((,c :inherit (bold line-number) :background ,bg-line-number-active :foreground ,fg-line-number-active)))
+ `(line-number-major-tick ((,c :inherit line-number :foreground ,err)))
+ `(line-number-minor-tick ((,c :inherit line-number :foreground ,fg-alt)))
;;;;; magit
- `(magit-bisect-bad ((,class :inherit error)))
- `(magit-bisect-good ((,class :inherit success)))
- `(magit-bisect-skip ((,class :inherit warning)))
- `(magit-blame-date ((,class :foreground ,blue)))
- `(magit-blame-dimmed ((,class :inherit (shadow modus-themes-reset-hard))))
- `(magit-blame-hash ((,class :foreground ,fg-special-warm)))
- `(magit-blame-heading ((,class :inherit modus-themes-reset-hard :background ,bg-alt :extend t)))
- `(magit-blame-highlight ((,class :inherit modus-themes-nuanced-cyan)))
- `(magit-blame-margin ((,class :inherit (magit-blame-highlight modus-themes-reset-hard))))
- `(magit-blame-name ((,class :foreground ,magenta-alt-other)))
- `(magit-blame-summary ((,class :foreground ,cyan-alt-other)))
- ;; ;; NOTE 2021-11-23: we do not set the `magit-branch-current'
- ;; ;; because its definition checks if the :box attribute can be set
- ;; ;; and if not, it uses :inverse-video. Useful for terminal
- ;; ;; emulators.
- ;;
- ;; `(magit-branch-current ((,class :foreground ,blue-alt-other :box t)))
- `(magit-branch-local ((,class :foreground ,blue-alt)))
- `(magit-branch-remote ((,class :foreground ,magenta-alt)))
- `(magit-branch-remote-head ((,class :foreground ,magenta-alt-other :box t)))
- `(magit-branch-upstream ((,class :inherit italic)))
- `(magit-branch-warning ((,class :inherit warning)))
- `(magit-cherry-equivalent ((,class :background ,bg-main :foreground ,magenta-intense)))
- `(magit-cherry-unmatched ((,class :background ,bg-main :foreground ,cyan-intense)))
- ;; NOTE: here we break from the pattern of inheriting from the
- ;; modus-themes-diff-* faces, though only for the standard actions,
- ;; not the highlighted ones. This is because Magit's interaction
- ;; model relies on highlighting the current diff hunk.
- `(magit-diff-added ((,class ,@(modus-themes--diff
- bg-diff-added fg-diff-added
- green-nuanced-bg fg-diff-added
- bg-diff-added-deuteran fg-diff-added-deuteran
- blue-nuanced-bg fg-diff-added-deuteran))))
- `(magit-diff-added-highlight ((,class :inherit modus-themes-diff-focus-added)))
- `(magit-diff-base ((,class ,@(modus-themes--diff
- bg-diff-changed fg-diff-changed
- yellow-nuanced-bg fg-diff-changed))))
- `(magit-diff-base-highlight ((,class :inherit modus-themes-diff-focus-changed)))
- `(magit-diff-context ((,class ,@(unless (eq modus-themes-diffs 'bg-only) (list :foreground fg-unfocused)))))
- `(magit-diff-context-highlight ((,class ,@(modus-themes--diff
- bg-inactive fg-inactive
- bg-dim fg-alt
- bg-dim fg-alt))))
- `(magit-diff-file-heading ((,class :inherit bold :foreground ,fg-special-cold)))
- `(magit-diff-file-heading-highlight ((,class :inherit (modus-themes-special-cold bold))))
- `(magit-diff-file-heading-selection ((,class :inherit modus-themes-refine-cyan)))
- ;; NOTE: here we break from the pattern of inheriting from the
- ;; modus-themes-diff-* faces.
- `(magit-diff-hunk-heading ((,class :inherit bold
- ,@(modus-themes--diff
- bg-active fg-inactive
- bg-inactive fg-inactive
- bg-inactive fg-inactive
- nil nil
- t))))
- ;; NOTE: we do not follow the pattern of inheriting from
- ;; modus-themes-grue-* faces, as this is a special case.
- `(magit-diff-hunk-heading-highlight
- ((,class :inherit bold
- :background ,@(modus-themes--deuteran bg-active bg-diff-heading)
- :foreground ,@(modus-themes--deuteran fg-main fg-diff-heading))))
- `(magit-diff-hunk-heading-selection ((,class :inherit modus-themes-refine-blue)))
- `(magit-diff-hunk-region ((,class :inherit bold)))
- `(magit-diff-lines-boundary ((,class :background ,fg-main)))
- `(magit-diff-lines-heading ((,class :inherit modus-themes-refine-magenta)))
- `(magit-diff-removed ((,class ,@(modus-themes--diff
- bg-diff-removed fg-diff-removed
- red-nuanced-bg fg-diff-removed))))
- `(magit-diff-removed-highlight ((,class :inherit modus-themes-diff-focus-removed)))
- `(magit-diffstat-added ((,class :inherit modus-themes-grue)))
- `(magit-diffstat-removed ((,class :foreground ,red)))
- `(magit-dimmed ((,class :foreground ,fg-unfocused)))
- `(magit-filename ((,class :foreground ,fg-special-cold)))
- `(magit-hash ((,class :inherit shadow)))
- `(magit-head ((,class :inherit magit-branch-local)))
- `(magit-header-line ((,class :inherit bold :foreground ,magenta-active)))
- `(magit-header-line-key ((,class :inherit modus-themes-key-binding)))
- `(magit-header-line-log-select ((,class :inherit bold :foreground ,fg-main)))
- `(magit-keyword ((,class :foreground ,magenta)))
- `(magit-keyword-squash ((,class :inherit bold :foreground ,yellow-alt-other)))
- `(magit-log-author ((,class :foreground ,cyan)))
- `(magit-log-date ((,class :inherit shadow)))
- `(magit-log-graph ((,class :foreground ,fg-dim)))
- `(magit-mode-line-process ((,class :inherit bold :foreground ,cyan-active)))
- `(magit-mode-line-process-error ((,class :inherit bold :foreground ,red-active)))
- `(magit-process-ng ((,class :inherit error)))
- `(magit-process-ok ((,class :inherit success)))
- `(magit-reflog-amend ((,class :inherit warning)))
- `(magit-reflog-checkout ((,class :inherit bold :foreground ,blue-alt)))
- `(magit-reflog-cherry-pick ((,class :inherit success)))
- `(magit-reflog-commit ((,class :inherit bold)))
- `(magit-reflog-merge ((,class :inherit success)))
- `(magit-reflog-other ((,class :inherit bold :foreground ,cyan)))
- `(magit-reflog-rebase ((,class :inherit bold :foreground ,magenta)))
- `(magit-reflog-remote ((,class :inherit bold :foreground ,magenta-alt-other)))
- `(magit-reflog-reset ((,class :inherit error)))
- `(magit-refname ((,class :inherit shadow)))
- `(magit-refname-pullreq ((,class :inherit shadow)))
- `(magit-refname-stash ((,class :inherit shadow)))
- `(magit-refname-wip ((,class :inherit shadow)))
- `(magit-section ((,class :background ,bg-dim :foreground ,fg-main)))
- `(magit-section-heading ((,class :inherit bold :foreground ,cyan)))
- `(magit-section-heading-selection ((,class :inherit (modus-themes-refine-cyan bold))))
- `(magit-section-highlight ((,class :background ,bg-alt)))
- `(magit-sequence-done ((,class :inherit success)))
- `(magit-sequence-drop ((,class :inherit error)))
- `(magit-sequence-exec ((,class :inherit bold :foreground ,magenta-alt)))
- `(magit-sequence-head ((,class :inherit bold :foreground ,cyan-alt)))
- `(magit-sequence-onto ((,class :inherit (bold shadow))))
- `(magit-sequence-part ((,class :inherit warning)))
- `(magit-sequence-pick ((,class :inherit bold)))
- `(magit-sequence-stop ((,class :inherit error)))
- `(magit-signature-bad ((,class :inherit error)))
- `(magit-signature-error ((,class :inherit error)))
- `(magit-signature-expired ((,class :inherit warning)))
- `(magit-signature-expired-key ((,class :foreground ,yellow)))
- `(magit-signature-good ((,class :inherit success)))
- `(magit-signature-revoked ((,class :inherit bold :foreground ,magenta)))
- `(magit-signature-untrusted ((,class :inherit (bold shadow))))
- `(magit-tag ((,class :foreground ,yellow-alt-other)))
-;;;;; magit-imerge
- `(magit-imerge-overriding-value ((,class :inherit bold :foreground ,red-alt)))
+ `(magit-bisect-bad ((,c :inherit error)))
+ `(magit-bisect-good ((,c :inherit success)))
+ `(magit-bisect-skip ((,c :inherit warning)))
+ `(magit-blame-date (( )))
+ `(magit-blame-dimmed ((,c :inherit shadow)))
+ `(magit-blame-hash (( )))
+ `(magit-blame-highlight ((,c :background ,bg-active :foreground ,fg-main)))
+ `(magit-blame-name (( )))
+ `(magit-blame-summary (( )))
+ `(magit-branch-local ((,c :foreground ,accent-0)))
+ `(magit-branch-remote ((,c :foreground ,accent-1)))
+ `(magit-branch-upstream ((,c :inherit italic)))
+ `(magit-branch-warning ((,c :inherit warning)))
+ `(magit-cherry-equivalent ((,c :foreground ,magenta)))
+ `(magit-cherry-unmatched ((,c :foreground ,cyan)))
+ `(magit-diff-added ((,c :background ,bg-added-faint :foreground ,fg-added)))
+ `(magit-diff-added-highlight ((,c :background ,bg-added :foreground ,fg-added)))
+ `(magit-diff-base ((,c :background ,bg-changed-faint :foreground ,fg-changed)))
+ `(magit-diff-base-highlight ((,c :background ,bg-changed :foreground ,fg-changed)))
+ `(magit-diff-context ((,c :inherit shadow)))
+ `(magit-diff-context-highlight ((,c :background ,bg-diff-context)))
+ `(magit-diff-file-heading ((,c :inherit bold :foreground ,accent-0)))
+ `(magit-diff-file-heading-highlight ((,c :inherit magit-diff-file-heading :background ,bg-inactive)))
+ `(magit-diff-file-heading-selection ((,c :inherit bold :background ,bg-hover-secondary)))
+ `(magit-diff-hunk-heading ((,c :background ,bg-inactive)))
+ `(magit-diff-hunk-heading-highlight ((,c :inherit bold :background ,bg-active)))
+ `(magit-diff-hunk-heading-selection ((,c :inherit bold :background ,bg-hover-secondary)))
+ `(magit-diff-hunk-region ((,c :inherit bold)))
+ `(magit-diff-lines-boundary ((,c :background ,fg-main)))
+ `(magit-diff-lines-heading ((,c :background ,fg-dim :foreground ,bg-main)))
+ `(magit-diff-removed ((,c :background ,bg-removed-faint :foreground ,fg-removed)))
+ `(magit-diff-removed-highlight ((,c :background ,bg-removed :foreground ,fg-removed)))
+ `(magit-diffstat-added ((,c :foreground ,fg-added-intense)))
+ `(magit-diffstat-removed ((,c :foreground ,fg-removed-intense)))
+ `(magit-dimmed ((,c :inherit shadow)))
+ `(magit-filename ((,c :foreground ,accent-2)))
+ `(magit-hash ((,c :foreground ,identifier)))
+ `(magit-head ((,c :inherit magit-branch-local)))
+ `(magit-header-line ((,c :inherit bold)))
+ `(magit-header-line-key ((,c :inherit modus-themes-key-binding)))
+ `(magit-header-line-log-select ((,c :inherit bold)))
+ `(magit-keyword ((,c :foreground ,keyword)))
+ `(magit-keyword-squash ((,c :inherit bold :foreground ,warning)))
+ `(magit-log-author ((,c :foreground ,name)))
+ `(magit-log-date ((,c :foreground ,date-common)))
+ `(magit-log-graph ((,c :inherit shadow)))
+ `(magit-mode-line-process ((,c :inherit bold :foreground ,modeline-info)))
+ `(magit-mode-line-process-error ((,c :inherit bold :foreground ,modeline-err)))
+ `(magit-process-ng ((,c :inherit error)))
+ `(magit-process-ok ((,c :inherit success)))
+ `(magit-reflog-amend ((,c :inherit warning)))
+ `(magit-reflog-checkout ((,c :inherit bold :foreground ,blue)))
+ `(magit-reflog-cherry-pick ((,c :inherit success)))
+ `(magit-reflog-commit ((,c :inherit bold)))
+ `(magit-reflog-merge ((,c :inherit success)))
+ `(magit-reflog-other ((,c :inherit bold :foreground ,cyan)))
+ `(magit-reflog-rebase ((,c :inherit bold :foreground ,magenta)))
+ `(magit-reflog-remote ((,c :inherit (bold magit-branch-remote))))
+ `(magit-reflog-reset ((,c :inherit error)))
+ `(magit-refname ((,c :inherit shadow)))
+ `(magit-refname-pullreq ((,c :inherit shadow)))
+ `(magit-refname-stash ((,c :inherit shadow)))
+ `(magit-refname-wip ((,c :inherit shadow)))
+ `(magit-section ((,c :background ,bg-dim :foreground ,fg-main)))
+ `(magit-section-heading ((,c :inherit bold)))
+ `(magit-section-heading-selection ((,c :inherit bold :background ,bg-hover-secondary)))
+ `(magit-section-highlight ((,c :background ,bg-dim)))
+ `(magit-sequence-done ((,c :inherit success)))
+ `(magit-sequence-drop ((,c :inherit error)))
+ `(magit-sequence-exec ((,c :inherit bold :foreground ,magenta)))
+ `(magit-sequence-head ((,c :inherit bold :foreground ,cyan)))
+ `(magit-sequence-onto ((,c :inherit (bold shadow))))
+ `(magit-sequence-part ((,c :inherit warning)))
+ `(magit-sequence-pick ((,c :inherit bold)))
+ `(magit-sequence-stop ((,c :inherit error)))
+ `(magit-signature-bad ((,c :inherit error)))
+ `(magit-signature-error ((,c :inherit error)))
+ `(magit-signature-expired ((,c :inherit warning)))
+ `(magit-signature-expired-key ((,c :foreground ,warning)))
+ `(magit-signature-good ((,c :inherit success)))
+ `(magit-signature-revoked ((,c :inherit bold :foreground ,warning)))
+ `(magit-signature-untrusted ((,c :inherit (bold shadow))))
+ `(magit-tag ((,c :foreground ,accent-3))) ; compare with branches
;;;;; make-mode (makefiles)
- `(makefile-makepp-perl ((,class :background ,cyan-nuanced-bg)))
- `(makefile-space ((,class :background ,magenta-nuanced-bg)))
+ `(makefile-makepp-perl ((,c :background ,bg-dim)))
+ `(makefile-space ((,c :background ,bg-inactive)))
;;;;; man
- `(Man-overstrike ((,class :inherit bold :foreground ,magenta-alt)))
- `(Man-reverse ((,class :inherit modus-themes-subtle-magenta)))
- `(Man-underline ((,class :foreground ,cyan-alt-other :underline t)))
+ `(Man-overstrike ((,c :inherit bold :foreground ,accent-0)))
+ `(Man-underline ((,c :foreground ,accent-1 :underline t)))
;;;;; marginalia
- `(marginalia-archive ((,class :foreground ,cyan-alt-other)))
- `(marginalia-char ((,class :foreground ,magenta)))
- `(marginalia-date ((,class :foreground ,cyan)))
- `(marginalia-documentation ((,class :inherit modus-themes-slant :foreground ,fg-docstring)))
- `(marginalia-file-name ((,class :foreground ,blue-faint)))
- `(marginalia-file-owner ((,class :foreground ,red-faint)))
- `(marginalia-file-priv-dir ((,class :foreground ,blue-alt)))
- `(marginalia-file-priv-exec ((,class :foreground ,magenta-alt)))
- `(marginalia-file-priv-link ((,class :foreground ,blue-alt-other)))
- `(marginalia-file-priv-no ((,class :foreground "gray50")))
- `(marginalia-file-priv-other ((,class :foreground ,yellow)))
- `(marginalia-file-priv-rare ((,class :foreground ,red)))
- `(marginalia-file-priv-read ((,class :foreground ,fg-main)))
- `(marginalia-file-priv-write ((,class :foreground ,cyan)))
- `(marginalia-function ((,class :foreground ,magenta-alt-faint)))
- `(marginalia-key ((,class :inherit modus-themes-key-binding)))
- `(marginalia-lighter ((,class :foreground ,blue-alt)))
- `(marginalia-list ((,class :foreground ,magenta-alt-other-faint)))
- `(marginalia-mode ((,class :foreground ,cyan)))
- `(marginalia-modified ((,class :foreground ,magenta-alt-faint)))
- `(marginalia-null ((,class :inherit shadow)))
- `(marginalia-number ((,class :foreground ,cyan)))
- `(marginalia-size ((,class :foreground ,cyan-alt-other-faint)))
- `(marginalia-string ((,class :foreground ,blue-alt)))
- `(marginalia-symbol ((,class :foreground ,blue-alt-other-faint)))
- `(marginalia-true ((,class :foreground ,fg-main)))
- `(marginalia-type ((,class :foreground ,cyan-alt-other)))
- `(marginalia-value ((,class :foreground ,cyan)))
- `(marginalia-version ((,class :foreground ,cyan)))
+ `(marginalia-archive ((,c :foreground ,accent-0)))
+ `(marginalia-char ((,c :foreground ,accent-2)))
+ `(marginalia-date ((,c :foreground ,date-common)))
+ `(marginalia-documentation ((,c :inherit modus-themes-slant :foreground ,docstring)))
+ `(marginalia-file-name (( )))
+ `(marginalia-file-owner ((,c :inherit shadow)))
+ `(marginalia-file-priv-dir ((,c :foreground ,accent-0)))
+ `(marginalia-file-priv-exec ((,c :foreground ,accent-1)))
+ `(marginalia-file-priv-link ((,c :foreground ,fg-link)))
+ `(marginalia-file-priv-no ((,c :inherit shadow)))
+ `(marginalia-file-priv-other ((,c :foreground ,accent-2)))
+ `(marginalia-file-priv-rare ((,c :foreground ,accent-3)))
+ `(marginalia-file-priv-read ((,c :foreground ,fg-main)))
+ `(marginalia-file-priv-write ((,c :foreground ,accent-0)))
+ `(marginalia-function ((,c :foreground ,fnname)))
+ `(marginalia-key ((,c :inherit modus-themes-key-binding)))
+ `(marginalia-lighter ((,c :inherit shadow)))
+ `(marginalia-liqst ((,c :inherit shadow)))
+ `(marginalia-mode ((,c :foreground ,constant)))
+ `(marginalia-modified ((,c :inherit warning)))
+ `(marginalia-null ((,c :inherit shadow)))
+ `(marginalia-number ((,c :foreground ,constant)))
+ `(marginalia-size ((,c :foreground ,variable)))
+ `(marginalia-string ((,c :foreground ,string)))
+ `(marginalia-symbol ((,c :foreground ,builtin)))
+ `(marginalia-true (( )))
+ `(marginalia-type ((,c :foreground ,type)))
+ `(marginalia-value ((,c :inherit shadow)))
+ `(marginalia-version ((,c :foreground ,date-common)))
;;;;; markdown-mode
- `(markdown-blockquote-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold)))
- `(markdown-bold-face ((,class :inherit bold)))
- `(markdown-code-face ((,class :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t)))
- `(markdown-comment-face ((,class :inherit font-lock-comment-face)))
- `(markdown-footnote-marker-face ((,class :inherit bold :foreground ,cyan-alt)))
- `(markdown-footnote-text-face ((,class :inherit modus-themes-slant :foreground ,fg-main)))
- `(markdown-gfm-checkbox-face ((,class :foreground ,yellow-alt-other)))
- `(markdown-header-delimiter-face ((,class :inherit modus-themes-bold :foreground ,fg-dim)))
- `(markdown-header-face ((t nil)))
- `(markdown-header-face-1 ((,class :inherit modus-themes-heading-1)))
- `(markdown-header-face-2 ((,class :inherit modus-themes-heading-2)))
- `(markdown-header-face-3 ((,class :inherit modus-themes-heading-3)))
- `(markdown-header-face-4 ((,class :inherit modus-themes-heading-4)))
- `(markdown-header-face-5 ((,class :inherit modus-themes-heading-5)))
- `(markdown-header-face-6 ((,class :inherit modus-themes-heading-6)))
- `(markdown-header-rule-face ((,class :inherit bold :foreground ,fg-special-warm)))
- `(markdown-highlighting-face ((,class :inherit modus-themes-refine-yellow)))
- `(markdown-hr-face ((,class :inherit bold :foreground ,fg-special-warm)))
- `(markdown-html-attr-name-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,cyan)))
- `(markdown-html-attr-value-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,blue)))
- `(markdown-html-entity-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,cyan)))
- `(markdown-html-tag-delimiter-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,fg-special-mild)))
- `(markdown-html-tag-name-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,magenta-alt)))
- `(markdown-inline-code-face ((,class :inherit modus-themes-markup-verbatim)))
- `(markdown-italic-face ((,class :inherit italic)))
- `(markdown-language-info-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,fg-special-cold)))
- `(markdown-language-keyword-face ((,class :inherit modus-themes-fixed-pitch
- :background ,bg-alt
- :foreground ,fg-alt)))
- `(markdown-line-break-face ((,class :inherit modus-themes-refine-cyan :underline t)))
- `(markdown-link-face ((,class :inherit button)))
- `(markdown-link-title-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold)))
- `(markdown-list-face ((,class :foreground ,fg-dim)))
- `(markdown-markup-face ((,class :inherit shadow)))
- `(markdown-math-face ((,class :foreground ,magenta-alt-other)))
- `(markdown-metadata-key-face ((,class :foreground ,cyan-alt-other)))
- `(markdown-metadata-value-face ((,class :foreground ,blue-alt)))
- `(markdown-missing-link-face ((,class :inherit bold :foreground ,yellow)))
- `(markdown-plain-url-face ((,class :inherit markdown-link-face)))
- `(markdown-pre-face ((,class :inherit markdown-code-face :foreground ,fg-special-mild)))
- `(markdown-reference-face ((,class :inherit markdown-markup-face)))
- `(markdown-strike-through-face ((,class :strike-through t)))
- `(markdown-table-face ((,class :inherit modus-themes-fixed-pitch
- :foreground ,fg-special-cold)))
- `(markdown-url-face ((,class :foreground ,blue-alt)))
+ `(markdown-blockquote-face ((,c :inherit font-lock-doc-face)))
+ `(markdown-bold-face ((,c :inherit bold)))
+ `(markdown-code-face ((,c :inherit modus-themes-fixed-pitch :background ,bg-dim :extend t)))
+ `(markdown-gfm-checkbox-face ((,c :foreground ,warning)))
+ `(markdown-header-face (( )))
+ `(markdown-header-face-1 ((,c :inherit modus-themes-heading-1)))
+ `(markdown-header-face-2 ((,c :inherit modus-themes-heading-2)))
+ `(markdown-header-face-3 ((,c :inherit modus-themes-heading-3)))
+ `(markdown-header-face-4 ((,c :inherit modus-themes-heading-4)))
+ `(markdown-header-face-5 ((,c :inherit modus-themes-heading-5)))
+ `(markdown-header-face-6 ((,c :inherit modus-themes-heading-6)))
+ `(markdown-highlighting-face ((,c :inherit secondary-selection)))
+ `(markdown-inline-code-face ((,c :inherit modus-themes-prose-code)))
+ `(markdown-italic-face ((,c :inherit italic)))
+ `(markdown-language-keyword-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-block)))
+ `(markdown-line-break-face ((,c :inherit nobreak-space)))
+ `(markdown-link-face ((,c :inherit link)))
+ `(markdown-markup-face ((,c :inherit shadow)))
+ `(markdown-metadata-key-face ((,c :inherit bold)))
+ `(markdown-metadata-value-face ((,c :foreground ,string)))
+ `(markdown-missing-link-face ((,c :inherit warning)))
+ `(markdown-pre-face ((,c :inherit markdown-code-face)))
+ `(markdown-table-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table)))
+ `(markdown-url-face ((,c :foreground ,fg-alt)))
;;;;; markup-faces (`adoc-mode')
- `(markup-attribute-face ((,class :inherit (italic markup-meta-face))))
- `(markup-bold-face ((,class :inherit bold :foreground ,red-nuanced-fg)))
- `(markup-code-face ((,class :foreground ,magenta)))
- `(markup-comment-face ((,class :inherit font-lock-comment-face)))
- `(markup-complex-replacement-face ((,class :background ,magenta-nuanced-bg :foreground ,magenta-alt-other)))
- `(markup-emphasis-face ((,class :inherit markup-italic-face)))
- `(markup-error-face ((,class :inherit error)))
- `(markup-gen-face ((,class :foreground ,magenta-alt)))
- `(markup-internal-reference-face ((,class :inherit modus-themes-slant :foreground ,fg-alt)))
- `(markup-italic-face ((,class :inherit italic)))
- `(markup-list-face ((,class :inherit modus-themes-special-cold)))
- `(markup-meta-face ((,class :inherit (modus-themes-fixed-pitch shadow))))
- `(markup-meta-hide-face ((,class :foreground "gray50")))
- `(markup-reference-face ((,class :inherit modus-themes-slant :foreground ,blue-alt)))
- `(markup-replacement-face ((,class :inherit modus-themes-fixed-pitch :foreground ,red-alt)))
- `(markup-secondary-text-face ((,class :height 0.9 :foreground ,cyan-alt-other)))
- `(markup-small-face ((,class :inherit markup-gen-face :height 0.9)))
- `(markup-strong-face ((,class :inherit markup-bold-face)))
- `(markup-subscript-face ((,class :height 0.9 :foreground ,magenta-alt-other)))
- `(markup-superscript-face ((,class :height 0.9 :foreground ,magenta-alt-other)))
- `(markup-table-cell-face ((,class :inherit modus-themes-subtle-neutral)))
- `(markup-table-face ((,class :inherit modus-themes-subtle-neutral)))
- `(markup-table-row-face ((,class :inherit modus-themes-special-cold)))
- `(markup-title-0-face ((,class :inherit modus-themes-heading-1)))
- `(markup-title-1-face ((,class :inherit modus-themes-heading-2)))
- `(markup-title-2-face ((,class :inherit modus-themes-heading-3)))
- `(markup-title-3-face ((,class :inherit modus-themes-heading-4)))
- `(markup-title-4-face ((,class :inherit modus-themes-heading-5)))
- `(markup-title-5-face ((,class :inherit modus-themes-heading-6)))
- `(markup-verbatim-face ((,class :inherit modus-themes-fixed-pitch :background ,bg-alt)))
-;;;;; mentor
- `(mentor-download-message ((,class :foreground ,fg-special-warm)))
- `(mentor-download-name ((,class :foreground ,fg-special-cold)))
- `(mentor-download-progress ((,class :foreground ,blue-alt-other)))
- `(mentor-download-size ((,class :foreground ,magenta-alt-other)))
- `(mentor-download-speed-down ((,class :foreground ,cyan-alt)))
- `(mentor-download-speed-up ((,class :foreground ,red-alt)))
- `(mentor-download-state ((,class :foreground ,yellow-alt)))
- `(mentor-highlight-face ((,class :inherit modus-themes-subtle-blue)))
- `(mentor-tracker-name ((,class :foreground ,magenta-alt)))
+ `(markup-attribute-face ((,c :inherit (modus-themes-slant markup-meta-face))))
+ `(markup-bold-face ((,c :inherit bold)))
+ `(markup-code-face ((,c :foreground ,prose-code)))
+ `(markup-comment-face ((,c :inherit font-lock-comment-face)))
+ `(markup-complex-replacement-face ((,c :foreground ,prose-macro)))
+ `(markup-emphasis-face ((,c :inherit markup-italic-face)))
+ `(markup-error-face ((,c :inherit error)))
+ `(markup-gen-face ((,c :foreground ,prose-verbatim)))
+ `(markup-internal-reference-face ((,c :inherit (shadow modus-themes-slant))))
+ `(markup-italic-face ((,c :inherit italic)))
+ `(markup-list-face ((,c :background ,bg-inactive)))
+ `(markup-meta-face ((,c :inherit (modus-themes-fixed-pitch shadow))))
+ `(markup-meta-hide-face ((,c :foreground "gray50")))
+ `(markup-reference-face ((,c :inherit modus-themes-slant :foreground ,fg-alt)))
+ `(markup-replacement-face ((,c :inherit modus-themes-fixed-pitch :foreground ,err)))
+ `(markup-secondary-text-face ((,c :height 0.9 :foreground ,fg-alt)))
+ `(markup-small-face ((,c :inherit markup-gen-face :height 0.9)))
+ `(markup-strong-face ((,c :inherit markup-bold-face)))
+ `(markup-subscript-face ((,c :height 0.9 :foreground ,fg-alt)))
+ `(markup-superscript-face ((,c :height 0.9 :foreground ,fg-alt)))
+ `(markup-table-cell-face (( )))
+ `(markup-table-face ((,c :foreground ,prose-table)))
+ `(markup-table-row-face (( )))
+ `(markup-title-0-face ((,c :inherit modus-themes-heading-1)))
+ `(markup-title-1-face ((,c :inherit modus-themes-heading-2)))
+ `(markup-title-2-face ((,c :inherit modus-themes-heading-3)))
+ `(markup-title-3-face ((,c :inherit modus-themes-heading-4)))
+ `(markup-title-4-face ((,c :inherit modus-themes-heading-5)))
+ `(markup-title-5-face ((,c :inherit modus-themes-heading-6)))
+ `(markup-verbatim-face ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-verbatim)))
;;;;; messages
- `(message-cited-text-1 ((,class ,@(modus-themes--mail-cite blue-faint blue fg-special-cold))))
- `(message-cited-text-2 ((,class ,@(modus-themes--mail-cite yellow-faint yellow yellow-alt-faint))))
- `(message-cited-text-3 ((,class ,@(modus-themes--mail-cite magenta-alt-faint magenta-alt fg-special-calm))))
- `(message-cited-text-4 ((,class ,@(modus-themes--mail-cite cyan-alt-other-faint cyan-alt-other fg-special-mild))))
- `(message-header-cc ((,class :foreground ,blue-alt-other)))
- `(message-header-name ((,class :inherit bold :foreground ,cyan)))
- `(message-header-newsgroups ((,class :inherit message-header-other)))
- `(message-header-other ((,class :foreground ,fg-special-calm)))
- `(message-header-subject ((,class :inherit bold :foreground ,magenta-alt)))
- `(message-header-to ((,class :inherit bold :foreground ,magenta-alt-other)))
- `(message-header-xheader ((,class :foreground ,blue-alt)))
- `(message-mml ((,class :foreground ,cyan-alt-other)))
- `(message-separator ((,class :inherit modus-themes-intense-neutral)))
-;;;;; mini-modeline
- `(mini-modeline-mode-line ((,class :background ,blue-intense :height 0.14)))
- `(mini-modeline-mode-line-inactive ((,class :background ,fg-window-divider-inner :height 0.1)))
+ `(message-cited-text-1 ((,c :foreground ,mail-cite-0)))
+ `(message-cited-text-2 ((,c :foreground ,mail-cite-1)))
+ `(message-cited-text-3 ((,c :foreground ,mail-cite-2)))
+ `(message-cited-text-4 ((,c :foreground ,mail-cite-3)))
+ `(message-header-name ((,c :inherit bold)))
+ `(message-header-newsgroups ((,c :inherit message-header-other)))
+ `(message-header-to ((,c :inherit bold :foreground ,mail-recipient)))
+ `(message-header-cc ((,c :foreground ,mail-recipient)))
+ `(message-header-subject ((,c :inherit bold :foreground ,mail-subject)))
+ `(message-header-xheader ((,c :inherit message-header-other)))
+ `(message-header-other ((,c :foreground ,mail-other)))
+ `(message-mml ((,c :foreground ,mail-part)))
+ `(message-separator ((,c :background ,bg-active)))
;;;;; minimap
- `(minimap-active-region-background ((,class :background ,bg-active)))
- `(minimap-current-line-face ((,class :background ,cyan-intense-bg :foreground ,fg-main)))
-;;;;; mmm-mode
- `(mmm-cleanup-submode-face ((,class :background ,yellow-nuanced-bg)))
- `(mmm-code-submode-face ((,class :background ,bg-alt)))
- `(mmm-comment-submode-face ((,class :background ,blue-nuanced-bg)))
- `(mmm-declaration-submode-face ((,class :background ,cyan-nuanced-bg)))
- `(mmm-default-submode-face ((,class :background ,bg-dim)))
- `(mmm-init-submode-face ((,class :background ,magenta-nuanced-bg)))
- `(mmm-output-submode-face ((,class :background ,red-nuanced-bg)))
- `(mmm-special-submode-face ((,class :background ,green-nuanced-bg)))
+ `(minimap-active-region-background ((,c :background ,bg-active)))
+ `(minimap-current-line-face ((,c :background ,bg-cyan-intense :foreground ,fg-main)))
;;;;; mode-line
- `(mode-line ((,class :inherit modus-themes-ui-variable-pitch
- ,@(modus-themes--mode-line-attrs
- fg-active bg-active
- fg-dim bg-active
- fg-main bg-active-accent
- fg-alt bg-active
- 'alt-style bg-main))))
- `(mode-line-active ((,class :inherit mode-line)))
- `(mode-line-buffer-id ((,class :inherit bold)))
- `(mode-line-emphasis ((,class :inherit bold :foreground ,magenta-active)))
- `(mode-line-highlight ((,class ,@(if modus-themes-intense-mouseovers
- (list :inherit 'modus-themes-active-blue)
- (list :inherit 'highlight)))))
- `(mode-line-inactive ((,class :inherit modus-themes-ui-variable-pitch
- ,@(modus-themes--mode-line-attrs
- fg-inactive bg-inactive
- fg-alt bg-dim
- fg-inactive bg-inactive
- bg-region bg-active))))
+ `(mode-line ((,c :inherit modus-themes-ui-variable-pitch
+ :box ,border-mode-line-active
+ :background ,bg-mode-line-active
+ :foreground ,fg-mode-line-active)))
+ `(mode-line-active ((,c :inherit mode-line)))
+ `(mode-line-buffer-id ((,c :inherit bold)))
+ `(mode-line-emphasis ((,c :inherit bold :foreground ,modeline-info)))
+ `(mode-line-highlight ((,c :background ,bg-hover :foreground ,fg-main :box ,fg-main)))
+ `(mode-line-inactive ((,c :inherit modus-themes-ui-variable-pitch
+ :box ,border-mode-line-inactive
+ :background ,bg-mode-line-inactive
+ :foreground ,fg-mode-line-inactive)))
;;;;; mood-line
- `(mood-line-modified ((,class :foreground ,magenta-active)))
- `(mood-line-status-error ((,class :inherit bold :foreground ,red-active)))
- `(mood-line-status-info ((,class :foreground ,cyan-active)))
- `(mood-line-status-neutral ((,class :foreground ,blue-active)))
- `(mood-line-status-success ((,class :inherit modus-themes-grue-active)))
- `(mood-line-status-warning ((,class :inherit bold :foreground ,yellow-active)))
- `(mood-line-unimportant ((,class :foreground ,fg-inactive)))
+ `(mood-line-modified ((,c :inherit italic)))
+ `(mood-line-status-error ((,c :inherit error)))
+ `(mood-line-status-info ((,c :foreground ,info)))
+ `(mood-line-status-neutral (( )))
+ `(mood-line-status-success ((,c :inherit success)))
+ `(mood-line-status-warning ((,c :inherit warning)))
+ `(mood-line-unimportant ((,c :inherit shadow)))
;;;;; mpdel
- `(mpdel-browser-directory-face ((,class :foreground ,blue)))
- `(mpdel-playlist-current-song-face ((,class :inherit bold :foreground ,blue-alt-other)))
+ `(mpdel-browser-directory-face ((,c :foreground ,accent-0)))
+ `(mpdel-playlist-current-song-face ((,c :inherit bold :foreground ,accent-0)))
;;;;; mu4e
- `(mu4e-attach-number-face ((,class :inherit bold :foreground ,fg-dim)))
- `(mu4e-cited-1-face ((,class :inherit message-cited-text-1)))
- `(mu4e-cited-2-face ((,class :inherit message-cited-text-2)))
- `(mu4e-cited-3-face ((,class :inherit message-cited-text-3)))
- `(mu4e-cited-4-face ((,class :inherit message-cited-text-4)))
- `(mu4e-cited-5-face ((,class :inherit message-cited-text-1)))
- `(mu4e-cited-6-face ((,class :inherit message-cited-text-2)))
- `(mu4e-cited-7-face ((,class :inherit message-cited-text-3)))
- `(mu4e-compose-header-face ((,class :inherit mu4e-compose-separator-face)))
- `(mu4e-compose-separator-face ((,class :inherit modus-themes-intense-neutral)))
- `(mu4e-contact-face ((,class :inherit message-header-to)))
- `(mu4e-context-face ((,class :foreground ,blue-active)))
- `(mu4e-draft-face ((,class :foreground ,magenta-alt)))
- `(mu4e-flagged-face ((,class :foreground ,red-alt-other)))
- `(mu4e-footer-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold)))
- `(mu4e-forwarded-face ((,class :foreground ,magenta-alt-other)))
- `(mu4e-header-face ((,class :inherit shadow)))
- `(mu4e-header-highlight-face ((,class :inherit modus-themes-hl-line)))
- `(mu4e-header-key-face ((,class :inherit message-header-name)))
- `(mu4e-header-marks-face ((,class :inherit mu4e-special-header-value-face)))
- `(mu4e-header-title-face ((,class :foreground ,fg-special-mild)))
- `(mu4e-header-value-face ((,class :inherit message-header-other)))
- `(mu4e-highlight-face ((,class :inherit modus-themes-key-binding)))
- `(mu4e-link-face ((,class :inherit button)))
- `(mu4e-modeline-face ((,class :foreground ,magenta-active)))
- `(mu4e-moved-face ((,class :inherit modus-themes-slant :foreground ,yellow)))
- `(mu4e-ok-face ((,class :inherit bold :foreground ,green)))
- `(mu4e-region-code ((,class :inherit modus-themes-special-calm)))
- `(mu4e-related-face ((,class :inherit (italic shadow))))
- `(mu4e-replied-face ((,class :foreground ,blue)))
- `(mu4e-special-header-value-face ((,class :inherit message-header-subject)))
- `(mu4e-system-face ((,class :inherit modus-themes-slant :foreground ,fg-mark-del)))
- `(mu4e-title-face ((,class :foreground ,fg-main)))
- `(mu4e-trashed-face ((,class :foreground ,red)))
- `(mu4e-unread-face ((,class :inherit bold)))
- `(mu4e-url-number-face ((,class :inherit shadow)))
- `(mu4e-view-body-face ((,class :foreground ,fg-main)))
- `(mu4e-warning-face ((,class :inherit warning)))
+ `(mu4e-attach-number-face ((,c :inherit bold :foreground ,fg-dim)))
+ `(mu4e-cited-1-face ((,c :inherit message-cited-text-1)))
+ `(mu4e-cited-2-face ((,c :inherit message-cited-text-2)))
+ `(mu4e-cited-3-face ((,c :inherit message-cited-text-3)))
+ `(mu4e-cited-4-face ((,c :inherit message-cited-text-4)))
+ `(mu4e-cited-5-face ((,c :inherit message-cited-text-1)))
+ `(mu4e-cited-6-face ((,c :inherit message-cited-text-2)))
+ `(mu4e-cited-7-face ((,c :inherit message-cited-text-3)))
+ `(mu4e-compose-header-face ((,c :inherit mu4e-compose-separator-face)))
+ `(mu4e-compose-separator-face ((,c :inherit message-separator)))
+ `(mu4e-contact-face ((,c :inherit message-header-to)))
+ `(mu4e-context-face ((,c :inherit bold)))
+ `(mu4e-draft-face ((,c :foreground ,warning)))
+ `(mu4e-flagged-face ((,c :foreground ,err)))
+ `(mu4e-footer-face ((,c :inherit italic :foreground ,fg-alt)))
+ `(mu4e-forwarded-face ((,c :inherit italic :foreground ,info)))
+ `(mu4e-header-face ((,c :inherit shadow)))
+ `(mu4e-header-highlight-face ((,c :background ,bg-hl-line :extend t)))
+ `(mu4e-header-key-face ((,c :inherit message-header-name)))
+ `(mu4e-header-marks-face ((,c :inherit mu4e-special-header-value-face)))
+ `(mu4e-header-title-face ((,c :foreground ,fg-alt)))
+ `(mu4e-header-value-face ((,c :inherit message-header-other)))
+ `(mu4e-highlight-face ((,c :inherit modus-themes-key-binding)))
+ `(mu4e-link-face ((,c :inherit link)))
+ `(mu4e-modeline-face (( )))
+ `(mu4e-moved-face ((,c :inherit italic :foreground ,warning)))
+ `(mu4e-ok-face ((,c :inherit success)))
+ `(mu4e-region-code ((,c :foreground ,builtin)))
+ `(mu4e-related-face ((,c :inherit (italic shadow))))
+ `(mu4e-replied-face ((,c :foreground ,info)))
+ `(mu4e-special-header-value-face ((,c :inherit message-header-subject)))
+ `(mu4e-system-face ((,c :inherit italic)))
+ `(mu4e-title-face (( )))
+ `(mu4e-trashed-face ((,c :foreground ,err)))
+ `(mu4e-unread-face ((,c :inherit bold)))
+ `(mu4e-url-number-face ((,c :inherit shadow)))
+ `(mu4e-view-body-face (( )))
+ `(mu4e-warning-face ((,c :inherit warning)))
;;;;; multiple-cursors
- `(mc/cursor-bar-face ((,class :height 1 :background ,fg-main)))
- `(mc/cursor-face ((,class :inverse-video t)))
- `(mc/region-face ((,class :inherit region)))
-;;;;; nano-modeline
- `(nano-modeline-active-primary ((,class :inherit mode-line :foreground ,fg-special-mild)))
- `(nano-modeline-active-secondary ((,class :inherit mode-line :foreground ,fg-special-cold)))
- `(nano-modeline-active-status-** ((,class :inherit mode-line :background ,yellow-subtle-bg)))
- `(nano-modeline-active-status-RO ((,class :inherit mode-line :background ,red-subtle-bg)))
- `(nano-modeline-active-status-RW ((,class :inherit mode-line :background ,cyan-subtle-bg)))
- `(nano-modeline-inactive-primary ((,class :inherit mode-line-inactive :foreground ,fg-inactive)))
- `(nano-modeline-inactive-secondary ((,class :inherit mode-line-inactive :foreground ,fg-inactive)))
- `(nano-modeline-inactive-status-** ((,class :inherit mode-line-inactive :foreground ,yellow-active)))
- `(nano-modeline-inactive-status-RO ((,class :inherit mode-line-inactive :foreground ,red-active)))
- `(nano-modeline-inactive-status-RW ((,class :inherit mode-line-inactive :foreground ,cyan-active)))
+ `(mc/cursor-bar-face ((,c :height 1 :foreground ,fg-main :background ,bg-main)))
+ `(mc/cursor-face ((,c :inverse-video t)))
+ `(mc/region-face ((,c :inherit region)))
;;;;; neotree
- `(neo-banner-face ((,class :foreground ,magenta)))
- `(neo-button-face ((,class :inherit button)))
- `(neo-dir-link-face ((,class :inherit bold :foreground ,blue)))
- `(neo-expand-btn-face ((,class :foreground ,cyan)))
- `(neo-file-link-face ((,class :foreground ,fg-main)))
- `(neo-header-face ((,class :inherit bold :foreground ,fg-main)))
- `(neo-root-dir-face ((,class :inherit bold :foreground ,cyan-alt)))
- `(neo-vc-added-face ((,class :inherit modus-themes-grue)))
- `(neo-vc-conflict-face ((,class :inherit error)))
- `(neo-vc-default-face ((,class :foreground ,fg-main)))
- `(neo-vc-edited-face ((,class :foreground ,yellow)))
- `(neo-vc-ignored-face ((,class :foreground ,fg-inactive)))
- `(neo-vc-missing-face ((,class :foreground ,red-alt)))
- `(neo-vc-needs-merge-face ((,class :foreground ,magenta-alt)))
- `(neo-vc-needs-update-face ((,class :underline t)))
- `(neo-vc-removed-face ((,class :strike-through t)))
- `(neo-vc-unlocked-changes-face ((,class :inherit modus-themes-refine-blue)))
- `(neo-vc-up-to-date-face ((,class :inherit shadow)))
- `(neo-vc-user-face ((,class :foreground ,magenta)))
+ `(neo-banner-face ((,c :foreground ,accent-0)))
+ `(neo-button-face ((,c :inherit button)))
+ `(neo-dir-link-face (( )))
+ `(neo-expand-btn-face (( )))
+ `(neo-file-link-face (( )))
+ `(neo-header-face ((,c :inherit bold)))
+ `(neo-root-dir-face ((,c :inherit bold :foreground ,accent-0)))
+ `(neo-vc-added-face ((,c :inherit success)))
+ `(neo-vc-conflict-face ((,c :inherit error)))
+ `(neo-vc-default-face (( )))
+ `(neo-vc-edited-face ((,c :inherit italic)))
+ `(neo-vc-ignored-face ((,c :inherit shadow)))
+ `(neo-vc-missing-face ((,c :inherit error)))
+ `(neo-vc-needs-merge-face ((,c :inherit italic)))
+ `(neo-vc-needs-update-face ((,c :underline t)))
+ `(neo-vc-removed-face ((,c :strike-through t)))
+ `(neo-vc-unlocked-changes-face ((,c :inherit success)))
+ `(neo-vc-up-to-date-face (( )))
+ `(neo-vc-user-face ((,c :inherit warning)))
;;;;; notmuch
- `(notmuch-crypto-decryption ((,class :inherit (shadow bold))))
- `(notmuch-crypto-part-header ((,class :foreground ,magenta-alt-other)))
- `(notmuch-crypto-signature-bad ((,class :inherit error)))
- `(notmuch-crypto-signature-good ((,class :inherit success)))
- `(notmuch-crypto-signature-good-key ((,class :inherit bold :foreground ,cyan)))
- `(notmuch-crypto-signature-unknown ((,class :inherit warning)))
- `(notmuch-hello-logo-background ((,class :background "gray50")))
- `(notmuch-jump-key ((,class :inherit modus-themes-key-binding)))
- `(notmuch-message-summary-face ((,class :inherit (bold modus-themes-nuanced-cyan))))
- `(notmuch-search-count ((,class :inherit shadow)))
- `(notmuch-search-date ((,class :foreground ,cyan)))
- `(notmuch-search-flagged-face ((,class :foreground ,red-alt-other)))
- `(notmuch-search-matching-authors ((,class :foreground ,fg-special-cold)))
- `(notmuch-search-non-matching-authors ((,class :inherit shadow)))
- `(notmuch-search-subject ((,class :foreground ,fg-main)))
- `(notmuch-search-unread-face ((,class :inherit bold)))
- `(notmuch-tag-added ((,class :underline ,blue)))
- `(notmuch-tag-deleted ((,class :strike-through ,red)))
- `(notmuch-tag-face ((,class :foreground ,blue)))
- `(notmuch-tag-flagged ((,class :foreground ,red-alt)))
- `(notmuch-tag-unread ((,class :foreground ,magenta-alt)))
- `(notmuch-tree-match-author-face ((,class :inherit notmuch-search-matching-authors)))
- `(notmuch-tree-match-date-face ((,class :inherit notmuch-search-date)))
- `(notmuch-tree-match-face ((,class :foreground ,fg-main)))
- `(notmuch-tree-match-tag-face ((,class :inherit notmuch-tag-face)))
- `(notmuch-tree-no-match-face ((,class :inherit shadow)))
- `(notmuch-tree-no-match-date-face ((,class :inherit shadow)))
- `(notmuch-wash-cited-text ((,class :inherit message-cited-text-1)))
- `(notmuch-wash-toggle-button ((,class :background ,bg-alt :foreground ,fg-alt)))
+ `(notmuch-crypto-decryption ((,c :inherit bold)))
+ `(notmuch-crypto-part-header ((,c :foreground ,mail-part))) ; like `message-mml'
+ `(notmuch-crypto-signature-bad ((,c :inherit error)))
+ `(notmuch-crypto-signature-good ((,c :inherit success)))
+ `(notmuch-crypto-signature-good-key ((,c :inherit success)))
+ `(notmuch-crypto-signature-unknown ((,c :inherit warning)))
+ `(notmuch-jump-key ((,c :inherit modus-themes-key-binding)))
+ `(notmuch-message-summary-face ((,c :inherit bold :background ,bg-inactive)))
+ `(notmuch-search-count ((,c :foreground ,fg-dim)))
+ `(notmuch-search-date ((,c :foreground ,date-common)))
+ `(notmuch-search-flagged-face ((,c :foreground ,err)))
+ `(notmuch-search-matching-authors ((,c :foreground ,mail-recipient)))
+ `(notmuch-search-non-matching-authors ((,c :inherit shadow)))
+ `(notmuch-search-subject ((,c :foreground ,fg-main)))
+ `(notmuch-search-unread-face ((,c :inherit bold)))
+ `(notmuch-tag-added ((,c :underline ,info)))
+ `(notmuch-tag-deleted ((,c :strike-through ,err)))
+ `(notmuch-tag-face ((,c :foreground ,accent-0)))
+ `(notmuch-tag-flagged ((,c :foreground ,err)))
+ `(notmuch-tag-unread ((,c :foreground ,accent-1)))
+ `(notmuch-tree-match-author-face ((,c :inherit notmuch-search-matching-authors)))
+ `(notmuch-tree-match-date-face ((,c :inherit notmuch-search-date)))
+ `(notmuch-tree-match-face ((,c :foreground ,fg-main)))
+ `(notmuch-tree-match-tag-face ((,c :inherit notmuch-tag-face)))
+ `(notmuch-tree-no-match-face ((,c :inherit shadow)))
+ `(notmuch-tree-no-match-date-face ((,c :inherit shadow)))
+ `(notmuch-wash-cited-text ((,c :inherit message-cited-text-1)))
+ `(notmuch-wash-toggle-button ((,c :background ,bg-dim)))
;;;;; num3-mode
- `(num3-face-even ((,class :inherit bold :background ,bg-alt)))
+ `(num3-face-even ((,c :inherit bold :background ,bg-inactive)))
;;;;; nxml-mode
- `(nxml-attribute-colon ((,class :foreground ,fg-main)))
- `(nxml-attribute-local-name ((,class :inherit font-lock-variable-name-face)))
- `(nxml-attribute-prefix ((,class :inherit font-lock-type-face)))
- `(nxml-attribute-value ((,class :inherit font-lock-constant-face)))
- `(nxml-cdata-section-CDATA ((,class :inherit error)))
- `(nxml-cdata-section-delimiter ((,class :inherit error)))
- `(nxml-char-ref-delimiter ((,class :foreground ,fg-special-mild)))
- `(nxml-char-ref-number ((,class :inherit modus-themes-bold :foreground ,fg-special-mild)))
- `(nxml-delimited-data ((,class :inherit modus-themes-slant :foreground ,fg-special-cold)))
- `(nxml-delimiter ((,class :foreground ,fg-dim)))
- `(nxml-element-colon ((,class :foreground ,fg-main)))
- `(nxml-element-local-name ((,class :inherit font-lock-function-name-face)))
- `(nxml-element-prefix ((,class :inherit font-lock-builtin-face)))
- `(nxml-entity-ref-delimiter ((,class :foreground ,fg-special-mild)))
- `(nxml-entity-ref-name ((,class :inherit modus-themes-bold :foreground ,fg-special-mild)))
- `(nxml-glyph ((,class :inherit modus-themes-intense-neutral)))
- `(nxml-hash ((,class :inherit (bold font-lock-string-face))))
- `(nxml-heading ((,class :inherit bold)))
- `(nxml-name ((,class :inherit font-lock-builtin-face)))
- `(nxml-namespace-attribute-colon ((,class :foreground ,fg-main)))
- `(nxml-namespace-attribute-prefix ((,class :inherit font-lock-variable-name-face)))
- `(nxml-processing-instruction-target ((,class :inherit font-lock-keyword-face)))
- `(nxml-prolog-keyword ((,class :inherit font-lock-keyword-face)))
- `(nxml-ref ((,class :inherit modus-themes-bold :foreground ,fg-special-mild)))
- `(rng-error ((,class :inherit error)))
+ `(nxml-attribute-colon ((,c :foreground ,fg-main)))
+ `(nxml-attribute-local-name ((,c :inherit font-lock-variable-name-face)))
+ `(nxml-attribute-prefix ((,c :inherit font-lock-type-face)))
+ `(nxml-attribute-value ((,c :inherit font-lock-constant-face)))
+ `(nxml-cdata-section-CDATA ((,c :inherit error)))
+ `(nxml-cdata-section-delimiter ((,c :inherit error)))
+ `(nxml-char-ref-delimiter ((,c :inherit shadow)))
+ `(nxml-char-ref-number ((,c :inherit (shadow modus-themes-bold))))
+ `(nxml-delimited-data ((,c :inherit (shadow modus-themes-slant))))
+ `(nxml-delimiter ((,c :foreground ,fg-dim)))
+ `(nxml-element-colon ((,c :foreground ,fg-main)))
+ `(nxml-element-local-name ((,c :inherit font-lock-function-name-face)))
+ `(nxml-element-prefix ((,c :inherit font-lock-builtin-face)))
+ `(nxml-entity-ref-delimiter ((,c :inherit shadow)))
+ `(nxml-entity-ref-name ((,c :inherit (shadow modus-themes-bold))))
+ `(nxml-glyph ((,c :background ,bg-active :foreground ,fg-main)))
+ `(nxml-hash ((,c :inherit (bold font-lock-string-face))))
+ `(nxml-heading ((,c :inherit bold)))
+ `(nxml-name ((,c :inherit font-lock-builtin-face)))
+ `(nxml-namespace-attribute-colon ((,c :foreground ,fg-main)))
+ `(nxml-namespace-attribute-prefix ((,c :inherit font-lock-variable-name-face)))
+ `(nxml-processing-instruction-target ((,c :inherit font-lock-keyword-face)))
+ `(nxml-prolog-keyword ((,c :inherit font-lock-keyword-face)))
+ `(nxml-ref ((,c :inherit (shadow modus-themes-bold))))
+ `(rng-error ((,c :inherit error)))
;;;;; olivetti
- `(olivetti-fringe ((,class :background ,bg-main)))
+ `(olivetti-fringe ((,c :background ,bg-main)))
;;;;; orderless
- `(orderless-match-face-0 ((,class :inherit modus-themes-completion-match-0)))
- `(orderless-match-face-1 ((,class :inherit modus-themes-completion-match-1)))
- `(orderless-match-face-2 ((,class :inherit modus-themes-completion-match-2)))
- `(orderless-match-face-3 ((,class :inherit modus-themes-completion-match-3)))
+ `(orderless-match-face-0 ((,c :inherit modus-themes-completion-match-0)))
+ `(orderless-match-face-1 ((,c :inherit modus-themes-completion-match-1)))
+ `(orderless-match-face-2 ((,c :inherit modus-themes-completion-match-2)))
+ `(orderless-match-face-3 ((,c :inherit modus-themes-completion-match-3)))
;;;;; org
- `(org-agenda-calendar-event ((,class ,@(modus-themes--agenda-event blue-alt))))
- `(org-agenda-calendar-sexp ((,class ,@(modus-themes--agenda-event blue-alt t))))
- `(org-agenda-clocking ((,class :background ,yellow-nuanced-bg :foreground ,red-alt)))
- `(org-agenda-column-dateline ((,class :background ,bg-alt)))
- `(org-agenda-current-time ((,class :foreground ,blue-alt-other-faint)))
- `(org-agenda-date ((,class ,@(modus-themes--agenda-date cyan fg-main))))
- `(org-agenda-date-today
- ((,class ,@(modus-themes--agenda-date cyan fg-main nil nil bg-special-cold t t))))
- `(org-agenda-date-weekend
- ((,class ,@(modus-themes--agenda-date cyan-alt-other-faint fg-alt cyan fg-main))))
- `(org-agenda-date-weekend-today
- ((,class ,@(modus-themes--agenda-date cyan-alt-other-faint fg-alt cyan fg-main bg-special-cold t t))))
- `(org-agenda-diary ((,class :inherit org-agenda-calendar-sexp)))
- `(org-agenda-dimmed-todo-face ((,class :inherit shadow)))
- `(org-agenda-done ((,class :inherit modus-themes-grue-nuanced)))
- `(org-agenda-filter-category ((,class :inherit bold :foreground ,cyan-active)))
- `(org-agenda-filter-effort ((,class :inherit bold :foreground ,cyan-active)))
- `(org-agenda-filter-regexp ((,class :inherit bold :foreground ,cyan-active)))
- `(org-agenda-filter-tags ((,class :inherit bold :foreground ,cyan-active)))
- `(org-agenda-restriction-lock ((,class :background ,bg-dim :foreground ,fg-dim)))
- `(org-agenda-structure ((,class ,@(modus-themes--agenda-structure blue-alt))))
- `(org-agenda-structure-filter ((,class :inherit org-agenda-structure :foreground ,yellow)))
- `(org-agenda-structure-secondary ((,class :foreground ,cyan)))
- `(org-archived ((,class :background ,bg-alt :foreground ,fg-alt)))
- `(org-block ((,class :inherit modus-themes-fixed-pitch
- ,@(modus-themes--org-block bg-dim fg-main))))
- `(org-block-begin-line ((,class :inherit modus-themes-fixed-pitch
- ,@(modus-themes--org-block-delim
- bg-dim fg-special-cold
- bg-alt fg-alt))))
- `(org-block-end-line ((,class :inherit org-block-begin-line)))
- `(org-checkbox ((,class :foreground ,yellow-alt-other)))
- `(org-checkbox-statistics-done ((,class :inherit org-done)))
- `(org-checkbox-statistics-todo ((,class :inherit org-todo)))
- `(org-clock-overlay ((,class :background ,yellow-nuanced-bg :foreground ,red-alt-faint)))
- `(org-code ((,class :inherit modus-themes-markup-code :extend t)))
- `(org-column ((,class :inherit (modus-themes-fixed-pitch default)
- :background ,bg-alt)))
- `(org-column-title ((,class :inherit (bold modus-themes-fixed-pitch default)
- :underline t :background ,bg-alt)))
- `(org-date ((,class :inherit (modus-themes-link-symlink modus-themes-fixed-pitch))))
- `(org-date-selected ((,class :foreground ,blue-alt :inverse-video t)))
- `(org-dispatcher-highlight ((,class :inherit (bold modus-themes-mark-alt))))
- `(org-document-info ((,class :foreground ,fg-special-cold)))
- `(org-document-info-keyword ((,class :inherit (shadow modus-themes-fixed-pitch))))
- `(org-document-title ((,class :inherit modus-themes-heading-0)))
- `(org-done ((,class :inherit modus-themes-grue)))
- `(org-drawer ((,class :inherit (shadow modus-themes-fixed-pitch))))
- `(org-ellipsis (())) ; inherits from the heading's color
- `(org-footnote ((,class :inherit button
- ,@(modus-themes--link-color
- blue-alt blue-alt-faint))))
- `(org-formula ((,class :inherit modus-themes-fixed-pitch :foreground ,red-alt)))
- `(org-habit-alert-face ((,class ,@(modus-themes--agenda-habit
- yellow-graph-0-bg
- yellow-graph-0-bg
- yellow-graph-1-bg)
- :foreground "black"))) ; special case
- `(org-habit-alert-future-face ((,class ,@(modus-themes--agenda-habit
- yellow-graph-1-bg
- yellow-graph-0-bg
- yellow-graph-1-bg))))
- `(org-habit-clear-face ((,class ,@(modus-themes--agenda-habit
- blue-graph-0-bg
- green-graph-1-bg
- blue-graph-1-bg
- blue-graph-1-bg
- blue-graph-1-bg)
- :foreground "black"))) ; special case
- `(org-habit-clear-future-face ((,class ,@(modus-themes--agenda-habit
- blue-graph-1-bg
- green-graph-1-bg
- blue-graph-1-bg
- blue-graph-1-bg
- blue-graph-1-bg))))
- `(org-habit-overdue-face ((,class ,@(modus-themes--agenda-habit
- red-graph-0-bg
- red-graph-0-bg
- red-graph-1-bg))))
- `(org-habit-overdue-future-face ((,class ,@(modus-themes--agenda-habit
- red-graph-1-bg
- red-graph-0-bg
- red-graph-1-bg))))
- `(org-habit-ready-face ((,class ,@(modus-themes--agenda-habit
- green-graph-0-bg
- green-graph-0-bg
- green-graph-1-bg
- cyan-graph-0-bg
- blue-graph-0-bg
- cyan-graph-1-bg)
- :foreground "black"))) ; special case
- `(org-habit-ready-future-face ((,class ,@(modus-themes--agenda-habit
- green-graph-1-bg
- green-graph-0-bg
- green-graph-1-bg
- cyan-graph-1-bg
- blue-graph-0-bg
- cyan-graph-1-bg))))
- `(org-headline-done ((,class :inherit (modus-themes-variable-pitch modus-themes-grue-nuanced))))
- `(org-headline-todo ((,class :inherit modus-themes-variable-pitch :foreground ,red-nuanced-fg)))
- `(org-hide ((,class :foreground ,bg-main)))
- `(org-indent ((,class :inherit (fixed-pitch org-hide))))
- `(org-imminent-deadline ((,class :foreground ,red-intense)))
- `(org-latex-and-related ((,class :foreground ,magenta-faint)))
- `(org-level-1 ((,class :inherit modus-themes-heading-1)))
- `(org-level-2 ((,class :inherit modus-themes-heading-2)))
- `(org-level-3 ((,class :inherit modus-themes-heading-3)))
- `(org-level-4 ((,class :inherit modus-themes-heading-4)))
- `(org-level-5 ((,class :inherit modus-themes-heading-5)))
- `(org-level-6 ((,class :inherit modus-themes-heading-6)))
- `(org-level-7 ((,class :inherit modus-themes-heading-7)))
- `(org-level-8 ((,class :inherit modus-themes-heading-8)))
- `(org-link ((,class :inherit button)))
- `(org-list-dt ((,class :inherit bold)))
- `(org-macro ((,class :inherit modus-themes-markup-macro)))
- `(org-meta-line ((,class :inherit (shadow modus-themes-fixed-pitch))))
- `(org-mode-line-clock ((,class :foreground ,fg-main)))
- `(org-mode-line-clock-overrun ((,class :inherit bold :foreground ,red-active)))
- `(org-priority ((,class :foreground ,magenta)))
- `(org-property-value ((,class :inherit modus-themes-fixed-pitch :foreground ,fg-special-cold)))
- `(org-quote ((,class ,@(modus-themes--org-block bg-dim fg-special-cold fg-main))))
- `(org-scheduled ((,class ,@(modus-themes--agenda-scheduled yellow-faint fg-special-warm magenta-alt))))
- `(org-scheduled-previously ((,class ,@(modus-themes--agenda-scheduled yellow fg-special-warm yellow-alt-other))))
- `(org-scheduled-today ((,class ,@(modus-themes--agenda-scheduled yellow fg-special-warm magenta-alt-other))))
- `(org-sexp-date ((,class :foreground ,cyan-alt-other)))
- `(org-special-keyword ((,class :inherit (shadow modus-themes-fixed-pitch))))
- `(org-table ((,class :inherit modus-themes-fixed-pitch :foreground ,fg-special-cold)))
- `(org-table-header ((,class :inherit (fixed-pitch modus-themes-special-cold))))
- `(org-tag ((,class :foreground ,magenta-nuanced-fg)))
- `(org-tag-group ((,class :inherit bold :foreground ,cyan-nuanced-fg)))
- `(org-target ((,class :underline t)))
- `(org-time-grid ((,class :inherit shadow)))
- `(org-todo ((,class :foreground ,red)))
- `(org-upcoming-deadline ((,class :foreground ,red-alt-other)))
- `(org-upcoming-distant-deadline ((,class :foreground ,red-faint)))
- `(org-verbatim ((,class :inherit modus-themes-markup-verbatim)))
- `(org-verse ((,class :inherit org-quote)))
- `(org-warning ((,class :inherit bold :foreground ,red-alt-other)))
+ `(org-agenda-calendar-event ((,c :foreground ,date-event)))
+ `(org-agenda-calendar-sexp ((,c :inherit (modus-themes-slant org-agenda-calendar-event))))
+ `(org-agenda-clocking ((,c :inherit modus-themes-mark-alt)))
+ `(org-agenda-column-dateline ((,c :background ,bg-inactive)))
+ `(org-agenda-current-time ((,c :foreground ,date-now)))
+ `(org-agenda-date ((,c ,@(modus-themes--heading 'agenda-date date-weekday))))
+ `(org-agenda-date-today ((,c :inherit org-agenda-date :underline t)))
+ `(org-agenda-date-weekend ((,c :inherit org-agenda-date :foreground ,date-weekend)))
+ `(org-agenda-date-weekend-today ((,c :inherit org-agenda-date-today :foreground ,date-weekend)))
+ `(org-agenda-diary ((,c :inherit org-agenda-calendar-sexp)))
+ `(org-agenda-dimmed-todo-face ((,c :inherit shadow)))
+ `(org-agenda-done ((,c :inherit org-done)))
+ `(org-agenda-filter-category ((,c :inherit bold :foreground ,modeline-err)))
+ `(org-agenda-filter-effort ((,c :inherit bold :foreground ,modeline-err)))
+ `(org-agenda-filter-regexp ((,c :inherit bold :foreground ,modeline-err)))
+ `(org-agenda-filter-tags ((,c :inherit bold :foreground ,modeline-err)))
+ `(org-agenda-restriction-lock ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(org-agenda-structure ((,c ,@(modus-themes--heading 'agenda-structure fg-alt))))
+ `(org-agenda-structure-filter ((,c :inherit org-agenda-structure :foreground ,warning)))
+ `(org-agenda-structure-secondary ((,c :inherit font-lock-doc-face)))
+ `(org-archived ((,c :background ,bg-inactive :foreground ,fg-main)))
+ `(org-block ((,c ,@(modus-themes--org-block fg-main bg-dim))))
+ `(org-block-begin-line ((,c ,@(modus-themes--org-block prose-block bg-inactive))))
+ `(org-block-end-line ((,c :inherit org-block-begin-line)))
+ `(org-checkbox ((,c :foreground ,warning)))
+ `(org-checkbox-statistics-done ((,c :inherit org-done)))
+ `(org-checkbox-statistics-todo ((,c :inherit org-todo)))
+ `(org-clock-overlay ((,c :inherit secondary-selection)))
+ `(org-code ((,c :inherit modus-themes-prose-code)))
+ `(org-column ((,c :inherit default :background ,bg-dim)))
+ `(org-column-title ((,c :inherit (bold default) :underline t :background ,bg-dim)))
+ `(org-date ((,c :inherit modus-themes-fixed-pitch :foreground ,date-common)))
+ `(org-date-selected ((,c :foreground ,date-common :inverse-video t)))
+ `(org-document-info ((,c :foreground ,prose-metadata-value)))
+ `(org-document-info-keyword ((,c :foreground ,prose-metadata)))
+ `(org-document-title ((,c :inherit modus-themes-heading-0)))
+ `(org-done ((,c :foreground ,prose-done)))
+ `(org-drawer ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata)))
+ `(org-ellipsis (( ))) ; inherits from the heading's color
+ `(org-footnote ((,c :inherit link)))
+ `(org-formula ((,c :inherit modus-themes-fixed-pitch :foreground ,fnname)))
+ `(org-headline-done ((,c :inherit org-done)))
+ `(org-headline-todo ((,c :inherit org-todo)))
+ `(org-hide ((,c :foreground ,bg-main)))
+ `(org-indent ((,c :inherit (fixed-pitch org-hide))))
+ `(org-imminent-deadline ((,c :inherit modus-themes-bold :foreground ,date-deadline)))
+ `(org-latex-and-related ((,c :foreground ,type)))
+ `(org-level-1 ((,c :inherit modus-themes-heading-1)))
+ `(org-level-2 ((,c :inherit modus-themes-heading-2)))
+ `(org-level-3 ((,c :inherit modus-themes-heading-3)))
+ `(org-level-4 ((,c :inherit modus-themes-heading-4)))
+ `(org-level-5 ((,c :inherit modus-themes-heading-5)))
+ `(org-level-6 ((,c :inherit modus-themes-heading-6)))
+ `(org-level-7 ((,c :inherit modus-themes-heading-7)))
+ `(org-level-8 ((,c :inherit modus-themes-heading-8)))
+ `(org-link ((,c :inherit link)))
+ `(org-list-dt ((,c :inherit bold)))
+ `(org-macro ((,c :inherit modus-themes-prose-macro)))
+ `(org-meta-line ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata)))
+ `(org-mode-line-clock (( )))
+ `(org-mode-line-clock-overrun ((,c :inherit bold :foreground ,modeline-err)))
+ `(org-priority ((,c :foreground ,prose-tag)))
+ `(org-property-value ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-metadata-value)))
+ `(org-quote ((,c :inherit org-block)))
+ `(org-scheduled ((,c :foreground ,date-scheduled)))
+ `(org-scheduled-previously ((,c :inherit org-scheduled)))
+ `(org-scheduled-today ((,c :inherit (modus-themes-bold org-scheduled))))
+ `(org-sexp-date ((,c :foreground ,date-common)))
+ `(org-special-keyword ((,c :inherit org-drawer)))
+ `(org-table ((,c :inherit modus-themes-fixed-pitch :foreground ,prose-table)))
+ `(org-table-header ((,c :inherit (bold org-table))))
+ `(org-tag ((,c :foreground ,prose-tag)))
+ `(org-tag-group ((,c :inherit (bold org-tag))))
+ `(org-target ((,c :underline t)))
+ `(org-time-grid ((,c :foreground ,fg-dim)))
+ `(org-todo ((,c :foreground ,prose-todo)))
+ `(org-upcoming-deadline ((,c :foreground ,date-deadline)))
+ `(org-upcoming-distant-deadline ((,c :inherit org-upcoming-deadline)))
+ `(org-verbatim ((,c :inherit modus-themes-prose-verbatim)))
+ `(org-verse ((,c :inherit org-block)))
+ `(org-warning ((,c :inherit warning)))
+;;;;; org-habit
+ `(org-habit-alert-face ((,c :background ,bg-graph-yellow-0 :foreground "black"))) ; fg is special case
+ `(org-habit-alert-future-face ((,c :background ,bg-graph-yellow-1)))
+ `(org-habit-clear-face ((,c :background ,bg-graph-blue-0 :foreground "black"))) ; fg is special case
+ `(org-habit-clear-future-face ((,c :background ,bg-graph-blue-1)))
+ `(org-habit-overdue-face ((,c :background ,bg-graph-red-0)))
+ `(org-habit-overdue-future-face ((,c :background ,bg-graph-red-1)))
+ `(org-habit-ready-face ((,c :background ,bg-graph-green-0 :foreground "black"))) ; fg is special case
+ `(org-habit-ready-future-face ((,c :background ,bg-graph-green-1)))
;;;;; org-journal
- `(org-journal-calendar-entry-face ((,class :inherit modus-themes-slant :foreground ,yellow-alt-other)))
- `(org-journal-calendar-scheduled-face ((,class :inherit modus-themes-slant :foreground ,red-alt-other)))
- `(org-journal-highlight ((,class :foreground ,magenta-alt)))
+ `(org-journal-calendar-entry-face ((,c :inherit modus-themes-slant :foreground ,date-common)))
+ `(org-journal-calendar-scheduled-face ((,c :inherit (modus-themes-slant org-scheduled))))
+ `(org-journal-highlight ((,c :foreground ,err)))
;;;;; org-noter
- `(org-noter-no-notes-exist-face ((,class :inherit error)))
- `(org-noter-notes-exist-face ((,class :inherit success)))
+ `(org-noter-no-notes-exist-face ((,c :inherit error)))
+ `(org-noter-notes-exist-face ((,c :inherit success)))
;;;;; org-pomodoro
- `(org-pomodoro-mode-line ((,class :foreground ,red-active)))
- `(org-pomodoro-mode-line-break ((,class :foreground ,cyan-active)))
- `(org-pomodoro-mode-line-overtime ((,class :inherit bold :foreground ,red-active)))
+ `(org-pomodoro-mode-line ((,c :foreground ,err)))
+ `(org-pomodoro-mode-line-break ((,c :foreground ,info)))
+ `(org-pomodoro-mode-line-overtime ((,c :inherit error)))
;;;;; org-recur
- `(org-recur ((,class :foreground ,magenta-active)))
+ `(org-recur ((,c :foreground ,fg-alt)))
;;;;; org-roam
- `(org-roam-dim ((,class :foreground "gray50")))
- `(org-roam-header-line ((,class :inherit bold :foreground ,magenta-active)))
- `(org-roam-olp ((,class :inherit shadow)))
- `(org-roam-preview-heading ((,class :inherit modus-themes-subtle-neutral)))
- `(org-roam-preview-heading-highlight ((,class :inherit modus-themes-intense-neutral)))
- `(org-roam-preview-heading-selection ((,class :inherit modus-themes-special-cold)))
- `(org-roam-preview-region ((,class :inherit bold)))
- `(org-roam-title ((,class :inherit modus-themes-pseudo-header)))
+ `(org-roam-dim ((,c :foreground "gray50")))
+ `(org-roam-olp ((,c :inherit shadow)))
+ `(org-roam-preview-heading ((,c :background ,bg-inactive)))
+ `(org-roam-preview-heading-highlight ((,c :background ,bg-active :foreground ,fg-main)))
+ `(org-roam-preview-region ((,c :inherit bold)))
+ `(org-roam-title ((,c :inherit bold)))
;;;;; org-superstar
- `(org-superstar-item ((,class :foreground ,fg-main)))
- `(org-superstar-leading ((,class :foreground ,fg-whitespace)))
-;;;;; org-table-sticky-header
- `(org-table-sticky-header-face ((,class :inherit modus-themes-special-cold)))
+ `(org-superstar-item ((,c :foreground ,fg-main)))
;;;;; org-tree-slide
- `(org-tree-slide-header-overlay-face ((,class :inherit org-document-title)))
+ `(org-tree-slide-header-overlay-face ((,c :inherit org-document-title)))
;;;;; origami
- `(origami-fold-header-face ((,class :background ,bg-dim :foreground ,fg-dim :box t)))
- `(origami-fold-replacement-face ((,class :background ,bg-alt :foreground ,fg-alt)))
+ `(origami-fold-header-face ((,c :background ,bg-dim :foreground ,fg-dim :box t)))
+ `(origami-fold-replacement-face ((,c :background ,bg-inactive :foreground ,fg-dim)))
;;;;; outline-mode
- `(outline-1 ((,class :inherit modus-themes-heading-1)))
- `(outline-2 ((,class :inherit modus-themes-heading-2)))
- `(outline-3 ((,class :inherit modus-themes-heading-3)))
- `(outline-4 ((,class :inherit modus-themes-heading-4)))
- `(outline-5 ((,class :inherit modus-themes-heading-5)))
- `(outline-6 ((,class :inherit modus-themes-heading-6)))
- `(outline-7 ((,class :inherit modus-themes-heading-7)))
- `(outline-8 ((,class :inherit modus-themes-heading-8)))
+ `(outline-1 ((,c :inherit modus-themes-heading-1)))
+ `(outline-2 ((,c :inherit modus-themes-heading-2)))
+ `(outline-3 ((,c :inherit modus-themes-heading-3)))
+ `(outline-4 ((,c :inherit modus-themes-heading-4)))
+ `(outline-5 ((,c :inherit modus-themes-heading-5)))
+ `(outline-6 ((,c :inherit modus-themes-heading-6)))
+ `(outline-7 ((,c :inherit modus-themes-heading-7)))
+ `(outline-8 ((,c :inherit modus-themes-heading-8)))
;;;;; outline-minor-faces
`(outline-minor-0 (()))
;;;;; package (M-x list-packages)
- `(package-description ((,class :foreground ,fg-special-cold)))
- `(package-help-section-name ((,class :inherit bold :foreground ,cyan)))
- `(package-name ((,class :inherit button)))
- `(package-status-available ((,class :foreground ,cyan-alt-other)))
- `(package-status-avail-obso ((,class :inherit error)))
- `(package-status-built-in ((,class :foreground ,magenta)))
- `(package-status-dependency ((,class :foreground ,magenta-alt-other)))
- `(package-status-disabled ((,class :inherit modus-themes-subtle-red)))
- `(package-status-external ((,class :foreground ,cyan-alt-other)))
- `(package-status-held ((,class :foreground ,yellow-alt)))
- `(package-status-incompat ((,class :inherit warning)))
- `(package-status-installed ((,class :foreground ,fg-special-warm)))
- `(package-status-new ((,class :inherit success)))
- `(package-status-unsigned ((,class :inherit error)))
+ `(package-description ((,c :foreground ,docstring)))
+ `(package-help-section-name ((,c :inherit bold)))
+ `(package-name ((,c :inherit link)))
+ `(package-status-available ((,c :foreground ,date-common)))
+ `(package-status-avail-obso ((,c :inherit error)))
+ `(package-status-built-in ((,c :foreground ,builtin)))
+ `(package-status-dependency ((,c :foreground ,warning)))
+ `(package-status-disabled ((,c :inherit error :strike-through t)))
+ `(package-status-from-source ((,c :foreground ,type)))
+ `(package-status-held ((,c :foreground ,warning)))
+ `(package-status-incompat ((,c :inherit warning)))
+ `(package-status-installed ((,c :foreground ,fg-alt)))
+ `(package-status-new ((,c :inherit success)))
+ `(package-status-unsigned ((,c :inherit error)))
;;;;; page-break-lines
- `(page-break-lines ((,class :inherit default :foreground ,fg-window-divider-outer)))
+ `(page-break-lines ((,c :inherit default :foreground "gray50")))
;;;;; pandoc-mode
- `(pandoc-citation-key-face ((,class :background ,bg-dim :foreground ,magenta-alt)))
- `(pandoc-directive-@@-face ((,class :background ,bg-dim :foreground ,blue-alt-other)))
- `(pandoc-directive-braces-face ((,class :foreground ,blue-alt-other)))
- `(pandoc-directive-contents-face ((,class :foreground ,cyan-alt-other)))
- `(pandoc-directive-type-face ((,class :foreground ,magenta)))
+ `(pandoc-citation-key-face ((,c :inherit font-lock-builtin-face)))
+ `(pandoc-directive-@@-face ((,c :inherit font-lock-keyword-face)))
+ `(pandoc-directive-braces-face ((,c :inherit font-lock-constant-face)))
+ `(pandoc-directive-contents-face ((,c :inherit font-lock-string-face)))
+ `(pandoc-directive-type-face ((,c :inherit font-lock-type-face)))
;;;;; paren-face
- `(parenthesis ((,class :foreground ,fg-unfocused)))
+ `(parenthesis ((,c :inherit shadow)))
;;;;; pass
- `(pass-mode-directory-face ((,class :inherit bold :foreground ,fg-special-cold)))
- `(pass-mode-entry-face ((,class :background ,bg-main :foreground ,fg-main)))
- `(pass-mode-header-face ((,class :foreground ,fg-special-warm)))
+ `(pass-mode-directory-face ((,c :inherit bold :foreground ,accent-0)))
+ `(pass-mode-entry-face ((,c :background ,bg-main :foreground ,fg-main)))
+ `(pass-mode-header-face ((,c :inherit shadow)))
;;;;; pdf-tools
- `(pdf-links-read-link ((,class :background ,fg-main :foreground ,magenta-intense-bg :inherit bold))) ; Foreground is background and vice versa
- `(pdf-occur-document-face ((,class :inherit shadow)))
- `(pdf-occur-page-face ((,class :inherit shadow)))
+ `(pdf-links-read-link ((,c :background ,fg-main :foreground ,bg-magenta-intense :inherit bold))) ; Foreground is background and vice versa
+ `(pdf-occur-document-face ((,c :inherit shadow)))
+ `(pdf-occur-page-face ((,c :inherit shadow)))
;;;;; persp-mode
- `(persp-face-lighter-buffer-not-in-persp ((,class :inherit modus-themes-intense-red)))
- `(persp-face-lighter-default ((,class :inherit bold :foreground ,blue-active)))
- `(persp-face-lighter-nil-persp ((,class :inherit bold :foreground ,fg-active)))
+ `(persp-face-lighter-buffer-not-in-persp ((,c :inherit error)))
+ `(persp-face-lighter-default ((,c :inherit bold :foreground ,name)))
+ `(persp-face-lighter-nil-persp ((,c :inherit bold)))
;;;;; perspective
- `(persp-selected-face ((,class :inherit bold :foreground ,blue-active)))
-;;;;; phi-grep
- `(phi-grep-heading-face ((,class :inherit modus-themes-pseudo-header :foreground ,fg-special-cold)))
- `(phi-grep-line-number-face ((,class :foreground ,fg-special-warm)))
- `(phi-grep-match-face ((,class :inherit modus-themes-special-calm)))
- `(phi-grep-modified-face ((,class :inherit modus-themes-refine-yellow)))
- `(phi-grep-overlay-face ((,class :inherit modus-themes-refine-blue)))
-;;;;; pomidor
- `(pomidor-break-face ((,class :foreground ,blue-alt-other)))
- `(pomidor-overwork-face ((,class :foreground ,red-alt-other)))
- `(pomidor-skip-face ((,class :inherit (shadow modus-themes-slant))))
- `(pomidor-work-face ((,class :inherit modus-themes-grue)))
+ `(persp-selected-face ((,c :inherit bold :foreground ,name)))
;;;;; popup
- `(popup-face ((,class :background ,bg-alt :foreground ,fg-main)))
- `(popup-isearch-match ((,class :inherit modus-themes-search-success)))
- `(popup-menu-mouse-face ((,class :inherit highlight)))
- `(popup-menu-selection-face ((,class :inherit modus-themes-completion-selected-popup)))
- `(popup-scroll-bar-background-face ((,class :background ,bg-active)))
- `(popup-scroll-bar-foreground-face ((,class :foreground ,fg-active)))
- `(popup-summary-face ((,class :background ,bg-active :foreground ,fg-inactive)))
- `(popup-tip-face ((,class :inherit modus-themes-refine-yellow)))
+ `(popup-face ((,c :background ,bg-inactive :foreground ,fg-main)))
+ `(popup-isearch-match ((,c :inherit modus-themes-search-current)))
+ `(popup-menu-mouse-face ((,c :inherit highlight)))
+ `(popup-menu-selection-face ((,c :inherit modus-themes-completion-selected)))
+ `(popup-scroll-bar-background-face ((,c :background ,bg-active)))
+ `(popup-scroll-bar-foreground-face (( )))
+ `(popup-summary-face ((,c :background ,bg-active :foreground ,fg-dim)))
+ `(popup-tip-face ((,c :inherit modus-themes-intense-yellow)))
;;;;; powerline
- `(powerline-active0 ((,class :background ,fg-unfocused :foreground ,bg-main)))
- `(powerline-active1 ((,class :inherit mode-line-active)))
- `(powerline-active2 ((,class :inherit mode-line-inactive)))
- `(powerline-inactive0 ((,class :background ,bg-active :foreground ,fg-alt)))
- `(powerline-inactive1 ((,class :background ,bg-main :foreground ,fg-alt)))
- `(powerline-inactive2 ((,class :inherit mode-line-inactive)))
+ `(powerline-active0 ((,c :background ,fg-dim :foreground ,bg-main)))
+ `(powerline-active1 ((,c :inherit mode-line)))
+ `(powerline-active2 ((,c :inherit mode-line-inactive)))
+ `(powerline-inactive0 ((,c :background ,bg-active :foreground ,fg-dim)))
+ `(powerline-inactive1 ((,c :background ,bg-main :foreground ,fg-dim)))
+ `(powerline-inactive2 ((,c :inherit mode-line-inactive)))
;;;;; powerline-evil
- `(powerline-evil-base-face ((,class :background ,fg-main :foreground ,bg-main)))
- `(powerline-evil-emacs-face ((,class :inherit modus-themes-active-magenta)))
- `(powerline-evil-insert-face ((,class :inherit modus-themes-active-green)))
- `(powerline-evil-motion-face ((,class :inherit modus-themes-active-blue)))
- `(powerline-evil-normal-face ((,class :background ,fg-alt :foreground ,bg-main)))
- `(powerline-evil-operator-face ((,class :inherit modus-themes-active-yellow)))
- `(powerline-evil-replace-face ((,class :inherit modus-themes-active-red)))
- `(powerline-evil-visual-face ((,class :inherit modus-themes-active-cyan)))
+ `(powerline-evil-base-face ((,c :background ,fg-main :foreground ,bg-main)))
+ `(powerline-evil-emacs-face ((,c :inherit modus-themes-intense-magenta)))
+ `(powerline-evil-insert-face ((,c :inherit modus-themes-intense-green)))
+ `(powerline-evil-motion-face ((,c :inherit modus-themes-intense-blue)))
+ `(powerline-evil-normal-face ((,c :background ,fg-alt :foreground ,bg-main)))
+ `(powerline-evil-operator-face ((,c :inherit modus-themes-intense-yellow)))
+ `(powerline-evil-replace-face ((,c :inherit modus-themes-intense-red)))
+ `(powerline-evil-visual-face ((,c :inherit modus-themes-intense-cyan)))
;;;;; prescient
- `(prescient-primary-highlight ((,class :inherit modus-themes-completion-match-0)))
- `(prescient-secondary-highlight ((,class :inherit modus-themes-completion-match-1)))
+ `(prescient-primary-highlight ((,c :inherit modus-themes-completion-match-0)))
+ `(prescient-secondary-highlight ((,c :inherit modus-themes-completion-match-1)))
;;;;; proced
- `(proced-mark ((,class :inherit modus-themes-mark-symbol)))
- `(proced-marked ((,class :inherit modus-themes-mark-alt)))
- `(proced-sort-header ((,class :inherit bold :foreground ,fg-special-calm :underline t)))
+ `(proced-mark ((,c :inherit bold)))
+ `(proced-marked ((,c :inherit modus-themes-mark-alt)))
+ `(proced-sort-header ((,c :inherit bold :underline t)))
;;;;; prodigy
- `(prodigy-green-face ((,class :inherit success)))
- `(prodigy-red-face ((,class :inherit error)))
- `(prodigy-yellow-face ((,class :inherit warning)))
+ `(prodigy-green-face ((,c :inherit success)))
+ `(prodigy-red-face ((,c :inherit error)))
+ `(prodigy-yellow-face ((,c :inherit warning)))
;;;;; pulse
- `(pulse-highlight-start-face ((,class :background ,bg-active-accent :extend t)))
+ `(pulse-highlight-start-face ((,c :background ,bg-blue-intense :extend t)))
;;;;; pyim
- `(pyim-page ((,class :background ,bg-active :foreground ,fg-active)))
- `(pyim-page-selection ((,class :inherit bold :background ,bg-active :foreground ,blue-active)))
- `(pyim-page-subword ((,class :background ,bg-inactive)))
+ `(pyim-page ((,c :background ,bg-active)))
+ `(pyim-page-selection ((,c :inherit bold :background ,bg-active :foreground ,info)))
+ `(pyim-page-subword ((,c :background ,bg-inactive)))
;;;;; quick-peek
- `(quick-peek-background-face ((,class :background ,bg-alt)))
- `(quick-peek-border-face ((,class :background ,fg-window-divider-inner :height 1)))
- `(quick-peek-padding-face ((,class :background ,bg-alt :height 0.15)))
-;;;;; racket-mode
- `(racket-debug-break-face ((,class :inherit modus-themes-intense-red)))
- `(racket-debug-locals-face ((,class :box (:line-width -1 :color nil)
- :foreground ,green-alt-other)))
- `(racket-debug-result-face ((,class :inherit bold :box (:line-width -1 :color nil)
- :foreground ,green)))
- `(racket-here-string-face ((,class :foreground ,blue-alt)))
- `(racket-keyword-argument-face ((,class :foreground ,red-alt)))
- `(racket-logger-config-face ((,class :inherit (shadow modus-themes-slant))))
- `(racket-logger-debug-face ((,class :foreground ,blue-alt-other)))
- `(racket-logger-info-face ((,class :foreground ,fg-lang-note)))
- `(racket-logger-topic-face ((,class :inherit modus-themes-slant :foreground ,magenta)))
- `(racket-selfeval-face ((,class :foreground ,green-alt)))
- `(racket-xp-error-face ((,class :inherit modus-themes-lang-error)))
-;;;;; rainbow-blocks
- `(rainbow-blocks-depth-1-face ((,class :foreground ,magenta-alt-other)))
- `(rainbow-blocks-depth-2-face ((,class :foreground ,blue)))
- `(rainbow-blocks-depth-3-face ((,class :foreground ,magenta-alt)))
- `(rainbow-blocks-depth-4-face ((,class :foreground ,green)))
- `(rainbow-blocks-depth-5-face ((,class :foreground ,magenta)))
- `(rainbow-blocks-depth-6-face ((,class :foreground ,cyan)))
- `(rainbow-blocks-depth-7-face ((,class :foreground ,yellow)))
- `(rainbow-blocks-depth-8-face ((,class :foreground ,cyan-alt)))
- `(rainbow-blocks-depth-9-face ((,class :foreground ,red-alt)))
- `(rainbow-blocks-unmatched-face ((,class :foreground ,red)))
+ `(quick-peek-background-face ((,c :background ,bg-inactive)))
+ `(quick-peek-border-face ((,c :background ,border :height 1)))
+ `(quick-peek-padding-face ((,c :background ,bg-inactive :height 0.15)))
;;;;; rainbow-delimiters
- `(rainbow-delimiters-base-error-face ((,class :background ,red-subtle-bg :foreground ,fg-main)))
- `(rainbow-delimiters-base-face ((,class :foreground ,fg-main)))
- `(rainbow-delimiters-depth-1-face ((,class :foreground ,fg-main)))
- `(rainbow-delimiters-depth-2-face ((,class :foreground ,magenta-intense)))
- `(rainbow-delimiters-depth-3-face ((,class :foreground ,cyan-intense)))
- `(rainbow-delimiters-depth-4-face ((,class :foreground ,orange-intense)))
- `(rainbow-delimiters-depth-5-face ((,class :foreground ,purple-intense)))
- `(rainbow-delimiters-depth-6-face ((,class :foreground ,green-intense)))
- `(rainbow-delimiters-depth-7-face ((,class :foreground ,red-intense)))
- `(rainbow-delimiters-depth-8-face ((,class :foreground ,blue-intense)))
- `(rainbow-delimiters-depth-9-face ((,class :foreground ,yellow-intense)))
- `(rainbow-delimiters-mismatched-face ((,class :inherit (bold modus-themes-refine-yellow))))
- `(rainbow-delimiters-unmatched-face ((,class :inherit (bold modus-themes-refine-red))))
+ `(rainbow-delimiters-base-error-face ((,c :inherit modus-themes-subtle-red)))
+ `(rainbow-delimiters-base-face ((,c :foreground ,fg-main)))
+ `(rainbow-delimiters-depth-1-face ((,c :foreground ,rainbow-0)))
+ `(rainbow-delimiters-depth-2-face ((,c :foreground ,rainbow-1)))
+ `(rainbow-delimiters-depth-3-face ((,c :foreground ,rainbow-2)))
+ `(rainbow-delimiters-depth-4-face ((,c :foreground ,rainbow-3)))
+ `(rainbow-delimiters-depth-5-face ((,c :foreground ,rainbow-4)))
+ `(rainbow-delimiters-depth-6-face ((,c :foreground ,rainbow-5)))
+ `(rainbow-delimiters-depth-7-face ((,c :foreground ,rainbow-6)))
+ `(rainbow-delimiters-depth-8-face ((,c :foreground ,rainbow-7)))
+ `(rainbow-delimiters-depth-9-face ((,c :foreground ,rainbow-8)))
+ `(rainbow-delimiters-mismatched-face ((,c :inherit (bold modus-themes-intense-yellow))))
+ `(rainbow-delimiters-unmatched-face ((,c :inherit (bold modus-themes-intense-red))))
;;;;; rcirc
- `(rcirc-bright-nick ((,class :inherit bold :foreground ,magenta-intense)))
- `(rcirc-dim-nick ((,class :inherit shadow)))
- `(rcirc-monospace-text ((,class :inherit fixed-pitch)))
- `(rcirc-my-nick ((,class :inherit bold :foreground ,magenta)))
- `(rcirc-nick-in-message ((,class :inherit bold :foreground ,red-alt)))
- `(rcirc-nick-in-message-full-line ((,class :inherit bold :foreground ,cyan-alt-other)))
- `(rcirc-other-nick ((,class :inherit bold :foreground ,blue)))
- `(rcirc-prompt ((,class :inherit modus-themes-prompt)))
- `(rcirc-server ((,class :inherit shadow)))
- `(rcirc-timestamp ((,class :foreground ,cyan)))
- `(rcirc-track-keyword ((,class :inherit bold)))
- `(rcirc-track-nick ((,class :inherit bold :foreground ,red-active)))
- `(rcirc-url ((,class :inherit link)))
+ `(rcirc-bright-nick ((,c :inherit bold :foreground ,accent-2)))
+ `(rcirc-dim-nick ((,c :inherit shadow)))
+ `(rcirc-monospace-text ((,c :inherit fixed-pitch)))
+ `(rcirc-my-nick ((,c :inherit bold :foreground ,accent-1)))
+ `(rcirc-nick-in-message ((,c :inherit rcirc-my-nick)))
+ `(rcirc-nick-in-message-full-line ((,c :inherit rcirc-my-nick)))
+ `(rcirc-other-nick ((,c :inherit bold :foreground ,accent-0)))
+ `(rcirc-prompt ((,c :inherit minibuffer-prompt)))
+ `(rcirc-server ((,c :inherit font-lock-comment-face)))
+ `(rcirc-timestamp ((,c :foreground ,date-common)))
+ `(rcirc-track-keyword ((,c :inherit bold :foreground ,modeline-warning)))
+ `(rcirc-track-nick ((,c :inherit rcirc-my-nick)))
+ `(rcirc-url ((,c :inherit link)))
;;;;; recursion-indicator
- `(recursion-indicator-general ((,class :foreground ,blue-active)))
- `(recursion-indicator-minibuffer ((,class :foreground ,red-active)))
+ `(recursion-indicator-general ((,c :foreground ,modeline-err)))
+ `(recursion-indicator-minibuffer ((,c :foreground ,modeline-info)))
;;;;; regexp-builder (re-builder)
- `(reb-match-0 ((,class :inherit modus-themes-refine-cyan)))
- `(reb-match-1 ((,class :inherit modus-themes-subtle-magenta)))
- `(reb-match-2 ((,class :inherit modus-themes-subtle-green)))
- `(reb-match-3 ((,class :inherit modus-themes-refine-yellow)))
- `(reb-regexp-grouping-backslash ((,class :inherit font-lock-regexp-grouping-backslash)))
- `(reb-regexp-grouping-construct ((,class :inherit font-lock-regexp-grouping-construct)))
+ `(reb-match-0 ((,c :inherit modus-themes-intense-cyan)))
+ `(reb-match-1 ((,c :inherit modus-themes-subtle-magenta)))
+ `(reb-match-2 ((,c :inherit modus-themes-subtle-green)))
+ `(reb-match-3 ((,c :inherit modus-themes-intense-yellow)))
+ `(reb-regexp-grouping-backslash ((,c :inherit font-lock-regexp-grouping-backslash)))
+ `(reb-regexp-grouping-construct ((,c :inherit font-lock-regexp-grouping-construct)))
;;;;; rg (rg.el)
- `(rg-column-number-face ((,class :foreground ,magenta-alt-other)))
- `(rg-context-face ((,class :foreground ,fg-unfocused)))
- `(rg-error-face ((,class :inherit bold :foreground ,red)))
- `(rg-file-tag-face ((,class :foreground ,fg-special-cold)))
- `(rg-filename-face ((,class :inherit bold :foreground ,fg-special-cold)))
- `(rg-line-number-face ((,class :foreground ,fg-special-warm)))
- `(rg-literal-face ((,class :foreground ,blue-alt)))
- `(rg-match-face ((,class :inherit modus-themes-special-calm)))
- `(rg-regexp-face ((,class :foreground ,magenta-active)))
- `(rg-toggle-off-face ((,class :inherit bold :foreground ,fg-inactive)))
- `(rg-toggle-on-face ((,class :inherit bold :foreground ,cyan-active)))
- `(rg-warning-face ((,class :inherit bold :foreground ,yellow)))
+ `(rg-column-number-face ((,c :inherit shadow)))
+ `(rg-context-face ((,c :inherit shadow)))
+ `(rg-error-face ((,c :inherit error)))
+ `(rg-file-tag-face ((,c :inherit font-lock-builtin-face)))
+ `(rg-filename-face ((,c :inherit bold :foreground ,name)))
+ `(rg-line-number-face ((,c :inherit shadow)))
+ `(rg-literal-face ((,c :inherit font-lock-constant-face)))
+ `(rg-match-face ((,c :inherit match)))
+ `(rg-regexp-face ((,c :foreground ,name)))
+ `(rg-toggle-off-face ((,c :inherit (shadow bold))))
+ `(rg-toggle-on-face ((,c :inherit success)))
+ `(rg-warning-face ((,c :inherit warning)))
;;;;; ripgrep
- `(ripgrep-context-face ((,class :foreground ,fg-unfocused)))
- `(ripgrep-error-face ((,class :inherit bold :foreground ,red)))
- `(ripgrep-hit-face ((,class :foreground ,cyan)))
- `(ripgrep-match-face ((,class :inherit modus-themes-special-calm)))
+ `(ripgrep-context-face ((,c :inherit shadow)))
+ `(ripgrep-error-face ((,c :inherit error)))
+ `(ripgrep-hit-face ((,c :inherit success)))
+ `(ripgrep-match-face ((,c :inherit match)))
;;;;; rmail
- `(rmail-header-name ((,class :foreground ,cyan-alt-other)))
- `(rmail-highlight ((,class :inherit bold :foreground ,magenta-alt)))
+ `(rmail-header-name ((,c :inherit bold)))
+ `(rmail-highlight ((,c :inherit bold :foreground ,mail-other)))
;;;;; ruler-mode
- `(ruler-mode-column-number ((,class :inherit ruler-mode-default :foreground ,fg-main)))
- `(ruler-mode-comment-column ((,class :inherit ruler-mode-default :foreground ,red)))
- `(ruler-mode-current-column ((,class :inherit ruler-mode-default :background ,blue-subtle-bg :foreground ,fg-main)))
- `(ruler-mode-default ((,class :inherit default :background ,bg-alt :foreground ,fg-unfocused)))
- `(ruler-mode-fill-column ((,class :inherit ruler-mode-default :foreground ,green)))
- `(ruler-mode-fringes ((,class :inherit ruler-mode-default :foreground ,cyan)))
- `(ruler-mode-goal-column ((,class :inherit ruler-mode-default :foreground ,blue)))
- `(ruler-mode-margins ((,class :inherit ruler-mode-default :foreground ,bg-main)))
- `(ruler-mode-pad ((,class :inherit ruler-mode-default :background ,bg-active :foreground ,fg-inactive)))
- `(ruler-mode-tab-stop ((,class :inherit ruler-mode-default :foreground ,fg-special-warm)))
-;;;;; selectrum
- `(selectrum-current-candidate ((,class :inherit modus-themes-completion-selected)))
- `(selectrum-mouse-highlight ((,class :inherit highlight)))
- `(selectrum-quick-keys-highlight ((,class :inherit bold :background ,bg-char-0)))
- `(selectrum-quick-keys-match ((,class :inherit bold :background ,bg-char-1)))
-;;;;; semantic
- `(semantic-complete-inline-face ((,class :foreground ,fg-special-warm :underline t)))
- `(semantic-decoration-on-fileless-includes ((,class :inherit modus-themes-refine-green)))
- `(semantic-decoration-on-private-members-face ((,class :inherit modus-themes-refine-cyan)))
- `(semantic-decoration-on-protected-members-face ((,class :background ,bg-dim)))
- `(semantic-decoration-on-unknown-includes ((,class :inherit modus-themes-refine-red)))
- `(semantic-decoration-on-unparsed-includes ((,class :inherit modus-themes-refine-yellow)))
- `(semantic-highlight-edits-face ((,class :background ,bg-alt)))
- `(semantic-highlight-func-current-tag-face ((,class :background ,bg-alt)))
- `(semantic-idle-symbol-highlight ((,class :inherit modus-themes-special-mild)))
- `(semantic-tag-boundary-face ((,class :overline ,blue-intense)))
- `(semantic-unmatched-syntax-face ((,class :underline ,fg-lang-error)))
+ `(ruler-mode-column-number ((,c :inherit ruler-mode-default)))
+ `(ruler-mode-comment-column ((,c :inherit ruler-mode-default :foreground ,red)))
+ `(ruler-mode-current-column ((,c :inherit ruler-mode-default :background ,bg-active :foreground ,fg-main)))
+ `(ruler-mode-default ((,c :inherit default :background ,bg-dim :foreground ,fg-dim)))
+ `(ruler-mode-fill-column ((,c :inherit ruler-mode-default :foreground ,green)))
+ `(ruler-mode-fringes ((,c :inherit ruler-mode-default :foreground ,cyan)))
+ `(ruler-mode-goal-column ((,c :inherit ruler-mode-default :foreground ,blue)))
+ `(ruler-mode-margins ((,c :inherit ruler-mode-default :foreground ,bg-main)))
+ `(ruler-mode-pad ((,c :inherit ruler-mode-default :background ,bg-inactive :foreground ,fg-dim)))
+ `(ruler-mode-tab-stop ((,c :inherit ruler-mode-default :foreground ,yellow)))
;;;;; sesman
- `(sesman-browser-button-face ((,class :inherit button)))
- `(sesman-browser-highligh-face ((,class :inherit highlight)))
- `(sesman-buffer-face ((,class :foreground ,magenta)))
- `(sesman-directory-face ((,class :inherit bold :foreground ,blue)))
- `(sesman-project-face ((,class :inherit bold :foreground ,magenta-alt-other)))
+ `(sesman-browser-button-face ((,c :inherit button)))
+ `(sesman-browser-highligh-face ((,c :inherit highlight)))
+ `(sesman-buffer-face ((,c :foreground ,accent-1)))
+ `(sesman-directory-face ((,c :inherit bold :foreground ,accent-0)))
+ `(sesman-project-face ((,c :inherit bold :foreground ,accent-2)))
;;;;; shell-script-mode
- `(sh-heredoc ((,class :foreground ,blue-alt)))
- `(sh-quoted-exec ((,class :inherit modus-themes-bold :foreground ,magenta-alt)))
+ `(sh-heredoc ((,c :inherit font-lock-string-face)))
+ `(sh-quoted-exec ((,c :inherit font-lock-builtin-face)))
;;;;; shortdoc
- `(shortdoc-heading ((,class :inherit modus-themes-pseudo-header)))
+ `(shortdoc-heading ((,c :inherit bold)))
`(shortdoc-section (())) ; remove the default's variable-pitch style
;;;;; show-paren-mode
- `(show-paren-match ((,class ,@(modus-themes--paren bg-paren-match
- bg-paren-match-intense)
- :foreground ,fg-main)))
- `(show-paren-match-expression ((,class :background ,bg-paren-expression)))
- `(show-paren-mismatch ((,class :inherit modus-themes-intense-red)))
+ `(show-paren-match ((,c :background ,bg-paren-match :foreground ,fg-main :underline ,underline-paren-match)))
+ `(show-paren-match-expression ((,c :background ,bg-paren-expression)))
+ `(show-paren-mismatch ((,c :inherit modus-themes-intense-red)))
;;;;; shr
- `(shr-abbreviation ((,class :inherit modus-themes-lang-note)))
- `(shr-code ((,class :inherit modus-themes-markup-verbatim)))
- `(shr-h1 ((,class :inherit modus-themes-heading-1)))
- `(shr-h2 ((,class :inherit modus-themes-heading-2)))
- `(shr-h3 ((,class :inherit modus-themes-heading-3)))
- `(shr-h4 ((,class :inherit modus-themes-heading-4)))
- `(shr-h5 ((,class :inherit modus-themes-heading-5)))
- `(shr-h6 ((,class :inherit modus-themes-heading-6)))
- `(shr-selected-link ((,class :inherit modus-themes-subtle-red)))
+ `(shr-abbreviation ((,c :inherit modus-themes-lang-note)))
+ `(shr-code ((,c :inherit modus-themes-prose-verbatim)))
+ `(shr-h1 ((,c :inherit modus-themes-heading-1)))
+ `(shr-h2 ((,c :inherit modus-themes-heading-2)))
+ `(shr-h3 ((,c :inherit modus-themes-heading-3)))
+ `(shr-h4 ((,c :inherit modus-themes-heading-4)))
+ `(shr-h5 ((,c :inherit modus-themes-heading-5)))
+ `(shr-h6 ((,c :inherit modus-themes-heading-6)))
+ `(shr-selected-link ((,c :inherit modus-themes-subtle-red)))
;;;;; side-notes
- `(side-notes ((,class :background ,bg-dim :foreground ,fg-dim)))
+ `(side-notes ((,c :background ,bg-dim :foreground ,fg-dim)))
;;;;; sieve-mode
- `(sieve-action-commands ((,class :inherit font-lock-builtin-face)))
- `(sieve-control-commands ((,class :inherit font-lock-keyword-face)))
- `(sieve-tagged-arguments ((,class :inherit font-lock-type-face)))
- `(sieve-test-commands ((,class :inherit font-lock-function-name-face)))
+ `(sieve-action-commands ((,c :inherit font-lock-builtin-face)))
+ `(sieve-control-commands ((,c :inherit font-lock-keyword-face)))
+ `(sieve-tagged-arguments ((,c :inherit font-lock-type-face)))
+ `(sieve-test-commands ((,c :inherit font-lock-function-name-face)))
;;;;; skewer-mode
- `(skewer-error-face ((,class :foreground ,red :underline t)))
+ `(skewer-error-face ((,c :inherit modus-themes-lang-error)))
;;;;; slime (sldb)
- `(sldb-condition-face ((,class :inherit font-lock-preprocessor-face)))
- `(sldb-restart-number-face ((,class :inherit bold)))
- `(sldb-restart-type-face ((,class :inherit font-lock-type-face)))
- `(sldb-restartable-frame-line-face ((,class :inherit success)))
- `(sldb-section-face ((,class :inherit modus-themes-pseudo-header)))
- `(slime-error-face ((,class :inherit modus-themes-lang-error)))
- `(slime-note-face ((,class :underline t)))
- `(slime-repl-input-face ((,class :inherit bold)))
- `(slime-repl-inputed-output-face ((,class :inherit font-lock-string-face)))
- `(slime-repl-output-mouseover-face ((,class :inherit highlight)))
- `(slime-repl-prompt-face ((,class :inherit modus-themes-prompt)))
- `(slime-style-warning-face ((,class :inherit modus-themes-lang-note)))
- `(slime-warning-face ((,class :inherit modus-themes-lang-warning)))
+ `(sldb-condition-face ((,c :inherit font-lock-preprocessor-face)))
+ `(sldb-restart-number-face ((,c :inherit bold)))
+ `(sldb-restart-type-face ((,c :inherit font-lock-type-face)))
+ `(sldb-restartable-frame-line-face ((,c :inherit success)))
+ `(sldb-section-face ((,c :inherit bold)))
+ `(slime-error-face ((,c :inherit modus-themes-lang-error)))
+ `(slime-note-face ((,c :underline t)))
+ `(slime-repl-input-face ((,c :inherit bold)))
+ `(slime-repl-inputed-output-face ((,c :inherit font-lock-string-face)))
+ `(slime-repl-output-mouseover-face ((,c :inherit highlight)))
+ `(slime-repl-prompt-face ((,c :inherit modus-themes-prompt)))
+ `(slime-style-warning-face ((,c :inherit modus-themes-lang-note)))
+ `(slime-warning-face ((,c :inherit modus-themes-lang-warning)))
;;;;; sly
- `(sly-action-face ((,class :inherit font-lock-type-face)))
- `(sly-db-condition-face ((,class :inherit font-lock-preprocessor-face)))
- `(sly-db-restartable-frame-line-face ((,class :inherit success)))
- `(sly-error-face ((,class :inherit modus-themes-lang-error)))
- `(sly-mode-line ((,class :inherit mode-line-emphasis)))
- `(sly-mrepl-output-face ((,class :inherit font-lock-string-face)))
- `(sly-mrepl-output-face ((,class :inherit font-lock-string-face)))
- `(sly-mrepl-prompt-face ((,class :inherit modus-themes-prompt)))
- `(sly-note-face ((,class :inherit modus-themes-lang-note)))
- `(sly-stickers-placed-face ((,class :inherit modus-themes-subtle-neutral)))
- `(sly-style-warning-face ((,class :inherit modus-themes-lang-note)))
- `(sly-warning-face ((,class :inherit modus-themes-lang-warning)))
+ `(sly-action-face ((,c :inherit font-lock-type-face)))
+ `(sly-db-condition-face ((,c :inherit font-lock-preprocessor-face)))
+ `(sly-db-restartable-frame-line-face ((,c :inherit success)))
+ `(sly-error-face ((,c :inherit modus-themes-lang-error)))
+ `(sly-mode-line ((,c :inherit mode-line-emphasis)))
+ `(sly-mrepl-output-face ((,c :inherit font-lock-string-face)))
+ `(sly-mrepl-output-face ((,c :inherit font-lock-string-face)))
+ `(sly-mrepl-prompt-face ((,c :inherit modus-themes-prompt)))
+ `(sly-note-face ((,c :inherit modus-themes-lang-note)))
+ `(sly-stickers-placed-face ((,c :background ,bg-inactive)))
+ `(sly-style-warning-face ((,c :inherit modus-themes-lang-note)))
+ `(sly-warning-face ((,c :inherit modus-themes-lang-warning)))
;;;;; smart-mode-line
- `(sml/charging ((,class :foreground ,green-active)))
- `(sml/discharging ((,class :foreground ,red-active)))
- `(sml/filename ((,class :inherit bold :foreground ,blue-active)))
- `(sml/folder ((,class :foreground ,fg-active)))
- `(sml/git ((,class :inherit bold :foreground ,green-active)))
- `(sml/global ((,class :foreground ,fg-active)))
- `(sml/line-number ((,class :inherit sml/global)))
- `(sml/minor-modes ((,class :inherit sml/global)))
- `(sml/modes ((,class :inherit bold :foreground ,fg-active)))
- `(sml/modified ((,class :inherit bold :foreground ,magenta-active)))
- `(sml/mule-info ((,class :inherit sml/global)))
- `(sml/name-filling ((,class :foreground ,yellow-active)))
- `(sml/not-modified ((,class :inherit sml/global)))
- `(sml/numbers-separator ((,class :inherit sml/global)))
- `(sml/outside-modified ((,class :inherit modus-themes-intense-red)))
- `(sml/position-percentage ((,class :inherit sml/global)))
- `(sml/prefix ((,class :foreground ,green-active)))
- `(sml/process ((,class :inherit sml/prefix)))
- `(sml/projectile ((,class :inherit sml/git)))
- `(sml/read-only ((,class :inherit bold :foreground ,cyan-active)))
- `(sml/remote ((,class :inherit sml/global)))
- `(sml/sudo ((,class :inherit modus-themes-subtle-red)))
- `(sml/time ((,class :inherit sml/global)))
- `(sml/vc ((,class :inherit sml/git)))
- `(sml/vc-edited ((,class :inherit bold :foreground ,yellow-active)))
-;;;;; smartparens
- `(sp-pair-overlay-face ((,class :inherit modus-themes-special-warm)))
- `(sp-show-pair-enclosing ((,class :inherit modus-themes-special-mild)))
- `(sp-show-pair-match-face ((,class ,@(modus-themes--paren bg-paren-match
- bg-paren-match-intense)
- :foreground ,fg-main)))
- `(sp-show-pair-mismatch-face ((,class :inherit modus-themes-intense-red)))
- `(sp-wrap-overlay-closing-pair ((,class :inherit sp-pair-overlay-face)))
- `(sp-wrap-overlay-face ((,class :inherit sp-pair-overlay-face)))
- `(sp-wrap-overlay-opening-pair ((,class :inherit sp-pair-overlay-face)))
- `(sp-wrap-tag-overlay-face ((,class :inherit sp-pair-overlay-face)))
+ `(sml/charging ((,c :foreground ,info)))
+ `(sml/discharging ((,c :foreground ,err)))
+ `(sml/filename ((,c :inherit bold :foreground ,name)))
+ `(sml/folder (( )))
+ `(sml/git ((,c :inherit success)))
+ `(sml/global (( )))
+ `(sml/line-number ((,c :inherit sml/global)))
+ `(sml/minor-modes ((,c :inherit sml/global)))
+ `(sml/modes ((,c :inherit bold)))
+ `(sml/modified ((,c :inherit italic)))
+ `(sml/mule-info ((,c :inherit sml/global)))
+ `(sml/name-filling ((,c :inherit warning)))
+ `(sml/not-modified ((,c :inherit sml/global)))
+ `(sml/numbers-separator ((,c :inherit sml/global)))
+ `(sml/outside-modified ((,c :inherit modus-themes-intense-red)))
+ `(sml/position-percentage ((,c :inherit sml/global)))
+ `(sml/prefix ((,c :foreground ,fg-alt)))
+ `(sml/process ((,c :inherit sml/prefix)))
+ `(sml/projectile ((,c :inherit sml/git)))
+ `(sml/read-only (( )))
+ `(sml/remote ((,c :inherit sml/global)))
+ `(sml/sudo ((,c :inherit warning)))
+ `(sml/time ((,c :inherit sml/global)))
+ `(sml/vc ((,c :inherit sml/git)))
+ `(sml/vc-edited ((,c :inherit italic)))
;;;;; smerge
- `(smerge-base ((,class :inherit modus-themes-diff-changed)))
- `(smerge-lower ((,class :inherit modus-themes-diff-added)))
- `(smerge-markers ((,class :inherit modus-themes-diff-heading)))
- `(smerge-refined-added ((,class :inherit modus-themes-diff-refine-added)))
+ `(smerge-base ((,c :inherit diff-changed)))
+ `(smerge-lower ((,c :inherit diff-added)))
+ `(smerge-markers ((,c :inherit diff-heading)))
+ `(smerge-refined-added ((,c :inherit diff-refine-added)))
`(smerge-refined-changed (()))
- `(smerge-refined-removed ((,class :inherit modus-themes-diff-refine-removed)))
- `(smerge-upper ((,class :inherit modus-themes-diff-removed)))
-;;;;; spaceline
- `(spaceline-evil-emacs ((,class :inherit modus-themes-active-magenta)))
- `(spaceline-evil-insert ((,class :inherit modus-themes-active-green)))
- `(spaceline-evil-motion ((,class :inherit modus-themes-active-blue)))
- `(spaceline-evil-normal ((,class :background ,fg-alt :foreground ,bg-alt)))
- `(spaceline-evil-replace ((,class :inherit modus-themes-active-red)))
- `(spaceline-evil-visual ((,class :inherit modus-themes-active-cyan)))
- `(spaceline-flycheck-error ((,class :foreground ,red-active)))
- `(spaceline-flycheck-info ((,class :foreground ,cyan-active)))
- `(spaceline-flycheck-warning ((,class :foreground ,yellow-active)))
- `(spaceline-highlight-face ((,class :inherit modus-themes-fringe-blue)))
- `(spaceline-modified ((,class :inherit modus-themes-fringe-magenta)))
- `(spaceline-python-venv ((,class :foreground ,magenta-active)))
- `(spaceline-read-only ((,class :inherit modus-themes-fringe-red)))
- `(spaceline-unmodified ((,class :inherit modus-themes-fringe-cyan)))
+ `(smerge-refined-removed ((,c :inherit diff-refine-removed)))
+ `(smerge-upper ((,c :inherit diff-removed)))
;;;;; speedbar
- `(speedbar-button-face ((,class :inherit button)))
- `(speedbar-directory-face ((,class :inherit bold :foreground ,blue)))
- `(speedbar-file-face ((,class :foreground ,fg-main)))
- `(speedbar-highlight-face ((,class :inherit highlight)))
- `(speedbar-selected-face ((,class :inherit bold :foreground ,cyan)))
- `(speedbar-separator-face ((,class :inherit modus-themes-intense-neutral)))
- `(speedbar-tag-face ((,class :foreground ,yellow-alt-other)))
+ `(speedbar-button-face ((,c :inherit button)))
+ `(speedbar-directory-face ((,c :inherit bold :foreground ,accent-0)))
+ `(speedbar-file-face ((,c :foreground ,fg-main)))
+ `(speedbar-highlight-face ((,c :inherit highlight)))
+ `(speedbar-selected-face ((,c :inherit modus-themes-mark-sel)))
+ `(speedbar-separator-face ((,c :background ,bg-active :foreground ,fg-main)))
+ `(speedbar-tag-face ((,c :foreground ,accent-1)))
;;;;; spell-fu
- `(spell-fu-incorrect-face ((,class :inherit modus-themes-lang-error)))
+ `(spell-fu-incorrect-face ((,c :inherit modus-themes-lang-error)))
;;;;; stripes
- `(stripes ((,class :background ,bg-alt)))
+ `(stripes ((,c :background ,bg-inactive)))
;;;;; suggest
- `(suggest-heading ((,class :inherit bold :foreground ,yellow-alt-other)))
+ `(suggest-heading ((,c :inherit warning)))
;;;;; switch-window
- `(switch-window-background ((,class :background ,bg-dim)))
- `(switch-window-label ((,class :height 3.0 :foreground ,blue-intense)))
+ `(switch-window-background ((,c :background ,bg-inactive)))
+ `(switch-window-label ((,c :height 3.0 :foreground ,red-intense)))
;;;;; swiper
`(swiper-background-match-face-1 (( )))
- `(swiper-background-match-face-2 ((,class :inherit modus-themes-completion-match-0)))
- `(swiper-background-match-face-3 ((,class :inherit modus-themes-completion-match-1)))
- `(swiper-background-match-face-4 ((,class :inherit modus-themes-completion-match-2)))
- `(swiper-line-face ((,class :background ,bg-hl-alt-intense)))
+ `(swiper-background-match-face-2 ((,c :inherit modus-themes-completion-match-0)))
+ `(swiper-background-match-face-3 ((,c :inherit modus-themes-completion-match-1)))
+ `(swiper-background-match-face-4 ((,c :inherit modus-themes-completion-match-2)))
+ `(swiper-line-face ((,c :background ,bg-hl-line :extend t)))
`(swiper-match-face-1 (( )))
- `(swiper-match-face-2 ((,class :inherit modus-themes-completion-match-0)))
- `(swiper-match-face-3 ((,class :inherit modus-themes-completion-match-1)))
- `(swiper-match-face-4 ((,class :inherit modus-themes-completion-match-2)))
-;;;;; sx
- `(sx-inbox-item-type ((,class :foreground ,magenta-alt-other)))
- `(sx-inbox-item-type-unread ((,class :inherit (sx-inbox-item-type bold))))
- `(sx-question-list-answers ((,class :foreground ,green)))
- `(sx-question-list-answers-accepted ((,class :box t :foreground ,green)))
- `(sx-question-list-bounty ((,class :inherit bold :background ,bg-alt :foreground ,yellow)))
- `(sx-question-list-date ((,class :foreground ,fg-special-cold)))
- `(sx-question-list-favorite ((,class :inherit bold :foreground ,fg-special-warm)))
- `(sx-question-list-parent ((,class :foreground ,fg-main)))
- `(sx-question-list-read-question ((,class :inherit shadow)))
- `(sx-question-list-score ((,class :foreground ,fg-special-mild)))
- `(sx-question-list-score-upvoted ((,class :inherit (sx-question-list-score bold))))
- `(sx-question-list-unread-question ((,class :inherit bold :foreground ,fg-main)))
- `(sx-question-mode-accepted ((,class :inherit bold :height 1.3 :foreground ,green)))
- `(sx-question-mode-closed ((,class :inherit modus-themes-active-yellow :box (:line-width 2 :color nil))))
- `(sx-question-mode-closed-reason ((,class :box (:line-width 2 :color nil) :foreground ,fg-main)))
- `(sx-question-mode-content-face ((,class :background ,bg-dim)))
- `(sx-question-mode-date ((,class :foreground ,blue)))
- `(sx-question-mode-header ((,class :inherit bold :foreground ,cyan)))
- `(sx-question-mode-kbd-tag ((,class :inherit bold :height 0.9 :box (:line-width 3 :color ,fg-main :style released-button) :foreground ,fg-main)))
- `(sx-question-mode-score ((,class :foreground ,fg-dim)))
- `(sx-question-mode-score-downvoted ((,class :foreground ,yellow)))
- `(sx-question-mode-score-upvoted ((,class :inherit bold :foreground ,magenta)))
- `(sx-question-mode-title ((,class :inherit bold :foreground ,fg-main)))
- `(sx-question-mode-title-comments ((,class :inherit (shadow bold))))
- `(sx-tag ((,class :foreground ,magenta-alt)))
- `(sx-user-name ((,class :foreground ,blue-alt)))
- `(sx-user-reputation ((,class :inherit shadow)))
+ `(swiper-match-face-2 ((,c :inherit modus-themes-completion-match-0)))
+ `(swiper-match-face-3 ((,c :inherit modus-themes-completion-match-1)))
+ `(swiper-match-face-4 ((,c :inherit modus-themes-completion-match-2)))
;;;;; symbol-overlay
- `(symbol-overlay-default-face ((,class :inherit modus-themes-special-warm)))
- `(symbol-overlay-face-1 ((,class :inherit modus-themes-intense-blue)))
- `(symbol-overlay-face-2 ((,class :inherit modus-themes-refine-magenta)))
- `(symbol-overlay-face-3 ((,class :inherit modus-themes-intense-yellow)))
- `(symbol-overlay-face-4 ((,class :inherit modus-themes-intense-magenta)))
- `(symbol-overlay-face-5 ((,class :inherit modus-themes-intense-red)))
- `(symbol-overlay-face-6 ((,class :inherit modus-themes-refine-red)))
- `(symbol-overlay-face-7 ((,class :inherit modus-themes-intense-cyan)))
- `(symbol-overlay-face-8 ((,class :inherit modus-themes-refine-cyan)))
+ `(symbol-overlay-default-face ((,c :background ,bg-inactive)))
+ `(symbol-overlay-face-1 ((,c :inherit modus-themes-intense-blue)))
+ `(symbol-overlay-face-2 ((,c :inherit modus-themes-intense-magenta)))
+ `(symbol-overlay-face-3 ((,c :inherit modus-themes-intense-yellow)))
+ `(symbol-overlay-face-4 ((,c :inherit modus-themes-intense-magenta)))
+ `(symbol-overlay-face-5 ((,c :inherit modus-themes-intense-red)))
+ `(symbol-overlay-face-6 ((,c :inherit modus-themes-intense-red)))
+ `(symbol-overlay-face-7 ((,c :inherit modus-themes-intense-cyan)))
+ `(symbol-overlay-face-8 ((,c :inherit modus-themes-intense-cyan)))
;;;;; syslog-mode
- `(syslog-debug ((,class :inherit bold :foreground ,cyan-alt-other)))
- `(syslog-error ((,class :inherit error)))
- `(syslog-file ((,class :inherit bold :foreground ,fg-special-cold)))
- `(syslog-hide ((,class :background ,bg-main :foreground ,fg-main)))
- `(syslog-hour ((,class :inherit bold :foreground ,magenta-alt-other)))
- `(syslog-info ((,class :inherit success)))
- `(syslog-ip ((,class :inherit bold :foreground ,fg-special-mild :underline t)))
- `(syslog-su ((,class :inherit bold :foreground ,red-alt)))
- `(syslog-warn ((,class :inherit warning)))
-;;;;; tab-bar-groups
- `(tab-bar-groups-tab-1 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,blue-tab)))
- `(tab-bar-groups-tab-2 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,red-tab)))
- `(tab-bar-groups-tab-3 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,green-tab)))
- `(tab-bar-groups-tab-4 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,orange-tab)))
- `(tab-bar-groups-tab-5 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,purple-tab)))
- `(tab-bar-groups-tab-6 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,cyan-tab)))
- `(tab-bar-groups-tab-7 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,yellow-tab)))
- `(tab-bar-groups-tab-8 ((,class :inherit modus-themes-ui-variable-pitch :foreground ,magenta-tab)))
+ `(syslog-debug ((,c :inherit italic)))
+ `(syslog-error ((,c :inherit error)))
+ `(syslog-file ((,c :inherit bold :foreground ,name)))
+ `(syslog-hide ((,c :background ,bg-main :foreground ,fg-main)))
+ `(syslog-hour ((,c :inherit bold :foreground ,date-common)))
+ `(syslog-info ((,c :inherit success)))
+ `(syslog-ip ((,c :inherit bold :foreground ,name :underline t)))
+ `(syslog-su ((,c :inherit error :underline t)))
+ `(syslog-warn ((,c :inherit warning)))
;;;;; tab-bar-mode
- `(tab-bar ((,class :inherit modus-themes-tab-backdrop)))
- `(tab-bar-tab-group-current ((,class ,@(modus-themes--tab bg-tab-active)
- :box (:line-width (2 . -2) :color "gray50"))))
- `(tab-bar-tab-group-inactive ((,class ,@(modus-themes--tab bg-tab-inactive bg-tab-inactive-accent fg-dim)
- :box (:line-width (2 . -2) :color "gray50"))))
- `(tab-bar-tab ((,class :inherit modus-themes-tab-active)))
- `(tab-bar-tab-inactive ((,class :inherit modus-themes-tab-inactive)))
+ `(tab-bar ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar)))
+ `(tab-bar-tab-group-current ((,c :inherit bold :background ,bg-tab-current :box (:line-width -2 :color ,bg-tab-current) :foreground ,fg-alt)))
+ `(tab-bar-tab-group-inactive ((,c :background ,bg-tab-bar :box (:line-width -2 :color ,bg-tab-bar) :foreground ,fg-alt)))
+ `(tab-bar-tab ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current)))
+ `(tab-bar-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other)))
+ `(tab-bar-tab-ungrouped ((,c :inherit tab-bar-tab-inactive)))
;;;;; tab-line-mode
- `(tab-line ((,class :inherit modus-themes-tab-backdrop :height 0.95)))
- `(tab-line-close-highlight ((,class :foreground ,red)))
- `(tab-line-highlight ((,class :inherit modus-themes-active-blue)))
- `(tab-line-tab ((,class :inherit modus-themes-tab-active)))
- `(tab-line-tab-current ((,class :inherit tab-line-tab)))
- `(tab-line-tab-inactive ((,class :inherit modus-themes-tab-inactive)))
- `(tab-line-tab-inactive-alternate ((,class ,@(modus-themes--tab bg-tab-inactive-alt
- bg-tab-inactive-alt-accent fg-main nil t))))
- `(tab-line-tab-modified ((,class :foreground ,red-alt-other-faint)))
+ `(tab-line ((,c :inherit modus-themes-ui-variable-pitch :background ,bg-tab-bar :height 0.95)))
+ `(tab-line-close-highlight ((,c :foreground ,err)))
+ `(tab-line-highlight ((,c :inherit highlight)))
+ `(tab-line-tab (( )))
+ `(tab-line-tab-current ((,c :inherit bold :box (:line-width -2 :color ,bg-tab-current) :background ,bg-tab-current)))
+ `(tab-line-tab-inactive ((,c :box (:line-width -2 :color ,bg-tab-other) :background ,bg-tab-other)))
+ `(tab-line-tab-inactive-alternate ((,c :inherit tab-line-tab-inactive :foreground ,fg-alt)))
+ `(tab-line-tab-modified ((,c :foreground ,warning)))
;;;;; table (built-in table.el)
- `(table-cell ((,class :background ,blue-nuanced-bg)))
+ `(table-cell ((,c :background ,bg-dim)))
;;;;; telega
- `(telega-button ((,class :box t :foreground ,blue)))
- `(telega-button-active ((,class :box ,blue-intense-bg :background ,blue-intense-bg :foreground ,fg-main)))
- `(telega-button-highlight ((,class :inherit modus-themes-subtle-magenta)))
- `(telega-chat-prompt ((,class :inherit bold)))
- `(telega-entity-type-code ((,class :inherit modus-themes-markup-verbatim)))
- `(telega-entity-type-mention ((,class :foreground ,cyan)))
- `(telega-entity-type-pre ((,class :inherit modus-themes-markup-code)))
- `(telega-entity-type-spoiler ((,class :background ,fg-main :foreground ,fg-main)))
- `(telega-msg-heading ((,class :background ,bg-alt)))
- `(telega-msg-self-title ((,class :inherit bold)))
- `(telega-root-heading ((,class :inherit modus-themes-subtle-neutral)))
- `(telega-secret-title ((,class :foreground ,magenta-alt)))
- `(telega-unmuted-count ((,class :foreground ,blue-alt-other)))
- `(telega-user-online-status ((,class :foreground ,cyan-active)))
- `(telega-username ((,class :foreground ,cyan-alt-other)))
- `(telega-webpage-chat-link ((,class :background ,bg-alt)))
- `(telega-webpage-fixed ((,class :inherit modus-themes-fixed-pitch :height 0.85)))
- `(telega-webpage-header ((,class :inherit modus-themes-variable-pitch :height 1.3)))
- `(telega-webpage-preformatted ((,class :inherit modus-themes-fixed-pitch :background ,bg-alt)))
- `(telega-webpage-subheader ((,class :inherit modus-themes-variable-pitch :height 1.15)))
-;;;;; telephone-line
- `(telephone-line-accent-active ((,class :background ,fg-inactive :foreground ,bg-inactive)))
- `(telephone-line-accent-inactive ((,class :background ,bg-active :foreground ,fg-active)))
- `(telephone-line-error ((,class :inherit bold :foreground ,red-active)))
- `(telephone-line-evil ((,class :foreground ,fg-main)))
- `(telephone-line-evil-emacs ((,class :inherit telephone-line-evil :background ,magenta-intense-bg)))
- `(telephone-line-evil-insert ((,class :inherit telephone-line-evil :background ,green-intense-bg)))
- `(telephone-line-evil-motion ((,class :inherit telephone-line-evil :background ,yellow-intense-bg)))
- `(telephone-line-evil-normal ((,class :inherit telephone-line-evil :background ,bg-alt)))
- `(telephone-line-evil-operator ((,class :inherit telephone-line-evil :background ,yellow-subtle-bg)))
- `(telephone-line-evil-replace ((,class :inherit telephone-line-evil :background ,red-intense-bg)))
- `(telephone-line-evil-visual ((,class :inherit telephone-line-evil :background ,cyan-intense-bg)))
- `(telephone-line-projectile ((,class :foreground ,cyan-active)))
- `(telephone-line-unimportant ((,class :foreground ,fg-inactive)))
- `(telephone-line-warning ((,class :inherit bold :foreground ,yellow-active)))
+ `(telega-button ((,c :box t :foreground ,fg-link)))
+ `(telega-button-active ((,c :box ,fg-link :background ,fg-link :foreground ,bg-main)))
+ `(telega-button-highlight ((,c :inherit secondary-selection)))
+ `(telega-chat-prompt ((,c :inherit modus-themes-prompt)))
+ `(telega-entity-type-code ((,c :inherit modus-themes-prose-verbatim)))
+ `(telega-entity-type-mention ((,c :foreground ,cyan)))
+ `(telega-entity-type-pre ((,c :inherit modus-themes-prose-code)))
+ `(telega-entity-type-spoiler ((,c :background ,fg-main :foreground ,fg-main)))
+ `(telega-msg-heading ((,c :background ,bg-inactive)))
+ `(telega-msg-self-title ((,c :inherit bold)))
+ `(telega-root-heading ((,c :background ,bg-inactive)))
+ `(telega-secret-title ((,c :foreground ,magenta-warmer)))
+ `(telega-unmuted-count ((,c :foreground ,blue-cooler)))
+ `(telega-user-online-status ((,c :foreground ,cyan)))
+ `(telega-username ((,c :foreground ,cyan-cooler)))
+ `(telega-webpage-chat-link ((,c :background ,bg-inactive)))
+ `(telega-webpage-fixed ((,c :inherit modus-themes-fixed-pitch :height 0.85)))
+ `(telega-webpage-header ((,c :inherit modus-themes-variable-pitch :height 1.3)))
+ `(telega-webpage-preformatted ((,c :inherit modus-themes-fixed-pitch :background ,bg-inactive)))
+ `(telega-webpage-subheader ((,c :inherit modus-themes-variable-pitch :height 1.15)))
;;;;; terraform-mode
- `(terraform--resource-name-face ((,class ,@(modus-themes--syntax-string
- magenta-alt-other magenta-alt-other-faint
- red-alt red-alt))))
- `(terraform--resource-type-face ((,class ,@(modus-themes--syntax-string
- green green-faint
- blue-alt magenta-alt))))
+ `(terraform--resource-name-face ((,c :foreground ,keyword)))
+ `(terraform--resource-type-face ((,c :foreground ,type)))
;;;;; term
- `(term ((,class :background ,bg-main :foreground ,fg-main)))
- `(term-bold ((,class :inherit bold)))
- `(term-color-black ((,class :background "gray35" :foreground "gray35")))
- `(term-color-blue ((,class :background ,blue :foreground ,blue)))
- `(term-color-cyan ((,class :background ,cyan :foreground ,cyan)))
- `(term-color-green ((,class :background ,green :foreground ,green)))
- `(term-color-magenta ((,class :background ,magenta :foreground ,magenta)))
- `(term-color-red ((,class :background ,red :foreground ,red)))
- `(term-color-white ((,class :background "gray65" :foreground "gray65")))
- `(term-color-yellow ((,class :background ,yellow :foreground ,yellow)))
- `(term-underline ((,class :underline t)))
+ `(term ((,c :background ,bg-main :foreground ,fg-main)))
+ `(term-bold ((,c :inherit bold)))
+ `(term-color-black ((,c :background "gray35" :foreground "gray35")))
+ `(term-color-blue ((,c :background ,blue :foreground ,blue)))
+ `(term-color-cyan ((,c :background ,cyan :foreground ,cyan)))
+ `(term-color-green ((,c :background ,green :foreground ,green)))
+ `(term-color-magenta ((,c :background ,magenta :foreground ,magenta)))
+ `(term-color-red ((,c :background ,red :foreground ,red)))
+ `(term-color-white ((,c :background "gray65" :foreground "gray65")))
+ `(term-color-yellow ((,c :background ,yellow :foreground ,yellow)))
+ `(term-underline ((,c :underline t)))
;;;;; textsec
- `(textsec-suspicious (()))
-;;;;; tomatinho
- `(tomatinho-ok-face ((,class :foreground ,blue-intense)))
- `(tomatinho-pause-face ((,class :foreground ,yellow-intense)))
- `(tomatinho-reset-face ((,class :inherit shadow)))
+ `(textsec-suspicious (( )))
;;;;; transient
- `(transient-active-infix ((,class :inherit modus-themes-special-mild)))
- `(transient-amaranth ((,class :inherit bold :foreground ,yellow-alt)))
+ `(transient-active-infix ((,c :inherit highlight)))
+ `(transient-amaranth ((,c :inherit bold :foreground ,yellow-warmer)))
;; Placate the compiler for what is a spurious warning. We also
;; have to do this with `eldoc-highlight-function-argument'.
- (list 'transient-argument `((,class :inherit bold :background ,cyan-nuanced-bg :foreground ,cyan)))
- `(transient-blue ((,class :inherit bold :foreground ,blue)))
- `(transient-disabled-suffix ((,class :inherit modus-themes-intense-red)))
- `(transient-enabled-suffix ((,class :inherit modus-themes-grue-background-subtle)))
- `(transient-heading ((,class :inherit bold :foreground ,fg-main)))
- `(transient-inactive-argument ((,class :inherit shadow)))
- `(transient-inactive-value ((,class :inherit shadow)))
- `(transient-key ((,class :inherit modus-themes-key-binding)))
- `(transient-mismatched-key ((,class :underline t)))
- `(transient-nonstandard-key ((,class :underline t)))
- `(transient-pink ((,class :inherit bold :foreground ,magenta-alt-faint)))
- `(transient-purple ((,class :inherit bold :foreground ,magenta-alt-other)))
- `(transient-red ((,class :inherit bold :foreground ,red-faint)))
- `(transient-teal ((,class :inherit bold :foreground ,cyan-alt-other)))
- `(transient-unreachable ((,class :inherit shadow)))
- `(transient-unreachable-key ((,class :inherit shadow)))
- `(transient-value ((,class :inherit bold :background ,yellow-nuanced-bg :foreground ,yellow-alt-other)))
+ (list 'transient-argument `((,c :inherit (bold modus-themes-mark-alt))))
+ `(transient-blue ((,c :inherit bold :foreground ,blue)))
+ `(transient-disabled-suffix ((,c :inherit modus-themes-intense-red)))
+ `(transient-enabled-suffix ((,c :inherit modus-themes-subtle-cyan)))
+ `(transient-heading ((,c :inherit bold :foreground ,fg-main)))
+ `(transient-inactive-argument ((,c :inherit shadow)))
+ `(transient-inactive-value ((,c :inherit shadow)))
+ `(transient-key ((,c :inherit modus-themes-key-binding)))
+ `(transient-mismatched-key ((,c :underline t)))
+ `(transient-nonstandard-key ((,c :underline t)))
+ `(transient-pink ((,c :inherit bold :foreground ,magenta)))
+ `(transient-purple ((,c :inherit bold :foreground ,magenta-cooler)))
+ `(transient-red ((,c :inherit bold :foreground ,red-faint)))
+ `(transient-teal ((,c :inherit bold :foreground ,cyan-cooler)))
+ `(transient-unreachable ((,c :inherit shadow)))
+ `(transient-unreachable-key ((,c :inherit shadow)))
+ `(transient-value ((,c :inherit (bold modus-themes-mark-sel))))
;;;;; trashed
- `(trashed-deleted ((,class :inherit modus-themes-mark-del)))
- `(trashed-directory ((,class :foreground ,blue)))
- `(trashed-mark ((,class :inherit modus-themes-mark-symbol)))
- `(trashed-marked ((,class :inherit modus-themes-mark-alt)))
- `(trashed-restored ((,class :inherit modus-themes-mark-sel)))
- `(trashed-symlink ((,class :inherit modus-themes-link-symlink)))
+ `(trashed-deleted ((,c :inherit modus-themes-mark-del)))
+ `(trashed-directory ((,c :foreground ,accent-0)))
+ `(trashed-mark ((,c :inherit bold)))
+ `(trashed-marked ((,c :inherit modus-themes-mark-alt)))
+ `(trashed-restored ((,c :inherit modus-themes-mark-sel)))
;;;;; tree-sitter
- `(tree-sitter-hl-face:attribute ((,class :inherit font-lock-variable-name-face)))
- `(tree-sitter-hl-face:constant.builtin ((,class :inherit tree-sitter-hl-face:constant)))
- `(tree-sitter-hl-face:escape ((,class :inherit font-lock-regexp-grouping-backslash)))
- `(tree-sitter-hl-face:function ((,class :inherit font-lock-function-name-face)))
- `(tree-sitter-hl-face:function.call ((,class :inherit tree-sitter-hl-face:function)))
+ `(tree-sitter-hl-face:attribute ((,c :inherit font-lock-variable-name-face)))
+ `(tree-sitter-hl-face:constant.builtin ((,c :inherit tree-sitter-hl-face:constant)))
+ `(tree-sitter-hl-face:escape ((,c :inherit font-lock-regexp-grouping-backslash)))
+ `(tree-sitter-hl-face:function ((,c :inherit font-lock-function-name-face)))
+ `(tree-sitter-hl-face:function.call ((,c :inherit tree-sitter-hl-face:function)))
`(tree-sitter-hl-face:label (( )))
`(tree-sitter-hl-face:method.call (( )))
- `(tree-sitter-hl-face:operator ((,class :inherit modus-themes-bold)))
+ `(tree-sitter-hl-face:operator ((,c :inherit modus-themes-bold)))
`(tree-sitter-hl-face:property (( )))
- `(tree-sitter-hl-face:property.definition ((,class :inherit font-lock-variable-name-face)))
+ `(tree-sitter-hl-face:property.definition ((,c :inherit font-lock-variable-name-face)))
`(tree-sitter-hl-face:punctuation (( )))
`(tree-sitter-hl-face:punctuation.bracket (( )))
`(tree-sitter-hl-face:punctuation.delimiter (( )))
- `(tree-sitter-hl-face:punctuation.special ((,class :inherit font-lock-regexp-grouping-construct)))
- `(tree-sitter-hl-face:string.special ((,class :inherit tree-sitter-hl-face:string)))
- `(tree-sitter-hl-face:tag ((,class :inherit font-lock-function-name-face)))
+ `(tree-sitter-hl-face:punctuation.special ((,c :inherit font-lock-regexp-grouping-construct)))
+ `(tree-sitter-hl-face:string.special ((,c :inherit tree-sitter-hl-face:string)))
+ `(tree-sitter-hl-face:tag ((,c :inherit font-lock-function-name-face)))
`(tree-sitter-hl-face:type.argument (( )))
-;;;;; treemacs
- `(treemacs-directory-collapsed-face ((,class :foreground ,magenta-alt)))
- `(treemacs-directory-face ((,class :inherit dired-directory)))
- `(treemacs-file-face ((,class :foreground ,fg-main)))
- `(treemacs-fringe-indicator-face ((,class :foreground ,fg-main)))
- `(treemacs-git-added-face ((,class :inherit success)))
- `(treemacs-git-conflict-face ((,class :inherit error)))
- `(treemacs-git-ignored-face ((,class :inherit shadow)))
- `(treemacs-git-modified-face ((,class :inherit warning)))
- `(treemacs-git-renamed-face ((,class :inherit italic)))
- `(treemacs-git-unmodified-face ((,class :foreground ,fg-main)))
- `(treemacs-git-untracked-face ((,class :inherit shadow)))
- `(treemacs-help-column-face ((,class :inherit modus-themes-bold :foreground ,magenta-alt-other :underline t)))
- `(treemacs-help-title-face ((,class :foreground ,blue-alt-other)))
- `(treemacs-on-failure-pulse-face ((,class :inherit modus-themes-intense-red)))
- `(treemacs-on-success-pulse-face ((,class :inherit modus-themes-grue-background-intense)))
- `(treemacs-root-face ((,class :inherit bold :foreground ,blue-alt-other :height 1.2 :underline t)))
- `(treemacs-root-remote-disconnected-face ((,class :inherit treemacs-root-remote-face :foreground ,yellow)))
- `(treemacs-root-remote-face ((,class :inherit treemacs-root-face :foreground ,magenta)))
- `(treemacs-root-remote-unreadable-face ((,class :inherit treemacs-root-unreadable-face)))
- `(treemacs-root-unreadable-face ((,class :inherit treemacs-root-face :strike-through t)))
- `(treemacs-tags-face ((,class :foreground ,blue-alt)))
;;;;; tty-menu
- `(tty-menu-disabled-face ((,class :background ,bg-alt :foreground ,fg-alt)))
- `(tty-menu-enabled-face ((,class :inherit bold :background ,bg-alt :foreground ,fg-main)))
- `(tty-menu-selected-face ((,class :inherit modus-themes-intense-blue)))
+ `(tty-menu-disabled-face ((,c :background ,bg-inactive :foreground ,fg-dim)))
+ `(tty-menu-enabled-face ((,c :inherit bold :background ,bg-inactive :foreground ,fg-main)))
+ `(tty-menu-selected-face ((,c :inherit modus-themes-intense-blue)))
;;;;; tuareg
- `(caml-types-def-face ((,class :inherit modus-themes-subtle-red)))
- `(caml-types-expr-face ((,class :inherit modus-themes-subtle-green)))
- `(caml-types-occ-face ((,class :inherit modus-themes-subtle-green)))
- `(caml-types-scope-face ((,class :inherit modus-themes-subtle-blue)))
- `(caml-types-typed-face ((,class :inherit modus-themes-subtle-magenta)))
- `(tuareg-font-double-semicolon-face ((,class :inherit font-lock-preprocessor-face)))
- `(tuareg-font-lock-attribute-face ((,class :inherit font-lock-function-name-face)))
- `(tuareg-font-lock-constructor-face ((,class :foreground ,fg-main)))
- `(tuareg-font-lock-error-face ((,class :inherit (modus-themes-intense-red bold))))
- `(tuareg-font-lock-extension-node-face ((,class :background ,bg-alt :foreground ,magenta)))
- `(tuareg-font-lock-governing-face ((,class :inherit bold :foreground ,fg-main)))
- `(tuareg-font-lock-infix-extension-node-face ((,class :inherit font-lock-function-name-face)))
- `(tuareg-font-lock-interactive-directive-face ((,class :foreground ,fg-special-cold)))
- `(tuareg-font-lock-interactive-error-face ((,class :inherit error)))
- `(tuareg-font-lock-interactive-output-face ((,class :inherit font-lock-constant-face)))
- `(tuareg-font-lock-label-face ((,class :inherit font-lock-type-face)))
- `(tuareg-font-lock-line-number-face ((,class :foreground ,fg-special-warm)))
- `(tuareg-font-lock-module-face ((,class :inherit font-lock-builtin-face)))
- `(tuareg-font-lock-multistage-face ((,class :inherit bold :background ,bg-alt :foreground ,blue)))
- `(tuareg-font-lock-operator-face ((,class :inherit font-lock-preprocessor-face)))
- `(tuareg-opam-error-face ((,class :inherit error)))
- `(tuareg-opam-pkg-variable-name-face ((,class :inherit font-lock-variable-name-face)))
+ `(caml-types-def-face ((,c :inherit modus-themes-subtle-red)))
+ `(caml-types-expr-face ((,c :inherit modus-themes-subtle-green)))
+ `(caml-types-occ-face ((,c :inherit modus-themes-subtle-green)))
+ `(caml-types-scope-face ((,c :inherit modus-themes-subtle-blue)))
+ `(caml-types-typed-face ((,c :inherit modus-themes-subtle-magenta)))
+ `(tuareg-font-double-semicolon-face ((,c :inherit font-lock-preprocessor-face)))
+ `(tuareg-font-lock-attribute-face ((,c :inherit font-lock-function-name-face)))
+ `(tuareg-font-lock-constructor-face ((,c :foreground ,fg-main)))
+ `(tuareg-font-lock-error-face ((,c :inherit (modus-themes-intense-red bold))))
+ ;; `(tuareg-font-lock-extension-node-face ((,c :background ,bg-inactive :foreground ,magenta)))
+ `(tuareg-font-lock-governing-face ((,c :inherit bold :foreground ,fg-main)))
+ `(tuareg-font-lock-infix-extension-node-face ((,c :inherit font-lock-function-name-face)))
+ `(tuareg-font-lock-interactive-directive-face ((,c :inherit font-lock-preprocessor-face)))
+ `(tuareg-font-lock-interactive-error-face ((,c :inherit error)))
+ `(tuareg-font-lock-interactive-output-face ((,c :inherit font-lock-constant-face)))
+ `(tuareg-font-lock-label-face ((,c :inherit font-lock-type-face)))
+ `(tuareg-font-lock-line-number-face ((,c :inherit shadow)))
+ `(tuareg-font-lock-module-face ((,c :inherit font-lock-builtin-face)))
+ ;; `(tuareg-font-lock-multistage-face ((,c :inherit bold :background ,bg-inactive :foreground ,blue)))
+ `(tuareg-font-lock-operator-face ((,c :inherit font-lock-preprocessor-face)))
+ `(tuareg-opam-error-face ((,c :inherit error)))
+ `(tuareg-opam-pkg-variable-name-face ((,c :inherit font-lock-variable-name-face)))
;;;;; typescript
- `(typescript-jsdoc-tag ((,class :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal)))
- `(typescript-jsdoc-type ((,class :inherit (font-lock-type-face font-lock-comment-face) :weight normal)))
- `(typescript-jsdoc-value ((,class :inherit (font-lock-constant-face font-lock-comment-face) :weight normal)))
+ `(typescript-jsdoc-tag ((,c :inherit (font-lock-builtin-face font-lock-comment-face) :weight normal)))
+ `(typescript-jsdoc-type ((,c :inherit (font-lock-type-face font-lock-comment-face) :weight normal)))
+ `(typescript-jsdoc-value ((,c :inherit (font-lock-constant-face font-lock-comment-face) :weight normal)))
;;;;; undo-tree
- `(undo-tree-visualizer-active-branch-face ((,class :inherit bold :foreground ,fg-main)))
- `(undo-tree-visualizer-current-face ((,class :foreground ,blue-intense)))
- `(undo-tree-visualizer-default-face ((,class :inherit shadow)))
- `(undo-tree-visualizer-register-face ((,class :foreground ,magenta-intense)))
- `(undo-tree-visualizer-unmodified-face ((,class :foreground ,green-intense)))
+ `(undo-tree-visualizer-active-branch-face ((,c :inherit bold :foreground ,fg-main)))
+ `(undo-tree-visualizer-current-face ((,c :foreground ,blue-intense)))
+ `(undo-tree-visualizer-default-face ((,c :inherit shadow)))
+ `(undo-tree-visualizer-register-face ((,c :foreground ,magenta-intense)))
+ `(undo-tree-visualizer-unmodified-face ((,c :foreground ,green-intense)))
;;;;; vc (vc-dir.el, vc-hooks.el)
- `(vc-dir-directory ((,class :foreground ,blue)))
- `(vc-dir-file ((,class :foreground ,fg-main)))
- `(vc-dir-header ((,class :foreground ,cyan-alt-other)))
- `(vc-dir-header-value ((,class :foreground ,magenta-alt-other)))
- `(vc-dir-mark-indicator ((,class :foreground ,blue-alt-other)))
- `(vc-dir-status-edited ((,class :foreground ,yellow)))
- `(vc-dir-status-ignored ((,class :inherit shadow)))
- `(vc-dir-status-up-to-date ((,class :foreground ,cyan)))
- `(vc-dir-status-warning ((,class :inherit error)))
- `(vc-conflict-state ((,class :inherit bold :foreground ,red-active)))
- `(vc-edited-state ((,class :foreground ,yellow-active)))
- `(vc-locally-added-state ((,class :foreground ,cyan-active)))
- `(vc-locked-state ((,class :foreground ,blue-active)))
- `(vc-missing-state ((,class :inherit modus-themes-slant :foreground ,magenta-active)))
- `(vc-needs-update-state ((,class :inherit modus-themes-slant :foreground ,green-active)))
- `(vc-removed-state ((,class :foreground ,red-active)))
- `(vc-state-base ((,class :foreground ,fg-active)))
- `(vc-up-to-date-state ((,class :foreground ,fg-special-cold)))
+ `(vc-dir-directory (( )))
+ `(vc-dir-file ((,c :foreground ,name)))
+ `(vc-dir-header ((,c :inherit bold)))
+ `(vc-dir-header-value ((,c :foreground ,string)))
+ `(vc-dir-mark-indicator (( )))
+ `(vc-dir-status-edited ((,c :inherit italic)))
+ `(vc-dir-status-ignored ((,c :inherit shadow)))
+ `(vc-dir-status-up-to-date ((,c :foreground ,info)))
+ `(vc-dir-status-warning ((,c :inherit error)))
+ `(vc-conflict-state ((,c :inherit error)))
+ `(vc-edited-state ((,c :inherit italic)))
+ `(vc-git-log-edit-summary-max-warning ((,c :inherit error)))
+ `(vc-git-log-edit-summary-target-warning ((,c :inherit warning)))
+ `(vc-locally-added-state ((,c :inherit italic)))
+ `(vc-locked-state ((,c :inherit success)))
+ `(vc-missing-state ((,c :inherit error)))
+ `(vc-needs-update-state ((,c :inherit error)))
+ `(vc-removed-state ((,c :inherit error)))
+ `(vc-state-base (( )))
+ `(vc-up-to-date-state (( )))
;;;;; vertico
- `(vertico-current ((,class :inherit modus-themes-completion-selected)))
+ `(vertico-current ((,c :inherit modus-themes-completion-selected)))
;;;;; vertico-quick
- `(vertico-quick1 ((,class :inherit bold :background ,bg-char-0)))
- `(vertico-quick2 ((,class :inherit bold :background ,bg-char-1)))
+ `(vertico-quick1 ((,c :inherit bold :background ,bg-char-0)))
+ `(vertico-quick2 ((,c :inherit bold :background ,bg-char-1)))
;;;;; vimish-fold
- `(vimish-fold-fringe ((,class :foreground ,cyan-active)))
- `(vimish-fold-mouse-face ((,class :inherit modus-themes-intense-blue)))
- `(vimish-fold-overlay ((,class :background ,bg-alt :foreground ,fg-special-cold)))
+ `(vimish-fold-fringe ((,c :foreground ,cyan)))
+ `(vimish-fold-mouse-face ((,c :inherit modus-themes-intense-blue)))
+ `(vimish-fold-overlay ((,c :background ,bg-inactive)))
;;;;; visible-mark
- `(visible-mark-active ((,class :background ,blue-intense-bg)))
- `(visible-mark-face1 ((,class :background ,cyan-intense-bg)))
- `(visible-mark-face2 ((,class :background ,yellow-intense-bg)))
- `(visible-mark-forward-face1 ((,class :background ,magenta-intense-bg)))
- `(visible-mark-forward-face2 ((,class :background ,green-intense-bg)))
+ `(visible-mark-active ((,c :background ,bg-blue-intense)))
+ `(visible-mark-face1 ((,c :background ,bg-cyan-intense)))
+ `(visible-mark-face2 ((,c :background ,bg-yellow-intense)))
+ `(visible-mark-forward-face1 ((,c :background ,bg-magenta-intense)))
+ `(visible-mark-forward-face2 ((,c :background ,bg-green-intense)))
;;;;; visual-regexp
- `(vr/group-0 ((,class :inherit modus-themes-intense-blue)))
- `(vr/group-1 ((,class :inherit modus-themes-intense-magenta)))
- `(vr/group-2 ((,class :inherit modus-themes-intense-green)))
- `(vr/match-0 ((,class :inherit modus-themes-refine-yellow)))
- `(vr/match-1 ((,class :inherit modus-themes-refine-yellow)))
- `(vr/match-separator-face ((,class :inherit (modus-themes-intense-neutral bold))))
+ `(vr/group-0 ((,c :inherit modus-themes-intense-blue)))
+ `(vr/group-1 ((,c :inherit modus-themes-intense-magenta)))
+ `(vr/group-2 ((,c :inherit modus-themes-intense-green)))
+ `(vr/match-0 ((,c :inherit modus-themes-intense-yellow)))
+ `(vr/match-1 ((,c :inherit modus-themes-intense-yellow)))
+ `(vr/match-separator-face ((,c :inherit bold :background ,bg-active)))
;;;;; vterm
- `(vterm-color-black ((,class :background "gray35" :foreground "gray35")))
- `(vterm-color-blue ((,class :background ,blue :foreground ,blue)))
- `(vterm-color-cyan ((,class :background ,cyan :foreground ,cyan)))
- `(vterm-color-default ((,class :background ,bg-main :foreground ,fg-main)))
- `(vterm-color-green ((,class :background ,green :foreground ,green)))
- `(vterm-color-inverse-video ((,class :background ,bg-main :inverse-video t)))
- `(vterm-color-magenta ((,class :background ,magenta :foreground ,magenta)))
- `(vterm-color-red ((,class :background ,red :foreground ,red)))
- `(vterm-color-underline ((,class :foreground ,fg-special-warm :underline t)))
- `(vterm-color-white ((,class :background "gray65" :foreground "gray65")))
- `(vterm-color-yellow ((,class :background ,yellow :foreground ,yellow)))
+ `(vterm-color-black ((,c :background "gray35" :foreground "gray35")))
+ `(vterm-color-blue ((,c :background ,blue :foreground ,blue)))
+ `(vterm-color-cyan ((,c :background ,cyan :foreground ,cyan)))
+ `(vterm-color-default ((,c :background ,bg-main :foreground ,fg-main)))
+ `(vterm-color-green ((,c :background ,green :foreground ,green)))
+ `(vterm-color-inverse-video ((,c :background ,bg-main :inverse-video t)))
+ `(vterm-color-magenta ((,c :background ,magenta :foreground ,magenta)))
+ `(vterm-color-red ((,c :background ,red :foreground ,red)))
+ `(vterm-color-underline ((,c :underline t)))
+ `(vterm-color-white ((,c :background "gray65" :foreground "gray65")))
+ `(vterm-color-yellow ((,c :background ,yellow :foreground ,yellow)))
;;;;; vundo
- `(vundo-highlight ((,class :inherit (bold vundo-node) :foreground ,red-intense)))
+ `(vundo-highlight ((,c :inherit (bold vundo-node) :foreground ,red-intense)))
;;;;; wcheck-mode
- `(wcheck-default-face ((,class :foreground ,red :underline t)))
+ `(wcheck-default-face ((,c :foreground ,red :underline t)))
;;;;; web-mode
- `(web-mode-annotation-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-annotation-html-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-annotation-tag-face ((,class :inherit web-mode-comment-face :underline t)))
- `(web-mode-block-attr-name-face ((,class :inherit font-lock-constant-face)))
- `(web-mode-block-attr-value-face ((,class :inherit font-lock-type-face)))
- `(web-mode-block-comment-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-block-control-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-block-delimiter-face ((,class :foreground ,fg-main)))
- `(web-mode-block-face ((,class :background ,bg-dim)))
- `(web-mode-block-string-face ((,class :inherit web-mode-string-face)))
- `(web-mode-bold-face ((,class :inherit bold)))
- `(web-mode-builtin-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-comment-face ((,class :inherit font-lock-comment-face)))
- `(web-mode-comment-keyword-face ((,class :inherit font-lock-warning-face)))
- `(web-mode-constant-face ((,class :inherit font-lock-constant-face)))
- `(web-mode-css-at-rule-face ((,class :inherit font-lock-constant-face)))
- `(web-mode-css-color-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-css-comment-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-css-function-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-css-priority-face ((,class :inherit font-lock-warning-face)))
- `(web-mode-css-property-name-face ((,class :inherit font-lock-keyword-face)))
- `(web-mode-css-pseudo-class-face ((,class :inherit font-lock-doc-face)))
- `(web-mode-css-selector-face ((,class :inherit font-lock-keyword-face)))
- `(web-mode-css-string-face ((,class :inherit web-mode-string-face)))
- `(web-mode-css-variable-face ((,class :foreground ,fg-special-warm)))
- `(web-mode-current-column-highlight-face ((,class :background ,bg-alt)))
- `(web-mode-current-element-highlight-face ((,class :inherit modus-themes-special-mild)))
- `(web-mode-doctype-face ((,class :inherit modus-themes-slant :foreground ,fg-special-cold)))
- `(web-mode-error-face ((,class :inherit modus-themes-intense-red)))
- `(web-mode-filter-face ((,class :inherit font-lock-function-name-face)))
- `(web-mode-folded-face ((,class :underline t)))
- `(web-mode-function-call-face ((,class :inherit font-lock-function-name-face)))
- `(web-mode-function-name-face ((,class :inherit font-lock-function-name-face)))
- `(web-mode-html-attr-custom-face ((,class :inherit font-lock-variable-name-face)))
- `(web-mode-html-attr-engine-face ((,class :foreground ,fg-main)))
- `(web-mode-html-attr-equal-face ((,class :foreground ,fg-main)))
- `(web-mode-html-attr-name-face ((,class :inherit font-lock-variable-name-face)))
- `(web-mode-html-attr-value-face ((,class :inherit font-lock-constant-face)))
- `(web-mode-html-entity-face ((,class :inherit font-lock-negation-char-face)))
- `(web-mode-html-tag-bracket-face ((,class :foreground ,fg-dim)))
- `(web-mode-html-tag-custom-face ((,class :inherit font-lock-function-name-face)))
- `(web-mode-html-tag-face ((,class :inherit font-lock-function-name-face)))
- `(web-mode-html-tag-namespaced-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-html-tag-unclosed-face ((,class :inherit error :underline t)))
- `(web-mode-inlay-face ((,class :background ,bg-alt)))
- `(web-mode-italic-face ((,class :inherit italic)))
- `(web-mode-javascript-comment-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-javascript-string-face ((,class :inherit web-mode-string-face)))
- `(web-mode-json-comment-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-json-context-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-json-key-face ((,class :foreground ,blue-nuanced-fg)))
- `(web-mode-json-string-face ((,class :inherit web-mode-string-face)))
- `(web-mode-jsx-depth-1-face ((,class :background ,blue-intense-bg :foreground ,fg-main)))
- `(web-mode-jsx-depth-2-face ((,class :background ,blue-subtle-bg :foreground ,fg-main)))
- `(web-mode-jsx-depth-3-face ((,class :background ,bg-special-cold :foreground ,fg-special-cold)))
- `(web-mode-jsx-depth-4-face ((,class :background ,bg-alt :foreground ,blue-refine-fg)))
- `(web-mode-jsx-depth-5-face ((,class :background ,bg-alt :foreground ,blue-nuanced-fg)))
- `(web-mode-keyword-face ((,class :inherit font-lock-keyword-face)))
- `(web-mode-param-name-face ((,class :inherit font-lock-function-name-face)))
- `(web-mode-part-comment-face ((,class :inherit web-mode-comment-face)))
- `(web-mode-part-face ((,class :inherit web-mode-block-face)))
- `(web-mode-part-string-face ((,class :inherit web-mode-string-face)))
- `(web-mode-preprocessor-face ((,class :inherit font-lock-preprocessor-face)))
- `(web-mode-script-face ((,class :inherit web-mode-part-face)))
- `(web-mode-sql-keyword-face ((,class :inherit font-lock-negation-char-face)))
- `(web-mode-string-face ((,class :inherit font-lock-string-face)))
- `(web-mode-style-face ((,class :inherit web-mode-part-face)))
- `(web-mode-symbol-face ((,class :inherit font-lock-constant-face)))
- `(web-mode-type-face ((,class :inherit font-lock-builtin-face)))
- `(web-mode-underline-face ((,class :underline t)))
- `(web-mode-variable-name-face ((,class :inherit font-lock-variable-name-face)))
- `(web-mode-warning-face ((,class :inherit font-lock-warning-face)))
- `(web-mode-whitespace-face ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
+ `(web-mode-annotation-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-annotation-html-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-annotation-tag-face ((,c :inherit web-mode-comment-face :underline t)))
+ `(web-mode-block-attr-name-face ((,c :inherit font-lock-constant-face)))
+ `(web-mode-block-attr-value-face ((,c :inherit font-lock-type-face)))
+ `(web-mode-block-comment-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-block-control-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-block-delimiter-face ((,c :foreground ,fg-main)))
+ `(web-mode-block-face ((,c :background ,bg-dim)))
+ `(web-mode-block-string-face ((,c :inherit web-mode-string-face)))
+ `(web-mode-bold-face ((,c :inherit bold)))
+ `(web-mode-builtin-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-comment-face ((,c :inherit font-lock-comment-face)))
+ `(web-mode-comment-keyword-face ((,c :inherit font-lock-warning-face)))
+ `(web-mode-constant-face ((,c :inherit font-lock-constant-face)))
+ `(web-mode-css-at-rule-face ((,c :inherit font-lock-constant-face)))
+ `(web-mode-css-color-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-css-comment-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-css-function-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-css-priority-face ((,c :inherit font-lock-warning-face)))
+ `(web-mode-css-property-name-face ((,c :inherit font-lock-keyword-face)))
+ `(web-mode-css-pseudo-class-face ((,c :inherit font-lock-doc-face)))
+ `(web-mode-css-selector-face ((,c :inherit font-lock-keyword-face)))
+ `(web-mode-css-string-face ((,c :inherit web-mode-string-face)))
+ `(web-mode-css-variable-face ((,c :inherit font-lock-variable-name-face)))
+ `(web-mode-current-column-highlight-face ((,c :background ,bg-inactive)))
+ `(web-mode-current-element-highlight-face ((,c :inherit modus-themes-cyan-subtle)))
+ `(web-mode-doctype-face ((,c :inherit font-lock-doc-face)))
+ `(web-mode-error-face ((,c :inherit modus-themes-intense-red)))
+ `(web-mode-filter-face ((,c :inherit font-lock-function-name-face)))
+ `(web-mode-folded-face ((,c :underline t)))
+ `(web-mode-function-call-face ((,c :inherit font-lock-function-name-face)))
+ `(web-mode-function-name-face ((,c :inherit font-lock-function-name-face)))
+ `(web-mode-html-attr-custom-face ((,c :inherit font-lock-variable-name-face)))
+ `(web-mode-html-attr-engine-face ((,c :foreground ,fg-main)))
+ `(web-mode-html-attr-equal-face ((,c :foreground ,fg-main)))
+ `(web-mode-html-attr-name-face ((,c :inherit font-lock-variable-name-face)))
+ `(web-mode-html-attr-value-face ((,c :inherit font-lock-constant-face)))
+ `(web-mode-html-entity-face ((,c :inherit font-lock-negation-char-face)))
+ `(web-mode-html-tag-bracket-face ((,c :foreground ,fg-dim)))
+ `(web-mode-html-tag-custom-face ((,c :inherit font-lock-function-name-face)))
+ `(web-mode-html-tag-face ((,c :inherit font-lock-function-name-face)))
+ `(web-mode-html-tag-namespaced-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-html-tag-unclosed-face ((,c :inherit error :underline t)))
+ `(web-mode-inlay-face ((,c :background ,bg-inactive)))
+ `(web-mode-italic-face ((,c :inherit italic)))
+ `(web-mode-javascript-comment-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-javascript-string-face ((,c :inherit web-mode-string-face)))
+ `(web-mode-json-comment-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-json-context-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-json-key-face ((,c :foreground ,blue-faint)))
+ `(web-mode-json-string-face ((,c :inherit web-mode-string-face)))
+ `(web-mode-keyword-face ((,c :inherit font-lock-keyword-face)))
+ `(web-mode-param-name-face ((,c :inherit font-lock-function-name-face)))
+ `(web-mode-part-comment-face ((,c :inherit web-mode-comment-face)))
+ `(web-mode-part-face ((,c :inherit web-mode-block-face)))
+ `(web-mode-part-string-face ((,c :inherit web-mode-string-face)))
+ `(web-mode-preprocessor-face ((,c :inherit font-lock-preprocessor-face)))
+ `(web-mode-script-face ((,c :inherit web-mode-part-face)))
+ `(web-mode-sql-keyword-face ((,c :inherit font-lock-negation-char-face)))
+ `(web-mode-string-face ((,c :inherit font-lock-string-face)))
+ `(web-mode-style-face ((,c :inherit web-mode-part-face)))
+ `(web-mode-symbol-face ((,c :inherit font-lock-constant-face)))
+ `(web-mode-type-face ((,c :inherit font-lock-builtin-face)))
+ `(web-mode-underline-face ((,c :underline t)))
+ `(web-mode-variable-name-face ((,c :inherit font-lock-variable-name-face)))
+ `(web-mode-warning-face ((,c :inherit font-lock-warning-face)))
+ `(web-mode-whitespace-face ((,c :background ,bg-inactive)))
;;;;; wgrep
- `(wgrep-delete-face ((,class :inherit warning)))
- `(wgrep-done-face ((,class :inherit success)))
- `(wgrep-face ((,class :inherit bold)))
- `(wgrep-file-face ((,class :foreground ,fg-special-warm)))
- `(wgrep-reject-face ((,class :inherit error)))
+ `(wgrep-delete-face ((,c :inherit warning)))
+ `(wgrep-done-face ((,c :inherit success)))
+ `(wgrep-face ((,c :inherit bold)))
+ `(wgrep-file-face ((,c :foreground ,fg-alt)))
+ `(wgrep-reject-face ((,c :inherit error)))
;;;;; which-function-mode
- `(which-func ((,class :foreground ,magenta-active)))
+ `(which-func ((,c :inherit bold :foreground ,modeline-info)))
;;;;; which-key
- `(which-key-command-description-face ((,class :foreground ,fg-main)))
- `(which-key-group-description-face ((,class :foreground ,magenta-alt)))
- `(which-key-highlighted-command-face ((,class :foreground ,yellow :underline t)))
- `(which-key-key-face ((,class :inherit modus-themes-key-binding)))
- `(which-key-local-map-description-face ((,class :foreground ,fg-main)))
- `(which-key-note-face ((,class :foreground ,fg-special-warm)))
- `(which-key-separator-face ((,class :inherit shadow)))
- `(which-key-special-key-face ((,class :inherit bold :foreground ,red-alt)))
+ `(which-key-command-description-face ((,c :foreground ,fg-main)))
+ `(which-key-group-description-face ((,c :foreground ,err)))
+ `(which-key-highlighted-command-face ((,c :foreground ,warning :underline t)))
+ `(which-key-key-face ((,c :inherit modus-themes-key-binding)))
+ `(which-key-local-map-description-face ((,c :foreground ,fg-main)))
+ `(which-key-note-face ((,c :inherit shadow)))
+ `(which-key-separator-face ((,c :inherit shadow)))
+ `(which-key-special-key-face ((,c :inherit error)))
;;;;; whitespace-mode
- `(whitespace-big-indent ((,class :inherit modus-themes-subtle-red)))
- `(whitespace-empty ((,class :inherit modus-themes-intense-magenta)))
- `(whitespace-hspace ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
- `(whitespace-indentation ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
- `(whitespace-line ((,class :inherit modus-themes-subtle-yellow)))
- `(whitespace-newline ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
- `(whitespace-space ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
- `(whitespace-space-after-tab ((,class :inherit modus-themes-subtle-magenta)))
- `(whitespace-space-before-tab ((,class :inherit modus-themes-subtle-cyan)))
- `(whitespace-tab ((,class :background ,bg-whitespace :foreground ,fg-whitespace)))
- `(whitespace-trailing ((,class :inherit modus-themes-intense-red)))
+ `(whitespace-big-indent ((,c :inherit modus-themes-subtle-red)))
+ `(whitespace-empty ((,c :inherit modus-themes-intense-magenta)))
+ `(whitespace-hspace ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(whitespace-indentation ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(whitespace-line ((,c :inherit modus-themes-subtle-yellow)))
+ `(whitespace-newline ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(whitespace-space ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(whitespace-space-after-tab ((,c :inherit modus-themes-subtle-magenta)))
+ `(whitespace-space-before-tab ((,c :inherit modus-themes-subtle-cyan)))
+ `(whitespace-tab ((,c :background ,bg-dim :foreground ,fg-dim)))
+ `(whitespace-trailing ((,c :inherit modus-themes-intense-red)))
;;;;; window-divider-mode
- `(window-divider ((,class :foreground ,fg-window-divider-inner)))
- `(window-divider-first-pixel ((,class :foreground ,fg-window-divider-outer)))
- `(window-divider-last-pixel ((,class :foreground ,fg-window-divider-outer)))
-;;;;; winum
- `(winum-face ((,class :inherit modus-themes-bold :foreground ,cyan-active)))
+ `(window-divider ((,c :foreground ,border)))
+ `(window-divider-first-pixel ((,c :foreground ,bg-inactive)))
+ `(window-divider-last-pixel ((,c :foreground ,bg-inactive)))
+;;;;; widget
+ `(widget-button ((,c :inherit bold :foreground ,fg-link)))
+ `(widget-button-pressed ((,c :inherit widget-buton :foreground ,fg-link-visited)))
+ `(widget-documentation ((,c :inherit font-lock-doc-face)))
+ `(widget-field ((,c :background ,bg-inactive :foreground ,fg-main :extend nil)))
+ `(widget-inactive ((,c :background ,bg-button-inactive :foreground ,fg-button-inactive)))
+ `(widget-single-line-field ((,c :inherit widget-field)))
;;;;; writegood-mode
- `(writegood-duplicates-face ((,class :background ,bg-alt :foreground ,red-alt :underline t)))
- `(writegood-passive-voice-face ((,class :inherit modus-themes-lang-warning)))
- `(writegood-weasels-face ((,class :inherit modus-themes-lang-error)))
+ `(writegood-duplicates-face ((,c :inherit modus-themes-lang-error)))
+ `(writegood-passive-voice-face ((,c :inherit modus-themes-lang-warning)))
+ `(writegood-weasels-face ((,c :inherit modus-themes-lang-warning)))
;;;;; woman
- `(woman-addition ((,class :foreground ,magenta-alt-other)))
- `(woman-bold ((,class :inherit bold :foreground ,magenta-alt)))
- `(woman-italic ((,class :inherit italic :foreground ,cyan)))
- `(woman-unknown ((,class :foreground ,green-alt)))
+ `(woman-addition ((,c :foreground ,accent-2)))
+ `(woman-bold ((,c :inherit bold :foreground ,accent-0)))
+ `(woman-italic ((,c :inherit italic :foreground ,accent-1)))
+ `(woman-unknown ((,c :foreground ,accent-3)))
;;;;; xah-elisp-mode
- `(xah-elisp-at-symbol ((,class :inherit font-lock-warning-face)))
- `(xah-elisp-cap-variable ((,class :inherit font-lock-preprocessor-face)))
- `(xah-elisp-command-face ((,class :inherit font-lock-type-face)))
- `(xah-elisp-dollar-symbol ((,class :inherit font-lock-variable-name-face)))
-;;;;; xref
- `(xref-file-header ((,class :inherit bold :foreground ,fg-special-cold)))
- `(xref-line-number ((,class :inherit shadow)))
- `(xref-match ((,class :inherit match)))
+ `(xah-elisp-at-symbol ((,c :inherit font-lock-warning-face)))
+ `(xah-elisp-cap-variable ((,c :inherit font-lock-preprocessor-face)))
+ `(xah-elisp-command-face ((,c :inherit font-lock-type-face)))
+ `(xah-elisp-dollar-symbol ((,c :inherit font-lock-variable-name-face)))
;;;;; yaml-mode
- `(yaml-tab-face ((,class :inherit modus-themes-intense-red)))
+ `(yaml-tab-face ((,c :inherit modus-themes-intense-red)))
;;;;; yasnippet
- `(yas-field-highlight-face ((,class :background ,bg-hl-alt-intense)))
-;;;;; ztree
- `(ztreep-arrow-face ((,class :foreground ,fg-inactive)))
- `(ztreep-diff-header-face ((,class :inherit bold :height 1.2 :foreground ,fg-special-cold)))
- `(ztreep-diff-header-small-face ((,class :foreground ,fg-main)))
- `(ztreep-diff-model-add-face ((,class :inherit modus-themes-grue)))
- `(ztreep-diff-model-diff-face ((,class :foreground ,red)))
- `(ztreep-diff-model-ignored-face ((,class :inherit shadow :strike-through t)))
- `(ztreep-diff-model-normal-face ((,class :inherit shadow)))
- `(ztreep-expand-sign-face ((,class :inherit ztreep-arrow-face)))
- `(ztreep-header-face ((,class :inherit bold :height 1.2 :foreground ,fg-special-cold)))
- `(ztreep-leaf-face ((,class :foreground ,cyan)))
- `(ztreep-node-count-children-face ((,class :foreground ,fg-special-warm)))
- `(ztreep-node-face ((,class :foreground ,fg-main))))
+ `(yas-field-highlight-face ((,c :inherit highlight))))
"Face specs for use with `modus-themes-theme'.")
(defconst modus-themes-custom-variables
@@ -7477,69 +3802,79 @@ by virtue of calling either of `modus-themes-load-operandi' and
;;;; ansi-colors
`(ansi-color-faces-vector [default bold shadow italic underline success warning error])
`(ansi-color-names-vector ["gray35" ,red ,green ,yellow ,blue ,magenta ,cyan "gray65"])
-;;;; awesome-tray
- `(awesome-tray-mode-line-active-color ,blue)
- `(awesome-tray-mode-line-inactive-color ,bg-active)
;;;; chart
`(chart-face-color-list
- '( ,red-graph-0-bg ,green-graph-0-bg ,yellow-graph-0-bg ,blue-graph-0-bg ,magenta-graph-0-bg ,cyan-graph-0-bg
- ,red-graph-1-bg ,green-graph-1-bg ,yellow-graph-1-bg ,blue-graph-1-bg ,magenta-graph-1-bg ,cyan-graph-1-bg))
+ '( ,bg-graph-red-0 ,bg-graph-green-0 ,bg-graph-yellow-0 ,bg-graph-blue-0 ,bg-graph-magenta-0 ,bg-graph-cyan-0
+ ,bg-graph-red-1 ,bg-graph-green-1 ,bg-graph-yellow-1 ,bg-graph-blue-1 ,bg-graph-magenta-1 ,bg-graph-cyan-1))
;;;; exwm
- `(exwm-floating-border-color ,fg-window-divider-inner)
+ `(exwm-floating-border-color ,border)
;;;; flymake fringe indicators
- `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-fringe-red))
- `(flymake-warning-bitmap '(exclamation-mark modus-themes-fringe-yellow))
- `(flymake-note-bitmap '(exclamation-mark modus-themes-fringe-cyan))
+ `(flymake-error-bitmap '(flymake-double-exclamation-mark modus-themes-intense-red))
+ `(flymake-warning-bitmap '(exclamation-mark modus-themes-intense-yellow))
+ `(flymake-note-bitmap '(exclamation-mark modus-themes-intense-cyan))
;;;; highlight-changes
`(highlight-changes-colors nil)
`(highlight-changes-face-list '(success warning error bold bold-italic))
;;;; ibuffer
`(ibuffer-deletion-face 'modus-themes-mark-del)
- `(ibuffer-filter-group-name-face 'modus-themes-pseudo-header)
+ `(ibuffer-filter-group-name-face 'bold)
`(ibuffer-marked-face 'modus-themes-mark-sel)
`(ibuffer-title-face 'default)
;;;; hl-todo
`(hl-todo-keyword-faces
- '(("HOLD" . ,yellow-alt)
- ("TODO" . ,magenta)
- ("NEXT" . ,magenta-alt-other)
- ("THEM" . ,magenta-alt)
- ("PROG" . ,cyan)
- ("OKAY" . ,cyan-alt)
- ("DONT" . ,green-alt)
- ("FAIL" . ,red)
- ("BUG" . ,red)
- ("DONE" . ,green)
- ("NOTE" . ,yellow-alt-other)
- ("KLUDGE" . ,yellow)
- ("HACK" . ,yellow)
- ("TEMP" . ,red-nuanced-fg)
- ("FIXME" . ,red-alt-other)
- ("XXX+" . ,red-alt)
- ("REVIEW" . ,cyan-alt-other)
- ("DEPRECATED" . ,blue-nuanced-fg)))
-;;;; mini-modeline
- `(mini-modeline-face-attr '(:background unspecified))
+ '(("HOLD" . ,warning)
+ ("TODO" . ,err)
+ ("NEXT" . ,fg-alt)
+ ("THEM" . ,fg-alt)
+ ("PROG" . ,info)
+ ("OKAY" . ,info)
+ ("DONT" . ,warning)
+ ("FAIL" . ,err)
+ ("BUG" . ,err)
+ ("DONE" . ,info)
+ ("NOTE" . ,warning)
+ ("KLUDGE" . ,warning)
+ ("HACK" . ,warning)
+ ("TEMP" . ,warning)
+ ("FIXME" . ,err)
+ ("XXX+" . ,err)
+ ("REVIEW" . ,info)
+ ("DEPRECATED" . ,info)))
;;;; pdf-tools
- `(pdf-view-midnight-colors
- '(,fg-main . ,bg-dim))
-;;;; wid-edit
- `(widget-link-prefix ,(if (memq 'all-buttons modus-themes-box-buttons)
- " "
- "["))
- `(widget-link-suffix ,(if (memq 'all-buttons modus-themes-box-buttons)
- " "
- "]"))
- `(widget-mouse-face '(highlight widget-button))
- `(widget-push-button-prefix ,(if (memq 'all-buttons modus-themes-box-buttons)
- " "
- "["))
- `(widget-push-button-suffix ,(if (memq 'all-buttons modus-themes-box-buttons)
- " "
- "]"))
-;;;; xterm-color
- `(xterm-color-names ["black" ,red ,green ,yellow ,blue ,magenta ,cyan "gray65"])
- `(xterm-color-names-bright ["gray35" ,red-alt ,green-alt ,yellow-alt ,blue-alt ,magenta-alt ,cyan-alt "white"])
+ `(pdf-view-midnight-colors '(,fg-main . ,bg-dim))
+;;;; rcirc-color
+ `(rcirc-colors
+ '(modus-themes-fg-red
+ modus-themes-fg-green
+ modus-themes-fg-blue
+ modus-themes-fg-yellow
+ modus-themes-fg-magenta
+ modus-themes-fg-cyan
+ modus-themes-fg-red-warmer
+ modus-themes-fg-green-warmer
+ modus-themes-fg-blue-warmer
+ modus-themes-fg-yellow-warmer
+ modus-themes-fg-magenta-warmer
+ modus-themes-fg-cyan-warmer
+ modus-themes-fg-red-cooler
+ modus-themes-fg-green-cooler
+ modus-themes-fg-blue-cooler
+ modus-themes-fg-yellow-cooler
+ modus-themes-fg-magenta-cooler
+ modus-themes-fg-cyan-cooler
+ modus-themes-fg-red-faint
+ modus-themes-fg-green-faint
+ modus-themes-fg-blue-faint
+ modus-themes-fg-yellow-faint
+ modus-themes-fg-magenta-faint
+ modus-themes-fg-cyan-faint
+ modus-themes-fg-red-intense
+ modus-themes-fg-green-intense
+ modus-themes-fg-blue-intense
+ modus-themes-fg-yellow-intense
+ modus-themes-fg-magenta-intense
+ modus-themes-fg-cyan-intense))
+;;;; org-src-block-faces
(if (or (eq modus-themes-org-blocks 'tinted-background)
(eq modus-themes-org-blocks 'rainbow))
`(org-src-block-faces
@@ -7564,6 +3899,56 @@ by virtue of calling either of `modus-themes-load-operandi' and
`(org-src-block-faces '())))
"Custom variables for `modus-themes-theme'.")
+;;; Theme macros
+
+;;;; Instantiate a Modus theme
+
+;;;###autoload
+(defmacro modus-themes-theme (name palette &optional overrides)
+ "Bind NAME's color PALETTE around face specs and variables.
+Face specifications are passed to `custom-theme-set-faces'.
+While variables are handled by `custom-theme-set-variables'.
+Those are stored in `modus-themes-faces' and
+`modus-themes-custom-variables' respectively.
+
+Optional OVERRIDES are appended to PALETTE, overriding
+corresponding entries."
+ (declare (indent 0))
+ (let ((sym (gensym))
+ (colors (mapcar #'car (symbol-value palette))))
+ `(let* ((c '((class color) (min-colors 256)))
+ (,sym (modus-themes--palette-value ',name ',overrides))
+ ,@(mapcar (lambda (color)
+ (list color
+ `(modus-themes--retrieve-palette-value ',color ,sym)))
+ colors))
+ (ignore c ,@colors) ; Silence unused variable warnings
+ (custom-theme-set-faces ',name ,@modus-themes-faces)
+ (custom-theme-set-variables ',name ,@modus-themes-custom-variables))))
+
+;;;; Use theme colors
+
+(defmacro modus-themes-with-colors (&rest body)
+ "Evaluate BODY with colors from current palette bound."
+ (declare (indent 0))
+ (let* ((sym (gensym))
+ ;; NOTE 2022-08-23: We just give it a sample palette at this
+ ;; stage. It only needs to collect each car. Then we
+ ;; instantiate the actual theme's palette. We have to do this
+ ;; otherwise the macro does not work properly when called from
+ ;; inside a function.
+ (colors (mapcar #'car (modus-themes--current-theme-palette))))
+ `(let* ((c '((class color) (min-colors 256)))
+ (,sym (modus-themes--current-theme-palette :overrides))
+ ,@(mapcar (lambda (color)
+ (list color
+ `(modus-themes--retrieve-palette-value ',color ,sym)))
+ colors))
+ (ignore c ,@colors) ; Silence unused variable warnings
+ ,@body)))
+
+;;;; Add themes from package to path
+
;;;###autoload
(when load-file-name
(let ((dir (file-name-directory load-file-name)))
diff --git a/etc/themes/modus-vivendi-deuteranopia-theme.el b/etc/themes/modus-vivendi-deuteranopia-theme.el
new file mode 100644
index 00000000000..57241c59b96
--- /dev/null
+++ b/etc/themes/modus-vivendi-deuteranopia-theme.el
@@ -0,0 +1,418 @@
+;;; modus-vivendi-deuteranopia-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
+
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+;; URL: https://git.sr.ht/~protesilaos/modus-themes
+;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
+
+;;; Code:
+
+
+
+(eval-and-compile
+ (unless (and (fboundp 'require-theme)
+ load-file-name
+ (equal (file-name-directory load-file-name)
+ (expand-file-name "themes/" data-directory))
+ (require-theme 'modus-themes t))
+ (require 'modus-themes))
+
+ (deftheme modus-vivendi-deuteranopia
+ "Elegant, highly legible and customizable dark theme.
+This variant is optimized for users with red-green color
+deficiency (deuteranopia). It conforms with the highest
+legibility standard for color contrast between background and
+foreground in any given piece of text, which corresponds to a
+minimum contrast in relative luminance of 7:1 (WCAG AAA
+standard).")
+
+ (defconst modus-vivendi-deuteranopia-palette
+ '(
+;;; Basic values
+
+ (bg-main "#000000")
+ (bg-dim "#1e1e1e")
+ (fg-main "#ffffff")
+ (fg-dim "#989898")
+ (fg-alt "#c6daff")
+ (bg-active "#535353")
+ (bg-inactive "#303030")
+ (border "#646464")
+
+;;; Common accent foregrounds
+
+ (red "#ff5f59")
+ (red-warmer "#ff6b55")
+ (red-cooler "#ff7f9f")
+ (red-faint "#ff9580")
+ (red-intense "#ff5f5f")
+ (green "#44bc44")
+ (green-warmer "#70b900")
+ (green-cooler "#00c06f")
+ (green-faint "#88ca9f")
+ (green-intense "#44df44")
+ (yellow "#d0bc00")
+ (yellow-warmer "#fec43f")
+ (yellow-cooler "#dfaf7a")
+ (yellow-faint "#d2b580")
+ (yellow-intense "#efef00")
+ (blue "#2fafff")
+ (blue-warmer "#79a8ff")
+ (blue-cooler "#00bcff")
+ (blue-faint "#82b0ec")
+ (blue-intense "#338fff")
+ (magenta "#feacd0")
+ (magenta-warmer "#f78fe7")
+ (magenta-cooler "#b6a0ff")
+ (magenta-faint "#caa6df")
+ (magenta-intense "#ff66ff")
+ (cyan "#00d3d0")
+ (cyan-warmer "#4ae2f0")
+ (cyan-cooler "#6ae4b9")
+ (cyan-faint "#9ac8e0")
+ (cyan-intense "#00eff0")
+
+;;; Uncommon accent foregrounds
+
+ (rust "#db7b5f")
+ (gold "#c0965b")
+ (olive "#9cbd6f")
+ (slate "#76afbf")
+ (indigo "#9099d9")
+ (maroon "#cf7fa7")
+ (pink "#d09dc0")
+
+;;; Common accent backgrounds
+
+ (bg-red-intense "#9d1f1f")
+ (bg-green-intense "#2f822f")
+ (bg-yellow-intense "#7a6100")
+ (bg-blue-intense "#1640b0")
+ (bg-magenta-intense "#7030af")
+ (bg-cyan-intense "#2266ae")
+
+ (bg-red-subtle "#620f2a")
+ (bg-green-subtle "#00422a")
+ (bg-yellow-subtle "#4a4000")
+ (bg-blue-subtle "#242679")
+ (bg-magenta-subtle "#552f5f")
+ (bg-cyan-subtle "#004065")
+
+ (bg-red-nuanced "#2c0614")
+ (bg-green-nuanced "#001904")
+ (bg-yellow-nuanced "#221000")
+ (bg-blue-nuanced "#0f0e39")
+ (bg-magenta-nuanced "#230631")
+ (bg-cyan-nuanced "#041529")
+
+;;; Uncommon accent backgrounds
+
+ (bg-ochre "#442c2f")
+ (bg-lavender "#38325c")
+ (bg-sage "#0f3d30")
+
+;;; Graphs
+
+ (bg-graph-red-0 "#705c3c")
+ (bg-graph-red-1 "#504420")
+ (bg-graph-green-0 "#4f666f")
+ (bg-graph-green-1 "#204840")
+ (bg-graph-yellow-0 "#c1c00a")
+ (bg-graph-yellow-1 "#6f6f00")
+ (bg-graph-blue-0 "#2fafef")
+ (bg-graph-blue-1 "#1f2f8f")
+ (bg-graph-magenta-0 "#7f7f8e")
+ (bg-graph-magenta-1 "#4f4f5f")
+ (bg-graph-cyan-0 "#376f9a")
+ (bg-graph-cyan-1 "#00404f")
+
+;;; Special purpose
+
+ (bg-completion "#2f447f")
+ (bg-hover "#004f70")
+ (bg-hover-secondary "#654a39")
+ (bg-hl-line "#2f3849")
+ (bg-region "#5a5a5a")
+ (fg-region "#ffffff")
+
+ (bg-char-0 "#0050af")
+ (bg-char-1 "#7f1f7f")
+ (bg-char-2 "#625a00")
+
+ (bg-mode-line-active "#2a2a6a")
+ (fg-mode-line-active "#f0f0f0")
+ (border-mode-line-active "#8080a7")
+ (bg-mode-line-inactive "#2d2d2d")
+ (fg-mode-line-inactive "#969696")
+ (border-mode-line-inactive "#606060")
+
+ (modeline-err "#e5bf00")
+ (modeline-warning "#c0cf35")
+ (modeline-info "#abeadf")
+
+ (bg-tab-bar "#313131")
+ (bg-tab-current "#000000")
+ (bg-tab-other "#545454")
+
+;;; Diffs
+
+ (bg-added "#003066")
+ (bg-added-faint "#001a4f")
+ (bg-added-refine "#0f4a77")
+ (bg-added-fringe "#006fff")
+ (fg-added "#c4d5ff")
+ (fg-added-intense "#8080ff")
+
+ (bg-changed "#2f123f")
+ (bg-changed-faint "#1f022f")
+ (bg-changed-refine "#3f325f")
+ (bg-changed-fringe "#7f55a0")
+ (fg-changed "#e3cfff")
+ (fg-changed-intense "#cf9fe2")
+
+ (bg-removed "#3d3d00")
+ (bg-removed-faint "#281f00")
+ (bg-removed-refine "#515100")
+ (bg-removed-fringe "#d0c03f")
+ (fg-removed "#d4d48f")
+ (fg-removed-intense "#d0b05f")
+
+ (bg-diff-context "#1a1a1a")
+
+;;; Paren match
+
+ (bg-paren-match "#2f7f9f")
+ (bg-paren-expression "#453040")
+ (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+ (fringe bg-dim)
+ (cursor yellow-intense)
+
+ (keybind blue-cooler)
+ (name blue-cooler)
+ (identifier yellow-faint)
+
+ (err yellow-warmer)
+ (warning yellow-cooler)
+ (info blue)
+
+ (underline-err yellow-intense)
+ (underline-warning magenta-faint)
+ (underline-note cyan)
+
+;;;; Code mappings
+
+ (builtin magenta-warmer)
+ (comment yellow-cooler)
+ (constant blue-cooler)
+ (docstring cyan-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
+ (preprocessor red-cooler)
+ (string blue-warmer)
+ (type cyan-cooler)
+ (variable cyan)
+ (rx-construct yellow-cooler)
+ (rx-backslash blue-cooler)
+
+;;;; Accent mappings
+
+ (accent-0 blue-cooler)
+ (accent-1 yellow)
+ (accent-2 cyan-cooler)
+ (accent-3 magenta-warmer)
+
+;;;; Button mappings
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-active)
+ (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+ (fg-completion-match-0 blue-cooler)
+ (fg-completion-match-1 yellow)
+ (fg-completion-match-2 cyan-cooler)
+ (fg-completion-match-3 magenta-warmer)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+ (date-common cyan)
+ (date-deadline yellow-warmer)
+ (date-event fg-alt)
+ (date-holiday yellow-warmer)
+ (date-now blue-faint)
+ (date-scheduled yellow-cooler)
+ (date-weekday cyan)
+ (date-weekend yellow-faint)
+
+;;;; Line number mappings
+
+ (fg-line-number-inactive fg-dim)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-dim)
+ (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+ (fg-link blue-warmer)
+ (bg-link unspecified)
+ (underline-link blue-warmer)
+
+ (fg-link-symbolic cyan)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic cyan)
+
+ (fg-link-visited yellow-faint)
+ (bg-link-visited unspecified)
+ (underline-link-visited yellow-faint)
+
+;;;; Mail mappings
+
+ (mail-cite-0 blue-warmer)
+ (mail-cite-1 yellow-cooler)
+ (mail-cite-2 blue-cooler)
+ (mail-cite-3 yellow)
+ (mail-part blue)
+ (mail-recipient blue)
+ (mail-subject yellow-warmer)
+ (mail-other cyan-faint)
+
+;;;; Prompt mappings
+
+ (fg-prompt blue)
+ (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+ (prose-block fg-dim)
+ (prose-code cyan-cooler)
+ (prose-done blue)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo yellow-warmer)
+ (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+ (rainbow-0 yellow-warmer)
+ (rainbow-1 blue)
+ (rainbow-2 yellow-cooler)
+ (rainbow-3 blue-warmer)
+ (rainbow-4 yellow)
+ (rainbow-5 cyan-warmer)
+ (rainbow-6 yellow-faint)
+ (rainbow-7 blue-faint)
+ (rainbow-8 magenta-faint)
+
+;;;; Heading mappings
+
+ (fg-heading-0 cyan-cooler)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 yellow-faint)
+ (fg-heading-3 blue-faint)
+ (fg-heading-4 magenta)
+ (fg-heading-5 green-faint)
+ (fg-heading-6 red-faint)
+ (fg-heading-7 cyan-faint)
+ (fg-heading-8 fg-dim)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 unspecified)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 unspecified)
+ (bg-heading-4 unspecified)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 unspecified)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 unspecified)
+ (overline-heading-2 unspecified)
+ (overline-heading-3 unspecified)
+ (overline-heading-4 unspecified)
+ (overline-heading-5 unspecified)
+ (overline-heading-6 unspecified)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "The entire palette of the `modus-vivendi-deuteranopia' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
+with both as symbols. The latter is a named color that already
+exists in the palette and is associated with a HEX-VALUE.")
+
+ (defcustom modus-vivendi-deuteranopia-palette-overrides nil
+ "Overrides for `modus-vivendi-deuteranopia-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Palette overrides"))
+
+ (modus-themes-theme modus-vivendi-deuteranopia
+ modus-vivendi-deuteranopia-palette
+ modus-vivendi-deuteranopia-palette-overrides)
+
+ (provide-theme 'modus-vivendi-deuteranopia))
+
+;;;###theme-autoload
+(put 'modus-vivendi-deuteranopia 'theme-properties '(:background-mode dark :kind color-scheme :family modus))
+
+;;; modus-vivendi-deuteranopia-theme.el ends here
diff --git a/etc/themes/modus-vivendi-theme.el b/etc/themes/modus-vivendi-theme.el
index 6b365f421cc..5012f8fb7f8 100644
--- a/etc/themes/modus-vivendi-theme.el
+++ b/etc/themes/modus-vivendi-theme.el
@@ -1,14 +1,11 @@
;;; modus-vivendi-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
-;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
;; Author: Protesilaos Stavrou <info@protesilaos.com>
;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
;; URL: https://git.sr.ht/~protesilaos/modus-themes
;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
-;; Version: 3.0.0
-;; Package-Requires: ((emacs "27.1"))
-;; Keywords: faces, theme, accessibility
;; This file is part of GNU Emacs.
@@ -27,26 +24,11 @@
;;; Commentary:
;;
-;; Modus Vivendi is the dark variant of the Modus themes (Modus Operandi
-;; is the light one). The themes are designed for color-contrast
-;; accessibility. More specifically:
-;;
-;; 1. Provide a consistent minimum contrast ratio between background
-;; and foreground values of 7:1 or higher. This meets the highest
-;; such accessibility criterion per the guidelines of the Worldwide
-;; Web Consortium's Working Group on Accessibility (WCAG AAA
-;; standard).
-;;
-;; 2. Offer as close to full face coverage as possible. The list is
-;; already quite long, with more additions to follow as part of the
-;; ongoing development process.
-;;
-;; For a complete view of the project, also refer to the following files
-;; (should be distributed in the same repository/directory as the
-;; current item):
-;;
-;; - modus-themes.el (Main code shared between the themes)
-;; - modus-operandi-theme.el (Light theme)
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
;;; Code:
@@ -67,7 +49,365 @@ between background and foreground in any given piece of text,
which corresponds to a minimum contrast in relative luminance of
7:1 (WCAG AAA standard).")
- (modus-themes-theme modus-vivendi)
+ (defconst modus-vivendi-palette
+ '(
+;;; Basic values
+
+ (bg-main "#000000")
+ (bg-dim "#1e1e1e")
+ (fg-main "#ffffff")
+ (fg-dim "#989898")
+ (fg-alt "#c6daff")
+ (bg-active "#535353")
+ (bg-inactive "#303030")
+ (border "#646464")
+
+;;; Common accent foregrounds
+
+ (red "#ff5f59")
+ (red-warmer "#ff6b55")
+ (red-cooler "#ff7f9f")
+ (red-faint "#ff9580")
+ (red-intense "#ff5f5f")
+ (green "#44bc44")
+ (green-warmer "#70b900")
+ (green-cooler "#00c06f")
+ (green-faint "#88ca9f")
+ (green-intense "#44df44")
+ (yellow "#d0bc00")
+ (yellow-warmer "#fec43f")
+ (yellow-cooler "#dfaf7a")
+ (yellow-faint "#d2b580")
+ (yellow-intense "#efef00")
+ (blue "#2fafff")
+ (blue-warmer "#79a8ff")
+ (blue-cooler "#00bcff")
+ (blue-faint "#82b0ec")
+ (blue-intense "#338fff")
+ (magenta "#feacd0")
+ (magenta-warmer "#f78fe7")
+ (magenta-cooler "#b6a0ff")
+ (magenta-faint "#caa6df")
+ (magenta-intense "#ff66ff")
+ (cyan "#00d3d0")
+ (cyan-warmer "#4ae2f0")
+ (cyan-cooler "#6ae4b9")
+ (cyan-faint "#9ac8e0")
+ (cyan-intense "#00eff0")
+
+;;; Uncommon accent foregrounds
+
+ (rust "#db7b5f")
+ (gold "#c0965b")
+ (olive "#9cbd6f")
+ (slate "#76afbf")
+ (indigo "#9099d9")
+ (maroon "#cf7fa7")
+ (pink "#d09dc0")
+
+;;; Common accent backgrounds
+
+ (bg-red-intense "#9d1f1f")
+ (bg-green-intense "#2f822f")
+ (bg-yellow-intense "#7a6100")
+ (bg-blue-intense "#1640b0")
+ (bg-magenta-intense "#7030af")
+ (bg-cyan-intense "#2266ae")
+
+ (bg-red-subtle "#620f2a")
+ (bg-green-subtle "#00422a")
+ (bg-yellow-subtle "#4a4000")
+ (bg-blue-subtle "#242679")
+ (bg-magenta-subtle "#552f5f")
+ (bg-cyan-subtle "#004065")
+
+ (bg-red-nuanced "#2c0614")
+ (bg-green-nuanced "#001904")
+ (bg-yellow-nuanced "#221000")
+ (bg-blue-nuanced "#0f0e39")
+ (bg-magenta-nuanced "#230631")
+ (bg-cyan-nuanced "#041529")
+
+;;; Uncommon accent backgrounds
+
+ (bg-ochre "#442c2f")
+ (bg-lavender "#38325c")
+ (bg-sage "#0f3d30")
+
+;;; Graphs
+
+ (bg-graph-red-0 "#b52c2c")
+ (bg-graph-red-1 "#702020")
+ (bg-graph-green-0 "#4fd100")
+ (bg-graph-green-1 "#007800")
+ (bg-graph-yellow-0 "#f1e00a")
+ (bg-graph-yellow-1 "#b08600")
+ (bg-graph-blue-0 "#2fafef")
+ (bg-graph-blue-1 "#1f2f8f")
+ (bg-graph-magenta-0 "#bf94fe")
+ (bg-graph-magenta-1 "#5f509f")
+ (bg-graph-cyan-0 "#47dfea")
+ (bg-graph-cyan-1 "#00808f")
+
+;;; Special purpose
+
+ (bg-completion "#2f447f")
+ (bg-hover "#004f70")
+ (bg-hover-secondary "#654a39")
+ (bg-hl-line "#2f3849")
+ (bg-region "#5a5a5a")
+ (fg-region "#ffffff")
+
+ (bg-char-0 "#0050af")
+ (bg-char-1 "#7f1f7f")
+ (bg-char-2 "#625a00")
+
+ (bg-mode-line-active "#505050")
+ (fg-mode-line-active "#ffffff")
+ (border-mode-line-active "#959595")
+ (bg-mode-line-inactive "#2d2d2d")
+ (fg-mode-line-inactive "#969696")
+ (border-mode-line-inactive "#606060")
+
+ (modeline-err "#ffa9bf")
+ (modeline-warning "#dfcf43")
+ (modeline-info "#9fefff")
+
+ (bg-tab-bar "#313131")
+ (bg-tab-current "#000000")
+ (bg-tab-other "#545454")
+
+;;; Diffs
+
+ (bg-added "#00381f")
+ (bg-added-faint "#002910")
+ (bg-added-refine "#034f2f")
+ (bg-added-fringe "#237f3f")
+ (fg-added "#a0e0a0")
+ (fg-added-intense "#80e080")
+
+ (bg-changed "#363300")
+ (bg-changed-faint "#2a1f00")
+ (bg-changed-refine "#4a4a00")
+ (bg-changed-fringe "#8a7a00")
+ (fg-changed "#efef80")
+ (fg-changed-intense "#c0b05f")
+
+ (bg-removed "#4f1119")
+ (bg-removed-faint "#380a0f")
+ (bg-removed-refine "#781a1f")
+ (bg-removed-fringe "#b81a1f")
+ (fg-removed "#ffbfbf")
+ (fg-removed-intense "#ff9095")
+
+ (bg-diff-context "#1a1a1a")
+
+;;; Paren match
+
+ (bg-paren-match "#2f7f9f")
+ (bg-paren-expression "#453040")
+ (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+ (fringe bg-dim)
+ (cursor fg-main)
+
+ (keybind blue-cooler)
+ (name magenta)
+ (identifier yellow-faint)
+
+ (err red)
+ (warning yellow-warmer)
+ (info cyan-cooler)
+
+ (underline-err red-intense)
+ (underline-warning yellow)
+ (underline-note cyan)
+
+;;;; Code mappings
+
+ (builtin magenta-warmer)
+ (comment fg-dim)
+ (constant blue-cooler)
+ (docstring cyan-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
+ (preprocessor red-cooler)
+ (string blue-warmer)
+ (type cyan-cooler)
+ (variable cyan)
+ (rx-construct green-cooler)
+ (rx-backslash magenta)
+
+;;;; Accent mappings
+
+ (accent-0 blue-cooler)
+ (accent-1 magenta-warmer)
+ (accent-2 cyan-cooler)
+ (accent-3 yellow)
+
+;;;; Button mappings
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-active)
+ (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+ (fg-completion-match-0 blue-cooler)
+ (fg-completion-match-1 magenta-warmer)
+ (fg-completion-match-2 cyan-cooler)
+ (fg-completion-match-3 yellow)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+ (date-common cyan)
+ (date-deadline red)
+ (date-event fg-alt)
+ (date-holiday magenta)
+ (date-now fg-main)
+ (date-scheduled yellow-warmer)
+ (date-weekday cyan)
+ (date-weekend red-faint)
+
+;;;; Line number mappings
+
+ (fg-line-number-inactive fg-dim)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-dim)
+ (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+ (fg-link blue-warmer)
+ (bg-link unspecified)
+ (underline-link blue-warmer)
+
+ (fg-link-symbolic cyan)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic cyan)
+
+ (fg-link-visited magenta)
+ (bg-link-visited unspecified)
+ (underline-link-visited magenta)
+
+;;;; Mail mappings
+
+ (mail-cite-0 blue-warmer)
+ (mail-cite-1 yellow-cooler)
+ (mail-cite-2 cyan-cooler)
+ (mail-cite-3 red-cooler)
+ (mail-part blue)
+ (mail-recipient magenta-cooler)
+ (mail-subject magenta-warmer)
+ (mail-other magenta-faint)
+
+;;;; Prompt mappings
+
+ (fg-prompt cyan-cooler)
+ (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+ (prose-block fg-dim)
+ (prose-code cyan-cooler)
+ (prose-done green)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo red)
+ (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+ (rainbow-0 fg-main)
+ (rainbow-1 magenta-intense)
+ (rainbow-2 cyan-intense)
+ (rainbow-3 red-warmer)
+ (rainbow-4 yellow-intense)
+ (rainbow-5 magenta-cooler)
+ (rainbow-6 green-intense)
+ (rainbow-7 blue-warmer)
+ (rainbow-8 magenta-warmer)
+
+;;;; Heading mappings
+
+ (fg-heading-0 cyan-cooler)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 yellow-faint)
+ (fg-heading-3 blue-faint)
+ (fg-heading-4 magenta)
+ (fg-heading-5 green-faint)
+ (fg-heading-6 red-faint)
+ (fg-heading-7 cyan-faint)
+ (fg-heading-8 fg-dim)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 unspecified)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 unspecified)
+ (bg-heading-4 unspecified)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 unspecified)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 unspecified)
+ (overline-heading-2 unspecified)
+ (overline-heading-3 unspecified)
+ (overline-heading-4 unspecified)
+ (overline-heading-5 unspecified)
+ (overline-heading-6 unspecified)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "The entire palette of the `modus-vivendi' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
+with both as symbols. The latter is a named color that already
+exists in the palette and is associated with a HEX-VALUE.")
+
+
+ (defcustom modus-vivendi-palette-overrides nil
+ "Overrides for `modus-vivendi-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Palette overrides"))
+
+ (modus-themes-theme modus-vivendi
+ modus-vivendi-palette
+ modus-vivendi-palette-overrides)
(provide-theme 'modus-vivendi))
diff --git a/etc/themes/modus-vivendi-tinted-theme.el b/etc/themes/modus-vivendi-tinted-theme.el
new file mode 100644
index 00000000000..79e7fc9e3d8
--- /dev/null
+++ b/etc/themes/modus-vivendi-tinted-theme.el
@@ -0,0 +1,416 @@
+;;; modus-vivendi-tinted-theme.el --- Elegant, highly legible and customizable dark theme -*- lexical-binding:t -*-
+
+;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
+
+;; Author: Protesilaos Stavrou <info@protesilaos.com>
+;; Maintainer: Modus-Themes Development <~protesilaos/modus-themes@lists.sr.ht>
+;; URL: https://git.sr.ht/~protesilaos/modus-themes
+;; Mailing-List: https://lists.sr.ht/~protesilaos/modus-themes
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; The Modus themes conform with the highest standard for
+;; color-contrast accessibility between background and foreground
+;; values (WCAG AAA). Please refer to the official Info manual for
+;; further documentation (distributed with the themes, or available
+;; at: <https://protesilaos.com/emacs/modus-themes>).
+
+;;; Code:
+
+
+
+(eval-and-compile
+ (unless (and (fboundp 'require-theme)
+ load-file-name
+ (equal (file-name-directory load-file-name)
+ (expand-file-name "themes/" data-directory))
+ (require-theme 'modus-themes t))
+ (require 'modus-themes))
+
+ (deftheme modus-vivendi-tinted
+ "Elegant, highly legible and customizable dark theme.
+Conforms with the highest legibility standard for color contrast
+between background and foreground in any given piece of text,
+which corresponds to a minimum contrast in relative luminance of
+7:1 (WCAG AAA standard).")
+
+ (defconst modus-vivendi-tinted-palette
+ '(
+;;; Basic values
+
+ (bg-main "#0d0e1c")
+ (bg-dim "#1d2235")
+ (fg-main "#ffffff")
+ (fg-dim "#989898")
+ (fg-alt "#c6daff")
+ (bg-active "#4a4f69")
+ (bg-inactive "#2b3045")
+ (border "#61647a")
+
+;;; Common accent foregrounds
+
+ (red "#ff5f59")
+ (red-warmer "#ff6b55")
+ (red-cooler "#ff7f9f")
+ (red-faint "#ff9f80")
+ (red-intense "#ff5f5f")
+ (green "#44bc44")
+ (green-warmer "#70b900")
+ (green-cooler "#00c06f")
+ (green-faint "#88ca9f")
+ (green-intense "#44df44")
+ (yellow "#d0bc00")
+ (yellow-warmer "#fec43f")
+ (yellow-cooler "#dfaf7a")
+ (yellow-faint "#d2b580")
+ (yellow-intense "#efef00")
+ (blue "#2fafff")
+ (blue-warmer "#79a8ff")
+ (blue-cooler "#00bcff")
+ (blue-faint "#82b0ec")
+ (blue-intense "#338fff")
+ (magenta "#feacd0")
+ (magenta-warmer "#f78fe7")
+ (magenta-cooler "#b6a0ff")
+ (magenta-faint "#caa6df")
+ (magenta-intense "#ff66ff")
+ (cyan "#00d3d0")
+ (cyan-warmer "#4ae2f0")
+ (cyan-cooler "#6ae4b9")
+ (cyan-faint "#9ac8e0")
+ (cyan-intense "#00eff0")
+
+;;; Uncommon accent foregrounds
+
+ (rust "#db7b5f")
+ (gold "#c0965b")
+ (olive "#9cbd6f")
+ (slate "#76afbf")
+ (indigo "#9099d9")
+ (maroon "#cf7fa7")
+ (pink "#d09dc0")
+
+;;; Common accent backgrounds
+
+ (bg-red-intense "#9d1f1f")
+ (bg-green-intense "#2f822f")
+ (bg-yellow-intense "#7a6100")
+ (bg-blue-intense "#1640b0")
+ (bg-magenta-intense "#7030af")
+ (bg-cyan-intense "#2266ae")
+
+ (bg-red-subtle "#620f2a")
+ (bg-green-subtle "#00422a")
+ (bg-yellow-subtle "#4a4000")
+ (bg-blue-subtle "#242679")
+ (bg-magenta-subtle "#552f5f")
+ (bg-cyan-subtle "#004065")
+
+ (bg-red-nuanced "#350f14")
+ (bg-green-nuanced "#002718")
+ (bg-yellow-nuanced "#2c1f00")
+ (bg-blue-nuanced "#131c4d")
+ (bg-magenta-nuanced "#2f133f")
+ (bg-cyan-nuanced "#04253f")
+
+;;; Graphs
+
+ (bg-graph-red-0 "#b52c2c")
+ (bg-graph-red-1 "#702020")
+ (bg-graph-green-0 "#4fd100")
+ (bg-graph-green-1 "#007800")
+ (bg-graph-yellow-0 "#f1e00a")
+ (bg-graph-yellow-1 "#b08600")
+ (bg-graph-blue-0 "#2fafef")
+ (bg-graph-blue-1 "#1f2f8f")
+ (bg-graph-magenta-0 "#bf94fe")
+ (bg-graph-magenta-1 "#5f509f")
+ (bg-graph-cyan-0 "#47dfea")
+ (bg-graph-cyan-1 "#00808f")
+
+;;; Special purpose
+
+ (bg-completion "#483d8a")
+ (bg-hover "#004f70")
+ (bg-hover-secondary "#654a39")
+ (bg-hl-line "#303a6f")
+ (bg-region "#555a66")
+ (fg-region "#ffffff")
+
+ (bg-char-0 "#0050af")
+ (bg-char-1 "#7f1f7f")
+ (bg-char-2 "#625a00")
+
+ (bg-mode-line-active "#484d67")
+ (fg-mode-line-active "#ffffff")
+ (border-mode-line-active "#979797")
+ (bg-mode-line-inactive "#292d48")
+ (fg-mode-line-inactive "#969696")
+ (border-mode-line-inactive "#606270")
+
+ (modeline-err "#ffa9bf")
+ (modeline-warning "#dfcf43")
+ (modeline-info "#9fefff")
+
+ (bg-tab-bar "#2c3045")
+ (bg-tab-current "#0d0e1c")
+ (bg-tab-other "#4a4f6a")
+
+;;; Diffs
+
+ (bg-added "#003a2f")
+ (bg-added-faint "#002922")
+ (bg-added-refine "#035542")
+ (bg-added-fringe "#23884f")
+ (fg-added "#a0e0a0")
+ (fg-added-intense "#80e080")
+
+ (bg-changed "#363300")
+ (bg-changed-faint "#2a1f00")
+ (bg-changed-refine "#4a4a00")
+ (bg-changed-fringe "#8f7a30")
+ (fg-changed "#efef80")
+ (fg-changed-intense "#c0b05f")
+
+ (bg-removed "#4f1127")
+ (bg-removed-faint "#380a19")
+ (bg-removed-refine "#781a3a")
+ (bg-removed-fringe "#b81a26")
+ (fg-removed "#ffbfbf")
+ (fg-removed-intense "#ff9095")
+
+ (bg-diff-context "#1a1f30")
+
+;;; Uncommon accent backgrounds
+
+ (bg-ochre "#442c2f")
+ (bg-lavender "#38325c")
+ (bg-sage "#0f3d30")
+
+;;; Paren match
+
+ (bg-paren-match "#2f7f9f")
+ (bg-paren-expression "#453040")
+ (underline-paren-match unspecified)
+
+;;; Mappings
+
+;;;; General mappings
+
+ (fringe bg-dim)
+ (cursor magenta-warmer)
+
+ (keybind blue-cooler)
+ (name magenta)
+ (identifier yellow-faint)
+
+ (err red)
+ (warning yellow-warmer)
+ (info cyan-cooler)
+
+ (underline-err red-intense)
+ (underline-warning yellow)
+ (underline-note cyan)
+
+;;;; Code mappings
+
+ (builtin magenta-warmer)
+ (comment red-faint)
+ (constant blue-cooler)
+ (docstring cyan-faint)
+ (docmarkup magenta-faint)
+ (fnname magenta)
+ (keyword magenta-cooler)
+ (preprocessor red-cooler)
+ (string blue-warmer)
+ (type cyan-cooler)
+ (variable cyan)
+ (rx-construct green-cooler)
+ (rx-backslash magenta)
+
+;;;; Accent mappings
+
+ (accent-0 blue-cooler)
+ (accent-1 magenta-warmer)
+ (accent-2 cyan-cooler)
+ (accent-3 yellow)
+
+;;;; Button mappings
+
+ (fg-button-active fg-main)
+ (fg-button-inactive fg-dim)
+ (bg-button-active bg-active)
+ (bg-button-inactive bg-dim)
+
+;;;; Completion mappings
+
+ (fg-completion-match-0 blue-cooler)
+ (fg-completion-match-1 magenta-warmer)
+ (fg-completion-match-2 cyan-cooler)
+ (fg-completion-match-3 yellow)
+ (bg-completion-match-0 unspecified)
+ (bg-completion-match-1 unspecified)
+ (bg-completion-match-2 unspecified)
+ (bg-completion-match-3 unspecified)
+
+;;;; Date mappings
+
+ (date-common cyan)
+ (date-deadline red)
+ (date-event fg-alt)
+ (date-holiday magenta)
+ (date-now fg-main)
+ (date-scheduled yellow-warmer)
+ (date-weekday cyan)
+ (date-weekend red-faint)
+
+;;;; Line number mappings
+
+ (fg-line-number-inactive fg-dim)
+ (fg-line-number-active fg-main)
+ (bg-line-number-inactive bg-dim)
+ (bg-line-number-active bg-active)
+
+;;;; Link mappings
+
+ (fg-link blue-warmer)
+ (bg-link unspecified)
+ (underline-link blue-warmer)
+
+ (fg-link-symbolic cyan)
+ (bg-link-symbolic unspecified)
+ (underline-link-symbolic cyan)
+
+ (fg-link-visited magenta)
+ (bg-link-visited unspecified)
+ (underline-link-visited magenta)
+
+;;;; Mail mappings
+
+ (mail-cite-0 blue-warmer)
+ (mail-cite-1 yellow-cooler)
+ (mail-cite-2 cyan-cooler)
+ (mail-cite-3 red-cooler)
+ (mail-part blue)
+ (mail-recipient magenta-cooler)
+ (mail-subject magenta-warmer)
+ (mail-other magenta-faint)
+
+;;;; Prompt mappings
+
+ (fg-prompt cyan-cooler)
+ (bg-prompt unspecified)
+
+;;;; Prose mappings
+
+ (prose-block fg-dim)
+ (prose-code cyan-cooler)
+ (prose-done green)
+ (prose-macro magenta-cooler)
+ (prose-metadata fg-dim)
+ (prose-metadata-value fg-alt)
+ (prose-table fg-alt)
+ (prose-tag magenta-faint)
+ (prose-todo red)
+ (prose-verbatim magenta-warmer)
+
+;;;; Rainbow mappings
+
+ (rainbow-0 fg-main)
+ (rainbow-1 magenta-intense)
+ (rainbow-2 cyan-intense)
+ (rainbow-3 red-warmer)
+ (rainbow-4 yellow-intense)
+ (rainbow-5 magenta-cooler)
+ (rainbow-6 green-intense)
+ (rainbow-7 blue-warmer)
+ (rainbow-8 magenta-warmer)
+
+;;;; Heading mappings
+
+ (fg-heading-0 cyan-cooler)
+ (fg-heading-1 fg-main)
+ (fg-heading-2 yellow-faint)
+ (fg-heading-3 blue-faint)
+ (fg-heading-4 magenta)
+ (fg-heading-5 green-faint)
+ (fg-heading-6 red-faint)
+ (fg-heading-7 cyan-faint)
+ (fg-heading-8 fg-dim)
+
+ (bg-heading-0 unspecified)
+ (bg-heading-1 unspecified)
+ (bg-heading-2 unspecified)
+ (bg-heading-3 unspecified)
+ (bg-heading-4 unspecified)
+ (bg-heading-5 unspecified)
+ (bg-heading-6 unspecified)
+ (bg-heading-7 unspecified)
+ (bg-heading-8 unspecified)
+
+ (overline-heading-0 unspecified)
+ (overline-heading-1 unspecified)
+ (overline-heading-2 unspecified)
+ (overline-heading-3 unspecified)
+ (overline-heading-4 unspecified)
+ (overline-heading-5 unspecified)
+ (overline-heading-6 unspecified)
+ (overline-heading-7 unspecified)
+ (overline-heading-8 unspecified))
+ "The entire palette of the `modus-vivendi-tinted' theme.
+
+Named colors have the form (COLOR-NAME HEX-VALUE) with the former
+as a symbol and the latter as a string.
+
+Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
+with both as symbols. The latter is a named color that already
+exists in the palette and is associated with a HEX-VALUE.")
+
+ (defcustom modus-vivendi-tinted-palette-overrides nil
+ "Overrides for `modus-vivendi-tinted-palette'.
+
+Mirror the elements of the aforementioned palette, overriding
+their value.
+
+For overrides that are shared across all of the Modus themes,
+refer to `modus-themes-common-palette-overrides'.
+
+Theme-specific overrides take precedence over shared overrides.
+The idea of common overrides is to change semantic color
+mappings, such as to make the cursor red. Wherea theme-specific
+overrides can also be used to change the value of a named color,
+such as what hexadecimal RGB value the red-warmer symbol
+represents."
+ :group 'modus-themes
+ :package-version '(modus-themes . "4.0.0")
+ :version "30.1"
+ :type '(repeat (list symbol (choice symbol string)))
+ :set #'modus-themes--set-option
+ :initialize #'custom-initialize-default
+ :link '(info-link "(modus-themes) Palette overrides"))
+
+ (modus-themes-theme modus-vivendi-tinted
+ modus-vivendi-tinted-palette
+ modus-vivendi-tinted-palette-overrides)
+
+ (provide-theme 'modus-vivendi-tinted))
+
+;;;###theme-autoload
+(put 'modus-vivendi-tinted 'theme-properties '(:background-mode dark :kind color-scheme :family modus))
+
+;;; modus-vivendi-tinted-theme.el ends here
diff --git a/leim/SKK-DIC/SKK-JISYO.L b/leim/SKK-DIC/SKK-JISYO.L
index 2d4f6198984..792f5318269 100644
--- a/leim/SKK-DIC/SKK-JISYO.L
+++ b/leim/SKK-DIC/SKK-JISYO.L
@@ -73335,7 +73335,7 @@ zyklus /륹/ĥ륹/
礯 //
///
/»/
- /;engineer/;(̾)/////;ܻҤʤ///;-//
+ /;engineer/;(̾)/////;ܻҤʤ///;-//
//
Ƥ /Ū/
礦 /Ĺ/
@@ -87687,7 +87687,7 @@ zyklus /륹/ĥ륹/
ۤ /ĸ/
/ͷ/
/з/
- /Ƹ;represent/ݸ;limits.-̵/
+ /Ƹ;reproduce/ݸ;limits.-̵/
󤫤Τ /Ƹǽ/
󤻤 /Ƹ/
Ƥ /Ƹ/
diff --git a/lib-src/Makefile.in b/lib-src/Makefile.in
index b246d832943..5b82cf1151c 100644
--- a/lib-src/Makefile.in
+++ b/lib-src/Makefile.in
@@ -193,18 +193,18 @@ LIBRESOLV=@LIBRESOLV@
## -llockfile if HAVE_LIBLOCKFILE or -lmail if HAVE_LIBMAIL
LIBS_MAIL=@LIBS_MAIL@
## empty or -lrt or -lposix4 if HAVE_CLOCK_GETTIME
-LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
+CLOCK_TIME_LIB = @CLOCK_TIME_LIB@
## empty or -lbcrypt or -ladvapi32
-LIB_GETRANDOM = @LIB_GETRANDOM@
+GETRANDOM_LIB = @GETRANDOM_LIB@
## Whatever libraries are needed for euidaccess
-LIB_EACCESS=@LIB_EACCESS@
+EUIDACCESS_LIBGEN=@EUIDACCESS_LIBGEN@
## Libraries needed for file_has_acl
-LIB_HAS_ACL=@LIB_HAS_ACL@
+FILE_HAS_ACL_LIB=@FILE_HAS_ACL_LIB@
## empty or -lwsock2 for MinGW
LIB_WSOCK32=@LIB_WSOCK32@
## Extra libraries for etags
-LIBS_ETAGS = $(LIB_CLOCK_GETTIME) $(LIB_GETRANDOM)
+LIBS_ETAGS = $(CLOCK_TIME_LIB) $(GETRANDOM_LIB)
HAVE_SECCOMP=@HAVE_SECCOMP@
HAVE_LIBSECCOMP=@HAVE_LIBSECCOMP@
@@ -426,12 +426,14 @@ pop.o: ${srcdir}/pop.c ${srcdir}/pop.h ${srcdir}/../lib/min-max.h $(config_h)
emacsclient${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< \
$(NTLIB) $(LOADLIBES) \
- $(LIB_WSOCK32) $(LIB_EACCESS) $(LIB_HAS_ACL) $(LIBS_ECLIENT) -o $@
+ $(LIB_WSOCK32) $(EUIDACCESS_LIBGEN) \
+ $(FILE_HAS_ACL_LIB) $(LIBS_ECLIENT) \
+ -o $@
emacsclientw${EXEEXT}: ${srcdir}/emacsclient.c $(NTLIB) $(CLIENTRES) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $(CLIENTRES) -mwindows $< \
$(LOADLIBES) \
- $(LIB_WSOCK32) $(LIB_EACCESS) $(LIBS_ECLIENT) -o $@
+ $(LIB_WSOCK32) $(EUIDACCESS_LIBGEN) $(LIBS_ECLIENT) -o $@
be-resources: ${srcdir}/be_resources.cc ${config_h}
$(AM_V_CXXLD)$(CXX) ${ALL_CXXFLAGS} ${HAIKU_LIBS} $< -o $@
diff --git a/lib-src/ebrowse.c b/lib-src/ebrowse.c
index 469e90d04bb..371fa6c938b 100644
--- a/lib-src/ebrowse.c
+++ b/lib-src/ebrowse.c
@@ -31,11 +31,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <min-max.h>
#include <unlocked-io.h>
-/* The SunOS compiler doesn't have SEEK_END. */
-#ifndef SEEK_END
-#define SEEK_END 2
-#endif
-
/* Files are read in chunks of this number of bytes. */
enum { READ_CHUNK_SIZE = 100 * 1024 };
diff --git a/lib-src/etags.c b/lib-src/etags.c
index 749827e0664..2c6b4e7a630 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -7774,7 +7774,7 @@ escape_shell_arg_string (char *str)
#endif
static void
-do_move_file(const char *src_file, const char *dst_file)
+do_move_file (const char *src_file, const char *dst_file)
{
if (rename (src_file, dst_file) == 0)
return;
diff --git a/lib-src/movemail.c b/lib-src/movemail.c
index 8119046a916..a71be8c2099 100644
--- a/lib-src/movemail.c
+++ b/lib-src/movemail.c
@@ -62,6 +62,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <stdlib.h>
#include <errno.h>
#include <time.h>
+#include <timespec.h>
#include <getopt.h>
#include <unistd.h>
@@ -846,7 +847,7 @@ movemail_strftime (char *s, size_t size, char const *format,
static bool
mbx_delimit_begin (FILE *mbf)
{
- time_t now = time (NULL);
+ time_t now = current_timespec ().tv_sec;
struct tm *ltime = localtime (&now);
if (!ltime)
return false;
diff --git a/lib-src/update-game-score.c b/lib-src/update-game-score.c
index 83167f59b8a..4592e14d1d6 100644
--- a/lib-src/update-game-score.c
+++ b/lib-src/update-game-score.c
@@ -185,8 +185,6 @@ main (int argc, char **argv)
ptrdiff_t scorecount, scorealloc;
ptrdiff_t max_scores = MAX_SCORES;
- srand (time (0));
-
while ((c = getopt (argc, argv, "hrm:d:")) != -1)
switch (c)
{
@@ -485,8 +483,8 @@ lock_file (const char *filename, void **state)
return -1;
attempts = 0;
}
-
- sleep ((rand () & 1) + 1);
+ else
+ sleep (1);
}
close (fd);
diff --git a/lib/_Noreturn.h b/lib/_Noreturn.h
index fa15b1b25e8..6ecea98b54a 100644
--- a/lib/_Noreturn.h
+++ b/lib/_Noreturn.h
@@ -26,6 +26,11 @@
AIX system header files and several gnulib header files use precisely
this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
+# elif (defined __clang__ && __clang_major__ < 16 \
+ && defined _GL_WORK_AROUND_LLVM_BUG_59792)
+ /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around
+ that rare LLVM bug, though you may get many false-alarm warnings. */
+# define _Noreturn
# elif ((!defined __cplusplus || defined __clang__) \
&& (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
|| (!defined __STRICT_ANSI__ \
diff --git a/lib/alloca.in.h b/lib/alloca.in.h
index b9ce9ef5603..a1bb3d758dc 100644
--- a/lib/alloca.in.h
+++ b/lib/alloca.in.h
@@ -1,7 +1,7 @@
/* Memory allocation on the stack.
- Copyright (C) 1995, 1999, 2001-2004, 2006-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2023 Free Software Foundation,
+ Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/attribute.h b/lib/attribute.h
index 36b2978bb2c..130644d8798 100644
--- a/lib/attribute.h
+++ b/lib/attribute.h
@@ -32,7 +32,7 @@
/* This file defines two types of attributes:
- * C2x standard attributes. These have macro names that do not begin with
+ * C23 standard attributes. These have macro names that do not begin with
'ATTRIBUTE_'.
* Selected GCC attributes; see:
https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
diff --git a/lib/binary-io.h b/lib/binary-io.h
index dd9829aa88d..6f4db253354 100644
--- a/lib/binary-io.h
+++ b/lib/binary-io.h
@@ -1,6 +1,5 @@
/* Binary mode I/O.
- Copyright (C) 2001, 2003, 2005, 2008-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 2001, 2003, 2005, 2008-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/c-ctype.h b/lib/c-ctype.h
index 9d093f7f722..35ca83d7d43 100644
--- a/lib/c-ctype.h
+++ b/lib/c-ctype.h
@@ -5,8 +5,7 @@
<ctype.h> functions' behaviour depends on the current locale set via
setlocale.
- Copyright (C) 2000-2003, 2006, 2008-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 2000-2003, 2006, 2008-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/c-strcasecmp.c b/lib/c-strcasecmp.c
index c90c6d6a09c..8a958dc4fd9 100644
--- a/lib/c-strcasecmp.c
+++ b/lib/c-strcasecmp.c
@@ -1,6 +1,5 @@
/* c-strcasecmp.c -- case insensitive string comparator in C locale
- Copyright (C) 1998-1999, 2005-2006, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1998-1999, 2005-2006, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/c-strncasecmp.c b/lib/c-strncasecmp.c
index bc30ce0ffc4..4ca8c5f4001 100644
--- a/lib/c-strncasecmp.c
+++ b/lib/c-strncasecmp.c
@@ -1,6 +1,5 @@
/* c-strncasecmp.c -- case insensitive string comparator in C locale
- Copyright (C) 1998-1999, 2005-2006, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1998-1999, 2005-2006, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/careadlinkat.c b/lib/careadlinkat.c
index 1d7db893731..359d497396c 100644
--- a/lib/careadlinkat.c
+++ b/lib/careadlinkat.c
@@ -1,7 +1,7 @@
/* Read symbolic links into a buffer without size limitation, relative to fd.
- Copyright (C) 2001, 2003-2004, 2007, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 2001, 2003-2004, 2007, 2009-2023 Free Software Foundation,
+ Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/cdefs.h b/lib/cdefs.h
index 09a3d19b23b..412f036ce35 100644
--- a/lib/cdefs.h
+++ b/lib/cdefs.h
@@ -140,32 +140,37 @@
#endif
+/* Gnulib avoids these definitions, as they don't work on non-glibc platforms.
+ In particular, __bos and __bos0 are defined differently in the Android libc.
+ */
+#ifndef __GNULIB_CDEFS
+
/* Fortify support. */
-#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
-#define __bos0(ptr) __builtin_object_size (ptr, 0)
+# define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+# define __bos0(ptr) __builtin_object_size (ptr, 0)
/* Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. */
-#if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \
- || __GNUC_PREREQ (12, 0))
-# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0)
-# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1)
-#else
-# define __glibc_objsize0(__o) __bos0 (__o)
-# define __glibc_objsize(__o) __bos (__o)
-#endif
+# if __USE_FORTIFY_LEVEL == 3 && (__glibc_clang_prereq (9, 0) \
+ || __GNUC_PREREQ (12, 0))
+# define __glibc_objsize0(__o) __builtin_dynamic_object_size (__o, 0)
+# define __glibc_objsize(__o) __builtin_dynamic_object_size (__o, 1)
+# else
+# define __glibc_objsize0(__o) __bos0 (__o)
+# define __glibc_objsize(__o) __bos (__o)
+# endif
/* Compile time conditions to choose between the regular, _chk and _chk_warn
variants. These conditions should get evaluated to constant and optimized
away. */
-#define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s))
-#define __glibc_unsigned_or_positive(__l) \
+# define __glibc_safe_len_cond(__l, __s, __osz) ((__l) <= (__osz) / (__s))
+# define __glibc_unsigned_or_positive(__l) \
((__typeof (__l)) 0 < (__typeof (__l)) -1 \
|| (__builtin_constant_p (__l) && (__l) > 0))
/* Length is known to be safe at compile time if the __L * __S <= __OBJSZ
condition can be folded to a constant and if it is true, or unknown (-1) */
-#define __glibc_safe_or_unknown_len(__l, __s, __osz) \
+# define __glibc_safe_or_unknown_len(__l, __s, __osz) \
((__osz) == (__SIZE_TYPE__) -1 \
|| (__glibc_unsigned_or_positive (__l) \
&& __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
@@ -175,7 +180,7 @@
/* Conversely, we know at compile time that the length is unsafe if the
__L * __S <= __OBJSZ condition can be folded to a constant and if it is
false. */
-#define __glibc_unsafe_len(__l, __s, __osz) \
+# define __glibc_unsafe_len(__l, __s, __osz) \
(__glibc_unsigned_or_positive (__l) \
&& __builtin_constant_p (__glibc_safe_len_cond ((__SIZE_TYPE__) (__l), \
__s, __osz)) \
@@ -184,7 +189,7 @@
/* Fortify function f. __f_alias, __f_chk and __f_chk_warn must be
declared. */
-#define __glibc_fortify(f, __l, __s, __osz, ...) \
+# define __glibc_fortify(f, __l, __s, __osz, ...) \
(__glibc_safe_or_unknown_len (__l, __s, __osz) \
? __ ## f ## _alias (__VA_ARGS__) \
: (__glibc_unsafe_len (__l, __s, __osz) \
@@ -194,13 +199,16 @@
/* Fortify function f, where object size argument passed to f is the number of
elements and not total size. */
-#define __glibc_fortify_n(f, __l, __s, __osz, ...) \
+# define __glibc_fortify_n(f, __l, __s, __osz, ...) \
(__glibc_safe_or_unknown_len (__l, __s, __osz) \
? __ ## f ## _alias (__VA_ARGS__) \
: (__glibc_unsafe_len (__l, __s, __osz) \
? __ ## f ## _chk_warn (__VA_ARGS__, (__osz) / (__s)) \
: __ ## f ## _chk (__VA_ARGS__, (__osz) / (__s)))) \
+#endif
+
+
#if __GNUC_PREREQ (4,3)
# define __warnattr(msg) __attribute__((__warning__ (msg)))
# define __errordecl(name, msg) \
diff --git a/lib/cloexec.c b/lib/cloexec.c
index ba53d0020b1..e4cecbd2e8a 100644
--- a/lib/cloexec.c
+++ b/lib/cloexec.c
@@ -1,7 +1,6 @@
/* cloexec.c - set or clear the close-on-exec descriptor flag
- Copyright (C) 1991, 2004-2006, 2009-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 1991, 2004-2006, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/close-stream.c b/lib/close-stream.c
index b68b30e6ff0..ab686bac2ae 100644
--- a/lib/close-stream.c
+++ b/lib/close-stream.c
@@ -1,7 +1,6 @@
/* Close a stream, with nicer error checking than fclose's.
- Copyright (C) 1998-2002, 2004, 2006-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 1998-2002, 2004, 2006-2023 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/diffseq.h b/lib/diffseq.h
index ad3f258ab6b..dfaf4f295e8 100644
--- a/lib/diffseq.h
+++ b/lib/diffseq.h
@@ -1,7 +1,7 @@
/* Analyze differences between two vectors.
- Copyright (C) 1988-1989, 1992-1995, 2001-2004, 2006-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1988-1989, 1992-1995, 2001-2004, 2006-2023 Free Software
+ Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/dup2.c b/lib/dup2.c
index 1597d9d1e6e..7d197ca3123 100644
--- a/lib/dup2.c
+++ b/lib/dup2.c
@@ -1,7 +1,6 @@
/* Duplicate an open file descriptor to a specified file descriptor.
- Copyright (C) 1999, 2004-2007, 2009-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 1999, 2004-2007, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/file-has-acl.c b/lib/file-has-acl.c
index 8c1d26ec7d4..b31a2ea2523 100644
--- a/lib/file-has-acl.c
+++ b/lib/file-has-acl.c
@@ -29,9 +29,98 @@
#include "acl-internal.h"
-#if GETXATTR_WITH_POSIX_ACLS
+#if USE_ACL && GETXATTR_WITH_POSIX_ACLS
+# include <string.h>
+# include <arpa/inet.h>
# include <sys/xattr.h>
# include <linux/xattr.h>
+# ifndef XATTR_NAME_NFSV4_ACL
+# define XATTR_NAME_NFSV4_ACL "system.nfs4_acl"
+# endif
+
+enum {
+ /* ACE4_ACCESS_ALLOWED_ACE_TYPE = 0x00000000, */
+ ACE4_ACCESS_DENIED_ACE_TYPE = 0x00000001,
+ ACE4_IDENTIFIER_GROUP = 0x00000040
+};
+
+/* Return 1 if given ACL in XDR format is non-trivial, 0 if it is trivial.
+ -1 upon failure to determine it. Possibly change errno. Assume that
+ the ACL is valid, except avoid undefined behavior even if invalid.
+
+ See <https://linux.die.net/man/5/nfs4_acl>. The NFSv4 acls are
+ defined in Internet RFC 7530 and as such, every NFSv4 server
+ supporting ACLs should support NFSv4 ACLs (they differ from from
+ POSIX draft ACLs). The ACLs can be obtained via the
+ nfsv4-acl-tools, e.g., the nfs4_getfacl command. Gnulib provides
+ only basic support of NFSv4 ACLs, i.e., recognize trivial vs
+ nontrivial ACLs. */
+
+static int
+acl_nfs4_nontrivial (uint32_t *xattr, ssize_t nbytes)
+{
+ enum { BYTES_PER_NETWORK_UINT = 4};
+
+ /* Grab the number of aces in the acl. */
+ nbytes -= BYTES_PER_NETWORK_UINT;
+ if (nbytes < 0)
+ return -1;
+ uint32_t num_aces = ntohl (*xattr++);
+ if (6 < num_aces)
+ return 1;
+ int ace_found = 0;
+
+ for (int ace_n = 0; ace_n < num_aces; ace_n++)
+ {
+ /* Get the acl type and flag. Skip the mask; it's too risky to
+ test it and it does not seem to be needed. Get the wholen. */
+ nbytes -= 4 * BYTES_PER_NETWORK_UINT;
+ if (nbytes < 0)
+ return -1;
+ uint32_t type = ntohl (xattr[0]);
+ uint32_t flag = ntohl (xattr[1]);
+ uint32_t wholen = ntohl (xattr[3]);
+ xattr += 4;
+ int whowords = (wholen / BYTES_PER_NETWORK_UINT
+ + (wholen % BYTES_PER_NETWORK_UINT != 0));
+ int64_t wholen4 = whowords;
+ wholen4 *= BYTES_PER_NETWORK_UINT;
+
+ /* Trivial ACLs have only ACE4_ACCESS_ALLOWED_ACE_TYPE or
+ ACE4_ACCESS_DENIED_ACE_TYPE. */
+ if (ACE4_ACCESS_DENIED_ACE_TYPE < type)
+ return 1;
+
+ /* RFC 7530 says FLAG should be 0, but be generous to NetApp and
+ also accept the group flag. */
+ if (flag & ~ACE4_IDENTIFIER_GROUP)
+ return 1;
+
+ /* Get the who string. Check NBYTES - WHOLEN4 before storing
+ into NBYTES, to avoid truncation on conversion. */
+ if (nbytes - wholen4 < 0)
+ return -1;
+ nbytes -= wholen4;
+
+ /* For a trivial ACL, max 6 (typically 3) ACEs, 3 allow, 3 deny.
+ Check that there is at most one ACE of each TYPE and WHO. */
+ int who2
+ = (wholen == 6 && memcmp (xattr, "OWNER@", 6) == 0 ? 0
+ : wholen == 6 && memcmp (xattr, "GROUP@", 6) == 0 ? 2
+ : wholen == 9 && memcmp (xattr, "EVERYONE@", 9) == 0 ? 4
+ : -1);
+ if (who2 < 0)
+ return 1;
+ int ace_found_bit = 1 << (who2 | type);
+ if (ace_found & ace_found_bit)
+ return 1;
+ ace_found |= ace_found_bit;
+
+ xattr += whowords;
+ }
+
+ return 0;
+}
#endif
/* Return 1 if NAME has a nontrivial access control list,
@@ -51,6 +140,7 @@ file_has_acl (char const *name, struct stat const *sb)
# if GETXATTR_WITH_POSIX_ACLS
ssize_t ret;
+ int initial_errno = errno;
ret = getxattr (name, XATTR_NAME_POSIX_ACL_ACCESS, NULL, 0);
if (ret < 0 && errno == ENODATA)
@@ -68,6 +158,35 @@ file_has_acl (char const *name, struct stat const *sb)
}
if (ret < 0)
+ {
+ /* Check for NFSv4 ACLs. The max length of a trivial
+ ACL is 6 words for owner, 6 for group, 7 for everyone,
+ all times 2 because there are both allow and deny ACEs.
+ There are 6 words for owner because of type, flag, mask,
+ wholen, "OWNER@"+pad and similarly for group; everyone is
+ another word to hold "EVERYONE@". */
+ uint32_t xattr[2 * (6 + 6 + 7)];
+
+ ret = getxattr (name, XATTR_NAME_NFSV4_ACL, xattr, sizeof xattr);
+ if (ret < 0)
+ switch (errno)
+ {
+ case ENODATA: return 0;
+ case ERANGE : return 1; /* ACL must be nontrivial. */
+ }
+ else
+ {
+ /* It looks like a trivial ACL, but investigate further. */
+ ret = acl_nfs4_nontrivial (xattr, ret);
+ if (ret < 0)
+ {
+ errno = EINVAL;
+ return ret;
+ }
+ errno = initial_errno;
+ }
+ }
+ if (ret < 0)
return - acl_errno_valid (errno);
return ret;
diff --git a/lib/filemode.h b/lib/filemode.h
index d456cc585b3..15a8dcc3760 100644
--- a/lib/filemode.h
+++ b/lib/filemode.h
@@ -1,7 +1,7 @@
/* Make a string describing file modes.
- Copyright (C) 1998-1999, 2003, 2006, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1998-1999, 2003, 2006, 2009-2023 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/fpending.c b/lib/fpending.c
index df3cd85f3a6..e57155e586e 100644
--- a/lib/fpending.c
+++ b/lib/fpending.c
@@ -1,6 +1,6 @@
/* fpending.c -- return the number of pending output bytes on a stream
- Copyright (C) 2000, 2004, 2006-2007, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 2000, 2004, 2006-2007, 2009-2023 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@ __fpending (FILE *fp)
return fp->_IO_write_ptr - fp->_IO_write_base;
#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin < 1.7.34, Minix 3, Android */
- return fp->_p - fp->_bf._base;
+ return fp_->_p - fp_->_bf._base;
#elif defined __EMX__ /* emx+gcc */
return fp->_ptr - fp->_buffer;
#elif defined __minix /* Minix */
diff --git a/lib/fpending.h b/lib/fpending.h
index fe310384f7e..5e860db6810 100644
--- a/lib/fpending.h
+++ b/lib/fpending.h
@@ -1,7 +1,7 @@
/* Declare __fpending.
- Copyright (C) 2000, 2003, 2005-2006, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 2000, 2003, 2005-2006, 2009-2023 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/fsusage.c b/lib/fsusage.c
index 2be120a06de..f6f4b1c35fd 100644
--- a/lib/fsusage.c
+++ b/lib/fsusage.c
@@ -1,7 +1,7 @@
/* fsusage.c -- return space usage of mounted file systems
- Copyright (C) 1991-1992, 1996, 1998-1999, 2002-2006, 2009-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1991-1992, 1996, 1998-1999, 2002-2006, 2009-2023 Free Software
+ Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/getgroups.c b/lib/getgroups.c
index 6a2bda8d71e..93829d3b15e 100644
--- a/lib/getgroups.c
+++ b/lib/getgroups.c
@@ -1,7 +1,6 @@
/* provide consistent interface to getgroups for systems that don't allow N==0
- Copyright (C) 1996, 1999, 2003, 2006-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 1996, 1999, 2003, 2006-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/getloadavg.c b/lib/getloadavg.c
index 37fcea0a76b..59b53e79980 100644
--- a/lib/getloadavg.c
+++ b/lib/getloadavg.c
@@ -1,7 +1,7 @@
/* Get the system load averages.
- Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1985-1989, 1991-1995, 1997, 1999-2000, 2003-2023 Free Software
+ Foundation, Inc.
NOTE: The canonical source of this file is maintained with gnulib.
Bugs can be reported to bug-gnulib@gnu.org.
diff --git a/lib/getopt-pfx-core.h b/lib/getopt-pfx-core.h
index 3a2fde5ad4f..095e3930feb 100644
--- a/lib/getopt-pfx-core.h
+++ b/lib/getopt-pfx-core.h
@@ -47,7 +47,7 @@
# define optind __GETOPT_ID (optind)
# define optopt __GETOPT_ID (optopt)
-/* Work around a a problem on macOS, which declares getopt with a
+/* Work around a problem on macOS, which declares getopt with a
trailing __DARWIN_ALIAS(getopt) that would expand to something like
__asm("_" "rpl_getopt" "$UNIX2003") were it not for the following
hack to suppress the macOS declaration <https://bugs.gnu.org/40205>. */
diff --git a/lib/gettext.h b/lib/gettext.h
index 582886f9f51..d0462c47e17 100644
--- a/lib/gettext.h
+++ b/lib/gettext.h
@@ -1,6 +1,6 @@
/* Convenience header for conditional use of GNU <libintl.h>.
- Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2023 Free Software
+ Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/gettime.c b/lib/gettime.c
index cfba830478e..f86cc4efbff 100644
--- a/lib/gettime.c
+++ b/lib/gettime.c
@@ -1,7 +1,6 @@
/* gettime -- get the system clock
- Copyright (C) 2002, 2004-2007, 2009-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 2002, 2004-2007, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/gettimeofday.c b/lib/gettimeofday.c
index 7207c851272..d896ec132b9 100644
--- a/lib/gettimeofday.c
+++ b/lib/gettimeofday.c
@@ -1,7 +1,6 @@
/* Provide gettimeofday for systems that don't have it or for which it's broken.
- Copyright (C) 2001-2003, 2005-2007, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 2001-2003, 2005-2007, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/gnulib.mk.in b/lib/gnulib.mk.in
index 9ab4b741595..47d08a5e27f 100644
--- a/lib/gnulib.mk.in
+++ b/lib/gnulib.mk.in
@@ -68,6 +68,7 @@
# --avoid=wchar \
# --avoid=wcrtomb \
# --avoid=wctype-h \
+# alignasof \
# alloca-opt \
# binary-io \
# byteswap \
@@ -93,7 +94,6 @@
# dup2 \
# environ \
# execinfo \
-# explicit_bzero \
# faccessat \
# fchmodat \
# fcntl \
@@ -126,6 +126,7 @@
# memmem-simple \
# mempcpy \
# memrchr \
+# memset_explicit \
# minmax \
# mkostemp \
# mktime \
@@ -145,7 +146,6 @@
# socklen \
# stat-time \
# std-gnu11 \
-# stdalign \
# stdbool \
# stddef \
# stdio \
@@ -156,7 +156,7 @@
# sys_stat \
# sys_time \
# tempname \
-# time \
+# time-h \
# time_r \
# time_rz \
# timegm \
@@ -204,6 +204,7 @@ CFLAGS_SOUND = @CFLAGS_SOUND@
CHECK_STRUCTS = @CHECK_STRUCTS@
CLIENTRES = @CLIENTRES@
CLIENTW = @CLIENTW@
+CLOCK_TIME_LIB = @CLOCK_TIME_LIB@
CM_OBJ = @CM_OBJ@
COM_ERRLIB = @COM_ERRLIB@
CPP = @CPP@
@@ -238,8 +239,10 @@ ENOLINK_VALUE = @ENOLINK_VALUE@
EOVERFLOW_HIDDEN = @EOVERFLOW_HIDDEN@
EOVERFLOW_VALUE = @EOVERFLOW_VALUE@
ERRNO_H = @ERRNO_H@
+EUIDACCESS_LIBGEN = @EUIDACCESS_LIBGEN@
EXECINFO_H = @EXECINFO_H@
EXEEXT = @EXEEXT@
+FILE_HAS_ACL_LIB = @FILE_HAS_ACL_LIB@
FIND_DELETE = @FIND_DELETE@
FIRSTFILE_OBJ = @FIRSTFILE_OBJ@
FONTCONFIG_CFLAGS = @FONTCONFIG_CFLAGS@
@@ -253,6 +256,7 @@ GETADDRINFO_A_LIBS = @GETADDRINFO_A_LIBS@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GETOPT_CDEFS_H = @GETOPT_CDEFS_H@
GETOPT_H = @GETOPT_H@
+GETRANDOM_LIB = @GETRANDOM_LIB@
GFILENOTIFY_CFLAGS = @GFILENOTIFY_CFLAGS@
GFILENOTIFY_LIBS = @GFILENOTIFY_LIBS@
GL_CFLAG_ALLOW_WARNINGS = @GL_CFLAG_ALLOW_WARNINGS@
@@ -264,7 +268,6 @@ GL_COND_OBJ_DIRFD_CONDITION = @GL_COND_OBJ_DIRFD_CONDITION@
GL_COND_OBJ_DUP2_CONDITION = @GL_COND_OBJ_DUP2_CONDITION@
GL_COND_OBJ_EUIDACCESS_CONDITION = @GL_COND_OBJ_EUIDACCESS_CONDITION@
GL_COND_OBJ_EXECINFO_CONDITION = @GL_COND_OBJ_EXECINFO_CONDITION@
-GL_COND_OBJ_EXPLICIT_BZERO_CONDITION = @GL_COND_OBJ_EXPLICIT_BZERO_CONDITION@
GL_COND_OBJ_FACCESSAT_CONDITION = @GL_COND_OBJ_FACCESSAT_CONDITION@
GL_COND_OBJ_FCHMODAT_CONDITION = @GL_COND_OBJ_FCHMODAT_CONDITION@
GL_COND_OBJ_FCNTL_CONDITION = @GL_COND_OBJ_FCNTL_CONDITION@
@@ -286,6 +289,7 @@ GL_COND_OBJ_LCHMOD_CONDITION = @GL_COND_OBJ_LCHMOD_CONDITION@
GL_COND_OBJ_LSTAT_CONDITION = @GL_COND_OBJ_LSTAT_CONDITION@
GL_COND_OBJ_MEMPCPY_CONDITION = @GL_COND_OBJ_MEMPCPY_CONDITION@
GL_COND_OBJ_MEMRCHR_CONDITION = @GL_COND_OBJ_MEMRCHR_CONDITION@
+GL_COND_OBJ_MEMSET_EXPLICIT_CONDITION = @GL_COND_OBJ_MEMSET_EXPLICIT_CONDITION@
GL_COND_OBJ_MINI_GMP_GNULIB_CONDITION = @GL_COND_OBJ_MINI_GMP_GNULIB_CONDITION@
GL_COND_OBJ_MKOSTEMP_CONDITION = @GL_COND_OBJ_MKOSTEMP_CONDITION@
GL_COND_OBJ_NANOSLEEP_CONDITION = @GL_COND_OBJ_NANOSLEEP_CONDITION@
@@ -321,7 +325,6 @@ GL_GENERATE_GMP_H_CONDITION = @GL_GENERATE_GMP_H_CONDITION@
GL_GENERATE_IEEE754_H_CONDITION = @GL_GENERATE_IEEE754_H_CONDITION@
GL_GENERATE_LIMITS_H_CONDITION = @GL_GENERATE_LIMITS_H_CONDITION@
GL_GENERATE_MINI_GMP_H_CONDITION = @GL_GENERATE_MINI_GMP_H_CONDITION@
-GL_GENERATE_STDALIGN_H_CONDITION = @GL_GENERATE_STDALIGN_H_CONDITION@
GL_GENERATE_STDCKDINT_H_CONDITION = @GL_GENERATE_STDCKDINT_H_CONDITION@
GL_GENERATE_STDDEF_H_CONDITION = @GL_GENERATE_STDDEF_H_CONDITION@
GL_GENERATE_STDINT_H_CONDITION = @GL_GENERATE_STDINT_H_CONDITION@
@@ -407,6 +410,7 @@ GL_GNULIB_GETOPT_POSIX = @GL_GNULIB_GETOPT_POSIX@
GL_GNULIB_GETPAGESIZE = @GL_GNULIB_GETPAGESIZE@
GL_GNULIB_GETPASS = @GL_GNULIB_GETPASS@
GL_GNULIB_GETPASS_GNU = @GL_GNULIB_GETPASS_GNU@
+GL_GNULIB_GETPROGNAME = @GL_GNULIB_GETPROGNAME@
GL_GNULIB_GETRANDOM = @GL_GNULIB_GETRANDOM@
GL_GNULIB_GETSUBOPT = @GL_GNULIB_GETSUBOPT@
GL_GNULIB_GETTIMEOFDAY = @GL_GNULIB_GETTIMEOFDAY@
@@ -485,6 +489,7 @@ GL_GNULIB_MEMCHR = @GL_GNULIB_MEMCHR@
GL_GNULIB_MEMMEM = @GL_GNULIB_MEMMEM@
GL_GNULIB_MEMPCPY = @GL_GNULIB_MEMPCPY@
GL_GNULIB_MEMRCHR = @GL_GNULIB_MEMRCHR@
+GL_GNULIB_MEMSET_EXPLICIT = @GL_GNULIB_MEMSET_EXPLICIT@
GL_GNULIB_MKDIR = @GL_GNULIB_MKDIR@
GL_GNULIB_MKDIRAT = @GL_GNULIB_MKDIRAT@
GL_GNULIB_MKDTEMP = @GL_GNULIB_MKDTEMP@
@@ -590,6 +595,7 @@ GL_GNULIB_STRVERSCMP = @GL_GNULIB_STRVERSCMP@
GL_GNULIB_SYMLINK = @GL_GNULIB_SYMLINK@
GL_GNULIB_SYMLINKAT = @GL_GNULIB_SYMLINKAT@
GL_GNULIB_SYSTEM_POSIX = @GL_GNULIB_SYSTEM_POSIX@
+GL_GNULIB_TIME = @GL_GNULIB_TIME@
GL_GNULIB_TIMEGM = @GL_GNULIB_TIMEGM@
GL_GNULIB_TIMESPEC_GET = @GL_GNULIB_TIMESPEC_GET@
GL_GNULIB_TIMESPEC_GETRES = @GL_GNULIB_TIMESPEC_GETRES@
@@ -674,6 +680,7 @@ HAVE_DECL_GETLOGIN = @HAVE_DECL_GETLOGIN@
HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
HAVE_DECL_GETPAGESIZE = @HAVE_DECL_GETPAGESIZE@
HAVE_DECL_GETUSERSHELL = @HAVE_DECL_GETUSERSHELL@
+HAVE_DECL_GETW = @HAVE_DECL_GETW@
HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
HAVE_DECL_INITSTATE = @HAVE_DECL_INITSTATE@
@@ -682,6 +689,7 @@ HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
HAVE_DECL_OBSTACK_PRINTF = @HAVE_DECL_OBSTACK_PRINTF@
HAVE_DECL_POSIX_SPAWN_SETSID = @HAVE_DECL_POSIX_SPAWN_SETSID@
+HAVE_DECL_PUTW = @HAVE_DECL_PUTW@
HAVE_DECL_SETENV = @HAVE_DECL_SETENV@
HAVE_DECL_SETHOSTNAME = @HAVE_DECL_SETHOSTNAME@
HAVE_DECL_SETSTATE = @HAVE_DECL_SETSTATE@
@@ -727,6 +735,7 @@ HAVE_GETLOGIN = @HAVE_GETLOGIN@
HAVE_GETOPT_H = @HAVE_GETOPT_H@
HAVE_GETPAGESIZE = @HAVE_GETPAGESIZE@
HAVE_GETPASS = @HAVE_GETPASS@
+HAVE_GETPROGNAME = @HAVE_GETPROGNAME@
HAVE_GETRANDOM = @HAVE_GETRANDOM@
HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
HAVE_GETTIMEOFDAY = @HAVE_GETTIMEOFDAY@
@@ -734,6 +743,8 @@ HAVE_GETUMASK = @HAVE_GETUMASK@
HAVE_GRANTPT = @HAVE_GRANTPT@
HAVE_GROUP_MEMBER = @HAVE_GROUP_MEMBER@
HAVE_GSETTINGS = @HAVE_GSETTINGS@
+HAVE_IMAXABS = @HAVE_IMAXABS@
+HAVE_IMAXDIV = @HAVE_IMAXDIV@
HAVE_IMAXDIV_T = @HAVE_IMAXDIV_T@
HAVE_INITSTATE = @HAVE_INITSTATE@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
@@ -749,6 +760,7 @@ HAVE_MAX_ALIGN_T = @HAVE_MAX_ALIGN_T@
HAVE_MBSLEN = @HAVE_MBSLEN@
HAVE_MBTOWC = @HAVE_MBTOWC@
HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MEMSET_EXPLICIT = @HAVE_MEMSET_EXPLICIT@
HAVE_MKDIRAT = @HAVE_MKDIRAT@
HAVE_MKDTEMP = @HAVE_MKDTEMP@
HAVE_MKFIFO = @HAVE_MKFIFO@
@@ -935,13 +947,13 @@ LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
LIB_EACCESS = @LIB_EACCESS@
LIB_EXECINFO = @LIB_EXECINFO@
LIB_GETRANDOM = @LIB_GETRANDOM@
-LIB_HAS_ACL = @LIB_HAS_ACL@
LIB_MATH = @LIB_MATH@
LIB_NANOSLEEP = @LIB_NANOSLEEP@
LIB_PTHREAD = @LIB_PTHREAD@
LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
LIB_TIMER_TIME = @LIB_TIMER_TIME@
LIB_WSOCK32 = @LIB_WSOCK32@
+LIB_XATTR = @LIB_XATTR@
LIMITS_H = @LIMITS_H@
LN_S_FILEONLY = @LN_S_FILEONLY@
LTLIBGMP = @LTLIBGMP@
@@ -955,6 +967,7 @@ MKDIR_P = @MKDIR_P@
MODULES_OBJ = @MODULES_OBJ@
MODULES_SECONDARY_SUFFIX = @MODULES_SECONDARY_SUFFIX@
MODULES_SUFFIX = @MODULES_SUFFIX@
+NANOSLEEP_LIB = @NANOSLEEP_LIB@
NATIVE_COMPILATION_AOT = @NATIVE_COMPILATION_AOT@
NEXT_ASSERT_H = @NEXT_ASSERT_H@
NEXT_AS_FIRST_DIRECTIVE_ASSERT_H = @NEXT_AS_FIRST_DIRECTIVE_ASSERT_H@
@@ -1031,7 +1044,9 @@ PRE_ALLOC_OBJ = @PRE_ALLOC_OBJ@
PRIPTR_PREFIX = @PRIPTR_PREFIX@
PROFILING_CFLAGS = @PROFILING_CFLAGS@
PTHREAD_H_DEFINES_STRUCT_TIMESPEC = @PTHREAD_H_DEFINES_STRUCT_TIMESPEC@
+PTHREAD_SIGMASK_LIB = @PTHREAD_SIGMASK_LIB@
PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+QCOPY_ACL_LIB = @QCOPY_ACL_LIB@
RALLOC_OBJ = @RALLOC_OBJ@
RANLIB = @RANLIB@
REPLACE_ACCESS = @REPLACE_ACCESS@
@@ -1050,6 +1065,7 @@ REPLACE_DIRFD = @REPLACE_DIRFD@
REPLACE_DPRINTF = @REPLACE_DPRINTF@
REPLACE_DUP = @REPLACE_DUP@
REPLACE_DUP2 = @REPLACE_DUP2@
+REPLACE_DUP3 = @REPLACE_DUP3@
REPLACE_EXECL = @REPLACE_EXECL@
REPLACE_EXECLE = @REPLACE_EXECLE@
REPLACE_EXECLP = @REPLACE_EXECLP@
@@ -1062,6 +1078,7 @@ REPLACE_FCHMODAT = @REPLACE_FCHMODAT@
REPLACE_FCHOWNAT = @REPLACE_FCHOWNAT@
REPLACE_FCLOSE = @REPLACE_FCLOSE@
REPLACE_FCNTL = @REPLACE_FCNTL@
+REPLACE_FDATASYNC = @REPLACE_FDATASYNC@
REPLACE_FDOPEN = @REPLACE_FDOPEN@
REPLACE_FDOPENDIR = @REPLACE_FDOPENDIR@
REPLACE_FFLUSH = @REPLACE_FFLUSH@
@@ -1084,15 +1101,21 @@ REPLACE_GETCWD = @REPLACE_GETCWD@
REPLACE_GETDELIM = @REPLACE_GETDELIM@
REPLACE_GETDOMAINNAME = @REPLACE_GETDOMAINNAME@
REPLACE_GETDTABLESIZE = @REPLACE_GETDTABLESIZE@
+REPLACE_GETENTROPY = @REPLACE_GETENTROPY@
REPLACE_GETGROUPS = @REPLACE_GETGROUPS@
REPLACE_GETLINE = @REPLACE_GETLINE@
+REPLACE_GETLOADAVG = @REPLACE_GETLOADAVG@
REPLACE_GETLOGIN_R = @REPLACE_GETLOGIN_R@
REPLACE_GETPAGESIZE = @REPLACE_GETPAGESIZE@
REPLACE_GETPASS = @REPLACE_GETPASS@
REPLACE_GETPASS_FOR_GETPASS_GNU = @REPLACE_GETPASS_FOR_GETPASS_GNU@
+REPLACE_GETPROGNAME = @REPLACE_GETPROGNAME@
REPLACE_GETRANDOM = @REPLACE_GETRANDOM@
+REPLACE_GETSUBOPT = @REPLACE_GETSUBOPT@
REPLACE_GETTIMEOFDAY = @REPLACE_GETTIMEOFDAY@
REPLACE_GMTIME = @REPLACE_GMTIME@
+REPLACE_IMAXABS = @REPLACE_IMAXABS@
+REPLACE_IMAXDIV = @REPLACE_IMAXDIV@
REPLACE_INITSTATE = @REPLACE_INITSTATE@
REPLACE_ISATTY = @REPLACE_ISATTY@
REPLACE_LCHOWN = @REPLACE_LCHOWN@
@@ -1107,11 +1130,14 @@ REPLACE_MALLOC_FOR_MALLOC_POSIX = @REPLACE_MALLOC_FOR_MALLOC_POSIX@
REPLACE_MBTOWC = @REPLACE_MBTOWC@
REPLACE_MEMCHR = @REPLACE_MEMCHR@
REPLACE_MEMMEM = @REPLACE_MEMMEM@
+REPLACE_MEMPCPY = @REPLACE_MEMPCPY@
REPLACE_MKDIR = @REPLACE_MKDIR@
REPLACE_MKFIFO = @REPLACE_MKFIFO@
REPLACE_MKFIFOAT = @REPLACE_MKFIFOAT@
REPLACE_MKNOD = @REPLACE_MKNOD@
REPLACE_MKNODAT = @REPLACE_MKNODAT@
+REPLACE_MKOSTEMP = @REPLACE_MKOSTEMP@
+REPLACE_MKOSTEMPS = @REPLACE_MKOSTEMPS@
REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
REPLACE_MKTIME = @REPLACE_MKTIME@
REPLACE_NANOSLEEP = @REPLACE_NANOSLEEP@
@@ -1121,8 +1147,10 @@ REPLACE_OPEN = @REPLACE_OPEN@
REPLACE_OPENAT = @REPLACE_OPENAT@
REPLACE_OPENDIR = @REPLACE_OPENDIR@
REPLACE_PERROR = @REPLACE_PERROR@
+REPLACE_PIPE2 = @REPLACE_PIPE2@
REPLACE_POPEN = @REPLACE_POPEN@
REPLACE_POSIX_MEMALIGN = @REPLACE_POSIX_MEMALIGN@
+REPLACE_POSIX_OPENPT = @REPLACE_POSIX_OPENPT@
REPLACE_PREAD = @REPLACE_PREAD@
REPLACE_PRINTF = @REPLACE_PRINTF@
REPLACE_PSELECT = @REPLACE_PSELECT@
@@ -1148,6 +1176,7 @@ REPLACE_RENAMEAT = @REPLACE_RENAMEAT@
REPLACE_RMDIR = @REPLACE_RMDIR@
REPLACE_SELECT = @REPLACE_SELECT@
REPLACE_SETENV = @REPLACE_SETENV@
+REPLACE_SETHOSTNAME = @REPLACE_SETHOSTNAME@
REPLACE_SETSTATE = @REPLACE_SETSTATE@
REPLACE_SLEEP = @REPLACE_SLEEP@
REPLACE_SNPRINTF = @REPLACE_SNPRINTF@
@@ -1155,6 +1184,7 @@ REPLACE_SPRINTF = @REPLACE_SPRINTF@
REPLACE_STAT = @REPLACE_STAT@
REPLACE_STDIO_READ_FUNCS = @REPLACE_STDIO_READ_FUNCS@
REPLACE_STDIO_WRITE_FUNCS = @REPLACE_STDIO_WRITE_FUNCS@
+REPLACE_STPCPY = @REPLACE_STPCPY@
REPLACE_STPNCPY = @REPLACE_STPNCPY@
REPLACE_STRCASESTR = @REPLACE_STRCASESTR@
REPLACE_STRCHRNUL = @REPLACE_STRCHRNUL@
@@ -1180,7 +1210,9 @@ REPLACE_STRTOUMAX = @REPLACE_STRTOUMAX@
REPLACE_STRUCT_TIMEVAL = @REPLACE_STRUCT_TIMEVAL@
REPLACE_SYMLINK = @REPLACE_SYMLINK@
REPLACE_SYMLINKAT = @REPLACE_SYMLINKAT@
+REPLACE_TIME = @REPLACE_TIME@
REPLACE_TIMEGM = @REPLACE_TIMEGM@
+REPLACE_TIMESPEC_GET = @REPLACE_TIMESPEC_GET@
REPLACE_TMPFILE = @REPLACE_TMPFILE@
REPLACE_TRUNCATE = @REPLACE_TRUNCATE@
REPLACE_TTYNAME_R = @REPLACE_TTYNAME_R@
@@ -1198,6 +1230,7 @@ REPLACE_VSNPRINTF = @REPLACE_VSNPRINTF@
REPLACE_VSPRINTF = @REPLACE_VSPRINTF@
REPLACE_WCTOMB = @REPLACE_WCTOMB@
REPLACE_WRITE = @REPLACE_WRITE@
+REPLACE__EXIT = @REPLACE__EXIT@
RSVG_CFLAGS = @RSVG_CFLAGS@
RSVG_LIBS = @RSVG_LIBS@
SEPCHAR = @SEPCHAR@
@@ -1210,7 +1243,6 @@ SIZEOF_LONG = @SIZEOF_LONG@
SIZE_T_SUFFIX = @SIZE_T_SUFFIX@
SMALL_JA_DIC = @SMALL_JA_DIC@
SQLITE3_LIBS = @SQLITE3_LIBS@
-STDALIGN_H = @STDALIGN_H@
STDCKDINT_H = @STDCKDINT_H@
STDDEF_H = @STDDEF_H@
STDINT_H = @STDINT_H@
@@ -1218,6 +1250,7 @@ SUBDIR_MAKEFILES_IN = @SUBDIR_MAKEFILES_IN@
SYSTEM_TYPE = @SYSTEM_TYPE@
SYS_TIME_H_DEFINES_STRUCT_TIMESPEC = @SYS_TIME_H_DEFINES_STRUCT_TIMESPEC@
TERMCAP_OBJ = @TERMCAP_OBJ@
+TIMER_TIME_LIB = @TIMER_TIME_LIB@
TIME_H_DEFINES_STRUCT_TIMESPEC = @TIME_H_DEFINES_STRUCT_TIMESPEC@
TIME_H_DEFINES_TIME_UTC = @TIME_H_DEFINES_TIME_UTC@
TOOLKIT_LIBW = @TOOLKIT_LIBW@
@@ -1857,16 +1890,6 @@ EXTRA_DIST += execinfo.in.h
endif
## end gnulib module execinfo
-## begin gnulib module explicit_bzero
-ifeq (,$(OMIT_GNULIB_MODULE_explicit_bzero))
-
-ifneq (,$(GL_COND_OBJ_EXPLICIT_BZERO_CONDITION))
-libgnu_a_SOURCES += explicit_bzero.c
-endif
-
-endif
-## end gnulib module explicit_bzero
-
## begin gnulib module faccessat
ifeq (,$(OMIT_GNULIB_MODULE_faccessat))
@@ -2367,6 +2390,8 @@ inttypes.h: inttypes.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(WARN_ON_U
-e 's/@''HAVE_DECL_STRTOIMAX''@/$(HAVE_DECL_STRTOIMAX)/g' \
-e 's/@''HAVE_DECL_STRTOUMAX''@/$(HAVE_DECL_STRTOUMAX)/g' \
-e 's/@''HAVE_IMAXDIV_T''@/$(HAVE_IMAXDIV_T)/g' \
+ -e 's/@''REPLACE_IMAXABS''@/$(REPLACE_IMAXABS)/g' \
+ -e 's/@''REPLACE_IMAXDIV''@/$(REPLACE_IMAXDIV)/g' \
-e 's/@''REPLACE_STRTOIMAX''@/$(REPLACE_STRTOIMAX)/g' \
-e 's/@''REPLACE_STRTOUMAX''@/$(REPLACE_STRTOUMAX)/g' \
-e 's/@''INT32_MAX_LT_INTMAX_MAX''@/$(INT32_MAX_LT_INTMAX_MAX)/g' \
@@ -2536,6 +2561,16 @@ endif
endif
## end gnulib module memrchr
+## begin gnulib module memset_explicit
+ifeq (,$(OMIT_GNULIB_MODULE_memset_explicit))
+
+ifneq (,$(GL_COND_OBJ_MEMSET_EXPLICIT_CONDITION))
+libgnu_a_SOURCES += memset_explicit.c
+endif
+
+endif
+## end gnulib module memset_explicit
+
## begin gnulib module minmax
ifeq (,$(OMIT_GNULIB_MODULE_minmax))
@@ -2895,28 +2930,6 @@ EXTRA_DIST += stat-time.h
endif
## end gnulib module stat-time
-## begin gnulib module stdalign
-ifeq (,$(OMIT_GNULIB_MODULE_stdalign))
-
-BUILT_SOURCES += $(STDALIGN_H)
-
-# We need the following in order to create <stdalign.h> when the system
-# doesn't have one that works.
-ifneq (,$(GL_GENERATE_STDALIGN_H_CONDITION))
-stdalign.h: stdalign.in.h $(top_builddir)/config.status
- $(gl_V_at)$(SED_HEADER_TO_AT_t) $(srcdir)/stdalign.in.h
- $(AM_V_at)mv $@-t $@
-else
-stdalign.h: $(top_builddir)/config.status
- rm -f $@
-endif
-MOSTLYCLEANFILES += stdalign.h stdalign.h-t
-
-EXTRA_DIST += stdalign.in.h
-
-endif
-## end gnulib module stdalign
-
## begin gnulib module stdckdint
ifeq (,$(OMIT_GNULIB_MODULE_stdckdint))
@@ -3102,7 +3115,9 @@ stdio.h: stdio.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H)
-e 's|@''HAVE_DECL_FTELLO''@|$(HAVE_DECL_FTELLO)|g' \
-e 's|@''HAVE_DECL_GETDELIM''@|$(HAVE_DECL_GETDELIM)|g' \
-e 's|@''HAVE_DECL_GETLINE''@|$(HAVE_DECL_GETLINE)|g' \
+ -e 's|@''HAVE_DECL_GETW''@|$(HAVE_DECL_GETW)|g' \
-e 's|@''HAVE_DECL_OBSTACK_PRINTF''@|$(HAVE_DECL_OBSTACK_PRINTF)|g' \
+ -e 's|@''HAVE_DECL_PUTW''@|$(HAVE_DECL_PUTW)|g' \
-e 's|@''HAVE_DECL_SNPRINTF''@|$(HAVE_DECL_SNPRINTF)|g' \
-e 's|@''HAVE_DECL_VSNPRINTF''@|$(HAVE_DECL_VSNPRINTF)|g' \
-e 's|@''HAVE_DPRINTF''@|$(HAVE_DPRINTF)|g' \
@@ -3189,6 +3204,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's/@''GNULIB_CANONICALIZE_FILE_NAME''@/$(GL_GNULIB_CANONICALIZE_FILE_NAME)/g' \
-e 's/@''GNULIB_FREE_POSIX''@/$(GL_GNULIB_FREE_POSIX)/g' \
-e 's/@''GNULIB_GETLOADAVG''@/$(GL_GNULIB_GETLOADAVG)/g' \
+ -e 's/@''GNULIB_GETPROGNAME''@/$(GL_GNULIB_GETPROGNAME)/g' \
-e 's/@''GNULIB_GETSUBOPT''@/$(GL_GNULIB_GETSUBOPT)/g' \
-e 's/@''GNULIB_GRANTPT''@/$(GL_GNULIB_GRANTPT)/g' \
-e 's/@''GNULIB_MALLOC_GNU''@/$(GL_GNULIB_MALLOC_GNU)/g' \
@@ -3238,6 +3254,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_DECL_FCVT''@|$(HAVE_DECL_FCVT)|g' \
-e 's|@''HAVE_DECL_GCVT''@|$(HAVE_DECL_GCVT)|g' \
-e 's|@''HAVE_DECL_GETLOADAVG''@|$(HAVE_DECL_GETLOADAVG)|g' \
+ -e 's|@''HAVE_GETPROGNAME''@|$(HAVE_GETPROGNAME)|g' \
-e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
-e 's|@''HAVE_GRANTPT''@|$(HAVE_GRANTPT)|g' \
-e 's|@''HAVE_INITSTATE''@|$(HAVE_INITSTATE)|g' \
@@ -3273,17 +3290,24 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
-e 's|@''HAVE_SYS_LOADAVG_H''@|$(HAVE_SYS_LOADAVG_H)|g' \
-e 's|@''HAVE_UNLOCKPT''@|$(HAVE_UNLOCKPT)|g' \
-e 's|@''HAVE_DECL_UNSETENV''@|$(HAVE_DECL_UNSETENV)|g' \
+ -e 's|@''REPLACE__EXIT''@|$(REPLACE__EXIT)|g' \
-e 's|@''REPLACE_ALIGNED_ALLOC''@|$(REPLACE_ALIGNED_ALLOC)|g' \
-e 's|@''REPLACE_CALLOC_FOR_CALLOC_GNU''@|$(REPLACE_CALLOC_FOR_CALLOC_GNU)|g' \
-e 's|@''REPLACE_CALLOC_FOR_CALLOC_POSIX''@|$(REPLACE_CALLOC_FOR_CALLOC_POSIX)|g' \
-e 's|@''REPLACE_CANONICALIZE_FILE_NAME''@|$(REPLACE_CANONICALIZE_FILE_NAME)|g' \
-e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \
+ -e 's|@''REPLACE_GETLOADAVG''@|$(REPLACE_GETLOADAVG)|g' \
+ -e 's|@''REPLACE_GETPROGNAME''@|$(REPLACE_GETPROGNAME)|g' \
+ -e 's|@''REPLACE_GETSUBOPT''@|$(REPLACE_GETSUBOPT)|g' \
-e 's|@''REPLACE_INITSTATE''@|$(REPLACE_INITSTATE)|g' \
-e 's|@''REPLACE_MALLOC_FOR_MALLOC_GNU''@|$(REPLACE_MALLOC_FOR_MALLOC_GNU)|g' \
-e 's|@''REPLACE_MALLOC_FOR_MALLOC_POSIX''@|$(REPLACE_MALLOC_FOR_MALLOC_POSIX)|g' \
-e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
+ -e 's|@''REPLACE_MKOSTEMP''@|$(REPLACE_MKOSTEMP)|g' \
+ -e 's|@''REPLACE_MKOSTEMPS''@|$(REPLACE_MKOSTEMPS)|g' \
-e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
-e 's|@''REPLACE_POSIX_MEMALIGN''@|$(REPLACE_POSIX_MEMALIGN)|g' \
+ -e 's|@''REPLACE_POSIX_OPENPT''@|$(REPLACE_POSIX_OPENPT)|g' \
-e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \
-e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
-e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
@@ -3362,6 +3386,7 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
-e 's/@''GNULIB_MEMMEM''@/$(GL_GNULIB_MEMMEM)/g' \
-e 's/@''GNULIB_MEMPCPY''@/$(GL_GNULIB_MEMPCPY)/g' \
-e 's/@''GNULIB_MEMRCHR''@/$(GL_GNULIB_MEMRCHR)/g' \
+ -e 's/@''GNULIB_MEMSET_EXPLICIT''@/$(GL_GNULIB_MEMSET_EXPLICIT)/g' \
-e 's/@''GNULIB_RAWMEMCHR''@/$(GL_GNULIB_RAWMEMCHR)/g' \
-e 's/@''GNULIB_STPCPY''@/$(GL_GNULIB_STPCPY)/g' \
-e 's/@''GNULIB_STPNCPY''@/$(GL_GNULIB_STPNCPY)/g' \
@@ -3393,6 +3418,7 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
-e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
-e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
-e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_MEMSET_EXPLICIT''@|$(HAVE_MEMSET_EXPLICIT)|g' \
-e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
-e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
-e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
@@ -3413,7 +3439,9 @@ string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
-e 's|@''REPLACE_FFSLL''@|$(REPLACE_FFSLL)|g' \
-e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
-e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+ -e 's|@''REPLACE_MEMPCPY''@|$(REPLACE_MEMPCPY)|g' \
-e 's|@''REPLACE_FREE''@|$(REPLACE_FREE)|g' \
+ -e 's|@''REPLACE_STPCPY''@|$(REPLACE_STPCPY)|g' \
-e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
-e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
-e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
@@ -3697,8 +3725,8 @@ EXTRA_DIST += tempname.h
endif
## end gnulib module tempname
-## begin gnulib module time
-ifeq (,$(OMIT_GNULIB_MODULE_time))
+## begin gnulib module time-h
+ifeq (,$(OMIT_GNULIB_MODULE_time-h))
BUILT_SOURCES += time.h
@@ -3717,6 +3745,7 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
-e 's/@''GNULIB_NANOSLEEP''@/$(GL_GNULIB_NANOSLEEP)/g' \
-e 's/@''GNULIB_STRFTIME''@/$(GL_GNULIB_STRFTIME)/g' \
-e 's/@''GNULIB_STRPTIME''@/$(GL_GNULIB_STRPTIME)/g' \
+ -e 's/@''GNULIB_TIME''@/$(GL_GNULIB_TIME)/g' \
-e 's/@''GNULIB_TIMEGM''@/$(GL_GNULIB_TIMEGM)/g' \
-e 's/@''GNULIB_TIMESPEC_GET''@/$(GL_GNULIB_TIMESPEC_GET)/g' \
-e 's/@''GNULIB_TIMESPEC_GETRES''@/$(GL_GNULIB_TIMESPEC_GETRES)/g' \
@@ -3738,7 +3767,9 @@ time.h: time.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(
-e 's|@''REPLACE_MKTIME''@|$(REPLACE_MKTIME)|g' \
-e 's|@''REPLACE_NANOSLEEP''@|$(REPLACE_NANOSLEEP)|g' \
-e 's|@''REPLACE_STRFTIME''@|$(REPLACE_STRFTIME)|g' \
+ -e 's|@''REPLACE_TIME''@|$(REPLACE_TIME)|g' \
-e 's|@''REPLACE_TIMEGM''@|$(REPLACE_TIMEGM)|g' \
+ -e 's|@''REPLACE_TIMESPEC_GET''@|$(REPLACE_TIMESPEC_GET)|g' \
-e 's|@''REPLACE_TZSET''@|$(REPLACE_TZSET)|g' \
-e 's|@''PTHREAD_H_DEFINES_STRUCT_TIMESPEC''@|$(PTHREAD_H_DEFINES_STRUCT_TIMESPEC)|g' \
-e 's|@''SYS_TIME_H_DEFINES_STRUCT_TIMESPEC''@|$(SYS_TIME_H_DEFINES_STRUCT_TIMESPEC)|g' \
@@ -3755,7 +3786,7 @@ MOSTLYCLEANFILES += time.h time.h-t
EXTRA_DIST += time.in.h
endif
-## end gnulib module time
+## end gnulib module time-h
## begin gnulib module time_r
ifeq (,$(OMIT_GNULIB_MODULE_time_r))
@@ -3983,6 +4014,7 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
-e 's|@''REPLACE_COPY_FILE_RANGE''@|$(REPLACE_COPY_FILE_RANGE)|g' \
-e 's|@''REPLACE_DUP''@|$(REPLACE_DUP)|g' \
-e 's|@''REPLACE_DUP2''@|$(REPLACE_DUP2)|g' \
+ -e 's|@''REPLACE_DUP3''@|$(REPLACE_DUP3)|g' \
-e 's|@''REPLACE_EXECL''@|$(REPLACE_EXECL)|g' \
-e 's|@''REPLACE_EXECLE''@|$(REPLACE_EXECLE)|g' \
-e 's|@''REPLACE_EXECLP''@|$(REPLACE_EXECLP)|g' \
@@ -3992,10 +4024,12 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
-e 's|@''REPLACE_EXECVPE''@|$(REPLACE_EXECVPE)|g' \
-e 's|@''REPLACE_FACCESSAT''@|$(REPLACE_FACCESSAT)|g' \
-e 's|@''REPLACE_FCHOWNAT''@|$(REPLACE_FCHOWNAT)|g' \
+ -e 's|@''REPLACE_FDATASYNC''@|$(REPLACE_FDATASYNC)|g' \
-e 's|@''REPLACE_FTRUNCATE''@|$(REPLACE_FTRUNCATE)|g' \
-e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
-e 's|@''REPLACE_GETDOMAINNAME''@|$(REPLACE_GETDOMAINNAME)|g' \
-e 's|@''REPLACE_GETDTABLESIZE''@|$(REPLACE_GETDTABLESIZE)|g' \
+ -e 's|@''REPLACE_GETENTROPY''@|$(REPLACE_GETENTROPY)|g' \
-e 's|@''REPLACE_GETLOGIN_R''@|$(REPLACE_GETLOGIN_R)|g' \
-e 's|@''REPLACE_GETGROUPS''@|$(REPLACE_GETGROUPS)|g' \
-e 's|@''REPLACE_GETPAGESIZE''@|$(REPLACE_GETPAGESIZE)|g' \
@@ -4006,12 +4040,14 @@ unistd.h: unistd.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H
-e 's|@''REPLACE_LINK''@|$(REPLACE_LINK)|g' \
-e 's|@''REPLACE_LINKAT''@|$(REPLACE_LINKAT)|g' \
-e 's|@''REPLACE_LSEEK''@|$(REPLACE_LSEEK)|g' \
+ -e 's|@''REPLACE_PIPE2''@|$(REPLACE_PIPE2)|g' \
-e 's|@''REPLACE_PREAD''@|$(REPLACE_PREAD)|g' \
-e 's|@''REPLACE_PWRITE''@|$(REPLACE_PWRITE)|g' \
-e 's|@''REPLACE_READ''@|$(REPLACE_READ)|g' \
-e 's|@''REPLACE_READLINK''@|$(REPLACE_READLINK)|g' \
-e 's|@''REPLACE_READLINKAT''@|$(REPLACE_READLINKAT)|g' \
-e 's|@''REPLACE_RMDIR''@|$(REPLACE_RMDIR)|g' \
+ -e 's|@''REPLACE_SETHOSTNAME''@|$(REPLACE_SETHOSTNAME)|g' \
-e 's|@''REPLACE_SLEEP''@|$(REPLACE_SLEEP)|g' \
-e 's|@''REPLACE_SYMLINK''@|$(REPLACE_SYMLINK)|g' \
-e 's|@''REPLACE_SYMLINKAT''@|$(REPLACE_SYMLINKAT)|g' \
diff --git a/lib/group-member.c b/lib/group-member.c
index 6e3f640dcf0..96a09f94a8f 100644
--- a/lib/group-member.c
+++ b/lib/group-member.c
@@ -1,7 +1,7 @@
/* group-member.c -- determine whether group id is in calling user's group list
- Copyright (C) 1994, 1997-1998, 2003, 2005-2006, 2009-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1994, 1997-1998, 2003, 2005-2006, 2009-2023 Free Software
+ Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/inttypes.in.h b/lib/inttypes.in.h
index 50a2bbfcda2..5b7ef12dc7e 100644
--- a/lib/inttypes.in.h
+++ b/lib/inttypes.in.h
@@ -903,8 +903,21 @@ extern "C" {
#endif
#if @GNULIB_IMAXABS@
-# if !@HAVE_DECL_IMAXABS@
-extern intmax_t imaxabs (intmax_t);
+# if @REPLACE_IMAXABS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef imaxabs
+# define imaxabs rpl_imaxabs
+# endif
+_GL_FUNCDECL_RPL (imaxabs, intmax_t, (intmax_t x));
+_GL_CXXALIAS_RPL (imaxabs, intmax_t, (intmax_t x));
+# else
+# if !@HAVE_DECL_IMAXABS@
+_GL_FUNCDECL_SYS (imaxabs, intmax_t, (intmax_t x));
+# endif
+_GL_CXXALIAS_SYS (imaxabs, intmax_t, (intmax_t x));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (imaxabs);
# endif
#elif defined GNULIB_POSIXCHECK
# undef imaxabs
@@ -921,8 +934,21 @@ typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
# define GNULIB_defined_imaxdiv_t 1
# endif
# endif
-# if !@HAVE_DECL_IMAXDIV@
-extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
+# if @REPLACE_IMAXDIV@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef imaxdiv
+# define imaxdiv rpl_imaxdiv
+# endif
+_GL_FUNCDECL_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
+_GL_CXXALIAS_RPL (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
+# else
+# if !@HAVE_DECL_IMAXDIV@
+_GL_FUNCDECL_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
+# endif
+_GL_CXXALIAS_SYS (imaxdiv, imaxdiv_t, (intmax_t numer, intmax_t denom));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (imaxdiv);
# endif
#elif defined GNULIB_POSIXCHECK
# undef imaxdiv
diff --git a/lib/libc-config.h b/lib/libc-config.h
index 1d28e58c971..5f5ad010377 100644
--- a/lib/libc-config.h
+++ b/lib/libc-config.h
@@ -137,8 +137,6 @@
# undef __attribute_returns_twice__
# undef __attribute_used__
# undef __attribute_warn_unused_result__
-# undef __bos
-# undef __bos0
# undef __errordecl
# undef __extension__
# undef __extern_always_inline
@@ -147,21 +145,13 @@
# undef __fortified_attr_access
# undef __fortify_function
# undef __glibc_c99_flexarr_available
-# undef __glibc_fortify
-# undef __glibc_fortify_n
# undef __glibc_has_attribute
# undef __glibc_has_builtin
# undef __glibc_has_extension
# undef __glibc_likely
# undef __glibc_macro_warning
# undef __glibc_macro_warning1
-# undef __glibc_objsize
-# undef __glibc_objsize0
-# undef __glibc_safe_len_cond
-# undef __glibc_safe_or_unknown_len
# undef __glibc_unlikely
-# undef __glibc_unsafe_len
-# undef __glibc_unsigned_or_positive
# undef __inline
# undef __ptr_t
# undef __restrict
@@ -170,6 +160,18 @@
# undef __va_arg_pack_len
# undef __warnattr
# undef __wur
+# ifndef __GNULIB_CDEFS
+# undef __bos
+# undef __bos0
+# undef __glibc_fortify
+# undef __glibc_fortify_n
+# undef __glibc_objsize
+# undef __glibc_objsize0
+# undef __glibc_safe_len_cond
+# undef __glibc_safe_or_unknown_len
+# undef __glibc_unsafe_len
+# undef __glibc_unsigned_or_positive
+# endif
/* Include our copy of glibc <sys/cdefs.h>. */
# include <cdefs.h>
diff --git a/lib/limits.in.h b/lib/limits.in.h
index ae46a5aa25f..a01b4c6a280 100644
--- a/lib/limits.in.h
+++ b/lib/limits.in.h
@@ -99,7 +99,7 @@
# endif
#endif
-/* Macros specified by C2x and by ISO/IEC TS 18661-1:2014. */
+/* Macros specified by C23 and by ISO/IEC TS 18661-1:2014. */
#if (! defined ULLONG_WIDTH \
&& (defined _GNU_SOURCE || defined __STDC_WANT_IEC_60559_BFP_EXT__ \
@@ -117,13 +117,16 @@
# define ULLONG_WIDTH _GL_INTEGER_WIDTH (0, ULLONG_MAX)
#endif
-/* Macros specified by C2x. */
+/* Macros specified by C23. */
-#if (! defined BOOL_WIDTH \
- && (defined _GNU_SOURCE \
- || (defined __STDC_VERSION__ && 201710 < __STDC_VERSION__)))
-# define BOOL_MAX 1
-# define BOOL_WIDTH 1
+#if (defined _GNU_SOURCE \
+ || (defined __STDC_VERSION__ && 201710 < __STDC_VERSION__))
+# if ! defined BOOL_WIDTH
+# define BOOL_WIDTH 1
+# define BOOL_MAX 1
+# elif ! defined BOOL_MAX
+# define BOOL_MAX ((((1U << (BOOL_WIDTH - 1)) - 1) << 1) + 1)
+# endif
#endif
#endif /* _@GUARD_PREFIX@_LIMITS_H */
diff --git a/lib/malloc.c b/lib/malloc.c
index 92f8c841cd7..3ade35cb63f 100644
--- a/lib/malloc.c
+++ b/lib/malloc.c
@@ -1,7 +1,6 @@
/* malloc() function that is glibc compatible.
- Copyright (C) 1997-1998, 2006-2007, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1997-1998, 2006-2007, 2009-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/md5-stream.c b/lib/md5-stream.c
index ab48fe3261a..ba76792cbbe 100644
--- a/lib/md5-stream.c
+++ b/lib/md5-stream.c
@@ -1,7 +1,7 @@
/* Functions to compute MD5 message digest of files or memory blocks.
according to the definition of MD5 in RFC 1321 from April 1992.
- Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2023 Free Software
+ Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
diff --git a/lib/md5.c b/lib/md5.c
index b1e139339f4..4a6accf28ff 100644
--- a/lib/md5.c
+++ b/lib/md5.c
@@ -1,7 +1,7 @@
/* Functions to compute MD5 message digest of files or memory blocks.
according to the definition of MD5 in RFC 1321 from April 1992.
- Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1995-1997, 1999-2001, 2005-2006, 2008-2023 Free Software
+ Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
diff --git a/lib/md5.h b/lib/md5.h
index 3b0b4ff730f..f34e7cb8dfa 100644
--- a/lib/md5.h
+++ b/lib/md5.h
@@ -1,7 +1,7 @@
/* Declaration of functions and data types used for MD5 sum computing
library functions.
- Copyright (C) 1995-1997, 1999-2001, 2004-2006, 2008-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1995-1997, 1999-2001, 2004-2006, 2008-2023 Free Software
+ Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
diff --git a/lib/memmem.c b/lib/memmem.c
index 665815efb1a..c0b48c1b25d 100644
--- a/lib/memmem.c
+++ b/lib/memmem.c
@@ -1,5 +1,5 @@
-/* Copyright (C) 1991-1994, 1996-1998, 2000, 2004, 2007-2023 Free
- Software Foundation, Inc.
+/* Copyright (C) 1991-1994, 1996-1998, 2000, 2004, 2007-2023 Free Software
+ Foundation, Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
diff --git a/lib/memrchr.c b/lib/memrchr.c
index a34fc71f7da..c5b1fe8b2e3 100644
--- a/lib/memrchr.c
+++ b/lib/memrchr.c
@@ -1,7 +1,7 @@
/* memrchr -- find the last occurrence of a byte in a memory block
- Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2023 Free Software
+ Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
with help from Dan Sahlin (dan@sics.se) and
diff --git a/lib/memset_explicit.c b/lib/memset_explicit.c
new file mode 100644
index 00000000000..6d21a5e8797
--- /dev/null
+++ b/lib/memset_explicit.c
@@ -0,0 +1,55 @@
+/* Erase sensitive data from memory.
+ Copyright 2022-2023 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation; either version 2.1 of the
+ License, or (at your option) any later version.
+
+ This file is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+/* memset_s need this define */
+#if HAVE_MEMSET_S
+# define __STDC_WANT_LIB_EXT1__ 1
+#endif
+
+#include <string.h>
+
+/* Set S's bytes to C, where S has LEN bytes. The compiler will not
+ optimize effects away, even if S is dead after the call. */
+void *
+memset_explicit (void *s, int c, size_t len)
+{
+#if HAVE_EXPLICIT_MEMSET
+ return explicit_memset (s, c, len);
+#elif HAVE_MEMSET_S
+ (void) memset_s (s, len, c, len);
+ return s;
+#elif defined __GNUC__ && !defined __clang__
+ memset (s, c, len);
+ /* Compiler barrier. */
+ __asm__ volatile ("" ::: "memory");
+ return s;
+#elif defined __clang__
+ memset (s, c, len);
+ /* Compiler barrier. */
+ /* With asm ("" ::: "memory") LLVM analyzes uses of 's' and finds that the
+ whole thing is dead and eliminates it. Use 'g' to work around this
+ problem. See <https://bugs.llvm.org/show_bug.cgi?id=15495#c11>. */
+ __asm__ volatile ("" : : "g"(s) : "memory");
+ return s;
+#else
+ /* Invoke memset through a volatile function pointer. This defeats compiler
+ optimizations. */
+ void * (* const volatile volatile_memset) (void *, int, size_t) = memset;
+ return volatile_memset (s, c, len);
+#endif
+}
diff --git a/lib/nanosleep.c b/lib/nanosleep.c
index 6383115c0f1..3f295f49b5d 100644
--- a/lib/nanosleep.c
+++ b/lib/nanosleep.c
@@ -1,7 +1,6 @@
/* Provide a replacement for the POSIX nanosleep function.
- Copyright (C) 1999-2000, 2002, 2004-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 1999-2000, 2002, 2004-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/openat-proc.c b/lib/openat-proc.c
index 2a6a85f0696..88f70be4f59 100644
--- a/lib/openat-proc.c
+++ b/lib/openat-proc.c
@@ -30,9 +30,12 @@
#include <string.h>
#include <unistd.h>
-#ifdef __KLIBC__
+#ifdef __KLIBC__ /* OS/2 */
# include <InnoTekLIBC/backend.h>
#endif
+#ifdef __MVS__ /* z/OS */
+# include <termios.h>
+#endif
#include "intprops.h"
@@ -53,7 +56,8 @@ openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file)
return buf;
}
-#ifndef __KLIBC__
+#if !(defined __KLIBC__ || defined __MVS__)
+ /* Generic code for Linux, Solaris, and similar platforms. */
# define PROC_SELF_FD_FORMAT "/proc/self/fd/%d/"
{
enum {
@@ -107,14 +111,29 @@ openat_proc_name (char buf[OPENAT_BUFFER_SIZE], int fd, char const *file)
dirlen = sprintf (result, PROC_SELF_FD_FORMAT, fd);
}
}
-#else
+#else /* (defined __KLIBC__ || defined __MVS__), i.e. OS/2 or z/OS */
/* OS/2 kLIBC provides a function to retrieve a path from a fd. */
{
- char dir[_MAX_PATH];
size_t bufsize;
+# ifdef __KLIBC__
+ char dir[_MAX_PATH];
if (__libc_Back_ioFHToPath (fd, dir, sizeof dir))
return NULL;
+# endif
+# ifdef __MVS__
+ char dir[_XOPEN_PATH_MAX];
+ /* Documentation:
+ https://www.ibm.com/docs/en/zos/2.2.0?topic=functions-w-ioctl-w-pioctl-control-devices */
+ if (w_ioctl (fd, _IOCC_GPN, sizeof dir, dir) < 0)
+ return NULL;
+ /* Documentation:
+ https://www.ibm.com/docs/en/zos/2.2.0?topic=functions-e2a-l-convert-characters-from-ebcdic-ascii */
+ dirlen = __e2a_l (dir, strlen (dir));
+ if (dirlen < 0 || dirlen >= sizeof dir)
+ return NULL;
+ dir[dirlen] = '\0';
+# endif
dirlen = strlen (dir);
bufsize = dirlen + 1 + strlen (file) + 1; /* 1 for '/', 1 for null */
diff --git a/lib/qcopy-acl.c b/lib/qcopy-acl.c
index 883bcf7d588..0f4159b7fd9 100644
--- a/lib/qcopy-acl.c
+++ b/lib/qcopy-acl.c
@@ -23,6 +23,20 @@
#include "acl-internal.h"
+#if USE_XATTR
+
+# include <attr/libattr.h>
+
+/* Returns 1 if NAME is the name of an extended attribute that is related
+ to permissions, i.e. ACLs. Returns 0 otherwise. */
+
+static int
+is_attr_permissions (const char *name, struct error_context *ctx)
+{
+ return attr_copy_action (name, ctx) == ATTR_ACTION_PERMISSIONS;
+}
+
+#endif /* USE_XATTR */
/* Copy access control lists from one file to another. If SOURCE_DESC is
a valid file descriptor, use file descriptor operations, else use
@@ -39,13 +53,33 @@ int
qcopy_acl (const char *src_name, int source_desc, const char *dst_name,
int dest_desc, mode_t mode)
{
- struct permission_context ctx;
int ret;
+#ifdef USE_XATTR
+ /* in case no ACLs present and also to set higher mode bits
+ we chmod before setting ACLs as doing it after could overwrite them
+ (especially true for NFSv4, posix ACL has that ugly "mask" hack that
+ nobody understands) */
+ ret = chmod_or_fchmod (dst_name, dest_desc, mode);
+ /* Rather than fiddling with acls one by one, we just copy the whole ACL xattrs
+ (Posix or NFSv4). Of course, that won't address ACLs conversion
+ (i.e. posix <-> nfs4) but we can't do it anyway, so for now, we don't care
+ Functions attr_copy_* return 0 in case we copied something OR nothing
+ to copy */
+ if (ret == 0)
+ ret = source_desc <= 0 || dest_desc <= 0
+ ? attr_copy_file (src_name, dst_name, is_attr_permissions, NULL)
+ : attr_copy_fd (src_name, source_desc, dst_name, dest_desc,
+ is_attr_permissions, NULL);
+#else
+ /* no XATTR, so we proceed the old dusty way */
+ struct permission_context ctx;
+
ret = get_permissions (src_name, source_desc, mode, &ctx);
if (ret != 0)
return -2;
ret = set_permissions (&ctx, dst_name, dest_desc);
free_permission_context (&ctx);
+#endif
return ret;
}
diff --git a/lib/save-cwd.h b/lib/save-cwd.h
index f26319389c2..d089b0e2145 100644
--- a/lib/save-cwd.h
+++ b/lib/save-cwd.h
@@ -1,7 +1,7 @@
/* Save and restore current working directory.
- Copyright (C) 1995, 1997-1998, 2003, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1995, 1997-1998, 2003, 2009-2023 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/sha1.c b/lib/sha1.c
index 3f6d86a285c..80f0b7a3314 100644
--- a/lib/sha1.c
+++ b/lib/sha1.c
@@ -1,8 +1,7 @@
/* sha1.c - Functions to compute SHA1 message digest of files or
memory blocks according to the NIST specification FIPS-180-1.
- Copyright (C) 2000-2001, 2003-2006, 2008-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 2000-2001, 2003-2006, 2008-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/sig2str.c b/lib/sig2str.c
index 4f68cb7ca8a..c5219caaaed 100644
--- a/lib/sig2str.c
+++ b/lib/sig2str.c
@@ -1,7 +1,6 @@
/* sig2str.c -- convert between signal names and numbers
- Copyright (C) 2002, 2004, 2006, 2009-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 2002, 2004, 2006, 2009-2023 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
diff --git a/lib/stdalign.in.h b/lib/stdalign.in.h
deleted file mode 100644
index 17357810c7c..00000000000
--- a/lib/stdalign.in.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/* A substitute for ISO C11 <stdalign.h>.
-
- Copyright 2011-2023 Free Software Foundation, Inc.
-
- This file is free software: you can redistribute it and/or modify
- it under the terms of the GNU Lesser General Public License as
- published by the Free Software Foundation; either version 2.1 of the
- License, or (at your option) any later version.
-
- This file is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public License
- along with this program. If not, see <https://www.gnu.org/licenses/>. */
-
-/* Written by Paul Eggert and Bruno Haible. */
-
-#ifndef _GL_STDALIGN_H
-#define _GL_STDALIGN_H
-
-/* ISO C11 <stdalign.h> for platforms that lack it.
-
- References:
- ISO C11 (latest free draft
- <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf>)
- sections 6.5.3.4, 6.7.5, 7.15.
- C++11 (latest free draft
- <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>)
- section 18.10. */
-
-/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
- requirement of a structure member (i.e., slot or field) that is of
- type TYPE, as an integer constant expression.
-
- This differs from GCC's and clang's __alignof__ operator, which can
- yield a better-performing alignment for an object of that type. For
- example, on x86 with GCC and on Linux/x86 with clang,
- __alignof__ (double) and __alignof__ (long long) are 8, whereas
- alignof (double) and alignof (long long) are 4 unless the option
- '-malign-double' is used.
-
- The result cannot be used as a value for an 'enum' constant, if you
- want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
-
-/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
- standard headers, defines conflicting implementations of _Alignas
- and _Alignof that are no better than ours; override them. */
-#undef _Alignas
-#undef _Alignof
-
-/* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023
- <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
- clang versions < 8.0.0 have the same bug. */
-#if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
- || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
- && !defined __clang__) \
- || (defined __clang__ && __clang_major__ < 8))
-# ifdef __cplusplus
-# if (201103 <= __cplusplus || defined _MSC_VER)
-# define _Alignof(type) alignof (type)
-# else
- template <class __t> struct __alignof_helper { char __a; __t __b; };
-# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
-# define _GL_STDALIGN_NEEDS_STDDEF 1
-# endif
-# else
-# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
-# define _GL_STDALIGN_NEEDS_STDDEF 1
-# endif
-#endif
-#if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))
-# define alignof _Alignof
-#endif
-#define __alignof_is_defined 1
-
-/* alignas (A), also known as _Alignas (A), aligns a variable or type
- to the alignment A, where A is an integer constant expression. For
- example:
-
- int alignas (8) foo;
- struct s { int a; int alignas (8) bar; };
-
- aligns the address of FOO and the offset of BAR to be multiples of 8.
-
- A should be a power of two that is at least the type's alignment
- and at most the implementation's alignment limit. This limit is
- 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable
- to MSVC through at least version 10.0, A should be an integer
- constant, as MSVC does not support expressions such as 1 << 3.
- To be portable to Sun C 5.11, do not align auto variables to
- anything stricter than their default alignment.
-
- The following C11 requirements are not supported here:
-
- - If A is zero, alignas has no effect.
- - alignas can be used multiple times; the strictest one wins.
- - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
-
- */
-
-#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
-# if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)
-# define _Alignas(a) alignas (a)
-# elif (!defined __attribute__ \
- && ((defined __APPLE__ && defined __MACH__ \
- ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \
- : __GNUC__ && !defined __ibmxl__) \
- || (4 <= __clang_major__) \
- || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \
- || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__))
-# define _Alignas(a) __attribute__ ((__aligned__ (a)))
-# elif 1300 <= _MSC_VER
-# define _Alignas(a) __declspec (align (a))
-# endif
-#endif
-#if ((defined _Alignas \
- && !(defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) \
- || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
-# define alignas _Alignas
-#endif
-#if (defined alignas \
- || (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)))
-# define __alignas_is_defined 1
-#endif
-
-/* Include <stddef.h> if needed for offsetof. */
-#if _GL_STDALIGN_NEEDS_STDDEF
-# include <stddef.h>
-#endif
-
-#endif /* _GL_STDALIGN_H */
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h
index 81e7f838372..46608bed198 100644
--- a/lib/stdio-impl.h
+++ b/lib/stdio-impl.h
@@ -71,6 +71,12 @@
# else
# define _gl_flags_file_t short
# endif
+# ifdef __LP64__
+# define _gl_file_offset_t int64_t
+# else
+ /* see https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md */
+# define _gl_file_offset_t __kernel_off_t
+# endif
/* Up to this commit from 2015-10-12
<https://android.googlesource.com/platform/bionic.git/+/f0141dfab10a4b332769d52fa76631a64741297a>
the innards of FILE were public, and fp_ub could be defined like for OpenBSD,
@@ -96,7 +102,7 @@
unsigned char _nbuf[1]; \
struct { unsigned char *_base; size_t _size; } _lb; \
int _blksize; \
- fpos_t _offset; \
+ _gl_file_offset_t _offset; \
/* More fields, not relevant here. */ \
} *) fp)
# else
diff --git a/lib/stdio.in.h b/lib/stdio.in.h
index 59cbea3d47d..098f841738c 100644
--- a/lib/stdio.in.h
+++ b/lib/stdio.in.h
@@ -36,6 +36,12 @@
#ifndef _@GUARD_PREFIX@_STDIO_H
+/* Suppress macOS deprecation warnings for sprintf and vsprintf. */
+#if (defined __APPLE__ && defined __MACH__) && !defined _POSIX_C_SOURCE
+# define _POSIX_C_SOURCE 200809L
+# define _GL_DEFINED__POSIX_C_SOURCE
+#endif
+
#define _GL_ALREADY_INCLUDING_STDIO_H
/* The include_next requires a split double-inclusion guard. */
@@ -43,6 +49,11 @@
#undef _GL_ALREADY_INCLUDING_STDIO_H
+#ifdef _GL_DEFINED__POSIX_C_SOURCE
+# undef _GL_DEFINED__POSIX_C_SOURCE
+# undef _POSIX_C_SOURCE
+#endif
+
#ifndef _@GUARD_PREFIX@_STDIO_H
#define _@GUARD_PREFIX@_STDIO_H
@@ -210,7 +221,9 @@ _GL_FUNCDECL_SYS (dprintf, int, (int fd, const char *restrict format, ...)
# endif
_GL_CXXALIAS_SYS (dprintf, int, (int fd, const char *restrict format, ...));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (dprintf);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef dprintf
# if HAVE_RAW_DECL_DPRINTF
@@ -882,7 +895,9 @@ _GL_CXXALIAS_SYS (getdelim, ssize_t,
int delimiter,
FILE *restrict stream));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getdelim);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef getdelim
# if HAVE_RAW_DECL_GETDELIM
@@ -921,7 +936,7 @@ _GL_CXXALIAS_SYS (getline, ssize_t,
(char **restrict lineptr, size_t *restrict linesize,
FILE *restrict stream));
# endif
-# if @HAVE_DECL_GETLINE@
+# if __GLIBC__ >= 2 && @HAVE_DECL_GETLINE@
_GL_CXXALIASWARN (getline);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -951,9 +966,13 @@ _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
# endif
_GL_CXXALIAS_MDA (getw, int, (FILE *restrict stream));
# else
+# if @HAVE_DECL_GETW@
_GL_CXXALIAS_SYS (getw, int, (FILE *restrict stream));
+# endif
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getw);
+# endif
#endif
#if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@
@@ -1190,9 +1209,13 @@ _GL_CXXALIASWARN (puts);
# endif
_GL_CXXALIAS_MDA (putw, int, (int w, FILE *restrict stream));
# else
+# if @HAVE_DECL_PUTW@
_GL_CXXALIAS_SYS (putw, int, (int w, FILE *restrict stream));
+# endif
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (putw);
+# endif
#endif
#if @GNULIB_REMOVE@
diff --git a/lib/stdlib.in.h b/lib/stdlib.in.h
index 4c8aad76124..a91f4e23d67 100644
--- a/lib/stdlib.in.h
+++ b/lib/stdlib.in.h
@@ -1,7 +1,6 @@
/* A GNU-like <stdlib.h>.
- Copyright (C) 1995, 2001-2004, 2006-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 1995, 2001-2004, 2006-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
@@ -165,11 +164,22 @@ struct random_data
#if @GNULIB__EXIT@
/* Terminate the current process with the given return code, without running
the 'atexit' handlers. */
-# if !@HAVE__EXIT@
+# if @REPLACE__EXIT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef _Exit
+# define _Exit rpl__Exit
+# endif
+_GL_FUNCDECL_RPL (_Exit, _Noreturn void, (int status));
+_GL_CXXALIAS_RPL (_Exit, void, (int status));
+# else
+# if !@HAVE__EXIT@
_GL_FUNCDECL_SYS (_Exit, _Noreturn void, (int status));
-# endif
+# endif
_GL_CXXALIAS_SYS (_Exit, void, (int status));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (_Exit);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef _Exit
# if HAVE_RAW_DECL__EXIT
@@ -417,12 +427,24 @@ _GL_CXXALIASWARN (gcvt);
The three numbers are the load average of the last 1 minute, the last 5
minutes, and the last 15 minutes, respectively.
LOADAVG is an array of NELEM numbers. */
-# if !@HAVE_DECL_GETLOADAVG@
+# if @REPLACE_GETLOADAVG@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getloadavg
+# define getloadavg rpl_getloadavg
+# endif
+_GL_FUNCDECL_RPL (getloadavg, int, (double loadavg[], int nelem)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (getloadavg, int, (double loadavg[], int nelem));
+# else
+# if !@HAVE_DECL_GETLOADAVG@
_GL_FUNCDECL_SYS (getloadavg, int, (double loadavg[], int nelem)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
_GL_CXXALIAS_SYS (getloadavg, int, (double loadavg[], int nelem));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getloadavg);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef getloadavg
# if HAVE_RAW_DECL_GETLOADAVG
@@ -431,6 +453,41 @@ _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
# endif
#endif
+#if @GNULIB_GETPROGNAME@
+/* Return the base name of the executing program.
+ On native Windows this will usually end in ".exe" or ".EXE". */
+# if @REPLACE_GETPROGNAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getprogname
+# define getprogname rpl_getprogname
+# endif
+# ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME
+_GL_FUNCDECL_RPL (getprogname, const char *, (void) _GL_ATTRIBUTE_PURE);
+# else
+_GL_FUNCDECL_RPL (getprogname, const char *, (void));
+# endif
+_GL_CXXALIAS_RPL (getprogname, const char *, (void));
+# else
+# if !@HAVE_GETPROGNAME@
+# ifdef HAVE_DECL_PROGRAM_INVOCATION_NAME
+_GL_FUNCDECL_SYS (getprogname, const char *, (void) _GL_ATTRIBUTE_PURE);
+# else
+_GL_FUNCDECL_SYS (getprogname, const char *, (void));
+# endif
+# endif
+_GL_CXXALIAS_SYS (getprogname, const char *, (void));
+# endif
+# if __GLIBC__ >= 2
+_GL_CXXALIASWARN (getprogname);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getprogname
+# if HAVE_RAW_DECL_GETPROGNAME
+_GL_WARN_ON_USE (getprogname, "getprogname is unportable - "
+ "use gnulib module getprogname for portability");
+# endif
+#endif
+
#if @GNULIB_GETSUBOPT@
/* Assuming *OPTIONP is a comma separated list of elements of the form
"token" or "token=value", getsubopt parses the first of these elements.
@@ -443,14 +500,28 @@ _GL_WARN_ON_USE (getloadavg, "getloadavg is not portable - "
Otherwise it returns -1, and *OPTIONP and *VALUEP are undefined.
For more details see the POSIX specification.
https://pubs.opengroup.org/onlinepubs/9699919799/functions/getsubopt.html */
-# if !@HAVE_GETSUBOPT@
+# if @REPLACE_GETSUBOPT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getsubopt
+# define getsubopt rpl_getsubopt
+# endif
+_GL_FUNCDECL_RPL (getsubopt, int,
+ (char **optionp, char *const *tokens, char **valuep)
+ _GL_ARG_NONNULL ((1, 2, 3)));
+_GL_CXXALIAS_RPL (getsubopt, int,
+ (char **optionp, char *const *tokens, char **valuep));
+# else
+# if !@HAVE_GETSUBOPT@
_GL_FUNCDECL_SYS (getsubopt, int,
(char **optionp, char *const *tokens, char **valuep)
_GL_ARG_NONNULL ((1, 2, 3)));
-# endif
+# endif
_GL_CXXALIAS_SYS (getsubopt, int,
(char **optionp, char *const *tokens, char **valuep));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getsubopt);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef getsubopt
# if HAVE_RAW_DECL_GETSUBOPT
@@ -580,12 +651,24 @@ _GL_WARN_ON_USE (mkdtemp, "mkdtemp is unportable - "
implementation.
Returns the open file descriptor if successful, otherwise -1 and errno
set. */
-# if !@HAVE_MKOSTEMP@
+# if @REPLACE_MKOSTEMP@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef mkostemp
+# define mkostemp rpl_mkostemp
+# endif
+_GL_FUNCDECL_RPL (mkostemp, int, (char * /*template*/, int /*flags*/)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mkostemp, int, (char * /*template*/, int /*flags*/));
+# else
+# if !@HAVE_MKOSTEMP@
_GL_FUNCDECL_SYS (mkostemp, int, (char * /*template*/, int /*flags*/)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
_GL_CXXALIAS_SYS (mkostemp, int, (char * /*template*/, int /*flags*/));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mkostemp);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mkostemp
# if HAVE_RAW_DECL_MKOSTEMP
@@ -608,14 +691,28 @@ _GL_WARN_ON_USE (mkostemp, "mkostemp is unportable - "
implementation.
Returns the open file descriptor if successful, otherwise -1 and errno
set. */
-# if !@HAVE_MKOSTEMPS@
+# if @REPLACE_MKOSTEMPS@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef mkostemps
+# define mkostemps rpl_mkostemps
+# endif
+_GL_FUNCDECL_RPL (mkostemps, int,
+ (char * /*template*/, int /*suffixlen*/, int /*flags*/)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (mkostemps, int,
+ (char * /*template*/, int /*suffixlen*/, int /*flags*/));
+# else
+# if !@HAVE_MKOSTEMPS@
_GL_FUNCDECL_SYS (mkostemps, int,
(char * /*template*/, int /*suffixlen*/, int /*flags*/)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
_GL_CXXALIAS_SYS (mkostemps, int,
(char * /*template*/, int /*suffixlen*/, int /*flags*/));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mkostemps);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mkostemps
# if HAVE_RAW_DECL_MKOSTEMPS
@@ -714,7 +811,7 @@ _GL_CXXALIAS_SYS (posix_memalign, int,
(void **memptr, size_t alignment, size_t size));
# endif
# endif
-# if @HAVE_POSIX_MEMALIGN@
+# if __GLIBC__ >= 2 && @HAVE_POSIX_MEMALIGN@
_GL_CXXALIASWARN (posix_memalign);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -728,11 +825,22 @@ _GL_WARN_ON_USE (posix_memalign, "posix_memalign is not portable - "
#if @GNULIB_POSIX_OPENPT@
/* Return an FD open to the master side of a pseudo-terminal. Flags should
include O_RDWR, and may also include O_NOCTTY. */
-# if !@HAVE_POSIX_OPENPT@
+# if @REPLACE_POSIX_OPENPT@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef posix_openpt
+# define posix_openpt rpl_posix_openpt
+# endif
+_GL_FUNCDECL_RPL (posix_openpt, int, (int flags));
+_GL_CXXALIAS_RPL (posix_openpt, int, (int flags));
+# else
+# if !@HAVE_POSIX_OPENPT@
_GL_FUNCDECL_SYS (posix_openpt, int, (int flags));
-# endif
+# endif
_GL_CXXALIAS_SYS (posix_openpt, int, (int flags));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (posix_openpt);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef posix_openpt
# if HAVE_RAW_DECL_POSIX_OPENPT
@@ -957,7 +1065,9 @@ _GL_FUNCDECL_SYS (initstate, char *,
_GL_CXXALIAS_SYS_CAST (initstate, char *,
(unsigned int seed, char *buf, size_t buf_size));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (initstate);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef initstate
# if HAVE_RAW_DECL_INITSTATE
@@ -982,7 +1092,9 @@ _GL_FUNCDECL_SYS (setstate, char *, (char *arg_state) _GL_ARG_NONNULL ((1)));
is const char *arg_state. */
_GL_CXXALIAS_SYS_CAST (setstate, char *, (char *arg_state));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (setstate);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef setstate
# if HAVE_RAW_DECL_SETSTATE
@@ -1168,7 +1280,9 @@ _GL_FUNCDECL_SYS (reallocarray, void *,
_GL_CXXALIAS_SYS (reallocarray, void *,
(void *ptr, size_t nmemb, size_t size));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (reallocarray);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef reallocarray
# if HAVE_RAW_DECL_REALLOCARRAY
diff --git a/lib/string.in.h b/lib/string.in.h
index 459dd063cbe..b6bf432e1f1 100644
--- a/lib/string.in.h
+++ b/lib/string.in.h
@@ -59,10 +59,11 @@
# include <unistd.h>
#endif
-/* AIX 7.2 declares ffsl and ffsll in <strings.h>, not in <string.h>. */
+/* AIX 7.2 and Android 13 declare ffsl and ffsll in <strings.h>, not in
+ <string.h>. */
/* But in any case avoid namespace pollution on glibc systems. */
#if ((@GNULIB_FFSL@ || @GNULIB_FFSLL@ || defined GNULIB_POSIXCHECK) \
- && defined _AIX) \
+ && (defined _AIX || defined __ANDROID__)) \
&& ! defined __GLIBC__
# include <strings.h>
#endif
@@ -82,7 +83,14 @@
can be freed via 'free'; it can be used only after declaring 'free'. */
/* Applies to: functions. Cannot be used on inline functions. */
#ifndef _GL_ATTRIBUTE_DEALLOC_FREE
-# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
+# if defined __cplusplus && defined __GNUC__ && !defined __clang__
+/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
+# define _GL_ATTRIBUTE_DEALLOC_FREE \
+ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
+# else
+# define _GL_ATTRIBUTE_DEALLOC_FREE \
+ _GL_ATTRIBUTE_DEALLOC (free, 1)
+# endif
#endif
/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
@@ -118,7 +126,11 @@
# if (@REPLACE_FREE@ && !defined free \
&& !(defined __cplusplus && defined GNULIB_NAMESPACE))
/* We can't do '#define free rpl_free' here. */
+# if defined __cplusplus && (__GLIBC__ + (__GLIBC_MINOR__ >= 14) > 2)
+_GL_EXTERN_C void rpl_free (void *) throw ();
+# else
_GL_EXTERN_C void rpl_free (void *);
+# endif
# undef _GL_ATTRIBUTE_DEALLOC_FREE
# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (rpl_free, 1)
# else
@@ -300,16 +312,32 @@ _GL_WARN_ON_USE (memmem, "memmem is unportable and often quadratic - "
/* Copy N bytes of SRC to DEST, return pointer to bytes after the
last written byte. */
#if @GNULIB_MEMPCPY@
-# if ! @HAVE_MEMPCPY@
+# if @REPLACE_MEMPCPY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef mempcpy
+# define mempcpy rpl_mempcpy
+# endif
+_GL_FUNCDECL_RPL (mempcpy, void *,
+ (void *restrict __dest, void const *restrict __src,
+ size_t __n)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (mempcpy, void *,
+ (void *restrict __dest, void const *restrict __src,
+ size_t __n));
+# else
+# if !@HAVE_MEMPCPY@
_GL_FUNCDECL_SYS (mempcpy, void *,
(void *restrict __dest, void const *restrict __src,
size_t __n)
_GL_ARG_NONNULL ((1, 2)));
-# endif
+# endif
_GL_CXXALIAS_SYS (mempcpy, void *,
(void *restrict __dest, void const *restrict __src,
size_t __n));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mempcpy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mempcpy
# if HAVE_RAW_DECL_MEMPCPY
@@ -336,7 +364,7 @@ _GL_CXXALIAS_SYS_CAST2 (memrchr,
|| defined __clang__)
_GL_CXXALIASWARN1 (memrchr, void *, (void *, int, size_t) throw ());
_GL_CXXALIASWARN1 (memrchr, void const *, (void const *, int, size_t) throw ());
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (memrchr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -347,6 +375,23 @@ _GL_WARN_ON_USE (memrchr, "memrchr is unportable - "
# endif
#endif
+/* Overwrite a block of memory. The compiler will not optimize
+ effects away, even if the block is dead after the call. */
+#if @GNULIB_MEMSET_EXPLICIT@
+# if ! @HAVE_MEMSET_EXPLICIT@
+_GL_FUNCDECL_SYS (memset_explicit, void *,
+ (void *__dest, int __c, size_t __n) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (memset_explicit, void *, (void *__dest, int __c, size_t __n));
+_GL_CXXALIASWARN (memset_explicit);
+#elif defined GNULIB_POSIXCHECK
+# undef memset_explicit
+# if HAVE_RAW_DECL_MEMSET_EXPLICIT
+_GL_WARN_ON_USE (memset_explicit, "memset_explicit is unportable - "
+ "use gnulib module memset_explicit for portability");
+# endif
+#endif
+
/* Find the first occurrence of C in S. More efficient than
memchr(S,C,N), at the expense of undefined behavior if C does not
occur within N bytes. */
@@ -381,14 +426,28 @@ _GL_WARN_ON_USE (rawmemchr, "rawmemchr is unportable - "
/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */
#if @GNULIB_STPCPY@
-# if ! @HAVE_STPCPY@
+# if @REPLACE_STPCPY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef stpcpy
+# define stpcpy rpl_stpcpy
+# endif
+_GL_FUNCDECL_RPL (stpcpy, char *,
+ (char *restrict __dst, char const *restrict __src)
+ _GL_ARG_NONNULL ((1, 2)));
+_GL_CXXALIAS_RPL (stpcpy, char *,
+ (char *restrict __dst, char const *restrict __src));
+# else
+# if !@HAVE_STPCPY@
_GL_FUNCDECL_SYS (stpcpy, char *,
(char *restrict __dst, char const *restrict __src)
_GL_ARG_NONNULL ((1, 2)));
-# endif
+# endif
_GL_CXXALIAS_SYS (stpcpy, char *,
(char *restrict __dst, char const *restrict __src));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (stpcpy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef stpcpy
# if HAVE_RAW_DECL_STPCPY
@@ -423,7 +482,9 @@ _GL_CXXALIAS_SYS (stpncpy, char *,
(char *restrict __dst, char const *restrict __src,
size_t __n));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (stpncpy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef stpncpy
# if HAVE_RAW_DECL_STPNCPY
@@ -474,7 +535,7 @@ _GL_CXXALIAS_SYS_CAST2 (strchrnul,
_GL_CXXALIASWARN1 (strchrnul, char *, (char *__s, int __c_in) throw ());
_GL_CXXALIASWARN1 (strchrnul, char const *,
(char const *__s, int __c_in) throw ());
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (strchrnul);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -839,7 +900,7 @@ _GL_CXXALIASWARN1 (strcasestr, char *,
(char *haystack, const char *needle) throw ());
_GL_CXXALIASWARN1 (strcasestr, const char *,
(const char *haystack, const char *needle) throw ());
-# else
+# elif __GLIBC__ >= 2
_GL_CXXALIASWARN (strcasestr);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -1187,7 +1248,7 @@ _GL_FUNCDECL_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen)
# endif
_GL_CXXALIAS_SYS (strerror_r, int, (int errnum, char *buf, size_t buflen));
# endif
-# if @HAVE_DECL_STRERROR_R@
+# if __GLIBC__ >= 2 && @HAVE_DECL_STRERROR_R@
_GL_CXXALIASWARN (strerror_r);
# endif
#elif defined GNULIB_POSIXCHECK
diff --git a/lib/strtoimax.c b/lib/strtoimax.c
index d8d74e8c699..f7977e28e64 100644
--- a/lib/strtoimax.c
+++ b/lib/strtoimax.c
@@ -1,7 +1,7 @@
/* Convert string representation of a number into an intmax_t value.
- Copyright (C) 1999, 2001-2004, 2006, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1999, 2001-2004, 2006, 2009-2023 Free Software Foundation,
+ Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/strtol.c b/lib/strtol.c
index 6bc1f061877..d11269b2622 100644
--- a/lib/strtol.c
+++ b/lib/strtol.c
@@ -1,7 +1,7 @@
/* Convert string representation of a number into an integer value.
- Copyright (C) 1991-1992, 1994-1999, 2003, 2005-2007, 2009-2023 Free
- Software Foundation, Inc.
+ Copyright (C) 1991-1992, 1994-1999, 2003, 2005-2007, 2009-2023 Free Software
+ Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@gnu.org.
diff --git a/lib/strtoll.c b/lib/strtoll.c
index 919b453984c..9fdfa19b220 100644
--- a/lib/strtoll.c
+++ b/lib/strtoll.c
@@ -1,6 +1,6 @@
/* Function to parse a 'long long int' from text.
- Copyright (C) 1995-1997, 1999, 2001, 2009-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1995-1997, 1999, 2001, 2009-2023 Free Software Foundation,
+ Inc.
This file is part of the GNU C Library.
This file is free software: you can redistribute it and/or modify
diff --git a/lib/sys_stat.in.h b/lib/sys_stat.in.h
index 096887c0162..0c2f39c12bf 100644
--- a/lib/sys_stat.in.h
+++ b/lib/sys_stat.in.h
@@ -549,7 +549,7 @@ _GL_FUNCDECL_SYS (futimens, int, (int fd, struct timespec const times[2]));
# endif
_GL_CXXALIAS_SYS (futimens, int, (int fd, struct timespec const times[2]));
# endif
-# if @HAVE_FUTIMENS@
+# if __GLIBC__ >= 2 && @HAVE_FUTIMENS@
_GL_CXXALIASWARN (futimens);
# endif
#elif defined GNULIB_POSIXCHECK
@@ -716,7 +716,9 @@ _GL_FUNCDECL_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode)
# endif
_GL_CXXALIAS_SYS (mkfifoat, int, (int fd, char const *file, mode_t mode));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mkfifoat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mkfifoat
# if HAVE_RAW_DECL_MKFIFOAT
@@ -773,7 +775,9 @@ _GL_FUNCDECL_SYS (mknodat, int,
_GL_CXXALIAS_SYS (mknodat, int,
(int fd, char const *file, mode_t mode, dev_t dev));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (mknodat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef mknodat
# if HAVE_RAW_DECL_MKNODAT
@@ -937,7 +941,7 @@ _GL_FUNCDECL_SYS (utimensat, int, (int fd, char const *name,
_GL_CXXALIAS_SYS (utimensat, int, (int fd, char const *name,
struct timespec const times[2], int flag));
# endif
-# if @HAVE_UTIMENSAT@
+# if __GLIBC__ >= 2 && @HAVE_UTIMENSAT@
_GL_CXXALIASWARN (utimensat);
# endif
#elif defined GNULIB_POSIXCHECK
diff --git a/lib/time.in.h b/lib/time.in.h
index a0e67f76b29..3f9af920e34 100644
--- a/lib/time.in.h
+++ b/lib/time.in.h
@@ -112,12 +112,24 @@ struct __time_t_must_be_integral {
/* Set *TS to the current time, and return BASE.
Upon failure, return 0. */
# if @GNULIB_TIMESPEC_GET@
-# if ! @HAVE_TIMESPEC_GET@
+# if @REPLACE_TIMESPEC_GET@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef timespec_get
+# define timespec_get rpl_timespec_get
+# endif
+_GL_FUNCDECL_RPL (timespec_get, int, (struct timespec *ts, int base)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (timespec_get, int, (struct timespec *ts, int base));
+# else
+# if !@HAVE_TIMESPEC_GET@
_GL_FUNCDECL_SYS (timespec_get, int, (struct timespec *ts, int base)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
_GL_CXXALIAS_SYS (timespec_get, int, (struct timespec *ts, int base));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (timespec_get);
+# endif
# endif
/* Set *TS to the current time resolution, and return BASE.
@@ -131,6 +143,20 @@ _GL_CXXALIAS_SYS (timespec_getres, int, (struct timespec *ts, int base));
_GL_CXXALIASWARN (timespec_getres);
# endif
+/* Return the number of seconds that have elapsed since the Epoch. */
+# if @GNULIB_TIME@
+# if @REPLACE_TIME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# define time rpl_time
+# endif
+_GL_FUNCDECL_RPL (time, time_t, (time_t *__tp));
+_GL_CXXALIAS_RPL (time, time_t, (time_t *__tp));
+# else
+_GL_CXXALIAS_SYS (time, time_t, (time_t *__tp));
+# endif
+_GL_CXXALIASWARN (time);
+# endif
+
/* Sleep for at least RQTP seconds unless interrupted, If interrupted,
return -1 and store the remaining time into RMTP. See
<https://pubs.opengroup.org/onlinepubs/9699919799/functions/nanosleep.html>. */
@@ -315,6 +341,7 @@ _GL_CXXALIASWARN (strptime);
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
# define ctime rpl_ctime
# endif
+_GL_ATTRIBUTE_DEPRECATED
_GL_FUNCDECL_RPL (ctime, char *, (time_t const *__tp)
_GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_RPL (ctime, char *, (time_t const *__tp));
@@ -422,7 +449,9 @@ _GL_FUNCDECL_SYS (timegm, time_t, (struct tm *__tm) _GL_ARG_NONNULL ((1)));
# endif
_GL_CXXALIAS_SYS (timegm, time_t, (struct tm *__tm));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (timegm);
+# endif
# endif
/* Encourage applications to avoid unsafe functions that can overrun
diff --git a/lib/time_r.c b/lib/time_r.c
index c8143a6900a..97be4fd0544 100644
--- a/lib/time_r.c
+++ b/lib/time_r.c
@@ -1,7 +1,6 @@
/* Reentrant time functions like localtime_r.
- Copyright (C) 2003, 2006-2007, 2010-2023 Free Software Foundation,
- Inc.
+ Copyright (C) 2003, 2006-2007, 2010-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lib/unistd.in.h b/lib/unistd.in.h
index 4812fdb1120..8ba9867894e 100644
--- a/lib/unistd.in.h
+++ b/lib/unistd.in.h
@@ -40,6 +40,24 @@
# undef _GL_INCLUDING_UNISTD_H
#endif
+/* Avoid lseek bugs in FreeBSD, macOS <https://bugs.gnu.org/61386>.
+ This bug is fixed after FreeBSD 13; see <https://bugs.freebsd.org/256205>.
+ Use macOS "9999" to stand for a future fixed macOS version. */
+#if defined __FreeBSD__ && __FreeBSD__ < 14
+# undef SEEK_DATA
+# undef SEEK_HOLE
+#elif defined __APPLE__ && defined __MACH__ && defined SEEK_DATA
+# ifdef __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
+# include <AvailabilityMacros.h>
+# endif
+# if (!defined MAC_OS_X_VERSION_MIN_REQUIRED \
+ || MAC_OS_X_VERSION_MIN_REQUIRED < 99990000)
+# include <sys/fcntl.h> /* It also defines the two macros. */
+# undef SEEK_DATA
+# undef SEEK_HOLE
+# endif
+#endif
+
/* Get all possible declarations of gethostname(). */
#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
&& !defined _GL_INCLUDING_WINSOCK2_H
@@ -541,17 +559,22 @@ _GL_CXXALIASWARN (dup2);
Return newfd if successful, otherwise -1 and errno set.
See the Linux man page at
<https://www.kernel.org/doc/man-pages/online/pages/man2/dup3.2.html>. */
-# if @HAVE_DUP3@
+# if @REPLACE_DUP3@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef dup3
# define dup3 rpl_dup3
# endif
_GL_FUNCDECL_RPL (dup3, int, (int oldfd, int newfd, int flags));
_GL_CXXALIAS_RPL (dup3, int, (int oldfd, int newfd, int flags));
# else
+# if !@HAVE_DUP3@
_GL_FUNCDECL_SYS (dup3, int, (int oldfd, int newfd, int flags));
+# endif
_GL_CXXALIAS_SYS (dup3, int, (int oldfd, int newfd, int flags));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (dup3);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef dup3
# if HAVE_RAW_DECL_DUP3
@@ -870,7 +893,9 @@ _GL_FUNCDECL_SYS (execvpe, int,
_GL_CXXALIAS_SYS (execvpe, int,
(const char *program, char * const *argv, char * const *env));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (execvpe);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef execvpe
# if HAVE_RAW_DECL_EXECVPE
@@ -925,7 +950,9 @@ _GL_FUNCDECL_SYS (faccessat, int,
_GL_CXXALIAS_SYS (faccessat, int,
(int fd, char const *file, int mode, int flag));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (faccessat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef faccessat
# if HAVE_RAW_DECL_FACCESSAT
@@ -1002,11 +1029,22 @@ _GL_WARN_ON_USE (fchownat, "fchownat is not portable - "
Return 0 if successful, otherwise -1 and errno set.
See POSIX:2008 specification
<https://pubs.opengroup.org/onlinepubs/9699919799/functions/fdatasync.html>. */
-# if !@HAVE_FDATASYNC@ || !@HAVE_DECL_FDATASYNC@
+# if @REPLACE_FDATASYNC@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef fdatasync
+# define fdatasync rpl_fdatasync
+# endif
+_GL_FUNCDECL_RPL (fdatasync, int, (int fd));
+_GL_CXXALIAS_RPL (fdatasync, int, (int fd));
+# else
+# if !@HAVE_FDATASYNC@|| !@HAVE_DECL_FDATASYNC@
_GL_FUNCDECL_SYS (fdatasync, int, (int fd));
-# endif
+# endif
_GL_CXXALIAS_SYS (fdatasync, int, (int fd));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (fdatasync);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef fdatasync
# if HAVE_RAW_DECL_FDATASYNC
@@ -1053,7 +1091,9 @@ _GL_FUNCDECL_SYS (ftruncate, int, (int fd, off_t length));
# endif
_GL_CXXALIAS_SYS (ftruncate, int, (int fd, off_t length));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (ftruncate);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef ftruncate
# if HAVE_RAW_DECL_FTRUNCATE
@@ -1185,11 +1225,22 @@ _GL_WARN_ON_USE (getdtablesize, "getdtablesize is unportable - "
#if @GNULIB_GETENTROPY@
/* Fill a buffer with random bytes. */
-# if !@HAVE_GETENTROPY@
+# if @REPLACE_GETENTROPY@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef getentropy
+# define getentropy rpl_getentropy
+# endif
+_GL_FUNCDECL_RPL (getentropy, int, (void *buffer, size_t length));
+_GL_CXXALIAS_RPL (getentropy, int, (void *buffer, size_t length));
+# else
+# if !@HAVE_GETENTROPY@
_GL_FUNCDECL_SYS (getentropy, int, (void *buffer, size_t length));
-# endif
+# endif
_GL_CXXALIAS_SYS (getentropy, int, (void *buffer, size_t length));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getentropy);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef getentropy
# if HAVE_RAW_DECL_GETENTROPY
@@ -1323,7 +1374,9 @@ _GL_FUNCDECL_SYS (getlogin_r, int, (char *name, size_t size)
int size. */
_GL_CXXALIAS_SYS_CAST (getlogin_r, int, (char *name, size_t size));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (getlogin_r);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef getlogin_r
# if HAVE_RAW_DECL_GETLOGIN_R
@@ -1661,7 +1714,9 @@ _GL_CXXALIAS_SYS (linkat, int,
(int fd1, const char *path1, int fd2, const char *path2,
int flag));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (linkat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef linkat
# if HAVE_RAW_DECL_LINKAT
@@ -1742,8 +1797,9 @@ _GL_WARN_ON_USE (pipe, "pipe is unportable - "
Return 0 upon success, or -1 with errno set upon failure.
See also the Linux man page at
<https://www.kernel.org/doc/man-pages/online/pages/man2/pipe2.2.html>. */
-# if @HAVE_PIPE2@
+# if @REPLACE_PIPE2@
# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef pipe2
# define pipe2 rpl_pipe2
# endif
_GL_FUNCDECL_RPL (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
@@ -1752,7 +1808,9 @@ _GL_CXXALIAS_RPL (pipe2, int, (int fd[2], int flags));
_GL_FUNCDECL_SYS (pipe2, int, (int fd[2], int flags) _GL_ARG_NONNULL ((1)));
_GL_CXXALIAS_SYS (pipe2, int, (int fd[2], int flags));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (pipe2);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef pipe2
# if HAVE_RAW_DECL_PIPE2
@@ -1787,7 +1845,9 @@ _GL_FUNCDECL_SYS (pread, ssize_t,
_GL_CXXALIAS_SYS (pread, ssize_t,
(int fd, void *buf, size_t bufsize, off_t offset));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (pread);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef pread
# if HAVE_RAW_DECL_PREAD
@@ -1822,7 +1882,9 @@ _GL_FUNCDECL_SYS (pwrite, ssize_t,
_GL_CXXALIAS_SYS (pwrite, ssize_t,
(int fd, const void *buf, size_t bufsize, off_t offset));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (pwrite);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef pwrite
# if HAVE_RAW_DECL_PWRITE
@@ -1936,7 +1998,9 @@ _GL_CXXALIAS_SYS (readlinkat, ssize_t,
(int fd, char const *restrict file,
char *restrict buf, size_t len));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (readlinkat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef readlinkat
# if HAVE_RAW_DECL_READLINKAT
@@ -1996,15 +2060,27 @@ _GL_CXXALIASWARN (rmdir);
Platforms with no ability to set the hostname return -1 and set
errno = ENOSYS. */
-# if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@
+# if @REPLACE_SETHOSTNAME@
+# if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+# undef sethostname
+# define sethostname rpl_sethostname
+# endif
+_GL_FUNCDECL_RPL (sethostname, int, (const char *name, size_t len)
+ _GL_ARG_NONNULL ((1)));
+_GL_CXXALIAS_RPL (sethostname, int, (const char *name, size_t len));
+# else
+# if !@HAVE_SETHOSTNAME@ || !@HAVE_DECL_SETHOSTNAME@
_GL_FUNCDECL_SYS (sethostname, int, (const char *name, size_t len)
_GL_ARG_NONNULL ((1)));
-# endif
+# endif
/* Need to cast, because on Solaris 11 2011-10, Mac OS X 10.5, IRIX 6.5
and FreeBSD 6.4 the second parameter is int. On Solaris 11
2011-10, the first parameter is not const. */
_GL_CXXALIAS_SYS_CAST (sethostname, int, (const char *name, size_t len));
+# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (sethostname);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef sethostname
# if HAVE_RAW_DECL_SETHOSTNAME
@@ -2113,7 +2189,9 @@ _GL_FUNCDECL_SYS (symlinkat, int,
_GL_CXXALIAS_SYS (symlinkat, int,
(char const *contents, int fd, char const *file));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (symlinkat);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef symlinkat
# if HAVE_RAW_DECL_SYMLINKAT
@@ -2143,7 +2221,9 @@ _GL_FUNCDECL_SYS (truncate, int, (const char *filename, off_t length)
# endif
_GL_CXXALIAS_SYS (truncate, int, (const char *filename, off_t length));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (truncate);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef truncate
# if HAVE_RAW_DECL_TRUNCATE
@@ -2173,7 +2253,9 @@ _GL_FUNCDECL_SYS (ttyname_r, int,
_GL_CXXALIAS_SYS (ttyname_r, int,
(int fd, char *buf, size_t buflen));
# endif
+# if __GLIBC__ >= 2
_GL_CXXALIASWARN (ttyname_r);
+# endif
#elif defined GNULIB_POSIXCHECK
# undef ttyname_r
# if HAVE_RAW_DECL_TTYNAME_R
diff --git a/lib/verify.h b/lib/verify.h
index d4beccad96a..f0b3fc5851b 100644
--- a/lib/verify.h
+++ b/lib/verify.h
@@ -37,7 +37,7 @@
&& (4 < __GNUC__ + (6 <= __GNUC_MINOR__) || 5 <= __clang_major__)))
# define _GL_HAVE__STATIC_ASSERT 1
# endif
-# if (202000 <= __STDC_VERSION__ \
+# if (202311 <= __STDC_VERSION__ \
|| (!defined __STRICT_ANSI__ && 9 <= __GNUC__))
# define _GL_HAVE__STATIC_ASSERT1 1
# endif
@@ -222,10 +222,32 @@ template <int w>
/* _GL_STATIC_ASSERT_H is defined if this code is copied into assert.h. */
#ifdef _GL_STATIC_ASSERT_H
-# if !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert
-# define _Static_assert(R, ...) \
- _GL_VERIFY ((R), "static assertion failed", -)
+/* Define _Static_assert if needed. */
+/* With clang ≥ 3.8.0 in C++ mode, _Static_assert already works and accepts
+ 1 or 2 arguments. We better don't override it, because clang's standard
+ C++ library uses static_assert inside classes in several places, and our
+ replacement via _GL_VERIFY does not work in these contexts. */
+# if (defined __cplusplus && defined __clang__ \
+ && (4 <= __clang_major__ + (8 <= __clang_minor__)))
+# if 5 <= __clang_major__
+/* Avoid "warning: 'static_assert' with no message is a C++17 extension". */
+# pragma clang diagnostic ignored "-Wc++17-extensions"
+# else
+/* Avoid "warning: static_assert with no message is a C++1z extension". */
+# pragma clang diagnostic ignored "-Wc++1z-extensions"
+# endif
+# elif !defined _GL_HAVE__STATIC_ASSERT1 && !defined _Static_assert
+# if !defined _MSC_VER || defined __clang__
+# define _Static_assert(...) \
+ _GL_VERIFY (__VA_ARGS__, "static assertion failed", -)
+# else
+ /* Work around MSVC preprocessor incompatibility with ISO C; see
+ <https://stackoverflow.com/questions/5134523/>. */
+# define _Static_assert(R, ...) \
+ _GL_VERIFY ((R), "static assertion failed", -)
+# endif
# endif
+/* Define static_assert if needed. */
# if (!defined static_assert \
&& __STDC_VERSION__ < 202311 \
&& (!defined __cplusplus \
@@ -235,15 +257,16 @@ template <int w>
/* MSVC 14 in C++ mode supports the two-arguments static_assert but not
the one-argument static_assert, and it does not support _Static_assert.
We have to play preprocessor tricks to distinguish the two cases.
- Since the MSVC preprocessor is not ISO C compliant (cf.
- <https://stackoverflow.com/questions/5134523/>), the solution is specific
- to MSVC. */
+ Since the MSVC preprocessor is not ISO C compliant (see above),.
+ the solution is specific to MSVC. */
# define _GL_EXPAND(x) x
# define _GL_SA1(a1) static_assert ((a1), "static assertion failed")
# define _GL_SA2 static_assert
# define _GL_SA3 static_assert
# define _GL_SA_PICK(x1,x2,x3,x4,...) x4
# define static_assert(...) _GL_EXPAND(_GL_SA_PICK(__VA_ARGS__,_GL_SA3,_GL_SA2,_GL_SA1)) (__VA_ARGS__)
+/* Avoid "fatal error C1189: #error: The C++ Standard Library forbids macroizing keywords." */
+# define _ALLOW_KEYWORD_MACROS 1
# else
# define static_assert _Static_assert /* C11 requires this #define. */
# endif
@@ -252,7 +275,9 @@ template <int w>
/* @assert.h omit start@ */
-#if 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
+#if defined __clang_major__ && __clang_major__ < 5
+# define _GL_HAS_BUILTIN_TRAP 0
+#elif 3 < __GNUC__ + (3 < __GNUC_MINOR__ + (4 <= __GNUC_PATCHLEVEL__))
# define _GL_HAS_BUILTIN_TRAP 1
#elif defined __has_builtin
# define _GL_HAS_BUILTIN_TRAP __has_builtin (__builtin_trap)
@@ -260,7 +285,9 @@ template <int w>
# define _GL_HAS_BUILTIN_TRAP 0
#endif
-#if 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
+#if defined __clang_major__ && __clang_major__ < 5
+# define _GL_HAS_BUILTIN_UNREACHABLE 0
+#elif 4 < __GNUC__ + (5 <= __GNUC_MINOR__)
# define _GL_HAS_BUILTIN_UNREACHABLE 1
#elif defined __has_builtin
# define _GL_HAS_BUILTIN_UNREACHABLE __has_builtin (__builtin_unreachable)
diff --git a/lib/xalloc-oversized.h b/lib/xalloc-oversized.h
index 05ef7028137..5dbdfb5506a 100644
--- a/lib/xalloc-oversized.h
+++ b/lib/xalloc-oversized.h
@@ -1,7 +1,6 @@
/* xalloc-oversized.h -- memory allocation size checking
- Copyright (C) 1990-2000, 2003-2004, 2006-2023 Free Software
- Foundation, Inc.
+ Copyright (C) 1990-2000, 2003-2004, 2006-2023 Free Software Foundation, Inc.
This file is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 1e0935f565f..4aa01e77e4e 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -74,7 +74,7 @@ AUTOGENEL = ${loaddefs} ${srcdir}/cus-load.el ${srcdir}/finder-inf.el \
# Set load-prefer-newer for the benefit of the non-bootstrappers.
BYTE_COMPILE_FLAGS = \
--eval "(setq load-prefer-newer t byte-compile-warnings 'all)" \
- $(BYTE_COMPILE_EXTRA_FLAGS)
+ --eval "(setq org--built-in-p t)" $(BYTE_COMPILE_EXTRA_FLAGS)
# ... but we must prefer .elc files for those in the early bootstrap.
compile-first: BYTE_COMPILE_FLAGS = $(BYTE_COMPILE_EXTRA_FLAGS)
diff --git a/lisp/abbrev.el b/lisp/abbrev.el
index e1311dbc83b..1a665efb0a5 100644
--- a/lisp/abbrev.el
+++ b/lisp/abbrev.el
@@ -501,7 +501,7 @@ PROPS is a list of properties."
(defun abbrev-table-p (object)
"Return non-nil if OBJECT is an abbrev table."
(and (obarrayp object)
- (numberp (ignore-error 'wrong-type-argument
+ (numberp (ignore-error wrong-type-argument
(abbrev-table-get object :abbrev-table-modiff)))))
(defun abbrev-table-empty-p (object &optional ignore-system)
diff --git a/lisp/allout.el b/lisp/allout.el
index 4d5d814ae01..be2fd632c69 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -5390,7 +5390,7 @@ Defaults:
;; not specified -- default it:
(setq tobuf (concat "*" (buffer-name frombuf) " exposed*")))
(if (listp format)
- (nreverse format))
+ (setq format (reverse format)))
(let* ((listified
(progn (set-buffer frombuf)
diff --git a/lisp/apropos.el b/lisp/apropos.el
index 5d7fe6962a5..e95f45f1804 100644
--- a/lisp/apropos.el
+++ b/lisp/apropos.el
@@ -54,6 +54,8 @@
;;; Code:
+(eval-when-compile (require 'cl-lib))
+
(defgroup apropos nil
"Apropos commands for users and programmers."
:group 'help
@@ -193,9 +195,6 @@ property list, WIDGET-DOC is the widget docstring, FACE-DOC is
the face docstring, and CUS-GROUP-DOC is the custom group
docstring. Each docstring is either nil or a string.")
-(defvar apropos-item ()
- "Current item in or for `apropos-accumulator'.")
-
(defvar apropos-synonyms '(
("find" "open" "edit")
("kill" "cut")
@@ -906,6 +905,18 @@ Optional arg BUFFER (default: current buffer) is the buffer to check."
((symbolp def) (funcall f def))
((eq 'defun (car-safe def)) (funcall f (cdr def)))))))))
+(defun apropos--documentation-add (symbol doc pos)
+ (when (setq doc (apropos-documentation-internal doc))
+ (let ((score (apropos-score-doc doc))
+ (item (cdr (assq symbol apropos-accumulator))))
+ (unless item
+ (push (cons symbol
+ (setq item (list (apropos-score-symbol symbol 2)
+ nil nil)))
+ apropos-accumulator))
+ (setf (nth pos item) doc)
+ (setcar item (+ (car item) score)))))
+
;;;###autoload
(defun apropos-documentation (pattern &optional do-all)
"Show symbols whose documentation contains matches for PATTERN.
@@ -928,40 +939,28 @@ Returns list of symbols and documentation found."
(setq apropos--current (list #'apropos-documentation pattern do-all))
(apropos-parse-pattern pattern t)
(or do-all (setq do-all apropos-do-all))
- (setq apropos-accumulator () apropos-files-scanned ())
- (with-temp-buffer
- (let ((standard-input (current-buffer))
- (apropos-sort-by-scores apropos-documentation-sort-by-scores)
- f v sf sv)
- (apropos-documentation-check-doc-file)
- (funcall
- (if do-all #'mapatoms #'apropos--map-preloaded-atoms)
- (lambda (symbol)
- (setq f (apropos-safe-documentation symbol)
- v (get symbol 'variable-documentation))
- (if (integerp v) (setq v nil))
- (setq f (apropos-documentation-internal f)
- v (apropos-documentation-internal v))
- (setq sf (apropos-score-doc f)
- sv (apropos-score-doc v))
- (if (or f v)
- (if (setq apropos-item
- (cdr (assq symbol apropos-accumulator)))
- (progn
- (if f
- (progn
- (setcar (nthcdr 1 apropos-item) f)
- (setcar apropos-item (+ (car apropos-item) sf))))
- (if v
- (progn
- (setcar (nthcdr 2 apropos-item) v)
- (setcar apropos-item (+ (car apropos-item) sv)))))
- (setq apropos-accumulator
- (cons (list symbol
- (+ (apropos-score-symbol symbol 2) sf sv)
- f v)
- apropos-accumulator))))))
- (apropos-print nil "\n----------------\n" nil t))))
+ (let ((apropos-accumulator ())
+ (apropos-files-scanned ())
+ (delayed (make-hash-table :test #'equal)))
+ (with-temp-buffer
+ (let ((standard-input (current-buffer))
+ (apropos-sort-by-scores apropos-documentation-sort-by-scores)
+ f v)
+ (apropos-documentation-check-doc-file)
+ (funcall
+ (if do-all #'mapatoms #'apropos--map-preloaded-atoms)
+ (lambda (symbol)
+ (setq f (apropos-safe-documentation symbol)
+ v (get symbol 'variable-documentation))
+ (if (integerp v) (setq v nil))
+ (if (consp f)
+ (push (list symbol (cdr f) 1) (gethash (car f) delayed))
+ (apropos--documentation-add symbol f 1))
+ (if (consp v)
+ (push (list symbol (cdr v) 2) (gethash (car v) delayed))
+ (apropos--documentation-add symbol v 2))))
+ (maphash #'apropos--documentation-add-from-elc delayed)
+ (apropos-print nil "\n----------------\n" nil t)))))
(defun apropos-value-internal (predicate symbol function)
@@ -982,11 +981,11 @@ Returns list of symbols and documentation found."
symbol)))
(defun apropos-documentation-internal (doc)
+ ;; By the time we get here, refs to DOC or to .elc files should have
+ ;; been converted into actual strings.
+ (cl-assert (not (or (consp doc) (integerp doc))))
(cond
- ((consp doc)
- (apropos-documentation-check-elc-file (car doc)))
- ((and doc
- ;; Sanity check in case bad data sneaked into the
+ ((and ;; Sanity check in case bad data sneaked into the
;; documentation slot.
(stringp doc)
(string-match apropos-all-words-regexp doc)
@@ -1053,110 +1052,62 @@ non-nil."
;; So we exclude them.
(cond ((= 3 type) (boundp symbol))
((= 2 type) (fboundp symbol))))
- (or (and (setq apropos-item (assq symbol apropos-accumulator))
- (setcar (cdr apropos-item)
- (apropos-score-doc doc)))
- (setq apropos-item (list symbol
- (+ (apropos-score-symbol symbol 2)
- (apropos-score-doc doc))
- nil nil)
- apropos-accumulator (cons apropos-item
- apropos-accumulator)))
- (when apropos-match-face
- (setq doc (substitute-command-keys doc))
- (if (or (string-match apropos-pattern-quoted doc)
- (string-match apropos-all-words-regexp doc))
- (put-text-property (match-beginning 0)
- (match-end 0)
- 'face apropos-match-face doc)))
- (setcar (nthcdr type apropos-item) doc))))
+ (let ((apropos-item (assq symbol apropos-accumulator)))
+ (or (and apropos-item
+ (setcar (cdr apropos-item)
+ (apropos-score-doc doc)))
+ (setq apropos-item (list symbol
+ (+ (apropos-score-symbol symbol 2)
+ (apropos-score-doc doc))
+ nil nil)
+ apropos-accumulator (cons apropos-item
+ apropos-accumulator)))
+ (when apropos-match-face
+ (setq doc (substitute-command-keys doc))
+ (if (or (string-match apropos-pattern-quoted doc)
+ (string-match apropos-all-words-regexp doc))
+ (put-text-property (match-beginning 0)
+ (match-end 0)
+ 'face apropos-match-face doc)))
+ (setcar (nthcdr type apropos-item) doc)))))
(setq sepa (goto-char sepb)))))
-(defun apropos-documentation-check-elc-file (file)
- ;; .elc files have the location of the file specified as #$, but for
- ;; built-in files, that's a relative name (while for the rest, it's
- ;; absolute). So expand the name in the former case.
- (unless (file-name-absolute-p file)
- (setq file (expand-file-name file lisp-directory)))
- (if (or (member file apropos-files-scanned)
- (not (file-exists-p file)))
- nil
- (let (symbol doc beg end this-is-a-variable)
- (setq apropos-files-scanned (cons file apropos-files-scanned))
- (erase-buffer)
- (insert-file-contents file)
- (while (search-forward "#@" nil t)
- ;; Read the comment length, and advance over it.
- ;; This #@ may be a false positive, so don't get upset if
- ;; it's not followed by the expected number of bytes to skip.
- (when (and (setq end (ignore-errors (read))) (natnump end))
- (setq beg (1+ (point))
- end (+ (point) end -1))
- (forward-char)
- (if (save-restriction
- ;; match ^ and $ relative to doc string
- (narrow-to-region beg end)
- (re-search-forward apropos-all-words-regexp nil t))
- (progn
- (goto-char (+ end 2))
- (setq doc (buffer-substring beg end)
- end (- (match-end 0) beg)
- beg (- (match-beginning 0) beg))
- (when (apropos-true-hit-doc doc)
- (setq this-is-a-variable (looking-at "(def\\(var\\|const\\) ")
- symbol (progn
- (skip-chars-forward "(a-z")
- (forward-char)
- (read))
- symbol (if (consp symbol)
- (nth 1 symbol)
- symbol))
- (if (if this-is-a-variable
- (get symbol 'variable-documentation)
- (and (fboundp symbol) (apropos-safe-documentation symbol)))
- (progn
- (or (and (setq apropos-item (assq symbol apropos-accumulator))
- (setcar (cdr apropos-item)
- (+ (cadr apropos-item) (apropos-score-doc doc))))
- (setq apropos-item (list symbol
- (+ (apropos-score-symbol symbol 2)
- (apropos-score-doc doc))
- nil nil)
- apropos-accumulator (cons apropos-item
- apropos-accumulator)))
- (when apropos-match-face
- (setq doc (substitute-command-keys doc))
- (if (or (string-match apropos-pattern-quoted doc)
- (string-match apropos-all-words-regexp doc))
- (put-text-property (match-beginning 0)
- (match-end 0)
- 'face apropos-match-face doc)))
- (setcar (nthcdr (if this-is-a-variable 3 2)
- apropos-item)
- doc)))))))))))
-
-
+(defun apropos--documentation-add-from-elc (file defs)
+ (erase-buffer)
+ (insert-file-contents
+ (if (file-name-absolute-p file) file
+ (expand-file-name file lisp-directory)))
+ (pcase-dolist (`(,symbol ,begbyte ,pos) defs)
+ ;; We presume the file-bytes are the same as the buffer bytes,
+ ;; which should indeed be the case because .elc files use the
+ ;; `emacs-internal' encoding.
+ (let* ((beg (byte-to-position (+ (point-min) begbyte)))
+ (sizeend (1- beg))
+ (size (save-excursion
+ (goto-char beg)
+ (skip-chars-backward " 0-9")
+ (cl-assert (looking-back "#@" (- (point) 2)))
+ (string-to-number (buffer-substring (point) sizeend))))
+ (end (byte-to-position (+ begbyte size -1))))
+ (when (save-restriction
+ ;; match ^ and $ relative to doc string
+ (narrow-to-region beg end)
+ (goto-char (point-min))
+ (re-search-forward apropos-all-words-regexp nil t))
+ (let ((doc (buffer-substring beg end)))
+ (when (apropos-true-hit-doc doc)
+ (apropos--documentation-add symbol doc pos)))))))
(defun apropos-safe-documentation (function)
"Like `documentation', except it avoids calling `get_doc_string'.
Will return nil instead."
- (while (and function (symbolp function))
- (setq function (symbol-function function)))
- (if (eq (car-safe function) 'macro)
- (setq function (cdr function)))
- (setq function (if (byte-code-function-p function)
- (if (> (length function) 4)
- (aref function 4))
- (if (autoloadp function)
- (nth 2 function)
- (if (eq (car-safe function) 'lambda)
- (if (stringp (nth 2 function))
- (nth 2 function)
- (if (stringp (nth 3 function))
- (nth 3 function)))))))
- (if (integerp function)
- nil
- function))
+ (when (setq function (indirect-function function))
+ ;; FIXME: `function-documentation' says not to call it, but `documentation'
+ ;; would turn (FILE . POS) references into strings too eagerly, so
+ ;; we do want to use the lower-level function.
+ (let ((doc (function-documentation function)))
+ ;; Docstrings from the DOC file are handled elsewhere.
+ (if (integerp doc) nil doc))))
(defcustom apropos-compact-layout nil
"If non-nil, use a single line per binding."
@@ -1262,14 +1213,16 @@ as a heading."
(put-text-property (- (point) 3) (point)
'face 'apropos-keybinding)))
(terpri))
- (apropos-print-doc 2
+ (apropos-print-doc apropos-item
+ 2
(if (commandp symbol)
'apropos-command
(if (macrop symbol)
'apropos-macro
'apropos-function))
(not nosubst))
- (apropos-print-doc 3
+ (apropos-print-doc apropos-item
+ 3
(if (custom-variable-p symbol)
'apropos-user-option
'apropos-variable)
@@ -1287,10 +1240,10 @@ as a heading."
(lambda (_)
(message "Value: %s" value))))
(insert "\n")))
- (apropos-print-doc 7 'apropos-group t)
- (apropos-print-doc 6 'apropos-face t)
- (apropos-print-doc 5 'apropos-widget t)
- (apropos-print-doc 4 'apropos-plist nil))
+ (apropos-print-doc apropos-item 7 'apropos-group t)
+ (apropos-print-doc apropos-item 6 'apropos-face t)
+ (apropos-print-doc apropos-item 5 'apropos-widget t)
+ (apropos-print-doc apropos-item 4 'apropos-plist nil))
(setq-local truncate-partial-width-windows t)
(setq-local truncate-lines t)))
(when help-window-select
@@ -1298,7 +1251,7 @@ as a heading."
(prog1 apropos-accumulator
(setq apropos-accumulator ()))) ; permit gc
-(defun apropos-print-doc (i type do-keys)
+(defun apropos-print-doc (apropos-item i type do-keys)
(let ((doc (nth i apropos-item)))
(when (stringp doc)
(if apropos-compact-layout
diff --git a/lisp/bindings.el b/lisp/bindings.el
index f4881ac388c..c77b64c05da 100644
--- a/lisp/bindings.el
+++ b/lisp/bindings.el
@@ -670,6 +670,8 @@ or not."
"Return the value of symbol VAR if it is bound, else nil.
Note that if `lexical-binding' is in effect, this function isn't
meaningful if it refers to a lexically bound variable."
+ (unless (symbolp var)
+ (signal 'wrong-type-argument (list 'symbolp var)))
`(and (boundp (quote ,var)) ,var))
;; Use mode-line-mode-menu for local minor-modes only.
diff --git a/lisp/bs.el b/lisp/bs.el
index 60dc74fbfce..70868591196 100644
--- a/lisp/bs.el
+++ b/lisp/bs.el
@@ -420,9 +420,6 @@ naming a sort behavior. Default is \"by nothing\" which means no sorting."
Non-nil means to show all buffers. Otherwise show buffers
defined by current configuration `bs-current-configuration'.")
-(defvar bs--window-config-coming-from nil
- "Window configuration before starting Buffer Selection Menu.")
-
(defvar bs--intern-show-never "^ \\|\\*buffer-selection\\*"
"Regular expression specifying which buffers never to show.
A buffer whose name matches this regular expression will never be
@@ -491,6 +488,23 @@ Used internally, only.")
"<mouse-2>" #'bs-mouse-select
"<mouse-3>" #'bs-mouse-select-other-frame)
+(defcustom bs-default-action-list '((display-buffer-reuse-window
+ display-buffer-below-selected)
+ (reusable-frames . nil)
+ (window-height . window-min-height))
+ "Default action list for showing the '*bs-selection*' buffer.
+
+This list will be passed to `pop-to-buffer' as its ACTION argument.
+It should be a cons cell (FUNCTIONS . ALIST), where FUNCTIONS is
+an action function or a list of action functions and ALIST is an
+action alist. Each such action function should accept two
+arguments: a buffer to display and an alist of the same form as
+ALIST. See `display-buffer' for details."
+ :type display-buffer--action-custom-type
+ :risky t
+ :version "30.1"
+ :group 'bs)
+
;; ----------------------------------------------------------------------
;; Functions
;; ----------------------------------------------------------------------
@@ -590,21 +604,6 @@ in `bs-string-current' or `bs-string-current-marked'."
(format "Show buffer by configuration %S"
bs-current-configuration)))
-(defun bs--track-window-changes (frame)
- "Track window changes to refresh the buffer list.
-Used from `window-size-change-functions'."
- (let ((win (get-buffer-window "*buffer-selection*" frame)))
- (when win
- (with-selected-window win
- (bs--set-window-height)))))
-
-(defun bs--remove-hooks ()
- "Remove `bs--track-window-changes' and auxiliary hooks."
- (remove-hook 'window-size-change-functions 'bs--track-window-changes)
- ;; Remove itself
- (remove-hook 'kill-buffer-hook 'bs--remove-hooks t)
- (remove-hook 'change-major-mode-hook 'bs--remove-hooks t))
-
(put 'bs-mode 'mode-class 'special)
(define-derived-mode bs-mode nil "Buffer-Selection-Menu"
@@ -663,25 +662,13 @@ apply it.
(setq-local font-lock-defaults '(bs-mode-font-lock-keywords t))
(setq-local font-lock-verbose nil)
(setq-local font-lock-global-modes '(not bs-mode))
- (setq-local revert-buffer-function 'bs-refresh)
- (add-hook 'window-size-change-functions 'bs--track-window-changes)
- (add-hook 'kill-buffer-hook 'bs--remove-hooks nil t)
- (add-hook 'change-major-mode-hook 'bs--remove-hooks nil t))
-
-(defun bs--restore-window-config ()
- "Restore window configuration on the current frame."
- (when bs--window-config-coming-from
- (let ((frame (selected-frame)))
- (unwind-protect
- (set-window-configuration bs--window-config-coming-from)
- (select-frame frame)))
- (setq bs--window-config-coming-from nil)))
+ (setq-local revert-buffer-function 'bs-refresh))
(defun bs-kill ()
"Let buffer disappear and reset window configuration."
(interactive)
(bury-buffer (current-buffer))
- (bs--restore-window-config))
+ (quit-window))
(defun bs-abort ()
"Ding and leave Buffer Selection Menu without a selection."
@@ -705,7 +692,9 @@ Arguments are IGNORED (for `revert-buffer')."
(defun bs--set-window-height ()
"Change the height of the selected window to suit the current buffer list."
(unless (one-window-p t)
- (fit-window-to-buffer (selected-window) bs-max-window-height)))
+ (fit-window-to-buffer (selected-window) bs-max-window-height nil nil nil
+ ;; preserve-size
+ t)))
(defun bs--current-buffer ()
"Return buffer on current line.
@@ -742,7 +731,7 @@ Leave Buffer Selection Menu."
(interactive)
(let ((buffer (bs--current-buffer)))
(bury-buffer (current-buffer))
- (bs--restore-window-config)
+ (quit-window)
(switch-to-buffer buffer)
(when bs--marked-buffers
;; Some marked buffers for selection
@@ -765,7 +754,7 @@ Leave Buffer Selection Menu."
(interactive)
(let ((buffer (bs--current-buffer)))
(bury-buffer (current-buffer))
- (bs--restore-window-config)
+ (quit-window)
(switch-to-buffer-other-window buffer)))
(defun bs-tmp-select-other-window ()
@@ -781,7 +770,7 @@ Leave Buffer Selection Menu."
(interactive)
(let ((buffer (bs--current-buffer)))
(bury-buffer (current-buffer))
- (bs--restore-window-config)
+ (quit-window)
(switch-to-buffer-other-frame buffer)))
(defun bs-mouse-select-other-frame (event)
@@ -944,7 +933,7 @@ WHAT is a value of nil, `never', or `always'."
(end-of-line)
(if (eobp) (point) (1+ (point)))))
(when (eobp)
- (backward-delete-char 1)
+ (delete-char -1)
(beginning-of-line)
(recenter -1))
(bs--set-window-height)))
@@ -1165,7 +1154,18 @@ Select buffer *buffer-selection* and display buffers according to current
configuration `bs-current-configuration'. Set window height, fontify buffer
and move point to current buffer."
(setq bs-current-list list)
- (switch-to-buffer (get-buffer-create "*buffer-selection*"))
+ (let* ((window-combination-limit 'window-size)
+ (bs-buf (get-buffer-create "*buffer-selection*"))
+ (bs-win (progn
+ (pop-to-buffer bs-buf bs-default-action-list)
+ (selected-window))))
+ ;; Delete other windows showing *buffer-selection*.
+ ;; Done after pop-to-buffer, instead of just calling delete-windows-on,
+ ;; to allow display-buffer-reuse(-mode)?-window to be used in ALIST.
+ (dolist (w (get-buffer-window-list bs-buf 'not t))
+ (unless (eq w bs-win)
+ (with-demoted-errors "Error deleting window: %S"
+ (delete-window w)))))
(bs-mode)
(let* ((inhibit-read-only t)
(map-fun (lambda (entry)
@@ -1346,11 +1346,11 @@ ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu."
'help-echo "mouse-2: select this buffer, mouse-3: select in other frame"
'mouse-face 'highlight))
-(defun bs--get-mode-name (start-buffer _all-buffers)
+(defun bs--get-mode-name (_start-buffer _all-buffers)
"Return the name of mode of current buffer for Buffer Selection Menu.
START-BUFFER is the buffer where we started buffer selection.
ALL-BUFFERS is the list of buffers appearing in Buffer Selection Menu."
- (format-mode-line mode-name nil nil start-buffer))
+ (format-mode-line mode-name nil nil nil))
(defun bs--get-file-name (_start-buffer _all-buffers)
"Return string for column `File' in Buffer Selection Menu.
@@ -1435,21 +1435,8 @@ for buffer selection."
;; Only when not in buffer *buffer-selection*
;; we have to set the buffer we started the command
(setq bs--buffer-coming-from (current-buffer)))
- (let ((liste (bs-buffer-list))
- (active-window (get-window-with-predicate
- (lambda (w)
- (string= (buffer-name (window-buffer w))
- "*buffer-selection*"))
- nil (selected-frame))))
- (if active-window
- (select-window active-window)
- (bs--restore-window-config)
- (setq bs--window-config-coming-from (current-window-configuration))
- (when (> (window-height) 7)
- ;; Errors would mess with the window configuration (bug#10882).
- (ignore-errors (select-window (split-window-below)))))
- (bs-show-in-buffer liste)
- (bs-message-without-log "%s" (bs--current-config-message)))))
+ (bs-show-in-buffer (bs-buffer-list))
+ (bs-message-without-log "%s" (bs--current-config-message))))
(defun bs--configuration-name-for-prefix-arg (prefix)
"Convert prefix argument PREFIX to a name of a buffer configuration.
diff --git a/lisp/calc/calc-ext.el b/lisp/calc/calc-ext.el
index bb0ecd2c84f..52c0fa4f69f 100644
--- a/lisp/calc/calc-ext.el
+++ b/lisp/calc/calc-ext.el
@@ -1297,12 +1297,13 @@ calc-kill calc-kill-region calc-yank))))
0))
(let ((msg (nth calc-prefix-help-phase msgs)))
(message "%s" (if msg
- (concat group ": " msg ":"
+ (concat group ": " (substitute-command-keys msg) ":"
(make-string
(- (apply #'max (mapcar #'length msgs))
(length msg))
?\s)
- " [MORE]"
+ (substitute-command-keys
+ " [\\`?'=MORE]")
(if key
(concat " " (char-to-string key)
"-")
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el
index d0052472836..6b3e5cd64b1 100644
--- a/lisp/calc/calc-help.el
+++ b/lisp/calc/calc-help.el
@@ -39,8 +39,11 @@
(or calc-dispatch-help (sit-for echo-keystrokes))
(let ((key (calc-read-key-sequence
(if calc-dispatch-help
- "Calc Help options: Help, Info, Tutorial, Summary; Key, Function; ?=more"
- (format "%s (Type ? for a list of Calc Help options)"
+ (substitute-command-keys
+ (concat "Calc Help options: \\`h'elp, \\`i'nfo, \\`t'utorial, "
+ "\\`s'ummary; \\`k'ey, \\`f'unction; \\`?'=more"))
+ (format (substitute-command-keys
+ "%s (Type \\`?' for a list of Calc Help options)")
(key-description (this-command-keys))))
calc-help-map)))
(setq key (lookup-key calc-help-map key))
@@ -76,7 +79,10 @@
(describe-function 'calc-help-for-help)
(select-window (get-buffer-window "*Help*"))
(while (progn
- (message "Calc Help options: Help, Info, ... press SPC, DEL to scroll, C-g to cancel")
+ (message (substitute-command-keys
+ (concat
+ "Calc Help options: \\`h'elp, \\`i'nfo, ... press "
+ "\\`SPC', \\`DEL' to scroll, \\`C-g' to cancel")))
(memq (setq key (read-event))
'(? ?\C-h ?\C-? ?\C-v ?\M-v)))
(condition-case nil
@@ -453,47 +459,47 @@
(defun calc-h-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Help; Bindings; Info, Tutorial, Summary; News"
- "describe: Key, C (briefly), Function, Variable")
+ '("\\`h'elp; \\`b'indings; \\`i'nfo, \\`t'utorial, \\`s'ummary; \\`n'ews"
+ "describe: \\`k'ey, \\`c' (briefly), \\`f'unction, \\`v'ariable")
"help" ?h))
(defun calc-inverse-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("I + S (arcsin), C (arccos), T (arctan); Q (square)"
- "I + E (ln), L (exp), B (alog: B^X); f E (lnp1), f L (expm1)"
- "I + F (ceiling), R (truncate); a S (invert func)"
- "I + a m (match-not); c h (from-hms); k n (prev prime)"
- "I + f G (gamma-Q); f e (erfc); k B (etc., lower-tail dists)"
- "I + V S (reverse sort); V G (reverse grade)"
- "I + v s (remove subvec); v h (tail)"
- "I + t + (alt sum), t M (mean with error)"
- "I + t S (pop std dev), t C (pop covar)")
+ '("\\`I' + \\`S' (arcsin), \\`C' (arccos), \\`T' (arctan); \\`Q' (square)"
+ "\\`I' + \\`E' (ln), \\`L' (exp), \\`B' (alog: B^X); \\`f E' (lnp1), \\`f L' (expm1)"
+ "\\`I' + \\`F' (ceiling), \\`R' (truncate); \\`a S' (invert func)"
+ "\\`I' + \\`a m' (match-not); \\`c h' (from-hms); \\`k n' (prev prime)"
+ "\\`I' + \\`f G' (gamma-Q); \\`f e' (erfc); \\`k B' (etc., lower-tail dists)"
+ "\\`I' + \\`V S' (reverse sort); \\`V G' (reverse grade)"
+ "\\`I' + \\`v s' (remove subvec); \\`v h' (tail)"
+ "\\`I' + \\`t' + (alt sum), \\`t M' (mean with error)"
+ "\\`I' + \\`t S' (pop std dev), \\`t C' (pop covar)")
"inverse" nil))
(defun calc-hyperbolic-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("H + S (sinh), C (cosh), T (tanh); E (exp10), L (log10)"
- "H + F (float floor), R (float round); P (constant \"e\")"
- "H + a d (total derivative); k c (permutations)"
- "H + k b (bern-poly), k e (euler-poly); k s (stirling-2)"
- "H + f G (gamma-g), f B (beta-B); v h (rhead), v k (rcons)"
- "H + v e (expand w/filler); V H (weighted histogram)"
- "H + a S (general solve eqn), j I (general isolate)"
- "H + a R (widen/root), a N (widen/min), a X (widen/max)"
- "H + t M (median), t S (variance), t C (correlation coef)"
- "H + c f/F/c (pervasive float/frac/clean)")
+ '("\\`H' + \\`S' (sinh), \\`C' (cosh), \\`T' (tanh); \\`E' (exp10), \\`L' (log10)"
+ "\\`H' + \\`F' (float floor), \\`R' (float round); \\`P' (constant \"e\")"
+ "\\`H' + \\`a d' (total derivative); \\`k c' (permutations)"
+ "\\`H' + \\`k b' (bern-poly), \\`k e' (euler-poly); \\`k s' (stirling-2)"
+ "\\`H' + \\`f G' (gamma-g), \\`f B' (beta-B); \\`v h' (rhead), \\`v k' (rcons)"
+ "\\`H' + \\`v e' (expand w/filler); \\`V H' (weighted histogram)"
+ "\\`H' + \\`a S' (general solve eqn), \\`j I' (general isolate)"
+ "\\`H' + \\`a R' (widen/root), \\`a N' (widen/min), \\`a X' (widen/max)"
+ "\\`H' + \\`t M' (median), \\`t S' (variance), \\`t C' (correlation coef)"
+ "\\`H' + \\`c' \\`f'/\\`F'/\\`c' (pervasive float/frac/clean)")
"hyperbolic" nil))
(defun calc-inv-hyp-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("I H + S (arcsinh), C (arccosh), T (arctanh)"
- "I H + E (log10), L (exp10); f G (gamma-G)"
- "I H + F (float ceiling), R (float truncate)"
- "I H + t S (pop variance)"
- "I H + a S (general invert func); v h (rtail)")
+ '("\\`I H' + \\`S' (arcsinh), \\`C' (arccosh), \\`T' (arctanh)"
+ "\\`I H' + \\`E' (log10), \\`L' (exp10); \\`f G' (gamma-G)"
+ "\\`I H' + \\`F' (float ceiling), \\`R' (float truncate)"
+ "\\`I H' + \\`t S' (pop variance)"
+ "\\`I H' + \\`a S' (general invert func); \\`v h' (rtail)")
"inverse-hyperbolic" nil))
(defun calc-option-prefix-help ()
@@ -505,10 +511,10 @@
(defun calc-f-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("miN, maX; Hypot; Im, Re; Sign; [, ] (incr/decr)"
- "Gamma, Beta, Erf, besselJ, besselY"
- "SHIFT + int-sQrt; Int-log, Exp(x)-1, Ln(x+1); arcTan2"
- "SHIFT + Abssqr; Mantissa, eXponent, Scale"
+ '("mi\\`n', ma\\`x'; \\`h'ypot; \\`i'm, \\`r'e; \\`s'ign; \\`[', \\`]' (incr/decr)"
+ "\\`g'amma, \\`b'eta, \\`e'rf, bessel\\`j', bessel\\`y'"
+ "int-s\\`Q'rt; \\`I'nt-log, \\`E'xp(x)-1, \\`L'n(x+1); arc\\`T'an2"
+ "\\`A'bssqr; \\`M'antissa, e\\`X'ponent, \\`S'cale"
"SHIFT + incomplete: Gamma-P, Beta-I")
"functions" ?f))
@@ -516,165 +522,165 @@
(defun calc-s-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Store, inTo, Xchg, Unstore; Recall, 0-9; : (:=); = (=>)"
- "Let; Copy, K=copy constant; Declare; Insert, Perm; Edit"
- "Negate, +, -, *, /, ^, &, |, [, ]; Map"
- "SHIFT + Decls, GenCount, TimeZone, Holidays; IntegLimit"
- "SHIFT + LineStyles, PointStyles, plotRejects; Units"
- "SHIFT + Eval-, AlgSimp-, ExtSimp-, FitRules")
+ '("\\`s'tore, in\\`t'o, \\`x'chg, \\`u'nstore; \\`r'ecall, \\`0'-\\`9'; \\`:' (:=); \\`=' (=>)"
+ "\\`l'et; \\`c'opy, \\`k'=copy constant; \\`d'eclare; \\`i'nsert, \\`p'erm; \\`e'dit"
+ "\\`n'egate, \\`+', \\`-', \\`*', \\`/', \\`^', \\`&', \\`|', \\`[', \\`]'; Map"
+ "\\`D'ecls, \\`G'enCount, \\`T'imeZone, \\`H'olidays; \\`I'ntegLimit"
+ "\\`L'ineStyles, \\`P'ointStyles, plot\\`R'ejects; \\`U'nits"
+ "\\`E'val-, \\`A'lgSimp-, e\\`X'tSimp-, \\`F'itRules")
"store" ?s))
(defun calc-r-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("digits 0-9: recall, same as `s r 0-9'"
- "Save to register, Insert from register")
+ '("digits \\`0'-\\`9': recall, same as \\`s r' \\`0'-\\`9'"
+ "\\`s'ave to register, \\`i'nsert from register")
"recall/register" ?r))
(defun calc-j-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Select, Additional, Once; eVal, Formula; Rewrite"
- "More, Less, 1-9, Next, Previous"
- "Unselect, Clear; Display; Enable; Breakable"
- "\\=' (replace), \\=` (edit), +, -, *, /, RET (grab), DEL"
- "SHIFT + swap: Left, Right; maybe: Select, Once"
- "SHIFT + Commute, Merge, Distrib, jump-Eqn, Isolate"
- "SHIFT + Negate, & (invert); Unpack")
+ '("\\`s'elect, \\`a'dditional, \\`o'nce; e\\`v'al, \\`f'ormula; \\`r'ewrite"
+ "\\`m'ore, \\`l'ess, \\`1'-\\`9', \\`n'ext, \\`p'revious"
+ "\\`u'nselect, \\`c'lear; \\`d'isplay; \\`e'nable; \\`b'reakable"
+ "\\=' (replace), \\=` (edit), \\`+', \\`-', \\`*', \\`/', \\`RET' (grab), \\`DEL'"
+ "swap: \\`L'eft, \\`R'ight; maybe: \\`S'elect, \\`O'nce"
+ "\\`C'ommute, \\`M'erge, \\`D'istrib, jump-\\`E'qn, \\`I'solate"
+ "\\`N'egate, \\`&' (invert); \\`U'npack")
"select" ?j))
(defun calc-a-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Simplify, Extended-simplify, eVal; \" (exp-formula)"
- "eXpand, Collect, Factor, Apart, Norm-rat"
- "GCD, /, \\, % (polys); Polint"
- "Derivative, Integral, Taylor; _ (subscr)"
- "suBstitute; Rewrite, Match"
- "SHIFT + Solve; Root, miN, maX; Poly-roots; Fit"
- "SHIFT + Map; Tabulate, + (sum), * (prod); num-Integ"
- "relations: =, # (not =), <, >, [ (< or =), ] (> or =)"
- "logical: & (and), | (or), ! (not); : (if)"
- "misc: { (in-set); . (rmeq)")
+ '("\\`s'implify, \\`e'xtended-simplify, e\\`v'al; \\`\"' (exp-formula)"
+ "e\\`x'pand, \\`c'ollect, \\`f'actor, \\`a'part, \\`n'orm-rat"
+ "\\`g' (GCD), \\`/', \\`\\', \\`%' (polys); \\`p'olint"
+ "\\`d'erivative, \\`i'ntegral, \\`t'aylor; \\`_' (subscr)"
+ "su\\`b'stitute; \\`r'ewrite, \\`m'atch"
+ "\\`S'olve; \\`R'oot, mi\\`N', ma\\`X'; \\`P'oly-roots; \\`F'it"
+ "\\`M'ap; \\`T'abulate, \\`+' (sum), \\`*' (prod); num-\\`I'nteg"
+ "relations: \\`=', \\`#' (not =), \\`<', \\`>', \\`[' (< or =), \\`]' (> or =)"
+ "logical: \\`&' (and), \\`|' (or), \\`!' (not); \\`:' (if)"
+ "misc: \\`{' (in-set); \\`.' (rmeq)")
"algebra" ?a))
(defun calc-b-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("And, Or, Xor, Diff, Not; Wordsize, Clip"
- "Lshift, Rshift, roTate; SHIFT + signed Lshift, Rshift"
- "SHIFT + business: Pv, Npv, Fv, pMt, #pmts, raTe, Irr"
- "SHIFT + business: Sln, sYd, Ddb; %ch")
+ '("\\`a'nd, \\`o'r, \\`x'or, \\`d'iff, \\`n'ot; \\`w'ordsize, \\`c'lip"
+ "\\`l'shift, \\`r'shift, ro\\`t'ate; signed \\`L'shift, \\`R'shift"
+ "business: \\`P'v, \\`N'pv, \\`F'v, p\\`M't, \\`#'pmts, ra\\`T'e, \\`I'rr"
+ "business: \\`S'ln, s\\`Y'd, \\`D'db; \\`%'ch")
"binary/bus" ?b))
(defun calc-c-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Deg, Rad, HMS; Float; Polar/rect; Clean, 0-9; %"
- "SHIFT + Fraction")
+ '("\\`d'eg, \\`r'ad, \\`h'ms; \\`f'loat; \\`p'olar/rect; \\`c'lean, \\`0'-\\`9'; \\`%'"
+ "\\`F'raction")
"convert" ?c))
(defun calc-d-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Group, \",\"; Normal, Fix, Sci, Eng, \".\"; Over"
- "Radix, Zeros, 2, 8, 0, 6; Hms; Date; Complex, I, J"
- "Why; Line-nums, line-Breaks; <, =, > (justify); Plain"
- "\" (strings); Truncate, [, ]; SPC (refresh), RET, @"
- "SHIFT + language: Normal, One-line, Big, Unformatted"
- "SHIFT + language: C, Pascal, Fortran; TeX, LaTeX, Eqn"
- "SHIFT + language: Yacas, X=Maxima, A=Giac"
- "SHIFT + language: Mathematica, W=Maple")
+ '("\\`g'roup, \\`,'; \\`n'ormal, \\`f'ix, \\`s'ci, \\`e'ng, \\`.'; \\`o'ver"
+ "\\`r'adix, \\`z'eros, \\`2', \\`8', \\`0', \\`6'; \\`h'ms; \\`d'ate; \\`c'omplex, \\`i', \\`j'"
+ "\\`w'hy; \\`l'ine-nums, line-\\`b'reaks; \\`<', \\`=', \\`>' (justify); \\`p'lain"
+ "\\`\"' (strings); \\`t'runcate, \\`[', \\`]'; \\`SPC' (refresh), \\`RET', \\`@'"
+ "language: \\`N'ormal, \\`O'ne-line, \\`B'ig, \\`U'nformatted"
+ "language: \\`C', \\`P'ascal, \\`F'ortran; \\`T'eX, \\`L'aTeX, \\`E'qn"
+ "language: \\`Y'acas, \\`X'=Maxima, \\`A'=Giac"
+ "language: \\`M'athematica, \\`W'=Maple")
"display" ?d))
(defun calc-g-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Fast; Add, Delete, Juggle; Plot, Clear; Quit"
- "Header, Name, Grid, Border, Key; View-commands, X-display"
- "x-axis: Range, Title, Log, Zero; lineStyle"
- "SHIFT + y-axis: Range, Title, Log, Zero; pointStyle"
- "SHIFT + Print; Device, Output-file; X-geometry"
- "SHIFT + Num-pts; Command, Kill, View-trail"
- "SHIFT + 3d: Fast, Add; CTRL + z-axis: Range, Title, Log")
+ '("\\`f'ast; \\`a'dd, \\`d'elete, \\`j'uggle; \\`p'lot, \\`c'lear; \\`q'uit"
+ "\\`h'eader, \\`n'ame, \\`g'rid, \\`b'order, \\`k'ey; \\`v'iew-commands, \\`x'-display"
+ "x-axis: \\`r'ange, \\`t'itle, \\`l'og, \\`z'ero; line\\`s'tyle"
+ "y-axis: \\`R'ange, \\`T'itle, \\`L'og, \\`Z'ero; point\\`S'tyle"
+ "\\`P'rint; \\`D'evice, \\`O'utput-file; \\`X'-geometry"
+ "\\`N'um-pts; \\`C'ommand, \\`K'ill, \\`V'iew-trail"
+ "3d: \\`F'ast, \\`A'dd; z-axis: \\`C-r' (range), \\`C-t' (title), \\`C-l' (log)")
"graph" ?g))
(defun calc-k-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("GCD, LCM; Choose (binomial), Double-factorial"
- "Random, random-Again, sHuffle"
- "Factors, Prime-test, Next-prime, Totient, Moebius"
- "Bernoulli, Euler, Stirling"
- "SHIFT + Extended-gcd"
- "SHIFT + dists: Binomial, Chi-square, F, Normal"
- "SHIFT + dists: Poisson, student's-T")
+ '("\\`g' (GCD), \\`l' (LCM); \\`c'hoose (binomial), \\`d'ouble-factorial"
+ "\\`r'andom, random-\\`a'gain, s\\`h'uffle"
+ "\\`f'actors, \\`p'rime-test, \\`n'ext-prime, \\`t'otient, \\`m'oebius"
+ "\\`b'ernoulli, \\`e'uler, \\`s'tirling"
+ "\\`E'xtended-gcd"
+ "dists: \\`B'inomial, \\`C'hi-square, \\`F', \\`N'ormal"
+ "dists: \\`P'oisson, student\\='s-\\`T'")
"combinatorics" ?k))
(defun calc-m-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Deg, Rad, HMS; Frac; Polar; Inf; Alg, Total; Symb; Vec/mat"
- "Working; Xtensions; Mode-save; preserve Embedded modes"
- "SHIFT + Shifted-prefixes, mode-Filename; Record; reCompute"
- "SHIFT + simplify: Off, Num, basIc, Algebraic, Bin, Ext, Units")
+ '("\\`d'eg, \\`r'ad, \\`h' (HMS); \\`f'rac; \\`p'olar; \\`i'nf; \\`a'lg, \\`t'otal; \\`s'ymb; \\`v'ec/mat"
+ "\\`w'orking; \\`x'tensions; \\`m'ode-save; preserve \\`e'mbedded modes"
+ "\\`S'hifted-prefixes, mode-\\`F'ilename; \\`R'ecord; re\\`C'ompute"
+ "simplify: \\`O'ff, \\`N'um, bas\\`I'c, \\`A'lgebraic, \\`B'in, \\`E'xt, \\`U'nits")
"mode" ?m))
(defun calc-t-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Display; Fwd, Back; Next, Prev, Here, [, ]; Yank"
- "Search, Rev; In, Out; <, >; Kill; Marker; . (abbrev)"
- "SHIFT + time: Now; Part; Date, Julian, Unix, Czone"
- "SHIFT + time: newWeek, newMonth, newYear; Incmonth"
- "SHIFT + time: +, - (business days)"
- "digits 0-9: store-to, same as `s t 0-9'")
+ '("\\`d'isplay; \\`f'wd, \\`b'ack; \\`n'ext, \\`p'rev, \\`h'ere, \\`[', \\`]'; \\`y'ank"
+ "\\`s'earch, \\`r'ev; \\`i'n, \\`o'ut; \\`<', \\`>'; \\`k'ill; \\`m'arker; \\`.' (abbrev)"
+ "time: \\`N'ow; \\`P'art; \\`D'ate, \\`J'ulian, \\`U'nix, \\`C'zone"
+ "time: new\\`W'eek, new\\`M'onth, new\\`Y'ear; \\`I'ncmonth"
+ "time: \\`+', \\`-' (business days)"
+ "digits \\`0'-\\`9': store-to, same as \\`s t' \\`0'-\\`9'")
"trail/time" ?t))
(defun calc-u-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Simplify, Convert, coNvert exact, Temperature-convert, Base-units"
- "Autorange; Remove, eXtract; Explain; View-table; 0-9"
- "Define, Undefine, Get-defn, Permanent"
- "SHIFT + View-table-other-window"
- "SHIFT + stat: Mean, G-mean, Std-dev, Covar, maX, miN"
- "SHIFT + stat: + (sum), - (asum), * (prod), # (count)")
+ '("\\`s'implify, \\`c'onvert, co\\`n'vert exact, \\`t'emperature-convert, \\`b'ase-units"
+ "\\`a'utorange; \\`r'emove, e\\`x'tract; \\`e'xplain; \\`v'iew-table; \\`0'-\\`9'"
+ "\\`d'efine, \\`u'ndefine, \\`g'et-defn, \\`p'ermanent"
+ "\\`V'iew-table-other-window"
+ "stat: \\`M'ean, \\`G'-mean, \\`S'td-dev, \\`C'ovar, ma\\`X', mi\\`N'"
+ "stat: \\`+' (sum), \\`-' (asum), \\`*' (prod), \\`#' (count)")
"units/stat" ?u))
(defun calc-l-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Quantity, DB level, Np level"
- "+, -, *, /"
- "Scientific pitch notation, Midi number, Frequency"
+ '("\\`q'uantity, \\`d' (DB level), \\`n' (NP level)"
+ "\\`+', \\`-', \\`*', \\`/'"
+ "\\`s'cientific pitch notation, \\`m'idi number, \\`f'requency"
)
"log units" ?l))
(defun calc-v-prefix-help ()
(interactive)
(calc-do-prefix-help
- '("Pack, Unpack, Identity, Diagonal, indeX, Build"
- "Row, Column, Subvector; Length; Find; Mask, Expand"
- "Transpose, Arrange, reVerse; Head, Kons; rNorm"
- "SHIFT + Det, & (inverse), LUD, Trace, conJtrn, Cross"
- "SHIFT + Sort, Grade, Histogram; cNorm"
- "SHIFT + Apply, Map, Reduce, accUm, Inner-, Outer-prod"
- "SHIFT + sets: V (union), ^ (intersection), - (diff)"
- "SHIFT + sets: Xor, ~ (complement), Floor, Enum"
- "SHIFT + sets: : (span), # (card), + (rdup)"
- "<, =, > (justification); , (commas); [, {, ( (brackets)"
- "} (matrix brackets); . (abbreviate); / (multi-lines)")
+ '("\\`p'ack, \\`u'npack, \\`i'dentity, \\`d'iagonal, inde\\`x', \\`b'uild"
+ "\\`r'ow, \\`c'olumn, \\`s'ubvector; \\`l'ength; \\`f'ind; \\`m'ask, \\`e'xpand"
+ "\\`t'ranspose, \\`a'rrange, re\\`v'erse; \\`h'ead, \\`k'ons; r\\`n'orm"
+ "\\`D'et, \\`&' (inverse), \\`L'UD, \\`T'race, con\\`J'trn, \\`C'ross"
+ "\\`S'ort, \\`G'rade, \\`H'istogram; c\\`N'orm"
+ "\\`A'pply, \\`M'ap, \\`R'educe, acc\\`U'm, \\`I'nner-, \\`O'uter-prod"
+ "sets: \\`V' (union), \\`^' (intersection), \\`-' (diff)"
+ "sets: \\`X'or, \\`~' (complement), \\`F'loor, \\`E'num"
+ "sets: \\`:' (span), \\`#' (card), \\`+' (rdup)"
+ "\\`<', \\`=', \\`>' (justification); \\`,' (commas); \\`[', \\`{', \\`(' (brackets)"
+ "\\`}' (matrix brackets); \\`.' (abbreviate); \\`/' (multi-lines)")
"vec/mat" ?v))
(provide 'calc-help)
diff --git a/lisp/calc/calc-misc.el b/lisp/calc/calc-misc.el
index 613fb0a0154..93de04a586d 100644
--- a/lisp/calc/calc-misc.el
+++ b/lisp/calc/calc-misc.el
@@ -114,8 +114,11 @@ Calc user interface as before (either \\`C-x * C' or \\`C-x * K'; initially \\`C
(let (key)
(select-window win)
(while (progn
- (message "Calc options: Calc, Keypad, ... %s"
- "press SPC, DEL to scroll, C-g to cancel")
+ (message
+ (substitute-command-keys
+ (concat
+ "Calc options: \\`c'alc, \\`k'eypad, ... "
+ "press \\`SPC', \\`DEL' to scroll, \\`C-g' to cancel")))
(memq (setq key (read-event))
'(? ?\C-h ?\C-? ?\C-v ?\M-v)))
(condition-case nil
@@ -216,27 +219,26 @@ Calc user interface as before (either \\`C-x * C' or \\`C-x * K'; initially \\`C
(defun calc-help ()
(interactive)
(let ((msgs
- ;; FIXME: Change these to `substitute-command-keys' syntax.
(mapcar #'substitute-command-keys
'("Press \\`h' for complete help; press \\`?' repeatedly for a summary"
- "Letter keys: Negate; Precision; Yank; Why; Xtended cmd; Quit"
- "Letter keys: SHIFT + Undo, reDo; Inverse, Hyperbolic, Option"
- "Letter keys: SHIFT + sQrt; Sin, Cos, Tan; Exp, Ln, logB"
- "Letter keys: SHIFT + Floor, Round; Abs, conJ, arG; Pi"
- "Letter keys: SHIFT + Num-eval; More-recn; eXec-kbd-macro; Keep-args"
- "Other keys: +, -, *, /, ^, \\ (int div), : (frac div)"
- "Other keys: & (1/x), | (concat), % (modulo), ! (factorial)"
- "Other keys: \\=' (alg-entry), = (eval), \\=` (edit); M-RET (last-args)"
- "Other keys: \\`SPC'/\\`RET' (enter/dup), LFD (over); < > (scroll horiz)"
- "Other keys: \\`DEL' (drop), \\`M-DEL' (drop-above); { } (scroll vert)"
+ "Letter keys: \\`n'egate; \\`p'recision; \\`y'ank; \\`w'hy; \\`x'tended cmd; \\`q'uit"
+ "Letter keys: \\`U'ndo, re\\`D'o; \\`I'nverse, \\`H'yperbolic, \\`O'ption"
+ "Letter keys: s\\`Q'rt; \\`S'in, \\`C'os, \\`T'an; \\`E'xp, \\`L'n, log\\`B'"
+ "Letter keys: \\`F'loor, \\`R'ound; \\`A'bs, con\\`J', ar\\`G'; \\`P'i"
+ "Letter keys: \\`N'um-eval; \\`M'ore-recn; e\\`X'ec-kbd-macro; \\`K'eep-args"
+ "Other keys: \\`+', \\`-', \\`*', \\`/', \\`^', \\`\\' (int div), \\`:' (frac div)"
+ "Other keys: \\`&' (1/x), \\`|' (concat), \\`%' (modulo), \\`!' (factorial)"
+ "Other keys: \\=' (alg-entry), \\`=' (eval), \\=` (edit); \\`M-RET' (last-args)"
+ "Other keys: \\`SPC'/\\`RET' (enter/dup), \\`LFD' (over); \\`<' \\`>' (scroll horiz)"
+ "Other keys: \\`DEL' (drop), \\`M-DEL' (drop-above); \\`{' \\`}' (scroll vert)"
"Other keys: \\`TAB' (swap/roll-dn), \\`M-TAB' (roll-up)"
- "Other keys: [ , ; ] (vector), ( , ) (complex), ( ; ) (polar)"
- "Prefix keys: Algebra, Binary/business, Convert, Display"
- "Prefix keys: Functions, Graphics, Help, J (select)"
- "Prefix keys: Kombinatorics/statistics, Modes, Store/recall"
- "Prefix keys: Trail/time, Units/statistics, Vector/matrix"
- "Prefix keys: Z (user), SHIFT + Z (define)"
- "Prefix keys: prefix + ? gives further help for that prefix"
+ "Other keys: \\`[' \\`,' \\`;' \\`]' (vector), \\`(' \\`,' \\`)' (complex), \\`(' \\`;' \\`)' (polar)"
+ "Prefix keys: \\`a'lgebra, \\`b'inary/business, \\`c'onvert, \\`d'isplay"
+ "Prefix keys: \\`f'unctions, \\`g'raphics, \\`h'elp, \\`j' (select)"
+ "Prefix keys: \\`k'ombinatorics/statistics, \\`m'odes, \\`s'tore/recall"
+ "Prefix keys: \\`t'rail/time, \\`u'nits/statistics, \\`v'ector/matrix"
+ "Prefix keys: \\`z' (user), \\`Z' (define)"
+ "Prefix keys: prefix + \\`?' gives further help for that prefix"
" Calc by Dave Gillespie, daveg@synaptics.com"))))
(if calc-full-help-flag
msgs
@@ -260,7 +262,7 @@ Calc user interface as before (either \\`C-x * C' or \\`C-x * K'; initially \\`C
msgs))
(length msg))
?\ )
- " [?=MORE]")
+ (substitute-command-keys " [\\`?'=MORE]"))
""))))))))
diff --git a/lisp/calc/calc-units.el b/lisp/calc/calc-units.el
index 5e21d506d74..988fef2fcd2 100644
--- a/lisp/calc/calc-units.el
+++ b/lisp/calc/calc-units.el
@@ -319,28 +319,28 @@ that the combined units table will be rebuilt.")
(defvar math-unit-prefixes
'( ( ?Q (^ 10 30) "quetta" )
( ?R (^ 10 27) "ronna" )
- ( ?Y (^ 10 24) "Yotta" )
- ( ?Z (^ 10 21) "Zetta" )
- ( ?E (^ 10 18) "Exa" )
- ( ?P (^ 10 15) "Peta" )
- ( ?T (^ 10 12) "Tera" )
- ( ?G (^ 10 9) "Giga" )
- ( ?M (^ 10 6) "Mega" )
- ( ?k (^ 10 3) "Kilo" )
- ( ?K (^ 10 3) "Kilo" )
- ( ?h (^ 10 2) "Hecto" )
- ( ?H (^ 10 2) "Hecto" )
- ( ?D (^ 10 1) "Deka" )
+ ( ?Y (^ 10 24) "yotta" )
+ ( ?Z (^ 10 21) "zetta" )
+ ( ?E (^ 10 18) "exa" )
+ ( ?P (^ 10 15) "peta" )
+ ( ?T (^ 10 12) "tera" )
+ ( ?G (^ 10 9) "giga" )
+ ( ?M (^ 10 6) "mega" )
+ ( ?k (^ 10 3) "kilo" )
+ ( ?K (^ 10 3) "kilo" )
+ ( ?h (^ 10 2) "hecto" )
+ ( ?H (^ 10 2) "hecto" )
+ ( ?D (^ 10 1) "deka" )
( 0 (^ 10 0) nil )
- ( ?d (^ 10 -1) "Deci" )
- ( ?c (^ 10 -2) "Centi" )
- ( ?m (^ 10 -3) "Milli" )
- ( ?u (^ 10 -6) "Micro" )
- ( ?μ (^ 10 -6) "Micro" )
- ( ?n (^ 10 -9) "Nano" )
- ( ?p (^ 10 -12) "Pico" )
- ( ?f (^ 10 -15) "Femto" )
- ( ?a (^ 10 -18) "Atto" )
+ ( ?d (^ 10 -1) "deci" )
+ ( ?c (^ 10 -2) "centi" )
+ ( ?m (^ 10 -3) "milli" )
+ ( ?u (^ 10 -6) "micro" )
+ ( ?μ (^ 10 -6) "micro" )
+ ( ?n (^ 10 -9) "nano" )
+ ( ?p (^ 10 -12) "pico" )
+ ( ?f (^ 10 -15) "femto" )
+ ( ?a (^ 10 -18) "atto" )
( ?z (^ 10 -21) "zepto" )
( ?y (^ 10 -24) "yocto" )
( ?r (^ 10 -27) "ronto" )
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el
index f129552c9a4..a1545edba19 100644
--- a/lisp/calc/calc.el
+++ b/lisp/calc/calc.el
@@ -1188,8 +1188,12 @@ Used by `calc-user-invocation'.")
"Start the Calculator."
(let ((key (calc-read-key-sequence
(if calc-dispatch-help
- "Calc options: Calc, Keypad, Quick, Embed; eXit; Info, Tutorial; Grab; ?=more"
- (format "%s (Type ? for a list of Calc options)"
+ (substitute-command-keys
+ (concat
+ "Calc options: \\`c'alc, \\`k'eypad, \\`q'uick, \\`e'mbed; "
+ "e\\`x'it; \\`i'nfo, \\`t'utorial; \\`g'rab; \\`?'=more"))
+ (format (substitute-command-keys
+ "%s (Type \\`?' for a list of Calc options)")
(key-description (this-command-keys))))
calc-dispatch-map)))
(setq key (lookup-key calc-dispatch-map key))
@@ -2478,7 +2482,8 @@ the United States."
(interactive)
(cond ((eq last-command 'calcDigit-start)
(erase-buffer))
- (t (backward-delete-char 1)))
+ (t (with-suppressed-warnings ((interactive-only backward-delete-char))
+ (backward-delete-char 1))))
(if (= (calc-minibuffer-size) 0)
(progn
(setq last-command-event 13)
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el
index a209623b65e..49597739446 100644
--- a/lisp/calendar/appt.el
+++ b/lisp/calendar/appt.el
@@ -409,7 +409,7 @@ displayed in a window:
'face 'mode-line-emphasis)
" ")))
;; Reset count to 0 in case we display another appt on the next cycle.
- (setq appt-display-count (if (eq '(0) min-list) 0
+ (setq appt-display-count (if (equal '(0) min-list) 0
(1+ prev-appt-display-count))))
;; If we have changed the mode line string, redisplay all mode lines.
(and appt-display-mode-line
diff --git a/lisp/calendar/cal-dst.el b/lisp/calendar/cal-dst.el
index 75c29a38352..a96fb0adf7c 100644
--- a/lisp/calendar/cal-dst.el
+++ b/lisp/calendar/cal-dst.el
@@ -354,10 +354,10 @@ If the locale never uses daylight saving time, set this to 0."
(if calendar-current-time-zone-cache
(format-time-string
"%z" 0 (* 60 (car calendar-current-time-zone-cache)))
- "+0000")
- (or (nth 2 calendar-current-time-zone-cache) "EST"))
+ "-0000")
+ (or (nth 2 calendar-current-time-zone-cache) "UTC"))
"Abbreviated name of standard time zone at `calendar-location-name'.
-For example, \"EST\" in New York City, \"PST\" for Los Angeles."
+For example, \"-0500\" or \"EST\" in New York City."
:type 'string
:version "28.1"
:set-after '(calendar-time-zone-style)
@@ -368,10 +368,10 @@ For example, \"EST\" in New York City, \"PST\" for Los Angeles."
(if calendar-current-time-zone-cache
(format-time-string
"%z" 0 (* 60 (cadr calendar-current-time-zone-cache)))
- "+0000")
- (or (nth 3 calendar-current-time-zone-cache) "EDT"))
+ "-0000")
+ (or (nth 3 calendar-current-time-zone-cache) "UTC"))
"Abbreviated name of daylight saving time zone at `calendar-location-name'.
-For example, \"EDT\" in New York City, \"PDT\" for Los Angeles."
+For example, \"-0400\" or \"EDT\" in New York City."
:type 'string
:version "28.1"
:set-after '(calendar-time-zone-style)
diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el
index 44fb5eb5a86..946cf0e7236 100644
--- a/lisp/calendar/diary-lib.el
+++ b/lisp/calendar/diary-lib.el
@@ -339,7 +339,7 @@ Returns a string using match elements 1-5, where:
(t "\\1 \\2 \\3"))) ; MDY
"\n \\4 %s, \\5")))
;; TODO Sometimes the time is in a different time-zone to the one you
-;; are in. Eg in PST, you might still get an email referring to:
+;; are in. E.g., in Los Angeles, you might still get an email referring to:
;; "7:00 PM-8:00 PM. Greenwich Standard Time".
;; Note that it doesn't use a standard abbreviation for the timezone,
;; or anything helpful like that.
diff --git a/lisp/calendar/iso8601.el b/lisp/calendar/iso8601.el
index cd3de62afdb..d7d064d9c2a 100644
--- a/lisp/calendar/iso8601.el
+++ b/lisp/calendar/iso8601.el
@@ -129,7 +129,7 @@ well as variants like \"2008W32\" (week number) and
See `decode-time' for the meaning of FORM."
(if (not (iso8601-valid-p string))
- (signal 'wrong-type-argument string)
+ (signal 'wrong-type-argument (list string))
(let* ((date-string (match-string 1 string))
(time-string (match-string 2 string))
(zone-string (match-string 3 string))
@@ -217,7 +217,7 @@ See `decode-time' for the meaning of FORM."
((iso8601--match "---\\([0-9][0-9]\\)" string)
(iso8601--decoded-time :day (string-to-number (match-string 1 string))))
(t
- (signal 'wrong-type-argument string))))
+ (signal 'wrong-type-argument (list string)))))
(defun iso8601-parse-time (string &optional form)
"Parse STRING, which should be an ISO 8601 time string.
@@ -226,11 +226,11 @@ hour/minute/seconds/zone fields filled in.
See `decode-time' for the meaning of FORM."
(if (not (iso8601--match iso8601--full-time-match string))
- (signal 'wrong-type-argument string)
+ (signal 'wrong-type-argument (list string))
(let ((time (match-string 1 string))
(zone (match-string 2 string)))
(if (not (iso8601--match iso8601--time-match time))
- (signal 'wrong-type-argument string)
+ (signal 'wrong-type-argument (list string))
(let ((hour (string-to-number (match-string 1 time)))
(minute (and (match-string 2 time)
(string-to-number (match-string 2 time))))
@@ -274,7 +274,7 @@ See `decode-time' for the meaning of FORM."
"Parse STRING, which should be an ISO 8601 time zone.
Return the number of minutes."
(if (not (iso8601--match iso8601--zone-match string))
- (signal 'wrong-type-argument string)
+ (signal 'wrong-type-argument (list string))
(if (match-string 2 string)
;; HH:MM-ish.
(let ((hour (string-to-number (match-string 3 string)))
@@ -314,14 +314,14 @@ Return the number of minutes."
((iso8601--match iso8601--duration-combined-match string)
(iso8601-parse (substring string 1)))
(t
- (signal 'wrong-type-argument string))))
+ (signal 'wrong-type-argument (list string)))))
(defun iso8601-parse-interval (string)
"Parse ISO 8601 intervals."
(let ((bits (split-string string "/"))
start end duration)
(if (not (= (length bits) 2))
- (signal 'wrong-type-argument string)
+ (signal 'wrong-type-argument (list string))
;; The intervals may be an explicit start/end times, or either a
;; start or an end, and an accompanying duration.
(cond
@@ -338,7 +338,7 @@ Return the number of minutes."
(setq start (iso8601-parse (car bits))
end (iso8601-parse (cadr bits))))
(t
- (signal 'wrong-type-argument string))))
+ (signal 'wrong-type-argument (list string)))))
(unless end
(setq end (decoded-time-add start duration)))
(unless start
diff --git a/lisp/calendar/lunar.el b/lisp/calendar/lunar.el
index 8ced4144105..5b22043102d 100644
--- a/lisp/calendar/lunar.el
+++ b/lisp/calendar/lunar.el
@@ -94,7 +94,7 @@ remainder mod 4 gives the phase: 0 new moon, 1 first quarter, 2 full moon,
(* -0.0016528 time time)
(* -0.00000239 time time time))
360.0))
- (eclipse (eclipse-check moon-lat phase))
+ (eclipse (lunar-check-for-eclipse moon-lat phase))
(adjustment
(if (memq phase '(0 2))
(+ (* (- 0.1734 (* 0.000393 time))
@@ -154,26 +154,22 @@ remainder mod 4 gives the phase: 0 new moon, 1 first quarter, 2 full moon,
;; from "Astronomy with your Personal Computer", Subroutine Eclipse
;; Line 7000 Peter Duffett-Smith Cambridge University Press 1990
-(defun eclipse-check (moon-lat phase)
- (let* ((moon-lat (* (/ float-pi 180) moon-lat))
- ;; For positions near the ascending or descending node,
- ;; calculate the absolute angular distance from that node.
- (moon-lat (abs (- moon-lat (* (floor (/ moon-lat float-pi))
- float-pi))))
- (moon-lat (if (> moon-lat 0.37) ; FIXME (* 0.5 float-pi)
- (- float-pi moon-lat)
- moon-lat))
- (phase-name (cond ((= phase 0) "Solar")
- ((= phase 2) "Lunar")
- (t ""))))
- (cond ((string= phase-name "")
- "")
- ((< moon-lat 2.42600766e-1)
- (concat "** " phase-name " Eclipse **"))
- ((< moon-lat 0.37)
- (concat "** " phase-name " Eclipse possible **"))
- (t
- ""))))
+(defun lunar-check-for-eclipse (moon-lat phase)
+ "Check if a solar or lunar eclipse can occur for MOON-LAT and PHASE.
+MOON-LAT is the argument of latitude. PHASE is the lunar phase:
+0 new moon, 1 first quarter, 2 full moon, 3 last quarter.
+Return a string describing the eclipse (empty if no eclipse)."
+ (let* ((node-dist (mod moon-lat 180))
+ ;; Absolute angular distance from the ascending or descending
+ ;; node, whichever is nearer.
+ (node-dist (min node-dist (- 180 node-dist)))
+ (type (cond ((= phase 0) "Solar")
+ ((= phase 2) "Lunar"))))
+ (cond ((not type) "")
+ ;; Limits 13.9° and 21.0° from Meeus (1991), page 350.
+ ((< node-dist 13.9) (concat "** " type " Eclipse **"))
+ ((< node-dist 21.0) (concat "** " type " Eclipse possible **"))
+ (t ""))))
(defconst lunar-cycles-per-year 12.3685 ; 365.25/29.530588853
"Mean number of lunar cycles per 365.25 day year.")
@@ -249,10 +245,11 @@ use instead of point."
(insert
(mapconcat
(lambda (x)
- (format "%s: %s %s %s" (calendar-date-string (car x))
- (lunar-phase-name (nth 2 x))
- (cadr x)
- (car (last x))))
+ (let ((eclipse (nth 3 x)))
+ (concat (calendar-date-string (car x)) ": "
+ (lunar-phase-name (nth 2 x)) " "
+ (cadr x) (unless (string-empty-p eclipse) " ")
+ eclipse)))
(lunar-phase-list m1 y1) "\n")))
(message "Computing phases of the moon...done"))))
@@ -287,9 +284,13 @@ use when highlighting the day in the calendar."
(while (calendar-date-compare phase (list date))
(setq index (1+ index)
phase (lunar-phase index)))
- (if (calendar-date-equal (car phase) date)
- (cons mark (concat (lunar-phase-name (nth 2 phase)) " "
- (cadr phase))))))
+ (and (calendar-date-equal (car phase) date)
+ (cons mark
+ (let ((eclipse (nth 3 phase)))
+ (concat (lunar-phase-name (nth 2 phase)) " "
+ (cadr phase)
+ (unless (string-empty-p eclipse) " ")
+ eclipse))))))
;; For the Chinese calendar the calculations for the new moon need to be more
;; accurate than those above, so we use more terms in the approximation.
diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el
index 582a2b91ff6..d82215a6d35 100644
--- a/lisp/calendar/solar.el
+++ b/lisp/calendar/solar.el
@@ -839,12 +839,10 @@ This function is suitable for execution in an init file."
"E" "W"))))))
(calendar-standard-time-zone-name
(if (< arg 16) calendar-standard-time-zone-name
- (cond ((zerop calendar-time-zone)
- (if (eq calendar-time-zone-style 'numeric)
- "+0000" "UTC"))
- ((< calendar-time-zone 0)
- (format "UTC%dmin" calendar-time-zone))
- (t (format "UTC+%dmin" calendar-time-zone)))))
+ (if (and (zerop calendar-time-zone)
+ (not (eq calendar-time-zone-style 'numeric)))
+ "UTC"
+ (format-time-string "%z" 0 (* 60 calendar-time-zone)))))
(calendar-daylight-savings-starts
(if (< arg 16) calendar-daylight-savings-starts))
(calendar-daylight-savings-ends
diff --git a/lisp/cedet/semantic.el b/lisp/cedet/semantic.el
index 1c9228b0123..0c15a2a453e 100644
--- a/lisp/cedet/semantic.el
+++ b/lisp/cedet/semantic.el
@@ -618,21 +618,18 @@ Does nothing if the current buffer doesn't need reparsing."
(lexically-safe t)
)
- (unwind-protect
- ;; Perform the parsing.
- (progn
- (when (semantic-lex-catch-errors safe-refresh
- (save-excursion (semantic-fetch-tags))
- nil)
- ;; If we are here, it is because the lexical step failed,
- ;; probably due to unterminated lists or something like that.
-
- ;; We do nothing, and just wait for the next idle timer
- ;; to go off. In the meantime, remember this, and make sure
- ;; no other idle services can get executed.
- (setq lexically-safe nil))
- )
- )
+ ;; Perform the parsing.
+ (when (semantic-lex-catch-errors safe-refresh
+ (save-excursion (semantic-fetch-tags))
+ nil)
+ ;; If we are here, it is because the lexical step failed,
+ ;; probably due to unterminated lists or something like that.
+
+ ;; We do nothing, and just wait for the next idle timer
+ ;; to go off. In the meantime, remember this, and make sure
+ ;; no other idle services can get executed.
+ (setq lexically-safe nil))
+
;; Return if we are lexically safe
lexically-safe))))
diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el
index 6f84b83ab75..84040b572bc 100644
--- a/lisp/cedet/semantic/complete.el
+++ b/lisp/cedet/semantic/complete.el
@@ -1731,7 +1731,7 @@ Display mechanism using tooltip for a list of possible completions.")
;; Add any tail info.
(setq msg (concat msg msg-tail))
;; Display tooltip.
- (when (not (eq msg ""))
+ (when (not (equal msg ""))
(semantic-displayer-tooltip-show msg)))))
;;; Compatibility
diff --git a/lisp/cedet/semantic/decorate/include.el b/lisp/cedet/semantic/decorate/include.el
index 156eac46659..c83de66ef0c 100644
--- a/lisp/cedet/semantic/decorate/include.el
+++ b/lisp/cedet/semantic/decorate/include.el
@@ -790,9 +790,7 @@ any decorated referring includes.")
;; This is a hack. Add in something better?
(semanticdb-notify-references
table (lambda (tab _me)
- (semantic-decoration-unparsed-include-refrence-reset tab)
- ))
- ))
+ (semantic-decoration-unparsed-include-reference-reset tab)))))
(cl-defmethod semanticdb-partial-synchronize ((cache semantic-decoration-unparsed-include-cache)
new-tags)
@@ -805,7 +803,7 @@ any decorated referring includes.")
"Synchronize a CACHE with some NEW-TAGS."
(semantic-reset cache))
-(defun semantic-decoration-unparsed-include-refrence-reset (table)
+(defun semantic-decoration-unparsed-include-reference-reset (table)
"Refresh any highlighting in buffers referred to by TABLE.
If TABLE is not in a buffer, do nothing."
;; This cache removal may seem odd in that we are "creating one", but
@@ -835,6 +833,8 @@ If TABLE is not in a buffer, do nothing."
(semantic-decorate-add-decorations allinc)
))))
+(define-obsolete-function-alias 'semantic-decoration-unparsed-include-refrence-reset
+ #'semantic-decoration-unparsed-include-reference-reset "30.1")
(provide 'semantic/decorate/include)
diff --git a/lisp/cedet/semantic/lex-spp.el b/lisp/cedet/semantic/lex-spp.el
index b932cb999ba..6a16845ecf2 100644
--- a/lisp/cedet/semantic/lex-spp.el
+++ b/lisp/cedet/semantic/lex-spp.el
@@ -1243,7 +1243,7 @@ Finds the header file belonging to NAME, gets the macros
from that file, and then merge the macros with our current
symbol table."
(when semantic-lex-spp-use-headers-flag
- ;; @todo - do this someday, ok?
+ nil ; @todo - do this someday, ok?
))
(defmacro define-lex-spp-include-analyzer (name doc regexp tokidx
diff --git a/lisp/cedet/semantic/lex.el b/lisp/cedet/semantic/lex.el
index c2d2e5e1668..5fd1fd45400 100644
--- a/lisp/cedet/semantic/lex.el
+++ b/lisp/cedet/semantic/lex.el
@@ -1108,7 +1108,7 @@ This can be done by using `semantic-lex-push-token'."
(semantic-lex-analysis-bounds (cons (point) (point-max)))
(semantic-lex-current-depth 0)
(semantic-lex-maximum-depth semantic-lex-depth))
- (when ,condition ,@forms)
+ (when ,condition nil ,@forms) ; `nil' avoids an empty-body warning.
semantic-lex-token-stream))))
(defmacro define-lex-regex-analyzer (name doc regexp &rest forms)
diff --git a/lisp/comint.el b/lisp/comint.el
index 682b555a33c..9d2c245247f 100644
--- a/lisp/comint.el
+++ b/lisp/comint.el
@@ -383,7 +383,8 @@ This variable is buffer-local."
"\\(?:" (regexp-opt password-word-equivalents) "\\|Response\\)"
"\\(?:\\(?:, try\\)? *again\\| (empty for no passphrase)\\| (again)\\)?"
;; "[[:alpha:]]" used to be "for", which fails to match non-English.
- "\\(?: [[:alpha:]]+ .+\\)?[[:blank:]]*[::៖][[:space:]]*\\'"
+ "\\(?: [[:alpha:]]+ .+\\)?[[:blank:]]*"
+ "[" (apply #'string password-colon-equivalents) "][[:space:]]*\\'"
;; The ccrypt encryption dialog doesn't end with a colon, so
;; treat it specially.
"\\|^Enter encryption key: (repeat) *\\'"
@@ -4119,9 +4120,15 @@ function called, or nil, if no function was called (if BEG = END)."
(save-restriction
(let ((beg2 beg1)
(end2 end1))
- (when (= beg2 beg)
+ (when (and (= beg2 beg)
+ (> beg2 (point-min))
+ (eq is-output
+ (eq (get-text-property (1- beg2) 'field) 'output)))
(setq beg2 (field-beginning beg2)))
- (when (= end2 end)
+ (when (and (= end2 end)
+ (< end2 (point-max))
+ (eq is-output
+ (eq (get-text-property (1+ end2) 'field) 'output)))
(setq end2 (field-end end2)))
;; Narrow to the whole field surrounding the region
(narrow-to-region beg2 end2))
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index 0373842de09..dbef5f47cd6 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -903,9 +903,9 @@ This also shows the saved values in the buffer."
(defun custom-reset-standard-save-and-update ()
"Save settings and redraw after erasing customizations."
(when (or (and custom-reset-standard-variables-list
- (not (eq custom-reset-standard-variables-list '(t))))
+ (not (equal custom-reset-standard-variables-list '(t))))
(and custom-reset-standard-faces-list
- (not (eq custom-reset-standard-faces-list '(t)))))
+ (not (equal custom-reset-standard-faces-list '(t)))))
;; Save settings to file.
(custom-save-all)
;; Set state of and redraw variables.
@@ -1238,7 +1238,7 @@ Show the buffer in another window, but don't select it."
(unless (eq symbol basevar)
(message "`%s' is an alias for `%s'" symbol basevar))))
-(defvar customize-changed-options-previous-release "28.2"
+(defvar customize-changed-options-previous-release "29.1"
"Version for `customize-changed' to refer back to by default.")
;; Packages will update this variable, so make it available.
diff --git a/lisp/cus-start.el b/lisp/cus-start.el
index 054683d7cf6..6ca7d7fcafd 100644
--- a/lisp/cus-start.el
+++ b/lisp/cus-start.el
@@ -310,6 +310,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
(const :tag "Off" :value nil)
(const :tag "On" :value t)
(const :tag "Auto-raise" :value auto-raise)) "26.1")
+ (yes-or-no-prompt menu string "30.1")
;; fontset.c
;; FIXME nil is the initial value, fontset.el setqs it.
(vertical-centering-font-regexp display
diff --git a/lisp/custom.el b/lisp/custom.el
index df6db181615..083349e3591 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -667,6 +667,7 @@ If NOSET is non-nil, don't bother autoloading LOAD when setting the variable."
A customizable variable is either (i) a variable whose property
list contains a non-nil `standard-value' or `custom-autoload'
property, or (ii) an alias for another customizable variable."
+ (declare (side-effect-free t))
(when (symbolp variable)
(setq variable (indirect-variable variable))
(or (get variable 'standard-value)
diff --git a/lisp/descr-text.el b/lisp/descr-text.el
index aea6b3e15b7..4834c2eb7ba 100644
--- a/lisp/descr-text.el
+++ b/lisp/descr-text.el
@@ -366,7 +366,7 @@ This function is semi-obsolete. Use `get-char-code-property'."
;; description is added to the category name as a tooltip
(defsubst describe-char-categories (category-set)
(let ((mnemonics (category-set-mnemonics category-set)))
- (unless (eq mnemonics "")
+ (unless (equal mnemonics "")
(list (mapconcat
(lambda (x)
(let* ((c (category-docstring x))
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 3d78c4cb6f8..6aacb85c12c 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -828,7 +828,7 @@ is nil, ask the user where to save the desktop."
;; If we own it, we don't anymore.
(when (eq (emacs-pid) (desktop-owner))
;; Allow exiting Emacs even if we can't delete the desktop file.
- (ignore-error 'file-error
+ (ignore-error file-error
(desktop-release-lock))))
;; ----------------------------------------------------------------------------
diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el
index fc3f6f4f04d..96ac9da4508 100644
--- a/lisp/dired-aux.el
+++ b/lisp/dired-aux.el
@@ -3730,7 +3730,7 @@ of the target of the link instead."
(process-file "file" nil t t "-L" "--" file)
(process-file "file" nil t t "--" file))
(when (bolp)
- (backward-delete-char 1))
+ (delete-char -1))
(message "%s" (buffer-string)))))
diff --git a/lisp/dired-x.el b/lisp/dired-x.el
index 560eefae024..5780f1353ad 100644
--- a/lisp/dired-x.el
+++ b/lisp/dired-x.el
@@ -816,7 +816,7 @@ otherwise."
(defun dired-x--string-to-number (str)
"Like `string-to-number' but recognize a trailing unit prefix.
For example, 2K is expanded to 2048.0. The caller should make
-sure that a trailing letter in STR is one of BKkMGTPEZY."
+sure that a trailing letter in STR is one of BKkMGTPEZYRQ."
(let* ((val (string-to-number str))
(u (unless (zerop val)
(aref str (1- (length str))))))
@@ -831,7 +831,7 @@ sure that a trailing letter in STR is one of BKkMGTPEZY."
(when (and u (> u ?9))
(when (= u ?k)
(setq u ?K))
- (let ((units '(?B ?K ?M ?G ?T ?P ?E ?Z ?Y)))
+ (let ((units '(?B ?K ?M ?G ?T ?P ?E ?Z ?Y ?R ?Q)))
(while (and units (/= (pop units) u))
(setq val (* 1024.0 val)))))
val)))
@@ -904,7 +904,7 @@ only in the active region if `dired-mark-region' is non-nil."
;; GNU ls -hs suffixes the block count with a unit and
;; prints it as a float, FreeBSD does neither.
(dired-re-inode-size "\\=\\s *\\([0-9]+\\s +\\)?\
-\\(?:\\([0-9]+\\(?:\\.[0-9]*\\)?[BkKMGTPEZY]?\\)? ?\\)"))
+\\(?:\\([0-9]+\\(?:\\.[0-9]*\\)?[BkKMGTPEZYRQ]?\\)? ?\\)"))
(beginning-of-line)
(forward-char 2)
(search-forward-regexp dired-re-inode-size nil t)
diff --git a/lisp/dired.el b/lisp/dired.el
index 4a4ecc901c4..d1471e993a1 100644
--- a/lisp/dired.el
+++ b/lisp/dired.el
@@ -490,6 +490,11 @@ to nil: a pipe using `zcat' or `gunzip -c' will be used."
(string :tag "Switches"))
:version "29.1")
+(defcustom dired-hide-details-preserved-columns nil
+ "List of columns which are not hidden in `dired-hide-details-mode'."
+ :type '(repeat integer)
+ :version "30.1")
+
;;; Internal variables
@@ -530,7 +535,7 @@ The directory name must be absolute, but need not be fully expanded.")
(put 'dired-actual-switches 'safe-local-variable 'dired-safe-switches-p)
-(defvar dired-re-inode-size "[0-9 \t]*[.,0-9]*[BkKMGTPEZY]?[ \t]*"
+(defvar dired-re-inode-size "[0-9 \t]*[.,0-9]*[BkKMGTPEZYRQ]?[ \t]*"
"Regexp for optional initial inode and file size as made by `ls -i -s'.")
;; These regexps must be tested at beginning-of-line, but are also
@@ -922,9 +927,9 @@ marked file, return (t FILENAME) instead of (FILENAME)."
(lambda ()
(if ,show-progress (sit-for 0))
(setq results (cons ,body results))))
- (if (< ,arg 0)
- (nreverse results)
- results))
+ (when (< ,arg 0)
+ (setq results (nreverse results)))
+ results)
;; non-nil, non-integer, non-marked ARG means use current file:
(list ,body))
(let ((regexp (dired-marker-regexp)) next-position)
@@ -1880,8 +1885,15 @@ other marked file as well. Otherwise, unmark all files."
(put-text-property (line-beginning-position)
(1+ (line-end-position))
'invisible 'dired-hide-details-information))
- (put-text-property (+ (line-beginning-position) 1) (1- (point))
- 'invisible 'dired-hide-details-detail)
+ (save-excursion
+ (let ((end (1- (point)))
+ (opoint (goto-char (1+ (pos-bol))))
+ (i 0))
+ (put-text-property opoint end 'invisible 'dired-hide-details-detail)
+ (while (re-search-forward "[^ ]+" end t)
+ (when (member (cl-incf i) dired-hide-details-preserved-columns)
+ (put-text-property opoint (point) 'invisible nil))
+ (setq opoint (point)))))
(when (and dired-mouse-drag-files (fboundp 'x-begin-drag))
(put-text-property (point)
(save-excursion
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 427da557d23..b14655fb274 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -209,10 +209,10 @@ are available (see Info node `(emacs)Document View')."
function)
:version "24.4")
-(defcustom doc-view-mupdf-use-svg nil
- "Whether to use SVG images for PDF files."
+(defcustom doc-view-mupdf-use-svg (image-type-available-p 'svg)
+ "Whether to use svg images for PDF files."
:type 'boolean
- :version "29.1")
+ :version "30.1")
(defcustom doc-view-imenu-enabled (and (executable-find "mutool") t)
"Whether to generate an imenu outline when \"mutool\" is available."
@@ -236,17 +236,14 @@ showing only titles and no page number."
:type 'boolean
:version "29.1")
-(defcustom doc-view-svg-background "white"
- "Background color for svg images.
+(defface doc-view-svg-face '((t :inherit default))
+ "Face used for SVG images. Only background and foreground colors
+are used.
See `doc-view-mupdf-use-svg'."
- :type 'color
- :version "29.1")
+ :version "30.1")
-(defcustom doc-view-svg-foreground "black"
- "Foreground color for svg images.
-See `doc-view-mupdf-use-svg'."
- :type 'color
- :version "29.1")
+(make-obsolete 'doc-view-svg-background 'doc-view-svg-face "30.1")
+(make-obsolete 'doc-view-svg-foreground 'doc-view-svg-face "30.1")
(defcustom doc-view-ghostscript-options
'("-dSAFER" ;; Avoid security problems when rendering files from untrusted
@@ -1602,8 +1599,8 @@ ARGS is a list of image descriptors."
(unless (member :transform-smoothing args)
(setq args `(,@args :transform-smoothing t)))
(when (eq doc-view--image-type 'svg)
- (setq args `(,@args :background ,doc-view-svg-background
- :foreground ,doc-view-svg-foreground)))
+ (setq args `(,@args :background ,(face-background 'doc-view-svg-face)
+ :foreground ,(face-foreground 'doc-view-svg-face))))
(apply #'create-image file doc-view--image-type nil args))))
(slice (doc-view-current-slice))
(img-width (and image (car (image-size image))))
diff --git a/lisp/electric.el b/lisp/electric.el
index bac3f5a2b3c..cef5326852c 100644
--- a/lisp/electric.el
+++ b/lisp/electric.el
@@ -409,9 +409,7 @@ If multiple rules match, only first one is executed.")
(goto-char pos)
(funcall probe last-command-event))))
(when res (throw 'done res))))))))))
- (when (and rule
- ;; Not in a string or comment.
- (not (nth 8 (save-excursion (syntax-ppss pos)))))
+ (when rule
(goto-char pos)
(when (functionp rule) (setq rule (funcall rule)))
(dolist (sym (if (symbolp rule) (list rule) rule))
diff --git a/lisp/elide-head.el b/lisp/elide-head.el
index 11953299da9..f74c85fdfee 100644
--- a/lisp/elide-head.el
+++ b/lisp/elide-head.el
@@ -50,24 +50,41 @@
:group 'tools)
(defcustom elide-head-headers-to-hide
- `(;; GNU GPL
- ("is free software[:;] you can redistribute it" .
- ,(rx (or (seq "If not, see " (? "<")
- "http" (? "s") "://www.gnu.org/licenses"
- (? "/") (? ">") (? " "))
- (seq "Boston, MA " (? " ")
- "0211" (or "1-1307" "0-1301")
- (or " " ", ") "USA")
- "675 Mass Ave, Cambridge, MA 02139, USA")
- (? ".")))
- ;; FreeBSD license / Modified BSD license (3-clause)
- (,(rx (or "The Regents of the University of California. All rights reserved."
- "Redistribution and use in source and binary"))
- . "POSSIBILITY OF SUCH DAMAGE\\.")
- ;; X11 and Expat
- ("Permission is hereby granted, free of charge" .
- ,(rx (or "authorization from the X Consortium." ; X11
- "THE USE OR OTHER DEALINGS IN THE SOFTWARE.")))) ; Expat
+ (rx-let ((delim
+ ;; A line break could be in a non-standard place, and the
+ ;; license could be in a comment.
+ (or
+ ;; Either just some spaces:
+ (+ " ")
+ ;; Or a newline and some comment starter:
+ (: (* (in " \t"))
+ "\n"
+ (* (in " \t"))
+ (* (or (syntax comment-start) (in ";#*-")))
+ (* (in " \t"))))))
+ `(;; GNU GPL
+ ("is free software[:;] you can redistribute it" .
+ ,(rx (or (seq "If not, see " (? "<")
+ "http" (? "s") "://www.gnu.org/licenses"
+ (? "/") (? ">") (? " "))
+ (seq "Boston," delim "MA" delim
+ (or "02111-1307" "02110-1301" "02111-1301")
+ (? ",") delim
+ "USA")
+ "675 Mass Ave, Cambridge, MA 02139, USA")
+ (? ".")))
+ ;; FreeBSD license / Modified BSD license (3-clause)
+ (,(rx (or "The Regents of the University of California. All rights reserved."
+ "Redistribution and use in source and binary"))
+ . "POSSIBILITY OF SUCH DAMAGE\\.")
+ ;; X11 and Expat
+ ("Permission is hereby granted, free of charge" .
+ ,(rx (or "authorization from the X Consortium." ; X11
+ "THE USE OR OTHER DEALINGS IN THE SOFTWARE."))) ; Expat
+ ;; Apache
+ ("Licensed under the Apache License, Version 2.0" .
+ "limitations under the License.")
+ ))
"Alist of regexps defining start and end of text to elide.
The cars of elements of the list are searched for in order. Text is
@@ -78,7 +95,7 @@ cdr.
This affects `elide-head-mode'."
:type '(alist :key-type (regexp :tag "Start regexp")
:value-type (regexp :tag "End regexp"))
- :version "29.1")
+ :version "30.1")
(defvar-local elide-head-overlay nil)
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 937300cf0c0..2bdd3375728 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -72,34 +72,40 @@
(require 'macroexp)
(eval-when-compile (require 'subr-x))
+(defun bytecomp--log-lap-arg (arg)
+ ;; Convert an argument that may be a LAP operation to something printable.
+ (cond
+ ;; Symbols are just stripped of their -byte prefix if any.
+ ((symbolp arg)
+ (intern (string-remove-prefix "byte-" (symbol-name arg))))
+ ;; Conses are assumed to be LAP ops or tags.
+ ((and (consp arg) (symbolp (car arg)))
+ (let* ((head (car arg))
+ (tail (cdr arg))
+ (op (intern (string-remove-prefix "byte-" (symbol-name head)))))
+ (cond
+ ((eq head 'TAG)
+ (format "%d:" (car tail)))
+ ((memq head byte-goto-ops)
+ (format "(%s %d)" op (cadr tail)))
+ ((memq head byte-constref-ops)
+ (format "(%s %s)"
+ (if (eq op 'constant) 'const op)
+ (if (numberp tail)
+ (format "<V%d>" tail) ; closure var reference
+ (format "%S" (car tail))))) ; actual constant
+ ;; Ops with an immediate argument.
+ ((memq op '( stack-ref stack-set call unbind
+ listN concatN insertN discardN discardN-preserve-tos))
+ (format "(%s %S)" op tail))
+ ;; Without immediate, print just the symbol.
+ (t op))))
+ ;; Anything else is printed as-is.
+ (t arg)))
+
(defun byte-compile-log-lap-1 (format &rest args)
(byte-compile-log-1
- (apply #'format-message format
- (let (c a)
- (mapcar (lambda (arg)
- (if (not (consp arg))
- (if (and (symbolp arg)
- (string-match "^byte-" (symbol-name arg)))
- (intern (substring (symbol-name arg) 5))
- arg)
- (if (integerp (setq c (car arg)))
- (error "Non-symbolic byte-op %s" c))
- (if (eq c 'TAG)
- (setq c arg)
- (setq a (cond ((memq c byte-goto-ops)
- (car (cdr (cdr arg))))
- ((memq c byte-constref-ops)
- (car (cdr arg)))
- (t (cdr arg))))
- (setq c (symbol-name c))
- (if (string-match "^byte-." c)
- (setq c (intern (substring c 5)))))
- (if (eq c 'constant) (setq c 'const))
- (if (and (eq (cdr arg) 0)
- (not (memq c '(unbind call const))))
- c
- (format "(%s %s)" c a))))
- args)))))
+ (apply #'format-message format (mapcar #'bytecomp--log-lap-arg args))))
(defmacro byte-compile-log-lap (format-string &rest args)
`(and (memq byte-optimize-log '(t byte))
@@ -266,6 +272,14 @@ for speeding up processing.")
. ,(cdr case)))
cases)))
+(defsubst byte-opt--fget (f prop)
+ "Simpler and faster version of `function-get'."
+ (let ((val nil))
+ (while (and (symbolp f) f
+ (null (setq val (get f prop))))
+ (setq f (symbol-function f)))
+ val))
+
(defun byte-optimize-form-code-walker (form for-effect)
;;
;; For normal function calls, We can just mapcar the optimizer the cdr. But
@@ -410,7 +424,10 @@ for speeding up processing.")
(`(condition-case ,var ,exp . ,clauses)
`(,fn ,var ;Not evaluated.
- ,(byte-optimize-form exp for-effect)
+ ,(byte-optimize-form exp
+ (if (assq :success clauses)
+ (null var)
+ for-effect))
,@(mapcar (lambda (clause)
(let ((byte-optimize--lexvars
(and lexical-binding
@@ -422,13 +439,12 @@ for speeding up processing.")
(byte-optimize-body (cdr clause) for-effect))))
clauses)))
- ;; `unwind-protect' is a special form which here takes the shape
- ;; (unwind-protect EXPR :fun-body UNWIND-FUN).
- ;; We can treat it as if it were a plain function at this point,
- ;; although there are specific optimizations possible.
- ;; In particular, the return value of UNWIND-FUN is never used
- ;; so its body should really be compiled for-effect, but we
- ;; don't do that right now.
+ (`(unwind-protect ,protected-expr :fun-body ,unwind-fun)
+ ;; FIXME: The return value of UNWIND-FUN is never used so we
+ ;; could potentially optimise it for-effect, but we don't do
+ ;; that right no.
+ `(,fn ,(byte-optimize-form protected-expr for-effect)
+ :fun-body ,(byte-optimize-form unwind-fun)))
(`(catch ,tag . ,exps)
`(,fn ,(byte-optimize-form tag nil)
@@ -488,26 +504,18 @@ for speeding up processing.")
form)
((guard (when for-effect
- (if-let ((tmp (get fn 'side-effect-free)))
+ (if-let ((tmp (byte-opt--fget fn 'side-effect-free)))
(or byte-compile-delete-errors
- (eq tmp 'error-free)
- (progn
- (byte-compile-warn-x
- form
- "value returned from %s is unused"
- form)
- nil)))))
+ (eq tmp 'error-free)))))
(byte-compile-log " %s called for effect; deleted" fn)
- ;; appending a nil here might not be necessary, but it can't hurt.
- (byte-optimize-form
- (cons 'progn (append (cdr form) '(nil))) t))
+ (byte-optimize-form (cons 'progn (cdr form)) t))
(_
;; Otherwise, no args can be considered to be for-effect,
;; even if the called function is for-effect, because we
;; don't know anything about that function.
(let ((form (cons fn (mapcar #'byte-optimize-form (cdr form)))))
- (if (get fn 'pure)
+ (if (byte-opt--fget fn 'pure)
(byte-optimize-constant-args form)
form))))))
@@ -529,7 +537,7 @@ for speeding up processing.")
;; until a fixpoint has been reached.
(and (consp form)
(symbolp (car form))
- (let ((opt (function-get (car form) 'byte-optimizer)))
+ (let ((opt (byte-opt--fget (car form) 'byte-optimizer)))
(and opt
(let ((old form)
(new (funcall opt form)))
@@ -755,7 +763,8 @@ for speeding up processing.")
((eq head 'list) (cdr form))
((memq head
;; FIXME: Replace this list with a function property?
- '( length safe-length cons lambda
+ '( lambda internal-make-closure
+ length safe-length cons
string unibyte-string make-string concat
format format-message
substring substring-no-properties string-replace
@@ -971,17 +980,52 @@ for speeding up processing.")
(t ;; Moving the constant to the end can enable some lapcode optimizations.
(list (car form) (nth 2 form) (nth 1 form)))))
+(defun byte-opt--nary-comparison (form)
+ "Optimise n-ary comparisons such as `=', `<' etc."
+ (let ((nargs (length (cdr form))))
+ (cond
+ ((= nargs 1)
+ `(progn (cadr form) t))
+ ((>= nargs 3)
+ ;; At least 3 arguments: transform to N-1 binary comparisons,
+ ;; since those have their own byte-ops which are particularly
+ ;; fast for fixnums.
+ (let* ((op (car form))
+ (bindings nil)
+ (rev-args nil))
+ (if (memq nil (mapcar #'macroexp-copyable-p (cddr form)))
+ ;; At least one arg beyond the first is non-constant non-variable:
+ ;; create temporaries for all args to guard against side-effects.
+ ;; The optimiser will eliminate trivial bindings later.
+ (let ((i 1))
+ (dolist (arg (cdr form))
+ (let ((var (make-symbol (format "arg%d" i))))
+ (push var rev-args)
+ (push (list var arg) bindings)
+ (setq i (1+ i)))))
+ ;; All args beyond the first are copyable: no temporary variables
+ ;; required.
+ (setq rev-args (reverse (cdr form))))
+ (let ((prev (car rev-args))
+ (exprs nil))
+ (dolist (arg (cdr rev-args))
+ (push (list op arg prev) exprs)
+ (setq prev arg))
+ (let ((and-expr (cons 'and exprs)))
+ (if bindings
+ (list 'let (nreverse bindings) and-expr)
+ and-expr)))))
+ (t form))))
+
(defun byte-optimize-constant-args (form)
- (let ((ok t)
- (rest (cdr form)))
- (while (and rest ok)
- (setq ok (macroexp-const-p (car rest))
- rest (cdr rest)))
- (if ok
- (condition-case ()
- (list 'quote (eval form))
- (error form))
- form)))
+ (let ((rest (cdr form)))
+ (while (and rest (macroexp-const-p (car rest)))
+ (setq rest (cdr rest)))
+ (if rest
+ form
+ (condition-case ()
+ (list 'quote (eval form t))
+ (error form)))))
(defun byte-optimize-identity (form)
(if (and (cdr form) (null (cdr (cdr form))))
@@ -989,8 +1033,19 @@ for speeding up processing.")
form))
(defun byte-optimize--constant-symbol-p (expr)
- "Whether EXPR is a constant symbol."
- (and (macroexp-const-p expr) (symbolp (eval expr))))
+ "Whether EXPR is a constant symbol, like (quote hello), nil, t, or :keyword."
+ (if (consp expr)
+ (and (memq (car expr) '(quote function))
+ (symbolp (cadr expr)))
+ (or (memq expr '(nil t))
+ (keywordp expr))))
+
+(defsubst byteopt--eval-const (expr)
+ "Evaluate EXPR which must be a constant (quoted or self-evaluating).
+Ie, (macroexp-const-p EXPR) must be true."
+ (if (consp expr)
+ (cadr expr) ; assumed to be 'VALUE or #'SYMBOL
+ expr))
(defun byte-optimize--fixnump (o)
"Return whether O is guaranteed to be a fixnum in all Emacsen.
@@ -1027,7 +1082,7 @@ See Info node `(elisp) Integer Basics'."
(byte-optimize--fixnump (nth 1 form))
(let ((arg2 (nth 2 form)))
(and (macroexp-const-p arg2)
- (let ((listval (eval arg2)))
+ (let ((listval (byteopt--eval-const arg2)))
(and (listp listval)
(not (memq nil (mapcar
(lambda (o)
@@ -1076,21 +1131,31 @@ See Info node `(elisp) Integer Basics'."
form))
(defun byte-optimize-concat (form)
- "Merge adjacent constant arguments to `concat'."
+ "Merge adjacent constant arguments to `concat' and flatten nested forms."
(let ((args (cdr form))
(newargs nil))
(while args
- (let ((strings nil)
- val)
- (while (and args (macroexp-const-p (car args))
- (progn
- (setq val (eval (car args)))
- (and (or (stringp val)
- (and (or (listp val) (vectorp val))
- (not (memq nil
- (mapcar #'characterp val))))))))
- (push val strings)
- (setq args (cdr args)))
+ (let ((strings nil))
+ (while
+ (and args
+ (let ((arg (car args)))
+ (pcase arg
+ ;; Merge consecutive constant arguments.
+ ((pred macroexp-const-p)
+ (let ((val (byteopt--eval-const arg)))
+ (and (or (stringp val)
+ (and (or (listp val) (vectorp val))
+ (not (memq nil
+ (mapcar #'characterp val)))))
+ (progn
+ (push val strings)
+ (setq args (cdr args))
+ t))))
+ ;; Flatten nested `concat' form.
+ (`(concat . ,nested-args)
+ (setq args (append nested-args (cdr args)))
+ t)))))
+
(when strings
(let ((s (apply #'concat (nreverse strings))))
(when (not (zerop (length s)))
@@ -1126,13 +1191,18 @@ See Info node `(elisp) Integer Basics'."
(put 'max 'byte-optimizer #'byte-optimize-min-max)
(put 'min 'byte-optimizer #'byte-optimize-min-max)
-(put '= 'byte-optimizer #'byte-optimize-binary-predicate)
(put 'eq 'byte-optimizer #'byte-optimize-eq)
(put 'eql 'byte-optimizer #'byte-optimize-equal)
(put 'equal 'byte-optimizer #'byte-optimize-equal)
(put 'string= 'byte-optimizer #'byte-optimize-binary-predicate)
(put 'string-equal 'byte-optimizer #'byte-optimize-binary-predicate)
+(put '= 'byte-optimizer #'byte-opt--nary-comparison)
+(put '< 'byte-optimizer #'byte-opt--nary-comparison)
+(put '<= 'byte-optimizer #'byte-opt--nary-comparison)
+(put '> 'byte-optimizer #'byte-opt--nary-comparison)
+(put '>= 'byte-optimizer #'byte-opt--nary-comparison)
+
(put 'string-greaterp 'byte-optimizer #'byte-optimize-string-greaterp)
(put 'string> 'byte-optimizer #'byte-optimize-string-greaterp)
@@ -1297,11 +1367,8 @@ See Info node `(elisp) Integer Basics'."
(if else
`(progn ,condition ,@else)
condition))
- ;; (if X nil t) -> (not X)
- ((and (eq then nil) (eq else '(t)))
- `(not ,condition))
- ;; (if X t [nil]) -> (not (not X))
- ((and (eq then t) (or (null else) (eq else '(nil))))
+ ;; (if X t) -> (not (not X))
+ ((and (eq then t) (null else))
`(not ,(byte-opt--negate condition)))
;; (if VAR VAR X...) -> (or VAR (progn X...))
((and (symbolp condition) (eq condition then))
@@ -1379,6 +1446,9 @@ See Info node `(elisp) Integer Basics'."
;; (apply F ... (list X Y ...)) -> (funcall F ... X Y ...)
((eq (car-safe last) 'list)
`(funcall ,fn ,@(butlast (cddr form)) ,@(cdr last)))
+ ;; (apply F ... (cons X Y)) -> (apply F ... X Y)
+ ((eq (car-safe last) 'cons)
+ (append (butlast form) (cdr last)))
(t form)))
form)))
@@ -1476,7 +1546,7 @@ See Info node `(elisp) Integer Basics'."
(cond
((macroexp-const-p arg)
;; constant arg
- (let ((val (eval arg)))
+ (let ((val (byteopt--eval-const arg)))
(cond
;; Elide empty arguments (nil, empty string, etc).
((zerop (length val))
@@ -1486,7 +1556,7 @@ See Info node `(elisp) Integer Basics'."
(loop (cdr args)
(cons
(list 'quote
- (append (eval prev) val nil))
+ (append (byteopt--eval-const prev) val nil))
(cdr newargs))))
(t (loop (cdr args) (cons arg newargs))))))
@@ -1566,106 +1636,231 @@ See Info node `(elisp) Integer Basics'."
;; I wonder if I missed any :-\)
(let ((side-effect-free-fns
- '(% * + - / /= 1+ 1- < <= = > >= abs acos append aref ash asin atan
- assq
- base64-decode-string base64-encode-string base64url-encode-string
+ '(
+ ;; alloc.c
+ make-bool-vector make-byte-code make-list make-record make-string
+ make-symbol make-vector
+ ;; buffer.c
+ buffer-base-buffer buffer-chars-modified-tick buffer-file-name
+ buffer-local-value buffer-local-variables buffer-modified-p
+ buffer-modified-tick buffer-name get-buffer next-overlay-change
+ overlay-buffer overlay-end overlay-get overlay-properties
+ overlay-start overlays-at overlays-in previous-overlay-change
+ ;; callint.c
+ prefix-numeric-value
+ ;; casefiddle.c
+ capitalize downcase upcase upcase-initials
+ ;; category.c
+ 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
+ ;; charset.c
+ decode-char encode-char
+ ;; chartab.c
+ make-char-table
+ ;; data.c
+ % * + - / /= 1+ 1- < <= = > >=
+ aref ash bare-symbol
bool-vector-count-consecutive bool-vector-count-population
bool-vector-subsetp
- boundp buffer-file-name buffer-local-variables buffer-modified-p
- buffer-substring byte-code-function-p
- capitalize car-less-than-car car cdr ceiling char-after char-before
- char-equal char-to-string char-width compare-strings
- window-configuration-equal-p concat coordinates-in-window-p
- copy-alist copy-sequence copy-marker copysign cos count-lines
- current-time-string current-time-zone
- decode-char
- decode-time default-boundp default-value documentation downcase
- elt encode-char exp expt encode-time error-message-string
- fboundp fceiling featurep ffloor
- file-directory-p file-exists-p file-locked-p file-name-absolute-p
- file-name-concat
- file-newer-than-file-p file-readable-p file-symlink-p file-writable-p
- float float-time floor format format-time-string frame-first-window
- frame-root-window frame-selected-window
- frame-visible-p fround ftruncate
- get gethash get-buffer get-buffer-window getenv get-file-buffer
- hash-table-count
- int-to-string intern-soft isnan
- keymap-parent
- lax-plist-get ldexp
- length length< length> length=
- line-beginning-position line-end-position pos-bol pos-eol
- local-variable-if-set-p local-variable-p locale-info
- log log10 logand logb logcount logior lognot logxor lsh
- make-byte-code make-list make-string make-symbol mark marker-buffer max
- match-beginning match-end
- member memq memql min minibuffer-selected-window minibuffer-window
- mod multibyte-char-to-unibyte next-window nth nthcdr number-to-string
- parse-colon-path
- prefix-numeric-value previous-window prin1-to-string propertize
- degrees-to-radians
- radians-to-degrees rassq rassoc read-from-string regexp-opt
- regexp-quote region-beginning region-end reverse round
- sin sqrt string string< string= string-equal string-lessp
- string> string-greaterp string-empty-p string-blank-p
- string-search string-to-char
- string-to-number string-to-syntax substring
- sxhash sxhash-equal sxhash-eq sxhash-eql
- symbol-function symbol-name symbol-plist symbol-value string-make-unibyte
- string-make-multibyte string-as-multibyte string-as-unibyte
- string-to-multibyte
- take tan time-convert truncate
- unibyte-char-to-multibyte upcase user-full-name
- user-login-name user-original-login-name custom-variable-p
- vconcat
- window-absolute-pixel-edges window-at window-body-height
- window-body-width window-buffer window-dedicated-p window-display-table
- window-combination-limit window-edges window-frame window-fringes
- window-height window-hscroll window-inside-edges
- window-inside-absolute-pixel-edges window-inside-pixel-edges
- window-left-child window-left-column window-margins window-minibuffer-p
- window-next-buffers window-next-sibling window-new-normal
- window-new-total window-normal-size window-parameter window-parameters
- window-parent window-pixel-edges window-point window-prev-buffers
- window-prev-sibling window-scroll-bars
- window-start window-text-height window-top-child window-top-line
- window-total-height window-total-width window-use-time window-vscroll
- window-width zerop))
+ boundp car cdr default-boundp default-value fboundp
+ get-variable-watchers indirect-variable
+ local-variable-if-set-p local-variable-p
+ logand logcount logior lognot logxor max min mod
+ number-to-string position-symbol string-to-number
+ subr-arity subr-name subr-native-lambda-list subr-type
+ symbol-function symbol-name symbol-plist symbol-value
+ symbol-with-pos-pos variable-binding-locus
+ ;; doc.c
+ documentation
+ ;; editfns.c
+ buffer-substring buffer-substring-no-properties
+ byte-to-position byte-to-string
+ char-after char-before char-equal char-to-string
+ compare-buffer-substrings
+ format format-message
+ group-name
+ 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
+ ;; 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
+ file-readable-p file-symlink-p file-writable-p
+ ;; filelock.c
+ 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
+ truncate
+ ;; fns.c
+ append assq
+ base64-decode-string base64-encode-string base64url-encode-string
+ 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
+ member memq memql nth nthcdr
+ object-intervals rassoc rassq reverse
+ string-as-multibyte string-as-unibyte string-bytes string-distance
+ string-equal string-lessp string-make-multibyte string-make-unibyte
+ string-search string-to-multibyte substring substring-no-properties
+ sxhash-eq sxhash-eql sxhash-equal sxhash-equal-including-properties
+ take vconcat
+ ;; frame.c
+ frame-ancestor-p frame-bottom-divider-width frame-char-height
+ frame-char-width frame-child-frame-border-width frame-focus
+ frame-fringe-width frame-internal-border-width frame-native-height
+ frame-native-width frame-parameter frame-parameters frame-parent
+ frame-pointer-visible-p frame-position frame-right-divider-width
+ frame-scale-factor frame-scroll-bar-height frame-scroll-bar-width
+ frame-text-cols frame-text-height frame-text-lines frame-text-width
+ frame-total-cols frame-total-lines frame-visible-p
+ frame-window-state-change next-frame previous-frame
+ tool-bar-pixel-width window-system
+ ;; fringe.c
+ fringe-bitmaps-at-pos
+ ;; keyboard.c
+ posn-at-point posn-at-x-y
+ ;; keymap.c
+ copy-keymap keymap-parent keymap-prompt make-keymap make-sparse-keymap
+ ;; lread.c
+ intern-soft read-from-string
+ ;; marker.c
+ copy-marker marker-buffer marker-insertion-type marker-position
+ ;; minibuf.c
+ active-minibuffer-window assoc-string innermost-minibuffer-p
+ minibuffer-innermost-command-loop-p minibufferp
+ ;; print.c
+ error-message-string prin1-to-string
+ ;; process.c
+ format-network-address get-buffer-process get-process
+ process-buffer process-coding-system process-command process-filter
+ process-id process-inherit-coding-system-flag process-mark
+ process-name process-plist process-query-on-exit-flag
+ process-running-child-p process-sentinel process-thread
+ process-tty-name process-type
+ ;; search.c
+ match-beginning match-end regexp-quote
+ ;; sqlite.c
+ sqlite-columns sqlite-more-p sqlite-version
+ ;; syntax.c
+ char-syntax copy-syntax-table matching-paren string-to-syntax
+ syntax-class-to-char
+ ;; term.c
+ controlling-tty-p tty-display-color-cells tty-display-color-p
+ tty-top-frame tty-type
+ ;; terminal.c
+ frame-terminal terminal-list terminal-live-p terminal-name
+ terminal-parameter terminal-parameters
+ ;; textprop.c
+ get-char-property get-char-property-and-overlay get-text-property
+ next-char-property-change next-property-change
+ next-single-char-property-change next-single-property-change
+ previous-char-property-change previous-property-change
+ previous-single-char-property-change previous-single-property-change
+ text-properties-at text-property-any text-property-not-all
+ ;; thread.c
+ all-threads condition-mutex condition-name mutex-name thread-live-p
+ thread-name
+ ;; timefns.c
+ 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
+ ;; window.c
+ coordinates-in-window-p frame-first-window frame-root-window
+ frame-selected-window get-buffer-window minibuffer-selected-window
+ minibuffer-window next-window previous-window window-at
+ window-body-height window-body-width window-buffer
+ window-combination-limit window-configuration-equal-p
+ window-dedicated-p window-display-table window-frame window-fringes
+ window-hscroll window-left-child window-left-column window-margins
+ window-minibuffer-p window-new-normal window-new-total
+ window-next-buffers window-next-sibling window-normal-size
+ window-parameter window-parameters window-parent window-point
+ window-prev-buffers window-prev-sibling window-scroll-bars
+ window-start window-text-height window-top-child window-top-line
+ window-total-height window-total-width window-use-time window-vscroll
+ ;; xdisp.c
+ buffer-text-pixel-size current-bidi-paragraph-direction
+ get-display-property invisible-p line-pixel-height lookup-image-map
+ tab-bar-height tool-bar-height window-text-pixel-size
+ ))
(side-effect-and-error-free-fns
- '(always arrayp atom
- bignump bobp bolp bool-vector-p
- buffer-end buffer-list buffer-size buffer-string bufferp
- car-safe case-table-p cdr-safe char-or-string-p characterp
- charsetp commandp cons consp
- current-buffer current-global-map current-indentation
- current-local-map current-minor-mode-maps current-time
- eobp eolp eq equal eventp
- fixnump floatp following-char framep
- get-largest-window get-lru-window
- hash-table-p
- ;; `ignore' isn't here because we don't want calls to it elided;
- ;; see `byte-compile-ignore'.
- identity integerp integer-or-marker-p interactive-p
- invocation-directory invocation-name
- keymapp keywordp
- list listp
- make-marker mark-marker markerp max-char
- memory-limit
- mouse-movement-p
- natnump nlistp not null number-or-marker-p numberp
- one-window-p overlayp
- point point-marker point-min point-max preceding-char primary-charset
- processp proper-list-p
- recent-keys recursion-depth
- safe-length selected-frame selected-window sequencep
- standard-case-table standard-syntax-table stringp subrp symbolp
- syntax-table syntax-table-p
- this-command-keys this-command-keys-vector this-single-command-keys
- this-single-command-raw-keys type-of
- user-real-login-name user-real-uid user-uid
- vector vectorp visible-frame-list
- wholenump window-configuration-p window-live-p
- window-valid-p windowp)))
+ '(
+ ;; alloc.c
+ bool-vector cons list make-marker purecopy record vector
+ ;; buffer.c
+ buffer-list buffer-live-p current-buffer overlay-lists overlayp
+ ;; casetab.c
+ case-table-p current-case-table standard-case-table
+ ;; category.c
+ category-table category-table-p make-category-table
+ standard-category-table
+ ;; character.c
+ characterp max-char
+ ;; charset.c
+ charsetp
+ ;; data.c
+ arrayp atom bare-symbol-p bool-vector-p bufferp byte-code-function-p
+ byteorder car-safe cdr-safe char-or-string-p char-table-p
+ condition-variable-p consp eq floatp indirect-function
+ integer-or-marker-p integerp keywordp listp markerp
+ module-function-p multibyte-string-p mutexp natnump nlistp null
+ number-or-marker-p numberp recordp remove-pos-from-symbol
+ sequencep stringp subr-native-elisp-p subrp symbol-with-pos-p symbolp
+ threadp type-of user-ptrp vector-or-char-table-p vectorp wholenump
+ ;; editfns.c
+ bobp bolp buffer-size buffer-string current-message emacs-pid
+ eobp eolp following-char gap-position gap-size group-gid
+ group-real-gid mark-marker point point-marker point-max point-min
+ position-bytes preceding-char system-name
+ user-real-login-name user-real-uid user-uid
+ ;; emacs.c
+ invocation-directory invocation-name
+ ;; eval.c
+ commandp functionp
+ ;; fileio.c
+ default-file-modes
+ ;; fns.c
+ eql equal hash-table-p identity proper-list-p safe-length
+ secure-hash-algorithms
+ ;; frame.c
+ frame-list frame-live-p framep last-nonminibuffer-frame
+ old-selected-frame selected-frame visible-frame-list
+ ;; image.c
+ imagep
+ ;; indent.c
+ current-column current-indentation
+ ;; keyboard.c
+ current-idle-time current-input-mode recent-keys recursion-depth
+ this-command-keys this-command-keys-vector this-single-command-keys
+ this-single-command-raw-keys
+ ;; keymap.c
+ current-global-map current-local-map current-minor-mode-maps keymapp
+ ;; minibuf.c
+ minibuffer-contents minibuffer-contents-no-properties minibuffer-depth
+ minibuffer-prompt minibuffer-prompt-end
+ ;; process.c
+ process-list processp signal-names waiting-for-user-input-p
+ ;; sqlite.c
+ sqlite-available-p sqlitep
+ ;; syntax.c
+ standard-syntax-table syntax-table syntax-table-p
+ ;; thread.c
+ current-thread
+ ;; timefns.c
+ current-time
+ ;; window.c
+ selected-window window-configuration-p window-live-p window-valid-p
+ windowp
+ ;; xdisp.c
+ long-line-optimizations-p
+ )))
(while side-effect-free-fns
(put (car side-effect-free-fns) 'side-effect-free t)
(setq side-effect-free-fns (cdr side-effect-free-fns)))
@@ -1690,43 +1885,34 @@ See Info node `(elisp) Integer Basics'."
;; values if a marker is moved.
(let ((pure-fns
- '(concat regexp-opt regexp-quote
- string-to-char string-to-syntax symbol-name
- eq eql
- = /= < <= >= > min max
- + - * / % mod abs ash 1+ 1- sqrt
- logand logior lognot logxor logcount
- copysign isnan ldexp float logb
- floor ceiling round truncate
- ffloor fceiling fround ftruncate
- string= string-equal string< string-lessp string> string-greaterp
- string-empty-p string-blank-p
- string-search
- consp atom listp nlistp proper-list-p
- sequencep arrayp vectorp stringp bool-vector-p hash-table-p
- null not
- numberp integerp floatp natnump characterp
- integer-or-marker-p number-or-marker-p char-or-string-p
- symbolp keywordp
- type-of
- identity ignore
-
- ;; The following functions are pure up to mutation of their
- ;; arguments. This is pure enough for the purposes of
- ;; constant folding, but not necessarily for all kinds of
- ;; code motion.
- car cdr car-safe cdr-safe nth nthcdr last take
- equal
- length safe-length
- memq memql member
- ;; `assoc' and `assoc-default' are excluded since they are
- ;; impure if the test function is (consider `string-match').
- assq rassq rassoc
- lax-plist-get
- aref elt
- base64-decode-string base64-encode-string base64url-encode-string
- bool-vector-subsetp
- bool-vector-count-population bool-vector-count-consecutive
+ '(
+ ;; character.c
+ characterp
+ ;; data.c
+ % * + - / /= 1+ 1- < <= = > >= aref arrayp ash atom bare-symbol
+ bool-vector-count-consecutive bool-vector-count-population
+ bool-vector-p bool-vector-subsetp
+ bufferp car car-safe cdr cdr-safe char-or-string-p char-table-p
+ condition-variable-p consp eq floatp integer-or-marker-p integerp
+ keywordp listp logand logcount logior lognot logxor markerp max min
+ mod multibyte-string-p mutexp natnump nlistp null number-or-marker-p
+ numberp recordp remove-pos-from-symbol sequencep stringp symbol-name
+ symbolp threadp type-of vector-or-char-table-p vectorp
+ ;; editfns.c
+ string-to-char
+ ;; floatfns.c
+ abs ceiling copysign fceiling ffloor float floor fround ftruncate
+ 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=
+ length> member memq memql nth nthcdr proper-list-p rassoc rassq
+ safe-length string-bytes string-distance string-equal string-lessp
+ string-search take
+ ;; search.c
+ regexp-quote
+ ;; syntax.c
+ string-to-syntax
)))
(while pure-fns
(put (car pure-fns) 'pure t)
@@ -1904,6 +2090,7 @@ See Info node `(elisp) Integer Basics'."
(defconst byte-after-unbind-ops
'(byte-constant byte-dup byte-stack-ref byte-stack-set byte-discard
+ byte-discardN byte-discardN-preserve-tos
byte-symbolp byte-consp byte-stringp byte-listp byte-numberp byte-integerp
byte-eq byte-not
byte-cons byte-list1 byte-list2 byte-list3 byte-list4 byte-listN
@@ -1967,574 +2154,800 @@ See Info node `(elisp) Integer Basics'."
(defun byte-optimize-lapcode (lap &optional _for-effect)
"Simple peephole optimizer. LAP is both modified and returned.
If FOR-EFFECT is non-nil, the return value is assumed to be of no importance."
- (let (lap0
- lap1
- lap2
- (keep-going 'first-time)
- (add-depth 0)
- rest tmp tmp2 tmp3
- (side-effect-free (if byte-compile-delete-errors
+ (let ((side-effect-free (if byte-compile-delete-errors
byte-compile-side-effect-free-ops
- byte-compile-side-effect-and-error-free-ops)))
+ byte-compile-side-effect-and-error-free-ops))
+ ;; Ops taking and produce a single value on the stack.
+ (unary-ops '( byte-not byte-length byte-list1 byte-nreverse
+ byte-car byte-cdr byte-car-safe byte-cdr-safe
+ byte-symbolp byte-consp byte-stringp
+ byte-listp byte-integerp byte-numberp
+ byte-add1 byte-sub1 byte-negate
+ ;; There are more of these but the list is
+ ;; getting long and the gain is typically small.
+ ))
+ ;; Ops producing a single result without looking at the stack.
+ (producer-ops '( byte-constant byte-varref
+ byte-point byte-point-max byte-point-min
+ byte-following-char byte-preceding-char
+ byte-current-column
+ byte-eolp byte-eobp byte-bolp byte-bobp
+ byte-current-buffer byte-widen))
+ (add-depth 0)
+ (keep-going 'first-time)
+ ;; Create a cons cell as head of the list so that removing the first
+ ;; element does not need special-casing: `setcdr' always works.
+ (lap-head (cons nil lap)))
(while keep-going
- (or (eq keep-going 'first-time)
- (byte-compile-log-lap " ---- next pass"))
- (setq rest lap
- keep-going nil)
- (while rest
- (setq lap0 (car rest)
- lap1 (nth 1 rest)
- lap2 (nth 2 rest))
-
- ;; You may notice that sequences like "dup varset discard" are
- ;; optimized but sequences like "dup varset TAG1: discard" are not.
- ;; You may be tempted to change this; resist that temptation.
- (cond
- ;; <side-effect-free> pop --> <deleted>
- ;; ...including:
- ;; const-X pop --> <deleted>
- ;; varref-X pop --> <deleted>
- ;; dup pop --> <deleted>
- ;;
- ((and (eq 'byte-discard (car lap1))
- (memq (car lap0) side-effect-free))
- (setq keep-going t)
- (setq tmp (aref byte-stack+-info (symbol-value (car lap0))))
- (setq rest (cdr rest))
- (cond ((eql tmp 1)
- (byte-compile-log-lap
- " %s discard\t-->\t<deleted>" lap0)
- (setq lap (delq lap0 (delq lap1 lap))))
- ((eql tmp 0)
- (byte-compile-log-lap
- " %s discard\t-->\t<deleted> discard" lap0)
- (setq lap (delq lap0 lap)))
- ((eql tmp -1)
- (byte-compile-log-lap
- " %s discard\t-->\tdiscard discard" lap0)
- (setcar lap0 'byte-discard)
- (setcdr lap0 0))
- (t (error "Optimizer error: too much on the stack"))))
- ;;
- ;; goto*-X X: --> X:
- ;;
- ((and (memq (car lap0) byte-goto-ops)
- (eq (cdr lap0) lap1))
- (cond ((eq (car lap0) 'byte-goto)
- (setq lap (delq lap0 lap))
- (setq tmp "<deleted>"))
- ((memq (car lap0) byte-goto-always-pop-ops)
- (setcar lap0 (setq tmp 'byte-discard))
- (setcdr lap0 0))
- ((error "Depth conflict at tag %d" (nth 2 lap0))))
- (and (memq byte-optimize-log '(t byte))
- (byte-compile-log " (goto %s) %s:\t-->\t%s %s:"
- (nth 1 lap1) (nth 1 lap1)
- tmp (nth 1 lap1)))
- (setq keep-going t))
- ;;
- ;; varset-X varref-X --> dup varset-X
- ;; varbind-X varref-X --> dup varbind-X
- ;; const/dup varset-X varref-X --> const/dup varset-X const/dup
- ;; const/dup varbind-X varref-X --> const/dup varbind-X const/dup
- ;; The latter two can enable other optimizations.
- ;;
- ;; For lexical variables, we could do the same
- ;; stack-set-X+1 stack-ref-X --> dup stack-set-X+2
- ;; but this is a very minor gain, since dup is stack-ref-0,
- ;; i.e. it's only better if X>5, and even then it comes
- ;; at the cost of an extra stack slot. Let's not bother.
- ((and (eq 'byte-varref (car lap2))
- (eq (cdr lap1) (cdr lap2))
- (memq (car lap1) '(byte-varset byte-varbind)))
- (if (and (setq tmp (memq (car (cdr lap2)) byte-boolean-vars))
- (not (eq (car lap0) 'byte-constant)))
- nil
- (setq keep-going t)
- (if (memq (car lap0) '(byte-constant byte-dup))
- (progn
- (setq tmp (if (or (not tmp)
- (macroexp--const-symbol-p
- (car (cdr lap0))))
- (cdr lap0)
- (byte-compile-get-constant t)))
- (byte-compile-log-lap " %s %s %s\t-->\t%s %s %s"
- lap0 lap1 lap2 lap0 lap1
- (cons (car lap0) tmp))
- (setcar lap2 (car lap0))
- (setcdr lap2 tmp))
- (byte-compile-log-lap " %s %s\t-->\tdup %s" lap1 lap2 lap1)
- (setcar lap2 (car lap1))
- (setcar lap1 'byte-dup)
- (setcdr lap1 0)
- ;; The stack depth gets locally increased, so we will
- ;; increase maxdepth in case depth = maxdepth here.
- ;; This can cause the third argument to byte-code to
- ;; be larger than necessary.
- (setq add-depth 1))))
- ;;
- ;; dup varset-X discard --> varset-X
- ;; dup varbind-X discard --> varbind-X
- ;; dup stack-set-X discard --> stack-set-X-1
- ;; (the varbind variant can emerge from other optimizations)
- ;;
- ((and (eq 'byte-dup (car lap0))
- (eq 'byte-discard (car lap2))
- (memq (car lap1) '(byte-varset byte-varbind
- byte-stack-set)))
- (byte-compile-log-lap " dup %s discard\t-->\t%s" lap1 lap1)
- (setq keep-going t
- rest (cdr rest))
- (if (eq 'byte-stack-set (car lap1)) (cl-decf (cdr lap1)))
- (setq lap (delq lap0 (delq lap2 lap))))
- ;;
- ;; not goto-X-if-nil --> goto-X-if-non-nil
- ;; not goto-X-if-non-nil --> goto-X-if-nil
- ;;
- ;; it is wrong to do the same thing for the -else-pop variants.
- ;;
- ((and (eq 'byte-not (car lap0))
- (memq (car lap1) '(byte-goto-if-nil byte-goto-if-not-nil)))
- (byte-compile-log-lap " not %s\t-->\t%s"
- lap1
- (cons
- (if (eq (car lap1) 'byte-goto-if-nil)
- 'byte-goto-if-not-nil
- 'byte-goto-if-nil)
- (cdr lap1)))
- (setcar lap1 (if (eq (car lap1) 'byte-goto-if-nil)
- 'byte-goto-if-not-nil
- 'byte-goto-if-nil))
- (setq lap (delq lap0 lap))
- (setq keep-going t))
- ;;
- ;; goto-X-if-nil goto-Y X: --> goto-Y-if-non-nil X:
- ;; goto-X-if-non-nil goto-Y X: --> goto-Y-if-nil X:
- ;;
- ;; it is wrong to do the same thing for the -else-pop variants.
- ;;
- ((and (memq (car lap0)
- '(byte-goto-if-nil byte-goto-if-not-nil)) ; gotoX
- (eq 'byte-goto (car lap1)) ; gotoY
- (eq (cdr lap0) lap2)) ; TAG X
- (let ((inverse (if (eq 'byte-goto-if-nil (car lap0))
- 'byte-goto-if-not-nil 'byte-goto-if-nil)))
- (byte-compile-log-lap " %s %s %s:\t-->\t%s %s:"
- lap0 lap1 lap2
- (cons inverse (cdr lap1)) lap2)
- (setq lap (delq lap0 lap))
- (setcar lap1 inverse)
- (setq keep-going t)))
- ;;
- ;; const goto-if-* --> whatever
- ;;
- ((and (eq 'byte-constant (car lap0))
- (memq (car lap1) byte-conditional-ops)
- ;; If the `byte-constant's cdr is not a cons cell, it has
- ;; to be an index into the constant pool); even though
- ;; it'll be a constant, that constant is not known yet
- ;; (it's typically a free variable of a closure, so will
- ;; only be known when the closure will be built at
- ;; run-time).
- (consp (cdr lap0)))
- (cond ((if (memq (car lap1) '(byte-goto-if-nil
- byte-goto-if-nil-else-pop))
- (car (cdr lap0))
- (not (car (cdr lap0))))
- (byte-compile-log-lap " %s %s\t-->\t<deleted>"
- lap0 lap1)
- (setq rest (cdr rest)
- lap (delq lap0 (delq lap1 lap))))
- (t
- (byte-compile-log-lap " %s %s\t-->\t%s"
- lap0 lap1
- (cons 'byte-goto (cdr lap1)))
- (when (memq (car lap1) byte-goto-always-pop-ops)
- (setq lap (delq lap0 lap)))
- (setcar lap1 'byte-goto)))
- (setq keep-going t))
- ;;
- ;; varref-X varref-X --> varref-X dup
- ;; varref-X [dup ...] varref-X --> varref-X [dup ...] dup
- ;; stackref-X [dup ...] stackref-X+N --> stackref-X [dup ...] dup
- ;; We don't optimize the const-X variations on this here,
- ;; because that would inhibit some goto optimizations; we
- ;; optimize the const-X case after all other optimizations.
- ;;
- ((and (memq (car lap0) '(byte-varref byte-stack-ref))
- (progn
- (setq tmp (cdr rest))
- (setq tmp2 0)
- (while (eq (car (car tmp)) 'byte-dup)
- (setq tmp2 (1+ tmp2))
- (setq tmp (cdr tmp)))
- t)
- (eq (if (eq 'byte-stack-ref (car lap0))
- (+ tmp2 1 (cdr lap0))
- (cdr lap0))
- (cdr (car tmp)))
- (eq (car lap0) (car (car tmp))))
- (if (memq byte-optimize-log '(t byte))
- (let ((str ""))
- (setq tmp2 (cdr rest))
- (while (not (eq tmp tmp2))
- (setq tmp2 (cdr tmp2)
- str (concat str " dup")))
- (byte-compile-log-lap " %s%s %s\t-->\t%s%s dup"
- lap0 str lap0 lap0 str)))
- (setq keep-going t)
- (setcar (car tmp) 'byte-dup)
- (setcdr (car tmp) 0)
- (setq rest tmp))
- ;;
- ;; TAG1: TAG2: --> TAG1: <deleted>
- ;; (and other references to TAG2 are replaced with TAG1)
- ;;
- ((and (eq (car lap0) 'TAG)
- (eq (car lap1) 'TAG))
- (and (memq byte-optimize-log '(t byte))
- (byte-compile-log " adjacent tags %d and %d merged"
- (nth 1 lap1) (nth 1 lap0)))
- (setq tmp3 lap)
- (while (setq tmp2 (rassq lap0 tmp3))
- (setcdr tmp2 lap1)
- (setq tmp3 (cdr (memq tmp2 tmp3))))
- (setq lap (delq lap0 lap)
- keep-going t)
- ;; replace references to tag in jump tables, if any
- (dolist (table byte-compile-jump-tables)
- (maphash #'(lambda (value tag)
- (when (equal tag lap0)
- (puthash value lap1 table)))
- table)))
- ;;
- ;; unused-TAG: --> <deleted>
- ;;
- ((and (eq 'TAG (car lap0))
- (not (rassq lap0 lap))
- ;; make sure this tag isn't used in a jump-table
- (cl-loop for table in byte-compile-jump-tables
- when (member lap0 (hash-table-values table))
- return nil finally return t))
- (and (memq byte-optimize-log '(t byte))
- (byte-compile-log " unused tag %d removed" (nth 1 lap0)))
- (setq lap (delq lap0 lap)
- keep-going t))
- ;;
- ;; goto ... --> goto <delete until TAG or end>
- ;; return ... --> return <delete until TAG or end>
- ;; (unless a jump-table is being used, where deleting may affect
- ;; other valid case bodies)
- ;;
- ((and (memq (car lap0) '(byte-goto byte-return))
- (not (memq (car lap1) '(TAG nil)))
- ;; FIXME: Instead of deferring simply when jump-tables are
- ;; being used, keep a list of tags used for switch tags and
- ;; use them instead (see `byte-compile-inline-lapcode').
- (not byte-compile-jump-tables))
- (setq tmp rest)
- (let ((i 0)
- (opt-p (memq byte-optimize-log '(t lap)))
- str deleted)
- (while (and (setq tmp (cdr tmp))
- (not (eq 'TAG (car (car tmp)))))
- (if opt-p (setq deleted (cons (car tmp) deleted)
- str (concat str " %s")
- i (1+ i))))
- (if opt-p
- (let ((tagstr
- (if (eq 'TAG (car (car tmp)))
- (format "%d:" (car (cdr (car tmp))))
- (or (car tmp) ""))))
- (if (< i 6)
- (apply 'byte-compile-log-lap-1
- (concat " %s" str
- " %s\t-->\t%s <deleted> %s")
- lap0
- (nconc (nreverse deleted)
- (list tagstr lap0 tagstr)))
- (byte-compile-log-lap
- " %s <%d unreachable op%s> %s\t-->\t%s <deleted> %s"
- lap0 i (if (= i 1) "" "s")
- tagstr lap0 tagstr))))
- (rplacd rest tmp))
- (setq keep-going t))
- ;;
- ;; <safe-op> unbind --> unbind <safe-op>
- ;; (this may enable other optimizations.)
- ;;
- ((and (eq 'byte-unbind (car lap1))
- (memq (car lap0) byte-after-unbind-ops))
- (byte-compile-log-lap " %s %s\t-->\t%s %s" lap0 lap1 lap1 lap0)
- (setcar rest lap1)
- (setcar (cdr rest) lap0)
- (setq keep-going t))
- ;;
- ;; varbind-X unbind-N --> discard unbind-(N-1)
- ;; save-excursion unbind-N --> unbind-(N-1)
- ;; save-restriction unbind-N --> unbind-(N-1)
- ;; save-current-buffer unbind-N --> unbind-(N-1)
- ;;
- ((and (eq 'byte-unbind (car lap1))
- (memq (car lap0) '(byte-varbind byte-save-excursion
- byte-save-restriction
- byte-save-current-buffer))
- (< 0 (cdr lap1)))
- (if (zerop (setcdr lap1 (1- (cdr lap1))))
- (delq lap1 rest))
- (if (eq (car lap0) 'byte-varbind)
- (setcar rest (cons 'byte-discard 0))
- (setq lap (delq lap0 lap)))
- (byte-compile-log-lap " %s %s\t-->\t%s %s"
- lap0 (cons (car lap1) (1+ (cdr lap1)))
- (if (eq (car lap0) 'byte-varbind)
- (car rest)
- (car (cdr rest)))
- (if (and (/= 0 (cdr lap1))
- (eq (car lap0) 'byte-varbind))
- (car (cdr rest))
- ""))
- (setq keep-going t))
- ;;
- ;; goto*-X ... X: goto-Y --> goto*-Y
- ;; goto-X ... X: return --> return
- ;;
- ((and (memq (car lap0) byte-goto-ops)
- (memq (car (setq tmp (nth 1 (memq (cdr lap0) lap))))
- '(byte-goto byte-return)))
- (cond ((and (or (eq (car lap0) 'byte-goto)
- (eq (car tmp) 'byte-goto))
- (not (eq (cdr tmp) (cdr lap0))))
- (byte-compile-log-lap " %s [%s]\t-->\t%s"
- (car lap0) tmp tmp)
- (if (eq (car tmp) 'byte-return)
- (setcar lap0 'byte-return))
- (setcdr lap0 (cdr tmp))
- (setq keep-going t))))
- ;;
- ;; goto-*-else-pop X ... X: goto-if-* --> whatever
- ;; goto-*-else-pop X ... X: discard --> whatever
- ;;
- ((and (memq (car lap0) '(byte-goto-if-nil-else-pop
- byte-goto-if-not-nil-else-pop))
- (memq (car (car (setq tmp (cdr (memq (cdr lap0) lap)))))
- (eval-when-compile
- (cons 'byte-discard byte-conditional-ops)))
- (not (eq lap0 (car tmp))))
- (setq tmp2 (car tmp))
- (setq tmp3 (assq (car lap0) '((byte-goto-if-nil-else-pop
- byte-goto-if-nil)
- (byte-goto-if-not-nil-else-pop
- byte-goto-if-not-nil))))
- (if (memq (car tmp2) tmp3)
- (progn (setcar lap0 (car tmp2))
- (setcdr lap0 (cdr tmp2))
- (byte-compile-log-lap " %s-else-pop [%s]\t-->\t%s"
- (car lap0) tmp2 lap0))
- ;; Get rid of the -else-pop's and jump one step further.
- (or (eq 'TAG (car (nth 1 tmp)))
- (setcdr tmp (cons (byte-compile-make-tag)
- (cdr tmp))))
- (byte-compile-log-lap " %s [%s]\t-->\t%s <skip>"
- (car lap0) tmp2 (nth 1 tmp3))
- (setcar lap0 (nth 1 tmp3))
- (setcdr lap0 (nth 1 tmp)))
- (setq keep-going t))
- ;;
- ;; const goto-X ... X: goto-if-* --> whatever
- ;; const goto-X ... X: discard --> whatever
- ;;
- ((and (eq (car lap0) 'byte-constant)
- (eq (car lap1) 'byte-goto)
- (memq (car (car (setq tmp (cdr (memq (cdr lap1) lap)))))
- (eval-when-compile
- (cons 'byte-discard byte-conditional-ops)))
- (not (eq lap1 (car tmp))))
- (setq tmp2 (car tmp))
- (cond ((when (consp (cdr lap0))
- (memq (car tmp2)
- (if (null (car (cdr lap0)))
- '(byte-goto-if-nil byte-goto-if-nil-else-pop)
- '(byte-goto-if-not-nil
- byte-goto-if-not-nil-else-pop))))
- (byte-compile-log-lap " %s goto [%s]\t-->\t%s %s"
- lap0 tmp2 lap0 tmp2)
- (setcar lap1 (car tmp2))
- (setcdr lap1 (cdr tmp2))
- ;; Let next step fix the (const,goto-if*) sequence.
- (setq rest (cons nil rest))
- (setq keep-going t))
- ((or (consp (cdr lap0))
- (eq (car tmp2) 'byte-discard))
- ;; Jump one step further
- (byte-compile-log-lap
- " %s goto [%s]\t-->\t<deleted> goto <skip>"
- lap0 tmp2)
- (or (eq 'TAG (car (nth 1 tmp)))
- (setcdr tmp (cons (byte-compile-make-tag)
- (cdr tmp))))
- (setcdr lap1 (car (cdr tmp)))
- (setq lap (delq lap0 lap))
- (setq keep-going t))))
- ;;
- ;; X: varref-Y ... varset-Y goto-X -->
- ;; X: varref-Y Z: ... dup varset-Y goto-Z
- ;; (varset-X goto-BACK, BACK: varref-X --> copy the varref down.)
- ;; (This is so usual for while loops that it is worth handling).
- ;;
- ;; Here again, we could do it for stack-ref/stack-set, but
- ;; that's replacing a stack-ref-Y with a stack-ref-0, which
- ;; is a very minor improvement (if any), at the cost of
- ;; more stack use and more byte-code. Let's not do it.
- ;;
- ((and (eq (car lap1) 'byte-varset)
- (eq (car lap2) 'byte-goto)
- (not (memq (cdr lap2) rest)) ;Backwards jump
- (eq (car (car (setq tmp (cdr (memq (cdr lap2) lap)))))
- 'byte-varref)
- (eq (cdr (car tmp)) (cdr lap1))
- (not (memq (car (cdr lap1)) byte-boolean-vars)))
- ;;(byte-compile-log-lap " Pulled %s to end of loop" (car tmp))
- (let ((newtag (byte-compile-make-tag)))
- (byte-compile-log-lap
- " %s: %s ... %s %s\t-->\t%s: %s %s: ... %s %s %s"
- (nth 1 (cdr lap2)) (car tmp)
- lap1 lap2
- (nth 1 (cdr lap2)) (car tmp)
- (nth 1 newtag) 'byte-dup lap1
- (cons 'byte-goto newtag)
- )
- (setcdr rest (cons (cons 'byte-dup 0) (cdr rest)))
- (setcdr tmp (cons (setcdr lap2 newtag) (cdr tmp))))
- (setq add-depth 1)
- (setq keep-going t))
- ;;
- ;; goto-X Y: ... X: goto-if*-Y --> goto-if-not-*-X+1 Y:
- ;; (This can pull the loop test to the end of the loop)
- ;;
- ((and (eq (car lap0) 'byte-goto)
- (eq (car lap1) 'TAG)
- (eq lap1
- (cdr (car (setq tmp (cdr (memq (cdr lap0) lap))))))
- (memq (car (car tmp))
- '(byte-goto byte-goto-if-nil byte-goto-if-not-nil
- byte-goto-if-nil-else-pop)))
- ;; (byte-compile-log-lap " %s %s, %s %s --> moved conditional"
- ;; lap0 lap1 (cdr lap0) (car tmp))
- (let ((newtag (byte-compile-make-tag)))
- (byte-compile-log-lap
- "%s %s: ... %s: %s\t-->\t%s ... %s:"
- lap0 (nth 1 lap1) (nth 1 (cdr lap0)) (car tmp)
- (cons (cdr (assq (car (car tmp))
- '((byte-goto-if-nil . byte-goto-if-not-nil)
- (byte-goto-if-not-nil . byte-goto-if-nil)
- (byte-goto-if-nil-else-pop .
- byte-goto-if-not-nil-else-pop)
- (byte-goto-if-not-nil-else-pop .
- byte-goto-if-nil-else-pop))))
- newtag)
-
- (nth 1 newtag)
- )
- (setcdr tmp (cons (setcdr lap0 newtag) (cdr tmp)))
- (if (eq (car (car tmp)) 'byte-goto-if-nil-else-pop)
- ;; We can handle this case but not the -if-not-nil case,
- ;; because we won't know which non-nil constant to push.
- (setcdr rest (cons (cons 'byte-constant
- (byte-compile-get-constant nil))
- (cdr rest))))
- (setcar lap0 (nth 1 (memq (car (car tmp))
- '(byte-goto-if-nil-else-pop
- byte-goto-if-not-nil
- byte-goto-if-nil
- byte-goto-if-not-nil
- byte-goto byte-goto))))
- )
- (setq keep-going t))
-
- ;;
- ;; stack-set-M [discard/discardN ...] --> discardN-preserve-tos
- ;; stack-set-M [discard/discardN ...] --> discardN
- ;;
- ((and (eq (car lap0) 'byte-stack-set)
- (memq (car lap1) '(byte-discard byte-discardN))
- (progn
- ;; See if enough discard operations follow to expose or
- ;; destroy the value stored by the stack-set.
- (setq tmp (cdr rest))
- (setq tmp2 (1- (cdr lap0)))
- (setq tmp3 0)
- (while (memq (car (car tmp)) '(byte-discard byte-discardN))
- (setq tmp3
- (+ tmp3 (if (eq (car (car tmp)) 'byte-discard)
- 1
- (cdr (car tmp)))))
- (setq tmp (cdr tmp)))
- (>= tmp3 tmp2)))
- ;; Do the optimization.
- (setq lap (delq lap0 lap))
- (setcar lap1
- (if (= tmp2 tmp3)
- ;; The value stored is the new TOS, so pop one more
- ;; value (to get rid of the old value) using the
- ;; TOS-preserving discard operator.
- 'byte-discardN-preserve-tos
- ;; Otherwise, the value stored is lost, so just use a
- ;; normal discard.
- 'byte-discardN))
- (setcdr lap1 (1+ tmp3))
- (setcdr (cdr rest) tmp)
- (byte-compile-log-lap " %s [discard/discardN]...\t-->\t%s"
- lap0 lap1))
-
- ;;
- ;; discardN-preserve-tos return --> return
- ;; dup return --> return
- ;; stack-set-N return --> return ; where N is TOS-1
- ;;
- ((and (eq (car lap1) 'byte-return)
- (or (memq (car lap0) '(byte-discardN-preserve-tos byte-dup))
- (and (eq (car lap0) 'byte-stack-set)
- (= (cdr lap0) 1))))
- (setq keep-going t)
- ;; The byte-code interpreter will pop the stack for us, so
- ;; we can just leave stuff on it.
- (setq lap (delq lap0 lap))
- (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1 lap1))
-
- ;;
- ;; goto-X ... X: discard ==> discard goto-Y ... X: discard Y:
- ;;
- ((and (eq (car lap0) 'byte-goto)
- (setq tmp (cdr (memq (cdr lap0) lap)))
- (memq (caar tmp) '(byte-discard byte-discardN
- byte-discardN-preserve-tos)))
- (byte-compile-log-lap
- " goto-X .. X: \t-->\t%s goto-X.. X: %s Y:"
- (car tmp) (car tmp))
- (setq keep-going t)
- (let* ((newtag (byte-compile-make-tag))
- ;; Make a copy, since we sometimes modify insts in-place!
- (newdiscard (cons (caar tmp) (cdar tmp)))
- (newjmp (cons (car lap0) newtag)))
- (push newtag (cdr tmp)) ;Push new tag after the discard.
- (setcar rest newdiscard)
- (push newjmp (cdr rest))))
-
- ;;
- ;; const discardN-preserve-tos ==> discardN const
- ;;
- ((and (eq (car lap0) 'byte-constant)
- (eq (car lap1) 'byte-discardN-preserve-tos))
- (setq keep-going t)
- (let ((newdiscard (cons 'byte-discardN (cdr lap1))))
- (byte-compile-log-lap
- " %s %s\t-->\t%s %s" lap0 lap1 newdiscard lap0)
- (setf (car rest) newdiscard)
- (setf (cadr rest) lap0)))
- )
- (setq rest (cdr rest)))
- )
+ (byte-compile-log-lap " ---- %s pass"
+ (if (eq keep-going 'first-time) "first" "next"))
+ (setq keep-going nil)
+ (let ((prev lap-head))
+ (while (cdr prev)
+ (let* ((rest (cdr prev))
+ (lap0 (car rest))
+ (lap1 (nth 1 rest))
+ (lap2 (nth 2 rest)))
+
+ ;; You may notice that sequences like "dup varset discard" are
+ ;; optimized but sequences like "dup varset TAG1: discard" are not.
+ ;; You may be tempted to change this; resist that temptation.
+
+ ;; Each clause in this `cond' statement must keep `prev' the
+ ;; predecessor of the remainder of the list for inspection.
+ (cond
+ ;;
+ ;; PUSH(K) discard(N) --> <deleted> discard(N-K), N>K
+ ;; PUSH(K) discard(N) --> <deleted>, N=K
+ ;; where PUSH(K) is a side-effect-free op such as
+ ;; const, varref, dup
+ ;;
+ ((and (memq (car lap1) '(byte-discard byte-discardN))
+ (memq (car lap0) side-effect-free))
+ (setq keep-going t)
+ (let* ((pushes (aref byte-stack+-info (symbol-value (car lap0))))
+ (pops (if (eq (car lap1) 'byte-discardN) (cdr lap1) 1))
+ (net-pops (- pops pushes)))
+ (cond ((= net-pops 0)
+ (byte-compile-log-lap " %s %s\t-->\t<deleted>"
+ lap0 lap1)
+ (setcdr prev (cddr rest)))
+ ((> net-pops 0)
+ (byte-compile-log-lap
+ " %s %s\t-->\t<deleted> discard(%d)"
+ lap0 lap1 net-pops)
+ (setcar rest (if (eql net-pops 1)
+ (cons 'byte-discard nil)
+ (cons 'byte-discardN net-pops)))
+ (setcdr rest (cddr rest)))
+ (t (error "Optimizer error: too much on the stack")))))
+ ;;
+ ;; goto(X) X: --> X:
+ ;; goto-if-[not-]nil(X) X: --> discard X:
+ ;;
+ ((and (memq (car lap0) byte-goto-ops)
+ (eq (cdr lap0) lap1))
+ (cond ((eq (car lap0) 'byte-goto)
+ (byte-compile-log-lap " %s %s\t-->\t<deleted> %s"
+ lap0 lap1 lap1)
+ (setcdr prev (cdr rest)))
+ ((memq (car lap0) byte-goto-always-pop-ops)
+ (byte-compile-log-lap " %s %s\t-->\tdiscard %s"
+ lap0 lap1 lap1)
+ (setcar lap0 'byte-discard)
+ (setcdr lap0 0))
+ ;; goto-*-else-pop(X) cannot occur here because it would
+ ;; be a depth conflict.
+ (t (error "Depth conflict at tag %d" (nth 2 lap0))))
+ (setq keep-going t))
+ ;;
+ ;; varset-X varref-X --> dup varset-X
+ ;; varbind-X varref-X --> dup varbind-X
+ ;; const/dup varset-X varref-X --> const/dup varset-X const/dup
+ ;; const/dup varbind-X varref-X --> const/dup varbind-X const/dup
+ ;; The latter two can enable other optimizations.
+ ;;
+ ;; For lexical variables, we could do the same
+ ;; stack-set-X+1 stack-ref-X --> dup stack-set-X+2
+ ;; but this is a very minor gain, since dup is stack-ref-0,
+ ;; i.e. it's only better if X>5, and even then it comes
+ ;; at the cost of an extra stack slot. Let's not bother.
+ ((and (eq 'byte-varref (car lap2))
+ (eq (cdr lap1) (cdr lap2))
+ (memq (car lap1) '(byte-varset byte-varbind))
+ (let ((tmp (memq (car (cdr lap2)) byte-boolean-vars)))
+ (and
+ (not (and tmp (not (eq (car lap0) 'byte-constant))))
+ (progn
+ (setq keep-going t)
+ (if (memq (car lap0) '(byte-constant byte-dup))
+ (let ((tmp (if (or (not tmp)
+ (macroexp--const-symbol-p
+ (car (cdr lap0))))
+ (cdr lap0)
+ (byte-compile-get-constant t))))
+ (byte-compile-log-lap " %s %s %s\t-->\t%s %s %s"
+ lap0 lap1 lap2 lap0 lap1
+ (cons (car lap0) tmp))
+ (setcar lap2 (car lap0))
+ (setcdr lap2 tmp))
+ (byte-compile-log-lap " %s %s\t-->\tdup %s"
+ lap1 lap2 lap1)
+ (setcar lap2 (car lap1))
+ (setcar lap1 'byte-dup)
+ (setcdr lap1 0)
+ ;; The stack depth gets locally increased, so we will
+ ;; increase maxdepth in case depth = maxdepth here.
+ ;; This can cause the third argument to byte-code to
+ ;; be larger than necessary.
+ (setq add-depth 1))
+ t)))))
+ ;;
+ ;; dup varset discard(N) --> varset discard(N-1)
+ ;; dup varbind discard(N) --> varbind discard(N-1)
+ ;; dup stack-set(M) discard(N) --> stack-set(M-1) discard(N-1), M>1
+ ;; (the varbind variant can emerge from other optimizations)
+ ;;
+ ((and (eq 'byte-dup (car lap0))
+ (memq (car lap2) '(byte-discard byte-discardN))
+ (or (memq (car lap1) '(byte-varset byte-varbind))
+ (and (eq (car lap1) 'byte-stack-set)
+ (> (cdr lap1) 1))))
+ (setcdr prev (cdr rest)) ; remove dup
+ (let ((new1 (if (eq (car lap1) 'byte-stack-set)
+ (cons 'byte-stack-set (1- (cdr lap1)))
+ lap1))
+ (n (if (eq (car lap2) 'byte-discard) 1 (cdr lap2))))
+ (setcar (cdr rest) new1)
+ (cl-assert (> n 0))
+ (cond
+ ((> n 1)
+ (let ((new2 (if (> n 2)
+ (cons 'byte-discardN (1- n))
+ (cons 'byte-discard nil))))
+ (byte-compile-log-lap " %s %s %s\t-->\t%s %s"
+ lap0 lap1 lap2 new1 new2)
+ (setcar (cddr rest) new2)))
+ (t
+ (byte-compile-log-lap " %s %s %s\t-->\t%s"
+ lap0 lap1 lap2 new1)
+ ;; discard(0) = nop, remove
+ (setcdr (cdr rest) (cdddr rest)))))
+ (setq keep-going t))
+
+ ;;
+ ;; not goto-X-if-nil --> goto-X-if-non-nil
+ ;; not goto-X-if-non-nil --> goto-X-if-nil
+ ;;
+ ;; it is wrong to do the same thing for the -else-pop variants.
+ ;;
+ ((and (eq 'byte-not (car lap0))
+ (memq (car lap1) '(byte-goto-if-nil byte-goto-if-not-nil)))
+ (let ((not-goto (if (eq (car lap1) 'byte-goto-if-nil)
+ 'byte-goto-if-not-nil
+ 'byte-goto-if-nil)))
+ (byte-compile-log-lap " not %s\t-->\t%s"
+ lap1 (cons not-goto (cdr lap1)))
+ (setcar lap1 not-goto)
+ (setcdr prev (cdr rest)) ; delete not
+ (setq keep-going t)))
+ ;;
+ ;; goto-X-if-nil goto-Y X: --> goto-Y-if-non-nil X:
+ ;; goto-X-if-non-nil goto-Y X: --> goto-Y-if-nil X:
+ ;;
+ ;; it is wrong to do the same thing for the -else-pop variants.
+ ;;
+ ((and (memq (car lap0)
+ '(byte-goto-if-nil byte-goto-if-not-nil)) ; gotoX
+ (eq 'byte-goto (car lap1)) ; gotoY
+ (eq (cdr lap0) lap2)) ; TAG X
+ (let ((inverse (if (eq 'byte-goto-if-nil (car lap0))
+ 'byte-goto-if-not-nil 'byte-goto-if-nil)))
+ (byte-compile-log-lap " %s %s %s\t-->\t%s %s"
+ lap0 lap1 lap2
+ (cons inverse (cdr lap1)) lap2)
+ (setcdr prev (cdr rest))
+ (setcar lap1 inverse)
+ (setq keep-going t)))
+ ;;
+ ;; const goto-if-* --> whatever
+ ;;
+ ((and (eq 'byte-constant (car lap0))
+ (memq (car lap1) byte-conditional-ops)
+ ;; Must be an actual constant, not a closure variable.
+ (consp (cdr lap0)))
+ (cond ((if (memq (car lap1) '(byte-goto-if-nil
+ byte-goto-if-nil-else-pop))
+ (car (cdr lap0))
+ (not (car (cdr lap0))))
+ ;; Branch not taken.
+ (byte-compile-log-lap " %s %s\t-->\t<deleted>"
+ lap0 lap1)
+ (setcdr prev (cddr rest))) ; delete both
+ ((memq (car lap1) byte-goto-always-pop-ops)
+ ;; Always-pop branch taken.
+ (byte-compile-log-lap " %s %s\t-->\t%s"
+ lap0 lap1
+ (cons 'byte-goto (cdr lap1)))
+ (setcdr prev (cdr rest)) ; delete const
+ (setcar lap1 'byte-goto))
+ (t ; -else-pop branch taken: keep const
+ (byte-compile-log-lap " %s %s\t-->\t%s %s"
+ lap0 lap1
+ lap0 (cons 'byte-goto (cdr lap1)))
+ (setcar lap1 'byte-goto)))
+ (setq keep-going t))
+ ;;
+ ;; varref-X varref-X --> varref-X dup
+ ;; varref-X [dup ...] varref-X --> varref-X [dup ...] dup
+ ;; stackref-X [dup ...] stackref-X+N --> stackref-X [dup ...] dup
+ ;; We don't optimize the const-X variations on this here,
+ ;; because that would inhibit some goto optimizations; we
+ ;; optimize the const-X case after all other optimizations.
+ ;;
+ ((and (memq (car lap0) '(byte-varref byte-stack-ref))
+ (let ((tmp (cdr rest))
+ (tmp2 0))
+ (while (eq (car (car tmp)) 'byte-dup)
+ (setq tmp2 (1+ tmp2))
+ (setq tmp (cdr tmp)))
+ (and (eq (if (eq 'byte-stack-ref (car lap0))
+ (+ tmp2 1 (cdr lap0))
+ (cdr lap0))
+ (cdr (car tmp)))
+ (eq (car lap0) (car (car tmp)))
+ (progn
+ (when (memq byte-optimize-log '(t byte))
+ (let ((str "")
+ (tmp2 (cdr rest)))
+ (while (not (eq tmp tmp2))
+ (setq tmp2 (cdr tmp2))
+ (setq str (concat str " dup")))
+ (byte-compile-log-lap " %s%s %s\t-->\t%s%s dup"
+ lap0 str lap0 lap0 str)))
+ (setq keep-going t)
+ (setcar (car tmp) 'byte-dup)
+ (setcdr (car tmp) 0)
+ t)))))
+ ;;
+ ;; TAG1: TAG2: --> <deleted> TAG2:
+ ;; (and other references to TAG1 are replaced with TAG2)
+ ;;
+ ((and (eq (car lap0) 'TAG)
+ (eq (car lap1) 'TAG))
+ (byte-compile-log-lap " adjacent tags %d and %d merged"
+ (nth 1 lap1) (nth 1 lap0))
+ (let ((tmp3 (cdr lap-head)))
+ (while (let ((tmp2 (rassq lap0 tmp3)))
+ (and tmp2
+ (progn
+ (setcdr tmp2 lap1)
+ (setq tmp3 (cdr (memq tmp2 tmp3)))
+ t))))
+ (setcdr prev (cdr rest))
+ (setq keep-going t)
+ ;; replace references to tag in jump tables, if any
+ (dolist (table byte-compile-jump-tables)
+ (maphash #'(lambda (value tag)
+ (when (equal tag lap0)
+ (puthash value lap1 table)))
+ table))))
+ ;;
+ ;; unused-TAG: --> <deleted>
+ ;;
+ ((and (eq 'TAG (car lap0))
+ (not (rassq lap0 (cdr lap-head)))
+ ;; make sure this tag isn't used in a jump-table
+ (cl-loop for table in byte-compile-jump-tables
+ when (member lap0 (hash-table-values table))
+ return nil finally return t))
+ (byte-compile-log-lap " unused tag %d removed" (nth 1 lap0))
+ (setcdr prev (cdr rest))
+ (setq keep-going t))
+ ;;
+ ;; goto ... --> goto <delete until TAG or end>
+ ;; return ... --> return <delete until TAG or end>
+ ;;
+ ((and (memq (car lap0) '(byte-goto byte-return))
+ (not (memq (car lap1) '(TAG nil))))
+ (let ((i 0)
+ (tmp rest)
+ (opt-p (memq byte-optimize-log '(t byte)))
+ str deleted)
+ (while (and (setq tmp (cdr tmp))
+ (not (eq 'TAG (car (car tmp)))))
+ (if opt-p (setq deleted (cons (car tmp) deleted)
+ str (concat str " %s")
+ i (1+ i))))
+ (if opt-p
+ (let ((tagstr
+ (if (eq 'TAG (car (car tmp)))
+ (format "%d:" (car (cdr (car tmp))))
+ (or (car tmp) ""))))
+ (if (< i 6)
+ (apply 'byte-compile-log-lap-1
+ (concat " %s" str
+ " %s\t-->\t%s <deleted> %s")
+ lap0
+ (nconc (nreverse deleted)
+ (list tagstr lap0 tagstr)))
+ (byte-compile-log-lap
+ " %s <%d unreachable op%s> %s\t-->\t%s <deleted> %s"
+ lap0 i (if (= i 1) "" "s")
+ tagstr lap0 tagstr))))
+ (setcdr rest tmp)
+ (setq keep-going t)))
+ ;;
+ ;; <safe-op> unbind --> unbind <safe-op>
+ ;; (this may enable other optimizations.)
+ ;;
+ ((and (eq 'byte-unbind (car lap1))
+ (memq (car lap0) byte-after-unbind-ops))
+ (byte-compile-log-lap " %s %s\t-->\t%s %s" lap0 lap1 lap1 lap0)
+ (setcar rest lap1)
+ (setcar (cdr rest) lap0)
+ (setq keep-going t))
+ ;;
+ ;; varbind-X unbind-N --> discard unbind-(N-1)
+ ;; save-excursion unbind-N --> unbind-(N-1)
+ ;; save-restriction unbind-N --> unbind-(N-1)
+ ;; save-current-buffer unbind-N --> unbind-(N-1)
+ ;;
+ ((and (eq 'byte-unbind (car lap1))
+ (memq (car lap0) '(byte-varbind byte-save-excursion
+ byte-save-restriction
+ byte-save-current-buffer))
+ (< 0 (cdr lap1)))
+ (setcdr lap1 (1- (cdr lap1)))
+ (when (zerop (cdr lap1))
+ (setcdr rest (cddr rest)))
+ (if (eq (car lap0) 'byte-varbind)
+ (setcar rest (cons 'byte-discard 0))
+ (setcdr prev (cddr prev)))
+ (byte-compile-log-lap " %s %s\t-->\t%s %s"
+ lap0 (cons (car lap1) (1+ (cdr lap1)))
+ (if (eq (car lap0) 'byte-varbind)
+ (car rest)
+ (car (cdr rest)))
+ (if (and (/= 0 (cdr lap1))
+ (eq (car lap0) 'byte-varbind))
+ (car (cdr rest))
+ ""))
+ (setq keep-going t))
+ ;;
+ ;; goto*-X ... X: goto-Y --> goto*-Y
+ ;; goto-X ... X: return --> return
+ ;;
+ ((and (memq (car lap0) byte-goto-ops)
+ (let ((tmp (nth 1 (memq (cdr lap0) (cdr lap-head)))))
+ (and
+ (memq (car tmp) '(byte-goto byte-return))
+ (or (eq (car lap0) 'byte-goto)
+ (eq (car tmp) 'byte-goto))
+ (not (eq (cdr tmp) (cdr lap0)))
+ (progn
+ (byte-compile-log-lap " %s [%s]\t-->\t%s"
+ (car lap0) tmp
+ (if (eq (car tmp) 'byte-return)
+ tmp
+ (cons (car lap0) (cdr tmp))))
+ (when (eq (car tmp) 'byte-return)
+ (setcar lap0 'byte-return))
+ (setcdr lap0 (cdr tmp))
+ (setq keep-going t)
+ t)))))
+
+ ;;
+ ;; OP goto(X) Y: OP X: -> Y: OP X:
+ ;;
+ ((and (eq (car lap1) 'byte-goto)
+ (eq (car lap2) 'TAG)
+ (let ((lap3 (nth 3 rest)))
+ (and (eq (car lap0) (car lap3))
+ (eq (cdr lap0) (cdr lap3))
+ (eq (cdr lap1) (nth 4 rest)))))
+ (byte-compile-log-lap " %s %s %s %s %s\t-->\t%s %s %s"
+ lap0 lap1 lap2
+ (nth 3 rest) (nth 4 rest)
+ lap2 (nth 3 rest) (nth 4 rest))
+ (setcdr prev (cddr rest))
+ (setq keep-going t))
+
+ ;;
+ ;; NOEFFECT PRODUCER return --> PRODUCER return
+ ;; where NOEFFECT lacks effects beyond stack change,
+ ;; PRODUCER pushes a result without looking at the stack:
+ ;; const, varref, point etc.
+ ;;
+ ((and (eq (car (nth 2 rest)) 'byte-return)
+ (memq (car lap1) producer-ops)
+ (or (memq (car lap0) '( byte-discard byte-discardN
+ byte-discardN-preserve-tos
+ byte-stack-set))
+ (memq (car lap0) side-effect-free)))
+ (setq keep-going t)
+ (setq add-depth 1)
+ (setcdr prev (cdr rest))
+ (byte-compile-log-lap " %s %s %s\t-->\t%s %s"
+ lap0 lap1 (nth 2 rest) lap1 (nth 2 rest)))
+
+ ;;
+ ;; (discardN-preserve-tos|dup) UNARY return --> UNARY return
+ ;; where UNARY takes and produces a single value on the stack
+ ;;
+ ;; FIXME: ideally we should run this backwards, so that we could do
+ ;; discardN-preserve-tos OP1...OPn return -> OP1..OPn return
+ ;; but that would require a different approach.
+ ;;
+ ((and (eq (car (nth 2 rest)) 'byte-return)
+ (memq (car lap1) unary-ops)
+ (or (memq (car lap0) '(byte-discardN-preserve-tos byte-dup))
+ (and (eq (car lap0) 'byte-stack-set)
+ (eql (cdr lap0) 1))))
+ (setq keep-going t)
+ (setcdr prev (cdr rest)) ; eat lap0
+ (byte-compile-log-lap " %s %s %s\t-->\t%s %s"
+ lap0 lap1 (nth 2 rest) lap1 (nth 2 rest)))
+
+ ;;
+ ;; goto-*-else-pop X ... X: goto-if-* --> whatever
+ ;; goto-*-else-pop X ... X: discard --> whatever
+ ;;
+ ((and (memq (car lap0) '(byte-goto-if-nil-else-pop
+ byte-goto-if-not-nil-else-pop))
+ (let ((tmp (cdr (memq (cdr lap0) (cdr lap-head)))))
+ (and
+ (memq (caar tmp)
+ (eval-when-compile
+ (cons 'byte-discard byte-conditional-ops)))
+ (not (eq lap0 (car tmp)))
+ (let ((tmp2 (car tmp))
+ (tmp3 (assq (car lap0)
+ '((byte-goto-if-nil-else-pop
+ byte-goto-if-nil)
+ (byte-goto-if-not-nil-else-pop
+ byte-goto-if-not-nil)))))
+ (if (memq (car tmp2) tmp3)
+ (progn (setcar lap0 (car tmp2))
+ (setcdr lap0 (cdr tmp2))
+ (byte-compile-log-lap
+ " %s-else-pop [%s]\t-->\t%s"
+ (car lap0) tmp2 lap0))
+ ;; Get rid of the -else-pop's and jump one
+ ;; step further.
+ (or (eq 'TAG (car (nth 1 tmp)))
+ (setcdr tmp (cons (byte-compile-make-tag)
+ (cdr tmp))))
+ (byte-compile-log-lap " %s [%s]\t-->\t%s <skip>"
+ (car lap0) tmp2 (nth 1 tmp3))
+ (setcar lap0 (nth 1 tmp3))
+ (setcdr lap0 (nth 1 tmp)))
+ (setq keep-going t)
+ t)))))
+ ;;
+ ;; const goto-X ... X: goto-if-* --> whatever
+ ;; const goto-X ... X: discard --> whatever
+ ;;
+ ((and (eq (car lap0) 'byte-constant)
+ (eq (car lap1) 'byte-goto)
+ (let ((tmp (cdr (memq (cdr lap1) (cdr lap-head)))))
+ (and
+ (memq (caar tmp)
+ (eval-when-compile
+ (cons 'byte-discard byte-conditional-ops)))
+ (not (eq lap1 (car tmp)))
+ (let ((tmp2 (car tmp)))
+ (cond ((and (consp (cdr lap0))
+ (memq (car tmp2)
+ (if (null (car (cdr lap0)))
+ '(byte-goto-if-nil
+ byte-goto-if-nil-else-pop)
+ '(byte-goto-if-not-nil
+ byte-goto-if-not-nil-else-pop))))
+ (byte-compile-log-lap
+ " %s goto [%s]\t-->\t%s %s"
+ lap0 tmp2 lap0 tmp2)
+ (setcar lap1 (car tmp2))
+ (setcdr lap1 (cdr tmp2))
+ ;; Let next step fix the (const,goto-if*) seq.
+ (setq keep-going t))
+ ((or (consp (cdr lap0))
+ (eq (car tmp2) 'byte-discard))
+ ;; Jump one step further
+ (byte-compile-log-lap
+ " %s goto [%s]\t-->\t<deleted> goto <skip>"
+ lap0 tmp2)
+ (or (eq 'TAG (car (nth 1 tmp)))
+ (setcdr tmp (cons (byte-compile-make-tag)
+ (cdr tmp))))
+ (setcdr lap1 (car (cdr tmp)))
+ (setcdr prev (cdr rest))
+ (setq keep-going t))
+ (t
+ (setq prev (cdr prev))))
+ t)))))
+ ;;
+ ;; X: varref-Y ... varset-Y goto-X -->
+ ;; X: varref-Y Z: ... dup varset-Y goto-Z
+ ;; (varset-X goto-BACK, BACK: varref-X --> copy the varref down.)
+ ;; (This is so usual for while loops that it is worth handling).
+ ;;
+ ;; Here again, we could do it for stack-ref/stack-set, but
+ ;; that's replacing a stack-ref-Y with a stack-ref-0, which
+ ;; is a very minor improvement (if any), at the cost of
+ ;; more stack use and more byte-code. Let's not do it.
+ ;;
+ ((and (eq (car lap1) 'byte-varset)
+ (eq (car lap2) 'byte-goto)
+ (not (memq (cdr lap2) rest)) ;Backwards jump
+ (let ((tmp (cdr (memq (cdr lap2) (cdr lap-head)))))
+ (and
+ (eq (car (car tmp)) 'byte-varref)
+ (eq (cdr (car tmp)) (cdr lap1))
+ (not (memq (car (cdr lap1)) byte-boolean-vars))
+ (let ((newtag (byte-compile-make-tag)))
+ (byte-compile-log-lap
+ " %s: %s ... %s %s\t-->\t%s: %s %s: ... %s %s %s"
+ (nth 1 (cdr lap2)) (car tmp)
+ lap1 lap2
+ (nth 1 (cdr lap2)) (car tmp)
+ (nth 1 newtag) 'byte-dup lap1
+ (cons 'byte-goto newtag)
+ )
+ (setcdr rest (cons (cons 'byte-dup 0) (cdr rest)))
+ (setcdr tmp (cons (setcdr lap2 newtag) (cdr tmp)))
+ (setq add-depth 1)
+ (setq keep-going t)
+ t)))))
+ ;;
+ ;; goto-X Y: ... X: goto-if*-Y --> goto-if-not-*-X+1 Y:
+ ;; (This can pull the loop test to the end of the loop)
+ ;;
+ ((and (eq (car lap0) 'byte-goto)
+ (eq (car lap1) 'TAG)
+ (let ((tmp (cdr (memq (cdr lap0) (cdr lap-head)))))
+ (and
+ (eq lap1 (cdar tmp))
+ (memq (car (car tmp))
+ '( byte-goto byte-goto-if-nil byte-goto-if-not-nil
+ byte-goto-if-nil-else-pop))
+ (let ((newtag (byte-compile-make-tag)))
+ (byte-compile-log-lap
+ " %s %s ... %s %s\t-->\t%s ... %s"
+ lap0 lap1 (cdr lap0) (car tmp)
+ (cons (cdr (assq (car (car tmp))
+ '((byte-goto-if-nil
+ . byte-goto-if-not-nil)
+ (byte-goto-if-not-nil
+ . byte-goto-if-nil)
+ (byte-goto-if-nil-else-pop
+ . byte-goto-if-not-nil-else-pop)
+ (byte-goto-if-not-nil-else-pop
+ . byte-goto-if-nil-else-pop))))
+ newtag)
+ newtag)
+ (setcdr tmp (cons (setcdr lap0 newtag) (cdr tmp)))
+ (when (eq (car (car tmp)) 'byte-goto-if-nil-else-pop)
+ ;; We can handle this case but not the
+ ;; -if-not-nil case, because we won't know
+ ;; which non-nil constant to push.
+ (setcdr rest
+ (cons (cons 'byte-constant
+ (byte-compile-get-constant nil))
+ (cdr rest))))
+ (setcar lap0 (nth 1 (memq (car (car tmp))
+ '(byte-goto-if-nil-else-pop
+ byte-goto-if-not-nil
+ byte-goto-if-nil
+ byte-goto-if-not-nil
+ byte-goto byte-goto))))
+ (setq keep-going t)
+ t)))))
+
+ ;;
+ ;; discardN-preserve-tos(X) discardN-preserve-tos(Y)
+ ;; --> discardN-preserve-tos(X+Y)
+ ;; where stack-set(1) is accepted as discardN-preserve-tos(1)
+ ;;
+ ((and (or (eq (car lap0) 'byte-discardN-preserve-tos)
+ (and (eq (car lap0) 'byte-stack-set)
+ (eql (cdr lap0) 1)))
+ (or (eq (car lap1) 'byte-discardN-preserve-tos)
+ (and (eq (car lap1) 'byte-stack-set)
+ (eql (cdr lap1) 1))))
+ (setq keep-going t)
+ (let ((new-op (cons 'byte-discardN-preserve-tos
+ ;; This happens to work even when either
+ ;; op is stack-set(1).
+ (+ (cdr lap0) (cdr lap1)))))
+ (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1 new-op)
+ (setcar rest new-op)
+ (setcdr rest (cddr rest))))
+
+ ;;
+ ;; stack-set-M [discard/discardN ...] --> discardN-preserve-tos
+ ;; stack-set-M [discard/discardN ...] --> discardN
+ ;;
+ ((and (eq (car lap0) 'byte-stack-set)
+ (memq (car lap1) '(byte-discard byte-discardN))
+ (let ((tmp2 (1- (cdr lap0)))
+ (tmp3 0)
+ (tmp (cdr rest)))
+ ;; See if enough discard operations follow to expose or
+ ;; destroy the value stored by the stack-set.
+ (while (memq (car (car tmp)) '(byte-discard byte-discardN))
+ (setq tmp3
+ (+ tmp3 (if (eq (car (car tmp)) 'byte-discard)
+ 1
+ (cdr (car tmp)))))
+ (setq tmp (cdr tmp)))
+ (and
+ (>= tmp3 tmp2)
+ (progn
+ ;; Do the optimization.
+ (setcdr prev (cdr rest))
+ (setcar lap1
+ (if (= tmp2 tmp3)
+ ;; The value stored is the new TOS, so pop
+ ;; one more value (to get rid of the old
+ ;; value) using TOS-preserving discard.
+ 'byte-discardN-preserve-tos
+ ;; Otherwise, the value stored is lost,
+ ;; so just use a normal discard.
+ 'byte-discardN))
+ (setcdr lap1 (1+ tmp3))
+ (setcdr (cdr rest) tmp)
+ (byte-compile-log-lap
+ " %s [discard/discardN]...\t-->\t%s" lap0 lap1)
+ (setq keep-going t)
+ t
+ )))))
+
+ ;;
+ ;; discardN-preserve-tos return --> return
+ ;; dup return --> return
+ ;; stack-set(1) return --> return
+ ;;
+ ((and (eq (car lap1) 'byte-return)
+ (or (memq (car lap0) '(byte-discardN-preserve-tos byte-dup))
+ (and (eq (car lap0) 'byte-stack-set)
+ (= (cdr lap0) 1))))
+ (setq keep-going t)
+ ;; The byte-code interpreter will pop the stack for us, so
+ ;; we can just leave stuff on it.
+ (setcdr prev (cdr rest))
+ (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1 lap1))
+
+ ;;
+ ;; stack-ref(X) discardN-preserve-tos(Y)
+ ;; --> discard(Y) stack-ref(X-Y), X≥Y
+ ;; discard(X) discardN-preserve-tos(Y-X-1), X<Y
+ ;; where: stack-ref(0) = dup (works both ways)
+ ;; discard(0) = no-op
+ ;; discardN-preserve-tos(0) = no-op
+ ;;
+ ((and (memq (car lap0) '(byte-stack-ref byte-dup))
+ (or (eq (car lap1) 'byte-discardN-preserve-tos)
+ (and (eq (car lap1) 'byte-stack-set)
+ (eql (cdr lap1) 1)))
+ ;; Don't apply if immediately preceding a `return',
+ ;; since there are more effective rules for that case.
+ (not (eq (car lap2) 'byte-return)))
+ (let ((x (if (eq (car lap0) 'byte-dup) 0 (cdr lap0)))
+ (y (cdr lap1)))
+ (cl-assert (> y 0))
+ (cond
+ ((>= x y) ; --> discard(Y) stack-ref(X-Y)
+ (let ((new0 (if (= y 1)
+ (cons 'byte-discard nil)
+ (cons 'byte-discardN y)))
+ (new1 (if (= x y)
+ (cons 'byte-dup nil)
+ (cons 'byte-stack-ref (- x y)))))
+ (byte-compile-log-lap " %s %s\t-->\t%s %s"
+ lap0 lap1 new0 new1)
+ (setcar rest new0)
+ (setcar (cdr rest) new1)))
+ ((= x 0) ; --> discardN-preserve-tos(Y-1)
+ (setcdr prev (cdr rest)) ; eat lap0
+ (if (> y 1)
+ (let ((new (cons 'byte-discardN-preserve-tos (- y 1))))
+ (byte-compile-log-lap " %s %s\t-->\t%s"
+ lap0 lap1 new)
+ (setcar (cdr prev) new))
+ (byte-compile-log-lap " %s %s\t-->\t<deleted>" lap0 lap1)
+ (setcdr prev (cddr prev)))) ; eat lap1
+ ((= y (+ x 1)) ; --> discard(X)
+ (setcdr prev (cdr rest)) ; eat lap0
+ (let ((new (if (= x 1)
+ (cons 'byte-discard nil)
+ (cons 'byte-discardN x))))
+ (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1 new)
+ (setcar (cdr prev) new)))
+ (t ; --> discard(X) discardN-preserve-tos(Y-X-1)
+ (let ((new0 (if (= x 1)
+ (cons 'byte-discard nil)
+ (cons 'byte-discardN x)))
+ (new1 (cons 'byte-discardN-preserve-tos (- y x 1))))
+ (byte-compile-log-lap " %s %s\t-->\t%s %s"
+ lap0 lap1 new0 new1)
+ (setcar rest new0)
+ (setcar (cdr rest) new1)))))
+ (setq keep-going t))
+
+ ;;
+ ;; goto-X ... X: discard ==> discard goto-Y ... X: discard Y:
+ ;;
+ ((and (eq (car lap0) 'byte-goto)
+ (let ((tmp (cdr (memq (cdr lap0) (cdr lap-head)))))
+ (and
+ tmp
+ (or (memq (caar tmp) '(byte-discard byte-discardN))
+ ;; Make sure we don't hoist a discardN-preserve-tos
+ ;; that really should be merged or deleted instead.
+ (and (or (eq (caar tmp) 'byte-discardN-preserve-tos)
+ (and (eq (caar tmp) 'byte-stack-set)
+ (eql (cdar tmp) 1)))
+ (let ((next (cadr tmp)))
+ (not (or (memq (car next)
+ '(byte-discardN-preserve-tos
+ byte-return))
+ (and (eq (car next) 'byte-stack-set)
+ (eql (cdr next) 1)))))))
+ (progn
+ (byte-compile-log-lap
+ " goto-X .. X: \t-->\t%s goto-X.. X: %s Y:"
+ (car tmp) (car tmp))
+ (setq keep-going t)
+ (let* ((newtag (byte-compile-make-tag))
+ ;; Make a copy, since we sometimes modify
+ ;; insts in-place!
+ (newdiscard (cons (caar tmp) (cdar tmp)))
+ (newjmp (cons (car lap0) newtag)))
+ ;; Push new tag after the discard.
+ (push newtag (cdr tmp))
+ (setcar rest newdiscard)
+ (push newjmp (cdr rest)))
+ t)))))
+
+ ;;
+ ;; UNARY discardN-preserve-tos --> discardN-preserve-tos UNARY
+ ;; where UNARY takes and produces a single value on the stack
+ ;;
+ ((and (memq (car lap0) unary-ops)
+ (or (eq (car lap1) 'byte-discardN-preserve-tos)
+ (and (eq (car lap1) 'byte-stack-set)
+ (eql (cdr lap1) 1)))
+ ;; unless followed by return (which will eat the discard)
+ (not (eq (car lap2) 'byte-return)))
+ (setq keep-going t)
+ (byte-compile-log-lap " %s %s\t-->\t%s %s" lap0 lap1 lap1 lap0)
+ (setcar rest lap1)
+ (setcar (cdr rest) lap0))
+
+ ;;
+ ;; PRODUCER discardN-preserve-tos(X) --> discard(X) PRODUCER
+ ;; where PRODUCER pushes a result without looking at the stack:
+ ;; const, varref, point etc.
+ ;;
+ ((and (memq (car lap0) producer-ops)
+ (or (eq (car lap1) 'byte-discardN-preserve-tos)
+ (and (eq (car lap1) 'byte-stack-set)
+ (eql (cdr lap1) 1)))
+ ;; unless followed by return (which will eat the discard)
+ (not (eq (car lap2) 'byte-return)))
+ (setq keep-going t)
+ (let ((newdiscard (if (eql (cdr lap1) 1)
+ (cons 'byte-discard nil)
+ (cons 'byte-discardN (cdr lap1)))))
+ (byte-compile-log-lap
+ " %s %s\t-->\t%s %s" lap0 lap1 newdiscard lap0)
+ (setf (car rest) newdiscard)
+ (setf (cadr rest) lap0)))
+
+ (t
+ ;; If no rule matched, advance and try again.
+ (setq prev (cdr prev))))))))
;; Cleanup stage:
;; Rebuild byte-compile-constants / byte-compile-variables.
;; Simple optimizations that would inhibit other optimizations if they
@@ -2542,90 +2955,84 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance."
;; need to do more than once.
(setq byte-compile-constants nil
byte-compile-variables nil)
- (setq rest lap)
(byte-compile-log-lap " ---- final pass")
- (while rest
- (setq lap0 (car rest)
- lap1 (nth 1 rest))
- (if (memq (car lap0) byte-constref-ops)
- (if (memq (car lap0) '(byte-constant byte-constant2))
- (unless (memq (cdr lap0) byte-compile-constants)
- (setq byte-compile-constants (cons (cdr lap0)
- byte-compile-constants)))
- (unless (memq (cdr lap0) byte-compile-variables)
- (setq byte-compile-variables (cons (cdr lap0)
- byte-compile-variables)))))
- (cond (;;
- ;; const-C varset-X const-C --> const-C dup varset-X
- ;; const-C varbind-X const-C --> const-C dup varbind-X
- ;;
- (and (eq (car lap0) 'byte-constant)
- (eq (car (nth 2 rest)) 'byte-constant)
- (eq (cdr lap0) (cdr (nth 2 rest)))
- (memq (car lap1) '(byte-varbind byte-varset)))
- (byte-compile-log-lap " %s %s %s\t-->\t%s dup %s"
- lap0 lap1 lap0 lap0 lap1)
- (setcar (cdr (cdr rest)) (cons (car lap1) (cdr lap1)))
- (setcar (cdr rest) (cons 'byte-dup 0))
- (setq add-depth 1))
- ;;
- ;; const-X [dup/const-X ...] --> const-X [dup ...] dup
- ;; varref-X [dup/varref-X ...] --> varref-X [dup ...] dup
- ;;
- ((memq (car lap0) '(byte-constant byte-varref))
- (setq tmp rest
- tmp2 nil)
- (while (progn
- (while (eq 'byte-dup (car (car (setq tmp (cdr tmp))))))
- (and (eq (cdr lap0) (cdr (car tmp)))
- (eq (car lap0) (car (car tmp)))))
- (setcar tmp (cons 'byte-dup 0))
- (setq tmp2 t))
- (if tmp2
- (byte-compile-log-lap
- " %s [dup/%s]...\t-->\t%s dup..." lap0 lap0 lap0)))
- ;;
- ;; unbind-N unbind-M --> unbind-(N+M)
- ;;
- ((and (eq 'byte-unbind (car lap0))
- (eq 'byte-unbind (car lap1)))
- (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1
- (cons 'byte-unbind
- (+ (cdr lap0) (cdr lap1))))
- (setq lap (delq lap0 lap))
- (setcdr lap1 (+ (cdr lap1) (cdr lap0))))
-
- ;;
- ;; discard/discardN/discardN-preserve-tos-X discard/discardN-Y -->
- ;; discardN-(X+Y)
- ;;
- ((and (memq (car lap0)
- '(byte-discard byte-discardN
- byte-discardN-preserve-tos))
- (memq (car lap1) '(byte-discard byte-discardN)))
- (setq lap (delq lap0 lap))
- (byte-compile-log-lap
- " %s %s\t-->\t(discardN %s)"
- lap0 lap1
- (+ (if (eq (car lap0) 'byte-discard) 1 (cdr lap0))
- (if (eq (car lap1) 'byte-discard) 1 (cdr lap1))))
- (setcdr lap1 (+ (if (eq (car lap0) 'byte-discard) 1 (cdr lap0))
- (if (eq (car lap1) 'byte-discard) 1 (cdr lap1))))
- (setcar lap1 'byte-discardN))
-
- ;;
- ;; discardN-preserve-tos-X discardN-preserve-tos-Y -->
- ;; discardN-preserve-tos-(X+Y)
- ;;
- ((and (eq (car lap0) 'byte-discardN-preserve-tos)
- (eq (car lap1) 'byte-discardN-preserve-tos))
- (setq lap (delq lap0 lap))
- (setcdr lap1 (+ (cdr lap0) (cdr lap1)))
- (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1 (car rest)))
- )
- (setq rest (cdr rest)))
- (setq byte-compile-maxdepth (+ byte-compile-maxdepth add-depth)))
- lap)
+ (let ((prev lap-head))
+ (while (cdr prev)
+ (let* ((rest (cdr prev))
+ (lap0 (car rest))
+ (lap1 (nth 1 rest)))
+ ;; FIXME: Would there ever be a `byte-constant2' op here?
+ (if (memq (car lap0) byte-constref-ops)
+ (if (memq (car lap0) '(byte-constant byte-constant2))
+ (unless (memq (cdr lap0) byte-compile-constants)
+ (setq byte-compile-constants (cons (cdr lap0)
+ byte-compile-constants)))
+ (unless (memq (cdr lap0) byte-compile-variables)
+ (setq byte-compile-variables (cons (cdr lap0)
+ byte-compile-variables)))))
+ (cond
+ ;;
+ ;; const-C varset-X const-C --> const-C dup varset-X
+ ;; const-C varbind-X const-C --> const-C dup varbind-X
+ ;;
+ ((and (eq (car lap0) 'byte-constant)
+ (eq (car (nth 2 rest)) 'byte-constant)
+ (eq (cdr lap0) (cdr (nth 2 rest)))
+ (memq (car lap1) '(byte-varbind byte-varset)))
+ (byte-compile-log-lap " %s %s %s\t-->\t%s dup %s"
+ lap0 lap1 lap0 lap0 lap1)
+ (setcar (cdr (cdr rest)) (cons (car lap1) (cdr lap1)))
+ (setcar (cdr rest) (cons 'byte-dup 0))
+ (setq add-depth 1))
+ ;;
+ ;; const-X [dup/const-X ...] --> const-X [dup ...] dup
+ ;; varref-X [dup/varref-X ...] --> varref-X [dup ...] dup
+ ;;
+ ((memq (car lap0) '(byte-constant byte-varref))
+ (let ((tmp rest)
+ (tmp2 nil))
+ (while (progn
+ (while (eq 'byte-dup (car (car (setq tmp (cdr tmp))))))
+ (and (eq (cdr lap0) (cdr (car tmp)))
+ (eq (car lap0) (car (car tmp)))))
+ (setcar tmp (cons 'byte-dup 0))
+ (setq tmp2 t))
+ (if tmp2
+ (byte-compile-log-lap
+ " %s [dup/%s]...\t-->\t%s dup..." lap0 lap0 lap0)
+ (setq prev (cdr prev)))))
+ ;;
+ ;; unbind-N unbind-M --> unbind-(N+M)
+ ;;
+ ((and (eq 'byte-unbind (car lap0))
+ (eq 'byte-unbind (car lap1)))
+ (byte-compile-log-lap " %s %s\t-->\t%s" lap0 lap1
+ (cons 'byte-unbind
+ (+ (cdr lap0) (cdr lap1))))
+ (setcdr prev (cdr rest))
+ (setcdr lap1 (+ (cdr lap1) (cdr lap0))))
+
+ ;;
+ ;; discard/discardN/discardN-preserve-tos-X discard/discardN-Y -->
+ ;; discardN-(X+Y)
+ ;;
+ ((and (memq (car lap0)
+ '(byte-discard byte-discardN
+ byte-discardN-preserve-tos))
+ (memq (car lap1) '(byte-discard byte-discardN)))
+ (setcdr prev (cdr rest))
+ (byte-compile-log-lap
+ " %s %s\t-->\t(discardN %s)"
+ lap0 lap1
+ (+ (if (eq (car lap0) 'byte-discard) 1 (cdr lap0))
+ (if (eq (car lap1) 'byte-discard) 1 (cdr lap1))))
+ (setcdr lap1 (+ (if (eq (car lap0) 'byte-discard) 1 (cdr lap0))
+ (if (eq (car lap1) 'byte-discard) 1 (cdr lap1))))
+ (setcar lap1 'byte-discardN))
+ (t
+ (setq prev (cdr prev)))))))
+ (setq byte-compile-maxdepth (+ byte-compile-maxdepth add-depth))
+ (cdr lap-head)))
(provide 'byte-opt)
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index eb7d026b146..fd9913d1be8 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -262,7 +262,8 @@ This is used by `declare'.")
(interactive-form nil)
(warnings nil)
(warn #'(lambda (msg form)
- (push (macroexp-warn-and-return msg nil nil t form)
+ (push (macroexp-warn-and-return
+ (format-message msg) nil nil t form)
warnings))))
(while
(and body
@@ -649,11 +650,8 @@ in `byte-compile-warning-types'; see the variable
`byte-compile-warnings' for a fuller explanation of the warning
types. The types that can be suppressed with this macro are
`free-vars', `callargs', `redefine', `obsolete',
-`interactive-only', `lexical', `mapcar', `constants' and
-`suspicious'.
-
-For the `mapcar' case, only the `mapcar' function can be used in
-the symbol list. For `suspicious', only `set-buffer' and `lsh' can be used."
+`interactive-only', `lexical', `ignored-return-value', `constants',
+`suspicious' and `empty-body'."
;; Note: during compilation, this definition is overridden by the one in
;; byte-compile-initial-macro-environment.
(declare (debug (sexp body)) (indent 1))
@@ -679,11 +677,11 @@ Otherwise, return nil. For internal use only."
;; This is called from lread.c and therefore needs to be preloaded.
(if lread--unescaped-character-literals
(let ((sorted (sort lread--unescaped-character-literals #'<)))
- (format-message "unescaped character literals %s detected, %s expected!"
- (mapconcat (lambda (char) (format "`?%c'" char))
- sorted ", ")
- (mapconcat (lambda (char) (format "`?\\%c'" char))
- sorted ", ")))))
+ (format "unescaped character literals %s detected, %s expected!"
+ (mapconcat (lambda (char) (format-message "`?%c'" char))
+ sorted ", ")
+ (mapconcat (lambda (char) (format-message "`?\\%c'" char))
+ sorted ", ")))))
(defun byte-compile-info (string &optional message type)
"Format STRING in a way that looks pleasing in the compilation output.
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 5df1205869c..c84c70971b3 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -295,7 +295,8 @@ The information is logged to `byte-compile-log-buffer'."
'(redefine callargs free-vars unresolved
obsolete noruntime interactive-only
make-local mapcar constants suspicious lexical lexical-dynamic
- docstrings docstrings-non-ascii-quotes not-unused)
+ docstrings docstrings-non-ascii-quotes not-unused
+ empty-body)
"The list of warning types used when `byte-compile-warnings' is t.")
(defcustom byte-compile-warnings t
"List of warnings that the byte-compiler should issue (t for almost all).
@@ -316,7 +317,9 @@ Elements of the list may be:
lexical-dynamic
lexically bound variable declared dynamic elsewhere
make-local calls to `make-variable-buffer-local' that may be incorrect.
- mapcar mapcar called for effect.
+ ignored-return-value
+ function called without using the return value where this
+ is likely to be a mistake
not-unused warning about using variables with symbol names starting with _.
constants let-binding of, or assignment to, constants/nonvariables.
docstrings docstrings that are too wide (longer than
@@ -326,9 +329,10 @@ Elements of the list may be:
docstrings-non-ascii-quotes docstrings that have non-ASCII quotes.
This depends on the `docstrings' warning type.
suspicious constructs that usually don't do what the coder wanted.
+ empty-body body argument to a special form or macro is empty.
If the list begins with `not', then the remaining elements specify warnings to
-suppress. For example, (not mapcar) will suppress warnings about mapcar.
+suppress. For example, (not free-vars) will suppress the `free-vars' warning.
The t value means \"all non experimental warning types\", and
excludes the types in `byte-compile--emacs-build-warning-types'.
@@ -493,6 +497,42 @@ Return the compile-time value of FORM."
(cdr form)))
(funcall non-toplevel-case form)))
+
+(defvar bytecomp--copy-tree-seen)
+
+(defun bytecomp--copy-tree-1 (tree)
+ ;; TREE must be a cons.
+ (or (gethash tree bytecomp--copy-tree-seen)
+ (let* ((next (cdr tree))
+ (result (cons nil next))
+ (copy result))
+ (while (progn
+ (puthash tree copy bytecomp--copy-tree-seen)
+ (let ((a (car tree)))
+ (setcar copy (if (consp a)
+ (bytecomp--copy-tree-1 a)
+ a)))
+ (and (consp next)
+ (let ((tail (gethash next bytecomp--copy-tree-seen)))
+ (if tail
+ (progn (setcdr copy tail)
+ nil)
+ (setq tree next)
+ (setq next (cdr next))
+ (let ((prev copy))
+ (setq copy (cons nil next))
+ (setcdr prev copy)
+ t))))))
+ result)))
+
+(defun bytecomp--copy-tree (tree)
+ "Make a copy of TREE, preserving any circular structure therein.
+Only conses are traversed and duplicated, not arrays or any other structure."
+ (if (consp tree)
+ (let ((bytecomp--copy-tree-seen (make-hash-table :test #'eq)))
+ (bytecomp--copy-tree-1 tree))
+ tree))
+
(defconst byte-compile-initial-macro-environment
`(
;; (byte-compiler-options . (lambda (&rest forms)
@@ -528,11 +568,12 @@ Return the compile-time value of FORM."
;; or byte-compile-file-form.
(let* ((print-symbols-bare t) ; Possibly redundant binding.
(expanded
- (byte-run-strip-symbol-positions
- (macroexpand--all-toplevel
- form
- macroexpand-all-environment))))
- (eval expanded lexical-binding)
+ (macroexpand--all-toplevel
+ form
+ macroexpand-all-environment)))
+ (eval (byte-run-strip-symbol-positions
+ (bytecomp--copy-tree expanded))
+ lexical-binding)
expanded)))))
(with-suppressed-warnings
. ,(lambda (warnings &rest body)
@@ -541,15 +582,19 @@ Return the compile-time value of FORM."
;; Later `internal--with-suppressed-warnings' binds it again, this
;; time in order to affect warnings emitted during the
;; compilation itself.
- (let ((byte-compile--suppressed-warnings
- (append warnings byte-compile--suppressed-warnings)))
- ;; This function doesn't exist, but is just a placeholder
- ;; symbol to hook up with the
- ;; `byte-hunk-handler'/`byte-defop-compiler-1' machinery.
- `(internal--with-suppressed-warnings
- ',warnings
- ,(macroexpand-all `(progn ,@body)
- macroexpand-all-environment))))))
+ (if body
+ (let ((byte-compile--suppressed-warnings
+ (append warnings byte-compile--suppressed-warnings)))
+ ;; This function doesn't exist, but is just a placeholder
+ ;; symbol to hook up with the
+ ;; `byte-hunk-handler'/`byte-defop-compiler-1' machinery.
+ `(internal--with-suppressed-warnings
+ ',warnings
+ ,(macroexpand-all `(progn ,@body)
+ macroexpand-all-environment)))
+ (macroexp-warn-and-return
+ (format-message "`with-suppressed-warnings' with empty body")
+ nil '(empty-body with-suppressed-warnings) t warnings)))))
"The default macro-environment passed to macroexpand by the compiler.
Placing a macro here will cause a macro to have different semantics when
expanded by the compiler as when expanded by the interpreter.")
@@ -1569,7 +1614,7 @@ extra args."
"`%s' called with %d args to fill %d format field(s)" (car form)
nargs nfields)))))
-(dolist (elt '(format message error))
+(dolist (elt '(format message format-message error))
(put elt 'byte-compile-format-like t))
(defun byte-compile--suspicious-defcustom-choice (type)
@@ -1766,10 +1811,16 @@ It is too wide if it has any lines longer than the largest of
kind name col))
;; There's a "naked" ' character before a symbol/list, so it
;; should probably be quoted with \=.
- (when (string-match-p "\\( [\"#]\\|[ \t]\\|^\\)'[a-z(]" docs)
+ (when (string-match-p (rx (| (in " \t") bol)
+ (? (in "\"#"))
+ "'"
+ (in "A-Za-z" "("))
+ docs)
(byte-compile-warn-x
- name "%s%sdocstring has wrong usage of unescaped single quotes (use \\= or different quoting)"
- kind name))
+ name
+ (concat "%s%sdocstring has wrong usage of unescaped single quotes"
+ " (use \\=%c or different quoting such as %c...%c)")
+ kind name ?' ?` ?'))
;; There's a "Unicode quote" in the string -- it should probably
;; be an ASCII one instead.
(when (byte-compile-warning-enabled-p 'docstrings-non-ascii-quotes)
@@ -3405,7 +3456,7 @@ lambda-expression."
(let* ((fn (car form))
(handler (get fn 'byte-compile))
(interactive-only
- (or (get fn 'interactive-only)
+ (or (function-get fn 'interactive-only)
(memq fn byte-compile-interactive-only-functions))))
(when (memq fn '(set symbol-value run-hooks ;; add-to-list
add-hook remove-hook run-hook-with-args
@@ -3432,15 +3483,98 @@ lambda-expression."
(format "; %s"
(substitute-command-keys
interactive-only)))
- ((and (symbolp 'interactive-only)
+ ((and (symbolp interactive-only)
(not (eq interactive-only t)))
(format-message "; use `%s' instead."
interactive-only))
(t "."))))
(if (eq (car-safe (symbol-function (car form))) 'macro)
(byte-compile-report-error
- (format "`%s' defined after use in %S (missing `require' of a library file?)"
+ (format-message "`%s' defined after use in %S (missing `require' of a library file?)"
(car form) form)))
+
+ (when byte-compile--for-effect
+ (let ((sef (function-get (car form) 'side-effect-free)))
+ (cond
+ ((and sef (or (eq sef 'error-free)
+ byte-compile-delete-errors))
+ ;; This transform is normally done in the Lisp optimiser,
+ ;; so maybe we don't need to bother about it here?
+ (setq form (cons 'progn (cdr form)))
+ (setq handler #'byte-compile-progn))
+ ((and (or sef
+ (memq (car form)
+ ;; FIXME: Use a function property (declaration)
+ ;; instead of this list.
+ '(
+ ;; Functions that are side-effect-free
+ ;; except for the behaviour of
+ ;; functions passed as argument.
+ mapcar mapcan mapconcat
+ cl-mapcar cl-mapcan cl-maplist cl-map cl-mapcon
+ cl-reduce
+ assoc assoc-default plist-get plist-member
+ cl-assoc cl-assoc-if cl-assoc-if-not
+ cl-rassoc cl-rassoc-if cl-rassoc-if-not
+ cl-member cl-member-if cl-member-if-not
+ cl-adjoin
+ cl-mismatch cl-search
+ cl-find cl-find-if cl-find-if-not
+ cl-position cl-position-if cl-position-if-not
+ cl-count cl-count-if cl-count-if-not
+ cl-remove cl-remove-if cl-remove-if-not
+ cl-member cl-member-if cl-member-if-not
+ cl-remove-duplicates
+ cl-subst cl-subst-if cl-subst-if-not
+ cl-substitute cl-substitute-if
+ cl-substitute-if-not
+ cl-sublis
+ cl-union cl-intersection
+ cl-set-difference cl-set-exclusive-or
+ cl-subsetp
+ cl-every cl-some cl-notevery cl-notany
+ cl-tree-equal
+
+ ;; Functions that mutate and return a list.
+ cl-delete-if cl-delete-if-not
+ ;; `delete-dups' and `delete-consecutive-dups'
+ ;; never delete the first element so it's
+ ;; safe to ignore their return value, but
+ ;; this isn't the case with
+ ;; `cl-delete-duplicates'.
+ cl-delete-duplicates
+ cl-nsubst cl-nsubst-if cl-nsubst-if-not
+ cl-nsubstitute cl-nsubstitute-if
+ cl-nsubstitute-if-not
+ cl-nunion cl-nintersection
+ cl-nset-difference cl-nset-exclusive-or
+ cl-nreconc cl-nsublis
+ cl-merge
+ ;; It's safe to ignore the value of `sort'
+ ;; and `nreverse' when used on arrays,
+ ;; but most calls pass lists.
+ nreverse
+ sort cl-sort cl-stable-sort
+
+ ;; Adding the following functions yields many
+ ;; positives; evaluate how many of them are
+ ;; false first.
+
+ ;;delq delete cl-delete
+ ;;nconc plist-put
+ )))
+ ;; Don't warn for arguments to `ignore'.
+ (not (eq byte-compile--for-effect 'for-effect-no-warn))
+ (byte-compile-warning-enabled-p
+ 'ignored-return-value (car form)))
+ (byte-compile-warn-x
+ (car form)
+ "value from call to `%s' is unused%s"
+ (car form)
+ (cond ((eq (car form) 'mapcar)
+ "; use `mapc' or `dolist' instead")
+ (t "")))))))
+
(if (and handler
;; Make sure that function exists.
(and (functionp handler)
@@ -3474,11 +3608,7 @@ lambda-expression."
(byte-compile-callargs-warn form))
(if byte-compile-generate-call-tree
(byte-compile-annotate-call-tree form))
- (when (and byte-compile--for-effect (eq (car form) 'mapcar)
- (byte-compile-warning-enabled-p 'mapcar 'mapcar))
- (byte-compile-warn-x
- (car form)
- "`mapcar' called for effect; use `mapc' or `dolist' instead"))
+
(byte-compile-push-constant (car form))
(mapc 'byte-compile-form (cdr form)) ; wasteful, but faster.
(byte-compile-out 'byte-call (length (cdr form))))
@@ -3736,7 +3866,7 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
'((0 . byte-compile-no-args)
(1 . byte-compile-one-arg)
(2 . byte-compile-two-args)
- (2-and . byte-compile-and-folded)
+ (2-cmp . byte-compile-cmp)
(3 . byte-compile-three-args)
(0-1 . byte-compile-zero-or-one-arg)
(1-2 . byte-compile-one-or-two-args)
@@ -3815,11 +3945,11 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
(byte-defop-compiler cons 2)
(byte-defop-compiler aref 2)
(byte-defop-compiler set 2)
-(byte-defop-compiler (= byte-eqlsign) 2-and)
-(byte-defop-compiler (< byte-lss) 2-and)
-(byte-defop-compiler (> byte-gtr) 2-and)
-(byte-defop-compiler (<= byte-leq) 2-and)
-(byte-defop-compiler (>= byte-geq) 2-and)
+(byte-defop-compiler (= byte-eqlsign) 2-cmp)
+(byte-defop-compiler (< byte-lss) 2-cmp)
+(byte-defop-compiler (> byte-gtr) 2-cmp)
+(byte-defop-compiler (<= byte-leq) 2-cmp)
+(byte-defop-compiler (>= byte-geq) 2-cmp)
(byte-defop-compiler get 2)
(byte-defop-compiler nth 2)
(byte-defop-compiler substring 1-3)
@@ -3883,18 +4013,20 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
(byte-compile-form (nth 2 form))
(byte-compile-out (get (car form) 'byte-opcode) 0)))
-(defun byte-compile-and-folded (form)
- "Compile calls to functions like `<='.
-These implicitly `and' together a bunch of two-arg bytecodes."
- (let ((l (length form)))
- (cond
- ((< l 3) (byte-compile-form `(progn ,(nth 1 form) t)))
- ((= l 3) (byte-compile-two-args form))
- ;; Don't use `cl-every' here (see comment where we require cl-lib).
- ((not (memq nil (mapcar #'macroexp-copyable-p (nthcdr 2 form))))
- (byte-compile-form `(and (,(car form) ,(nth 1 form) ,(nth 2 form))
- (,(car form) ,@(nthcdr 2 form)))))
- (t (byte-compile-normal-call form)))))
+(defun byte-compile-cmp (form)
+ "Compile calls to numeric comparisons such as `<', `=' etc."
+ ;; Lisp-level transforms should already have reduced valid calls to 2 args.
+ (if (not (= (length form) 3))
+ (byte-compile-subr-wrong-args form "1 or more")
+ (byte-compile-two-args
+ (if (macroexp-const-p (nth 1 form))
+ ;; First argument is constant: flip it so that the constant
+ ;; is last, which may allow more lapcode optimisations.
+ (let* ((op (car form))
+ (flipped-op (cdr (assq op '((< . >) (<= . >=)
+ (> . <) (>= . <=) (= . =))))))
+ (list flipped-op (nth 2 form) (nth 1 form)))
+ form))))
(defun byte-compile-three-args (form)
(if (not (= (length form) 4))
@@ -4049,9 +4181,15 @@ This function is never called when `lexical-binding' is nil."
(byte-compile-constant 1)
(byte-compile-out (get '* 'byte-opcode) 0))
(3
- (byte-compile-form (nth 1 form))
- (byte-compile-form (nth 2 form))
- (byte-compile-out (get (car form) 'byte-opcode) 0))
+ (let ((arg1 (nth 1 form))
+ (arg2 (nth 2 form)))
+ (when (and (memq (car form) '(+ *))
+ (macroexp-const-p arg1))
+ ;; Put constant argument last for better LAP optimisation.
+ (cl-rotatef arg1 arg2))
+ (byte-compile-form arg1)
+ (byte-compile-form arg2)
+ (byte-compile-out (get (car form) 'byte-opcode) 0)))
(_
;; >2 args: compile as a single function call.
(byte-compile-normal-call form))))
@@ -4310,7 +4448,8 @@ This function is never called when `lexical-binding' is nil."
(defun byte-compile-ignore (form)
(dolist (arg (cdr form))
- (byte-compile-form arg t))
+ ;; Compile each argument for-effect but suppress unused-value warnings.
+ (byte-compile-form arg 'for-effect-no-warn))
(byte-compile-form nil))
;; Return the list of items in CONDITION-PARAM that match PRED-LIST.
@@ -4571,6 +4710,7 @@ Return (TAIL VAR TEST CASES), where:
(if switch-prefix
(progn
(byte-compile-cond-jump-table (cdr switch-prefix) donetag)
+ (setq clause nil)
(setq clauses (car switch-prefix)))
(setq clause (car clauses))
(cond ((or (eq (car clause) t)
@@ -4835,6 +4975,11 @@ binding slots have been popped."
(dolist (clause (reverse clauses))
(let ((condition (nth 1 clause)))
+ (when (and (eq (car-safe condition) 'quote)
+ (cdr condition) (null (cddr condition)))
+ (byte-compile-warn-x
+ condition "`condition-case' condition should not be quoted: %S"
+ condition))
(unless (consp condition) (setq condition (list condition)))
(dolist (c condition)
(unless (and c (symbolp c))
@@ -5055,7 +5200,10 @@ binding slots have been popped."
(defun byte-compile-suppressed-warnings (form)
(let ((byte-compile--suppressed-warnings
(append (cadadr form) byte-compile--suppressed-warnings)))
- (byte-compile-form (macroexp-progn (cddr form)))))
+ ;; Propagate the for-effect mode explicitly so that warnings about
+ ;; ignored return values can be detected and suppressed correctly.
+ (byte-compile-form (macroexp-progn (cddr form)) byte-compile--for-effect)
+ (setq byte-compile--for-effect nil)))
;; Warn about misuses of make-variable-buffer-local.
(byte-defop-compiler-1 make-variable-buffer-local
@@ -5487,6 +5635,83 @@ and corresponding effects."
(eval form)
form)))
+;; Check for (in)comparable constant values in calls to `eq', `memq' etc.
+
+(defun bytecomp--dodgy-eq-arg-p (x number-ok)
+ "Whether X is a bad argument to `eq' (or `eql' if NUMBER-OK is non-nil)."
+ (pcase x
+ ((or `(quote ,(pred consp)) `(function (lambda . ,_))) t)
+ ((or (pred consp) (pred symbolp)) nil)
+ ((pred integerp)
+ (not (or (<= -536870912 x 536870911) number-ok)))
+ ((pred floatp) (not number-ok))
+ (_ t)))
+
+(defun bytecomp--value-type-description (x)
+ (cond
+ ((proper-list-p x) "list")
+ ((recordp x) "record")
+ (t (symbol-name (type-of x)))))
+
+(defun bytecomp--arg-type-description (x)
+ (pcase x
+ (`(function (lambda . ,_)) "function")
+ (`(quote . ,val) (bytecomp--value-type-description val))
+ (_ (bytecomp--value-type-description x))))
+
+(defun bytecomp--warn-dodgy-eq-arg (form type parenthesis)
+ (macroexp-warn-and-return
+ (format-message "`%s' called with literal %s that may never match (%s)"
+ (car form) type parenthesis)
+ form (list 'suspicious (car form)) t))
+
+(defun bytecomp--check-eq-args (form &optional a b &rest _ignore)
+ (let* ((number-ok (eq (car form) 'eql))
+ (bad-arg (cond ((bytecomp--dodgy-eq-arg-p a number-ok) 1)
+ ((bytecomp--dodgy-eq-arg-p b number-ok) 2))))
+ (if bad-arg
+ (bytecomp--warn-dodgy-eq-arg
+ form
+ (bytecomp--arg-type-description (nth bad-arg form))
+ (format "arg %d" bad-arg))
+ form)))
+
+(put 'eq 'compiler-macro #'bytecomp--check-eq-args)
+(put 'eql 'compiler-macro #'bytecomp--check-eq-args)
+
+(defun bytecomp--check-memq-args (form &optional elem list &rest _ignore)
+ (let* ((fn (car form))
+ (number-ok (eq fn 'memql)))
+ (cond
+ ((bytecomp--dodgy-eq-arg-p elem number-ok)
+ (bytecomp--warn-dodgy-eq-arg
+ form (bytecomp--arg-type-description elem) "arg 1"))
+ ((and (consp list) (eq (car list) 'quote)
+ (proper-list-p (cadr list)))
+ (named-let loop ((elts (cadr list)) (i 1))
+ (if elts
+ (let* ((elt (car elts))
+ (x (cond ((eq fn 'assq) (car-safe elt))
+ ((eq fn 'rassq) (cdr-safe elt))
+ (t elt))))
+ (if (or (symbolp x)
+ (and (integerp x)
+ (or (<= -536870912 x 536870911) number-ok))
+ (and (floatp x) number-ok))
+ (loop (cdr elts) (1+ i))
+ (bytecomp--warn-dodgy-eq-arg
+ form (bytecomp--value-type-description x)
+ (format "element %d of arg 2" i))))
+ form)))
+ (t form))))
+
+(put 'memq 'compiler-macro #'bytecomp--check-memq-args)
+(put 'memql 'compiler-macro #'bytecomp--check-memq-args)
+(put 'assq 'compiler-macro #'bytecomp--check-memq-args)
+(put 'rassq 'compiler-macro #'bytecomp--check-memq-args)
+(put 'remq 'compiler-macro #'bytecomp--check-memq-args)
+(put 'delq 'compiler-macro #'bytecomp--check-memq-args)
+
(provide 'byte-compile)
(provide 'bytecomp)
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index 5f37db3fe9b..601e2c13d61 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -236,9 +236,9 @@ Returns a form where all lambdas don't have any free variables."
(not (intern-soft var))
(eq ?_ (aref (symbol-name var) 0)))
(let ((suggestions (help-uni-confusable-suggestions (symbol-name var))))
- (format "Unused lexical %s `%S'%s"
- varkind (bare-symbol var)
- (if suggestions (concat "\n " suggestions) "")))))
+ (format-message "Unused lexical %s `%S'%s"
+ varkind (bare-symbol var)
+ (if suggestions (concat "\n " suggestions) "")))))
(define-inline cconv--var-classification (binder form)
(inline-quote
@@ -463,7 +463,7 @@ places where they originally did not directly appear."
; first element is lambda expression
(`(,(and `(lambda . ,_) fun) . ,args)
;; FIXME: it's silly to create a closure just to call it.
- ;; Running byte-optimize-form earlier will resolve this.
+ ;; Running byte-optimize-form earlier would resolve this.
`(funcall
,(cconv-convert `(function ,fun) env extend)
,@(mapcar (lambda (form)
@@ -477,24 +477,45 @@ places where they originally did not directly appear."
branch))
cond-forms)))
- (`(function (lambda ,args . ,body) . ,_)
+ (`(function (lambda ,args . ,body) . ,rest)
(let* ((docstring (if (eq :documentation (car-safe (car body)))
(cconv-convert (cadr (pop body)) env extend)))
(bf (if (stringp (car body)) (cdr body) body))
(if (when (eq 'interactive (car-safe (car bf)))
(gethash form cconv--interactive-form-funs)))
+ (wrapped (pcase if (`#'(lambda (&rest _cconv--dummy) .,_) t) (_ nil)))
(cif (when if (cconv-convert if env extend)))
- (_ (pcase cif
- (`#'(lambda () ,form) (setf (cadr (car bf)) form) (setq cif nil))
- ('nil nil)
- ;; The interactive form needs special treatment, so the form
- ;; inside the `interactive' won't be used any further.
- (_ (setf (cadr (car bf)) nil))))
- (cf (cconv--convert-function args body env form docstring)))
+ (cf nil))
+ ;; TODO: Because we need to non-destructively modify body, this code
+ ;; is particularly ugly. This should ideally be moved to
+ ;; cconv--convert-function.
+ (pcase cif
+ ('nil (setq bf nil))
+ (`#',f
+ (pcase-let ((`((,f1 . (,_ . ,f2)) . ,f3) bf))
+ (setq bf `((,f1 . (,(if wrapped (nth 2 f) cif) . ,f2)) . ,f3)))
+ (setq cif nil))
+ ;; The interactive form needs special treatment, so the form
+ ;; inside the `interactive' won't be used any further.
+ (_ (pcase-let ((`((,f1 . (,_ . ,f2)) . ,f3) bf))
+ (setq bf `((,f1 . (nil . ,f2)) . ,f3)))))
+ (when bf
+ ;; If we modified bf, re-build body and form as
+ ;; copies with the modified bits.
+ (setq body (if (stringp (car body))
+ (cons (car body) bf)
+ bf)
+ form `(function (lambda ,args . ,body) . ,rest))
+ ;; Also, remove the current old entry on the alist, replacing
+ ;; it with the new one.
+ (let ((entry (pop cconv-freevars-alist)))
+ (push (cons body (cdr entry)) cconv-freevars-alist)))
+ (setq cf (cconv--convert-function args body env form docstring))
(if (not cif)
;; Normal case, the interactive form needs no special treatment.
cf
- `(cconv--interactive-helper ,cf ,cif))))
+ `(cconv--interactive-helper
+ ,cf ,(if wrapped cif `(list 'quote ,cif))))))
(`(internal-make-closure . ,_)
(byte-compile-report-error
@@ -742,7 +763,8 @@ This function does not return anything but instead fills the
(when (eq 'interactive (car-safe (car bf)))
(let ((if (cadr (car bf))))
(unless (macroexp-const-p if) ;Optimize this common case.
- (let ((f `#'(lambda () ,if)))
+ (let ((f (if (eq 'function (car-safe if)) if
+ `#'(lambda (&rest _cconv--dummy) ,if))))
(setf (gethash form cconv--interactive-form-funs) f)
(cconv-analyze-form f env))))))
(cconv--analyze-function vrs body-forms env form))
@@ -829,10 +851,13 @@ This function does not return anything but instead fills the
(define-obsolete-function-alias 'cconv-analyse-form #'cconv-analyze-form "25.1")
(defun cconv-fv (form lexvars dynvars)
- "Return the list of free variables in FORM.
-LEXVARS is the list of statically scoped vars in the context
-and DYNVARS is the list of dynamically scoped vars in the context.
-Returns a pair (LEXV . DYNV) of those vars actually used by FORM."
+ "Return the free variables used in FORM.
+FORM is usually a function #\\='(lambda ...), but may be any valid
+form. LEXVARS is a list of symbols, each of which is lexically
+bound in FORM's context. DYNVARS is a list of symbols, each of
+which is dynamically bound in FORM's context.
+Returns a cons (LEXV . DYNV), the car and cdr being lists of the
+lexically and dynamically bound symbols actually used by FORM."
(let* ((fun
;; Wrap FORM into a function because the analysis code we
;; have only computes freevars for functions.
@@ -870,11 +895,26 @@ Returns a pair (LEXV . DYNV) of those vars actually used by FORM."
(cons fvs dyns)))))
(defun cconv-make-interpreted-closure (fun env)
+ "Make a closure for the interpreter.
+This is intended to be called at runtime by the ELisp interpreter (when
+the code has not been compiled).
+FUN is the closure's source code, must be a lambda form.
+ENV is the runtime representation of the lexical environment,
+i.e. a list whose elements can be either plain symbols (which indicate
+that this symbol should use dynamic scoping) or pairs (SYMBOL . VALUE)
+for the lexical bindings."
(cl-assert (eq (car-safe fun) 'lambda))
(let ((lexvars (delq nil (mapcar #'car-safe env))))
- (if (null lexvars)
- ;; The lexical environment is empty, so there's no need to
- ;; look for free variables.
+ (if (or (null lexvars)
+ ;; Functions with a `:closure-dont-trim-context' marker
+ ;; should keep their whole context untrimmed (bug#59213).
+ (and (eq :closure-dont-trim-context (nth 2 fun))
+ ;; Check the function doesn't just return the magic keyword.
+ (nthcdr 3 fun)))
+ ;; The lexical environment is empty, or needs to be preserved,
+ ;; so there's no need to look for free variables.
+ ;; Attempting to replace ,(cdr fun) by a macroexpanded version
+ ;; causes bootstrap to fail.
`(closure ,env . ,(cdr fun))
;; We could try and cache the result of the macroexpansion and
;; `cconv-fv' analysis. Not sure it's worth the trouble.
diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el
index de5eb9c2d92..a89bbc3a748 100644
--- a/lisp/emacs-lisp/cl-extra.el
+++ b/lisp/emacs-lisp/cl-extra.el
@@ -408,6 +408,7 @@ Other non-digit chars are considered junk.
RADIX is an integer between 2 and 36, the default is 10. Signal
an error if the substring between START and END cannot be parsed
as an integer unless JUNK-ALLOWED is non-nil."
+ (declare (side-effect-free t))
(cl-check-type string string)
(let* ((start (or start 0))
(len (length string))
@@ -566,6 +567,7 @@ too large if positive or too small if negative)."
;;;###autoload
(defun cl-revappend (x y)
"Equivalent to (append (reverse X) Y)."
+ (declare (side-effect-free t))
(nconc (reverse x) y))
;;;###autoload
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index 152a1fe9434..7fee780a735 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -201,7 +201,7 @@ should return.
Note that Emacs Lisp doesn't really support multiple values, so
all this function does is return LIST."
(unless (listp list)
- (signal 'wrong-type-argument list))
+ (signal 'wrong-type-argument (list list)))
list)
(defsubst cl-multiple-value-list (expression)
@@ -459,6 +459,7 @@ Thus, `(cl-list* A B C D)' is equivalent to `(nconc (list A B C) D)', or to
(defun cl-copy-list (list)
"Return a copy of LIST, which may be a dotted list.
The elements of LIST are not copied, just the list structure itself."
+ (declare (side-effect-free error-free))
(if (consp list)
(let ((res nil))
(while (consp list) (push (pop list) res))
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 43207ce7026..5382e0a0a52 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -2052,7 +2052,8 @@ info node `(cl) Function Bindings' for details.
(dolist (binding bindings)
(let ((var (make-symbol (format "--cl-%s--" (car binding))))
(args-and-body (cdr binding)))
- (if (and (= (length args-and-body) 1) (symbolp (car args-and-body)))
+ (if (and (= (length args-and-body) 1)
+ (macroexp-copyable-p (car args-and-body)))
;; Optimize (cl-flet ((fun var)) body).
(setq var (car args-and-body))
(push (list var (if (= (length args-and-body) 1)
@@ -2757,26 +2758,29 @@ Each PLACE may be a symbol, or any generalized variable allowed by `setf'.
;; Common-Lisp's `psetf' does the first, so we'll do the same.
(if (null bindings)
(if (and (null binds) (null simplebinds)) (macroexp-progn body)
+ (let ((body-form
+ (macroexp-progn
+ (append
+ (delq nil
+ (mapcar (lambda (x)
+ (pcase x
+ ;; If there's no vnew, do nothing.
+ (`(,_vold ,_getter ,setter ,vnew)
+ (funcall setter vnew))))
+ binds))
+ body))))
`(let* (,@(mapcar (lambda (x)
(pcase-let ((`(,vold ,getter ,_setter ,_vnew) x))
(list vold getter)))
binds)
,@simplebinds)
- (unwind-protect
- ,(macroexp-progn
- (append
- (delq nil
- (mapcar (lambda (x)
- (pcase x
- ;; If there's no vnew, do nothing.
- (`(,_vold ,_getter ,setter ,vnew)
- (funcall setter vnew))))
- binds))
- body))
- ,@(mapcar (lambda (x)
- (pcase-let ((`(,vold ,_getter ,setter ,_vnew) x))
- (funcall setter vold)))
- binds))))
+ ,(if binds
+ `(unwind-protect ,body-form
+ ,@(mapcar (lambda (x)
+ (pcase-let ((`(,vold ,_getter ,setter ,_vnew) x))
+ (funcall setter vold)))
+ binds))
+ body-form))))
(let* ((binding (car bindings))
(place (car binding)))
(gv-letplace (getter setter) place
@@ -2887,45 +2891,14 @@ The function's arguments should be treated as immutable.
,(format "compiler-macro for inlining `%s'." name)
(cl--defsubst-expand
',argns '(cl-block ,name ,@(cdr (macroexp-parse-body body)))
- ;; We used to pass `simple' as
- ;; (not (or unsafe (cl-expr-access-order pbody argns)))
- ;; But this is much too simplistic since it
- ;; does not pay attention to the argvs (and
- ;; cl-expr-access-order itself is also too naive).
nil
,(and (memq '&key args) 'cl-whole) nil ,@argns)))
(cl-defun ,name ,args ,@body))))
-(defun cl--defsubst-expand (argns body simple whole _unsafe &rest argvs)
- (if (and whole (not (cl--safe-expr-p (cons 'progn argvs)))) whole
- (if (cl--simple-exprs-p argvs) (setq simple t))
- (let* ((substs ())
- (lets (delq nil
- (cl-mapcar (lambda (argn argv)
- (if (or simple (macroexp-const-p argv))
- (progn (push (cons argn argv) substs)
- nil)
- (list argn argv)))
- argns argvs))))
- ;; FIXME: `sublis/subst' will happily substitute the symbol
- ;; `argn' in places where it's not used as a reference
- ;; to a variable.
- ;; FIXME: `sublis/subst' will happily copy `argv' to a different
- ;; scope, leading to name capture.
- (setq body (cond ((null substs) body)
- ((null (cdr substs))
- (cl-subst (cdar substs) (caar substs) body))
- (t (cl--sublis substs body))))
- (if lets `(let ,lets ,body) body))))
-
-(defun cl--sublis (alist tree)
- "Perform substitutions indicated by ALIST in TREE (non-destructively)."
- (let ((x (assq tree alist)))
- (cond
- (x (cdr x))
- ((consp tree)
- (cons (cl--sublis alist (car tree)) (cl--sublis alist (cdr tree))))
- (t tree))))
+(defun cl--defsubst-expand (argns body _simple whole _unsafe &rest argvs)
+ (if (and whole (not (cl--safe-expr-p (cons 'progn argvs))))
+ whole
+ `(let ,(cl-mapcar #'list argns argvs) ,body)))
;;; Structures.
@@ -3175,8 +3148,9 @@ To see the documentation for a defined struct type, use
(when (cl-oddp (length desc))
(push
(macroexp-warn-and-return
- (format "Missing value for option `%S' of slot `%s' in struct %s!"
- (car (last desc)) slot name)
+ (format-message
+ "Missing value for option `%S' of slot `%s' in struct %s!"
+ (car (last desc)) slot name)
nil nil nil (car (last desc)))
forms)
(when (and (keywordp (car defaults))
@@ -3184,8 +3158,9 @@ To see the documentation for a defined struct type, use
(let ((kw (car defaults)))
(push
(macroexp-warn-and-return
- (format " I'll take `%s' to be an option rather than a default value."
- kw)
+ (format-message
+ " I'll take `%s' to be an option rather than a default value."
+ kw)
nil nil nil kw)
forms)
(push kw desc)
@@ -3238,19 +3213,8 @@ To see the documentation for a defined struct type, use
(let* ((anames (cl--arglist-args args))
(make (cl-mapcar (lambda (s d) (if (memq s anames) s d))
slots defaults))
- ;; `cl-defsubst' is fundamentally broken: it substitutes
- ;; its arguments into the body's `sexp' much too naively
- ;; when inlinling, which results in various problems.
- ;; For example it generates broken code if your
- ;; argument's name happens to be the same as some
- ;; function used within the body.
- ;; E.g. (cl-defsubst sm-foo (list) (list list))
- ;; will expand `(sm-foo 1)' to `(1 1)' rather than to `(list t)'!
- ;; Try to catch this known case!
- (con-fun (or type #'record))
- (unsafe-cl-defsubst
- (or (memq con-fun args) (assq con-fun args))))
- (push `(,(if unsafe-cl-defsubst 'cl-defun cldefsym) ,cname
+ (con-fun (or type #'record)))
+ (push `(,cldefsym ,cname
(&cl-defs (nil ,@descs) ,@args)
,(if (stringp doc) doc
(format "Constructor for objects of type `%s'." name))
@@ -3684,14 +3648,14 @@ macro that returns its `&whole' argument."
;;; Things that are side-effect-free.
(mapc (lambda (x) (function-put x 'side-effect-free t))
- '(cl-oddp cl-evenp cl-signum last butlast cl-ldiff cl-pairlis cl-gcd
+ '(cl-oddp cl-evenp cl-signum cl-ldiff cl-pairlis cl-gcd
cl-lcm cl-isqrt cl-floor cl-ceiling cl-truncate cl-round cl-mod cl-rem
cl-subseq cl-list-length cl-get cl-getf))
;;; Things that are side-effect-and-error-free.
(mapc (lambda (x) (function-put x 'side-effect-free 'error-free))
- '(eql cl-list* cl-subst cl-acons cl-equalp
- cl-random-state-p copy-tree cl-sublis))
+ '(cl-list* cl-acons cl-equalp
+ cl-random-state-p copy-tree))
;;; Types and assertions.
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index e97832455b9..025d21631bb 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -186,8 +186,9 @@ and above."
:type '(repeat string)
:version "28.1")
-(defcustom native-comp-driver-options (when (eq system-type 'darwin)
- '("-Wl,-w"))
+(defcustom native-comp-driver-options
+ (cond ((eq system-type 'darwin) '("-Wl,-w"))
+ ((eq system-type 'cygwin) '("-Wl,-dynamicbase")))
"Options passed verbatim to the native compiler's back-end driver.
Note that not all options are meaningful; typically only the options
affecting the assembler and linker are likely to be useful.
@@ -1241,7 +1242,7 @@ clashes."
(defun comp-decrypt-arg-list (x function-name)
"Decrypt argument list X for FUNCTION-NAME."
(unless (fixnump x)
- (signal 'native-compiler-error-dyn-func function-name))
+ (signal 'native-compiler-error-dyn-func (list function-name)))
(let ((rest (not (= (logand x 128) 0)))
(mandatory (logand x 127))
(nonrest (ash x -8)))
@@ -1285,7 +1286,7 @@ clashes."
'pure))))
(when (byte-code-function-p f)
(signal 'native-compiler-error
- "can't native compile an already byte-compiled function"))
+ '("can't native compile an already byte-compiled function")))
(setf (comp-func-byte-func func)
(byte-compile (comp-func-name func)))
(let ((lap (byte-to-native-lambda-lap
@@ -1309,7 +1310,7 @@ clashes."
"Byte-compile FORM, spilling data from the byte compiler."
(unless (eq (car-safe form) 'lambda)
(signal 'native-compiler-error
- "Cannot native-compile, form is not a lambda"))
+ '("Cannot native-compile, form is not a lambda")))
(unless (comp-ctxt-output comp-ctxt)
(setf (comp-ctxt-output comp-ctxt)
(make-temp-file "comp-lambda-" nil ".eln")))
@@ -1390,7 +1391,7 @@ clashes."
(alist-get 'no-native-compile byte-native-qualities))
(throw 'no-native-compile nil))
(unless byte-to-native-top-level-forms
- (signal 'native-compiler-error-empty-byte filename))
+ (signal 'native-compiler-error-empty-byte (list filename)))
(unless (comp-ctxt-output comp-ctxt)
(setf (comp-ctxt-output comp-ctxt) (comp-el-to-eln-filename
filename
@@ -1711,6 +1712,10 @@ Return value is the fall-through block name."
(defun comp-jump-table-optimizable (jmp-table)
"Return t if JMP-TABLE can be optimized out."
+ ;; Identify LAP sequences like:
+ ;; (byte-constant #s(hash-table size 3 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (created 126 deleted 126 changed 126)) . 24)
+ ;; (byte-switch)
+ ;; (TAG 126 . 10)
(cl-loop
with labels = (cl-loop for target-label being each hash-value of jmp-table
collect target-label)
@@ -1718,7 +1723,10 @@ Return value is the fall-through block name."
for l in (cdr-safe labels)
unless (= l x)
return nil
- finally return t))
+ finally return (pcase (nth (1+ (comp-limplify-pc comp-pass))
+ (comp-func-lap comp-func))
+ (`(TAG ,label . ,_label-sp)
+ (= label l)))))
(defun comp-emit-switch (var last-insn)
"Emit a Limple for a lap jump table given VAR and LAST-INSN."
@@ -1761,7 +1769,7 @@ Return value is the fall-through block name."
do (puthash ff-bb-name ff-bb (comp-func-blocks comp-func))
(setf (comp-limplify-curr-block comp-pass) ff-bb))))
(_ (signal 'native-ice
- "missing previous setimm while creating a switch"))))
+ '("missing previous setimm while creating a switch")))))
(defun comp--func-arity (subr-name)
"Like `func-arity' but invariant against primitive redefinitions.
@@ -2849,7 +2857,7 @@ blocks."
(first-processed (l)
(if-let ((p (cl-find-if (lambda (p) (comp-block-idom p)) l)))
p
- (signal 'native-ice "can't find first preprocessed"))))
+ (signal 'native-ice '("can't find first preprocessed")))))
(when-let ((blocks (comp-func-blocks comp-func))
(entry (gethash 'entry blocks))
@@ -3748,7 +3756,7 @@ Prepare every function for final compilation and drive the C back-end."
(progn
(delete-file temp-file)
output)
- (signal 'native-compiler-error (buffer-string)))
+ (signal 'native-compiler-error (list (buffer-string))))
(comp-log-to-buffer (buffer-string))))))))
diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el
index 0f6711209a5..84e131147cd 100644
--- a/lisp/emacs-lisp/easy-mmode.el
+++ b/lisp/emacs-lisp/easy-mmode.el
@@ -250,7 +250,8 @@ INIT-VALUE LIGHTER KEYMAP.
(warnwrap (if (or (null body) (keywordp (car body))) #'identity
(lambda (exp)
(macroexp-warn-and-return
- "Use keywords rather than deprecated positional arguments to `define-minor-mode'"
+ (format-message
+ "Use keywords rather than deprecated positional arguments to `define-minor-mode'")
exp))))
keyw keymap-sym tmp)
@@ -417,6 +418,8 @@ No problems result if this variable is not bound.
`(defvar ,keymap-sym
(let ((m ,keymap))
(cond ((keymapp m) m)
+ ;; FIXME: `easy-mmode-define-keymap' is obsolete,
+ ;; so this form should also be obsolete somehow.
((listp m)
(with-suppressed-warnings ((obsolete
easy-mmode-define-keymap))
@@ -690,6 +693,7 @@ Valid keywords and arguments are:
:group Ignored.
:suppress Non-nil to call `suppress-keymap' on keymap,
`nodigits' to suppress digits as prefix arguments."
+ (declare (obsolete define-keymap "29.1"))
(let (inherit dense suppress)
(while args
(let ((key (pop args))
@@ -730,9 +734,7 @@ The M, BS, and ARGS arguments are as per that function. DOC is
the constant's documentation.
This macro is deprecated; use `defvar-keymap' instead."
- ;; FIXME: Declare obsolete in favor of `defvar-keymap'. It is still
- ;; used for `gud-menu-map' and `gud-minor-mode-map', so fix that first.
- (declare (doc-string 3) (indent 1))
+ (declare (doc-string 3) (indent 1) (obsolete defvar-keymap "29.1"))
`(defconst ,m
(easy-mmode-define-keymap ,bs nil (if (boundp ',m) ,m) ,(cons 'list args))
,doc))
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 2f7d03e9d79..9a06807bcdc 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -1225,8 +1225,10 @@ purpose by adding an entry to this alist, and setting
;; But the list will just be reversed.
,@(nreverse edebug-def-args))
'nil)
- (function (lambda () ,@forms))
- ))
+ ;; Make sure `forms' is not nil so we don't accidentally return
+ ;; the magic keyword. Mark the closure so we don't throw away
+ ;; unused vars (bug#59213).
+ #'(lambda () :closure-dont-trim-context ,@(or forms '(nil)))))
(defvar edebug-form-begin-marker) ; the mark for def being instrumented
@@ -2851,81 +2853,81 @@ See `edebug-behavior-alist' for implementations.")
edebug-inside-windows
)
- (unwind-protect
- (let (
- ;; Declare global values local but using the same global value.
- ;; We could set these to the values for previous edebug call.
- (last-command last-command)
- (this-command this-command)
- (current-prefix-arg nil)
-
- (last-input-event nil)
- (last-command-event nil)
- (last-event-frame nil)
- (last-nonmenu-event nil)
- (track-mouse nil)
-
- (standard-output t)
- (standard-input t)
-
- ;; Don't keep reading from an executing kbd macro
- ;; within edebug unless edebug-continue-kbd-macro is
- ;; non-nil. Again, local binding may not be best.
- (executing-kbd-macro
- (if edebug-continue-kbd-macro executing-kbd-macro))
-
- ;; Don't get confused by the user's keymap changes.
- (overriding-local-map nil)
- (overriding-terminal-local-map nil)
- ;; Override other minor modes that may bind the keys
- ;; edebug uses.
- (minor-mode-overriding-map-alist
- (list (cons 'edebug-mode edebug-mode-map)))
-
- ;; Bind again to outside values.
- (debug-on-error edebug-outside-debug-on-error)
- (debug-on-quit edebug-outside-debug-on-quit)
-
- ;; Don't keep defining a kbd macro.
- (defining-kbd-macro
- (if edebug-continue-kbd-macro defining-kbd-macro))
-
- ;; others??
- )
- (if (and (eq edebug-execution-mode 'go)
- (not (memq arg-mode '(after error))))
- (message "Break"))
-
- (setq signal-hook-function nil)
-
- (edebug-mode 1)
- (unwind-protect
- (recursive-edit) ; <<<<<<<<<< Recursive edit
-
- ;; Do the following, even if quit occurs.
- (setq signal-hook-function #'edebug-signal)
- (if edebug-backtrace-buffer
- (kill-buffer edebug-backtrace-buffer))
-
- ;; Remember selected-window after recursive-edit.
- ;; (setq edebug-inside-window (selected-window))
-
- (set-match-data edebug-outside-match-data)
-
- ;; Recursive edit may have changed buffers,
- ;; so set it back before exiting let.
- (if (buffer-name edebug-buffer) ; if it still exists
- (progn
- (set-buffer edebug-buffer)
- (when (memq edebug-execution-mode '(go Go-nonstop))
- (edebug-overlay-arrow)
- (sit-for 0))
- (edebug-mode -1))
- ;; gotta have a buffer to let its buffer local variables be set
- (get-buffer-create " bogus edebug buffer"))
- ));; inner let
- )))
+ (let (
+ ;; Declare global values local but using the same global value.
+ ;; We could set these to the values for previous edebug call.
+ (last-command last-command)
+ (this-command this-command)
+ (current-prefix-arg nil)
+
+ (last-input-event nil)
+ (last-command-event nil)
+ (last-event-frame nil)
+ (last-nonmenu-event nil)
+ (track-mouse nil)
+
+ (standard-output t)
+ (standard-input t)
+
+ ;; Don't keep reading from an executing kbd macro
+ ;; within edebug unless edebug-continue-kbd-macro is
+ ;; non-nil. Again, local binding may not be best.
+ (executing-kbd-macro
+ (if edebug-continue-kbd-macro executing-kbd-macro))
+
+ ;; Don't get confused by the user's keymap changes.
+ (overriding-local-map nil)
+ (overriding-terminal-local-map nil)
+ ;; Override other minor modes that may bind the keys
+ ;; edebug uses.
+ (minor-mode-overriding-map-alist
+ (list (cons 'edebug-mode edebug-mode-map)))
+
+ ;; Bind again to outside values.
+ (debug-on-error edebug-outside-debug-on-error)
+ (debug-on-quit edebug-outside-debug-on-quit)
+
+ ;; Don't keep defining a kbd macro.
+ (defining-kbd-macro
+ (if edebug-continue-kbd-macro defining-kbd-macro))
+
+ ;; others??
+ )
+
+ (if (and (eq edebug-execution-mode 'go)
+ (not (memq arg-mode '(after error))))
+ (message "Break"))
+
+ (setq signal-hook-function nil)
+
+ (edebug-mode 1)
+ (unwind-protect
+ (recursive-edit) ; <<<<<<<<<< Recursive edit
+
+ ;; Do the following, even if quit occurs.
+ (setq signal-hook-function #'edebug-signal)
+ (if edebug-backtrace-buffer
+ (kill-buffer edebug-backtrace-buffer))
+
+ ;; Remember selected-window after recursive-edit.
+ ;; (setq edebug-inside-window (selected-window))
+
+ (set-match-data edebug-outside-match-data)
+
+ ;; Recursive edit may have changed buffers,
+ ;; so set it back before exiting let.
+ (if (buffer-name edebug-buffer) ; if it still exists
+ (progn
+ (set-buffer edebug-buffer)
+ (when (memq edebug-execution-mode '(go Go-nonstop))
+ (edebug-overlay-arrow)
+ (sit-for 0))
+ (edebug-mode -1))
+ ;; gotta have a buffer to let its buffer local variables be set
+ (get-buffer-create " bogus edebug buffer"))
+ ));; inner let
+ ))
;;; Display related functions
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 064a55f2727..9a1f5b9db0f 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -184,8 +184,9 @@ and reference them using the function `class-option'."
(when (and initarg (eq alloc :class))
(push
(cons sname
- (format "Meaningless :initarg for class allocated slot '%S'"
- sname))
+ (format-message
+ "Meaningless :initarg for class allocated slot `%S'"
+ sname))
warnings))
(let ((init (plist-get soptions :initform)))
diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el
index a175edcc671..18d3eb37af3 100644
--- a/lisp/emacs-lisp/eldoc.el
+++ b/lisp/emacs-lisp/eldoc.el
@@ -5,7 +5,7 @@
;; Author: Noah Friedman <friedman@splode.com>
;; Keywords: extensions
;; Created: 1995-10-06
-;; Version: 1.13.0
+;; Version: 1.14.0
;; Package-Requires: ((emacs "26.3"))
;; This is a GNU ELPA :core package. Avoid functionality that is not
@@ -296,13 +296,9 @@ reflect the change."
This function displays the message produced by formatting ARGS
with FORMAT-STRING on the mode line when the current buffer is a minibuffer.
Otherwise, it displays the message like `message' would."
- (if (minibufferp)
+ (if (or (bound-and-true-p edebug-mode) (minibufferp))
(progn
- (add-hook 'minibuffer-exit-hook
- (lambda () (setq eldoc-mode-line-string nil
- ;; https://debbugs.gnu.org/16920
- eldoc-last-message nil))
- nil t)
+ (add-hook 'post-command-hook #'eldoc-minibuffer--cleanup)
(with-current-buffer
(window-buffer
(or (window-in-direction 'above (minibuffer-window))
@@ -321,6 +317,13 @@ Otherwise, it displays the message like `message' would."
(force-mode-line-update)))
(apply #'message format-string args)))
+(defun eldoc-minibuffer--cleanup ()
+ (unless (or (bound-and-true-p edebug-mode) (minibufferp))
+ (setq eldoc-mode-line-string nil
+ ;; https://debbugs.gnu.org/16920
+ eldoc-last-message nil)
+ (remove-hook 'post-command-hook #'eldoc-minibuffer--cleanup)))
+
(make-obsolete
'eldoc-message "use `eldoc-documentation-functions' instead." "eldoc-1.1.0")
(defun eldoc-message (&optional string) (eldoc--message string))
@@ -388,7 +391,6 @@ Also store it in `eldoc-last-message' and return that value."
(defun eldoc-display-message-no-interference-p ()
"Return nil if displaying a message would cause interference."
(not (or executing-kbd-macro
- (bound-and-true-p edebug-active)
;; The following configuration shows "Matches..." in the
;; echo area when point is after a closing bracket, which
;; conflicts with eldoc.
@@ -435,7 +437,7 @@ documentation-producing backend to cooperate with specific
documentation-displaying frontends. For example, KEY can be:
* `:thing', VALUE being a short string or symbol designating what
- is being reported on. It can, for example be the name of the
+ DOCSTRING reports on. It can, for example be the name of the
function whose signature is being documented, or the name of
the variable whose docstring is being documented.
`eldoc-display-in-echo-area', a member of
@@ -446,6 +448,17 @@ documentation-displaying frontends. For example, KEY can be:
`eldoc-display-in-echo-area' and `eldoc-display-in-buffer' will
use when displaying `:thing''s value.
+* `:echo', controlling how `eldoc-display-in-echo-area' should
+ present this documentation item in the echo area, to save
+ space. If VALUE is a string, echo it instead of DOCSTRING. If
+ a number, only echo DOCSTRING up to that character position.
+ If `skip', don't echo DOCSTRING at all.
+
+The additional KEY `:origin' is always added by ElDoc, its VALUE
+being the member of `eldoc-documentation-functions' where
+DOCSTRING originated. `eldoc-display-functions' may use this
+information to organize display of multiple docstrings.
+
Finally, major modes should modify this hook locally, for
example:
(add-hook \\='eldoc-documentation-functions #\\='foo-mode-eldoc nil t)
@@ -469,8 +482,6 @@ directly from the user or from ElDoc's automatic mechanisms'.")
(defvar eldoc--doc-buffer nil "Buffer displaying latest ElDoc-produced docs.")
-(defvar eldoc--doc-buffer-docs nil "Documentation items in `eldoc--doc-buffer'.")
-
(defun eldoc-doc-buffer (&optional interactive)
"Get or display ElDoc documentation buffer.
@@ -488,46 +499,70 @@ If INTERACTIVE, display it. Else, return said buffer."
(display-buffer (current-buffer)))
(t (current-buffer)))))
+(defvar eldoc-doc-buffer-separator
+ (concat "\n" (propertize "\n" 'face '(:inherit separator-line :extend t)) "\n")
+ "String used to separate items in Eldoc documentation buffer.")
+
(defun eldoc--format-doc-buffer (docs)
"Ensure DOCS are displayed in an *eldoc* buffer."
(with-current-buffer (if (buffer-live-p eldoc--doc-buffer)
eldoc--doc-buffer
(setq eldoc--doc-buffer
(get-buffer-create " *eldoc*")))
- (unless (eq docs eldoc--doc-buffer-docs)
- (setq-local eldoc--doc-buffer-docs docs)
- (let ((inhibit-read-only t)
- (things-reported-on))
- (special-mode)
- (erase-buffer)
- (setq-local nobreak-char-display nil)
- (cl-loop for (docs . rest) on docs
- for (this-doc . plist) = docs
- for thing = (plist-get plist :thing)
- when thing do
- (cl-pushnew thing things-reported-on)
- (setq this-doc
- (concat
- (propertize (format "%s" thing)
- 'face (plist-get plist :face))
- ": "
- this-doc))
- do (insert this-doc)
- when rest do (insert "\n")
- finally (goto-char (point-min)))
- ;; Rename the buffer, taking into account whether it was
- ;; hidden or not
- (rename-buffer (format "%s*eldoc%s*"
- (if (string-match "^ " (buffer-name)) " " "")
- (if things-reported-on
- (format " for %s"
- (mapconcat
- (lambda (s) (format "%s" s))
- things-reported-on
- ", "))
- ""))))))
+ (let ((inhibit-read-only t)
+ (things-reported-on))
+ (special-mode)
+ (erase-buffer)
+ (setq-local nobreak-char-display nil)
+ (cl-loop for (docs . rest) on docs
+ for (this-doc . plist) = docs
+ for thing = (plist-get plist :thing)
+ when thing do
+ (cl-pushnew thing things-reported-on)
+ (setq this-doc
+ (concat
+ (propertize (format "%s" thing)
+ 'face (plist-get plist :face))
+ ": "
+ this-doc))
+ do (insert this-doc)
+ when rest do
+ (insert eldoc-doc-buffer-separator)
+ finally (goto-char (point-min)))
+ ;; Rename the buffer, taking into account whether it was
+ ;; hidden or not
+ (rename-buffer (format "%s*eldoc%s*"
+ (if (string-match "^ " (buffer-name)) " " "")
+ (if things-reported-on
+ (format " for %s"
+ (mapconcat
+ (lambda (s) (format "%s" s))
+ things-reported-on
+ ", "))
+ "")))))
eldoc--doc-buffer)
+(defun eldoc--echo-area-render (docs)
+ "Similar to `eldoc--format-doc-buffer', but for echo area.
+Helper for `eldoc-display-in-echo-area'."
+ (cl-loop for (item . rest) on docs
+ for (this-doc . plist) = item
+ for echo = (plist-get plist :echo)
+ for thing = (plist-get plist :thing)
+ unless (eq echo 'skip) do
+ (setq this-doc
+ (cond ((integerp echo) (substring this-doc 0 echo))
+ ((stringp echo) echo)
+ (t this-doc)))
+ (when thing (setq this-doc
+ (concat
+ (propertize (format "%s" thing)
+ 'face (plist-get plist :face))
+ ": "
+ this-doc)))
+ (insert this-doc)
+ (when rest (insert "\n"))))
+
(defun eldoc--echo-area-substring (available)
"Given AVAILABLE lines, get buffer substring to display in echo area.
Helper for `eldoc-display-in-echo-area'."
@@ -613,15 +648,15 @@ Honor `eldoc-echo-area-use-multiline-p' and
single-doc)
((and (numberp available)
(cl-plusp available))
- ;; Else, given a positive number of logical lines, we
- ;; format the *eldoc* buffer, using as most of its
- ;; contents as we know will fit.
- (with-current-buffer (eldoc--format-doc-buffer docs)
- (save-excursion
- (eldoc--echo-area-substring available))))
+ ;; Else, given a positive number of logical lines, grab
+ ;; as many as we can.
+ (with-temp-buffer
+ (eldoc--echo-area-render docs)
+ (eldoc--echo-area-substring available)))
(t ;; this is the "truncate brutally" situation
(let ((string
- (with-current-buffer (eldoc--format-doc-buffer docs)
+ (with-temp-buffer
+ (eldoc--echo-area-render docs)
(buffer-substring (goto-char (point-min))
(progn (end-of-visible-line)
(point))))))
@@ -642,38 +677,45 @@ If INTERACTIVE is t, also display the buffer."
(defun eldoc-documentation-default ()
"Show the first non-nil documentation string for item at point.
This is the default value for `eldoc-documentation-strategy'."
- (run-hook-with-args-until-success 'eldoc-documentation-functions
- (eldoc--make-callback :patient)))
-
-(defun eldoc--documentation-compose-1 (eagerlyp)
- "Helper function for composing multiple doc strings.
-If EAGERLYP is non-nil show documentation as soon as possible,
-else wait for all doc strings."
(run-hook-wrapped 'eldoc-documentation-functions
(lambda (f)
- (let* ((callback (eldoc--make-callback
- (if eagerlyp :eager :patient)))
- (str (funcall f callback)))
- (if (or (null str) (stringp str)) (funcall callback str))
- nil)))
- t)
+ (funcall f (eldoc--make-callback :eager f)))))
(defun eldoc-documentation-compose ()
"Show multiple documentation strings together after waiting for all of them.
This is meant to be used as a value for `eldoc-documentation-strategy'."
- (eldoc--documentation-compose-1 nil))
+ (let (fns-and-callbacks)
+ ;; Make all the callbacks, setting up state inside
+ ;; `eldoc--invoke-strategy' to know how many callbacks to wait for
+ ;; before displaying the result (bug#62816).
+ (run-hook-wrapped 'eldoc-documentation-functions
+ (lambda (f)
+ (push (cons f (eldoc--make-callback :patient f))
+ fns-and-callbacks)
+ nil))
+ ;; Now call them. The last one will trigger the display.
+ (cl-loop for (f . callback) in fns-and-callbacks
+ for str = (funcall f callback)
+ when (or (null str) (stringp str)) do (funcall callback str)))
+ t)
(defun eldoc-documentation-compose-eagerly ()
"Show multiple documentation strings one by one as soon as possible.
This is meant to be used as a value for `eldoc-documentation-strategy'."
- (eldoc--documentation-compose-1 t))
+ (run-hook-wrapped 'eldoc-documentation-functions
+ (lambda (f)
+ (let* ((callback (eldoc--make-callback :eager f))
+ (str (funcall f callback)))
+ (if (or (null str) (stringp str)) (funcall callback str))
+ nil)))
+ t)
(defun eldoc-documentation-enthusiast ()
"Show most important documentation string produced so far.
This is meant to be used as a value for `eldoc-documentation-strategy'."
(run-hook-wrapped 'eldoc-documentation-functions
(lambda (f)
- (let* ((callback (eldoc--make-callback :enthusiast))
+ (let* ((callback (eldoc--make-callback :enthusiast f))
(str (funcall f callback)))
(if (stringp str) (funcall callback str))
nil)))
@@ -778,7 +820,7 @@ before a higher priority one.")
;; `eldoc--invoke-strategy' could be moved to
;; `eldoc-documentation-strategy' or thereabouts if/when we decide to
;; extend or publish the `make-callback' protocol.
-(defun eldoc--make-callback (method)
+(defun eldoc--make-callback (method origin)
"Make callback suitable for `eldoc-documentation-functions'.
The return value is a function FN whose lambda list is (STRING
&rest PLIST) and can be called by those functions. Its
@@ -798,8 +840,11 @@ have the following values:
`eldoc-documentation-functions' have been collected;
- `:eager' says to display STRING along with all other competing
- strings so far, as soon as possible."
- (funcall eldoc--make-callback method))
+ strings so far, as soon as possible.
+
+ORIGIN is the member of `eldoc-documentation-functions' which
+will be responsible for eventually calling the FN."
+ (funcall eldoc--make-callback method origin))
(defun eldoc--invoke-strategy (interactive)
"Invoke `eldoc-documentation-strategy' function.
@@ -836,9 +881,10 @@ the docstrings eventually produced, using
(docs-registered '()))
(cl-labels
((register-doc
- (pos string plist)
+ (pos string plist origin)
(when (and string (> (length string) 0))
- (push (cons pos (cons string plist)) docs-registered)))
+ (push (cons pos (cons string `(:origin ,origin ,@plist)))
+ docs-registered)))
(display-doc
()
(run-hook-with-args
@@ -848,7 +894,7 @@ the docstrings eventually produced, using
(lambda (a b) (< (car a) (car b))))))
interactive))
(make-callback
- (method)
+ (method origin)
(let ((pos (prog1 howmany (cl-incf howmany))))
(cl-ecase method
(:enthusiast
@@ -856,7 +902,7 @@ the docstrings eventually produced, using
(when (and string (cl-loop for (p) in docs-registered
never (< p pos)))
(setq docs-registered '())
- (register-doc pos string plist))
+ (register-doc pos string plist origin))
(when (and (timerp eldoc--enthusiasm-curbing-timer)
(memq eldoc--enthusiasm-curbing-timer
timer-list))
@@ -868,19 +914,22 @@ the docstrings eventually produced, using
(:patient
(cl-incf want)
(lambda (string &rest plist)
- (register-doc pos string plist)
+ (register-doc pos string plist origin)
(when (zerop (cl-decf want)) (display-doc))
t))
(:eager
(lambda (string &rest plist)
- (register-doc pos string plist)
+ (register-doc pos string plist origin)
(display-doc)
t))))))
(let* ((eldoc--make-callback #'make-callback)
(res (funcall eldoc-documentation-strategy)))
;; Observe the old and the new protocol:
- (cond (;; Old protocol: got string, output immediately;
- (stringp res) (register-doc 0 res nil) (display-doc))
+ (cond (;; Old protocol: got string, e-d-strategy is iself the
+ ;; origin function, and we output immediately;
+ (stringp res)
+ (register-doc 0 res nil eldoc-documentation-strategy)
+ (display-doc))
(;; Old protocol: got nil, clear the echo area;
(null res) (eldoc--message nil))
(;; New protocol: trust callback will be called;
diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el
index 98a017c8a8e..e8b0dd92989 100644
--- a/lisp/emacs-lisp/ert-x.el
+++ b/lisp/emacs-lisp/ert-x.el
@@ -563,9 +563,9 @@ The same keyword arguments are supported as in
;; Emacs's Makefile sets $HOME to a nonexistent value. Needed
;; in batch mode only, therefore.
(when (and noninteractive (not (file-directory-p "~/")))
- (setenv "HOME" temporary-file-directory))
+ (setenv "HOME" (directory-file-name temporary-file-directory)))
(format "/mock::%s" temporary-file-directory))))
- "Temporary directory for remote file tests.")
+ "Temporary directory for remote file tests.")
(provide 'ert-x)
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el
index 6adba6c342f..ac001af06bd 100644
--- a/lisp/emacs-lisp/gv.el
+++ b/lisp/emacs-lisp/gv.el
@@ -417,9 +417,9 @@ The return value is the last VAL in the list.
(lambda (do key alist &optional default remove testfn)
(macroexp-let2 macroexp-copyable-p k key
(gv-letplace (getter setter) alist
- (macroexp-let2 nil p `(if (and ,testfn (not (eq ,testfn 'eq)))
- (assoc ,k ,getter ,testfn)
- (assq ,k ,getter))
+ (macroexp-let2 nil p (if (member testfn '(nil 'eq #'eq))
+ `(assq ,k ,getter)
+ `(assoc ,k ,getter ,testfn))
(funcall do (if (null default) `(cdr ,p)
`(if ,p (cdr ,p) ,default))
(lambda (v)
diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el
index e3ed28f097a..417c218c6d7 100644
--- a/lisp/emacs-lisp/lisp.el
+++ b/lisp/emacs-lisp/lisp.el
@@ -519,6 +519,7 @@ major mode's decisions about context.")
"Return the \"far end\" position of the buffer, in direction ARG.
If ARG is positive, that's the end of the buffer.
Otherwise, that's the beginning of the buffer."
+ (declare (side-effect-free error-free))
(if (> arg 0) (point-max) (point-min)))
(defun end-of-defun (&optional arg interactive)
diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el
index 168de1bf180..b05aba3e1a7 100644
--- a/lisp/emacs-lisp/macroexp.el
+++ b/lisp/emacs-lisp/macroexp.el
@@ -291,10 +291,11 @@ It should normally be a symbol with position and it defaults to FORM."
(setq arglist (cdr arglist)))
(if values
(macroexp-warn-and-return
- (format (if (eq values 'too-few)
- "attempt to open-code `%s' with too few arguments"
- "attempt to open-code `%s' with too many arguments")
- name)
+ (format-message
+ (if (eq values 'too-few)
+ "attempt to open-code `%s' with too few arguments"
+ "attempt to open-code `%s' with too many arguments")
+ name)
form nil nil arglist)
;; The following leads to infinite recursion when loading a
@@ -338,14 +339,19 @@ Assumes the caller has bound `macroexpand-all-environment'."
(`(cond . ,clauses)
(macroexp--cons fn (macroexp--all-clauses clauses) form))
(`(condition-case . ,(or `(,err ,body . ,handlers) pcase--dontcare))
- (macroexp--cons
- fn
- (macroexp--cons err
- (macroexp--cons (macroexp--expand-all body)
- (macroexp--all-clauses handlers 1)
- (cddr form))
- (cdr form))
- form))
+ (let ((exp-body (macroexp--expand-all body)))
+ (if handlers
+ (macroexp--cons fn
+ (macroexp--cons
+ err (macroexp--cons
+ exp-body
+ (macroexp--all-clauses handlers 1)
+ (cddr form))
+ (cdr form))
+ form)
+ (macroexp-warn-and-return
+ (format-message "`condition-case' without handlers")
+ exp-body (list 'suspicious 'condition-case) t form))))
(`(,(or 'defvar 'defconst) ,(and name (pred symbolp)) . ,_)
(push name macroexp--dynvars)
(macroexp--all-forms form 2))
@@ -367,16 +373,21 @@ Assumes the caller has bound `macroexpand-all-environment'."
(if (null body)
(macroexp-unprogn
(macroexp-warn-and-return
- (format "Empty %s body" fun)
- nil nil 'compile-only fun))
+ (format-message "`%s' with empty body" fun)
+ nil (list 'empty-body fun) 'compile-only fun))
(macroexp--all-forms body))
(cdr form))
form)))
(`(while)
(macroexp-warn-and-return
- "missing `while' condition"
+ (format-message "missing `while' condition")
`(signal 'wrong-number-of-arguments '(while 0))
nil 'compile-only form))
+ (`(unwind-protect ,expr)
+ (macroexp-warn-and-return
+ (format-message "`unwind-protect' without unwind forms")
+ (macroexp--expand-all expr)
+ (list 'suspicious 'unwind-protect) t form))
(`(setq ,(and var (pred symbolp)
(pred (not booleanp)) (pred (not keywordp)))
,expr)
@@ -392,7 +403,7 @@ Assumes the caller has bound `macroexpand-all-environment'."
(let ((nargs (length args)))
(if (/= (logand nargs 1) 0)
(macroexp-warn-and-return
- "odd number of arguments in `setq' form"
+ (format-message "odd number of arguments in `setq' form")
`(signal 'wrong-number-of-arguments '(setq ,nargs))
nil 'compile-only fn)
(let ((assignments nil))
@@ -457,12 +468,13 @@ Assumes the caller has bound `macroexpand-all-environment'."
(let ((arg (nth funarg form)))
(when (and (eq 'quote (car-safe arg))
(eq 'lambda (car-safe (cadr arg))))
- (setcar (nthcdr funarg form)
- (macroexp-warn-and-return
- (format "%S quoted with ' rather than with #'"
- (let ((f (cadr arg)))
- (if (symbolp f) f `(lambda ,(nth 1 f) ...))))
- arg nil nil (cadr arg))))))
+ (setcar
+ (nthcdr funarg form)
+ (macroexp-warn-and-return
+ (format
+ "(lambda %s ...) quoted with ' rather than with #'"
+ (or (nth 1 (cadr arg)) "()"))
+ arg nil nil (cadr arg))))))
;; Macro expand compiler macros. This cannot be delayed to
;; byte-optimize-form because the output of the compiler-macro can
;; use macros.
@@ -486,7 +498,7 @@ Assumes the caller has bound `macroexpand-all-environment'."
(setq form (macroexp--compiler-macro handler newform))
(if (eq newform form)
newform
- (macroexp--expand-all newform)))
+ (macroexp--expand-all form)))
(macroexp--expand-all newform))))))
(_ form))))
(pop byte-compile-form-stack)))
@@ -494,7 +506,7 @@ Assumes the caller has bound `macroexpand-all-environment'."
;; Record which arguments expect functions, so we can warn when those
;; are accidentally quoted with ' rather than with #'
(dolist (f '( funcall apply mapcar mapatoms mapconcat mapc cl-mapcar maphash
- map-char-table map-keymap map-keymap-internal))
+ mapcan map-char-table map-keymap map-keymap-internal))
(put f 'funarg-positions '(1)))
(dolist (f '( add-hook remove-hook advice-remove advice--remove-function
defalias fset global-set-key run-after-idle-timeout
diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el
index 85934d9ed0a..e457387acc9 100644
--- a/lisp/emacs-lisp/nadvice.el
+++ b/lisp/emacs-lisp/nadvice.el
@@ -178,20 +178,38 @@ DOC is a string where \"FUNCTION\" and \"OLDFUN\" are expected.")
;; ((functionp spec) (funcall spec))
(t (eval spec))))
+(defun advice--interactive-form-1 (function)
+ "Like `interactive-form' but preserves the static context if needed."
+ (let ((if (interactive-form function)))
+ (if (or (null if) (not (eq 'closure (car-safe function))))
+ if
+ (cl-assert (eq 'interactive (car if)))
+ (let ((form (cadr if)))
+ (if (macroexp-const-p form)
+ if
+ ;; The interactive is expected to be run in the static context
+ ;; that the function captured.
+ (let ((ctx (nth 1 function)))
+ `(interactive
+ ,(let* ((f (if (eq 'function (car-safe form)) (cadr form) form)))
+ ;; If the form jut returns a function, preserve the fact that
+ ;; it just returns a function, which is an info we use in
+ ;; `advice--make-interactive-form'.
+ (if (eq 'lambda (car-safe f))
+ `',(eval form ctx)
+ `(eval ',form ',ctx))))))))))
+
(defun advice--interactive-form (function)
"Like `interactive-form' but tries to avoid autoloading functions."
(if (not (and (symbolp function) (autoloadp (indirect-function function))))
- (interactive-form function)
+ (advice--interactive-form-1 function)
(when (commandp function)
`(interactive (advice-eval-interactive-spec
- (cadr (interactive-form ',function)))))))
+ (cadr (advice--interactive-form-1 ',function)))))))
(defun advice--make-interactive-form (iff ifm)
- ;; TODO: make it so that interactive spec can be a constant which
- ;; dynamically checks the advice--car/cdr to do its job.
- ;; For that, advice-eval-interactive-spec needs to be more faithful.
(let* ((fspec (cadr iff)))
- (when (eq 'function (car-safe fspec)) ;; Macroexpanded lambda?
+ (when (memq (car-safe fspec) '(function quote)) ;; Macroexpanded lambda?
(setq fspec (eval fspec t)))
(if (functionp fspec)
`(funcall ',fspec ',(cadr ifm))
diff --git a/lisp/emacs-lisp/oclosure.el b/lisp/emacs-lisp/oclosure.el
index f5a150ac4ae..40f1f54eed0 100644
--- a/lisp/emacs-lisp/oclosure.el
+++ b/lisp/emacs-lisp/oclosure.el
@@ -568,7 +568,7 @@ This has 2 uses:
(defun cconv--interactive-helper (fun if)
"Add interactive \"form\" IF to FUN.
Returns a new command that otherwise behaves like FUN.
-IF should actually not be a form but a function of no arguments."
+IF can be an ELisp form to be interpreted or a function of no arguments."
(oclosure-lambda (cconv--interactive-helper (fun fun) (if if))
(&rest args)
(apply (if (called-interactively-p 'any)
diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el
index 2b73e187b14..ddc7ec4679b 100644
--- a/lisp/emacs-lisp/package-vc.el
+++ b/lisp/emacs-lisp/package-vc.el
@@ -112,6 +112,11 @@ the `clone' function."
vc-handled-backends))
:version "29.1")
+(defcustom package-vc-register-as-project t
+ "Non-nil means that packages should be registered as projects."
+ :type 'boolean
+ :version "30.1")
+
(defvar package-vc-selected-packages) ; pacify byte-compiler
;;;###autoload
@@ -556,6 +561,8 @@ and return nil if it cannot reasonably guess."
(and url (alist-get url package-vc-heuristic-alist
nil nil #'string-match-p)))
+(declare-function project-remember-projects-under "project" (dir &optional recursive))
+
(defun package-vc--clone (pkg-desc pkg-spec dir rev)
"Clone the package PKG-DESC whose spec is PKG-SPEC into the directory DIR.
REV specifies a specific revision to checkout. This overrides the `:branch'
@@ -577,6 +584,11 @@ attribute in PKG-SPEC."
(or (and (not (eq rev :last-release)) rev) branch))
(error "Failed to clone %s from %s" name url))))
+ (when package-vc-register-as-project
+ (let ((default-directory dir))
+ (require 'project)
+ (project-remember-projects-under dir)))
+
;; Check out the latest release if requested
(when (eq rev :last-release)
(if-let ((release-rev (package-vc--release-rev pkg-desc)))
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index f92afe56b76..685f983e285 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -378,10 +378,8 @@ If so, and variable `package-check-signature' is
`allow-unsigned', return `allow-unsigned', otherwise return the
value of variable `package-check-signature'."
(if (eq package-check-signature 'allow-unsigned)
- (progn
- (require 'epg-config)
- (and (epg-find-configuration 'OpenPGP)
- 'allow-unsigned))
+ (and (epg-find-configuration 'OpenPGP)
+ 'allow-unsigned)
package-check-signature))
(defcustom package-unsigned-archives nil
@@ -958,7 +956,6 @@ Newer versions are always activated, regardless of FORCE."
"Untar the current buffer.
This uses `tar-untar-buffer' from Tar mode. All files should
untar into a directory named DIR; otherwise, signal an error."
- (require 'tar-mode)
(tar-mode)
;; Make sure everything extracts into DIR.
(let ((regexp (concat "\\`" (regexp-quote (expand-file-name dir)) "/"))
@@ -1221,15 +1218,14 @@ boundaries."
"Read a `define-package' form in current buffer.
Return the pkg-desc, with desc-kind set to KIND."
(goto-char (point-min))
- (unwind-protect
- (let* ((pkg-def-parsed (read (current-buffer)))
- (pkg-desc
- (when (eq (car pkg-def-parsed) 'define-package)
- (apply #'package-desc-from-define
- (append (cdr pkg-def-parsed))))))
- (when pkg-desc
- (setf (package-desc-kind pkg-desc) kind)
- pkg-desc))))
+ (let* ((pkg-def-parsed (read (current-buffer)))
+ (pkg-desc
+ (when (eq (car pkg-def-parsed) 'define-package)
+ (apply #'package-desc-from-define
+ (append (cdr pkg-def-parsed))))))
+ (when pkg-desc
+ (setf (package-desc-kind pkg-desc) kind)
+ pkg-desc)))
(declare-function tar-get-file-descriptor "tar-mode" (file))
(declare-function tar--extract "tar-mode" (descriptor))
@@ -3086,8 +3082,7 @@ The most useful commands here are:
`[("Package" ,package-name-column-width package-menu--name-predicate)
("Version" ,package-version-column-width package-menu--version-predicate)
("Status" ,package-status-column-width package-menu--status-predicate)
- ,@(if (cdr package-archives)
- `(("Archive" ,package-archive-column-width package-menu--archive-predicate)))
+ ("Archive" ,package-archive-column-width package-menu--archive-predicate)
("Description" 0 package-menu--description-predicate)])
(setq tabulated-list-padding 2)
(setq tabulated-list-sort-key (cons "Status" nil))
@@ -3515,9 +3510,8 @@ Return (PKG-DESC [NAME VERSION STATUS DOC])."
(package-desc-version pkg)))
'font-lock-face face)
,(propertize status 'font-lock-face face)
- ,@(if (cdr package-archives)
- (list (propertize (or (package-desc-archive pkg) "")
- 'font-lock-face face)))
+ ,(propertize (or (package-desc-archive pkg) "")
+ 'font-lock-face face)
,(propertize (package-desc-summary pkg)
'font-lock-face 'package-description)])))
@@ -4562,6 +4556,7 @@ will be signaled in that case."
(package--print-email-button maint)
(string-trim (substring-no-properties (buffer-string))))))))
+;;;###autoload
(defun package-report-bug (desc)
"Prepare a message to send to the maintainers of a package.
DESC must be a `package-desc' object."
diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el
index 810b13f61d6..1c5ce5169ab 100644
--- a/lisp/emacs-lisp/pcase.el
+++ b/lisp/emacs-lisp/pcase.el
@@ -947,7 +947,7 @@ Otherwise, it defers to REST which is a list of branches of the form
(let ((code (pcase--u1 matches code vars rest)))
(if (eq upat '_) code
(macroexp-warn-and-return
- "Pattern t is deprecated. Use `_' instead"
+ (format-message "Pattern t is deprecated. Use `_' instead")
code nil nil upat))))
((eq upat 'pcase--dontcare) :pcase--dontcare)
((memq (car-safe upat) '(guard pred))
diff --git a/lisp/emacs-lisp/range.el b/lisp/emacs-lisp/range.el
index 1165fcbbd7d..f441c240a27 100644
--- a/lisp/emacs-lisp/range.el
+++ b/lisp/emacs-lisp/range.el
@@ -194,7 +194,7 @@ these ranges."
(nreverse result)))))
(defun range-add-list (ranges list)
- "Return a list of ranges that has all articles from both RANGES and LIST.
+ "Return a list of ranges that has all numbers from both RANGES and LIST.
Note: LIST has to be sorted over `<'."
(if (not ranges)
(range-compress-list list)
@@ -249,9 +249,9 @@ Note: LIST has to be sorted over `<'."
out)))
(defun range-remove (range1 range2)
- "Return a range that has all articles from RANGE2 removed from RANGE1.
+ "Return a range that has all numbers from RANGE2 removed from RANGE1.
The returned range is always a list. RANGE2 can also be a unsorted
-list of articles. RANGE1 is modified by side effects, RANGE2 is not
+list of numbers. RANGE1 is modified by side effects, RANGE2 is not
modified."
(if (or (null range1) (null range2))
range1
@@ -345,7 +345,7 @@ modified."
(defun range-list-intersection (list ranges)
"Return a list of numbers in LIST that are members of RANGES.
-oLIST is a sorted list."
+LIST is a sorted list."
(setq ranges (range-normalize ranges))
(let (number result)
(while (setq number (pop list))
diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el
index e64a3dcea1e..fd9fbbe25a4 100644
--- a/lisp/emacs-lisp/regexp-opt.el
+++ b/lisp/emacs-lisp/regexp-opt.el
@@ -130,6 +130,7 @@ usually more efficient than that of a simplified version:
(concat (car parens)
(mapconcat \\='regexp-quote strings \"\\\\|\")
(cdr parens))))"
+ (declare (pure t) (side-effect-free t))
(save-match-data
;; Recurse on the sorted list.
(let* ((max-lisp-eval-depth 10000)
diff --git a/lisp/emacs-lisp/shortdoc.el b/lisp/emacs-lisp/shortdoc.el
index c49960c2ee6..9a6f5dd12ce 100644
--- a/lisp/emacs-lisp/shortdoc.el
+++ b/lisp/emacs-lisp/shortdoc.el
@@ -1443,45 +1443,52 @@ If SAME-WINDOW, don't pop to a new window."
(setq group (intern group)))
(unless (assq group shortdoc--groups)
(error "No such documentation group %s" group))
- (funcall (if same-window
- #'pop-to-buffer-same-window
- #'pop-to-buffer)
- (format "*Shortdoc %s*" group))
- (let ((inhibit-read-only t)
- (prev nil))
- (erase-buffer)
- (shortdoc-mode)
- (button-mode)
- (mapc
- (lambda (data)
- (cond
- ((stringp data)
- (setq prev nil)
- (unless (bobp)
- (insert "\n"))
- (insert (propertize
- (substitute-command-keys data)
- 'face 'shortdoc-heading
- 'shortdoc-section t
- 'outline-level 1))
- (insert (propertize
- "\n\n"
- 'face 'shortdoc-heading
- 'shortdoc-section t)))
- ;; There may be functions not yet defined in the data.
- ((fboundp (car data))
- (when prev
- (insert (make-separator-line)
- ;; This helps with hidden outlines (bug#53981)
- (propertize "\n" 'face '(:height 0))))
- (setq prev t)
- (shortdoc--display-function data))))
- (cdr (assq group shortdoc--groups))))
+ (let ((buf (get-buffer-create (format "*Shortdoc %s*" group))))
+ (shortdoc--insert-group-in-buffer group buf)
+ (funcall (if same-window
+ #'pop-to-buffer-same-window
+ #'pop-to-buffer)
+ buf))
(goto-char (point-min))
(when function
(text-property-search-forward 'shortdoc-function function t)
(beginning-of-line)))
+(defun shortdoc--insert-group-in-buffer (group &optional buf)
+ "Insert a short documentation summary for functions in GROUP in buffer BUF.
+BUF defaults to the current buffer if nil or omitted."
+ (with-current-buffer (or buf (current-buffer))
+ (let ((inhibit-read-only t)
+ (prev nil))
+ (erase-buffer)
+ (shortdoc-mode)
+ (button-mode)
+ (mapc
+ (lambda (data)
+ (cond
+ ((stringp data)
+ (setq prev nil)
+ (unless (bobp)
+ (insert "\n"))
+ (insert (propertize
+ (substitute-command-keys data)
+ 'face 'shortdoc-heading
+ 'shortdoc-section t
+ 'outline-level 1))
+ (insert (propertize
+ "\n\n"
+ 'face 'shortdoc-heading
+ 'shortdoc-section t)))
+ ;; There may be functions not yet defined in the data.
+ ((fboundp (car data))
+ (when prev
+ (insert (make-separator-line)
+ ;; This helps with hidden outlines (bug#53981)
+ (propertize "\n" 'face '(:height 0))))
+ (setq prev t)
+ (shortdoc--display-function data))))
+ (cdr (assq group shortdoc--groups))))))
+
;;;###autoload
(defalias 'shortdoc #'shortdoc-display-group)
@@ -1521,7 +1528,8 @@ function's documentation in the Info manual"))
"=>"))
(single-arrow (if (char-displayable-p ?→)
"→"
- "->")))
+ "->"))
+ (start-example (point)))
(cl-loop for (type value) on data by #'cddr
do
(cl-case type
@@ -1572,7 +1580,8 @@ function's documentation in the Info manual"))
(:eg-result-string
(insert " e.g. " double-arrow " ")
(princ value (current-buffer))
- (insert "\n")))))
+ (insert "\n"))))
+ (add-text-properties start-example (point) `(shortdoc-example ,function)))
;; Insert the arglist after doing the evals, in case that's pulled
;; in the function definition.
(save-excursion
@@ -1582,6 +1591,73 @@ function's documentation in the Info manual"))
(insert " " (symbol-name param)))
(add-face-text-property arglist-start (point) 'shortdoc-section t))))
+(defun shortdoc-function-examples (function)
+ "Return all shortdoc examples for FUNCTION.
+The result is an alist with items of the form (GROUP . EXAMPLES),
+where GROUP is a shortdoc group where FUNCTION appears, and
+EXAMPLES is a string with the usage examples of FUNCTION defined
+in GROUP. Return nil if FUNCTION is not a function or if it
+doesn't has any shortdoc information."
+ (let ((groups (and (symbolp function)
+ (shortdoc-function-groups function)))
+ (examples nil))
+ (mapc
+ (lambda (group)
+ (with-temp-buffer
+ (shortdoc--insert-group-in-buffer group)
+ (goto-char (point-min))
+ (let ((match (text-property-search-forward
+ 'shortdoc-example function t)))
+ (push `(,group . ,(string-trim
+ (buffer-substring-no-properties
+ (prop-match-beginning match)
+ (prop-match-end match))))
+ examples))))
+ groups)
+ examples))
+
+(defun shortdoc-help-fns-examples-function (function)
+ "Insert Emacs Lisp examples for FUNCTION into the current buffer.
+You can add this function to the `help-fns-describe-function-functions'
+hook to show examples of using FUNCTION in *Help* buffers produced
+by \\[describe-function]."
+ (let* ((examples (shortdoc-function-examples function))
+ (num-examples (length examples))
+ (times 0))
+ (dolist (example examples)
+ (when (zerop times)
+ (if (> num-examples 1)
+ (insert "\n Examples:\n\n")
+ ;; Some functions have more than one example per group.
+ ;; Count the number of arrows to know if we need to
+ ;; pluralize "Example".
+ (let* ((text (cdr example))
+ (count 0)
+ (pos 0)
+ (end (length text))
+ (double-arrow (if (char-displayable-p ?⇒)
+ " ⇒"
+ " =>"))
+ (double-arrow-example (if (char-displayable-p ?⇒)
+ " e.g. ⇒"
+ " e.g. =>"))
+ (single-arrow (if (char-displayable-p ?→)
+ " →"
+ " ->")))
+ (while (and (< pos end)
+ (or (string-match double-arrow text pos)
+ (string-match double-arrow-example text pos)
+ (string-match single-arrow text pos)))
+ (setq count (1+ count)
+ pos (match-end 0)))
+ (if (> count 1)
+ (insert "\n Examples:\n\n")
+ (insert "\n Example:\n\n")))))
+ (setq times (1+ times))
+ (insert " ")
+ (insert (cdr example))
+ (insert "\n\n"))))
+
(defun shortdoc-function-groups (function)
"Return all shortdoc groups FUNCTION appears in."
(cl-loop for group in shortdoc--groups
diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el
index 8cdbdf1ef6a..947390b3de3 100644
--- a/lisp/emacs-lisp/subr-x.el
+++ b/lisp/emacs-lisp/subr-x.el
@@ -102,6 +102,7 @@ threading."
"Join all STRINGS using SEPARATOR.
Optional argument SEPARATOR must be a string, a vector, or a list of
characters; nil stands for the empty string."
+ (declare (pure t) (side-effect-free t))
(mapconcat #'identity strings separator))
(define-obsolete-function-alias 'string-reverse 'reverse "25.1")
@@ -112,6 +113,7 @@ characters; nil stands for the empty string."
When truncating, \"...\" is always prepended to the string, so
the resulting string may be longer than the original if LENGTH is
3 or smaller."
+ (declare (pure t) (side-effect-free t))
(let ((strlen (length string)))
(if (<= strlen length)
string
@@ -124,16 +126,19 @@ the resulting string may be longer than the original if LENGTH is
"Check whether STRING is either empty or only whitespace.
The following characters count as whitespace here: space, tab, newline and
carriage return."
+ (declare (pure t) (side-effect-free t))
(string-match-p "\\`[ \t\n\r]*\\'" string))
(defsubst string-remove-prefix (prefix string)
"Remove PREFIX from STRING if present."
+ (declare (pure t) (side-effect-free t))
(if (string-prefix-p prefix string)
(substring string (length prefix))
string))
(defsubst string-remove-suffix (suffix string)
"Remove SUFFIX from STRING if present."
+ (declare (pure t) (side-effect-free t))
(if (string-suffix-p suffix string)
(substring string 0 (- (length string) (length suffix)))
string))
@@ -252,6 +257,7 @@ is done.
If START is nil (or not present), the padding is done to the end
of the string, and if non-nil, padding is done to the start of
the string."
+ (declare (pure t) (side-effect-free t))
(unless (natnump length)
(signal 'wrong-type-argument (list 'natnump length)))
(let ((pad-length (- length (length string))))
@@ -261,6 +267,7 @@ the string."
(defun string-chop-newline (string)
"Remove the final newline (if any) from STRING."
+ (declare (pure t) (side-effect-free t))
(string-remove-suffix "\n" string))
(defun replace-region-contents (beg end replace-fn
diff --git a/lisp/emacs-lisp/unsafep.el b/lisp/emacs-lisp/unsafep.el
index 1d3cde69392..e722cbc52dd 100644
--- a/lisp/emacs-lisp/unsafep.el
+++ b/lisp/emacs-lisp/unsafep.el
@@ -237,7 +237,7 @@ Otherwise result is a reason code."
((eq (car-safe fun) 'lambda)
(unsafep fun unsafep-vars))
((not (and (symbolp fun)
- (or (get fun 'side-effect-free)
+ (or (function-get fun 'side-effect-free)
(eq (get fun 'safe-function) t)
(eq safe-functions t)
(memq fun safe-functions))))
diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el
index abadefb7105..c0aa9dd7b46 100644
--- a/lisp/emulation/viper-cmd.el
+++ b/lisp/emulation/viper-cmd.el
@@ -194,9 +194,9 @@
viper-delete-backward-char
viper-join-lines
viper-delete-char))
- (memq (viper-event-key last-command-event)
- '(up down left right (meta f) (meta b)
- (control n) (control p) (control f) (control b)))))
+ (member (viper-event-key last-command-event)
+ '(up down left right (meta f) (meta b)
+ (control n) (control p) (control f) (control b)))))
(defsubst viper-insert-state-pre-command-sentinel ()
(or (viper-preserve-cursor-color)
@@ -466,6 +466,12 @@
;; Viper mode-changing commands and utilities
+(defcustom viper-enable-minibuffer-faces t
+ "If non-nil, viper uses distinct faces in the minibuffer."
+ :type 'boolean
+ :version "30.1"
+ :group 'viper-misc)
+
;; Modifies mode-line-buffer-identification.
(defun viper-refresh-mode-line ()
(setq-local viper-mode-string
@@ -561,14 +567,14 @@
))
;; minibuffer faces
- (if (viper-has-face-support-p)
+ (if (and (viper-has-face-support-p) viper-enable-minibuffer-faces)
(setq viper-minibuffer-current-face
(cond ((eq state 'emacs-state) viper-minibuffer-emacs-face)
((eq state 'vi-state) viper-minibuffer-vi-face)
((memq state '(insert-state replace-state))
viper-minibuffer-insert-face))))
- (if (viper-is-in-minibuffer)
+ (if (and (viper-is-in-minibuffer) viper-enable-minibuffer-faces)
(viper-set-minibuffer-overlay))
)
@@ -716,16 +722,12 @@ Vi's prefix argument will be used. Otherwise, the prefix argument passed to
(let (viper-vi-kbd-minor-mode
viper-insert-kbd-minor-mode
viper-emacs-kbd-minor-mode)
- (unwind-protect
- (progn
- (setq com
- (key-binding (setq key (read-key-sequence nil))))
- ;; In case of binding indirection--chase definitions.
- ;; Have to do it here because we execute this command under
- ;; different keymaps, so command-execute may not do the
- ;; right thing there
- (while (vectorp com) (setq com (key-binding com))))
- nil)
+ (setq com (key-binding (setq key (read-key-sequence nil))))
+ ;; In case of binding indirection--chase definitions.
+ ;; Have to do it here because we execute this command under
+ ;; different keymaps, so command-execute may not do the
+ ;; right thing there
+ (while (vectorp com) (setq com (key-binding com)))
;; Execute command com in the original Viper state, not in state
;; `state'. Otherwise, if we switch buffers while executing the
;; escaped to command, Viper's mode vars will remain those of
@@ -1705,8 +1707,8 @@ to in the global map, instead of cycling through the insertion ring."
(if (eq viper-current-state 'replace-state)
(undo 1)
(if viper-last-inserted-string-from-insertion-ring
- (backward-delete-char
- (length viper-last-inserted-string-from-insertion-ring))))
+ (delete-char
+ (- (length viper-last-inserted-string-from-insertion-ring)))))
)
;;first search through insertion history
(setq viper-temp-insertion-ring (ring-copy viper-insertion-ring)))
@@ -1944,16 +1946,16 @@ To turn this feature off, set this variable to nil."
(if found
()
(viper-tmp-insert-at-eob " [Please complete file name]")
- (unwind-protect
- (while (not (memq cmd
- '(exit-minibuffer viper-exit-minibuffer)))
- (setq cmd
- (key-binding (setq key (read-key-sequence nil))))
- (cond ((eq cmd 'self-insert-command)
- (insert key))
- ((memq cmd '(exit-minibuffer viper-exit-minibuffer))
- nil)
- (t (command-execute cmd))))))))))
+
+ (while (not (memq cmd
+ '(exit-minibuffer viper-exit-minibuffer)))
+ (setq cmd
+ (key-binding (setq key (read-key-sequence nil))))
+ (cond ((eq cmd 'self-insert-command)
+ (insert key))
+ ((memq cmd '(exit-minibuffer viper-exit-minibuffer))
+ nil)
+ (t (command-execute cmd)))))))))
(defun viper-minibuffer-trim-tail ()
diff --git a/lisp/env.el b/lisp/env.el
index 33c02f6f920..faafcb6250f 100644
--- a/lisp/env.el
+++ b/lisp/env.el
@@ -204,6 +204,7 @@ parameter.
Otherwise, this function searches `process-environment' for
VARIABLE. If it is not found there, then it continues the search
in the environment list of the selected frame."
+ (declare (side-effect-free t))
(interactive (list (read-envvar-name "Get environment variable: " t)))
(let ((value (getenv-internal (if (multibyte-string-p variable)
(encode-coding-string
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 567443f5329..bdf4e2ddca2 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -415,8 +415,12 @@ This only has an effect if `erc-server-auto-reconnect' is non-nil."
(defcustom erc-server-reconnect-timeout 1
"Number of seconds to wait between successive reconnect attempts.
-
-If a key is pressed while ERC is waiting, it will stop waiting."
+If this value is too low, servers may reject your initial nick
+request upon reconnecting because they haven't yet noticed that
+your previous connection is dead. If this happens, try setting
+this value to 120 or greater and/or exploring the option
+`erc-nickname-in-use-functions', which may provide a more
+proactive means of handling this situation on some servers."
:type 'number)
(defcustom erc-server-reconnect-function 'erc-server-delayed-reconnect
@@ -427,6 +431,7 @@ dialing. Use `erc-schedule-reconnect' to instead try again later
and optionally alter the attempts tally."
:package-version '(ERC . "5.5")
:type '(choice (function-item erc-server-delayed-reconnect)
+ (function-item erc-server-delayed-check-reconnect)
function))
(defcustom erc-split-line-length 440
@@ -658,6 +663,30 @@ The current buffer is given by BUFFER."
(run-hooks 'erc--server-post-connect-hook)
(erc-login))
+(defvar erc--server-connect-function #'erc--server-propagate-failed-connection
+ "Function called one second after creating a server process.
+Called with the newly created process just before the opening IRC
+protocol exchange.")
+
+(defun erc--server-propagate-failed-connection (process)
+ "Ensure the PROCESS sentinel runs at least once on early failure.
+Act as a watchdog timer to force `erc-process-sentinel' and its
+finalizers, like `erc-disconnected-hook', to run when PROCESS has
+a status of `failed' after one second. But only do so when its
+error data is something ERC recognizes. Print an explanation to
+the server buffer in any case."
+ (when (eq (process-status process) 'failed)
+ (erc-display-message
+ nil 'error (process-buffer process)
+ (format "Process exit status: %S" (process-exit-status process)))
+ (pcase (process-exit-status process)
+ (111
+ (erc-process-sentinel process "failed with code 111\n"))
+ (`(file-error . ,_)
+ (erc-process-sentinel process "failed with code -523\n"))
+ ((rx "tls" (+ nonl) "failed")
+ (erc-process-sentinel process "failed with code -525\n")))))
+
(defvar erc--server-connect-dumb-ipv6-regexp
;; Not for validation (gives false positives).
(rx bot "[" (group (+ (any xdigit digit ":.")) (? "%" (+ alnum))) "]" eot))
@@ -710,7 +739,9 @@ TLS (see `erc-session-client-certificate' for more details)."
;; MOTD line)
(if (eq (process-status process) 'connect)
;; waiting for a non-blocking connect - keep the user informed
- (erc-display-message nil nil buffer "Opening connection..\n")
+ (progn
+ (erc-display-message nil nil buffer "Opening connection..\n")
+ (run-at-time 1 nil erc--server-connect-function process))
(message "%s...done" msg)
(erc--register-connection))))
@@ -744,6 +775,78 @@ Make sure you are in an ERC buffer when running this."
(with-current-buffer buffer
(erc-server-reconnect))))
+(defvar-local erc--server-reconnect-timeout nil)
+(defvar-local erc--server-reconnect-timeout-check 10)
+(defvar-local erc--server-reconnect-timeout-scale-function
+ #'erc--server-reconnect-timeout-double)
+
+(defun erc--server-reconnect-timeout-double (existing)
+ "Double EXISTING timeout, but cap it at 5 minutes."
+ (min 300 (* existing 2)))
+
+;; This may appear to hang at various places. It's assumed that when
+;; *Messages* contains "Waiting for socket ..." or similar, progress
+;; will be made eventually.
+
+(defun erc-server-delayed-check-reconnect (buffer)
+ "Wait for internet connectivity before trying to reconnect.
+Expect BUFFER to be the server buffer for the current connection."
+ (when (buffer-live-p buffer)
+ (with-current-buffer buffer
+ (setq erc--server-reconnect-timeout
+ (funcall erc--server-reconnect-timeout-scale-function
+ (or erc--server-reconnect-timeout
+ erc-server-reconnect-timeout)))
+ (let* ((reschedule (lambda (proc)
+ (when (buffer-live-p buffer)
+ (with-current-buffer buffer
+ (let ((erc-server-reconnect-timeout
+ erc--server-reconnect-timeout))
+ (delete-process proc)
+ (erc-display-message nil 'error buffer
+ "Nobody home...")
+ (erc-schedule-reconnect buffer 0))))))
+ (conchk-exp (time-add erc--server-reconnect-timeout-check
+ (current-time)))
+ (conchk-timer nil)
+ (conchk (lambda (proc)
+ (let ((status (process-status proc))
+ (xprdp (time-less-p conchk-exp (current-time))))
+ (when (or (not (eq 'connect status)) xprdp)
+ (cancel-timer conchk-timer))
+ (when (buffer-live-p buffer)
+ (cond (xprdp (erc-display-message
+ nil 'error buffer
+ "Timed out while dialing...")
+ (delete-process proc)
+ (funcall reschedule proc))
+ ((eq 'failed status)
+ (funcall reschedule proc)))))))
+ (sentinel (lambda (proc event)
+ (pcase event
+ ("open\n"
+ (run-at-time nil nil #'send-string proc
+ (format "PING %d\r\n"
+ (time-convert nil 'integer))))
+ ((or "connection broken by remote peer\n"
+ (rx bot "failed"))
+ (funcall reschedule proc)))))
+ (filter (lambda (proc _)
+ (delete-process proc)
+ (with-current-buffer buffer
+ (setq erc--server-reconnect-timeout nil))
+ (run-at-time nil nil #'erc-server-delayed-reconnect
+ buffer))))
+ (condition-case _
+ (let ((proc (funcall erc-session-connector
+ "*erc-connectivity-check*" nil
+ erc-session-server erc-session-port
+ :nowait t)))
+ (setq conchk-timer (run-at-time 1 1 conchk proc))
+ (set-process-filter proc filter)
+ (set-process-sentinel proc sentinel))
+ (file-error (funcall reschedule nil)))))))
+
(defun erc-server-filter-function (process string)
"The process filter for the ERC server."
(with-current-buffer (process-buffer process)
@@ -823,11 +926,16 @@ When `erc-server-reconnect-attempts' is a number, increment
`erc-server-reconnect-count' by INCR unconditionally."
(let ((count (and (integerp erc-server-reconnect-attempts)
(- erc-server-reconnect-attempts
- (cl-incf erc-server-reconnect-count (or incr 1))))))
- (erc-display-message nil 'error (current-buffer) 'reconnecting
+ (cl-incf erc-server-reconnect-count (or incr 1)))))
+ (proc (buffer-local-value 'erc-server-process buffer)))
+ (erc-display-message nil 'error buffer 'reconnecting
?m erc-server-reconnect-timeout
?i (if count erc-server-reconnect-count "N")
?n (if count erc-server-reconnect-attempts "A"))
+ (set-process-sentinel proc #'ignore)
+ (set-process-filter proc nil)
+ (delete-process proc)
+ (erc-update-mode-line)
(setq erc-server-reconnecting nil
erc--server-reconnect-timer
(run-at-time erc-server-reconnect-timeout nil
@@ -1876,7 +1984,7 @@ ambiguous and only useful for tokens supporting a single
primitive value."
(if-let* ((table (or erc--isupport-params
(erc-with-server-buffer erc--isupport-params)))
- (value (erc-compat--with-memoization (gethash key table)
+ (value (with-memoization (gethash key table)
(when-let ((v (assoc (symbol-name key)
erc-server-parameters)))
(if (cdr v)
@@ -2236,6 +2344,11 @@ See `erc-display-server-message'." nil
(erc-display-message parsed '(notice error) 'active
's401 ?n nick/channel)))
+(define-erc-response-handler (402)
+ "No such server." nil
+ (erc-display-message parsed '(notice error) 'active
+ 's402 ?c (cadr (erc-response.command-args parsed))))
+
(define-erc-response-handler (403)
"No such channel." nil
(erc-display-message parsed '(notice error) 'active
@@ -2383,7 +2496,7 @@ See `erc-display-error-notice'." nil
;; (define-erc-response-handler (323 364 365 381 382 392 393 394 395
;; 200 201 202 203 204 205 206 208 209 211 212 213
;; 214 215 216 217 218 219 241 242 243 244 249 261
-;; 262 302 342 351 402 407 409 411 413 414 415
+;; 262 302 342 351 407 409 411 413 414 415
;; 423 424 436 441 443 444 467 471 472 473 KILL)
;; nil nil
;; (ignore proc parsed))
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index c28dddefa0e..33e69f3b0b8 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -52,14 +52,15 @@
;;;###autoload(autoload 'erc-button-mode "erc-button" nil t)
(define-erc-module button nil
"This mode buttonizes all messages according to `erc-button-alist'."
- ((add-hook 'erc-insert-modify-hook #'erc-button-add-buttons 'append)
+ ((erc-button--check-nicknames-entry)
+ (add-hook 'erc-insert-modify-hook #'erc-button-add-buttons 'append)
(add-hook 'erc-send-modify-hook #'erc-button-add-buttons 'append)
(add-hook 'erc-complete-functions #'erc-button-next-function)
- (add-hook 'erc-mode-hook #'erc-button-setup))
+ (erc--modify-local-map t "<backtab>" #'erc-button-previous))
((remove-hook 'erc-insert-modify-hook #'erc-button-add-buttons)
(remove-hook 'erc-send-modify-hook #'erc-button-add-buttons)
(remove-hook 'erc-complete-functions #'erc-button-next-function)
- (remove-hook 'erc-mode-hook #'erc-button-setup)))
+ (erc--modify-local-map nil "<backtab>" #'erc-button-previous)))
;;; Variables
@@ -133,7 +134,7 @@ longer than `erc-fill-column'."
("[`‘]\\([a-zA-Z][-a-zA-Z_0-9!*<=>+]+\\)['’]"
1 t erc-button-describe-symbol 1)
;; pseudo links
- ("\\bInfo:[\"]\\([^\"]+\\)[\"]" 0 t Info-goto-node 1)
+ ("\\(?:\\bInfo: ?\\|(info \\)[\"]\\(([^\"]+\\)[\"])?" 0 t info 1)
("\\b\\(Ward\\|Wiki\\|WardsWiki\\|TheWiki\\):\\([A-Z][a-z]+\\([A-Z][a-z]+\\)+\\)"
0 t (lambda (page)
(browse-url (concat "http://c2.com/cgi-bin/wiki?" page)))
@@ -165,8 +166,17 @@ REGEXP is the string matching text around the button or a symbol
BUTTON is the number of the regexp grouping actually matching the
button. This is ignored if REGEXP is `nicknames'.
-FORM is a Lisp expression which must eval to true for the button to
- be added.
+FORM is a Lisp symbol for a special variable whose value must be
+ true for the button to be added. Alternatively, when REGEXP is
+ not `nicknames', FORM can be a function whose arguments are BEG
+ and END, the bounds of the button in the current buffer. It's
+ expected to return a cons of (possibly identical) bounds or
+ nil, to deny. For the extent of the call, all face options
+ defined for the button module are re-bound, shadowing
+ themselves, so the function is free to change their values.
+ When regexp is the special symbol `nicknames', FORM must be the
+ symbol `erc-button-buttonize-nicks'. Specifying anything else
+ is deprecated.
CALLBACK is the function to call when the user push this button.
CALLBACK can also be a symbol. Its variable value will be used
@@ -176,7 +186,7 @@ PAR is a number of a regexp grouping whose text will be passed to
CALLBACK. There can be several PAR arguments. If REGEXP is
`nicknames', these are ignored, and CALLBACK will be called with
the nickname matched as the argument."
- :package-version '(ERC . "5.5")
+ :package-version '(ERC . "5.6") ; FIXME sync on release
:type '(repeat
(list :tag "Button"
(choice :tag "Matches"
@@ -233,6 +243,8 @@ constituents.")
"Internal variable used to keep track of whether we've added the
global-level ERC button keys yet.")
+;; Maybe deprecate this function and `erc-button-keys-added' if they
+;; continue to go unused for a another version (currently 5.6).
(defun erc-button-setup ()
"Add ERC mode-level button movement keys. This is only done once."
;; Add keys.
@@ -275,22 +287,127 @@ specified by `erc-button-alist'."
(concat "\\<" (regexp-quote (car elem)) "\\>")
entry)))))))))))
+(defun erc-button--maybe-warn-arbitrary-sexp (form)
+ (if (and (symbolp form) (special-variable-p form))
+ (symbol-value form)
+ (unless (get 'erc-button--maybe-warn-arbitrary-sexp 'warned-arbitrary-sexp)
+ (put 'erc-button--maybe-warn-arbitrary-sexp 'warned-arbitrary-sexp t)
+ (lwarn 'erc :warning
+ (concat "Arbitrary sexps for the third FORM"
+ " slot of `erc-button-alist' entries"
+ " have been deprecated.")))
+ (eval form t)))
+
+(defun erc-button--check-nicknames-entry ()
+ ;; This helper exists because the module is defined after its options.
+ (when-let (((eq major-mode 'erc-mode))
+ (entry (alist-get 'nicknames erc-button-alist)))
+ (unless (eq 'erc-button-buttonize-nicks (nth 1 entry))
+ (erc-button--display-error-notice-with-keys-and-warn
+ "Values other than `erc-button-buttonize-nicks' in the third slot of "
+ "the `nicknames' entry of `erc-button-alist' are deprecated."))))
+
+(defun erc-button--preserve-bounds (bounds _ server-user _)
+ "Return BOUNDS.\n\n(fn BOUNDS NICKNAME SERVER-USER CHANNEL-USER)"
+ (and server-user bounds))
+
+;; This variable is intended to serve as a "core" to be wrapped by
+;; (built-in) modules during setup. It's unclear whether
+;; `add-function's practice of removing existing advice before
+;; re-adding it is desirable when integrating modules since we're
+;; mostly concerned with ensuring one "piece" precedes or follows
+;; another (specific piece), which may not yet (or ever) be present.
+
+(defvar erc-button--modify-nick-function #'erc-button--preserve-bounds
+ "Function to possibly modify aspects of nick being buttonized.
+Called with four args: BOUNDS NICKNAME SERVER-USER CHANNEL-USER.
+BOUNDS is a cons of (BEG . END) marking the position of the nick
+in the current message, which occupies the whole of the narrowed
+buffer. BEG is normally also point. NICKNAME is a case-mapped
+string without text properties. SERVER-USER and CHANNEL-USER are
+the nick's `erc-server-users' entry and its associated (though
+possibly nil) `erc-channel-user' object. The function should
+return BOUNDS or a suitable replacement to indicate that
+buttonizing ought to proceed, and nil if it should be inhibited.")
+
+(defvar-local erc-button--phantom-users nil)
+
+(defun erc-button--add-phantom-speaker (args)
+ "Maybe substitute fake `server-user' for speaker at point."
+ (pcase args
+ (`(,bounds ,downcased-nick nil ,channel-user)
+ (list bounds downcased-nick
+ ;; Like `with-memoization' but don't cache when value is nil.
+ (or (gethash downcased-nick erc-button--phantom-users)
+ (and-let* ((user (erc-button--get-user-from-speaker-naive
+ (car bounds))))
+ (puthash downcased-nick user erc-button--phantom-users)))
+ channel-user))
+ (_ args)))
+
+(define-minor-mode erc-button--phantom-users-mode
+ "Minor mode to recognize unknown speakers.
+Expect to be used by module setup code for creating placeholder
+users on the fly during history playback. Treat an unknown
+PRIVMSG speaker, like <bob>, as if they were present in a 353 and
+are thus a member of the channel. However, don't bother creating
+an actual `erc-channel-user' object because their status prefix
+is unknown. Instead, just spoof an `erc-server-user' by applying
+early (outer), args-filtering advice wrapping
+`erc-button--modify-nick-function'."
+ :interactive nil
+ (if erc-button--phantom-users-mode
+ (progn
+ (add-function :filter-args (local 'erc-button--modify-nick-function)
+ #'erc-button--add-phantom-speaker '((depth . -90)))
+ (setq erc-button--phantom-users (make-hash-table :test #'equal)))
+ (remove-function (local 'erc-button--modify-nick-function)
+ #'erc-button--add-phantom-speaker)
+ (kill-local-variable 'erc-nicks--phantom-users)))
+
+;; FIXME replace this after making ERC account-aware.
+(defun erc-button--get-user-from-speaker-naive (point)
+ "Return `erc-server-user' object for nick at POINT."
+ (when-let*
+ (((eql ?< (char-before point)))
+ ((eq (get-text-property point 'font-lock-face) 'erc-nick-default-face))
+ (parsed (erc-get-parsed-vector point)))
+ (pcase-let* ((`(,nick ,login ,host)
+ (erc-parse-user (erc-response.sender parsed))))
+ (make-erc-server-user
+ :nickname nick
+ :host (and (not (string-empty-p host)) host)
+ :login (and (not (string-empty-p login)) login)))))
+
(defun erc-button-add-nickname-buttons (entry)
"Search through the buffer for nicknames, and add buttons."
(let ((form (nth 2 entry))
(fun (nth 3 entry))
bounds word)
- (when (or (eq t form)
- (eval form t))
+ (when (eq form 'erc-button-buttonize-nicks)
+ (setq form (and (symbol-value form) erc-button--modify-nick-function)))
+ (when (or (functionp form)
+ (eq t form)
+ (and form (erc-button--maybe-warn-arbitrary-sexp form)))
(goto-char (point-min))
(while (erc-forward-word)
(when (setq bounds (erc-bounds-of-word-at-point))
(setq word (buffer-substring-no-properties
(car bounds) (cdr bounds)))
- (when (or (and (erc-server-buffer-p) (erc-get-server-user word))
- (and erc-channel-users (erc-get-channel-user word)))
- (erc-button-add-button (car bounds) (cdr bounds)
- fun t (list word))))))))
+ (let* ((erc-button-face erc-button-face)
+ (erc-button-mouse-face erc-button-mouse-face)
+ (erc-button-nickname-face erc-button-nickname-face)
+ (down (erc-downcase word))
+ (cuser (and erc-channel-users
+ (gethash down erc-channel-users)))
+ (user (or (and cuser (car cuser))
+ (and erc-server-users
+ (gethash down erc-server-users)))))
+ (when (or (not (functionp form))
+ (setq bounds
+ (funcall form bounds down user (cdr cuser))))
+ (erc-button-add-button (car bounds) (cdr bounds)
+ fun t (list word)))))))))
(defun erc-button-add-buttons-1 (regexp entry)
"Search through the buffer for matches to ENTRY and add buttons."
@@ -302,7 +419,14 @@ specified by `erc-button-alist'."
(fun (nth 3 entry))
(data (mapcar #'match-string-no-properties (nthcdr 4 entry))))
(when (or (eq t form)
- (eval form t))
+ (and (functionp form)
+ (let* ((erc-button-face erc-button-face)
+ (erc-button-mouse-face erc-button-mouse-face)
+ (erc-button-nickname-face erc-button-nickname-face)
+ (rv (funcall form start end)))
+ (when rv
+ (setq end (cdr rv) start (car rv)))))
+ (erc-button--maybe-warn-arbitrary-sexp form))
(erc-button-add-button start end fun nil data regexp)))))
(defun erc-button-remove-old-buttons ()
@@ -511,6 +635,70 @@ and `apropos' for other symbols."
(message "@%s is %d:%02d local time"
beats hours minutes)))
+(defun erc-button--substitute-command-keys-in-region (beg end)
+ "Replace command in region with keys and return new bounds"
+ (let* ((o (buffer-substring beg end))
+ (s (substitute-command-keys o)))
+ (unless (equal o s)
+ (setq erc-button-face nil))
+ (delete-region beg end)
+ (insert s))
+ (cons beg (point)))
+
+;;;###autoload
+(defun erc-button--display-error-notice-with-keys (&optional parsed buffer
+ &rest strings)
+ "Add help keys to STRINGS for configuration-related admonishments.
+Return inserted result. Expect PARSED to be an `erc-response'
+object, a string, or nil. Expect BUFFER to be a buffer, a string,
+or nil. As a special case, allow PARSED to be a buffer as long
+as BUFFER is a string or nil. If STRINGS contains any trailing
+non-strings, concatenate leading string members before applying
+`format'. Otherwise, just concatenate everything."
+ (when (stringp buffer)
+ (push buffer strings)
+ (setq buffer nil))
+ (when (stringp parsed)
+ (push parsed strings)
+ (setq parsed nil))
+ (when (bufferp parsed)
+ (cl-assert (null buffer))
+ (setq buffer parsed
+ parsed nil))
+ (let* ((op (if (seq-every-p #'stringp (cdr strings))
+ #'concat
+ (let ((head (pop strings)))
+ (while (stringp (car strings))
+ (setq head (concat head (pop strings))))
+ (push head strings))
+ #'format))
+ (string (apply op strings))
+ (erc-insert-post-hook
+ (cons (lambda ()
+ (setq string (buffer-substring (point-min)
+ (1- (point-max)))))
+ erc-insert-post-hook))
+ (erc-button-alist
+ `((,(rx "\\[" (group (+ (not "]"))) "]") 0
+ erc-button--substitute-command-keys-in-region
+ erc-button-describe-symbol 1)
+ ,@erc-button-alist)))
+ (erc-display-message parsed '(notice error) (or buffer 'active) string)
+ string))
+
+;;;###autoload
+(defun erc-button--display-error-notice-with-keys-and-warn (&rest args)
+ "Like `erc-button--display-error-notice-with-keys' but also warn."
+ (let ((string (apply #'erc-button--display-error-notice-with-keys args)))
+ (with-temp-buffer
+ (insert string)
+ (goto-char (point-min))
+ (with-syntax-table lisp-mode-syntax-table
+ (skip-syntax-forward "^-"))
+ (forward-char)
+ (display-warning
+ 'erc (buffer-substring-no-properties (point) (point-max))))))
+
(provide 'erc-button)
;;; erc-button.el ends here
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 650c5fa84ac..bb0921da7f0 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -89,6 +89,7 @@ character not found in IRC nicknames to avoid confusion."
;;; Define module:
;;;###autoload(autoload 'erc-capab-identify-mode "erc-capab" nil t)
+(put 'capab-identify 'erc-group 'erc-capab)
(define-erc-module capab-identify nil
"Handle dancer-ircd's CAPAB IDENTIFY-MSG and IDENTIFY-CTCP."
;; append so that `erc-server-parameters' is already set by `erc-server-005'
diff --git a/lisp/erc/erc-common.el b/lisp/erc/erc-common.el
index 0279b0a0bc4..6c015c71ff9 100644
--- a/lisp/erc/erc-common.el
+++ b/lisp/erc/erc-common.el
@@ -31,12 +31,18 @@
(defvar erc-channel-users)
(defvar erc-dbuf)
(defvar erc-log-p)
+(defvar erc-modules)
(defvar erc-server-users)
(defvar erc-session-server)
(declare-function erc--get-isupport-entry "erc-backend" (key &optional single))
(declare-function erc-get-buffer "erc" (target &optional proc))
(declare-function erc-server-buffer "erc" nil)
+(declare-function widget-apply-action "wid-edit" (widget &optional event))
+(declare-function widget-at "wid-edit" (&optional pos))
+(declare-function widget-get-sibling "wid-edit" (widget))
+(declare-function widget-move "wid-edit" (arg &optional suppress-echo))
+(declare-function widget-type "wid-edit" (widget))
(cl-defstruct erc-input
string insertp sendp)
@@ -85,45 +91,52 @@
(contents "" :type string)
(tags '() :type list))
-;; TODO move goodies modules here after 29 is released.
-(defconst erc--features-to-modules
- '((erc-pcomplete completion pcomplete)
- (erc-capab capab-identify)
- (erc-join autojoin)
- (erc-page page ctcp-page)
- (erc-sound sound ctcp-sound)
- (erc-stamp stamp timestamp)
- (erc-services services nickserv))
- "Migration alist mapping a library feature to module names.
-Keys need not be unique: a library may define more than one
-module. Sometimes a module's downcased alias will be its
-canonical name.")
-
-(defconst erc--modules-to-features
- (let (pairs)
- (pcase-dolist (`(,feature . ,names) erc--features-to-modules)
- (dolist (name names)
- (push (cons name feature) pairs)))
- (nreverse pairs))
- "Migration alist mapping a module's name to its home library feature.")
-
-(defconst erc--module-name-migrations
- (let (pairs)
- (pcase-dolist (`(,_ ,canonical . ,rest) erc--features-to-modules)
- (dolist (obsolete rest)
- (push (cons obsolete canonical) pairs)))
- pairs)
- "Association list of obsolete module names to canonical names.")
-
+;; After dropping 28, we can use prefixed "erc-autoload" cookies.
(defun erc--normalize-module-symbol (symbol)
- "Return preferred SYMBOL for `erc-modules'."
- (setq symbol (intern (downcase (symbol-name symbol))))
- (or (cdr (assq symbol erc--module-name-migrations)) symbol))
+ "Return preferred SYMBOL for `erc--modules'."
+ (while-let ((canonical (get symbol 'erc--module))
+ ((not (eq canonical symbol))))
+ (setq symbol canonical))
+ symbol)
+
+(defvar erc--inside-mode-toggle-p nil
+ "Non-nil when a module's mode toggle is updating module membership.
+This serves as a flag to inhibit the mutual recursion that would
+otherwise occur between an ERC-defined minor-mode function, such
+as `erc-services-mode', and the custom-set function for
+`erc-modules'. For historical reasons, the latter calls
+`erc-update-modules', which, in turn, enables the minor-mode
+functions for all member modules. Also non-nil when a mode's
+widget runs its set function.")
+
+(defun erc--favor-changed-reverted-modules-state (name op)
+ "Be more nuanced in displaying Custom state of `erc-modules'.
+When `customized-value' differs from `saved-value', allow widget
+to behave normally and show \"SET for current session\", as
+though `customize-set-variable' or similar had been applied.
+However, when `customized-value' and `standard-value' match but
+differ from `saved-value', prefer showing \"CHANGED outside
+Customize\" to prevent the widget from seeing a `standard'
+instead of a `set' state, which precludes any actual saving."
+ ;; Although the button "Apply and save" is fortunately grayed out,
+ ;; `Custom-save' doesn't actually save (users must click the magic
+ ;; state button instead). The default behavior described in the doc
+ ;; string is intentional and was introduced by bug#12864 "Make state
+ ;; button interaction less confusing". However, it is unfriendly to
+ ;; rogue libraries (like ours) that insist on mutating user options
+ ;; as a matter of course.
+ (custom-load-symbol 'erc-modules)
+ (funcall (get 'erc-modules 'custom-set) 'erc-modules
+ (funcall op (erc--normalize-module-symbol name) erc-modules))
+ (when (equal (pcase (get 'erc-modules 'saved-value)
+ (`((quote ,saved) saved)))
+ erc-modules)
+ (customize-mark-as-set 'erc-modules)))
(defun erc--assemble-toggle (localp name ablsym mode val body)
(let ((arg (make-symbol "arg")))
`(defun ,ablsym ,(if localp `(&optional ,arg) '())
- ,(concat
+ ,(erc--fill-module-docstring
(if val "Enable" "Disable")
" ERC " (symbol-name name) " mode."
(when localp
@@ -137,14 +150,120 @@ canonical name.")
(,ablsym))
(setq ,mode ,val)
,@body)))
- `(,(if val
- `(cl-pushnew ',(erc--normalize-module-symbol name)
- erc-modules)
- `(setq erc-modules (delq ',(erc--normalize-module-symbol name)
- erc-modules)))
+ ;; No need for `default-value', etc. because a buffer-local
+ ;; `erc-modules' only influences the next session and
+ ;; doesn't survive the major-mode reset that soon follows.
+ `((unless
+ (or erc--inside-mode-toggle-p
+ ,@(let ((v `(memq ',(erc--normalize-module-symbol name)
+ erc-modules)))
+ `(,(if val v `(not ,v)))))
+ (let ((erc--inside-mode-toggle-p t))
+ (erc--favor-changed-reverted-modules-state
+ ',name #',(if val 'cons 'delq))))
(setq ,mode ,val)
,@body)))))
+;; This is a migration helper that determines a module's `:group'
+;; keyword argument from its name or alias. A (global) module's minor
+;; mode variable appears under the group's Custom menu. Like
+;; `erc--normalize-module-symbol', it must run when the module's
+;; definition (rather than that of `define-erc-module') is expanded.
+;; For corner cases in which this fails or the catch-all of `erc' is
+;; more inappropriate, (global) modules can declare a top-level
+;;
+;; (put 'foo 'erc-group 'erc-bar)
+;;
+;; where `erc-bar' is the group and `foo' is the normalized module.
+;; Do this *before* the module's definition. If `define-erc-module'
+;; ever accepts arbitrary keywords, passing an explicit `:group' will
+;; obviously be preferable.
+
+(defun erc--find-group (&rest symbols)
+ (catch 'found
+ (dolist (s symbols)
+ (let* ((downed (downcase (symbol-name s)))
+ (known (intern-soft (concat "erc-" downed))))
+ (when (and known
+ (or (get known 'group-documentation)
+ (rassq known custom-current-group-alist)))
+ (throw 'found known))
+ (when (setq known (intern-soft (concat "erc-" downed "-mode")))
+ (when-let ((found (custom-group-of-mode known)))
+ (throw 'found found))))
+ (when-let ((found (get (erc--normalize-module-symbol s) 'erc-group)))
+ (throw 'found found)))
+ 'erc))
+
+(defun erc--neuter-custom-variable-state (variable)
+ "Lie to Customize about VARIABLE's true state.
+Do so by always returning its standard value, namely nil."
+ ;; Make a module's global minor-mode toggle blind to Customize, so
+ ;; that `customize-variable-state' never sees it as "changed",
+ ;; regardless of its value. This snippet is
+ ;; `custom--standard-value' from Emacs 28+.
+ (cl-assert (null (eval (car (get variable 'standard-value)) t)))
+ nil)
+
+;; This exists as a separate, top-level function to prevent the byte
+;; compiler from warning about widget-related dependencies not being
+;; loaded at runtime.
+
+(defun erc--tick-module-checkbox (name &rest _) ; `name' must be normalized
+ (customize-variable-other-window 'erc-modules)
+ ;; Move to `erc-modules' section.
+ (while (not (eq (widget-type (widget-at)) 'checkbox))
+ (widget-move 1 t))
+ ;; This search for a checkbox can fail when `name' refers to a
+ ;; third-party module that modifies `erc-modules' (improperly) on
+ ;; load.
+ (let (w)
+ (while (and (eq (widget-type (widget-at)) 'checkbox)
+ (not (and (setq w (widget-get-sibling (widget-at)))
+ (eq (widget-value w) name))))
+ (setq w nil)
+ (widget-move 1 t)) ; the `suppress-echo' arg exists in 27.2
+ (unless w
+ (error "Failed to find %s in `erc-modules' checklist" name))
+ (widget-apply-action (widget-at))
+ (message "Hit %s to apply or %s to apply and save."
+ (substitute-command-keys "\\[Custom-set]")
+ (substitute-command-keys "\\[Custom-save]"))))
+
+(defun erc--prepare-custom-module-type (name)
+ `(let* ((name (erc--normalize-module-symbol ',name))
+ (fmtd (format " `%s' " name)))
+ `(boolean
+ :button-face '(custom-variable-obsolete custom-button)
+ :format "%{%t%}: %[Deprecated Toggle%] \n%h\n"
+ :documentation-property
+ ,(lambda (_)
+ (let ((hasp (memq name erc-modules)))
+ (concat "Setting a module's minor-mode variable is "
+ (propertize "ineffective" 'face 'error)
+ ".\nPlease " (if hasp "remove" "add") fmtd
+ (if hasp "from" "to") " `erc-modules' directly instead.\n"
+ "You can do so now by clicking the scary button above.")))
+ :help-echo ,(lambda (_)
+ (let ((hasp (memq name erc-modules)))
+ (concat (if hasp "Remove" "Add") fmtd
+ (if hasp "from" "to") " `erc-modules'.")))
+ :action ,(apply-partially #'erc--tick-module-checkbox name))))
+
+(defun erc--fill-module-docstring (&rest strings)
+ (with-temp-buffer
+ (emacs-lisp-mode)
+ (insert "(defun foo ()\n"
+ (format "%S" (apply #'concat strings))
+ "\n(ignore))")
+ (goto-char (point-min))
+ (forward-line 2)
+ (let ((emacs-lisp-docstring-fill-column 65)
+ (sentence-end-double-space t))
+ (fill-paragraph))
+ (goto-char (point-min))
+ (nth 3 (read (current-buffer)))))
+
(defmacro define-erc-module (name alias doc enable-body disable-body
&optional local-p)
"Define a new minor mode using ERC conventions.
@@ -179,21 +298,20 @@ Example:
(declare (doc-string 3) (indent defun))
(let* ((sn (symbol-name name))
(mode (intern (format "erc-%s-mode" (downcase sn))))
- (group (intern (format "erc-%s" (downcase sn))))
(enable (intern (format "erc-%s-enable" (downcase sn))))
(disable (intern (format "erc-%s-disable" (downcase sn)))))
`(progn
(define-minor-mode
,mode
- ,(format "Toggle ERC %S mode.
+ ,(erc--fill-module-docstring (format "Toggle ERC %s mode.
With a prefix argument ARG, enable %s if ARG is positive,
and disable it otherwise. If called from Lisp, enable the mode
if ARG is omitted or nil.
-%s" name name doc)
- ;; FIXME: We don't know if this group exists, so this `:group' may
- ;; actually just silence a valid warning about the fact that the var
- ;; is not associated with any group.
- :global ,(not local-p) :group (quote ,group)
+\n%s" name name doc))
+ :global ,(not local-p)
+ :group (erc--find-group ',name ,(and alias (list 'quote alias)))
+ ,@(unless local-p '(:get #'erc--neuter-custom-variable-state))
+ ,@(unless local-p `(:type ,(erc--prepare-custom-module-type name)))
(if ,mode
(,enable)
(,disable)))
@@ -249,11 +367,16 @@ See also `with-current-buffer'.
"Execute BODY in the current ERC server buffer.
If no server buffer exists, return nil."
(declare (indent 0) (debug (body)))
- (let ((buffer (make-symbol "buffer")))
+ (let ((varp (and (symbolp (car body))
+ (not (cdr body))
+ (special-variable-p (car body))))
+ (buffer (make-symbol "buffer")))
`(let ((,buffer (erc-server-buffer)))
(when (buffer-live-p ,buffer)
- (with-current-buffer ,buffer
- ,@body)))))
+ ,(if varp
+ `(buffer-local-value ',(car body) ,buffer)
+ `(with-current-buffer ,buffer
+ ,@body))))))
(defmacro erc-with-all-buffers-of-server (process pred &rest forms)
"Execute FORMS in all buffers which have same process as this server.
diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el
index 5601ede27a5..29892b78a39 100644
--- a/lisp/erc/erc-compat.el
+++ b/lisp/erc/erc-compat.el
@@ -32,7 +32,50 @@
;;; Code:
(require 'compat nil 'noerror)
-(eval-when-compile (require 'cl-lib) (require 'url-parse))
+(eval-when-compile (require 'cl-lib))
+
+;; Except for the "erc-" namespacing, these two definitions should be
+;; continuously updated to match the latest upstream ones verbatim.
+;; Although they're pretty simple, it's likely not worth checking for
+;; and possibly deferring to the non-prefixed versions.
+;;
+;; BEGIN Compat macros
+
+;;;; Macros for extended compatibility function calls
+
+(defmacro erc-compat-function (fun)
+ "Return compatibility function symbol for FUN.
+
+If the Emacs version provides a sufficiently recent version of
+FUN, the symbol FUN is returned itself. Otherwise the macro
+returns the symbol of a compatibility function which supports the
+behavior and calling convention of the current stable Emacs
+version. For example Compat 29.1 will provide compatibility
+functions which implement the behavior and calling convention of
+Emacs 29.1.
+
+See also `compat-call' to directly call compatibility functions."
+ (let ((compat (intern (format "compat--%s" fun))))
+ `#',(if (fboundp compat) compat fun)))
+
+(defmacro erc-compat-call (fun &rest args)
+ "Call compatibility function or macro FUN with ARGS.
+
+A good example function is `plist-get' which was extended with an
+additional predicate argument in Emacs 29.1. The compatibility
+function, which supports this additional argument, can be
+obtained via (compat-function plist-get) and called
+via (compat-call plist-get plist prop predicate). It is not
+possible to directly call (plist-get plist prop predicate) on
+Emacs older than 29.1, since the original `plist-get' function
+does not yet support the predicate argument. Note that the
+Compat library never overrides existing functions.
+
+See also `compat-function' to lookup compatibility functions."
+ (let ((compat (intern (format "compat--%s" fun))))
+ `(,(if (fboundp compat) compat fun) ,@args)))
+
+;; END Compat macros
;;;###autoload(autoload 'erc-define-minor-mode "erc-compat")
(define-obsolete-function-alias 'erc-define-minor-mode
@@ -368,16 +411,8 @@ If START or END is negative, it counts from the end."
;;;; Misc 29.1
-(defmacro erc-compat--with-memoization (table &rest forms)
- (declare (indent defun))
- (cond
- ((fboundp 'with-memoization)
- `(with-memoization ,table ,@forms)) ; 29.1
- ((fboundp 'cl--generic-with-memoization)
- `(cl--generic-with-memoization ,table ,@forms))
- (t `(progn ,@forms))))
-
(defvar url-irc-function)
+(declare-function url-type "url-parse" (cl-x))
(defun erc-compat--29-browse-url-irc (string &rest _)
(require 'url-irc)
@@ -409,6 +444,28 @@ If START or END is negative, it counts from the end."
(cons '("\\`irc6?s?://" . erc-compat--29-browse-url-irc)
existing))))))
+
+;;;; Misc 28.1
+
+(defvar comint-file-name-quote-list)
+(defvar shell-file-name-quote-list)
+(declare-function shell--parse-pcomplete-arguments "shell" nil)
+
+(defun erc-compat--28-split-string-shell-command (string)
+ (require 'comint)
+ (require 'shell)
+ (with-temp-buffer
+ (insert string)
+ (let ((comint-file-name-quote-list shell-file-name-quote-list))
+ (car (shell--parse-pcomplete-arguments)))))
+
+(defmacro erc-compat--split-string-shell-command (string)
+ ;; Autoloaded in Emacs 28.
+ (list (if (fboundp 'split-string-shell-command)
+ 'split-string-shell-command
+ 'erc-compat--28-split-string-shell-command)
+ string))
+
(provide 'erc-compat)
;;; erc-compat.el ends here
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index 4c557e0e0f9..2012bcadae1 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -43,7 +43,7 @@
;; /dcc chat nick - Either accept pending chat offer from nick, or offer
;; DCC chat to nick
;; /dcc close type [nick] - Close DCC connection (SEND/GET/CHAT) with nick
-;; /dcc get [-t][-s] nick [file] - Accept DCC offer from nick
+;; /dcc get [-t][-s] nick [--] file - Accept DCC offer from nick
;; /dcc list - List all DCC offers/connections
;; /dcc send nick file - Offer DCC SEND to nick
@@ -389,12 +389,18 @@ If this is nil, then the current value of `default-directory' is used."
:type '(choice (const :value nil :tag "Default directory") directory))
;;;###autoload
-(defun erc-cmd-DCC (cmd &rest args)
+(defun erc-cmd-DCC (line &rest compat-args)
"Parser for /dcc command.
This figures out the dcc subcommand and calls the appropriate routine to
handle it. The function dispatched should be named \"erc-dcc-do-FOO-command\",
where FOO is one of CLOSE, GET, SEND, LIST, CHAT, etc."
- (when cmd
+ (let (cmd args)
+ ;; Called as library function (i.e., not directly as /dcc)
+ (if compat-args
+ (setq cmd line
+ args compat-args)
+ (setq args (delete "" (erc-compat--split-string-shell-command line))
+ cmd (pop args)))
(let ((fn (intern-soft (concat "erc-dcc-do-" (upcase cmd) "-command"))))
(if fn
(apply fn erc-server-process args)
@@ -404,8 +410,16 @@ where FOO is one of CLOSE, GET, SEND, LIST, CHAT, etc."
(apropos "erc-dcc-do-.*-command")
t))))
+(put 'erc-cmd-DCC 'do-not-parse-args t)
(autoload 'pcomplete-erc-all-nicks "erc-pcomplete")
+;;;###autoload(put 'erc-cmd-DCC 'erc--cmd-help 'erc-dcc--cmd-help)
+(defun erc-dcc--cmd-help (&rest args)
+ (describe-function
+ (or (and args (intern-soft (concat "erc-dcc-do-"
+ (upcase (car args)) "-command")))
+ 'erc-cmd-DCC)))
+
;;;###autoload
(defun pcomplete/erc-mode/DCC ()
"Provide completion for the /DCC command."
@@ -430,15 +444,20 @@ where FOO is one of CLOSE, GET, SEND, LIST, CHAT, etc."
(eq (plist-get elt :type) 'GET))
erc-dcc-list)))
('send (pcomplete-erc-all-nicks))))
+ (when (equal "get" (downcase (pcomplete-arg 'first 1)))
+ (pcomplete-opt "-"))
(pcomplete-here
(pcase (intern (downcase (pcomplete-arg 'first 1)))
- ('get (mapcar (lambda (elt) (plist-get elt :file))
+ ('get (mapcar (lambda (elt)
+ (combine-and-quote-strings (list (plist-get elt :file))))
(cl-remove-if-not
(lambda (elt)
(and (eq (plist-get elt :type) 'GET)
(erc-nick-equal-p (erc-extract-nick
(plist-get elt :nick))
- (pcomplete-arg 1))))
+ (pcase (pcomplete-arg 1)
+ ("--" (pcomplete-arg 2))
+ (v v)))))
erc-dcc-list)))
('close (mapcar #'erc-dcc-nick
(cl-remove-if-not
@@ -504,16 +523,33 @@ At least one of TYPE and NICK must be provided."
?n (erc-extract-nick (plist-get ret :nick))))))
t))
-(defun erc-dcc-do-GET-command (proc nick &rest file)
- "Do a DCC GET command. NICK is the person who is sending the file.
-FILE is the filename. If FILE is split into multiple arguments,
-re-join the arguments, separated by a space.
-PROC is the server process."
- (let* ((args (seq-group-by (lambda (s) (eq ?- (aref s 0))) (cons nick file)))
+(defun erc-dcc-do-GET-command (proc &rest args)
+ "Perform a DCC GET command.
+Recognize input conforming to the following usage syntax:
+
+ /DCC GET [-t|-s] nick [--] filename
+
+ nick The person who is sending the file.
+ filename The filename to be downloaded. Can be split into multiple
+ arguments that are then joined by a space.
+ flags \"-t\" sets `:turbo' in `erc-dcc-list'
+ \"-s\" sets `:secure' in `erc-dcc-list'
+ \"--\" indicates end of options
+ All of which are optional.
+
+Expect PROC to be the server process and ARGS to contain
+everything after the subcommand \"GET\" in the usage description
+above."
+ ;; Despite the advertised syntax above, we currently respect flags
+ ;; in these positions: [flag] nick [flag] filename [flag]
+ (let* ((trailing (and-let* ((trailing (member "--" args)))
+ (setq args (butlast args (length trailing)))
+ (cdr trailing)))
+ (args (seq-group-by (lambda (s) (eq ?- (aref s 0))) args))
(flags (prog1 (cdr (assq t args))
- (setq args (cdr (assq nil args))
- nick (pop args)
- file (and args (mapconcat #'identity args " ")))))
+ (setq args (nconc (cdr (assq nil args)) trailing))))
+ (nick (pop args))
+ (file (and args (mapconcat #'identity args " ")))
(elt (erc-dcc-member :nick nick :type 'GET :file file))
(filename (or file (plist-get elt :file) "unknown")))
(if elt
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index e10b7d790f6..c29d292abce 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -28,6 +28,9 @@
;; `erc-fill-mode' to switch it on. Customize `erc-fill-function' to
;; change the style.
+;; TODO: redo `erc-fill-wrap-nudge' using transient after ERC drops
+;; support for Emacs 27.
+
;;; Code:
(require 'erc)
@@ -38,30 +41,18 @@
:group 'erc)
;;;###autoload(autoload 'erc-fill-mode "erc-fill" nil t)
-(define-minor-mode erc-fill-mode
- "Toggle ERC fill mode.
-With a prefix argument ARG, enable ERC fill mode if ARG is
-positive, and disable it otherwise. If called from Lisp, enable
-the mode if ARG is omitted or nil.
-
+(define-erc-module fill nil
+ "Manage filling in ERC buffers.
ERC fill mode is a global minor mode. When enabled, messages in
the channel buffers are filled."
- :global t
- (if erc-fill-mode
- (erc-fill-enable)
- (erc-fill-disable)))
-
-(defun erc-fill-enable ()
- "Setup hooks for `erc-fill-mode'."
- (interactive)
- (add-hook 'erc-insert-modify-hook #'erc-fill)
- (add-hook 'erc-send-modify-hook #'erc-fill))
-
-(defun erc-fill-disable ()
- "Cleanup hooks, disable `erc-fill-mode'."
- (interactive)
- (remove-hook 'erc-insert-modify-hook #'erc-fill)
- (remove-hook 'erc-send-modify-hook #'erc-fill))
+ ;; FIXME ensure a consistent ordering relative to hook members from
+ ;; other modules. Ideally, this module's processing should happen
+ ;; after "morphological" modifications to a message's text but
+ ;; before superficial decorations.
+ ((add-hook 'erc-insert-modify-hook #'erc-fill)
+ (add-hook 'erc-send-modify-hook #'erc-fill))
+ ((remove-hook 'erc-insert-modify-hook #'erc-fill)
+ (remove-hook 'erc-send-modify-hook #'erc-fill)))
(defcustom erc-fill-prefix nil
"Values used as `fill-prefix' for `erc-fill-variable'.
@@ -91,16 +82,29 @@ Static Filling with `erc-fill-static-center' of 27:
These two styles are implemented using `erc-fill-variable' and
`erc-fill-static'. You can, of course, define your own filling
function. Narrowing to the region in question is in effect while your
-function is called."
+function is called.
+
+A third style resembles static filling but \"wraps\" instead of
+fills, thanks to `visual-line-mode' mode, which ERC automatically
+enables when this option is `erc-fill-wrap' or when
+`erc-fill-wrap-mode' is active. Set `erc-fill-static-center' to
+your preferred initial \"prefix\" width. For adjusting the width
+during a session, see the command `erc-fill-wrap-nudge'."
:type '(choice (const :tag "Variable Filling" erc-fill-variable)
(const :tag "Static Filling" erc-fill-static)
+ (const :tag "Dynamic word-wrap" erc-fill-wrap)
function))
(defcustom erc-fill-static-center 27
- "Column around which all statically filled messages will be centered.
-This column denotes the point where the ` ' character between
-<nickname> and the entered text will be put, thus aligning nick
-names right and text left."
+ "Number of columns to \"outdent\" the first line of a message.
+During early message handing, ERC prepends a span of
+non-whitespace characters to every message, such as a bracketed
+\"<nickname>\" or an `erc-notice-prefix'. The
+`erc-fill-function' variants `erc-fill-static' and
+`erc-fill-wrap' look to this option to determine the amount of
+padding to apply to that portion until the filled (or wrapped)
+message content aligns with the indicated column. See also
+https://en.wikipedia.org/wiki/Hanging_indent."
:type 'integer)
(defcustom erc-fill-variable-maximum-indentation 17
@@ -130,7 +134,7 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
(defun erc-fill-static ()
"Fills a text such that messages start at column `erc-fill-static-center'."
- (save-match-data
+ (save-restriction
(goto-char (point-min))
(looking-at "^\\(\\S-+\\)")
(let ((nick (match-string 1)))
@@ -167,6 +171,326 @@ You can put this on `erc-insert-modify-hook' and/or `erc-send-modify-hook'."
(erc-fill-regarding-timestamp))))
(erc-restore-text-properties)))
+(defvar-local erc-fill--wrap-value nil)
+(defvar-local erc-fill--wrap-visual-keys nil)
+
+(defcustom erc-fill-wrap-use-pixels t
+ "Whether to calculate padding in pixels when possible.
+A value of nil means ERC should use columns, which may happen
+regardless, depending on the Emacs version. This option only
+matters when `erc-fill-wrap-mode' is enabled."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
+ :type 'boolean)
+
+(defcustom erc-fill-wrap-visual-keys 'non-input
+ "Whether to retain keys defined by `visual-line-mode'.
+A value of t tells ERC to use movement commands defined by
+`visual-line-mode' everywhere in an ERC buffer along with visual
+editing commands in the input area. A value of nil means to
+never do so. A value of `non-input' tells ERC to act like the
+value is nil in the input area and t elsewhere. This option only
+plays a role when `erc-fill-wrap-mode' is enabled."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
+ :type '(choice (const nil) (const t) (const non-input)))
+
+(defcustom erc-fill-wrap-merge t
+ "Whether to consolidate messages from the same speaker.
+This tells ERC to omit redundant speaker labels for subsequent
+messages less than a day apart."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
+ :type 'boolean)
+
+(defun erc-fill--wrap-move (normal-cmd visual-cmd arg)
+ (funcall (pcase erc-fill--wrap-visual-keys
+ ('non-input
+ (if (>= (point) erc-input-marker) normal-cmd visual-cmd))
+ ('t visual-cmd)
+ (_ normal-cmd))
+ arg))
+
+(defun erc-fill--wrap-kill-line (arg)
+ "Defer to `kill-line' or `kill-visual-line'."
+ (interactive "P")
+ ;; ERC buffers are read-only outside of the input area, but we run
+ ;; `kill-line' anyway so that users can see the error.
+ (erc-fill--wrap-move #'kill-line #'kill-visual-line arg))
+
+(defun erc-fill--wrap-beginning-of-line (arg)
+ "Defer to `move-beginning-of-line' or `beginning-of-visual-line'."
+ (interactive "^p")
+ (let ((inhibit-field-text-motion t))
+ (erc-fill--wrap-move #'move-beginning-of-line
+ #'beginning-of-visual-line arg))
+ (when (get-text-property (point) 'erc-prompt)
+ (goto-char erc-input-marker)))
+
+(defun erc-fill--wrap-end-of-line (arg)
+ "Defer to `move-end-of-line' or `end-of-visual-line'."
+ (interactive "^p")
+ (erc-fill--wrap-move #'move-end-of-line #'end-of-visual-line arg))
+
+(defun erc-fill-wrap-cycle-visual-movement (arg)
+ "Cycle through `erc-fill-wrap-visual-keys' styles ARG times.
+Go from nil to t to `non-input' and back around, but set internal
+state instead of mutating `erc-fill-wrap-visual-keys'. When ARG
+is 0, reset to value of `erc-fill-wrap-visual-keys'."
+ (interactive "^p")
+ (when (zerop arg)
+ (setq erc-fill--wrap-visual-keys erc-fill-wrap-visual-keys))
+ (while (not (zerop arg))
+ (cl-incf arg (- (abs arg)))
+ (setq erc-fill--wrap-visual-keys (pcase erc-fill--wrap-visual-keys
+ ('nil t)
+ ('t 'non-input)
+ ('non-input nil))))
+ (message "erc-fill-wrap movement: %S" erc-fill--wrap-visual-keys))
+
+(defvar-keymap erc-fill-wrap-mode-map ; Compat 29
+ :doc "Keymap for ERC's `fill-wrap' module."
+ :parent visual-line-mode-map
+ "<remap> <kill-line>" #'erc-fill--wrap-kill-line
+ "<remap> <move-end-of-line>" #'erc-fill--wrap-end-of-line
+ "<remap> <move-beginning-of-line>" #'erc-fill--wrap-beginning-of-line
+ "C-c a" #'erc-fill-wrap-cycle-visual-movement
+ ;; Not sure if this is problematic because `erc-bol' takes no args.
+ "<remap> <erc-bol>" #'erc-fill--wrap-beginning-of-line)
+
+(defvar erc-match-mode)
+(defvar erc-button-mode)
+(defvar erc-match--hide-fools-offset-bounds)
+
+(defun erc-fill--make-module-dependency-msg (module)
+ (concat "Enabling default global module `" module "' needed by local"
+ " module `fill-wrap'. This will impact \C-]all\C-] ERC"
+ " sessions. Add `" module "' to `erc-modules' to avoid this"
+ " warning. See Info:\"(erc) Modules\" for more."))
+
+;;;###autoload(put 'fill-wrap 'erc--feature 'erc-fill)
+(define-erc-module fill-wrap nil
+ "Fill style leveraging `visual-line-mode'.
+This module displays nickname labels for speakers as overhanging
+leftward (and thus right-aligned) to a common offset, as
+determined by the option `erc-fill-static-center'. It depends on
+the `fill' and `button' modules and assumes the option
+`erc-insert-timestamp-function' is `erc-insert-timestamp-right'
+or `erc-insert-timestamp-left-and-right' (recommended) so that it
+can display right-hand stamps in the right margin. A value of
+`erc-insert-timestamp-left' is unsupported. This local module
+depends on the global `fill' module. To use it, either include
+`fill-wrap' in `erc-modules' or set `erc-fill-function' to
+`erc-fill-wrap' (recommended). You can also manually invoke one
+of the minor-mode toggles as usual."
+ ((let (msg)
+ (unless erc-fill-mode
+ (unless (memq 'fill erc-modules)
+ (setq msg
+ ;; FIXME use `erc-button--display-error-notice-with-keys'
+ ;; when bug#60933 is ready.
+ (erc-fill--make-module-dependency-msg "fill")))
+ (erc-fill-mode +1))
+ (when erc-fill-wrap-merge
+ (require 'erc-button)
+ (unless erc-button-mode
+ (unless (memq 'button erc-modules)
+ (setq msg (concat msg (and msg " ")
+ (erc-fill--make-module-dependency-msg "button"))))
+ (erc-with-server-buffer
+ (erc-button-mode +1))))
+ ;; Set local value of user option (can we avoid this somehow?)
+ (unless (eq erc-fill-function #'erc-fill-wrap)
+ (setq-local erc-fill-function #'erc-fill-wrap))
+ (when-let* ((vars (or erc--server-reconnecting erc--target-priors))
+ ((alist-get 'erc-fill-wrap-mode vars)))
+ (setq erc-fill--wrap-visual-keys (alist-get 'erc-fill--wrap-visual-keys
+ vars)
+ erc-fill--wrap-value (alist-get 'erc-fill--wrap-value vars)))
+ (add-function :filter-args (local 'erc-stamp--insert-date-function)
+ #'erc-fill--wrap-stamp-insert-prefixed-date)
+ (when (or erc-stamp-mode (memq 'stamp erc-modules))
+ (erc-stamp--display-margin-mode +1))
+ (when (or (bound-and-true-p erc-match-mode) (memq 'match erc-modules))
+ (require 'erc-match)
+ (setq erc-match--hide-fools-offset-bounds t))
+ (setq erc-fill--wrap-value
+ (or erc-fill--wrap-value erc-fill-static-center))
+ (visual-line-mode +1)
+ (unless (local-variable-p 'erc-fill--wrap-visual-keys)
+ (setq erc-fill--wrap-visual-keys erc-fill-wrap-visual-keys))
+ (when msg
+ (erc-display-error-notice nil msg))))
+ ((when erc-stamp--display-margin-mode
+ (erc-stamp--display-margin-mode -1))
+ (kill-local-variable 'erc-fill--wrap-value)
+ (kill-local-variable 'erc-fill-function)
+ (kill-local-variable 'erc-fill--wrap-visual-keys)
+ (remove-function (local 'erc-stamp--insert-date-function)
+ #'erc-fill--wrap-stamp-insert-prefixed-date)
+ (visual-line-mode -1))
+ 'local)
+
+(defvar-local erc-fill--wrap-length-function nil
+ "Function to determine length of overhanging characters.
+It should return an EXPR as defined by the Info node `(elisp)
+Pixel Specification'. This value should represent the width of
+the overhang with all faces applied, including any enclosing
+brackets (which are not normally fontified) and a trailing space.
+It can also return nil to tell ERC to fall back to the default
+behavior of taking the length from the first \"word\". This
+variable can be converted to a public one if needed by third
+parties.")
+
+(defvar-local erc-fill--wrap-last-msg nil)
+(defvar-local erc-fill--wrap-max-lull (* 24 60 60))
+
+(defun erc-fill--wrap-continued-message-p ()
+ (prog1 (and-let*
+ ((m (or erc-fill--wrap-last-msg
+ (setq erc-fill--wrap-last-msg (point-min-marker))
+ nil))
+ ((< (1+ (point-min)) (- (point) 2)))
+ (props (save-restriction
+ (widen)
+ (when (eq 'erc-timestamp (field-at-pos m))
+ (set-marker m (field-end m)))
+ (and (eq 'PRIVMSG (get-text-property m 'erc-command))
+ (not (eq (get-text-property m 'font-lock-face)
+ 'erc-action-face))
+ (cons (get-text-property m 'erc-timestamp)
+ (get-text-property (1+ m) 'erc-data)))))
+ (ts (pop props))
+ ((not (time-less-p (erc-stamp--current-time) ts)))
+ ((time-less-p (time-subtract (erc-stamp--current-time) ts)
+ erc-fill--wrap-max-lull))
+ (nick (buffer-substring-no-properties
+ (1+ (point-min)) (- (point) 2)))
+ ((equal (car props) (erc-downcase nick)))))
+ (set-marker erc-fill--wrap-last-msg (point-min))))
+
+(defun erc-fill--wrap-stamp-insert-prefixed-date (args)
+ "Apply `line-prefix' property to args."
+ (let* ((ts-left (car args)))
+ (put-text-property 0 (length ts-left) 'line-prefix
+ `(space :width
+ (- erc-fill--wrap-value
+ ,(length (string-trim-left ts-left))))
+ ts-left))
+ args)
+
+(defun erc-fill-wrap ()
+ "Use text props to mimic the effect of `erc-fill-static'.
+See `erc-fill-wrap-mode' for details."
+ (unless erc-fill-wrap-mode
+ (erc-fill-wrap-mode +1))
+ (save-excursion
+ (goto-char (point-min))
+ (let ((len (or (and erc-fill--wrap-length-function
+ (funcall erc-fill--wrap-length-function))
+ (progn
+ (skip-syntax-forward "^-")
+ (forward-char)
+ (cond ((and erc-fill-wrap-merge
+ (erc-fill--wrap-continued-message-p))
+ (put-text-property (point-min) (point)
+ 'display "")
+ 0)
+ ((and erc-fill-wrap-use-pixels
+ (fboundp 'buffer-text-pixel-size))
+ (save-restriction
+ (narrow-to-region (point-min) (point))
+ (list (car (buffer-text-pixel-size)))))
+ (t (- (point) (point-min))))))))
+ ;; Leaving out the final newline doesn't seem to affect anything.
+ (erc-put-text-properties (point-min) (point-max)
+ '(line-prefix wrap-prefix) nil
+ `((space :width (- erc-fill--wrap-value ,len))
+ (space :width erc-fill--wrap-value))))))
+
+;; This is an experimental helper for third-party modules. You could,
+;; for example, use this to automatically resize the prefix to a
+;; fraction of the window's width on some event change. Another use
+;; case would be to fix lines affected by toggling a display-oriented
+;; mode, like `display-line-numbers-mode'.
+
+(defun erc-fill--wrap-fix (&optional value)
+ "Re-wrap from `point-min' to `point-max'.
+That is, recalculate the width of all accessible lines and reset
+local prefix VALUE when non-nil."
+ (save-excursion
+ (when value
+ (setq erc-fill--wrap-value value))
+ (let ((inhibit-field-text-motion t)
+ (inhibit-read-only t))
+ (goto-char (point-min))
+ (while (and (zerop (forward-line))
+ (< (point) (min (point-max) erc-insert-marker)))
+ (save-restriction
+ (narrow-to-region (line-beginning-position) (line-end-position))
+ (erc-fill-wrap))))))
+
+(defun erc-fill--wrap-nudge (arg)
+ (when (zerop arg)
+ (setq arg (- erc-fill-static-center erc-fill--wrap-value)))
+ (cl-incf erc-fill--wrap-value arg)
+ arg)
+
+(defun erc-fill-wrap-nudge (arg)
+ "Adjust `erc-fill-wrap' by ARG columns.
+Offer to repeat command in a manner similar to
+`text-scale-adjust'.
+
+ \\`=' Increase indentation by one column
+ \\`-' Decrease indentation by one column
+ \\`0' Reset indentation to the default
+ \\`+' Shift right margin rightward (shrink) by one column
+ \\`_' Shift right margin leftward (grow) by one column
+ \\`)' Reset the right margin to the default
+
+Note that misalignment may occur when messages contain
+decorations applied by third-party modules. See
+`erc-fill--wrap-fix' for a temporary workaround."
+ (interactive "p")
+ (unless erc-fill--wrap-value
+ (cl-assert (not erc-fill-wrap-mode))
+ (user-error "Minor mode `erc-fill-wrap-mode' disabled"))
+ (unless (get-buffer-window)
+ (user-error "Command called in an undisplayed buffer"))
+ (let* ((total (erc-fill--wrap-nudge arg))
+ (win-ratio (/ (float (- (window-point) (window-start)))
+ (- (window-end nil t) (window-start)))))
+ (when (zerop arg)
+ (setq arg 1))
+ (erc-compat-call
+ set-transient-map
+ (let ((map (make-sparse-keymap)))
+ (dolist (key '(?= ?- ?0))
+ (let ((a (pcase key
+ (?0 0)
+ (?- (- (abs arg)))
+ (_ (abs arg)))))
+ (define-key map (vector (list key))
+ (lambda ()
+ (interactive)
+ (cl-incf total (erc-fill--wrap-nudge a))
+ (recenter (round (* win-ratio (window-height))))))))
+ (dolist (key '(?\) ?_ ?+))
+ (let ((a (pcase key
+ (?\) 0)
+ (?_ (- (abs arg)))
+ (?+ (abs arg)))))
+ (define-key map (vector (list key))
+ (lambda ()
+ (interactive)
+ (erc-stamp--adjust-right-margin (- a))
+ (recenter (round (* win-ratio (window-height))))))))
+ map)
+ t
+ (lambda ()
+ (message "Fill prefix: %d (%+d col%s)"
+ erc-fill--wrap-value total (if (> (abs total) 1) "s" "")))
+ "Use %k for further adjustment"
+ 1)
+ (recenter (round (* win-ratio (window-height))))))
+
(defun erc-fill-regarding-timestamp ()
"Fills a text such that messages start at column `erc-fill-static-center'."
(fill-region (point-min) (point-max) t t)
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index 05a21019042..6235de5f1c0 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -29,30 +29,13 @@
;;; Code:
-;;; Imenu support
-
(eval-when-compile (require 'cl-lib))
-(require 'erc-common)
-
-(defvar erc-controls-highlight-regexp)
-(defvar erc-controls-remove-regexp)
-(defvar erc-input-marker)
-(defvar erc-insert-marker)
-(defvar erc-server-process)
-(defvar erc-modules)
-(defvar erc-log-p)
-
-(declare-function erc-buffer-list "erc" (&optional predicate proc))
-(declare-function erc-error "erc" (&rest args))
-(declare-function erc-extract-command-from-line "erc" (line))
-(declare-function erc-beg-of-input-line "erc" nil)
+(require 'erc)
-(defun erc-imenu-setup ()
- "Setup Imenu support in an ERC buffer."
- (setq-local imenu-create-index-function #'erc-create-imenu-index))
+(declare-function fringe-columns "fringe" (side &optional real))
+(declare-function pulse-available-p "pulse" nil)
+(declare-function pulse-momentary-highlight-overlay "pulse" (o &optional face))
-(add-hook 'erc-mode-hook #'erc-imenu-setup)
-(autoload 'erc-create-imenu-index "erc-imenu" "Imenu index creation function")
;;; Automatically scroll to bottom
(defcustom erc-input-line-position nil
@@ -65,6 +48,7 @@ argument to `recenter'."
:group 'erc-display
:type '(choice integer (const nil)))
+;;;###autoload(autoload 'erc-scrolltobottom-mode "erc-goodies" nil t)
(define-erc-module scrolltobottom nil
"This mode causes the prompt to stay at the end of the window."
((add-hook 'erc-mode-hook #'erc-add-scroll-to-bottom)
@@ -116,6 +100,7 @@ variable `erc-input-line-position'."
(recenter (or erc-input-line-position -1)))))))
;;; Make read only
+;;;###autoload(autoload 'erc-readonly-mode "erc-goodies" nil t)
(define-erc-module readonly nil
"This mode causes all inserted text to be read-only."
((add-hook 'erc-insert-post-hook #'erc-make-read-only)
@@ -131,6 +116,7 @@ Put this function on `erc-insert-post-hook' and/or `erc-send-post-hook'."
(put-text-property (point-min) (point-max) 'rear-nonsticky t))
;;; Move to prompt when typing text
+;;;###autoload(autoload 'erc-move-to-prompt-mode "erc-goodies" nil t)
(define-erc-module move-to-prompt nil
"This mode causes the point to be moved to the prompt when typing text."
((add-hook 'erc-mode-hook #'erc-move-to-prompt-setup)
@@ -155,11 +141,160 @@ Put this function on `erc-insert-post-hook' and/or `erc-send-post-hook'."
(add-hook 'pre-command-hook #'erc-move-to-prompt nil t))
;;; Keep place in unvisited channels
+;;;###autoload(autoload 'erc-keep-place-mode "erc-goodies" nil t)
(define-erc-module keep-place nil
"Leave point above un-viewed text in other channels."
((add-hook 'erc-insert-pre-hook #'erc-keep-place))
((remove-hook 'erc-insert-pre-hook #'erc-keep-place)))
+(defcustom erc-keep-place-indicator-style t
+ "Flavor of visual indicator applied to kept place.
+For use with the `keep-place-indicator' module. A value of `arrow'
+displays an arrow in the left fringe or margin. When it's
+`face', ERC adds the face `erc-keep-place-indicator-line' to the
+appropriate line. A value of t does both."
+ :group 'erc
+ :package-version '(ERC . "5.6")
+ :type '(choice (const t) (const server) (const target)))
+
+(defcustom erc-keep-place-indicator-buffer-type t
+ "ERC buffer type in which to display `keep-place-indicator'.
+A value of t means \"all\" ERC buffers."
+ :group 'erc
+ :package-version '(ERC . "5.6")
+ :type '(choice (const t) (const server) (const target)))
+
+(defcustom erc-keep-place-indicator-follow nil
+ "Whether to sync visual kept place to window's top when reading.
+For use with `erc-keep-place-indicator-mode'."
+ :group 'erc
+ :package-version '(ERC . "5.6")
+ :type 'boolean)
+
+(defface erc-keep-place-indicator-line
+ '((((class color) (min-colors 88) (background light)
+ (supports :underline (:style wave)))
+ (:underline (:color "PaleGreen3" :style wave)))
+ (((class color) (min-colors 88) (background dark)
+ (supports :underline (:style wave)))
+ (:underline (:color "PaleGreen1" :style wave)))
+ (t :underline t))
+ "Face for option `erc-keep-place-indicator-style'."
+ :group 'erc-faces)
+
+(defface erc-keep-place-indicator-arrow
+ '((((class color) (min-colors 88) (background light))
+ (:foreground "PaleGreen3"))
+ (((class color) (min-colors 88) (background dark))
+ (:foreground "PaleGreen1"))
+ (t :inherit fringe))
+ "Face for arrow value of option `erc-keep-place-indicator-style'."
+ :group 'erc-faces)
+
+(defvar-local erc--keep-place-indicator-overlay nil
+ "Overlay for `erc-keep-place-indicator-mode'.")
+
+(defun erc--keep-place-indicator-on-window-configuration-change ()
+ "Maybe sync `erc--keep-place-indicator-overlay'.
+Specifically, do so unless switching to or from another window in
+the active frame."
+ (when erc-keep-place-indicator-follow
+ (unless (or (minibuffer-window-active-p (minibuffer-window))
+ (eq (window-old-buffer) (current-buffer)))
+ (when (< (overlay-end erc--keep-place-indicator-overlay)
+ (window-start)
+ erc-insert-marker)
+ (erc-keep-place-move (window-start))))))
+
+(defun erc--keep-place-indicator-setup ()
+ "Initialize buffer for maintaining `erc--keep-place-indicator-overlay'."
+ (require 'fringe)
+ (setq erc--keep-place-indicator-overlay
+ (if-let* ((vars (or erc--server-reconnecting erc--target-priors))
+ ((alist-get 'erc-keep-place-indicator-mode vars)))
+ (alist-get 'erc--keep-place-indicator-overlay vars)
+ (make-overlay 0 0)))
+ (add-hook 'window-configuration-change-hook
+ #'erc--keep-place-indicator-on-window-configuration-change nil t)
+ (when-let* (((memq erc-keep-place-indicator-style '(t arrow)))
+ (display (if (zerop (fringe-columns 'left))
+ `((margin left-margin) ,overlay-arrow-string)
+ '(left-fringe right-triangle
+ erc-keep-place-indicator-arrow)))
+ (bef (propertize " " 'display display)))
+ (overlay-put erc--keep-place-indicator-overlay 'before-string bef))
+ (when (memq erc-keep-place-indicator-style '(t face))
+ (overlay-put erc--keep-place-indicator-overlay 'face
+ 'erc-keep-place-indicator-line)))
+
+;;;###autoload(put 'keep-place-indicator 'erc--feature 'erc-goodies)
+(define-erc-module keep-place-indicator nil
+ "`keep-place' with a fringe arrow and/or highlighted face."
+ ((unless erc-keep-place-mode
+ (unless (memq 'keep-place erc-modules)
+ ;; FIXME use `erc-button--display-error-notice-with-keys'
+ ;; to display this message when bug#60933 is ready.
+ (erc-display-error-notice
+ nil (concat
+ "Local module `keep-place-indicator' needs module `keep-place'."
+ " Enabling now. This will affect \C-]all\C-] ERC sessions."
+ " Add `keep-place' to `erc-modules' to silence this message.")))
+ (erc-keep-place-mode +1))
+ (if (pcase erc-keep-place-indicator-buffer-type
+ ('target erc--target)
+ ('server (not erc--target))
+ ('t t))
+ (erc--keep-place-indicator-setup)
+ (setq erc-keep-place-indicator-mode nil)))
+ ((when erc--keep-place-indicator-overlay
+ (delete-overlay erc--keep-place-indicator-overlay)
+ (remove-hook 'window-configuration-change-hook
+ #'erc--keep-place-indicator-on-window-configuration-change t)
+ (kill-local-variable 'erc--keep-place-indicator-overlay)))
+ 'local)
+
+(defun erc-keep-place-move (pos)
+ "Move keep-place indicator to current line or POS.
+For use with `keep-place-indicator' module. When called
+interactively, interpret POS as an offset. Specifically, when
+POS is a raw prefix arg, like (4), move the indicator to the
+window's last line. When it's the minus sign, put it on the
+window's first line. Interpret an integer as an offset in lines."
+ (interactive
+ (progn
+ (unless erc-keep-place-indicator-mode
+ (user-error "`erc-keep-place-indicator-mode' not enabled"))
+ (list (pcase current-prefix-arg
+ ((and (pred integerp) v)
+ (save-excursion
+ (let ((inhibit-field-text-motion t))
+ (forward-line v)
+ (point))))
+ (`(,_) (1- (min erc-insert-marker (window-end))))
+ ('- (min (1- erc-insert-marker) (window-start)))))))
+ (save-excursion
+ (let ((inhibit-field-text-motion t))
+ (when pos
+ (goto-char pos))
+ (move-overlay erc--keep-place-indicator-overlay
+ (line-beginning-position)
+ (line-end-position)))))
+
+(defun erc-keep-place-goto ()
+ "Jump to keep-place indicator.
+For use with `keep-place-indicator' module."
+ (interactive
+ (prog1 nil
+ (unless erc-keep-place-indicator-mode
+ (user-error "`erc-keep-place-indicator-mode' not enabled"))
+ (deactivate-mark)
+ (push-mark)))
+ (goto-char (overlay-start erc--keep-place-indicator-overlay))
+ (recenter (truncate (* (window-height) 0.25)) t)
+ (require 'pulse)
+ (when (pulse-available-p)
+ (pulse-momentary-highlight-overlay erc--keep-place-indicator-overlay)))
+
(defun erc-keep-place (_ignored)
"Move point away from the last line in a non-selected ERC buffer."
(when (and (not (eq (window-buffer (selected-window))
@@ -168,6 +303,11 @@ Put this function on `erc-insert-post-hook' and/or `erc-send-post-hook'."
(deactivate-mark)
(goto-char (erc-beg-of-input-line))
(forward-line -1)
+ (when erc-keep-place-indicator-mode
+ (unless (or (minibuffer-window-active-p (selected-window))
+ (and (frame-visible-p (selected-frame))
+ (get-buffer-window (current-buffer) (selected-frame))))
+ (erc-keep-place-move nil)))
;; if `switch-to-buffer-preserve-window-point' is set,
;; we cannot rely on point being saved, and must commit
;; it to window-prev-buffers.
@@ -193,6 +333,7 @@ Put this function on `erc-insert-post-hook' and/or `erc-send-post-hook'."
If a command's function symbol is in this list, the typed command
does not appear in the ERC buffer after the user presses ENTER.")
+;;;###autoload(autoload 'erc-noncommands-mode "erc-goodies" nil t)
(define-erc-module noncommands nil
"This mode distinguishes non-commands.
Commands listed in `erc-insert-this' know how to display
@@ -251,6 +392,12 @@ The value `erc-interpret-controls-p' must also be t for this to work."
"ERC inverse face."
:group 'erc-faces)
+(defface erc-spoiler-face
+ '((((background light)) :foreground "DimGray" :background "DimGray")
+ (((background dark)) :foreground "LightGray" :background "LightGray"))
+ "ERC spoiler face."
+ :group 'erc-faces)
+
(defface erc-underline-face '((t :underline t))
"ERC underline face."
:group 'erc-faces)
@@ -353,19 +500,38 @@ The value `erc-interpret-controls-p' must also be t for this to work."
"ERC face."
:group 'erc-faces)
+;; https://lists.gnu.org/archive/html/emacs-erc/2021-07/msg00005.html
+(defvar erc--controls-additional-colors
+ ["#470000" "#472100" "#474700" "#324700" "#004700" "#00472c"
+ "#004747" "#002747" "#000047" "#2e0047" "#470047" "#47002a"
+ "#740000" "#743a00" "#747400" "#517400" "#007400" "#007449"
+ "#007474" "#004074" "#000074" "#4b0074" "#740074" "#740045"
+ "#b50000" "#b56300" "#b5b500" "#7db500" "#00b500" "#00b571"
+ "#00b5b5" "#0063b5" "#0000b5" "#7500b5" "#b500b5" "#b5006b"
+ "#ff0000" "#ff8c00" "#ffff00" "#b2ff00" "#00ff00" "#00ffa0"
+ "#00ffff" "#008cff" "#0000ff" "#a500ff" "#ff00ff" "#ff0098"
+ "#ff5959" "#ffb459" "#ffff71" "#cfff60" "#6fff6f" "#65ffc9"
+ "#6dffff" "#59b4ff" "#5959ff" "#c459ff" "#ff66ff" "#ff59bc"
+ "#ff9c9c" "#ffd39c" "#ffff9c" "#e2ff9c" "#9cff9c" "#9cffdb"
+ "#9cffff" "#9cd3ff" "#9c9cff" "#dc9cff" "#ff9cff" "#ff94d3"
+ "#000000" "#131313" "#282828" "#363636" "#4d4d4d" "#656565"
+ "#818181" "#9f9f9f" "#bcbcbc" "#e2e2e2" "#ffffff"])
+
(defun erc-get-bg-color-face (n)
"Fetches the right face for background color N (0-15)."
(if (stringp n) (setq n (string-to-number n)))
(if (not (numberp n))
(prog1 'default
(erc-error "erc-get-bg-color-face: n is NaN: %S" n))
- (when (> n 16)
+ (when (> n 99)
(erc-log (format " Wrong color: %s" n))
(setq n (mod n 16)))
(cond
((and (>= n 0) (< n 16))
(intern (concat "bg:erc-color-face" (number-to-string n))))
- (t (erc-log (format " Wrong color: %s" n)) 'default))))
+ ((< 15 n 99)
+ (list :background (aref erc--controls-additional-colors (- n 16))))
+ (t (erc-log (format " Wrong color: %s" n)) '(default)))))
(defun erc-get-fg-color-face (n)
"Fetches the right face for foreground color N (0-15)."
@@ -373,20 +539,44 @@ The value `erc-interpret-controls-p' must also be t for this to work."
(if (not (numberp n))
(prog1 'default
(erc-error "erc-get-fg-color-face: n is NaN: %S" n))
- (when (> n 16)
+ (when (> n 99)
(erc-log (format " Wrong color: %s" n))
(setq n (mod n 16)))
(cond
((and (>= n 0) (< n 16))
(intern (concat "fg:erc-color-face" (number-to-string n))))
- (t (erc-log (format " Wrong color: %s" n)) 'default))))
+ ((< 15 n 99)
+ (list :foreground (aref erc--controls-additional-colors (- n 16))))
+ (t (erc-log (format " Wrong color: %s" n)) '(default)))))
+;;;###autoload(autoload 'erc-irccontrols-mode "erc-goodies" nil t)
(define-erc-module irccontrols nil
"This mode enables the interpretation of IRC control chars."
((add-hook 'erc-insert-modify-hook #'erc-controls-highlight)
- (add-hook 'erc-send-modify-hook #'erc-controls-highlight))
+ (add-hook 'erc-send-modify-hook #'erc-controls-highlight)
+ (erc--modify-local-map t "C-c C-c" #'erc-toggle-interpret-controls))
((remove-hook 'erc-insert-modify-hook #'erc-controls-highlight)
- (remove-hook 'erc-send-modify-hook #'erc-controls-highlight)))
+ (remove-hook 'erc-send-modify-hook #'erc-controls-highlight)
+ (erc--modify-local-map nil "C-c C-c" #'erc-toggle-interpret-controls)))
+
+;; These patterns were moved here to circumvent compiler warnings but
+;; otherwise translated verbatim from their original string-literal
+;; definitions (minus a small bug fix to satisfy newly added tests).
+(defvar erc-controls-remove-regexp
+ (rx (or ?\C-b ?\C-\] ?\C-_ ?\C-v ?\C-g ?\C-o
+ (: ?\C-c (? (any "0-9")) (? (any "0-9"))
+ (? (group ?, (any "0-9") (? (any "0-9")))))))
+ "Regular expression matching control characters to remove.")
+
+;; Before the change to `rx', group 3 used to be a sibling of group 2.
+;; This was assumed to be a bug. A few minor simplifications were
+;; also performed. If incorrect, please admonish.
+(defvar erc-controls-highlight-regexp
+ (rx (group (or ?\C-b ?\C-\] ?\C-v ?\C-_ ?\C-g ?\C-o
+ (: ?\C-c (? (group (** 1 2 (any "0-9")))
+ (? (group ?, (group (** 1 2 (any "0-9")))))))))
+ (group (* (not (any ?\C-b ?\C-c ?\C-g ?\n ?\C-o ?\C-v ?\C-\] ?\C-_)))))
+ "Regular expression matching control chars to highlight.")
(defun erc-controls-interpret (str)
"Return a copy of STR after dealing with IRC control characters.
@@ -440,6 +630,7 @@ See `erc-interpret-controls-p' and `erc-interpret-mirc-color' for options."
s))
(t s)))))
+;;;###autoload
(defun erc-controls-strip (str)
"Return a copy of STR with all IRC control characters removed."
(when str
@@ -448,16 +639,6 @@ See `erc-interpret-controls-p' and `erc-interpret-mirc-color' for options."
(setq s (replace-match "" nil nil s)))
s)))
-(defvar erc-controls-remove-regexp
- "\C-b\\|\C-]\\|\C-_\\|\C-v\\|\C-g\\|\C-o\\|\C-c[0-9]?[0-9]?\\(,[0-9][0-9]?\\)?"
- "Regular expression which matches control characters to remove.")
-
-(defvar erc-controls-highlight-regexp
- (concat "\\(\C-b\\|\C-]\\|\C-v\\|\C-_\\|\C-g\\|\C-o\\|"
- "\C-c\\([0-9][0-9]?\\)?\\(,\\([0-9][0-9]?\\)\\)?\\)"
- "\\([^\C-b\C-]\C-v\C-_\C-c\C-g\C-o\n]*\\)")
- "Regular expression which matches control chars and the text to highlight.")
-
(defun erc-controls-highlight ()
"Highlight IRC control chars in the buffer.
This is useful for `erc-insert-modify-hook' and `erc-send-modify-hook'.
@@ -514,6 +695,13 @@ Also see `erc-interpret-controls-p' and `erc-interpret-mirc-color'."
"Prepend properties from IRC control characters between FROM and TO.
If optional argument STR is provided, apply to STR, otherwise prepend properties
to a region in the current buffer."
+ (if (and fg bg (equal fg bg))
+ (progn
+ (setq fg 'erc-spoiler-face
+ bg nil)
+ (put-text-property from to 'mouse-face 'erc-inverse-face str))
+ (when fg (setq fg (erc-get-fg-color-face fg)))
+ (when bg (setq bg (erc-get-bg-color-face bg))))
(font-lock-prepend-text-property
from
to
@@ -531,10 +719,10 @@ to a region in the current buffer."
'(erc-underline-face)
nil)
(if fg
- (list (erc-get-fg-color-face fg))
+ (list fg)
nil)
(if bg
- (list (erc-get-bg-color-face bg))
+ (list bg)
nil))
str)
str)
@@ -553,6 +741,7 @@ Else interpretation is turned off."
(if erc-interpret-controls-p "ON" "OFF")))
;; Smiley
+;;;###autoload(autoload 'erc-smiley-mode "erc-goodies" nil t)
(define-erc-module smiley nil
"This mode translates text-smileys such as :-) into pictures.
This requires the function `smiley-region', which is defined in
@@ -569,6 +758,7 @@ This function should be used with `erc-insert-modify-hook'."
(smiley-region (point-min) (point-max))))
;; Unmorse
+;;;###autoload(autoload 'erc-unmorse-mode "erc-goodies" nil t)
(define-erc-module unmorse nil
"This mode causes morse code in the current channel to be unmorsed."
((add-hook 'erc-insert-modify-hook #'erc-unmorse))
@@ -611,3 +801,7 @@ servers. If called from a program, PROC specifies the server process."
(provide 'erc-goodies)
;;; erc-goodies.el ends here
+
+;; Local Variables:
+;; generated-autoload-file: "erc-loaddefs.el"
+;; End:
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el
index 6699afe36a0..612814ac6da 100644
--- a/lisp/erc/erc-ibuffer.el
+++ b/lisp/erc/erc-ibuffer.el
@@ -32,6 +32,7 @@
(require 'ibuffer)
(require 'ibuf-ext)
(require 'erc)
+(require 'erc-goodies) ; `erc-controls-interpret'
(defgroup erc-ibuffer nil
"The Ibuffer group for ERC."
diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el
index 6223cd3d06f..526afd32249 100644
--- a/lisp/erc/erc-imenu.el
+++ b/lisp/erc/erc-imenu.el
@@ -52,7 +52,8 @@ Don't rely on this function, read it first!"
(forward-line 1)
(looking-at " "))
(forward-line 1))
- (end-of-line) (point)))))
+ (end-of-line) (point))))
+ (inhibit-read-only t))
(with-temp-buffer
(insert str)
(goto-char (point-min))
@@ -124,6 +125,26 @@ Don't rely on this function, read it first!"
index-alist))
index-alist))
+(defvar-local erc-imenu--create-index-function nil
+ "Previous local value of `imenu-create-index-function', if any.")
+
+(defun erc-imenu-setup ()
+ "Wire up support for Imenu in an ERC buffer."
+ (when (and (local-variable-p 'imenu-create-index-function)
+ imenu-create-index-function)
+ (setq erc-imenu--create-index-function imenu-create-index-function))
+ (setq imenu-create-index-function #'erc-create-imenu-index))
+
+;;;###autoload(autoload 'erc-imenu-mode "erc-imenu" nil t)
+(define-erc-module imenu nil
+ "Simple Imenu integration for ERC."
+ ((add-hook 'erc-mode-hook #'erc-imenu-setup))
+ ((remove-hook 'erc-mode-hook #'erc-imenu-setup)
+ (erc-with-all-buffers-of-server erc-server-process nil
+ (when erc-imenu--create-index-function
+ (setq imenu-create-index-function erc-imenu--create-index-function)
+ (kill-local-variable 'erc-imenu--create-index-function)))))
+
(provide 'erc-imenu)
;;; erc-imenu.el ends here
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 2cb9031640d..2b58a7c56ed 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -198,6 +198,7 @@ This should ideally, be a \"catch-all\" coding system, like
The function should take one argument, which is the text to filter."
:type '(choice (function "Function")
+ (function-item erc-stamp-prefix-log-filter)
(const :tag "No filtering" nil)))
@@ -230,7 +231,8 @@ also be a predicate function. To only log when you are not set away, use:
;; append, so that 'erc-initialize-log-marker runs first
(add-hook 'erc-connect-pre-hook #'erc-log-setup-logging 'append)
(dolist (buffer (erc-buffer-list))
- (erc-log-setup-logging buffer)))
+ (erc-log-setup-logging buffer))
+ (erc--modify-local-map t "C-c C-l" #'erc-save-buffer-in-logs))
;; disable
((remove-hook 'erc-insert-post-hook #'erc-save-buffer-in-logs)
(remove-hook 'erc-send-post-hook #'erc-save-buffer-in-logs)
@@ -241,9 +243,8 @@ also be a predicate function. To only log when you are not set away, use:
(remove-hook 'erc-part-hook #'erc-conditional-save-buffer)
(remove-hook 'erc-connect-pre-hook #'erc-log-setup-logging)
(dolist (buffer (erc-buffer-list))
- (erc-log-disable-logging buffer))))
-
-(define-key erc-mode-map "\C-c\C-l" #'erc-save-buffer-in-logs)
+ (erc-log-disable-logging buffer))
+ (erc--modify-local-map nil "C-c C-l" #'erc-save-buffer-in-logs)))
;;; functionality referenced from erc.el
(defun erc-log-setup-logging (buffer)
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index 52ee5c855f3..82b821503a8 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -52,8 +52,13 @@ they are hidden or highlighted. This is controlled via the variables
`erc-current-nick-highlight-type'. For all these highlighting types,
you can decide whether the entire message or only the sending nick is
highlighted."
- ((add-hook 'erc-insert-modify-hook #'erc-match-message 'append))
- ((remove-hook 'erc-insert-modify-hook #'erc-match-message)))
+ ((add-hook 'erc-insert-modify-hook #'erc-match-message 'append)
+ (add-hook 'erc-mode-hook #'erc-match--modify-invisibility-spec)
+ (erc--modify-local-map t "C-c C-k" #'erc-go-to-log-matches-buffer))
+ ((remove-hook 'erc-insert-modify-hook #'erc-match-message)
+ (remove-hook 'erc-mode-hook #'erc-match--modify-invisibility-spec)
+ (erc-match--modify-invisibility-spec)
+ (erc--modify-local-map nil "C-c C-k" #'erc-go-to-log-matches-buffer)))
;; Remaining customizations
@@ -647,15 +652,22 @@ See `erc-log-match-format'."
(get-buffer (car buffer-cons))))))
(switch-to-buffer buffer-name)))
-(define-key erc-mode-map "\C-c\C-k" #'erc-go-to-log-matches-buffer)
+(defvar-local erc-match--hide-fools-offset-bounds nil)
(defun erc-hide-fools (match-type _nickuserhost _message)
"Hide foolish comments.
This function should be called from `erc-text-matched-hook'."
- (when (eq match-type 'fool)
- (erc-put-text-properties (point-min) (point-max)
- '(invisible intangible)
- (current-buffer))))
+ (when (eq match-type 'fool)
+ (if erc-match--hide-fools-offset-bounds
+ (let ((beg (point-min))
+ (end (point-max)))
+ (save-restriction
+ (widen)
+ (put-text-property (1- beg) (1- end) 'invisible 'erc-match)))
+ ;; The docs say `intangible' is deprecated, but this has been
+ ;; like this for ages. Should verify unneeded and remove if so.
+ (erc-put-text-properties (point-min) (point-max)
+ '(invisible intangible)))))
(defun erc-beep-on-match (match-type _nickuserhost _message)
"Beep when text matches.
@@ -663,6 +675,13 @@ This function is meant to be called from `erc-text-matched-hook'."
(when (member match-type erc-beep-match-types)
(beep)))
+(defun erc-match--modify-invisibility-spec ()
+ "Add an ellipsis property to the local spec."
+ (if erc-match-mode
+ (add-to-invisibility-spec 'erc-match)
+ (erc-with-all-buffers-of-server nil nil
+ (remove-from-invisibility-spec 'erc-match))))
+
(provide 'erc-match)
;;; erc-match.el ends here
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index 95fd8990c99..dd481032e7e 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -67,6 +67,9 @@
(declare-function erc-server-process-alive "erc-backend" (&optional buffer))
(declare-function erc-set-active-buffer "erc" (buffer))
+(declare-function erc-button--display-error-notice-with-keys
+ (parsed &rest strings))
+
;; Variables
(defgroup erc-networks nil
@@ -1292,7 +1295,6 @@ shutting down the connection."
erc-server-announced-name "\" in `erc-networks-alist'"
" or consider calling `erc-tls' with the keyword `:id'."
" See Info:\"(erc) Network Identifier\" for more.")))
- (require 'info)
(erc-display-error-notice parsed m)
(if erc-networks--allow-unknown-network
(progn
@@ -1311,12 +1313,11 @@ shutting down the connection."
Copy source (prefix) from MOTD-ish message as a last resort."
;; The 004 handler never ran; see 2004-03-10 Diane Murray in change log
(unless erc-server-announced-name
- (setq erc-server-announced-name (erc-response.sender parsed))
- (erc-display-error-notice
- parsed (concat "Failed to determine server name. Using \""
- erc-server-announced-name "\" instead."
- " If this was unexpected, consider reporting it via "
- (substitute-command-keys "\\[erc-bug]") ".")))
+ (require 'erc-button)
+ (erc-button--display-error-notice-with-keys
+ parsed "Failed to determine server name. Using \""
+ (setq erc-server-announced-name (erc-response.sender parsed)) "\" instead"
+ ". If this was unexpected, consider reporting it via \\[erc-bug]" "."))
nil)
(defun erc-unset-network-name (_nick _ip _reason)
@@ -1494,9 +1495,9 @@ to be a false alarm. If `erc-reuse-buffers' is nil, let
(memq (erc--target-symbol erc--target)
erc-networks--bouncer-targets)))
proc)
- (let ((m (concat "Unexpected state detected. Please report via "
- (substitute-command-keys "\\[erc-bug]") ".")))
- (erc-display-error-notice parsed m))))
+ (require 'erc-button)
+ (erc-button--display-error-notice-with-keys
+ parsed "Unexpected state detected. Please report via \\[erc-bug].")))
;; For now, retain compatibility with erc-server-NNN-functions.
(or (erc-networks--ensure-announced proc parsed)
@@ -1514,7 +1515,6 @@ to be a false alarm. If `erc-reuse-buffers' is nil, let
"Emit warning when the `networks' module hasn't been loaded.
Ideally, do so upon opening the network process."
(unless (or erc--target erc-networks-mode)
- (require 'info nil t)
(let ((m (concat "Required module `networks' not loaded. If this "
" was unexpected, please add it to `erc-modules'.")))
;; Assume the server buffer has been marked as active.
diff --git a/lisp/erc/erc-page.el b/lisp/erc/erc-page.el
index 308b3784ca5..a94678e5132 100644
--- a/lisp/erc/erc-page.el
+++ b/lisp/erc/erc-page.el
@@ -30,10 +30,13 @@
(require 'erc)
+(declare-function erc-controls-interpret "erc-goodies" (str))
+
(defgroup erc-page nil
"React to CTCP PAGE messages."
:group 'erc)
+;;;###autoload(put 'ctcp-page 'erc--module 'page)
;;;###autoload(autoload 'erc-page-mode "erc-page")
(define-erc-module page ctcp-page
"Process CTCP PAGE requests from IRC."
@@ -69,6 +72,7 @@ SENDER and MSG, so that might be easier to use."
This will call `erc-page-function', if defined, or it will just print
a message and `beep'. In addition to that, the page message is also
inserted into the server buffer."
+ (require 'erc-goodies) ; for `erc-controls-interpret'
(when (and erc-page-mode
(string-match "PAGE\\(\\s-+.*\\)?$" msg))
(let* ((m (match-string 1 msg))
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index 0bce856018c..7eb7431fb91 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -56,6 +56,8 @@ add this string to nicks completed."
"If t, order nickname completions with the most recent speakers first."
:type 'boolean)
+;;;###autoload(put 'Completion 'erc--module 'completion)
+;;;###autoload(put 'pcomplete 'erc--module 'completion)
;;;###autoload(autoload 'erc-completion-mode "erc-pcomplete" nil t)
(define-erc-module pcomplete Completion
"In ERC Completion mode, the TAB key does completion whenever possible."
diff --git a/lisp/erc/erc-sasl.el b/lisp/erc/erc-sasl.el
index 9265691c2d7..bfe17285a68 100644
--- a/lisp/erc/erc-sasl.el
+++ b/lisp/erc/erc-sasl.el
@@ -369,9 +369,12 @@ This doesn't solicit or validate a suite of supported mechanisms."
data (sasl-step-data step))
(when (string= data "")
(setq data nil))
- (when data
- (setq data (erc--unfun (base64-encode-string data t))))
- (erc-server-send (concat "AUTHENTICATE " (or data "+"))))))
+ (setq data (if data (erc--unfun (base64-encode-string data t)) "+"))
+ (while (not (string-empty-p data))
+ (let ((end (min 400 (length data))))
+ ;; For now, assume this is unlikely to block
+ (erc-server-send (concat "AUTHENTICATE " (substring data 0 end)))
+ (setq data (concat (substring data end) (and (= end 400) "+"))))))))
(defun erc-sasl--destroy (proc)
(run-hook-with-args 'erc-quit-hook proc)
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 2e6959cc3f0..5408ba405db 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -102,6 +102,7 @@ You can also use \\[erc-nickserv-identify-mode] to change modes."
(when (featurep 'erc-services)
(erc-nickserv-identify-mode val))))
+;;;###autoload(put 'nickserv 'erc--module 'services)
;;;###autoload(autoload 'erc-services-mode "erc-services" nil t)
(define-erc-module services nickserv
"This mode automates communication with services."
diff --git a/lisp/erc/erc-sound.el b/lisp/erc/erc-sound.el
index 0abdbfd959c..9da9202f0cf 100644
--- a/lisp/erc/erc-sound.el
+++ b/lisp/erc/erc-sound.el
@@ -47,6 +47,7 @@
(require 'erc)
+;;;###autoload(put 'ctcp-sound 'erc--module 'sound)
;;;###autoload(autoload 'erc-sound-mode "erc-sound")
(define-erc-module sound ctcp-sound
"In ERC sound mode, the client will respond to CTCP SOUND requests
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index 5fca14e2365..a9443e0ea17 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -36,6 +36,7 @@
;;; Code:
(require 'erc)
+(require 'erc-goodies)
(require 'speedbar)
(condition-case nil (require 'dframe) (error nil))
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index 0aa1590f801..61f289a8753 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -55,6 +55,9 @@ If nil, timestamping is turned off."
:type '(choice (const nil)
(string)))
+;; FIXME remove surrounding whitespace from default value and have
+;; `erc-insert-timestamp-left-and-right' add it before insertion.
+
(defcustom erc-timestamp-format-left "\n[%a %b %e %Y]\n"
"If set to a string, messages will be timestamped.
This string is processed using `format-time-string'.
@@ -68,7 +71,7 @@ If nil, timestamping is turned off."
:type '(choice (const nil)
(string)))
-(defcustom erc-timestamp-format-right " [%H:%M]"
+(defcustom erc-timestamp-format-right nil
"If set to a string, messages will be timestamped.
This string is processed using `format-time-string'.
Good examples are \"%T\" and \"%H:%M\".
@@ -77,9 +80,14 @@ This timestamp is used for timestamps on the right side of the
screen when `erc-insert-timestamp-function' is set to
`erc-insert-timestamp-left-and-right'.
-If nil, timestamping is turned off."
+Unlike `erc-timestamp-format' and `erc-timestamp-format-left', if
+the value of this option is nil, it falls back to using the value
+of `erc-timestamp-format'."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
:type '(choice (const nil)
(string)))
+(make-obsolete-variable 'erc-timestamp-format-right
+ 'erc-timestamp-format "30.1")
(defcustom erc-insert-timestamp-function 'erc-insert-timestamp-left-and-right
"Function to use to insert timestamps.
@@ -147,39 +155,67 @@ from entering them and instead jump over them."
"ERC timestamp face."
:group 'erc-faces)
+;; New libraries should only autoload the minor mode for a module's
+;; preferred name (rather than its alias).
+
+;;;###autoload(put 'timestamp 'erc--module 'stamp)
;;;###autoload(autoload 'erc-timestamp-mode "erc-stamp" nil t)
(define-erc-module stamp timestamp
"This mode timestamps messages in the channel buffers."
((add-hook 'erc-mode-hook #'erc-munge-invisibility-spec)
(add-hook 'erc-insert-modify-hook #'erc-add-timestamp t)
- (add-hook 'erc-send-modify-hook #'erc-add-timestamp t))
+ (add-hook 'erc-send-modify-hook #'erc-add-timestamp t)
+ (add-hook 'erc-mode-hook #'erc-stamp--recover-on-reconnect))
((remove-hook 'erc-mode-hook #'erc-munge-invisibility-spec)
(remove-hook 'erc-insert-modify-hook #'erc-add-timestamp)
- (remove-hook 'erc-send-modify-hook #'erc-add-timestamp)))
+ (remove-hook 'erc-send-modify-hook #'erc-add-timestamp)
+ (remove-hook 'erc-mode-hook #'erc-stamp--recover-on-reconnect)))
+
+(defun erc-stamp--recover-on-reconnect ()
+ (when-let ((priors (or erc--server-reconnecting erc--target-priors)))
+ (dolist (var '(erc-timestamp-last-inserted
+ erc-timestamp-last-inserted-left
+ erc-timestamp-last-inserted-right))
+ (when-let (existing (alist-get var priors))
+ (set var existing)))))
+
+(defvar erc-stamp--current-time nil
+ "The current time when calling `erc-insert-timestamp-function'.
+Specifically, this is the same lisp time object used to create
+the stamp passed to `erc-insert-timestamp-function'.")
+
+(cl-defgeneric erc-stamp--current-time ()
+ "Return a lisp time object to associate with an IRC message.
+This becomes the message's `erc-timestamp' text property, which
+may not be unique, `equal'-wise."
+ (erc-current-time))
+
+(cl-defmethod erc-stamp--current-time :around ()
+ (or erc-stamp--current-time (cl-call-next-method)))
(defun erc-add-timestamp ()
"Add timestamp and text-properties to message.
This function is meant to be called from `erc-insert-modify-hook'
or `erc-send-modify-hook'."
- (unless (get-text-property (point) 'invisible)
- (let ((ct (current-time)))
- (if (fboundp erc-insert-timestamp-function)
- (funcall erc-insert-timestamp-function
- (erc-format-timestamp ct erc-timestamp-format))
- (error "Timestamp function unbound"))
+ (unless (get-text-property (point-min) 'invisible)
+ (let* ((ct (erc-stamp--current-time))
+ (erc-stamp--current-time ct))
+ (funcall erc-insert-timestamp-function
+ (erc-format-timestamp ct erc-timestamp-format))
+ ;; FIXME this will error when advice has been applied.
(when (and (fboundp erc-insert-away-timestamp-function)
erc-away-timestamp-format
(erc-away-time)
(not erc-timestamp-format))
(funcall erc-insert-away-timestamp-function
(erc-format-timestamp ct erc-away-timestamp-format)))
- (add-text-properties (point-min) (point-max)
+ (add-text-properties (point-min) (1- (point-max))
;; It's important for the function to
;; be different on different entries (bug#22700).
(list 'cursor-sensor-functions
- (list (lambda (_window _before dir)
- (erc-echo-timestamp dir ct))))))))
+ ;; Regions are no longer contiguous ^
+ '(erc--echo-ts-csf) 'erc-timestamp ct)))))
(defvar-local erc-timestamp-last-window-width nil
"The width of the last window that showed the current buffer.
@@ -217,14 +253,113 @@ the correct column."
(integer :tag "Column number")
(const :tag "Unspecified" nil)))
-(defcustom erc-timestamp-use-align-to (eq window-system 'x)
+(defcustom erc-timestamp-use-align-to (and (display-graphic-p) t)
"If non-nil, use the :align-to display property to align the stamp.
This gives better results when variable-width characters (like
Asian language characters and math symbols) precede a timestamp.
-A side effect of enabling this is that there will only be one
-space before a right timestamp in any saved logs."
- :type 'boolean)
+This option only matters when `erc-insert-timestamp-function' is
+set to `erc-insert-timestamp-right' or that option's default,
+`erc-insert-timestamp-left-and-right'. If the value is a
+positive integer, alignment occurs that many columns from the
+right edge. If the value is `margin', the stamp appears in the
+right margin when visible.
+
+Enabling this option produces a side effect in that stamps aren't
+indented in saved logs. When its value is an integer, this
+option adds a space after the end of a message if the stamp
+doesn't already start with one. And when its value is t, it adds
+a single space, unconditionally. And while this option never
+adds a space when its value is `margin', ERC does offer a
+workaround in `erc-stamp-prefix-log-filter', which strips
+trailing stamps from messages and puts them before every line."
+ :type '(choice boolean integer (const margin))
+ :package-version '(ERC . "5.6")) ; FIXME sync on release
+
+(defcustom erc-stamp-right-margin-width nil
+ "Width in columns of the right margin.
+When this option is nil, pretend its value is one column greater
+than the `string-width' of the formatted `erc-timestamp-format'.
+This option only matters when `erc-timestamp-use-align-to' is set
+to `margin'."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
+ :type '(choice (const nil) integer))
+
+(defun erc-stamp--display-margin-force (orig &rest r)
+ (let ((erc-timestamp-use-align-to 'margin))
+ (apply orig r)))
+
+(defun erc-stamp--adjust-right-margin (cols)
+ "Adjust right margin by COLS.
+When COLS is zero, reset width to `erc-stamp-right-margin-width'
+or one col more than the `string-width' of
+`erc-timestamp-format'."
+ (let ((width
+ (if (zerop cols)
+ (or erc-stamp-right-margin-width
+ (1+ (string-width (or erc-timestamp-last-inserted-right
+ (erc-format-timestamp
+ (current-time)
+ erc-timestamp-format)))))
+ (+ right-margin-width cols))))
+ (setq right-margin-width width)
+ (when (eq (current-buffer) (window-buffer))
+ (set-window-margins nil left-margin-width width))))
+
+;;;###autoload
+(defun erc-stamp-prefix-log-filter (text)
+ "Prefix every message in the buffer with a stamp.
+Remove trailing stamps as well. For now, hard code the format to
+\"ZNC\"-log style, which is [HH:MM:SS]. Expect to be used as a
+`erc-log-filter-function' when `erc-timestamp-use-align-to' is
+non-nil."
+ (insert text)
+ (goto-char (point-min))
+ (while
+ (progn
+ (when-let* (((< (point) (pos-eol)))
+ (end (1- (pos-eol)))
+ ((eq 'erc-timestamp (field-at-pos end)))
+ (beg (field-beginning end))
+ ;; Skip a line that's just a timestamp.
+ ((> beg (point))))
+ (delete-region beg (1+ end)))
+ (when-let (time (get-text-property (point) 'erc-timestamp))
+ (insert (format-time-string "[%H:%M:%S] " time)))
+ (zerop (forward-line))))
+ "")
+
+(declare-function erc--remove-text-properties "erc" (string))
+
+;; If people want to use this directly, we can convert it into
+;; a local module.
+(define-minor-mode erc-stamp--display-margin-mode
+ "Internal minor mode for built-in modules integrating with `stamp'.
+It binds `erc-timestamp-use-align-to' to `margin' around calls to
+`erc-insert-timestamp-function' in the current buffer, and sets
+the right window margin to `erc-stamp-right-margin-width'. It
+also arranges to remove most text properties when a user kills
+message text so that stamps will be visible when yanked."
+ :interactive nil
+ (if erc-stamp--display-margin-mode
+ (progn
+ (setq fringes-outside-margins t)
+ (when (eq (current-buffer) (window-buffer))
+ (set-window-buffer (selected-window) (current-buffer)))
+ (erc-stamp--adjust-right-margin 0)
+ (add-function :filter-return (local 'filter-buffer-substring-function)
+ #'erc--remove-text-properties)
+ (add-function :around (local 'erc-insert-timestamp-function)
+ #'erc-stamp--display-margin-force))
+ (remove-function (local 'filter-buffer-substring-function)
+ #'erc--remove-text-properties)
+ (remove-function (local 'erc-insert-timestamp-function)
+ #'erc-stamp--display-margin-force)
+ (kill-local-variable 'right-margin-width)
+ (kill-local-variable 'fringes-outside-margins)
+ (when (eq (current-buffer) (window-buffer))
+ (set-window-margins nil left-margin-width nil)
+ (set-window-buffer (selected-window) (current-buffer)))))
(defun erc-insert-timestamp-left (string)
"Insert timestamps at the beginning of the line."
@@ -243,6 +378,7 @@ space before a right timestamp in any saved logs."
If `erc-timestamp-use-align-to' is t, use the :align-to display
property to get to the POSth column."
+ (declare (obsolete "inlined and removed from client code path" "30.1"))
(if (not erc-timestamp-use-align-to)
(indent-to pos)
(insert " ")
@@ -253,6 +389,8 @@ property to get to the POSth column."
;; Silence byte-compiler
(defvar erc-fill-column)
+(defvar erc-stamp--inherited-props '(line-prefix wrap-prefix))
+
(defun erc-insert-timestamp-right (string)
"Insert timestamp on the right side of the screen.
STRING is the timestamp to insert. This function is a possible
@@ -304,30 +442,57 @@ printed just after each line's text (no alignment)."
;; some margin of error if what is displayed on the line differs
;; from the number of characters on the line.
(setq col (+ col (ceiling (/ (- col (- (point) (line-beginning-position))) 1.6))))
- (if (< col pos)
- (erc-insert-aligned string pos)
- (newline)
- (indent-to pos)
- (setq from (point))
- (insert string))
+ ;; For compatibility reasons, the `erc-timestamp' field includes
+ ;; intervening white space unless a hard break is warranted.
+ (pcase erc-timestamp-use-align-to
+ ((and 't (guard (< col pos)))
+ (insert " ")
+ (put-text-property from (point) 'display `(space :align-to ,pos)))
+ ((pred integerp) ; (cl-type (integer 0 *))
+ (insert " ")
+ (when (eq ?\s (aref string 0))
+ (setq string (substring string 1)))
+ (let ((s (+ erc-timestamp-use-align-to (string-width string))))
+ (put-text-property from (point) 'display
+ `(space :align-to (- right ,s)))))
+ ('margin
+ (put-text-property 0 (length string)
+ 'display `((margin right-margin) ,string)
+ string))
+ ((guard (>= col pos)) (newline) (indent-to pos) (setq from (point)))
+ (_ (indent-to pos)))
+ (insert string)
+ (dolist (p erc-stamp--inherited-props)
+ (when-let ((v (get-text-property (1- from) p)))
+ (put-text-property from (point) p v)))
(erc-put-text-property from (point) 'field 'erc-timestamp)
(erc-put-text-property from (point) 'rear-nonsticky t)
(when erc-timestamp-intangible
(erc-put-text-property from (1+ (point)) 'cursor-intangible t)))))
-(defun erc-insert-timestamp-left-and-right (_string)
- "This is another function that can be used with `erc-insert-timestamp-function'.
-If the date is changed, it will print a blank line, the date, and
-another blank line. If the time is changed, it will then print
-it off to the right."
- (let* ((ct (current-time))
- (ts-left (erc-format-timestamp ct erc-timestamp-format-left))
- (ts-right (erc-format-timestamp ct erc-timestamp-format-right)))
+(defvar erc-stamp--insert-date-function #'insert
+ "Function to insert left \"left-right date\" stamp.
+A local module might use this to modify text properties,
+`insert-before-markers' or renarrow the region after insertion.")
+
+(defun erc-insert-timestamp-left-and-right (string)
+ "Insert a stamp on either side when it changes.
+When the deprecated option `erc-timestamp-format-right' is nil,
+use STRING, which originates from `erc-timestamp-format', for the
+right-hand stamp. Use `erc-timestamp-format-left' for the
+left-hand stamp and expect it to change less frequently."
+ (let* ((ct (or erc-stamp--current-time (erc-stamp--current-time)))
+ (ts-left (erc-format-timestamp ct erc-timestamp-format-left))
+ (ts-right (with-suppressed-warnings
+ ((obsolete erc-timestamp-format-right))
+ (if erc-timestamp-format-right
+ (erc-format-timestamp ct erc-timestamp-format-right)
+ string))))
;; insert left timestamp
(unless (string-equal ts-left erc-timestamp-last-inserted-left)
(goto-char (point-min))
(erc-put-text-property 0 (length ts-left) 'field 'erc-timestamp ts-left)
- (insert ts-left)
+ (funcall erc-stamp--insert-date-function ts-left)
(setq erc-timestamp-last-inserted-left ts-left))
;; insert right timestamp
(let ((erc-timestamp-only-if-changed-flag t)
@@ -336,12 +501,13 @@ it off to the right."
(setq erc-timestamp-last-inserted-right ts-right))))
;; for testing: (setq erc-timestamp-only-if-changed-flag nil)
+(defvar erc-stamp--tz nil)
(defun erc-format-timestamp (time format)
"Return TIME formatted as string according to FORMAT.
Return the empty string if FORMAT is nil."
(if format
- (let ((ts (format-time-string format time)))
+ (let ((ts (format-time-string format time erc-stamp--tz)))
(erc-put-text-property 0 (length ts)
'font-lock-face 'erc-timestamp-face ts)
(erc-put-text-property 0 (length ts) 'invisible 'timestamp ts)
@@ -400,11 +566,16 @@ enabled when the message was inserted."
(defun erc-echo-timestamp (dir stamp)
"Print timestamp text-property of an IRC message."
- (when (and erc-echo-timestamps (eq 'entered dir))
+ ;; Could also pass an &optional `zone' arg to `format-time-string'.
+ (interactive (list 'entered (get-text-property (point) 'erc-timestamp)))
+ (when (eq 'entered dir)
(when stamp
(message "%s" (format-time-string erc-echo-timestamp-format
stamp)))))
+(defun erc--echo-ts-csf (_window _before dir)
+ (erc-echo-timestamp dir (get-text-property (point) 'erc-timestamp)))
+
(provide 'erc-stamp)
;;; erc-stamp.el ends here
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index 7fd7b53602e..e060b7039bd 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -921,7 +921,11 @@ is relative to `erc-track-switch-direction'."
(unless (eq major-mode 'erc-mode)
(setq erc-track-last-non-erc-buffer (current-buffer)))
;; and jump to the next active channel
- (funcall fun (erc-track-get-active-buffer arg)))
+ (if-let ((buf (erc-track-get-active-buffer arg))
+ ((buffer-live-p buf)))
+ (funcall fun buf)
+ (erc-modified-channels-update)
+ (erc-track--switch-buffer fun arg)))
;; if no active channels, switch back to what we were doing before
((and erc-track-last-non-erc-buffer
erc-track-switch-from-erc
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 69bdb5d71b1..284990e2d43 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -12,8 +12,8 @@
;; David Edmondson (dme@dme.org)
;; Michael Olson (mwolson@gnu.org)
;; Kelvin White (kwhite@gnu.org)
-;; Version: 5.5
-;; Package-Requires: ((emacs "27.1") (compat "29.1.3.4"))
+;; Version: 5.6-git
+;; Package-Requires: ((emacs "27.1") (compat "29.1.4.1"))
;; Keywords: IRC, chat, client, Internet
;; URL: https://www.gnu.org/software/emacs/erc.html
@@ -58,20 +58,16 @@
;;; Code:
-(load "erc-loaddefs" 'noerror 'nomessage)
+(eval-and-compile (load "erc-loaddefs" 'noerror 'nomessage))
(require 'erc-networks)
(require 'erc-backend)
(require 'cl-lib)
(require 'format-spec)
-(require 'pp)
-(require 'thingatpt)
(require 'auth-source)
-(require 'time-date)
-(require 'iso8601)
-(eval-when-compile (require 'subr-x) (require 'url-parse))
+(eval-when-compile (require 'subr-x))
-(defconst erc-version "5.5"
+(defconst erc-version "5.6-git"
"This version of ERC.")
(defvar erc-official-location
@@ -87,7 +83,8 @@
("5.3" . "23.1")
("5.4" . "28.1")
("5.4.1" . "29.1")
- ("5.5" . "29.1")))
+ ("5.5" . "29.1")
+ ("5.6" . "30.1")))
(defgroup erc nil
"Emacs Internet Relay Chat client."
@@ -140,6 +137,17 @@
(defvar motif-version-string)
(defvar gtk-version-string)
+(declare-function decoded-time-period "time-date" (time))
+(declare-function iso8601-parse-duration "iso8601" (string))
+(declare-function word-at-point "thingatpt" (&optional no-properties))
+(autoload 'word-at-point "thingatpt") ; for hl-nicks
+
+(declare-function url-host "url-parse" (cl-x))
+(declare-function url-password "url-parse" (cl-x))
+(declare-function url-portspec "url-parse" (cl-x))
+(declare-function url-type "url-parse" (cl-x))
+(declare-function url-user "url-parse" (cl-x))
+
;; tunable connection and authentication parameters
(defcustom erc-server nil
@@ -391,6 +399,24 @@ Each function should accept two arguments, NEW-NICK and OLD-NICK."
:group 'erc-hooks
:type 'hook)
+(defcustom erc-nickname-in-use-functions nil
+ "Function to run before trying for a different nickname.
+Called with two arguments: the desired but just rejected nickname
+and the alternate nickname about to be requested. Use cases
+include special handling during connection registration and
+wrestling with nickname services. For example, value
+`erc-regain-nick-on-connect' is aimed at dealing with reaping
+lingering connections that may prevent you from being issued a
+requested nick immediately when reconnecting. It's meant to be
+used with an `erc-server-reconnect-function' value of
+`erc-server-delayed-check-reconnect' alongside SASL
+authentication."
+ :package-version '(ERC . "5.6")
+ :group 'erc-hooks
+ :type '(choice (function-item erc-regain-nick-on-connect)
+ function
+ (const nil)))
+
(defcustom erc-connect-pre-hook '(erc-initialize-log-marker)
"Hook called just before `erc' calls `erc-connect'.
Functions are passed a buffer as the first argument."
@@ -1189,7 +1215,6 @@ which the local user typed."
(define-key map [home] #'erc-bol)
(define-key map "\C-c\C-a" #'erc-bol)
(define-key map "\C-c\C-b" #'erc-switch-to-buffer)
- (define-key map "\C-c\C-c" #'erc-toggle-interpret-controls)
(define-key map "\C-c\C-d" #'erc-input-action)
(define-key map "\C-c\C-e" #'erc-toggle-ctcp-autoresponse)
(define-key map "\C-c\C-f" #'erc-toggle-flood-control)
@@ -1213,6 +1238,19 @@ which the local user typed."
map)
"ERC keymap.")
+(defun erc--modify-local-map (mode &rest bindings)
+ "Modify `erc-mode-map' on behalf of a global module.
+Add or remove `key-valid-p' BINDINGS when toggling MODE."
+ (declare (indent 1))
+ (while (pcase-let* ((`(,key ,def . ,rest) bindings)
+ (existing (keymap-lookup erc-mode-map key)))
+ (if mode
+ (when (or (not existing) (eq existing #'undefined))
+ (keymap-set erc-mode-map key def))
+ (when (eq existing def)
+ (keymap-unset erc-mode-map key t)))
+ (setq bindings rest))))
+
;; Faces
; Honestly, I have a horrible sense of color and the "defaults" below
@@ -1469,6 +1507,7 @@ Defaults to the server buffer."
"IRC port to use for encrypted connections if it cannot be \
detected otherwise.")
+(defvaralias 'erc-buffer-display 'erc-join-buffer)
(defcustom erc-join-buffer 'bury
"Determines how to display a newly created IRC buffer.
@@ -1489,6 +1528,19 @@ The available choices are:
(const :tag "Use current buffer" buffer)
(const :tag "Use current buffer" t)))
+(defcustom erc-interactive-display 'buffer
+ "How and whether to display server buffers for M-x erc.
+See `erc-buffer-display' and friends for a description of
+possible values."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
+ :group 'erc-buffers
+ :type '(choice (const :tag "Use value of `erc-join-buffer'" nil)
+ (const :tag "Split window and select" window)
+ (const :tag "Split window, don't select" window-noselect)
+ (const :tag "New frame" frame)
+ (const :tag "Bury new and don't display existing" bury)
+ (const :tag "Use current buffer" buffer)))
+
(defcustom erc-reconnect-display nil
"How (and whether) to display a channel buffer upon reconnecting.
@@ -1521,19 +1573,35 @@ This only has effect when `erc-join-buffer' is set to `frame'."
(defcustom erc-reuse-frames t
"Determines whether new frames are always created.
-Non-nil means that a new frame is not created to display an ERC
-buffer if there is already a window displaying it. This only has
-effect when `erc-join-buffer' is set to `frame'."
+
+A value of t means only create a frame for undisplayed buffers.
+`displayed' means use any existing, potentially hidden frame
+already displaying a buffer from the same network context or,
+failing that, a frame showing any ERC buffer. As a last resort,
+`displayed' defaults to the selected frame, except for brand new
+connections, for which the invoking frame is always used. When
+this option is nil, a new frame is always created.
+
+Regardless of its value, this option is ignored unless
+`erc-join-buffer' is set to `frame'. And like most options in
+the `erc-buffer' customize group, this has no effect on server
+buffers while reconnecting because those are always buried."
+ :package-version '(ERC . "5.6") ; FIXME sync on release
:group 'erc-buffers
- :type 'boolean)
+ :type '(choice boolean
+ (const displayed)))
(defun erc-channel-p (channel)
"Return non-nil if CHANNEL seems to be an IRC channel name."
(cond ((stringp channel)
- (memq (aref channel 0) '(?# ?& ?+ ?!)))
- ((and (bufferp channel) (buffer-live-p channel))
- (with-current-buffer channel
- (erc-channel-p (erc-default-target))))
+ (memq (aref channel 0)
+ (if-let ((types (erc--get-isupport-entry 'CHANTYPES 'single)))
+ (append types nil)
+ '(?# ?& ?+ ?!))))
+ ((and-let* (((bufferp channel))
+ ((buffer-live-p channel))
+ (target (buffer-local-value 'erc--target channel)))
+ (erc-channel-p (erc--target-string target))))
(t nil)))
;; For the sake of compatibility, a historical quirk concerning this
@@ -1816,9 +1884,9 @@ buffer rather than a server buffer.")
;; each item is in the format '(old . new)
(delete-dups (mapcar #'erc--normalize-module-symbol mods)))
-(defcustom erc-modules '(netsplit fill button match track completion readonly
- networks ring autojoin noncommands irccontrols
- move-to-prompt stamp menu list)
+(defcustom erc-modules '( autojoin button completion fill imenu irccontrols
+ list match menu move-to-prompt netsplit
+ networks noncommands readonly ring stamp track)
"A list of modules which ERC should enable.
If you set the value of this without using `customize' remember to call
\(erc-update-modules) after you change it. When using `customize', modules
@@ -1826,12 +1894,20 @@ removed from the list will be disabled."
:get (lambda (sym)
;; replace outdated names with their newer equivalents
(erc-migrate-modules (symbol-value sym)))
- :initialize #'custom-initialize-default
+ ;; Expect every built-in module to have the symbol property
+ ;; `erc--module' set to its canonical symbol (often itself).
+ :initialize (lambda (symbol exp)
+ ;; Use `cdddr' because (set :greedy t . ,entries)
+ (dolist (entry (cdddr (get 'erc-modules 'custom-type)))
+ (when-let* (((eq (car entry) 'const))
+ (s (cadddr entry))) ; (const :tag "..." ,s)
+ (put s 'erc--module s)))
+ (custom-initialize-reset symbol exp))
:set (lambda (sym val)
;; disable modules which have just been removed
(when (and (boundp 'erc-modules) erc-modules val)
(dolist (module erc-modules)
- (unless (member module val)
+ (unless (memq module val)
(let ((f (intern-soft (format "erc-%s-mode" module))))
(when (and (fboundp f) (boundp f))
(when (symbol-value f)
@@ -1843,10 +1919,19 @@ removed from the list will be disabled."
(when (symbol-value f)
(funcall f 0))
(kill-local-variable f)))))))))
- (set sym val)
+ (let (built-in third-party)
+ (dolist (v val)
+ (setq v (erc--normalize-module-symbol v))
+ (if (get v 'erc--module)
+ (push v built-in)
+ (push v third-party)))
+ ;; Calling `set-default-toplevel-value' complicates testing
+ (set sym (append (sort built-in #'string-lessp)
+ (nreverse third-party))))
;; this test is for the case where erc hasn't been loaded yet
(when (fboundp 'erc-update-modules)
- (erc-update-modules)))
+ (unless erc--inside-mode-toggle-p
+ (erc-update-modules))))
:type
'(set
:greedy t
@@ -1857,10 +1942,10 @@ removed from the list will be disabled."
capab-identify)
(const :tag "completion: Complete nicknames and commands (programmable)"
completion)
- (const :tag "hecomplete: Complete nicknames and commands (obsolete, use \"completion\")" hecomplete)
(const :tag "dcc: Provide Direct Client-to-Client support" dcc)
(const :tag "fill: Wrap long lines" fill)
(const :tag "identd: Launch an identd server on port 8113" identd)
+ (const :tag "imenu: A simple Imenu integration" imenu)
(const :tag "irccontrols: Highlight or remove IRC control characters"
irccontrols)
(const :tag "keep-place: Leave point above un-viewed text" keep-place)
@@ -1874,11 +1959,11 @@ removed from the list will be disabled."
(const :tag "networks: Provide data about IRC networks" networks)
(const :tag "noncommands: Don't display non-IRC commands after evaluation"
noncommands)
+ (const :tag "notifications: Desktop alerts on PRIVMSG or mentions"
+ notifications)
(const :tag
"notify: Notify when the online status of certain users changes"
notify)
- (const :tag "notifications: Send notifications on PRIVMSG or nickname mentions"
- notifications)
(const :tag "page: Process CTCP PAGE requests from IRC" page)
(const :tag "readonly: Make displayed lines read-only" readonly)
(const :tag "replace: Replace text in messages" replace)
@@ -1891,13 +1976,14 @@ removed from the list will be disabled."
(const :tag "smiley: Convert smileys to pretty icons" smiley)
(const :tag "sound: Play sounds when you receive CTCP SOUND requests"
sound)
- (const :tag "stamp: Add timestamps to messages" stamp)
(const :tag "spelling: Check spelling" spelling)
+ (const :tag "stamp: Add timestamps to messages" stamp)
(const :tag "track: Track channel activity in the mode-line" track)
(const :tag "truncate: Truncate buffers to a certain size" truncate)
(const :tag "unmorse: Translate morse code in messages" unmorse)
(const :tag "xdcc: Act as an XDCC file-server" xdcc)
(repeat :tag "Others" :inline t symbol))
+ :package-version '(ERC . "5.6") ; FIXME sync on release
:group 'erc)
(defun erc-update-modules ()
@@ -1906,18 +1992,57 @@ Except ignore all local modules, which were introduced in ERC 5.5."
(erc--update-modules)
nil)
+(defun erc--find-mode (sym)
+ (setq sym (erc--normalize-module-symbol sym))
+ (if-let* ((mode (intern-soft (concat "erc-" (symbol-name sym) "-mode")))
+ ((or (boundp mode)
+ (and (fboundp mode)
+ (autoload-do-load (symbol-function mode) mode)))))
+ mode
+ (and (require (or (get sym 'erc--feature)
+ (intern (concat "erc-" (symbol-name sym))))
+ nil 'noerror)
+ (setq mode (intern-soft (concat "erc-" (symbol-name sym) "-mode")))
+ (fboundp mode)
+ mode)))
+
(defun erc--update-modules ()
(let (local-modes)
(dolist (module erc-modules local-modes)
- (require (or (alist-get module erc--modules-to-features)
- (intern (concat "erc-" (symbol-name module))))
- nil 'noerror) ; some modules don't have a corresponding feature
- (let ((mode (intern-soft (concat "erc-" (symbol-name module) "-mode"))))
- (unless (and mode (fboundp mode))
- (error "`%s' is not a known ERC module" module))
- (if (custom-variable-p mode)
- (funcall mode 1)
- (push mode local-modes))))))
+ (if-let ((mode (erc--find-mode module)))
+ (if (custom-variable-p mode)
+ (funcall mode 1)
+ (push mode local-modes))
+ (error "`%s' is not a known ERC module" module)))))
+
+(defun erc--setup-buffer-first-window (frame a b)
+ (catch 'found
+ (walk-window-tree
+ (lambda (w)
+ (when (cond ((functionp a) (with-current-buffer (window-buffer w)
+ (funcall a b)))
+ (t (eq (buffer-local-value a (window-buffer w)) b)))
+ (throw 'found t)))
+ frame nil 0)))
+
+(defun erc--display-buffer-use-some-frame (buffer alist)
+ "Maybe display BUFFER in an existing frame for the same connection.
+If performed, return window used; otherwise, return nil. Forward ALIST
+to display-buffer machinery."
+ (when-let*
+ ((idp (lambda (value)
+ (and erc-networks--id
+ (erc-networks--id-equal-p erc-networks--id value))))
+ (procp (lambda (frame)
+ (erc--setup-buffer-first-window frame idp erc-networks--id)))
+ (ercp (lambda (frame)
+ (erc--setup-buffer-first-window frame 'major-mode 'erc-mode)))
+ ((or (cdr (frame-list)) (funcall ercp (selected-frame)))))
+ ;; Workaround to avoid calling `window--display-buffer' directly
+ (or (display-buffer-use-some-frame buffer
+ `((frame-predicate . ,procp) ,@alist))
+ (display-buffer-use-some-frame buffer
+ `((frame-predicate . ,ercp) ,@alist)))))
(defun erc-setup-buffer (buffer)
"Consults `erc-join-buffer' to find out how to display `BUFFER'."
@@ -1934,15 +2059,21 @@ Except ignore all local modules, which were introduced in ERC 5.5."
('bury
nil)
('frame
- (when (or (not erc-reuse-frames)
- (not (get-buffer-window buffer t)))
+ (cond
+ ((and (eq erc-reuse-frames 'displayed)
+ (not (get-buffer-window buffer t)))
+ (display-buffer buffer '((erc--display-buffer-use-some-frame)
+ (inhibit-switch-frame . t)
+ (inhibit-same-window . t))))
+ ((or (not erc-reuse-frames)
+ (not (get-buffer-window buffer t)))
(let ((frame (make-frame (or erc-frame-alist
default-frame-alist))))
(raise-frame frame)
(select-frame frame))
(switch-to-buffer buffer)
(when erc-frame-dedicated-flag
- (set-window-dedicated-p (selected-window) t))))
+ (set-window-dedicated-p (selected-window) t)))))
(_
(if (active-minibuffer-window)
(display-buffer buffer)
@@ -1967,6 +2098,35 @@ nil."
(cons (nreverse (car out)) (nreverse (cdr out))))
(list new-modes)))
+;; This function doubles as a convenient helper for use in unit tests.
+;; Prior to 5.6, its contents lived in `erc-open'.
+
+(defun erc--initialize-markers (old-point continued-session)
+ "Ensure prompt and its bounding markers have been initialized."
+ ;; FIXME erase assertions after code review and additional testing.
+ (setq erc-insert-marker (make-marker)
+ erc-input-marker (make-marker))
+ (if continued-session
+ (progn
+ ;; Trust existing markers.
+ (set-marker erc-insert-marker
+ (alist-get 'erc-insert-marker continued-session))
+ (set-marker erc-input-marker
+ (alist-get 'erc-input-marker continued-session))
+ (goto-char erc-insert-marker)
+ (cl-assert (= (field-end) erc-input-marker))
+ (goto-char old-point)
+ (erc--unhide-prompt))
+ (cl-assert (not (get-text-property (point) 'erc-prompt)))
+ ;; In the original version from `erc-open', the snippet that
+ ;; handled these newline insertions appeared twice close in
+ ;; proximity, which was probably unintended. Nevertheless, we
+ ;; preserve the double newlines here for historical reasons.
+ (insert "\n\n")
+ (set-marker erc-insert-marker (point))
+ (erc-display-prompt)
+ (cl-assert (= (point) (point-max)))))
+
(defun erc-open (&optional server port nick full-name
connect passwd tgt-list channel process
client-certificate user id)
@@ -2000,10 +2160,13 @@ Returns the buffer for the given server or channel."
(old-recon-count erc-server-reconnect-count)
(old-point nil)
(delayed-modules nil)
- (continued-session (and erc--server-reconnecting
- (with-suppressed-warnings
- ((obsolete erc-reuse-buffers))
- erc-reuse-buffers))))
+ (continued-session (or erc--server-reconnecting
+ erc--target-priors
+ (and-let* (((not target))
+ (m (buffer-local-value
+ 'erc-input-marker buffer))
+ ((marker-position m)))
+ (buffer-local-variables buffer)))))
(when connect (run-hook-with-args 'erc-before-connect server port nick))
(set-buffer buffer)
(setq old-point (point))
@@ -2021,21 +2184,6 @@ Returns the buffer for the given server or channel."
(buffer-local-value 'erc-server-announced-name old-buffer)))
;; connection parameters
(setq erc-server-process process)
- (setq erc-insert-marker (make-marker))
- (setq erc-input-marker (make-marker))
- ;; go to the end of the buffer and open a new line
- ;; (the buffer may have existed)
- (goto-char (point-max))
- (forward-line 0)
- (when (or continued-session (get-text-property (point) 'erc-prompt))
- (setq continued-session t)
- (set-marker erc-input-marker
- (or (next-single-property-change (point) 'erc-prompt)
- (point-max))))
- (unless continued-session
- (goto-char (point-max))
- (insert "\n"))
- (set-marker erc-insert-marker (point))
;; stack of default recipients
(setq erc-default-recipients tgt-list)
(when target
@@ -2082,20 +2230,7 @@ Returns the buffer for the given server or channel."
(get-buffer-create (concat "*ERC-DEBUG: " server "*"))))
(erc-determine-parameters server port nick full-name user passwd)
-
- ;; FIXME consolidate this prompt-setup logic with the pass above.
-
- ;; set up prompt
- (unless continued-session
- (goto-char (point-max))
- (insert "\n"))
- (if continued-session
- (progn (goto-char old-point)
- (erc--unhide-prompt))
- (set-marker erc-insert-marker (point))
- (erc-display-prompt)
- (goto-char (point-max)))
-
+ (erc--initialize-markers old-point continued-session)
(save-excursion (run-mode-hooks)
(dolist (mod (car delayed-modules)) (funcall mod +1))
(dolist (var (cdr delayed-modules)) (set var nil)))
@@ -2177,29 +2312,12 @@ parameters SERVER and NICK."
(setq input (concat "irc://" input)))
input)
-;; A temporary means of addressing the problem of ERC's namesake entry
-;; point defaulting to a non-TLS connection with its default server
-;; (bug#60428).
-(defun erc--warn-unencrypted ()
- ;; Remove unconditionally to avoid wrong context due to races from
- ;; simultaneous dialing or aborting (e.g., via `keybaord-quit').
- (remove-hook 'erc--server-post-connect-hook #'erc--warn-unencrypted)
- (when (and (process-contact erc-server-process :nowait)
- (equal erc-session-server erc-default-server)
- (eql erc-session-port erc-default-port))
- ;; FIXME use the autoloaded `info' instead of `Info-goto-node' in
- ;; `erc-button-alist'.
- (require 'info nil t)
- (erc-display-error-notice
- nil (concat "This connection is unencrypted. Please use `erc-tls'"
- " from now on. See Info:\"(erc) connecting\" for more."))))
-
;;;###autoload
(defun erc-select-read-args ()
- "Prompt the user for values of nick, server, port, and password."
- (require 'url-parse)
+ "Prompt the user for values of nick, server, port, and password.
+With prefix arg, also prompt for user and full name."
(let* ((input (let ((d (erc-compute-server)))
- (read-string (format "Server (default is %S): " d)
+ (read-string (format "Server or URL (default is %S): " d)
nil 'erc-server-history-list d)))
;; For legacy reasons, also accept a URL without a scheme.
(url (url-generic-parse-url (erc--ensure-url input)))
@@ -2217,20 +2335,47 @@ parameters SERVER and NICK."
(let ((d (erc-compute-nick)))
(read-string (format "Nickname (default is %S): " d)
nil 'erc-nick-history-list d))))
+ (user (and current-prefix-arg
+ (let ((d (erc-compute-user (url-user url))))
+ (read-string (format "User (default is %S): " d)
+ nil nil d))))
+ (full (and current-prefix-arg
+ (let ((d (erc-compute-full-name (url-user url))))
+ (read-string (format "Full name (default is %S): " d)
+ nil nil d))))
(passwd (let* ((p (with-suppressed-warnings ((obsolete erc-password))
(or (url-password url) erc-password)))
(m (if p
(format "Server password (default is %S): " p)
"Server password (optional): ")))
- (if erc-prompt-for-password (read-passwd m nil p) p))))
+ (if erc-prompt-for-password (read-passwd m nil p) p)))
+ (opener (and (or sp (eql port erc-default-port-tls)
+ (and (equal server erc-default-server)
+ (not (string-prefix-p "irc://" input))
+ (eql port erc-default-port)
+ (y-or-n-p "Connect using TLS instead? ")
+ (setq port erc-default-port-tls)))
+ #'erc-open-tls-stream))
+ env)
+ (when erc-interactive-display
+ (push `(erc-join-buffer . ,erc-interactive-display) env))
+ (when opener
+ (push `(erc-server-connect-function . ,opener) env))
(when (and passwd (string= "" passwd))
(setq passwd nil))
- (when (and (equal server erc-default-server)
- (eql port erc-default-port)
- (not (eql port erc-default-port-tls)) ; not `erc-tls'
- (not (string-prefix-p "irc://" input))) ; not yanked URL
- (add-hook 'erc--server-post-connect-hook #'erc--warn-unencrypted))
- (list :server server :port port :nick nick :password passwd)))
+ `( :server ,server :port ,port :nick ,nick ,@(and user `(:user ,user))
+ ,@(and passwd `(:password ,passwd)) ,@(and full `(:full-name ,full))
+ ,@(and env `(&interactive-env ,env)))))
+
+(defmacro erc--with-entrypoint-environment (env &rest body)
+ "Run BODY with bindings from ENV alist."
+ (declare (indent 1))
+ (let ((syms (make-symbol "syms"))
+ (vals (make-symbol "vals")))
+ `(let (,syms ,vals)
+ (pcase-dolist (`(,k . ,v) ,env) (push k ,syms) (push v ,vals))
+ (cl-progv ,syms ,vals
+ ,@body))))
;;;###autoload
(cl-defun erc (&key (server (erc-compute-server))
@@ -2239,7 +2384,9 @@ parameters SERVER and NICK."
(user (erc-compute-user))
password
(full-name (erc-compute-full-name))
- id)
+ id
+ ;; Used by interactive form
+ ((&interactive-env --interactive-env--)))
"ERC is a powerful, modular, and extensible IRC client.
This function is the main entry point for ERC.
@@ -2262,9 +2409,12 @@ then the server and full-name will be set to those values,
whereas `erc-compute-port' and `erc-compute-nick' will be invoked
for the values of the other parameters.
-See `erc-tls' for the meaning of ID."
+See `erc-tls' for the meaning of ID.
+
+\(fn &key SERVER PORT NICK USER PASSWORD FULL-NAME ID)"
(interactive (erc-select-read-args))
- (erc-open server port nick full-name t password nil nil nil nil user id))
+ (erc--with-entrypoint-environment --interactive-env--
+ (erc-open server port nick full-name t password nil nil nil nil user id)))
;;;###autoload
(defalias 'erc-select #'erc)
@@ -2278,7 +2428,9 @@ See `erc-tls' for the meaning of ID."
password
(full-name (erc-compute-full-name))
client-certificate
- id)
+ id
+ ;; Used by interactive form
+ ((&interactive-env --interactive-env--)))
"ERC is a powerful, modular, and extensible IRC client.
This function is the main entry point for ERC over TLS.
@@ -2320,12 +2472,22 @@ Example usage:
When present, ID should be a symbol or a string to use for naming
the server buffer and identifying the connection unequivocally.
-See Info node `(erc) Network Identifier' for details. Like USER
-and CLIENT-CERTIFICATE, this parameter cannot be specified
-interactively."
+See Info node `(erc) Network Identifier' for details. Like
+CLIENT-CERTIFICATE, this parameter cannot be specified
+interactively.
+
+\(fn &key SERVER PORT NICK USER PASSWORD FULL-NAME CLIENT-CERTIFICATE ID)"
(interactive (let ((erc-default-port erc-default-port-tls))
(erc-select-read-args)))
- (let ((erc-server-connect-function 'erc-open-tls-stream))
+ ;; Bind `erc-server-connect-function' to `erc-open-tls-stream'
+ ;; around `erc-open' when a non-default value hasn't been specified
+ ;; by the user or the interactive form. And don't bother checking
+ ;; for advice, indirect functions, autoloads, etc.
+ (unless (or (assq 'erc-server-connect-function --interactive-env--)
+ (not (eq erc-server-connect-function #'erc-open-network-stream)))
+ (push '(erc-server-connect-function . erc-open-tls-stream)
+ --interactive-env--))
+ (erc--with-entrypoint-environment --interactive-env--
(erc-open server port nick full-name t password
nil nil nil client-certificate user id)))
@@ -2521,6 +2683,16 @@ this option to nil."
:type 'boolean
:group 'erc)
+(define-inline erc--assert-input-bounds ()
+ (inline-quote
+ (progn (when (and (processp erc-server-process)
+ (eq (current-buffer) (process-buffer erc-server-process)))
+ ;; It's believed that these only need syncing immediately
+ ;; following the first two insertions in a server buffer.
+ (set-marker (process-mark erc-server-process) erc-insert-marker))
+ (cl-assert (< erc-insert-marker erc-input-marker))
+ (cl-assert (= (field-end erc-insert-marker) erc-input-marker)))))
+
(defun erc-display-line-1 (string buffer)
"Display STRING in `erc-mode' BUFFER.
Auxiliary function used in `erc-display-line'. The line gets filtered to
@@ -2530,8 +2702,7 @@ Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called.
If STRING is nil, the function does nothing."
(when string
(with-current-buffer (or buffer (process-buffer erc-server-process))
- (let ((insert-position (or (marker-position erc-insert-marker)
- (point-max))))
+ (let ((insert-position (marker-position erc-insert-marker)))
(let ((string string) ;; FIXME! Can this be removed?
(buffer-undo-list t)
(inhibit-read-only t))
@@ -2556,6 +2727,7 @@ If STRING is nil, the function does nothing."
(widen)
(goto-char insert-position)
(insert-before-markers string)
+ (erc--assert-input-bounds)
;; run insertion hook, with point at restored location
(save-restriction
(narrow-to-region insert-position (point))
@@ -2563,7 +2735,8 @@ If STRING is nil, the function does nothing."
(run-hooks 'erc-insert-post-hook)
(when erc-remove-parsed-property
(remove-text-properties (point-min) (point-max)
- '(erc-parsed nil))))))))
+ '(erc-parsed nil))))
+ (erc--assert-input-bounds)))))
(run-hooks 'erc-insert-done-hook)
(erc-update-undo-list (- (or (marker-position erc-insert-marker)
(point-max))
@@ -2868,7 +3041,9 @@ See also `erc-format-message' and `erc-display-line'."
(erc-display-line string buffer)
(unless (erc-hide-current-message-p parsed)
(erc-put-text-property 0 (length string) 'erc-parsed parsed string)
- (erc-put-text-property 0 (length string) 'rear-sticky t string)
+ (put-text-property
+ 0 (length string) 'erc-command
+ (erc--get-eq-comparable-cmd (erc-response.command parsed)) string)
(when (erc-response.tags parsed)
(erc-put-text-property 0 (length string) 'tags (erc-response.tags parsed)
string))
@@ -3054,6 +3229,8 @@ returns the time spec converted to a number of seconds."
(string-to-number period))
;; Parse as a time spec.
(t
+ (require 'time-date)
+ (require 'iso8601)
(let ((time (condition-case nil
(iso8601-parse-duration
(concat (cond
@@ -3203,7 +3380,7 @@ VERSION and so on. It is called with ARGS."
(erc-send-ctcp-message nick str)
t))
-(defun erc-cmd-HELP (&optional func)
+(defun erc-cmd-HELP (&optional func &rest rest)
"Popup help information.
If FUNC contains a valid function or variable, help about that
@@ -3236,6 +3413,10 @@ For a list of user commands (/join /part, ...):
nil)))))
(if sym
(cond
+ ((get sym 'erc--cmd-help)
+ (when (autoloadp (symbol-function sym))
+ (autoload-do-load (symbol-function sym)))
+ (apply (get sym 'erc--cmd-help) rest))
((boundp sym) (describe-variable sym))
((fboundp sym) (describe-function sym))
(t nil))
@@ -4046,6 +4227,22 @@ means that the user has a +o flag in the channel's access list)."
(t (erc-server-send "TIME"))))
(defalias 'erc-cmd-DATE #'erc-cmd-TIME)
+(defun erc-cmd-MOTD (&optional target)
+ "Ask server to send the current MOTD.
+Some IRCds simply ignore TARGET."
+ (letrec ((oneoff (lambda (proc parsed)
+ (with-current-buffer (erc-server-buffer)
+ (cl-assert (eq (current-buffer) (process-buffer proc)))
+ (remove-hook 'erc-server-402-functions h402 t)
+ (remove-hook 'erc-server-376-functions h376 t)
+ (remove-hook 'erc-server-422-functions h422 t))
+ (erc-server-MOTD proc parsed)
+ t))
+ (h402 (erc-once-with-server-event 402 oneoff))
+ (h376 (erc-once-with-server-event 376 oneoff))
+ (h422 (erc-once-with-server-event 422 oneoff)))
+ (erc-server-send (concat "MOTD" (and target " ") target))))
+
(defun erc-cmd-TOPIC (topic)
"Set or request the topic for a channel.
LINE has the format: \"#CHANNEL TOPIC\", \"#CHANNEL\", \"TOPIC\"
@@ -4246,6 +4443,30 @@ Eventually add a # in front of it, if that turns it into a valid channel name."
channel
(concat "#" channel)))
+(defvar erc--own-property-names
+ '( tags erc-parsed display ; core
+ ;; `erc-display-prompt'
+ rear-nonsticky erc-prompt field front-sticky read-only
+ ;; stamp
+ cursor-intangible cursor-sensor-functions isearch-open-invisible
+ ;; match
+ invisible intangible
+ ;; button
+ erc-callback erc-data mouse-face keymap
+ ;; fill-wrap
+ line-prefix wrap-prefix)
+ "Props added by ERC that should not survive killing.
+Among those left behind by default are `font-lock-face' and
+`erc-secret'.")
+
+(defun erc--remove-text-properties (string)
+ "Remove text properties in STRING added by ERC.
+Specifically, remove any that aren't members of
+`erc--own-property-names'."
+ (remove-list-of-text-properties 0 (length string)
+ erc--own-property-names string)
+ string)
+
(defun erc-grab-region (start end)
"Copy the region between START and END in a recreatable format.
@@ -4297,7 +4518,7 @@ If FACE is non-nil, it will be used to propertize the prompt. If it is nil,
(setq prompt (propertize prompt
'rear-nonsticky t
'erc-prompt t
- 'field t
+ 'field 'erc-prompt
'front-sticky t
'read-only t))
(erc-put-text-property 0 (1- (length prompt))
@@ -4507,6 +4728,7 @@ To change how this query window is displayed, use `let' to bind
(with-current-buffer server-buffer
(erc--open-target target)))
+(defvaralias 'erc-receive-query-display 'erc-auto-query)
(defcustom erc-auto-query 'window-noselect
"If non-nil, create a query buffer each time you receive a private message.
If the buffer doesn't already exist, it is created.
@@ -4573,6 +4795,34 @@ E.g. \"Read error to Nick [user@some.host]: 110\" would be shortened to
(match-string 1 reason))
reason))
+(defun erc-regain-nick-on-connect (want temp)
+ "Try at most once to grab nickname WANT after settling for TEMP.
+Only do so during connection registration, likely prior to
+authenticating with SASL. Assume the prior connection was lost
+due to connectivity failure and that the server hasn't yet
+noticed. Also assume that the server won't process any
+authentication-related messages until it has accepted a mulligan
+nick or at least sent a 433 and thus triggered
+`erc-nickname-in-use-functions'. Expect authentication to have
+succeeded by the time a logical IRC connection has been
+established and that the contending connection may otherwise
+still be alive and require manual intervention involving
+NickServ."
+ (unless erc-server-connected
+ (letrec ((after-connect
+ (lambda (_ nick)
+ (remove-hook 'erc-after-connect after-connect t)
+ (when (equal temp nick)
+ (erc-cmd-NICK want))))
+ (on-900
+ (lambda (_ parsed)
+ (remove-hook 'erc-server-900-functions on-900 t)
+ (unless erc-server-connected
+ (when (equal (car (erc-response.command-args parsed)) temp)
+ (add-hook 'erc-after-connect after-connect nil t)))
+ nil)))
+ (add-hook 'erc-server-900-functions on-900 nil t))))
+
(defun erc-nickname-in-use (nick reason)
"If NICK is unavailable, tell the user the REASON.
@@ -4606,6 +4856,7 @@ See also `erc-display-error-notice'."
;; established a connection yet
(- 9 (length erc-nick-uniquifier))))
erc-nick-uniquifier)))
+ (run-hook-with-args 'erc-nickname-in-use-functions nick newnick)
(erc-cmd-NICK newnick)
(erc-display-error-notice
nil
@@ -5669,7 +5920,7 @@ See also variable `erc-notice-highlight-type'."
(erc-put-text-property 0 (length s) 'font-lock-face 'erc-error-face s)
s)
-(defun erc-put-text-property (start end property value &optional object)
+(defalias 'erc-put-text-property 'put-text-property
"Set text-property for an object (usually a string).
START and END define the characters covered.
PROPERTY is the text-property set, usually the symbol `face'.
@@ -5679,14 +5930,9 @@ OBJECT is a string which will be modified and returned.
OBJECT is modified without being copied first.
You can redefine or `defadvice' this function in order to add
-EmacsSpeak support."
- (put-text-property start end property value object))
+EmacsSpeak support.")
-(defun erc-list (thing)
- "Return THING if THING is a list, or a list with THING as its element."
- (if (listp thing)
- thing
- (list thing)))
+(defalias 'erc-list 'ensure-list)
(defun erc-parse-user (string)
"Parse STRING as a user specification (nick!login@host).
@@ -5843,8 +6089,7 @@ When the returned value is a string, pass it to `erc-error'.")
(progn ; unprogn this during next major surgery
(erc-set-active-buffer (current-buffer))
;; Kill the input and the prompt
- (delete-region (erc-beg-of-input-line)
- (erc-end-of-input-line))
+ (delete-region erc-input-marker (erc-end-of-input-line))
(unwind-protect
(erc-send-input str 'skip-ws-chk)
;; Fix the buffer if the command didn't kill it
@@ -5852,12 +6097,7 @@ When the returned value is a string, pass it to `erc-error'.")
(with-current-buffer old-buf
(save-restriction
(widen)
- (goto-char (point-max))
- (when (processp erc-server-process)
- (set-marker (process-mark erc-server-process) (point)))
- (set-marker erc-insert-marker (point))
(let ((buffer-modified (buffer-modified-p)))
- (erc-display-prompt)
(set-buffer-modified-p buffer-modified))))))
;; Only when last hook has been run...
@@ -5943,21 +6183,21 @@ Return non-nil only if we actually send anything."
(defun erc-display-msg (line)
"Display LINE as a message of the user to the current target at point."
(when erc-insert-this
- (let ((insert-position (point)))
- (insert (erc-format-my-nick))
- (let ((beg (point)))
- (insert line)
- (erc-put-text-property beg (point)
- 'font-lock-face 'erc-input-face))
- (insert "\n")
- (when (processp erc-server-process)
- (set-marker (process-mark erc-server-process) (point)))
- (set-marker erc-insert-marker (point))
- (save-excursion
+ (save-excursion
+ (erc--assert-input-bounds)
+ (let ((insert-position (marker-position erc-insert-marker))
+ beg)
+ (goto-char insert-position)
+ (insert-before-markers (erc-format-my-nick))
+ (setq beg (point))
+ (insert-before-markers line)
+ (erc-put-text-property beg (point) 'font-lock-face 'erc-input-face)
+ (insert-before-markers "\n")
(save-restriction
(narrow-to-region insert-position (point))
(run-hooks 'erc-send-modify-hook)
- (run-hooks 'erc-send-post-hook))))))
+ (run-hooks 'erc-send-post-hook))
+ (erc--assert-input-bounds)))))
(defun erc-command-symbol (command)
"Return the ERC command symbol for COMMAND if it exists and is bound."
@@ -6836,8 +7076,6 @@ shortened server name instead."
(cond (lag (format "lag:%.0f" lag))
(t ""))))
-;; erc-goodies is required at end of this file.
-
;; TODO when ERC drops Emacs 28, replace the expressions in the format
;; spec below with functions.
(defun erc-update-mode-line-buffer (buffer)
@@ -7131,6 +7369,7 @@ All windows are opened in the current frame."
(s379 . "%c: Forwarded to %f")
(s391 . "The time at %s is %t")
(s401 . "%n: No such nick/channel")
+ (s402 . "%c: No such server")
(s403 . "%c: No such channel")
(s404 . "%c: Cannot send to channel")
(s405 . "%c: You have joined too many channels")
@@ -7280,10 +7519,11 @@ This function should be on `erc-kill-channel-hook'."
(defun erc-restore-text-properties ()
"Restore the property `erc-parsed' for the region."
- (let ((parsed-posn (erc-find-parsed-property)))
- (put-text-property
- (point-min) (point-max)
- 'erc-parsed (when parsed-posn (erc-get-parsed-vector parsed-posn)))))
+ (when-let* ((parsed-posn (erc-find-parsed-property))
+ (found (erc-get-parsed-vector parsed-posn)))
+ (put-text-property (point-min) (point-max) 'erc-parsed found)
+ (when-let ((tags (get-text-property parsed-posn 'tags)))
+ (put-text-property (point-min) (point-max) 'tags tags))))
(defun erc-get-parsed-vector (point)
"Return the whole parsed vector on POINT."
@@ -7303,6 +7543,13 @@ This function should be on `erc-kill-channel-hook'."
(and vect
(erc-response.command vect)))
+(defun erc--get-eq-comparable-cmd (command)
+ "Return a symbol or a fixnum representing a message's COMMAND.
+See also `erc-message-type'."
+ ;; IRC numerics are three-digit numbers, possibly with leading 0s.
+ ;; To invert: (if (numberp o) (format "%03d" o) (symbol-name o))
+ (if-let* ((n (string-to-number command)) ((zerop n))) (intern command) n))
+
;; Teach url.el how to open irc:// URLs with ERC.
;; To activate, customize `url-irc-function' to `url-irc-erc'.
@@ -7386,6 +7633,4 @@ Customize `erc-url-connect-function' to override this."
(provide 'erc)
-;; FIXME this is a temporary stopgap for Emacs 29.
-(require 'erc-goodies)
;;; erc.el ends here
diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el
index 1be070480b3..841982c3425 100644
--- a/lisp/eshell/em-alias.el
+++ b/lisp/eshell/em-alias.el
@@ -183,7 +183,9 @@ file named by `eshell-aliases-file'.")
(pcomplete-here (eshell-alias-completions pcomplete-stub)))
(defun eshell-read-aliases-list ()
- "Read in an aliases list from `eshell-aliases-file'."
+ "Read in an aliases list from `eshell-aliases-file'.
+This is useful after manually editing the contents of the file."
+ (interactive)
(let ((file eshell-aliases-file))
(when (file-readable-p file)
(setq eshell-command-aliases-list
diff --git a/lisp/eshell/em-banner.el b/lisp/eshell/em-banner.el
index 8bc497bdeb3..2bee50b80a4 100644
--- a/lisp/eshell/em-banner.el
+++ b/lisp/eshell/em-banner.el
@@ -43,7 +43,6 @@
(require 'esh-util)
(require 'esh-mode)
-(require 'eshell)
;;;###autoload
(progn
diff --git a/lisp/eshell/em-basic.el b/lisp/eshell/em-basic.el
index bfff3bdf56e..016afe811b2 100644
--- a/lisp/eshell/em-basic.el
+++ b/lisp/eshell/em-basic.el
@@ -53,9 +53,10 @@
;;; Code:
-(require 'esh-util)
-(require 'eshell)
+(require 'esh-cmd)
+(require 'esh-io)
(require 'esh-opt)
+(require 'esh-util)
;;;###autoload
(progn
diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el
index 4f656b16a8e..732bbb3f1fa 100644
--- a/lisp/eshell/em-cmpl.el
+++ b/lisp/eshell/em-cmpl.el
@@ -74,9 +74,7 @@
(require 'esh-util)
(require 'em-dirs)
-(eval-when-compile
- (require 'cl-lib)
- (require 'eshell))
+(eval-when-compile (require 'cl-lib))
;;;###autoload
(progn
@@ -306,15 +304,35 @@ to writing a completion function."
(insert-and-inherit "\t")
(throw 'pcompleted t)))
+(defun eshell-complete--eval-argument-form (arg)
+ "Evaluate a single Eshell argument form ARG for the purposes of completion."
+ (condition-case err
+ (let* (;; Don't allow running commands; they could have
+ ;; arbitrary side effects, which we don't want when we're
+ ;; just performing completions!
+ (eshell-allow-commands)
+ ;; Handle errors ourselves so that we can properly catch
+ ;; `eshell-commands-forbidden'.
+ (eshell-handle-errors)
+ (result (eshell-do-eval `(eshell-commands ,arg) t)))
+ (cl-assert (eq (car result) 'quote))
+ (cadr result))
+ (eshell-commands-forbidden
+ (propertize "\0" 'eshell-argument-stub
+ (intern (format "%s-command" (cadr err)))))
+ (error
+ (lwarn 'eshell :error
+ "Failed to evaluate argument form during completion: %S" arg)
+ (propertize "\0" 'eshell-argument-stub 'error))))
+
(defun eshell-complete-parse-arguments ()
"Parse the command line arguments for `pcomplete-argument'."
(when (and eshell-no-completion-during-jobs
(eshell-interactive-process-p))
(eshell--pcomplete-insert-tab))
(let ((end (point-marker))
- (begin (save-excursion (eshell-bol) (point)))
- (posns (list t))
- args delim)
+ (begin (save-excursion (beginning-of-line) (point)))
+ args posns delim incomplete-arg)
(when (and pcomplete-allow-modifications
(memq this-command '(pcomplete-expand
pcomplete-expand-and-complete)))
@@ -322,59 +340,88 @@ to writing a completion function."
(if (= begin end)
(end-of-line))
(setq end (point-marker)))
- (if (setq delim
- (catch 'eshell-incomplete
- (ignore
- (setq args (eshell-parse-arguments begin end)))))
- (cond ((memq (car delim) '(?\{ ?\<))
- (setq begin (1+ (cadr delim))
- args (eshell-parse-arguments begin end)))
- ((eq (car delim) ?\()
- (throw 'pcompleted (elisp-completion-at-point)))
- (t
- (eshell--pcomplete-insert-tab))))
+ ;; Don't expand globs when parsing arguments; we want to pass any
+ ;; globs to Pcomplete unaltered.
+ (declare-function eshell-parse-glob-chars "em-glob" ())
+ (let ((eshell-parse-argument-hook (remq #'eshell-parse-glob-chars
+ eshell-parse-argument-hook)))
+ (if (setq delim
+ (catch 'eshell-incomplete
+ (ignore
+ (setq args (eshell-parse-arguments begin end)))))
+ (cond ((member (car delim) '("{" "${" "$<"))
+ (setq begin (1+ (cadr delim))
+ args (eshell-parse-arguments begin end)))
+ ((member (car delim) '("$'" "$\"" "#<"))
+ ;; Add the (incomplete) argument to our arguments, and
+ ;; note its position.
+ (setq args (append (nth 2 delim) (list (car delim)))
+ incomplete-arg t)
+ (push (- (nth 1 delim) 2) posns))
+ ((member (car delim) '("(" "$("))
+ (throw 'pcompleted (elisp-completion-at-point)))
+ (t
+ (eshell--pcomplete-insert-tab)))))
(when (get-text-property (1- end) 'comment)
(eshell--pcomplete-insert-tab))
- (let ((pos begin))
- (while (< pos end)
- (if (get-text-property pos 'arg-begin)
- (nconc posns (list pos)))
- (setq pos (1+ pos))))
- (setq posns (cdr posns))
+ (let ((pos (1- end)))
+ (while (>= pos begin)
+ (when (get-text-property pos 'arg-begin)
+ (push pos posns))
+ (setq pos (1- pos))))
(cl-assert (= (length args) (length posns)))
- (let ((a args)
- (i 0)
- l)
+ (let ((a args) (i 0) new-start)
(while a
- (if (and (consp (car a))
- (eq (caar a) 'eshell-operator))
- (setq l i))
- (setq a (cdr a) i (1+ i)))
- (and l
- (setq args (nthcdr (1+ l) args)
- posns (nthcdr (1+ l) posns))))
+ ;; If there's an unreplaced `eshell-operator' sigil, consider
+ ;; the token after it the new start of our arguments.
+ (when (and (consp (car a))
+ (eq (caar a) 'eshell-operator))
+ (setq new-start i))
+ (setq a (cdr a)
+ i (1+ i)))
+ (when new-start
+ (setq args (nthcdr (1+ new-start) args)
+ posns (nthcdr (1+ new-start) posns))))
(cl-assert (= (length args) (length posns)))
- (when (and args (eq (char-syntax (char-before end)) ? )
+ (when (and args (not incomplete-arg)
+ (eq (char-syntax (char-before end)) ? )
(not (eq (char-before (1- end)) ?\\)))
(nconc args (list ""))
(nconc posns (list (point))))
+ ;; Evaluate and expand Eshell forms.
+ (let (evaled-args evaled-posns)
+ (cl-mapc
+ (lambda (arg posn)
+ (pcase arg
+ (`(eshell-splice-args ,val)
+ (dolist (subarg (eshell-complete--eval-argument-form val))
+ (push subarg evaled-args)
+ (push posn evaled-posns)))
+ ((pred listp)
+ (push (eshell-complete--eval-argument-form arg) evaled-args)
+ (push posn evaled-posns))
+ (_
+ (push arg evaled-args)
+ (push posn evaled-posns))))
+ args posns)
+ (setq args (nreverse evaled-args)
+ posns (nreverse evaled-posns)))
+ ;; Convert arguments to forms that Pcomplete can understand.
(cons (mapcar
(lambda (arg)
- (let ((val
- (if (listp arg)
- (let ((result
- (eshell-do-eval
- (list 'eshell-commands arg) t)))
- (cl-assert (eq (car result) 'quote))
- (cadr result))
- arg)))
- (cond ((numberp val)
- (setq val (number-to-string val)))
- ;; expand .../ etc that only eshell understands to
- ;; standard ../../
- ((and (stringp val)) (string-match "\\.\\.\\.+/" val)
- (setq val (eshell-expand-multiple-dots val))))
- (or val "")))
+ (pcase arg
+ ;; Expand ".../" etc that only Eshell understands to
+ ;; the standard "../../".
+ ((rx ".." (+ ".") "/")
+ (propertize (eshell-expand-multiple-dots arg)
+ 'pcomplete-arg-value arg))
+ ((pred stringp)
+ arg)
+ ('nil
+ (propertize "" 'pcomplete-arg-value arg))
+ (_
+ (propertize (eshell-stringify arg)
+ 'pcomplete-arg-value arg))))
args)
posns)))
diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el
index 0d02b64b084..5284df9ab59 100644
--- a/lisp/eshell/em-dirs.el
+++ b/lisp/eshell/em-dirs.el
@@ -253,11 +253,26 @@ Thus, this does not include the current directory.")
(throw 'eshell-replace-command
(eshell-parse-command "cd" (flatten-tree args)))))
+(defun eshell-expand-user-reference-1 (file)
+ "Expand a user reference in FILE to its real directory name."
+ (replace-regexp-in-string
+ (rx bos (group "~" (*? anychar)) (or "/" eos))
+ #'expand-file-name file))
+
+(defun eshell-expand-user-reference (file)
+ "Expand a user reference in FILE to its real directory name.
+FILE can be either a string or a list of strings to expand."
+ ;; If the argument was a glob pattern, then FILE is a list, so
+ ;; expand each element of the glob's resulting list.
+ (if (listp file)
+ (mapcar #'eshell-expand-user-reference-1 file)
+ (eshell-expand-user-reference-1 file)))
+
(defun eshell-parse-user-reference ()
"An argument beginning with ~ is a filename to be expanded."
(when (and (not eshell-current-argument)
- (eq (char-after) ?~))
- (add-to-list 'eshell-current-modifiers 'expand-file-name)
+ (eq (char-after) ?~))
+ (add-to-list 'eshell-current-modifiers #'eshell-expand-user-reference)
(forward-char)
(char-to-string (char-before))))
@@ -281,15 +296,32 @@ Thus, this does not include the current directory.")
(let ((arg (pcomplete-actual-arg)))
(when (string-match "\\`~[a-z]*\\'" arg)
(setq pcomplete-stub (substring arg 1)
- pcomplete-last-completion-raw t)
- (throw 'pcomplete-completions
- (progn
- (eshell-read-user-names)
- (pcomplete-uniquify-list
- (mapcar
- (lambda (user)
- (file-name-as-directory (cdr user)))
- eshell-user-names)))))))
+ pcomplete-last-completion-raw t)
+ (eshell-read-user-names)
+ (let ((names (pcomplete-uniquify-list
+ (mapcar (lambda (user)
+ (file-name-as-directory (cdr user)))
+ eshell-user-names))))
+ (throw 'pcomplete-completions
+ ;; Provide a programmed completion table. This works
+ ;; just like completing over the list of names, except
+ ;; it always returns the completed string for
+ ;; `try-completion', never `t'. That's because this is
+ ;; only completing a directory name, and so the
+ ;; completion isn't actually finished yet.
+ (lambda (string pred action)
+ (pcase action
+ ('nil ; try-completion
+ (let ((result (try-completion string names pred)))
+ (if (eq result t) string result)))
+ ('t ; all-completions
+ (all-completions string names pred))
+ ('lambda ; test-completion
+ (test-completion string names pred))
+ ('metadata
+ '(metadata (category . file)))
+ (`(boundaries . ,suffix)
+ `(boundaries 0 . ,(string-search "/" suffix))))))))))
(defun eshell/pwd (&rest _args)
"Change output from `pwd' to be cleaner."
diff --git a/lisp/eshell/em-elecslash.el b/lisp/eshell/em-elecslash.el
index 80bc0f031ef..2b003f58dc7 100644
--- a/lisp/eshell/em-elecslash.el
+++ b/lisp/eshell/em-elecslash.el
@@ -72,7 +72,7 @@ insertion."
(delete-char -1)
(let ((tilde-before (eq ?~ (char-before)))
(command (save-excursion
- (eshell-bol)
+ (beginning-of-line)
(skip-syntax-forward " ")
(thing-at-point 'sexp)))
(prefix (file-remote-p default-directory)))
diff --git a/lisp/eshell/em-extpipe.el b/lisp/eshell/em-extpipe.el
index 9078c44ed9f..5c9a0a85934 100644
--- a/lisp/eshell/em-extpipe.el
+++ b/lisp/eshell/em-extpipe.el
@@ -36,6 +36,21 @@
(eval-when-compile (require 'files-x))
+;;;###autoload
+(progn
+(defgroup eshell-extpipe nil
+ "Native shell pipelines.
+
+This module lets you construct pipelines that use your operating
+system's shell instead of Eshell's own pipelining support. This
+is especially relevant when executing commands on a remote
+machine using Eshell's Tramp integration: using the remote
+shell's pipelining avoids copying the data which will flow
+through the pipeline to local Emacs buffers and then right back
+again."
+ :tag "External pipelines"
+ :group 'eshell-module))
+
;;; Functions:
(defun eshell-extpipe-initialize () ;Called from `eshell-mode' via intern-soft!
diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el
index 716f5c32b87..9402df43065 100644
--- a/lisp/eshell/em-glob.el
+++ b/lisp/eshell/em-glob.el
@@ -49,8 +49,9 @@
;;; Code:
+(require 'esh-arg)
+(require 'esh-module)
(require 'esh-util)
-(eval-when-compile (require 'eshell))
;;;###autoload
(progn
@@ -144,16 +145,6 @@ This mimics the behavior of zsh if non-nil, but bash if nil."
(defun eshell-add-glob-modifier ()
"Add `eshell-extended-glob' to the argument modifier list."
- (when (memq 'expand-file-name eshell-current-modifiers)
- (setq eshell-current-modifiers
- (delq 'expand-file-name eshell-current-modifiers))
- ;; if this is a glob pattern than needs to be expanded, then it
- ;; will need to expand each member of the resulting glob list
- (add-to-list 'eshell-current-modifiers
- (lambda (list)
- (if (listp list)
- (mapcar 'expand-file-name list)
- (expand-file-name list)))))
(add-to-list 'eshell-current-modifiers 'eshell-extended-glob))
(defun eshell-parse-glob-chars ()
@@ -170,7 +161,7 @@ interpretation."
(end (eshell-find-delimiter
delim (if (eq delim ?\[) ?\] ?\)))))
(if (not end)
- (throw 'eshell-incomplete delim)
+ (throw 'eshell-incomplete (char-to-string delim))
(if (and (eshell-using-module 'eshell-pred)
(eshell-arg-delimiter (1+ end)))
(ignore (goto-char here))
diff --git a/lisp/eshell/em-hist.el b/lisp/eshell/em-hist.el
index 05e9598f530..2c199ec160f 100644
--- a/lisp/eshell/em-hist.el
+++ b/lisp/eshell/em-hist.el
@@ -59,8 +59,6 @@
(require 'ring)
(require 'esh-opt)
(require 'esh-mode)
-(require 'em-pred)
-(require 'eshell)
;;;###autoload
(progn
@@ -82,6 +80,7 @@
(remove-hook 'kill-emacs-hook 'eshell-save-some-history)))
"A hook that gets run when `eshell-hist' is unloaded."
:type 'hook)
+(make-obsolete-variable 'eshell-hist-unload-hook nil "30.1")
(defcustom eshell-history-file-name
(expand-file-name "history" eshell-directory-name)
@@ -555,7 +554,7 @@ See also `eshell-read-history'."
(defun eshell-hist-parse-arguments (&optional b e)
"Parse current command arguments in a history-code-friendly way."
(let ((end (or e (point)))
- (begin (or b (save-excursion (eshell-bol) (point))))
+ (begin (or b (save-excursion (beginning-of-line) (point))))
(posb (list t))
(pose (list t))
(textargs (list t))
@@ -769,6 +768,8 @@ matched."
(defun eshell-hist-parse-modifier (hist reference)
"Parse a history modifier beginning for HIST in REFERENCE."
+ (cl-assert (eshell-using-module 'em-pred))
+ (declare-function eshell-parse-modifiers "em-pred" ())
(let ((here (point)))
(insert reference)
(prog1
@@ -913,7 +914,7 @@ If N is negative, search forwards for the -Nth following match."
eshell-next-matching-input-from-input)))
;; Starting a new search
(setq eshell-matching-input-from-input-string
- (buffer-substring (save-excursion (eshell-bol) (point))
+ (buffer-substring (save-excursion (beginning-of-line) (point))
(point))
eshell-history-index nil))
(eshell-previous-matching-input
@@ -933,7 +934,7 @@ If N is negative, search backwards for the -Nth previous match."
(if (get-text-property (point) 'history)
(progn (beginning-of-line) t)
(let ((before (point)))
- (eshell-bol)
+ (beginning-of-line)
(if (and (not (bolp))
(<= (point) before))
t
@@ -1037,6 +1038,9 @@ If N is negative, search backwards for the -Nth previous match."
(isearch-done)
(eshell-send-input))
+(defun em-hist-unload-function ()
+ (remove-hook 'kill-emacs-hook 'eshell-save-some-history))
+
(provide 'em-hist)
;; Local Variables:
diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el
index 7e2a7578ef9..56c5f262789 100644
--- a/lisp/eshell/em-ls.el
+++ b/lisp/eshell/em-ls.el
@@ -62,24 +62,27 @@ This is useful for enabling human-readable format (-h), for example."
This is useful for enabling human-readable format (-h), for example."
:type '(repeat :tag "Arguments" string))
+(defun eshell-ls-enable-in-dired ()
+ "Use `eshell-ls' to read directories in Dired."
+ (require 'dired)
+ (advice-add 'insert-directory :around #'eshell-ls--insert-directory)
+ (advice-add 'dired :around #'eshell-ls--dired))
+
+(defun eshell-ls-disable-in-dired ()
+ "Stop using `eshell-ls' to read directories in Dired."
+ (advice-remove 'insert-directory #'eshell-ls--insert-directory)
+ (advice-remove 'dired #'eshell-ls--dired))
+
(defcustom eshell-ls-use-in-dired nil
"If non-nil, use `eshell-ls' to read directories in Dired.
Changing this without using customize has no effect."
:set (lambda (symbol value)
- (cond (value
- (require 'dired)
- (advice-add 'insert-directory :around
- #'eshell-ls--insert-directory)
- (advice-add 'dired :around #'eshell-ls--dired))
- (t
- (advice-remove 'insert-directory
- #'eshell-ls--insert-directory)
- (advice-remove 'dired #'eshell-ls--dired)))
+ (if value
+ (eshell-ls-enable-in-dired)
+ (eshell-ls-disable-in-dired))
(set symbol value))
:type 'boolean
:require 'em-ls)
-(add-hook 'eshell-ls-unload-hook #'eshell-ls-unload-function)
-
(defcustom eshell-ls-default-blocksize 1024
"The default blocksize to use when display file sizes with -s."
@@ -954,10 +957,8 @@ to use, and each member of which is the width of that column
(car file)))))
(car file))
-(defun eshell-ls-unload-function ()
- (advice-remove 'insert-directory #'eshell-ls--insert-directory)
- (advice-remove 'dired #'eshell-ls--dired)
- nil)
+(defun em-ls-unload-function ()
+ (eshell-ls-disable-in-dired))
(provide 'em-ls)
diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el
index 14fa27aba06..2ccca092b86 100644
--- a/lisp/eshell/em-pred.el
+++ b/lisp/eshell/em-pred.el
@@ -293,7 +293,7 @@ This function is specially for adding onto `eshell-parse-argument-hook'."
(forward-char)
(let ((end (eshell-find-delimiter ?\( ?\))))
(if (not end)
- (throw 'eshell-incomplete ?\()
+ (throw 'eshell-incomplete "(")
(when (eshell-arg-delimiter (1+ end))
(save-restriction
(narrow-to-region (point) end)
diff --git a/lisp/eshell/em-prompt.el b/lisp/eshell/em-prompt.el
index 575b5a595f1..9f9e58e83d7 100644
--- a/lisp/eshell/em-prompt.el
+++ b/lisp/eshell/em-prompt.el
@@ -27,7 +27,7 @@
;;; Code:
(require 'esh-mode)
-(eval-when-compile (require 'eshell))
+(require 'text-property-search)
;;;###autoload
(progn
@@ -50,7 +50,7 @@ as is common with most shells."
(defcustom eshell-prompt-function
(lambda ()
(concat (abbreviate-file-name (eshell/pwd))
- (if (= (user-uid) 0) " # " " $ ")))
+ (if (= (file-user-uid) 0) " # " " $ ")))
"A function that returns the Eshell prompt string.
Make sure to update `eshell-prompt-regexp' so that it will match your
prompt."
@@ -58,11 +58,12 @@ prompt."
:group 'eshell-prompt)
(defcustom eshell-prompt-regexp "^[^#$\n]* [#$] "
- "A regexp which fully matches your eshell prompt.
-This setting is important, since it affects how eshell will interpret
-the lines that are passed to it.
-If this variable is changed, all Eshell buffers must be exited and
-re-entered for it to take effect."
+ "A regexp which fully matches your Eshell prompt.
+This is useful for navigating by paragraph using \
+\\[forward-paragraph] and \\[backward-paragraph].
+
+If this variable is changed, all Eshell buffers must be exited
+and re-entered for it to take effect."
:type 'regexp
:group 'eshell-prompt)
@@ -123,7 +124,6 @@ arriving, or after."
(if eshell-prompt-regexp
(setq-local paragraph-start eshell-prompt-regexp))
- (setq-local eshell-skip-prompt-function #'eshell-skip-prompt)
(eshell-prompt-mode)))
(defun eshell-emit-prompt ()
@@ -134,72 +134,83 @@ arriving, or after."
(if (not eshell-prompt-function)
(set-marker eshell-last-output-end (point))
(let ((prompt (funcall eshell-prompt-function)))
- (and eshell-highlight-prompt
- (add-text-properties 0 (length prompt)
- '(read-only t
- font-lock-face eshell-prompt
- front-sticky (font-lock-face read-only)
- rear-nonsticky (font-lock-face read-only))
- prompt))
- (eshell-interactive-print prompt)))
+ (add-text-properties
+ 0 (length prompt)
+ (if eshell-highlight-prompt
+ '( read-only t
+ field prompt
+ font-lock-face eshell-prompt
+ front-sticky (read-only field font-lock-face)
+ rear-nonsticky (read-only field font-lock-face))
+ '( field prompt
+ front-sticky (field)
+ rear-nonsticky (field)))
+ prompt)
+ (eshell-interactive-filter nil prompt)))
(run-hooks 'eshell-after-prompt-hook))
-(defun eshell-backward-matching-input (regexp arg)
- "Search backward through buffer for match for REGEXP.
-Matches are searched for on lines that match `eshell-prompt-regexp'.
-With prefix argument N, search for Nth previous match.
-If N is negative, find the next or Nth next match."
- (interactive (eshell-regexp-arg "Backward input matching (regexp): "))
- (let* ((re (concat eshell-prompt-regexp ".*" regexp))
- (pos (save-excursion (end-of-line (if (> arg 0) 0 1))
- (if (re-search-backward re nil t arg)
- (point)))))
- (if (null pos)
- (progn (message "Not found")
- (ding))
- (goto-char pos)
- (eshell-bol))))
-
(defun eshell-forward-matching-input (regexp arg)
- "Search forward through buffer for match for REGEXP.
-Matches are searched for on lines that match `eshell-prompt-regexp'.
-With prefix argument N, search for Nth following match.
-If N is negative, find the previous or Nth previous match."
+ "Search forward through buffer for command input that matches REGEXP.
+With prefix argument N, search for Nth next match. If N is
+negative, find the Nth previous match."
(interactive (eshell-regexp-arg "Forward input matching (regexp): "))
- (eshell-backward-matching-input regexp (- arg)))
+ (let ((direction (if (> arg 0) 1 -1))
+ (count (abs arg)))
+ (unless (catch 'found
+ (while (> count 0)
+ (eshell-next-prompt direction)
+ (when (and (string-match regexp (field-string))
+ (= (setq count (1- count)) 0))
+ (throw 'found t))))
+ (message "Not found")
+ (ding))))
+
+(defun eshell-backward-matching-input (regexp arg)
+ "Search backward through buffer for command input that matches REGEXP.
+With prefix argument N, search for Nth previous match. If N is
+negative, find the Nth next match."
+ (interactive (eshell-regexp-arg "Backward input matching (regexp): "))
+ (eshell-forward-matching-input regexp (- arg)))
(defun eshell-next-prompt (n)
- "Move to end of Nth next prompt in the buffer.
-See `eshell-prompt-regexp'."
+ "Move to end of Nth next prompt in the buffer."
(interactive "p")
- (if eshell-highlight-prompt
- (progn
- (while (< n 0)
- (while (and (re-search-backward eshell-prompt-regexp nil t)
- (not (get-text-property (match-beginning 0) 'read-only))))
- (setq n (1+ n)))
- (while (> n 0)
- (while (and (re-search-forward eshell-prompt-regexp nil t)
- (not (get-text-property (match-beginning 0) 'read-only))))
- (setq n (1- n))))
- (re-search-forward eshell-prompt-regexp nil t n))
- (eshell-skip-prompt))
+ (if (natnump n)
+ (while (and (> n 0)
+ (text-property-search-forward 'field 'prompt t))
+ (setq n (1- n)))
+ (let (match this-match)
+ (forward-line 0) ; Don't count prompt on current line.
+ (while (and (< n 0)
+ (setq this-match (text-property-search-backward
+ 'field 'prompt t)))
+ (setq match this-match
+ n (1+ n)))
+ (when match
+ (goto-char (prop-match-end match))))))
(defun eshell-previous-prompt (n)
- "Move to end of Nth previous prompt in the buffer.
-See `eshell-prompt-regexp'."
+ "Move to end of Nth previous prompt in the buffer."
(interactive "p")
- (forward-line 0) ; Don't count prompt on current line.
(eshell-next-prompt (- n)))
(defun eshell-skip-prompt ()
"Skip past the text matching regexp `eshell-prompt-regexp'.
If this takes us past the end of the current line, don't skip at all."
+ (declare (obsolete nil "30.1"))
(let ((eol (line-end-position)))
(if (and (looking-at eshell-prompt-regexp)
(<= (match-end 0) eol))
(goto-char (match-end 0)))))
+(defun eshell-bol-ignoring-prompt (arg)
+ "Move point to the beginning of the current line, past the prompt (if any).
+With argument ARG not nil or 1, move forward ARG - 1 lines
+first (see `move-beginning-of-line' for more information)."
+ (interactive "^p")
+ (let ((inhibit-field-text-motion t))
+ (move-beginning-of-line arg)))
+
(provide 'em-prompt)
;; Local Variables:
diff --git a/lisp/eshell/em-rebind.el b/lisp/eshell/em-rebind.el
index 2c95d4fdffb..75a2848a9d5 100644
--- a/lisp/eshell/em-rebind.el
+++ b/lisp/eshell/em-rebind.el
@@ -24,7 +24,6 @@
;;; Code:
(require 'esh-mode)
-(eval-when-compile (require 'eshell))
;;;###autoload
(progn
@@ -50,9 +49,7 @@ the behavior of normal shells while the user editing new input text."
:group 'eshell-rebind)
(defcustom eshell-rebind-keys-alist
- '(([(control ?a)] . eshell-bol)
- ([home] . eshell-bol)
- ([(control ?d)] . eshell-delchar-or-maybe-eof)
+ '(([(control ?d)] . eshell-delchar-or-maybe-eof)
([backspace] . eshell-delete-backward-char)
([delete] . eshell-delete-backward-char)
([(control ?w)] . backward-kill-word)
@@ -190,7 +187,7 @@ lock it at that."
(and eshell-remap-previous-input
(setq begin
(save-excursion
- (eshell-bol)
+ (beginning-of-line)
(and (not (bolp)) (point))))
(>= pos begin)
(<= pos (line-end-position))
diff --git a/lisp/eshell/em-smart.el b/lisp/eshell/em-smart.el
index ca04c429785..d8b7fadc2c2 100644
--- a/lisp/eshell/em-smart.el
+++ b/lisp/eshell/em-smart.el
@@ -69,7 +69,6 @@
;;; Code:
(require 'esh-mode)
-(eval-when-compile (require 'eshell))
;;;###autoload
(progn
@@ -100,6 +99,7 @@ it to get a real sense of how it works."
"A hook that gets run when `eshell-smart' is unloaded."
:type 'hook
:group 'eshell-smart)
+(make-obsolete-variable 'eshell-smart-unload-hook nil "30.1")
(defcustom eshell-review-quick-commands nil
"If t, always review commands.
@@ -322,6 +322,9 @@ and the end of the buffer are still visible."
(if clear
(remove-hook 'pre-command-hook 'eshell-smart-display-move t))))
+(defun em-smart-unload-hook ()
+ (remove-hook 'window-configuration-change-hook #'eshell-refresh-windows))
+
(provide 'em-smart)
;; Local Variables:
diff --git a/lisp/eshell/em-term.el b/lisp/eshell/em-term.el
index a4d777e4a0d..ab26da857b7 100644
--- a/lisp/eshell/em-term.el
+++ b/lisp/eshell/em-term.el
@@ -34,7 +34,6 @@
(require 'cl-lib)
(require 'esh-util)
(require 'esh-ext)
-(eval-when-compile (require 'eshell))
(require 'term)
;;;###autoload
diff --git a/lisp/eshell/em-tramp.el b/lisp/eshell/em-tramp.el
index 13dd62e1617..94eb9797033 100644
--- a/lisp/eshell/em-tramp.el
+++ b/lisp/eshell/em-tramp.el
@@ -29,8 +29,7 @@
(require 'esh-cmd)
(eval-when-compile
- (require 'esh-mode)
- (require 'eshell))
+ (require 'esh-mode))
(require 'tramp)
diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el
index f88a06d2e95..a792493e071 100644
--- a/lisp/eshell/em-unix.el
+++ b/lisp/eshell/em-unix.el
@@ -145,9 +145,10 @@ Otherwise, Emacs will attempt to use rsh to invoke du on the remote machine."
(add-hook 'pcomplete-try-first-hook
'eshell-complete-host-reference nil t))
(setq-local eshell-complex-commands
- (append '("grep" "egrep" "fgrep" "agrep" "glimpse" "locate"
- "cat" "time" "cp" "mv" "make" "du" "diff")
- eshell-complex-commands)))
+ (append '("grep" "egrep" "fgrep" "agrep" "rgrep"
+ "glimpse" "locate" "cat" "time" "cp" "mv"
+ "make" "du" "diff")
+ eshell-complex-commands)))
(defalias 'eshell/date 'current-time-string)
(defalias 'eshell/basename 'file-name-nondirectory)
@@ -773,6 +774,10 @@ external command."
"Use Emacs grep facility instead of calling external agrep."
(eshell-grep "agrep" args))
+(defun eshell/rgrep (&rest args)
+ "Use Emacs grep facility instead of calling external rgrep."
+ (eshell-grep "grep" (append '("-rH") args) t))
+
(defun eshell/glimpse (&rest args)
"Use Emacs grep facility instead of calling external glimpse."
(let (null-device)
@@ -786,10 +791,14 @@ external command."
(defun eshell-complete-host-reference ()
"If there is a host reference, complete it."
- (let ((arg (pcomplete-actual-arg))
- index)
- (when (setq index (string-match "@[a-z.]*\\'" arg))
- (setq pcomplete-stub (substring arg (1+ index))
+ (let ((arg (pcomplete-actual-arg)))
+ (when (string-match
+ (rx ;; Match an "@", but not immediately following a "$".
+ (or string-start (not "$")) "@"
+ (group (* (any "a-z.")))
+ string-end)
+ arg)
+ (setq pcomplete-stub (substring arg (match-beginning 1))
pcomplete-last-completion-raw t)
(throw 'pcomplete-completions (pcomplete-read-host-names)))))
diff --git a/lisp/eshell/em-xtra.el b/lisp/eshell/em-xtra.el
index defaa7b2887..45c3ea3c0fc 100644
--- a/lisp/eshell/em-xtra.el
+++ b/lisp/eshell/em-xtra.el
@@ -25,8 +25,6 @@
(require 'cl-lib)
(require 'esh-util)
-(eval-when-compile
- (require 'eshell))
;; There are no items in this custom group, but eshell modules (ab)use
;; custom groups.
diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el
index 9aab3af9b47..aa1e8f77ea5 100644
--- a/lisp/eshell/esh-arg.el
+++ b/lisp/eshell/esh-arg.el
@@ -28,6 +28,9 @@
;;; Code:
(require 'esh-util)
+(require 'esh-module)
+
+(require 'pcomplete)
(eval-when-compile
(require 'cl-lib))
@@ -175,7 +178,11 @@ treated as a literal character."
"Initialize the argument parsing code."
(eshell-arg-mode)
(setq-local eshell-inside-quote-regexp nil)
- (setq-local eshell-outside-quote-regexp nil))
+ (setq-local eshell-outside-quote-regexp nil)
+
+ (when (eshell-using-module 'eshell-cmpl)
+ (add-hook 'pcomplete-try-first-hook
+ #'eshell-complete-special-reference nil t)))
(defun eshell-insert-buffer-name (buffer-name)
"Insert BUFFER-NAME into the current buffer at point."
@@ -238,13 +245,53 @@ convert the result to a number as well."
(eshell-convert-to-number result)
result)))
+(defun eshell-concat-groups (quoted &rest args)
+ "Concatenate groups of arguments in ARGS and return the result.
+QUOTED is passed to `eshell-concat' (which see) and, if non-nil,
+allows values to be converted to numbers where appropriate.
+
+ARGS should be a list of lists of arguments, such as that
+produced by `eshell-prepare-slice'. \"Adjacent\" values of
+consecutive arguments will be passed to `eshell-concat'. For
+example, if ARGS is
+
+ ((list a) (list b) (list c d e) (list f g)),
+
+then the result will be:
+
+ ((eshell-concat QUOTED a b c)
+ d
+ (eshell-concat QUOTED e f)
+ g)."
+ (let (result current-arg)
+ (dolist (arg args)
+ (when arg
+ (push (car arg) current-arg)
+ (when (length> arg 1)
+ (push (apply #'eshell-concat quoted (nreverse current-arg))
+ result)
+ (dolist (inner (butlast (cdr arg)))
+ (push inner result))
+ (setq current-arg (list (car (last arg)))))))
+ (when current-arg
+ (push (apply #'eshell-concat quoted (nreverse current-arg))
+ result))
+ (nreverse result)))
+
(defun eshell-resolve-current-argument ()
"If there are pending modifications to be made, make them now."
(when eshell-current-argument
(when eshell-arg-listified
- (setq eshell-current-argument
- (append (list 'eshell-concat eshell-current-quoted)
- eshell-current-argument))
+ (if-let ((grouped-terms (eshell-prepare-splice
+ eshell-current-argument)))
+ (setq eshell-current-argument
+ `(eshell-splice-args
+ (eshell-concat-groups ,eshell-current-quoted
+ ,@grouped-terms)))
+ ;; If no terms are spliced, use a simpler command form.
+ (setq eshell-current-argument
+ (append (list 'eshell-concat eshell-current-quoted)
+ eshell-current-argument)))
(setq eshell-arg-listified nil))
(while eshell-current-modifiers
(setq eshell-current-argument
@@ -261,7 +308,8 @@ argument list in place of the value of the current argument."
(setq eshell-current-argument (car arguments))
(cl-assert (and (not eshell-arg-listified)
(not eshell-current-modifiers)))
- (setq eshell-current-argument (cons 'eshell-flatten-args arguments))))
+ (setq eshell-current-argument
+ (cons 'eshell-splice-immediately arguments))))
(throw 'eshell-arg-done t))
(defun eshell-quote-argument (string)
@@ -302,7 +350,8 @@ Point is left at the end of the arguments."
(buffer-substring here (point-max))))
(when arg
(nconc args
- (if (eq (car-safe arg) 'eshell-flatten-args)
+ (if (eq (car-safe arg)
+ 'eshell-splice-immediately)
(cdr arg)
(list arg))))))))
(throw 'eshell-incomplete (if (listp delim)
@@ -348,6 +397,10 @@ Point is left at the end of the arguments."
"A stub function that generates an error if a floating operator is found."
(error "Unhandled operator in input text"))
+(defsubst eshell-splice-args (&rest _args)
+ "A stub function that generates an error if a floating splice is found."
+ (error "Splice operator is not permitted in this context"))
+
(defsubst eshell-looking-at-backslash-return (pos)
"Test whether a backslash-return sequence occurs at POS."
(and (eq (char-after pos) ?\\)
@@ -375,29 +428,33 @@ backslash is in a quoted string, the backslash and the character
after are both returned."
(when (eq (char-after) ?\\)
(when (eshell-looking-at-backslash-return (point))
- (throw 'eshell-incomplete ?\\))
+ (throw 'eshell-incomplete "\\"))
(forward-char 2) ; Move one char past the backslash.
- (if (eq (char-before) ?\n)
- ;; Escaped newlines are extra-special: they expand to an empty
- ;; token to allow for continuing Eshell commands across
- ;; multiple lines.
- 'eshell-empty-token
- ;; If the char is in a quote, backslash only has special meaning
- ;; if it is escaping a special char.
- (if eshell-current-quoted
- (if (memq (char-before) eshell-special-chars-inside-quoting)
- (list 'eshell-escape-arg (char-to-string (char-before)))
- (concat "\\" (char-to-string (char-before))))
- (if (memq (char-before) eshell-special-chars-outside-quoting)
- (list 'eshell-escape-arg (char-to-string (char-before)))
- (char-to-string (char-before)))))))
+ (let ((special-chars (if eshell-current-quoted
+ eshell-special-chars-inside-quoting
+ eshell-special-chars-outside-quoting)))
+ (cond
+ ;; Escaped newlines are extra-special: they expand to an empty
+ ;; token to allow for continuing Eshell commands across
+ ;; multiple lines.
+ ((eq (char-before) ?\n)
+ 'eshell-empty-token)
+ ((memq (char-before) special-chars)
+ (list 'eshell-escape-arg (char-to-string (char-before))))
+ ;; If the char is in a quote, backslash only has special
+ ;; meaning if it is escaping a special char. Otherwise, the
+ ;; result is the literal string "\c".
+ (eshell-current-quoted
+ (concat "\\" (char-to-string (char-before))))
+ (t
+ (char-to-string (char-before)))))))
(defun eshell-parse-literal-quote ()
"Parse a literally quoted string. Nothing has special meaning!"
(if (eq (char-after) ?\')
(let ((end (eshell-find-delimiter ?\' ?\')))
(if (not end)
- (throw 'eshell-incomplete ?\')
+ (throw 'eshell-incomplete "'")
(let ((string (buffer-substring-no-properties (1+ (point)) end)))
(goto-char (1+ end))
(while (string-match "''" string)
@@ -410,7 +467,7 @@ after are both returned."
(let* ((end (eshell-find-delimiter ?\" ?\" nil nil t))
(eshell-current-quoted t))
(if (not end)
- (throw 'eshell-incomplete ?\")
+ (throw 'eshell-incomplete "\"")
(prog1
(save-restriction
(forward-char)
@@ -456,21 +513,28 @@ If the form has no `type', the syntax is parsed as if `type' were
\"buffer\"."
(when (and (not eshell-current-argument)
(not eshell-current-quoted)
- (looking-at "#<\\(\\(buffer\\|process\\)\\s-\\)?"))
+ (looking-at (rx "#<" (? (group (or "buffer" "process"))
+ space))))
(let ((here (point)))
(goto-char (match-end 0)) ;; Go to the end of the match.
- (let ((buffer-p (if (match-string 1)
- (string= (match-string 2) "buffer")
- t)) ;; buffer-p is non-nil by default.
+ (let ((buffer-p (if (match-beginning 1)
+ (equal (match-string 1) "buffer")
+ t)) ; With no type keyword, assume we want a buffer.
(end (eshell-find-delimiter ?\< ?\>)))
(when (not end)
- (throw 'eshell-incomplete ?\<))
+ (when (match-beginning 1)
+ (goto-char (match-beginning 1)))
+ (throw 'eshell-incomplete "#<"))
(if (eshell-arg-delimiter (1+ end))
(prog1
- (list (if buffer-p 'get-buffer-create 'get-process)
- (replace-regexp-in-string
- (rx "\\" (group (or "\\" "<" ">"))) "\\1"
- (buffer-substring-no-properties (point) end)))
+ (list (if buffer-p #'get-buffer-create #'get-process)
+ ;; FIXME: We should probably parse this as a
+ ;; real Eshell argument so that we get the
+ ;; benefits of quoting, variable-expansion, etc.
+ (string-trim-right
+ (replace-regexp-in-string
+ (rx "\\" (group anychar)) "\\1"
+ (buffer-substring-no-properties (point) end))))
(goto-char (1+ end)))
(ignore (goto-char here)))))))
@@ -496,5 +560,69 @@ If the form has no `type', the syntax is parsed as if `type' were
(char-to-string (char-after)))))
(goto-char end)))))))
+(defun eshell-prepare-splice (args)
+ "Prepare a list of ARGS for splicing, if any arg requested a splice.
+This looks for `eshell-splice-args' as the CAR of each argument,
+and if found, returns a grouped list like:
+
+ ((list arg-1) (list arg-2) spliced-arg-3 ...)
+
+This allows callers of this function to build the final spliced
+list by concatenating each element together, e.g. with
+
+ (apply #\\='append grouped-list)
+
+If no argument requested a splice, return nil."
+ (let* ((splicep nil)
+ ;; Group each arg like ((list arg-1) (list arg-2) ...),
+ ;; splicing in `eshell-splice-args' args. This lets us
+ ;; apply spliced args correctly elsewhere.
+ (grouped-args
+ (mapcar (lambda (i)
+ (if (eq (car-safe i) 'eshell-splice-args)
+ (progn
+ (setq splicep t)
+ (cadr i))
+ `(list ,i)))
+ args)))
+ (when splicep
+ grouped-args)))
+
+;;;_* Special ref completion
+
+(defun eshell-complete-special-reference ()
+ "If there is a special reference, complete it."
+ (let ((arg (pcomplete-actual-arg)))
+ (when (string-match
+ (rx string-start
+ "#<" (? (group (or "buffer" "process")) space)
+ (group (* anychar))
+ string-end)
+ arg)
+ (let ((all-results (if (equal (match-string 1 arg) "process")
+ (mapcar #'process-name (process-list))
+ (mapcar #'buffer-name (buffer-list))))
+ (saw-type (match-beginning 1)))
+ (unless saw-type
+ ;; Include the special reference types as completion options.
+ (setq all-results (append '("buffer" "process") all-results)))
+ (setq pcomplete-stub (replace-regexp-in-string
+ (rx "\\" (group anychar)) "\\1"
+ (substring arg (match-beginning 2))))
+ ;; When finished with completion, add a trailing ">" (unless
+ ;; we just completed the initial "buffer" or "process"
+ ;; keyword).
+ (add-function
+ :before (var pcomplete-exit-function)
+ (lambda (value status)
+ (when (and (eq status 'finished)
+ (or saw-type
+ (not (member value '("buffer" "process")))))
+ (if (looking-at ">")
+ (goto-char (match-end 0))
+ (insert ">")))))
+ (throw 'pcomplete-completions
+ (all-completions pcomplete-stub all-results))))))
+
(provide 'esh-arg)
;;; esh-arg.el ends here
diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el
index 706477a5f45..94aa2ed8906 100644
--- a/lisp/eshell/esh-cmd.el
+++ b/lisp/eshell/esh-cmd.el
@@ -293,6 +293,17 @@ CDR are the same process.
When the process in the CDR completes, resume command evaluation.")
+(defvar eshell-allow-commands t
+ "If non-nil, allow evaluating command forms (including Lisp forms).
+If you want to forbid command forms, you can let-bind this to a
+non-nil value before calling `eshell-do-eval'. Then, any command
+forms will signal `eshell-commands-forbidden'. This is useful
+if, for example, you want to evaluate simple expressions like
+variable expansions, but not fully-evaluate the command. See
+also `eshell-complete-parse-arguments'.")
+
+(define-error 'eshell-commands-forbidden "Commands forbidden")
+
;;; Functions:
(defsubst eshell-interactive-process-p ()
@@ -343,7 +354,7 @@ This only returns external (non-Lisp) processes."
#'eshell-complete-lisp-symbols nil t)))
(defun eshell-complete-lisp-symbols ()
- "If there is a user reference, complete it."
+ "If there is a Lisp symbol, complete it."
(let ((arg (pcomplete-actual-arg)))
(when (string-match (concat "\\`" eshell-lisp-regexp) arg)
(setq pcomplete-stub (substring arg (match-end 0))
@@ -410,7 +421,8 @@ hooks should be run before and after the command."
(string= (car eshell--sep-terms) ";"))
(eshell-parse-pipeline cmd)
`(eshell-do-subjob
- (list ,(eshell-parse-pipeline cmd)))))
+ (cons :eshell-background
+ ,(eshell-parse-pipeline cmd)))))
(setq eshell--sep-terms (cdr eshell--sep-terms))
(if eshell-in-pipeline-p
cmd
@@ -418,8 +430,11 @@ hooks should be run before and after the command."
(eshell-separate-commands terms "[&;]" nil 'eshell--sep-terms))))
(let ((cmd commands))
(while cmd
- (if (cdr cmd)
- (setcar cmd `(eshell-commands ,(car cmd))))
+ ;; Copy I/O handles so each full statement can manipulate them
+ ;; if they like. Steal the handles for the last command in
+ ;; the list; we won't use the originals again anyway.
+ (setcar cmd `(eshell-with-copied-handles
+ ,(car cmd) ,(not (cdr cmd))))
(setq cmd (cdr cmd))))
(if toplevel
`(eshell-commands (progn
@@ -480,14 +495,19 @@ hooks should be run before and after the command."
(let ((sym (if eshell-in-pipeline-p
'eshell-named-command*
'eshell-named-command))
- (cmd (car terms))
- (args (cdr terms)))
- (if args
- (list sym cmd `(list ,@(cdr terms)))
- (list sym cmd))))
-
-(defvar eshell-command-body)
-(defvar eshell-test-body)
+ (grouped-terms (eshell-prepare-splice terms)))
+ (cond
+ (grouped-terms
+ `(let ((terms (nconc ,@grouped-terms)))
+ (,sym (car terms) (cdr terms))))
+ ;; If no terms are spliced, use a simpler command form.
+ ((cdr terms)
+ (list sym (car terms) `(list ,@(cdr terms))))
+ (t
+ (list sym (car terms))))))
+
+(defvar eshell--command-body)
+(defvar eshell--test-body)
(defsubst eshell-invokify-arg (arg &optional share-output silent)
"Change ARG so it can be invoked from a structured command.
@@ -523,27 +543,24 @@ of its argument (i.e., use of a Lisp special form), it must be
implemented via rewriting, rather than as a function."
(if (and (equal (car terms) "for")
(equal (nth 2 terms) "in"))
- (let ((body (car (last terms))))
+ (let ((for-items (make-symbol "for-items"))
+ (body (car (last terms))))
(setcdr (last terms 2) nil)
- `(let ((for-items
- (copy-tree
- (append
- ,@(mapcar
- (lambda (elem)
- (if (listp elem)
- elem
- `(list ,elem)))
- (cdr (cddr terms))))))
- (eshell-command-body '(nil))
- (eshell-test-body '(nil)))
- (while (car for-items)
- (let ((,(intern (cadr terms)) (car for-items))
+ `(let ((,for-items
+ (append
+ ,@(mapcar
+ (lambda (elem)
+ (if (listp elem)
+ elem
+ `(list ,elem)))
+ (nthcdr 3 terms)))))
+ (while ,for-items
+ (let ((,(intern (cadr terms)) (car ,for-items))
(eshell--local-vars (cons ',(intern (cadr terms))
- eshell--local-vars)))
+ eshell--local-vars)))
(eshell-protect
,(eshell-invokify-arg body t)))
- (setcar for-items (cadr for-items))
- (setcdr for-items (cddr for-items)))
+ (setq ,for-items (cdr ,for-items)))
(eshell-close-handles)))))
(defun eshell-structure-basic-command (func names keyword test body
@@ -573,8 +590,7 @@ function."
;; finally, create the form that represents this structured
;; command
- `(let ((eshell-command-body '(nil))
- (eshell-test-body '(nil)))
+ `(progn
(,func ,test ,body ,else)
(eshell-close-handles)))
@@ -672,13 +688,13 @@ This means an exit code of 0."
(or (= (point-max) (1+ (point)))
(not (eq (char-after (1+ (point))) ?\}))))
(let ((end (eshell-find-delimiter ?\{ ?\})))
- (if (not end)
- (throw 'eshell-incomplete ?\{)
- (when (eshell-arg-delimiter (1+ end))
- (prog1
- `(eshell-as-subcommand
- ,(eshell-parse-command (cons (1+ (point)) end)))
- (goto-char (1+ end))))))))
+ (unless end
+ (throw 'eshell-incomplete "{"))
+ (when (eshell-arg-delimiter (1+ end))
+ (prog1
+ `(eshell-as-subcommand
+ ,(eshell-parse-command (cons (1+ (point)) end)))
+ (goto-char (1+ end)))))))
(defun eshell-parse-lisp-argument ()
"Parse a Lisp expression which is specified as an argument."
@@ -690,7 +706,7 @@ This means an exit code of 0."
(condition-case nil
(read (current-buffer))
(end-of-file
- (throw 'eshell-incomplete ?\()))))
+ (throw 'eshell-incomplete "(")))))
(if (eshell-arg-delimiter)
`(eshell-command-to-value
(eshell-lisp-command (quote ,obj)))
@@ -733,18 +749,20 @@ if none)."
;; The structure of the following macros is very important to
;; `eshell-do-eval' [Iterative evaluation]:
;;
-;; @ Don't use forms that conditionally evaluate their arguments, such
-;; as `setq', `if', `while', `let*', etc. The only special forms
-;; that can be used are `let', `condition-case' and
-;; `unwind-protect'.
-;;
-;; @ The main body of a `let' can contain only one form. Use `progn'
-;; if necessary.
+;; @ Don't use special forms that conditionally evaluate their
+;; arguments, such as `let*', unless Eshell explicitly supports
+;; them. Eshell supports the following special forms: `catch',
+;; `condition-case', `if', `let', `prog1', `progn', `quote', `setq',
+;; `unwind-protect', and `while'.
;;
;; @ The two `special' variables are `eshell-current-handles' and
;; `eshell-current-subjob-p'. Bind them locally with a `let' if you
;; need to change them. Change them directly only if your intention
;; is to change the calling environment.
+;;
+;; These rules likewise apply to any other code that generates forms
+;; that `eshell-do-eval' will evaluated, such as command rewriting
+;; hooks (see `eshell-rewrite-command-hook' and friends).
(defmacro eshell-do-subjob (object)
"Evaluate a command OBJECT as a subjob.
@@ -783,16 +801,17 @@ this grossness will be made to disappear by using `call/cc'..."
(defvar eshell-output-handle) ;Defined in esh-io.el.
(defvar eshell-error-handle) ;Defined in esh-io.el.
-(defmacro eshell-copy-handles (object)
- "Duplicate current I/O handles, so OBJECT works with its own copy."
+(defmacro eshell-with-copied-handles (object &optional steal-p)
+ "Duplicate current I/O handles, so OBJECT works with its own copy.
+If STEAL-P is non-nil, these new handles will be stolen from the
+current ones (see `eshell-duplicate-handles')."
`(let ((eshell-current-handles
- (eshell-create-handles
- (car (aref eshell-current-handles
- eshell-output-handle)) nil
- (car (aref eshell-current-handles
- eshell-error-handle)) nil)))
+ (eshell-duplicate-handles eshell-current-handles ,steal-p)))
,object))
+(define-obsolete-function-alias 'eshell-copy-handles
+ #'eshell-with-copied-handles "30.1")
+
(defmacro eshell-protect (object)
"Protect I/O handles, so they aren't get closed after eval'ing OBJECT."
`(progn
@@ -803,7 +822,7 @@ this grossness will be made to disappear by using `call/cc'..."
"Execute the commands in PIPELINE, connecting each to one another.
This macro calls itself recursively, with NOTFIRST non-nil."
(when (setq pipeline (cadr pipeline))
- `(eshell-copy-handles
+ `(eshell-with-copied-handles
(progn
,(when (cdr pipeline)
`(let ((nextproc
@@ -828,7 +847,9 @@ This macro calls itself recursively, with NOTFIRST non-nil."
(let ((proc ,(car pipeline)))
(set headproc (or proc (symbol-value headproc)))
(set tailproc (or (symbol-value tailproc) proc))
- proc))))))
+ proc)))
+ ;; Steal handles if this is the last item in the pipeline.
+ ,(null (cdr pipeline)))))
(defmacro eshell-do-pipelines-synchronously (pipeline)
"Execute the commands in PIPELINE in sequence synchronously.
@@ -873,40 +894,42 @@ This is used on systems where async subprocesses are not supported."
(set headproc nil)
(set tailproc nil)
(progn
- ,(if (fboundp 'make-process)
+ ,(if eshell-supports-asynchronous-processes
`(eshell-do-pipelines ,pipeline)
- `(let ((tail-handles (eshell-create-handles
- (car (aref eshell-current-handles
- ,eshell-output-handle)) nil
- (car (aref eshell-current-handles
- ,eshell-error-handle)) nil)))
+ `(let ((tail-handles (eshell-duplicate-handles
+ eshell-current-handles)))
(eshell-do-pipelines-synchronously ,pipeline)))
(eshell-process-identity (cons (symbol-value headproc)
(symbol-value tailproc))))))
(defmacro eshell-as-subcommand (command)
- "Execute COMMAND using a temp buffer.
-This is used so that certain Lisp commands, such as `cd', when
-executed in a subshell, do not disturb the environment of the main
-Eshell buffer."
+ "Execute COMMAND as a subcommand.
+A subcommand creates a local environment so that any changes to
+the environment don't propagate outside of the subcommand's
+scope. This lets you use commands like `cd' within a subcommand
+without changing the current directory of the main Eshell
+buffer."
`(let ,eshell-subcommand-bindings
,command))
(defmacro eshell-do-command-to-value (object)
"Run a subcommand prepared by `eshell-command-to-value'.
This avoids the need to use `let*'."
+ (declare (obsolete nil "30.1"))
`(let ((eshell-current-handles
(eshell-create-handles value 'overwrite)))
(progn
,object
(symbol-value value))))
-(defmacro eshell-command-to-value (object)
- "Run OBJECT synchronously, returning its result as a string.
-Returns a string comprising the output from the command."
- `(let ((value (make-symbol "eshell-temp"))
- (eshell-in-pipeline-p nil))
- (eshell-do-command-to-value ,object)))
+(defmacro eshell-command-to-value (command)
+ "Run an Eshell COMMAND synchronously, returning its output."
+ (let ((value (make-symbol "eshell-temp")))
+ `(let ((eshell-in-pipeline-p nil)
+ (eshell-current-handles
+ (eshell-create-handles ',value 'overwrite)))
+ ,command
+ ,value)))
;;;_* Iterative evaluation
;;
@@ -1014,7 +1037,12 @@ produced by `eshell-parse-command'."
(cadr result)))
(defun eshell-eval-command (command &optional input)
- "Evaluate the given COMMAND iteratively."
+ "Evaluate the given COMMAND iteratively.
+Return the process (or head and tail processes) created by
+COMMAND, if any. If COMMAND is a background command, return the
+process(es) in a cons cell like:
+
+ (:eshell-background . PROCESS)"
(if eshell-current-command
;; We can just stick the new command at the end of the current
;; one, and everything will happen as it should.
@@ -1030,22 +1058,12 @@ produced by `eshell-parse-command'."
(erase-buffer)
(insert "command: \"" input "\"\n")))
(setq eshell-current-command command)
- (let* ((delim (catch 'eshell-incomplete
- (eshell-resume-eval)))
- (val (car-safe delim))
- (val-is-process (or (eshell-processp val)
- (eshell-process-pair-p val))))
- ;; If the return value of `eshell-resume-eval' is wrapped in a
- ;; list, it indicates that the command was run asynchronously.
- ;; In that case, unwrap the value before checking the delimiter
- ;; value.
- (if (and val
- (not val-is-process)
- (not (eq val t)))
- (error "Unmatched delimiter: %S" val)
- ;; Eshell-command expect a list like (<process>) to know if the
- ;; command should be async or not.
- (or (and val-is-process delim) val)))))
+ (let* (result
+ (delim (catch 'eshell-incomplete
+ (ignore (setq result (eshell-resume-eval))))))
+ (when delim
+ (error "Unmatched delimiter: %S" delim))
+ result)))
(defun eshell-resume-command (proc status)
"Resume the current command when a process ends."
@@ -1087,9 +1105,17 @@ produced by `eshell-parse-command'."
(eshell-debug-command ,(concat "done " (eval tag)) form))))
(defun eshell-do-eval (form &optional synchronous-p)
- "Evaluate form, simplifying it as we go.
+ "Evaluate FORM, simplifying it as we go.
Unless SYNCHRONOUS-P is non-nil, throws `eshell-defer' if it needs to
-be finished later after the completion of an asynchronous subprocess."
+be finished later after the completion of an asynchronous subprocess.
+
+As this function evaluates FORM, it will gradually replace
+subforms with the (quoted) result of evaluating them. For
+example, a function call is replaced with the result of the call.
+This allows us to resume evaluation of FORM after something
+inside throws `eshell-defer' simply by calling this function
+again. Any forms preceding one that throw `eshell-defer' will
+have been replaced by constants."
(cond
((not (listp form))
(list 'quote (eval form)))
@@ -1110,42 +1136,46 @@ be finished later after the completion of an asynchronous subprocess."
(let ((args (cdr form)))
(cond
((eq (car form) 'while)
+ ;; Wrap the `while' form with let-bindings for the command and
+ ;; test bodies. This helps us resume evaluation midway
+ ;; through the loop.
+ (let ((new-form (copy-tree `(let ((eshell--command-body nil)
+ (eshell--test-body nil))
+ (eshell--wrapped-while ,@args)))))
+ (eshell-manipulate "modifying while form"
+ (setcar form (car new-form))
+ (setcdr form (cdr new-form)))
+ (eshell-do-eval form synchronous-p)))
+ ((eq (car form) 'eshell--wrapped-while)
+ (when eshell--command-body
+ (cl-assert (not synchronous-p))
+ (eshell-do-eval eshell--command-body)
+ (setq eshell--command-body nil
+ eshell--test-body nil))
;; `copy-tree' is needed here so that the test argument
- ;; doesn't get modified and thus always yield the same result.
- (when (car eshell-command-body)
- (cl-assert (not synchronous-p))
- (eshell-do-eval (car eshell-command-body))
- (setcar eshell-command-body nil)
- (setcar eshell-test-body nil))
- (unless (car eshell-test-body)
- (setcar eshell-test-body (copy-tree (car args))))
- (while (cadr (eshell-do-eval (car eshell-test-body) synchronous-p))
- (setcar eshell-command-body
- (if (cddr args)
- `(progn ,@(copy-tree (cdr args)))
- (copy-tree (cadr args))))
- (eshell-do-eval (car eshell-command-body) synchronous-p)
- (setcar eshell-command-body nil)
- (setcar eshell-test-body (copy-tree (car args))))
- (setcar eshell-command-body nil))
+ ;; doesn't get modified and thus always yield the same result.
+ (unless eshell--test-body
+ (setq eshell--test-body (copy-tree (car args))))
+ (while (cadr (eshell-do-eval eshell--test-body synchronous-p))
+ (setq eshell--command-body
+ (if (cddr args)
+ `(progn ,@(copy-tree (cdr args)))
+ (copy-tree (cadr args))))
+ (eshell-do-eval eshell--command-body synchronous-p)
+ (setq eshell--command-body nil
+ eshell--test-body (copy-tree (car args)))))
((eq (car form) 'if)
- ;; `copy-tree' is needed here so that the test argument
- ;; doesn't get modified and thus always yield the same result.
- (if (car eshell-command-body)
- (progn
- (cl-assert (not synchronous-p))
- (eshell-do-eval (car eshell-command-body)))
- (unless (car eshell-test-body)
- (setcar eshell-test-body (copy-tree (car args))))
- (setcar eshell-command-body
- (copy-tree
- (if (cadr (eshell-do-eval (car eshell-test-body)
- synchronous-p))
- (cadr args)
- (car (cddr args)))))
- (eshell-do-eval (car eshell-command-body) synchronous-p))
- (setcar eshell-command-body nil)
- (setcar eshell-test-body nil))
+ (eshell-manipulate "evaluating if condition"
+ (setcar args (eshell-do-eval (car args) synchronous-p)))
+ (eshell-do-eval
+ (cond
+ ((eval (car args)) ; COND is non-nil
+ (cadr args))
+ ((cdddr args) ; Multiple ELSE forms
+ `(progn ,@(cddr args)))
+ (t ; Zero or one ELSE forms
+ (caddr args)))
+ synchronous-p))
((eq (car form) 'setcar)
(setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p))
(eval form))
@@ -1153,21 +1183,48 @@ be finished later after the completion of an asynchronous subprocess."
(setcar (cdr args) (eshell-do-eval (cadr args) synchronous-p))
(eval form))
((eq (car form) 'let)
- (if (not (eq (car (cadr args)) 'eshell-do-eval))
- (eshell-manipulate "evaluating let args"
- (dolist (letarg (car args))
- (if (and (listp letarg)
- (not (eq (cadr letarg) 'quote)))
- (setcdr letarg
- (list (eshell-do-eval
- (cadr letarg) synchronous-p)))))))
+ (unless (eq (car-safe (cadr args)) 'eshell-do-eval)
+ (eshell-manipulate "evaluating let args"
+ (dolist (letarg (car args))
+ (when (and (listp letarg)
+ (not (eq (cadr letarg) 'quote)))
+ (setcdr letarg
+ (list (eshell-do-eval
+ (cadr letarg) synchronous-p)))))))
(cl-progv
- (mapcar (lambda (binding) (if (consp binding) (car binding) binding))
+ (mapcar (lambda (binding)
+ (if (consp binding) (car binding) binding))
(car args))
;; These expressions should all be constants now.
- (mapcar (lambda (binding) (if (consp binding) (eval (cadr binding))))
+ (mapcar (lambda (binding)
+ (when (consp binding) (eval (cadr binding))))
(car args))
- (eshell-do-eval (macroexp-progn (cdr args)) synchronous-p)))
+ (let (deferred result)
+ ;; Evaluate the `let' body, catching `eshell-defer' so we
+ ;; can handle it below.
+ (setq deferred
+ (catch 'eshell-defer
+ (ignore (setq result (eshell-do-eval
+ (macroexp-progn (cdr args))
+ synchronous-p)))))
+ ;; If something threw `eshell-defer', we need to update
+ ;; the let-bindings' values so that those values are
+ ;; correct when we resume evaluation of this form.
+ (when deferred
+ (eshell-manipulate "rebinding let args after `eshell-defer'"
+ (let ((bindings (car args)))
+ (while bindings
+ (let ((binding (if (consp (car bindings))
+ (caar bindings)
+ (car bindings))))
+ (setcar bindings
+ (list binding
+ (list 'quote (symbol-value binding)))))
+ (pop bindings))))
+ (throw 'eshell-defer deferred))
+ ;; If we get here, there was no `eshell-defer' thrown, so
+ ;; just return the `let' body's result.
+ result)))
((memq (car form) '(catch condition-case unwind-protect))
;; `condition-case' and `unwind-protect' have to be
;; handled specially, because we only want to call
@@ -1286,6 +1343,8 @@ be finished later after the completion of an asynchronous subprocess."
(defun eshell-named-command (command &optional args)
"Insert output from a plain COMMAND, using ARGS.
COMMAND may result in an alias being executed, or a plain command."
+ (unless eshell-allow-commands
+ (signal 'eshell-commands-forbidden '(named)))
(setq eshell-last-arguments args
eshell-last-command-name (eshell-stringify command))
(run-hook-with-args 'eshell-prepare-command-hook)
@@ -1423,6 +1482,8 @@ via `eshell-errorn'."
(defun eshell-lisp-command (object &optional args)
"Insert Lisp OBJECT, using ARGS if a function."
+ (unless eshell-allow-commands
+ (signal 'eshell-commands-forbidden '(lisp)))
(catch 'eshell-external ; deferred to an external command
(setq eshell-last-command-status 0
eshell-last-arguments args)
diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el
index 26a8530fe54..cccdb49ce2a 100644
--- a/lisp/eshell/esh-io.el
+++ b/lisp/eshell/esh-io.el
@@ -74,6 +74,8 @@
(eval-when-compile
(require 'cl-lib))
+(declare-function eshell-interactive-print "esh-mode" (string))
+
(defgroup eshell-io nil
"Eshell's I/O management code provides a scheme for treating many
different kinds of objects -- symbols, files, buffers, etc. -- as
@@ -116,16 +118,22 @@ from executing while Emacs is redisplaying."
:group 'eshell-io)
(defcustom eshell-virtual-targets
- '(("/dev/eshell" eshell-interactive-print nil)
+ '(;; The literal string "/dev/null" is intentional here. It just
+ ;; provides compatibility so that users can redirect to
+ ;; "/dev/null" no matter the actual value of `null-device'.
+ ("/dev/null" (lambda (_mode) (throw 'eshell-null-device t)) t)
+ ("/dev/eshell" eshell-interactive-print nil)
("/dev/kill" (lambda (mode)
- (if (eq mode 'overwrite)
- (kill-new ""))
- 'eshell-kill-append) t)
+ (when (eq mode 'overwrite)
+ (kill-new ""))
+ #'eshell-kill-append)
+ t)
("/dev/clip" (lambda (mode)
- (if (eq mode 'overwrite)
- (let ((select-enable-clipboard t))
- (kill-new "")))
- 'eshell-clipboard-append) t))
+ (when (eq mode 'overwrite)
+ (let ((select-enable-clipboard t))
+ (kill-new "")))
+ #'eshell-clipboard-append)
+ t))
"Map virtual devices name to Emacs Lisp functions.
If the user specifies any of the filenames above as a redirection
target, the function in the second element will be called.
@@ -138,10 +146,8 @@ function.
The output function is then called repeatedly with single strings,
which represents successive pieces of the output of the command, until nil
-is passed, meaning EOF.
-
-NOTE: /dev/null is handled specially as a virtual target, and should
-not be added to this variable."
+is passed, meaning EOF."
+ :version "30.1"
:type '(repeat
(list (string :tag "Target")
function
@@ -291,25 +297,58 @@ describing the mode, e.g. for using with `eshell-get-target'.")
(defun eshell-create-handles
(stdout output-mode &optional stderr error-mode)
"Create a new set of file handles for a command.
-The default location for standard output and standard error will go to
-STDOUT and STDERR, respectively.
-OUTPUT-MODE and ERROR-MODE are either `overwrite', `append' or `insert';
-a nil value of mode defaults to `insert'."
+The default target for standard output and standard error will
+go to STDOUT and STDERR, respectively. OUTPUT-MODE and
+ERROR-MODE are either `overwrite', `append' or `insert'; a nil
+value of mode defaults to `insert'.
+
+The result is a vector of file handles. Each handle is of the form:
+
+ ((TARGETS . REF-COUNT) DEFAULT)
+
+TARGETS is a list of destinations for output. REF-COUNT is the
+number of references to this handle (initially 1); see
+`eshell-protect-handles' and `eshell-close-handles'. DEFAULT is
+non-nil if handle has its initial default value (always t after
+calling this function)."
(let* ((handles (make-vector eshell-number-of-handles nil))
- (output-target (eshell-get-target stdout output-mode))
- (error-target (if stderr
- (eshell-get-target stderr error-mode)
- output-target)))
- (aset handles eshell-output-handle (cons output-target 1))
- (aset handles eshell-error-handle (cons error-target 1))
+ (output-target
+ (let ((target (eshell-get-target stdout output-mode)))
+ (cons (when target (list target)) 1)))
+ (error-target
+ (if stderr
+ (let ((target (eshell-get-target stderr error-mode)))
+ (cons (when target (list target)) 1))
+ (cl-incf (cdr output-target))
+ output-target)))
+ (aset handles eshell-output-handle (list output-target t))
+ (aset handles eshell-error-handle (list error-target t))
handles))
+(defun eshell-duplicate-handles (handles &optional steal-p)
+ "Create a duplicate of the file handles in HANDLES.
+This uses the targets of each handle in HANDLES, incrementing its
+reference count by one (unless STEAL-P is non-nil). These
+targets are shared between the original set of handles and the
+new one, so the targets are only closed when the reference count
+drops to 0 (see `eshell-close-handles').
+
+This function also sets the DEFAULT field for each handle to
+t (see `eshell-create-handles'). Unlike the targets, this value
+is not shared with the original handles."
+ (let ((dup-handles (make-vector eshell-number-of-handles nil)))
+ (dotimes (idx eshell-number-of-handles)
+ (when-let ((handle (aref handles idx)))
+ (unless steal-p
+ (cl-incf (cdar handle)))
+ (aset dup-handles idx (list (car handle) t))))
+ dup-handles))
+
(defun eshell-protect-handles (handles)
"Protect the handles in HANDLES from a being closed."
(dotimes (idx eshell-number-of-handles)
- (when (aref handles idx)
- (setcdr (aref handles idx)
- (1+ (cdr (aref handles idx))))))
+ (when-let ((handle (aref handles idx)))
+ (cl-incf (cdar handle))))
handles)
(defun eshell-close-handles (&optional exit-code result handles)
@@ -327,46 +366,56 @@ the value already set in `eshell-last-command-result'."
(when result
(cl-assert (eq (car result) 'quote))
(setq eshell-last-command-result (cadr result)))
- (let ((handles (or handles eshell-current-handles)))
+ (let ((handles (or handles eshell-current-handles))
+ (succeeded (= eshell-last-command-status 0)))
(dotimes (idx eshell-number-of-handles)
- (when-let ((handle (aref handles idx)))
- (setcdr handle (1- (cdr handle)))
- (when (= (cdr handle) 0)
- (dolist (target (ensure-list (car (aref handles idx))))
- (eshell-close-target target (= eshell-last-command-status 0)))
- (setcar handle nil))))))
+ (eshell-close-handle (aref handles idx) succeeded))))
+
+(defun eshell-close-handle (handle status)
+ "Close a single HANDLE, taking refcounts into account.
+This will pass STATUS to each target for the handle, which should
+be a non-nil value on successful termination."
+ (when handle
+ (cl-assert (> (cdar handle) 0)
+ "Attempted to close a handle with 0 references")
+ (when (and (> (cdar handle) 0)
+ (= (cl-decf (cdar handle)) 0))
+ (dolist (target (caar handle))
+ (eshell-close-target target status))
+ (setcar (car handle) nil))))
(defun eshell-set-output-handle (index mode &optional target handles)
"Set handle INDEX for the current HANDLES to point to TARGET using MODE.
-If HANDLES is nil, use `eshell-current-handles'."
+If HANDLES is nil, use `eshell-current-handles'.
+
+If the handle is currently set to its default value (see
+`eshell-create-handles'), this will overwrite the targets with
+the new target. Otherwise, it will append the new target to the
+current list of targets."
(when target
- (let ((handles (or handles eshell-current-handles)))
- (if (and (stringp target)
- ;; The literal string "/dev/null" is intentional here.
- ;; It just provides compatibility so that users can
- ;; redirect to "/dev/null" no matter the actual value
- ;; of `null-device'.
- (string= target "/dev/null"))
- (aset handles index nil)
- (let ((where (eshell-get-target target mode))
- (current (car (aref handles index))))
- (if (listp current)
- (unless (member where current)
- (setq current (append current (list where))))
- (setq current (list where)))
- (if (not (aref handles index))
- (aset handles index (cons nil 1)))
- (setcar (aref handles index) current))))))
+ (let* ((handles (or handles eshell-current-handles))
+ (handle (or (aref handles index)
+ (aset handles index (list (cons nil 1) nil))))
+ (defaultp (cadr handle)))
+ (when defaultp
+ (cl-decf (cdar handle))
+ (setcar handle (cons nil 1)))
+ (catch 'eshell-null-device
+ (let ((current (caar handle))
+ (where (eshell-get-target target mode)))
+ (unless (member where current)
+ (setcar (car handle) (append current (list where))))))
+ (setcar (cdr handle) nil))))
(defun eshell-copy-output-handle (index index-to-copy &optional handles)
"Copy the handle INDEX-TO-COPY to INDEX for the current HANDLES.
If HANDLES is nil, use `eshell-current-handles'."
(let* ((handles (or handles eshell-current-handles))
(handle-to-copy (car (aref handles index-to-copy))))
- (setcar (aref handles index)
- (if (listp handle-to-copy)
- (copy-sequence handle-to-copy)
- handle-to-copy))))
+ (when handle-to-copy
+ (cl-incf (cdr handle-to-copy)))
+ (eshell-close-handle (aref handles index) nil)
+ (setcar (aref handles index) handle-to-copy)))
(defun eshell-set-all-output-handles (mode &optional target handles)
"Set output and error HANDLES to point to TARGET using MODE.
@@ -497,9 +546,9 @@ INDEX is the handle index to check. If nil, check
(let ((handles (or handles eshell-current-handles))
(index (or index eshell-output-handle)))
(if (eq index 'all)
- (and (eq (car (aref handles eshell-output-handle)) t)
- (eq (car (aref handles eshell-error-handle)) t))
- (eq (car (aref handles index)) t))))
+ (and (equal (caar (aref handles eshell-output-handle)) '(t))
+ (equal (caar (aref handles eshell-error-handle)) '(t)))
+ (equal (caar (aref handles index)) '(t)))))
(defvar eshell-print-queue nil)
(defvar eshell-print-queue-count -1)
@@ -550,8 +599,6 @@ after all printing is over with no argument."
(eshell-print object)
(eshell-print "\n"))
-(autoload 'eshell-output-filter "esh-mode")
-
(defun eshell-output-object-to-target (object target)
"Insert OBJECT into TARGET.
Returns what was actually sent, or nil if nothing was sent."
@@ -561,7 +608,7 @@ Returns what was actually sent, or nil if nothing was sent."
((symbolp target)
(if (eq target t) ; means "print to display"
- (eshell-output-filter nil (eshell-stringify object))
+ (eshell-interactive-print (eshell-stringify object))
(if (not (symbol-value target))
(set target object)
(setq object (eshell-stringify object))
@@ -606,15 +653,10 @@ Returns what was actually sent, or nil if nothing was sent."
If HANDLE-INDEX is nil, output to `eshell-output-handle'.
HANDLES is the set of file handles to use; if nil, use
`eshell-current-handles'."
- (let ((target (car (aref (or handles eshell-current-handles)
- (or handle-index eshell-output-handle)))))
- (if (listp target)
- (while target
- (eshell-output-object-to-target object (car target))
- (setq target (cdr target)))
- (eshell-output-object-to-target object target)
- ;; Explicitly return nil to match the list case above.
- nil)))
+ (let ((targets (caar (aref (or handles eshell-current-handles)
+ (or handle-index eshell-output-handle)))))
+ (dolist (target targets)
+ (eshell-output-object-to-target object target))))
(provide 'esh-io)
;;; esh-io.el ends here
diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el
index d80f1d1f390..0c381dbb86a 100644
--- a/lisp/eshell/esh-mode.el
+++ b/lisp/eshell/esh-mode.el
@@ -58,10 +58,16 @@
;;; Code:
-(require 'esh-util)
-(require 'esh-module)
+;; Load the core Eshell modules; we'll call their initialization
+;; functions below in `eshell-mode'.
+(require 'esh-arg)
(require 'esh-cmd)
-(require 'esh-arg) ;For eshell-parse-arguments
+(require 'esh-ext)
+(require 'esh-io)
+(require 'esh-module)
+(require 'esh-proc)
+(require 'esh-util)
+(require 'esh-var)
(defgroup eshell-mode nil
"This module contains code for handling input from the user."
@@ -73,6 +79,7 @@
(defcustom eshell-mode-unload-hook nil
"A hook that gets run when `eshell-mode' is unloaded."
:type 'hook)
+(make-obsolete-variable 'eshell-mode-unload-hook nil "30.1")
(defcustom eshell-mode-hook nil
"A hook that gets run when `eshell-mode' is entered."
@@ -155,7 +162,8 @@ number, if the function `eshell-truncate-buffer' is on
eshell-watch-for-password-prompt)
"Functions to call before output is displayed.
These functions are only called for output that is displayed
-interactively, and not for output which is redirected."
+interactively (see `eshell-interactive-filter'), and not for
+output which is redirected."
:type 'hook)
(defcustom eshell-preoutput-filter-functions nil
@@ -165,7 +173,10 @@ inserted. They return the string as it should be inserted."
:type 'hook)
(defcustom eshell-password-prompt-regexp
- (format "\\(%s\\)[^::៖]*[::៖]\\s *\\'" (regexp-opt password-word-equivalents))
+ (format "%s[^%s]*[%s]\\s *\\'"
+ (regexp-opt password-word-equivalents t)
+ (apply #'string password-colon-equivalents)
+ (apply #'string password-colon-equivalents))
"Regexp matching prompts for passwords in the inferior process.
This is used by `eshell-watch-for-password-prompt'."
:type 'regexp
@@ -175,6 +186,8 @@ This is used by `eshell-watch-for-password-prompt'."
"A function called from beginning of line to skip the prompt."
:type '(choice (const nil) function))
+(make-obsolete-variable 'eshell-skip-prompt-function nil "30.1")
+
(defcustom eshell-status-in-mode-line t
"If non-nil, let the user know a command is running in the mode line."
:type 'boolean)
@@ -188,6 +201,11 @@ This is used by `eshell-watch-for-password-prompt'."
(defvar eshell-first-time-p t
"A variable which is non-nil the first time Eshell is loaded.")
+(defvar eshell-non-interactive-p nil
+ "A variable which is non-nil when Eshell is not running interactively.
+Modules should use this variable so that they don't clutter
+non-interactive sessions, such as when using `eshell-command'.")
+
;; Internal Variables:
;; these are only set to nil initially for the sake of the
@@ -261,14 +279,13 @@ This is used by `eshell-watch-for-password-prompt'."
"C-c" 'eshell-command-map
"RET" #'eshell-send-input
"M-RET" #'eshell-queue-input
- "C-M-l" #'eshell-show-output
- "C-a" #'eshell-bol)
+ "C-M-l" #'eshell-show-output)
(defvar-keymap eshell-command-map
:prefix 'eshell-command-map
"M-o" #'eshell-mark-output
"M-d" #'eshell-toggle-direct-send
- "C-a" #'eshell-bol
+ "C-a" #'move-beginning-of-line
"C-b" #'eshell-backward-argument
"C-e" #'eshell-show-maximum-output
"C-f" #'eshell-forward-argument
@@ -471,7 +488,7 @@ and the hook `eshell-exit-hook'."
(defun eshell-move-argument (limit func property arg)
"Move forward ARG arguments."
(catch 'eshell-incomplete
- (eshell-parse-arguments (save-excursion (eshell-bol) (point))
+ (eshell-parse-arguments (save-excursion (beginning-of-line) (point))
(line-end-position)))
(let ((pos (save-excursion
(funcall func 1)
@@ -504,12 +521,7 @@ and the hook `eshell-exit-hook'."
(kill-ring-save begin (point))
(yank)))
-(defun eshell-bol ()
- "Go to the beginning of line, then skip past the prompt, if any."
- (interactive)
- (beginning-of-line)
- (and eshell-skip-prompt-function
- (funcall eshell-skip-prompt-function)))
+(define-obsolete-function-alias 'eshell-bol #'beginning-of-line "30.1")
(defsubst eshell-push-command-mark ()
"Push a mark at the end of the last input text."
@@ -525,9 +537,11 @@ Putting this function on `eshell-pre-command-hook' will mimic Plan 9's
(custom-add-option 'eshell-pre-command-hook #'eshell-goto-input-start)
-(defsubst eshell-interactive-print (string)
+(defun eshell-interactive-print (string)
"Print STRING to the eshell display buffer."
- (eshell-output-filter nil string))
+ (when string
+ (eshell--mark-as-output 0 (length string) string)
+ (eshell-interactive-filter nil string)))
(defsubst eshell-begin-on-new-line ()
"This function outputs a newline if not at beginning of line."
@@ -566,7 +580,7 @@ will return the parsed command."
(setq command (eshell-parse-command (cons beg end)
args t)))))
(ignore
- (message "Expecting completion of delimiter %c ..."
+ (message "Expecting completion of delimiter %s ..."
(if (listp delim)
(car delim)
delim)))
@@ -687,14 +701,14 @@ newline."
(custom-add-option 'eshell-input-filter-functions 'eshell-kill-new)
-(defun eshell-output-filter (process string)
- "Send the output from PROCESS (STRING) to the interactive display.
+(defun eshell-interactive-filter (buffer string)
+ "Send output (STRING) to the interactive display, using BUFFER.
This is done after all necessary filtering has been done."
- (let ((oprocbuf (if process (process-buffer process)
- (current-buffer)))
- (inhibit-modification-hooks t))
- (when (and string oprocbuf (buffer-name oprocbuf))
- (with-current-buffer oprocbuf
+ (unless buffer
+ (setq buffer (current-buffer)))
+ (when (and string (buffer-live-p buffer))
+ (let ((inhibit-modification-hooks t))
+ (with-current-buffer buffer
(let ((functions eshell-preoutput-filter-functions))
(while (and functions string)
(setq string (funcall (car functions) string))
@@ -851,7 +865,7 @@ With a prefix argument, narrows region to last command output."
(if (> (point) eshell-last-output-end)
(kill-region eshell-last-output-end (point))
(let ((here (point)))
- (eshell-bol)
+ (beginning-of-line)
(kill-region (point) here))))
(defun eshell-show-maximum-output (&optional interactive)
@@ -879,17 +893,18 @@ If SCROLLBACK is non-nil, clear the scrollback contents."
(erase-buffer)))
(defun eshell-get-old-input (&optional use-current-region)
- "Return the command input on the current line."
+ "Return the command input on the current line.
+If USE-CURRENT-REGION is non-nil, return the current region."
(if use-current-region
(buffer-substring (min (point) (mark))
(max (point) (mark)))
(save-excursion
- (beginning-of-line)
- (and eshell-skip-prompt-function
- (funcall eshell-skip-prompt-function))
- (let ((beg (point)))
- (end-of-line)
- (buffer-substring beg (point))))))
+ (let ((inhibit-field-text-motion t))
+ (end-of-line))
+ (let ((inhibit-field-text-motion)
+ (end (point)))
+ (beginning-of-line)
+ (buffer-substring-no-properties (point) end)))))
(defun eshell-copy-old-input ()
"Insert after prompt old input at point as new input to be edited."
diff --git a/lisp/eshell/esh-module.el b/lisp/eshell/esh-module.el
index 651e793ad98..7fc74d38796 100644
--- a/lisp/eshell/esh-module.el
+++ b/lisp/eshell/esh-module.el
@@ -47,6 +47,7 @@ customizing the variable `eshell-modules-list'."
"A hook run when `eshell-module' is unloaded."
:type 'hook
:group 'eshell-module)
+(make-obsolete-variable 'eshell-module-unload-hook nil "30.1")
(defcustom eshell-modules-list
'(eshell-alias
@@ -85,20 +86,37 @@ Changes will only take effect in future Eshell buffers."
;;; Code:
+(defsubst eshell-module--feature-name (module &optional kind)
+ "Get the feature name for the specified Eshell MODULE."
+ (let ((module-name (symbol-name module))
+ (prefix (cond ((eq kind 'core) "esh-")
+ ((memq kind '(extension nil)) "em-")
+ (t (error "unknown module kind %s" kind)))))
+ (if (string-match "^eshell-\\(.*\\)" module-name)
+ (concat prefix (match-string 1 module-name))
+ (error "Invalid Eshell module name: %s" module))))
+
(defsubst eshell-using-module (module)
"Return non-nil if a certain Eshell MODULE is in use.
The MODULE should be a symbol corresponding to that module's
customization group. Example: `eshell-cmpl' for that module."
(memq module eshell-modules-list))
+(defun eshell-unload-modules (modules &optional kind)
+ "Try to unload the specified Eshell MODULES."
+ (dolist (module modules)
+ (let ((module-feature (intern (eshell-module--feature-name module kind))))
+ (when (featurep module-feature)
+ (message "Unloading %s..." (symbol-name module))
+ (condition-case-unless-debug _
+ (progn
+ (unload-feature module-feature)
+ (message "Unloading %s...done" (symbol-name module)))
+ (error (message "Unloading %s...failed" (symbol-name module))))))))
+
(defun eshell-unload-extension-modules ()
- "Unload any memory resident extension modules."
- (dolist (module (eshell-subgroups 'eshell-module))
- (if (featurep module)
- (ignore-errors
- (message "Unloading %s..." (symbol-name module))
- (unload-feature module)
- (message "Unloading %s...done" (symbol-name module))))))
+ "Try to unload all currently-loaded Eshell extension modules."
+ (eshell-unload-modules (eshell-subgroups 'eshell-module)))
(provide 'esh-module)
;;; esh-module.el ends here
diff --git a/lisp/eshell/esh-opt.el b/lisp/eshell/esh-opt.el
index e8da847e184..09c19767a19 100644
--- a/lisp/eshell/esh-opt.el
+++ b/lisp/eshell/esh-opt.el
@@ -29,6 +29,11 @@
;; defined in esh-util.
(require 'esh-util)
+(defgroup eshell-opt nil
+ "Functions for argument parsing in Eshell commands."
+ :tag "Option parsing"
+ :group 'eshell)
+
(defmacro eshell-eval-using-options (name macro-args options &rest body-forms)
"Process NAME's MACRO-ARGS using a set of command line OPTIONS.
After doing so, stores settings in local symbols as declared by OPTIONS;
@@ -132,7 +137,7 @@ This code doesn't really need to be macro expanded everywhere."
(setq args (eshell--process-args name args options))
nil))))
(when usage-msg
- (error "%s" usage-msg))))))
+ (user-error "%s" usage-msg))))))
(if ext-command
(throw 'eshell-external
(eshell-external-command ext-command orig-args))
@@ -237,7 +242,7 @@ remaining characters in SWITCH to be processed later as further short
options.
If no matching handler is found, and an :external command is defined
-(and available), it will be called; otherwise, an error will be
+\(and available), it will be called; otherwise, an error will be
triggered to say that the switch is unrecognized."
(let ((switch (eshell--split-switch switch kind))
(opts options)
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el
index fcd59ab9f37..00e0c8014e1 100644
--- a/lisp/eshell/esh-proc.el
+++ b/lisp/eshell/esh-proc.el
@@ -24,6 +24,7 @@
;;; Code:
(require 'esh-io)
+(require 'esh-util)
(defgroup eshell-proc nil
"When Eshell invokes external commands, it always does so
@@ -96,6 +97,9 @@ information, for example."
;;; Internal Variables:
+(defvar eshell-supports-asynchronous-processes (fboundp 'make-process)
+ "Non-nil if Eshell can create asynchronous processes.")
+
(defvar eshell-current-subjob-p nil)
(defvar eshell-process-list nil
@@ -295,7 +299,7 @@ Used only on systems which do not support async subprocesses.")
(coding-system-change-eol-conversion locale-coding-system
'unix))))
(cond
- ((fboundp 'make-process)
+ (eshell-supports-asynchronous-processes
(unless (or ;; FIXME: It's not currently possible to use a
;; stderr process for remote files.
(file-remote-p default-directory)
@@ -309,7 +313,7 @@ Used only on systems which do not support async subprocesses.")
:name (concat (file-name-nondirectory command) "-stderr")
:buffer (current-buffer)
:filter (if (eshell-interactive-output-p eshell-error-handle)
- #'eshell-output-filter
+ #'eshell-interactive-process-filter
#'eshell-insertion-filter)
:sentinel #'eshell-sentinel))
(eshell-record-process-properties stderr-proc eshell-error-handle))
@@ -325,7 +329,7 @@ Used only on systems which do not support async subprocesses.")
:buffer (current-buffer)
:command (cons command args)
:filter (if (eshell-interactive-output-p)
- #'eshell-output-filter
+ #'eshell-interactive-process-filter
#'eshell-insertion-filter)
:sentinel #'eshell-sentinel
:connection-type conn-type
@@ -366,6 +370,8 @@ Used only on systems which do not support async subprocesses.")
(erase-buffer)
(set-buffer oldbuf)
(run-hook-with-args 'eshell-exec-hook command)
+ ;; XXX: This doesn't support sending stdout and stderr to
+ ;; separate places.
(setq exit-status
(apply #'call-process-region
(append (list eshell-last-sync-output-start (point)
@@ -386,15 +392,11 @@ Used only on systems which do not support async subprocesses.")
line (buffer-substring-no-properties lbeg lend))
(set-buffer oldbuf)
(if interact-p
- (eshell-output-filter nil line)
+ (eshell-interactive-process-filter nil line)
(eshell-output-object line))
(setq lbeg lend)
(set-buffer proc-buf))
(set-buffer oldbuf))
- (require 'esh-mode)
- (declare-function eshell-update-markers "esh-mode" (pmark))
- (defvar eshell-last-output-end) ;Defined in esh-mode.el.
- (eshell-update-markers eshell-last-output-end)
;; Simulate the effect of eshell-sentinel.
(eshell-close-handles
(if (numberp exit-status) exit-status -1)
@@ -407,6 +409,20 @@ Used only on systems which do not support async subprocesses.")
(setq proc t))))
proc))
+(defun eshell-interactive-process-filter (process string)
+ "Send the output from PROCESS (STRING) to the interactive display.
+This is done after all necessary filtering has been done."
+ (when string
+ (eshell--mark-as-output 0 (length string) string)
+ (require 'esh-mode)
+ (declare-function eshell-interactive-filter "esh-mode" (buffer string))
+ (eshell-interactive-filter (if process (process-buffer process)
+ (current-buffer))
+ string)))
+
+(define-obsolete-function-alias 'eshell-output-filter
+ #'eshell-interactive-process-filter "30.1")
+
(defun eshell-insertion-filter (proc string)
"Insert a string into the eshell buffer, or a process/file/buffer.
PROC is the process for which we're inserting output. STRING is the
@@ -472,7 +488,7 @@ PROC is the process that's exiting. STRING is the exit message."
(if (process-get proc :eshell-busy)
(run-at-time 0 nil finish-io)
(when data
- (ignore-error 'eshell-pipe-broken
+ (ignore-error eshell-pipe-broken
(eshell-output-object
data index handles)))
(eshell-close-handles
diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el
index d003148dc96..c0685757789 100644
--- a/lisp/eshell/esh-util.el
+++ b/lisp/eshell/esh-util.el
@@ -94,13 +94,6 @@ a non-nil value, will be passed strings, not numbers, even when an
argument matches `eshell-number-regexp'."
:type 'boolean)
-(defcustom eshell-number-regexp "-?\\([0-9]*\\.\\)?[0-9]+\\(e[-0-9.]+\\)?"
- "Regular expression used to match numeric arguments.
-If `eshell-convert-numeric-arguments' is non-nil, and an argument
-matches this regexp, it will be converted to a Lisp number, using the
-function `string-to-number'."
- :type 'regexp)
-
(defcustom eshell-ange-ls-uids nil
"List of user/host/id strings, used to determine remote ownership."
:type '(repeat (cons :tag "Host for User/UID map"
@@ -111,6 +104,22 @@ function `string-to-number'."
;;; Internal Variables:
+(defvar eshell-number-regexp
+ (rx (? "-")
+ (or (seq (+ digit) (? "." (* digit)))
+ (seq (* digit) "." (+ digit)))
+ ;; Optional exponent
+ (? (or "e" "E")
+ (or "+INF" "+NaN"
+ (seq (? (or "+" "-")) (+ digit)))))
+ "Regular expression used to match numeric arguments.
+If `eshell-convert-numeric-arguments' is non-nil, and an argument
+matches this regexp, it will be converted to a Lisp number, using the
+function `string-to-number'.")
+
+(defvar eshell-integer-regexp (rx (? "-") (+ digit))
+ "Regular expression used to match integer arguments.")
+
(defvar eshell-group-names nil
"A cache to hold the names of groups.")
@@ -123,6 +132,19 @@ function `string-to-number'."
(defvar eshell-user-timestamp nil
"A timestamp of when the user file was read.")
+(defvar eshell-command-output-properties
+ `( field command-output
+ front-sticky (field)
+ rear-nonsticky (field)
+ ;; Text inserted by a user in the middle of process output
+ ;; should be marked as output. This is needed for commands
+ ;; such as `yank' or `just-one-space' which don't use
+ ;; `insert-and-inherit' and thus bypass default text property
+ ;; inheritance.
+ insert-in-front-hooks (,#'eshell--mark-as-output
+ ,#'eshell--mark-yanked-as-output))
+ "A list of text properties to apply to command output.")
+
;;; Obsolete variables:
(define-obsolete-variable-alias 'eshell-host-names
@@ -148,6 +170,27 @@ Otherwise, evaluates FORM with no error handling."
,@handlers)
form))
+(defun eshell--mark-as-output (start end &optional object)
+ "Mark the text from START to END as Eshell output.
+OBJECT can be a buffer or string. If nil, mark the text in the
+current buffer."
+ (with-silent-modifications
+ (add-text-properties start end eshell-command-output-properties
+ object)))
+
+(defun eshell--mark-yanked-as-output (start end)
+ "Mark yanked text from START to END as Eshell output."
+ ;; `yank' removes the field text property from the text it inserts
+ ;; due to `yank-excluded-properties', so arrange for this text
+ ;; property to be reapplied in the `after-change-functions'.
+ (letrec ((hook
+ (lambda (start1 end1 _len1)
+ (remove-hook 'after-change-functions hook t)
+ (when (and (= start start1)
+ (= end end1))
+ (eshell--mark-as-output start1 end1)))))
+ (add-hook 'after-change-functions hook nil t)))
+
(defun eshell-find-delimiter
(open close &optional bound reverse-p backslash-p)
"From point, find the CLOSE delimiter corresponding to OPEN.
@@ -362,9 +405,13 @@ Prepend remote identification of `default-directory', if any."
"Convert each element of ARGS into a string value."
(mapcar #'eshell-stringify args))
+(defsubst eshell-list-to-string (list)
+ "Convert LIST into a single string separated by spaces."
+ (mapconcat #'eshell-stringify list " "))
+
(defsubst eshell-flatten-and-stringify (&rest args)
"Flatten and stringify all of the ARGS into a single string."
- (mapconcat #'eshell-stringify (flatten-tree args) " "))
+ (eshell-list-to-string (flatten-tree args)))
(defsubst eshell-directory-files (regexp &optional directory)
"Return a list of files in the given DIRECTORY matching REGEXP."
diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el
index dfc52083acb..7dcaff1e24f 100644
--- a/lisp/eshell/esh-var.el
+++ b/lisp/eshell/esh-var.el
@@ -86,6 +86,13 @@
;; Returns the length of the value of $EXPR. This could also be
;; done using the `length' Lisp function.
;;
+;; $@EXPR
+;;
+;; Splices the value of $EXPR in-place into the current list of
+;; arguments. This is analogous to the `,@' token in Elisp
+;; backquotes, and works as if the user typed '$EXPR[0] $EXPR[1]
+;; ... $EXPR[N]'.
+;;
;; There are also a few special variables defined by Eshell. '$$' is
;; the value of the last command (t or nil, in the case of an external
;; command). This makes it possible to chain results:
@@ -155,6 +162,7 @@ if they are quoted with a backslash."
("COLUMNS" ,(lambda () (window-body-width nil 'remap)) t t)
("LINES" ,(lambda () (window-body-height nil 'remap)) t t)
("INSIDE_EMACS" eshell-inside-emacs t)
+ ("UID" ,(lambda () (file-user-uid)) nil t)
;; for esh-ext.el
("PATH" (,(lambda () (string-join (eshell-get-path t) (path-separator)))
@@ -320,10 +328,9 @@ copied (a.k.a. \"exported\") to the environment of created subprocesses."
"Parse a variable interpolation.
This function is explicit for adding to `eshell-parse-argument-hook'."
(when (and (eq (char-after) ?$)
- (/= (1+ (point)) (point-max)))
+ (/= (1+ (point)) (point-max)))
(forward-char)
- (list 'eshell-escape-arg
- (eshell-parse-variable))))
+ (eshell-parse-variable)))
(defun eshell/define (var-alias definition)
"Define a VAR-ALIAS using DEFINITION."
@@ -427,9 +434,14 @@ the values of nil for each."
(defun eshell-envvar-names (&optional environment)
"Return a list of currently visible environment variable names."
- (mapcar (lambda (x)
- (substring x 0 (string-search "=" x)))
- (or environment process-environment)))
+ (delete-dups
+ (append
+ ;; Real environment variables
+ (mapcar (lambda (x)
+ (substring x 0 (string-search "=" x)))
+ (or environment process-environment))
+ ;; Eshell variable aliases
+ (mapcar #'car eshell-variable-aliases-list))))
(defun eshell-environment-variables ()
"Return a `process-environment', fully updated.
@@ -453,18 +465,24 @@ Its purpose is to call `eshell-parse-variable-ref', and then to
process any indices that come after the variable reference."
(let* ((get-len (when (eq (char-after) ?#)
(forward-char) t))
+ (splice (when (eq (char-after) ?@)
+ (forward-char) t))
value indices)
(setq value (eshell-parse-variable-ref get-len)
indices (and (not (eobp))
(eq (char-after) ?\[)
(eshell-parse-indices))
- ;; This is an expression that will be evaluated by `eshell-do-eval',
- ;; which only support let-binding of dynamically-scoped vars
- value `(let ((indices (eshell-eval-indices ',indices))) ,value))
+ value `(let ((indices ,(eshell-prepare-indices indices))) ,value))
(when get-len
(setq value `(length ,value)))
(when eshell-current-quoted
- (setq value `(eshell-stringify ,value)))
+ (if splice
+ (setq value `(eshell-list-to-string ,value)
+ splice nil)
+ (setq value `(eshell-stringify ,value))))
+ (setq value `(eshell-escape-arg ,value))
+ (when splice
+ (setq value `(eshell-splice-args ,value)))
value))
(defun eshell-parse-variable-ref (&optional modifier-p)
@@ -481,7 +499,7 @@ Possible variable references are:
NAME an environment or Lisp variable value
\"LONG-NAME\" disambiguates the length of the name
- `LONG-NAME' as above
+ \\='LONG-NAME\\=' as above
{COMMAND} result of command is variable's value
(LISP-FORM) result of Lisp form is variable's value
<COMMAND> write the output of command to a temporary file;
@@ -489,55 +507,56 @@ Possible variable references are:
(cond
((eq (char-after) ?{)
(let ((end (eshell-find-delimiter ?\{ ?\})))
- (if (not end)
- (throw 'eshell-incomplete ?\{)
- (forward-char)
- (prog1
- `(eshell-apply-indices
- (eshell-convert
- (eshell-command-to-value
- (eshell-as-subcommand
- ,(let ((subcmd (or (eshell-unescape-inner-double-quote end)
- (cons (point) end)))
- (eshell-current-quoted nil))
- (eshell-parse-command subcmd))))
- ;; If this is a simple double-quoted form like
- ;; "${COMMAND}" (i.e. no indices after the subcommand
- ;; and no `#' modifier before), ensure we convert to a
- ;; single string. This avoids unnecessary work
- ;; (e.g. splitting the output by lines) when it would
- ;; just be joined back together afterwards.
- ,(when (and (not modifier-p) eshell-current-quoted)
- '(not indices)))
- indices ,eshell-current-quoted)
- (goto-char (1+ end))))))
+ (unless end
+ (throw 'eshell-incomplete "${"))
+ (forward-char)
+ (prog1
+ `(eshell-apply-indices
+ (eshell-convert
+ (eshell-command-to-value
+ (eshell-as-subcommand
+ ,(let ((subcmd (or (eshell-unescape-inner-double-quote end)
+ (cons (point) end)))
+ (eshell-current-quoted nil))
+ (eshell-parse-command subcmd))))
+ ;; If this is a simple double-quoted form like
+ ;; "${COMMAND}" (i.e. no indices after the subcommand and
+ ;; no `#' modifier before), ensure we convert to a single
+ ;; string. This avoids unnecessary work (e.g. splitting
+ ;; the output by lines) when it would just be joined back
+ ;; together afterwards.
+ ,(when (and (not modifier-p) eshell-current-quoted)
+ '(not indices)))
+ indices ,eshell-current-quoted)
+ (goto-char (1+ end)))))
((eq (char-after) ?\<)
(let ((end (eshell-find-delimiter ?\< ?\>)))
- (if (not end)
- (throw 'eshell-incomplete ?\<)
- (let* ((temp (make-temp-file temporary-file-directory))
- (cmd (concat (buffer-substring (1+ (point)) end)
- " > " temp)))
- (prog1
- `(let ((eshell-current-handles
- (eshell-create-handles ,temp 'overwrite)))
- (progn
- (eshell-as-subcommand
- ,(let ((eshell-current-quoted nil))
- (eshell-parse-command cmd)))
- (ignore
- (nconc eshell-this-command-hook
- ;; Quote this lambda; it will be evaluated
- ;; by `eshell-do-eval', which requires very
- ;; particular forms in order to work
- ;; properly. See bug#54190.
- (list (function
- (lambda ()
- (delete-file ,temp)
- (when-let ((buffer (get-file-buffer ,temp)))
- (kill-buffer buffer)))))))
- (eshell-apply-indices ,temp indices ,eshell-current-quoted)))
- (goto-char (1+ end)))))))
+ (unless end
+ (throw 'eshell-incomplete "$<"))
+ (forward-char)
+ (let* ((temp (make-temp-file temporary-file-directory))
+ (subcmd (or (eshell-unescape-inner-double-quote end)
+ (cons (point) end))))
+ (prog1
+ `(let ((eshell-current-handles
+ (eshell-create-handles ,temp 'overwrite)))
+ (progn
+ (eshell-as-subcommand
+ ,(let ((eshell-current-quoted nil))
+ (eshell-parse-command subcmd)))
+ (ignore
+ (nconc eshell-this-command-hook
+ ;; Quote this lambda; it will be evaluated by
+ ;; `eshell-do-eval', which requires very
+ ;; particular forms in order to work
+ ;; properly. See bug#54190.
+ (list (function
+ (lambda ()
+ (delete-file ,temp)
+ (when-let ((buffer (get-file-buffer ,temp)))
+ (kill-buffer buffer)))))))
+ (eshell-apply-indices ,temp indices ,eshell-current-quoted)))
+ (goto-char (1+ end))))))
((eq (char-after) ?\()
(condition-case nil
`(eshell-apply-indices
@@ -547,15 +566,19 @@ Possible variable references are:
(current-buffer)))))
indices ,eshell-current-quoted)
(end-of-file
- (throw 'eshell-incomplete ?\())))
+ (throw 'eshell-incomplete "$("))))
((looking-at (rx-to-string
`(or "'" ,(if eshell-current-quoted "\\\"" "\""))))
(eshell-with-temp-command
(or (eshell-unescape-inner-double-quote (point-max))
(cons (point) (point-max)))
- (let ((name (if (eq (char-after) ?\')
- (eshell-parse-literal-quote)
- (eshell-parse-double-quote))))
+ (let (name)
+ (when-let ((delim
+ (catch 'eshell-incomplete
+ (ignore (setq name (if (eq (char-after) ?\')
+ (eshell-parse-literal-quote)
+ (eshell-parse-double-quote)))))))
+ (throw 'eshell-incomplete (concat "$" delim)))
(when name
`(eshell-get-variable ,(eval name) indices ,eshell-current-quoted)))))
((assoc (char-to-string (char-after))
@@ -574,14 +597,17 @@ Possible variable references are:
(defun eshell-parse-indices ()
"Parse and return a list of index-lists.
+This produces a series of Lisp forms to be processed by
+`eshell-prepare-indices' and ultimately evaluated by
+`eshell-do-eval'.
For example, \"[0 1][2]\" becomes:
- ((\"0\" \"1\") (\"2\")."
+ ((\"0\" \"1\") (\"2\"))."
(let (indices)
(while (eq (char-after) ?\[)
(let ((end (eshell-find-delimiter ?\[ ?\])))
(if (not end)
- (throw 'eshell-incomplete ?\[)
+ (throw 'eshell-incomplete "[")
(forward-char)
(eshell-with-temp-command (or (eshell-unescape-inner-double-quote end)
(cons (point) end))
@@ -592,10 +618,46 @@ For example, \"[0 1][2]\" becomes:
(goto-char (1+ end)))))
(nreverse indices)))
+(defun eshell-parse-index (index)
+ "Parse a single INDEX in string form.
+If INDEX looks like a number, return that number.
+
+If INDEX looks like \"[BEGIN]..[END]\", where BEGIN and END look
+like integers, return a cons cell of BEGIN and END as numbers;
+BEGIN and/or END can be omitted here, in which case their value
+in the cons is nil.
+
+Otherwise (including if INDEX is not a string), return
+the original value of INDEX."
+ (save-match-data
+ (cond
+ ((and (stringp index) (get-text-property 0 'number index))
+ (string-to-number index))
+ ((and (stringp index)
+ (not (text-property-any 0 (length index) 'escaped t index))
+ (string-match (rx string-start
+ (group-n 1 (? (regexp eshell-integer-regexp)))
+ ".."
+ (group-n 2 (? (regexp eshell-integer-regexp)))
+ string-end)
+ index))
+ (let ((begin (match-string 1 index))
+ (end (match-string 2 index)))
+ (cons (unless (string-empty-p begin) (string-to-number begin))
+ (unless (string-empty-p end) (string-to-number end)))))
+ (t
+ index))))
+
(defun eshell-eval-indices (indices)
"Evaluate INDICES, a list of index-lists generated by `eshell-parse-indices'."
+ (declare (obsolete eshell-prepare-indices "30.1"))
(mapcar (lambda (i) (mapcar #'eval i)) indices))
+(defun eshell-prepare-indices (indices)
+ "Prepare INDICES to be evaluated by Eshell.
+INDICES is a list of index-lists generated by `eshell-parse-indices'."
+ `(list ,@(mapcar (lambda (idx-list) (cons 'list idx-list)) indices)))
+
(defun eshell-get-variable (name &optional indices quoted)
"Get the value for the variable NAME.
INDICES is a list of index-lists (see `eshell-parse-indices').
@@ -697,98 +759,123 @@ For example, to retrieve the second element of a user's record in
'/etc/passwd', the variable reference would look like:
${grep johnw /etc/passwd}[: 2]"
- (while indices
- (let ((refs (car indices)))
- (when (stringp value)
- (let (separator (index (caar indices)))
- (when (and (stringp index)
- (not (get-text-property 0 'number index)))
- (setq separator index
- refs (cdr refs)))
- (setq value (split-string value separator))
- (unless quoted
- (setq value (mapcar #'eshell-convert-to-number value)))))
- (cond
- ((< (length refs) 0)
- (error "Invalid array variable index: %s"
- (eshell-stringify refs)))
- ((= (length refs) 1)
- (setq value (eshell-index-value value (car refs))))
- (t
- (let ((new-value (list t)))
- (while refs
- (nconc new-value
- (list (eshell-index-value value
- (car refs))))
- (setq refs (cdr refs)))
- (setq value (cdr new-value))))))
- (setq indices (cdr indices)))
- value)
+ (dolist (refs indices value)
+ ;; For string values, check if the first index looks like a
+ ;; regexp, and if so, use that to split the string.
+ (when (stringp value)
+ (let (separator (first (car refs)))
+ (when (stringp (eshell-parse-index first))
+ (setq separator first
+ refs (cdr refs)))
+ (setq value (split-string value separator))
+ (unless quoted
+ (setq value (mapcar #'eshell-convert-to-number value)))))
+ (cond
+ ((< (length refs) 0)
+ (error "Invalid array variable index: %s"
+ (eshell-stringify refs)))
+ ((= (length refs) 1)
+ (setq value (eshell-index-value value (car refs))))
+ (t
+ (let (new-value)
+ (dolist (ref refs)
+ (push (eshell-index-value value ref) new-value))
+ (setq value (nreverse new-value)))))))
+
+(pcase-defmacro eshell-index-range (start end)
+ "A pattern that matches an Eshell index range.
+EXPVAL should be a cons cell, with each slot containing either an
+integer or nil. If this matches, bind the values of the sltos to
+START and END."
+ (list '\` (cons (list '\, `(and (or (pred integerp) (pred null)) ,start))
+ (list '\, `(and (or (pred integerp) (pred null)) ,end)))))
(defun eshell-index-value (value index)
"Reference VALUE using the given INDEX."
- (when (and (stringp index) (get-text-property 0 'number index))
- (setq index (string-to-number index)))
- (if (integerp index)
- (cond
- ((ring-p value)
- (if (> index (ring-length value))
- (error "Index exceeds length of ring")
- (ring-ref value index)))
- ((listp value)
- (if (> index (length value))
- (error "Index exceeds length of list")
- (nth index value)))
- ((vectorp value)
- (if (> index (length value))
- (error "Index exceeds length of vector")
- (aref value index)))
- (t
- (error "Invalid data type for indexing")))
- ;; INDEX is some non-integer value, so treat VALUE as an alist.
- (cdr (assoc index value))))
+ (let ((parsed-index (eshell-parse-index index)))
+ (if (ring-p value)
+ (pcase parsed-index
+ ((pred integerp)
+ (ring-ref value parsed-index))
+ ((eshell-index-range start end)
+ (let* ((len (ring-length value))
+ (real-start (mod (or start 0) len))
+ (real-end (mod (or end len) len)))
+ (when (and (eq real-end 0)
+ (not (eq end 0)))
+ (setq real-end len))
+ (ring-convert-sequence-to-ring
+ (seq-subseq (ring-elements value) real-start real-end))))
+ (_
+ (error "Invalid index for ring: %s" index)))
+ (pcase parsed-index
+ ((pred integerp)
+ (when (< parsed-index 0)
+ (setq parsed-index (+ parsed-index (length value))))
+ (seq-elt value parsed-index))
+ ((eshell-index-range start end)
+ (seq-subseq value (or start 0) end))
+ (_
+ ;; INDEX is some non-integer value, so treat VALUE as an alist.
+ (cdr (assoc parsed-index value)))))))
;;;_* Variable name completion
(defun eshell-complete-variable-reference ()
"If there is a variable reference, complete it."
- (let ((arg (pcomplete-actual-arg)) index)
- (when (setq index
- (string-match
- (concat "\\$\\(" eshell-variable-name-regexp
- "\\)?\\'") arg))
- (setq pcomplete-stub (substring arg (1+ index)))
+ (let ((arg (pcomplete-actual-arg)))
+ (when (string-match
+ (rx "$" (? (or "#" "@"))
+ (? (or (group-n 1 (regexp eshell-variable-name-regexp)
+ string-end)
+ (seq (group-n 2 (or "'" "\""))
+ (group-n 1 (+ anychar))))))
+ arg)
+ (setq pcomplete-stub (substring arg (match-beginning 1)))
+ (let ((delimiter (match-string 2 arg)))
+ ;; When finished with completion, insert the trailing
+ ;; delimiter, if any, and add a trailing slash if the variable
+ ;; refers to a directory.
+ (add-function
+ :before-until (var pcomplete-exit-function)
+ (lambda (variable status)
+ (when (eq status 'finished)
+ (when delimiter
+ (if (looking-at (regexp-quote delimiter))
+ (goto-char (match-end 0))
+ (insert delimiter)))
+ (let ((non-essential t)
+ (value (eshell-get-variable variable)))
+ (when (and (stringp value) (file-directory-p value))
+ (insert "/")
+ ;; Tell Pcomplete not to insert its own termination
+ ;; string.
+ t))))))
(throw 'pcomplete-completions (eshell-variables-list)))))
(defun eshell-variables-list ()
"Generate list of applicable variables."
- (let ((argname pcomplete-stub)
- completions)
- (dolist (alias eshell-variable-aliases-list)
- (if (string-match (concat "^" argname) (car alias))
- (setq completions (cons (car alias) completions))))
+ (let ((argname pcomplete-stub))
(sort
- (append
- (mapcar
- (lambda (varname)
- (let ((value (eshell-get-variable varname)))
- (if (and value
- (stringp value)
- (file-directory-p value))
- (concat varname "/")
- varname)))
- (eshell-envvar-names (eshell-environment-variables)))
- (all-completions argname obarray 'boundp)
- completions)
- 'string-lessp)))
+ (append (eshell-envvar-names)
+ (all-completions argname obarray #'boundp))
+ #'string-lessp)))
(defun eshell-complete-variable-assignment ()
"If there is a variable assignment, allow completion of entries."
- (let ((arg (pcomplete-actual-arg)) pos)
- (when (string-match (concat "\\`" eshell-variable-name-regexp "=") arg)
- (setq pos (match-end 0))
- (if (string-match "\\(:\\)[^:]*\\'" arg)
- (setq pos (match-end 1)))
+ (catch 'not-assignment
+ ;; The current argument can only be a variable assignment if all
+ ;; arguments leading up to it are also variable assignments. See
+ ;; `eshell-handle-local-variables'.
+ (dotimes (offset (1+ pcomplete-index))
+ (unless (string-match (concat "\\`" eshell-variable-name-regexp "=")
+ (pcomplete-actual-arg 'first offset))
+ (throw 'not-assignment nil)))
+ ;; We have a variable assignment. Handle it.
+ (let ((arg (pcomplete-actual-arg))
+ (pos (match-end 0)))
+ (when (string-match "\\(:\\)[^:]*\\'" arg)
+ (setq pos (match-end 1)))
(setq pcomplete-stub (substring arg pos))
(throw 'pcomplete-completions (pcomplete-entries)))))
diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el
index 7a7ece5cb7c..15fc2ae6310 100644
--- a/lisp/eshell/eshell.el
+++ b/lisp/eshell/eshell.el
@@ -199,10 +199,11 @@ shells such as bash, zsh, rc, 4dos."
:type 'hook
:group 'eshell)
-(defcustom eshell-unload-hook '(eshell-unload-all-modules)
+(defcustom eshell-unload-hook nil
"A hook run when Eshell is unloaded from memory."
:type 'hook
:group 'eshell)
+(make-obsolete-variable 'eshell-unload-hook nil "30.1")
(defcustom eshell-buffer-name "*eshell*"
"The basename used for Eshell buffers.
@@ -267,50 +268,42 @@ information on Eshell, see Info node `(eshell)Top'."
(define-obsolete-function-alias 'eshell-return-exits-minibuffer
#'eshell-command-mode "28.1")
-(defvar eshell-non-interactive-p nil
- "A variable which is non-nil when Eshell is not running interactively.
-Modules should use this variable so that they don't clutter
-non-interactive sessions, such as when using `eshell-command'.")
+(defvar eshell-non-interactive-p) ; Defined in esh-mode.el.
(declare-function eshell-add-input-to-history "em-hist" (input))
-;;;###autoload
-(defun eshell-command (&optional command arg)
- "Execute the Eshell command string COMMAND.
-With prefix ARG, insert output into the current buffer at point."
- (interactive)
- (unless arg
- (setq arg current-prefix-arg))
- (let ((eshell-non-interactive-p t))
+(defun eshell-read-command (&optional prompt)
+ "Read an Eshell command from the minibuffer, prompting with PROMPT."
+ (let ((prompt (or prompt "Emacs shell command: "))
+ (eshell-non-interactive-p t))
;; Enable `eshell-mode' only in this minibuffer.
(minibuffer-with-setup-hook (lambda ()
(eshell-mode)
(eshell-command-mode +1))
- (unless command
- (setq command (read-from-minibuffer "Emacs shell command: "))
- (if (eshell-using-module 'eshell-hist)
- (eshell-add-input-to-history command)))))
- (unless command
- (error "No command specified!"))
- ;; redirection into the current buffer is achieved by adding an
- ;; output redirection to the end of the command, of the form
- ;; 'COMMAND >>> #<buffer BUFFER>'. This will not interfere with
- ;; other redirections, since multiple redirections merely cause the
- ;; output to be copied to multiple target locations
- (if arg
- (setq command
- (concat command
- (format " >>> #<buffer %s>"
- (buffer-name (current-buffer))))))
+ (let ((command (read-from-minibuffer prompt)))
+ (when (eshell-using-module 'eshell-hist)
+ (eshell-add-input-to-history command))
+ command))))
+
+;;;###autoload
+(defun eshell-command (command &optional to-current-buffer)
+ "Execute the Eshell command string COMMAND.
+If TO-CURRENT-BUFFER is non-nil (interactively, with the prefix
+argument), then insert output into the current buffer at point."
+ (interactive (list (eshell-read-command)
+ current-prefix-arg))
(save-excursion
- (let ((buf (set-buffer (generate-new-buffer " *eshell cmd*")))
+ (let ((stdout (if to-current-buffer (current-buffer) t))
+ (buf (set-buffer (generate-new-buffer " *eshell cmd*")))
(eshell-non-interactive-p t))
(eshell-mode)
(let* ((proc (eshell-eval-command
- (list 'eshell-commands
- (eshell-parse-command command))))
+ `(let ((eshell-current-handles
+ (eshell-create-handles ,stdout 'insert))
+ (eshell-current-subjob-p))
+ ,(eshell-parse-command command))))
intr
- (bufname (if (and proc (listp proc))
+ (bufname (if (eq (car-safe proc) :eshell-background)
"*Eshell Async Command Output*"
(setq intr t)
"*Eshell Command Output*")))
@@ -328,7 +321,7 @@ With prefix ARG, insert output into the current buffer at point."
(while (and (bolp) (not (bobp)))
(delete-char -1)))
(cl-assert (and buf (buffer-live-p buf)))
- (unless arg
+ (unless to-current-buffer
(let ((len (if (not intr) 2
(count-lines (point-min) (point-max)))))
(cond
@@ -373,28 +366,14 @@ corresponding to a successful execution."
(set status-var eshell-last-command-status))
(cadr result))))))
-;;; Code:
-
-(defun eshell-unload-all-modules ()
- "Unload all modules that were loaded by Eshell, if possible.
-If the user has require'd in any of the modules, or customized a
-variable with a :require tag (such as `eshell-prefer-to-shell'), it
-will be impossible to unload Eshell completely without restarting
-Emacs."
- ;; if the user set `eshell-prefer-to-shell' to t, but never loaded
- ;; Eshell, then `eshell-subgroups' will be unbound
- (when (fboundp 'eshell-subgroups)
- (dolist (module (eshell-subgroups 'eshell))
- ;; this really only unloads as many modules as possible,
- ;; since other `require' references (such as by customizing
- ;; `eshell-prefer-to-shell' to a non-nil value) might make it
- ;; impossible to unload Eshell completely
- (if (featurep module)
- (ignore-errors
- (message "Unloading %s..." (symbol-name module))
- (unload-feature module)
- (message "Unloading %s...done" (symbol-name module)))))
- (message "Unloading eshell...done")))
+(defun eshell-unload-function ()
+ (eshell-unload-extension-modules)
+ ;; Wait to unload core modules until after `eshell' has finished
+ ;; unloading. `eshell' depends on several of them, so they can't be
+ ;; unloaded immediately.
+ (run-at-time 0 nil #'eshell-unload-modules
+ (reverse (eshell-subgroups 'eshell)) 'core)
+ nil)
(run-hooks 'eshell-load-hook)
diff --git a/lisp/files.el b/lisp/files.el
index d325729bf4d..c6f53e5eaf8 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -555,7 +555,7 @@ using a transform that puts the lock files on a local file system."
:version "28.1")
(defcustom remote-file-name-inhibit-locks nil
- "Whether to use file locks for remote files."
+ "Whether to create file locks for remote files."
:group 'files
:version "28.1"
:type 'boolean)
@@ -4025,6 +4025,7 @@ major-mode."
(forward-line 1)
(let ((startpos (point))
endpos
+ (selective-p (eq selective-display t))
(thisbuf (current-buffer)))
(save-excursion
(unless (let ((case-fold-search t))
@@ -4041,7 +4042,8 @@ major-mode."
(with-temp-buffer
(insert-buffer-substring thisbuf startpos endpos)
(goto-char (point-min))
- (subst-char-in-region (point) (point-max) ?\^m ?\n)
+ (if selective-p
+ (subst-char-in-region (point) (point-max) ?\r ?\n))
(while (not (eobp))
;; Discard the prefix.
(if (looking-at prefix)
@@ -6207,11 +6209,11 @@ instance of such commands."
(rename-buffer (generate-new-buffer-name base-name))
(force-mode-line-update))))
-(defun files--ensure-directory (mkdir dir)
- "Use function MKDIR to make directory DIR if it is not already a directory.
+(defun files--ensure-directory (dir)
+ "Make directory DIR if it is not already a directory.
Return non-nil if DIR is already a directory."
(condition-case err
- (funcall mkdir dir)
+ (make-directory-internal dir)
(error
(or (file-directory-p dir)
(signal (car err) (cdr err))))))
@@ -6237,32 +6239,27 @@ Signal an error if unsuccessful."
;; If default-directory is a remote directory,
;; make sure we find its make-directory handler.
(setq dir (expand-file-name dir))
- (let ((mkdir (if-let ((handler (find-file-name-handler dir 'make-directory)))
- #'(lambda (dir)
- ;; Use 'ignore' since the handler might be designed for
- ;; Emacs 28-, so it might return an (undocumented)
- ;; non-nil value, whereas the Emacs 29+ convention is
- ;; to return nil here.
- (ignore (funcall handler 'make-directory dir)))
- #'make-directory-internal)))
- (if (not parents)
- (funcall mkdir dir)
- (let ((dir (directory-file-name (expand-file-name dir)))
- already-dir create-list parent)
- (while (progn
- (setq parent (directory-file-name
- (file-name-directory dir)))
- (condition-case ()
- (ignore (setq already-dir
- (files--ensure-directory mkdir dir)))
- (error
- ;; Do not loop if root does not exist (Bug#2309).
- (not (string= dir parent)))))
- (setq create-list (cons dir create-list)
- dir parent))
- (dolist (dir create-list)
- (setq already-dir (files--ensure-directory mkdir dir)))
- already-dir))))
+ (let ((handler (find-file-name-handler dir 'make-directory)))
+ (if handler
+ (funcall handler 'make-directory dir parents)
+ (if (not parents)
+ (make-directory-internal dir)
+ (let ((dir (directory-file-name (expand-file-name dir)))
+ already-dir create-list parent)
+ (while (progn
+ (setq parent (directory-file-name
+ (file-name-directory dir)))
+ (condition-case ()
+ (ignore (setq already-dir
+ (files--ensure-directory dir)))
+ (error
+ ;; Do not loop if root does not exist (Bug#2309).
+ (not (string= dir parent)))))
+ (setq create-list (cons dir create-list)
+ dir parent))
+ (dolist (dir create-list)
+ (setq already-dir (files--ensure-directory dir)))
+ already-dir)))))
(defun make-empty-file (filename &optional parents)
"Create an empty file FILENAME.
@@ -6355,6 +6352,12 @@ RECURSIVE if DIRECTORY is nonempty."
directory-exists))
(files--force recursive #'delete-directory-internal directory))))))
+(defcustom remote-file-name-inhibit-delete-by-moving-to-trash nil
+ "Whether remote files shall be moved to the Trash.
+This overrules any setting of `delete-by-moving-to-trash'."
+ :version "30.1"
+ :type 'boolean)
+
(defun file-equal-p (file1 file2)
"Return non-nil if files FILE1 and FILE2 name the same file.
If FILE1 or FILE2 does not exist, the return value is unspecified."
@@ -7118,10 +7121,11 @@ specifies the list of buffers to kill, asking for approval for each one."
(setq list (cdr list))))
(defun kill-matching-buffers (regexp &optional internal-too no-ask)
- "Kill buffers whose name matches the specified REGEXP.
-Ignores buffers whose name starts with a space, unless optional
-prefix argument INTERNAL-TOO is non-nil. Asks before killing
-each buffer, unless NO-ASK is non-nil."
+ "Kill buffers whose names match the regular expression REGEXP.
+Interactively, prompt for REGEXP.
+Ignores buffers whose names start with a space, unless optional
+prefix argument INTERNAL-TOO(interactively, the prefix argument)
+is non-nil. Asks before killing each buffer, unless NO-ASK is non-nil."
(interactive "sKill buffers matching this regular expression: \nP")
(dolist (buffer (buffer-list))
(let ((name (buffer-name buffer)))
@@ -7130,6 +7134,17 @@ each buffer, unless NO-ASK is non-nil."
(string-match regexp name))
(funcall (if no-ask 'kill-buffer 'kill-buffer-ask) buffer)))))
+(defun kill-matching-buffers-no-ask (regexp &optional internal-too)
+ "Kill buffers whose names match the regular expression REGEXP.
+Interactively, prompt for REGEXP.
+Like `kill-matching-buffers', but doesn't ask for confirmation
+before killing each buffer.
+Ignores buffers whose names start with a space, unless the
+optional argument INTERNAL-TOO (interactively, the prefix argument)
+is non-nil."
+ (interactive "sKill buffers matching this regular expression: \nP")
+ (kill-matching-buffers regexp internal-too t))
+
(defun rename-auto-save-file ()
"Adjust current buffer's auto save file name for current conditions.
@@ -7675,7 +7690,7 @@ If DIR's free space cannot be obtained, this function returns nil."
;; This avoids recognizing `1 may 1997' as a date in the line:
;; -r--r--r-- 1 may 1997 1168 Oct 19 16:49 README
- ;; The "[BkKMGTPEZY]?" below supports "ls -alh" output.
+ ;; The "[BkKMGTPEZYRQ]?" below supports "ls -alh" output.
;; For non-iso date formats, we add the ".*" in order to find
;; the last possible match. This avoids recognizing
@@ -7687,8 +7702,8 @@ If DIR's free space cannot be obtained, this function returns nil."
;; parentheses:
;; -rw-r--r-- (modified) 2005-10-22 21:25 files.el
;; This is not supported yet.
- (purecopy (concat "\\([0-9][BkKMGTPEZY]? " iso
- "\\|.*[0-9][BkKMGTPEZY]? "
+ (purecopy (concat "\\([0-9][BkKMGTPEZYRQ]? " iso
+ "\\|.*[0-9][BkKMGTPEZYRQ]? "
"\\(" western "\\|" western-comma
"\\|" DD-MMM-YYYY "\\|" east-asian "\\)"
"\\) +")))
diff --git a/lisp/find-dired.el b/lisp/find-dired.el
index af029fb2074..db2f5e7d026 100644
--- a/lisp/find-dired.el
+++ b/lisp/find-dired.el
@@ -50,10 +50,13 @@ than the latter."
:group 'find-dired
:type 'string)
+(defvar find-gnu-find-p
+ (eq 0 (ignore-errors
+ (process-file find-program nil nil nil null-device "--version")))
+ "Non-nil if `find-program' is a GNU Find, nil otherwise.")
+
(defvar find-ls-option-default-ls
- (cons "-ls" (if (memq system-type '(berkeley-unix darwin))
- "-dgils"
- "-dilsb")))
+ (cons "-ls" (if find-gnu-find-p "-dilsb" "-dgils")))
(defvar find-ls-option-default-exec
(cons (format "-exec ls -ld {} %s" find-exec-terminator) "-ld"))
diff --git a/lisp/frame.el b/lisp/frame.el
index bf984da0d62..39e8a4c88b8 100644
--- a/lisp/frame.el
+++ b/lisp/frame.el
@@ -239,7 +239,8 @@ that's not the whole story: see `after-focus-change-function'."
This function runs the abnormal hook `move-frame-functions'."
(interactive "e")
(let ((frame (posn-window (event-start event))))
- (run-hook-with-args 'move-frame-functions frame)))
+ (when (frame-live-p frame) ;Experience shows it can die in the meantime.
+ (run-hook-with-args 'move-frame-functions frame))))
;;;; Arrangement of frames at startup
@@ -1193,7 +1194,7 @@ e.g. (mapc \\='frame-set-background-mode (frame-list))."
(defvar inhibit-frame-set-background-mode nil)
-(defun frame--current-backround-mode (frame)
+(defun frame--current-background-mode (frame)
(let* ((frame-default-bg-mode (frame-terminal-default-bg-mode frame))
(bg-color (frame-parameter frame 'background-color))
(tty-type (tty-type frame))
@@ -1223,7 +1224,7 @@ If optional arg KEEP-FACE-SPECS is non-nil, don't recalculate
face specs for the new background mode."
(unless inhibit-frame-set-background-mode
(let* ((bg-mode
- (frame--current-backround-mode frame))
+ (frame--current-background-mode frame))
(display-type
(cond ((null (window-system frame))
(if (tty-display-color-p frame) 'color 'mono))
@@ -1302,7 +1303,7 @@ the `background-mode' terminal parameter."
;; :global t
;; :group 'faces
;; (when (eq dark-mode
-;; (eq 'light (frame--current-backround-mode (selected-frame))))
+;; (eq 'light (frame--current-background-mode (selected-frame))))
;; ;; FIXME: Change the face's SPEC instead?
;; (set-face-attribute 'default nil
;; :foreground (face-attribute 'default :background)
@@ -3111,6 +3112,9 @@ If FRAME isn't maximized, show the title bar."
frame 'undecorated
(eq (alist-get 'fullscreen (frame-parameters frame)) 'maximized)))
+(define-obsolete-function-alias 'frame--current-backround-mode
+ #'frame--current-background-mode "30.1")
+
(provide 'frame)
;;; frame.el ends here
diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el
index ce7a4488a7f..6a7a3f41746 100644
--- a/lisp/gnus/gnus-art.el
+++ b/lisp/gnus/gnus-art.el
@@ -7390,6 +7390,7 @@ This is an extended text-mode.
\\{gnus-article-edit-mode-map}"
(make-local-variable 'gnus-article-edit-done-function)
(make-local-variable 'gnus-prev-winconf)
+ (make-local-variable 'gnus-prev-cwc)
(setq-local font-lock-defaults '(message-font-lock-keywords t))
(setq-local mail-header-separator "")
(setq-local gnus-article-edit-mode t)
@@ -7420,7 +7421,8 @@ groups."
(defun gnus-article-edit-article (start-func exit-func &optional quiet)
"Start editing the contents of the current article buffer."
- (let ((winconf (current-window-configuration)))
+ (let ((winconf (current-window-configuration))
+ (cwc gnus-current-window-configuration))
(set-buffer gnus-article-buffer)
(let ((message-auto-save-directory
;; Don't associate the article buffer with a draft file.
@@ -7431,6 +7433,7 @@ groups."
(gnus-configure-windows 'edit-article)
(setq gnus-article-edit-done-function exit-func)
(setq gnus-prev-winconf winconf)
+ (setq gnus-prev-cwc cwc)
(unless quiet
(gnus-message 6 "C-c C-c to end edits"))))
@@ -7440,7 +7443,8 @@ groups."
(let ((func gnus-article-edit-done-function)
(buf (current-buffer))
(start (window-start))
- (winconf gnus-prev-winconf))
+ (winconf gnus-prev-winconf)
+ (cwc gnus-prev-cwc))
(widen) ;; Widen it in case that users narrowed the buffer.
(funcall func arg)
(set-buffer buf)
@@ -7458,6 +7462,7 @@ groups."
(set-text-properties (point-min) (point-max) nil)
(gnus-article-mode)
(set-window-configuration winconf)
+ (setq gnus-current-window-configuration cwc)
(set-buffer buf)
(set-window-start (get-buffer-window buf) start)
(set-window-point (get-buffer-window buf) (point)))
@@ -7479,10 +7484,12 @@ groups."
(erase-buffer)
(if (gnus-buffer-live-p gnus-original-article-buffer)
(insert-buffer-substring gnus-original-article-buffer))
- (let ((winconf gnus-prev-winconf))
+ (let ((winconf gnus-prev-winconf)
+ (cwc gnus-prev-cwc))
(kill-all-local-variables)
(gnus-article-mode)
(set-window-configuration winconf)
+ (setq gnus-current-window-configuration cwc)
;; Tippy-toe some to make sure that point remains where it was.
(with-current-buffer curbuf
(set-window-start (get-buffer-window (current-buffer)) window-start)
diff --git a/lisp/gnus/gnus-eform.el b/lisp/gnus/gnus-eform.el
index 958d819048f..cc5beb16a34 100644
--- a/lisp/gnus/gnus-eform.el
+++ b/lisp/gnus/gnus-eform.el
@@ -70,17 +70,20 @@ It is a slightly enhanced `lisp-data-mode'.
(when (gnus-visual-p 'group-menu 'menu)
(gnus-edit-form-make-menu-bar))
(make-local-variable 'gnus-edit-form-done-function)
- (make-local-variable 'gnus-prev-winconf))
+ (make-local-variable 'gnus-prev-winconf)
+ (make-local-variable 'gnus-prev-cwc))
(defun gnus-edit-form (form documentation exit-func &optional layout)
"Edit FORM in a new buffer.
Call EXIT-FUNC on exit. Display DOCUMENTATION in the beginning
of the buffer.
The optional LAYOUT overrides the `edit-form' window layout."
- (let ((winconf (current-window-configuration)))
+ (let ((winconf (current-window-configuration))
+ (cwc gnus-current-window-configuration))
(set-buffer (gnus-get-buffer-create gnus-edit-form-buffer))
(gnus-configure-windows (or layout 'edit-form))
(gnus-edit-form-mode)
+ (setq gnus-prev-cwc cwc)
(setq gnus-prev-winconf winconf)
(setq gnus-edit-form-done-function exit-func)
(erase-buffer)
@@ -113,9 +116,11 @@ The optional LAYOUT overrides the `edit-form' window layout."
(defun gnus-edit-form-exit ()
"Kill the current buffer."
(interactive nil gnus-edit-form-mode)
- (let ((winconf gnus-prev-winconf))
+ (let ((winconf gnus-prev-winconf)
+ (cwc gnus-prev-cwc))
(kill-buffer (current-buffer))
- (set-window-configuration winconf)))
+ (set-window-configuration winconf)
+ (setq gnus-current-window-configuration cwc)))
(provide 'gnus-eform)
diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el
index 070d1223e2c..8c1d7e3c86a 100644
--- a/lisp/gnus/gnus-group.el
+++ b/lisp/gnus/gnus-group.el
@@ -4195,7 +4195,8 @@ If DONT-SCAN is non-nil, scan non-activated groups as well."
(let ((info (gnus-get-info group))
(active (gnus-active group)))
(when info
- (gnus-request-update-info info method))
+ (gnus-request-update-info info method)
+ (setq active (gnus-active group)))
(gnus-get-unread-articles-in-group info active)
(unless (gnus-virtual-group-p group)
(gnus-close-group group))
diff --git a/lisp/gnus/gnus-icalendar.el b/lisp/gnus/gnus-icalendar.el
index 0d776cd1bca..adbc39547ff 100644
--- a/lisp/gnus/gnus-icalendar.el
+++ b/lisp/gnus/gnus-icalendar.el
@@ -165,7 +165,7 @@
(icalendar--get-event-property-attributes
event field) zone-map))
(dtdate-dec (icalendar--decode-isodatetime dtdate nil dtdate-zone)))
- (encode-time dtdate-dec)))
+ (when dtdate-dec (encode-time dtdate-dec))))
(defun gnus-icalendar-event--find-attendee (ical name-or-email)
(let* ((event (car (icalendar--all-events ical)))
diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el
index 45771e7a204..d9834031b80 100644
--- a/lisp/gnus/gnus-registry.el
+++ b/lisp/gnus/gnus-registry.el
@@ -394,7 +394,7 @@ This is not required after changing `gnus-registry-cache-file'."
(with-no-warnings
(eieio-persistent-read file 'registry-db))
;; Older EIEIO versions do not check the class name.
- ('wrong-number-of-arguments
+ (wrong-number-of-arguments
(eieio-persistent-read file)))))
(gnus-message 5 "Reading Gnus registry from %s...done" file))
diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el
index 27c71fa6c6a..12d9dacf132 100644
--- a/lisp/gnus/gnus-search.el
+++ b/lisp/gnus/gnus-search.el
@@ -1066,7 +1066,9 @@ Responsible for handling and, or, and parenthetical expressions.")
_srv query-spec groups)
(let ((artlist []))
(dolist (group groups)
- (let* ((gnus-newsgroup-selection (nnselect-get-artlist group))
+ (let* ((gnus-newsgroup-selection
+ (or
+ (nnselect-get-artlist group) (nnselect-generate-artlist group)))
(group-spec
(nnselect-categorize
(mapcar 'car
@@ -1330,9 +1332,10 @@ elements are present."
(1- nyear)
nyear))
(setq dmonth 1))))
- (format-time-string
- "%e-%b-%Y"
- (encode-time 0 0 0 dday dmonth dyear))))
+ (with-locale-environment "C"
+ (format-time-string
+ "%e-%b-%Y"
+ (encode-time 0 0 0 dday dmonth dyear)))))
(cl-defmethod gnus-search-imap-handle-string ((engine gnus-search-imap)
(str string))
@@ -2173,37 +2176,53 @@ remaining string, then adds all that to the top-level spec."
(declare-function gnus-registry-get-id-key "gnus-registry" (id key))
-(defun gnus-search-thread (header)
- "Make an nnselect group based on the thread containing the article
-header. The current server will be searched. If the registry is
-installed, the server that the registry reports the current
-article came from is also searched."
- (let* ((ids (cons (mail-header-id header)
- (split-string
- (or (mail-header-references header)
- ""))))
- (query
- (list (cons 'query (mapconcat (lambda (i)
- (format "id:%s" i))
- ids " or "))
- (cons 'thread t)))
- (server
- (list (list (gnus-method-to-server
- (gnus-find-method-for-group gnus-newsgroup-name)))))
- (registry-group (and
- (bound-and-true-p gnus-registry-enabled)
- (car (gnus-registry-get-id-key
- (mail-header-id header) 'group))))
- (registry-server
- (and registry-group
- (gnus-method-to-server
- (gnus-find-method-for-group registry-group)))))
- (when registry-server
- (cl-pushnew (list registry-server) server :test #'equal))
- (gnus-group-make-search-group nil (list
- (cons 'search-query-spec query)
- (cons 'search-group-spec server)))
- (gnus-summary-goto-subject (gnus-id-to-article (mail-header-id header)))))
+(defun gnus-search-thread (header &optional group server)
+ "Find articles in the thread containing HEADER from GROUP on SERVER.
+If gnus-refer-thread-use-search is nil only the current group is
+checked for articles; if t all groups on the server containing
+the article's group will be searched; if a list then all servers
+in this list will be searched. If possible the newly found
+articles are added to the summary buffer; otherwise the full
+thread is displayed in a new ephemeral nnselect buffer."
+ (let* ((group (or group gnus-newsgroup-name))
+ (server (or server (gnus-group-server group)))
+ (query
+ (list
+ (cons 'query
+ (mapconcat (lambda (i) (format "id:%s" i))
+ (cons (mail-header-id header)
+ (split-string
+ (or (mail-header-references header) "")))
+ " or "))
+ (cons 'thread t)))
+ (gnus-search-use-parsed-queries t))
+ (if (not gnus-refer-thread-use-search)
+ ;; Search only the current group and send the headers back to
+ ;; the caller to add to the summary buffer.
+ (gnus-fetch-headers
+ (sort
+ (mapcar (lambda (x) (elt x 1))
+ (gnus-search-run-query
+ (list (cons 'search-query-spec query)
+ (cons 'search-group-spec
+ (list (list server group))))))
+ #'<) nil t)
+ ;; Otherwise create an ephemeral search group. If we return to
+ ;; the current summary buffer after exiting the thread we would
+ ;; end up overwriting any changes we made, so we exit the
+ ;; current summary buffer first.
+ (gnus-summary-exit)
+ (gnus-group-read-ephemeral-search-group
+ nil
+ (list (cons 'search-query-spec query)
+ (cons 'search-group-spec
+ (if (listp gnus-refer-thread-use-search)
+ gnus-refer-thread-use-search
+ (list (list server))))))
+ (if (gnus-id-to-article (mail-header-id header))
+ (gnus-summary-goto-subject
+ (gnus-id-to-article (mail-header-id header)))
+ (message "Thread search failed")))))
(defun gnus-search-get-active (srv)
(let ((method (gnus-server-to-method srv))
diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el
index d59b5b58ceb..19b8b09de03 100644
--- a/lisp/gnus/gnus-start.el
+++ b/lisp/gnus/gnus-start.el
@@ -1490,7 +1490,8 @@ backend check whether the group actually exists."
(gnus-request-update-info
info (inline (gnus-find-method-for-group
(gnus-info-group info)))))
- (gnus-activate-group (gnus-info-group info) nil t))
+ (gnus-activate-group (gnus-info-group info) nil t)
+ (setq active (gnus-active (gnus-info-group info))))
(let* ((range (gnus-info-read info))
(num 0))
diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el
index 0e81f95cd15..35e867a3508 100644
--- a/lisp/gnus/gnus-sum.el
+++ b/lisp/gnus/gnus-sum.el
@@ -80,6 +80,8 @@
(autoload 'nnselect-article-rsv "nnselect" nil nil)
(autoload 'nnselect-article-group "nnselect" nil nil)
(autoload 'gnus-nnselect-group-p "nnselect" nil nil)
+(autoload 'gnus-search-thread "gnus-search" nil nil)
+(autoload 'gnus-search-server-to-engine "gnus-search" nil nil)
(defcustom gnus-kill-summary-on-exit t
"If non-nil, kill the summary buffer when you exit from it.
@@ -141,12 +143,17 @@ If t, fetch all the available old headers."
'gnus-refer-thread-use-search "28.1")
(defcustom gnus-refer-thread-use-search nil
- "Search an entire server when referring threads.
-A nil value will only search for thread-related articles in the
-current group."
+ "Specify where to find articles when referring threads.
+A nil value restricts searches for thread-related articles to the
+current group; a value of t searches all groups on the server; a
+list of servers and groups (where each element is a list whose
+car is the server and whose cdr is a list of groups on this
+server or nil to search the entire server) searches these
+server/groups. This may usefully be set as a group parameter."
:version "28.1"
:group 'gnus-thread
- :type 'boolean)
+ :type '(restricted-sexp :match-alternatives
+ (listp 't 'nil)))
(defcustom gnus-refer-thread-limit-to-thread nil
"If non-nil referring a thread will limit the summary buffer to
@@ -1408,6 +1415,7 @@ the normal Gnus MIME machinery."
(defvar gnus-newsgroup-adaptive-score-file nil)
(defvar gnus-current-score-file nil)
(defvar gnus-current-move-group nil)
+(defvar gnus-current-move-article nil)
(defvar gnus-current-copy-group nil)
(defvar gnus-current-crosspost-group nil)
(defvar gnus-newsgroup-display nil)
@@ -8500,7 +8508,15 @@ If UNREPLIED (the prefix), limit to unreplied articles."
If REVERSE, limit the summary buffer to articles that are marked
with MARKS. MARKS can either be a string of marks or a list of marks.
Returns how many articles were removed."
- (interactive "sMarks: " gnus-summary-mode)
+ (interactive
+ (list
+ (completing-read "Marks:"
+ (let ((mark-list '()))
+ (mapc (lambda (datum)
+ (cl-pushnew (gnus-data-mark datum) mark-list))
+ gnus-newsgroup-data)
+ (mapcar 'char-to-string mark-list)))
+ current-prefix-arg) gnus-summary-mode)
(gnus-summary-limit-to-marks marks t))
(defun gnus-summary-limit-to-marks (marks &optional reverse)
@@ -8509,7 +8525,15 @@ If REVERSE (the prefix), limit the summary buffer to articles that are
not marked with MARKS. MARKS can either be a string of marks or a
list of marks.
Returns how many articles were removed."
- (interactive "sMarks: \nP" gnus-summary-mode)
+ (interactive
+ (list
+ (completing-read "Marks:"
+ (let ((mark-list '()))
+ (mapc (lambda (datum)
+ (cl-pushnew (gnus-data-mark datum) mark-list))
+ gnus-newsgroup-data)
+ (mapcar 'char-to-string mark-list)))
+ current-prefix-arg) gnus-summary-mode)
(prog1
(let ((data gnus-newsgroup-data)
(marks (if (listp marks) marks
@@ -8992,64 +9016,72 @@ Return the number of articles fetched."
(defun gnus-summary-refer-thread (&optional limit)
"Fetch all articles in the current thread.
-For backends that know how to search for threads (currently only
-`nnimap') a non-numeric prefix arg will search the entire server;
-without a prefix arg only the current group is searched. If the
-variable `gnus-refer-thread-use-search' is non-nil the prefix arg
-has the reverse meaning. If no backend-specific `request-thread'
-function is available fetch LIMIT (the numerical prefix) old
-headers. If LIMIT is non-numeric or nil fetch the number
-specified by the `gnus-refer-thread-limit' variable."
+A non-numeric prefix arg will search the entire server; without a
+prefix arg only the current group is searched. If the variable
+`gnus-refer-thread-use-search' is t the prefix arg has the
+reverse meaning. If searching is not enabled for the current
+group, fetch LIMIT (the numerical prefix) old headers. If LIMIT
+is non-numeric or nil fetch the number specified by the
+`gnus-refer-thread-limit' variable."
(interactive "P" gnus-summary-mode)
- (let* ((header (gnus-summary-article-header))
- (id (mail-header-id header))
- (gnus-inhibit-demon t)
- (gnus-summary-ignore-duplicates t)
- (gnus-read-all-available-headers t)
- (gnus-refer-thread-use-search
- (if (and (not (null limit)) (listp limit))
- (not gnus-refer-thread-use-search) gnus-refer-thread-use-search))
- (new-headers
- (if (gnus-check-backend-function
- 'request-thread gnus-newsgroup-name)
- (gnus-request-thread header gnus-newsgroup-name)
- (let* ((limit (if (numberp limit) (prefix-numeric-value limit)
- gnus-refer-thread-limit))
- (last (if (numberp limit)
- (min (+ (mail-header-number header)
- limit)
- gnus-newsgroup-highest)
- gnus-newsgroup-highest))
- (subject (gnus-simplify-subject
- (mail-header-subject header)))
- (refs (split-string (or (mail-header-references header)
- "")))
- (gnus-parse-headers-hook
+ (let* ((group gnus-newsgroup-name)
+ (header (gnus-summary-article-header))
+ (id (mail-header-id header))
+ (gnus-inhibit-demon t)
+ (gnus-summary-ignore-duplicates t)
+ (gnus-read-all-available-headers t)
+ (gnus-refer-thread-use-search
+ (if (or (null limit) (numberp limit))
+ gnus-refer-thread-use-search
+ (if (booleanp gnus-refer-thread-use-search)
+ (not gnus-refer-thread-use-search)
+ gnus-refer-thread-use-search)))
+ article-ids new-unreads
+ (new-headers
+ (cond
+ ;; If there is a backend-specific method, use it.
+ ((gnus-check-backend-function
+ 'request-thread group)
+ (gnus-request-thread header group))
+ ;; If a search engine is configured, use it.
+ ((ignore-errors
+ (gnus-search-server-to-engine (gnus-group-server group)))
+ (gnus-search-thread header))
+ ;; Otherwise just retrieve some headers.
+ (t
+ (let* ((limit (if (numberp limit)
+ limit
+ gnus-refer-thread-limit))
+ (last (if (numberp limit)
+ (min (+ (mail-header-number header) limit)
+ gnus-newsgroup-highest)
+ gnus-newsgroup-highest))
+ (subject (gnus-simplify-subject
+ (mail-header-subject header)))
+ (refs (split-string
+ (or (mail-header-references header) "")))
+ (gnus-parse-headers-hook
(let ((refs (append refs (list id subject))))
- (lambda ()
- (goto-char (point-min))
- (keep-lines (regexp-opt refs))))))
- (gnus-fetch-headers (list last) (if (numberp limit)
- (* 2 limit) limit)
- t))))
- article-ids new-unreads)
+ (lambda () (goto-char (point-min))
+ (keep-lines (regexp-opt refs))))))
+ (gnus-fetch-headers
+ (list last) (if (numberp limit) (* 2 limit) limit) t))))))
(when (listp new-headers)
(dolist (header new-headers)
- (push (mail-header-number header) article-ids))
+ (push (mail-header-number header) article-ids))
(setq article-ids (nreverse article-ids))
(setq new-unreads
- (gnus-sorted-intersection gnus-newsgroup-unselected article-ids))
+ (gnus-sorted-intersection gnus-newsgroup-unselected article-ids))
(setq gnus-newsgroup-unselected
- (gnus-sorted-ndifference gnus-newsgroup-unselected new-unreads))
+ (gnus-sorted-ndifference gnus-newsgroup-unselected new-unreads))
(setq gnus-newsgroup-unreads
- (gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
+ (gnus-sorted-nunion gnus-newsgroup-unreads new-unreads))
(setq gnus-newsgroup-headers
(gnus-delete-duplicate-headers
- (cl-merge
- 'list gnus-newsgroup-headers new-headers
- 'gnus-article-sort-by-number)))
+ (cl-merge 'list gnus-newsgroup-headers new-headers
+ 'gnus-article-sort-by-number)))
(setq gnus-newsgroup-articles
- (gnus-sorted-nunion gnus-newsgroup-articles article-ids))
+ (gnus-sorted-nunion gnus-newsgroup-articles article-ids))
(gnus-summary-limit-include-thread id gnus-refer-thread-limit-to-thread)))
(gnus-summary-show-thread))
@@ -10248,6 +10280,7 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
article gnus-newsgroup-name (current-buffer) t)))
;; run the move/copy/crosspost/respool hook
+ (setq gnus-current-move-article (cdr art-group))
(run-hook-with-args 'gnus-summary-article-move-hook
action
(gnus-data-header (gnus-data-find article))
diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el
index efab58437e9..fc8518512ee 100644
--- a/lisp/gnus/gnus.el
+++ b/lisp/gnus/gnus.el
@@ -2445,6 +2445,7 @@ are always t.")
;; Save window configuration.
(defvar gnus-prev-winconf nil)
+(defvar gnus-prev-cwc nil)
(defvar gnus-reffed-article-number nil)
diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el
index 639a29582b3..582c598ac22 100644
--- a/lisp/gnus/mail-source.el
+++ b/lisp/gnus/mail-source.el
@@ -658,50 +658,49 @@ Deleting old (> %s day(s)) incoming mail file `%s'." diff bfile)
;; If getting from mail spool directory, use movemail to move
;; rather than just renaming, so as to interlock with the
;; mailer.
- (unwind-protect
- (save-excursion
- (setq errors (generate-new-buffer " *mail source loss*"))
- (let ((default-directory "/"))
- (setq result
- ;; call-process looks in exec-path, which
- ;; contains exec-directory, so will find
- ;; Mailutils movemail if it exists, else it will
- ;; find "our" movemail in exec-directory.
- ;; Bug#31737
- (apply
- #'call-process
- (append
- (list
- mail-source-movemail-program
- nil errors nil from to)))))
- (when (file-exists-p to)
- (set-file-modes to mail-source-default-file-modes 'nofollow))
- (if (and (or (not (buffer-modified-p errors))
- (zerop (buffer-size errors)))
- (and (numberp result)
- (zerop result)))
- ;; No output => movemail won.
- t
- (set-buffer errors)
- ;; There may be a warning about older revisions. We
- ;; ignore that.
- (goto-char (point-min))
- (if (search-forward "older revision" nil t)
- t
- ;; Probably a real error.
- (subst-char-in-region (point-min) (point-max) ?\n ?\ )
- (goto-char (point-max))
- (skip-chars-backward " \t")
- (delete-region (point) (point-max))
- (goto-char (point-min))
- (when (looking-at "movemail: ")
- (delete-region (point-min) (match-end 0)))
- ;; Result may be a signal description string.
- (unless (yes-or-no-p
- (format "movemail: %s (%s return). Continue? "
- (buffer-string) result))
- (error "%s" (buffer-string)))
- (setq to nil)))))))
+ (save-excursion
+ (setq errors (generate-new-buffer " *mail source loss*"))
+ (let ((default-directory "/"))
+ (setq result
+ ;; call-process looks in exec-path, which
+ ;; contains exec-directory, so will find
+ ;; Mailutils movemail if it exists, else it will
+ ;; find "our" movemail in exec-directory.
+ ;; Bug#31737
+ (apply
+ #'call-process
+ (append
+ (list
+ mail-source-movemail-program
+ nil errors nil from to)))))
+ (when (file-exists-p to)
+ (set-file-modes to mail-source-default-file-modes 'nofollow))
+ (if (and (or (not (buffer-modified-p errors))
+ (zerop (buffer-size errors)))
+ (and (numberp result)
+ (zerop result)))
+ ;; No output => movemail won.
+ t
+ (set-buffer errors)
+ ;; There may be a warning about older revisions. We
+ ;; ignore that.
+ (goto-char (point-min))
+ (if (search-forward "older revision" nil t)
+ t
+ ;; Probably a real error.
+ (subst-char-in-region (point-min) (point-max) ?\n ?\ )
+ (goto-char (point-max))
+ (skip-chars-backward " \t")
+ (delete-region (point) (point-max))
+ (goto-char (point-min))
+ (when (looking-at "movemail: ")
+ (delete-region (point-min) (match-end 0)))
+ ;; Result may be a signal description string.
+ (unless (yes-or-no-p
+ (format "movemail: %s (%s return). Continue? "
+ (buffer-string) result))
+ (error "%s" (buffer-string)))
+ (setq to nil))))))
(when (buffer-live-p errors)
(kill-buffer errors))
;; Return whether we moved successfully or not.
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index f4cfffa2e8a..8d3fe010af4 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -6862,10 +6862,9 @@ are not included."
(defun message-setup-1 (headers &optional yank-action actions return-action)
(dolist (action actions)
- (condition-case nil
- ;; FIXME: Use functions rather than expressions!
- (add-to-list 'message-send-actions
- `(apply #',(car action) ',(cdr action)))))
+ ;; FIXME: Use functions rather than expressions!
+ (add-to-list 'message-send-actions
+ `(apply #',(car action) ',(cdr action))))
(setq message-return-action return-action)
(setq message-reply-buffer
(if (and (consp yank-action)
diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el
index 60ee5d82e18..6025ca7e72a 100644
--- a/lisp/gnus/mml.el
+++ b/lisp/gnus/mml.el
@@ -1484,10 +1484,12 @@ Ask for type, description or disposition according to
(setq disposition (mml-minibuffer-read-disposition type nil file)))
(mml-attach-file file type description disposition)))))
-(defun mml-attach-buffer (buffer &optional type description disposition)
+(defun mml-attach-buffer (buffer &optional type description disposition filename)
"Attach a buffer to the outgoing MIME message.
BUFFER is the name of the buffer to attach. See
-`mml-attach-file' for details of operation."
+`mml-attach-file' regarding TYPE, DESCRIPTION and DISPOSITION.
+FILENAME is a suggested file name for the attachment should a
+recipient wish to save a copy separate from the message."
(interactive
(let* ((buffer (read-buffer "Attach buffer: "))
(type (mml-minibuffer-read-type buffer "text/plain"))
@@ -1497,9 +1499,10 @@ BUFFER is the name of the buffer to attach. See
;; If in the message header, attach at the end and leave point unchanged.
(let ((head (unless (message-in-body-p) (point))))
(if head (goto-char (point-max)))
- (mml-insert-empty-tag 'part 'type type 'buffer buffer
- 'disposition disposition
- 'description description)
+ (apply #'mml-insert-empty-tag
+ 'part 'type type 'buffer buffer
+ 'disposition disposition 'description description
+ (and filename `(filename ,filename)))
;; When using Mail mode, make sure it does the mime encoding
;; when you send the message.
(or (eq mail-user-agent 'message-user-agent)
diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el
index c7a75105c08..8728aab1def 100644
--- a/lisp/gnus/nndiary.el
+++ b/lisp/gnus/nndiary.el
@@ -339,8 +339,15 @@ all. This may very well take some time.")
;; for this header) or one list (specifying all the possible values for this
;; header). In the latter case, the list does NOT include the unspecified
;; spec (*).
+
;; For time zone values, we have symbolic time zone names associated with
;; the (relative) number of seconds ahead GMT.
+ ;; The list of time zone values is obsolescent, and new code should
+ ;; not rely on it. Many of the time zone abbreviations are wrong;
+ ;; in particular, all single-letter abbreviations other than "Z" have
+ ;; been wrong since Internet RFC 2822 (2001). However, the
+ ;; abbreviations have not been changed due to backward compatibility
+ ;; concerns.
)
(defsubst nndiary-schedule ()
@@ -1366,10 +1373,10 @@ all. This may very well take some time.")
(setq day (+ 7 day))))
;; Finally, if we have some days, they are valid
(when days
- (sort days #'>)
(throw 'found
(encode-time 0 minute hour
- (car days) month year time-zone)))
+ (apply #'max days)
+ month year time-zone)))
)))))
;; There's an upper limit, but we didn't find any last occurrence.
;; This means that the schedule is undecidable. This can happen if
diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el
index de942993586..81449cb58b2 100644
--- a/lisp/gnus/nnimap.el
+++ b/lisp/gnus/nnimap.el
@@ -1908,19 +1908,7 @@ If LIMIT, first try to limit the search to the N last articles."
(autoload 'nnselect-search-thread "nnselect")
-(deffoo nnimap-request-thread (header &optional group server)
- (if gnus-refer-thread-use-search
- (nnselect-search-thread header)
- (when (nnimap-change-group group server)
- (let* ((cmd (nnimap-make-thread-query header))
- (result (with-current-buffer (nnimap-buffer)
- (nnimap-command "UID SEARCH %s" cmd))))
- (when result
- (gnus-fetch-headers
- (and (car result)
- (delete 0 (mapcar #'string-to-number
- (cdr (assoc "SEARCH" (cdr result))))))
- nil t))))))
+(make-obsolete 'nnimap-request-thread 'gnus-search-thread "29.1")
(defun nnimap-change-group (group &optional server no-reconnect read-only)
"Change group to GROUP if non-nil.
diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el
index 87cb1275313..c4fbe3a5bd2 100644
--- a/lisp/gnus/nnselect.el
+++ b/lisp/gnus/nnselect.el
@@ -64,6 +64,7 @@
(defvar gnus-inhibit-demon)
(defvar gnus-message-group-art)
+(defvar gnus-search-use-parsed-queries)
;; For future use
(defvoo nnselect-directory gnus-directory
@@ -85,14 +86,14 @@
(let (selection)
(pcase-dolist (`(,artgroup . ,arts)
(nnselect-categorize artlist #'nnselect-artitem-group))
- (let (list)
+ (let (list)
(pcase-dolist (`(,rsv . ,articles)
- (nnselect-categorize
+ (nnselect-categorize
arts #'nnselect-artitem-rsv #'nnselect-artitem-number))
(push (cons rsv (gnus-compress-sequence (sort articles #'<)))
list))
- (push (cons artgroup list) selection)))
- selection)))
+ (push (cons artgroup (sort list 'car-less-than-car)) selection)))
+ (sort selection (lambda (x y) (string< (car x) (car y)))))))
(defun nnselect-uncompress-artlist (artlist)
"Uncompress ARTLIST."
@@ -100,17 +101,20 @@
artlist
(let (selection)
(pcase-dolist (`(,artgroup . ,list) artlist)
- (pcase-dolist (`(,artrsv . ,artseq) list)
- (setq selection
- (vconcat
- (cl-map 'vector
- (lambda (art)
- (vector artgroup art artrsv))
- (gnus-uncompress-sequence artseq)) selection))))
- selection)))
+ (pcase-dolist (`(,artrsv . ,artseq) list)
+ (setq selection
+ (vconcat selection
+ (cl-map 'vector
+ (lambda (art)
+ (vector artgroup art artrsv))
+ (gnus-uncompress-sequence artseq))))))
+ (sort selection
+ (lambda (x y)
+ (< (nnselect-artitem-rsv x) (nnselect-artitem-rsv y)))))))
(make-obsolete 'nnselect-group-server 'gnus-group-server "28.1")
(make-obsolete 'nnselect-run 'nnselect-generate-artlist "29.1")
+(make-obsolete 'nnselect-search-thread 'gnus-search-thread "29.1")
;; Data type article list.
@@ -267,45 +271,23 @@ If this variable is nil, or if the provided function returns nil,
:version "28.1"
:type '(repeat function))
-(defun nnselect-generate-artlist (group &optional specs)
- "Generate the artlist for GROUP using SPECS.
-SPECS should be an alist including an `nnselect-function' and an
-`nnselect-args'. The former applied to the latter should create
-the artlist. If SPECS is nil retrieve the specs from the group
-parameters."
- (let* ((specs
- (or specs (gnus-group-get-parameter group 'nnselect-specs t)))
- (function (alist-get 'nnselect-function specs))
- (args (alist-get 'nnselect-args specs)))
- (condition-case-unless-debug err
- (funcall function args)
- ;; Don't swallow gnus-search errors; the user should be made
- ;; aware of them.
- (gnus-search-error
- (signal (car err) (cdr err)))
- (error
- (gnus-error
- 3
- "nnselect-generate-artlist: %s on %s gave error %s" function args err)
- []))))
-
(defmacro nnselect-get-artlist (group)
- "Get the list of articles for GROUP.
-If the group parameter `nnselect-get-artlist-override-function' is
-non-nil call this function with argument GROUP to get the
+ "Get the stored list of articles for GROUP.
+If the group parameter `nnselect-get-artlist-override-function'
+is non-nil call this function with argument GROUP to get the
artlist; if the group parameter `nnselect-always-regenerate' is
-non-nil, regenerate the artlist; otherwise retrieve the artlist
-directly from the group parameters."
+non-nil, return nil to regenerate the artlist; otherwise retrieve
+the stored artlist from the group parameters."
`(when (gnus-nnselect-group-p ,group)
(let ((override (gnus-group-get-parameter
- ,group
- 'nnselect-get-artlist-override-function)))
+ ,group
+ 'nnselect-get-artlist-override-function)))
(cond
(override (funcall override ,group))
((gnus-group-get-parameter ,group 'nnselect-always-regenerate)
- (nnselect-generate-artlist ,group))
+ nil)
(t
- (nnselect-uncompress-artlist
+ (nnselect-uncompress-artlist
(gnus-group-get-parameter ,group 'nnselect-artlist t)))))))
(defmacro nnselect-store-artlist (group artlist)
@@ -313,17 +295,65 @@ directly from the group parameters."
If the group parameter `nnselect-store-artlist-override-function'
is non-nil call this function on GROUP and ARTLIST; if the group
parameter `nnselect-always-regenerate' is non-nil don't store the
-artlist; otherwise store the ARTLIST in the group parameters."
+artlist; otherwise store the ARTLIST in the group parameters.
+The active range is also stored."
`(let ((override (gnus-group-get-parameter
- ,group
- 'nnselect-store-artlist-override-function)))
+ ,group
+ 'nnselect-store-artlist-override-function)))
+ (gnus-group-set-parameter ,group 'active
+ (cons 1 (nnselect-artlist-length ,artlist)))
(cond
(override (funcall override ,group ,artlist))
- ((gnus-group-get-parameter ,group 'nnselect-always-regenerate) t)
+ ((gnus-group-get-parameter ,group 'nnselect-always-regenerate)
+ (gnus-group-remove-parameter ,group 'nnselect-artlist))
(t
(gnus-group-set-parameter ,group 'nnselect-artlist
(nnselect-compress-artlist ,artlist))))))
+(defun nnselect-generate-artlist (group &optional specs info)
+ "Generate and return the artlist for GROUP using SPECS.
+The artlist is sorted by rsv, lexically over groups, and by
+article number. SPECS should be an alist including an
+`nnselect-function' and an `nnselect-args'. The former applied
+to the latter should create the artlist. If SPECS is nil
+retrieve the specs from the group parameters. If INFO update the
+group info."
+ (let* ((specs
+ (or specs (gnus-group-get-parameter group 'nnselect-specs t)))
+ (function (alist-get 'nnselect-function specs))
+ (args (alist-get 'nnselect-args specs)))
+ (condition-case-unless-debug err
+ (progn
+ (let ((gnus-newsgroup-selection
+ (sort
+ (funcall function args)
+ (lambda (x y)
+ (let ((xgroup (nnselect-artitem-group x))
+ (ygroup (nnselect-artitem-group y))
+ (xrsv (nnselect-artitem-rsv x))
+ (yrsv (nnselect-artitem-rsv y)))
+ (or (< xrsv yrsv)
+ (and (eql xrsv yrsv)
+ (or (string< xgroup ygroup)
+ (and (string= xgroup ygroup)
+ (< (nnselect-artitem-number x)
+ (nnselect-artitem-number y)))))))))))
+ (when info
+ (if gnus-newsgroup-selection
+ (nnselect-request-update-info group info)
+ (gnus-set-active group '(1 . 0))))
+ (nnselect-store-artlist group gnus-newsgroup-selection)
+ gnus-newsgroup-selection))
+ ;; Don't swallow gnus-search errors; the user should be made
+ ;; aware of them.
+ (gnus-search-error
+ (signal (car err) (cdr err)))
+ (error
+ (gnus-error
+ 3
+ "nnselect-generate-artlist: %s on %s gave error %s" function args err)
+ []))))
+
;; Gnus backend interface functions.
(deffoo nnselect-open-server (server &optional definitions)
@@ -344,85 +374,82 @@ artlist; otherwise store the ARTLIST in the group parameters."
(deffoo nnselect-request-group (group &optional _server _dont-check info)
(let* ((group (nnselect-add-prefix group))
- (nnselect-artlist (nnselect-get-artlist group))
- length)
- ;; Check for cached select result or run the selection and cache
- ;; the result.
- (unless nnselect-artlist
- (nnselect-store-artlist group
- (setq nnselect-artlist (nnselect-generate-artlist group)))
- (nnselect-request-update-info
- group (or info (gnus-get-info group))))
- (if (zerop (setq length (nnselect-artlist-length nnselect-artlist)))
- (progn
- (nnheader-report 'nnselect "Selection produced empty results.")
- (when (gnus-ephemeral-group-p group)
- (gnus-kill-ephemeral-group group)
- (setq gnus-ephemeral-servers
- (assq-delete-all 'nnselect gnus-ephemeral-servers)))
- (nnheader-insert ""))
+ (length (cdr (gnus-group-get-parameter group 'active t))))
+ (when (or (null length)
+ (gnus-group-get-parameter group 'nnselect-always-regenerate))
+ (setq length (nnselect-artlist-length
+ (nnselect-generate-artlist group nil info))))
+ (if (and (zerop length) (gnus-ephemeral-group-p group))
+ (progn
+ (nnheader-report 'nnselect "Selection produced empty results.")
+ (gnus-kill-ephemeral-group group)
+ (setq gnus-ephemeral-servers
+ (assq-delete-all 'nnselect gnus-ephemeral-servers))
+ (nnheader-insert ""))
(with-current-buffer nntp-server-buffer
- (nnheader-insert "211 %d %d %d %s\n"
- length ; total #
- 1 ; first #
- length ; last #
- group))) ; group name
- nnselect-artlist))
-
+ (nnheader-insert "211 %d %d %d %s\n"
+ length ; total #
+ (if (zerop length) 0 1) ; first #
+ length ; last #
+ group))))) ; group name
(deffoo nnselect-retrieve-headers (articles group &optional _server fetch-old)
- (let ((group (nnselect-add-prefix group)))
+ (let ((group (nnselect-add-prefix group))
+ (gnus-inhibit-demon t))
(with-current-buffer (gnus-summary-buffer-name group)
- (setq gnus-newsgroup-selection (or gnus-newsgroup-selection
- (nnselect-get-artlist group)))
- (let ((gnus-inhibit-demon t)
- (gartids (ids-by-group articles))
- headers)
- (with-current-buffer nntp-server-buffer
- (pcase-dolist (`(,artgroup . ,artids) gartids)
- (let ((artlist (sort (mapcar #'cdr artids) #'<))
- (gnus-override-method (gnus-find-method-for-group artgroup))
- (fetch-old
- (or
- (car-safe
- (gnus-group-find-parameter artgroup
- 'gnus-fetch-old-headers t))
- fetch-old)))
+ (setq gnus-newsgroup-selection
+ (or gnus-newsgroup-selection
+ (nnselect-get-artlist group)
+ ;; maybe don't need to update the info?
+ ;; (nnselect-generate-artlist group nil (gnus-get-info group))))
+ (nnselect-generate-artlist group)))
+ (let ((gartids (ids-by-group articles))
+ headers)
+ (with-current-buffer nntp-server-buffer
+ (pcase-dolist (`(,artgroup . ,artids) gartids)
+ (let ((artlist (sort (mapcar #'cdr artids) #'<))
+ (gnus-override-method (gnus-find-method-for-group artgroup))
+ (fetch-old
+ (or
+ (car-safe
+ (gnus-group-find-parameter artgroup
+ 'gnus-fetch-old-headers t))
+ fetch-old)))
(gnus-request-group artgroup)
- (erase-buffer)
- (pcase (setq gnus-headers-retrieved-by
- (or
- (and
- nnselect-retrieve-headers-override-function
- (funcall
- nnselect-retrieve-headers-override-function
- artlist artgroup))
- (gnus-retrieve-headers
- artlist artgroup fetch-old)))
- ('nov
- (goto-char (point-min))
- (while (not (eobp))
- (nnselect-add-novitem
- (nnheader-parse-nov))
- (forward-line 1)))
- ('headers
- (gnus-run-hooks 'gnus-parse-headers-hook)
- (let ((nnmail-extra-headers gnus-extra-headers))
- (goto-char (point-min))
- (while (not (eobp))
- (nnselect-add-novitem
- (nnheader-parse-head))
- (forward-line 1))))
- ((pred listp)
- (dolist (novitem gnus-headers-retrieved-by)
- (nnselect-add-novitem novitem)))
- (_ (error "Unknown header type %s while requesting articles \
- of group %s" gnus-headers-retrieved-by artgroup)))))
- (setq headers
- (sort
- headers
- (lambda (x y)
- (< (mail-header-number x) (mail-header-number y))))))))))
+ (erase-buffer)
+ (pcase (setq gnus-headers-retrieved-by
+ (or
+ (and
+ nnselect-retrieve-headers-override-function
+ (funcall
+ nnselect-retrieve-headers-override-function
+ artlist artgroup))
+ (gnus-retrieve-headers
+ artlist artgroup fetch-old)))
+ ('nov
+ (goto-char (point-min))
+ (while (not (eobp))
+ (nnselect-add-novitem
+ (nnheader-parse-nov))
+ (forward-line 1)))
+ ('headers
+ (gnus-run-hooks 'gnus-parse-headers-hook)
+ (let ((nnmail-extra-headers gnus-extra-headers))
+ (goto-char (point-min))
+ (while (not (eobp))
+ (nnselect-add-novitem
+ (nnheader-parse-head))
+ (forward-line 1))))
+ ((pred listp)
+ (dolist (novitem gnus-headers-retrieved-by)
+ (nnselect-add-novitem novitem)))
+ (_ (error "Unknown header type %s while requesting articles \
+ of group %s" gnus-headers-retrieved-by artgroup)))))
+ (setq headers
+ (sort
+ headers
+ (lambda (x y)
+ (< (mail-header-number x) (mail-header-number y))))))))))
(deffoo nnselect-request-article (article &optional _group server to-buffer)
@@ -439,7 +466,7 @@ artlist; otherwise store the ARTLIST in the group parameters."
(if (eq 'nnselect (car (gnus-server-to-method server)))
(with-current-buffer gnus-summary-buffer
(let ((thread (gnus-id-to-thread article)))
- (when thread
+ (when (car thread)
(mapc
(lambda (x)
(when (and x (> x 0))
@@ -477,7 +504,8 @@ artlist; otherwise store the ARTLIST in the group parameters."
(deffoo nnselect-request-move-article
(article _group _server accept-form &optional last _internal-move-group)
- (let* ((artgroup (nnselect-article-group article))
+ (let* ((nnimap-expunge 'immediately)
+ (artgroup (nnselect-article-group article))
(artnumber (nnselect-article-number article))
(to-newsgroup (nth 1 accept-form))
(to-method (gnus-find-method-for-group to-newsgroup))
@@ -565,9 +593,9 @@ artlist; otherwise store the ARTLIST in the group parameters."
(artnumber (nnselect-article-number article))
(gmark (gnus-request-update-mark artgroup artnumber mark)))
(when (and artnumber
- (memq mark gnus-auto-expirable-marks)
- (= mark gmark)
- (gnus-group-auto-expirable-p artgroup))
+ (memq mark gnus-auto-expirable-marks)
+ (= mark gmark)
+ (gnus-group-auto-expirable-p artgroup))
(setq gmark gnus-expirable-mark))
gmark))
@@ -593,116 +621,109 @@ artlist; otherwise store the ARTLIST in the group parameters."
(gnus-newsgroup-selection
(or gnus-newsgroup-selection (nnselect-get-artlist group)))
newmarks)
- (gnus-info-set-marks info nil)
- (setf (gnus-info-read info) nil)
- (pcase-dolist (`(,artgroup . ,nartids)
- (ids-by-group
- (number-sequence 1 (nnselect-artlist-length
- gnus-newsgroup-selection))))
- (let* ((gnus-newsgroup-active nil)
- (idmap (make-hash-table :test 'eql))
- (gactive (sort (mapcar 'cdr nartids) '<))
- (group-info (gnus-get-info artgroup))
- (marks (gnus-info-marks group-info)))
- (pcase-dolist (`(,val . ,key) nartids)
- (puthash key val idmap))
- (setf (gnus-info-read info)
- (range-add-list
- (gnus-info-read info)
- (sort (mapcar (lambda (art) (gethash art idmap))
- (gnus-sorted-intersection
- gactive
- (range-uncompress (gnus-info-read group-info))))
- '<)))
- (pcase-dolist (`(,type . ,mark-list) marks)
- (let ((mark-type (gnus-article-mark-to-type type)) new)
- (when
- (setq new
- (if (not mark-list) nil
- (cond
- ((eq mark-type 'tuple)
- (delq nil
- (mapcar
- (lambda (mark)
- (let ((id (gethash (car mark) idmap)))
- (when id (cons id (cdr mark)))))
- mark-list)))
- (t
- (mapcar (lambda (art) (gethash art idmap))
- (gnus-sorted-intersection
- gactive (range-uncompress mark-list)))))))
- (let ((previous (alist-get type newmarks)))
- (if previous
- (nconc previous new)
- (push (cons type new) newmarks))))))))
-
- ;; Clean up the marks: compress lists;
- (pcase-dolist (`(,type . ,mark-list) newmarks)
- (let ((mark-type (gnus-article-mark-to-type type)))
- (unless (eq mark-type 'tuple)
- (setf (alist-get type newmarks)
- (gnus-compress-sequence (sort mark-list '<))))))
- ;; and ensure an unexist key.
- (unless (assq 'unexist newmarks)
- (push (cons 'unexist nil) newmarks))
-
- (gnus-info-set-marks info newmarks)
- (gnus-set-active group (cons 1 (nnselect-artlist-length
- gnus-newsgroup-selection)))))
+ (when gnus-newsgroup-selection
+ (gnus-info-set-marks info nil)
+ (setf (gnus-info-read info) nil)
+ (pcase-dolist (`(,artgroup . ,nartids)
+ (ids-by-group
+ (number-sequence 1 (nnselect-artlist-length
+ gnus-newsgroup-selection))))
+ (let* ((gnus-newsgroup-active nil)
+ (idmap (make-hash-table :test 'eql))
+ (gactive (sort (mapcar 'cdr nartids) #'<))
+ (group-info (gnus-get-info artgroup))
+ (marks (gnus-info-marks group-info)))
+ (pcase-dolist (`(,val . ,key) nartids)
+ (puthash key val idmap))
+ (setf (gnus-info-read info)
+ (range-add-list
+ (gnus-info-read info)
+ (sort (mapcar (lambda (art) (gethash art idmap))
+ (gnus-sorted-intersection
+ gactive
+ (range-uncompress (gnus-info-read group-info))))
+ #'<)))
+ (pcase-dolist (`(,type . ,mark-list) marks)
+ (let ((mark-type (gnus-article-mark-to-type type)) new)
+ (when
+ (setq new
+ (if (not mark-list) nil
+ (cond
+ ((eq mark-type 'tuple)
+ (delq nil
+ (mapcar
+ (lambda (mark)
+ (let ((id (gethash (car mark) idmap)))
+ (when id (cons id (cdr mark)))))
+ mark-list)))
+ (t
+ (mapcar (lambda (art) (gethash art idmap))
+ (gnus-sorted-intersection
+ gactive (range-uncompress mark-list)))))))
+ (let ((previous (alist-get type newmarks)))
+ (if previous
+ (nconc previous new)
+ (push (cons type new) newmarks))))))))
+
+ ;; Clean up the marks: compress lists;
+ (pcase-dolist (`(,type . ,mark-list) newmarks)
+ (let ((mark-type (gnus-article-mark-to-type type)))
+ (unless (eq mark-type 'tuple)
+ (setf (alist-get type newmarks)
+ (gnus-compress-sequence (sort mark-list #'<))))))
+ ;; and ensure an unexist key.
+ (unless (assq 'unexist newmarks)
+ (push (cons 'unexist nil) newmarks))
+
+ (gnus-info-set-marks info newmarks)
+ (gnus-set-active group (cons 1 (nnselect-artlist-length
+ gnus-newsgroup-selection))))))
(deffoo nnselect-request-thread (header &optional group server)
(with-current-buffer gnus-summary-buffer
- (let ((group (nnselect-add-prefix group))
- ;; find the best group for the originating article. if its a
- ;; pseudo-article look for real articles in the same thread
- ;; and see where they come from.
- (artgroup (nnselect-article-group
- (if (> (mail-header-number header) 0)
- (mail-header-number header)
- (if (> (gnus-summary-article-number) 0)
- (gnus-summary-article-number)
- (let ((thread
- (gnus-id-to-thread (mail-header-id header))))
- (when thread
- (cl-some (lambda (x)
- (when (and x (> x 0)) x))
- (gnus-articles-in-thread thread)))))))))
- ;; Check if search-based thread referral is permitted, and
- ;; available.
- (if (and gnus-refer-thread-use-search
- (gnus-search-server-to-engine
- (gnus-method-to-server
- (gnus-find-method-for-group artgroup))))
- ;; If so we perform the query, massage the result, and return
- ;; the new headers back to the caller to incorporate into the
- ;; current summary buffer.
- (let* ((group-spec
- (list (delq nil (list
- (or server (gnus-group-server artgroup))
- (unless gnus-refer-thread-use-search
- artgroup)))))
- (ids (cons (mail-header-id header)
- (split-string
- (or (mail-header-references header)
- ""))))
- (query-spec
- (list (cons 'query (mapconcat (lambda (i)
- (format "id:%s" i))
- ids " or "))
- (cons 'thread t)))
- (last (nnselect-artlist-length gnus-newsgroup-selection))
- (first (1+ last))
- (new-nnselect-artlist
- (gnus-search-run-query
- (list (cons 'search-query-spec query-spec)
- (cons 'search-group-spec group-spec))))
- old-arts seq
- headers)
- (mapc
+ (let* ((group (nnselect-add-prefix group))
+ ;; Find the best group for the originating article. If its
+ ;; a pseudo-article check for real articles in the same
+ ;; thread to see where they come from.
+ (artgroup
+ (nnselect-article-group
+ (cond
+ ((> (mail-header-number header) 0)
+ (mail-header-number header))
+ ((> (gnus-summary-article-number) 0)
+ (gnus-summary-article-number))
+ (t (cl-some
+ (lambda (x) (when (and x (> x 0)) x))
+ (gnus-articles-in-thread
+ (gnus-id-to-thread (mail-header-id header))))))))
+ (server (or server (gnus-group-server artgroup))))
+ ;; Check if search-based thread referral is available.
+ (if (ignore-errors (gnus-search-server-to-engine server))
+ ;; We perform the query, massage the result, and return
+ ;; the new headers back to the caller to incorporate into
+ ;; the current summary buffer.
+ (let* ((gnus-search-use-parsed-queries t)
+ (group-spec
+ (if (not gnus-refer-thread-use-search)
+ (list (list server artgroup))
+ (if (listp gnus-refer-thread-use-search)
+ gnus-refer-thread-use-search
+ (list (list server)))))
+ (ids (cons (mail-header-id header)
+ (split-string
+ (or (mail-header-references header)
+ ""))))
+ (query-spec
+ (list (cons 'query
+ (mapconcat (lambda (i) (format "id:%s" i))
+ ids " or ")) (cons 'thread t)))
+ (last (nnselect-artlist-length gnus-newsgroup-selection))
+ (first (1+ last))
+ old-arts seq headers)
+ (mapc
(lambda (article)
- (if
- (setq seq
+ (if (setq seq
(cl-position
article
gnus-newsgroup-selection
@@ -710,54 +731,68 @@ artlist; otherwise store the ARTLIST in the group parameters."
(lambda (x y)
(and (equal (nnselect-artitem-group x)
(nnselect-artitem-group y))
- (eql (nnselect-artitem-number x)
+ (eql (nnselect-artitem-number x)
(nnselect-artitem-number y))))))
(push (1+ seq) old-arts)
(setq gnus-newsgroup-selection
(vconcat gnus-newsgroup-selection (vector article)))
(cl-incf last)))
- new-nnselect-artlist)
- (setq headers
- (gnus-fetch-headers
- (append (sort old-arts #'<)
- (number-sequence first last))
- nil t))
- (nnselect-store-artlist group gnus-newsgroup-selection)
- (when (>= last first)
- (let (new-marks)
- (pcase-dolist (`(,artgroup . ,artids)
- (ids-by-group (number-sequence first last)))
- (pcase-dolist (`(,type . ,marked)
- (gnus-info-marks (gnus-get-info artgroup)))
- (setq marked (gnus-uncompress-sequence marked))
- (when (setq new-marks
- (delq nil
- (mapcar
+ (gnus-search-run-query
+ (list (cons 'search-query-spec query-spec)
+ (cons 'search-group-spec group-spec))))
+ (setq headers
+ (gnus-fetch-headers
+ (append (sort old-arts #'<) (number-sequence first last))
+ nil t))
+ (nnselect-store-artlist group gnus-newsgroup-selection)
+ (when (>= last first)
+ (let (new-marks)
+ (pcase-dolist (`(,artgroup . ,artids)
+ (ids-by-group (number-sequence first last)))
+ (pcase-dolist (`(,type . ,marked)
+ (gnus-info-marks (gnus-get-info artgroup)))
+ (when
+ (setq new-marks
+ (delq nil
+ (if (eq (gnus-article-mark-to-type type)
+ 'tuple)
+ (mapcar
+ (lambda (art)
+ (let ((mtup
+ (assq (cdr art) marked)))
+ (when mtup
+ (cons (car art) (cdr mtup)))))
+ artids)
+ (setq marked
+ (gnus-uncompress-sequence marked))
+ (mapcar
(lambda (art)
(when (memq (cdr art) marked)
(car art)))
- artids)))
- (nconc
- (symbol-value
- (intern
- (format "gnus-newsgroup-%s"
- (car (rassq type gnus-article-mark-lists)))))
- new-marks)))))
- (setq gnus-newsgroup-active
- (cons 1 (nnselect-artlist-length gnus-newsgroup-selection)))
- (gnus-set-active
- group
- (cons 1 (nnselect-artlist-length gnus-newsgroup-selection))))
- headers)
- ;; If we can't or won't use search, just warp to the original
- ;; group and punt back to gnus-summary-refer-thread.
- (and (gnus-warp-to-article) (gnus-summary-refer-thread))))))
+ artids))))
+ (nconc
+ (symbol-value
+ (intern
+ (format "gnus-newsgroup-%s"
+ (car
+ (rassq type gnus-article-mark-lists)))))
+ new-marks)))))
+ (gnus-set-active
+ group
+ (setq
+ gnus-newsgroup-active
+ (cons 1 (nnselect-artlist-length gnus-newsgroup-selection)))))
+ headers)
+ ;; If we can't use search, just warp to the original group and
+ ;; punt back to gnus-summary-refer-thread.
+ (and (gnus-warp-to-article) (gnus-summary-refer-thread))))))
(deffoo nnselect-close-group (group &optional _server)
(let ((group (nnselect-add-prefix group)))
(unless gnus-group-is-exiting-without-update-p
- (nnselect-push-info group))
+ (when gnus-newsgroup-selection
+ (nnselect-push-info group)))
(setq gnus-newsgroup-selection nil)
(when (gnus-ephemeral-group-p group)
(gnus-kill-ephemeral-group group)
@@ -769,23 +804,23 @@ artlist; otherwise store the ARTLIST in the group parameters."
(message "Creating nnselect group %s" group)
(let* ((group (gnus-group-prefixed-name group '(nnselect "nnselect")))
(specs (assq 'nnselect-specs args))
+ (artlist (alist-get 'nnselect-artlist args))
(otherargs (assq-delete-all 'nnselect-specs args))
(function-spec
(or (alist-get 'nnselect-function specs)
- (intern (completing-read "Function: " obarray #'functionp))))
+ (intern (completing-read "Function: " obarray #'functionp))))
(args-spec
(or (alist-get 'nnselect-args specs)
(read-from-minibuffer "Args: " nil nil t nil "nil")))
(nnselect-specs (list (cons 'nnselect-function function-spec)
- (cons 'nnselect-args args-spec))))
+ (cons 'nnselect-args args-spec))))
(gnus-group-set-parameter group 'nnselect-specs nnselect-specs)
(dolist (arg otherargs)
(gnus-group-set-parameter group (car arg) (cdr arg)))
- (nnselect-store-artlist
- group
- (or (alist-get 'nnselect-artlist args)
- (nnselect-generate-artlist group nnselect-specs)))
- (nnselect-request-update-info group (gnus-get-info group)))
+ (if artlist
+ (nnselect-store-artlist group artlist)
+ (nnselect-generate-artlist group nnselect-specs
+ (gnus-get-info group))))
t)
@@ -815,11 +850,12 @@ artlist; otherwise store the ARTLIST in the group parameters."
(deffoo nnselect-request-group-scan (group &optional _server _info)
- (let* ((group (nnselect-add-prefix group))
- (artlist (nnselect-generate-artlist group)))
- (gnus-set-active group (cons 1 (nnselect-artlist-length
- artlist)))
- (nnselect-store-artlist group artlist)))
+ (let ((group (nnselect-add-prefix group)))
+ (unless (gnus-group-find-parameter group 'nnselect-always-regenerate)
+ (let ((artlist (nnselect-generate-artlist group)))
+ (gnus-set-active group (cons 1 (nnselect-artlist-length
+ artlist))))))
+ t)
;; Add any undefined required backend functions
@@ -883,133 +919,136 @@ article came from is also searched."
(defun nnselect-push-info (group)
"Copy mark-lists from GROUP to the originating groups."
(let ((select-unreads (numbers-by-group gnus-newsgroup-unreads))
- (select-reads (numbers-by-group
- (gnus-info-read (gnus-get-info group)) 'range))
- (select-unseen (numbers-by-group gnus-newsgroup-unseen))
- (gnus-newsgroup-active nil) mark-list)
+ (select-reads (numbers-by-group
+ (gnus-sorted-difference gnus-newsgroup-articles
+ gnus-newsgroup-unreads)))
+ (select-unseen (numbers-by-group gnus-newsgroup-unseen))
+ (quit-config (gnus-group-quit-config group))
+ (gnus-newsgroup-active nil) mark-list)
;; collect the set of marked article lists categorized by
;; originating groups
(pcase-dolist (`(,mark . ,type) gnus-article-mark-lists)
- (let (type-list)
- (when (setq type-list
- (symbol-value (intern (format "gnus-newsgroup-%s" mark))))
- (push (cons
- type
- (numbers-by-group type-list (gnus-article-mark-to-type type)))
- mark-list))))
+ (let ((mark-type (gnus-article-mark-to-type type))
+ (type-list (symbol-value
+ (intern (format "gnus-newsgroup-%s" mark)))))
+ (when type-list
+ (unless (eq 'tuple mark-type)
+ (setq type-list (range-list-intersection
+ gnus-newsgroup-articles type-list)))
+ (push (cons type (numbers-by-group type-list mark-type))
+ mark-list))))
;; now work on each originating group one at a time
(pcase-dolist (`(,artgroup . ,artlist)
- (numbers-by-group gnus-newsgroup-articles))
- (let* ((group-info (gnus-get-info artgroup))
- (old-unread (gnus-list-of-unread-articles artgroup))
- newmarked delta-marks)
- (when group-info
- ;; iterate over mark lists for this group
- (pcase-dolist (`(,_mark . ,type) gnus-article-mark-lists)
- (let ((list (cdr (assoc artgroup (alist-get type mark-list))))
- (mark-type (gnus-article-mark-to-type type)))
-
- ;; When the backend can store marks we collect any
- ;; changes. Unlike a normal group the mark lists only
- ;; include marks for articles we retrieved.
- (when (and (gnus-check-backend-function
- 'request-set-mark gnus-newsgroup-name)
- (not (gnus-article-unpropagatable-p type)))
- (let* ((old (range-list-intersection
- artlist
- (alist-get type (gnus-info-marks group-info))))
- (del (range-remove (copy-tree old) list))
- (add (range-remove (copy-tree list) old)))
- (when add (push (list add 'add (list type)) delta-marks))
- (when del
- ;; Don't delete marks from outside the active range.
- ;; This shouldn't happen, but is a sanity check.
- (setq del (range-intersection
- (gnus-active artgroup) del))
- (push (list del 'del (list type)) delta-marks))))
-
- ;; Marked sets are of mark-type 'tuple, 'list, or
- ;; 'range. We merge the lists with what is already in
- ;; the original info to get full list of new marks. We
- ;; do this by removing all the articles we retrieved
- ;; from the full list, and then add back in the newly
- ;; marked ones.
- (cond
- ((eq mark-type 'tuple)
- ;; Get rid of the entries that have the default
- ;; score.
- (when (and list (eq type 'score) gnus-save-score)
- (let* ((arts list)
- (prev (cons nil list))
- (all prev))
- (while arts
- (if (or (not (consp (car arts)))
- (= (cdar arts) gnus-summary-default-score))
- (setcdr prev (cdr arts))
- (setq prev arts))
- (setq arts (cdr arts)))
- (setq list (cdr all))))
- ;; now merge with the original list and sort just to
- ;; make sure
- (setq
- list (sort
+ (numbers-by-group gnus-newsgroup-articles))
+ (setq artlist (sort artlist #'<))
+ (let ((group-info (gnus-get-info artgroup))
+ (old-unread (gnus-list-of-unread-articles artgroup))
+ (rsm (gnus-check-backend-function 'request-set-mark artgroup))
+ newmarked delta-marks)
+ (when group-info
+ ;; iterate over mark lists for this group
+ (pcase-dolist (`(,_mark . ,type) gnus-article-mark-lists)
+ (let ((list (cdr (assoc artgroup (alist-get type mark-list))))
+ (mark-type (gnus-article-mark-to-type type))
+ (group-marks (alist-get type (gnus-info-marks group-info))))
+
+ ;; When the backend can store marks we collect any
+ ;; changes. Unlike a normal group the mark lists only
+ ;; include marks for articles we retrieved. If there is
+ ;; no quit-config then gnus-update-marks has already
+ ;; been called to handle this.
+ (when (and quit-config rsm
+ (not (gnus-article-unpropagatable-p type)))
+ (let* ((old (range-list-intersection
+ artlist group-marks))
+ (del (range-remove (copy-tree old) list))
+ (add (range-remove (copy-tree list) old)))
+ (when add (push (list add 'add (list type)) delta-marks))
+ (when del
+ ;; Don't delete marks from outside the active range.
+ ;; This shouldn't happen, but is a sanity check.
+ (setq del (range-intersection (gnus-active artgroup) del))
+ (push (list del 'del (list type)) delta-marks))))
+
+ ;; Marked sets are of mark-type 'tuple, 'list, or
+ ;; 'range. We merge the lists with what is already in
+ ;; the original info to get full list of new marks. We
+ ;; do this by removing all the articles we retrieved
+ ;; from the full list, and then add back in the newly
+ ;; marked ones.
+ (cond
+ ((eq mark-type 'tuple)
+ ;; Get rid of the entries that have the default
+ ;; score.
+ (when (and list (eq type 'score) gnus-save-score)
+ (let* ((arts list)
+ (prev (cons nil list))
+ (all prev))
+ (while arts
+ (if (or (not (consp (car arts)))
+ (= (cdar arts) gnus-summary-default-score))
+ (setcdr prev (cdr arts))
+ (setq prev arts))
+ (setq arts (cdr arts)))
+ (setq list (cdr all))))
+ ;; now merge with the original list and sort just to
+ ;; make sure
+ (setq list
+ (sort
(map-merge
- 'alist list
+ 'alist list
(delq nil
(mapcar
(lambda (x) (unless (memq (car x) artlist) x))
- (alist-get type (gnus-info-marks group-info)))))
+ group-marks)))
'car-less-than-car)))
- (t
- (setq list
- (range-compress-list
- (gnus-sorted-union
- (gnus-sorted-difference
- (gnus-uncompress-sequence
- (alist-get type (gnus-info-marks group-info)))
- artlist)
- (sort list #'<)))))
-
- ;; When exiting the group, everything that's previously been
- ;; unseen is now seen.
- (when (eq type 'seen)
- (setq list (range-concat
- list (cdr (assoc artgroup select-unseen))))))
-
- (when (or list (eq type 'unexist))
- (push (cons type list) newmarked)))) ;; end of mark-type loop
-
- (when delta-marks
- (unless (gnus-check-group artgroup)
- (error "Can't open server for %s" artgroup))
- (gnus-request-set-mark artgroup delta-marks))
-
- (gnus-atomic-progn
- (gnus-info-set-marks group-info newmarked)
- ;; Cut off the end of the info if there's nothing else there.
- (let ((i 5))
- (while (and (> i 2)
- (not (nth i group-info)))
- (when (nthcdr (cl-decf i) group-info)
- (setcdr (nthcdr i group-info) nil))))
-
- ;; update read and unread
- (gnus-update-read-articles
- artgroup
- (range-uncompress
- (range-add-list
- (range-remove
- old-unread
- (cdr (assoc artgroup select-reads)))
- (sort (cdr (assoc artgroup select-unreads)) #'<))))
- (gnus-get-unread-articles-in-group
- group-info (gnus-active artgroup) t))
- (gnus-group-update-group
- artgroup t
- (equal group-info
- (setq group-info (copy-sequence (gnus-get-info artgroup))
- group-info
- (delq (gnus-info-params group-info) group-info)))))))))
+ (t
+ (setq list
+ (range-compress-list
+ (gnus-sorted-union
+ (gnus-sorted-difference
+ (gnus-uncompress-sequence group-marks)
+ artlist)
+ (sort list #'<))))
+
+ ;; When exiting the group, everything that's previously been
+ ;; unseen is now seen.
+ (when (eq type 'seen)
+ (setq list (range-concat
+ list (cdr (assoc artgroup select-unseen)))))))
+
+ (when (or list (eq type 'unexist))
+ (push (cons type list) newmarked)))) ;; end of mark-type loop
+ (when delta-marks
+ (unless (gnus-check-group artgroup)
+ (error "Can't open server for %s" artgroup))
+ (gnus-request-set-mark artgroup delta-marks))
+ (gnus-atomic-progn
+ (gnus-info-set-marks group-info newmarked)
+ ;; Cut off the end of the info if there's nothing else there.
+ (let ((i 5))
+ (while (and (> i 2)
+ (not (nth i group-info)))
+ (when (nthcdr (cl-decf i) group-info)
+ (setcdr (nthcdr i group-info) nil))))
+
+ ;; update read and unread
+ (gnus-update-read-articles
+ artgroup
+ (range-uncompress
+ (range-add-list
+ (range-remove
+ old-unread
+ (cdr (assoc artgroup select-reads)))
+ (sort (cdr (assoc artgroup select-unreads)) #'<)))))
+ (gnus-get-unread-articles-in-group
+ group-info (gnus-active artgroup) t)
+ (gnus-group-update-group
+ artgroup t
+ (equal group-info
+ (setq group-info (copy-sequence (gnus-get-info artgroup))
+ group-info
+ (delq (gnus-info-params group-info) group-info)))))))))
(declare-function gnus-registry-get-id-key "gnus-registry" (id key))
diff --git a/lisp/help-fns.el b/lisp/help-fns.el
index a1fc2267564..a939cc0b509 100644
--- a/lisp/help-fns.el
+++ b/lisp/help-fns.el
@@ -769,7 +769,7 @@ the C sources, too."
(and (symbolp function)
(not (eq (car-safe (symbol-function function)) 'macro))
(let* ((interactive-only
- (or (get function 'interactive-only)
+ (or (function-get function 'interactive-only)
(if (boundp 'byte-compile-interactive-only-functions)
(memq function
byte-compile-interactive-only-functions)))))
@@ -778,7 +778,7 @@ the C sources, too."
;; Cf byte-compile-form.
(cond ((stringp interactive-only)
(format ";\n in Lisp code %s" interactive-only))
- ((and (symbolp 'interactive-only)
+ ((and (symbolp interactive-only)
(not (eq interactive-only t)))
(format-message ";\n in Lisp code use `%s' instead."
interactive-only))
@@ -996,7 +996,7 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)."
(symbol-name function)))))))
(real-def (cond
((and aliased (not (subrp def)))
- (car (function-alias-p real-function t)))
+ (car (function-alias-p real-function)))
((subrp def) (intern (subr-name def)))
(t def))))
@@ -1138,7 +1138,7 @@ Returns a list of the form (REAL-FUNCTION DEF ALIASED REAL-DEF)."
;; key substitution constructs, load the library.
(and (autoloadp real-def) doc-raw
help-enable-autoload
- (string-match "\\([^\\]=\\|[^=]\\|\\`\\)\\\\[[{<]" doc-raw)
+ (string-match "\\([^\\]=\\|[^=]\\|\\`\\)\\\\[[{<]\\|`.*'" doc-raw)
(autoload-do-load real-def))
(help-fns--key-bindings function)
@@ -2004,8 +2004,8 @@ variable with value KEYMAP."
(mapatoms (lambda (symb)
(when (and (boundp symb)
(eq (symbol-value symb) keymap)
- (not (eq symb 'keymap))
- (throw 'found-keymap symb)))))
+ (not (eq symb 'keymap)))
+ (throw 'found-keymap symb))))
nil)))
;; Follow aliasing.
(or (ignore-errors (indirect-variable name)) name))))
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index ed4c8a04db7..550b5ed0e6a 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -1650,68 +1650,67 @@ a prefix argument reverses the meaning of that variable."
(error "No buffer with name %s" name)
(goto-char buf-point)))))
+(declare-function diff-check-labels "diff" (&optional force))
+(declare-function diff-file-local-copy "diff" (file-or-buf))
(declare-function diff-sentinel "diff"
(code &optional old-temp-file new-temp-file))
(defun ibuffer-diff-buffer-with-file-1 (buffer)
- (let ((bufferfile (buffer-local-value 'buffer-file-name buffer))
- (tempfile (make-temp-file "buffer-content-")))
- (when bufferfile
- (unwind-protect
- (progn
- (with-current-buffer buffer
- (write-region nil nil tempfile nil 'nomessage))
- (let* ((old (expand-file-name bufferfile))
- (new (expand-file-name tempfile))
- (oldtmp (file-local-copy old))
- (newtmp (file-local-copy new))
- (switches diff-switches)
- (command
- (mapconcat
- 'identity
- `(,diff-command
- ;; Use explicitly specified switches
- ,@(if (listp switches) switches (list switches))
- ,@(if (or old new)
- (list "-L" (shell-quote-argument old)
- "-L" (shell-quote-argument
- (format "Buffer %s" (buffer-name buffer)))))
- ,(shell-quote-argument (or oldtmp old))
- ,(shell-quote-argument (or newtmp new)))
- " ")))
- (let ((inhibit-read-only t))
- (insert command "\n")
- (diff-sentinel
- (call-process shell-file-name nil
- (current-buffer) nil
- shell-command-switch command))
- (insert "\n")))))
- (sit-for 0)
- (when (file-exists-p tempfile)
- (delete-file tempfile)))))
+ "Compare BUFFER with its associated file, if any.
+Unlike `diff-no-select', insert output into current buffer
+without erasing it."
+ (when-let ((old (buffer-file-name buffer)))
+ (defvar diff-use-labels)
+ (let* ((new buffer)
+ (oldtmp (diff-file-local-copy old))
+ (newtmp (diff-file-local-copy new))
+ (switches diff-switches)
+ (command
+ (string-join
+ `(,diff-command
+ ,@(if (listp switches) switches (list switches))
+ ,@(and (eq diff-use-labels t)
+ (list "--label" (shell-quote-argument old)
+ "--label" (shell-quote-argument (format "%S" new))))
+ ,(shell-quote-argument (or oldtmp old))
+ ,(shell-quote-argument (or newtmp new)))
+ " "))
+ (inhibit-read-only t))
+ (insert ?\n command ?\n)
+ (diff-sentinel (call-process shell-file-name nil t nil
+ shell-command-switch command)
+ oldtmp newtmp)
+ (goto-char (point-max)))
+ (redisplay)))
;;;###autoload
(defun ibuffer-diff-with-file ()
"View the differences between marked buffers and their associated files.
If no buffers are marked, use buffer at point.
-This requires the external program \"diff\" to be in your `exec-path'."
+This requires the external program `diff-command' to be in your
+`exec-path'."
(interactive)
(require 'diff)
- (let ((marked-bufs (ibuffer-get-marked-buffers)))
- (when (null marked-bufs)
- (setq marked-bufs (list (ibuffer-current-buffer t))))
- (with-current-buffer (get-buffer-create "*Ibuffer Diff*")
- (setq buffer-read-only nil)
- (buffer-disable-undo (current-buffer))
- (erase-buffer)
- (buffer-enable-undo (current-buffer))
+ (let ((marked-bufs (or (ibuffer-get-marked-buffers)
+ (list (ibuffer-current-buffer t))))
+ (diff-buf (get-buffer-create "*Ibuffer Diff*")))
+ (with-current-buffer diff-buf
+ (setq buffer-read-only t)
+ (buffer-disable-undo)
+ (let ((inhibit-read-only t))
+ (erase-buffer))
+ (buffer-enable-undo)
(diff-mode)
+ (diff-check-labels)
(dolist (buf marked-bufs)
(unless (buffer-live-p buf)
(error "Buffer %s has been killed" buf))
- (ibuffer-diff-buffer-with-file-1 buf))
- (setq buffer-read-only t)))
- (switch-to-buffer "*Ibuffer Diff*"))
+ (ibuffer-diff-buffer-with-file-1 buf))
+ (goto-char (point-min))
+ (when (= (following-char) ?\n)
+ (let ((inhibit-read-only t))
+ (delete-char 1))))
+ (pop-to-buffer-same-window diff-buf)))
;;;###autoload
(defun ibuffer-copy-filename-as-kill (&optional arg)
diff --git a/lisp/icomplete.el b/lisp/icomplete.el
index f46127a20e0..6ed2cbe395c 100644
--- a/lisp/icomplete.el
+++ b/lisp/icomplete.el
@@ -69,11 +69,12 @@ When nil, show candidates in full."
:type 'boolean
:version "24.4")
-(defvar icomplete-tidy-shadowed-file-names nil
+(defcustom icomplete-tidy-shadowed-file-names nil
"If non-nil, automatically delete superfluous parts of file names.
For example, if the user types ~/ after a long path name,
everything preceding the ~/ is discarded so the interactive
-selection process starts again from the user's $HOME.")
+selection process starts again from the user's $HOME."
+ :type 'boolean)
(defcustom icomplete-show-matches-on-no-input nil
"When non-nil, show completions when first prompting for input.
@@ -137,10 +138,11 @@ See `icomplete-delay-completions-threshold'."
"Maximum number of initial chars to apply `icomplete-compute-delay'."
:type 'integer)
-(defvar icomplete-in-buffer nil
+(defcustom icomplete-in-buffer nil
"If non-nil, also use Icomplete when completing in non-mini buffers.
This affects commands like `completion-in-region', but not commands
-that use their own completions setup.")
+that use their own completions setup."
+ :type 'boolean)
(defcustom icomplete-minibuffer-setup-hook nil
"Icomplete-specific customization of minibuffer setup.
@@ -714,11 +716,13 @@ If it's on, just add the vertical display."
Should be run via minibuffer `post-command-hook'.
See `icomplete-mode' and `minibuffer-setup-hook'."
(when (and icomplete-mode
+ ;; Check if still in the right buffer (bug#61308)
+ (or (window-minibuffer-p) completion-in-region--data)
(icomplete-simple-completing-p)) ;Shouldn't be necessary.
(let ((saved-point (point)))
(save-excursion
(goto-char (icomplete--field-end))
- ; Insert the match-status information:
+ ;; Insert the match-status information:
(when (and (or icomplete-show-matches-on-no-input
(not (equal (icomplete--field-string)
icomplete--initial-input)))
diff --git a/lisp/ido.el b/lisp/ido.el
index 98633d5d798..00a2e57f7ba 100644
--- a/lisp/ido.el
+++ b/lisp/ido.el
@@ -565,11 +565,12 @@ the `ido-work-directory-list' list."
(defcustom ido-use-filename-at-point nil
"Non-nil means that Ido shall look for a filename at point.
-May use `ffap-guesser' to guess whether text at point is a filename.
-If found, use that as the starting point for filename selection."
+Value `guess' means use `ffap-guesser' to guess whether text at
+point is a filename. If found, use that as the starting point
+for filename selection."
:type '(choice
(const :tag "Disabled" nil)
- (const :tag "Guess filename" guess)
+ (const :tag "Guess filename using ffap-guesser" guess)
(other :tag "Use literal filename" t)))
diff --git a/lisp/image-mode.el b/lisp/image-mode.el
index 1820defa195..fa28c1bf7a5 100644
--- a/lisp/image-mode.el
+++ b/lisp/image-mode.el
@@ -1086,7 +1086,7 @@ Otherwise, display the image by calling `image-mode'."
(unwind-protect
(progn
(setq-local image-fit-to-window-lock t)
- (ignore-error 'remote-file-error
+ (ignore-error remote-file-error
(image-toggle-display-image)))
(setq image-fit-to-window-lock nil)))))))))))
diff --git a/lisp/image.el b/lisp/image.el
index 6a8293fedf3..a32ff1a35bb 100644
--- a/lisp/image.el
+++ b/lisp/image.el
@@ -449,7 +449,7 @@ type if we can't otherwise guess it."
(require 'image-converter)
(image-convert-p source))))))
(unless type
- (signal 'unknown-image-type "Cannot determine image type")))
+ (signal 'unknown-image-type '("Cannot determine image type"))))
(when (and (not (eq type 'image-convert))
(not (memq type (and (boundp 'image-types) image-types))))
(error "Invalid image type `%s'" type))
diff --git a/lisp/image/exif.el b/lisp/image/exif.el
index 503e3ffadc7..4807df0fbbb 100644
--- a/lisp/image/exif.el
+++ b/lisp/image/exif.el
@@ -151,7 +151,7 @@ If the orientation isn't present in the data, return nil."
(defun exif--parse-jpeg ()
(unless (= (exif--read-number-be 2) #xffd8) ; SOI (start of image)
- (signal 'exif-error "Not a valid JPEG file"))
+ (signal 'exif-error '("Not a valid JPEG file")))
(cl-loop for segment = (exif--read-number-be 2)
for size = (exif--read-number-be 2)
;; Stop parsing when we get to SOS (start of stream);
@@ -168,7 +168,7 @@ If the orientation isn't present in the data, return nil."
;; The Exif data is in the APP1 JPEG chunk and starts with
;; "Exif\0\0".
(unless (equal (exif--read-chunk 6) (string ?E ?x ?i ?f ?\0 ?\0))
- (signal 'exif-error "Not a valid Exif chunk"))
+ (signal 'exif-error '("Not a valid Exif chunk")))
(delete-region (point-min) (point))
(let* ((endian-marker (exif--read-chunk 2))
(le (cond
@@ -180,14 +180,15 @@ If the orientation isn't present in the data, return nil."
t)
(t
(signal 'exif-error
- (format "Invalid endian-ness %s" endian-marker))))))
+ (list (format "Invalid endian-ness %s"
+ endian-marker)))))))
;; Another magical number.
(unless (= (exif--read-number 2 le) #x002a)
- (signal 'exif-error "Invalid TIFF header length"))
+ (signal 'exif-error '("Invalid TIFF header length")))
(let ((offset (exif--read-number 4 le)))
;; Jump to where the IFD (directory) starts and parse it.
(when (> (1+ offset) (point-max))
- (signal 'exif-error "Invalid IFD (directory) offset"))
+ (signal 'exif-error '("Invalid IFD (directory) offset")))
(goto-char (1+ offset))
(exif--parse-directory le)))))
@@ -230,7 +231,7 @@ If the orientation isn't present in the data, return nil."
(when (> (+ (1+ value) length)
(point-max))
(signal 'exif-error
- "Premature end of file"))
+ '("Premature end of file")))
(buffer-substring
(1+ value)
(+ (1+ value) length)))
@@ -248,7 +249,7 @@ If the orientation isn't present in the data, return nil."
;; keep parsing.
(progn
(when (> (1+ next) (point-max))
- (signal 'exif-error "Invalid IFD (directory) next-offset"))
+ (signal 'exif-error '("Invalid IFD (directory) next-offset")))
(goto-char (1+ next))
(nconc dir (exif--parse-directory le)))
;; We've reached the end of the directories.
@@ -287,7 +288,7 @@ VALUE is little-endian, otherwise it is big-endian."
"Return BYTES octets from the current buffer and advance point that much.
This function assumes that the current buffer is unibyte."
(when (> (+ (point) bytes) (point-max))
- (signal 'exif-error "Premature end of file"))
+ (signal 'exif-error '("Premature end of file")))
(prog1
(buffer-substring (point) (+ (point) bytes))
(forward-char bytes)))
@@ -297,7 +298,7 @@ This function assumes that the current buffer is unibyte."
Advance point to after the read bytes.
This function assumes that the current buffer is unibyte."
(when (> (+ (point) bytes) (point-max))
- (signal 'exif-error "Premature end of file"))
+ (signal 'exif-error '("Premature end of file")))
(let ((sum 0))
(dotimes (_ bytes)
(setq sum (+ (* sum 256) (following-char)))
@@ -309,7 +310,7 @@ This function assumes that the current buffer is unibyte."
Advance point to after the read bytes.
This function assumes that the current buffer is unibyte."
(when (> (+ (point) bytes) (point-max))
- (signal 'exif-error "Premature end of file"))
+ (signal 'exif-error '("Premature end of file")))
(let ((sum 0))
(dotimes (i bytes)
(setq sum (+ (* (following-char) (expt 256 i)) sum))
diff --git a/lisp/image/image-dired.el b/lisp/image/image-dired.el
index 6ecb307ce12..b13b3e08ce2 100644
--- a/lisp/image/image-dired.el
+++ b/lisp/image/image-dired.el
@@ -424,11 +424,10 @@ This affects the following commands:
(file-name-nondirectory thumb-file)))
thumb-file))
-(defun image-dired-insert-thumbnail ( file original-file-name
- associated-dired-buffer image-number)
+(defun image-dired-insert-thumbnail (file original-file-name
+ associated-dired-buffer)
"Insert thumbnail image FILE.
-Add text properties ORIGINAL-FILE-NAME, ASSOCIATED-DIRED-BUFFER
-and IMAGE-NUMBER."
+Add text properties ORIGINAL-FILE-NAME, ASSOCIATED-DIRED-BUFFER."
(let (beg end)
(setq beg (point))
(image-dired-insert-image
@@ -452,7 +451,6 @@ and IMAGE-NUMBER."
'keymap nil
'original-file-name original-file-name
'associated-dired-buffer associated-dired-buffer
- 'image-number image-number
'tags (image-dired-list-tags original-file-name)
'mouse-face 'highlight
'comment (image-dired-get-comment original-file-name)))))
@@ -587,8 +585,8 @@ thumbnail buffer to be selected."
(dolist (file files)
(when (string-match-p (image-dired--file-name-regexp) file)
(image-dired-insert-thumbnail
- (image-dired--get-create-thumbnail-file file) file dired-buf
- (cl-incf image-dired--number-of-thumbnails)))))
+ (image-dired--get-create-thumbnail-file file) file dired-buf)
+ (cl-incf image-dired--number-of-thumbnails))))
(if (> image-dired--number-of-thumbnails 0)
(if do-not-pop
(display-buffer buf)
@@ -789,7 +787,10 @@ comment."
(let ((file-name (image-dired-original-file-name))
(dired-buf (buffer-name (image-dired-associated-dired-buffer)))
(image-count (format "%s/%s"
- (get-text-property (point) 'image-number)
+ ;; Line-up adds one space between two
+ ;; images: this formula takes this into
+ ;; account.
+ (1+ (/ (point) 2))
image-dired--number-of-thumbnails))
(props (string-join (get-text-property (point) 'tags) ", "))
(comment (get-text-property (point) 'comment))
@@ -1127,10 +1128,12 @@ With a negative prefix argument, prompt user for the delay."
"Remove current thumbnail from thumbnail buffer and line up."
(interactive nil image-dired-thumbnail-mode)
(let ((inhibit-read-only t))
- (delete-char 1))
+ (delete-char 1)
+ (cl-decf image-dired--number-of-thumbnails))
(let ((pos (point)))
(image-dired--line-up-with-method)
- (goto-char pos)))
+ (goto-char pos)
+ (image-dired--update-header-line)))
(defun image-dired-line-up ()
"Line up thumbnails according to `image-dired-thumbs-per-row'.
diff --git a/lisp/imenu.el b/lisp/imenu.el
index 25a02004570..c51824b7ef3 100644
--- a/lisp/imenu.el
+++ b/lisp/imenu.el
@@ -674,8 +674,8 @@ depending on PATTERNS."
(cons item (cdr menu)))))
;; Go to the start of the match, to make sure we
;; keep making progress backwards.
- (goto-char start))))
- (set-syntax-table old-table)))
+ (goto-char start)))))
+ (set-syntax-table old-table))
;; Sort each submenu by position.
;; This is in case one submenu gets items from two different regexps.
(dolist (item index-alist)
@@ -756,9 +756,11 @@ Returns t for rescan and otherwise an element or subelement of INDEX-ALIST."
(setq index-alist (imenu--split-submenus index-alist))
(let* ((menu (imenu--split-menu index-alist (or title (buffer-name))))
(map (imenu--create-keymap (car menu)
- (cdr (if (< 1 (length (cdr menu)))
- menu
- (car (cdr menu)))))))
+ (cdr (if (and (null (cddr menu))
+ (stringp (caadr menu))
+ (consp (cdadr menu)))
+ (cadr menu)
+ menu)))))
(popup-menu map event)))
(defun imenu-choose-buffer-index (&optional prompt alist)
@@ -854,13 +856,12 @@ A trivial interface to `imenu-add-to-menubar' suitable for use in a hook."
(buffer-name)))
(menu1 (imenu--create-keymap
(car menu)
- (cdr (if (or (< 1 (length (cdr menu)))
- ;; Have we a non-nested single entry?
- (atom (cdadr menu))
- (atom (cadadr menu)))
- menu
- (car (cdr menu))))
- 'imenu--menubar-select)))
+ (cdr (if (and (null (cddr menu))
+ (stringp (caadr menu))
+ (consp (cdadr menu)))
+ (cadr menu)
+ menu))
+ 'imenu--menubar-select)))
(setcdr imenu--menubar-keymap (cdr menu1)))))))
(defun imenu--menubar-select (item)
diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el
index 04854ede6be..856c405b545 100644
--- a/lisp/international/emoji.el
+++ b/lisp/international/emoji.el
@@ -68,38 +68,86 @@ representing names. For instance:
(defvar emoji--all-bases nil)
(defvar emoji--derived nil)
(defvar emoji--names (make-hash-table :test #'equal))
-(defvar emoji--done-derived nil)
(define-multisession-variable emoji--recent (list "😀" "😖"))
(defvar emoji--insert-buffer)
-;;;###autoload
-(defun emoji-insert ()
+;;;###autoload (autoload 'emoji-insert "emoji" nil t)
+(transient-define-prefix emoji-insert ()
"Choose and insert an emoji glyph."
+ :variable-pitch t
+ [:class transient-columns
+ :setup-children emoji--setup-suffixes
+ :description emoji--group-description]
(interactive "*")
(emoji--init)
- (unless (fboundp 'emoji--command-Emoji)
- (emoji--define-transient))
- (funcall (intern "emoji--command-Emoji")))
+ (emoji--setup-prefix 'emoji-insert "Emoji" nil
+ `(("Recent" ,@(multisession-value emoji--recent))
+ ,@emoji--labels)))
-;;;###autoload
-(defun emoji-recent ()
+;;;###autoload (autoload 'emoji-recent "emoji" nil t)
+(transient-define-prefix emoji-recent ()
"Choose and insert one of the recently-used emoji glyphs."
+ :variable-pitch t
+ [:class transient-columns
+ :setup-children emoji--setup-suffixes
+ :description emoji--group-description]
(interactive "*")
(emoji--init)
- (unless (fboundp 'emoji--command-Emoji)
- (emoji--define-transient))
- (funcall (emoji--define-transient
- (cons "Recent" (multisession-value emoji--recent)) t)))
+ (emoji--setup-prefix 'emoji-recent "Recent" t
+ (multisession-value emoji--recent)))
-;;;###autoload
-(defun emoji-search ()
+;;;###autoload (autoload 'emoji-search "emoji" nil t)
+(transient-define-prefix emoji-search ()
"Choose and insert an emoji glyph by typing its Unicode name.
This command prompts for an emoji name, with completion, and
inserts it. It recognizes the Unicode Standard names of emoji,
and also consults the `emoji-alternate-names' alist."
+ :variable-pitch t
+ [:class transient-columns
+ :setup-children emoji--setup-suffixes
+ :description emoji--group-description]
(interactive "*")
(emoji--init)
- (emoji--choose-emoji))
+ (pcase-let ((`(,glyph . ,derived) (emoji--read-emoji)))
+ (if derived
+ (emoji--setup-prefix 'emoji-search "Choose Emoji"
+ (list glyph)
+ (cons glyph derived))
+ (emoji--add-recent glyph)
+ (insert glyph))))
+
+(defclass emoji--narrow (transient-suffix)
+ ((title :initarg :title)
+ (done-derived :initarg :done-derived)
+ (children :initarg :children)))
+
+(defun emoji--setup-prefix (command title done-derived spec)
+ (transient-setup
+ command nil nil
+ :scope (if (eq transient-current-command command)
+ (cons (oref (transient-suffix-object) title)
+ (oref (transient-suffix-object) done-derived))
+ (cons title done-derived))
+ :value (if (eq transient-current-command command)
+ (oref (transient-suffix-object) children)
+ spec)))
+
+(defun emoji--setup-suffixes (_)
+ (transient-parse-suffixes
+ (oref transient--prefix command)
+ (pcase-let ((`(,title . ,done-derived) (oref transient--prefix scope)))
+ (emoji--layout (oref transient--prefix command) title
+ (oref transient--prefix value) done-derived))))
+
+(defun emoji--group-description ()
+ (car (oref transient--prefix scope)))
+
+(transient-define-suffix emoji-insert-glyph ()
+ "Insert the emoji you selected."
+ (interactive nil not-a-mode)
+ (let ((glyph (oref (transient-suffix-object) description)))
+ (emoji--add-recent glyph)
+ (insert glyph)))
;;;###autoload
(defun emoji-list ()
@@ -179,11 +227,10 @@ the name is not known."
'help-echo (emoji--name glyph))))
(insert "\n\n"))))
-(defun emoji--fontify-glyph (glyph &optional inhibit-derived)
+(defun emoji--fontify-glyph (glyph &optional done-derived)
(propertize glyph 'face
- (if (and (not inhibit-derived)
- (or (null emoji--done-derived)
- (not (gethash glyph emoji--done-derived)))
+ (if (and (not (or (eq done-derived t)
+ (member glyph done-derived)))
(gethash glyph emoji--derived))
;; If this emoji has derivations, use a special face
;; to tell the user.
@@ -206,33 +253,30 @@ the name is not known."
:interactive nil
(setq-local truncate-lines t))
-(defun emoji-list-select (event)
+;;;###autoload (autoload 'emoji-list-select "emoji" nil t)
+(transient-define-prefix emoji-list-select (event)
"Select the emoji under point."
+ :variable-pitch t
+ [:class transient-columns
+ :setup-children emoji--setup-suffixes
+ :description emoji--group-description]
(interactive (list last-nonmenu-event) emoji-list-mode)
(mouse-set-point event)
(let ((glyph (get-text-property (point) 'emoji-glyph)))
(unless glyph
(error "No emoji under point"))
- (let ((derived (gethash glyph emoji--derived))
- (end-func
- (lambda ()
- (let ((buf emoji--insert-buffer))
- (quit-window)
- (if (buffer-live-p buf)
- (switch-to-buffer buf)
- (error "Buffer disappeared"))))))
- (if (not derived)
- ;; Glyph without derivations.
- (progn
- (emoji--add-recent glyph)
- (funcall end-func)
- (insert glyph))
- ;; Pop up a transient to choose between derivations.
- (let ((emoji--done-derived (make-hash-table :test #'equal)))
- (setf (gethash glyph emoji--done-derived) t)
- (funcall
- (emoji--define-transient (cons "Choose Emoji" (cons glyph derived))
- nil end-func)))))))
+ (let ((buf emoji--insert-buffer))
+ (quit-window)
+ (if (buffer-live-p buf)
+ (switch-to-buffer buf)
+ (error "Buffer disappeared")))
+ (let ((derived (gethash glyph emoji--derived)))
+ (if derived
+ (emoji--setup-prefix 'emoji-list-select "Choose Emoji"
+ (list glyph)
+ (cons glyph derived))
+ (emoji--add-recent glyph)
+ (insert glyph)))))
(defun emoji-list-help ()
"Display the name of the emoji at point."
@@ -476,97 +520,51 @@ the name is not known."
(setq parent elem))
(nconc elem (list glyph)))))
-(defun emoji--define-transient (&optional alist inhibit-derived
- end-function)
- (unless alist
- (setq alist (cons "Emoji" emoji--labels)))
- (let* ((mname (pop alist))
- (name (intern (format "emoji--command-%s" mname)))
- (emoji--done-derived (or emoji--done-derived
- (make-hash-table :test #'equal)))
- (has-subs (consp (cadr alist)))
- (layout
- (if has-subs
- ;; Define sub-maps.
- (cl-loop for entry in
- (emoji--compute-prefix
- (if (equal mname "Emoji")
- (cons (list "Recent") alist)
- alist))
- collect (list
- (car entry)
- (emoji--compute-name (cdr entry))
- (if (equal (cadr entry) "Recent")
- (emoji--recent-transient end-function)
- (emoji--define-transient
- (cons (concat mname " > " (cadr entry))
- (cddr entry))))))
- ;; Insert an emoji.
- (cl-loop for glyph in alist
- for i in (append (number-sequence ?a ?z)
- (number-sequence ?A ?Z)
- (number-sequence ?0 ?9)
- (number-sequence ?! ?/))
- collect (let ((this-glyph glyph))
- (list
- (string i)
- (emoji--fontify-glyph
- glyph inhibit-derived)
- (let ((derived
- (and (not inhibit-derived)
- (not (gethash glyph
- emoji--done-derived))
- (gethash glyph emoji--derived))))
- (if derived
- ;; We have a derived glyph, so add
- ;; another level.
- (progn
- (setf (gethash glyph
- emoji--done-derived)
- t)
- (emoji--define-transient
- (cons (concat mname " " glyph)
- (cons glyph derived))
- t end-function))
- ;; Insert the emoji.
- (lambda ()
- (interactive nil not-a-mode)
- ;; Allow switching to the correct
- ;; buffer.
- (when end-function
- (funcall end-function))
- (emoji--add-recent this-glyph)
- (insert this-glyph)))))))))
- (args (apply #'vector mname
- (emoji--columnize layout
- (if has-subs 2 8)))))
- ;; There's probably a better way to do this...
- (setf (symbol-function name)
- (lambda ()
- (interactive nil not-a-mode)
- (transient-setup name)))
- (pcase-let ((`(,class ,slots ,suffixes ,docstr ,_body)
- (transient--expand-define-args (list args))))
- (put name 'interactive-only t)
- (put name 'function-documentation docstr)
- (put name 'transient--prefix
- (apply (or class 'transient-prefix) :command name
- (cons :variable-pitch (cons t slots))))
- (put name 'transient--layout
- (transient-parse-suffixes name suffixes)))
- name))
-
-(defun emoji--recent-transient (end-function)
- "Create a function to display a dynamically generated menu."
- (lambda ()
- (interactive)
- (funcall (emoji--define-transient
- (cons "Recent" (multisession-value emoji--recent))
- t end-function))))
+(defun emoji--layout (command title spec done-derived)
+ (let ((has-subs (consp (cadr spec))))
+ (emoji--columnize
+ (if has-subs
+ (cl-loop for (key desc . glyphs) in (emoji--compute-prefix spec)
+ collect
+ (list key
+ (emoji--compute-name (cons desc glyphs))
+ command
+ :class 'emoji--narrow
+ :title (concat title " > " desc)
+ :done-derived (or (string-suffix-p "Recent" desc)
+ done-derived)
+ :children glyphs))
+ (cl-loop for glyph in spec
+ for char in (emoji--char-sequence)
+ for key = (string char)
+ for derived = (and (not (or (eq done-derived t)
+ (member glyph done-derived)))
+ (gethash glyph emoji--derived))
+ collect
+ (if derived
+ (list key
+ (emoji--fontify-glyph glyph done-derived)
+ command
+ :class 'emoji--narrow
+ :title (concat title " " glyph)
+ :done-derived (or (eq done-derived t)
+ (cons glyph done-derived))
+ :children (cons glyph derived))
+ (list key
+ (emoji--fontify-glyph glyph done-derived)
+ 'emoji-insert-glyph))))
+ (if has-subs 2 8))))
+
+(defun emoji--char-sequence ()
+ (append (number-sequence ?a ?z)
+ (number-sequence ?A ?Z)
+ (number-sequence ?0 ?9)
+ (number-sequence ?! ?/)))
(defun emoji--add-recent (glyph)
"Add GLYPH to the set of recently used emojis."
(let ((recent (multisession-value emoji--recent)))
+ (set-text-properties 0 (length glyph) nil glyph)
(setq recent (delete glyph recent))
(push glyph recent)
;; Shorten the list.
@@ -684,20 +682,6 @@ We prefer the earliest unique letter."
(gethash name emoji--all-bases))))
(cons glyph (gethash glyph emoji--derived))))))
-(defun emoji--choose-emoji ()
- (pcase-let ((`(,glyph . ,derived) (emoji--read-emoji)))
- (if (not derived)
- ;; Simple glyph with no derivations.
- (progn
- (emoji--add-recent glyph)
- (insert glyph))
- ;; Choose a derived version.
- (let ((emoji--done-derived (make-hash-table :test #'equal)))
- (setf (gethash glyph emoji--done-derived) t)
- (funcall
- (emoji--define-transient
- (cons "Choose Emoji" (cons glyph derived))))))))
-
(defvar-keymap emoji-zoom-map
"+" #'emoji-zoom-increase
"-" #'emoji-zoom-decrease
diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el
index 979e685e32a..a27aaf9e522 100644
--- a/lisp/international/mule-conf.el
+++ b/lisp/international/mule-conf.el
@@ -1734,6 +1734,20 @@ included; callers should bind `case-fold-search' to t."
:version "27.1"
:group 'processes)
+;; (describe-char-fold-equivalences ?:)
+;; The last entry is taken from history.
+(defcustom password-colon-equivalents
+ '(?\u003a ; ?\N{COLON}
+ ?\uff1a ; ?\N{FULLWIDTH COLON}
+ ?\ufe55 ; ?\N{SMALL COLON}
+ ?\ufe13 ; ?\N{PRESENTATION FORM FOR VERTICAL COLON}
+ ?\u17d6 ; ?\N{KHMER SIGN CAMNUC PII KUUH}
+ )
+ "List of characters equivalent to trailing colon in \"password\" prompts."
+ :type '(repeat character)
+ :version "30.1"
+ :group 'processes)
+
;; The old code-pages library is obsoleted by coding systems based on
;; the charsets defined in this file but might be required by user
;; code.
diff --git a/lisp/international/textsec.el b/lisp/international/textsec.el
index 1540f806e3b..e69e7c19842 100644
--- a/lisp/international/textsec.el
+++ b/lisp/international/textsec.el
@@ -320,7 +320,8 @@ affected by bidi controls in STRING."
;; state at end of STRING which could then affect the following
;; text.
(insert string "a1א:!")
- (let ((pos (bidi-find-overridden-directionality 1 (point-max) nil)))
+ (let ((pos (bidi-find-overridden-directionality
+ (point-min) (point-max) nil)))
(and (fixnump pos)
(1- pos)))))
diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el
index 3f9d4a7e818..ccf0f966574 100644
--- a/lisp/jsonrpc.el
+++ b/lisp/jsonrpc.el
@@ -4,7 +4,7 @@
;; Author: João Távora <joaotavora@gmail.com>
;; Keywords: processes, languages, extensions
-;; Version: 1.0.16
+;; Version: 1.0.17
;; Package-Requires: ((emacs "25.2"))
;; This is a GNU ELPA :core package. Avoid functionality that is not
@@ -43,7 +43,6 @@
(eval-when-compile (require 'subr-x))
(require 'warnings)
(require 'pcase)
-(require 'ert) ; to escape a `condition-case-unless-debug'
;;; Public API
@@ -154,6 +153,14 @@ immediately."
"Stop waiting for responses from the current JSONRPC CONNECTION."
(clrhash (jsonrpc--request-continuations connection)))
+(defvar jsonrpc-inhibit-debug-on-error nil
+ "Inhibit `debug-on-error' when answering requests.
+Some extensions, notably ert.el, set `debug-on-error' to non-nil,
+which makes it hard to test the behaviour of catching the Elisp
+error and replying to the endpoint with an JSONRPC-error. This
+variable can be set around calls like `jsonrpc-request' to
+circumvent that.")
+
(defun jsonrpc-connection-receive (connection message)
"Process MESSAGE just received from CONNECTION.
This function will destructure MESSAGE and call the appropriate
@@ -166,7 +173,8 @@ dispatcher in CONNECTION."
(cond
(;; A remote request
(and method id)
- (let* ((debug-on-error (and debug-on-error (not (ert-running-test))))
+ (let* ((debug-on-error (and debug-on-error
+ (not jsonrpc-inhibit-debug-on-error)))
(reply
(condition-case-unless-debug _ignore
(condition-case oops
diff --git a/lisp/kmacro.el b/lisp/kmacro.el
index aec4b805474..64aa7a27bde 100644
--- a/lisp/kmacro.el
+++ b/lisp/kmacro.el
@@ -376,14 +376,22 @@ and `kmacro-counter-format'.")
(defvar kmacro-view-last-item nil)
(defvar kmacro-view-item-no 0)
+(defun kmacro--to-vector (object)
+ "Normalize an old-style key sequence to the vector form."
+ (if (not (stringp object))
+ object
+ (let ((vec (string-to-vector object)))
+ (unless (multibyte-string-p object)
+ (dotimes (i (length vec))
+ (let ((k (aref vec i)))
+ (when (> k 127)
+ (setf (aref vec i) (+ k ?\M-\C-@ -128))))))
+ vec)))
-(autoload 'macro--string-to-vector "macros")
(defun kmacro-ring-head ()
"Return pseudo head element in macro ring."
(and last-kbd-macro
- (kmacro (if (stringp last-kbd-macro)
- (macro--string-to-vector last-kbd-macro)
- last-kbd-macro)
+ (kmacro (kmacro--to-vector last-kbd-macro)
kmacro-counter kmacro-counter-format-start)))
@@ -843,10 +851,8 @@ KEYS should be a vector or a string that obeys `key-valid-p'."
(setq format (nth 2 mac))
(setq counter (nth 1 mac))
(setq mac (nth 0 mac)))
- (when (stringp mac)
- ;; `kmacro' interprets a string according to `key-parse'.
- (setq mac (macro--string-to-vector mac)))
- (kmacro mac counter format)))
+ ;; `kmacro' interprets a string according to `key-parse'.
+ (kmacro (kmacro--to-vector mac) counter format)))
(defun kmacro-extract-lambda (mac)
"Extract kmacro from a kmacro lambda form."
@@ -862,8 +868,6 @@ KEYS should be a vector or a string that obeys `key-valid-p'."
(cl-defmethod cl-print-object ((object kmacro) stream)
(princ "#f(kmacro " stream)
- (require 'macros)
- (declare-function macros--insert-vector-macro "macros" (definition))
(let ((vecdef (kmacro--keys object))
(counter (kmacro--counter object))
(format (kmacro--format object)))
@@ -945,20 +949,15 @@ Such a \"function\" cannot be called from Lisp, but it is a valid editor command
(put symbol 'kmacro t))
-(cl-defstruct (kmacro-register
- (:constructor nil)
- (:constructor kmacro-make-register (macro)))
- macro)
+(cl-defmethod register-val-jump-to ((km kmacro) arg)
+ (funcall km arg)) ;FIXME: η-reduce?
-(cl-defmethod register-val-jump-to ((data kmacro-register) _arg)
- (kmacro-call-macro current-prefix-arg nil nil (kmacro-register-macro data)))
+(cl-defmethod register-val-describe ((km kmacro) _verbose)
+ (princ (format "a keyboard macro:\n %s"
+ (key-description (kmacro--keys km)))))
-(cl-defmethod register-val-describe ((data kmacro-register) _verbose)
- (princ (format "a keyboard macro:\n %s"
- (key-description (kmacro-register-macro data)))))
-
-(cl-defmethod register-val-insert ((data kmacro-register))
- (insert (format-kbd-macro (kmacro-register-macro data))))
+(cl-defmethod register-val-insert ((km kmacro))
+ (insert (key-description (kmacro--keys km))))
(defun kmacro-to-register (r)
"Store the last keyboard macro in register R.
@@ -968,7 +967,7 @@ Interactively, reads the register using `register-read-with-preview'."
(progn
(or last-kbd-macro (error "No keyboard macro defined"))
(list (register-read-with-preview "Save to register: "))))
- (set-register r (kmacro-make-register last-kbd-macro)))
+ (set-register r (kmacro-ring-head)))
(defun kmacro-view-macro (&optional _arg)
diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el
index 15308c298f8..acf8a1d2556 100644
--- a/lisp/ldefs-boot.el
+++ b/lisp/ldefs-boot.el
@@ -2021,7 +2021,7 @@ other modes. See `override-global-mode'.
(fn &rest ARGS)" nil t)
(autoload 'describe-personal-keybindings "bind-key" "\
Display all the personal keybindings defined by `bind-key'." t)
-(register-definition-prefixes "bind-key" '("bind-key" "compare-keybindings" "get-binding-description" "override-global-m" "personal-keybindings"))
+(register-definition-prefixes "bind-key" '("bind-key" "override-global-m" "personal-keybindings"))
;;; Generated autoloads from emacs-lisp/bindat.el
@@ -2780,7 +2780,7 @@ it is disabled.
;;; Generated autoloads from emacs-lisp/byte-opt.el
-(register-definition-prefixes "byte-opt" '("byte-" "disassemble-offset"))
+(register-definition-prefixes "byte-opt" '("byte" "disassemble-offset"))
;;; Generated autoloads from emacs-lisp/bytecomp.el
@@ -2965,10 +2965,6 @@ To use tree-sitter C/C++ modes by default, evaluate
in your configuration.
-Since this mode uses a parser, unbalanced brackets might cause
-some breakage in indentation/fontification. Therefore, it's
-recommended to enable `electric-pair-mode' with this mode.
-
(fn)" t)
(autoload 'c-or-c++-ts-mode "c-ts-mode" "\
Analyze buffer and enable either C or C++ mode.
@@ -8295,6 +8291,7 @@ Valid keywords and arguments are:
`nodigits' to suppress digits as prefix arguments.
(fn BS &optional NAME M ARGS)")
+(make-obsolete 'easy-mmode-define-keymap 'define-keymap "29.1")
(autoload 'easy-mmode-defmap "easy-mmode" "\
Define a constant M whose value is the result of `easy-mmode-define-keymap'.
The M, BS, and ARGS arguments are as per that function. DOC is
@@ -8305,6 +8302,7 @@ This macro is deprecated; use `defvar-keymap' instead.
(fn M BS DOC &rest ARGS)" nil t)
(function-put 'easy-mmode-defmap 'doc-string-elt 3)
(function-put 'easy-mmode-defmap 'lisp-indent-function 1)
+(make-obsolete 'easy-mmode-defmap 'defvar-keymap "29.1")
(autoload 'easy-mmode-defsyntax "easy-mmode" "\
Define variable ST as a syntax-table.
CSS contains a list of syntax specifications of the form (CHAR . SYNTAX).
@@ -9232,6 +9230,7 @@ Turn on EDT Emulation." t)
;;; Generated autoloads from progmodes/eglot.el
+(push (purecopy '(eglot 1 13)) package--builtin-versions)
(autoload 'eglot "eglot" "\
Start LSP server in support of PROJECT's buffers under MANAGED-MAJOR-MODE.
@@ -9528,6 +9527,15 @@ optional prefix argument REINIT is non-nil.
(register-definition-prefixes "elint" '("elint-"))
+;;; Generated autoloads from progmodes/elixir-ts-mode.el
+
+(autoload 'elixir-ts-mode "elixir-ts-mode" "\
+Major mode for editing Elixir, powered by tree-sitter.
+
+(fn)" t)
+(register-definition-prefixes "elixir-ts-mode" '("elixir-ts-"))
+
+
;;; Generated autoloads from emacs-lisp/elp.el
(autoload 'elp-instrument-function "elp" "\
@@ -9594,6 +9602,16 @@ displayed." t)
;;; Generated autoloads from eshell/em-extpipe.el
+(defgroup eshell-extpipe nil "\
+Native shell pipelines.
+
+This module lets you construct pipelines that use your operating
+system's shell instead of Eshell's own pipelining support. This
+is especially relevant when executing commands on a remote
+machine using Eshell's Tramp integration: using the remote
+shell's pipelining avoids copying the data which will flow
+through the pipeline to local Emacs buffers and then right back
+again." :tag "External pipelines" :group 'eshell-module)
(register-definition-prefixes "em-extpipe" '("eshell-"))
@@ -9604,12 +9622,12 @@ displayed." t)
;;; Generated autoloads from eshell/em-hist.el
-(register-definition-prefixes "em-hist" '("eshell"))
+(register-definition-prefixes "em-hist" '("em-hist-unload-function" "eshell"))
;;; Generated autoloads from eshell/em-ls.el
-(register-definition-prefixes "em-ls" '("eshell"))
+(register-definition-prefixes "em-ls" '("em-ls-unload-function" "eshell"))
;;; Generated autoloads from eshell/em-pred.el
@@ -9634,7 +9652,7 @@ displayed." t)
;;; Generated autoloads from eshell/em-smart.el
-(register-definition-prefixes "em-smart" '("eshell-"))
+(register-definition-prefixes "em-smart" '("em-smart-unload-hook" "eshell-"))
;;; Generated autoloads from eshell/em-term.el
@@ -9782,15 +9800,9 @@ Emerge two RCS revisions of a file, with another revision as ancestor.
;;; Generated autoloads from international/emoji.el
-(autoload 'emoji-insert "emoji" "\
-Choose and insert an emoji glyph." t)
-(autoload 'emoji-recent "emoji" "\
-Choose and insert one of the recently-used emoji glyphs." t)
-(autoload 'emoji-search "emoji" "\
-Choose and insert an emoji glyph by typing its Unicode name.
-This command prompts for an emoji name, with completion, and
-inserts it. It recognizes the Unicode Standard names of emoji,
-and also consults the `emoji-alternate-names' alist." t)
+ (autoload 'emoji-insert "emoji" nil t)
+ (autoload 'emoji-recent "emoji" nil t)
+ (autoload 'emoji-search "emoji" nil t)
(autoload 'emoji-list "emoji" "\
List emojis and insert the one that's selected.
Select the emoji by typing \\<emoji-list-mode-map>\\[emoji-list-select] on its picture.
@@ -9806,6 +9818,7 @@ If called from Lisp, return the name as a string; return nil if
the name is not known.
(fn GLYPH &optional INTERACTIVE)" t)
+ (autoload 'emoji-list-select "emoji" nil t)
(autoload 'emoji--init "emoji" "\
@@ -9817,8 +9830,6 @@ FACTOR is the multiplication factor for the size.
(fn &optional FACTOR)" t)
(autoload 'emoji-zoom-decrease "emoji" "\
Decrease the size of the character under point." t)
-(autoload 'emoji-zoom-reset "emoji" "\
-Reset the size of the character under point." t)
(register-definition-prefixes "emoji" '("emoji-"))
@@ -11364,8 +11375,10 @@ For more information, see Info node `(eww) Top'.
(defalias 'browse-web 'eww)
(autoload 'eww-open-file "eww" "\
Render FILE using EWW.
+If NEW-BUFFER is non-nil (interactively, the prefix arg), use a
+new buffer instead of reusing the default EWW buffer.
-(fn FILE)" t)
+(fn FILE &optional NEW-BUFFER)" t)
(autoload 'eww-search-words "eww" "\
Search the web for the text in the region.
If region is active (and not whitespace), search the web for
@@ -14451,6 +14464,8 @@ Add the window configuration CONF to `gnus-buffer-configuration'.
(autoload 'go-ts-mode "go-ts-mode" "\
Major mode for editing Go, powered by tree-sitter.
+\\{go-ts-mode-map}
+
(fn)" t)
(autoload 'go-mod-ts-mode "go-ts-mode" "\
Major mode for editing go.mod files, powered by tree-sitter.
@@ -15113,6 +15128,15 @@ Prefix arg sets default accept amount temporarily.
(register-definition-prefixes "hashcash" '("hashcash-"))
+;;; Generated autoloads from progmodes/heex-ts-mode.el
+
+(autoload 'heex-ts-mode "heex-ts-mode" "\
+Major mode for editing HEEx, powered by tree-sitter.
+
+(fn)" t)
+(register-definition-prefixes "heex-ts-mode" '("heex-ts-"))
+
+
;;; Generated autoloads from help-at-pt.el
(autoload 'help-at-pt-string "help-at-pt" "\
@@ -16283,6 +16307,15 @@ values.
(register-definition-prefixes "semantic/html" '("semantic-"))
+;;; Generated autoloads from textmodes/html-ts-mode.el
+
+(autoload 'html-ts-mode "html-ts-mode" "\
+Major mode for editing Html, powered by tree-sitter.
+
+(fn)" t)
+(register-definition-prefixes "html-ts-mode" '("html-ts-mode-"))
+
+
;;; Generated autoloads from htmlfontify.el
(push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
@@ -17238,8 +17271,8 @@ Put image IMAGE in front of POS in the current buffer.
IMAGE must be an image created with `create-image' or `defimage'.
IMAGE is displayed by putting an overlay into the current buffer with a
`before-string' STRING that has a `display' property whose value is the
-image. STRING defaults to \"x\" if it's nil or omitted.
-The overlay created by this function has the `put-image' property set to t.
+image. STRING is defaulted if you omit it.
+The overlay created will have the `put-image' property set to t.
POS may be an integer or marker.
AREA is where to display the image. AREA nil or omitted means
display it in the text area, a value of `left-margin' means
@@ -17373,31 +17406,14 @@ Cut a rectangle from the image under point, filling it with COLOR.
COLOR defaults to the value of `image-cut-color'.
Interactively, with prefix argument, prompt for COLOR to use.
-This command presents the image with a rectangular area superimposed
-on it, and allows moving and resizing the area to define which
-part of it to cut.
-
-While moving/resizing the cutting area, the following key bindings
-are available:
-
-`q': Exit without changing anything.
-`RET': Crop/cut the image.
-`m': Make mouse movements move the rectangle instead of altering the
- rectangle shape.
-`s': Same as `m', but make the rectangle into a square first.
-
-After cutting the image, you can save it by `M-x image-save' or
-\\<image-map>\\[image-save] when point is over the image.
-
(fn &optional COLOR)" t)
(autoload 'image-crop "image-crop" "\
Crop the image under point.
-This command presents the image with a rectangular area superimposed
-on it, and allows moving and resizing the area to define which
-part of it to crop.
+If CUT is non-nil, remove a rectangle from the image instead of
+cropping the image. In that case CUT should be the name of a
+color to fill the rectangle.
-While moving/resizing the cropping area, the following key bindings
-are available:
+While cropping the image, the following key bindings are available:
`q': Exit without changing anything.
`RET': Crop/cut the image.
@@ -17405,13 +17421,9 @@ are available:
rectangle shape.
`s': Same as `m', but make the rectangle into a square first.
-After cropping the image, you can save it by `M-x image-save' or
+After cropping an image, you can save it by `M-x image-save' or
\\<image-map>\\[image-save] when point is over the image.
-When called from Lisp, if CUT is non-nil, remove a rectangle from
-the image instead of cropping the image. In that case, CUT should
-be the name of a color to fill the rectangle.
-
(fn &optional CUT)" t)
(register-definition-prefixes "image-crop" '("image-c"))
@@ -18766,7 +18778,7 @@ Major mode for editing JSON, powered by tree-sitter.
;;; Generated autoloads from jsonrpc.el
-(push (purecopy '(jsonrpc 1 0 16)) package--builtin-versions)
+(push (purecopy '(jsonrpc 1 0 17)) package--builtin-versions)
(register-definition-prefixes "jsonrpc" '("jsonrpc-"))
@@ -19478,7 +19490,7 @@ If called with an optional prefix argument ARG, prompts for month and year.
This function is suitable for execution in an init file.
(fn &optional ARG)" t)
-(register-definition-prefixes "lunar" '("calendar-lunar-phases" "diary-lunar-phases" "eclipse-check" "lunar-"))
+(register-definition-prefixes "lunar" '("calendar-lunar-phases" "diary-lunar-phases" "lunar-"))
;;; Generated autoloads from progmodes/m4-mode.el
@@ -19571,7 +19583,7 @@ and then select the region of un-tablified names and use
(fn TOP BOTTOM &optional MACRO)" t)
(define-key ctl-x-map "q" 'kbd-macro-query)
-(register-definition-prefixes "macros" '("macro"))
+(register-definition-prefixes "macros" '("macros--insert-vector-macro"))
;;; Generated autoloads from mail/mail-extr.el
@@ -22454,7 +22466,7 @@ Coloring:
;;; Generated autoloads from org/org.el
-(push (purecopy '(org 9 6 3)) package--builtin-versions)
+(push (purecopy '(org 9 6 2)) package--builtin-versions)
(autoload 'org-babel-do-load-languages "org" "\
Load the languages defined in `org-babel-load-languages'.
@@ -23541,6 +23553,11 @@ the `Version:' header.")
(defcustom package-quickstart-file (locate-user-emacs-file "package-quickstart.el") "\
Location of the file used to speed up activation of packages at startup." :type 'file :group 'applications :initialize #'custom-initialize-delay :version "27.1")
(custom-autoload 'package-quickstart-file "package" t)
+(autoload 'package-report-bug "package" "\
+Prepare a message to send to the maintainers of a package.
+DESC must be a `package-desc' object.
+
+(fn DESC)" '(package-menu-mode))
(register-definition-prefixes "package" '("bad-signature" "define-package" "describe-package-1" "package-"))
@@ -26478,6 +26495,8 @@ usually more efficient than that of a simplified version:
(cdr parens))))
(fn STRINGS &optional PAREN)")
+(function-put 'regexp-opt 'pure 't)
+(function-put 'regexp-opt 'side-effect-free 't)
(autoload 'regexp-opt-depth "regexp-opt" "\
Return the depth of REGEXP.
This means the number of non-shy regexp grouping constructs
@@ -28354,29 +28373,17 @@ With ARG non-nil, silently save all file-visiting buffers, then kill.
If emacsclient was started with a list of filenames to edit, then
only these files will be asked to be saved.
+When running Emacs as a daemon and with
+`server-stop-automatically' (which see) set to `kill-terminal' or
+`delete-frame', this function may call `save-buffers-kill-emacs'
+if there are no other active clients.
+
(fn ARG)")
(autoload 'server-stop-automatically "server" "\
-Automatically stop server as specified by ARG.
-
-If ARG is the symbol `empty', stop the server when it has no
-remaining clients, no remaining unsaved file-visiting buffers,
-and no running processes with a `query-on-exit' flag.
-
-If ARG is the symbol `delete-frame', ask the user when the last
-frame is deleted whether each unsaved file-visiting buffer must
-be saved and each running process with a `query-on-exit' flag
-can be stopped, and if so, stop the server itself.
-
-If ARG is the symbol `kill-terminal', ask the user when the
-terminal is killed with \\[save-buffers-kill-terminal] whether each unsaved file-visiting
-buffer must be saved and each running process with a `query-on-exit'
-flag can be stopped, and if so, stop the server itself.
-
-Any other value of ARG will cause this function to signal an error.
+Automatically stop the Emacs server as specified by VALUE.
+This sets the variable `server-stop-automatically' (which see).
-This function is meant to be called from the user init file.
-
-(fn ARG)")
+(fn VALUE)")
(register-definition-prefixes "server" '("server-"))
@@ -30301,7 +30308,7 @@ Studlify-case the current buffer." t)
(defsubst string-join (strings &optional separator) "\
Join all STRINGS using SEPARATOR.
Optional argument SEPARATOR must be a string, a vector, or a list of
-characters; nil stands for the empty string." (mapconcat #'identity strings separator))
+characters; nil stands for the empty string." (declare (pure t) (side-effect-free t)) (mapconcat #'identity strings separator))
(autoload 'string-truncate-left "subr-x" "\
If STRING is longer than LENGTH, return a truncated version.
When truncating, \"...\" is always prepended to the string, so
@@ -30309,10 +30316,12 @@ the resulting string may be longer than the original if LENGTH is
3 or smaller.
(fn STRING LENGTH)")
+(function-put 'string-truncate-left 'pure 't)
+(function-put 'string-truncate-left 'side-effect-free 't)
(defsubst string-blank-p (string) "\
Check whether STRING is either empty or only whitespace.
The following characters count as whitespace here: space, tab, newline and
-carriage return." (string-match-p "\\`[ \11\n\15]*\\'" string))
+carriage return." (declare (pure t) (side-effect-free t)) (string-match-p "\\`[ \11\n\15]*\\'" string))
(autoload 'string-clean-whitespace "subr-x" "\
Clean up whitespace in STRING.
All sequences of whitespaces in STRING are collapsed into a
@@ -32713,7 +32722,7 @@ It must be supported by libarchive(3).")
List of suffixes which indicate a compressed file.
It must be supported by libarchive(3).")
(defmacro tramp-archive-autoload-file-name-regexp nil "\
-Regular expression matching archive file names." (if (<= emacs-major-version 26) '(concat "\\`" "\\(" ".+" "\\." (regexp-opt tramp-archive-suffixes) "\\(?:" "\\." (regexp-opt tramp-archive-compression-suffixes) "\\)*" "\\)" "\\(" "/" ".*" "\\)" "\\'") `(rx bos (group (+ nonl) "." (| ,@tramp-archive-suffixes) (32 "." (| ,@tramp-archive-compression-suffixes))) (group "/" (* nonl)) eos)))
+Regular expression matching archive file names." `(rx bos (group (+ nonl) "." (| ,@tramp-archive-suffixes) (32 "." (| ,@tramp-archive-compression-suffixes))) (group "/" (* nonl)) eos))
(defun tramp-archive-autoload-file-name-handler (operation &rest args) "\
Load Tramp archive file name handler, and perform OPERATION." (defvar tramp-archive-autoload) (let ((default-directory temporary-file-directory) (tramp-archive-autoload tramp-archive-enabled)) (apply #'tramp-autoload-file-name-handler operation args)))
(defun tramp-register-archive-autoload-file-name-handler nil "\
@@ -32735,7 +32744,6 @@ Add archive file name handler to `file-name-handler-alist'." (when (and tramp-ar
;;; Generated autoloads from net/tramp-compat.el
- (defalias 'tramp-compat-rx #'rx)
(register-definition-prefixes "tramp-compat" '("tramp-"))
@@ -32801,7 +32809,7 @@ Add archive file name handler to `file-name-handler-alist'." (when (and tramp-ar
;;; Generated autoloads from net/trampver.el
-(push (purecopy '(tramp 2 6 0 29 1)) package--builtin-versions)
+(push (purecopy '(tramp 2 7 0 -1)) package--builtin-versions)
(register-definition-prefixes "trampver" '("tramp-"))
@@ -33149,15 +33157,7 @@ Major mode for editing TypeScript.
(fn)" t)
(autoload 'tsx-ts-mode "typescript-ts-mode" "\
-Major mode for editing TSX and JSX documents.
-
-This major mode defines two additional JSX-specific faces:
-`typescript-ts-jsx-attribute-face' and
-`typescript-ts-jsx-attribute-face' that are used for HTML tags
-and attributes, respectively.
-
-The JSX-specific faces are used when `treesit-font-lock-level' is
-at least 3 (which is the default value).
+Major mode for editing TypeScript.
(fn)" t)
(register-definition-prefixes "typescript-ts-mode" '("typescript-ts-mode-"))
@@ -34577,7 +34577,7 @@ revision, with SUBJECT derived from each revision subject.
When invoked with a numerical prefix argument, use the last N
revisions.
When invoked interactively in a Log View buffer with
-marked revisions, use those these.
+marked revisions, use those.
(fn ADDRESSEE SUBJECT REVISIONS)" t)
(register-definition-prefixes "vc" '("vc-" "with-vc-properties"))
@@ -34846,7 +34846,7 @@ Key bindings:
;;; Generated autoloads from progmodes/verilog-mode.el
-(push (purecopy '(verilog-mode 2021 10 14 127365406)) package--builtin-versions)
+(push (purecopy '(verilog-mode 2022 12 18 181110314)) package--builtin-versions)
(autoload 'verilog-mode "verilog-mode" "\
Major mode for editing Verilog code.
\\<verilog-mode-map>
@@ -34880,6 +34880,11 @@ Variables controlling indentation/edit style:
function keyword.
`verilog-indent-level-directive' (default 1)
Indentation of \\=`ifdef/\\=`endif blocks.
+ `verilog-indent-ignore-multiline-defines' (default t)
+ Non-nil means ignore indentation on lines that are part of a multiline
+ define.
+ `verilog-indent-ignore-regexp' (default nil
+ Regexp that matches lines that should be ignored for indentation.
`verilog-cexp-indent' (default 1)
Indentation of Verilog statements broken across lines i.e.:
if (a)
@@ -34903,6 +34908,9 @@ Variables controlling indentation/edit style:
otherwise you get:
if (a)
begin
+ `verilog-indent-class-inside-pkg' (default t)
+ Non-nil means indent classes inside packages.
+ Otherwise, classes have zero indentation.
`verilog-auto-endcomments' (default t)
Non-nil means a comment /* ... */ is set after the ends which ends
cases, tasks, functions and modules.
@@ -34912,6 +34920,17 @@ Variables controlling indentation/edit style:
will be inserted. Setting this variable to zero results in every
end acquiring a comment; the default avoids too many redundant
comments in tight quarters.
+ `verilog-align-decl-expr-comments' (default t)
+ Non-nil means align declaration and expressions comments.
+ `verilog-align-comment-distance' (default 1)
+ Distance (in spaces) between longest declaration and comments.
+ Only works if `verilog-align-decl-expr-comments' is non-nil.
+ `verilog-align-assign-expr' (default nil)
+ Non-nil means align expressions of continuous assignments.
+ `verilog-align-typedef-regexp' (default nil)
+ Regexp that matches user typedefs for declaration alignment.
+ `verilog-align-typedef-words' (default nil)
+ List of words that match user typedefs for declaration alignment.
`verilog-auto-lineup' (default `declarations')
List of contexts where auto lineup of code should be done.
@@ -34935,17 +34954,20 @@ Some other functions are:
\\[verilog-mark-defun] Mark function.
\\[verilog-beg-of-defun] Move to beginning of current function.
\\[verilog-end-of-defun] Move to end of current function.
- \\[verilog-label-be] Label matching begin ... end, fork ... join, etc statements.
+ \\[verilog-label-be] Label matching begin ... end, fork ... join, etc
+ statements.
\\[verilog-comment-region] Put marked area in a comment.
- \\[verilog-uncomment-region] Uncomment an area commented with \\[verilog-comment-region].
+ \\[verilog-uncomment-region] Uncomment an area commented with
+ \\[verilog-comment-region].
\\[verilog-insert-block] Insert begin ... end.
\\[verilog-star-comment] Insert /* ... */.
\\[verilog-sk-always] Insert an always @(AS) begin .. end block.
\\[verilog-sk-begin] Insert a begin .. end block.
\\[verilog-sk-case] Insert a case block, prompting for details.
- \\[verilog-sk-for] Insert a for (...) begin .. end block, prompting for details.
+ \\[verilog-sk-for] Insert a for (...) begin .. end block, prompting for
+ details.
\\[verilog-sk-generate] Insert a generate .. endgenerate block.
\\[verilog-sk-header] Insert a header block at the top of file.
\\[verilog-sk-initial] Insert an initial begin .. end block.
@@ -34968,14 +34990,17 @@ Some other functions are:
\\[verilog-sk-else-if] Insert an else if (..) begin .. end block.
\\[verilog-sk-comment] Insert a comment block.
\\[verilog-sk-assign] Insert an assign .. = ..; statement.
- \\[verilog-sk-function] Insert a function .. begin .. end endfunction block.
+ \\[verilog-sk-function] Insert a function .. begin .. end endfunction
+ block.
\\[verilog-sk-input] Insert an input declaration, prompting for details.
\\[verilog-sk-output] Insert an output declaration, prompting for details.
- \\[verilog-sk-state-machine] Insert a state machine definition, prompting for details.
+ \\[verilog-sk-state-machine] Insert a state machine definition, prompting
+ for details.
\\[verilog-sk-inout] Insert an inout declaration, prompting for details.
\\[verilog-sk-wire] Insert a wire declaration, prompting for details.
\\[verilog-sk-reg] Insert a register declaration, prompting for details.
- \\[verilog-sk-define-signal] Define signal under point as a register at the top of the module.
+ \\[verilog-sk-define-signal] Define signal under point as a register at
+ the top of the module.
All key bindings can be seen in a Verilog-buffer with \\[describe-bindings].
Key bindings specific to `verilog-mode-map' are:
@@ -36094,6 +36119,7 @@ The mode's hook is called both when the mode is enabled and when
it is disabled.
(fn &optional ARG)" t)
+(put 'global-whitespace-mode 'globalized-minor-mode t)
(defvar global-whitespace-mode nil "\
Non-nil if Global Whitespace mode is enabled.
See the `global-whitespace-mode' command
@@ -36103,25 +36129,18 @@ either customize it (see the info node `Easy Customization')
or call the function `global-whitespace-mode'.")
(custom-autoload 'global-whitespace-mode "whitespace" nil)
(autoload 'global-whitespace-mode "whitespace" "\
-Toggle whitespace visualization globally (Global Whitespace mode).
-
-See also `whitespace-style', `whitespace-newline' and
-`whitespace-display-mappings'.
-
-This is a global minor mode. If called interactively, toggle the
-`Global Whitespace mode' mode. If the prefix argument is
-positive, enable the mode, and if it is zero or negative, disable
-the mode.
+Toggle Whitespace mode in all buffers.
+With prefix ARG, enable Global Whitespace mode if ARG is positive;
+otherwise, disable it.
-If called from Lisp, toggle the mode if ARG is `toggle'. Enable
-the mode if ARG is nil, omitted, or is a positive number.
+If called from Lisp, toggle the mode if ARG is `toggle'.
+Enable the mode if ARG is nil, omitted, or is a positive number.
Disable the mode if ARG is a negative number.
-To check whether the minor mode is enabled in the current buffer,
-evaluate `(default-value \\='global-whitespace-mode)'.
+Whitespace mode is enabled in all buffers where
+`whitespace-turn-on-if-enabled' would do it.
-The mode's hook is called both when the mode is enabled and when
-it is disabled.
+See `whitespace-mode' for more information on Whitespace mode.
(fn &optional ARG)" t)
(defvar global-whitespace-newline-mode nil "\
diff --git a/lisp/macros.el b/lisp/macros.el
index 59c7796551f..98ee3dc52f9 100644
--- a/lisp/macros.el
+++ b/lisp/macros.el
@@ -46,16 +46,6 @@
" ")
?\]))
-(defun macro--string-to-vector (str)
- "Convert an old-style string key sequence to the vector form."
- (let ((vec (string-to-vector str)))
- (unless (multibyte-string-p str)
- (dotimes (i (length vec))
- (let ((k (aref vec i)))
- (when (> k 127)
- (setf (aref vec i) (+ k ?\M-\C-@ -128))))))
- vec))
-
;;;###autoload
(defun insert-kbd-macro (macroname &optional keys)
"Insert in buffer the definition of kbd macro MACRONAME, as Lisp code.
@@ -88,10 +78,8 @@ use this command, and then save the file."
(insert "(defalias '"))
(prin1 macroname (current-buffer))
(insert "\n ")
- (when (stringp definition)
- (setq definition (macro--string-to-vector definition)))
- (if (vectorp definition)
- (setq definition (kmacro definition)))
+ (when (or (stringp definition) (vectorp definition))
+ (setq definition (kmacro (kmacro--to-vector definition))))
(if (kmacro-p definition)
(let ((vecdef (kmacro--keys definition))
(counter (kmacro--counter definition))
diff --git a/lisp/mail/feedmail.el b/lisp/mail/feedmail.el
index 97d20cca151..165aafae1f7 100644
--- a/lisp/mail/feedmail.el
+++ b/lisp/mail/feedmail.el
@@ -2511,22 +2511,20 @@ mapped to mostly alphanumerics for safety."
feedmail-force-binary-write)
'no-conversion
coding-system-for-write)))
- (unwind-protect
- (progn
- (insert fcc)
- (unless feedmail-nuke-bcc-in-fcc
- (if bcc-holder (insert bcc-holder))
- (if resent-bcc-holder
- (insert resent-bcc-holder)))
-
- (run-hooks 'feedmail-before-fcc-hook)
-
- (when feedmail-nuke-body-in-fcc
- (goto-char eoh-marker)
- (if (natnump feedmail-nuke-body-in-fcc)
- (forward-line feedmail-nuke-body-in-fcc))
- (delete-region (point) (point-max)))
- (mail-do-fcc eoh-marker))))))
+ (insert fcc)
+ (unless feedmail-nuke-bcc-in-fcc
+ (if bcc-holder (insert bcc-holder))
+ (if resent-bcc-holder
+ (insert resent-bcc-holder)))
+
+ (run-hooks 'feedmail-before-fcc-hook)
+
+ (when feedmail-nuke-body-in-fcc
+ (goto-char eoh-marker)
+ (if (natnump feedmail-nuke-body-in-fcc)
+ (forward-line feedmail-nuke-body-in-fcc))
+ (delete-region (point) (point-max)))
+ (mail-do-fcc eoh-marker))))
;; User bailed out of one-last-look.
(if feedmail-queue-runner-is-active
(throw 'skip-me-q 'skip-me-q)
@@ -3046,30 +3044,30 @@ been weeded out."
(address-blob)
(this-line)
(this-line-end))
- (unwind-protect
- (with-current-buffer (get-buffer-create " *FQM scratch*")
- (erase-buffer)
- (insert-buffer-substring message-buffer header-start header-end)
- (goto-char (point-min))
- (let ((case-fold-search t))
- (while (re-search-forward addr-regexp (point-max) t)
- (replace-match "")
- (setq this-line (match-beginning 0))
- (forward-line 1)
- ;; get any continuation lines
- (while (and (looking-at "^[ \t]+") (< (point) (point-max)))
- (forward-line 1))
- (setq this-line-end (point-marker))
- ;; only keep if we don't have it already
- (setq address-blob
- (mail-strip-quoted-names (buffer-substring-no-properties this-line this-line-end)))
- (while (string-match "\\([, \t\n\r]*\\)\\([^, \t\n\r]+\\)" address-blob)
- (setq simple-address (substring address-blob (match-beginning 2) (match-end 2)))
- (setq address-blob (replace-match "" t t address-blob))
- (if (not (member simple-address address-list))
- (push simple-address address-list)))
- ))
- (kill-buffer nil)))
+
+ (with-current-buffer (get-buffer-create " *FQM scratch*")
+ (erase-buffer)
+ (insert-buffer-substring message-buffer header-start header-end)
+ (goto-char (point-min))
+ (let ((case-fold-search t))
+ (while (re-search-forward addr-regexp (point-max) t)
+ (replace-match "")
+ (setq this-line (match-beginning 0))
+ (forward-line 1)
+ ;; get any continuation lines
+ (while (and (looking-at "^[ \t]+") (< (point) (point-max)))
+ (forward-line 1))
+ (setq this-line-end (point-marker))
+ ;; only keep if we don't have it already
+ (setq address-blob
+ (mail-strip-quoted-names (buffer-substring-no-properties this-line this-line-end)))
+ (while (string-match "\\([, \t\n\r]*\\)\\([^, \t\n\r]+\\)" address-blob)
+ (setq simple-address (substring address-blob (match-beginning 2) (match-end 2)))
+ (setq address-blob (replace-match "" t t address-blob))
+ (if (not (member simple-address address-list))
+ (push simple-address address-list)))
+ ))
+ (kill-buffer nil))
(identity address-list)))
diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el
index 21ddef4b0fd..613541e5dc4 100644
--- a/lisp/mail/mailclient.el
+++ b/lisp/mail/mailclient.el
@@ -111,104 +111,103 @@ The mail client is taken to be the handler of mailto URLs."
(let ((case-fold-search nil)
delimline
(mailbuf (current-buffer)))
- (unwind-protect
- (with-temp-buffer
- (insert-buffer-substring mailbuf)
- ;; Move to header delimiter
- (mail-sendmail-undelimit-header)
- (setq delimline (point-marker))
- (if mail-aliases
- (expand-mail-aliases (point-min) delimline))
- (goto-char (point-min))
- ;; ignore any blank lines in the header
- (while (and (re-search-forward "\n\n\n*" delimline t)
- (< (point) delimline))
- (replace-match "\n"))
- (let ((case-fold-search t)
- (mime-charset-pattern
- (concat
- "^content-type:[ \t]*text/plain;"
- "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*"
- "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?"))
- coding-system
- character-coding
- ;; Use the external browser function to send the
- ;; message.
- (browse-url-default-handlers nil))
- ;; initialize limiter
- (setq mailclient-delim-static "?")
- ;; construct and call up mailto URL
- (browse-url
+ (with-temp-buffer
+ (insert-buffer-substring mailbuf)
+ ;; Move to header delimiter
+ (mail-sendmail-undelimit-header)
+ (setq delimline (point-marker))
+ (if mail-aliases
+ (expand-mail-aliases (point-min) delimline))
+ (goto-char (point-min))
+ ;; ignore any blank lines in the header
+ (while (and (re-search-forward "\n\n\n*" delimline t)
+ (< (point) delimline))
+ (replace-match "\n"))
+ (let ((case-fold-search t)
+ (mime-charset-pattern
(concat
- (save-excursion
- (narrow-to-region (point-min) delimline)
- ;; We can't send multipart/* messages (i. e. with
- ;; attachments or the like) via this method.
- (when-let ((type (mail-fetch-field "content-type")))
- (when (and (string-match "multipart"
- (car (mail-header-parse-content-type
- type)))
- (not (y-or-n-p "Message with attachments can't be sent via mailclient; continue anyway?")))
- (error "Choose a different `send-mail-function' to send attachments")))
- (goto-char (point-min))
- (setq coding-system
- (if (re-search-forward mime-charset-pattern nil t)
- (coding-system-from-name (match-string 1))
- 'undecided))
- (setq character-coding
- (mail-fetch-field "content-transfer-encoding"))
- (when character-coding
- (setq character-coding (downcase character-coding)))
- (concat
- "mailto:"
- ;; Some of the headers according to RFC 822 (or later).
- (mailclient-gather-addresses "To"
- 'drop-first-name)
- (mailclient-gather-addresses "cc" )
- (mailclient-gather-addresses "bcc" )
- (mailclient-gather-addresses "Resent-To" )
- (mailclient-gather-addresses "Resent-cc" )
- (mailclient-gather-addresses "Resent-bcc" )
- (mailclient-gather-addresses "Reply-To" )
- ;; The From field is not honored for now: it's
- ;; not necessarily configured. The mail client
- ;; knows the user's address(es)
- ;; (mailclient-gather-addresses "From" )
- ;; subject line
- (let ((subj (mail-fetch-field "Subject" nil t)))
- (widen) ;; so we can read the body later on
- (if subj ;; if non-blank
- ;; the mail client will deal with
- ;; warning the user etc.
- (concat (mailclient-url-delim) "subject="
- (mailclient-encode-string-as-url subj))
- ""))))
- ;; body
- (mailclient-url-delim) "body="
- (progn
- (delete-region (point-min) delimline)
- (unless (null character-coding)
- ;; mailto: and clipboard need UTF-8 and cannot deal with
- ;; Content-Transfer-Encoding or Content-Type.
- ;; FIXME: There is code duplication here with rmail.el.
- (set-buffer-multibyte nil)
- (cond
- ((string= character-coding "base64")
- (base64-decode-region (point-min) (point-max)))
- ((string= character-coding "quoted-printable")
- (mail-unquote-printable-region (point-min) (point-max)
- nil nil t))
- (t (error "Unsupported Content-Transfer-Encoding: %s"
- character-coding)))
- (decode-coding-region (point-min) (point-max) coding-system))
- (mailclient-encode-string-as-url
- (if mailclient-place-body-on-clipboard-flag
- (progn
- (clipboard-kill-ring-save (point-min) (point-max))
- (concat
- "*** E-Mail body has been placed on clipboard, "
- "please paste it here! ***"))
- (buffer-string)))))))))))
+ "^content-type:[ \t]*text/plain;"
+ "\\(?:[ \t\n]*\\(?:format\\|delsp\\)=\"?[-a-z0-9]+\"?;\\)*"
+ "[ \t\n]*charset=\"?\\([^ \t\n\";]+\\)\"?"))
+ coding-system
+ character-coding
+ ;; Use the external browser function to send the
+ ;; message.
+ (browse-url-default-handlers nil))
+ ;; initialize limiter
+ (setq mailclient-delim-static "?")
+ ;; construct and call up mailto URL
+ (browse-url
+ (concat
+ (save-excursion
+ (narrow-to-region (point-min) delimline)
+ ;; We can't send multipart/* messages (i. e. with
+ ;; attachments or the like) via this method.
+ (when-let ((type (mail-fetch-field "content-type")))
+ (when (and (string-match "multipart"
+ (car (mail-header-parse-content-type
+ type)))
+ (not (y-or-n-p "Message with attachments can't be sent via mailclient; continue anyway?")))
+ (error "Choose a different `send-mail-function' to send attachments")))
+ (goto-char (point-min))
+ (setq coding-system
+ (if (re-search-forward mime-charset-pattern nil t)
+ (coding-system-from-name (match-string 1))
+ 'undecided))
+ (setq character-coding
+ (mail-fetch-field "content-transfer-encoding"))
+ (when character-coding
+ (setq character-coding (downcase character-coding)))
+ (concat
+ "mailto:"
+ ;; Some of the headers according to RFC 822 (or later).
+ (mailclient-gather-addresses "To"
+ 'drop-first-name)
+ (mailclient-gather-addresses "cc" )
+ (mailclient-gather-addresses "bcc" )
+ (mailclient-gather-addresses "Resent-To" )
+ (mailclient-gather-addresses "Resent-cc" )
+ (mailclient-gather-addresses "Resent-bcc" )
+ (mailclient-gather-addresses "Reply-To" )
+ ;; The From field is not honored for now: it's
+ ;; not necessarily configured. The mail client
+ ;; knows the user's address(es)
+ ;; (mailclient-gather-addresses "From" )
+ ;; subject line
+ (let ((subj (mail-fetch-field "Subject" nil t)))
+ (widen) ;; so we can read the body later on
+ (if subj ;; if non-blank
+ ;; the mail client will deal with
+ ;; warning the user etc.
+ (concat (mailclient-url-delim) "subject="
+ (mailclient-encode-string-as-url subj))
+ ""))))
+ ;; body
+ (mailclient-url-delim) "body="
+ (progn
+ (delete-region (point-min) delimline)
+ (unless (null character-coding)
+ ;; mailto: and clipboard need UTF-8 and cannot deal with
+ ;; Content-Transfer-Encoding or Content-Type.
+ ;; FIXME: There is code duplication here with rmail.el.
+ (set-buffer-multibyte nil)
+ (cond
+ ((string= character-coding "base64")
+ (base64-decode-region (point-min) (point-max)))
+ ((string= character-coding "quoted-printable")
+ (mail-unquote-printable-region (point-min) (point-max)
+ nil nil t))
+ (t (error "Unsupported Content-Transfer-Encoding: %s"
+ character-coding)))
+ (decode-coding-region (point-min) (point-max) coding-system))
+ (mailclient-encode-string-as-url
+ (if mailclient-place-body-on-clipboard-flag
+ (progn
+ (clipboard-kill-ring-save (point-min) (point-max))
+ (concat
+ "*** E-Mail body has been placed on clipboard, "
+ "please paste it here! ***"))
+ (buffer-string))))))))))
(provide 'mailclient)
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el
index 659649b5d42..c56f4ce62dc 100644
--- a/lisp/mail/rmail.el
+++ b/lisp/mail/rmail.el
@@ -4580,6 +4580,9 @@ Argument MIME is non-nil if this is a mime message."
(current-buffer))))
(error nil))
+ ;; Decode any base64-encoded material in what we just decrypted.
+ (rmail-epa-decode armor-start after-end)
+
(list armor-start (- (point-max) after-end) mime
armor-end-regexp
(buffer-substring armor-start (- (point-max) after-end)))))
@@ -4622,9 +4625,6 @@ Argument MIME is non-nil if this is a mime message."
"> ")
(push (rmail-epa-decrypt-1 mime) decrypts))))
- ;; Decode any base64-encoded mime sections.
- (rmail-epa-decode)
-
(when (and decrypts (rmail-buffers-swapped-p))
(when (y-or-n-p "Replace the original message? ")
(when (eq major-mode 'rmail-mode)
@@ -4689,12 +4689,14 @@ Argument MIME is non-nil if this is a mime message."
(unless decrypts
(error "Nothing to decrypt")))))
-;; Decode all base64-encoded mime sections, so that this change
-;; is made in the Rmail file, not just in the viewing buffer.
-(defun rmail-epa-decode ()
+;; Decode all base64-encoded mime sections from BEG to (Z - BACK-FROM-END),
+;; so that we save the decoding permanently in the Rmail buffer
+;; if we permanently save the decryption.
+(defun rmail-epa-decode (beg back-from-end)
(save-excursion
- (goto-char (point-min))
- (while (re-search-forward "--------------[0-9a-zA-Z]+\n" nil t)
+ (goto-char beg)
+ (while (re-search-forward "--------------[0-9a-zA-Z]+\n"
+ (- (point-max) back-from-end) t)
;; The ending delimiter is a start delimiter if another section follows.
;; Otherwise it is an end delimiter, with -- affixed.
(let ((delim (concat (substring (match-string 0) 0 -1) "\\(\\|--\\)\n")))
diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el
index d0c0efec53b..6d61dcd8208 100644
--- a/lisp/mail/rmailout.el
+++ b/lisp/mail/rmailout.el
@@ -327,15 +327,14 @@ Replaces the From line with a \"Mail-from\" header. Adds \"Date\" and
"Date: \\2, \\4 \\3 \\9 \\5 "
;; The timezone could be matched by group 7 or group 10.
- ;; If neither of them matched, assume EST, since only
- ;; Easterners would be so sloppy.
+ ;; If neither matched, use "-0000" for an unknown zone.
;; It's a shame the substitution can't use "\\10".
(cond
((/= (match-beginning 7) (match-end 7)) "\\7")
((/= (match-beginning 10) (match-end 10))
(buffer-substring (match-beginning 10)
(match-end 10)))
- (t "EST"))
+ (t "-0000"))
"\n"))
;; Keep and reformat the sender if we don't
;; have a From: field.
diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el
index f0aa0c6ecf5..78688d170cc 100644
--- a/lisp/mail/smtpmail.el
+++ b/lisp/mail/smtpmail.el
@@ -1068,52 +1068,51 @@ Returns an error if the server cannot be contacted."
(defun smtpmail-deduce-address-list (smtpmail-text-buffer header-start header-end)
"Get address list suitable for smtp RCPT TO: <address>."
- (unwind-protect
- (with-current-buffer smtpmail-address-buffer
- (erase-buffer)
- (let ((case-fold-search t)
- (simple-address-list "")
- this-line
- this-line-end
- addr-regexp)
- (insert-buffer-substring smtpmail-text-buffer header-start header-end)
- (goto-char (point-min))
- ;; RESENT-* fields should stop processing of regular fields.
- (save-excursion
- (setq addr-regexp
- (if (re-search-forward "^Resent-\\(To\\|Cc\\|Bcc\\):"
- header-end t)
- "^Resent-\\(To\\|Cc\\|Bcc\\):"
- "^\\(To:\\|Cc:\\|Bcc:\\)")))
-
- (while (re-search-forward addr-regexp header-end t)
- (replace-match "")
- (setq this-line (match-beginning 0))
- (forward-line 1)
- ;; get any continuation lines
- (while (and (looking-at "^[ \t]+") (< (point) header-end))
- (forward-line 1))
- (setq this-line-end (point-marker))
- (setq simple-address-list
- (concat simple-address-list " "
- (mail-strip-quoted-names (buffer-substring this-line this-line-end)))))
- (erase-buffer)
- (insert " " simple-address-list "\n")
- (subst-char-in-region (point-min) (point-max) 10 ? t) ; newline --> blank
- (subst-char-in-region (point-min) (point-max) ?, ? t) ; comma --> blank
- (subst-char-in-region (point-min) (point-max) 9 ? t) ; tab --> blank
+ (with-current-buffer smtpmail-address-buffer
+ (erase-buffer)
+ (let ((case-fold-search t)
+ (simple-address-list "")
+ this-line
+ this-line-end
+ addr-regexp)
+ (insert-buffer-substring smtpmail-text-buffer header-start header-end)
+ (goto-char (point-min))
+ ;; RESENT-* fields should stop processing of regular fields.
+ (save-excursion
+ (setq addr-regexp
+ (if (re-search-forward "^Resent-\\(To\\|Cc\\|Bcc\\):"
+ header-end t)
+ "^Resent-\\(To\\|Cc\\|Bcc\\):"
+ "^\\(To:\\|Cc:\\|Bcc:\\)")))
+
+ (while (re-search-forward addr-regexp header-end t)
+ (replace-match "")
+ (setq this-line (match-beginning 0))
+ (forward-line 1)
+ ;; get any continuation lines
+ (while (and (looking-at "^[ \t]+") (< (point) header-end))
+ (forward-line 1))
+ (setq this-line-end (point-marker))
+ (setq simple-address-list
+ (concat simple-address-list " "
+ (mail-strip-quoted-names (buffer-substring this-line this-line-end)))))
+ (erase-buffer)
+ (insert " " simple-address-list "\n")
+ (subst-char-in-region (point-min) (point-max) 10 ? t) ; newline --> blank
+ (subst-char-in-region (point-min) (point-max) ?, ? t) ; comma --> blank
+ (subst-char-in-region (point-min) (point-max) 9 ? t) ; tab --> blank
- (goto-char (point-min))
- ;; tidiness in case hook is not robust when it looks at this
- (while (re-search-forward "[ \t]+" header-end t) (replace-match " "))
+ (goto-char (point-min))
+ ;; tidiness in case hook is not robust when it looks at this
+ (while (re-search-forward "[ \t]+" header-end t) (replace-match " "))
- (goto-char (point-min))
- (let (recipient-address-list)
- (while (re-search-forward " \\([^ ]+\\) " (point-max) t)
- (backward-char 1)
- (setq recipient-address-list (cons (buffer-substring (match-beginning 1) (match-end 1))
- recipient-address-list)))
- (setq smtpmail-recipient-address-list recipient-address-list))))))
+ (goto-char (point-min))
+ (let (recipient-address-list)
+ (while (re-search-forward " \\([^ ]+\\) " (point-max) t)
+ (backward-char 1)
+ (setq recipient-address-list (cons (buffer-substring (match-beginning 1) (match-end 1))
+ recipient-address-list)))
+ (setq smtpmail-recipient-address-list recipient-address-list)))))
(defun smtpmail-do-bcc (header-end)
"Delete [Resent-]Bcc: and their continuation lines from the header area.
diff --git a/lisp/mail/yenc.el b/lisp/mail/yenc.el
index de1e1ee283a..a836f5b71bd 100644
--- a/lisp/mail/yenc.el
+++ b/lisp/mail/yenc.el
@@ -111,8 +111,8 @@
(message "Warning: Size mismatch while decoding."))
(goto-char start)
(delete-region start end)
- (insert-buffer-substring work-buffer))))
- (and work-buffer (kill-buffer work-buffer))))))
+ (insert-buffer-substring work-buffer)))))
+ (and work-buffer (kill-buffer work-buffer)))))
;;;###autoload
(defun yenc-extract-filename ()
diff --git a/lisp/man.el b/lisp/man.el
index 286edf9314e..479bf9f9a3c 100644
--- a/lisp/man.el
+++ b/lisp/man.el
@@ -97,6 +97,14 @@
:group 'external
:group 'help)
+(defcustom Man-prefer-synchronous-call nil
+ "Whether to call the Un*x \"man\" program synchronously.
+When this is non-nil, call the \"man\" program synchronously
+(rather than asynchronously, which is the default behavior)."
+ :type 'boolean
+ :group 'man
+ :version "30.1")
+
(defcustom Man-filter-list nil
"Manpage cleaning filter command phrases.
This variable contains a list of the following form:
@@ -1118,7 +1126,8 @@ Return the buffer in which the manpage will appear."
"[cleaning...]")
'face 'mode-line-emphasis)))
(Man-start-calling
- (if (fboundp 'make-process)
+ (if (and (fboundp 'make-process)
+ (not Man-prefer-synchronous-call))
(let ((proc (start-process
manual-program buffer
(if (memq system-type '(cygwin windows-nt))
@@ -1262,21 +1271,21 @@ Same for the ANSI bold and normal escape sequences."
(progn
(goto-char (point-min))
(while (and (search-forward "__\b\b" nil t) (not (eobp)))
- (backward-delete-char 4)
+ (delete-char -4)
(put-text-property (point) (1+ (point))
'font-lock-face 'Man-underline))
(goto-char (point-min))
(while (search-forward "\b\b__" nil t)
- (backward-delete-char 4)
+ (delete-char -4)
(put-text-property (1- (point)) (point)
'font-lock-face 'Man-underline))))
(goto-char (point-min))
(while (and (search-forward "_\b" nil t) (not (eobp)))
- (backward-delete-char 2)
+ (delete-char -2)
(put-text-property (point) (1+ (point)) 'font-lock-face 'Man-underline))
(goto-char (point-min))
(while (search-forward "\b_" nil t)
- (backward-delete-char 2)
+ (delete-char -2)
(put-text-property (1- (point)) (point) 'font-lock-face 'Man-underline))
(goto-char (point-min))
(while (re-search-forward "\\(.\\)\\(\b+\\1\\)+" nil t)
@@ -1294,7 +1303,7 @@ Same for the ANSI bold and normal escape sequences."
;; condense it to a shorter line interspersed with ^H. Remove ^H with
;; their preceding chars (but don't put Man-overstrike). (Bug#5566)
(goto-char (point-min))
- (while (re-search-forward ".\b" nil t) (backward-delete-char 2))
+ (while (re-search-forward ".\b" nil t) (delete-char -2))
(goto-char (point-min))
;; Try to recognize common forms of cross references.
(Man-highlight-references)
@@ -1375,9 +1384,9 @@ script would have done them."
(if (or interactive (not Man-sed-script))
(progn
(goto-char (point-min))
- (while (search-forward "_\b" nil t) (backward-delete-char 2))
+ (while (search-forward "_\b" nil t) (delete-char -2))
(goto-char (point-min))
- (while (search-forward "\b_" nil t) (backward-delete-char 2))
+ (while (search-forward "\b_" nil t) (delete-char -2))
(goto-char (point-min))
(while (re-search-forward "\\(.\\)\\(\b\\1\\)+" nil t)
(replace-match "\\1"))
@@ -1392,7 +1401,7 @@ script would have done them."
;; condense it to a shorter line interspersed with ^H. Remove ^H with
;; their preceding chars (but don't put Man-overstrike). (Bug#5566)
(goto-char (point-min))
- (while (re-search-forward ".\b" nil t) (backward-delete-char 2))
+ (while (re-search-forward ".\b" nil t) (delete-char -2))
(Man-softhyphen-to-minus))
(defun Man-bgproc-filter (process string)
diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el
index 502036f78b7..307c7fcf9c7 100644
--- a/lisp/mh-e/mh-identity.el
+++ b/lisp/mh-e/mh-identity.el
@@ -141,7 +141,7 @@ See `mh-identity-list'."
(cons '("None")
(mapcar #'list (mapcar #'car mh-identity-list)))
nil t default nil default))
- (if (eq identity "None")
+ (if (equal identity "None")
nil
identity)))
diff --git a/lisp/mh-e/mh-print.el b/lisp/mh-e/mh-print.el
index 76116010b33..eeea94a69e5 100644
--- a/lisp/mh-e/mh-print.el
+++ b/lisp/mh-e/mh-print.el
@@ -79,8 +79,7 @@ commands \\[mh-ps-print-toggle-color] and
This is the function that actually does the work.
If FILE is nil, then the messages are spooled to the printer."
(mh-iterate-on-range msg range
- (unwind-protect
- (mh-ps-spool-msg msg))
+ (mh-ps-spool-msg msg)
(mh-notate msg mh-note-printed mh-cmd-note))
(ps-despool file))
diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el
index be91987d635..a3dc1b0cfbf 100644
--- a/lisp/minibuffer.el
+++ b/lisp/minibuffer.el
@@ -1107,11 +1107,7 @@ and DOC describes the way this style of completion works.")
The available styles are listed in `completion-styles-alist'.
Note that `completion-category-overrides' may override these
-styles for specific categories, such as files, buffers, etc.
-
-Note that Tramp host name completion (e.g., \"/ssh:ho<TAB>\")
-currently doesn't work if this list doesn't contain at least one
-of `basic', `emacs22' or `emacs21'."
+styles for specific categories, such as files, buffers, etc."
:type completion--styles-type
:version "23.1")
diff --git a/lisp/mouse.el b/lisp/mouse.el
index 60542e47448..3c30361ad7d 100644
--- a/lisp/mouse.el
+++ b/lisp/mouse.el
@@ -105,6 +105,15 @@ point at the click position."
:type 'boolean
:version "22.1")
+(defcustom mouse-1-double-click-prefer-symbols nil
+ "If non-nil, double-clicking Mouse-1 attempts to select the symbol at click.
+
+If nil, the default, double-clicking Mouse-1 on a word-constituent
+character will select only the word at click location, which could
+select fewer characters than the symbol at click."
+ :type 'boolean
+ :version "30.1")
+
(defcustom mouse-drag-and-drop-region-scroll-margin nil
"If non-nil, the scroll margin inside a window when dragging text.
If the mouse moves this many lines close to the top or bottom of
@@ -1801,10 +1810,17 @@ The region will be defined with mark and point."
;; Commands to handle xterm-style multiple clicks.
(defun mouse-skip-word (dir)
"Skip over word, over whitespace, or over identical punctuation.
+If `mouse-1-double-click-prefer-symbols' is non-nil, skip over symbol.
If DIR is positive skip forward; if negative, skip backward."
(let* ((char (following-char))
- (syntax (char-to-string (char-syntax char))))
- (cond ((string= syntax "w")
+ (syntax (char-to-string (char-syntax char)))
+ sym)
+ (cond ((and mouse-1-double-click-prefer-symbols
+ (setq sym (bounds-of-thing-at-point 'symbol)))
+ (goto-char (if (< dir 0)
+ (car sym)
+ (cdr sym))))
+ ((string= syntax "w")
;; Here, we can't use skip-syntax-forward/backward because
;; they don't pay attention to word-separating-categories,
;; and thus they will skip over a true word boundary. So,
diff --git a/lisp/mwheel.el b/lisp/mwheel.el
index 1be52d24e34..caa74159ecd 100644
--- a/lisp/mwheel.el
+++ b/lisp/mwheel.el
@@ -447,13 +447,12 @@ See also `text-scale-adjust'."
This invokes `global-text-scale-adjust', which see."
(interactive (list last-input-event))
(let ((button (mwheel-event-button event)))
- (unwind-protect
- (cond ((memq button (list mouse-wheel-down-event
- mouse-wheel-down-alternate-event))
- (global-text-scale-adjust 1))
- ((memq button (list mouse-wheel-up-event
- mouse-wheel-up-alternate-event))
- (global-text-scale-adjust -1))))))
+ (cond ((memq button (list mouse-wheel-down-event
+ mouse-wheel-down-alternate-event))
+ (global-text-scale-adjust 1))
+ ((memq button (list mouse-wheel-up-event
+ mouse-wheel-up-alternate-event))
+ (global-text-scale-adjust -1)))))
(defun mouse-wheel--add-binding (key fun)
"Bind mouse wheel button KEY to function FUN.
diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el
index 4bf87c14f31..e21367135d3 100644
--- a/lisp/net/ange-ftp.el
+++ b/lisp/net/ange-ftp.el
@@ -3534,7 +3534,8 @@ system TYPE.")
(setq file (expand-file-name file))
(let ((parsed (ange-ftp-ftp-name file)))
(if parsed
- (if (and delete-by-moving-to-trash trash)
+ (if (and delete-by-moving-to-trash trash
+ (not remote-file-name-inhibit-delete-by-moving-to-trash))
(move-file-to-trash file)
(let* ((host (nth 0 parsed))
(user (nth 1 parsed))
@@ -4129,7 +4130,7 @@ directory, so that Emacs will know its current contents."
(or (file-exists-p parent)
(ange-ftp-make-directory parent parents))))
(if (file-exists-p dir)
- (unless parents
+ (if parents t
(signal
'file-already-exists
(list "Cannot make directory: file already exists" dir)))
@@ -4158,7 +4159,8 @@ directory, so that Emacs will know its current contents."
(format "Could not make directory %s: %s"
dir
(cdr result))))
- (ange-ftp-add-file-entry dir t))
+ (ange-ftp-add-file-entry dir t)
+ nil)
(ange-ftp-real-make-directory dir)))))
(defun ange-ftp-delete-directory (dir &optional recursive trash)
@@ -4377,6 +4379,10 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
;; or return nil meaning don't make a backup.
(if ange-ftp-make-backup-files
(ange-ftp-real-find-backup-file-name fn)))
+
+(defun ange-ftp-file-user-uid ()
+ ;; Return "don't know" value.
+ -1)
;;; Define the handler for special file names
;;; that causes ange-ftp to be invoked.
@@ -4498,6 +4504,28 @@ NEWNAME should be the name to give the new compressed or uncompressed file.")
(put 'process-file 'ange-ftp 'ange-ftp-process-file)
(put 'start-file-process 'ange-ftp 'ignore)
(put 'shell-command 'ange-ftp 'ange-ftp-shell-command)
+
+;; Do not execute system information functions.
+(put 'file-system-info 'ange-ftp 'ignore)
+(put 'list-system-processes 'ange-ftp 'ignore)
+(put 'memory-info 'ange-ftp 'ignore)
+(put 'process-attributes 'ange-ftp 'ignore)
+
+;; There aren't ACLs. `file-selinux-context' shall return '(nil nil
+;; nil nil) if the file is nonexistent, so we let the default file
+;; name handler do the job.
+(put 'file-acl 'ange-ftp 'ignore)
+;; (put 'file-selinux-context 'ange-ftp 'ignore)
+(put 'set-file-acl 'ange-ftp 'ignore)
+(put 'set-file-selinux-context 'ange-ftp 'ignore)
+
+;; There aren't file notifications.
+(put 'file-notify-add-watch 'ange-ftp 'ignore)
+(put 'file-notify-rm-watch 'ange-ftp 'ignore)
+(put 'file-notify-valid-p 'ange-ftp 'ignore)
+
+;; Return the "don't know' value for remote user uid.
+(put 'file-user-uid 'ange-ftp 'ange-ftp-file-user-uid)
;;; Define ways of getting at unmodified Emacs primitives,
;;; turning off our handler.
diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el
index f35d11db152..fff860b05c3 100644
--- a/lisp/net/dbus.el
+++ b/lisp/net/dbus.el
@@ -371,7 +371,11 @@ object is returned instead of a list containing this single Lisp object.
(apply
#'dbus-message-internal dbus-message-type-method-call
bus service path interface method #'dbus-call-method-handler args))
- (result (cons :pending nil)))
+ (result (unless executing-kbd-macro (cons :pending nil))))
+
+ ;; While executing a keyboard macro, we run into an infinite loop,
+ ;; receiving the event -1. So we don't try to get the result.
+ ;; (Bug#62018)
;; Wait until `dbus-call-method-handler' has put the result into
;; `dbus-return-values-table'. If no timeout is given, use the
diff --git a/lisp/net/eudcb-mab.el b/lisp/net/eudcb-mab.el
index 08fc20f438a..805c742d9e0 100644
--- a/lisp/net/eudcb-mab.el
+++ b/lisp/net/eudcb-mab.el
@@ -86,7 +86,8 @@ RETURN-ATTRS is a list of attributes to return, defaulting to
((eq (car term) 'email)
(unless (string= (cdr term) mail)
(setq matched nil)))
- ((eq (car term) 'phone))))
+ ;; ((eq (car term) 'phone))
+ ))
(when matched
(setq result
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index eac47e592b2..11be20b68db 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -495,14 +495,17 @@ For more information, see Info node `(eww) Top'."
;;;###autoload (defalias 'browse-web 'eww)
;;;###autoload
-(defun eww-open-file (file)
- "Render FILE using EWW."
- (interactive "fFile: ")
+(defun eww-open-file (file &optional new-buffer)
+ "Render FILE using EWW.
+If NEW-BUFFER is non-nil (interactively, the prefix arg), use a
+new buffer instead of reusing the default EWW buffer."
+ (interactive "fFile: \nP")
(let ((url-allow-non-local-files t))
(eww (concat "file://"
(and (memq system-type '(windows-nt ms-dos))
"/")
- (expand-file-name file)))))
+ (expand-file-name file))
+ new-buffer)))
(defun eww--file-buffer (file)
(with-current-buffer (generate-new-buffer " *eww file*")
@@ -2505,10 +2508,10 @@ Otherwise, the restored buffer will contain a prompt to do so by using
(when (plist-get eww-data :url)
(cl-case eww-restore-desktop
((t auto) (eww (plist-get eww-data :url)))
- ((zerop (buffer-size))
- (let ((inhibit-read-only t))
- (insert (substitute-command-keys
- eww-restore-reload-prompt)))))))
+ ((nil) (when (zerop (buffer-size))
+ (let ((inhibit-read-only t))
+ (insert (substitute-command-keys
+ eww-restore-reload-prompt))))))))
;; .
(current-buffer)))
diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el
index f7361f38130..36b1654222a 100644
--- a/lisp/net/gnutls.el
+++ b/lisp/net/gnutls.el
@@ -262,6 +262,7 @@ For the meaning of the rest of the parameters, see `gnutls-boot-parameters'."
&key type hostname priority-string
trustfiles crlfiles keylist min-prime-bits
verify-flags verify-error verify-hostname-error
+ pass flags
&allow-other-keys)
"Return a keyword list of parameters suitable for passing to `gnutls-boot'.
@@ -278,6 +279,13 @@ default.
VERIFY-HOSTNAME-ERROR is a backwards compatibility option for
putting `:hostname' in VERIFY-ERROR.
+PASS is a string, the password of the key. It may also be nil,
+for a NULL password.
+
+FLAGS is a list of symbols corresponding to the equivalent ORed
+bitflag of the gnutls_pkcs_encrypt_flags_t enum of GnuTLS. The
+empty list corresponds to the bitflag with value 0.
+
When VERIFY-ERROR is t or a list containing `:trustfiles', an
error will be raised when the peer certificate verification fails
as per GnuTLS' gnutls_certificate_verify_peers2. Otherwise, only
@@ -355,6 +363,8 @@ defaults to GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT."
:keylist ,keylist
:verify-flags ,verify-flags
:verify-error ,verify-error
+ :pass ,pass
+ :flags ,flags
:callbacks nil)))
(defun gnutls--get-files (files)
diff --git a/lisp/net/mailcap.el b/lisp/net/mailcap.el
index 722e98be2fc..10c5a7744c1 100644
--- a/lisp/net/mailcap.el
+++ b/lisp/net/mailcap.el
@@ -510,7 +510,7 @@ If SOURCE, mark the entry with this as the source."
(skip-chars-forward "^;\n")
;; skip \;
(while (eq (char-before) ?\\)
- (backward-delete-char 1)
+ (delete-char -1)
(forward-char)
(skip-chars-forward "^;\n"))
(if (eq (or (char-after save-pos) 0) ?')
diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el
index 1afcd1db3c4..a68a6bf1a24 100644
--- a/lisp/net/newst-backend.el
+++ b/lisp/net/newst-backend.el
@@ -1623,7 +1623,7 @@ Sat, 07 Sep 2002 00:00:01 GMT
":\\([0-9]\\{2\\}\\)"
;; second
"\\(:\\([0-9]\\{2\\}\\)\\)?"
- ;; zone -- fixme
+ ;; zone
"\\(\\s-+\\("
"UT\\|GMT\\|EST\\|EDT\\|CST\\|CDT\\|MST\\|MDT\\|PST\\|PDT"
"\\|\\([-+]\\)\\([0-9]\\{2\\}\\)\\([0-9]\\{2\\}\\)"
@@ -1642,16 +1642,26 @@ Sat, 07 Sep 2002 00:00:01 GMT
(offset-hour (read (or (match-string 14 rfc822-string)
"0")))
(offset-minute (read (or (match-string 15 rfc822-string)
- "0")))
- ;;FIXME
- )
+ "0"))))
(when zone
(cond ((string= sign "+")
(setq hour (- hour offset-hour))
(setq minute (- minute offset-minute)))
((string= sign "-")
(setq hour (+ hour offset-hour))
- (setq minute (+ minute offset-minute)))))
+ (setq minute (+ minute offset-minute)))
+ ((or (string= zone "UT") (string= zone "GMT"))
+ nil)
+ ((string= zone "EDT")
+ (setq hour (+ hour 4)))
+ ((or (string= zone "EST") (string= zone "CDT"))
+ (setq hour (+ hour 5)))
+ ((or (string= zone "CST") (string= zone "MDT"))
+ (setq hour (+ hour 6)))
+ ((or (string= zone "MST") (string= zone "PDT"))
+ (setq hour (+ hour 7)))
+ ((string= zone "PST")
+ (setq hour (+ hour 8)))))
(condition-case error-data
(let ((i 1))
(dolist (m '("Jan" "Feb" "Mar" "Apr" "May" "Jun" "Jul" "Aug"
diff --git a/lisp/net/newst-ticker.el b/lisp/net/newst-ticker.el
index 5477ad946ba..064b72f02c2 100644
--- a/lisp/net/newst-ticker.el
+++ b/lisp/net/newst-ticker.el
@@ -44,8 +44,10 @@
"Last message that the newsticker displayed.")
(defvar newsticker--scrollable-text ""
"The text which is scrolled smoothly in the echo area.")
+(defvar newsticker--ticker-period-timer nil
+ "Timer for newsticker ticker display.")
(defvar newsticker--ticker-timer nil
- "Timer for newsticker ticker.")
+ "Timer for newsticker ticker scrolling.")
;;;###autoload
(defun newsticker-ticker-running-p ()
@@ -77,7 +79,7 @@ value effective."
(defcustom newsticker-ticker-interval
0.3
- "Time interval for displaying news items in the echo area (seconds).
+ "Time interval for scrolling news items in the echo area (seconds).
If equal or less than 0 no messages are shown in the echo area. For
smooth display (see `newsticker-scroll-smoothly') a value of 0.3 seems
reasonable. For non-smooth display a value of 10 is a good starting
@@ -86,6 +88,17 @@ point."
:set #'newsticker--set-customvar-ticker
:group 'newsticker-ticker)
+(defcustom newsticker-ticker-period
+ 0
+ "Time interval for displaying news items in the echo area (seconds).
+If equal or less than 0 messages are shown continuously. In order not
+to miss new items, a value of equal or less than the shortest feed
+retrieval interval (or the global `newsticker-retrieval-interval`) is
+recommended."
+ :type 'number
+ :set #'newsticker--set-customvar-ticker
+ :group 'newsticker-ticker)
+
(defcustom newsticker-scroll-smoothly
t
"Decides whether to flash or scroll news items.
@@ -129,9 +142,16 @@ If t the echo area will not show obsolete items. See also
"Called from the display timer.
This function calls a display function, according to the variable
`newsticker-scroll-smoothly'."
- (if newsticker-scroll-smoothly
- (newsticker--display-scroll)
- (newsticker--display-jump)))
+ (when (not newsticker--ticker-timer)
+ (if newsticker-scroll-smoothly
+ (setq newsticker--ticker-timer
+ (run-at-time 1
+ newsticker-ticker-interval
+ #'newsticker--display-scroll))
+ (setq newsticker--ticker-timer
+ (run-at-time nil
+ newsticker-ticker-interval
+ #'newsticker--display-jump)))))
(defsubst newsticker--echo-area-clean-p ()
"Check whether somebody is using the echo area / minibuffer.
@@ -149,7 +169,12 @@ there is another message displayed or the minibuffer is active."
(when (newsticker--echo-area-clean-p)
(setq newsticker--item-position (1+ newsticker--item-position))
(when (>= newsticker--item-position (length newsticker--item-list))
- (setq newsticker--item-position 0))
+ (setq newsticker--item-position 0)
+ (when (> newsticker-ticker-period 0)
+ (cancel-timer newsticker--ticker-timer)
+ (setq newsticker--ticker-timer nil)
+ (run-at-time newsticker-ticker-interval nil
+ (lambda () (message "")))))
(setq newsticker--prev-message
(nth newsticker--item-position newsticker--item-list))
(message "%s" newsticker--prev-message))))
@@ -192,7 +217,12 @@ there is another message displayed or the minibuffer is active."
(setq newsticker--prev-message subtext)
(setq newsticker--item-position (1+ i))
(when (>= newsticker--item-position l)
- (setq newsticker--item-position 0))))))
+ (setq newsticker--item-position 0)
+ (when (> newsticker-ticker-period 0)
+ (cancel-timer newsticker--ticker-timer)
+ (setq newsticker--ticker-timer nil)
+ (run-at-time newsticker-ticker-interval nil
+ (lambda () (message "")))))))))
;;;###autoload
(defun newsticker-start-ticker ()
@@ -200,19 +230,26 @@ there is another message displayed or the minibuffer is active."
Start display timer for the actual ticker if wanted and not
running already."
(interactive)
- (if (and (> newsticker-ticker-interval 0)
- (not newsticker--ticker-timer))
- (setq newsticker--ticker-timer
- (run-at-time newsticker-ticker-interval
- newsticker-ticker-interval
- #'newsticker--display-tick))))
+ (when (and (> newsticker-ticker-interval 0)
+ (not newsticker--ticker-period-timer)
+ (not newsticker--ticker-timer))
+ (if (> newsticker-ticker-period 0)
+ (setq newsticker--ticker-period-timer
+ (run-at-time nil
+ newsticker-ticker-period
+ #'newsticker--display-tick))
+ (newsticker--display-tick))))
(defun newsticker-stop-ticker ()
"Stop newsticker's ticker (but not the news retrieval)."
(interactive)
- (when newsticker--ticker-timer
- (cancel-timer newsticker--ticker-timer)
- (setq newsticker--ticker-timer nil)))
+ (progn
+ (when newsticker--ticker-timer
+ (cancel-timer newsticker--ticker-timer)
+ (setq newsticker--ticker-timer nil))
+ (when newsticker--ticker-period-timer
+ (cancel-timer newsticker--ticker-period-timer)
+ (setq newsticker--ticker-period-timer nil))))
;; ======================================================================
;;; Manipulation of ticker text
diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el
index 97a314eb8ab..5e4aa5e1198 100644
--- a/lisp/net/rcirc.el
+++ b/lisp/net/rcirc.el
@@ -1396,10 +1396,10 @@ inserted."
(interactive "P")
(rcirc-format "\^_" replace))
-(defun rcirc-format-strike-trough (replace)
- "Insert strike-trough formatting.
+(defun rcirc-format-strike-through (replace)
+ "Insert strike-through formatting.
If REPLACE is non-nil or a prefix argument is given, any prior
-formatting will be replaced before the strike-trough formatting
+formatting will be replaced before the strike-through formatting
is inserted."
(interactive "P")
(rcirc-format "\^^" replace))
@@ -1421,7 +1421,7 @@ inserted."
"C-c C-f C-b" #'rcirc-format-bold
"C-c C-f C-i" #'rcirc-format-italic
"C-c C-f C-u" #'rcirc-format-underline
- "C-c C-f C-s" #'rcirc-format-strike-trough
+ "C-c C-f C-s" #'rcirc-format-strike-through
"C-c C-f C-f" #'rcirc-format-fixed-width
"C-c C-f C-t" #'rcirc-format-fixed-width ;as in AucTeX
"C-c C-f C-d" #'rcirc-unformat
@@ -1807,7 +1807,7 @@ extracted."
"C-c C-f C-b" #'rcirc-format-bold
"C-c C-f C-i" #'rcirc-format-italic
"C-c C-f C-u" #'rcirc-format-underline
- "C-c C-f C-s" #'rcirc-format-strike-trough
+ "C-c C-f C-s" #'rcirc-format-strike-through
"C-c C-f C-f" #'rcirc-format-fixed-width
"C-c C-f C-t" #'rcirc-format-fixed-width ;as in AucTeX
"C-c C-f C-d" #'rcirc-unformat
@@ -2370,9 +2370,11 @@ This function does not alter the INPUT string."
"C-c C-@" #'rcirc-next-active-buffer
"C-c C-SPC" #'rcirc-next-active-buffer)
-(defcustom rcirc-track-abbrevate-flag t
+(define-obsolete-variable-alias 'rcirc-track-abbrevate-flag
+ 'rcirc-track-abbreviate-flag "30.1")
+(defcustom rcirc-track-abbreviate-flag t
"Non-nil means `rcirc-track-minor-mode' should abbreviate names."
- :version "28.1"
+ :version "30.1"
:type 'boolean)
;;;###autoload
@@ -2558,7 +2560,7 @@ activity. Only run if the buffer is not visible and
(funcall rcirc-channel-filter
(replace-regexp-in-string
"@.*?\\'" ""
- (or (and rcirc-track-abbrevate-flag
+ (or (and rcirc-track-abbreviate-flag
rcirc-short-buffer-name)
(buffer-name))))))
@@ -4001,6 +4003,9 @@ PROCESS is the process object for the current connection."
(string-equal (downcase (car setting)) parameter))
return (cadr setting)))
+(define-obsolete-function-alias 'rcirc-format-strike-trough
+ 'rcirc-format-strike-through "30.1")
+
(provide 'rcirc)
;;; rcirc.el ends here
diff --git a/lisp/net/sieve-manage.el b/lisp/net/sieve-manage.el
index 4866f788bff..5bee4f4c4ad 100644
--- a/lisp/net/sieve-manage.el
+++ b/lisp/net/sieve-manage.el
@@ -168,25 +168,19 @@ Valid states are `closed', `initial', `nonauth', and `auth'.")
;; Internal utility functions
(defun sieve-manage--append-to-log (&rest args)
- "Append ARGS to `sieve-manage-log' buffer.
+ "Append ARGS to sieve-manage log buffer.
ARGS can be a string or a list of strings.
-The buffer to use for logging is specifified via `sieve-manage-log'.
-If it is nil, logging is disabled.
-
-When the `sieve-manage-log' buffer doesn't exist, it gets created (and
-configured with some initial settings)."
+The buffer to use for logging is specifified via
+`sieve-manage-log'. If it is nil, logging is disabled."
(when sieve-manage-log
- (let* ((existing-log-buffer (get-buffer sieve-manage-log))
- (log-buffer (or existing-log-buffer
- (get-buffer-create sieve-manage-log))))
- (with-current-buffer log-buffer
- (unless existing-log-buffer
- ;; Do this only once, when creating the log buffer.
- (set-buffer-multibyte nil)
- (buffer-disable-undo))
- (goto-char (point-max))
- (apply #'insert args)))))
+ (with-current-buffer (or (get-buffer sieve-manage-log)
+ (with-current-buffer
+ (get-buffer-create sieve-manage-log)
+ (set-buffer-multibyte nil)
+ (buffer-disable-undo)))
+ (goto-char (point-max))
+ (apply #'insert args))))
(defun sieve-manage--message (format-string &rest args)
"Wrapper around `message' which also logs to sieve manage log.
diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el
index 73974f864b3..e4b8bbd9cb5 100644
--- a/lisp/net/soap-client.el
+++ b/lisp/net/soap-client.el
@@ -1317,7 +1317,7 @@ See also `soap-wsdl-resolve-references'."
"Validate VALUE against the basic type TYPE."
(let* ((kind (soap-xs-basic-type-kind type)))
(cl-case kind
- ((anyType Array byte[])
+ ((anyType Array byte\[\])
value)
(t
(let ((convert (get kind 'rng-xsd-convert)))
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index 4578f1fe073..14c63ba5834 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -55,7 +55,7 @@ It is used for TCP/IP devices."
(defconst tramp-adb-method "adb"
"When this method name is used, forward all calls to Android Debug Bridge.")
-(defcustom tramp-adb-prompt (rx bol (* (not (any "#$\n\r"))) (any "#$") blank)
+(defcustom tramp-adb-prompt (rx bol (* (not (any "#$\r\n"))) (any "#$") blank)
"Regexp used as prompt in almquist shell."
:type 'regexp
:version "28.1"
@@ -71,14 +71,14 @@ It is used for TCP/IP devices."
"Regexp for date time format in ls output."))
(defconst tramp-adb-ls-date-regexp
- (tramp-compat-rx
+ (rx
blank (regexp tramp-adb-ls-date-year-regexp)
blank (regexp tramp-adb-ls-date-time-regexp)
blank)
"Regexp for date format in ls output.")
(defconst tramp-adb-ls-toolbox-regexp
- (tramp-compat-rx
+ (rx
bol (* blank) (group (+ (any ".-" alpha))) ; \1 permissions
(? (+ blank) (+ digit)) ; links (Android 7/toybox)
(* blank) (group (+ (not blank))) ; \2 username
@@ -153,6 +153,7 @@ It is used for TCP/IP devices."
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-adb-handle-file-system-info)
(file-truename . tramp-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-adb-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -327,8 +328,7 @@ arguments to pass to the OPERATION."
(tramp-shell-quote-argument
(tramp-compat-file-name-concat localname ".."))))
(tramp-compat-replace-regexp-in-region
- (tramp-compat-rx (literal (tramp-compat-file-name-unquote
- (file-name-as-directory localname))))
+ (rx (literal (file-name-unquote (file-name-as-directory localname))))
"" (point-min))
(widen)))
(tramp-adb-sh-fix-ls-output)
@@ -366,14 +366,12 @@ Emacs dired can't find files."
(goto-char (point-min))
(while
(search-forward-regexp
- (tramp-compat-rx
- blank (group blank (regexp tramp-adb-ls-date-year-regexp) blank))
+ (rx blank (group blank (regexp tramp-adb-ls-date-year-regexp) blank))
nil t)
(replace-match "0\\1" "\\1" nil)
;; Insert missing "/".
(when (looking-at-p
- (tramp-compat-rx
- (regexp tramp-adb-ls-date-time-regexp) (+ blank) eol))
+ (rx (regexp tramp-adb-ls-date-time-regexp) (+ blank) eol))
(end-of-line)
(insert "/")))
;; Sort entries.
@@ -393,12 +391,10 @@ Emacs dired can't find files."
(defun tramp-adb-ls-output-time-less-p (a b)
"Sort \"ls\" output by time, descending."
(let (time-a time-b)
- ;; Once we can assume Emacs 27 or later, the two calls
- ;; (apply #'encode-time X) can be replaced by (encode-time X).
(string-match tramp-adb-ls-date-regexp a)
- (setq time-a (apply #'encode-time (parse-time-string (match-string 0 a))))
+ (setq time-a (encode-time (parse-time-string (match-string 0 a))))
(string-match tramp-adb-ls-date-regexp b)
- (setq time-b (apply #'encode-time (parse-time-string (match-string 0 b))))
+ (setq time-b (encode-time (parse-time-string (match-string 0 b))))
(time-less-p time-b time-a)))
(defun tramp-adb-ls-output-name-less-p (a b)
@@ -411,20 +407,11 @@ Emacs dired can't find files."
(defun tramp-adb-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (setq dir (expand-file-name dir))
- (with-parsed-tramp-file-name dir nil
- (when (and (null parents) (file-exists-p dir))
- (tramp-error v 'file-already-exists dir))
- (when parents
- (let ((par (expand-file-name ".." dir)))
- (unless (file-directory-p par)
- (make-directory par parents))))
- (tramp-flush-directory-properties v localname)
- (unless (or (tramp-adb-send-command-and-check
- v (format "mkdir -m %#o %s"
- (default-file-modes)
- (tramp-shell-quote-argument localname)))
- (and parents (file-directory-p dir)))
+ (tramp-skeleton-make-directory dir parents
+ (unless (tramp-adb-send-command-and-check
+ v (format "mkdir -m %#o %s"
+ (default-file-modes)
+ (tramp-shell-quote-argument localname)))
(tramp-error v 'file-error "Couldn't make directory %s" dir))))
(defun tramp-adb-handle-delete-directory (directory &optional recursive trash)
@@ -438,42 +425,39 @@ Emacs dired can't find files."
(defun tramp-adb-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
- (setq filename (expand-file-name filename))
- (with-parsed-tramp-file-name filename nil
- (tramp-flush-file-properties v localname)
- (if (and delete-by-moving-to-trash trash)
- (move-file-to-trash filename)
- (tramp-adb-barf-unless-okay
- v (format "rm %s" (tramp-shell-quote-argument localname))
- "Couldn't delete %s" filename))))
+ (tramp-skeleton-delete-file filename trash
+ (tramp-adb-barf-unless-okay
+ v (format "rm %s" (tramp-shell-quote-argument localname))
+ "Couldn't delete %s" filename)))
(defun tramp-adb-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
- (all-completions
- filename
- (with-parsed-tramp-file-name (expand-file-name directory) nil
- (with-tramp-file-property v localname "file-name-all-completions"
- (tramp-adb-send-command
- v (format "%s -a %s | cat"
- (tramp-adb-get-ls-command v)
- (tramp-shell-quote-argument localname)))
- (mapcar
- (lambda (f)
- (if (file-directory-p (expand-file-name f directory))
- (file-name-as-directory f)
- f))
- (with-current-buffer (tramp-get-buffer v)
- (delete-dups
- (append
- ;; On some file systems like "sdcard", "." and ".." are
- ;; not included. We fix this by `delete-dups'.
- '("." "..")
- (delq
- nil
- (mapcar
- (lambda (l)
- (and (not (string-match-p (rx bol (* blank) eol) l)) l))
- (split-string (buffer-string) "\n")))))))))))
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (tramp-adb-send-command
+ v (format "%s -a %s | cat"
+ (tramp-adb-get-ls-command v)
+ (tramp-shell-quote-argument localname)))
+ (mapcar
+ (lambda (f)
+ (if (file-directory-p (expand-file-name f directory))
+ (file-name-as-directory f)
+ f))
+ (with-current-buffer (tramp-get-buffer v)
+ (delete-dups
+ (append
+ ;; On some file systems like "sdcard", "." and ".." are
+ ;; not included. We fix this by `delete-dups'.
+ '("." "..")
+ (delq
+ nil
+ (mapcar
+ (lambda (l)
+ (and (not (string-match-p (rx bol (* blank) eol) l)) l))
+ (split-string (buffer-string) "\n"))))))))))))
(defun tramp-adb-handle-file-local-copy (filename)
"Like `file-local-copy' for Tramp files."
@@ -483,7 +467,7 @@ Emacs dired can't find files."
;; "adb pull ..." does not always return an error code.
(unless
(and (tramp-adb-execute-adb-command
- v "pull" (tramp-compat-file-name-unquote localname) tmpfile)
+ v "pull" (file-name-unquote localname) tmpfile)
(file-exists-p tmpfile))
(ignore-errors (delete-file tmpfile))
(tramp-error
@@ -504,16 +488,9 @@ Emacs dired can't find files."
(defun tramp-adb-handle-file-exists-p (filename)
"Like `file-exists-p' for Tramp files."
- ;; `file-exists-p' is used as predicate in file name completion.
- ;; We don't want to run it when `non-essential' is t, or there is
- ;; no connection process yet.
- (when (tramp-connectable-p filename)
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (with-tramp-file-property v localname "file-exists-p"
- (if (tramp-file-property-p v localname "file-attributes")
- (not (null (tramp-get-file-property v localname "file-attributes")))
- (tramp-adb-send-command-and-check
- v (format "test -e %s" (tramp-shell-quote-argument localname))))))))
+ (tramp-skeleton-file-exists-p filename
+ (tramp-adb-send-command-and-check
+ v (format "test -e %s" (tramp-shell-quote-argument localname)))))
(defun tramp-adb-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
@@ -563,8 +540,7 @@ Emacs dired can't find files."
"Moving tmp file `%s' to `%s'" tmpfile filename)
(unwind-protect
(unless (tramp-adb-execute-adb-command
- v "push" tmpfile
- (tramp-compat-file-name-unquote localname))
+ v "push" tmpfile (file-name-unquote localname))
(tramp-error v 'file-error "Cannot write: `%s'" filename))
(delete-file tmpfile)))))))
@@ -579,11 +555,7 @@ Emacs dired can't find files."
(defun tramp-adb-handle-set-file-times (filename &optional time flag)
"Like `set-file-times' for Tramp files."
(tramp-skeleton-set-file-modes-times-uid-gid filename
- (let ((time (if (or (null time)
- (tramp-compat-time-equal-p time tramp-time-doesnt-exist)
- (tramp-compat-time-equal-p time tramp-time-dont-know))
- (current-time)
- time))
+ (let ((time (tramp-defined-time time))
(nofollow (if (eq flag 'nofollow) "-h" ""))
(quoted-name (tramp-shell-quote-argument localname)))
;; Older versions of toybox 'touch' mishandle nanoseconds and/or
@@ -669,8 +641,8 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(tramp-flush-file-properties v localname)
(unless (tramp-adb-execute-adb-command
v "push"
- (tramp-compat-file-name-unquote filename)
- (tramp-compat-file-name-unquote localname))
+ (file-name-unquote filename)
+ (file-name-unquote localname))
(tramp-error
v 'file-error
"Cannot copy `%s' `%s'" filename newname)))))))))
@@ -736,11 +708,6 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
"Strings to return by `process-file' in case of signals."
(with-tramp-connection-property vec "signal-strings"
(let ((default-directory (tramp-make-tramp-file-name vec 'noloc))
- ;; `shell-file-name' and `shell-command-switch' are needed
- ;; for Emacs < 27.1, which doesn't support connection-local
- ;; variables in `shell-command'.
- (shell-file-name "/system/bin/sh")
- (shell-command-switch "-c")
process-file-return-signal-string signals result)
(dotimes (i 128) (push (format "Signal %d" i) result))
(setq result (reverse result)
@@ -773,7 +740,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; Determine input.
(if (null infile)
(setq input (tramp-get-remote-null-device v))
- (setq infile (tramp-compat-file-name-unquote (expand-file-name infile)))
+ (setq infile (file-name-unquote (expand-file-name infile)))
(if (tramp-equal-remote default-directory infile)
;; INFILE is on the same remote host.
(setq input (tramp-unquote-file-local-name infile))
@@ -949,7 +916,7 @@ implementation will be used."
(i 0)
p)
- (when (string-match-p (tramp-compat-rx multibyte) command)
+ (when (string-match-p (rx multibyte) command)
(tramp-error
v 'file-error "Cannot apply multi-byte command `%s'" command))
@@ -1023,7 +990,7 @@ implementation will be used."
(progn
(goto-char (point-min))
(not (search-forward "\n" nil t)))
- (tramp-accept-process-output p 0))
+ (tramp-accept-process-output p))
(delete-region (point-min) (point)))
;; Provide error buffer. This shows only
;; initial error messages; messages
@@ -1032,17 +999,19 @@ implementation will be used."
;; file will exist until the process is
;; deleted.
(when (bufferp stderr)
- (with-current-buffer stderr
- (insert-file-contents-literally
- remote-tmpstderr 'visit))
+ (ignore-errors
+ (with-current-buffer stderr
+ (insert-file-contents-literally
+ remote-tmpstderr 'visit)))
;; Delete tmpstderr file.
(add-function
:after (process-sentinel p)
(lambda (_proc _msg)
- (with-current-buffer stderr
- (insert-file-contents-literally
- remote-tmpstderr 'visit nil nil 'replace))
- (delete-file remote-tmpstderr))))
+ (ignore-errors
+ (with-current-buffer stderr
+ (insert-file-contents-literally
+ remote-tmpstderr 'visit nil nil 'replace))
+ (delete-file remote-tmpstderr)))))
;; Return process.
p))))
@@ -1106,11 +1075,12 @@ E.g. a host name \"192.168.1.1#5555\" returns \"192.168.1.1:5555\"
(format "%s:%s" host port))
;; An empty host name shall be mapped as well, when there
;; is exactly one entry in `devices'.
- ((and (zerop (length host)) (= (length devices) 1))
+ ((and (tramp-string-empty-or-nil-p host)
+ (tramp-compat-length= devices 1))
(car devices))
;; Try to connect device.
((and tramp-adb-connect-if-not-connected
- (not (zerop (length host)))
+ (tramp-compat-length> host 0)
(tramp-adb-execute-adb-command
vec "connect"
(tramp-compat-string-replace
@@ -1127,7 +1097,7 @@ E.g. a host name \"192.168.1.1#5555\" returns \"192.168.1.1:5555\"
"Execute an adb command.
Insert the result into the connection buffer. Return nil on
error and non-nil on success."
- (when (and (> (length (tramp-file-name-host vec)) 0)
+ (when (and (tramp-compat-length> (tramp-file-name-host vec) 0)
;; The -s switch is only available for ADB device commands.
(not (member (car args) '("connect" "disconnect"))))
(setq args (append (list "-s" (tramp-adb-get-device vec)) args)))
@@ -1141,7 +1111,7 @@ error and non-nil on success."
(defun tramp-adb-send-command (vec command &optional neveropen nooutput)
"Send the COMMAND to connection VEC."
- (if (string-match-p (tramp-compat-rx multibyte) command)
+ (if (string-match-p (rx multibyte) command)
;; Multibyte codepoints with four bytes are not supported at
;; least by toybox.
@@ -1165,7 +1135,7 @@ error and non-nil on success."
;; We can't use stty to disable echo of command. stty is said
;; to be added to toybox 0.7.6. busybox shall have it, but this
;; isn't used any longer for Android.
- (delete-matching-lines (tramp-compat-rx bol (literal command) eol))
+ (delete-matching-lines (rx bol (literal command) eol))
;; When the local machine is W32, there are still trailing ^M.
;; There must be a better solution by setting the correct coding
;; system, but this requires changes in core Tramp.
@@ -1254,7 +1224,7 @@ connection if a previous connection has died for some reason."
(unless (process-live-p p)
(save-match-data
(when (and p (processp p)) (delete-process p))
- (if (zerop (length device))
+ (if (tramp-string-empty-or-nil-p device)
(tramp-error vec 'file-error "Device %s not connected" host))
(with-tramp-progress-reporter vec 3 "Opening adb shell connection"
(let* ((coding-system-for-read 'utf-8-dos) ; Is this correct?
@@ -1279,7 +1249,7 @@ connection if a previous connection has died for some reason."
;; Set sentinel and query flag. Initialize variables.
(set-process-sentinel p #'tramp-process-sentinel)
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(process-put p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
@@ -1288,7 +1258,7 @@ connection if a previous connection has died for some reason."
;; Change prompt.
(tramp-set-connection-property
- p "prompt" (tramp-compat-rx "///" (literal prompt) "#$"))
+ p "prompt" (rx "///" (literal prompt) "#$"))
(tramp-adb-send-command
vec (format "PS1=\"///\"\"%s\"\"#$\"" prompt))
diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el
index 36992014e13..c2175612fa8 100644
--- a/lisp/net/tramp-archive.el
+++ b/lisp/net/tramp-archive.el
@@ -110,12 +110,7 @@
;;; Code:
(eval-when-compile (require 'cl-lib))
-;; Sometimes, compilation fails with "Variable binding depth exceeds
-;; max-specpdl-size". Shall be fixed in Emacs 27.
-(with-no-warnings ;; max-specpdl-size
- (eval-and-compile
- (let ((max-specpdl-size (* 2 max-specpdl-size)))
- (require 'tramp-gvfs))))
+(require 'tramp-gvfs)
(autoload 'dired-uncache "dired")
(autoload 'url-tramp-convert-url-to-tramp "url-tramp")
@@ -183,20 +178,9 @@ It must be supported by libarchive(3).")
;; The definition of `tramp-archive-file-name-regexp' contains calls
;; to `regexp-opt', which cannot be autoloaded while loading
;; loaddefs.el. So we use a macro, which is evaluated only when needed.
-;; Emacs 26 and earlier cannot use the autoload form
-;; `tramp-compat-rx'. So we refrain from using `rx'.
;;;###autoload
(progn (defmacro tramp-archive-autoload-file-name-regexp ()
"Regular expression matching archive file names."
- (if (<= emacs-major-version 26)
- '(concat
- "\\`" "\\(" ".+" "\\."
- ;; Default suffixes ...
- (regexp-opt tramp-archive-suffixes)
- ;; ... with compression.
- "\\(?:" "\\." (regexp-opt tramp-archive-compression-suffixes) "\\)*"
- "\\)" ;; \1
- "\\(" "/" ".*" "\\)" "\\'") ;; \2
`(rx
bos
;; This group is used in `tramp-archive-file-name-archive'.
@@ -208,13 +192,10 @@ It must be supported by libarchive(3).")
(? "." (| ,@tramp-archive-compression-suffixes)))
;; This group is used in `tramp-archive-file-name-localname'.
(group "/" (* nonl))
- eos))))
+ eos)))
(put #'tramp-archive-autoload-file-name-regexp 'tramp-autoload t)
-;; In older Emacs (prior 27.1), `tramp-archive-autoload-file-name-regexp'
-;; is not autoloaded. So we cannot expect it to be known in
-;; tramp-loaddefs.el. But it exists, when tramp-archive.el is loaded.
;; We must wrap it into `eval-when-compile'. Otherwise, there could
;; be an "Eager macro-expansion failure" when unloading/reloading Tramp.
;;;###tramp-autoload
@@ -222,11 +203,6 @@ It must be supported by libarchive(3).")
(eval-when-compile (ignore-errors (tramp-archive-autoload-file-name-regexp)))
"Regular expression matching archive file names.")
-;; The value above is nil for Emacs 26. Set it now.
-(if (<= emacs-major-version 26)
- (setq tramp-archive-file-name-regexp
- (ignore-errors (tramp-archive-autoload-file-name-regexp))))
-
;;;###tramp-autoload
(defconst tramp-archive-method "archive"
"Method name for archives in GVFS.")
@@ -289,6 +265,7 @@ It must be supported by libarchive(3).")
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-archive-handle-file-system-info)
(file-truename . tramp-archive-handle-file-truename)
+ (file-user-uid . tramp-archive-handle-file-user-uid)
(file-writable-p . ignore)
(find-backup-file-name . ignore)
;; `get-file-buffer' performed by default handler.
@@ -299,7 +276,7 @@ It must be supported by libarchive(3).")
(lock-file . ignore)
(make-auto-save-file-name . ignore)
(make-directory . tramp-archive-handle-not-implemented)
- (make-directory-internal . tramp-archive-handle-not-implemented)
+ (make-directory-internal . ignore)
(make-lock-file-name . ignore)
(make-nearby-temp-file . tramp-handle-make-nearby-temp-file)
(make-process . ignore)
@@ -360,13 +337,9 @@ arguments to pass to the OPERATION."
(tramp-register-file-name-handlers)
(tramp-archive-run-real-handler operation args))
- (with-no-warnings ;; max-specpdl-size
(let* ((filename (apply #'tramp-archive-file-name-for-operation
operation args))
- (archive (tramp-archive-file-name-archive filename))
- ;; Sometimes, it fails with "Variable binding depth exceeds
- ;; max-specpdl-size". Shall be fixed in Emacs 27.
- (max-specpdl-size (* 2 max-specpdl-size)))
+ (archive (tramp-archive-file-name-archive filename)))
;; `filename' could be a quoted file name. Or the file
;; archive could be a directory, see Bug#30293.
@@ -394,7 +367,7 @@ arguments to pass to the OPERATION."
(setq args (cons operation args)))
(if fn
(save-match-data (apply (cdr fn) args))
- (tramp-archive-run-real-handler operation args))))))))
+ (tramp-archive-run-real-handler operation args)))))))
;;;###autoload
(progn (defun tramp-archive-autoload-file-name-handler (operation &rest args)
@@ -432,10 +405,6 @@ arguments to pass to the OPERATION."
(remove-hook
'after-init-hook #'tramp-register-archive-autoload-file-name-handler))))
-;; In older Emacsen (prior 27.1), the autoload above does not exist.
-;; So we call it again; it doesn't hurt.
-(tramp-register-archive-autoload-file-name-handler)
-
;; Mark `operations' the handler is responsible for.
(put #'tramp-archive-file-name-handler 'operations
(mapcar #'car tramp-archive-file-name-handler-alist))
@@ -458,7 +427,7 @@ arguments to pass to the OPERATION."
"Return t if NAME is a string with archive file name syntax."
(and (stringp name)
;; `tramp-archive-file-name-regexp' does not suppress quoted file names.
- (not (tramp-compat-file-name-quoted-p name t))
+ (not (file-name-quoted-p name t))
;; We cannot use `string-match-p', the matches are used.
(string-match tramp-archive-file-name-regexp name)
t))
@@ -511,7 +480,6 @@ name is kept in slot `hop'"
;; http://...
((and url-handler-mode
- tramp-compat-use-url-tramp-p
(string-match-p url-handler-regexp archive)
(string-match-p
"https?" (url-type (url-generic-parse-url archive))))
@@ -631,7 +599,7 @@ offered."
(defun tramp-archive-handle-directory-file-name (directory)
"Like `directory-file-name' for file archives."
(with-parsed-tramp-archive-file-name directory nil
- (if (and (not (zerop (length localname)))
+ (if (and (tramp-compat-length> localname 0)
(eq (aref localname (1- (length localname))) ?/)
(not (string= localname "/")))
(substring directory 0 -1)
@@ -643,23 +611,22 @@ offered."
(defun tramp-archive-handle-directory-files
(directory &optional full match nosort count)
"Like `directory-files' for Tramp files."
- (unless (file-exists-p directory)
- (tramp-error (tramp-dissect-file-name directory) 'file-missing directory))
- (when (file-directory-p directory)
- (setq directory (file-name-as-directory (expand-file-name directory)))
- (let ((temp (nreverse (file-name-all-completions "" directory)))
- result item)
-
- (while temp
- (setq item (directory-file-name (pop temp)))
- (when (or (null match) (string-match-p match item))
- (push (if full (concat directory item) item)
- result)))
- (unless nosort
- (setq result (sort result #'string<)))
- (when (and (natnump count) (> count 0))
- (setq result (tramp-compat-ntake count result)))
- result)))
+ (tramp-barf-if-file-missing (tramp-dissect-file-name directory) directory
+ (when (file-directory-p directory)
+ (setq directory (file-name-as-directory (expand-file-name directory)))
+ (let ((temp (nreverse (file-name-all-completions "" directory)))
+ result item)
+
+ (while temp
+ (setq item (directory-file-name (pop temp)))
+ (when (or (null match) (string-match-p match item))
+ (push (if full (concat directory item) item)
+ result)))
+ (unless nosort
+ (setq result (sort result #'string<)))
+ (when (and (natnump count) (> count 0))
+ (setq result (tramp-compat-ntake count result)))
+ result))))
(defun tramp-archive-handle-dired-uncache (dir)
"Like `dired-uncache' for file archives."
@@ -683,7 +650,9 @@ offered."
(defun tramp-archive-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for file archives."
- (file-name-all-completions filename (tramp-archive-gvfs-file-name directory)))
+ (ignore-error file-missing
+ (file-name-all-completions
+ filename (tramp-archive-gvfs-file-name directory))))
(defun tramp-archive-handle-file-readable-p (filename)
"Like `file-readable-p' for file archives."
@@ -702,6 +671,13 @@ offered."
(setq local (expand-file-name local (file-name-directory localname))))
(concat (file-truename archive) local))))
+(defun tramp-archive-handle-file-user-uid ()
+ "Like `user-uid' for file archives."
+ (with-parsed-tramp-archive-file-name default-directory nil
+ (let ((default-directory (file-name-directory archive)))
+ ;; `file-user-uid' exists since Emacs 30.1.
+ (tramp-compat-funcall 'file-user-uid))))
+
(defun tramp-archive-handle-insert-directory
(filename switches &optional wildcard full-directory-p)
"Like `insert-directory' for file archives."
diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el
index 09e43a99039..c5864e7fa5e 100644
--- a/lisp/net/tramp-cache.el
+++ b/lisp/net/tramp-cache.el
@@ -267,8 +267,7 @@ Return VALUE."
(defun tramp-flush-directory-properties (key directory)
"Remove all properties of DIRECTORY in the cache context of KEY.
Remove also properties of all files in subdirectories."
- (let* ((directory
- (directory-file-name (tramp-compat-file-name-unquote directory)))
+ (let* ((directory (directory-file-name (file-name-unquote directory)))
(truename (tramp-get-file-property key directory "file-truename")))
(tramp-message key 8 "%s" directory)
(dolist (key (hash-table-keys tramp-cache-data))
@@ -677,4 +676,8 @@ for all methods. Resulting data are derived from connection history."
(provide 'tramp-cache)
+;;; TODO:
+;;
+;; * Use multisession.el, starting with Emacs 29.1.
+
;;; tramp-cache.el ends here
diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el
index bf7d45d2a5a..1a9d8003530 100644
--- a/lisp/net/tramp-cmds.el
+++ b/lisp/net/tramp-cmds.el
@@ -123,11 +123,11 @@ When called interactively, a Tramp connection has to be selected."
;; Delete processes.
(dolist (key (hash-table-keys tramp-cache-data))
(when (and (processp key)
- (tramp-file-name-equal-p (process-get key 'vector) vec)
+ (tramp-file-name-equal-p (process-get key 'tramp-vector) vec)
(or (not keep-processes)
(eq key (tramp-get-process vec))))
(tramp-flush-connection-properties key)
- (delete-process key)))
+ (ignore-errors (delete-process key))))
;; Remove buffers.
(dolist
@@ -319,7 +319,7 @@ The remote connection identified by SOURCE is flushed by
(read-file-name-function #'read-file-name-default)
source target)
(if (null connections)
- (tramp-user-error nil "There are no remote connections.")
+ (tramp-user-error nil "There are no remote connections")
(setq source
;; Likely, the source remote connection is broken. So we
;; shall avoid any action on it.
@@ -359,7 +359,7 @@ The remote connection identified by SOURCE is flushed by
(dir (tramp-rename-read-file-name-dir default))
(init (tramp-rename-read-file-name-init default))
(tramp-ignored-file-name-regexp
- (tramp-compat-rx (literal (file-remote-p source)))))
+ (rx (literal (file-remote-p source)))))
(read-file-name-default
"Enter new Tramp connection: "
dir default 'confirm init #'file-directory-p)))))
@@ -367,15 +367,15 @@ The remote connection identified by SOURCE is flushed by
(list source target)))
(unless (tramp-tramp-file-p source)
- (tramp-user-error nil "Source %s must be remote." source))
+ (tramp-user-error nil "Source %s must be remote" source))
(when (null target)
(or (setq target (tramp-default-rename-file source))
(tramp-user-error
nil
(concat "There is no target specified. "
- "Check `tramp-default-rename-alist' for a proper entry."))))
+ "Check `tramp-default-rename-alist' for a proper entry"))))
(when (tramp-equal-remote source target)
- (tramp-user-error nil "Source and target must have different remote."))
+ (tramp-user-error nil "Source and target must have different remote"))
;; Append local file name if none is specified.
(when (string-equal (file-remote-p target) target)
@@ -461,7 +461,7 @@ For details, see `tramp-rename-files'."
nil
(substitute-command-keys
(concat "Current buffer is not remote. "
- "Consider `\\[tramp-rename-files]' instead.")))
+ "Consider `\\[tramp-rename-files]' instead")))
(setq target
(when (null current-prefix-arg)
;; The source remote connection shall not trigger any action.
@@ -470,7 +470,7 @@ For details, see `tramp-rename-files'."
(dir (tramp-rename-read-file-name-dir default))
(init (tramp-rename-read-file-name-init default))
(tramp-ignored-file-name-regexp
- (tramp-compat-rx (literal (file-remote-p source)))))
+ (rx (literal (file-remote-p source)))))
(read-file-name-default
(format "Change Tramp connection `%s': " source)
dir default 'confirm init #'file-directory-p)))))
@@ -625,7 +625,7 @@ buffer in your bug report.
(unless (hash-table-p val)
;; Remove string quotation.
(when (looking-at
- (tramp-compat-rx
+ (rx
bol (group (* anychar)) "\"" ;; \1 "
(group "(base64-decode-string ") "\\" ;; \2 \
(group "\"" (* anychar)) "\\" ;; \3 \
diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el
index f176476a73a..420d6cadb9c 100644
--- a/lisp/net/tramp-compat.el
+++ b/lisp/net/tramp-compat.el
@@ -23,9 +23,9 @@
;;; Commentary:
-;; Tramp's main Emacs version for development is Emacs 29. This
-;; package provides compatibility functions for Emacs 26, Emacs 27 and
-;; Emacs 28.
+;; Tramp's main Emacs version for development is Emacs 30. This
+;; package provides compatibility functions for Emacs 27, Emacs 28 and
+;; Emacs 29.
;;; Code:
@@ -36,9 +36,7 @@
(require 'shell)
(require 'subr-x)
-(declare-function tramp-compat-rx "tramp")
(declare-function tramp-error "tramp")
-(declare-function tramp-file-name-handler "tramp")
(declare-function tramp-tramp-file-p "tramp")
(defvar tramp-temp-name-prefix)
@@ -85,153 +83,6 @@ Add the extension of F, if existing."
tramp-temp-name-prefix tramp-compat-temporary-file-directory)
dir-flag (file-name-extension f t)))
-;; `file-name-quoted-p', `file-name-quote' and `file-name-unquote' got
-;; a second argument in Emacs 27.1.
-;;;###tramp-autoload
-(defalias 'tramp-compat-file-name-quoted-p
- (if (equal (func-arity #'file-name-quoted-p) '(1 . 2))
- #'file-name-quoted-p
- (lambda (name &optional top)
- "Whether NAME is quoted with prefix \"/:\".
-If NAME is a remote file name and TOP is nil, check the local part of NAME."
- (let ((file-name-handler-alist (unless top file-name-handler-alist)))
- (string-prefix-p "/:" (file-local-name name))))))
-
-(defalias 'tramp-compat-file-name-quote
- (if (equal (func-arity #'file-name-quote) '(1 . 2))
- #'file-name-quote
- (lambda (name &optional top)
- "Add the quotation prefix \"/:\" to file NAME.
-If NAME is a remote file name and TOP is nil, the local part of NAME is quoted."
- (let ((file-name-handler-alist (unless top file-name-handler-alist)))
- (if (tramp-compat-file-name-quoted-p name top)
- name
- (concat (file-remote-p name) "/:" (file-local-name name)))))))
-
-(defalias 'tramp-compat-file-name-unquote
- (if (equal (func-arity #'file-name-unquote) '(1 . 2))
- #'file-name-unquote
- (lambda (name &optional top)
- "Remove quotation prefix \"/:\" from file NAME.
-If NAME is a remote file name and TOP is nil, the local part of
-NAME is unquoted."
- (let* ((file-name-handler-alist (unless top file-name-handler-alist))
- (localname (file-local-name name)))
- (when (tramp-compat-file-name-quoted-p localname top)
- (setq
- localname (if (= (length localname) 2) "/" (substring localname 2))))
- (concat (file-remote-p name) localname)))))
-
-;; `tramp-syntax' has changed its meaning in Emacs 26.1. We still
-;; support old settings.
-(defsubst tramp-compat-tramp-syntax ()
- "Return proper value of `tramp-syntax'."
- (defvar tramp-syntax)
- (cond ((eq tramp-syntax 'ftp) 'default)
- ((eq tramp-syntax 'sep) 'separate)
- (t tramp-syntax)))
-
-;; The signature of `tramp-make-tramp-file-name' has been changed.
-;; Therefore, we cannot use `url-tramp-convert-url-to-tramp' prior
-;; Emacs 26.1. We use `temporary-file-directory' as indicator.
-(defconst tramp-compat-use-url-tramp-p (fboundp 'temporary-file-directory)
- "Whether to use url-tramp.el.")
-
-;; `exec-path' is new in Emacs 27.1.
-(defalias 'tramp-compat-exec-path
- (if (fboundp 'exec-path)
- #'exec-path
- (lambda ()
- "List of directories to search programs to run in remote subprocesses."
- (if (tramp-tramp-file-p default-directory)
- (tramp-file-name-handler 'exec-path)
- exec-path))))
-
-;; `time-equal-p' has appeared in Emacs 27.1.
-(defalias 'tramp-compat-time-equal-p
- (if (fboundp 'time-equal-p)
- #'time-equal-p
- (lambda (t1 t2)
- "Return non-nil if time value T1 is equal to time value T2.
-A nil value for either argument stands for the current time."
- (equal (or t1 (current-time)) (or t2 (current-time))))))
-
-;; `flatten-tree' has appeared in Emacs 27.1.
-(defalias 'tramp-compat-flatten-tree
- (if (fboundp 'flatten-tree)
- #'flatten-tree
- (lambda (tree)
- "Take TREE and \"flatten\" it."
- (let (elems)
- (setq tree (list tree))
- (while (let ((elem (pop tree)))
- (cond ((consp elem)
- (setq tree (cons (car elem) (cons (cdr elem) tree))))
- (elem
- (push elem elems)))
- tree))
- (nreverse elems)))))
-
-;; `progress-reporter-update' got argument SUFFIX in Emacs 27.1.
-(defalias 'tramp-compat-progress-reporter-update
- (if (equal (func-arity #'progress-reporter-update) '(1 . 3))
- #'progress-reporter-update
- (lambda (reporter &optional value _suffix)
- (progress-reporter-update reporter value))))
-
-;; `ignore-error' is new in Emacs 27.1.
-(defmacro tramp-compat-ignore-error (condition &rest body)
- "Execute BODY; if the error CONDITION occurs, return nil.
-Otherwise, return result of last form in BODY.
-
-CONDITION can also be a list of error conditions."
- (declare (debug t) (indent 1))
- `(condition-case nil (progn ,@body) (,condition nil)))
-
-;; `rx' in Emacs 26 doesn't know the `literal', `anychar' and
-;; `multibyte' constructs. The `not' construct requires an `any'
-;; construct as argument. The `regexp' construct requires a literal
-;; string.
-(defvar tramp-compat-rx--runtime-params)
-
-(defun tramp-compat-rx--transform-items (items)
- (mapcar #'tramp-compat-rx--transform-item items))
-
-;; There is an error in Emacs 26. `(rx "a" (? ""))' => "a?".
-;; We must protect the string in regexp and literal, therefore.
-(defun tramp-compat-rx--transform-item (item)
- (pcase item
- ('anychar 'anything)
- ('multibyte 'nonascii)
- (`(not ,expr)
- (if (consp expr) item (list 'not (list 'any expr))))
- (`(regexp ,expr)
- (setq tramp-compat-rx--runtime-params t)
- `(regexp ,(list '\, `(concat "\\(?:" ,expr "\\)"))))
- (`(literal ,expr)
- (setq tramp-compat-rx--runtime-params t)
- `(regexp ,(list '\, `(concat "\\(?:" (regexp-quote ,expr) "\\)"))))
- (`(eval . ,_) item)
- (`(,head . ,rest) (cons head (tramp-compat-rx--transform-items rest)))
- (_ item)))
-
-(defun tramp-compat-rx--transform (items)
- (let* ((tramp-compat-rx--runtime-params nil)
- (new-rx (cons ': (tramp-compat-rx--transform-items items))))
- (if tramp-compat-rx--runtime-params
- `(rx-to-string ,(list '\` new-rx) t)
- (rx-to-string new-rx t))))
-
-(if (ignore-errors (rx-to-string '(literal "a"))) ;; Emacs 27+.
- (defalias 'tramp-compat-rx #'rx)
- (defmacro tramp-compat-rx (&rest items)
- (tramp-compat-rx--transform items)))
-
-;; This is needed for compilation in the Emacs source tree.
-;;;###autoload (defalias 'tramp-compat-rx #'rx)
-
-(put #'tramp-compat-rx 'tramp-autoload t)
-
;; `file-modes', `set-file-modes' and `set-file-times' got argument
;; FLAG in Emacs 28.1.
(defalias 'tramp-compat-file-modes
@@ -326,6 +177,48 @@ CONDITION can also be a list of error conditions."
(car components))
(cdr components)))))))
+;; Function `replace-regexp-in-region' is new in Emacs 28.1.
+(defalias 'tramp-compat-replace-regexp-in-region
+ (if (fboundp 'replace-regexp-in-region)
+ #'replace-regexp-in-region
+ (lambda (regexp replacement &optional start end)
+ (if start
+ (when (< start (point-min))
+ (error "Start before start of buffer"))
+ (setq start (point)))
+ (if end
+ (when (> end (point-max))
+ (error "End after end of buffer"))
+ (setq end (point-max)))
+ (save-excursion
+ (let ((matches 0)
+ (case-fold-search nil))
+ (goto-char start)
+ (while (re-search-forward regexp end t)
+ (replace-match replacement t)
+ (setq matches (1+ matches)))
+ (and (not (zerop matches))
+ matches))))))
+
+;; `length<', `length>' and `length=' are added to Emacs 28.1.
+(defalias 'tramp-compat-length<
+ (if (fboundp 'length<)
+ #'length<
+ (lambda (sequence length)
+ (< (length sequence) length))))
+
+(defalias 'tramp-compat-length>
+ (if (fboundp 'length>)
+ #'length>
+ (lambda (sequence length)
+ (> (length sequence) length))))
+
+(defalias 'tramp-compat-length=
+ (if (fboundp 'length=)
+ #'length=
+ (lambda (sequence length)
+ (= (length sequence) length))))
+
;; `permission-denied' is introduced in Emacs 29.1.
(defconst tramp-permission-denied
(if (get 'permission-denied 'error-conditions) 'permission-denied 'file-error)
@@ -353,7 +246,7 @@ CONDITION can also be a list of error conditions."
#'take
(lambda (n list)
(when (and (natnump n) (> n 0))
- (if (>= n (length list))
+ (if (tramp-compat-length< list n)
list (butlast list (- (length list) n)))))))
;; Function `ntake' is new in Emacs 29.1.
@@ -362,7 +255,7 @@ CONDITION can also be a list of error conditions."
#'ntake
(lambda (n list)
(when (and (natnump n) (> n 0))
- (if (>= n (length list))
+ (if (tramp-compat-length< list n)
list (nbutlast list (- (length list) n)))))))
;; Function `string-equal-ignore-case' is new in Emacs 29.1.
@@ -382,28 +275,18 @@ CONDITION can also be a list of error conditions."
(autoload 'netrc-parse "netrc")
(netrc-parse file))))
-;; Function `replace-regexp-in-region' is new in Emacs 28.1.
-(defalias 'tramp-compat-replace-regexp-in-region
- (if (fboundp 'replace-regexp-in-region)
- #'replace-regexp-in-region
- (lambda (regexp replacement &optional start end)
- (if start
- (when (< start (point-min))
- (error "Start before start of buffer"))
- (setq start (point)))
- (if end
- (when (> end (point-max))
- (error "End after end of buffer"))
- (setq end (point-max)))
- (save-excursion
- (let ((matches 0)
- (case-fold-search nil))
- (goto-char start)
- (while (re-search-forward regexp end t)
- (replace-match replacement t)
- (setq matches (1+ matches)))
- (and (not (zerop matches))
- matches))))))
+;; User option `password-colon-equivalents' is new in Emacs 30.1.
+(if (boundp 'password-colon-equivalents)
+ (defvaralias
+ 'tramp-compat-password-colon-equivalents
+ 'password-colon-equivalents)
+ (defvar tramp-compat-password-colon-equivalents
+ '(?\N{COLON}
+ ?\N{FULLWIDTH COLON}
+ ?\N{SMALL COLON}
+ ?\N{PRESENTATION FORM FOR VERTICAL COLON}
+ ?\N{KHMER SIGN CAMNUC PII KUUH})
+ "List of characters equivalent to trailing colon in \"password\" prompts."))
(dolist (elt (all-completions "tramp-compat-" obarray 'functionp))
(put (intern elt) 'tramp-suppress-trace t))
@@ -419,8 +302,5 @@ CONDITION can also be a list of error conditions."
;;
;; * Starting with Emacs 27.1, there's no need to escape open
;; parentheses with a backslash in docstrings anymore.
-;;
-;; * Starting with Emacs 27.1, there's `make-empty-file'. Could be
-;; used instead of `(write-region "" ...)'.
;;; tramp-compat.el ends here
diff --git a/lisp/net/tramp-container.el b/lisp/net/tramp-container.el
index 6cdd6c654ea..5ae9ebaefb2 100644
--- a/lisp/net/tramp-container.el
+++ b/lisp/net/tramp-container.el
@@ -41,6 +41,7 @@
;; CONTAINER is the container to connect to
;;
;;
+;;
;; Open file in a Kubernetes container:
;;
;; C-x C-f /kubernetes:POD:/path/to/file
@@ -54,6 +55,18 @@
;; namespace, use this command to change it:
;;
;; "kubectl config set-context --current --namespace=<name>"
+;;
+;;
+;;
+;; Open a file on an existing toolbox container via Toolbox:
+;;
+;; C-x C-f /toolbox:CONTAINER:/path/to/file
+;;
+;; Where:
+;; CONTAINER is the container to connect to (optional)
+;;
+;; If the container is not running, it is started. If no container is
+;; specified, the default Toolbox container is used.
;;; Code:
@@ -84,6 +97,14 @@
(string)))
;;;###tramp-autoload
+(defcustom tramp-toolbox-program "toolbox"
+ "Name of the Toolbox client program."
+ :group 'tramp
+ :version "30.1"
+ :type '(choice (const "toolbox")
+ (string)))
+
+;;;###tramp-autoload
(defconst tramp-docker-method "docker"
"Tramp method name to use to connect to Docker containers.")
@@ -96,15 +117,20 @@
"Tramp method name to use to connect to Kubernetes containers.")
;;;###tramp-autoload
-(defun tramp-docker--completion-function (&rest _args)
- "List Docker-like containers available for connection.
+(defconst tramp-toolbox-method "toolbox"
+ "Tramp method name to use to connect to Toolbox containers.")
+
+;;;###tramp-autoload
+(defun tramp-container--completion-function (program)
+ "List running containers available for connection.
+PROGRAM is the program to be run for \"ps\", either
+`tramp-docker-program' or `tramp-podman-program'.
This function is used by `tramp-set-completion-function', please
see its function help for a description of the format."
(when-let ((default-directory tramp-compat-temporary-file-directory)
(raw-list (shell-command-to-string
- (concat tramp-docker-program
- " ps --format '{{.ID}}\t{{.Names}}'")))
+ (concat program " ps --format '{{.ID}}\t{{.Names}}'")))
(lines (split-string raw-list "\n" 'omit))
(names (mapcar
(lambda (line)
@@ -114,7 +140,7 @@ see its function help for a description of the format."
line)
(or (match-string 2 line) (match-string 1 line))))
lines)))
- (mapcar (lambda (m) (list nil m)) (delq nil names))))
+ (mapcar (lambda (name) (list nil name)) (delq nil names))))
;;;###tramp-autoload
(defun tramp-kubernetes--completion-function (&rest _args)
@@ -128,9 +154,7 @@ see its function help for a description of the format."
" get pods --no-headers "
"-o custom-columns=NAME:.metadata.name")))
(names (split-string raw-list "\n" 'omit)))
- (mapcar (lambda (name)
- (list nil name))
- names)))
+ (mapcar (lambda (name) (list nil name)) (delq nil names))))
(defun tramp-kubernetes--current-context-data (vec)
"Return Kubernetes current context data as JSON string."
@@ -151,6 +175,27 @@ see its function help for a description of the format."
(buffer-string))))))
;;;###tramp-autoload
+(defun tramp-toolbox--completion-function (&rest _args)
+ "List Toolbox containers available for connection.
+
+This function is used by `tramp-set-completion-function', please
+see its function help for a description of the format."
+ (when-let ((default-directory tramp-compat-temporary-file-directory)
+ (raw-list (shell-command-to-string
+ (concat tramp-toolbox-program " list -c")))
+ ;; Ignore header line.
+ (lines (cdr (split-string raw-list "\n" 'omit)))
+ (names (mapcar
+ (lambda (line)
+ (when (string-match
+ (rx bol (1+ (not space))
+ (1+ space) (group (1+ (not space))) space)
+ line)
+ (match-string 1 line)))
+ lines)))
+ (mapcar (lambda (name) (list nil name)) (delq nil names))))
+
+;;;###tramp-autoload
(defvar tramp-default-remote-shell) ;; Silence byte compiler.
;;;###tramp-autoload
@@ -167,6 +212,7 @@ see its function help for a description of the format."
(tramp-remote-shell ,tramp-default-remote-shell)
(tramp-remote-shell-login ("-l"))
(tramp-remote-shell-args ("-i" "-c"))))
+
(add-to-list 'tramp-methods
`(,tramp-podman-method
(tramp-login-program ,tramp-podman-program)
@@ -179,6 +225,7 @@ see its function help for a description of the format."
(tramp-remote-shell ,tramp-default-remote-shell)
(tramp-remote-shell-login ("-l"))
(tramp-remote-shell-args ("-i" "-c"))))
+
(add-to-list 'tramp-methods
`(,tramp-kubernetes-method
(tramp-login-program ,tramp-kubernetes-program)
@@ -193,17 +240,36 @@ see its function help for a description of the format."
(tramp-remote-shell-login ("-l"))
(tramp-remote-shell-args ("-i" "-c"))))
+ (add-to-list 'tramp-methods
+ `(,tramp-toolbox-method
+ (tramp-login-program ,tramp-toolbox-program)
+ (tramp-login-args (("run")
+ ("-c" "%h")
+ ("%l")))
+ (tramp-direct-async (,tramp-default-remote-shell "-c"))
+ (tramp-remote-shell ,tramp-default-remote-shell)
+ (tramp-remote-shell-login ("-l"))
+ (tramp-remote-shell-args ("-c"))))
+
+ (add-to-list 'tramp-default-host-alist `(,tramp-toolbox-method nil ""))
+
(tramp-set-completion-function
tramp-docker-method
- '((tramp-docker--completion-function "")))
+ `((tramp-container--completion-function
+ ,(executable-find tramp-docker-program))))
(tramp-set-completion-function
tramp-podman-method
- '((tramp-docker--completion-function "")))
+ `((tramp-container--completion-function
+ ,(executable-find tramp-podman-program))))
(tramp-set-completion-function
tramp-kubernetes-method
- '((tramp-kubernetes--completion-function ""))))
+ '((tramp-kubernetes--completion-function "")))
+
+ (tramp-set-completion-function
+ tramp-toolbox-method
+ '((tramp-toolbox--completion-function ""))))
(add-hook 'tramp-unload-hook
(lambda ()
diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el
index c7696a51dae..4d15695ccbf 100644
--- a/lisp/net/tramp-crypt.el
+++ b/lisp/net/tramp-crypt.el
@@ -146,7 +146,7 @@ They are completed by \"M-x TAB\" only when encryption support is enabled."
If NAME doesn't belong to an encrypted remote directory, return nil."
(catch 'crypt-file-name-p
(and tramp-crypt-enabled (stringp name)
- (not (tramp-compat-file-name-quoted-p name))
+ (not (file-name-quoted-p name))
(not (string-suffix-p tramp-crypt-encfs-config name))
(dolist (dir tramp-crypt-directories)
(and (string-prefix-p
@@ -204,6 +204,7 @@ If NAME doesn't belong to an encrypted remote directory, return nil."
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-crypt-handle-file-system-info)
;; `file-truename' performed by default handler.
+ ;; `file-user-uid' performed by default-handler.
(file-writable-p . tramp-crypt-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -315,7 +316,7 @@ connection if a previous connection has died for some reason."
:name (tramp-get-connection-name vec)
:buffer (tramp-get-connection-buffer vec)
:server t :host 'local :service t :noquery t)))
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(set-process-query-on-exit-flag p nil)))
;; The following operations must be performed without
@@ -435,7 +436,7 @@ Otherwise, return NAME."
crypt-vec (if (eq op 'encrypt) "encode" "decode")
tramp-compat-temporary-file-directory localname)
(tramp-error
- crypt-vec 'file-error "%s of file name %s failed."
+ crypt-vec 'file-error "%s of file name %s failed"
(if (eq op 'encrypt) "Encoding" "Decoding") name))
(with-current-buffer (tramp-get-connection-buffer crypt-vec)
(goto-char (point-min))
@@ -470,7 +471,7 @@ Raise an error if this fails."
(file-name-directory infile)
(concat "/" (file-name-nondirectory infile)))
(tramp-error
- crypt-vec 'file-error "%s of file %s failed."
+ crypt-vec 'file-error "%s of file %s failed"
(if (eq op 'encrypt) "Encrypting" "Decrypting") infile))
(with-current-buffer (tramp-get-connection-buffer crypt-vec)
(write-region nil nil outfile)))))
@@ -494,11 +495,11 @@ directory. File names will be also encrypted."
;; (declare (completion tramp-crypt-command-completion-p))
(interactive "DRemote directory name: ")
(unless tramp-crypt-enabled
- (tramp-user-error nil "Feature is not enabled."))
+ (tramp-user-error nil "Feature is not enabled"))
(unless (and (tramp-tramp-file-p name) (file-directory-p name))
- (tramp-user-error nil "%s must be an existing remote directory." name))
- (when (tramp-compat-file-name-quoted-p name)
- (tramp-user-error nil "%s must not be quoted." name))
+ (tramp-user-error nil "%s must be an existing remote directory" name))
+ (when (file-name-quoted-p name)
+ (tramp-user-error nil "%s must not be quoted" name))
(setq name (file-name-as-directory (expand-file-name name)))
(unless (member name tramp-crypt-directories)
(setq tramp-crypt-directories (cons name tramp-crypt-directories)))
@@ -517,7 +518,7 @@ kept in their encrypted form."
;; (declare (completion tramp-crypt-command-completion-p))
(interactive "DRemote directory name: ")
(unless tramp-crypt-enabled
- (tramp-user-error nil "Feature is not enabled."))
+ (tramp-user-error nil "Feature is not enabled"))
(setq name (file-name-as-directory (expand-file-name name)))
(when (and (member name tramp-crypt-directories)
(delete
@@ -556,7 +557,7 @@ localname."
(defun tramp-crypt-handle-access-file (filename string)
"Like `access-file' for Tramp files."
(let* ((encrypt-filename (tramp-crypt-encrypt-file-name filename))
- (encrypt-regexp (tramp-compat-rx (literal encrypt-filename) eos))
+ (encrypt-regexp (rx (literal encrypt-filename) eos))
tramp-crypt-enabled)
(condition-case err
(access-file encrypt-filename string)
@@ -689,17 +690,17 @@ absolute file names."
(directory &optional recursive _trash)
"Like `delete-directory' for Tramp files."
(with-parsed-tramp-file-name (expand-file-name directory) nil
- (tramp-flush-directory-properties v localname)
(let (tramp-crypt-enabled)
- (delete-directory (tramp-crypt-encrypt-file-name directory) recursive))))
+ (delete-directory (tramp-crypt-encrypt-file-name directory) recursive))
+ (tramp-flush-directory-properties v localname)))
;; Encrypted files won't be trashed.
(defun tramp-crypt-handle-delete-file (filename &optional _trash)
"Like `delete-file' for Tramp files."
(with-parsed-tramp-file-name (expand-file-name filename) nil
- (tramp-flush-file-properties v localname)
(let (tramp-crypt-enabled)
- (delete-file (tramp-crypt-encrypt-file-name filename)))))
+ (delete-file (tramp-crypt-encrypt-file-name filename)))
+ (tramp-flush-file-properties v localname)))
(defun tramp-crypt-handle-directory-files
(directory &optional full match nosort count)
@@ -709,8 +710,7 @@ absolute file names."
(mapcar
(lambda (x)
(replace-regexp-in-string
- (tramp-compat-rx bos (literal directory)) ""
- (tramp-crypt-decrypt-file-name x)))
+ (rx bos (literal directory)) "" (tramp-crypt-decrypt-file-name x)))
(directory-files (tramp-crypt-encrypt-file-name directory) 'full)))))
(defun tramp-crypt-handle-file-attributes (filename &optional id-format)
@@ -730,18 +730,19 @@ absolute file names."
(defun tramp-crypt-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
- (all-completions
- filename
- (let* (completion-regexp-list
- tramp-crypt-enabled
- (directory (file-name-as-directory directory))
- (enc-dir (tramp-crypt-encrypt-file-name directory)))
- (mapcar
- (lambda (x)
- (substring
- (tramp-crypt-decrypt-file-name (concat enc-dir x))
- (length directory)))
- (file-name-all-completions "" enc-dir)))))
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (let* (completion-regexp-list
+ tramp-crypt-enabled
+ (directory (file-name-as-directory directory))
+ (enc-dir (tramp-crypt-encrypt-file-name directory)))
+ (mapcar
+ (lambda (x)
+ (substring
+ (tramp-crypt-decrypt-file-name (concat enc-dir x))
+ (length directory)))
+ (file-name-all-completions "" enc-dir))))))
(defun tramp-crypt-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
@@ -756,9 +757,7 @@ absolute file names."
(defun tramp-crypt-handle-file-system-info (filename)
"Like `file-system-info' for Tramp files."
(let (tramp-crypt-enabled)
- ;; `file-system-info' exists since Emacs 27.1.
- (tramp-compat-funcall
- 'file-system-info (tramp-crypt-encrypt-file-name filename))))
+ (file-system-info (tramp-crypt-encrypt-file-name filename))))
(defun tramp-crypt-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
@@ -769,27 +768,26 @@ absolute file names."
(filename switches &optional wildcard full-directory-p)
"Like `insert-directory' for Tramp files.
WILDCARD is not supported."
- ;; This package has been added to Emacs 27.1.
- (when (load "text-property-search" 'noerror 'nomessage)
- (let (tramp-crypt-enabled)
- (tramp-handle-insert-directory
- (tramp-crypt-encrypt-file-name filename)
- switches wildcard full-directory-p)
- (let* ((filename (file-name-as-directory filename))
- (enc (tramp-crypt-encrypt-file-name filename))
- match string)
- (goto-char (point-min))
- (while (setq match (text-property-search-forward 'dired-filename t t))
- (setq string
- (buffer-substring
- (prop-match-beginning match) (prop-match-end match))
- string (if (file-name-absolute-p string)
- (tramp-crypt-decrypt-file-name string)
- (substring
- (tramp-crypt-decrypt-file-name (concat enc string))
- (length filename))))
- (delete-region (prop-match-beginning match) (prop-match-end match))
- (insert (propertize string 'dired-filename t)))))))
+ (require 'text-property-search)
+ (let (tramp-crypt-enabled)
+ (tramp-handle-insert-directory
+ (tramp-crypt-encrypt-file-name filename)
+ switches wildcard full-directory-p)
+ (let* ((filename (file-name-as-directory filename))
+ (enc (tramp-crypt-encrypt-file-name filename))
+ match string)
+ (goto-char (point-min))
+ (while (setq match (text-property-search-forward 'dired-filename t t))
+ (setq string
+ (buffer-substring
+ (prop-match-beginning match) (prop-match-end match))
+ string (if (file-name-absolute-p string)
+ (tramp-crypt-decrypt-file-name string)
+ (substring
+ (tramp-crypt-decrypt-file-name (concat enc string))
+ (length filename))))
+ (delete-region (prop-match-beginning match) (prop-match-end match))
+ (insert (propertize string 'dired-filename t))))))
(defun tramp-crypt-handle-lock-file (filename)
"Like `lock-file' for Tramp files."
@@ -800,16 +798,9 @@ WILDCARD is not supported."
(defun tramp-crypt-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name dir) nil
- (when (and (null parents) (file-exists-p dir))
- (tramp-error v 'file-already-exists dir))
+ (tramp-skeleton-make-directory dir parents
(let (tramp-crypt-enabled)
- (make-directory (tramp-crypt-encrypt-file-name dir) parents))
- ;; When PARENTS is non-nil, DIR could be a chain of non-existent
- ;; directories a/b/c/... Instead of checking, we simply flush the
- ;; whole cache.
- (tramp-flush-directory-properties
- v (if parents "/" (file-name-directory localname)))))
+ (make-directory (tramp-crypt-encrypt-file-name dir) parents))))
(defun tramp-crypt-handle-rename-file
(filename newname &optional ok-if-already-exists)
diff --git a/lisp/net/tramp-fuse.el b/lisp/net/tramp-fuse.el
index e1ad0c2e5d2..8112e564a2c 100644
--- a/lisp/net/tramp-fuse.el
+++ b/lisp/net/tramp-fuse.el
@@ -34,15 +34,13 @@
(defun tramp-fuse-handle-delete-directory
(directory &optional recursive trash)
"Like `delete-directory' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name directory) nil
- (tramp-flush-directory-properties v localname)
+ (tramp-skeleton-delete-directory directory recursive trash
(delete-directory (tramp-fuse-local-file-name directory) recursive trash)))
(defun tramp-fuse-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (delete-file (tramp-fuse-local-file-name filename) trash)
- (tramp-flush-file-properties v localname)))
+ (tramp-skeleton-delete-file filename trash
+ (delete-file (tramp-fuse-local-file-name filename) trash)))
(defvar tramp-fuse-remove-hidden-files nil
"Remove hidden files from directory listings.")
@@ -69,15 +67,15 @@
(tramp-fuse-local-file-name directory))))))))
(if full
;; Massage the result.
- (let ((local (tramp-compat-rx
+ (let ((local (rx
bol
(literal
(tramp-fuse-mount-point
(tramp-dissect-file-name directory)))))
(remote (directory-file-name
(funcall
- (if (tramp-compat-file-name-quoted-p directory)
- #'tramp-compat-file-name-quote #'identity)
+ (if (file-name-quoted-p directory)
+ #'file-name-quote #'identity)
(file-remote-p directory)))))
(mapcar
(lambda (x) (replace-regexp-in-string local remote x))
@@ -100,20 +98,21 @@
(defun tramp-fuse-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
(tramp-fuse-remove-hidden-files
- (all-completions
- filename
- (delete-dups
- (append
- (file-name-all-completions
- filename (tramp-fuse-local-file-name directory))
- ;; Some storage systems do not return "." and "..".
- (let (result)
- (dolist (item '(".." ".") result)
- (when (string-prefix-p filename item)
- (catch 'match
- (dolist (elt completion-regexp-list)
- (unless (string-match-p elt item) (throw 'match nil)))
- (setq result (cons (concat item "/") result)))))))))))
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (delete-dups
+ (append
+ (file-name-all-completions
+ filename (tramp-fuse-local-file-name directory))
+ ;; Some storage systems do not return "." and "..".
+ (let (result)
+ (dolist (item '(".." ".") result)
+ (when (string-prefix-p filename item)
+ (catch 'match
+ (dolist (elt completion-regexp-list)
+ (unless (string-match-p elt item) (throw 'match nil)))
+ (setq result (cons (concat item "/") result))))))))))))
;; This function isn't used.
(defun tramp-fuse-handle-insert-directory
@@ -127,14 +126,8 @@
(defun tramp-fuse-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name dir) nil
- (make-directory (tramp-fuse-local-file-name dir) parents)
- ;; When PARENTS is non-nil, DIR could be a chain of non-existent
- ;; directories a/b/c/... Instead of checking, we simply flush the
- ;; whole file cache.
- (tramp-flush-file-properties v localname)
- (tramp-flush-directory-properties
- v (if parents "/" (file-name-directory localname)))))
+ (tramp-skeleton-make-directory dir parents
+ (make-directory (tramp-fuse-local-file-name dir) parents)))
;; File name helper functions.
@@ -180,8 +173,7 @@ It has the same meaning as `remote-file-name-inhibit-cache'.")
(tramp-set-file-property
vec "/" "mounted"
(when (string-match
- (tramp-compat-rx
- bol (group (literal (tramp-fuse-mount-spec vec))) blank)
+ (rx bol (group (literal (tramp-fuse-mount-spec vec))) blank)
mount)
(match-string 1 mount)))))))
@@ -211,7 +203,7 @@ It has the same meaning as `remote-file-name-inhibit-cache'.")
(defun tramp-fuse-local-file-name (filename)
"Return local mount name of FILENAME."
- (setq filename (tramp-compat-file-name-unquote (expand-file-name filename)))
+ (setq filename (file-name-unquote (expand-file-name filename)))
(with-parsed-tramp-file-name filename nil
;; As long as we call `tramp-*-maybe-open-connection' here,
;; we cache the result.
@@ -220,10 +212,10 @@ It has the same meaning as `remote-file-name-inhibit-cache'.")
(intern
(format "tramp-%s-maybe-open-connection" (tramp-file-name-method v)))
v)
- (let ((quoted (tramp-compat-file-name-quoted-p localname))
- (localname (tramp-compat-file-name-unquote localname)))
+ (let ((quoted (file-name-quoted-p localname))
+ (localname (file-name-unquote localname)))
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(if (file-name-absolute-p localname)
(substring localname 1) localname)
diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el
index 0273c28beca..d44fd55b225 100644
--- a/lisp/net/tramp-gvfs.el
+++ b/lisp/net/tramp-gvfs.el
@@ -119,8 +119,6 @@
(defconst tramp-gvfs-enabled
(ignore-errors
(and (featurep 'dbusbind)
- (autoload 'zeroconf-init "zeroconf")
- (tramp-compat-funcall 'dbus-get-unique-name :system)
(tramp-compat-funcall 'dbus-get-unique-name :session)
(or (tramp-process-running-p "gvfs-fuse-daemon")
(tramp-process-running-p "gvfsd-fuse"))))
@@ -210,6 +208,27 @@ They are checked during start up via
tramp-gvfs-interface-mounttracker))
"The list of supported methods of the mount tracking interface.")
+(defconst tramp-gvfs-listmountableinfo
+ (if (member "ListMountableInfo" tramp-gvfs-methods-mounttracker)
+ "ListMountableInfo"
+ "listMountableInfo")
+ "The name of the \"listMountableInfo\" method.
+It has been changed in GVFS 1.14.")
+
+(defconst tramp-gvfs-listmounttypes
+ (if (member "ListMountTypes" tramp-gvfs-methods-mounttracker)
+ "ListMountTypes"
+ "listMountTypes")
+ "The name of the \"listMountTypes\" method.
+It has been changed in GVFS 1.14.")
+
+(defconst tramp-gvfs-mounttypes
+ (and tramp-gvfs-enabled
+ (dbus-call-method
+ :session tramp-gvfs-service-daemon tramp-gvfs-path-mounttracker
+ tramp-gvfs-interface-mounttracker tramp-gvfs-listmounttypes))
+ "The list of supported mount types of the mount tracking interface.")
+
(defconst tramp-gvfs-listmounts
(if (member "ListMounts" tramp-gvfs-methods-mounttracker)
"ListMounts"
@@ -233,6 +252,12 @@ It has been changed in GVFS 1.14.")
It has been changed in GVFS 1.14.")
;; <interface name='org.gtk.vfs.MountTracker'>
+;; <method name='listMountableInfo'>
+;; <arg name='mountables' type='a(ssasib)' direction='out'/>
+;; </method>
+;; <method name='listMountTypes'>
+;; <arg name='mount_types' type='as' direction='out'/>
+;; </method>
;; <method name='listMounts'>
;; <arg name='mount_info_list'
;; type='a{sosssssbay{aya{say}}ay}'
@@ -253,6 +278,13 @@ It has been changed in GVFS 1.14.")
;; </signal>
;; </interface>
;;
+;; STRUCT mountable
+;; STRING type
+;; STRING scheme
+;; ARRAY STRING scheme_aliases
+;; INT32 default_port
+;; BOOLEAN host_is_inet
+;;
;; STRUCT mount_info
;; STRING dbus_id
;; OBJECT_PATH object_path
@@ -414,7 +446,7 @@ It has been changed in GVFS 1.14.")
;; </interface>
(defconst tramp-goa-identity-regexp
- (tramp-compat-rx
+ (rx
bol (? (group (regexp tramp-user-regexp)))
"@" (? (group (regexp tramp-host-regexp)))
(? ":" (group (regexp tramp-port-regexp))))
@@ -716,13 +748,13 @@ It has been changed in GVFS 1.14.")
"GVFS file attributes."))
(defconst tramp-gvfs-file-attributes-with-gvfs-ls-regexp
- (tramp-compat-rx
+ (rx
blank (group (regexp (regexp-opt tramp-gvfs-file-attributes)))
"=" (group (+? nonl)))
"Regexp to parse GVFS file attributes with `gvfs-ls'.")
(defconst tramp-gvfs-file-attributes-with-gvfs-info-regexp
- (tramp-compat-rx
+ (rx
bol (* blank) (group (regexp (regexp-opt tramp-gvfs-file-attributes)))
":" (+ blank) (group (* nonl)) eol)
"Regexp to parse GVFS file attributes with `gvfs-info'.")
@@ -734,7 +766,7 @@ It has been changed in GVFS 1.14.")
"GVFS file system attributes.")
(defconst tramp-gvfs-file-system-attributes-regexp
- (tramp-compat-rx
+ (rx
bol (* blank)
(group (regexp (regexp-opt tramp-gvfs-file-system-attributes)))
":" (+ blank) (group (* nonl)) eol)
@@ -744,7 +776,7 @@ It has been changed in GVFS 1.14.")
"Default prefix for owncloud / nextcloud methods.")
(defconst tramp-gvfs-nextcloud-default-prefix-regexp
- (tramp-compat-rx (literal tramp-gvfs-nextcloud-default-prefix) eol)
+ (rx (literal tramp-gvfs-nextcloud-default-prefix) eol)
"Regexp of default prefix for owncloud / nextcloud methods.")
@@ -798,6 +830,7 @@ It has been changed in GVFS 1.14.")
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-gvfs-handle-file-system-info)
(file-truename . tramp-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -871,6 +904,14 @@ arguments to pass to the OPERATION."
(tramp-register-foreign-file-name-handler
#'tramp-gvfs-file-name-p #'tramp-gvfs-file-name-handler)))
+;; Event type `dbus-event' is added to `while-no-input-ignore-events'
+;; in Emacs 29.1. If it is missing, some packages like Helm report
+;; problems. So we add it here.
+(when (and (featurep 'dbusbind)
+ (not (memq 'dbus-event while-no-input-ignore-events)))
+ (setq while-no-input-ignore-events
+ (cons 'dbus-event while-no-input-ignore-events)))
+
;; D-Bus helper function.
@@ -1079,7 +1120,7 @@ file names."
(goto-char (point-min))
(tramp-error-with-buffer
nil v 'file-error
- "%s failed, see buffer `%s' for details."
+ "%s failed, see buffer `%s' for details"
msg-operation (buffer-name)))
;; Some WebDAV server, like the one from QNAP, do
@@ -1139,25 +1180,23 @@ file names."
(defun tramp-gvfs-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (tramp-flush-file-properties v localname)
- (if (and delete-by-moving-to-trash trash)
- (move-file-to-trash filename)
- (unless (and (tramp-gvfs-send-command
- v "gvfs-rm" (tramp-gvfs-url-file-name filename))
- (not (tramp-gvfs-info filename)))
- ;; Propagate the error.
- (with-current-buffer (tramp-get-connection-buffer v)
- (goto-char (point-min))
- (tramp-error-with-buffer
- nil v 'file-error "Couldn't delete %s" filename))))))
+ (tramp-skeleton-delete-file filename trash
+ (unless (and (tramp-gvfs-send-command
+ v "gvfs-rm" (tramp-gvfs-url-file-name filename))
+ (not (tramp-gvfs-info filename)))
+ ;; Propagate the error.
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (goto-char (point-min))
+ (tramp-error-with-buffer
+ nil v 'file-error "Couldn't delete %s" filename)))))
(defun tramp-gvfs-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files."
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
(setq dir (or dir default-directory "/"))
;; Handle empty NAME.
- (when (zerop (length name)) (setq name "."))
+ (when (string-empty-p name)
+ (setq name "."))
;; Unless NAME is absolute, concat DIR and NAME.
(unless (file-name-absolute-p name)
(setq name (tramp-compat-file-name-concat dir name)))
@@ -1168,12 +1207,11 @@ file names."
(with-parsed-tramp-file-name name nil
;; If there is a default location, expand tilde.
(when (string-match
- (tramp-compat-rx bos "~" (group (* (not "/"))) (group (* nonl)) eos)
- localname)
+ (rx bos "~" (group (* (not "/"))) (group (* nonl)) eos) localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname))
hname)
- (when (zerop (length uname))
+ (when (tramp-string-empty-or-nil-p uname)
(setq uname user))
(when (setq hname (tramp-get-home-directory v uname))
(setq localname (concat hname fname)))))
@@ -1186,8 +1224,7 @@ file names."
;; We do not pass "/..".
(if (string-match-p (rx bos (| "afp" (: "dav" (? "s")) "smb") eos) method)
(when (string-match
- (tramp-compat-rx bos "/" (+ (not "/")) (group "/.." (? "/")))
- localname)
+ (rx bos "/" (+ (not "/")) (group "/.." (? "/"))) localname)
(setq localname (replace-match "/" t t localname 1)))
(when (string-match (rx bol "/.." (? "/")) localname)
(setq localname (replace-match "/" t t localname))))
@@ -1222,7 +1259,7 @@ file names."
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
(while (looking-at
- (tramp-compat-rx
+ (rx
bol (group (+ nonl)) blank
(group (+ digit)) blank
"(" (group (+? nonl)) ")"
@@ -1232,7 +1269,7 @@ file names."
(cons "name" (match-string 1)))))
(goto-char (1+ (match-end 3)))
(while (looking-at
- (tramp-compat-rx
+ (rx
(regexp tramp-gvfs-file-attributes-with-gvfs-ls-regexp)
(group
(| (regexp
@@ -1281,11 +1318,10 @@ If FILE-SYSTEM is non-nil, return file system attributes."
"Return GVFS attributes association list of FILENAME."
(setq filename (directory-file-name (expand-file-name filename)))
(with-parsed-tramp-file-name filename nil
- (setq localname (tramp-compat-file-name-unquote localname))
+ (setq localname (file-name-unquote localname))
(if (or (and (string-match-p
(rx bol (| "afp" (: "dav" (? "s")) "smb") eol) method)
- (string-match-p
- (tramp-compat-rx bol (? "/") (+ (not "/")) eol) localname))
+ (string-match-p (rx bol (? "/") (+ (not "/")) eol) localname))
(string-equal localname "/"))
(tramp-gvfs-get-root-attributes filename)
(assoc
@@ -1422,16 +1458,19 @@ If FILE-SYSTEM is non-nil, return file system attributes."
(defun tramp-gvfs-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
(unless (tramp-compat-string-search "/" filename)
- (all-completions
- filename
- (with-parsed-tramp-file-name (expand-file-name directory) nil
- (with-tramp-file-property v localname "file-name-all-completions"
- (let ((result '("./" "../")))
- ;; Get a list of directories and files.
- (dolist (item (tramp-gvfs-get-directory-attributes directory) result)
- (if (string-equal (cdr (assoc "type" item)) "directory")
- (push (file-name-as-directory (car item)) result)
- (push (car item) result)))))))))
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (let ((result '("./" "../")))
+ ;; Get a list of directories and files.
+ (dolist (item
+ (tramp-gvfs-get-directory-attributes directory)
+ result)
+ (if (string-equal (cdr (assoc "type" item)) "directory")
+ (push (file-name-as-directory (car item)) result)
+ (push (car item) result))))))))))
(defun tramp-gvfs-handle-file-notify-add-watch (file-name flags _callback)
"Like `file-notify-add-watch' for Tramp files."
@@ -1461,16 +1500,16 @@ If FILE-SYSTEM is non-nil, return file system attributes."
v 'file-notify-error "Monitoring not supported for `%s'" file-name)
(tramp-message
v 6 "Run `%s', %S" (string-join (process-command p) " ") p)
- (process-put p 'vector v)
- (process-put p 'events events)
- (process-put p 'watch-name localname)
+ (process-put p 'tramp-vector v)
+ (process-put p 'tramp-events events)
+ (process-put p 'tramp-watch-name localname)
(process-put p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
(set-process-filter p #'tramp-gvfs-monitor-process-filter)
(set-process-sentinel p #'tramp-file-notify-process-sentinel)
;; There might be an error if the monitor is not supported.
;; Give the filter a chance to read the output.
- (while (tramp-accept-process-output p 0))
+ (while (tramp-accept-process-output p))
(unless (process-live-p p)
(tramp-error
p 'file-notify-error "Monitoring not supported for `%s'" file-name))
@@ -1482,10 +1521,10 @@ If FILE-SYSTEM is non-nil, return file system attributes."
(defun tramp-gvfs-monitor-process-filter (proc string)
"Read output from \"gvfs-monitor-file\" and add corresponding \
`file-notify' events."
- (let* ((events (process-get proc 'events))
- (rest-string (process-get proc 'rest-string))
+ (let* ((events (process-get proc 'tramp-events))
+ (rest-string (process-get proc 'tramp-rest-string))
(dd (tramp-get-default-directory (process-buffer proc)))
- (ddu (tramp-compat-rx (literal (tramp-gvfs-url-file-name dd)))))
+ (ddu (rx (literal (tramp-gvfs-url-file-name dd)))))
(when rest-string
(tramp-message proc 10 "Previous string:\n%s" rest-string))
(tramp-message proc 6 "%S\n%s" proc string)
@@ -1504,7 +1543,7 @@ If FILE-SYSTEM is non-nil, return file system attributes."
(delete-process proc))
(while (string-match
- (tramp-compat-rx
+ (rx
bol (+ nonl) ":"
blank (group (+ nonl)) ":"
blank (group (regexp (regexp-opt tramp-gio-events)))
@@ -1526,7 +1565,7 @@ If FILE-SYSTEM is non-nil, return file system attributes."
(setq file1 (url-unhex-string file1)))
;; Remove watch when file or directory to be watched is deleted.
(when (and (member action '(moved deleted))
- (string-equal file (process-get proc 'watch-name)))
+ (string-equal file (process-get proc 'tramp-watch-name)))
(delete-process proc))
;; Usually, we would add an Emacs event now. Unfortunately,
;; `unread-command-events' does not accept several events at
@@ -1536,9 +1575,9 @@ If FILE-SYSTEM is non-nil, return file system attributes."
'file-notify-callback (list proc action file file1)))))
;; Save rest of the string.
- (when (zerop (length string)) (setq string nil))
+ (when (string-empty-p string) (setq string nil))
(when string (tramp-message proc 10 "Rest string:\n%s" string))
- (process-put proc 'rest-string string)))
+ (process-put proc 'tramp-rest-string string)))
(defun tramp-gvfs-handle-file-system-info (filename)
"Like `file-system-info' for Tramp files."
@@ -1560,27 +1599,13 @@ If FILE-SYSTEM is non-nil, return file system attributes."
(defun tramp-gvfs-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (setq dir (directory-file-name (expand-file-name dir)))
- (with-parsed-tramp-file-name dir nil
- (when (and (null parents) (file-exists-p dir))
- (tramp-error v 'file-already-exists dir))
- (tramp-flush-directory-properties v localname)
+ (tramp-skeleton-make-directory dir parents
(save-match-data
- (let ((ldir (file-name-directory dir)))
- ;; Make missing directory parts. "gvfs-mkdir -p ..." does not
- ;; work robust.
- (when (and parents (not (file-directory-p ldir)))
- (make-directory ldir parents))
- ;; Just do it.
- (or (when-let ((mkdir-succeeded
- (and
- (tramp-gvfs-send-command
- v "gvfs-mkdir" (tramp-gvfs-url-file-name dir))
- (tramp-gvfs-info dir))))
- (set-file-modes dir (default-file-modes))
- mkdir-succeeded)
- (and parents (file-directory-p dir))
- (tramp-error v 'file-error "Couldn't make directory %s" dir))))))
+ (if (and (tramp-gvfs-send-command
+ v "gvfs-mkdir" (tramp-gvfs-url-file-name dir))
+ (tramp-gvfs-info dir))
+ (set-file-modes dir (default-file-modes))
+ (tramp-error v 'file-error "Couldn't make directory %s" dir)))))
(defun tramp-gvfs-handle-rename-file
(filename newname &optional ok-if-already-exists)
@@ -1621,12 +1646,7 @@ If FILE-SYSTEM is non-nil, return file system attributes."
(tramp-gvfs-set-attribute
v (if (eq flag 'nofollow) "-nt" "-t") "uint64"
(tramp-gvfs-url-file-name filename) "time::modified"
- (format-time-string
- "%s" (if (or (null time)
- (tramp-compat-time-equal-p time tramp-time-doesnt-exist)
- (tramp-compat-time-equal-p time tramp-time-dont-know))
- nil
- time)))))
+ (format-time-string "%s" (tramp-defined-time time)))))
(defun tramp-gvfs-handle-get-home-directory (vec &optional _user)
"The remote home directory for connection VEC as local file name.
@@ -1636,7 +1656,7 @@ VEC or USER, or if there is no home directory, return nil."
(let ((localname (tramp-get-connection-property vec "default-location"))
result)
(cond
- ((zerop (length localname))
+ ((tramp-string-empty-or-nil-p localname)
(tramp-get-connection-property (tramp-get-process vec) "share"))
;; Google-drive.
((not (string-prefix-p "/" localname))
@@ -1719,7 +1739,7 @@ ID-FORMAT valid values are `string' and `integer'."
(defun tramp-gvfs-url-file-name (filename)
"Return FILENAME in URL syntax."
- (setq filename (tramp-compat-file-name-unquote filename))
+ (setq filename (file-name-unquote filename))
(let* (;; "/" must NOT be hexified.
(url-unreserved-chars (cons ?/ url-unreserved-chars))
(result
@@ -1739,8 +1759,7 @@ ID-FORMAT valid values are `string' and `integer'."
"Retrieve file name from D-Bus OBJECT-PATH."
(dbus-unescape-from-identifier
(replace-regexp-in-string
- (tramp-compat-rx bol (* nonl) "/" (group (+ (not "/"))) eol) "\\1"
- object-path)))
+ (rx bol (* nonl) "/" (group (+ (not "/"))) eol) "\\1" object-path)))
(defun tramp-gvfs-url-host (url)
"Return the host name part of URL, a string.
@@ -1769,11 +1788,11 @@ a downcased host name only."
(condition-case nil
(with-parsed-tramp-file-name filename l
- (when (and (zerop (length user))
+ (when (and (tramp-string-empty-or-nil-p user)
(not
(zerop (logand flags tramp-gvfs-password-need-username))))
(setq user (read-string "User name: ")))
- (when (and (zerop (length domain))
+ (when (and (tramp-string-empty-or-nil-p domain)
(not
(zerop (logand flags tramp-gvfs-password-need-domain))))
(setq domain (read-string "Domain name: ")))
@@ -2016,7 +2035,7 @@ Their full names are \"org.gtk.vfs.MountTracker.mounted\" and
(string-equal host (tramp-file-name-host vec))
(string-equal port (tramp-file-name-port vec))
(string-match-p
- (tramp-compat-rx bol "/" (literal (or share "")))
+ (rx bol "/" (literal (or share "")))
(tramp-file-name-unquote-localname vec)))
;; Set mountpoint and location.
(tramp-set-file-property vec "/" "fuse-mountpoint" fuse-mountpoint)
@@ -2061,8 +2080,7 @@ It was \"a(say)\", but has changed to \"a{sv})\"."
(tramp-media-device-port media) (tramp-file-name-port vec)))
(localname (tramp-file-name-unquote-localname vec))
(share (when (string-match
- (tramp-compat-rx bol (? "/") (group (+ (not "/"))))
- localname)
+ (rx bol (? "/") (group (+ (not "/")))) localname)
(match-string 1 localname)))
(ssl (if (string-match-p (rx bol (| "davs" "nextcloud")) method)
"true" "false"))
@@ -2105,8 +2123,7 @@ It was \"a(say)\", but has changed to \"a{sv})\"."
(list (tramp-gvfs-mount-spec-entry "port" port)))))
(mount-pref
(if (and (string-match-p (rx bol "dav") method)
- (string-match
- (tramp-compat-rx bol (? "/") (+ (not "/"))) localname))
+ (string-match (rx bol (? "/") (+ (not "/"))) localname))
(match-string 0 localname)
(tramp-gvfs-get-remote-prefix vec))))
@@ -2167,6 +2184,18 @@ connection if a previous connection has died for some reason."
(unless (tramp-connectable-p vec)
(throw 'non-essential 'non-essential))
+ ;; Sanity check.
+ (let ((method (tramp-file-name-method vec)))
+ (unless (member
+ (or (rassoc method '(("smb" . "smb-share")
+ ("davs" . "dav")
+ ("nextcloud" . "dav")
+ ("afp". "afp-volume")
+ ("gdrive" . "google-drive")))
+ method)
+ tramp-gvfs-mounttypes)
+ (tramp-error vec 'file-error "Method `%s' not supported by GVFS" method)))
+
;; For password handling, we need a process bound to the connection
;; buffer. Therefore, we create a dummy process. Maybe there is a
;; better solution?
@@ -2175,7 +2204,7 @@ connection if a previous connection has died for some reason."
:name (tramp-get-connection-name vec)
:buffer (tramp-get-connection-buffer vec)
:server t :host 'local :service t :noquery t)))
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(set-process-query-on-exit-flag p nil)
;; Set connection-local variables.
@@ -2212,7 +2241,7 @@ connection if a previous connection has died for some reason."
(with-tramp-progress-reporter
vec 3
- (if (zerop (length user))
+ (if (tramp-string-empty-or-nil-p user)
(format "Opening connection for %s using %s" host method)
(format "Opening connection for %s@%s using %s" user host method))
@@ -2262,7 +2291,7 @@ connection if a previous connection has died for some reason."
(with-timeout
((or (tramp-get-method-parameter vec 'tramp-connection-timeout)
tramp-connection-timeout)
- (if (zerop (length (tramp-file-name-user vec)))
+ (if (tramp-string-empty-or-nil-p (tramp-file-name-user vec))
(tramp-error
vec 'file-error
"Timeout reached mounting %s using %s" host method)
@@ -2441,7 +2470,7 @@ VEC is used only for traces."
;; Adapt default host name, supporting /mtp:: when possible.
(setq tramp-default-host-alist
(append
- `(("mtp" nil ,(if (= (length devices) 1) (car devices) "")))
+ `(("mtp" nil ,(if (tramp-compat-length= devices 1) (car devices) "")))
(delete
(assoc "mtp" tramp-default-host-alist)
tramp-default-host-alist)))))
@@ -2493,63 +2522,62 @@ This uses \"avahi-browse\" in case D-Bus is not enabled in Avahi."
(delete-dups
(mapcar
(lambda (x)
- (let* ((list (split-string x ";"))
- (host (nth 6 list))
- (text (split-string (nth 9 list) "\" \"" 'omit "\""))
- user)
- ;; A user is marked in a TXT field like "u=guest".
- (while text
- (when (string-match (rx "u=" (group (+ nonl)) eol) (car text))
- (setq user (match-string 1 (car text))))
- (setq text (cdr text)))
- (list user host)))
+ (ignore-errors
+ (let* ((list (split-string x ";"))
+ (host (nth 6 list))
+ (text (split-string (nth 9 list) "\" \"" 'omit "\""))
+ user)
+ ;; A user is marked in a TXT field like "u=guest".
+ (while text
+ (when (string-match (rx "u=" (group (+ nonl)) eol) (car text))
+ (setq user (match-string 1 (car text))))
+ (setq text (cdr text)))
+ (list user host))))
result))))
(when tramp-gvfs-enabled
- (with-no-warnings ;; max-specpdl-size
;; Suppress D-Bus error messages and Tramp traces.
- (let (;; Sometimes, it fails with "Variable binding depth exceeds
- ;; max-specpdl-size". Shall be fixed in Emacs 27.
- (max-specpdl-size (* 2 max-specpdl-size))
- (tramp-verbose 0)
+ (let ((tramp-verbose 0)
tramp-gvfs-dbus-event-vector fun)
- ;; Add completion functions for services announced by DNS-SD.
- ;; See <http://www.dns-sd.org/ServiceTypes.html> for valid service types.
- (zeroconf-init tramp-gvfs-zeroconf-domain)
- (when (setq fun (or (and (zeroconf-list-service-types)
- #'tramp-zeroconf-parse-device-names)
- (and (executable-find "avahi-browse")
- #'tramp-gvfs-parse-device-names)))
- (when (member "afp" tramp-gvfs-methods)
- (tramp-set-completion-function
- "afp" `((,fun "_afpovertcp._tcp"))))
- (when (member "dav" tramp-gvfs-methods)
- (tramp-set-completion-function
- "dav" `((,fun "_webdav._tcp")
- (,fun "_webdavs._tcp"))))
- (when (member "davs" tramp-gvfs-methods)
- (tramp-set-completion-function
- "davs" `((,fun "_webdav._tcp")
- (,fun "_webdavs._tcp"))))
- (when (member "ftp" tramp-gvfs-methods)
- (tramp-set-completion-function
- "ftp" `((,fun "_ftp._tcp"))))
- (when (member "http" tramp-gvfs-methods)
- (tramp-set-completion-function
- "http" `((,fun "_http._tcp")
- (,fun "_https._tcp"))))
- (when (member "https" tramp-gvfs-methods)
- (tramp-set-completion-function
- "https" `((,fun "_http._tcp")
- (,fun "_https._tcp"))))
- (when (member "sftp" tramp-gvfs-methods)
- (tramp-set-completion-function
- "sftp" `((,fun "_sftp-ssh._tcp")
- (,fun "_ssh._tcp")
- (,fun "_workstation._tcp"))))
- (when (member "smb" tramp-gvfs-methods)
- (tramp-set-completion-function
- "smb" `((,fun "_smb._tcp")))))
+ (when (and (autoload 'zeroconf-init "zeroconf")
+ (tramp-compat-funcall 'dbus-get-unique-name :system))
+ ;; Add completion functions for services announced by DNS-SD.
+ ;; See <http://www.dns-sd.org/ServiceTypes.html> for valid service types.
+ (zeroconf-init tramp-gvfs-zeroconf-domain)
+ (when (setq fun (or (and (zeroconf-list-service-types)
+ #'tramp-zeroconf-parse-device-names)
+ (and (executable-find "avahi-browse")
+ #'tramp-gvfs-parse-device-names)))
+ (when (member "afp" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "afp" `((,fun "_afpovertcp._tcp"))))
+ (when (member "dav" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "dav" `((,fun "_webdav._tcp")
+ (,fun "_webdavs._tcp"))))
+ (when (member "davs" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "davs" `((,fun "_webdav._tcp")
+ (,fun "_webdavs._tcp"))))
+ (when (member "ftp" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "ftp" `((,fun "_ftp._tcp"))))
+ (when (member "http" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "http" `((,fun "_http._tcp")
+ (,fun "_https._tcp"))))
+ (when (member "https" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "https" `((,fun "_http._tcp")
+ (,fun "_https._tcp"))))
+ (when (member "sftp" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "sftp" `((,fun "_sftp-ssh._tcp")
+ (,fun "_ssh._tcp")
+ (,fun "_workstation._tcp"))))
+ (when (member "smb" tramp-gvfs-methods)
+ (tramp-set-completion-function
+ "smb" `((,fun "_smb._tcp"))))))
;; Add completion functions for GNOME Online Accounts.
(tramp-get-goa-accounts nil)
@@ -2564,7 +2592,7 @@ This uses \"avahi-browse\" in case D-Bus is not enabled in Avahi."
"mtp"
(mapcar
(lambda (method) `(tramp-parse-media-names ,(format "_%s._tcp" method)))
- tramp-media-methods)))))
+ tramp-media-methods))))
(add-hook 'tramp-unload-hook
(lambda ()
@@ -2579,9 +2607,9 @@ This uses \"avahi-browse\" in case D-Bus is not enabled in Avahi."
;; * Host name completion for existing mount points (afp-server,
;; smb-server) or via smb-network or network.
;;
+;; * What's up with the other types in `tramp-gvfs-mounttypes'?
+;;
;; * Check, how two shares of the same SMB server can be mounted in
;; parallel.
-;;
-;; * What's up with ftps dns-sd afc admin computer?
;;; tramp-gvfs.el ends here
diff --git a/lisp/net/tramp-integration.el b/lisp/net/tramp-integration.el
index cff0877555e..d7fcd8afefa 100644
--- a/lisp/net/tramp-integration.el
+++ b/lisp/net/tramp-integration.el
@@ -42,9 +42,10 @@
(declare-function shortdoc-add-function "shortdoc")
(declare-function tramp-dissect-file-name "tramp")
(declare-function tramp-file-name-equal-p "tramp")
-(declare-function tramp-tramp-file-p "tramp")
(declare-function tramp-rename-files "tramp-cmds")
(declare-function tramp-rename-these-files "tramp-cmds")
+(declare-function tramp-set-connection-local-variables-for-buffer "tramp")
+(declare-function tramp-tramp-file-p "tramp")
(defvar eshell-path-env)
(defvar ido-read-file-name-non-ido)
(defvar info-lookup-alist)
@@ -53,7 +54,7 @@
(defvar shortdoc--groups)
(defvar tramp-current-connection)
(defvar tramp-postfix-host-format)
-(defvar tramp-use-ssh-controlmaster-options)
+(defvar tramp-use-connection-share)
;;; Fontification of `read-file-name':
@@ -133,8 +134,7 @@ been set up by `rfn-eshadow-setup-minibuffer'."
;; Use `path-separator' as it does eshell.
(setq eshell-path-env
(if (file-remote-p default-directory)
- (mapconcat
- #'identity (butlast (tramp-compat-exec-path)) path-separator)
+ (string-join (butlast (exec-path)) path-separator)
(getenv "PATH"))))
(with-eval-after-load 'esh-util
@@ -303,7 +303,7 @@ NAME must be equal to `tramp-current-connection'."
;; Bug#45518. So we don't use ssh ControlMaster options.
(defun tramp-compile-disable-ssh-controlmaster-options ()
"Don't allow ssh ControlMaster while compiling."
- (setq-local tramp-use-ssh-controlmaster-options nil))
+ (setq-local tramp-use-connection-share 'suppress))
(with-eval-after-load 'compile
(add-hook 'compilation-mode-hook
@@ -346,8 +346,7 @@ NAME must be equal to `tramp-current-connection'."
(defconst tramp-bsd-process-attributes-ps-args
`("-acxww"
"-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("pid"
"euid"
"user"
@@ -356,8 +355,7 @@ NAME must be equal to `tramp-current-connection'."
"comm=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
",")
"-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("state"
"ppid"
"pgid"
@@ -420,8 +418,7 @@ See `tramp-process-attributes-ps-format'.")
;; Tested with BusyBox v1.24.1.
(defconst tramp-busybox-process-attributes-ps-args
`("-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("pid"
"user"
"group"
@@ -429,8 +426,7 @@ See `tramp-process-attributes-ps-format'.")
",")
"-o" "stat=abcde"
"-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("ppid"
"pgid"
"tty"
@@ -473,8 +469,7 @@ See `tramp-process-attributes-ps-format'.")
(defconst tramp-darwin-process-attributes-ps-args
`("-acxww"
"-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("pid"
"uid"
"user"
@@ -483,8 +478,7 @@ See `tramp-process-attributes-ps-format'.")
",")
"-o" "state=abcde"
"-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("ppid"
"pgid"
"sess"
@@ -556,6 +550,14 @@ See `tramp-process-attributes-ps-format'.")
'(:application tramp :machine "localhost")
local-profile))
+;; Set connection-local variables for buffers visiting a file.
+
+(add-hook 'find-file-hook #'tramp-set-connection-local-variables-for-buffer -50)
+(add-hook 'tramp-unload-hook
+ (lambda ()
+ (remove-hook
+ 'find-file-hook #'tramp-set-connection-local-variables-for-buffer)))
+
(add-hook 'tramp-unload-hook
(lambda () (unload-feature 'tramp-integration 'force)))
diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el
index 2360abfb1dd..ec6a1da684f 100644
--- a/lisp/net/tramp-rclone.el
+++ b/lisp/net/tramp-rclone.el
@@ -118,6 +118,7 @@
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-rclone-handle-file-system-info)
(file-truename . tramp-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -337,7 +338,7 @@ file names."
(defun tramp-rclone-remote-file-name (filename)
"Return FILENAME as used in the `rclone' command."
- (setq filename (tramp-compat-file-name-unquote (expand-file-name filename)))
+ (setq filename (file-name-unquote (expand-file-name filename)))
(if (tramp-rclone-file-name-p filename)
(with-parsed-tramp-file-name filename nil
;; As long as we call `tramp-rclone-maybe-open-connection' here,
@@ -361,7 +362,7 @@ connection if a previous connection has died for some reason."
(let ((host (tramp-file-name-host vec)))
(when (rassoc `(,host) (tramp-rclone-parse-device-names nil))
- (if (zerop (length host))
+ (if (tramp-string-empty-or-nil-p host)
(tramp-error vec 'file-error "Storage %s not connected" host))
;; We need a process bound to the connection buffer. Therefore,
;; we create a dummy process. Maybe there is a better solution?
@@ -370,7 +371,7 @@ connection if a previous connection has died for some reason."
:name (tramp-get-connection-name vec)
:buffer (tramp-get-connection-buffer vec)
:server t :host 'local :service t :noquery t)))
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(set-process-query-on-exit-flag p nil)
;; Set connection-local variables.
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index 392a654df21..2df3006c1d9 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -106,13 +106,24 @@ detected as prompt when being sent on echoing hosts, therefore.")
(defconst tramp-end-of-heredoc (md5 tramp-end-of-output)
"String used to recognize end of heredoc strings.")
-(defcustom tramp-use-ssh-controlmaster-options (not (eq system-type 'windows-nt))
- "Whether to use `tramp-ssh-controlmaster-options'.
+(define-obsolete-variable-alias
+ 'tramp-use-ssh-controlmaster-options 'tramp-use-connection-share "30.1")
+
+(defcustom tramp-use-connection-share (not (eq system-type 'windows-nt))
+ "Whether to use connection share in ssh or PuTTY.
+Set it to t, if you want Tramp to apply respective options. These
+are `tramp-ssh-controlmaster-options' for ssh, and \"-share\" for PuTTY.
Set it to nil, if you use Control* or Proxy* options in your ssh
-configuration."
+configuration.
+Set it to `suppress' if you want to disable settings in your
+\"~/.ssh/config\" file or in your PuTTY session."
:group 'tramp
- :version "28.1"
- :type 'boolean)
+ :version "30.1"
+ :type '(choice (const :tag "Set ControlMaster" t)
+ (const :tag "Don't set ControlMaster" nil)
+ (const :tag "Suppress ControlMaster" suppress))
+ ;; Check with (safe-local-variable-p 'tramp-use-connection-share 'suppress)
+ :safe (lambda (val) (and (memq val '(t nil suppress)) t)))
(defvar tramp-ssh-controlmaster-options nil
"Which ssh Control* arguments to use.
@@ -123,8 +134,8 @@ If it is a string, it should have the form
spec must be doubled, because the string is used as format string.
Otherwise, it will be auto-detected by Tramp, if
-`tramp-use-ssh-controlmaster-options' is non-nil. The value
-depends on the installed local ssh version.
+`tramp-use-connection-share' is t. The value depends on the
+installed local ssh version.
The string is used in `tramp-methods'.")
@@ -341,7 +352,7 @@ The string is used in `tramp-methods'.")
(add-to-list 'tramp-methods
`("plink"
(tramp-login-program "plink")
- (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh")
+ (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%c")
("-t") ("%h") ("\"")
(,(format
"env 'TERM=%s' 'PROMPT_COMMAND=' 'PS1=%s'"
@@ -354,7 +365,7 @@ The string is used in `tramp-methods'.")
(add-to-list 'tramp-methods
`("plinkx"
(tramp-login-program "plink")
- (tramp-login-args (("-load") ("%h") ("-t") ("\"")
+ (tramp-login-args (("-load") ("%h") ("%c") ("-t") ("\"")
(,(format
"env 'TERM=%s' 'PROMPT_COMMAND=' 'PS1=%s'"
tramp-terminal-type
@@ -366,7 +377,7 @@ The string is used in `tramp-methods'.")
(add-to-list 'tramp-methods
`("pscp"
(tramp-login-program "plink")
- (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh")
+ (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%c")
("-t") ("%h") ("\"")
(,(format
"env 'TERM=%s' 'PROMPT_COMMAND=' 'PS1=%s'"
@@ -384,7 +395,7 @@ The string is used in `tramp-methods'.")
(add-to-list 'tramp-methods
`("psftp"
(tramp-login-program "plink")
- (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh")
+ (tramp-login-args (("-l" "%u") ("-P" "%p") ("-ssh") ("%c")
("-t") ("%h") ("\"")
(,(format
"env 'TERM=%s' 'PROMPT_COMMAND=' 'PS1=%s'"
@@ -396,7 +407,7 @@ The string is used in `tramp-methods'.")
(tramp-remote-shell-args ("-c"))
(tramp-copy-program "pscp")
(tramp-copy-args (("-l" "%u") ("-P" "%p") ("-sftp")
- ("-p" "%k") ("-q")))
+ ("-p" "%k")))
(tramp-copy-keep-date t)))
(add-to-list 'tramp-methods
`("fcp"
@@ -411,7 +422,7 @@ The string is used in `tramp-methods'.")
(add-to-list 'tramp-default-method-alist
`(,tramp-local-host-regexp
- ,(tramp-compat-rx bos (literal tramp-root-id-string) eos) "su"))
+ ,(rx bos (literal tramp-root-id-string) eos) "su"))
(add-to-list 'tramp-default-user-alist
`(,(rx bos (| "su" "sudo" "doas" "ksu") eos)
@@ -631,7 +642,6 @@ foreach $f (@files) {
print \"$f\\n\";
}
}
-print \"ok\\n\"
' \"$1\" %n"
"Perl script to produce output suitable for use with
`file-name-all-completions' on the remote file system.
@@ -1086,6 +1096,7 @@ Format specifiers \"%s\" are replaced before the script is used.")
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-sh-handle-file-system-info)
(file-truename . tramp-sh-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-sh-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -1131,140 +1142,67 @@ Operations not mentioned here will be handled by the normal Emacs functions.")
(defun tramp-sh-handle-make-symbolic-link
(target linkname &optional ok-if-already-exists)
- "Like `make-symbolic-link' for Tramp files.
-If TARGET is a non-Tramp file, it is used verbatim as the target
-of the symlink. If TARGET is a Tramp file, only the localname
-component is used as the target of the symlink."
- (with-parsed-tramp-file-name (expand-file-name linkname) nil
- ;; If TARGET is a Tramp name, use just the localname component.
- ;; Don't check for a proper method.
- (let ((non-essential t))
- (when (and (tramp-tramp-file-p target)
- (tramp-file-name-equal-p v (tramp-dissect-file-name target)))
- (setq target (tramp-file-local-name (expand-file-name target))))
- ;; There could be a cyclic link.
- (tramp-flush-file-properties
- v (expand-file-name target (tramp-file-local-name default-directory))))
-
- ;; If TARGET is still remote, quote it.
- (if (tramp-tramp-file-p target)
- (make-symbolic-link
- (tramp-compat-file-name-quote target 'top)
- linkname ok-if-already-exists)
-
- (let ((ln (tramp-get-remote-ln v))
- (cwd (tramp-run-real-handler
- #'file-name-directory (list localname))))
- (unless ln
- (tramp-error
- v 'file-error
- (concat "Making a symbolic link. "
- "ln(1) does not exist on the remote host.")))
-
- ;; Do the 'confirm if exists' thing.
- (when (file-exists-p linkname)
- ;; What to do?
- (if (or (null ok-if-already-exists) ; not allowed to exist
- (and (numberp ok-if-already-exists)
- (not
- (yes-or-no-p
- (format
- "File %s already exists; make it a link anyway?"
- localname)))))
- (tramp-error v 'file-already-exists localname)
- (delete-file linkname)))
-
- (tramp-flush-file-properties v localname)
-
- ;; Right, they are on the same host, regardless of user,
- ;; method, etc. We now make the link on the remote machine.
- ;; This will occur as the user that TARGET belongs to.
- (and (tramp-send-command-and-check
- v (format "cd %s" (tramp-shell-quote-argument cwd)))
- (tramp-send-command-and-check
- v (format
- "%s -sf %s %s" ln
- (tramp-shell-quote-argument target)
- ;; The command could exceed PATH_MAX, so we use
- ;; relative file names. However, relative file names
- ;; could start with "-".
- ;; `tramp-shell-quote-argument' does not handle this,
- ;; we must do it ourselves.
- (tramp-shell-quote-argument
- (concat "./" (file-name-nondirectory localname))))))))))
+ "Like `make-symbolic-link' for Tramp files."
+ (let ((v (tramp-dissect-file-name (expand-file-name linkname))))
+ (unless (tramp-get-remote-ln v)
+ (tramp-error
+ v 'file-error
+ (concat "Making a symbolic link: "
+ "ln(1) does not exist on the remote host"))))
+
+ (tramp-skeleton-handle-make-symbolic-link target linkname ok-if-already-exists
+ (and (tramp-send-command-and-check
+ v (format
+ "cd %s"
+ (tramp-shell-quote-argument (file-name-directory localname))))
+ (tramp-send-command-and-check
+ v (format
+ "%s -sf %s %s" (tramp-get-remote-ln v)
+ (tramp-shell-quote-argument target)
+ ;; The command could exceed PATH_MAX, so we use relative
+ ;; file names.
+ (tramp-shell-quote-argument
+ (concat "./" (file-name-nondirectory localname))))))))
(defun tramp-sh-handle-file-truename (filename)
"Like `file-truename' for Tramp files."
- ;; Preserve trailing "/".
- (funcall
- (if (directory-name-p filename) #'file-name-as-directory #'identity)
- ;; Quote properly.
- (funcall
- (if (tramp-compat-file-name-quoted-p filename)
- #'tramp-compat-file-name-quote #'identity)
- (with-parsed-tramp-file-name
- (tramp-compat-file-name-unquote (expand-file-name filename)) nil
- (tramp-make-tramp-file-name
- v
- (with-tramp-file-property v localname "file-truename"
- (tramp-message v 4 "Finding true name for `%s'" filename)
- (let ((result
- (cond
- ;; Use GNU readlink --canonicalize-missing where available.
- ((tramp-get-remote-readlink v)
- (tramp-send-command-and-check
- v (format "%s --canonicalize-missing %s"
- (tramp-get-remote-readlink v)
- (tramp-shell-quote-argument localname)))
- (with-current-buffer (tramp-get-connection-buffer v)
- (goto-char (point-min))
- (buffer-substring (point-min) (line-end-position))))
-
- ;; Use Perl implementation.
- ((and (tramp-get-remote-perl v)
- (tramp-get-connection-property v "perl-file-spec")
- (tramp-get-connection-property v "perl-cwd-realpath"))
- (tramp-maybe-send-script
- v tramp-perl-file-truename "tramp_perl_file_truename")
- (tramp-send-command-and-read
- v (format "tramp_perl_file_truename %s"
- (tramp-shell-quote-argument localname))))
-
- ;; Do it yourself.
- (t (tramp-file-local-name
- (tramp-handle-file-truename filename))))))
-
- ;; Detect cycle.
- (when (and (file-symlink-p filename)
- (string-equal result localname))
- (tramp-error
- v 'file-error
- "Apparent cycle of symbolic links for %s" filename))
- ;; If the resulting localname looks remote, we must quote it
- ;; for security reasons.
- (when (file-remote-p result)
- (setq result (tramp-compat-file-name-quote result 'top)))
- (tramp-message v 4 "True name of `%s' is `%s'" localname result)
- result)))))))
+ (tramp-skeleton-file-truename filename
+ (cond
+ ;; Use GNU readlink --canonicalize-missing where available.
+ ((tramp-get-remote-readlink v)
+ (tramp-send-command-and-check
+ v (format "%s --canonicalize-missing %s"
+ (tramp-get-remote-readlink v)
+ (tramp-shell-quote-argument localname)))
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (goto-char (point-min))
+ (buffer-substring (point-min) (line-end-position))))
+
+ ;; Use Perl implementation.
+ ((and (tramp-get-remote-perl v)
+ (tramp-get-connection-property v "perl-file-spec")
+ (tramp-get-connection-property v "perl-cwd-realpath"))
+ (tramp-maybe-send-script
+ v tramp-perl-file-truename "tramp_perl_file_truename")
+ (tramp-send-command-and-read
+ v (format "tramp_perl_file_truename %s"
+ (tramp-shell-quote-argument localname))))
+
+ ;; Do it yourself.
+ (t (tramp-file-local-name
+ (tramp-handle-file-truename filename))))))
;; Basic functions.
(defun tramp-sh-handle-file-exists-p (filename)
"Like `file-exists-p' for Tramp files."
- ;; `file-exists-p' is used as predicate in file name completion.
- ;; We don't want to run it when `non-essential' is t, or there is
- ;; no connection process yet.
- (when (tramp-connectable-p filename)
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (with-tramp-file-property v localname "file-exists-p"
- (if (tramp-file-property-p v localname "file-attributes")
- (not (null (tramp-get-file-property v localname "file-attributes")))
- (tramp-send-command-and-check
- v
- (format
- "%s %s"
- (tramp-get-file-exists-command v)
- (tramp-shell-quote-argument localname))))))))
+ (tramp-skeleton-file-exists-p filename
+ (tramp-send-command-and-check
+ v
+ (format
+ "%s %s"
+ (tramp-get-file-exists-command v)
+ (tramp-shell-quote-argument localname)))))
(defun tramp-sh-handle-file-attributes (filename &optional id-format)
"Like `file-attributes' for Tramp files."
@@ -1438,7 +1376,7 @@ component is used as the target of the symlink."
(modtime (or (file-attribute-modification-time attr)
tramp-time-doesnt-exist)))
(setq coding-system-used last-coding-system-used)
- (if (not (tramp-compat-time-equal-p modtime tramp-time-dont-know))
+ (if (not (time-equal-p modtime tramp-time-dont-know))
(tramp-run-real-handler #'set-visited-file-modtime (list modtime))
(progn
(tramp-send-command
@@ -1478,9 +1416,7 @@ of."
(cond
;; File exists, and has a known modtime.
- ((and attr
- (not
- (tramp-compat-time-equal-p modtime tramp-time-dont-know)))
+ ((and attr (not (time-equal-p modtime tramp-time-dont-know)))
(< (abs (tramp-time-diff modtime mt)) 2))
;; Modtime has the don't know value.
(attr
@@ -1497,7 +1433,7 @@ of."
v localname "visited-file-modtime-ild" "")))
;; If file does not exist, say it is not modified if and
;; only if that agrees with the buffer's record.
- (t (tramp-compat-time-equal-p mt tramp-time-doesnt-exist)))))))))
+ (t (time-equal-p mt tramp-time-doesnt-exist)))))))))
(defun tramp-sh-handle-set-file-modes (filename mode &optional flag)
"Like `set-file-modes' for Tramp files."
@@ -1519,21 +1455,17 @@ of."
"Like `set-file-times' for Tramp files."
(tramp-skeleton-set-file-modes-times-uid-gid filename
(when (tramp-get-remote-touch v)
- (let ((time
- (if (or (null time)
- (tramp-compat-time-equal-p time tramp-time-doesnt-exist)
- (tramp-compat-time-equal-p time tramp-time-dont-know))
- nil
- time)))
- (tramp-send-command-and-check
- v (format
- "env TZ=UTC0 %s %s %s %s"
- (tramp-get-remote-touch v)
- (if (tramp-get-connection-property v "touch-t")
- (format "-t %s" (format-time-string "%Y%m%d%H%M.%S" time t))
- "")
- (if (eq flag 'nofollow) "-h" "")
- (tramp-shell-quote-argument localname)))))))
+ (tramp-send-command-and-check
+ v (format
+ "env TZ=UTC0 %s %s %s %s"
+ (tramp-get-remote-touch v)
+ (if (tramp-get-connection-property v "touch-t")
+ (format
+ "-t %s"
+ (format-time-string "%Y%m%d%H%M.%S" (tramp-defined-time time) t))
+ "")
+ (if (eq flag 'nofollow) "-h" "")
+ (tramp-shell-quote-argument localname))))))
(defun tramp-sh-handle-get-home-directory (vec &optional user)
"The remote home directory for connection VEC as local file name.
@@ -1631,7 +1563,7 @@ ID-FORMAT valid values are `string' and `integer'."
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-tramp-file-property v localname "file-selinux-context"
(let ((context '(nil nil nil nil))
- (regexp (tramp-compat-rx
+ (regexp (rx
(group (+ (any "_" alnum))) ":"
(group (+ (any "_" alnum))) ":"
(group (+ (any "_" alnum))) ":"
@@ -1723,7 +1655,7 @@ ID-FORMAT valid values are `string' and `integer'."
(if (tramp-file-property-p v localname "file-attributes")
(or (tramp-check-cached-permissions v ?x)
(tramp-check-cached-permissions v ?s))
- (tramp-run-test "-x" filename)))))
+ (tramp-run-test v "-x" localname)))))
(defun tramp-sh-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
@@ -1733,7 +1665,7 @@ ID-FORMAT valid values are `string' and `integer'."
;; satisfied without remote operation.
(if (tramp-file-property-p v localname "file-attributes")
(tramp-handle-file-readable-p filename)
- (tramp-run-test "-r" filename)))))
+ (tramp-run-test v "-r" localname)))))
;; Functions implemented using the basic functions above.
@@ -1744,7 +1676,7 @@ ID-FORMAT valid values are `string' and `integer'."
;; Sometimes, when a connection is not established yet, it is
;; desirable to return t immediately for "/method:foo:". It can
;; be expected that this is always a directory.
- (or (zerop (length localname))
+ (or (tramp-string-empty-or-nil-p localname)
(with-tramp-file-property v localname "file-directory-p"
(if-let
((truename (tramp-get-file-property v localname "file-truename"))
@@ -1754,7 +1686,7 @@ ID-FORMAT valid values are `string' and `integer'."
(tramp-get-file-property
v (tramp-file-local-name truename) "file-attributes"))
t)
- (tramp-run-test "-d" filename))))))
+ (tramp-run-test v "-d" localname))))))
(defun tramp-sh-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
@@ -1765,7 +1697,7 @@ ID-FORMAT valid values are `string' and `integer'."
;; Examine `file-attributes' cache to see if request can
;; be satisfied without remote operation.
(tramp-check-cached-permissions v ?w)
- (tramp-run-test "-w" filename))
+ (tramp-run-test v "-w" localname))
;; If file doesn't exist, check if directory is writable.
(and
(file-directory-p (file-name-directory filename))
@@ -1839,64 +1771,43 @@ ID-FORMAT valid values are `string' and `integer'."
(with-parsed-tramp-file-name (expand-file-name directory) nil
(when (and (not (tramp-compat-string-search "/" filename))
(tramp-connectable-p v))
- (all-completions
- filename
- (with-tramp-file-property v localname "file-name-all-completions"
- (let (result)
- ;; Get a list of directories and files, including reliably
- ;; tagging the directories with a trailing "/". Because I
- ;; rock. --daniel@danann.net
- (tramp-send-command
- v
- (if (tramp-get-remote-perl v)
- (progn
- (tramp-maybe-send-script
- v tramp-perl-file-name-all-completions
- "tramp_perl_file_name_all_completions")
- (format "tramp_perl_file_name_all_completions %s"
- (tramp-shell-quote-argument localname)))
-
- (format (concat
- "(cd %s 2>&1 && %s -a 2>%s"
- " | while IFS= read f; do"
- " if %s -d \"$f\" 2>%s;"
- " then \\echo \"$f/\"; else \\echo \"$f\"; fi; done"
- " && \\echo ok) || \\echo fail")
- (tramp-shell-quote-argument localname)
- (tramp-get-ls-command v)
- (tramp-get-remote-null-device v)
- (tramp-get-test-command v)
- (tramp-get-remote-null-device v))))
-
- ;; Now grab the output.
- (with-current-buffer (tramp-get-buffer v)
- (goto-char (point-max))
-
- ;; Check result code, found in last line of output.
- (forward-line -1)
- (if (looking-at-p (rx bol "fail" eol))
- (progn
- ;; Grab error message from line before last line
- ;; (it was put there by `cd 2>&1').
- (forward-line -1)
- (tramp-error
- v 'file-error
- "tramp-sh-handle-file-name-all-completions: %s"
- (buffer-substring (point) (line-end-position))))
- ;; For peace of mind, if buffer doesn't end in `fail'
- ;; then it should end in `ok'. If neither are in the
- ;; buffer something went seriously wrong on the remote
- ;; side.
- (unless (looking-at-p (rx bol "ok" eol))
- (tramp-error
- v 'file-error
- (concat "tramp-sh-handle-file-name-all-completions: "
- "internal error accessing `%s': `%s'")
- (tramp-shell-quote-argument localname) (buffer-string))))
-
- (while (zerop (forward-line -1))
- (push (buffer-substring (point) (line-end-position)) result)))
- result))))))
+ (unless (tramp-compat-string-search "/" filename)
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (let (result)
+ ;; Get a list of directories and files, including
+ ;; reliably tagging the directories with a trailing "/".
+ ;; Because I rock. --daniel@danann.net
+ (when (tramp-send-command-and-check
+ v
+ (if (tramp-get-remote-perl v)
+ (progn
+ (tramp-maybe-send-script
+ v tramp-perl-file-name-all-completions
+ "tramp_perl_file_name_all_completions")
+ (format "tramp_perl_file_name_all_completions %s"
+ (tramp-shell-quote-argument localname)))
+
+ (format (concat
+ "cd %s 2>&1 && %s -a 2>%s"
+ " | while IFS= read f; do"
+ " if %s -d \"$f\" 2>%s;"
+ " then \\echo \"$f/\"; else \\echo \"$f\"; fi;"
+ " done")
+ (tramp-shell-quote-argument localname)
+ (tramp-get-ls-command v)
+ (tramp-get-remote-null-device v)
+ (tramp-get-test-command v)
+ (tramp-get-remote-null-device v))))
+
+ ;; Now grab the output.
+ (with-current-buffer (tramp-get-buffer v)
+ (goto-char (point-max))
+ (while (zerop (forward-line -1))
+ (push (buffer-substring (point) (line-end-position)) result)))
+ result)))))))))
;; cp, mv and ln
@@ -2239,7 +2150,7 @@ the uid and gid from FILENAME."
cmd-result)
(tramp-error-with-buffer
nil v 'file-error
- "Copying directly failed, see buffer `%s' for details."
+ "Copying directly failed, see buffer `%s' for details"
(buffer-name)))))
;; We are on the local host.
@@ -2294,7 +2205,7 @@ the uid and gid from FILENAME."
"%s %s %s" cmd
(tramp-shell-quote-argument localname1)
(tramp-shell-quote-argument tmpfile))
- "Copying directly failed, see buffer `%s' for details."
+ "Copying directly failed, see buffer `%s' for details"
(tramp-get-buffer v))
;; We must change the ownership as remote user.
;; Since this does not work reliable, we also
@@ -2327,7 +2238,7 @@ the uid and gid from FILENAME."
"cp -f -p %s %s"
(tramp-shell-quote-argument tmpfile)
(tramp-shell-quote-argument localname2))
- "Copying directly failed, see buffer `%s' for details."
+ "Copying directly failed, see buffer `%s' for details"
(tramp-get-buffer v)))
(t1
(tramp-run-real-handler
@@ -2357,7 +2268,7 @@ The method used must be an out-of-band method."
copy-program copy-args copy-env copy-keep-date listener spec
options source target remote-copy-program remote-copy-args p)
- (if (and v1 v2 (zerop (length (tramp-scp-direct-remote-copying v1 v2))))
+ (if (and v1 v2 (string-empty-p (tramp-scp-direct-remote-copying v1 v2)))
;; Both are Tramp files. We cannot use direct remote copying.
(let* ((dir-flag (file-directory-p filename))
@@ -2389,10 +2300,10 @@ The method used must be an out-of-band method."
#'identity)
(if v1
(tramp-make-copy-program-file-name v1)
- (tramp-compat-file-name-unquote filename)))
+ (file-name-unquote filename)))
target (if v2
(tramp-make-copy-program-file-name v2)
- (tramp-compat-file-name-unquote newname)))
+ (file-name-unquote newname)))
;; Check for listener port.
(when (tramp-get-method-parameter v 'tramp-remote-copy-args)
@@ -2436,7 +2347,7 @@ The method used must be an out-of-band method."
;; `tramp-ssh-controlmaster-options' is a string instead
;; of a list. Unflatten it.
copy-args
- (tramp-compat-flatten-tree
+ (flatten-tree
(mapcar
(lambda (x) (if (tramp-compat-string-search " " x)
(split-string x) x))
@@ -2463,8 +2374,7 @@ The method used must be an out-of-band method."
v 'file-error
"Cannot find remote listener: %s" remote-copy-program))
(setq remote-copy-program
- (mapconcat
- #'identity
+ (string-join
(append
(list remote-copy-program) remote-copy-args
(list (if v1 (concat "<" source) (concat ">" target)) "&"))
@@ -2517,7 +2427,11 @@ The method used must be an out-of-band method."
(tramp-get-connection-buffer v)
copy-program copy-args)))
(tramp-message v 6 "%s" (string-join (process-command p) " "))
- (process-put p 'vector v)
+ (process-put p 'tramp-vector v)
+ ;; This is neded for ssh or PuTTY based processes, and
+ ;; only if the respective options are set. Perhaps,
+ ;; the setting could be more fine-grained.
+ ;; (process-put p 'tramp-shared-socket t)
(process-put p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
@@ -2557,19 +2471,10 @@ The method used must be an out-of-band method."
(defun tramp-sh-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (setq dir (expand-file-name dir))
- (with-parsed-tramp-file-name dir nil
- (when (and (null parents) (file-exists-p dir))
- (tramp-error v 'file-already-exists dir))
- ;; When PARENTS is non-nil, DIR could be a chain of non-existent
- ;; directories a/b/c/... Instead of checking, we simply flush the
- ;; whole cache.
- (tramp-flush-directory-properties
- v (if parents "/" (file-name-directory localname)))
+ (tramp-skeleton-make-directory dir parents
(tramp-barf-unless-okay
v (format "%s -m %#o %s"
- (if parents "mkdir -p" "mkdir")
- (default-file-modes)
+ "mkdir" (default-file-modes)
(tramp-shell-quote-argument localname))
"Couldn't make directory %s" dir)))
@@ -2584,14 +2489,10 @@ The method used must be an out-of-band method."
(defun tramp-sh-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
- (setq filename (expand-file-name (expand-file-name filename)))
- (with-parsed-tramp-file-name filename nil
- (if (and delete-by-moving-to-trash trash)
- (move-file-to-trash filename)
- (tramp-barf-unless-okay
- v (format "rm -f %s" (tramp-shell-quote-argument localname))
- "Couldn't delete %s" filename))
- (tramp-flush-file-properties v localname)))
+ (tramp-skeleton-delete-file filename trash
+ (tramp-barf-unless-okay
+ v (format "rm -f %s" (tramp-shell-quote-argument localname))
+ "Couldn't delete %s" filename)))
;; Dired.
@@ -2705,9 +2606,9 @@ The method used must be an out-of-band method."
(tramp-get-ls-command v)
switches
(if (or wildcard
- (zerop (length
- (tramp-run-real-handler
- #'file-name-nondirectory (list localname)))))
+ (tramp-string-empty-or-nil-p
+ (tramp-run-real-handler
+ #'file-name-nondirectory (list localname))))
""
(tramp-shell-quote-argument
(tramp-run-real-handler
@@ -2824,14 +2725,14 @@ the result will be a local, non-Tramp, file name."
;; If DIR is not given, use `default-directory' or "/".
(setq dir (or dir default-directory "/"))
;; Handle empty NAME.
- (when (zerop (length name)) (setq name "."))
+ (when (string-empty-p name)
+ (setq name "."))
;; On MS Windows, some special file names are not returned properly
;; by `file-name-absolute-p'. If `tramp-syntax' is `simplified',
;; there could be the false positive "/:".
(if (or (and (eq system-type 'windows-nt)
(string-match-p
- (tramp-compat-rx bol (| (: alpha ":") (: (literal null-device) eol)))
- name))
+ (rx bol (| (: alpha ":") (: (literal null-device) eol))) name))
(and (not (tramp-tramp-file-p name))
(not (tramp-tramp-file-p dir))))
(tramp-run-real-handler #'expand-file-name (list name dir))
@@ -2850,9 +2751,7 @@ the result will be a local, non-Tramp, file name."
;; supposed to find such a shell on the remote host. Please
;; tell me about it when this doesn't work on your system.
(when (string-match
- (tramp-compat-rx
- bos "~" (group (* (not "/"))) (group (* nonl)) eos)
- localname)
+ (rx bos "~" (group (* (not "/"))) (group (* nonl)) eos) localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname))
hname)
@@ -2862,7 +2761,7 @@ the result will be a local, non-Tramp, file name."
;; the default user name for tilde expansion is not
;; appropriate either, because ssh and companions might
;; use a user name from the config file.
- (when (and (zerop (length uname))
+ (when (and (tramp-string-empty-or-nil-p uname)
(string-match-p (rx bos "su" (? "do") eos) method))
(setq uname user))
(when (setq hname (tramp-get-home-directory v uname))
@@ -2963,7 +2862,7 @@ implementation will be used."
(heredoc (and (not (bufferp stderr))
(stringp program)
(string-match-p (rx "sh" eol) program)
- (= (length args) 2)
+ (tramp-compat-length= args 2)
(string-equal "-c" (car args))
;; Don't if there is a quoted string.
(not
@@ -2973,7 +2872,7 @@ implementation will be used."
;; When PROGRAM is nil, we just provide a tty.
(args (if (not heredoc) args
(let ((i 250))
- (while (and (< i (length (cadr args)))
+ (while (and (not (tramp-compat-length< (cadr args) i))
(string-match " " (cadr args) i))
(setcdr
args
@@ -3089,13 +2988,20 @@ implementation will be used."
(process-put p 'remote-pid pid)
(tramp-set-connection-property
p "remote-pid" pid))
- ;; Disable carriage return to newline
- ;; translation. This does not work on
- ;; macOS, see Bug#50748.
- (when (and (memq connection-type '(nil pipe))
- (not
- (tramp-check-remote-uname v "Darwin")))
- (tramp-send-command v "stty -icrnl"))
+ (when (memq connection-type '(nil pipe))
+ ;; Disable carriage return to newline
+ ;; translation. This does not work on
+ ;; macOS, see Bug#50748.
+ ;; We must also disable buffering,
+ ;; otherwise strings larger than 4096
+ ;; bytes, sent by the process, could
+ ;; block, see termios(3) and Bug#61341.
+ ;; FIXME: Shall we rather use "stty raw"?
+ (if (tramp-check-remote-uname v "Darwin")
+ (tramp-send-command
+ v "stty -icanon min 1 time 0")
+ (tramp-send-command
+ v "stty -icrnl -icanon min 1 time 0")))
;; `tramp-maybe-open-connection' and
;; `tramp-send-command-and-read' could
;; have trashed the connection buffer.
@@ -3196,8 +3102,7 @@ implementation will be used."
(format
"%s %s %s"
(tramp-get-method-parameter vec 'tramp-remote-shell)
- (mapconcat
- #'identity
+ (string-join
(tramp-get-method-parameter vec 'tramp-remote-shell-args)
" ")
(tramp-shell-quote-argument (format "kill -%d $$" i))))
@@ -3244,7 +3149,7 @@ implementation will be used."
;; Determine input.
(if (null infile)
(setq input (tramp-get-remote-null-device v))
- (setq infile (tramp-compat-file-name-unquote (expand-file-name infile)))
+ (setq infile (file-name-unquote (expand-file-name infile)))
(if (tramp-equal-remote default-directory infile)
;; INFILE is on the same remote host.
(setq input (tramp-unquote-file-local-name infile))
@@ -3855,16 +3760,20 @@ Fall back to normal file name handler if no Tramp handler exists."
"`%s' failed to start on remote host"
(string-join sequence " "))
(tramp-message v 6 "Run `%s', %S" (string-join sequence " ") p)
- (process-put p 'vector v)
+ (process-put p 'tramp-vector v)
+ ;; This is neded for ssh or PuTTY based processes, and only if
+ ;; the respective options are set. Perhaps, the setting could
+ ;; be more fine-grained.
+ ;; (process-put p 'tramp-shared-socket t)
;; Needed for process filter.
- (process-put p 'events events)
- (process-put p 'watch-name localname)
+ (process-put p 'tramp-events events)
+ (process-put p 'tramp-watch-name localname)
(set-process-query-on-exit-flag p nil)
(set-process-filter p filter)
(set-process-sentinel p #'tramp-file-notify-process-sentinel)
;; There might be an error if the monitor is not supported.
;; Give the filter a chance to read the output.
- (while (tramp-accept-process-output p 0))
+ (while (tramp-accept-process-output p))
(unless (process-live-p p)
(tramp-error
p 'file-notify-error "Monitoring not supported for `%s'" file-name))
@@ -3872,10 +3781,10 @@ Fall back to normal file name handler if no Tramp handler exists."
(defun tramp-sh-gio-monitor-process-filter (proc string)
"Read output from \"gio monitor\" and add corresponding `file-notify' events."
- (let ((events (process-get proc 'events))
+ (let ((events (process-get proc 'tramp-events))
(remote-prefix
(file-remote-p (tramp-get-default-directory (process-buffer proc))))
- (rest-string (process-get proc 'rest-string))
+ (rest-string (process-get proc 'tramp-rest-string))
pos)
(when rest-string
(tramp-message proc 10 "Previous string:\n%s" rest-string))
@@ -3925,7 +3834,7 @@ Fall back to normal file name handler if no Tramp handler exists."
(setq string (tramp-compat-string-replace "\n\n" "\n" string))
(while (string-match
- (tramp-compat-rx
+ (rx
bol (+ (not ":")) ":" blank
(group (+ (not ":"))) ":" blank
(group (regexp (regexp-opt tramp-gio-events)))
@@ -3955,15 +3864,15 @@ Fall back to normal file name handler if no Tramp handler exists."
;; Save rest of the string.
(while (string-match (rx bol "\n") string)
(setq string (replace-match "" nil nil string)))
- (when (zerop (length string)) (setq string nil))
+ (when (string-empty-p string) (setq string nil))
(when string (tramp-message proc 10 "Rest string:\n%s" string))
- (process-put proc 'rest-string string)))
+ (process-put proc 'tramp-rest-string string)))
(defun tramp-sh-inotifywait-process-filter (proc string)
"Read output from \"inotifywait\" and add corresponding `file-notify' events."
- (let ((events (process-get proc 'events)))
+ (let ((events (process-get proc 'tramp-events)))
(tramp-message proc 6 "%S\n%s" proc string)
- (dolist (line (split-string string "[\n\r]+" 'omit))
+ (dolist (line (split-string string (rx (+ (any "\r\n"))) 'omit))
;; Check, whether there is a problem.
(unless (string-match
(rx bol (+ (not blank)) (+ blank) (group (+ (not blank)))
@@ -3980,7 +3889,8 @@ Fall back to normal file name handler if no Tramp handler exists."
(tramp-compat-string-replace "_" "-" (downcase x))))
(split-string (match-string 1 line) "," 'omit))
(or (match-string 2 line)
- (file-name-nondirectory (process-get proc 'watch-name))))))
+ (file-name-nondirectory
+ (process-get proc 'tramp-watch-name))))))
;; Usually, we would add an Emacs event now. Unfortunately,
;; `unread-command-events' does not accept several events at
;; once. Therefore, we apply the handler directly.
@@ -4028,66 +3938,55 @@ commands. \"%n\" is replaced by \"2>/dev/null\", and \"%t\" is
replaced by a temporary file name. If VEC is nil, the respective
local commands are used. If there is a format specifier which
cannot be expanded, this function returns nil."
- (if (not (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%" (any "ahlnoprsty")) script))
+ (if (not (string-match-p (rx (| bol (not "%")) "%" (any "ahlnoprsty")) script))
script
(catch 'wont-work
- (let ((awk (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%a") script)
+ (let ((awk (when (string-match-p (rx (| bol (not "%")) "%a") script)
(or
(if vec (tramp-get-remote-awk vec) (executable-find "awk"))
(throw 'wont-work nil))))
- (hdmp (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%h") script)
+ (hdmp (when (string-match-p (rx (| bol (not "%")) "%h") script)
(or
(if vec (tramp-get-remote-hexdump vec)
(executable-find "hexdump"))
(throw 'wont-work nil))))
- (dev (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%n") script)
+ (dev (when (string-match-p (rx (| bol (not "%")) "%n") script)
(or
(if vec (concat "2>" (tramp-get-remote-null-device vec))
(if (eq system-type 'windows-nt) ""
(concat "2>" null-device)))
(throw 'wont-work nil))))
- (ls (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%l") script)
+ (ls (when (string-match-p (rx (| bol (not "%")) "%l") script)
(format "%s %s"
(or (tramp-get-ls-command vec)
(throw 'wont-work nil))
(tramp-sh--quoting-style-options vec))))
- (od (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%o") script)
+ (od (when (string-match-p (rx (| bol (not "%")) "%o") script)
(or (if vec (tramp-get-remote-od vec) (executable-find "od"))
(throw 'wont-work nil))))
- (perl (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%p") script)
+ (perl (when (string-match-p (rx (| bol (not "%")) "%p") script)
(or
(if vec
(tramp-get-remote-perl vec) (executable-find "perl"))
(throw 'wont-work nil))))
- (python (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%y") script)
- (or
- (if vec
- (tramp-get-remote-python vec)
- (executable-find "python"))
- (throw 'wont-work nil))))
- (readlink (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%r") script)
+ (python (when (string-match-p (rx (| bol (not "%")) "%y") script)
+ (or
+ (if vec
+ (tramp-get-remote-python vec)
+ (executable-find "python"))
+ (throw 'wont-work nil))))
+ (readlink (when (string-match-p (rx (| bol (not "%")) "%r") script)
(or
(if vec
- (tramp-get-remote-readlink vec)
- (executable-find "readlink"))
- (throw 'wont-work nil))))
- (stat (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%s") script)
+ (tramp-get-remote-readlink vec)
+ (executable-find "readlink"))
+ (throw 'wont-work nil))))
+ (stat (when (string-match-p (rx (| bol (not "%")) "%s") script)
(or
(if vec
(tramp-get-remote-stat vec) (executable-find "stat"))
(throw 'wont-work nil))))
- (tmp (when (string-match-p
- (tramp-compat-rx (| bol (not "%")) "%t") script)
+ (tmp (when (string-match-p (rx (| bol (not "%")) "%t") script)
(or
(if vec
(tramp-file-local-name (tramp-make-tramp-temp-name vec))
@@ -4126,17 +4025,14 @@ Only send the definition if it has not already been done."
(tramp-set-connection-property
(tramp-get-connection-process vec) "scripts" (cons name scripts))))))
-(defun tramp-run-test (switch filename)
- "Run `test' on the remote system, given a SWITCH and a FILENAME.
+(defun tramp-run-test (vec switch localname)
+ "Run `test' on the remote system VEC, given a SWITCH and a LOCALNAME.
Returns the exit code of the `test' program."
- (with-parsed-tramp-file-name filename nil
- (tramp-send-command-and-check
- v
- (format
- "%s %s %s"
- (tramp-get-test-command v)
- switch
- (tramp-shell-quote-argument localname)))))
+ (tramp-send-command-and-check
+ vec
+ (format
+ "%s %s %s"
+ (tramp-get-test-command vec) switch (tramp-shell-quote-argument localname))))
(defun tramp-find-executable
(vec progname dirlist &optional ignore-tilde ignore-path)
@@ -4211,7 +4107,7 @@ variable PATH."
'noerror)))
tmpfile chunk chunksize)
(tramp-message vec 5 "Setting $PATH environment variable")
- (if (< (length command) pipe-buf)
+ (if (tramp-compat-length< command pipe-buf)
(tramp-send-command vec command)
;; Use a temporary file. We cannot use `write-region' because
;; setting the remote path happens in the early connection
@@ -4348,8 +4244,7 @@ file exists and nonzero exit status otherwise."
"Couldn't find remote shell prompt for %s" shell)
(unless
(tramp-check-for-regexp
- (tramp-get-connection-process vec)
- (tramp-compat-rx (literal tramp-end-of-output)))
+ (tramp-get-connection-process vec) (rx (literal tramp-end-of-output)))
(tramp-wait-for-output (tramp-get-connection-process vec))
(tramp-message vec 5 "Setting shell prompt")
(tramp-send-command
@@ -4390,8 +4285,7 @@ file exists and nonzero exit status otherwise."
(tramp-send-command
vec (format "echo ~%s" tramp-root-id-string) t)
(if (or (string-match-p
- (tramp-compat-rx
- bol "~" (literal tramp-root-id-string) eol)
+ (rx bol "~" (literal tramp-root-id-string) eol)
(buffer-string))
;; The default shell (ksh93) of OpenSolaris
;; and Solaris is buggy. We've got reports
@@ -4426,11 +4320,11 @@ file exists and nonzero exit status otherwise."
"Wait for shell prompt and barf if none appears.
Looks at process PROC to see if a shell prompt appears in TIMEOUT
seconds. If not, it produces an error message with the given ERROR-ARGS."
- (let ((vec (process-get proc 'vector)))
+ (let ((vec (process-get proc 'tramp-vector)))
(condition-case nil
(tramp-wait-for-regexp
proc timeout
- (tramp-compat-rx
+ (rx
(| (regexp shell-prompt-pattern) (regexp tramp-shell-prompt-pattern))
eos))
(error
@@ -4602,7 +4496,7 @@ process to set up. VEC specifies the connection."
;; Set `remote-tty' process property.
(let ((tty (tramp-send-command-and-read vec "echo \\\"`tty`\\\"" 'noerror)))
- (unless (zerop (length tty))
+ (unless (tramp-string-empty-or-nil-p tty)
(process-put proc 'remote-tty tty)
(tramp-set-connection-property proc "remote-tty" tty)))
@@ -4817,7 +4711,7 @@ Goes through the list `tramp-local-coding-commands' and
(with-current-buffer (tramp-get-connection-buffer vec)
(goto-char (point-min))
- (unless (looking-at-p (tramp-compat-rx (literal magic)))
+ (unless (looking-at-p (rx (literal magic)))
(throw 'wont-work-remote nil)))
;; `rem-enc' and `rem-dec' could be a string meanwhile.
@@ -4903,7 +4797,7 @@ Goes through the list `tramp-inline-compress-commands'."
nil t))
(throw 'next nil))
(goto-char (point-min))
- (unless (looking-at-p (tramp-compat-rx (literal magic)))
+ (unless (looking-at-p (rx (literal magic)))
(throw 'next nil)))
(tramp-message
vec 5
@@ -4914,7 +4808,7 @@ Goes through the list `tramp-inline-compress-commands'."
(throw 'next nil))
(with-current-buffer (tramp-get-buffer vec)
(goto-char (point-min))
- (unless (looking-at-p (tramp-compat-rx (literal magic)))
+ (unless (looking-at-p (rx (literal magic)))
(throw 'next nil)))
(setq found t)))
@@ -4936,49 +4830,55 @@ Goes through the list `tramp-inline-compress-commands'."
(tramp-message
vec 2 "Couldn't find an inline transfer compress command")))))
+(defun tramp-ssh-option-exists-p (vec option)
+ "Check, whether local ssh OPTION is applicable."
+ ;; We don't want to cache it persistently.
+ (with-tramp-connection-property nil option
+ ;; We use a non-existing IP address for check, in order to avoid
+ ;; useless connections, and DNS timeouts.
+ (zerop
+ (tramp-call-process vec "ssh" nil nil nil "-G" "-o" option "0.0.0.1"))))
+
(defun tramp-ssh-controlmaster-options (vec)
"Return the Control* arguments of the local ssh."
(cond
;; No options to be computed.
- ((or (null tramp-use-ssh-controlmaster-options)
+ ((or (null tramp-use-connection-share)
(null (assoc "%c" (tramp-get-method-parameter vec 'tramp-login-args))))
"")
+ ;; Use plink option.
+ ((string-match-p
+ (rx "plink" (? ".exe") eol)
+ (tramp-get-method-parameter vec 'tramp-login-program))
+ (if (eq tramp-use-connection-share 'suppress)
+ "-noshare" "-share"))
+
;; There is already a value to be used.
- ((stringp tramp-ssh-controlmaster-options) tramp-ssh-controlmaster-options)
+ ((and (eq tramp-use-connection-share t)
+ (stringp tramp-ssh-controlmaster-options))
+ tramp-ssh-controlmaster-options)
;; Determine the options.
- (t (setq tramp-ssh-controlmaster-options "")
- (let ((case-fold-search t))
- (ignore-errors
- (with-tramp-progress-reporter
- vec 4 "Computing ControlMaster options"
- ;; We use a non-existing IP address, in order to avoid
- ;; useless connections, and DNS timeouts.
- (when (zerop
- (tramp-call-process
- vec "ssh" nil nil nil
- "-G" "-o" "ControlMaster=auto" "0.0.0.1"))
- (setq tramp-ssh-controlmaster-options
- "-o ControlMaster=auto")
- (if (zerop
- (tramp-call-process
- vec "ssh" nil nil nil
- "-G" "-o" "ControlPath=tramp.%C" "0.0.0.1"))
- (setq tramp-ssh-controlmaster-options
- (concat tramp-ssh-controlmaster-options
- " -o ControlPath=tramp.%%C"))
- (setq tramp-ssh-controlmaster-options
- (concat tramp-ssh-controlmaster-options
- " -o ControlPath=tramp.%%r@%%h:%%p")))
- (when (zerop
- (tramp-call-process
- vec "ssh" nil nil nil
- "-G" "-o" "ControlPersist=no" "0.0.0.1"))
- (setq tramp-ssh-controlmaster-options
- (concat tramp-ssh-controlmaster-options
- " -o ControlPersist=no")))))))
- tramp-ssh-controlmaster-options)))
+ (t (ignore-errors
+ ;; ControlMaster and ControlPath options are introduced in OpenSSH 3.9.
+ (when (tramp-ssh-option-exists-p vec "ControlMaster=auto")
+ (concat
+ "-o ControlMaster="
+ (if (eq tramp-use-connection-share 'suppress)
+ "no" "auto")
+
+ " -o ControlPath="
+ (if (eq tramp-use-connection-share 'suppress)
+ "none"
+ ;; Hashed tokens are introduced in OpenSSH 6.7.
+ (if (tramp-ssh-option-exists-p vec "ControlPath=tramp.%C")
+ "tramp.%%C" "tramp.%%r@%%h:%%p"))
+
+ ;; ControlPersist option is introduced in OpenSSH 5.6.
+ (when (and (not (eq tramp-use-connection-share 'suppress))
+ (tramp-ssh-option-exists-p vec "ControlPersist=no"))
+ " -o ControlPersist=no")))))))
(defun tramp-scp-strict-file-name-checking (vec)
"Return the strict file name checking argument of the local scp."
@@ -5063,7 +4963,7 @@ Goes through the list `tramp-inline-compress-commands'."
(tramp-call-process
vec1 tramp-encoding-shell nil t nil
tramp-encoding-command-switch
- (mapconcat #'identity command " "))
+ (string-join command " "))
(goto-char (point-min))
(not (search-forward "remotecommand" nil 'noerror)))))
@@ -5082,11 +4982,11 @@ Goes through the list `tramp-inline-compress-commands'."
found string)
(with-temp-buffer
;; Check hostkey of VEC2, seen from VEC1.
- (tramp-send-command vec1 (mapconcat #'identity command " "))
+ (tramp-send-command vec1 (string-join command " "))
;; Check hostkey of VEC2, seen locally.
(tramp-call-process
vec1 tramp-encoding-shell nil t nil tramp-encoding-command-switch
- (mapconcat #'identity command " "))
+ (string-join command " "))
(goto-char (point-min))
(while (and (not found) (not (eobp)))
(setq string
@@ -5175,7 +5075,7 @@ connection if a previous connection has died for some reason."
(unless (process-live-p p)
(with-tramp-progress-reporter
vec 3
- (if (zerop (length (tramp-file-name-user vec)))
+ (if (tramp-string-empty-or-nil-p (tramp-file-name-user vec))
(format "Opening connection %s for %s using %s"
process-name
(tramp-file-name-host vec)
@@ -5232,7 +5132,11 @@ connection if a previous connection has died for some reason."
;; Set sentinel and query flag. Initialize variables.
(set-process-sentinel p #'tramp-process-sentinel)
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
+ ;; This is neded for ssh or PuTTY based processes, and
+ ;; only if the respective options are set. Perhaps,
+ ;; the setting could be more fine-grained.
+ ;; (process-put p 'tramp-shared-socket t)
(process-put p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
(setq tramp-current-connection (cons vec (current-time)))
@@ -5259,7 +5163,7 @@ connection if a previous connection has died for some reason."
(tramp-get-method-parameter hop 'tramp-remote-shell))
(extra-args (tramp-get-sh-extra-args remote-shell))
(async-args
- (tramp-compat-flatten-tree
+ (flatten-tree
(tramp-get-method-parameter hop 'tramp-async-args)))
(connection-timeout
(tramp-get-method-parameter
@@ -5310,8 +5214,7 @@ connection if a previous connection has died for some reason."
;; Replace `login-args' place holders.
(setq
command
- (mapconcat
- #'identity
+ (string-join
(append
;; We do not want to see the trailing local
;; prompt in `start-file-process'.
@@ -5403,7 +5306,7 @@ function waits for output unless NOOUTPUT is set."
;; Busyboxes built with the EDITING_ASK_TERMINAL config
;; option send also escape sequences, which must be
;; ignored.
- (regexp (tramp-compat-rx
+ (regexp (rx
(* (not (any "#$\n")))
(literal tramp-end-of-output)
(? (regexp tramp-device-escape-sequence-regexp))
@@ -5411,7 +5314,7 @@ function waits for output unless NOOUTPUT is set."
;; Sometimes, the commands do not return a newline but a
;; null byte before the shell prompt, for example "git
;; ls-files -c -z ...".
- (regexp1 (tramp-compat-rx (| bol "\000") (regexp regexp)))
+ (regexp1 (rx (| bol "\000") (regexp regexp)))
(found (tramp-wait-for-regexp proc timeout regexp1)))
(if found
(let ((inhibit-read-only t))
@@ -5451,8 +5354,7 @@ the exit status."
(let (cmd data)
(if (and (stringp command)
(string-match
- (tramp-compat-rx
- (* nonl) "<<'" (literal tramp-end-of-heredoc) "'" (* nonl))
+ (rx (* nonl) "<<'" (literal tramp-end-of-heredoc) "'" (* nonl))
command))
(setq cmd (match-string 0 command)
data (substring command (match-end 0)))
@@ -5549,7 +5451,7 @@ raises an error."
(cond
((tramp-get-method-parameter vec 'tramp-remote-copy-program)
localname)
- ((zerop (length user)) (format "%s:%s" host localname))
+ ((tramp-string-empty-or-nil-p user) (format "%s:%s" host localname))
(t (format "%s@%s:%s" user host localname)))))
(defun tramp-method-out-of-band-p (vec size)
@@ -5613,16 +5515,14 @@ Nonexistent directories are removed from spec."
(format
"%s %s %s 'echo %s \\\"$PATH\\\"'"
(tramp-get-method-parameter vec 'tramp-remote-shell)
- (mapconcat
- #'identity
+ (string-join
(tramp-get-method-parameter vec 'tramp-remote-shell-login)
" ")
- (mapconcat
- #'identity
+ (string-join
(tramp-get-method-parameter vec 'tramp-remote-shell-args)
" ")
(tramp-shell-quote-argument tramp-end-of-heredoc))
- 'noerror (tramp-compat-rx (literal tramp-end-of-heredoc)))
+ 'noerror (rx (literal tramp-end-of-heredoc)))
(progn
(tramp-message
vec 2 "Could not retrieve `tramp-own-remote-path'")
@@ -5672,8 +5572,7 @@ Nonexistent directories are removed from spec."
(while candidates
(goto-char (point-min))
(if (string-match-p
- (tramp-compat-rx bol (literal (car candidates)) (? "\r") eol)
- (buffer-string))
+ (rx bol (literal (car candidates)) (? "\r") eol) (buffer-string))
(setq locale (car candidates)
candidates nil)
(setq candidates (cdr candidates)))))
@@ -5751,7 +5650,7 @@ Nonexistent directories are removed from spec."
vec (format "( %s / -nt / )" (tramp-get-test-command vec)))
(with-current-buffer (tramp-get-buffer vec)
(goto-char (point-min))
- (when (looking-at-p (tramp-compat-rx (literal tramp-end-of-output)))
+ (when (looking-at-p (rx (literal tramp-end-of-output)))
(format "%s %%s -nt %%s" (tramp-get-test-command vec)))))
(progn
(tramp-send-command
@@ -5834,14 +5733,6 @@ Nonexistent directories are removed from spec."
vec (format "%s --canonicalize-missing /" result)))
result))))
-(defun tramp-get-remote-trash (vec)
- "Determine remote `trash' command.
-This command is returned only if `delete-by-moving-to-trash' is non-nil."
- (and delete-by-moving-to-trash
- (with-tramp-connection-property vec "trash"
- (tramp-message vec 5 "Finding a suitable `trash' command")
- (tramp-find-executable vec "trash" (tramp-get-remote-path vec)))))
-
(defun tramp-get-remote-touch (vec)
"Determine remote `touch' command."
(with-tramp-connection-property vec "touch"
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index cad6cb335cc..13d5e17a9ff 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -53,7 +53,7 @@
;;;###tramp-autoload
(tramp--with-startup
(add-to-list 'tramp-default-user-alist
- `(,(tramp-compat-rx bos (literal tramp-smb-method) eos) nil nil))
+ `(,(rx bos (literal tramp-smb-method) eos) nil nil))
;; Add completion function for SMB method.
(tramp-set-completion-function
@@ -92,9 +92,9 @@ this variable \"client min protocol=NT1\"."
"Version string of the SMB client.")
(defconst tramp-smb-server-version
- (tramp-compat-rx "Domain=[" (* (not "]")) "] "
- "OS=[" (* (not "]")) "] "
- "Server=[" (* (not "]")) "]")
+ (rx "Domain=[" (* (not "]")) "] "
+ "OS=[" (* (not "]")) "] "
+ "Server=[" (* (not "]")) "]")
"Regexp of SMB server identification.")
(defconst tramp-smb-prompt
@@ -269,6 +269,7 @@ See `tramp-actions-before-shell' for more info.")
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-smb-handle-file-system-info)
(file-truename . tramp-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-smb-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -487,9 +488,9 @@ arguments to pass to the OPERATION."
(args (list (concat "//" host "/" share) "-E"))
(options tramp-smb-options))
- (if (not (zerop (length user)))
- (setq args (append args (list "-U" user)))
- (setq args (append args (list "-N"))))
+ (if (tramp-string-empty-or-nil-p user)
+ (setq args (append args (list "-N")))
+ (setq args (append args (list "-U" user))))
(when domain (setq args (append args (list "-W" domain))))
(when port (setq args (append args (list "-p" port))))
@@ -558,7 +559,7 @@ arguments to pass to the OPERATION."
(tramp-message
v 6 "%s" (string-join (process-command p) " "))
- (process-put p 'vector v)
+ (process-put p 'tramp-vector v)
(process-put
p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
@@ -691,35 +692,29 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; "rmdir" does not report an error. So we check ourselves.
(when (file-exists-p directory)
- (tramp-error v 'file-error "`%s' not removed." directory)))))
+ (tramp-error v 'file-error "`%s' not removed" directory)))))
(defun tramp-smb-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
- (setq filename (expand-file-name filename))
- (when (file-exists-p filename)
- (with-parsed-tramp-file-name filename nil
- ;; We must also flush the cache of the directory, because
- ;; `file-attributes' reads the values from there.
- (tramp-flush-file-properties v localname)
- (if (and delete-by-moving-to-trash trash)
- (move-file-to-trash filename)
- (unless (tramp-smb-send-command
- v (format
- "%s %s"
- (if (tramp-smb-get-cifs-capabilities v) "posix_unlink" "rm")
- (tramp-smb-shell-quote-localname v)))
- ;; Error.
- (with-current-buffer (tramp-get-connection-buffer v)
- (goto-char (point-min))
- (search-forward-regexp tramp-smb-errors nil t)
- (tramp-error v 'file-error "%s `%s'" (match-string 0) filename)))))))
+ (tramp-skeleton-delete-file filename trash
+ (unless (tramp-smb-send-command
+ v (format
+ "%s %s"
+ (if (tramp-smb-get-cifs-capabilities v) "posix_unlink" "rm")
+ (tramp-smb-shell-quote-localname v)))
+ ;; Error.
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (goto-char (point-min))
+ (search-forward-regexp tramp-smb-errors nil t)
+ (tramp-error v 'file-error "%s `%s'" (match-string 0) filename)))))
(defun tramp-smb-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files."
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
(setq dir (or dir default-directory "/"))
;; Handle empty NAME.
- (when (zerop (length name)) (setq name "."))
+ (when (string-empty-p name)
+ (setq name "."))
;; Unless NAME is absolute, concat DIR and NAME.
(unless (file-name-absolute-p name)
(setq name (tramp-compat-file-name-concat dir name)))
@@ -730,12 +725,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(with-parsed-tramp-file-name name nil
;; Tilde expansion if necessary.
(when (string-match
- (tramp-compat-rx bos "~" (group (* (not "/"))) (group (* nonl)) eos)
- localname)
+ (rx bos "~" (group (* (not "/"))) (group (* nonl)) eos) localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname))
hname)
- (when (zerop (length uname))
+ (when (tramp-string-empty-or-nil-p uname)
(setq uname user))
(when (setq hname (tramp-get-home-directory v uname))
(setq localname (concat hname fname)))))
@@ -789,9 +783,9 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(args (list (concat "//" host "/" share) "-E"))
(options tramp-smb-options))
- (if (not (zerop (length user)))
- (setq args (append args (list "-U" user)))
- (setq args (append args (list "-N"))))
+ (if (tramp-string-empty-or-nil-p user)
+ (setq args (append args (list "-N")))
+ (setq args (append args (list "-U" user))))
(when domain (setq args (append args (list "-W" domain))))
(when port (setq args (append args (list "-p" port))))
@@ -806,32 +800,31 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(append args (list (tramp-unquote-shell-quote-argument localname)
(concat "2>" (tramp-get-remote-null-device v)))))
- (unwind-protect
- (with-tramp-saved-connection-properties
- v '("process-name" "process-buffer")
- (with-temp-buffer
- ;; Set the transfer process properties.
- (tramp-set-connection-property
- v "process-name" (buffer-name (current-buffer)))
- (tramp-set-connection-property
- v "process-buffer" (current-buffer))
-
- ;; Use an asynchronous process. By this, password
- ;; can be handled.
- (let ((p (apply
- #'start-process
- (tramp-get-connection-name v)
- (tramp-get-connection-buffer v)
- tramp-smb-acl-program args)))
-
- (tramp-message
- v 6 "%s" (string-join (process-command p) " "))
- (process-put p 'vector v)
- (process-put p 'adjust-window-size-function #'ignore)
- (set-process-query-on-exit-flag p nil)
- (tramp-process-actions p v nil tramp-smb-actions-get-acl)
- (when (> (point-max) (point-min))
- (substring-no-properties (buffer-string)))))))))))))
+ (with-tramp-saved-connection-properties
+ v '("process-name" "process-buffer")
+ (with-temp-buffer
+ ;; Set the transfer process properties.
+ (tramp-set-connection-property
+ v "process-name" (buffer-name (current-buffer)))
+ (tramp-set-connection-property
+ v "process-buffer" (current-buffer))
+
+ ;; Use an asynchronous process. By this, password
+ ;; can be handled.
+ (let ((p (apply
+ #'start-process
+ (tramp-get-connection-name v)
+ (tramp-get-connection-buffer v)
+ tramp-smb-acl-program args)))
+
+ (tramp-message
+ v 6 "%s" (string-join (process-command p) " "))
+ (process-put p 'tramp-vector v)
+ (process-put p 'adjust-window-size-function #'ignore)
+ (set-process-query-on-exit-flag p nil)
+ (tramp-process-actions p v nil tramp-smb-actions-get-acl)
+ (when (> (point-max) (point-min))
+ (substring-no-properties (buffer-string))))))))))))
(defun tramp-smb-handle-file-attributes (filename &optional id-format)
"Like `file-attributes' for Tramp files."
@@ -982,18 +975,20 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; files.
(defun tramp-smb-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
- (all-completions
- filename
- (with-parsed-tramp-file-name (expand-file-name directory) nil
- (with-tramp-file-property v localname "file-name-all-completions"
- (delete-dups
- (mapcar
- (lambda (x)
- (list
- (if (tramp-compat-string-search "d" (nth 1 x))
- (file-name-as-directory (nth 0 x))
- (nth 0 x))))
- (tramp-smb-get-file-entries directory)))))))
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (when (file-directory-p directory)
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (delete-dups
+ (mapcar
+ (lambda (x)
+ (list
+ (if (tramp-compat-string-search "d" (nth 1 x))
+ (file-name-as-directory (nth 0 x))
+ (nth 0 x))))
+ (tramp-smb-get-file-entries directory)))))))))
(defun tramp-smb-handle-file-system-info (filename)
"Like `file-system-info' for Tramp files."
@@ -1079,12 +1074,11 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(setq entries
(delq
nil
- (if (or wildcard (zerop (length base)))
+ (if (or wildcard (string-empty-p base))
;; Check for matching entries.
(mapcar
(lambda (x)
- (when (string-match-p
- (tramp-compat-rx bol (literal base)) (nth 0 x))
+ (when (string-match-p (rx bol (literal base)) (nth 0 x))
x))
entries)
;; We just need the only and only entry FILENAME.
@@ -1105,7 +1099,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(when (tramp-compat-string-search "F" switches)
(mapc
(lambda (x)
- (unless (zerop (length (car x)))
+ (unless (string-empty-p (car x))
(cond
((char-equal ?d (string-to-char (nth 1 x)))
(setcar x (concat (car x) "/")))
@@ -1125,7 +1119,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
;; Print entries.
(mapc
(lambda (x)
- (unless (zerop (length (nth 0 x)))
+ (unless (string-empty-p (nth 0 x))
(let ((attr
(when (tramp-smb-get-stat-capability v)
(ignore-errors
@@ -1172,98 +1166,31 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are completely ignored."
(defun tramp-smb-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (setq dir (directory-file-name (expand-file-name dir)))
- (unless (file-name-absolute-p dir)
- (setq dir (expand-file-name dir default-directory)))
- (with-parsed-tramp-file-name dir nil
- (when (and (null parents) (file-exists-p dir))
- (tramp-error v 'file-already-exists dir))
- (let* ((ldir (file-name-directory dir)))
- ;; Make missing directory parts.
- (when (and parents
- (tramp-smb-get-share v)
- (not (file-directory-p ldir)))
- (make-directory ldir parents))
- ;; Just do it.
- (when (file-directory-p ldir)
- (tramp-smb-send-command
- v (if (tramp-smb-get-cifs-capabilities v)
- (format "posix_mkdir %s %o"
- (tramp-smb-shell-quote-localname v) (default-file-modes))
- (format "mkdir %s" (tramp-smb-shell-quote-localname v))))
- ;; We must also flush the cache of the directory, because
- ;; `file-attributes' reads the values from there.
- (tramp-flush-file-properties v localname))
- (unless (file-directory-p dir)
- (tramp-error v 'file-error "Couldn't make directory %s" dir)))))
-
-;; This is not used anymore.
-(defun tramp-smb-handle-make-directory-internal (directory)
- "Like `make-directory-internal' for Tramp files."
- (declare (obsolete nil "29.1"))
- (setq directory (directory-file-name (expand-file-name directory)))
- (unless (file-name-absolute-p directory)
- (setq directory (expand-file-name directory default-directory)))
- (with-parsed-tramp-file-name directory nil
- (when (file-directory-p (file-name-directory directory))
- (tramp-smb-send-command
- v (if (tramp-smb-get-cifs-capabilities v)
- (format "posix_mkdir %s %o"
- (tramp-smb-shell-quote-localname v) (default-file-modes))
- (format "mkdir %s" (tramp-smb-shell-quote-localname v))))
- ;; We must also flush the cache of the directory, because
- ;; `file-attributes' reads the values from there.
- (tramp-flush-file-properties v localname))
- (unless (file-directory-p directory)
- (tramp-error v 'file-error "Couldn't make directory %s" directory))))
+ (tramp-skeleton-make-directory dir parents
+ (tramp-smb-send-command
+ v (if (tramp-smb-get-cifs-capabilities v)
+ (format "posix_mkdir %s %o"
+ (tramp-smb-shell-quote-localname v) (default-file-modes))
+ (format "mkdir %s" (tramp-smb-shell-quote-localname v))))
+ (unless (file-directory-p dir)
+ (tramp-error v 'file-error "Couldn't make directory %s" dir))))
(defun tramp-smb-handle-make-symbolic-link
- (target linkname &optional ok-if-already-exists)
- "Like `make-symbolic-link' for Tramp files.
-If TARGET is a non-Tramp file, it is used verbatim as the target
-of the symlink. If TARGET is a Tramp file, only the localname
-component is used as the target of the symlink."
- (with-parsed-tramp-file-name linkname nil
- ;; If TARGET is a Tramp name, use just the localname component.
- ;; Don't check for a proper method.
- (let ((non-essential t))
- (when (and (tramp-tramp-file-p target)
- (tramp-file-name-equal-p v (tramp-dissect-file-name target)))
- (setq target (tramp-file-local-name (expand-file-name target)))))
-
- ;; If TARGET is still remote, quote it.
- (if (tramp-tramp-file-p target)
- (make-symbolic-link
- (tramp-compat-file-name-quote target 'top)
- linkname ok-if-already-exists)
-
- ;; Do the 'confirm if exists' thing.
- (when (file-exists-p linkname)
- ;; What to do?
- (if (or (null ok-if-already-exists) ; not allowed to exist
- (and (numberp ok-if-already-exists)
- (not (yes-or-no-p
- (format
- "File %s already exists; make it a link anyway?"
- localname)))))
- (tramp-error v 'file-already-exists localname)
- (delete-file linkname)))
-
- (unless (tramp-smb-get-cifs-capabilities v)
- (tramp-error v 'file-error "make-symbolic-link not supported"))
-
- ;; We must also flush the cache of the directory, because
- ;; `file-attributes' reads the values from there.
- (tramp-flush-file-properties v localname)
-
- (unless (tramp-smb-send-command
- v (format "symlink %s %s"
- (tramp-smb-shell-quote-argument target)
- (tramp-smb-shell-quote-localname v)))
- (tramp-error
- v 'file-error
- "error with make-symbolic-link, see buffer `%s' for details"
- (tramp-get-connection-buffer v))))))
+ (target linkname &optional ok-if-already-exists)
+ "Like `make-symbolic-link' for Tramp files."
+ (let ((v (tramp-dissect-file-name (expand-file-name linkname))))
+ (unless (tramp-smb-get-cifs-capabilities v)
+ (tramp-error v 'file-error "make-symbolic-link not supported")))
+
+ (tramp-skeleton-handle-make-symbolic-link target linkname ok-if-already-exists
+ (unless (tramp-smb-send-command
+ v (format "symlink %s %s"
+ (tramp-smb-shell-quote-argument target)
+ (tramp-smb-shell-quote-localname v)))
+ (tramp-error
+ v 'file-error
+ "error with make-symbolic-link, see buffer `%s' for details"
+ (tramp-get-connection-buffer v)))))
(defun tramp-smb-handle-process-file
(program &optional infile destination display &rest args)
@@ -1280,7 +1207,7 @@ component is used as the target of the symlink."
;; Determine input.
(when infile
- (setq infile (tramp-compat-file-name-unquote (expand-file-name infile)))
+ (setq infile (file-name-unquote (expand-file-name infile)))
(if (tramp-equal-remote default-directory infile)
;; INFILE is on the same remote host.
(setq input (tramp-unquote-file-local-name infile))
@@ -1455,9 +1382,9 @@ component is used as the target of the symlink."
"\n" "," acl-string)))
(options tramp-smb-options))
- (if (not (zerop (length user)))
- (setq args (append args (list "-U" user)))
- (setq args (append args (list "-N"))))
+ (if (tramp-string-empty-or-nil-p user)
+ (setq args (append args (list "-N")))
+ (setq args (append args (list "-U" user))))
(when domain (setq args (append args (list "-W" domain))))
(when port (setq args (append args (list "-p" port))))
@@ -1473,44 +1400,43 @@ component is used as the target of the symlink."
"&&" "echo" "tramp_exit_status" "0"
"||" "echo" "tramp_exit_status" "1")))
- (unwind-protect
- (with-tramp-saved-connection-properties
- v '("process-name" "process-buffer")
- (with-temp-buffer
- ;; Set the transfer process properties.
- (tramp-set-connection-property
- v "process-name" (buffer-name (current-buffer)))
- (tramp-set-connection-property
- v "process-buffer" (current-buffer))
-
- ;; Use an asynchronous process. By this, password
- ;; can be handled.
- (let ((p (apply
- #'start-process
- (tramp-get-connection-name v)
- (tramp-get-connection-buffer v)
- tramp-smb-acl-program args)))
-
- (tramp-message
- v 6 "%s" (string-join (process-command p) " "))
- (process-put p 'vector v)
- (process-put p 'adjust-window-size-function #'ignore)
- (set-process-query-on-exit-flag p nil)
- (tramp-process-actions p v nil tramp-smb-actions-set-acl)
- ;; This is meant for traces, and returning from
- ;; the function. No error is propagated outside,
- ;; due to the `ignore-errors' closure.
- (unless
- (tramp-search-regexp (rx "tramp_exit_status " (+ digit)))
- (tramp-error
- v 'file-error
- "Couldn't find exit status of `%s'"
- tramp-smb-acl-program))
- (skip-chars-forward "^ ")
- (when (zerop (read (current-buffer)))
- ;; Success.
- (tramp-set-file-property v localname "file-acl" acl-string)
- t))))))))))
+ (with-tramp-saved-connection-properties
+ v '("process-name" "process-buffer")
+ (with-temp-buffer
+ ;; Set the transfer process properties.
+ (tramp-set-connection-property
+ v "process-name" (buffer-name (current-buffer)))
+ (tramp-set-connection-property
+ v "process-buffer" (current-buffer))
+
+ ;; Use an asynchronous process. By this, password
+ ;; can be handled.
+ (let ((p (apply
+ #'start-process
+ (tramp-get-connection-name v)
+ (tramp-get-connection-buffer v)
+ tramp-smb-acl-program args)))
+
+ (tramp-message
+ v 6 "%s" (string-join (process-command p) " "))
+ (process-put p 'tramp-vector v)
+ (process-put p 'adjust-window-size-function #'ignore)
+ (set-process-query-on-exit-flag p nil)
+ (tramp-process-actions p v nil tramp-smb-actions-set-acl)
+ ;; This is meant for traces, and returning from
+ ;; the function. No error is propagated outside,
+ ;; due to the `ignore-errors' closure.
+ (unless
+ (tramp-search-regexp (rx "tramp_exit_status " (+ digit)))
+ (tramp-error
+ v 'file-error
+ "Couldn't find exit status of `%s'"
+ tramp-smb-acl-program))
+ (skip-chars-forward "^ ")
+ (when (zerop (read (current-buffer)))
+ ;; Success.
+ (tramp-set-file-property v localname "file-acl" acl-string)
+ t)))))))))
(defun tramp-smb-handle-set-file-modes (filename mode &optional flag)
"Like `set-file-modes' for Tramp files."
@@ -1588,7 +1514,7 @@ component is used as the target of the symlink."
\"//\" substitutes only in the local filename part. Catches
errors for shares like \"C$/\", which are common in Microsoft Windows."
;; Check, whether the local part is a quoted file name.
- (if (tramp-compat-file-name-quoted-p filename)
+ (if (file-name-quoted-p filename)
filename
(with-parsed-tramp-file-name filename nil
;; Ignore in LOCALNAME everything before "//".
@@ -1607,7 +1533,7 @@ If USER is a string, return its home directory instead of the
user identified by VEC. If there is no user specified in either
VEC or USER, or if there is no home directory, return nil."
(let ((user (or user (tramp-file-name-user vec))))
- (unless (zerop (length user))
+ (unless (tramp-string-empty-or-nil-p user)
(concat "/" user))))
(defun tramp-smb-handle-write-region
@@ -1639,8 +1565,7 @@ VEC or USER, or if there is no home directory, return nil."
"Return the share name of LOCALNAME."
(save-match-data
(let ((localname (tramp-file-name-unquote-localname vec)))
- (when (string-match
- (tramp-compat-rx bol (? "/") (group (+ (not "/"))) "/") localname)
+ (when (string-match (rx bol (? "/") (group (+ (not "/"))) "/") localname)
(match-string 1 localname)))))
(defun tramp-smb-get-localname (vec)
@@ -1651,8 +1576,7 @@ If VEC has no cifs capabilities, exchange \"/\" by \"\\\\\"."
(setq
localname
(if (string-match
- (tramp-compat-rx bol (? "/") (+ (not "/")) (group "/" (* nonl)))
- localname)
+ (rx bol (? "/") (+ (not "/")) (group "/" (* nonl))) localname)
;; There is a share, separated by "/".
(if (not (tramp-smb-get-cifs-capabilities vec))
(mapconcat
@@ -1660,8 +1584,7 @@ If VEC has no cifs capabilities, exchange \"/\" by \"\\\\\"."
(match-string 1 localname) "")
(match-string 1 localname))
;; There is just a share.
- (if (string-match
- (tramp-compat-rx bol (? "/") (group (+ (not "/"))) eol) localname)
+ (if (string-match (rx bol (? "/") (group (+ (not "/"))) eol) localname)
(match-string 1 localname)
"")))
@@ -1789,8 +1712,7 @@ are listed. Result is the list (LOCALNAME MODE SIZE MTIME)."
(if (not share)
;; Read share entries.
- (when (string-match
- (tramp-compat-rx bol "Disk|" (group (+ (not "|"))) "|") line)
+ (when (string-match (rx bol "Disk|" (group (+ (not "|"))) "|") line)
(setq localname (match-string 1 line)
mode "dr-xr-xr-x"
size 0))
@@ -1956,7 +1878,7 @@ If ARGUMENT is non-nil, use it as argument for
(setq tramp-smb-version (shell-command-to-string command))
(tramp-message vec 6 command)
(tramp-message vec 6 "\n%s" tramp-smb-version)
- (if (string-match (rx (+ (any " \t\n\r")) eos) tramp-smb-version)
+ (if (string-match (rx (+ (any " \t\r\n")) eos) tramp-smb-version)
(setq tramp-smb-version
(replace-match "" nil nil tramp-smb-version))))
@@ -2009,9 +1931,9 @@ If ARGUMENT is non-nil, use it as argument for
(t
(setq args (list "-g" "-L" host ))))
- (if (not (zerop (length user)))
- (setq args (append args (list "-U" user)))
- (setq args (append args (list "-N"))))
+ (if (tramp-string-empty-or-nil-p user)
+ (setq args (append args (list "-N")))
+ (setq args (append args (list "-U" user))))
(when domain (setq args (append args (list "-W" domain))))
(when port (setq args (append args (list "-p" port))))
@@ -2026,7 +1948,8 @@ If ARGUMENT is non-nil, use it as argument for
(with-tramp-progress-reporter
vec 3
(format "Opening connection for //%s%s/%s"
- (if (not (zerop (length user))) (concat user "@") "")
+ (if (tramp-string-empty-or-nil-p user)
+ "" (concat user "@"))
host (or share ""))
(let* (coding-system-for-read
@@ -2044,7 +1967,7 @@ If ARGUMENT is non-nil, use it as argument for
args))))
(tramp-message vec 6 "%s" (string-join (process-command p) " "))
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(process-put p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
@@ -2098,7 +2021,7 @@ Removes smb prompt. Returns nil if an error message has appeared."
;; Read pending output.
(while (not (re-search-forward tramp-smb-prompt nil t))
- (while (tramp-accept-process-output p 0))
+ (while (tramp-accept-process-output p))
(goto-char (point-min)))
(tramp-message vec 6 "\n%s" (buffer-string))
diff --git a/lisp/net/tramp-sshfs.el b/lisp/net/tramp-sshfs.el
index 2d3c436632f..a4f6246ec23 100644
--- a/lisp/net/tramp-sshfs.el
+++ b/lisp/net/tramp-sshfs.el
@@ -124,6 +124,7 @@
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-sshfs-handle-file-system-info)
(file-truename . tramp-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-sshfs-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -228,8 +229,7 @@ arguments to pass to the OPERATION."
(defun tramp-sshfs-handle-file-system-info (filename)
"Like `file-system-info' for Tramp files."
- ;;`file-system-info' exists since Emacs 27.1.
- (tramp-compat-funcall 'file-system-info (tramp-fuse-local-file-name filename)))
+ (file-system-info (tramp-fuse-local-file-name filename)))
(defun tramp-sshfs-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
@@ -244,8 +244,8 @@ arguments to pass to the OPERATION."
(setq result
(insert-file-contents
(tramp-fuse-local-file-name filename) visit beg end replace))
- (when visit (setq buffer-file-name filename))
- (cons filename (cdr result)))))
+ (when visit (setq buffer-file-name filename)))
+ (cons filename (cdr result))))
(defun tramp-sshfs-handle-process-file
(program &optional infile destination display &rest args)
@@ -266,7 +266,7 @@ arguments to pass to the OPERATION."
;; Determine input.
(if (null infile)
(setq input (tramp-get-remote-null-device v))
- (setq infile (tramp-compat-file-name-unquote (expand-file-name infile)))
+ (setq infile (file-name-unquote (expand-file-name infile)))
(if (tramp-equal-remote default-directory infile)
;; INFILE is on the same remote host.
(setq input (tramp-unquote-file-local-name infile))
@@ -399,7 +399,7 @@ connection if a previous connection has died for some reason."
:name (tramp-get-connection-name vec)
:buffer (tramp-get-connection-buffer vec)
:server t :host 'local :service t :noquery t)))
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(set-process-query-on-exit-flag p nil)
;; Set connection-local variables.
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 88dacdc7893..defd4f430bc 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -49,7 +49,7 @@
(tramp-password-previous-hop t)))
(add-to-list 'tramp-default-user-alist
- `(,(tramp-compat-rx bos (literal tramp-sudoedit-method) eos)
+ `(,(rx bos (literal tramp-sudoedit-method) eos)
nil ,tramp-root-id-string))
(tramp-set-completion-function
@@ -114,6 +114,7 @@ See `tramp-actions-before-shell' for more info.")
(file-symlink-p . tramp-handle-file-symlink-p)
(file-system-info . tramp-sudoedit-handle-file-system-info)
(file-truename . tramp-sudoedit-handle-file-truename)
+ (file-user-uid . tramp-handle-file-user-uid)
(file-writable-p . tramp-sudoedit-handle-file-writable-p)
(find-backup-file-name . tramp-handle-find-backup-file-name)
;; `get-file-buffer' performed by default handler.
@@ -212,8 +213,8 @@ arguments to pass to the OPERATION."
(unless
(tramp-sudoedit-send-command
v1 "ln"
- (tramp-compat-file-name-unquote v1-localname)
- (tramp-compat-file-name-unquote v2-localname))
+ (file-name-unquote v1-localname)
+ (file-name-unquote v2-localname))
(tramp-error
v1 'file-error
"error with add-name-to-file, see buffer `%s' for details"
@@ -342,22 +343,19 @@ absolute file names."
(tramp-skeleton-delete-directory directory recursive trash
(unless (tramp-sudoedit-send-command
v (if recursive '("rm" "-rf") "rmdir")
- (tramp-compat-file-name-unquote localname))
+ (file-name-unquote localname))
(tramp-error v 'file-error "Couldn't delete %s" directory))))
(defun tramp-sudoedit-handle-delete-file (filename &optional trash)
"Like `delete-file' for Tramp files."
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (tramp-flush-file-properties v localname)
- (if (and delete-by-moving-to-trash trash)
- (move-file-to-trash filename)
- (unless (tramp-sudoedit-send-command
- v "rm" "-f" (tramp-compat-file-name-unquote localname))
- ;; Propagate the error.
- (with-current-buffer (tramp-get-connection-buffer v)
- (goto-char (point-min))
- (tramp-error-with-buffer
- nil v 'file-error "Couldn't delete %s" filename))))))
+ (tramp-skeleton-delete-file filename trash
+ (unless (tramp-sudoedit-send-command
+ v "rm" "-f" (file-name-unquote localname))
+ ;; Propagate the error.
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (goto-char (point-min))
+ (tramp-error-with-buffer
+ nil v 'file-error "Couldn't delete %s" filename)))))
(defun tramp-sudoedit-handle-expand-file-name (name &optional dir)
"Like `expand-file-name' for Tramp files.
@@ -366,7 +364,8 @@ the result will be a local, non-Tramp, file name."
;; If DIR is not given, use `default-directory' or "/".
(setq dir (or dir default-directory "/"))
;; Handle empty NAME.
- (when (zerop (length name)) (setq name "."))
+ (when (string-empty-p name)
+ (setq name "."))
;; Unless NAME is absolute, concat DIR and NAME.
(unless (file-name-absolute-p name)
(setq name (tramp-compat-file-name-concat dir name)))
@@ -377,17 +376,16 @@ the result will be a local, non-Tramp, file name."
;; Tilde expansion if necessary. We cannot accept "~/", because
;; under sudo "~/" is expanded to the local user home directory
;; but to the root home directory.
- (when (zerop (length localname))
+ (when (tramp-string-empty-or-nil-p localname)
(setq localname "~"))
(unless (file-name-absolute-p localname)
(setq localname (format "~%s/%s" user localname)))
(when (string-match
- (tramp-compat-rx bos "~" (group (* (not "/"))) (group (* nonl)) eos)
- localname)
+ (rx bos "~" (group (* (not "/"))) (group (* nonl)) eos) localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname))
hname)
- (when (zerop (length uname))
+ (when (tramp-string-empty-or-nil-p uname)
(setq uname user))
(when (setq hname (tramp-get-home-directory v uname))
(setq localname (concat hname fname)))))
@@ -413,7 +411,7 @@ the result will be a local, non-Tramp, file name."
(let ((result (and (tramp-sudoedit-remote-acl-p v)
(tramp-sudoedit-send-command-string
v "getfacl" "-acp"
- (tramp-compat-file-name-unquote localname)))))
+ (file-name-unquote localname)))))
;; The acl string must have a trailing \n, which is not
;; provided by `tramp-sudoedit-send-command-string'. Add it.
(and (stringp result) (concat result "\n"))))))
@@ -440,8 +438,7 @@ the result will be a local, non-Tramp, file name."
(tramp-convert-file-attributes v localname id-format
(tramp-sudoedit-send-command-and-read
v "env" "QUOTING_STYLE=locale" "stat" "-c"
- tramp-sudoedit-file-attributes
- (tramp-compat-file-name-unquote localname)))))
+ tramp-sudoedit-file-attributes (file-name-unquote localname)))))
(defun tramp-sudoedit-handle-file-executable-p (filename)
"Like `file-executable-p' for Tramp files."
@@ -453,43 +450,37 @@ the result will be a local, non-Tramp, file name."
(or (tramp-check-cached-permissions v ?x)
(tramp-check-cached-permissions v ?s))
(tramp-sudoedit-send-command
- v "test" "-x" (tramp-compat-file-name-unquote localname))))))
+ v "test" "-x" (file-name-unquote localname))))))
(defun tramp-sudoedit-handle-file-exists-p (filename)
"Like `file-exists-p' for Tramp files."
- ;; `file-exists-p' is used as predicate in file name completion.
- ;; We don't want to run it when `non-essential' is t, or there is
- ;; no connection process yet.
- (when (tramp-connectable-p filename)
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (with-tramp-file-property v localname "file-exists-p"
- (if (tramp-file-property-p v localname "file-attributes")
- (not (null (tramp-get-file-property v localname "file-attributes")))
- (tramp-sudoedit-send-command
- v "test" "-e" (tramp-compat-file-name-unquote localname)))))))
+ (tramp-skeleton-file-exists-p filename
+ (tramp-sudoedit-send-command
+ v "test" "-e" (file-name-unquote localname))))
(defun tramp-sudoedit-handle-file-name-all-completions (filename directory)
"Like `file-name-all-completions' for Tramp files."
- (all-completions
- filename
- (with-parsed-tramp-file-name (expand-file-name directory) nil
- (with-tramp-file-property v localname "file-name-all-completions"
- (tramp-sudoedit-send-command
- v "ls" "-a1" "--quoting-style=literal" "--show-control-chars"
- (if (zerop (length localname))
- "" (tramp-compat-file-name-unquote localname)))
- (mapcar
- (lambda (f)
- (if (file-directory-p (expand-file-name f directory))
- (file-name-as-directory f)
- f))
- (delq
- nil
+ (ignore-error file-missing
+ (all-completions
+ filename
+ (with-parsed-tramp-file-name (expand-file-name directory) nil
+ (with-tramp-file-property v localname "file-name-all-completions"
+ (tramp-sudoedit-send-command
+ v "ls" "-a1" "--quoting-style=literal" "--show-control-chars"
+ (if (tramp-string-empty-or-nil-p localname)
+ "" (file-name-unquote localname)))
(mapcar
- (lambda (l) (and (not (string-match-p (rx bol (* blank) eol) l)) l))
- (split-string
- (tramp-get-buffer-string (tramp-get-connection-buffer v))
- "\n" 'omit))))))))
+ (lambda (f)
+ (if (ignore-errors (file-directory-p (expand-file-name f directory)))
+ (file-name-as-directory f)
+ f))
+ (delq
+ nil
+ (mapcar
+ (lambda (l) (and (not (string-match-p (rx bol (* blank) eol) l)) l))
+ (split-string
+ (tramp-get-buffer-string (tramp-get-connection-buffer v))
+ "\n" 'omit)))))))))
(defun tramp-sudoedit-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
@@ -500,7 +491,7 @@ the result will be a local, non-Tramp, file name."
(if (tramp-file-property-p v localname "file-attributes")
(tramp-handle-file-readable-p filename)
(tramp-sudoedit-send-command
- v "test" "-r" (tramp-compat-file-name-unquote localname))))))
+ v "test" "-r" (file-name-unquote localname))))))
(defun tramp-sudoedit-handle-set-file-modes (filename mode &optional flag)
"Like `set-file-modes' for Tramp files."
@@ -508,8 +499,7 @@ the result will be a local, non-Tramp, file name."
(unless (and (eq flag 'nofollow) (file-symlink-p filename))
(tramp-skeleton-set-file-modes-times-uid-gid filename
(unless (tramp-sudoedit-send-command
- v "chmod" (format "%o" mode)
- (tramp-compat-file-name-unquote localname))
+ v "chmod" (format "%o" mode) (file-name-unquote localname))
(tramp-error
v 'file-error "Error while changing file's mode %s" filename)))))
@@ -523,15 +513,14 @@ the result will be a local, non-Tramp, file name."
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-tramp-file-property v localname "file-selinux-context"
(let ((context '(nil nil nil nil))
- (regexp (tramp-compat-rx
+ (regexp (rx
(group (+ (any "_" alnum))) ":"
(group (+ (any "_" alnum))) ":"
(group (+ (any "_" alnum))) ":"
(group (+ (any "_" alnum))))))
(when (and (tramp-sudoedit-remote-selinux-p v)
(tramp-sudoedit-send-command
- v "ls" "-d" "-Z"
- (tramp-compat-file-name-unquote localname)))
+ v "ls" "-d" "-Z" (file-name-unquote localname)))
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
(when (re-search-forward regexp (line-end-position) t)
@@ -547,7 +536,7 @@ the result will be a local, non-Tramp, file name."
(tramp-message v 5 "file system info: %s" localname)
(when (tramp-sudoedit-send-command
v "df" "--block-size=1" "--output=size,used,avail"
- (tramp-compat-file-name-unquote localname))
+ (file-name-unquote localname))
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
(forward-line)
@@ -565,48 +554,17 @@ the result will be a local, non-Tramp, file name."
(defun tramp-sudoedit-handle-set-file-times (filename &optional time flag)
"Like `set-file-times' for Tramp files."
(tramp-skeleton-set-file-modes-times-uid-gid filename
- (let ((time
- (if (or (null time)
- (tramp-compat-time-equal-p time tramp-time-doesnt-exist)
- (tramp-compat-time-equal-p time tramp-time-dont-know))
- nil
- time)))
- (tramp-sudoedit-send-command
- v "env" "TZ=UTC0" "touch" "-t"
- (format-time-string "%Y%m%d%H%M.%S" time t)
- (if (eq flag 'nofollow) "-h" "")
- (tramp-compat-file-name-unquote localname)))))
+ (tramp-sudoedit-send-command
+ v "env" "TZ=UTC0" "touch" "-t"
+ (format-time-string "%Y%m%d%H%M.%S" (tramp-defined-time time) t)
+ (if (eq flag 'nofollow) "-h" "")
+ (file-name-unquote localname))))
(defun tramp-sudoedit-handle-file-truename (filename)
"Like `file-truename' for Tramp files."
- ;; Preserve trailing "/".
- (funcall
- (if (directory-name-p filename) #'file-name-as-directory #'identity)
- ;; Quote properly.
- (funcall
- (if (tramp-compat-file-name-quoted-p filename)
- #'tramp-compat-file-name-quote #'identity)
- (with-parsed-tramp-file-name
- (tramp-compat-file-name-unquote (expand-file-name filename)) nil
- (tramp-make-tramp-file-name
- v
- (with-tramp-file-property v localname "file-truename"
- (let (result)
- (tramp-message v 4 "Finding true name for `%s'" filename)
- (setq result (tramp-sudoedit-send-command-string
- v "readlink" "--canonicalize-missing" localname))
- ;; Detect cycle.
- (when (and (file-symlink-p filename)
- (string-equal result localname))
- (tramp-error
- v 'file-error
- "Apparent cycle of symbolic links for %s" filename))
- ;; If the resulting localname looks remote, we must quote it
- ;; for security reasons.
- (when (file-remote-p result)
- (setq result (tramp-compat-file-name-quote result 'top)))
- (tramp-message v 4 "True name of `%s' is `%s'" localname result)
- result)))))))
+ (tramp-skeleton-file-truename filename
+ (tramp-sudoedit-send-command-string
+ v "readlink" "--canonicalize-missing" localname)))
(defun tramp-sudoedit-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
@@ -618,7 +576,7 @@ the result will be a local, non-Tramp, file name."
;; be satisfied without remote operation.
(tramp-check-cached-permissions v ?w)
(tramp-sudoedit-send-command
- v "test" "-w" (tramp-compat-file-name-unquote localname)))
+ v "test" "-w" (file-name-unquote localname)))
;; If file doesn't exist, check if directory is writable.
(and
(file-directory-p (file-name-directory filename))
@@ -626,59 +584,20 @@ the result will be a local, non-Tramp, file name."
(defun tramp-sudoedit-handle-make-directory (dir &optional parents)
"Like `make-directory' for Tramp files."
- (setq dir (expand-file-name dir))
- (with-parsed-tramp-file-name dir nil
- (when (and (null parents) (file-exists-p dir))
- (tramp-error v 'file-already-exists "Directory already exists %s" dir))
- ;; When PARENTS is non-nil, DIR could be a chain of non-existent
- ;; directories a/b/c/... Instead of checking, we simply flush the
- ;; whole cache.
- (tramp-flush-directory-properties
- v (if parents "/" (file-name-directory localname)))
+ (tramp-skeleton-make-directory dir parents
(unless (tramp-sudoedit-send-command
- v (if parents '("mkdir" "-p") "mkdir")
- "-m" (format "%#o" (default-file-modes))
- (tramp-compat-file-name-unquote localname))
+ v "mkdir" "-m" (format "%#o" (default-file-modes))
+ (file-name-unquote localname))
(tramp-error v 'file-error "Couldn't make directory %s" dir))))
(defun tramp-sudoedit-handle-make-symbolic-link
(target linkname &optional ok-if-already-exists)
- "Like `make-symbolic-link' for Tramp files.
-If TARGET is a non-Tramp file, it is used verbatim as the target
-of the symlink. If TARGET is a Tramp file, only the localname
-component is used as the target of the symlink."
- (with-parsed-tramp-file-name (expand-file-name linkname) nil
- ;; If TARGET is a Tramp name, use just the localname component.
- ;; Don't check for a proper method.
- (let ((non-essential t))
- (when (and (tramp-tramp-file-p target)
- (tramp-file-name-equal-p v (tramp-dissect-file-name target)))
- (setq target (tramp-file-local-name (expand-file-name target)))))
-
- ;; If TARGET is still remote, quote it.
- (if (tramp-tramp-file-p target)
- (make-symbolic-link
- (tramp-compat-file-name-quote target 'top)
- linkname ok-if-already-exists)
-
- ;; Do the 'confirm if exists' thing.
- (when (file-exists-p linkname)
- ;; What to do?
- (if (or (null ok-if-already-exists) ; not allowed to exist
- (and (numberp ok-if-already-exists)
- (not
- (yes-or-no-p
- (format
- "File %s already exists; make it a link anyway?"
- localname)))))
- (tramp-error v 'file-already-exists localname)
- (delete-file linkname)))
-
- (tramp-flush-file-properties v localname)
- (tramp-sudoedit-send-command
- v "ln" "-sf"
- (tramp-compat-file-name-unquote target)
- (tramp-compat-file-name-unquote localname)))))
+ "Like `make-symbolic-link' for Tramp files."
+ (tramp-skeleton-handle-make-symbolic-link target linkname ok-if-already-exists
+ (tramp-sudoedit-send-command
+ v "ln" "-sf"
+ (file-name-unquote target)
+ (file-name-unquote localname))))
(defun tramp-sudoedit-handle-rename-file
(filename newname &optional ok-if-already-exists)
@@ -702,8 +621,7 @@ component is used as the target of the symlink."
(setq acl-string (string-join (split-string acl-string "\n" 'omit) ","))
(prog1
(tramp-sudoedit-send-command
- v "setfacl" "-m"
- acl-string (tramp-compat-file-name-unquote localname))
+ v "setfacl" "-m" acl-string (file-name-unquote localname))
(tramp-flush-file-property v localname "file-acl")))))
(defun tramp-sudoedit-handle-set-file-selinux-context (filename context)
@@ -721,7 +639,7 @@ component is used as the target of the symlink."
(when role (format "--role=%s" role))
(when type (format "--type=%s" type))
(when range (format "--range=%s" range))
- (tramp-compat-file-name-unquote localname))
+ (file-name-unquote localname))
(if (and user role type range)
(tramp-set-file-property
v localname "file-selinux-context" context)
@@ -774,7 +692,7 @@ ID-FORMAT valid values are `string' and `integer'."
"Check, whether a sudo process has finished. Remove unneeded output."
;; There might be pending output for the exit status.
(unless (process-live-p proc)
- (while (tramp-accept-process-output proc 0))
+ (while (tramp-accept-process-output proc))
;; Delete narrowed region, it would be in the way reading a Lisp form.
(goto-char (point-min))
(widen)
@@ -802,7 +720,7 @@ connection if a previous connection has died for some reason."
:name (tramp-get-connection-name vec)
:buffer (tramp-get-connection-buffer vec)
:server t :host 'local :service t :noquery t)))
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(set-process-query-on-exit-flag p nil)
;; Set connection-local variables.
@@ -829,7 +747,7 @@ in case of error, t otherwise."
vec 'tramp-sudo-login
?h (or (tramp-file-name-host vec) "")
?u (or (tramp-file-name-user vec) ""))
- (tramp-compat-flatten-tree args))))
+ (flatten-tree args))))
;; We suppress the messages `Waiting for prompts from remote shell'.
(tramp-verbose (if (= tramp-verbose 3) 2 tramp-verbose))
;; The password shall be cached also in case of "emacs -Q".
@@ -840,7 +758,7 @@ in case of error, t otherwise."
(tramp-message vec 6 "%s" (string-join (process-command p) " "))
;; Avoid process status message in output buffer.
(set-process-sentinel p #'ignore)
- (process-put p 'vector vec)
+ (process-put p 'tramp-vector vec)
(process-put p 'adjust-window-size-function #'ignore)
(set-process-query-on-exit-flag p nil)
(tramp-set-connection-property p "password-vector" tramp-sudoedit-null-hop)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index df2f0850b83..3420bb76d14 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -82,6 +82,7 @@
(progn
(defvar tramp--startup-hook nil
"Forms to be executed at the end of tramp.el.")
+
(put 'tramp--startup-hook 'tramp-suppress-trace t)
(defmacro tramp--with-startup (&rest body)
@@ -440,12 +441,12 @@ See `tramp-methods' for a list of possibilities for METHOD."
(defconst tramp-default-method-marker "-"
"Marker for default method in remote file names.")
+(add-to-list 'tramp-methods `(,tramp-default-method-marker))
+
(defcustom tramp-default-user nil
"Default user to use for transferring files.
It is nil by default; otherwise settings in configuration files like
-\"~/.ssh/config\" would be overwritten. Also see `tramp-default-user-alist'.
-
-This variable is regarded as obsolete, and will be removed soon."
+\"~/.ssh/config\" would be overwritten. Also see `tramp-default-user-alist'."
:type '(choice (const nil) string))
;;;###tramp-autoload
@@ -525,7 +526,7 @@ interpreted as a regular expression which always matches."
(defcustom tramp-restricted-shell-hosts-alist
(when (and (eq system-type 'windows-nt)
(not (string-match-p (rx "sh" eol) tramp-encoding-shell)))
- (list (tramp-compat-rx
+ (list (rx
bos (| (literal (downcase tramp-system-name))
(literal (upcase tramp-system-name)))
eos)))
@@ -539,7 +540,7 @@ host runs a restricted shell, it shall be added to this list, too."
;;;###tramp-autoload
(defcustom tramp-local-host-regexp
- (tramp-compat-rx
+ (rx
bos
(| (literal tramp-system-name)
(| "localhost" "localhost4" "localhost6" "127.0.0.1" "::1"))
@@ -640,10 +641,11 @@ This regexp must match both `tramp-initial-end-of-output' and
:type 'regexp)
(defcustom tramp-password-prompt-regexp
- (tramp-compat-rx
- bol (* nonl)
- (group (regexp (regexp-opt password-word-equivalents)))
- (* nonl) (any "::៖") (? "\^@") (* blank))
+ (rx-to-string
+ `(: bol (* nonl)
+ (group (| . ,password-word-equivalents))
+ (* nonl) (any . ,tramp-compat-password-colon-equivalents)
+ (? "\^@") (* blank)))
"Regexp matching password-like prompts.
The regexp should match at end of buffer.
@@ -659,14 +661,13 @@ The `sudo' program appears to insert a `^@' character into the prompt."
(defcustom tramp-wrong-passwd-regexp
(rx bol (* nonl)
(| "Permission denied"
- (: "Login " (| "Incorrect" "incorrect"))
- "Connection refused"
- "Connection closed"
"Timeout, server not responding."
"Sorry, try again."
"Name or service not known"
"Host key verification failed."
"No supported authentication methods left to try!"
+ (: "Login " (| "Incorrect" "incorrect"))
+ (: "Connection " (| "refused" "closed"))
(: "Received signal " (+ digit)))
(* nonl))
"Regexp matching a `login failed' message.
@@ -724,7 +725,8 @@ The regexp should match at end of buffer."
;; A security key requires the user physically to touch the device
;; with their finger. We must tell it to the user.
-;; Added in OpenSSH 8.2. I've tested it with yubikey.
+;; Added in OpenSSH 8.2. I've tested it with yubikey. Nitrokey,
+;; which has also passed the tests, does not show such a message.
(defcustom tramp-security-key-confirm-regexp
(rx bol (* "\r") "Confirm user presence for key " (* nonl) (* (any "\r\n")))
"Regular expression matching security key confirmation message.
@@ -789,6 +791,7 @@ It shall be used in combination with `generate-new-buffer-name'.")
(defvar tramp-temp-buffer-file-name nil
"File name of a persistent local temporary file.
Useful for \"rsync\" like methods.")
+
(make-variable-buffer-local 'tramp-temp-buffer-file-name)
(put 'tramp-temp-buffer-file-name 'permanent-local t)
@@ -899,18 +902,17 @@ Used in `tramp-make-tramp-file-name'.")
(defun tramp-build-prefix-regexp ()
"Return `tramp-prefix-regexp'."
- (tramp-compat-rx bol (literal (tramp-build-prefix-format))))
+ (rx bol (literal (tramp-build-prefix-format))))
(defvar tramp-prefix-regexp nil ; Initialized when defining `tramp-syntax'!
"Regexp matching the very beginning of Tramp file names.
Should always start with \"^\". Derived from `tramp-prefix-format'.")
(defconst tramp-method-regexp-alist
- `((default . ,(tramp-compat-rx
- (| (literal tramp-default-method-marker) (>= 2 alnum))))
+ `((default . ,(rx (| (literal tramp-default-method-marker) (>= 2 alnum))))
(simplified . "")
- (separate . ,(tramp-compat-rx
- (? (| (literal tramp-default-method-marker) (>= 2 alnum))))))
+ (separate
+ . ,(rx (? (| (literal tramp-default-method-marker) (>= 2 alnum))))))
"Alist mapping Tramp syntax to regexps matching methods identifiers.")
(defun tramp-build-method-regexp ()
@@ -938,7 +940,7 @@ Used in `tramp-make-tramp-file-name'.")
(defun tramp-build-postfix-method-regexp ()
"Return `tramp-postfix-method-regexp'."
- (tramp-compat-rx (literal (tramp-build-postfix-method-format))))
+ (rx (literal (tramp-build-postfix-method-format))))
(defvar tramp-postfix-method-regexp nil ; Init'd when defining `tramp-syntax'!
"Regexp matching delimiter between method and user or host names.
@@ -950,8 +952,7 @@ Derived from `tramp-postfix-method-format'.")
(defconst tramp-prefix-domain-format "%"
"String matching delimiter between user and domain names.")
-(defconst tramp-prefix-domain-regexp
- (tramp-compat-rx (literal tramp-prefix-domain-format))
+(defconst tramp-prefix-domain-regexp (rx (literal tramp-prefix-domain-format))
"Regexp matching delimiter between user and domain names.
Derived from `tramp-prefix-domain-format'.")
@@ -959,7 +960,7 @@ Derived from `tramp-prefix-domain-format'.")
"Regexp matching domain names.")
(defconst tramp-user-with-domain-regexp
- (tramp-compat-rx
+ (rx
(group (regexp tramp-user-regexp))
(regexp tramp-prefix-domain-regexp)
(group (regexp tramp-domain-regexp)))
@@ -969,8 +970,7 @@ Derived from `tramp-prefix-domain-format'.")
"String matching delimiter between user and host names.
Used in `tramp-make-tramp-file-name'.")
-(defconst tramp-postfix-user-regexp
- (tramp-compat-rx (literal tramp-postfix-user-format))
+(defconst tramp-postfix-user-regexp (rx (literal tramp-postfix-user-format))
"Regexp matching delimiter between user and host names.
Derived from `tramp-postfix-user-format'.")
@@ -993,7 +993,7 @@ Used in `tramp-make-tramp-file-name'.")
(defun tramp-build-prefix-ipv6-regexp ()
"Return `tramp-prefix-ipv6-regexp'."
- (tramp-compat-rx (literal tramp-prefix-ipv6-format)))
+ (rx (literal tramp-prefix-ipv6-format)))
(defvar tramp-prefix-ipv6-regexp nil ; Initialized when defining `tramp-syntax'!
"Regexp matching left hand side of IPv6 addresses.
@@ -1021,7 +1021,7 @@ Used in `tramp-make-tramp-file-name'.")
(defun tramp-build-postfix-ipv6-regexp ()
"Return `tramp-postfix-ipv6-regexp'."
- (tramp-compat-rx (literal tramp-postfix-ipv6-format)))
+ (rx (literal tramp-postfix-ipv6-format)))
(defvar tramp-postfix-ipv6-regexp nil ; Initialized when defining `tramp-syntax'!
"Regexp matching right hand side of IPv6 addresses.
@@ -1030,8 +1030,7 @@ Derived from `tramp-postfix-ipv6-format'.")
(defconst tramp-prefix-port-format "#"
"String matching delimiter between host names and port numbers.")
-(defconst tramp-prefix-port-regexp
- (tramp-compat-rx (literal tramp-prefix-port-format))
+(defconst tramp-prefix-port-regexp (rx (literal tramp-prefix-port-format))
"Regexp matching delimiter between host names and port numbers.
Derived from `tramp-prefix-port-format'.")
@@ -1039,7 +1038,7 @@ Derived from `tramp-prefix-port-format'.")
"Regexp matching port numbers.")
(defconst tramp-host-with-port-regexp
- (tramp-compat-rx
+ (rx
(group (regexp tramp-host-regexp))
(regexp tramp-prefix-port-regexp)
(group (regexp tramp-port-regexp)))
@@ -1048,8 +1047,7 @@ Derived from `tramp-prefix-port-format'.")
(defconst tramp-postfix-hop-format "|"
"String matching delimiter after ad-hoc hop definitions.")
-(defconst tramp-postfix-hop-regexp
- (tramp-compat-rx (literal tramp-postfix-hop-format))
+(defconst tramp-postfix-hop-regexp (rx (literal tramp-postfix-hop-format))
"Regexp matching delimiter after ad-hoc hop definitions.
Derived from `tramp-postfix-hop-format'.")
@@ -1069,7 +1067,7 @@ Used in `tramp-make-tramp-file-name'.")
(defun tramp-build-postfix-host-regexp ()
"Return `tramp-postfix-host-regexp'."
- (tramp-compat-rx (literal tramp-postfix-host-format)))
+ (rx (literal tramp-postfix-host-format)))
(defvar tramp-postfix-host-regexp nil ; Initialized when defining `tramp-syntax'!
"Regexp matching delimiter between host names and localnames.
@@ -1096,7 +1094,7 @@ Derived from `tramp-postfix-host-format'.")
(defun tramp-build-remote-file-name-spec-regexp ()
"Construct a regexp matching a Tramp file name for a Tramp syntax.
It is expected, that `tramp-syntax' has the proper value."
- (tramp-compat-rx
+ (rx
;; Method.
(group (regexp tramp-method-regexp)) (regexp tramp-postfix-method-regexp)
;; Optional user. This includes domain.
@@ -1118,7 +1116,7 @@ It is expected, that `tramp-syntax' has the proper value."
It is expected, that `tramp-syntax' has the proper value.
See `tramp-file-name-structure'."
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(? (group (+ (regexp tramp-remote-file-name-spec-regexp)
(regexp tramp-postfix-hop-regexp))))
@@ -1178,11 +1176,9 @@ initial value is overwritten by the car of `tramp-file-name-structure'.")
;; `tramp-method-regexp' needs at least two characters, in order to
;; distinguish from volume letter. This is in the way when completing.
(defconst tramp-completion-method-regexp-alist
- `((default . ,(tramp-compat-rx
- (| (literal tramp-default-method-marker) (+ alnum))))
+ `((default . ,(rx (| (literal tramp-default-method-marker) (+ alnum))))
(simplified . "")
- (separate . ,(tramp-compat-rx
- (| (literal tramp-default-method-marker) (* alnum)))))
+ (separate . ,(rx (| (literal tramp-default-method-marker) (* alnum)))))
"Alist mapping Tramp syntax to regexps matching completion methods.")
(defun tramp-build-completion-method-regexp ()
@@ -1198,8 +1194,8 @@ The `ftp' syntax does not support methods.")
"Return `tramp-completion-file-name-regexp' according to `tramp-syntax'."
(if (eq tramp-syntax 'separate)
;; FIXME: This shouldn't be necessary.
- (tramp-compat-rx bos "/" (? "[" (* (not "]"))) eos)
- (tramp-compat-rx
+ (rx bos "/" (? "[" (* (not "]"))) eos)
+ (rx
bos
;; `file-name-completion' uses absolute paths for matching.
;; This means that on W32 systems, something like
@@ -1217,9 +1213,12 @@ The `ftp' syntax does not support methods.")
(? (regexp tramp-completion-method-regexp)
;; Method separator, user name and host name.
(? (regexp tramp-postfix-method-regexp)
- ;; This is a little bit lax, but it serves.
- (? (regexp tramp-host-regexp))))
-
+ (? (regexp tramp-user-regexp)
+ (regexp tramp-postfix-user-regexp))
+ (? (| (regexp tramp-host-regexp) ;; This includes a user.
+ (: (regexp tramp-prefix-ipv6-regexp)
+ (? (regexp tramp-ipv6-regexp)
+ (? (regexp tramp-postfix-ipv6-regexp))))))))
eos)))
(defvar tramp-completion-file-name-regexp
@@ -1404,20 +1403,6 @@ based on the Tramp and Emacs versions, and should not be set here."
:version "26.1"
:type '(repeat string))
-(defcustom tramp-completion-reread-directory-timeout 10
- "Defines seconds since last remote command before rereading a directory.
-A remote directory might have changed its contents. In order to
-make it visible during file name completion in the minibuffer,
-Tramp flushes its cache and rereads the directory contents when
-more than `tramp-completion-reread-directory-timeout' seconds
-have been gone since last remote command execution. A value of t
-would require an immediate reread during filename completion, nil
-means to use always cached values for the directory contents."
- :type '(choice (const nil) (const t) integer))
-(make-obsolete-variable
- 'tramp-completion-reread-directory-timeout
- 'remote-file-name-inhibit-cache "27.2")
-
;;; Internal Variables:
(defvar tramp-current-connection nil
@@ -1429,6 +1414,7 @@ the (optional) timestamp of last activity on this connection.")
"Password save function.
Will be called once the password has been verified by successful
authentication.")
+
(put 'tramp-password-save-function 'tramp-suppress-trace t)
(defvar tramp-password-prompt-not-unique nil
@@ -1437,9 +1423,13 @@ This shouldn't be set explicitly. It is let-bound, for example
during direct remote copying with scp.")
(defconst tramp-completion-file-name-handler-alist
- '((file-name-all-completions
+ '((expand-file-name . tramp-completion-handle-expand-file-name)
+ (file-exists-p . tramp-completion-handle-file-exists-p)
+ (file-name-all-completions
. tramp-completion-handle-file-name-all-completions)
- (file-name-completion . tramp-completion-handle-file-name-completion))
+ (file-name-completion . tramp-completion-handle-file-name-completion)
+ (file-name-directory . tramp-completion-handle-file-name-directory)
+ (file-name-nondirectory . tramp-completion-handle-file-name-nondirectory))
"Alist of completion handler functions.
Used for file names matching `tramp-completion-file-name-regexp'.
Operations not mentioned here will be handled by Tramp's file
@@ -1527,8 +1517,7 @@ same connection. Make a copy in order to avoid side effects."
(setq vec (copy-tramp-file-name vec))
(setf (tramp-file-name-localname vec)
(and (stringp localname)
- (tramp-compat-file-name-unquote
- (directory-file-name localname)))
+ (file-name-unquote (directory-file-name localname)))
(tramp-file-name-hop vec) nil))
vec))
@@ -1561,7 +1550,7 @@ entry does not exist, return nil."
;; The localname can be quoted with "/:". Extract this.
(defun tramp-file-name-unquote-localname (vec)
"Return unquoted localname component of VEC."
- (tramp-compat-file-name-unquote (tramp-file-name-localname vec)))
+ (file-name-unquote (tramp-file-name-localname vec)))
;;;###tramp-autoload
(defun tramp-tramp-file-p (name)
@@ -1599,7 +1588,7 @@ of `process-file', `start-file-process', or `shell-command'."
;; The localname can be quoted with "/:". Extract this.
(defun tramp-unquote-file-local-name (name)
"Return unquoted localname of NAME."
- (tramp-compat-file-name-unquote (tramp-file-local-name name)))
+ (file-name-unquote (tramp-file-local-name name)))
(defun tramp-find-method (method user host)
"Return the right method string to use depending on USER and HOST.
@@ -1656,7 +1645,7 @@ This is USER, if non-nil. Otherwise, do a lookup in
This is HOST, if non-nil. Otherwise, do a lookup in
`tramp-default-host-alist' and `tramp-default-host'."
(let ((result
- (or (and (> (length host) 0) host)
+ (or (and (tramp-compat-length> host 0) host)
(let ((choices tramp-default-host-alist)
lhost item)
(while choices
@@ -1668,7 +1657,7 @@ This is HOST, if non-nil. Otherwise, do a lookup in
lhost)
tramp-default-host)))
;; We must mark, whether a default value has been used.
- (if (or (> (length host) 0) (null result))
+ (if (or (tramp-compat-length> host 0) (null result))
result
(propertize result 'tramp-default t))))
@@ -1731,14 +1720,13 @@ default values are used."
:port port :localname localname :hop hop))
;; The method must be known.
(unless (or nodefault non-essential
- (string-equal method tramp-default-method-marker)
(assoc method tramp-methods))
(tramp-user-error
- v "Method `%s' is not known." method))
+ v "Method `%s' is not known" method))
;; Only some methods from tramp-sh.el do support multi-hops.
(unless (or (null hop) nodefault non-essential (tramp-multi-hop-p v))
(tramp-user-error
- v "Method `%s' is not supported for multi-hops." method)))))))
+ v "Method `%s' is not supported for multi-hops" method)))))))
(put #'tramp-dissect-file-name 'tramp-suppress-trace t)
@@ -1761,27 +1749,31 @@ See `tramp-dissect-file-name' for details."
(let ((v (tramp-dissect-file-name
(concat tramp-prefix-format
(replace-regexp-in-string
- (tramp-compat-rx (regexp tramp-postfix-hop-regexp) eos)
+ (rx (regexp tramp-postfix-hop-regexp) eos)
tramp-postfix-host-format name))
nodefault)))
;; Only some methods from tramp-sh.el do support multi-hops.
(unless (or nodefault non-essential (tramp-multi-hop-p v))
(tramp-user-error
- v "Method `%s' is not supported for multi-hops."
+ v "Method `%s' is not supported for multi-hops"
(tramp-file-name-method v)))
;; Return result.
v))
(put #'tramp-dissect-hop-name 'tramp-suppress-trace t)
+(defsubst tramp-string-empty-or-nil-p (string)
+ "Check whether STRING is empty or nil."
+ (or (null string) (string= string "")))
+
(defun tramp-buffer-name (vec)
"A name for the connection buffer VEC."
(let ((method (tramp-file-name-method vec))
(user-domain (tramp-file-name-user-domain vec))
(host-port (tramp-file-name-host-port vec)))
- (if (not (zerop (length user-domain)))
- (format "*tramp/%s %s@%s*" method user-domain host-port)
- (format "*tramp/%s %s*" method host-port))))
+ (if (tramp-string-empty-or-nil-p user-domain)
+ (format "*tramp/%s %s*" method host-port)
+ (format "*tramp/%s %s@%s*" method user-domain host-port))))
(put #'tramp-buffer-name 'tramp-suppress-trace t)
@@ -1826,23 +1818,23 @@ the form (METHOD USER DOMAIN HOST PORT LOCALNAME &optional HOP)."
hop (nth 6 args))))
;; Unless `tramp-syntax' is `simplified', we need a method.
- (when (and (not (zerop (length tramp-postfix-method-format)))
- (zerop (length method)))
+ (when (and (not (string-empty-p tramp-postfix-method-format))
+ (tramp-string-empty-or-nil-p method))
(signal 'wrong-type-argument (list #'stringp method)))
(concat tramp-prefix-format hop
- (unless (zerop (length tramp-postfix-method-format))
+ (unless (string-empty-p tramp-postfix-method-format)
(concat method tramp-postfix-method-format))
user
- (unless (zerop (length domain))
+ (unless (tramp-string-empty-or-nil-p domain)
(concat tramp-prefix-domain-format domain))
- (unless (zerop (length user))
+ (unless (tramp-string-empty-or-nil-p user)
tramp-postfix-user-format)
(when host
(if (string-match-p tramp-ipv6-regexp host)
(concat
tramp-prefix-ipv6-format host tramp-postfix-ipv6-format)
host))
- (unless (zerop (length port))
+ (unless (tramp-string-empty-or-nil-p port)
(concat tramp-prefix-port-format port))
tramp-postfix-host-format
localname)))
@@ -1857,8 +1849,7 @@ the form (METHOD USER DOMAIN HOST PORT LOCALNAME &optional HOP)."
(replace-regexp-in-string
tramp-prefix-regexp ""
(replace-regexp-in-string
- (tramp-compat-rx
- (regexp tramp-postfix-host-regexp) eos)
+ (rx (regexp tramp-postfix-host-regexp) eos)
tramp-postfix-hop-format
(tramp-make-tramp-file-name vec 'noloc)))))
@@ -1867,12 +1858,12 @@ the form (METHOD USER DOMAIN HOST PORT LOCALNAME &optional HOP)."
It must not be a complete Tramp file name, but as long as there are
necessary only. This function will be used in file name completion."
(concat tramp-prefix-format
- (unless (or (zerop (length method))
- (zerop (length tramp-postfix-method-format)))
+ (unless (or (tramp-string-empty-or-nil-p method)
+ (string-empty-p tramp-postfix-method-format))
(concat method tramp-postfix-method-format))
- (unless (zerop (length user))
+ (unless (tramp-string-empty-or-nil-p user)
(concat user tramp-postfix-user-format))
- (unless (zerop (length host))
+ (unless (tramp-string-empty-or-nil-p host)
(concat
(if (string-match-p tramp-ipv6-regexp host)
(concat
@@ -1919,7 +1910,7 @@ Return `tramp-cache-undefined' in case it doesn't exist."
(or (and (tramp-file-name-p vec-or-proc)
(get-buffer-process (tramp-buffer-name vec-or-proc)))
(and (processp vec-or-proc)
- (tramp-get-process (process-get vec-or-proc 'vector)))
+ (tramp-get-process (process-get vec-or-proc 'tramp-vector)))
tramp-cache-undefined))
(defun tramp-get-connection-process (vec)
@@ -1967,9 +1958,9 @@ of `current-buffer'."
(let ((method (tramp-file-name-method vec))
(user-domain (tramp-file-name-user-domain vec))
(host-port (tramp-file-name-host-port vec)))
- (if (not (zerop (length user-domain)))
- (format "*debug tramp/%s %s@%s*" method user-domain host-port)
- (format "*debug tramp/%s %s*" method host-port))))
+ (if (tramp-string-empty-or-nil-p user-domain)
+ (format "*debug tramp/%s %s*" method host-port)
+ (format "*debug tramp/%s %s@%s*" method user-domain host-port))))
(put #'tramp-debug-buffer-name 'tramp-suppress-trace t)
@@ -1988,7 +1979,7 @@ of `current-buffer'."
;; Also, in `font-lock-defaults' you can specify a function name for
;; the "KEYWORDS" part, so font-lock calls it to get the actual keywords!
'(list
- (tramp-compat-rx bol (regexp tramp-debug-outline-regexp) (+ nonl))
+ (rx bol (regexp tramp-debug-outline-regexp) (+ nonl))
'(1 font-lock-warning-face t t)
'(0 (outline-font-lock-face) keep t))
"Used for highlighting Tramp debug buffers in `outline-mode'.")
@@ -2199,7 +2190,7 @@ applicable)."
vec-or-proc 'dont-create))))))))
;; Translate proc to vec.
(when (processp vec-or-proc)
- (setq vec-or-proc (process-get vec-or-proc 'vector))))
+ (setq vec-or-proc (process-get vec-or-proc 'tramp-vector))))
;; Do it.
(when (tramp-file-name-p vec-or-proc)
(apply #'tramp-debug-message
@@ -2322,12 +2313,12 @@ the resulting error message."
(progn ,@body)
(error (tramp-message ,vec-or-proc 3 ,format ,err) nil))))
-;; This macro shall optimize the cases where an `file-exists-p' call
-;; is invoked first. Often, the file exists, so the remote command is
+;; This macro shall optimize the cases where a `file-exists-p' call is
+;; invoked first. Often, the file exists, so the remote command is
;; superfluous.
(defmacro tramp-barf-if-file-missing (vec filename &rest body)
"Execute BODY and return the result.
-In case if an error, raise a `file-missing' error if FILENAME
+In case of an error, raise a `file-missing' error if FILENAME
does not exist, otherwise propagate the error."
(declare (indent 2) (debug (symbolp form body)))
(let ((err (make-symbol "err")))
@@ -2402,7 +2393,7 @@ If VAR is nil, then we bind `v' to the structure and `method', `user',
(let* ((parameters (cdr reporter))
(message (aref parameters 3)))
(when (tramp-compat-string-search message (or (current-message) ""))
- (tramp-compat-progress-reporter-update reporter value suffix))))
+ (progress-reporter-update reporter value suffix))))
(defmacro with-tramp-progress-reporter (vec level message &rest body)
"Execute BODY, spinning a progress reporter with MESSAGE in interactive mode.
@@ -2440,13 +2431,12 @@ locally on a remote file name. When the local system is a W32 system
but the remote system is Unix, this introduces a superfluous drive
letter into the file name. This function removes it."
(save-match-data
- (let ((quoted (tramp-compat-file-name-quoted-p name 'top))
- (result (tramp-compat-file-name-unquote name 'top)))
+ (let ((quoted (file-name-quoted-p name 'top))
+ (result (file-name-unquote name 'top)))
(setq result
(replace-regexp-in-string
- (tramp-compat-rx (regexp tramp-volume-letter-regexp) "/")
- "/" result))
- (if quoted (tramp-compat-file-name-quote result 'top) result))))
+ (rx (regexp tramp-volume-letter-regexp) "/") "/" result))
+ (if quoted (file-name-quote result 'top) result))))
;;; Config Manipulation Functions:
@@ -2480,13 +2470,14 @@ Example:
(setcdr v (delete (car v) (cdr v))))
;; Check for function and file or registry key.
(unless (and (functionp (nth 0 (car v)))
+ (stringp (nth 1 (car v)))
(cond
;; Windows registry.
((string-prefix-p "HKEY_CURRENT_USER" (nth 1 (car v)))
(and (memq system-type '(cygwin windows-nt))
(zerop
(tramp-call-process
- v "reg" nil nil nil "query" (nth 1 (car v))))))
+ nil "reg" nil nil nil "query" (nth 1 (car v))))))
;; DNS-SD service type.
((string-match-p
tramp-dns-sd-service-regexp (nth 1 (car v))))
@@ -2554,7 +2545,7 @@ coding system might not be determined. This function repairs it."
;; We found a matching entry in `file-coding-system-alist'.
;; So we add a similar entry, but with the temporary file name
;; as regexp.
- (push (cons (tramp-compat-rx (literal tmpname)) (cdr elt)) result)))))
+ (push (cons (rx (literal tmpname)) (cdr elt)) result)))))
(defun tramp-run-real-handler (operation args)
"Invoke normal file name handler for OPERATION.
@@ -2604,15 +2595,13 @@ Must be handled by the callers."
file-name-nondirectory file-name-sans-versions
file-notify-add-watch file-ownership-preserved-p
file-readable-p file-regular-p file-remote-p
- file-selinux-context file-symlink-p file-truename
- file-writable-p find-backup-file-name get-file-buffer
- insert-directory insert-file-contents load
- make-directory set-file-acl set-file-modes
+ file-selinux-context file-symlink-p file-system-info
+ file-truename file-writable-p find-backup-file-name
+ get-file-buffer insert-directory insert-file-contents
+ load make-directory set-file-acl set-file-modes
set-file-selinux-context set-file-times
substitute-in-file-name unhandled-file-name-directory
vc-registered
- ;; Emacs 27+ only.
- file-system-info
;; Emacs 28- only.
make-directory-internal
;; Emacs 28+ only.
@@ -2655,12 +2644,12 @@ Must be handled by the callers."
(if (bufferp (nth 0 args)) (nth 0 args) (current-buffer))))
;; COMMAND.
((member operation
- '(make-nearby-temp-file process-file shell-command
- start-file-process temporary-file-directory
- ;; Emacs 27+ only.
- exec-path make-process
+ '(exec-path make-nearby-temp-file make-process process-file
+ shell-command start-file-process temporary-file-directory
;; Emacs 29+ only.
- list-system-processes memory-info process-attributes))
+ list-system-processes memory-info process-attributes
+ ;; Emacs 30+ only.
+ file-user-uid))
default-directory)
;; PROC.
((member operation '(file-notify-rm-watch file-notify-valid-p))
@@ -2791,7 +2780,7 @@ Fall back to normal file name handler if no Tramp file name handler exists."
"Invoke Tramp file name completion handler for OPERATION and ARGS.
Falls back to normal file name handler if no Tramp file name handler exists."
(if-let
- ((fn (and tramp-mode
+ ((fn (and tramp-mode minibuffer-completing-file-name
(assoc operation tramp-completion-file-name-handler-alist))))
(save-match-data (apply (cdr fn) args))
(tramp-run-real-handler operation args)))
@@ -2839,7 +2828,7 @@ remote file names."
#'file-name-sans-extension
(directory-files
dir nil (rx bos "tramp" (+ nonl) ".el" (? "c") eos)))))
- (files-regexp (tramp-compat-rx bol (regexp (regexp-opt files)) eol)))
+ (files-regexp (rx bol (regexp (regexp-opt files)) eol)))
(mapatoms
(lambda (atom)
(when (and (functionp atom)
@@ -2876,7 +2865,7 @@ remote file names."
(put #'tramp-completion-file-name-handler 'operations
(mapcar #'car tramp-completion-file-name-handler-alist))
- ;; Integrated in Emacs 27.
+ ;; After unloading, `tramp-archive-enabled' might not be defined.
(when (bound-and-true-p tramp-archive-enabled)
(add-to-list 'file-name-handler-alist
(cons tramp-archive-file-name-regexp
@@ -2961,9 +2950,76 @@ not in completion mode."
(or ;; We check this for the process related to
;; `tramp-buffer-name'; otherwise `start-file-process'
;; wouldn't run ever when `non-essential' is non-nil.
- (and vec (process-live-p (get-process (tramp-buffer-name vec))))
+ (process-live-p (tramp-get-process vec))
(not non-essential))))
+(defun tramp-completion-handle-expand-file-name (filename &optional directory)
+ "Like `expand-file-name' for partial Tramp files."
+ ;; We need special handling only when a method is needed. Then we
+ ;; check, whether DIRECTORY is "/method:" or "/[method/".
+ (let ((dir (or directory default-directory "/")))
+ (cond
+ ((file-name-absolute-p filename) filename)
+ ((and (eq tramp-syntax 'simplified)
+ (string-match-p (rx (regexp tramp-postfix-host-regexp) eos) dir))
+ (concat dir filename))
+ ((string-match-p
+ (rx bos (regexp tramp-prefix-regexp)
+ (* (regexp tramp-remote-file-name-spec-regexp)
+ (regexp tramp-postfix-hop-regexp))
+ (? (regexp tramp-method-regexp) (regexp tramp-postfix-method-regexp)
+ (? (regexp tramp-user-regexp) (regexp tramp-postfix-user-regexp)))
+ eos)
+ dir)
+ (concat dir filename))
+ (t (tramp-run-real-handler #'expand-file-name (list filename directory))))))
+
+(defun tramp-completion-handle-file-exists-p (filename)
+ "Like `file-exists-p' for partial Tramp files."
+ ;; We need special handling only when a method is needed. Then we
+ ;; regard all files "/method:" or "/[method/" as existent, if
+ ;; "method" is a valid Tramp method. And we regard all files
+ ;; "/method:user@", "/user@" or "/[method/user@" as existent, if
+ ;; "user@" is a valid file name completion. Host completion is
+ ;; performed in the respective backen operation.
+ (or (and (cond
+ ;; Completion styles like `flex' and `substring' check for
+ ;; the file name "/". This does exist.
+ ((string-equal filename "/"))
+ ;; Is it a valid method?
+ ((and (not (string-empty-p tramp-postfix-method-format))
+ (string-match
+ (rx
+ (regexp tramp-prefix-regexp)
+ (* (regexp tramp-remote-file-name-spec-regexp)
+ (regexp tramp-postfix-hop-regexp))
+ (group-n 9 (regexp tramp-method-regexp))
+ (? (regexp tramp-postfix-method-regexp))
+ eos)
+ filename))
+ (assoc (match-string 9 filename) tramp-methods))
+ ;; Is it a valid user?
+ ((string-match
+ (rx
+ (regexp tramp-prefix-regexp)
+ (* (regexp tramp-remote-file-name-spec-regexp)
+ (regexp tramp-postfix-hop-regexp))
+ (group-n 10
+ (regexp tramp-method-regexp)
+ (regexp tramp-postfix-method-regexp))
+ (group-n 11
+ (regexp tramp-user-regexp)
+ (regexp tramp-postfix-user-regexp))
+ eos)
+ filename)
+ (member
+ (match-string 11 filename)
+ (file-name-all-completions
+ "" (concat tramp-prefix-format (match-string 10 filename))))))
+ t)
+
+ (tramp-run-real-handler #'file-exists-p (list filename))))
+
;; Method, host name and user name completion.
;; `tramp-completion-dissect-file-name' returns a list of
;; `tramp-file-name' structures. For all of them we return possible
@@ -2974,10 +3030,10 @@ not in completion mode."
(tramp-drop-volume-letter (expand-file-name filename directory)))
;; When `tramp-syntax' is `simplified', we need a default method.
(tramp-default-method
- (and (zerop (length tramp-postfix-method-format))
+ (and (string-empty-p tramp-postfix-method-format)
tramp-default-method))
(tramp-default-method-alist
- (and (zerop (length tramp-postfix-method-format))
+ (and (string-empty-p tramp-postfix-method-format)
tramp-default-method-alist))
tramp-default-user tramp-default-user-alist
tramp-default-host tramp-default-host-alist
@@ -2985,7 +3041,7 @@ not in completion mode."
;; Suppress hop from completion.
(when (string-match
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (+ (regexp tramp-remote-file-name-spec-regexp)
(regexp tramp-postfix-hop-regexp))))
@@ -3037,11 +3093,12 @@ not in completion mode."
result1)))
;; Complete local parts.
- (append
- result1
- (ignore-errors
- (tramp-run-real-handler
- #'file-name-all-completions (list filename directory))))))
+ (delete-dups
+ (append
+ result1
+ (ignore-errors
+ (tramp-run-real-handler
+ #'file-name-all-completions (list filename directory)))))))
;; Method, host name and user name completion for a file.
(defun tramp-completion-handle-file-name-completion
@@ -3078,14 +3135,14 @@ They are collected by `tramp-completion-dissect-file-name1'."
(let (;; "/method" "/[method"
(tramp-completion-file-name-structure1
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (? (regexp tramp-completion-method-regexp))) eol)
1 nil nil nil))
;; "/method:user" "/[method/user"
(tramp-completion-file-name-structure2
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (regexp tramp-method-regexp))
(regexp tramp-postfix-method-regexp)
@@ -3094,7 +3151,7 @@ They are collected by `tramp-completion-dissect-file-name1'."
;; "/method:host" "/[method/host"
(tramp-completion-file-name-structure3
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (regexp tramp-method-regexp))
(regexp tramp-postfix-method-regexp)
@@ -3103,7 +3160,7 @@ They are collected by `tramp-completion-dissect-file-name1'."
;; "/method:[ipv6" "/[method/ipv6"
(tramp-completion-file-name-structure4
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (regexp tramp-method-regexp))
(regexp tramp-postfix-method-regexp)
@@ -3113,7 +3170,7 @@ They are collected by `tramp-completion-dissect-file-name1'."
;; "/method:user@host" "/[method/user@host"
(tramp-completion-file-name-structure5
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (regexp tramp-method-regexp))
(regexp tramp-postfix-method-regexp)
@@ -3124,7 +3181,7 @@ They are collected by `tramp-completion-dissect-file-name1'."
;; "/method:user@[ipv6" "/[method/user@ipv6"
(tramp-completion-file-name-structure6
(list
- (tramp-compat-rx
+ (rx
(regexp tramp-prefix-regexp)
(group (regexp tramp-method-regexp))
(regexp tramp-postfix-method-regexp)
@@ -3199,6 +3256,45 @@ PARTIAL-USER must match USER, PARTIAL-HOST must match HOST."
(unless (zerop (+ (length user) (length host)))
(tramp-completion-make-tramp-file-name method user host nil)))
+(defun tramp-completion-handle-file-name-directory (filename)
+ "Like `file-name-directory' for partial Tramp files."
+ ;; We need special handling only when a method is needed. Then we
+ ;; return "/method:" or "/[method/", if "method" is a valid Tramp
+ ;; method. In the `separate' file name syntax, we return "/[" when
+ ;; `filename' is "/[string" w/o a trailing method separator "/".
+ (cond
+ ((string-match
+ (rx (group (regexp tramp-prefix-regexp)
+ (* (regexp tramp-remote-file-name-spec-regexp)
+ (regexp tramp-postfix-hop-regexp)))
+ (? (regexp tramp-completion-method-regexp)) eos)
+ filename)
+ (match-string 1 filename))
+ ((and (string-match
+ (rx (group
+ (regexp tramp-prefix-regexp)
+ (* (regexp tramp-remote-file-name-spec-regexp)
+ (regexp tramp-postfix-hop-regexp))
+ (group (regexp tramp-method-regexp))
+ (regexp tramp-postfix-method-regexp)
+ (? (regexp tramp-user-regexp)
+ (regexp tramp-postfix-user-regexp)))
+ (? (| (regexp tramp-host-regexp)
+ (: (regexp tramp-prefix-ipv6-regexp)
+ (? (regexp tramp-ipv6-regexp)
+ (? (regexp tramp-postfix-ipv6-regexp))))))
+ eos)
+ filename)
+ ;; Is it a valid method?
+ (or (tramp-string-empty-or-nil-p (match-string 2 filename))
+ (assoc (match-string 2 filename) tramp-methods)))
+ (match-string 1 filename))
+ (t (tramp-run-real-handler #'file-name-directory (list filename)))))
+
+(defun tramp-completion-handle-file-name-nondirectory (filename)
+ "Like `file-name-nondirectory' for partial Tramp files."
+ (tramp-compat-string-replace (file-name-directory filename) "" filename))
+
(defun tramp-parse-default-user-host (method)
"Return a list of (user host) tuples allowed to access for METHOD.
This function is added always in `tramp-get-completion-function'
@@ -3257,7 +3353,7 @@ Either user or host may be nil."
Either user or host may be nil."
(let (result
(regexp
- (tramp-compat-rx
+ (rx
bol (group (regexp tramp-host-regexp))
(? (+ blank) (group (regexp tramp-user-regexp))))))
(when (re-search-forward regexp (line-end-position) t)
@@ -3273,8 +3369,7 @@ User is always nil."
(defun tramp-parse-shosts-group ()
"Return a (user host) tuple allowed to access.
User is always nil."
- (tramp-parse-group
- (tramp-compat-rx bol (group (regexp tramp-host-regexp))) 1 ","))
+ (tramp-parse-group (rx bol (group (regexp tramp-host-regexp))) 1 ","))
(defun tramp-parse-sconfig (filename)
"Return a list of (user host) tuples allowed to access.
@@ -3285,7 +3380,7 @@ User is always nil."
"Return a (user host) tuple allowed to access.
User is always nil."
(tramp-parse-group
- (tramp-compat-rx
+ (rx
(| (: bol (* blank) "Host")
(: bol (+ nonl)) ;; ???
(group (regexp tramp-host-regexp))))
@@ -3310,15 +3405,14 @@ User is always nil."
User is always nil."
(tramp-parse-shostkeys-sknownhosts
dirname
- (tramp-compat-rx
- bol "key_" (+ digit) "_" (group (regexp tramp-host-regexp)) ".pub" eol)))
+ (rx bol "key_" (+ digit) "_" (group (regexp tramp-host-regexp)) ".pub" eol)))
(defun tramp-parse-sknownhosts (dirname)
"Return a list of (user host) tuples allowed to access.
User is always nil."
(tramp-parse-shostkeys-sknownhosts
dirname
- (tramp-compat-rx
+ (rx
bol (group (regexp tramp-host-regexp)) ".ssh-" (| "dss" "rsa") ".pub" eol)))
(defun tramp-parse-hosts (filename)
@@ -3330,8 +3424,7 @@ User is always nil."
"Return a (user host) tuple allowed to access.
User is always nil."
(tramp-parse-group
- (tramp-compat-rx
- bol (group (| (regexp tramp-ipv6-regexp) (regexp tramp-host-regexp))))
+ (rx bol (group (| (regexp tramp-ipv6-regexp) (regexp tramp-host-regexp))))
1 (rx blank)))
(defun tramp-parse-passwd (filename)
@@ -3350,7 +3443,7 @@ Host is always \"localhost\"."
"Return a (user host) tuple allowed to access.
Host is always \"localhost\"."
(let (result
- (regexp (tramp-compat-rx bol (group (regexp tramp-user-regexp)) ":")))
+ (regexp (rx bol (group (regexp tramp-user-regexp)) ":")))
(when (re-search-forward regexp (line-end-position) t)
(setq result (list (match-string 1) "localhost")))
(forward-line 1)
@@ -3401,14 +3494,13 @@ User is always nil."
(tramp-parse-putty-group registry-or-dirname)))))
;; UNIX case.
(tramp-parse-shostkeys-sknownhosts
- registry-or-dirname
- (tramp-compat-rx bol (group (regexp tramp-host-regexp)) eol))))
+ registry-or-dirname (rx bol (group (regexp tramp-host-regexp)) eol))))
(defun tramp-parse-putty-group (registry)
"Return a (user host) tuple allowed to access.
User is always nil."
(let (result
- (regexp (tramp-compat-rx (literal registry) "\\" (group (+ nonl)))))
+ (regexp (rx (literal registry) "\\" (group (+ nonl)))))
(when (re-search-forward regexp (line-end-position) t)
(setq result (list nil (match-string 1))))
(forward-line 1)
@@ -3435,15 +3527,35 @@ BODY is the backend specific code."
BODY is the backend specific code."
(declare (indent 3) (debug t))
`(with-parsed-tramp-file-name (expand-file-name ,directory) nil
- (if (and delete-by-moving-to-trash ,trash)
- ;; Move non-empty dir to trash only if recursive deletion was
- ;; requested.
- (if (not (or ,recursive (tramp-compat-directory-empty-p ,directory)))
- (tramp-error
- v 'file-error "Directory is not empty, not moving to trash")
- (move-file-to-trash ,directory))
- ,@body)
- (tramp-flush-directory-properties v localname)))
+ (let ((delete-by-moving-to-trash
+ (and delete-by-moving-to-trash
+ ;; This variable exists since Emacs 30.1.
+ (not (bound-and-true-p
+ remote-file-name-inhibit-delete-by-moving-to-trash)))))
+ (if (and delete-by-moving-to-trash ,trash)
+ ;; Move non-empty dir to trash only if recursive deletion was
+ ;; requested.
+ (if (not (or ,recursive (tramp-compat-directory-empty-p ,directory)))
+ (tramp-error
+ v 'file-error "Directory is not empty, not moving to trash")
+ (move-file-to-trash ,directory))
+ ,@body)
+ (tramp-flush-directory-properties v localname))))
+
+(defmacro tramp-skeleton-delete-file (filename &optional trash &rest body)
+ "Skeleton for `tramp-*-handle-delete-file'.
+BODY is the backend specific code."
+ (declare (indent 2) (debug t))
+ `(with-parsed-tramp-file-name (expand-file-name ,filename) nil
+ (let ((delete-by-moving-to-trash
+ (and delete-by-moving-to-trash
+ ;; This variable exists since Emacs 30.1.
+ (not (bound-and-true-p
+ remote-file-name-inhibit-delete-by-moving-to-trash)))))
+ (if (and delete-by-moving-to-trash ,trash)
+ (move-file-to-trash ,filename)
+ ,@body)
+ (tramp-flush-file-properties v localname))))
(defmacro tramp-skeleton-directory-files
(directory &optional full match nosort count &rest body)
@@ -3524,6 +3636,25 @@ BODY is the backend specific code."
(tramp-dissect-file-name ,directory) 'file-missing ,directory)
nil)))
+(defmacro tramp-skeleton-file-exists-p (filename &rest body)
+ "Skeleton for `tramp-*-handle-file-exists-p'.
+BODY is the backend specific code."
+ (declare (indent 1) (debug t))
+ ;; `file-exists-p' is used as predicate in file name completion.
+ `(or (and minibuffer-completing-file-name
+ (file-name-absolute-p ,filename)
+ (tramp-string-empty-or-nil-p
+ (tramp-file-name-localname (tramp-dissect-file-name ,filename))))
+ ;; We don't want to run it when `non-essential' is t, or there
+ ;; is no connection process yet.
+ (when (tramp-connectable-p ,filename)
+ (with-parsed-tramp-file-name (expand-file-name ,filename) nil
+ (with-tramp-file-property v localname "file-exists-p"
+ (if (tramp-file-property-p v localname "file-attributes")
+ (not
+ (null (tramp-get-file-property v localname "file-attributes")))
+ ,@body))))))
+
(defmacro tramp-skeleton-file-local-copy (filename &rest body)
"Skeleton for `tramp-*-handle-file-local-copy'.
BODY is the backend specific code."
@@ -3539,6 +3670,99 @@ BODY is the backend specific code."
;; Trigger the `file-missing' error.
(signal 'error nil)))))
+(defmacro tramp-skeleton-file-truename (filename &rest body)
+ "Skeleton for `tramp-*-handle-file-truename'.
+BODY is the backend specific code."
+ (declare (indent 1) (debug (form body)))
+ ;; Preserve trailing "/".
+ `(funcall
+ (if (directory-name-p ,filename) #'file-name-as-directory #'identity)
+ ;; Quote properly.
+ (funcall
+ (if (file-name-quoted-p ,filename) #'file-name-quote #'identity)
+ (with-parsed-tramp-file-name
+ (file-name-unquote (expand-file-name ,filename)) nil
+ (tramp-make-tramp-file-name
+ v
+ (with-tramp-file-property v localname "file-truename"
+ (let (result)
+ (setq result (progn ,@body))
+ ;; Detect cycle.
+ (when (and (file-symlink-p ,filename)
+ (string-equal result localname))
+ (tramp-error
+ v 'file-error
+ "Apparent cycle of symbolic links for %s" ,filename))
+ ;; If the resulting localname looks remote, we must quote
+ ;; it for security reasons.
+ (when (file-remote-p result)
+ (setq result (file-name-quote result 'top)))
+ result)))))))
+
+(defmacro tramp-skeleton-make-directory (dir &optional parents &rest body)
+ "Skeleton for `tramp-*-handle-make-directory'.
+BODY is the backend specific code."
+ ;; Since Emacs 29.1, PARENTS isn't propagated to the handlers
+ ;; anymore. And the return values are specified since then as well.
+ (declare (indent 2) (debug t))
+ `(let* ((dir (directory-file-name (expand-file-name ,dir)))
+ (par (file-name-directory dir)))
+ (with-parsed-tramp-file-name dir nil
+ (when (and (null ,parents) (file-exists-p dir))
+ (tramp-error v 'file-already-exists dir))
+ ;; Make missing directory parts.
+ (when ,parents
+ (unless (file-directory-p par)
+ (make-directory par ,parents)))
+ ;; Just do it.
+ (if (file-exists-p dir) t
+ (tramp-flush-file-properties v localname)
+ ,@body
+ nil))))
+
+(defmacro tramp-skeleton-handle-make-symbolic-link
+ (target linkname &optional ok-if-already-exists &rest body)
+ "Skeleton for `tramp-*-handle-make-symbolic-link'.
+BODY is the backend specific code.
+If TARGET is a non-Tramp file, it is used verbatim as the target
+of the symlink. If TARGET is a Tramp file, only the localname
+component is used as the target of the symlink if it is located
+on the same host. Otherwise, TARGET is quoted."
+ (declare (indent 3) (debug t))
+ `(with-parsed-tramp-file-name (expand-file-name ,linkname) nil
+ ;; If TARGET is a Tramp name, use just the localname component.
+ ;; Don't check for a proper method.
+ (let ((non-essential t))
+ (when (and (tramp-tramp-file-p ,target)
+ (tramp-file-name-equal-p v (tramp-dissect-file-name ,target)))
+ (setq ,target (tramp-file-local-name (expand-file-name ,target))))
+ ;; There could be a cyclic link.
+ (tramp-flush-file-properties
+ v (expand-file-name ,target (tramp-file-local-name default-directory))))
+
+ ;; If TARGET is still remote, quote it.
+ (if (tramp-tramp-file-p ,target)
+ (make-symbolic-link
+ (file-name-quote ,target 'top) ,linkname ,ok-if-already-exists)
+
+ ;; Do the 'confirm if exists' thing.
+ (when (file-exists-p ,linkname)
+ ;; What to do?
+ (if (or (null ,ok-if-already-exists) ; not allowed to exist
+ (and (numberp ,ok-if-already-exists)
+ (not (yes-or-no-p
+ (format
+ "File %s already exists; make it a link anyway?"
+ localname)))))
+ (tramp-error v 'file-already-exists localname)
+ (delete-file ,linkname)))
+
+ ;; We must also flush the cache of the directory, because
+ ;; `file-attributes' reads the values from there.
+ (tramp-flush-file-properties v localname)
+
+ ,@body)))
+
(defmacro tramp-skeleton-set-file-modes-times-uid-gid
(filename &rest body)
"Skeleton for `tramp-*-set-file-{modes,times,uid-gid}'.
@@ -3705,6 +3929,15 @@ Let-bind it when necessary.")
vec (concat "~" (substring filename (match-beginning 1))))
(tramp-make-tramp-file-name (tramp-dissect-file-name filename)))))
+(defun tramp-handle-file-user-uid ()
+ "Like `user-uid' for Tramp files."
+ (let ((v (tramp-dissect-file-name default-directory)))
+ (or (tramp-get-remote-uid v 'integer)
+ ;; Some handlers for `tramp-get-remote-uid' return nil if they
+ ;; can't get the UID; always return -1 in this case for
+ ;; consistency.
+ tramp-unknown-id-integer)))
+
(defun tramp-handle-access-file (filename string)
"Like `access-file' for Tramp files."
(setq filename (file-truename filename))
@@ -3763,7 +3996,7 @@ Let-bind it when necessary.")
;; Otherwise, remove any trailing slash from localname component.
;; Method, host, etc, are unchanged.
(while (with-parsed-tramp-file-name directory nil
- (and (not (zerop (length localname)))
+ (and (tramp-compat-length> localname 0)
(eq (aref localname (1- (length localname))) ?/)
(not (string= localname "/"))))
(setq directory (substring directory 0 -1)))
@@ -3794,7 +4027,8 @@ Let-bind it when necessary.")
;; If DIR is not given, use DEFAULT-DIRECTORY or "/".
(setq dir (or dir default-directory "/"))
;; Handle empty NAME.
- (when (zerop (length name)) (setq name "."))
+ (when (string-empty-p name)
+ (setq name "."))
;; Unless NAME is absolute, concat DIR and NAME.
(unless (file-name-absolute-p name)
(setq name (tramp-compat-file-name-concat dir name)))
@@ -3809,12 +4043,11 @@ Let-bind it when necessary.")
;; not support tilde expansion. But users could declare a
;; respective connection property. (Bug#53847)
(when (string-match
- (tramp-compat-rx bos "~" (group (* (not "/"))) (group (* nonl)) eos)
- localname)
+ (rx bos "~" (group (* (not "/"))) (group (* nonl)) eos) localname)
(let ((uname (match-string 1 localname))
(fname (match-string 2 localname))
hname)
- (when (zerop (length uname))
+ (when (tramp-string-empty-or-nil-p uname)
(setq uname user))
(when (setq hname (tramp-get-home-directory v uname))
(setq localname (concat hname fname)))))
@@ -3843,9 +4076,10 @@ Let-bind it when necessary.")
(defun tramp-handle-file-directory-p (filename)
"Like `file-directory-p' for Tramp files."
;; `file-truename' could raise an error, for example due to a cyclic
- ;; symlink.
- (ignore-errors
- (eq (file-attribute-type (file-attributes (file-truename filename))) t)))
+ ;; symlink. We don't protect this despite it, because other errors
+ ;; might be worth to be visible, for example impossibility to mount
+ ;; in tramp-gvfs.el.
+ (eq (file-attribute-type (file-attributes (file-truename filename))) t))
(defun tramp-handle-file-equal-p (filename1 filename2)
"Like `file-equalp-p' for Tramp files."
@@ -3858,13 +4092,8 @@ Let-bind it when necessary.")
(defun tramp-handle-file-exists-p (filename)
"Like `file-exists-p' for Tramp files."
- ;; `file-exists-p' is used as predicate in file name completion.
- ;; We don't want to run it when `non-essential' is t, or there is
- ;; no connection process yet.
- (when (tramp-connectable-p filename)
- (with-parsed-tramp-file-name (expand-file-name filename) nil
- (with-tramp-file-property v localname "file-exists-p"
- (not (null (file-attributes filename)))))))
+ (tramp-skeleton-file-exists-p filename
+ (not (null (file-attributes filename)))))
(defun tramp-handle-file-in-directory-p (filename directory)
"Like `file-in-directory-p' for Tramp files."
@@ -3897,7 +4126,7 @@ Let-bind it when necessary.")
;; Run the command on the localname portion only unless we are in
;; completion mode.
(tramp-make-tramp-file-name
- v (or (and (zerop (length (tramp-file-name-localname v)))
+ v (or (and (tramp-string-empty-or-nil-p (tramp-file-name-localname v))
(not (tramp-connectable-p file)))
(tramp-run-real-handler
#'file-name-as-directory
@@ -3960,7 +4189,8 @@ Let-bind it when necessary.")
;; "." and ".." are never interesting as completions, and are
;; actually in the way in a directory with only one file. See
;; file_name_completion() in dired.c.
- (when (and (consp fnac) (= (length (delete "./" (delete "../" fnac))) 1))
+ (when (and (consp fnac)
+ (tramp-compat-length= (delete "./" (delete "../" fnac)) 1))
(setq fnac (delete "./" (delete "../" fnac))))
(or
(try-completion
@@ -3971,9 +4201,7 @@ Let-bind it when necessary.")
(and
completion-ignored-extensions
(string-match-p
- (tramp-compat-rx
- (regexp (regexp-opt completion-ignored-extensions)) eos)
- x)
+ (rx (regexp (regexp-opt completion-ignored-extensions)) eos) x)
;; We remember the hit.
(push x hits-ignored-extensions))))))
;; No match. So we try again for ignored files.
@@ -4004,18 +4232,11 @@ Let-bind it when necessary.")
((not (file-exists-p file2)) t)
;; Tramp reads and writes timestamps on second level. So we round
;; the timestamps to seconds without fractions.
- ;; `time-convert' has been introduced with Emacs 27.1.
- ((fboundp 'time-convert)
- (time-less-p
- (tramp-compat-funcall
- 'time-convert
- (file-attribute-modification-time (file-attributes file2)) 'integer)
- (tramp-compat-funcall
- 'time-convert
- (file-attribute-modification-time (file-attributes file1)) 'integer)))
(t (time-less-p
- (file-attribute-modification-time (file-attributes file2))
- (file-attribute-modification-time (file-attributes file1))))))
+ (time-convert
+ (file-attribute-modification-time (file-attributes file2)) 'integer)
+ (time-convert
+ (file-attribute-modification-time (file-attributes file1)) 'integer)))))
(defun tramp-handle-file-readable-p (filename)
"Like `file-readable-p' for Tramp files."
@@ -4079,14 +4300,8 @@ Let-bind it when necessary.")
(defun tramp-handle-file-truename (filename)
"Like `file-truename' for Tramp files."
- ;; Preserve trailing "/".
- (funcall
- (if (directory-name-p filename) #'file-name-as-directory #'identity)
- ;; Quote properly.
- (funcall
- (if (tramp-compat-file-name-quoted-p filename)
- #'tramp-compat-file-name-quote #'identity)
- (let ((result (tramp-compat-file-name-unquote (expand-file-name filename)))
+ (tramp-skeleton-file-truename filename
+ (let ((result (directory-file-name localname))
(numchase 0)
;; Don't make the following value larger than necessary.
;; People expect an error message in a timely fashion when
@@ -4096,31 +4311,21 @@ Let-bind it when necessary.")
;; Unquoting could enable encryption.
tramp-crypt-enabled
symlink-target)
- (with-parsed-tramp-file-name result v1
- ;; We cache only the localname.
- (tramp-make-tramp-file-name
- v1
- (with-tramp-file-property v1 v1-localname "file-truename"
- (while (and (setq symlink-target (file-symlink-p result))
- (< numchase numchase-limit))
- (setq numchase (1+ numchase)
- result
- (with-parsed-tramp-file-name (expand-file-name result) v2
- (tramp-make-tramp-file-name
- v2
- (if (stringp symlink-target)
- (if (file-remote-p symlink-target)
- (tramp-compat-file-name-quote symlink-target 'top)
- (tramp-drop-volume-letter
- (expand-file-name
- symlink-target
- (file-name-directory v2-localname))))
- v2-localname))))
- (when (>= numchase numchase-limit)
- (tramp-error
- v1 'file-error
- "Maximum number (%d) of symlinks exceeded" numchase-limit)))
- (tramp-file-local-name (directory-file-name result)))))))))
+ (while (and (setq symlink-target
+ (file-symlink-p (tramp-make-tramp-file-name v result)))
+ (< numchase numchase-limit))
+ (setq numchase (1+ numchase)
+ result
+ (if (file-remote-p symlink-target)
+ (file-name-quote symlink-target 'top)
+ (tramp-drop-volume-letter
+ (expand-file-name
+ symlink-target (file-name-directory result)))))
+ (when (>= numchase numchase-limit)
+ (tramp-error
+ v 'file-error
+ "Maximum number (%d) of symlinks exceeded" numchase-limit)))
+ (directory-file-name result))))
(defun tramp-handle-file-writable-p (filename)
"Like `file-writable-p' for Tramp files."
@@ -4343,8 +4548,7 @@ Return it as number of seconds. Used in `tramp-process-attributes-ps-format'."
(defconst tramp-process-attributes-ps-args
`("-eww"
"-o"
- ,(mapconcat
- #'identity
+ ,(string-join
'("pid"
"euid"
"euser"
@@ -4420,53 +4624,49 @@ Parsing the remote \"ps\" output is controlled by
It is not guaranteed, that all process attributes as described in
`process-attributes' are returned. The additional attribute
`pid' shall be returned always."
- ;; Since Emacs 27.1.
- (when (fboundp 'connection-local-criteria-for-default-directory)
- (with-tramp-file-property vec "/" "process-attributes"
- (ignore-errors
- (with-temp-buffer
- (hack-connection-local-variables-apply
- (connection-local-criteria-for-default-directory))
- ;; (pop-to-buffer (current-buffer))
- (when (zerop
- (apply
- #'process-file
- "ps" nil t nil tramp-process-attributes-ps-args))
- (let (result res)
- (goto-char (point-min))
- (while (not (eobp))
- ;; (tramp-test-message
- ;; "%s" (buffer-substring (point) (line-end-position)))
- (when (save-excursion
- (search-forward-regexp
- (rx digit) (line-end-position) 'noerror))
- (setq res nil)
- (dolist (elt tramp-process-attributes-ps-format)
- (push
- (cons
- (car elt)
- (cond
- ((eq (cdr elt) 'number) (read (current-buffer)))
- ((eq (cdr elt) 'string)
- (search-forward-regexp (rx (+ (not blank))))
- (match-string 0))
- ((numberp (cdr elt))
- (search-forward-regexp (rx (+ blank)))
- (search-forward-regexp
- (rx (+ nonl)) (+ (point) (cdr elt)))
- (string-trim (match-string 0)))
- ((fboundp (cdr elt))
- (funcall (cdr elt)))
- ((null (cdr elt))
- (search-forward-regexp (rx (+ blank)))
- (buffer-substring (point) (line-end-position)))))
- res))
- ;; `nice' could be `-'.
- (setq res (rassq-delete-all '- res))
- (push (append res) result))
- (forward-line))
- ;; Return result.
- result)))))))
+ (with-tramp-file-property vec "/" "process-attributes"
+ (ignore-errors
+ (with-temp-buffer
+ (hack-connection-local-variables-apply
+ (connection-local-criteria-for-default-directory))
+ ;; (pop-to-buffer (current-buffer))
+ (when (zerop
+ (apply
+ #'process-file "ps" nil t nil tramp-process-attributes-ps-args))
+ (let (result res)
+ (goto-char (point-min))
+ (while (not (eobp))
+ ;; (tramp-test-message
+ ;; "%s" (buffer-substring (point) (line-end-position)))
+ (when (save-excursion
+ (search-forward-regexp
+ (rx digit) (line-end-position) 'noerror))
+ (setq res nil)
+ (dolist (elt tramp-process-attributes-ps-format)
+ (push
+ (cons
+ (car elt)
+ (cond
+ ((eq (cdr elt) 'number) (read (current-buffer)))
+ ((eq (cdr elt) 'string)
+ (search-forward-regexp (rx (+ (not blank))))
+ (match-string 0))
+ ((numberp (cdr elt))
+ (search-forward-regexp (rx (+ blank)))
+ (search-forward-regexp (rx (+ nonl)) (+ (point) (cdr elt)))
+ (string-trim (match-string 0)))
+ ((fboundp (cdr elt))
+ (funcall (cdr elt)))
+ ((null (cdr elt))
+ (search-forward-regexp (rx (+ blank)))
+ (buffer-substring (point) (line-end-position)))))
+ res))
+ ;; `nice' could be `-'.
+ (setq res (rassq-delete-all '- res))
+ (push (append res) result))
+ (forward-line))
+ ;; Return result.
+ result))))))
(defun tramp-handle-list-system-processes ()
"Like `list-system-processes' for Tramp files."
@@ -4581,11 +4781,22 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
(defun tramp-handle-unlock-file (file)
"Like `unlock-file' for Tramp files."
- (when-let ((lockname (tramp-compat-make-lock-file-name file)))
- (condition-case err
- (delete-file lockname)
- ;; `userlock--handle-unlock-error' exists since Emacs 28.1.
- (error (tramp-compat-funcall 'userlock--handle-unlock-error err)))))
+ (condition-case err
+ ;; When there is no connection, we don't do it. Otherwise,
+ ;; functions like `kill-buffer' would try to reestablish the
+ ;; connection. See Bug#61663.
+ (if-let ((v (tramp-dissect-file-name file))
+ ((process-live-p (tramp-get-process v)))
+ (lockname (tramp-compat-make-lock-file-name file)))
+ (delete-file lockname)
+ ;; Trigger the unlock error.
+ (signal 'file-error `("Cannot remove lock file for" ,file)))
+ ;; `userlock--handle-unlock-error' exists since Emacs 28.1. It
+ ;; checks for `create-lockfiles' since Emacs 30.1, we don't need
+ ;; this check here, then.
+ (error (unless (or (not create-lockfiles)
+ (bound-and-true-p remote-file-name-inhibit-locks))
+ (tramp-compat-funcall 'userlock--handle-unlock-error err)))))
(defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
"Like `load' for Tramp files."
@@ -4627,9 +4838,9 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
tramp-prefix-format proxy tramp-postfix-host-format))
(entry
(list (and (stringp host-port)
- (tramp-compat-rx bol (literal host-port) eol))
+ (rx bol (literal host-port) eol))
(and (stringp user-domain)
- (tramp-compat-rx bol (literal user-domain) eol))
+ (rx bol (literal user-domain) eol))
(propertize proxy 'tramp-ad-hoc t))))
(tramp-message vec 5 "Add %S to `tramp-default-proxies-alist'" entry)
;; Add the hop.
@@ -4687,7 +4898,7 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
(unless (tramp-multi-hop-p item)
(setq tramp-default-proxies-alist saved-tdpa)
(tramp-user-error
- vec "Method `%s' is not supported for multi-hops."
+ vec "Method `%s' is not supported for multi-hops"
(tramp-file-name-method item)))))
;; Some methods ("su", "sg", "sudo", "doas", "ksu") do not use the
@@ -4702,14 +4913,14 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.")
(or
;; The host name is used for the remote shell command.
(member
- "%h" (tramp-compat-flatten-tree
+ "%h" (flatten-tree
(tramp-get-method-parameter item 'tramp-login-args)))
;; The host name must match previous hop.
(string-match-p previous-host host))
(setq tramp-default-proxies-alist saved-tdpa)
(tramp-user-error
vec "Host name `%s' does not match `%s'" host previous-host))
- (setq previous-host (tramp-compat-rx bol (literal host) eol)))))
+ (setq previous-host (rx bol (literal host) eol)))))
;; Result.
target-alist))
@@ -4723,7 +4934,7 @@ substitution. SPEC-LIST is a list of char/value pairs used for
(let ((args (tramp-get-method-parameter vec parameter))
(spec (apply 'format-spec-make spec-list)))
;; Expand format spec.
- (tramp-compat-flatten-tree
+ (flatten-tree
(mapcar
(lambda (x)
(setq x (mapcar (lambda (y) (format-spec y spec)) x))
@@ -4741,7 +4952,7 @@ substitution. SPEC-LIST is a list of char/value pairs used for
(tramp-get-connection-property v "direct-async-process")
;; There's no multi-hop.
(or (not (tramp-multi-hop-p v))
- (= (length (tramp-compute-multi-hops v)) 1))
+ (null (cdr (tramp-compute-multi-hops v))))
;; There's no remote stdout or stderr file.
(or (not (stringp buffer)) (not (tramp-tramp-file-p buffer)))
(or (not (stringp stderr)) (not (tramp-tramp-file-p stderr))))))
@@ -4822,7 +5033,7 @@ substitution. SPEC-LIST is a list of char/value pairs used for
(if (consp (tramp-get-method-parameter v 'tramp-direct-async))
(append
(tramp-get-method-parameter v 'tramp-direct-async)
- `(,(mapconcat #'identity command " ")))
+ `(,(string-join command " ")))
command)))
;; Check for `tramp-sh-file-name-handler', because something
@@ -4860,9 +5071,8 @@ substitution. SPEC-LIST is a list of char/value pairs used for
(setq
login-args
(append
- (tramp-compat-flatten-tree
- (tramp-get-method-parameter v 'tramp-async-args))
- (tramp-compat-flatten-tree
+ (flatten-tree (tramp-get-method-parameter v 'tramp-async-args))
+ (flatten-tree
(mapcar
(lambda (x) (split-string x " "))
(tramp-expand-args
@@ -4880,6 +5090,11 @@ substitution. SPEC-LIST is a list of char/value pairs used for
;; t. See Bug#51177.
(when filter
(set-process-filter p filter))
+ (process-put p 'tramp-vector v)
+ ;; This is neded for ssh or PuTTY based processes, and
+ ;; only if the respective options are set. Perhaps, the
+ ;; setting could be more fine-grained.
+ ;; (process-put p 'tramp-shared-socket t)
(process-put p 'remote-command orig-command)
(tramp-set-connection-property p "remote-command" orig-command)
@@ -5064,19 +5279,11 @@ support symbolic links."
(when current-buffer-p
(barf-if-buffer-read-only)
(push-mark nil t))
- ;; `shell-command-save-pos-or-erase' has been introduced with
- ;; Emacs 27.1.
- (if (fboundp 'shell-command-save-pos-or-erase)
- (tramp-compat-funcall
- 'shell-command-save-pos-or-erase current-buffer-p)
- (setq buffer-read-only nil)
- (erase-buffer)))
+ (shell-command-save-pos-or-erase current-buffer-p))
(if (integerp asynchronous)
(let ((tramp-remote-process-environment
- ;; `async-shell-command-width' has been introduced with
- ;; Emacs 27.1.
- (if (natnump (bound-and-true-p async-shell-command-width))
+ (if (natnump async-shell-command-width)
(cons (format "COLUMNS=%d"
(bound-and-true-p async-shell-command-width))
tramp-remote-process-environment)
@@ -5097,17 +5304,19 @@ support symbolic links."
(add-function
:after (process-sentinel p)
(lambda (_proc _string)
- (with-current-buffer error-buffer
- (insert-file-contents-literally
- error-file nil nil nil 'replace))
- (delete-file error-file))))
+ (ignore-errors
+ (with-current-buffer error-buffer
+ (insert-file-contents-literally
+ error-file nil nil nil 'replace))
+ (delete-file error-file)))))
(display-buffer output-buffer '(nil (allow-no-window . t)))))
;; Insert error messages if they were separated.
(when (and error-file (not (process-live-p p)))
- (with-current-buffer error-buffer
- (insert-file-contents-literally error-file))
- (delete-file error-file))))
+ (ignore-errors
+ (with-current-buffer error-buffer
+ (insert-file-contents-literally error-file))
+ (delete-file error-file)))))
;; Synchronous case.
(prog1
@@ -5115,9 +5324,10 @@ support symbolic links."
(process-file-shell-command command nil buffer)
;; Insert error messages if they were separated.
(when error-file
- (with-current-buffer error-buffer
- (insert-file-contents-literally error-file))
- (delete-file error-file))
+ (ignore-errors
+ (with-current-buffer error-buffer
+ (insert-file-contents-literally error-file))
+ (delete-file error-file)))
(if current-buffer-p
;; This is like exchange-point-and-mark, but doesn't
;; activate the mark. It is cleaner to avoid activation,
@@ -5127,11 +5337,7 @@ support symbolic links."
(goto-char (prog1 (mark t)
(set-marker (mark-marker) (point)
(current-buffer))))
- ;; `shell-command-set-point-after-cmd' has been
- ;; introduced with Emacs 27.1.
- (if (fboundp 'shell-command-set-point-after-cmd)
- (tramp-compat-funcall
- 'shell-command-set-point-after-cmd)))
+ (shell-command-set-point-after-cmd))
;; There's some output, display it.
(when (with-current-buffer output-buffer (> (point-max) (point-min)))
(display-message-or-buffer output-buffer)))))))
@@ -5139,10 +5345,7 @@ support symbolic links."
(defun tramp-handle-start-file-process (name buffer program &rest args)
"Like `start-file-process' for Tramp files.
BUFFER might be a list, in this case STDERR is separated."
- ;; `make-process' knows the `:file-handler' argument since Emacs
- ;; 27.1 only. Therefore, we invoke it via `tramp-file-name-handler'.
- (tramp-file-name-handler
- 'make-process
+ (make-process
:name name
:buffer (if (consp buffer) (car buffer) buffer)
:command (and program (cons program args))
@@ -5155,7 +5358,7 @@ BUFFER might be a list, in this case STDERR is separated."
"Like `substitute-in-file-name' for Tramp files.
\"//\" and \"/~\" substitute only in the local filename part."
;; Check, whether the local part is a quoted file name.
- (if (tramp-compat-file-name-quoted-p filename)
+ (if (file-name-quoted-p filename)
filename
;; First, we must replace environment variables.
(setq filename (tramp-replace-environment-variables filename))
@@ -5186,6 +5389,12 @@ BUFFER might be a list, in this case STDERR is separated."
(defconst tramp-time-doesnt-exist '(-1 65535)
"An invalid time value, used as \"Doesn't exist\" value.")
+(defsubst tramp-defined-time (time)
+ "Return TIME or nil (when TIME is not a time spec)."
+ (unless (or (time-equal-p time tramp-time-doesnt-exist)
+ (time-equal-p time tramp-time-dont-know))
+ time))
+
(defun tramp-handle-set-visited-file-modtime (&optional time-list)
"Like `set-visited-file-modtime' for Tramp files."
(unless (buffer-file-name)
@@ -5197,7 +5406,7 @@ BUFFER might be a list, in this case STDERR is separated."
(or (file-attribute-modification-time
(file-attributes (buffer-file-name)))
tramp-time-doesnt-exist))))
- (unless (tramp-compat-time-equal-p time-list tramp-time-dont-know)
+ (unless (time-equal-p time-list tramp-time-dont-know)
(tramp-run-real-handler #'set-visited-file-modtime (list time-list))))
(defun tramp-handle-verify-visited-file-modtime (&optional buf)
@@ -5223,14 +5432,13 @@ of."
(cond
;; File exists, and has a known modtime.
- ((and attr
- (not (tramp-compat-time-equal-p modtime tramp-time-dont-know)))
+ ((and attr (not (time-equal-p modtime tramp-time-dont-know)))
(< (abs (tramp-time-diff modtime mt)) 2))
;; Modtime has the don't know value.
(attr t)
;; If file does not exist, say it is not modified if and
;; only if that agrees with the buffer's record.
- (t (tramp-compat-time-equal-p mt tramp-time-doesnt-exist))))))))
+ (t (time-equal-p mt tramp-time-doesnt-exist))))))))
(defun tramp-handle-write-region
(start end filename &optional append visit lockname mustbenew)
@@ -5289,7 +5497,7 @@ of."
;; There might be pending output. Avoid problems with reentrant
;; call of Tramp.
(ignore-errors
- (while (tramp-accept-process-output proc 0)))
+ (while (tramp-accept-process-output proc)))
(tramp-message proc 6 "Kill %S" proc)
(delete-process proc))
@@ -5301,7 +5509,7 @@ of."
(with-current-buffer (process-buffer proc)
(file-exists-p
(concat (file-remote-p default-directory)
- (process-get proc 'watch-name))))))
+ (process-get proc 'tramp-watch-name))))))
(defun tramp-file-notify-process-sentinel (proc event)
"Call `file-notify-rm-watch'."
@@ -5427,7 +5635,7 @@ Wait, until the connection buffer changes."
;; Hide message in buffer.
(narrow-to-region (point-max) (point-max))
;; Wait for new output.
- (while (not (tramp-compat-ignore-error 'file-error
+ (while (not (ignore-error file-error
(tramp-wait-for-regexp
proc 0.1 tramp-security-key-confirmed-regexp)))
(when (tramp-check-for-regexp proc tramp-security-key-timeout-regexp)
@@ -5441,13 +5649,13 @@ Wait, until the connection buffer changes."
"Check, whether a process has finished."
(unless (process-live-p proc)
;; There might be pending output.
- (while (tramp-accept-process-output proc 0))
+ (while (tramp-accept-process-output proc))
(throw 'tramp-action 'process-died)))
(defun tramp-action-out-of-band (proc vec)
"Check, whether an out-of-band copy has finished."
;; There might be pending output for the exit status.
- (while (tramp-accept-process-output proc 0))
+ (while (tramp-accept-process-output proc))
(cond ((and (not (process-live-p proc))
(zerop (process-exit-status proc)))
(tramp-message vec 3 "Process has finished.")
@@ -5478,7 +5686,7 @@ See `tramp-process-actions' for the format of ACTIONS."
(while (not found)
;; Reread output once all actions have been performed.
;; Obviously, the output was not complete.
- (while (tramp-accept-process-output proc 0))
+ (while (tramp-accept-process-output proc))
(setq todo actions)
(while todo
(setq item (pop todo)
@@ -5521,7 +5729,7 @@ performed successfully. Any other value means an error."
;; use the "password-vector" property in case we have several hops.
(tramp-set-connection-property
(tramp-get-connection-property
- proc "password-vector" (process-get proc 'vector))
+ proc "password-vector" (process-get proc 'tramp-vector))
"first-password-request" tramp-cache-read-persistent-data)
(save-restriction
(with-tramp-progress-reporter
@@ -5595,11 +5803,22 @@ Mostly useful to protect BODY from being interrupted by timers."
,@body)
(tramp-flush-connection-property ,proc "locked"))))
-(defun tramp-accept-process-output (proc &optional timeout)
+(defun tramp-accept-process-output (proc &optional _timeout)
"Like `accept-process-output' for Tramp processes.
This is needed in order to hide `last-coding-system-used', which is set
for process communication also.
If the user quits via `C-g', it is propagated up to `tramp-file-name-handler'."
+ (declare (advertised-calling-convention (proc) "29.2"))
+ ;; There could be other processes which use the same socket for
+ ;; communication. This could block the output for the current
+ ;; process. Read such output first. (Bug#61350)
+ ;; The process property isn't set anymore due to Bug#62194.
+ (when-let (((process-get proc 'tramp-shared-socket))
+ (v (process-get proc 'tramp-vector)))
+ (dolist (p (delq proc (process-list)))
+ (when (tramp-file-name-equal-p v (process-get p 'tramp-vector))
+ (with-local-quit (accept-process-output p 0 nil t)))))
+
(with-current-buffer (process-buffer proc)
(let ((inhibit-read-only t)
last-coding-system-used
@@ -5609,10 +5828,10 @@ If the user quits via `C-g', it is propagated up to `tramp-file-name-handler'."
;; JUST-THIS-ONE is set due to Bug#12145. `with-local-quit'
;; returns t in order to report success.
(if (with-local-quit
- (setq result (accept-process-output proc timeout nil t)) t)
+ (setq result (accept-process-output proc 0 nil t)) t)
(tramp-message
- proc 10 "%s %s %s %s\n%s"
- proc timeout (process-status proc) result (buffer-string))
+ proc 10 "%s %s %s\n%s"
+ proc (process-status proc) result (buffer-string))
;; Propagate quit.
(keyboard-quit)))
result)))
@@ -5726,8 +5945,7 @@ the remote host use line-endings as defined in the variable
(let ((inhibit-read-only t)) (delete-region (point-min) (point-max)))
;; Replace "\n" by `tramp-rsh-end-of-line'.
(setq string
- (mapconcat
- #'identity (split-string string "\n") tramp-rsh-end-of-line))
+ (string-join (split-string string "\n") tramp-rsh-end-of-line))
(unless (or (string-empty-p string)
(string-equal (substring string -1) tramp-rsh-end-of-line))
(setq string (concat string tramp-rsh-end-of-line)))
@@ -5750,7 +5968,7 @@ the remote host use line-endings as defined in the variable
(defun tramp-process-sentinel (proc event)
"Flush file caches and remove shell prompt."
(unless (process-live-p proc)
- (let ((vec (process-get proc 'vector))
+ (let ((vec (process-get proc 'tramp-vector))
(buf (process-buffer proc))
(prompt (tramp-get-connection-property proc "prompt")))
(when vec
@@ -5759,8 +5977,7 @@ the remote host use line-endings as defined in the variable
(tramp-flush-directory-properties vec "/"))
(when (buffer-live-p buf)
(with-current-buffer buf
- (when (and prompt
- (tramp-search-regexp (tramp-compat-rx (literal prompt))))
+ (when (and prompt (tramp-search-regexp (rx (literal prompt))))
(delete-region (point) (point-max))))))))
(defun tramp-get-inode (vec)
@@ -5945,9 +6162,7 @@ ID-FORMAT valid values are `string' and `integer'."
(with-tramp-connection-property nil (format "gid-%s" id-format)
(cond
((equal id-format 'integer) (group-gid))
- ;; `group-name' has been introduced with Emacs 27.1.
- ((and (fboundp 'group-name) (equal id-format 'string))
- (tramp-compat-funcall 'group-name (group-gid)))
+ ((equal id-format 'string) (group-name (group-gid)))
((file-attribute-group-id (file-attributes "~/" id-format))))))
(defun tramp-get-local-locale (&optional vec)
@@ -5964,7 +6179,7 @@ VEC is used for tracing."
(while candidates
(goto-char (point-min))
(if (string-match-p
- (tramp-compat-rx bol (literal (car candidates)) (? "\r") eol)
+ (rx bol (literal (car candidates)) (? "\r") eol)
(buffer-string))
(setq locale (car candidates)
candidates nil)
@@ -6295,7 +6510,7 @@ this file, if that variable is non-nil."
("|" . "__")
("[" . "_l")
("]" . "_r"))
- (tramp-compat-file-name-unquote (buffer-file-name)))
+ (file-name-unquote (buffer-file-name)))
tramp-auto-save-directory)))
result)
(prog1 ;; Run plain `make-auto-save-file-name'.
@@ -6324,7 +6539,7 @@ ALIST is of the form ((FROM . TO) ...)."
(let* ((pr (car alist))
(from (car pr))
(to (cdr pr)))
- (while (string-match (tramp-compat-rx (literal from)) string)
+ (while (string-match (rx (literal from)) string)
(setq string (replace-match to t t string)))
(setq alist (cdr alist))))
string))
@@ -6353,6 +6568,7 @@ It always returns a return code. The Lisp error raised when
PROGRAM is nil is trapped also, returning 1. Furthermore, traces
are written with verbosity of 6."
(let ((default-directory tramp-compat-temporary-file-directory)
+ (temporary-file-directory tramp-compat-temporary-file-directory)
(process-environment (default-toplevel-value 'process-environment))
(destination (if (eq destination t) (current-buffer) destination))
(vec (or vec (car tramp-current-connection)))
@@ -6373,7 +6589,7 @@ are written with verbosity of 6."
(error
(setq error (error-message-string err)
result 1)))
- (if (zerop (length error))
+ (if (tramp-string-empty-or-nil-p error)
(tramp-message vec 6 "%s\n%s" result output)
(tramp-message vec 6 "%s\n%s\n%s" result output error))
result))
@@ -6385,6 +6601,7 @@ It always returns a return code. The Lisp error raised when
PROGRAM is nil is trapped also, returning 1. Furthermore, traces
are written with verbosity of 6."
(let ((default-directory tramp-compat-temporary-file-directory)
+ (temporary-file-directory tramp-compat-temporary-file-directory)
(process-environment (default-toplevel-value 'process-environment))
(buffer (if (eq buffer t) (current-buffer) buffer))
result)
@@ -6426,7 +6643,7 @@ verbosity of 6."
(apply #'process-lines program args)
(error
(tramp-error vec (car err) (cdr err)))))
- (tramp-message vec 6 "\n%s" (mapconcat #'identity result "\n"))
+ (tramp-message vec 6 "\n%s" (string-join result "\n"))
result))
(defun tramp-process-running-p (process-name)
@@ -6458,7 +6675,7 @@ Consults the auth-source package."
;; In tramp-sh.el, we must use "password-vector" due to
;; multi-hop.
(vec (tramp-get-connection-property
- proc "password-vector" (process-get proc 'vector)))
+ proc "password-vector" (process-get proc 'tramp-vector)))
(key (tramp-make-tramp-file-name vec 'noloc))
(method (tramp-file-name-method vec))
(user (or (tramp-file-name-user-domain vec)
@@ -6509,7 +6726,7 @@ Consults the auth-source package."
;; Workaround. Prior Emacs 28.1, auth-source has saved empty
;; passwords. See discussion in Bug#50399.
- (when (zerop (length auth-passwd))
+ (when (tramp-string-empty-or-nil-p auth-passwd)
(setq tramp-password-save-function nil))
(tramp-set-connection-property vec "first-password-request" nil)
@@ -6559,7 +6776,7 @@ T1 and T2 are time values (as returned by `current-time' for example)."
Suppress `shell-file-name'. This is needed on w32 systems, which
would use a wrong quoting for local file names. See `w32-shell-name'."
(let (shell-file-name)
- (shell-quote-argument (tramp-compat-file-name-unquote s))))
+ (shell-quote-argument (file-name-unquote s))))
;; Currently (as of Emacs 20.5), the function `shell-quote-argument'
;; does not deal well with newline characters. Newline is replaced by
@@ -6592,7 +6809,7 @@ Only works for Bourne-like shells."
(string= (substring result 0 2) "\\~"))
(setq result (substring result 1)))
(replace-regexp-in-string
- (tramp-compat-rx "\\" (literal tramp-rsh-end-of-line))
+ (rx "\\" (literal tramp-rsh-end-of-line))
(format "'%s'" tramp-rsh-end-of-line) result)))))
;;; Signal handling. This works for remote processes, which have set
@@ -6621,13 +6838,14 @@ name of a process or buffer, or nil to default to the current buffer."
;; negative pid, so we try both variants.
(tramp-compat-funcall
'tramp-send-command
- (process-get proc 'vector)
+ (process-get proc 'tramp-vector)
(format "(\\kill -2 -%d || \\kill -2 %d) 2>%s"
pid pid
- (tramp-get-remote-null-device (process-get proc 'vector))))
+ (tramp-get-remote-null-device
+ (process-get proc 'tramp-vector))))
;; Wait, until the process has disappeared. If it doesn't,
;; fall back to the default implementation.
- (while (tramp-accept-process-output proc 0))
+ (while (tramp-accept-process-output proc))
(not (process-live-p proc))))))
(add-hook 'interrupt-process-functions #'tramp-interrupt-process)
@@ -6650,7 +6868,7 @@ SIGCODE may be an integer, or a symbol whose name is a signal name."
(cond
((processp process)
(setq pid (process-get process 'remote-pid)
- vec (process-get process 'vector)))
+ vec (process-get process 'tramp-vector)))
((numberp process)
(setq pid process
vec (and (stringp remote) (tramp-dissect-file-name remote))))
diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el
index 0d27829b915..ad7bf94cdcd 100644
--- a/lisp/net/trampver.el
+++ b/lisp/net/trampver.el
@@ -7,8 +7,8 @@
;; Maintainer: Michael Albinus <michael.albinus@gmx.de>
;; Keywords: comm, processes
;; Package: tramp
-;; Version: 2.6.0.29.1
-;; Package-Requires: ((emacs "26.1"))
+;; Version: 2.7.0-pre
+;; Package-Requires: ((emacs "27.1"))
;; Package-Type: multi
;; URL: https://www.gnu.org/software/tramp/
@@ -40,7 +40,7 @@
;; ./configure" to change them.
;;;###tramp-autoload
-(defconst tramp-version "2.6.0.29.1"
+(defconst tramp-version "2.7.0-pre"
"This version of Tramp.")
;;;###tramp-autoload
@@ -55,11 +55,9 @@
(dir (or (locate-dominating-file (locate-library "tramp") ".git")
source-directory))
debug-on-error)
- ;; `emacs-repository-get-branch' has been introduced with Emacs 27.1.
- (with-no-warnings
- (and (stringp dir) (file-directory-p dir)
- (executable-find "git")
- (emacs-repository-get-branch dir)))))
+ (and (stringp dir) (file-directory-p dir)
+ (executable-find "git")
+ (emacs-repository-get-branch dir))))
"The repository branch of the Tramp sources.")
(defconst tramp-repository-version
@@ -76,9 +74,9 @@
"The repository revision of the Tramp sources.")
;; Check for Emacs version.
-(let ((x (if (not (string-version-lessp emacs-version "26.1"))
+(let ((x (if (not (string-version-lessp emacs-version "27.1"))
"ok"
- (format "Tramp 2.6.0.29.1 is not fit for %s"
+ (format "Tramp 2.7.0-pre is not fit for %s"
(replace-regexp-in-string "\n" "" (emacs-version))))))
(unless (string-equal "ok" x) (error "%s" x)))
diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el
index 3f6696fce77..e69ce4f1d12 100644
--- a/lisp/org/ob-core.el
+++ b/lisp/org/ob-core.el
@@ -2426,7 +2426,8 @@ INFO may provide the values of these header arguments (in the
(delete-region (point) (org-babel-result-end)))
((member "append" result-params)
(goto-char (org-babel-result-end)) (setq beg (point-marker)))
- ((member "prepend" result-params))) ; already there
+ ;; ((member "prepend" result-params)) ; already there
+ )
(setq results-switches
(if results-switches (concat " " results-switches) ""))
(let ((wrap
diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el
index 5116b1127f7..a38f2a283d7 100644
--- a/lisp/org/org-table.el
+++ b/lisp/org/org-table.el
@@ -2861,7 +2861,7 @@ list, `literal' is for the format specifier L."
(if lispp
(if (eq lispp 'literal)
elements
- (if (and (eq elements "") (not keep-empty))
+ (if (and (equal elements "") (not keep-empty))
""
(prin1-to-string
(if numbers (string-to-number elements) elements))))
diff --git a/lisp/pcmpl-gnu.el b/lisp/pcmpl-gnu.el
index 7d270ea789f..1553c3efed7 100644
--- a/lisp/pcmpl-gnu.el
+++ b/lisp/pcmpl-gnu.el
@@ -184,6 +184,86 @@ Return the new list."
(when (and (not ,exist) (buffer-live-p ,buf))
(kill-buffer ,buf))))))
+(defvar pcmpl-gnu--tar-long-options
+ ;; FIXME: Extract this list from "tar --help".
+ '("--absolute-names"
+ "--after-date="
+ "--append"
+ "--atime-preserve"
+ "--backup"
+ "--block-number"
+ "--blocking-factor="
+ "--catenate"
+ "--checkpoint"
+ "--compare"
+ "--compress"
+ "--concatenate"
+ "--confirmation"
+ "--create"
+ "--delete"
+ "--dereference"
+ "--diff"
+ "--directory="
+ "--exclude="
+ "--exclude-from="
+ "--extract"
+ "--file="
+ "--files-from="
+ "--force-local"
+ "--get"
+ "--group="
+ "--gzip"
+ "--help"
+ "--ignore-failed-read"
+ "--ignore-zeros"
+ "--incremental"
+ "--info-script="
+ "--interactive"
+ "--keep-old-files"
+ "--label="
+ "--list"
+ "--listed-incremental"
+ "--mode="
+ "--modification-time"
+ "--multi-volume"
+ "--new-volume-script="
+ "--newer="
+ "--newer-mtime"
+ "--no-recursion"
+ "--null"
+ "--numeric-owner"
+ "--old-archive"
+ "--one-file-system"
+ "--owner="
+ "--portability"
+ "--posix"
+ "--preserve"
+ "--preserve-order"
+ "--preserve-permissions"
+ "--read-full-records"
+ "--record-size="
+ "--recursive-unlink"
+ "--remove-files"
+ "--rsh-command="
+ "--same-order"
+ "--same-owner"
+ "--same-permissions"
+ "--sparse"
+ "--starting-file="
+ "--suffix="
+ "--tape-length="
+ "--to-stdout"
+ "--totals"
+ "--uncompress"
+ "--ungzip"
+ "--unlink-first"
+ "--update"
+ "--use-compress-program="
+ "--verbose"
+ "--verify"
+ "--version"
+ "--volno-file="))
+
;;;###autoload
(defun pcomplete/tar ()
"Completion for the GNU tar utility."
@@ -192,148 +272,53 @@ Return the new list."
(while (pcomplete-match "^-" 0)
(setq saw-option t)
(if (pcomplete-match "^--" 0)
- (if (pcomplete-match "^--\\([^= \t\n\f]*\\)\\'" 0)
- ;; FIXME: Extract this list from "tar --help".
- (pcomplete-here*
- '("--absolute-names"
- "--after-date="
- "--append"
- "--atime-preserve"
- "--backup"
- "--block-number"
- "--blocking-factor="
- "--catenate"
- "--checkpoint"
- "--compare"
- "--compress"
- "--concatenate"
- "--confirmation"
- "--create"
- "--delete"
- "--dereference"
- "--diff"
- "--directory="
- "--exclude="
- "--exclude-from="
- "--extract"
- "--file="
- "--files-from="
- "--force-local"
- "--get"
- "--group="
- "--gzip"
- "--help"
- "--ignore-failed-read"
- "--ignore-zeros"
- "--incremental"
- "--info-script="
- "--interactive"
- "--keep-old-files"
- "--label="
- "--list"
- "--listed-incremental"
- "--mode="
- "--modification-time"
- "--multi-volume"
- "--new-volume-script="
- "--newer="
- "--newer-mtime"
- "--no-recursion"
- "--null"
- "--numeric-owner"
- "--old-archive"
- "--one-file-system"
- "--owner="
- "--portability"
- "--posix"
- "--preserve"
- "--preserve-order"
- "--preserve-permissions"
- "--read-full-records"
- "--record-size="
- "--recursive-unlink"
- "--remove-files"
- "--rsh-command="
- "--same-order"
- "--same-owner"
- "--same-permissions"
- "--sparse"
- "--starting-file="
- "--suffix="
- "--tape-length="
- "--to-stdout"
- "--totals"
- "--uncompress"
- "--ungzip"
- "--unlink-first"
- "--update"
- "--use-compress-program="
- "--verbose"
- "--verify"
- "--version"
- "--volno-file=")))
- (pcomplete-opt "01234567ABCFGKLMNOPRSTUVWXZbcdfghiklmoprstuvwxz"))
- (cond
- ((pcomplete-match "\\`-\\'" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--after-date=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--backup=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--blocking-factor=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--directory=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-dirs)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--exclude-from=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-entries)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--exclude=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--\\(extract\\|list\\)\\'" 0)
- (setq complete-within t))
- ((pcomplete-match "\\`--file=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-dirs-or-entries pcmpl-gnu-tarfile-regexp)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--files-from=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-entries)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--group=\\(.*\\)" 0)
- (pcomplete-here* (pcmpl-unix-group-names)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--info-script=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-entries)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--label=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--mode=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--new-volume-script=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-entries)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--newer=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--owner=\\(.*\\)" 0)
- (pcomplete-here* (pcmpl-unix-user-names)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--record-size=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--rsh-command=\\(.*\\)" 0)
- (pcomplete-here* (funcall pcomplete-command-completion-function)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--starting-file=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-entries)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--suffix=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--tape-length=" 0)
- (pcomplete-here*))
- ((pcomplete-match "\\`--use-compress-program=\\(.*\\)" 0)
- (pcomplete-here* (funcall pcomplete-command-completion-function)
- (pcomplete-match-string 1 0)))
- ((pcomplete-match "\\`--volno-file=\\(.*\\)" 0)
- (pcomplete-here* (pcomplete-entries)
- (pcomplete-match-string 1 0)))))
+ (cond
+ ((pcomplete-match "^--\\([^= \t\n\f]*\\)\\'" 0)
+ (pcomplete-here* pcmpl-gnu--tar-long-options))
+ ((pcomplete-match "\\`--directory=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-dirs)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--exclude-from=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-entries)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--\\(extract\\|list\\)\\'" 0)
+ (setq complete-within t))
+ ((pcomplete-match "\\`--file=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-dirs-or-entries
+ pcmpl-gnu-tarfile-regexp)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--files-from=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-entries)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--group=\\(.*\\)" 0)
+ (pcomplete-here* (pcmpl-unix-group-names)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--info-script=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-entries)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--new-volume-script=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-entries)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--owner=\\(.*\\)" 0)
+ (pcomplete-here* (pcmpl-unix-user-names)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--rsh-command=\\(.*\\)" 0)
+ (pcomplete-here* (funcall pcomplete-command-completion-function)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--starting-file=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-entries)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--use-compress-program=\\(.*\\)" 0)
+ (pcomplete-here* (funcall pcomplete-command-completion-function)
+ (pcomplete-match-string 1 0)))
+ ((pcomplete-match "\\`--volno-file=\\(.*\\)" 0)
+ (pcomplete-here* (pcomplete-entries)
+ (pcomplete-match-string 1 0)))
+ (t
+ (pcomplete-here*)))
+ (pcomplete-opt "01234567ABCFGKLMNOPRSTUVWXZbcdfghiklmoprstuvwxz")
+ (when (pcomplete-match "\\`-\\'" 0)
+ (pcomplete-here*))))
(unless saw-option
(pcomplete-here
(mapcar #'char-to-string
diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el
index 1ca7a213361..36f68f1af57 100644
--- a/lisp/pcomplete.el
+++ b/lisp/pcomplete.el
@@ -362,6 +362,32 @@ modified to be an empty string, or the desired separation string."
;;; User Functions:
+(defun pcomplete-default-exit-function (_s status)
+ "The default exit function to use in `pcomplete-completions-at-point'.
+This just adds `pcomplete-termination-string' after the
+completion if STATUS is `finished'."
+ (unless (zerop (length pcomplete-termination-string))
+ (when (eq status 'finished)
+ (if (looking-at
+ (regexp-quote pcomplete-termination-string))
+ (goto-char (match-end 0))
+ (insert pcomplete-termination-string)))))
+
+(defvar pcomplete-exit-function #'pcomplete-default-exit-function
+ "The exit function to call in `pcomplete-completions-at-point'.
+
+This variable is let-bound in `pcomplete-completions-at-point',
+so you can modify or advise it in order to adjust the behavior
+for a specific completion. For example, you might do the
+following in a `pcomplete-try-first-hook' function to insert a
+trailing slash after a completion:
+
+ (add-function
+ :before (var pcomplete-exit-function)
+ (lambda (_ status)
+ (when (eq status \\='finished)
+ (insert \"/\"))))")
+
;;; Alternative front-end using the standard completion facilities.
;; The way pcomplete-parse-arguments and pcomplete-stub work only
@@ -406,6 +432,7 @@ Same as `pcomplete' but using the standard completion UI."
(if pcomplete-allow-modifications buffer-read-only t))
pcomplete-seen pcomplete-norm-func
pcomplete-args pcomplete-last pcomplete-index
+ (pcomplete-exit-function pcomplete-exit-function)
(pcomplete-autolist pcomplete-autolist)
(pcomplete-suffix-list pcomplete-suffix-list)
;; Apparently the vars above are global vars modified by
@@ -494,16 +521,7 @@ Same as `pcomplete' but using the standard completion UI."
(get-text-property 0 'pcomplete-help cand)))
:predicate pred
:exit-function
- ;; If completion is finished, add a terminating space.
- ;; We used to also do this if STATUS is `sole', but
- ;; that does not work right when completion cycling.
- (unless (zerop (length pcomplete-termination-string))
- (lambda (_s status)
- (when (eq status 'finished)
- (if (looking-at
- (regexp-quote pcomplete-termination-string))
- (goto-char (match-end 0))
- (insert pcomplete-termination-string)))))))))))
+ pcomplete-exit-function))))))
;; I don't think such commands are usable before first setting up buffer-local
;; variables to parse args, so there's no point autoloading it.
diff --git a/lisp/proced.el b/lisp/proced.el
index a9c7ef9ef3d..03a7f1bebdf 100644
--- a/lisp/proced.el
+++ b/lisp/proced.el
@@ -656,6 +656,14 @@ Important: the match ends just after the marker.")
)
(put 'proced-mark :advertised-binding "m")
+(defvar-local proced-refinements nil
+ "Information about the current buffer refinements.
+
+It should be a list of elements of the form (REFINER PID KEY GRAMMAR), where
+REFINER and GRAMMAR are as described in `proced-grammar-alist', PID is the
+process ID of the process used to create the refinement, and KEY the attribute
+of the process. A value of nil indicates that there are no active refinements.")
+
(easy-menu-define proced-menu proced-mode-map
"Proced Menu."
`("Proced"
@@ -784,6 +792,52 @@ Return nil if point is not on a process line."
(if (looking-at "^. .")
(get-text-property (match-end 0) 'proced-pid))))
+(defun proced--position-info (pos)
+ "Return information of the process at POS.
+
+The returned information will have the form `(PID KEY COLUMN)' where
+PID is the process ID of the process at point, KEY is the value of the
+proced-key text property at point, and COLUMN is the column for which the
+current value of the proced-key text property starts, or 0 if KEY is nil."
+ ;; If point is on a field, we try to return point to that field.
+ ;; Otherwise we try to return to the same column
+ (save-excursion
+ (goto-char pos)
+ (let ((pid (proced-pid-at-point))
+ (key (get-text-property (point) 'proced-key)))
+ (list pid key ; can both be nil
+ (if key
+ (if (get-text-property (1- (point)) 'proced-key)
+ (- (point) (previous-single-property-change
+ (point) 'proced-key))
+ 0)
+ (current-column))))))
+
+(defun proced--determine-pos (key column)
+ "Return position of point in the current line using KEY and COLUMN.
+
+Attempt to find the first position on the current line where the
+text property proced-key is equal to KEY. If this is not possible, return
+the position of point of column COLUMN on the current line."
+ (save-excursion
+ (let (new-pos)
+ (if key
+ (let ((limit (line-end-position)) pos)
+ (while (and (not new-pos)
+ (setq pos (next-property-change (point) nil limit)))
+ (goto-char pos)
+ (when (eq key (get-text-property (point) 'proced-key))
+ (forward-char (min column (- (next-property-change (point))
+ (point))))
+ (setq new-pos (point))))
+ (unless new-pos
+ ;; we found the process, but the field of point
+ ;; is not listed anymore
+ (setq new-pos (proced-move-to-goal-column))))
+ (setq new-pos (min (+ (line-beginning-position) column)
+ (line-end-position))))
+ new-pos)))
+
;; proced mode
(define-derived-mode proced-mode special-mode "Proced"
@@ -839,6 +893,7 @@ normal hook `proced-post-display-hook'.
(setq-local revert-buffer-function #'proced-revert)
(setq-local font-lock-defaults
'(proced-font-lock-keywords t nil nil beginning-of-line))
+ (setq-local switch-to-buffer-preserve-window-point nil)
(if (and (not proced-auto-update-timer) proced-auto-update-interval)
(setq proced-auto-update-timer
(run-at-time t proced-auto-update-interval
@@ -1337,20 +1392,7 @@ a certain refinement, consider defining a new filter in `proced-filter-alist'."
(let* ((grammar (assq key proced-grammar-alist))
(refiner (nth 7 grammar)))
(when refiner
- (cond ((functionp (car refiner))
- (setq proced-process-alist (funcall (car refiner) pid)))
- ((consp refiner)
- (let ((predicate (nth 4 grammar))
- (ref (cdr (assq key (cdr (assq pid proced-process-alist)))))
- val new-alist)
- (dolist (process proced-process-alist)
- (setq val (funcall predicate (cdr (assq key (cdr process))) ref))
- (if (cond ((not val) (nth 2 refiner))
- ((eq val 'equal) (nth 1 refiner))
- (val (car refiner)))
- (push process new-alist)))
- (setq proced-process-alist new-alist))))
- ;; Do not revert listing.
+ (add-to-list 'proced-refinements (list refiner pid key grammar) t)
(proced-update)))
(message "No refiner defined here."))))
@@ -1859,10 +1901,29 @@ After updating a displayed Proced buffer run the normal hook
"Updating process display...")))
(if revert ;; evaluate all processes
(setq proced-process-alist (proced-process-attributes)))
- ;; filtering and sorting
+ ;; filtering
+ (setq proced-process-alist (proced-filter proced-process-alist proced-filter))
+ ;; refinements
+ (pcase-dolist (`(,refiner ,pid ,key ,grammar) proced-refinements)
+ ;; It's possible the process has exited since the refinement was made
+ (when (assq pid proced-process-alist)
+ (cond ((functionp (car refiner))
+ (setq proced-process-alist (funcall (car refiner) pid)))
+ ((consp refiner)
+ (let ((predicate (nth 4 grammar))
+ (ref (cdr (assq key (cdr (assq pid proced-process-alist)))))
+ val new-alist)
+ (dolist (process proced-process-alist)
+ (setq val (funcall predicate (cdr (assq key (cdr process))) ref))
+ (when (cond ((not val) (nth 2 refiner))
+ ((eq val 'equal) (nth 1 refiner))
+ (val (car refiner)))
+ (push process new-alist)))
+ (setq proced-process-alist new-alist))))))
+
+ ;; sorting
(setq proced-process-alist
- (proced-sort (proced-filter proced-process-alist proced-filter)
- proced-sort proced-descend))
+ (proced-sort proced-process-alist proced-sort proced-descend))
;; display as process tree?
(setq proced-process-alist
@@ -1875,17 +1936,10 @@ After updating a displayed Proced buffer run the normal hook
(if (consp buffer-undo-list)
(setq buffer-undo-list nil))
(let ((buffer-undo-list t)
- ;; If point is on a field, we try to return point to that field.
- ;; Otherwise we try to return to the same column
- (old-pos (let ((pid (proced-pid-at-point))
- (key (get-text-property (point) 'proced-key)))
- (list pid key ; can both be nil
- (if key
- (if (get-text-property (1- (point)) 'proced-key)
- (- (point) (previous-single-property-change
- (point) 'proced-key))
- 0)
- (current-column)))))
+ (window-pos-infos
+ (mapcar (lambda (w) `(,w . ,(proced--position-info (window-point w))))
+ (get-buffer-window-list (current-buffer) nil t)))
+ (old-pos (proced--position-info (point)))
buffer-read-only mp-list)
;; remember marked processes (whatever the mark was)
(goto-char (point-min))
@@ -1918,7 +1972,8 @@ After updating a displayed Proced buffer run the normal hook
;; Sometimes this puts point in the middle of the proced buffer
;; where it is not interesting. Is there a better / more flexible solution?
(goto-char (point-min))
- (let (pid mark new-pos)
+
+ (let (pid mark new-pos win-points)
(if (or mp-list (car old-pos))
(while (not (eobp))
(setq pid (proced-pid-at-point))
@@ -1927,28 +1982,25 @@ After updating a displayed Proced buffer run the normal hook
(delete-char 1)
(beginning-of-line))
(when (eq (car old-pos) pid)
- (if (nth 1 old-pos)
- (let ((limit (line-end-position)) pos)
- (while (and (not new-pos)
- (setq pos (next-property-change (point) nil limit)))
- (goto-char pos)
- (when (eq (nth 1 old-pos)
- (get-text-property (point) 'proced-key))
- (forward-char (min (nth 2 old-pos)
- (- (next-property-change (point))
- (point))))
- (setq new-pos (point))))
- (unless new-pos
- ;; we found the process, but the field of point
- ;; is not listed anymore
- (setq new-pos (proced-move-to-goal-column))))
- (setq new-pos (min (+ (line-beginning-position) (nth 2 old-pos))
- (line-end-position)))))
+ (setq new-pos (proced--determine-pos (nth 1 old-pos)
+ (nth 2 old-pos))))
+ (mapc (lambda (w-pos)
+ (when (eq (cadr w-pos) pid)
+ (push `(,(car w-pos) . ,(proced--determine-pos
+ (nth 1 (cdr w-pos))
+ (nth 2 (cdr w-pos))))
+ win-points)))
+ window-pos-infos)
(forward-line)))
- (if new-pos
- (goto-char new-pos)
- (goto-char (point-min))
- (proced-move-to-goal-column)))
+ (let ((fallback (save-excursion (goto-char (point-min))
+ (proced-move-to-goal-column)
+ (point))))
+ (goto-char (or new-pos fallback))
+ ;; Update window points
+ (mapc (lambda (w-pos)
+ (set-window-point (car w-pos)
+ (alist-get (car w-pos) win-points fallback)))
+ window-pos-infos)))
;; update mode line
;; Does the long `mode-name' clutter the mode line? It would be nice
;; to have some other location for displaying the values of the various
@@ -1976,7 +2028,9 @@ After updating a displayed Proced buffer run the normal hook
(defun proced-revert (&rest _args)
"Reevaluate the process listing based on the currently running processes.
-Preserves point and marks."
+Preserves point and marks, but not refinements (see `proced-refine' for
+information on refinements)."
+ (setq proced-refinements nil)
(proced-update t))
(defun proced-marked-processes ()
diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el
index 7574ef86a6e..a54df19425a 100644
--- a/lisp/progmodes/antlr-mode.el
+++ b/lisp/progmodes/antlr-mode.el
@@ -2147,7 +2147,7 @@ command `antlr-show-makefile-rules' for detail."
(antlr-makefile-insert-variable i " $(" ")"))
(insert "\n" (car antlr-makefile-specification))))
(if (string-equal (car antlr-makefile-specification) "\n")
- (backward-delete-char 1))
+ (delete-char -1))
(when with-error
(goto-char (point-min))
(insert antlr-help-unknown-file-text))
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index 83e89c3a335..600650aadc1 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -322,7 +322,7 @@ PARENT is the same as other anchor functions."
;; nil.
parent (lambda (node)
(and node
- (not (string-match "preproc" (treesit-node-type node)))
+ (not (string-search "preproc" (treesit-node-type node)))
(progn
(goto-char (treesit-node-start node))
(looking-back (rx bol (* whitespace))
@@ -912,6 +912,35 @@ the semicolon. This function skips the semicolon."
(setq-local treesit-defun-skipper #'c-ts-mode--defun-skipper)
(setq-local treesit-defun-name-function #'c-ts-mode--defun-name)
+ (setq-local treesit-sentence-type-regexp
+ ;; compound_statement makes us jump over too big units
+ ;; of code, so skip that one, and include the other
+ ;; statements.
+ (regexp-opt '("preproc"
+ "declaration"
+ "specifier"
+ "attributed_statement"
+ "labeled_statement"
+ "expression_statement"
+ "if_statement"
+ "switch_statement"
+ "do_statement"
+ "while_statement"
+ "for_statement"
+ "return_statement"
+ "break_statement"
+ "continue_statement"
+ "goto_statement"
+ "case_statement")))
+
+ ;; IMO it makes more sense to define what's NOT sexp, since sexp by
+ ;; spirit, especially when used for movement, is like "expression"
+ ;; or "syntax unit". --yuan
+ (setq-local treesit-sexp-type-regexp
+ ;; It more useful to include semicolons as sexp so that
+ ;; users can move to the end of a statement.
+ (rx (not (or "{" "}" "[" "]" "(" ")" ","))))
+
;; Nodes like struct/enum/union_specifier can appear in
;; function_definitions, so we need to find the top-level node.
(setq-local treesit-defun-prefer-top-level t)
@@ -1022,15 +1051,23 @@ recommended to enable `electric-pair-mode' with this mode."
:after-hook (c-ts-mode-set-modeline)
(when (treesit-ready-p 'cpp)
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment"
+ "raw_string_literal")))
+
(treesit-parser-create 'cpp)
+
;; Syntax.
(setq-local syntax-propertize-function
#'c-ts-mode--syntax-propertize)
+
;; Indent.
(setq-local treesit-simple-indent-rules
(c-ts-mode--get-indent-style 'cpp))
+
;; Font-lock.
(setq-local treesit-font-lock-settings (c-ts-mode--font-lock-settings 'cpp))
+
(treesit-major-mode-setup)))
;; We could alternatively use parsers, but if this works well, I don't
diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el
index aa6f33e9cab..1d98b215525 100644
--- a/lisp/progmodes/cc-defs.el
+++ b/lisp/progmodes/cc-defs.el
@@ -2153,86 +2153,79 @@ non-nil, a caret is prepended to invert the set."
;; Record whether the `category' text property works.
(if c-use-category (setq list (cons 'category-properties list)))
- (let ((buf (generate-new-buffer " test"))
- parse-sexp-lookup-properties
- parse-sexp-ignore-comments
- lookup-syntax-properties) ; XEmacs
+ (let ((buf (generate-new-buffer " test")))
(with-current-buffer buf
- (set-syntax-table (make-syntax-table))
-
- ;; For some reason we have to set some of these after the
- ;; buffer has been made current. (Specifically,
- ;; `parse-sexp-ignore-comments' in Emacs 21.)
- (setq parse-sexp-lookup-properties t
- parse-sexp-ignore-comments t
- lookup-syntax-properties t)
-
- ;; Find out if the `syntax-table' text property works.
- (modify-syntax-entry ?< ".")
- (modify-syntax-entry ?> ".")
- (insert "<()>")
- (c-mark-<-as-paren (point-min))
- (c-mark->-as-paren (+ 3 (point-min)))
- (goto-char (point-min))
- (c-forward-sexp)
- (if (= (point) (+ 4 (point-min)))
- (setq list (cons 'syntax-properties list))
- (error (concat
- "CC Mode is incompatible with this version of Emacs - "
- "support for the `syntax-table' text property "
- "is required.")))
-
- ;; Find out if "\\s!" (generic comment delimiters) work.
- (c-safe
- (modify-syntax-entry ?x "!")
- (if (string-match "\\s!" "x")
- (setq list (cons 'gen-comment-delim list))))
-
- ;; Find out if "\\s|" (generic string delimiters) work.
- (c-safe
- (modify-syntax-entry ?x "|")
- (if (string-match "\\s|" "x")
- (setq list (cons 'gen-string-delim list))))
-
- ;; See if POSIX char classes work.
- (when (and (string-match "[[:alpha:]]" "a")
- ;; All versions of Emacs 21 so far haven't fixed
- ;; char classes in `skip-chars-forward' and
- ;; `skip-chars-backward'.
- (progn
- (delete-region (point-min) (point-max))
- (insert "foo123")
- (skip-chars-backward "[:alnum:]")
- (bobp))
- (= (skip-chars-forward "[:alpha:]") 3))
- (setq list (cons 'posix-char-classes list)))
-
- ;; See if `open-paren-in-column-0-is-defun-start' exists and
- ;; isn't buggy (Emacs >= 21.4).
- (when (boundp 'open-paren-in-column-0-is-defun-start)
- (let ((open-paren-in-column-0-is-defun-start nil)
- (parse-sexp-ignore-comments t))
- (delete-region (point-min) (point-max))
- (set-syntax-table (make-syntax-table))
- (modify-syntax-entry ?\' "\"")
- (cond
- ;; XEmacs. Afaik this is currently an Emacs-only
- ;; feature, but it's good to be prepared.
- ((memq '8-bit list)
- (modify-syntax-entry ?/ ". 1456")
- (modify-syntax-entry ?* ". 23"))
- ;; Emacs
- ((memq '1-bit list)
- (modify-syntax-entry ?/ ". 124b")
- (modify-syntax-entry ?* ". 23")))
- (modify-syntax-entry ?\n "> b")
- (insert "/* '\n () */")
- (backward-sexp)
- (if (bobp)
- (setq list (cons 'col-0-paren list)))))
-
- (set-buffer-modified-p nil))
- (kill-buffer buf))
+ (let ((parse-sexp-lookup-properties t)
+ (parse-sexp-ignore-comments t)
+ (lookup-syntax-properties t))
+ (set-syntax-table (make-syntax-table))
+
+ ;; Find out if the `syntax-table' text property works.
+ (modify-syntax-entry ?< ".")
+ (modify-syntax-entry ?> ".")
+ (insert "<()>")
+ (c-mark-<-as-paren (point-min))
+ (c-mark->-as-paren (+ 3 (point-min)))
+ (goto-char (point-min))
+ (c-forward-sexp)
+ (if (= (point) (+ 4 (point-min)))
+ (setq list (cons 'syntax-properties list))
+ (error (concat
+ "CC Mode is incompatible with this version of Emacs - "
+ "support for the `syntax-table' text property "
+ "is required.")))
+
+ ;; Find out if "\\s!" (generic comment delimiters) work.
+ (c-safe
+ (modify-syntax-entry ?x "!")
+ (if (string-match "\\s!" "x")
+ (setq list (cons 'gen-comment-delim list))))
+
+ ;; Find out if "\\s|" (generic string delimiters) work.
+ (c-safe
+ (modify-syntax-entry ?x "|")
+ (if (string-match "\\s|" "x")
+ (setq list (cons 'gen-string-delim list))))
+
+ ;; See if POSIX char classes work.
+ (when (and (string-match "[[:alpha:]]" "a")
+ ;; All versions of Emacs 21 so far haven't fixed
+ ;; char classes in `skip-chars-forward' and
+ ;; `skip-chars-backward'.
+ (progn
+ (delete-region (point-min) (point-max))
+ (insert "foo123")
+ (skip-chars-backward "[:alnum:]")
+ (bobp))
+ (= (skip-chars-forward "[:alpha:]") 3))
+ (setq list (cons 'posix-char-classes list)))
+
+ ;; See if `open-paren-in-column-0-is-defun-start' exists and
+ ;; isn't buggy (Emacs >= 21.4).
+ (when (boundp 'open-paren-in-column-0-is-defun-start)
+ (let ((open-paren-in-column-0-is-defun-start nil)
+ (parse-sexp-ignore-comments t))
+ (delete-region (point-min) (point-max))
+ (set-syntax-table (make-syntax-table))
+ (modify-syntax-entry ?\' "\"")
+ (cond
+ ;; XEmacs. Afaik this is currently an Emacs-only
+ ;; feature, but it's good to be prepared.
+ ((memq '8-bit list)
+ (modify-syntax-entry ?/ ". 1456")
+ (modify-syntax-entry ?* ". 23"))
+ ;; Emacs
+ ((memq '1-bit list)
+ (modify-syntax-entry ?/ ". 124b")
+ (modify-syntax-entry ?* ". 23")))
+ (modify-syntax-entry ?\n "> b")
+ (insert "/* '\n () */")
+ (backward-sexp)
+ (if (bobp)
+ (setq list (cons 'col-0-paren list)))))
+
+ (set-buffer-modified-p nil))
+ (kill-buffer buf)))
;; Check how many elements `parse-partial-sexp' returns.
(let ((ppss-size (or (c-safe (length
diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el
index 2631c24f8db..f7320da5629 100644
--- a/lisp/progmodes/cc-engine.el
+++ b/lisp/progmodes/cc-engine.el
@@ -146,11 +146,6 @@
;; "typedef" keyword. It's value is a list of the identifiers that
;; the "typedef" declares as types.
;;
-;; 'c-<>-c-types-set
-;; This property is set on an opening angle bracket, and indicates that
-;; any "," separators within the template/generic expression have been
-;; marked with a 'c-type property value 'c-<>-arg-sep (see above).
-;;
;; 'c-awk-NL-prop
;; Used in AWK mode to mark the various kinds of newlines. See
;; cc-awk.el.
@@ -1651,7 +1646,7 @@ This function does not do any hidden buffer changes."
;; comment, but XEmacs doesn't. We depend on the Emacs
;; behavior (which also is symmetric).
(if (and (eolp) (elt (parse-partial-sexp start (point)) 7))
- (condition-case nil (forward-char 1)))
+ (forward-char 1))
t))))
@@ -5915,19 +5910,21 @@ comment at the start of cc-engine.el for more info."
(cond
((> pos start) ; Nothing but literals
base)
- ((> base (point-min))
+ ((and
+ (> base (point-min))
+ (> (- base try-size) (point-min))) ; prevent infinite recursion.
(c-determine-limit how-far-back base (* 2 try-size) org-start))
(t base)))
((>= count how-far-back)
(c-determine-limit-no-macro
- (+ (car elt) (- count how-far-back))
- org-start))
+ (+ (car elt) (- count how-far-back))
+ org-start))
((eq base (point-min))
(point-min))
((> base (- start try-size)) ; Can only happen if we hit point-min.
(c-determine-limit-no-macro
- (car elt)
- org-start))
+ (car elt)
+ org-start))
(t
(c-determine-limit (- how-far-back count) base (* 2 try-size)
org-start))))))
@@ -6170,12 +6167,18 @@ comment at the start of cc-engine.el for more info."
(cons (point)
(cons bound-<> s)))))
+(defvar c-record-type-identifiers) ; Specially for `c-brace-stack-at'.
+
(defun c-brace-stack-at (here)
;; Given a buffer position HERE, Return the value of the brace stack there.
(save-excursion
(save-restriction
(widen)
- (let ((c c-bs-cache)
+ (let (c-record-type-identifiers ; In case `c-forward-<>-arglist' would
+ ; otherwise record identifiers outside
+ ; of the restriction in force before
+ ; this function.
+ (c c-bs-cache)
(can-use-prev (<= c-bs-prev-pos c-bs-cache-limit))
elt stack pos npos high-elt)
;; Trim the cache to take account of buffer changes.
@@ -8288,10 +8291,17 @@ multi-line strings (but not C++, for example)."
(setq c-record-ref-identifiers
(cons range c-record-ref-identifiers))))))
-(defmacro c-forward-keyword-prefixed-id (type)
+(defmacro c-forward-keyword-prefixed-id (type &optional stop-at-end)
;; Used internally in `c-forward-keyword-clause' to move forward
;; over a type (if TYPE is 'type) or a name (otherwise) which
;; possibly is prefixed by keywords and their associated clauses.
+ ;; Point should be at the type/name or a preceding keyword at the start of
+ ;; the macro, and it is left at the first token following the type/name,
+ ;; or (when STOP-AT-END is non-nil) immediately after that type/name.
+ ;;
+ ;; Note that both parameters are evaluated at compile time, not run time,
+ ;; so they must be constants.
+ ;;
;; Try with a type/name first to not trip up on those that begin
;; with a keyword. Return t if a known or found type is moved
;; over. The point is clobbered if nil is returned. If range
@@ -8300,51 +8310,84 @@ multi-line strings (but not C++, for example)."
;;
;; This macro might do hidden buffer changes.
(declare (debug t))
- `(let (res)
+ `(let (res pos)
(setq c-last-identifier-range nil)
(while (if (setq res ,(if (eq type 'type)
- '(c-forward-type)
- '(c-forward-name)))
- nil
- (cond ((looking-at c-keywords-regexp)
- (c-forward-keyword-clause 1))
- ((and c-opt-cpp-prefix
- (looking-at c-noise-macro-with-parens-name-re))
- (c-forward-noise-clause)))))
+ `(c-forward-type nil ,stop-at-end)
+ `(c-forward-name ,stop-at-end)))
+ (progn
+ (setq pos (point))
+ nil)
+ (and
+ (cond ((looking-at c-keywords-regexp)
+ (c-forward-keyword-clause 1 t))
+ ((and c-opt-cpp-prefix
+ (looking-at c-noise-macro-with-parens-name-re))
+ (c-forward-noise-clause t)))
+ (progn
+ (setq pos (point))
+ (c-forward-syntactic-ws)
+ t))))
(when (memq res '(t known found prefix maybe))
(when c-record-type-identifiers
- ,(if (eq type 'type)
- '(c-record-type-id c-last-identifier-range)
- '(c-record-ref-id c-last-identifier-range)))
+ ,(if (eq type 'type)
+ '(c-record-type-id c-last-identifier-range)
+ '(c-record-ref-id c-last-identifier-range)))
+ (when pos
+ (goto-char pos)
+ ,(unless stop-at-end
+ `(c-forward-syntactic-ws)))
t)))
-(defmacro c-forward-id-comma-list (type update-safe-pos)
+(defmacro c-forward-id-comma-list (type update-safe-pos &optional stop-at-end)
;; Used internally in `c-forward-keyword-clause' to move forward
;; over a comma separated list of types or names using
- ;; `c-forward-keyword-prefixed-id'.
+ ;; `c-forward-keyword-prefixed-id'. Point should start at the first token
+ ;; after the already scanned type/name, or (if STOP-AT-END is non-nil)
+ ;; immediately after that type/name. Point is left either before or
+ ;; after the whitespace following the last type/name in the list, depending
+ ;; on whether STOP-AT-END is non-nil or nil. The return value is without
+ ;; significance.
+ ;;
+ ;; Note that all three parameters are evaluated at compile time, not run
+ ;; time, so they must be constants.
;;
;; This macro might do hidden buffer changes.
(declare (debug t))
- `(while (and (progn
- ,(when update-safe-pos
- '(setq safe-pos (point)))
- (eq (char-after) ?,))
- (progn
- (forward-char)
- (c-forward-syntactic-ws)
- (c-forward-keyword-prefixed-id ,type)))))
+ `(let ((pos (point)))
+ (while (and (progn
+ ,(when update-safe-pos
+ `(setq safe-pos (point)))
+ (setq pos (point))
+ (c-forward-syntactic-ws)
+ (eq (char-after) ?,))
+ (progn
+ (forward-char)
+ (setq pos (point))
+ (c-forward-syntactic-ws)
+ (c-forward-keyword-prefixed-id ,type t))))
+ (goto-char pos)
+ ,(unless stop-at-end
+ `(c-forward-syntactic-ws))))
-(defun c-forward-noise-clause ()
+(defun c-forward-noise-clause (&optional stop-at-end)
;; Point is at a c-noise-macro-with-parens-names macro identifier. Go
;; forward over this name, any parenthesis expression which follows it, and
- ;; any syntactic WS, ending up at the next token or EOB. If there is an
+ ;; any syntactic WS, ending up either at the next token or EOB or (when
+ ;; STOP-AT-END is non-nil) directly after the clause. If there is an
;; unbalanced paren expression, leave point at it. Always Return t.
- (or (zerop (c-forward-token-2))
- (goto-char (point-max)))
- (if (and (eq (char-after) ?\()
- (c-go-list-forward))
+ (let (pos)
+ (or (c-forward-over-token)
+ (goto-char (point-max)))
+ (setq pos (point))
+ (c-forward-syntactic-ws)
+ (when (and (eq (char-after) ?\()
+ (c-go-list-forward))
+ (setq pos (point)))
+ (goto-char pos)
+ (unless stop-at-end
(c-forward-syntactic-ws))
- t)
+ t))
(defun c-forward-noise-clause-not-macro-decl (maybe-parens)
;; Point is at a noise macro identifier, which, when MAYBE-PARENS is
@@ -8378,11 +8421,12 @@ multi-line strings (but not C++, for example)."
(goto-char here)
nil)))
-(defun c-forward-keyword-clause (match)
+(defun c-forward-keyword-clause (match &optional stop-at-end)
;; Submatch MATCH in the current match data is assumed to surround a
;; token. If it's a keyword, move over it and any immediately
- ;; following clauses associated with it, stopping at the start of
- ;; the next token. t is returned in that case, otherwise the point
+ ;; following clauses associated with it, stopping either at the start
+ ;; of the next token, or (when STOP-AT-END is non-nil) at the end
+ ;; of the clause. t is returned in that case, otherwise the point
;; stays and nil is returned. The kind of clauses that are
;; recognized are those specified by `c-type-list-kwds',
;; `c-ref-list-kwds', `c-colon-type-list-kwds',
@@ -8412,19 +8456,23 @@ multi-line strings (but not C++, for example)."
(when kwd-sym
(goto-char (match-end match))
- (c-forward-syntactic-ws)
(setq safe-pos (point))
+ (c-forward-syntactic-ws)
(cond
((and (c-keyword-member kwd-sym 'c-type-list-kwds)
- (c-forward-keyword-prefixed-id type))
+ (c-forward-keyword-prefixed-id type t))
;; There's a type directly after a keyword in `c-type-list-kwds'.
- (c-forward-id-comma-list type t))
+ (setq safe-pos (point))
+ (c-forward-syntactic-ws)
+ (c-forward-id-comma-list type t t))
((and (c-keyword-member kwd-sym 'c-ref-list-kwds)
- (c-forward-keyword-prefixed-id ref))
+ (c-forward-keyword-prefixed-id ref t))
;; There's a name directly after a keyword in `c-ref-list-kwds'.
- (c-forward-id-comma-list ref t))
+ (setq safe-pos (point))
+ (c-forward-syntactic-ws)
+ (c-forward-id-comma-list ref t t))
((and (c-keyword-member kwd-sym 'c-paren-any-kwds)
(eq (char-after) ?\())
@@ -8444,20 +8492,20 @@ multi-line strings (but not C++, for example)."
(goto-char (match-end 0)))))
(goto-char pos)
- (c-forward-syntactic-ws)
- (setq safe-pos (point))))
+ (setq safe-pos (point)))
+ (c-forward-syntactic-ws))
((and (c-keyword-member kwd-sym 'c-<>-sexp-kwds)
(eq (char-after) ?<)
(c-forward-<>-arglist (c-keyword-member kwd-sym 'c-<>-type-kwds)))
- (c-forward-syntactic-ws)
- (setq safe-pos (point)))
+ (setq safe-pos (point))
+ (c-forward-syntactic-ws))
((and (c-keyword-member kwd-sym 'c-nonsymbol-sexp-kwds)
(not (looking-at c-symbol-start))
(c-safe (c-forward-sexp) t))
- (c-forward-syntactic-ws)
- (setq safe-pos (point)))
+ (setq safe-pos (point))
+ (c-forward-syntactic-ws))
((and (c-keyword-member kwd-sym 'c-protection-kwds)
(or (null c-post-protection-token)
@@ -8467,8 +8515,8 @@ multi-line strings (but not C++, for example)."
(not (c-end-of-current-token))))))
(if c-post-protection-token
(goto-char (match-end 0)))
- (c-forward-syntactic-ws)
- (setq safe-pos (point))))
+ (setq safe-pos (point))
+ (c-forward-syntactic-ws)))
(when (c-keyword-member kwd-sym 'c-colon-type-list-kwds)
(if (eq (char-after) ?:)
@@ -8477,8 +8525,10 @@ multi-line strings (but not C++, for example)."
(progn
(forward-char)
(c-forward-syntactic-ws)
- (when (c-forward-keyword-prefixed-id type)
- (c-forward-id-comma-list type t)))
+ (when (c-forward-keyword-prefixed-id type t)
+ (setq safe-pos (point))
+ (c-forward-syntactic-ws)
+ (c-forward-id-comma-list type t t)))
;; Not at the colon, so stop here. But the identifier
;; ranges in the type list later on should still be
;; recorded.
@@ -8488,15 +8538,18 @@ multi-line strings (but not C++, for example)."
;; this one, we move forward to the colon following the
;; clause matched above.
(goto-char safe-pos)
+ (c-forward-syntactic-ws)
(c-forward-over-colon-type-list))
(progn
(c-forward-syntactic-ws)
- (c-forward-keyword-prefixed-id type))
+ (c-forward-keyword-prefixed-id type t))
;; There's a type after the `c-colon-type-list-re' match
;; after a keyword in `c-colon-type-list-kwds'.
(c-forward-id-comma-list type nil))))
(goto-char safe-pos)
+ (unless stop-at-end
+ (c-forward-syntactic-ws))
t)))
;; cc-mode requires cc-fonts.
@@ -8578,11 +8631,9 @@ multi-line strings (but not C++, for example)."
;; List that collects the positions after the argument
;; separating ',' in the arglist.
arg-start-pos)
- ;; If the '<' has paren open syntax then we've marked it as an angle
- ;; bracket arglist before, so skip to the end.
- (if (and syntax-table-prop-on-<
- (or (not c-parse-and-markup-<>-arglists)
- (c-get-char-property (point) 'c-<>-c-types-set)))
+ (if (and (not c-parse-and-markup-<>-arglists)
+ syntax-table-prop-on-<)
+
(progn
(forward-char)
(if (and (c-go-up-list-forward)
@@ -8679,7 +8730,6 @@ multi-line strings (but not C++, for example)."
(c-unmark-<->-as-paren (point)))))
(c-mark-<-as-paren start)
(c-mark->-as-paren (1- (point)))
- (c-put-char-property start 'c-<>-c-types-set t)
(c-truncate-lit-pos-cache start))
(setq res t)
nil)) ; Exit the loop.
@@ -8827,11 +8877,12 @@ multi-line strings (but not C++, for example)."
(/= (point) start))))
-(defun c-forward-name ()
- ;; Move forward over a complete name if at the beginning of one,
- ;; stopping at the next following token. A keyword, as such,
- ;; doesn't count as a name. If the point is not at something that
- ;; is recognized as a name then it stays put.
+(defun c-forward-name (&optional stop-at-end)
+ ;; Move forward over a complete name if at the beginning of one, stopping
+ ;; either at the next following token or (when STOP-AT-END is non-nil) at
+ ;; the end of the name. A keyword, as such, doesn't count as a name. If
+ ;; the point is not at something that is recognized as a name then it stays
+ ;; put.
;;
;; A name could be something as simple as "foo" in C or something as
;; complex as "X<Y<class A<int>::B, BIT_MAX >> b>, ::operator<> ::
@@ -8853,7 +8904,7 @@ multi-line strings (but not C++, for example)."
;;
;; This function might do hidden buffer changes.
- (let ((pos (point)) (start (point)) res id-start id-end
+ (let ((pos (point)) pos2 pos3 (start (point)) res id-start id-end
;; Turn off `c-promote-possible-types' here since we might
;; call `c-forward-<>-arglist' and we don't want it to promote
;; every suspect thing in the arglist to a type. We're
@@ -8895,7 +8946,7 @@ multi-line strings (but not C++, for example)."
(c-forward-syntactic-ws lim+)
(cond ((eq (char-before id-end) ?e)
;; Got "... ::template".
- (let ((subres (c-forward-name)))
+ (let ((subres (c-forward-name t)))
(when subres
(setq pos (point)
res subres))))
@@ -8907,7 +8958,7 @@ multi-line strings (but not C++, for example)."
(and (eq (c-forward-token-2) 0)
(not (eq (char-after) ?\())))))
;; Got a cast operator.
- (when (c-forward-type)
+ (when (c-forward-type nil t)
(setq pos (point)
res 'operator)
;; Now we should match a sequence of either
@@ -8931,8 +8982,8 @@ multi-line strings (but not C++, for example)."
(forward-char)
t)))))
(while (progn
- (c-forward-syntactic-ws lim+)
(setq pos (point))
+ (c-forward-syntactic-ws lim+)
(and
(<= (point) lim+)
(looking-at c-opt-type-modifier-key)))
@@ -8947,30 +8998,34 @@ multi-line strings (but not C++, for example)."
;; operator"" has an (?)optional tag after it.
(progn
(goto-char (match-end 0))
+ (setq pos2 (point))
(c-forward-syntactic-ws lim+)
(when (c-on-identifier)
- (c-forward-token-2 1 nil lim+)))
- (goto-char (match-end 0))
- (c-forward-syntactic-ws lim+))
- (setq pos (point)
+ (c-forward-over-token nil lim+)))
+ (goto-char (match-end 0))
+ (setq pos2 (point))
+ (c-forward-syntactic-ws lim+))
+ (setq pos pos2
res 'operator)))
nil)
;; `id-start' is equal to `id-end' if we've jumped over
;; an identifier that doesn't end with a symbol token.
- ;; That can occur e.g. for Java import directives on the
+ ;; That can occur e.g. for Java import directives of the
;; form "foo.bar.*".
(when (and id-start (/= id-start id-end))
(setq c-last-identifier-range
(cons id-start id-end)))
(goto-char id-end)
+ (setq pos (point))
(c-forward-syntactic-ws lim+)
- (setq pos (point)
- res t)))
+ (setq res t)))
(progn
(goto-char pos)
+ (c-forward-syntactic-ws lim+)
+ (setq pos3 (point))
(when (or c-opt-identifier-concat-key
c-recognize-<>-arglists)
@@ -8981,7 +9036,6 @@ multi-line strings (but not C++, for example)."
;; cases with tricky syntactic whitespace that aren't
;; covered in `c-identifier-key'.
(goto-char (match-end 0))
- (c-forward-syntactic-ws lim+)
t)
((and c-recognize-<>-arglists
@@ -8993,11 +9047,12 @@ multi-line strings (but not C++, for example)."
;; `lim+'.
(setq lim+ (c-determine-+ve-limit 500))
+ (setq pos2 (point))
(c-forward-syntactic-ws lim+)
(unless (eq (char-after) ?\()
(setq c-last-identifier-range nil)
- (c-add-type start (1+ pos)))
- (setq pos (point))
+ (c-add-type start (1+ pos3)))
+ (setq pos pos2)
(if (and c-opt-identifier-concat-key
(looking-at c-opt-identifier-concat-key))
@@ -9007,7 +9062,7 @@ multi-line strings (but not C++, for example)."
(progn
(when (and c-record-type-identifiers id-start)
(c-record-ref-id (cons id-start id-end)))
- (forward-char 2)
+ (goto-char (match-end 0))
(c-forward-syntactic-ws lim+)
t)
@@ -9019,11 +9074,14 @@ multi-line strings (but not C++, for example)."
)))))
(goto-char pos)
+ (unless stop-at-end
+ (c-forward-syntactic-ws lim+))
res))
-(defun c-forward-type (&optional brace-block-too)
+(defun c-forward-type (&optional brace-block-too stop-at-end)
;; Move forward over a type spec if at the beginning of one,
- ;; stopping at the next following token. The keyword "typedef"
+ ;; stopping at the next following token (if STOP-AT-END is nil) or
+ ;; at the end of the type spec (otherwise). The keyword "typedef"
;; isn't part of a type spec here.
;;
;; BRACE-BLOCK-TOO, when non-nil, means move over the brace block in
@@ -9062,7 +9120,7 @@ multi-line strings (but not C++, for example)."
(c-forward-syntactic-ws))
(let ((start (point)) pos res name-res id-start id-end id-range
- post-prefix-pos)
+ post-prefix-pos prefix-end-pos)
;; Skip leading type modifiers. If any are found we know it's a
;; prefix of a type.
@@ -9072,6 +9130,8 @@ multi-line strings (but not C++, for example)."
(when (looking-at c-no-type-key)
(setq res 'no-id)))
(goto-char (match-end 1))
+ (setq prefix-end-pos (point))
+ (setq pos (point))
(c-forward-syntactic-ws)
(or (eq res 'no-id)
(setq res 'prefix))))
@@ -9080,32 +9140,41 @@ multi-line strings (but not C++, for example)."
(cond
((looking-at c-typeof-key) ; e.g. C++'s "decltype".
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws)
(setq res (and (eq (char-after) ?\()
(c-safe (c-forward-sexp))
'decltype))
(if res
- (c-forward-syntactic-ws)
+ (progn
+ (setq pos (point))
+ (c-forward-syntactic-ws))
(goto-char start)))
((looking-at c-type-prefix-key) ; e.g. "struct", "class", but NOT
; "typedef".
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws)
(while (cond
((looking-at c-decl-hangon-key)
- (c-forward-keyword-clause 1))
+ (c-forward-keyword-clause 1 t)
+ (setq pos (point))
+ (c-forward-syntactic-ws))
((looking-at c-pack-key)
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws))
((and c-opt-cpp-prefix
(looking-at c-noise-macro-with-parens-name-re))
- (c-forward-noise-clause))))
+ (c-forward-noise-clause t)
+ (setq pos (point))
+ (c-forward-syntactic-ws))))
+ (setq id-start (point))
+ (setq name-res (c-forward-name t))
(setq pos (point))
-
- (setq name-res (c-forward-name))
(setq res (not (null name-res)))
(when (eq name-res t)
;; With some keywords the name can be used without the prefix, so we
@@ -9113,21 +9182,21 @@ multi-line strings (but not C++, for example)."
(when (save-excursion
(goto-char post-prefix-pos)
(looking-at c-self-contained-typename-key))
- (c-add-type pos (save-excursion
- (c-backward-syntactic-ws)
- (point))))
+ (c-add-type id-start
+ (point)))
(when (and c-record-type-identifiers
c-last-identifier-range)
(c-record-type-id c-last-identifier-range)))
+ (c-forward-syntactic-ws)
(when (and brace-block-too
(memq res '(t nil))
(eq (char-after) ?\{)
(save-excursion
(c-safe
(progn (c-forward-sexp)
- (c-forward-syntactic-ws)
(setq pos (point))))))
(goto-char pos)
+ (c-forward-syntactic-ws)
(setq res t))
(unless res (goto-char start))) ; invalid syntax
@@ -9141,7 +9210,7 @@ multi-line strings (but not C++, for example)."
(if (looking-at c-identifier-start)
(save-excursion
(setq id-start (point)
- name-res (c-forward-name))
+ name-res (c-forward-name t))
(when name-res
(setq id-end (point)
id-range c-last-identifier-range))))
@@ -9154,8 +9223,9 @@ multi-line strings (but not C++, for example)."
(>= (save-excursion
(save-match-data
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws)
- (setq pos (point))))
+ pos))
id-end)
(setq res nil)))))
;; Looking at a primitive or known type identifier. We've
@@ -9173,57 +9243,67 @@ multi-line strings (but not C++, for example)."
(looking-at c-opt-type-component-key)))
;; There might be more keywords for the type.
(let (safe-pos)
- (c-forward-keyword-clause 1)
+ (c-forward-keyword-clause 1 t)
(while (progn
(setq safe-pos (point))
+ (c-forward-syntactic-ws)
(looking-at c-opt-type-component-key))
(when (and c-record-type-identifiers
(looking-at c-primitive-type-key))
(c-record-type-id (cons (match-beginning 1)
(match-end 1))))
- (c-forward-keyword-clause 1))
+ (c-forward-keyword-clause 1 t))
(if (looking-at c-primitive-type-key)
(progn
(when c-record-type-identifiers
(c-record-type-id (cons (match-beginning 1)
(match-end 1))))
- (c-forward-keyword-clause 1)
+ (c-forward-keyword-clause 1 t)
(setq res t))
(goto-char safe-pos)
- (setq res 'prefix)))
- (unless (save-match-data (c-forward-keyword-clause 1))
+ (setq res 'prefix))
+ (setq pos (point)))
+ (if (save-match-data (c-forward-keyword-clause 1 t))
+ (setq pos (point))
(if pos
(goto-char pos)
(goto-char (match-end 1))
- (c-forward-syntactic-ws)))))
+ (setq pos (point)))))
+ (c-forward-syntactic-ws))
((and (eq name-res t)
(eq res 'prefix)
(c-major-mode-is 'c-mode)
(save-excursion
(goto-char id-end)
+ (setq pos (point))
+ (c-forward-syntactic-ws)
(and (not (looking-at c-symbol-start))
(not (looking-at c-type-decl-prefix-key)))))
;; A C specifier followed by an implicit int, e.g.
;; "register count;"
- (goto-char id-start)
+ (goto-char prefix-end-pos)
+ (setq pos (point))
+ (unless stop-at-end
+ (c-forward-syntactic-ws))
(setq res 'no-id))
(name-res
(cond ((eq name-res t)
;; A normal identifier.
(goto-char id-end)
+ (setq pos (point))
+ (c-forward-syntactic-ws)
(if (or res c-promote-possible-types)
(progn
(when (not (eq c-promote-possible-types 'just-one))
- (c-add-type id-start (save-excursion
- (goto-char id-end)
- (c-backward-syntactic-ws)
- (point))))
+ (c-add-type id-start id-end))
(when (and c-record-type-identifiers id-range)
(c-record-type-id id-range))
(unless res
- (setq res 'found)))
+ (setq res 'found))
+ (when (eq res 'prefix)
+ (setq res t)))
(setq res (if (c-check-qualified-type id-start)
;; It's an identifier that has been used as
;; a type somewhere else.
@@ -9233,6 +9313,7 @@ multi-line strings (but not C++, for example)."
((eq name-res 'template)
;; A template is sometimes a type.
(goto-char id-end)
+ (setq pos (point))
(c-forward-syntactic-ws)
(setq res
(if (eq (char-after) ?\()
@@ -9258,6 +9339,7 @@ multi-line strings (but not C++, for example)."
(when c-opt-type-modifier-key
(while (looking-at c-opt-type-modifier-key) ; e.g. "const", "volatile"
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws)
(setq res t)))
@@ -9268,11 +9350,13 @@ multi-line strings (but not C++, for example)."
(when c-opt-type-suffix-key ; e.g. "..."
(while (looking-at c-opt-type-suffix-key)
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws)))
;; Skip any "WS" identifiers (e.g. "final" or "override" in C++)
(while (looking-at c-type-decl-suffix-ws-ids-key)
(goto-char (match-end 1))
+ (setq pos (point))
(c-forward-syntactic-ws)
(setq res t))
@@ -9296,7 +9380,8 @@ multi-line strings (but not C++, for example)."
(progn
(goto-char (match-end 1))
(c-forward-syntactic-ws)
- (setq subres (c-forward-type))))
+ (setq subres (c-forward-type nil t))
+ (setq pos (point))))
(progn
;; If either operand certainly is a type then both are, but we
@@ -9332,9 +9417,11 @@ multi-line strings (but not C++, for example)."
;; `nconc' doesn't mind that the tail of
;; `c-record-found-types' is t.
(nconc c-record-found-types
- c-record-type-identifiers))))
+ c-record-type-identifiers)))))))
- (goto-char pos))))
+ (goto-char pos)
+ (unless stop-at-end
+ (c-forward-syntactic-ws))
(when (and c-record-found-types (memq res '(known found)) id-range)
(setq c-record-found-types
@@ -9373,19 +9460,24 @@ multi-line strings (but not C++, for example)."
(setq ,ps (cdr ,ps)))))
(defun c-forward-over-compound-identifier ()
- ;; Go over a possibly compound identifier, such as C++'s Foo::Bar::Baz,
- ;; returning that identifier (with any syntactic WS removed). Return nil if
- ;; we're not at an identifier.
- (when (c-on-identifier)
+ ;; Go over a possibly compound identifier (but not any following
+ ;; whitespace), such as C++'s Foo::Bar::Baz, returning that identifier (with
+ ;; any syntactic WS removed). Return nil if we're not at an identifier, in
+ ;; which case point is not moved.
+ (when
+ (eq (c-on-identifier)
+ (point))
(let ((consolidated "") (consolidated-:: "")
- start end)
+ (here (point))
+ start end end-token)
(while
(progn
(setq start (point))
(c-forward-over-token)
(setq consolidated
(concat consolidated-::
- (buffer-substring-no-properties start (point))))
+ (buffer-substring-no-properties start (point)))
+ end-token (point))
(c-forward-syntactic-ws)
(and c-opt-identifier-concat-key
(looking-at c-opt-identifier-concat-key)
@@ -9400,7 +9492,9 @@ multi-line strings (but not C++, for example)."
(concat consolidated
(buffer-substring-no-properties start end))))))))
(if (equal consolidated "")
- nil
+ (progn (goto-char here)
+ nil)
+ (goto-char end-token)
consolidated))))
(defun c-back-over-compound-identifier ()
@@ -9573,13 +9667,16 @@ point unchanged and return nil."
;; Handling of large scale constructs like statements and declarations.
-(defun c-forward-primary-expression (&optional limit)
- ;; Go over the primary expression (if any) at point, moving to the next
- ;; token and return non-nil. If we're not at a primary expression leave
- ;; point unchanged and return nil.
+(defun c-forward-primary-expression (&optional limit stop-at-end)
+ ;; Go over the primary expression (if any) at point, and unless STOP-AT-END
+ ;; is non-nil, move to the next token then return non-nil. If we're not at
+ ;; a primary expression leave point unchanged and return nil.
;;
;; Note that this function is incomplete, handling only those cases expected
;; to be common in a C++20 requires clause.
+ ;;
+ ;; Note also that (...) is not recognised as a primary expression if the
+ ;; next token is an open brace.
(let ((here (point))
(c-restricted-<>-arglists t)
(c-parse-and-markup-<>-arglists nil)
@@ -9587,28 +9684,38 @@ point unchanged and return nil."
(if (cond
((looking-at c-constant-key)
(goto-char (match-end 1))
- (c-forward-syntactic-ws limit)
+ (unless stop-at-end (c-forward-syntactic-ws limit))
t)
((eq (char-after) ?\()
(and (c-go-list-forward (point) limit)
(eq (char-before) ?\))
- (progn (c-forward-syntactic-ws limit)
- t)))
+ (let ((after-paren (point)))
+ (c-forward-syntactic-ws limit)
+ (prog1
+ (not (eq (char-after) ?{))
+ (when stop-at-end
+ (goto-char after-paren))))))
((c-forward-over-compound-identifier)
- (c-forward-syntactic-ws limit)
- (while (cond
- ((looking-at "<")
- (prog1
- (c-forward-<>-arglist nil)
- (c-forward-syntactic-ws limit)))
- ((looking-at c-opt-identifier-concat-key)
- (and
- (zerop (c-forward-token-2 1 nil limit))
- (prog1
- (c-forward-over-compound-identifier)
- (c-forward-syntactic-ws limit))))))
- t)
- ((looking-at c-fun-name-substitute-key) ; "requires"
+ (let ((after-id (point)))
+ (c-forward-syntactic-ws limit)
+ (while (cond
+ ((and
+ (looking-at "<")
+ (prog1
+ (and
+ (c-forward-<>-arglist nil)
+ (setq after-id (point)))))
+ (c-forward-syntactic-ws limit))
+ ((looking-at c-opt-identifier-concat-key)
+ (and
+ (zerop (c-forward-token-2 1 nil limit))
+ (prog1
+ (c-forward-over-compound-identifier)
+ (c-forward-syntactic-ws limit))))))
+ (goto-char after-id)))
+ ((and
+ (looking-at c-fun-name-substitute-key) ; "requires"
+ (not (eq (char-after (match-end 0)) ?_)))
(goto-char (match-end 1))
(c-forward-syntactic-ws limit)
(and
@@ -9621,36 +9728,47 @@ point unchanged and return nil."
(and (c-go-list-forward (point) limit)
(eq (char-before) ?}))
(progn
- (c-forward-syntactic-ws limit)
+ (unless stop-at-end (c-forward-syntactic-ws limit))
t))))
t
(goto-char here)
nil)))
-(defun c-forward-c++-requires-clause (&optional limit)
- ;; Point is at the keyword "requires". Move forward over the requires
- ;; clause to the next token after it and return non-nil. If there is no
- ;; valid requires clause at point, leave point unmoved and return nil.
+(defun c-forward-constraint-clause (&optional limit stop-at-end)
+ ;; Point is at the putative start of a constraint clause. Move to its end
+ ;; (when STOP-AT-END is non-zero) or the token after that (otherwise) and
+ ;; return non-nil. Return nil without moving if we fail to find a
+ ;; constraint.
(let ((here (point))
final-point)
(or limit (setq limit (point-max)))
- (if (and
- (zerop (c-forward-token-2 1 nil limit)) ; over "requires".
- (prog1
- (c-forward-primary-expression limit)
- (setq final-point (point))
- (while
- (and (looking-at "\\(?:&&\\|||\\)")
- (progn (goto-char (match-end 0))
- (c-forward-syntactic-ws limit)
- (and (< (point) limit)
- (c-forward-primary-expression limit))))
- (setq final-point (point)))))
- (progn (goto-char final-point)
- t)
+ (if (c-forward-primary-expression limit t)
+ (progn
+ (setq final-point (point))
+ (c-forward-syntactic-ws limit)
+ (while
+ (and (looking-at "\\(?:&&\\|||\\)")
+ (<= (match-end 0) limit)
+ (progn (goto-char (match-end 0))
+ (c-forward-syntactic-ws limit)
+ (and (<= (point) limit)))
+ (c-forward-primary-expression limit t)
+ (setq final-point (point))))
+ (goto-char final-point)
+ (or stop-at-end (c-forward-syntactic-ws limit))
+ t)
(goto-char here)
nil)))
+(defun c-forward-c++-requires-clause (&optional limit stop-at-end)
+ ;; Point is at the keyword "requires". Move forward over the requires
+ ;; clause to its end (if STOP-AT-END is non-nil) or the next token after it
+ ;; (otherwise) and return non-nil. If there is no valid requires clause at
+ ;; point, leave point unmoved and return nil.
+ (or limit (setq limit (point-max)))
+ (and (zerop (c-forward-token-2)) ; over "requires".
+ (c-forward-constraint-clause limit stop-at-end)))
+
(defun c-forward-decl-arglist (not-top id-in-parens &optional limit)
;; Point is at an open parenthesis, assumed to be the arglist of a function
;; declaration. Move over this arglist and following syntactic whitespace,
@@ -9737,7 +9855,7 @@ point unchanged and return nil."
;; (e.g. "," or ";" or "}").
(let ((here (point))
id-start id-end brackets-after-id paren-depth decorated
- got-init arglist double-double-quote)
+ got-init arglist double-double-quote pos)
(or limit (setq limit (point-max)))
(if (and
(< (point) limit)
@@ -9771,6 +9889,7 @@ point unchanged and return nil."
(eq (char-after (1+ (point))) ?\"))
(setq double-double-quote t))
(goto-char (match-end 0))
+ (setq pos (point))
(c-forward-syntactic-ws limit)
(setq got-identifier t)
nil)
@@ -9783,7 +9902,10 @@ point unchanged and return nil."
;; prefix only if it specifies a member pointer.
(progn
(setq id-start (point))
- (when (c-forward-name)
+ (when (c-forward-name t)
+ (setq pos (point))
+ (c-forward-syntactic-ws limit)
+
(if (save-match-data
(looking-at "\\(::\\)"))
;; We only check for a trailing "::" and
@@ -9812,10 +9934,12 @@ point unchanged and return nil."
(setq id-start (point)))
(cond
((or got-identifier
- (c-forward-name))
- (save-excursion
- (c-backward-syntactic-ws)
- (setq id-end (point))))
+ (c-forward-name t))
+ (setq id-end
+ (or pos
+ (point)))
+ (c-forward-syntactic-ws limit)
+ t)
(accept-anon
(setq id-start nil id-end nil)
t)
@@ -9846,7 +9970,9 @@ point unchanged and return nil."
((looking-at c-type-decl-suffix-key)
(cond
((save-match-data
- (looking-at c-fun-name-substitute-key))
+ (and
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_))))
(c-forward-c++-requires-clause))
((eq (char-after) ?\()
(if (c-forward-decl-arglist not-top decorated limit)
@@ -10060,6 +10186,24 @@ This function might do hidden buffer changes."
;; This identifier is bound only in the inner let.
'(setq start id-start))))
+(defmacro c-fdoc-assymetric-space-about-asterisk ()
+ ;; We've got a "*" at `id-start' between two identifiers, the first at
+ ;; `type-start'. Return non-nil when there is either whitespace between the
+ ;; first id and the "*" or between the "*" and the second id, but not both.
+ `(let ((space-before-id
+ (save-excursion
+ (goto-char id-start) ; Position of "*".
+ (and (> (skip-chars-forward "* \t\n\r") 0)
+ (memq (char-before) '(?\ ?\t ?\n ?\r)))))
+ (space-after-type
+ (save-excursion
+ (goto-char type-start)
+ (and (c-forward-type nil t)
+ (or (eolp)
+ (memq (char-after) '(?\ ?\t)))))))
+ (not (eq (not space-before-id)
+ (not space-after-type)))))
+
(defun c-forward-decl-or-cast-1 (preceding-token-end context last-cast-end
&optional inside-macro)
;; Move forward over a declaration or a cast if at the start of one.
@@ -10282,7 +10426,9 @@ This function might do hidden buffer changes."
(when (and (c-major-mode-is 'c++-mode)
(c-keyword-member kwd-sym 'c-<>-sexp-kwds)
(save-match-data
- (looking-at c-fun-name-substitute-key)))
+ (and
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_)))))
(c-forward-c++-requires-clause))
(setq kwd-clause-end (point))))
((and c-opt-cpp-prefix
@@ -10569,11 +10715,11 @@ This function might do hidden buffer changes."
(or got-identifier
(and (looking-at c-identifier-start)
(setq pos (point))
- (setq got-identifier (c-forward-name))
+ (setq got-identifier (c-forward-name t))
(save-excursion
- (c-backward-syntactic-ws)
(c-simple-skip-symbol-backward)
(setq identifier-start (point)))
+ (progn (c-forward-syntactic-ws) t)
(setq name-start pos))
(when (looking-at "[0-9]")
(setq got-number t)) ; We probably have an arithmetic expression.
@@ -10632,7 +10778,9 @@ This function might do hidden buffer changes."
((save-match-data (looking-at "\\s("))
(c-safe (c-forward-sexp 1) t))
((save-match-data
- (looking-at c-fun-name-substitute-key)) ; C++ requires
+ (and
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_)))) ; C++ requires
(c-forward-c++-requires-clause))
(t (goto-char (match-end 1))
t))
@@ -10796,8 +10944,7 @@ This function might do hidden buffer changes."
type-start
(progn
(goto-char type-start)
- (c-forward-type)
- (c-backward-syntactic-ws)
+ (c-forward-type nil t)
(point)))))))))
;; Got a declaration of the form "foo bar (gnu);" or "bar
;; (gnu);" where we've recognized "bar" as the type and "gnu"
@@ -11081,19 +11228,25 @@ This function might do hidden buffer changes."
;; CASE 16
(when (and got-prefix-before-parens
at-type
- (or at-decl-end (looking-at "=[^=]"))
(memq context '(nil top))
(or (not got-suffix)
at-decl-start))
;; Got something like "foo * bar;". Since we're not inside
;; an arglist it would be a meaningless expression because
;; the result isn't used. We therefore choose to recognize
- ;; it as a declaration. We only allow a suffix (which makes
- ;; the construct look like a function call) when
- ;; `at-decl-start' provides additional evidence that we do
- ;; have a declaration.
+ ;; it as a declaration when there's "symmetrical WS" around
+ ;; the "*" or the flag `c-assymetry-fontification-flag' is
+ ;; not set. We only allow a suffix (which makes the
+ ;; construct look like a function call) when `at-decl-start'
+ ;; provides additional evidence that we do have a
+ ;; declaration.
(setq maybe-expression t)
- (throw 'at-decl-or-cast t))
+ (when (or (not c-asymmetry-fontification-flag)
+ (looking-at "=\\([^=]\\|$\\)\\|;")
+ (c-fdoc-assymetric-space-about-asterisk))
+ (when (eq at-type 'maybe)
+ (setq unsafe-maybe t))
+ (throw 'at-decl-or-cast t)))
;; CASE 17
(when (and (or got-suffix-after-parens
@@ -11112,25 +11265,12 @@ This function might do hidden buffer changes."
got-prefix-before-parens
at-type
(or (not got-suffix)
- at-decl-start))
- (let ((space-before-id
- (save-excursion
- (goto-char id-start) ; Position of "*".
- (and (> (skip-chars-forward "* \t\n\r") 0)
- (memq (char-before) '(?\ ?\t ?\n ?\r)))))
- (space-after-type
- (save-excursion
- (goto-char type-start)
- (and (c-forward-type)
- (progn (c-backward-syntactic-ws) t)
- (or (eolp)
- (memq (char-after) '(?\ ?\t)))))))
- (when (not (eq (not space-before-id)
- (not space-after-type)))
- (when (eq at-type 'maybe)
- (setq unsafe-maybe t))
- (setq maybe-expression t)
- (throw 'at-decl-or-cast t)))))
+ at-decl-start)
+ (c-fdoc-assymetric-space-about-asterisk))
+ (when (eq at-type 'maybe)
+ (setq unsafe-maybe t))
+ (setq maybe-expression t)
+ (throw 'at-decl-or-cast t)))
;; CASE 18
(when (and at-decl-end
@@ -12763,7 +12903,9 @@ comment at the start of cc-engine.el for more info."
in-paren 'in-paren))
((looking-at c-pre-brace-non-bracelist-key)
(setq braceassignp nil))
- ((looking-at c-fun-name-substitute-key)
+ ((and
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_)))
(setq braceassignp nil))
((looking-at c-return-key))
((and (looking-at c-symbol-start)
@@ -12778,7 +12920,8 @@ comment at the start of cc-engine.el for more info."
;; Have we a requires with a parenthesis list?
(when (save-excursion
(and (zerop (c-backward-token-2 1 nil lim))
- (looking-at c-fun-name-substitute-key)))
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_))))
(setq braceassignp nil))
nil)
(t nil))
@@ -13109,6 +13252,120 @@ comment at the start of cc-engine.el for more info."
(t nil)))
(goto-char here))))
+(defun c-forward-concept-fragment (&optional limit stop-at-end)
+ ;; Are we currently at the "concept" keyword in a concept construct? If so
+ ;; we return the position of the first constraint expression following the
+ ;; "=" sign and move forward over the constraint. Otherwise we return nil.
+ ;; LIMIT is a forward search limit.
+ (let ((here (point)))
+ (if
+ (and
+ (looking-at c-equals-nontype-decl-key) ; "concept"
+ (goto-char (match-end 0))
+ (progn (c-forward-syntactic-ws limit)
+ (not (looking-at c-keywords-regexp)))
+ (looking-at c-identifier-key)
+ (goto-char (match-end 0))
+ (progn (c-forward-syntactic-ws limit)
+ (looking-at c-operator-re))
+ (equal (match-string 0) "=")
+ (goto-char (match-end 0)))
+ (prog1
+ (progn (c-forward-syntactic-ws limit)
+ (point))
+ (c-forward-constraint-clause limit stop-at-end))
+ (goto-char here)
+ nil)))
+
+(defun c-looking-at-concept (&optional limit)
+ ;; Are we currently at the start of a concept construct? I.e. at the
+ ;; "template" keyword followed by the construct? If so, we return a cons of
+ ;; the position of "concept" and the position of the first constraint
+ ;; expression following the "=" sign, otherwise we return nil. LIMIT is a
+ ;; forward search limit.
+ (save-excursion
+ (let (conpos)
+ (and (looking-at c-pre-concept-<>-key)
+ (goto-char (match-end 1))
+ (< (point) limit)
+ (progn (c-forward-syntactic-ws limit)
+ (eq (char-after) ?<))
+ (let ((c-parse-and-markup-<>-arglists t)
+ c-restricted-<>-arglists)
+ (c-forward-<>-arglist nil))
+ (< (point) limit)
+ (progn (c-forward-syntactic-ws limit)
+ (looking-at c-equals-nontype-decl-key)) ; "concept"
+ (setq conpos (match-beginning 0))
+ (goto-char (match-end 0))
+ (< (point) limit)
+ (c-syntactic-re-search-forward
+ "=" limit t t)
+ (goto-char (match-end 0))
+ (<= (point) limit)
+ (progn (c-forward-syntactic-ws limit)
+ (cons conpos (point)))))))
+
+(defun c-in-requires-or-at-end-of-clause (&optional pos)
+ ;; Is POS (default POINT) in a C++ "requires" expression or "requires"
+ ;; clause or at the end of a "requires" clause? If so return a cons
+ ;; (POSITION . END) where POSITION is that of the "requires" keyword, and
+ ;; END is `expression' if POS is in an expression, nil if it's in a clause
+ ;; or t if it's at the end of a clause. "End of a clause" means just after
+ ;; the non syntactic WS on the line where the clause ends.
+ ;;
+ ;; Note we can't use `c-beginning-of-statement-1' in this function because
+ ;; of this function's use in `c-at-vsemi-p' for C++ Mode.
+ (save-excursion
+ (if pos (goto-char pos) (setq pos (point)))
+ (let ((limit (max (- (point) 2000) (point-min)))
+ found-req req-pos found-clause res pe-start pe-end
+ )
+ (while ; Loop around syntactically significant "requires" keywords.
+ (progn
+ (while
+ (and
+ (setq found-req (re-search-backward
+ c-fun-name-substitute-key
+ limit t)) ; Fast!
+ (or (not (setq found-req
+ (not (eq (char-after (match-end 0)) ?_))))
+ (not (setq found-req (not (c-in-literal))))))) ; Slow!
+ (setq req-pos (point))
+ (cond
+ ((not found-req) ; No "requires" found
+ nil)
+ ((save-excursion ; A primary expression `pos' is in
+ (setq pe-end nil)
+ (while (and (setq pe-start (point))
+ (< (point) pos)
+ (c-forward-primary-expression nil t)
+ (setq pe-end (point))
+ (progn (c-forward-syntactic-ws)
+ (looking-at "&&\\|||"))
+ (c-forward-over-token-and-ws)))
+ pe-end)
+ (if (<= pe-end pos)
+ t ; POS is not in a primary expression.
+ (setq res (cons pe-start 'expression))
+ nil))
+ ((progn
+ (goto-char req-pos)
+ (if (looking-at c-fun-name-substitute-key)
+ (setq found-clause (c-forward-c++-requires-clause nil t))
+ (and (c-forward-concept-fragment)
+ (setq found-clause (point))))
+ nil))
+ ((and found-clause (>= (point) pos))
+ (setq res (cons req-pos (eq (point) pos)))
+ nil)
+ (found-clause ; We found a constraint clause, but it did not
+ ; extend far enough forward to reach POS.
+ (c-go-up-list-backward req-pos limit))
+ (t (goto-char req-pos)
+ t))))
+ res)))
+
(defun c-looking-at-inexpr-block (lim containing-sexp &optional check-at-end)
;; Return non-nil if we're looking at the beginning of a block
;; inside an expression. The value returned is actually a cons of
@@ -13305,6 +13562,19 @@ comment at the start of cc-engine.el for more info."
(looking-at c-pre-lambda-tokens-re)))
(not (c-in-literal))))
+(defun c-c++-vsemi-p (&optional pos)
+ ;; C++ Only - Is there a "virtual semicolon" at POS or point?
+ ;; (See cc-defs.el for full details of "virtual semicolons".)
+ ;;
+ ;; This is true when point is at the last non syntactic WS position on the
+ ;; line, and either there is a "macro with semicolon" just before it (see
+ ;; `c-at-macro-vsemi-p') or there is a "requires" clause which ends there.
+ (let (res)
+ (cond
+ ((setq res (c-in-requires-or-at-end-of-clause pos))
+ (and res (eq (cdr res) t)))
+ ((c-at-macro-vsemi-p)))))
+
(defun c-at-macro-vsemi-p (&optional pos)
;; Is there a "virtual semicolon" at POS or point?
;; (See cc-defs.el for full details of "virtual semicolons".)
@@ -13856,7 +14126,7 @@ comment at the start of cc-engine.el for more info."
literal char-before-ip before-ws-ip char-after-ip macro-start
in-macro-expr c-syntactic-context placeholder
step-type tmpsymbol keyword injava-inher special-brace-list tmp-pos
- tmp-pos2 containing-<
+ tmp-pos2 containing-< tmp constraint-detail
;; The following record some positions for the containing
;; declaration block if we're directly within one:
;; `containing-decl-open' is the position of the open
@@ -14271,6 +14541,33 @@ comment at the start of cc-engine.el for more info."
containing-decl-start
containing-decl-kwd))
+ ;; CASE 5A.7: "defun" open in a requires expression.
+ ((save-excursion
+ (goto-char indent-point)
+ (c-backward-syntactic-ws lim)
+ (and (or (not (eq (char-before) ?\)))
+ (c-go-list-backward nil lim))
+ (progn (c-backward-syntactic-ws lim)
+ (zerop (c-backward-token-2 nil nil lim)))
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_))
+ (setq placeholder (point))))
+ (goto-char placeholder)
+ (back-to-indentation)
+ (c-add-syntax 'defun-open (point)))
+
+ ;; CASE 5A.6: "defun" open in concept.
+ ;; ((save-excursion
+ ;; (goto-char indent-point)
+ ;; (skip-chars-forward " \t")
+ ;; (and (eq (char-after) ?{)
+ ;; (eq (c-beginning-of-statement-1 lim) 'same)
+ ;; (setq placeholder
+ ;; (cdr (c-looking-at-concept indent-point)))))
+ ;; (goto-char placeholder)
+ ;; (back-to-indentation)
+ ;; (c-add-syntax 'defun-open (point)))
+
;; CASE 5A.5: ordinary defun open
(t
(save-excursion
@@ -14441,10 +14738,35 @@ comment at the start of cc-engine.el for more info."
nil nil
containing-sexp paren-state))
+ ;; CASE 5F: Close of a non-class declaration level block.
+ ((and (eq char-after-ip ?})
+ (c-keyword-member containing-decl-kwd
+ 'c-other-block-decl-kwds))
+ ;; This is inconsistent: Should use `containing-decl-open'
+ ;; here if it's at boi, like in case 5J.
+ (goto-char containing-decl-start)
+ (c-add-stmt-syntax
+ (if (string-equal (symbol-name containing-decl-kwd) "extern")
+ ;; Special case for compatibility with the
+ ;; extern-lang syntactic symbols.
+ 'extern-lang-close
+ (intern (concat (symbol-name containing-decl-kwd)
+ "-close")))
+ nil t
+ (c-most-enclosing-brace paren-state (point))
+ paren-state))
+
+ ;; CASE 5T: Continuation of a concept clause.
+ ((save-excursion
+ (and (eq (c-beginning-of-statement-1 nil t) 'same)
+ (setq tmp (c-looking-at-concept indent-point))))
+ (c-add-syntax 'constraint-cont (car tmp)))
+
;; CASE 5D: this could be a top-level initialization, a
;; member init list continuation, or a template argument
;; list continuation.
((save-excursion
+ (setq constraint-detail (c-in-requires-or-at-end-of-clause))
;; Note: We use the fact that lim is always after any
;; preceding brace sexp.
(if c-recognize-<>-arglists
@@ -14474,8 +14796,9 @@ comment at the start of cc-engine.el for more info."
;; clause - we assume only C++ needs it.
(c-syntactic-skip-backward "^;,=" lim t))
(setq placeholder (point))
- (and (memq (char-before) '(?, ?= ?<))
- (not (c-crosses-statement-barrier-p (point) indent-point))))
+ (or constraint-detail
+ (and (memq (char-before) '(?, ?= ?<))
+ (not (c-crosses-statement-barrier-p (point) indent-point)))))
(cond
;; CASE 5D.6: Something like C++11's "using foo = <type-exp>"
@@ -14493,8 +14816,7 @@ comment at the start of cc-engine.el for more info."
(c-on-identifier))
(setq placeholder preserve-point)))))
(c-add-syntax
- 'statement-cont placeholder)
- )
+ 'statement-cont placeholder))
;; CASE 5D.3: perhaps a template list continuation?
((and (c-major-mode-is 'c++-mode)
@@ -14544,21 +14866,10 @@ comment at the start of cc-engine.el for more info."
;; CASE 5D.7: Continuation of a "concept foo =" line in C++20 (or
;; similar).
- ((and c-equals-nontype-decl-key
- (save-excursion
- (prog1
- (and (zerop (c-backward-token-2 1 nil lim))
- (looking-at c-operator-re)
- (equal (match-string 0) "=")
- (zerop (c-backward-token-2 1 nil lim))
- (looking-at c-symbol-start)
- (not (looking-at c-keywords-regexp))
- (zerop (c-backward-token-2 1 nil lim))
- (looking-at c-equals-nontype-decl-key)
- (eq (c-beginning-of-statement-1 lim) 'same))
- (setq placeholder (point)))))
- (goto-char placeholder)
- (c-add-stmt-syntax 'topmost-intro-cont nil nil containing-sexp
+ ((and constraint-detail
+ (not (eq (cdr constraint-detail) 'expression)))
+ (goto-char (car constraint-detail))
+ (c-add-stmt-syntax 'constraint-cont nil nil containing-sexp
paren-state))
;; CASE 5D.5: Continuation of the "expression part" of a
@@ -14583,24 +14894,6 @@ comment at the start of cc-engine.el for more info."
nil nil containing-sexp paren-state))
))
- ;; CASE 5F: Close of a non-class declaration level block.
- ((and (eq char-after-ip ?})
- (c-keyword-member containing-decl-kwd
- 'c-other-block-decl-kwds))
- ;; This is inconsistent: Should use `containing-decl-open'
- ;; here if it's at boi, like in case 5J.
- (goto-char containing-decl-start)
- (c-add-stmt-syntax
- (if (string-equal (symbol-name containing-decl-kwd) "extern")
- ;; Special case for compatibility with the
- ;; extern-lang syntactic symbols.
- 'extern-lang-close
- (intern (concat (symbol-name containing-decl-kwd)
- "-close")))
- nil t
- (c-most-enclosing-brace paren-state (point))
- paren-state))
-
;; CASE 5G: we are looking at the brace which closes the
;; enclosing nested class decl
((and containing-sexp
@@ -14813,7 +15106,59 @@ comment at the start of cc-engine.el for more info."
(c-add-syntax 'topmost-intro-cont (c-point 'boi)))
))
- ;; (CASE 6 has been removed.)
+ ;; CASE 20: A C++ requires sub-clause.
+ ((and (setq tmp (c-in-requires-or-at-end-of-clause indent-point))
+ (not (eq (cdr tmp) 'expression))
+ (setq placeholder (car tmp)))
+ (c-add-syntax
+ (if (eq char-after-ip ?{)
+ 'substatement-open
+ 'substatement)
+ (c-point 'boi placeholder)))
+
+ ;; ((Old) CASE 6 has been removed.)
+ ;; CASE 6: line is within a C11 _Generic expression.
+ ((and c-generic-key
+ (eq (char-after containing-sexp) ?\()
+ (progn (setq tmp-pos (c-safe-scan-lists
+ containing-sexp 1 0
+ (min (+ (point) 2000) (point-max))))
+ t)
+ (save-excursion
+ (and
+ (progn (goto-char containing-sexp)
+ (zerop (c-backward-token-2)))
+ (looking-at c-generic-key)
+ (progn (goto-char (1+ containing-sexp))
+ (c-syntactic-re-search-forward
+ "," indent-point 'bound t t))
+ (setq placeholder (point)))))
+ (let ((res (c-syntactic-re-search-forward
+ "[,:)]"
+ (or tmp-pos (min (+ (point) 2000) (point-max)))
+ 'bound t t)))
+ (cond
+ ((and res
+ (eq (char-before) ?\))
+ (save-excursion
+ (backward-char)
+ (c-backward-syntactic-ws indent-point)
+ (eq (point) indent-point)))
+ (c-add-stmt-syntax
+ 'arglist-close (list containing-sexp) t
+ (c-most-enclosing-brace paren-state indent-point) paren-state))
+ ((or (not res)
+ (eq (char-before) ?\)))
+ (backward-char)
+ (c-syntactic-skip-backward "^,:" containing-sexp t)
+ (c-add-syntax (if (eq (char-before) ?:)
+ 'statement-case-intro
+ 'case-label)
+ (1+ containing-sexp)))
+ (t (c-add-syntax (if (eq (char-before) ?:)
+ 'case-label
+ 'statement-case-intro)
+ (1+ containing-sexp))))))
;; CASE 7: line is an expression, not a statement. Most
;; likely we are either in a function prototype or a function
@@ -15154,6 +15499,20 @@ comment at the start of cc-engine.el for more info."
(c-add-syntax 'defun-close (point))
(c-add-syntax 'inline-close (point))))
+ ;; CASE 16G: Do we have the closing brace of a "requires" clause
+ ;; of a C++20 "concept"?
+ ((save-excursion
+ (c-backward-syntactic-ws lim)
+ (and (or (not (eq (char-before) ?\)))
+ (c-go-list-backward nil lim))
+ (progn (c-backward-syntactic-ws lim)
+ (zerop (c-backward-token-2 nil nil lim)))
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_))))
+ (goto-char containing-sexp)
+ (back-to-indentation)
+ (c-add-stmt-syntax 'defun-close nil t lim paren-state))
+
;; CASE 16F: Can be a defun-close of a function declared
;; in a statement block, e.g. in Pike or when using gcc
;; extensions, but watch out for macros followed by
@@ -15304,6 +15663,21 @@ comment at the start of cc-engine.el for more info."
(if (eq char-after-ip ?{)
(c-add-syntax 'block-open)))
+ ;; CASE 17J: first "statement" inside a C++20 requires
+ ;; "function".
+ ((save-excursion
+ (goto-char containing-sexp)
+ (c-backward-syntactic-ws lim)
+ (and (or (not (eq (char-before) ?\)))
+ (c-go-list-backward nil lim))
+ (progn (c-backward-syntactic-ws lim)
+ (zerop (c-backward-token-2 nil nil lim)))
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_))))
+ (goto-char containing-sexp)
+ (back-to-indentation)
+ (c-add-syntax 'defun-block-intro (point)))
+
;; CASE 17F: first statement in an inline, or first
;; statement in a top-level defun. we can tell this is it
;; if there are no enclosing braces that haven't been
diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el
index e6c6c65f59c..9118e3253c2 100644
--- a/lisp/progmodes/cc-fonts.el
+++ b/lisp/progmodes/cc-fonts.el
@@ -259,14 +259,14 @@
(defmacro c-fontify-types-and-refs (varlist &rest body)
(declare (indent 1) (debug let*))
- ;; Like `let', but additionally activates `c-record-type-identifiers'
+ ;; Like `let*', but additionally activates `c-record-type-identifiers'
;; and `c-record-ref-identifiers', and fontifies the recorded ranges
;; accordingly on exit.
;;
;; This function does hidden buffer changes.
- `(let ((c-record-type-identifiers t)
- c-record-ref-identifiers
- ,@varlist)
+ `(let* ((c-record-type-identifiers t)
+ c-record-ref-identifiers
+ ,@varlist)
(prog1 (progn ,@body)
(c-fontify-recorded-types-and-refs))))
@@ -1219,6 +1219,7 @@ casts and declarations are fontified. Used on level 2 and higher."
;; inside a function declaration arglist).
;; '<> In an angle bracket arglist.
;; 'arglist Some other type of arglist.
+ ;; 'generic In a C11 _Generic construct.
;; 'top Some other context and point is at the top-level (either
;; outside any braces or directly inside a class or namespace,
;; etc.)
@@ -1345,6 +1346,15 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-back-over-member-initializers)))
(c-put-char-property (1- match-pos) 'c-type 'c-not-decl)
(cons 'not-decl nil))
+ ;; In a C11 _Generic construct.
+ ((and c-generic-key
+ (eq (char-before match-pos) ?,)
+ (save-excursion
+ (and (c-go-up-list-backward match-pos
+ (max (- (point) 2000) (point-min)))
+ (zerop (c-backward-token-2))
+ (looking-at c-generic-key))))
+ (cons 'generic nil))
;; At start of a declaration inside a declaration paren.
((save-excursion
(goto-char match-pos)
@@ -1378,7 +1388,8 @@ casts and declarations are fontified. Used on level 2 and higher."
(memq type '(c-decl-arg-start
c-decl-type-start))))))))
((and (zerop (c-backward-token-2))
- (looking-at c-fun-name-substitute-key)))))))))
+ (looking-at c-fun-name-substitute-key)
+ (not (eq (char-after (match-end 0)) ?_))))))))))
;; Cache the result of this test for next time around.
(c-put-char-property (1- match-pos) 'c-type 'c-decl-arg-start)
(cons 'decl nil))
@@ -1616,13 +1627,16 @@ casts and declarations are fontified. Used on level 2 and higher."
(c-forward-syntactic-ws))
;; Now analyze the construct.
- (if (eq context 'not-decl)
- (progn
- (setq decl-or-cast nil)
- (if (c-syntactic-re-search-forward
- "," (min limit (point-max)) 'at-limit t)
- (c-put-char-property (1- (point)) 'c-type 'c-not-decl))
- nil)
+ (cond
+ ((eq context 'not-decl)
+ (setq decl-or-cast nil)
+ (if (c-syntactic-re-search-forward
+ "," (min limit (point-max)) 'at-limit t)
+ (c-put-char-property (1- (point)) 'c-type 'c-not-decl))
+ nil)
+ ((eq context 'generic)
+ (c-font-lock-c11-generic-clause))
+ (t
(setq decl-or-cast
(c-forward-decl-or-cast-1
match-pos context last-cast-end inside-macro))
@@ -1683,7 +1697,7 @@ casts and declarations are fontified. Used on level 2 and higher."
context
(or toplev (nth 4 decl-or-cast))))
- (t t))))
+ (t t)))))
;; It was a false alarm. Check if we're in a label (or other
;; construct with `:' except bitfield) instead.
@@ -1713,6 +1727,28 @@ casts and declarations are fontified. Used on level 2 and higher."
nil))))
+(defun c-font-lock-c11-generic-clause ()
+ ;; Fontify a type inside the C11 _Generic clause. Point will be at the
+ ;; type and will be left at the next comma of the clause (if any) or the
+ ;; closing parenthesis, if any, or at the end of the type, otherwise.
+ ;; The return value is always nil.
+ (c-fontify-types-and-refs
+ ((here (point))
+ (type-type (c-forward-type t))
+ (c-promote-possible-types (if (eq type-type 'maybe) 'just-one t))
+ (pos (point)) pos1)
+ (when (and type-type (eq (char-after) ?:))
+ (goto-char here)
+ (c-forward-type t)) ; Fontify the type.
+ (cond
+ ((c-syntactic-re-search-forward "," nil t t t)
+ (backward-char))
+ ((and (setq pos1 (c-up-list-forward))
+ (eq (char-before pos1) ?\)))
+ (goto-char (1- pos1)))
+ (t (goto-char pos))))
+ nil)
+
(defun c-font-lock-enum-body (limit)
;; Fontify the identifiers of each enum we find by searching forward.
;;
@@ -2643,9 +2679,7 @@ need for `c-font-lock-extra-types'.")
'same)
(looking-at c-colon-type-list-re)))
;; Inherited protected member: leave unfontified
- )
- (t (goto-char pos)
- (c-font-lock-declarators limit nil c-label-face-name nil)))
+ ))
(eq (char-after) ?,)))
(forward-char))) ; over the comma.
nil))
diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el
index 1749a2dfa7a..3b4fdc6e141 100644
--- a/lisp/progmodes/cc-langs.el
+++ b/lisp/progmodes/cc-langs.el
@@ -586,7 +586,8 @@ Such a function takes one optional parameter, a buffer position (defaults to
point), and returns nil or t. This variable contains nil for languages which
don't have EOL terminated statements. "
t nil
- (c c++ objc) 'c-at-macro-vsemi-p
+ (c objc) 'c-at-macro-vsemi-p
+ c++ 'c-c++-vsemi-p
awk 'c-awk-at-vsemi-p)
(c-lang-defvar c-at-vsemi-p-fn (c-lang-const c-at-vsemi-p-fn))
@@ -2634,9 +2635,12 @@ clause. An arglist may or may not follow such a keyword."
c++ '("requires"))
(c-lang-defconst c-fun-name-substitute-key
- ;; An adorned regular expression which matches any member of
+ ;; An unadorned regular expression which matches any member of
;; `c-fun-name-substitute-kwds'.
- t (c-make-keywords-re t (c-lang-const c-fun-name-substitute-kwds)))
+ t (c-make-keywords-re 'appendable (c-lang-const c-fun-name-substitute-kwds)))
+;; We use 'appendable, so that we get "\\>" on the regexp, but without a further
+;; character, which would mess up backward regexp search from just after the
+;; keyword. If only XEmacs had \\_>. ;-(
(c-lang-defvar c-fun-name-substitute-key
(c-lang-const c-fun-name-substitute-key))
@@ -3085,6 +3089,17 @@ Keywords here should also be in `c-block-stmt-1-kwds'."
t (c-make-keywords-re t (c-lang-const c-block-stmt-2-kwds)))
(c-lang-defvar c-block-stmt-2-key (c-lang-const c-block-stmt-2-key))
+(c-lang-defconst c-generic-kwds
+ "The keyword \"_Generic\" which introduces a C11 generic statement."
+ t nil
+ c '("_Generic"))
+
+(c-lang-defconst c-generic-key
+ ;; Regexp matching the keyword(s) in `c-generic-kwds'.
+ t (if (c-lang-const c-generic-kwds)
+ (c-make-keywords-re t (c-lang-const c-generic-kwds))))
+(c-lang-defvar c-generic-key (c-lang-const c-generic-key))
+
(c-lang-defconst c-block-stmt-kwds
;; Union of `c-block-stmt-1-kwds' and `c-block-stmt-2-kwds'.
t (c--delete-duplicates (append (c-lang-const c-block-stmt-1-kwds)
diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el
index afeb88c7b8a..72d4b93ee59 100644
--- a/lisp/progmodes/cc-vars.el
+++ b/lisp/progmodes/cc-vars.el
@@ -1094,6 +1094,8 @@ can always override the use of `c-default-style' by making calls to
;; Anchor pos: Bol at the last line of previous construct.
(topmost-intro-cont . c-lineup-topmost-intro-cont)
;;Anchor pos: Bol at the topmost annotation line
+ (constraint-cont . +)
+ ;; Anchor pos: Boi of the starting requires/concept line
(annotation-top-cont . 0)
;;Anchor pos: Bol at the topmost annotation line
(annotation-var-cont . +)
@@ -1326,6 +1328,9 @@ Here is the current list of valid syntactic element symbols:
knr-argdecl -- Subsequent lines in a K&R C argument declaration.
topmost-intro -- The first line in a topmost construct definition.
topmost-intro-cont -- Topmost definition continuation lines.
+ constraint-cont -- Continuation line of a C++ requires clause (not
+ to be confused with a \"requires expression\") or
+ concept.
annotation-top-cont -- Topmost definition continuation line where only
annotations are on previous lines.
annotation-var-cont -- A continuation of a C (or like) statement where
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index ccf64fb670b..6d151db8a83 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -1706,7 +1706,7 @@ to `compilation-error-regexp-alist' if RULES is nil."
(set-marker (make-marker)
(save-excursion
(goto-char (point-min))
- (text-property-search-forward 'compilation-header-end)
+ (text-property-search-forward 'compilation-annotation)
;; If we have no end marker, this will be
;; `point-min' still.
(point)))))
@@ -1854,6 +1854,14 @@ If nil, don't hide anything."
;; buffers when it changes from nil to non-nil or vice-versa.
(unless compilation-in-progress (force-mode-line-update t)))
+(defun compilation-insert-annotation (&rest args)
+ "Insert ARGS at point, adding the `compilation-annotation' text property.
+This property is used to distinguish output of the compilation
+process from additional information inserted by Emacs."
+ (let ((start (point)))
+ (apply #'insert args)
+ (put-text-property start (point) 'compilation-annotation t)))
+
;;;###autoload
(defun compilation-start (command &optional mode name-function highlight-regexp
continue)
@@ -1975,17 +1983,16 @@ Returns the compilation buffer created."
(setq-local compilation-auto-jump-to-next t))
(when (zerop (buffer-size))
;; Output a mode setter, for saving and later reloading this buffer.
- (insert "-*- mode: " name-of-mode
- "; default-directory: "
- (prin1-to-string (abbreviate-file-name default-directory))
- " -*-\n"))
- (insert (format "%s started at %s\n\n"
- mode-name
- (substring (current-time-string) 0 19))
- command "\n")
- ;; Mark the end of the header so that we don't interpret
- ;; anything in it as an error.
- (put-text-property (1- (point)) (point) 'compilation-header-end t)
+ (compilation-insert-annotation
+ "-*- mode: " name-of-mode
+ "; default-directory: "
+ (prin1-to-string (abbreviate-file-name default-directory))
+ " -*-\n"))
+ (compilation-insert-annotation
+ (format "%s started at %s\n\n"
+ mode-name
+ (substring (current-time-string) 0 19))
+ command "\n")
(setq thisdir default-directory))
(set-buffer-modified-p nil))
;; Pop up the compilation buffer.
@@ -2467,13 +2474,13 @@ commands of Compilation major mode are available. See
(cur-buffer (current-buffer)))
;; Record where we put the message, so we can ignore it later on.
(goto-char omax)
- (insert ?\n mode-name " " (car status))
+ (compilation-insert-annotation ?\n mode-name " " (car status))
(if (and (numberp compilation-window-height)
(zerop compilation-window-height))
(message "%s" (cdr status)))
(if (bolp)
(forward-char -1))
- (insert " at " (substring (current-time-string) 0 19))
+ (compilation-insert-annotation " at " (substring (current-time-string) 0 19))
(goto-char (point-max))
;; Prevent that message from being recognized as a compilation error.
(add-text-properties omax (point)
diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el
index 412283f3488..b6f0e9bca41 100644
--- a/lisp/progmodes/cperl-mode.el
+++ b/lisp/progmodes/cperl-mode.el
@@ -2918,8 +2918,9 @@ and closing parentheses and brackets."
;;
((eq 'REx-part2 (elt i 0)) ;; [self start] start of /REP in s//REP/x
(goto-char (elt i 1))
- (condition-case nil ; Use indentation of the 1st part
- (forward-sexp -1))
+ (condition-case nil
+ (forward-sexp -1) ; Use indentation of the 1st part
+ (error nil))
(current-column))
((eq 'indentable (elt i 0)) ; Indenter for REGEXP qw() etc
(cond ;;; [indentable terminator start-pos is-block]
diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el
index 47cd13e7fdb..ea4977254ce 100644
--- a/lisp/progmodes/csharp-mode.el
+++ b/lisp/progmodes/csharp-mode.el
@@ -942,6 +942,11 @@ Key bindings:
;; Comments.
(c-ts-common-comment-setup)
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment"
+ "verbatim_string-literal"
+ "interpolated_verbatim_string-text")))
+
;; Indent.
(setq-local treesit-simple-indent-rules csharp-ts-mode--indent-rules)
diff --git a/lisp/progmodes/dockerfile-ts-mode.el b/lisp/progmodes/dockerfile-ts-mode.el
index f2f30cf2617..c9125bc6cbd 100644
--- a/lisp/progmodes/dockerfile-ts-mode.el
+++ b/lisp/progmodes/dockerfile-ts-mode.el
@@ -173,6 +173,10 @@ the subtrees."
(setq-local treesit-simple-indent-rules
dockerfile-ts-mode--indent-rules)
+ ;; Navigation
+ (setq-local treesit-sentence-type-regexp
+ "instruction")
+
;; Font-lock.
(setq-local treesit-font-lock-settings
dockerfile-ts-mode--font-lock-settings)
diff --git a/lisp/progmodes/ebnf-otz.el b/lisp/progmodes/ebnf-otz.el
index 9ac37b676f9..4155dc0d2cd 100644
--- a/lisp/progmodes/ebnf-otz.el
+++ b/lisp/progmodes/ebnf-otz.el
@@ -566,7 +566,7 @@
;; determine suffix length
(while (and (> isuf 0) (setq tail (cdr tail)))
(let* ((cur head)
- (tlis (nreverse
+ (tlis (reverse
(if (eq (ebnf-node-kind (car tail)) 'ebnf-generate-sequence)
(ebnf-node-list (car tail))
(list (car tail)))))
@@ -577,7 +577,6 @@
(setq cur (cdr cur)
this (cdr this)
i (1+ i)))
- (nreverse tlis)
(setq isuf (min isuf i))))
(setq head (nreverse head))
(if (or (zerop isuf) (> isuf len))
diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el
index cb9190a7523..c4f773c8426 100644
--- a/lisp/progmodes/eglot.el
+++ b/lisp/progmodes/eglot.el
@@ -2,11 +2,12 @@
;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
-;; Version: 1.12-emacs29
+;; Version: 1.14
;; Author: João Távora <joaotavora@gmail.com>
;; Maintainer: João Távora <joaotavora@gmail.com>
;; URL: https://github.com/joaotavora/eglot
;; Keywords: convenience, languages
+;; Package-Requires: ((emacs "26.3") (jsonrpc "1.0.16") (flymake "1.2.1") (project "0.9.8") (xref "1.6.2") (eldoc "1.14.0") (seq "2.23") (external-completion "0.1"))
;; This is a GNU ELPA :core package. Avoid adding functionality
;; that is not available in the version of Emacs recorded above or any
@@ -96,34 +97,30 @@
(require 'imenu)
(require 'cl-lib)
-(require 'project)
+
(require 'url-parse)
(require 'url-util)
(require 'pcase)
(require 'compile) ; for some faces
(require 'warnings)
-(require 'flymake)
-(require 'xref)
(eval-when-compile
(require 'subr-x))
-(require 'jsonrpc)
(require 'filenotify)
(require 'ert)
-(require 'array)
-(require 'external-completion)
-
-;; ElDoc is preloaded in Emacs, so `require'-ing won't guarantee we are
-;; using the latest version from GNU Elpa when we load eglot.el. Use an
-;; heuristic to see if we need to `load' it in Emacs < 28.
-(if (and (< emacs-major-version 28)
- (not (boundp 'eldoc-documentation-strategy)))
- (load "eldoc")
- (require 'eldoc))
-
-;; Similar issue as above for Emacs 26.3 and seq.el.
-(if (< emacs-major-version 27)
- (load "seq")
- (require 'seq))
+(require 'text-property-search nil t)
+
+;; These dependencies are also GNU ELPA core packages. Because of
+;; bug#62576, since there is a risk that M-x package-install, despite
+;; having installed them, didn't correctly re-load them over the
+;; built-in versions.
+(eval-and-compile
+ (load "project")
+ (load "eldoc")
+ (load "seq")
+ (load "flymake")
+ (load "xref")
+ (load "jsonrpc")
+ (load "external-completion"))
;; forward-declare, but don't require (Emacs 28 doesn't seem to care)
(defvar markdown-fontify-code-blocks-natively)
@@ -183,7 +180,7 @@ chosen (interactively or automatically)."
when probe return (cons probe args)
finally (funcall err)))))))
-(defvar eglot-server-programs `(((rust-ts-mode rust-mode) . ,(eglot-alternatives '("rust-analyzer" "rls")))
+(defvar eglot-server-programs `(((rust-ts-mode rust-mode) . ("rust-analyzer"))
((cmake-mode cmake-ts-mode) . ("cmake-language-server"))
(vimrc-mode . ("vim-language-server" "--stdio"))
((python-mode python-ts-mode)
@@ -220,7 +217,11 @@ chosen (interactively or automatically)."
((java-mode java-ts-mode) . ("jdtls"))
(dart-mode . ("dart" "language-server"
"--client-id" "emacs.eglot-dart"))
- (elixir-mode . ("language_server.sh"))
+ ((elixir-mode elixir-ts-mode heex-ts-mode)
+ . ,(if (and (fboundp 'w32-shell-dos-semantics)
+ (w32-shell-dos-semantics))
+ '("language_server.bat")
+ '("language_server.sh")))
(ada-mode . ("ada_language_server"))
(scala-mode . ,(eglot-alternatives
'("metals" "metals-emacs")))
@@ -241,7 +242,7 @@ chosen (interactively or automatically)."
("css-languageserver" "--stdio"))))
(html-mode . ,(eglot-alternatives '(("vscode-html-language-server" "--stdio") ("html-languageserver" "--stdio"))))
((dockerfile-mode dockerfile-ts-mode) . ("docker-langserver" "--stdio"))
- ((clojure-mode clojurescript-mode clojurec-mode)
+ ((clojure-mode clojurescript-mode clojurec-mode clojure-ts-mode)
. ("clojure-lsp"))
((csharp-mode csharp-ts-mode)
. ,(eglot-alternatives
@@ -389,14 +390,20 @@ done by `eglot-reconnect'."
"If non-nil, activate Eglot in cross-referenced non-project files."
:type 'boolean)
+(defcustom eglot-prefer-plaintext nil
+ "If non-nil, always request plaintext responses to hover requests."
+ :type 'boolean)
+
(defcustom eglot-menu-string "eglot"
"String displayed in mode line when Eglot is active."
:type 'string)
(defcustom eglot-report-progress t
- "If non-nil, show progress of long running LSP server work"
+ "If non-nil, show progress of long running LSP server work.
+If set to `messages', use *Messages* buffer, else use Eglot's
+mode line indicator."
:type 'boolean
- :version "29.1")
+ :version "1.10")
(defvar eglot-withhold-process-id nil
"If non-nil, Eglot will not send the Emacs process id to the language server.
@@ -441,6 +448,10 @@ This can be useful when using docker to run a language server.")
(if (>= emacs-major-version 27) (executable-find command remote)
(executable-find command)))
+(defun eglot--accepted-formats ()
+ (if (and (not eglot-prefer-plaintext) (fboundp 'gfm-view-mode))
+ ["markdown" "plaintext"] ["plaintext"]))
+
;;; Message verification helpers
;;;
@@ -476,9 +487,7 @@ This can be useful when using docker to run a language server.")
(SymbolInformation (:name :kind :location)
(:deprecated :containerName))
(DocumentSymbol (:name :range :selectionRange :kind)
- ;; `:containerName' isn't really allowed , but
- ;; it simplifies the impl of `eglot-imenu'.
- (:detail :deprecated :children :containerName))
+ (:detail :deprecated :children))
(TextDocumentEdit (:textDocument :edits) ())
(TextEdit (:range :newText))
(VersionedTextDocumentIdentifier (:uri :version) ())
@@ -771,14 +780,12 @@ treated as in `eglot--dbind'."
:tagSupport (:valueSet [1]))
:contextSupport t)
:hover (list :dynamicRegistration :json-false
- :contentFormat
- (if (fboundp 'gfm-view-mode)
- ["markdown" "plaintext"]
- ["plaintext"]))
+ :contentFormat (eglot--accepted-formats))
:signatureHelp (list :dynamicRegistration :json-false
:signatureInformation
`(:parameterInformation
(:labelOffsetSupport t)
+ :documentationFormat ,(eglot--accepted-formats)
:activeParameterSupport t))
:references `(:dynamicRegistration :json-false)
:definition (list :dynamicRegistration :json-false
@@ -837,12 +844,9 @@ treated as in `eglot--dbind'."
:documentation "Short nickname for the associated project."
:accessor eglot--project-nickname
:reader eglot-project-nickname)
- (major-modes
- :documentation "Major modes server is responsible for in a given project."
- :accessor eglot--major-modes)
- (language-id
- :documentation "Language ID string for the mode."
- :accessor eglot--language-id)
+ (languages
+ :documentation "Alist ((MODE . LANGUAGE-ID-STRING)...) of managed languages."
+ :accessor eglot--languages)
(capabilities
:documentation "JSON object containing server capabilities."
:accessor eglot--capabilities)
@@ -877,6 +881,12 @@ treated as in `eglot--dbind'."
:documentation
"Represents a server. Wraps a process for LSP communication.")
+(defun eglot--major-modes (s) "Major modes server S is responsible for."
+ (mapcar #'car (eglot--languages s)))
+
+(defun eglot--language-ids (s) "LSP Language ID strings for server S's modes."
+ (mapcar #'cdr (eglot--languages s)))
+
(cl-defmethod initialize-instance :before ((_server eglot-lsp-server) &optional args)
(cl-remf args :initializationOptions))
@@ -904,7 +914,7 @@ SERVER."
(unwind-protect
(progn
(setf (eglot--shutdown-requested server) t)
- (jsonrpc-request server :shutdown nil :timeout (or timeout 1.5))
+ (eglot--request server :shutdown nil :timeout (or timeout 1.5))
(jsonrpc-notify server :exit nil))
;; Now ask jsonrpc.el to shut down the server.
(jsonrpc-shutdown server (not preserve-buffers))
@@ -962,42 +972,44 @@ PRESERVE-BUFFERS as in `eglot-shutdown', which see."
(defun eglot--lookup-mode (mode)
"Lookup `eglot-server-programs' for MODE.
-Return (MANAGED-MODES LANGUAGE-ID CONTACT-PROXY).
+Return (LANGUAGES . CONTACT-PROXY).
MANAGED-MODES is a list with MODE as its first element.
Subsequent elements are other major modes also potentially
managed by the server that is to manage MODE.
-If not specified in `eglot-server-programs' (which see),
-LANGUAGE-ID is determined from MODE's name.
+LANGUAGE-IDS is a list of the same length as MANAGED-MODES. Each
+elem is derived from the corresponding mode name, if not
+specified in `eglot-server-programs' (which see).
CONTACT-PROXY is the value of the corresponding
`eglot-server-programs' entry."
- (cl-loop
- for (modes . contact) in eglot-server-programs
- for mode-symbols = (cons mode
- (delete mode
- (mapcar #'car
- (mapcar #'eglot--ensure-list
- (eglot--ensure-list modes)))))
- thereis (cl-some
- (lambda (spec)
- (cl-destructuring-bind (probe &key language-id &allow-other-keys)
- (eglot--ensure-list spec)
- (and (provided-mode-derived-p mode probe)
- (list
- mode-symbols
- (or language-id
- (or (get mode 'eglot-language-id)
- (get spec 'eglot-language-id)
- (string-remove-suffix "-mode" (symbol-name mode))))
- contact))))
- (if (or (symbolp modes) (keywordp (cadr modes)))
- (list modes) modes))))
+ (cl-flet ((languages (main-mode-sym specs)
+ (let* ((res
+ (mapcar (jsonrpc-lambda (sym &key language-id &allow-other-keys)
+ (cons sym
+ (or language-id
+ (or (get sym 'eglot-language-id)
+ (replace-regexp-in-string
+ "\\(?:-ts\\)?-mode$" ""
+ (symbol-name sym))))))
+ specs))
+ (head (cl-find main-mode-sym res :key #'car)))
+ (cons head (delq head res)))))
+ (cl-loop
+ for (modes . contact) in eglot-server-programs
+ for specs = (mapcar #'eglot--ensure-list
+ (if (or (symbolp modes) (keywordp (cadr modes)))
+ (list modes) modes))
+ thereis (cl-some (lambda (spec)
+ (cl-destructuring-bind (sym &key &allow-other-keys) spec
+ (and (provided-mode-derived-p mode sym)
+ (cons (languages sym specs) contact))))
+ specs))))
(defun eglot--guess-contact (&optional interactive)
"Helper for `eglot'.
-Return (MANAGED-MODE PROJECT CLASS CONTACT LANG-ID). If INTERACTIVE is
+Return (MANAGED-MODES PROJECT CLASS CONTACT LANG-IDS). If INTERACTIVE is
non-nil, maybe prompt user, else error as soon as something can't
be guessed."
(let* ((guessed-mode (if buffer-file-name major-mode))
@@ -1015,11 +1027,10 @@ be guessed."
((not guessed-mode)
(eglot--error "Can't guess mode to manage for `%s'" (current-buffer)))
(t guessed-mode)))
- (triplet (eglot--lookup-mode main-mode))
- (managed-modes (car triplet))
- (language-id (or (cadr triplet)
- (string-remove-suffix "-mode" (symbol-name guessed-mode))))
- (guess (caddr triplet))
+ (languages-and-contact (eglot--lookup-mode main-mode))
+ (managed-modes (mapcar #'car (car languages-and-contact)))
+ (language-ids (mapcar #'cdr (car languages-and-contact)))
+ (guess (cdr languages-and-contact))
(guess (if (functionp guess)
(funcall guess interactive)
guess))
@@ -1067,7 +1078,7 @@ be guessed."
full-program-invocation
'eglot-command-history)))
guess)))
- (list managed-modes (eglot--current-project) class contact language-id)))
+ (list managed-modes (eglot--current-project) class contact language-ids)))
(defvar eglot-lsp-context)
(put 'eglot-lsp-context 'variable-documentation
@@ -1085,24 +1096,25 @@ suitable root directory for a given LSP server's purposes."
`(transient . ,(expand-file-name default-directory)))))
;;;###autoload
-(defun eglot (managed-major-mode project class contact language-id
+(defun eglot (managed-major-modes project class contact language-ids
&optional _interactive)
- "Start LSP server in support of PROJECT's buffers under MANAGED-MAJOR-MODE.
+ "Start LSP server for PROJECT's buffers under MANAGED-MAJOR-MODES.
-This starts a Language Server Protocol (LSP) server suitable for the
-buffers of PROJECT whose `major-mode' is MANAGED-MAJOR-MODE.
-CLASS is the class of the LSP server to start and CONTACT specifies
-how to connect to the server.
+This starts a Language Server Protocol (LSP) server suitable for
+the buffers of PROJECT whose `major-mode' is among
+MANAGED-MAJOR-MODES. CLASS is the class of the LSP server to
+start and CONTACT specifies how to connect to the server.
-Interactively, the command attempts to guess MANAGED-MAJOR-MODE
-from the current buffer's `major-mode', CLASS and CONTACT from
-`eglot-server-programs' looked up by the major mode, and PROJECT from
-`project-find-functions'. The search for active projects in this
-context binds `eglot-lsp-context' (which see).
+Interactively, the command attempts to guess MANAGED-MAJOR-MODES,
+CLASS, CONTACT, and LANGUAGE-IDS from `eglot-server-programs',
+according to the current buffer's `major-mode'. PROJECT is
+guessed from `project-find-functions'. The search for active
+projects in this context binds `eglot-lsp-context' (which see).
-If it can't guess, it prompts the user for the mode and the server.
-With a single \\[universal-argument] prefix arg, it always prompts for COMMAND.
-With two \\[universal-argument], it also always prompts for MANAGED-MAJOR-MODE.
+If it can't guess, it prompts the user for the mode and the
+server. With a single \\[universal-argument] prefix arg, it
+always prompts for COMMAND. With two \\[universal-argument], it
+also always prompts for MANAGED-MAJOR-MODE.
The LSP server of CLASS is started (or contacted) via CONTACT.
If this operation is successful, current *and future* file
@@ -1120,8 +1132,8 @@ CONTACT specifies how to contact the server. It is a
keyword-value plist used to initialize CLASS or a plain list as
described in `eglot-server-programs', which see.
-LANGUAGE-ID is the language ID string to send to the server for
-MANAGED-MAJOR-MODE, which matters to a minority of servers.
+LANGUAGE-IDS is a list of language ID string to send to the
+server for each element in MANAGED-MAJOR-MODES.
INTERACTIVE is ignored and provided for backward compatibility."
(interactive
@@ -1132,8 +1144,9 @@ INTERACTIVE is ignored and provided for backward compatibility."
(user-error "[eglot] Connection attempt aborted by user."))
(prog1 (append (eglot--guess-contact t) '(t))
(when current-server (ignore-errors (eglot-shutdown current-server))))))
- (eglot--connect (eglot--ensure-list managed-major-mode)
- project class contact language-id))
+ (eglot--connect (eglot--ensure-list managed-major-modes)
+ project class contact
+ (eglot--ensure-list language-ids)))
(defun eglot-reconnect (server &optional interactive)
"Reconnect to SERVER.
@@ -1145,7 +1158,7 @@ INTERACTIVE is t if called interactively."
(eglot--project server)
(eieio-object-class-name server)
(eglot--saved-initargs server)
- (eglot--language-id server))
+ (eglot--language-ids server))
(eglot--message "Reconnected!"))
(defvar eglot--managed-mode) ; forward decl
@@ -1218,8 +1231,8 @@ Each function is passed the server as an argument")
(defvar-local eglot--cached-server nil
"A cached reference to the current Eglot server.")
-(defun eglot--connect (managed-modes project class contact language-id)
- "Connect to MANAGED-MODES, LANGUAGE-ID, PROJECT, CLASS and CONTACT.
+(defun eglot--connect (managed-modes project class contact language-ids)
+ "Connect to MANAGED-MODES, LANGUAGE-IDS, PROJECT, CLASS and CONTACT.
This docstring appeases checkdoc, that's all."
(let* ((default-directory (project-root project))
(nickname (project-name project))
@@ -1292,8 +1305,9 @@ This docstring appeases checkdoc, that's all."
(setf (eglot--saved-initargs server) initargs)
(setf (eglot--project server) project)
(setf (eglot--project-nickname server) nickname)
- (setf (eglot--major-modes server) (eglot--ensure-list managed-modes))
- (setf (eglot--language-id server) language-id)
+ (setf (eglot--languages server)
+ (cl-loop for m in managed-modes for l in language-ids
+ collect (cons m l)))
(setf (eglot--inferior-process server) autostart-inferior-process)
(run-hook-with-args 'eglot-server-initialized-hook server)
;; Now start the handshake. To honor `eglot-sync-connect'
@@ -1312,6 +1326,7 @@ This docstring appeases checkdoc, that's all."
(eq (jsonrpc-process-type server)
'network))
(emacs-pid))
+ :clientInfo '(:name "Eglot")
;; Maybe turn trampy `/ssh:foo@bar:/path/to/baz.py'
;; into `/path/to/baz.py', so LSP groks it.
:rootPath (file-local-name
@@ -1456,15 +1471,27 @@ CONNECT-ARGS are passed as additional arguments to
(line-beginning-position n))))
"Return position of first character in current line.")
+(cl-defun eglot--request (server method params &key
+ immediate
+ timeout cancel-on-input
+ cancel-on-input-retval)
+ "Like `jsonrpc-request', but for Eglot LSP requests.
+Unless IMMEDIATE, send pending changes before making request."
+ (unless immediate (eglot--signal-textDocument/didChange))
+ (jsonrpc-request server method params
+ :timeout timeout
+ :cancel-on-input cancel-on-input
+ :cancel-on-input-retval cancel-on-input-retval))
+
;;; Encoding fever
;;;
(define-obsolete-function-alias
- 'eglot-lsp-abiding-column 'eglot-utf-16-linepos "29.1")
+ 'eglot-lsp-abiding-column 'eglot-utf-16-linepos "1.12")
(define-obsolete-function-alias
- 'eglot-current-column 'eglot-utf-32-linepos "29.1")
+ 'eglot-current-column 'eglot-utf-32-linepos "1.12")
(define-obsolete-variable-alias
- 'eglot-current-column-function 'eglot-current-linepos-function "29.1")
+ 'eglot-current-column-function 'eglot-current-linepos-function "1.12")
(defvar eglot-current-linepos-function #'eglot-utf-16-linepos
"Function calculating position relative to line beginning.
@@ -1505,11 +1532,11 @@ LBP defaults to `eglot--bol'."
(funcall eglot-current-linepos-function)))))
(define-obsolete-function-alias
- 'eglot-move-to-current-column 'eglot-move-to-utf-32-linepos "29.1")
+ 'eglot-move-to-current-column 'eglot-move-to-utf-32-linepos "1.12")
(define-obsolete-function-alias
- 'eglot-move-to-lsp-abiding-column 'eglot-move-to-utf-16-linepos "29.1")
+ 'eglot-move-to-lsp-abiding-column 'eglot-move-to-utf-16-linepos "1.12")
(define-obsolete-variable-alias
-'eglot-move-to-column-function 'eglot-move-to-linepos-function "29.1")
+'eglot-move-to-column-function 'eglot-move-to-linepos-function "1.12")
(defvar eglot-move-to-linepos-function #'eglot-move-to-utf-16-linepos
"Function to move to a position within a line reported by the LSP server.
@@ -1648,10 +1675,17 @@ Doubles as an indicator of snippet support."
(setq-local markdown-fontify-code-blocks-natively t)
(insert string)
(let ((inhibit-message t)
- (message-log-max nil))
- (ignore-errors (delay-mode-hooks (funcall mode))))
- (font-lock-ensure)
- (string-trim (buffer-string)))))
+ (message-log-max nil)
+ match)
+ (ignore-errors (delay-mode-hooks (funcall mode)))
+ (font-lock-ensure)
+ (goto-char (point-min))
+ (let ((inhibit-read-only t))
+ (when (fboundp 'text-property-search-forward) ;; FIXME: use compat
+ (while (setq match (text-property-search-forward 'invisible))
+ (delete-region (prop-match-beginning match)
+ (prop-match-end match)))))
+ (string-trim (buffer-string))))))
(define-obsolete-variable-alias 'eglot-ignored-server-capabilites
'eglot-ignored-server-capabilities "1.8")
@@ -1749,9 +1783,9 @@ and just return it. PROMPT shouldn't end with a question mark."
(defun eglot--plist-keys (plist) "Get keys of a plist."
(cl-loop for (k _v) on plist by #'cddr collect k))
-(defun eglot--ensure-list (x) (if (listp x) x (list x)))
-(when (fboundp 'ensure-list) ; Emacs 28 or later
- (define-obsolete-function-alias 'eglot--ensure-list #'ensure-list "29.1"))
+(defalias 'eglot--ensure-list
+ (if (fboundp 'ensure-list) #'ensure-list
+ (lambda (x) (if (listp x) x (list x)))))
;;; Minor modes
@@ -1832,6 +1866,8 @@ Use `eglot-managed-p' to determine if current buffer is managed.")
(unless (eglot--stay-out-of-p 'xref)
(add-hook 'xref-backend-functions 'eglot-xref-backend nil t))
(add-hook 'completion-at-point-functions #'eglot-completion-at-point nil t)
+ (add-hook 'completion-in-region-mode-hook #'eglot--capf-session-flush nil t)
+ (add-hook 'company-after-completion-hook #'eglot--capf-session-flush nil t)
(add-hook 'change-major-mode-hook #'eglot--managed-mode-off nil t)
(add-hook 'post-self-insert-hook 'eglot--post-self-insert-hook nil t)
(add-hook 'pre-command-hook 'eglot--pre-command-hook nil t)
@@ -1863,6 +1899,8 @@ Use `eglot-managed-p' to determine if current buffer is managed.")
(remove-hook 'after-save-hook 'eglot--signal-textDocument/didSave t)
(remove-hook 'xref-backend-functions 'eglot-xref-backend t)
(remove-hook 'completion-at-point-functions #'eglot-completion-at-point t)
+ (remove-hook 'completion-in-region-mode-hook #'eglot--capf-session-flush t)
+ (remove-hook 'company-after-completion-hook #'eglot--capf-session-flush t)
(remove-hook 'change-major-mode-hook #'eglot--managed-mode-off t)
(remove-hook 'post-self-insert-hook 'eglot--post-self-insert-hook t)
(remove-hook 'pre-command-hook 'eglot--pre-command-hook t)
@@ -1957,8 +1995,8 @@ If it is activated, also signal textDocument/didOpen."
(when update-mode-line
(force-mode-line-update t)))))))
-(defun eglot-manual () "Open documentation."
- (declare (obsolete info "29.1"))
+(defun eglot-manual () "Read Eglot's manual."
+ (declare (obsolete info "1.10"))
(interactive) (info "(eglot)"))
(easy-menu-define eglot-menu nil "Eglot"
@@ -2038,7 +2076,7 @@ Uses THING, FACE, DEFS and PREPEND."
mouse-face mode-line-highlight))))
(defun eglot--mode-line-format ()
- "Compose the Eglot's mode-line."
+ "Compose Eglot's mode-line."
(let* ((server (eglot-current-server))
(nick (and server (eglot-project-nickname server)))
(pending (and server (hash-table-count
@@ -2075,7 +2113,15 @@ Uses THING, FACE, DEFS and PREPEND."
'((mouse-3 eglot-forget-pending-continuations
"Forget pending continuations"))
"Number of outgoing, \
-still unanswered LSP requests to the server\n"))))))))
+still unanswered LSP requests to the server\n")))
+ ,@(cl-loop for pr hash-values of (eglot--progress-reporters server)
+ when (eq (car pr) 'eglot--mode-line-reporter)
+ append `("/" ,(eglot--mode-line-props
+ (format "%s%%%%" (or (nth 4 pr) "?"))
+ 'eglot-mode-line
+ nil
+ (format "(%s) %s %s" (nth 1 pr)
+ (nth 2 pr) (nth 3 pr))))))))))
(add-to-list 'mode-line-misc-info
`(eglot--managed-mode (" [" eglot--mode-line-format "] ")))
@@ -2123,8 +2169,8 @@ still unanswered LSP requests to the server\n"))))))))
(server command arguments)
"Execute COMMAND on SERVER with `:workspace/executeCommand'.
COMMAND is a symbol naming the command."
- (jsonrpc-request server :workspace/executeCommand
- `(:command ,(format "%s" command) :arguments ,arguments)))
+ (eglot--request server :workspace/executeCommand
+ `(:command ,(format "%s" command) :arguments ,arguments)))
(cl-defmethod eglot-handle-notification
(_server (_method (eql window/showMessage)) &key type message)
@@ -2134,13 +2180,14 @@ COMMAND is a symbol naming the command."
type message))
(cl-defmethod eglot-handle-request
- (_server (_method (eql window/showMessageRequest)) &key type message actions)
+ (_server (_method (eql window/showMessageRequest))
+ &key type message actions &allow-other-keys)
"Handle server request window/showMessageRequest."
(let* ((actions (append actions nil)) ;; gh#627
(label (completing-read
(concat
(format (propertize "[eglot] Server reports (type=%s): %s"
- 'face (if (<= type 1) 'error))
+ 'face (if (or (not type) (<= type 1)) 'error))
type message)
"\nChoose an option: ")
(or (mapcar (lambda (obj) (plist-get obj :title)) actions)
@@ -2156,28 +2203,39 @@ COMMAND is a symbol naming the command."
(_server (_method (eql telemetry/event)) &rest _any)
"Handle notification telemetry/event.") ;; noop, use events buffer
+(defalias 'eglot--reporter-update
+ (if (> emacs-major-version 26) #'progress-reporter-update
+ (lambda (a b &optional _c) (progress-reporter-update a b))))
+
(cl-defmethod eglot-handle-notification
(server (_method (eql $/progress)) &key token value)
"Handle $/progress notification identified by TOKEN from SERVER."
(when eglot-report-progress
(cl-flet ((fmt (&rest args) (mapconcat #'identity args " "))
+ (mkpr (title)
+ (if (eq eglot-report-progress 'messages)
+ (make-progress-reporter
+ (format "[eglot] %s %s: %s"
+ (eglot-project-nickname server) token title))
+ (list 'eglot--mode-line-reporter token title)))
(upd (pcnt msg &optional
(pr (gethash token (eglot--progress-reporters server))))
- (when pr (progress-reporter-update pr pcnt msg))))
+ (cond
+ ((eq (car pr) 'eglot--mode-line-reporter)
+ (setcdr (cddr pr) (list msg pcnt))
+ (force-mode-line-update t))
+ (pr (progress-reporter-update pr pcnt msg)))))
(eglot--dbind ((WorkDoneProgress) kind title percentage message) value
(pcase kind
("begin"
- (let ((prefix (format (concat "[eglot] %s %s:" (when percentage " "))
- (eglot-project-nickname server) token)))
- (upd percentage (fmt title message)
- (puthash token
- (if percentage
- (make-progress-reporter prefix 0 100 percentage 1 0)
- (make-progress-reporter prefix nil nil nil 1 0))
- (eglot--progress-reporters server)))))
- ("report" (upd percentage (fmt title message)))
- ("end" (upd (or percentage 100) (fmt title message))
- (remhash token (eglot--progress-reporters server))))))))
+ (upd percentage (fmt title message)
+ (puthash token (mkpr title)
+ (eglot--progress-reporters server))))
+ ("report" (upd percentage message))
+ ("end" (upd (or percentage 100) message)
+ (run-at-time 2 nil
+ (lambda ()
+ (remhash token (eglot--progress-reporters server))))))))))
(cl-defmethod eglot-handle-notification
(_server (_method (eql textDocument/publishDiagnostics)) &key uri diagnostics
@@ -2194,7 +2252,7 @@ COMMAND is a symbol naming the command."
(buffer (find-buffer-visiting path)))
(with-current-buffer buffer
(cl-loop
- initially (assoc-delete-all path flymake-list-only-diagnostics #'string=)
+ initially (assoc-delete-all path flymake-list-only-diagnostics)
for diag-spec across diagnostics
collect (eglot--dbind ((Diagnostic) range code message severity source tags)
diag-spec
@@ -2248,7 +2306,7 @@ COMMAND is a symbol naming the command."
into diags
finally
(setq flymake-list-only-diagnostics
- (assoc-delete-all path flymake-list-only-diagnostics #'string=))
+ (assoc-delete-all path flymake-list-only-diagnostics))
(push (cons path diags) flymake-list-only-diagnostics)))))
(cl-defun eglot--register-unregister (server things how)
@@ -2303,7 +2361,7 @@ THINGS are either registrations or unregisterations (sic)."
(append
(eglot--VersionedTextDocumentIdentifier)
(list :languageId
- (eglot--language-id (eglot--current-server-or-lose))
+ (alist-get major-mode (eglot--languages (eglot--current-server-or-lose)))
:text
(eglot--widening
(buffer-substring-no-properties (point-min) (point-max))))))
@@ -2416,16 +2474,6 @@ Records BEG, END and PRE-CHANGE-LENGTH locally."
(run-hooks 'eglot--document-changed-hook)
(setq eglot--change-idle-timer nil))))))))
-;; HACK! Launching a deferred sync request with outstanding changes is a
-;; bad idea, since that might lead to the request never having a
-;; chance to run, because `jsonrpc-connection-ready-p'.
-(advice-add #'jsonrpc-request :before
- (cl-function (lambda (_proc _method _params &key
- deferred &allow-other-keys)
- (when (and eglot--managed-mode deferred)
- (eglot--signal-textDocument/didChange))))
- '((name . eglot--signal-textDocument/didChange)))
-
(defvar-local eglot-workspace-configuration ()
"Configure LSP servers specifically for a given project.
@@ -2578,8 +2626,8 @@ When called interactively, use the currently active server"
(when (eglot--server-capable :textDocumentSync :willSaveWaitUntil)
(ignore-errors
(eglot--apply-text-edits
- (jsonrpc-request server :textDocument/willSaveWaitUntil params
- :timeout 0.5))))))
+ (eglot--request server :textDocument/willSaveWaitUntil params
+ :timeout 0.5))))))
(defun eglot--signal-textDocument/didSave ()
"Maybe send textDocument/didSave to server."
@@ -2691,8 +2739,8 @@ If BUFFER, switch to it before."
(propertize (alist-get kind eglot--symbol-kind-names "Unknown")
'face 'shadow))
'eglot--lsp-workspaceSymbol wss)))
- (jsonrpc-request (eglot--current-server-or-lose) :workspace/symbol
- `(:query ,pat)))))
+ (eglot--request (eglot--current-server-or-lose) :workspace/symbol
+ `(:query ,pat)))))
(cl-defmethod xref-backend-identifier-completion-table ((_backend (eql eglot)))
"Yet another tricky connection between LSP and Elisp completion semantics."
@@ -2748,7 +2796,7 @@ If BUFFER, switch to it before."
(cadr (split-string (symbol-name method)
"/"))))))
(let ((response
- (jsonrpc-request
+ (eglot--request
(eglot--current-server-or-lose)
method (append (eglot--TextDocumentPositionParams) extra-params))))
(eglot--collecting-xrefs (collect)
@@ -2811,9 +2859,9 @@ If BUFFER, switch to it before."
(eglot--lambda ((SymbolInformation) name location)
(eglot--dbind ((Location) uri range) location
(collect (eglot--xref-make-match name uri range))))
- (jsonrpc-request (eglot--current-server-or-lose)
- :workspace/symbol
- `(:query ,pattern))))))
+ (eglot--request (eglot--current-server-or-lose)
+ :workspace/symbol
+ `(:query ,pattern))))))
(defun eglot-format-buffer ()
"Format contents of current buffer."
@@ -2845,7 +2893,7 @@ for which LSP on-type-formatting should be requested."
'(:textDocument/formatting :documentFormattingProvider nil)))))
(eglot--server-capable-or-lose cap)
(eglot--apply-text-edits
- (jsonrpc-request
+ (eglot--request
(eglot--current-server-or-lose)
method
(cl-list*
@@ -2854,8 +2902,14 @@ for which LSP on-type-formatting should be requested."
:insertSpaces (if indent-tabs-mode :json-false t)
:insertFinalNewline (if require-final-newline t :json-false)
:trimFinalNewlines (if delete-trailing-lines t :json-false))
- args)
- :deferred method))))
+ args)))))
+
+(defvar eglot-cache-session-completions t
+ "If non-nil Eglot caches data during completion sessions.")
+
+(defvar eglot--capf-session :none "A cache used by `eglot-completion-at-point'.")
+
+(defun eglot--capf-session-flush (&optional _) (setq eglot--capf-session :none))
(defun eglot-completion-at-point ()
"Eglot's `completion-at-point' function."
@@ -2872,41 +2926,50 @@ for which LSP on-type-formatting should be requested."
:sortText)))))
(metadata `(metadata (category . eglot)
(display-sort-function . ,sort-completions)))
- resp items (cached-proxies :none)
+ (local-cache :none)
+ (bounds (bounds-of-thing-at-point 'symbol))
+ (orig-pos (point))
+ (resolved (make-hash-table))
(proxies
(lambda ()
- (if (listp cached-proxies) cached-proxies
- (setq resp
- (jsonrpc-request server
- :textDocument/completion
- (eglot--CompletionParams)
- :deferred :textDocument/completion
- :cancel-on-input t))
- (setq items (append
- (if (vectorp resp) resp (plist-get resp :items))
- nil))
- (setq cached-proxies
- (mapcar
- (jsonrpc-lambda
- (&rest item &key label insertText insertTextFormat
- textEdit &allow-other-keys)
- (let ((proxy
- ;; Snippet or textEdit, it's safe to
- ;; display/insert the label since
- ;; it'll be adjusted. If no usable
- ;; insertText at all, label is best,
- ;; too.
- (cond ((or (eql insertTextFormat 2)
- textEdit
- (null insertText)
- (string-empty-p insertText))
- (string-trim-left label))
- (t insertText))))
- (unless (zerop (length proxy))
- (put-text-property 0 1 'eglot--lsp-item item proxy))
- proxy))
- items)))))
- (resolved (make-hash-table))
+ (if (listp local-cache) local-cache
+ (let* ((resp (eglot--request server
+ :textDocument/completion
+ (eglot--CompletionParams)
+ :cancel-on-input t))
+ (items (append
+ (if (vectorp resp) resp (plist-get resp :items))
+ nil))
+ (cachep (and (listp resp) items
+ eglot-cache-session-completions
+ (eq (plist-get resp :isIncomplete) :json-false)))
+ (bounds (or bounds
+ (cons (point) (point))))
+ (proxies
+ (mapcar
+ (jsonrpc-lambda
+ (&rest item &key label insertText insertTextFormat
+ textEdit &allow-other-keys)
+ (let ((proxy
+ ;; Snippet or textEdit, it's safe to
+ ;; display/insert the label since
+ ;; it'll be adjusted. If no usable
+ ;; insertText at all, label is best,
+ ;; too.
+ (cond ((or (eql insertTextFormat 2)
+ textEdit
+ (null insertText)
+ (string-empty-p insertText))
+ (string-trim-left label))
+ (t insertText))))
+ (unless (zerop (length proxy))
+ (put-text-property 0 1 'eglot--lsp-item item proxy))
+ proxy))
+ items)))
+ ;; (trace-values "Requested" (length proxies) cachep bounds)
+ (setq eglot--capf-session
+ (if cachep (list bounds proxies resolved orig-pos) :none))
+ (setq local-cache proxies)))))
(resolve-maybe
;; Maybe completion/resolve JSON object `lsp-comp' into
;; another JSON object, if at all possible. Otherwise,
@@ -2917,13 +2980,21 @@ for which LSP on-type-formatting should be requested."
(if (and (eglot--server-capable :completionProvider
:resolveProvider)
(plist-get lsp-comp :data))
- (jsonrpc-request server :completionItem/resolve
- lsp-comp :cancel-on-input t)
- lsp-comp)))))
- (bounds (bounds-of-thing-at-point 'symbol)))
+ (eglot--request server :completionItem/resolve
+ lsp-comp :cancel-on-input t)
+ lsp-comp))))))
+ (unless bounds (setq bounds (cons (point) (point))))
+ (when (and (consp eglot--capf-session)
+ (= (car bounds) (car (nth 0 eglot--capf-session)))
+ (>= (cdr bounds) (cdr (nth 0 eglot--capf-session))))
+ (setq local-cache (nth 1 eglot--capf-session)
+ resolved (nth 2 eglot--capf-session)
+ orig-pos (nth 3 eglot--capf-session))
+ ;; (trace-values "Recalling cache" (length local-cache) bounds orig-pos)
+ )
(list
- (or (car bounds) (point))
- (or (cdr bounds) (point))
+ (car bounds)
+ (cdr bounds)
(lambda (probe pred action)
(cond
((eq action 'metadata) metadata) ; metadata
@@ -2994,7 +3065,7 @@ for which LSP on-type-formatting should be requested."
:company-require-match 'never
:company-prefix-length
(save-excursion
- (when (car bounds) (goto-char (car bounds)))
+ (goto-char (car bounds))
(when (listp completion-capability)
(looking-back
(regexp-opt
@@ -3002,6 +3073,7 @@ for which LSP on-type-formatting should be requested."
(eglot--bol))))
:exit-function
(lambda (proxy status)
+ (eglot--capf-session-flush)
(when (memq status '(finished exact))
;; To assist in using this whole `completion-at-point'
;; function inside `completion-in-region', ensure the exit
@@ -3025,17 +3097,12 @@ for which LSP on-type-formatting should be requested."
(let ((snippet-fn (and (eql insertTextFormat 2)
(eglot--snippet-expansion-fn))))
(cond (textEdit
- ;; Undo (yes, undo) the newly inserted completion.
- ;; If before completion the buffer was "foo.b" and
- ;; now is "foo.bar", `proxy' will be "bar". We
- ;; want to delete only "ar" (`proxy' minus the
- ;; symbol whose bounds we've calculated before)
- ;; (github#160).
- (delete-region (+ (- (point) (length proxy))
- (if bounds
- (- (cdr bounds) (car bounds))
- 0))
- (point))
+ ;; Revert buffer back to state when the edit
+ ;; was obtained from server. If a `proxy'
+ ;; "bar" was obtained from a buffer with
+ ;; "foo.b", the LSP edit applies to that'
+ ;; state, _not_ the current "foo.bar".
+ (delete-region orig-pos (point))
(eglot--dbind ((TextEdit) range newText) textEdit
(pcase-let ((`(,beg . ,end)
(eglot--range-region range)))
@@ -3058,62 +3125,56 @@ for which LSP on-type-formatting should be requested."
(mapconcat #'eglot--format-markup
(if (vectorp contents) contents (list contents)) "\n"))
-(defun eglot--sig-info (sigs active-sig sig-help-active-param)
- (cl-loop
- for (sig . moresigs) on (append sigs nil) for i from 0
- concat
- (eglot--dbind ((SignatureInformation) label documentation parameters activeParameter) sig
- (with-temp-buffer
- (save-excursion (insert label))
- (let ((active-param (or activeParameter sig-help-active-param))
- params-start params-end)
- ;; Ad-hoc attempt to parse label as <name>(<params>)
- (when (looking-at "\\([^(]*\\)(\\([^)]+\\))")
- (setq params-start (match-beginning 2) params-end (match-end 2))
- (add-face-text-property (match-beginning 1) (match-end 1)
- 'font-lock-function-name-face))
- (when (eql i active-sig)
- ;; Decide whether to add one-line-summary to signature line
- (when (and (stringp documentation)
- (string-match "[[:space:]]*\\([^.\r\n]+[.]?\\)"
- documentation))
- (setq documentation (match-string 1 documentation))
- (unless (string-prefix-p (string-trim documentation) label)
- (goto-char (point-max))
- (insert ": " (eglot--format-markup documentation))))
- ;; Decide what to do with the active parameter...
- (when (and (eql i active-sig) active-param
- (< -1 active-param (length parameters)))
- (eglot--dbind ((ParameterInformation) label documentation)
- (aref parameters active-param)
- ;; ...perhaps highlight it in the formals list
- (when params-start
- (goto-char params-start)
- (pcase-let
- ((`(,beg ,end)
- (if (stringp label)
- (let ((case-fold-search nil))
- (and (re-search-forward
- (concat "\\<" (regexp-quote label) "\\>")
- params-end t)
- (list (match-beginning 0) (match-end 0))))
- (mapcar #'1+ (append label nil)))))
- (if (and beg end)
- (add-face-text-property
- beg end
- 'eldoc-highlight-function-argument))))
- ;; ...and/or maybe add its doc on a line by its own.
- (when documentation
- (goto-char (point-max))
- (insert "\n"
- (propertize
- (if (stringp label)
- label
- (apply #'buffer-substring (mapcar #'1+ label)))
- 'face 'eldoc-highlight-function-argument)
- ": " (eglot--format-markup documentation))))))
- (buffer-string))))
- when moresigs concat "\n"))
+(defun eglot--sig-info (sig &optional sig-active briefp)
+ (eglot--dbind ((SignatureInformation)
+ ((:label siglabel))
+ ((:documentation sigdoc)) parameters activeParameter)
+ sig
+ (with-temp-buffer
+ (save-excursion (insert siglabel))
+ ;; Ad-hoc attempt to parse label as <name>(<params>)
+ (when (looking-at "\\([^(]*\\)(\\([^)]+\\))")
+ (add-face-text-property (match-beginning 1) (match-end 1)
+ 'font-lock-function-name-face))
+ ;; Add documentation, indented so we can distinguish multiple signatures
+ (when-let (doc (and (not briefp) sigdoc (eglot--format-markup sigdoc)))
+ (goto-char (point-max))
+ (insert "\n" (replace-regexp-in-string "^" " " doc)))
+ ;; Now to the parameters
+ (cl-loop
+ with active-param = (or sig-active activeParameter)
+ for i from 0 for parameter across parameters do
+ (eglot--dbind ((ParameterInformation)
+ ((:label parlabel))
+ ((:documentation pardoc)))
+ parameter
+ ;; ...perhaps highlight it in the formals list
+ (when (and (eq i active-param))
+ (save-excursion
+ (goto-char (point-min))
+ (pcase-let
+ ((`(,beg ,end)
+ (if (stringp parlabel)
+ (let ((case-fold-search nil))
+ (and (search-forward parlabel (line-end-position) t)
+ (list (match-beginning 0) (match-end 0))))
+ (mapcar #'1+ (append parlabel nil)))))
+ (if (and beg end)
+ (add-face-text-property
+ beg end
+ 'eldoc-highlight-function-argument)))))
+ ;; ...and/or maybe add its doc on a line by its own.
+ (let (fpardoc)
+ (when (and pardoc (not briefp)
+ (not (string-empty-p
+ (setq fpardoc (eglot--format-markup pardoc)))))
+ (insert "\n "
+ (propertize
+ (if (stringp parlabel) parlabel
+ (apply #'substring siglabel (mapcar #'1+ parlabel)))
+ 'face (and (eq i active-param) 'eldoc-highlight-function-argument))
+ ": " fpardoc)))))
+ (buffer-string))))
(defun eglot-signature-eldoc-function (cb)
"A member of `eldoc-documentation-functions', for signatures."
@@ -3124,13 +3185,18 @@ for which LSP on-type-formatting should be requested."
:textDocument/signatureHelp (eglot--TextDocumentPositionParams)
:success-fn
(eglot--lambda ((SignatureHelp)
- signatures activeSignature activeParameter)
+ signatures activeSignature (activeParameter 0))
(eglot--when-buffer-window buf
- (funcall cb
- (unless (seq-empty-p signatures)
- (eglot--sig-info signatures
- activeSignature
- activeParameter)))))
+ (let ((active-sig (and (cl-plusp (length signatures))
+ (aref signatures (or activeSignature 0)))))
+ (if (not active-sig) (funcall cb nil)
+ (funcall
+ cb (mapconcat (lambda (s)
+ (eglot--sig-info s (and (eq s active-sig)
+ activeParameter)
+ nil))
+ signatures "\n")
+ :echo (eglot--sig-info active-sig activeParameter t))))))
:deferred :textDocument/signatureHelp))
t))
@@ -3145,7 +3211,8 @@ for which LSP on-type-formatting should be requested."
(eglot--when-buffer-window buf
(let ((info (unless (seq-empty-p contents)
(eglot--hover-info contents range))))
- (funcall cb info :buffer t))))
+ (funcall cb info
+ :echo (and info (string-match "\n" info))))))
:deferred :textDocument/hover))
(eglot--highlight-piggyback cb)
t))
@@ -3179,49 +3246,55 @@ for which LSP on-type-formatting should be requested."
:deferred :textDocument/documentHighlight)
nil)))
+(defun eglot--imenu-SymbolInformation (res)
+ "Compute `imenu--index-alist' for RES vector of SymbolInformation."
+ (mapcar
+ (pcase-lambda (`(,kind . ,objs))
+ (cons
+ (alist-get kind eglot--symbol-kind-names "Unknown")
+ (mapcan
+ (pcase-lambda (`(,container . ,objs))
+ (let ((elems (mapcar
+ (eglot--lambda ((SymbolInformation) kind name location)
+ (let ((reg (eglot--range-region
+ (plist-get location :range)))
+ (kind (alist-get kind eglot--symbol-kind-names)))
+ (cons (propertize name
+ 'breadcrumb-region reg
+ 'breadcrumb-kind kind)
+ (car reg))))
+ objs)))
+ (if container (list (cons container elems)) elems)))
+ (seq-group-by
+ (eglot--lambda ((SymbolInformation) containerName) containerName) objs))))
+ (seq-group-by (eglot--lambda ((SymbolInformation) kind) kind) res)))
+
+(defun eglot--imenu-DocumentSymbol (res)
+ "Compute `imenu--index-alist' for RES vector of DocumentSymbol."
+ (cl-labels ((dfs (&key name children range kind &allow-other-keys)
+ (let* ((reg (eglot--range-region range))
+ (kind (alist-get kind eglot--symbol-kind-names))
+ (name (propertize name
+ 'breadcrumb-region reg
+ 'breadcrumb-kind kind)))
+ (if (seq-empty-p children)
+ (cons name (car reg))
+ (cons name
+ (mapcar (lambda (c) (apply #'dfs c)) children))))))
+ (mapcar (lambda (s) (apply #'dfs s)) res)))
+
(defun eglot-imenu ()
"Eglot's `imenu-create-index-function'.
Returns a list as described in docstring of `imenu--index-alist'."
- (cl-labels
- ((unfurl (obj)
- (eglot--dcase obj
- (((SymbolInformation)) (list obj))
- (((DocumentSymbol) name children)
- (cons obj
- (mapcar
- (lambda (c)
- (plist-put
- c :containerName
- (let ((existing (plist-get c :containerName)))
- (if existing (format "%s::%s" name existing)
- name))))
- (mapcan #'unfurl children)))))))
- (mapcar
- (pcase-lambda (`(,kind . ,objs))
- (cons
- (alist-get kind eglot--symbol-kind-names "Unknown")
- (mapcan (pcase-lambda (`(,container . ,objs))
- (let ((elems (mapcar
- (lambda (obj)
- (cons (plist-get obj :name)
- (car (eglot--range-region
- (eglot--dcase obj
- (((SymbolInformation) location)
- (plist-get location :range))
- (((DocumentSymbol) selectionRange)
- selectionRange))))))
- objs)))
- (if container (list (cons container elems)) elems)))
- (seq-group-by
- (lambda (e) (plist-get e :containerName)) objs))))
- (seq-group-by
- (lambda (obj) (plist-get obj :kind))
- (mapcan #'unfurl
- (jsonrpc-request (eglot--current-server-or-lose)
- :textDocument/documentSymbol
- `(:textDocument
- ,(eglot--TextDocumentIdentifier))
- :cancel-on-input non-essential))))))
+ (let* ((res (eglot--request (eglot--current-server-or-lose)
+ :textDocument/documentSymbol
+ `(:textDocument
+ ,(eglot--TextDocumentIdentifier))
+ :cancel-on-input non-essential))
+ (head (and res (elt res 0))))
+ (eglot--dcase head
+ (((SymbolInformation)) (eglot--imenu-SymbolInformation res))
+ (((DocumentSymbol)) (eglot--imenu-DocumentSymbol res)))))
(cl-defun eglot--apply-text-edits (edits &optional version)
"Apply EDITS for current buffer if at VERSION, or if it's nil."
@@ -3292,9 +3365,9 @@ Returns a list as described in docstring of `imenu--index-alist'."
(symbol-name (symbol-at-point)))))
(eglot--server-capable-or-lose :renameProvider)
(eglot--apply-workspace-edit
- (jsonrpc-request (eglot--current-server-or-lose)
- :textDocument/rename `(,@(eglot--TextDocumentPositionParams)
- :newName ,newname))
+ (eglot--request (eglot--current-server-or-lose)
+ :textDocument/rename `(,@(eglot--TextDocumentPositionParams)
+ :newName ,newname))
current-prefix-arg))
(defun eglot--region-bounds ()
@@ -3320,7 +3393,7 @@ at point. With prefix argument, prompt for ACTION-KIND."
(eglot--server-capable-or-lose :codeActionProvider)
(let* ((server (eglot--current-server-or-lose))
(actions
- (jsonrpc-request
+ (eglot--request
server
:textDocument/codeAction
(list :textDocument (eglot--TextDocumentIdentifier)
@@ -3332,8 +3405,7 @@ at point. With prefix argument, prompt for ACTION-KIND."
when (cdr (assoc 'eglot-lsp-diag
(eglot--diag-data diag)))
collect it)]
- ,@(when action-kind `(:only [,action-kind]))))
- :deferred t))
+ ,@(when action-kind `(:only [,action-kind]))))))
;; Redo filtering, in case the `:only' didn't go through.
(actions (cl-loop for a across actions
when (or (not action-kind)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index 6fbb87fa3a8..45e3848362e 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -944,6 +944,10 @@ namespace but with lower confidence."
cl-defmethod cl-defgeneric)))
;; (defun FUNC (... IDENT
'variable)
+ ((and (eql j 2)
+ (eq j-head 'defclass))
+ ;; (defclass CLASS (... IDENT
+ 'function)
((eq j-head 'cond)
;; (cond ... (... IDENT
'variable)
diff --git a/lisp/progmodes/elixir-ts-mode.el b/lisp/progmodes/elixir-ts-mode.el
new file mode 100644
index 00000000000..c58854c41c3
--- /dev/null
+++ b/lisp/progmodes/elixir-ts-mode.el
@@ -0,0 +1,681 @@
+;;; elixir-ts-mode.el --- Major mode for Elixir with tree-sitter support -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
+
+;; Author: Wilhelm H Kirschbaum <wkirschbaum@gmail.com>
+;; Created: November 2022
+;; Keywords: elixir languages tree-sitter
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package provides `elixir-ts-mode' which is a major mode for editing
+;; Elixir files and embedded HEEx templates that uses Tree Sitter to parse
+;; the language.
+;;
+;; This package is compatible with and was tested against the tree-sitter grammar
+;; for Elixir found at https://github.com/elixir-lang/tree-sitter-elixir.
+;;
+;; Features
+;;
+;; * Indent
+;;
+;; `elixir-ts-mode' tries to replicate the indentation provided by
+;; mix format, but will come with some minor differences.
+;;
+;; * IMenu
+;; * Navigation
+;; * Which-fun
+
+;;; Code:
+
+(require 'treesit)
+(eval-when-compile (require 'rx))
+
+(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-node-child "treesit.c")
+(declare-function treesit-node-type "treesit.c")
+(declare-function treesit-node-child-by-field-name "treesit.c")
+(declare-function treesit-parser-language "treesit.c")
+(declare-function treesit-parser-included-ranges "treesit.c")
+(declare-function treesit-parser-list "treesit.c")
+(declare-function treesit-node-parent "treesit.c")
+(declare-function treesit-node-start "treesit.c")
+(declare-function treesit-node-end "treesit.c")
+(declare-function treesit-query-compile "treesit.c")
+(declare-function treesit-query-capture "treesit.c")
+(declare-function treesit-node-eq "treesit.c")
+(declare-function treesit-node-prev-sibling "treesit.c")
+
+(defgroup elixir-ts nil
+ "Major mode for editing Elixir code."
+ :prefix "elixir-ts-"
+ :group 'languages)
+
+(defcustom elixir-ts-indent-offset 2
+ "Indentation of Elixir statements."
+ :version "30.1"
+ :type 'integer
+ :safe 'integerp
+ :group 'elixir-ts)
+
+(defface elixir-ts-font-comment-doc-identifier-face
+ '((t (:inherit font-lock-doc-face)))
+ "Face used for @comment.doc tags in Elixir files.")
+
+(defface elixir-ts-font-comment-doc-attribute-face
+ '((t (:inherit font-lock-doc-face)))
+ "Face used for @comment.doc.__attribute__ tags in Elixir files.")
+
+(defface elixir-ts-font-sigil-name-face
+ '((t (:inherit font-lock-string-face)))
+ "Face used for @__name__ tags in Elixir files.")
+
+(defconst elixir-ts--sexp-regexp
+ (rx bol
+ (or "call" "stab_clause" "binary_operator" "list" "tuple" "map" "pair"
+ "sigil" "string" "atom" "alias" "arguments" "identifier"
+ "boolean" "quoted_content")
+ eol))
+
+(defconst elixir-ts--test-definition-keywords
+ '("describe" "test"))
+
+(defconst elixir-ts--definition-keywords
+ '("def" "defdelegate" "defexception" "defguard" "defguardp"
+ "defimpl" "defmacro" "defmacrop" "defmodule" "defn" "defnp"
+ "defoverridable" "defp" "defprotocol" "defstruct"))
+
+(defconst elixir-ts--definition-keywords-re
+ (concat "^" (regexp-opt elixir-ts--definition-keywords) "$"))
+
+(defconst elixir-ts--kernel-keywords
+ '("alias" "case" "cond" "else" "for" "if" "import" "quote"
+ "raise" "receive" "require" "reraise" "super" "throw" "try"
+ "unless" "unquote" "unquote_splicing" "use" "with"))
+
+(defconst elixir-ts--kernel-keywords-re
+ (concat "^" (regexp-opt elixir-ts--kernel-keywords) "$"))
+
+(defconst elixir-ts--builtin-keywords
+ '("__MODULE__" "__DIR__" "__ENV__" "__CALLER__" "__STACKTRACE__"))
+
+(defconst elixir-ts--builtin-keywords-re
+ (concat "^" (regexp-opt elixir-ts--builtin-keywords) "$"))
+
+(defconst elixir-ts--doc-keywords
+ '("moduledoc" "typedoc" "doc"))
+
+(defconst elixir-ts--doc-keywords-re
+ (concat "^" (regexp-opt elixir-ts--doc-keywords) "$"))
+
+(defconst elixir-ts--reserved-keywords
+ '("when" "and" "or" "not" "in"
+ "not in" "fn" "do" "end" "catch" "rescue" "after" "else"))
+
+(defconst elixir-ts--reserved-keywords-re
+ (concat "^" (regexp-opt elixir-ts--reserved-keywords) "$"))
+
+(defconst elixir-ts--reserved-keywords-vector
+ (apply #'vector elixir-ts--reserved-keywords))
+
+(defvar elixir-ts--capture-anonymous-function-end
+ (when (treesit-available-p)
+ (treesit-query-compile 'elixir '((anonymous_function "end" @end)))))
+
+(defvar elixir-ts--capture-operator-parent
+ (when (treesit-available-p)
+ (treesit-query-compile 'elixir '((binary_operator operator: _ @val)))))
+
+(defvar elixir-ts--syntax-table
+ (let ((table (make-syntax-table)))
+ (modify-syntax-entry ?| "." table)
+ (modify-syntax-entry ?- "." table)
+ (modify-syntax-entry ?+ "." table)
+ (modify-syntax-entry ?* "." table)
+ (modify-syntax-entry ?/ "." table)
+ (modify-syntax-entry ?< "." table)
+ (modify-syntax-entry ?> "." table)
+ (modify-syntax-entry ?_ "_" table)
+ (modify-syntax-entry ?? "w" table)
+ (modify-syntax-entry ?~ "w" table)
+ (modify-syntax-entry ?! "_" table)
+ (modify-syntax-entry ?' "\"" table)
+ (modify-syntax-entry ?\" "\"" table)
+ (modify-syntax-entry ?# "<" table)
+ (modify-syntax-entry ?\n ">" table)
+ (modify-syntax-entry ?\( "()" table)
+ (modify-syntax-entry ?\) ")(" table)
+ (modify-syntax-entry ?\{ "(}" table)
+ (modify-syntax-entry ?\} "){" table)
+ (modify-syntax-entry ?\[ "(]" table)
+ (modify-syntax-entry ?\] ")[" table)
+ (modify-syntax-entry ?: "'" table)
+ (modify-syntax-entry ?@ "'" table)
+ table)
+ "Syntax table for `elixir-ts-mode'.")
+
+(defun elixir-ts--argument-indent-offset (node _parent &rest _)
+ "Return the argument offset position for NODE."
+ (if (or (treesit-node-prev-sibling node t)
+ ;; Don't indent if this is the first node or
+ ;; if the line is empty.
+ (save-excursion
+ (beginning-of-line)
+ (looking-at-p "[[:blank:]]*$")))
+ 0 elixir-ts-indent-offset))
+
+(defun elixir-ts--argument-indent-anchor (node parent &rest _)
+ "Return the argument anchor position for NODE and PARENT."
+ (let ((first-sibling (treesit-node-child parent 0 t)))
+ (if (and first-sibling (not (treesit-node-eq first-sibling node)))
+ (treesit-node-start first-sibling)
+ (elixir-ts--parent-expression-start node parent))))
+
+(defun elixir-ts--parent-expression-start (_node parent &rest _)
+ "Return the indentation expression start for NODE and PARENT."
+ ;; If the parent is the first expression on the line return the
+ ;; parent start of node position, otherwise use the parent call
+ ;; start if available.
+ (if (eq (treesit-node-start parent)
+ (save-excursion
+ (goto-char (treesit-node-start parent))
+ (back-to-indentation)
+ (point)))
+ (treesit-node-start parent)
+ (let ((expr-parent
+ (treesit-parent-until
+ parent
+ (lambda (n)
+ (member (treesit-node-type n)
+ '("call" "binary_operator" "keywords" "list"))))))
+ (save-excursion
+ (goto-char (treesit-node-start expr-parent))
+ (back-to-indentation)
+ (if (looking-at "|>")
+ (point)
+ (treesit-node-start expr-parent))))))
+
+(defvar elixir-ts--indent-rules
+ (let ((offset elixir-ts-indent-offset))
+ `((elixir
+ ((parent-is "^source$") column-0 0)
+ ((parent-is "^string$") parent-bol 0)
+ ((parent-is "^quoted_content$")
+ (lambda (_n parent bol &rest _)
+ (save-excursion
+ (back-to-indentation)
+ (if (bolp)
+ (progn
+ (goto-char (treesit-node-start parent))
+ (back-to-indentation)
+ (point))
+ (point))))
+ 0)
+ ((node-is "^|>$") parent-bol 0)
+ ((node-is "^|$") parent-bol 0)
+ ((node-is "^]$") ,'elixir-ts--parent-expression-start 0)
+ ((node-is "^}$") ,'elixir-ts--parent-expression-start 0)
+ ((node-is "^)$") ,'elixir-ts--parent-expression-start 0)
+ ((node-is "^else_block$") grand-parent 0)
+ ((node-is "^catch_block$") grand-parent 0)
+ ((node-is "^rescue_block$") grand-parent 0)
+ ((node-is "^after_block$") grand-parent 0)
+ ((parent-is "^else_block$") parent ,offset)
+ ((parent-is "^catch_block$") parent ,offset)
+ ((parent-is "^rescue_block$") parent ,offset)
+ ((parent-is "^rescue_block$") parent ,offset)
+ ((parent-is "^after_block$") parent ,offset)
+ ((parent-is "^access_call$")
+ ,'elixir-ts--argument-indent-anchor
+ ,'elixir-ts--argument-indent-offset)
+ ((parent-is "^tuple$")
+ ,'elixir-ts--argument-indent-anchor
+ ,'elixir-ts--argument-indent-offset)
+ ((parent-is "^list$")
+ ,'elixir-ts--argument-indent-anchor
+ ,'elixir-ts--argument-indent-offset)
+ ((parent-is "^pair$") parent ,offset)
+ ((parent-is "^map_content$") parent-bol 0)
+ ((parent-is "^map$") ,'elixir-ts--parent-expression-start ,offset)
+ ((node-is "^stab_clause$") parent-bol ,offset)
+ ((query ,elixir-ts--capture-operator-parent) grand-parent 0)
+ ((node-is "^when$") parent 0)
+ ((node-is "^keywords$") parent-bol ,offset)
+ ((parent-is "^body$")
+ (lambda (node parent _)
+ (save-excursion
+ ;; The grammar adds a comment outside of the body, so we have to indent
+ ;; to the grand-parent if it is available.
+ (goto-char (treesit-node-start
+ (or (treesit-node-parent parent) (parent))))
+ (back-to-indentation)
+ (point)))
+ ,offset)
+ ((parent-is "^arguments$")
+ ,'elixir-ts--argument-indent-anchor
+ ,'elixir-ts--argument-indent-offset)
+ ;; Handle incomplete maps when parent is ERROR.
+ ((n-p-gp "^binary_operator$" "ERROR" nil) parent-bol 0)
+ ;; When there is an ERROR, just indent to prev-line.
+ ((parent-is "ERROR") prev-line ,offset)
+ ((node-is "^binary_operator$")
+ (lambda (node parent &rest _)
+ (let ((top-level
+ (treesit-parent-while
+ node
+ (lambda (node)
+ (equal (treesit-node-type node)
+ "binary_operator")))))
+ (if (treesit-node-eq top-level node)
+ (elixir-ts--parent-expression-start node parent)
+ (treesit-node-start top-level))))
+ (lambda (node parent _)
+ (cond
+ ((equal (treesit-node-type parent) "do_block")
+ ,offset)
+ ((equal (treesit-node-type parent) "binary_operator")
+ ,offset)
+ (t 0))))
+ ((parent-is "^binary_operator$")
+ (lambda (node parent bol &rest _)
+ (treesit-node-start
+ (treesit-parent-while
+ parent
+ (lambda (node)
+ (equal (treesit-node-type node) "binary_operator")))))
+ ,offset)
+ ((node-is "^pair$") first-sibling 0)
+ ((query ,elixir-ts--capture-anonymous-function-end) parent-bol 0)
+ ((node-is "^end$") standalone-parent 0)
+ ((parent-is "^do_block$") grand-parent ,offset)
+ ((parent-is "^anonymous_function$")
+ elixir-ts--treesit-anchor-grand-parent-bol ,offset)
+ ((parent-is "^else_block$") parent ,offset)
+ ((parent-is "^rescue_block$") parent ,offset)
+ ((parent-is "^catch_block$") parent ,offset)
+ ((parent-is "^keywords$") parent-bol 0)
+ ((node-is "^call$") parent-bol ,offset)
+ ((node-is "^comment$") parent-bol ,offset)))))
+
+(defvar elixir-ts--font-lock-settings
+ (treesit-font-lock-rules
+ :language 'elixir
+ :feature 'elixir-comment
+ '((comment) @font-lock-comment-face)
+
+ :language 'elixir
+ :feature 'elixir-string
+ :override t
+ '([(string) (charlist)] @font-lock-string-face)
+
+ :language 'elixir
+ :feature 'elixir-string-interpolation
+ :override t
+ '((string
+ [
+ quoted_end: _ @font-lock-string-face
+ quoted_start: _ @font-lock-string-face
+ (quoted_content) @font-lock-string-face
+ (interpolation
+ "#{" @font-lock-regexp-grouping-backslash "}"
+ @font-lock-regexp-grouping-backslash)
+ ])
+ (charlist
+ [
+ quoted_end: _ @font-lock-string-face
+ quoted_start: _ @font-lock-string-face
+ (quoted_content) @font-lock-string-face
+ (interpolation
+ "#{" @font-lock-regexp-grouping-backslash "}"
+ @font-lock-regexp-grouping-backslash)
+ ]))
+
+ :language 'elixir
+ :feature 'elixir-keyword
+ `(,elixir-ts--reserved-keywords-vector
+ @font-lock-keyword-face
+ (binary_operator
+ operator: _ @font-lock-keyword-face
+ (:match ,elixir-ts--reserved-keywords-re @font-lock-keyword-face)))
+
+ :language 'elixir
+ :feature 'elixir-doc
+ :override t
+ `((unary_operator
+ operator: "@" @elixir-ts-font-comment-doc-attribute-face
+ operand: (call
+ target: (identifier) @elixir-ts-font-comment-doc-identifier-face
+ ;; Arguments can be optional, so adding another
+ ;; entry without arguments.
+ ;; If we don't handle then we don't apply font
+ ;; and the non doc fortification query will take specify
+ ;; a more specific font which takes precedence.
+ (arguments
+ [
+ (string) @font-lock-doc-face
+ (charlist) @font-lock-doc-face
+ (sigil) @font-lock-doc-face
+ (boolean) @font-lock-doc-face
+ ]))
+ (:match ,elixir-ts--doc-keywords-re
+ @elixir-ts-font-comment-doc-identifier-face))
+ (unary_operator
+ operator: "@" @elixir-ts-font-comment-doc-attribute-face
+ operand: (call
+ target: (identifier) @elixir-ts-font-comment-doc-identifier-face)
+ (:match ,elixir-ts--doc-keywords-re
+ @elixir-ts-font-comment-doc-identifier-face)))
+
+ :language 'elixir
+ :feature 'elixir-unary-operator
+ `((unary_operator operator: "@" @font-lock-preprocessor-face
+ operand: [
+ (identifier) @font-lock-preprocessor-face
+ (call target: (identifier)
+ @font-lock-preprocessor-face)
+ (boolean) @font-lock-preprocessor-face
+ (nil) @font-lock-preprocessor-face
+ ])
+
+ (unary_operator operator: "&") @font-lock-function-name-face
+ (operator_identifier) @font-lock-operator-face)
+
+ :language 'elixir
+ :feature 'elixir-operator
+ '((binary_operator operator: _ @font-lock-operator-face)
+ (dot operator: _ @font-lock-operator-face)
+ (stab_clause operator: _ @font-lock-operator-face)
+
+ [(boolean) (nil)] @font-lock-constant-face
+ [(integer) (float)] @font-lock-number-face
+ (alias) @font-lock-type-face
+ (call target: (dot left: (atom) @font-lock-type-face))
+ (char) @font-lock-constant-face
+ [(atom) (quoted_atom)] @font-lock-type-face
+ [(keyword) (quoted_keyword)] @font-lock-builtin-face)
+
+ :language 'elixir
+ :feature 'elixir-call
+ `((call
+ target: (identifier) @font-lock-keyword-face
+ (:match ,elixir-ts--definition-keywords-re @font-lock-keyword-face))
+ (call
+ target: (identifier) @font-lock-keyword-face
+ (:match ,elixir-ts--kernel-keywords-re @font-lock-keyword-face))
+ (call
+ target: [(identifier) @font-lock-function-name-face
+ (dot right: (identifier) @font-lock-keyword-face)])
+ (call
+ target: (identifier) @font-lock-keyword-face
+ (arguments
+ [
+ (identifier) @font-lock-keyword-face
+ (binary_operator
+ left: (identifier) @font-lock-keyword-face
+ operator: "when")
+ ])
+ (:match ,elixir-ts--definition-keywords-re @font-lock-keyword-face))
+ (call
+ target: (identifier) @font-lock-keyword-face
+ (arguments
+ (binary_operator
+ operator: "|>"
+ right: (identifier)))
+ (:match ,elixir-ts--definition-keywords-re @font-lock-keyword-face)))
+
+ :language 'elixir
+ :feature 'elixir-constant
+ `((binary_operator operator: "|>" right: (identifier)
+ @font-lock-function-name-face)
+ ((identifier) @font-lock-keyword-face
+ (:match ,elixir-ts--builtin-keywords-re
+ @font-lock-keyword-face))
+ ((identifier) @font-lock-comment-face
+ (:match "^_" @font-lock-comment-face))
+ (identifier) @font-lock-function-name-face
+ ["%"] @font-lock-keyward-face
+ ["," ";"] @font-lock-keyword-face
+ ["(" ")" "[" "]" "{" "}" "<<" ">>"] @font-lock-keyword-face)
+
+ :language 'elixir
+ :feature 'elixir-sigil
+ :override t
+ `((sigil
+ (sigil_name) @elixir-ts-font-sigil-name-face
+ (:match "^[sSwWpPUD]$" @elixir-ts-font-sigil-name-face))
+ @font-lock-string-face
+ (sigil
+ "~" @font-lock-string-face
+ (sigil_name) @elixir-ts-font-sigil-name-face
+ (:match "^[rR]$" @elixir-ts-font-sigil-name-face))
+ @font-lock-regexp-face
+ (sigil
+ "~" @font-lock-string-face
+ (sigil_name) @elixir-ts-font-sigil-name-face
+ quoted_start: _ @font-lock-string-face
+ quoted_end: _ @font-lock-string-face
+ (:match "^[HF]$" @elixir-ts-font-sigil-name-face)))
+
+ :language 'elixir
+ :feature 'elixir-string-escape
+ :override t
+ `((escape_sequence) @font-lock-regexp-grouping-backslash))
+ "Tree-sitter font-lock settings.")
+
+(defvar elixir-ts--treesit-range-rules
+ (when (treesit-available-p)
+ (treesit-range-rules
+ :embed 'heex
+ :host 'elixir
+ '((sigil (sigil_name) @name (:match "^[HF]$" @name) (quoted_content) @heex)))))
+
+(defvar heex-ts--sexp-regexp)
+(defvar heex-ts--indent-rules)
+(defvar heex-ts--font-lock-settings)
+
+(defun elixir-ts--forward-sexp (&optional arg)
+ "Move forward across one balanced expression (sexp).
+With ARG, do it many times. Negative ARG means move backward."
+ (or arg (setq arg 1))
+ (funcall
+ (if (> arg 0) #'treesit-end-of-thing #'treesit-beginning-of-thing)
+ (if (eq (treesit-language-at (point)) 'heex)
+ heex-ts--sexp-regexp
+ elixir-ts--sexp-regexp)
+ (abs arg)))
+
+(defun elixir-ts--treesit-anchor-grand-parent-bol (_n parent &rest _)
+ "Return the beginning of non-space characters for the parent node of PARENT."
+ (save-excursion
+ (goto-char (treesit-node-start (treesit-node-parent parent)))
+ (back-to-indentation)
+ (point)))
+
+(defun elixir-ts--treesit-language-at-point (point)
+ "Return the language at POINT."
+ (let* ((range nil)
+ (language-in-range
+ (cl-loop
+ for parser in (treesit-parser-list)
+ do (setq range
+ (cl-loop
+ for range in (treesit-parser-included-ranges parser)
+ if (and (>= point (car range)) (<= point (cdr range)))
+ return parser))
+ if range
+ return (treesit-parser-language parser))))
+ (if (null language-in-range)
+ (when-let ((parser (car (treesit-parser-list))))
+ (treesit-parser-language parser))
+ language-in-range)))
+
+(defun elixir-ts--defun-p (node)
+ "Return non-nil when NODE is a defun."
+ (member (treesit-node-text
+ (treesit-node-child-by-field-name node "target"))
+ (append
+ elixir-ts--definition-keywords
+ elixir-ts--test-definition-keywords)))
+
+(defun elixir-ts--defun-name (node)
+ "Return the name of the defun NODE.
+Return nil if NODE is not a defun node or doesn't have a name."
+ (pcase (treesit-node-type node)
+ ("call" (let ((node-child
+ (treesit-node-child (treesit-node-child node 1) 0)))
+ (pcase (treesit-node-type node-child)
+ ("alias" (treesit-node-text node-child t))
+ ("call" (treesit-node-text
+ (treesit-node-child-by-field-name node-child "target") t))
+ ("binary_operator"
+ (treesit-node-text
+ (treesit-node-child-by-field-name
+ (treesit-node-child-by-field-name node-child "left") "target")
+ t))
+ ("identifier"
+ (treesit-node-text node-child t))
+ (_ nil))))
+ (_ nil)))
+
+(defvar elixir-ts--syntax-propertize-query
+ (when (treesit-available-p)
+ (treesit-query-compile
+ 'elixir
+ '(((["\"\"\""] @quoted-text))))))
+
+(defun elixir-ts--syntax-propertize (start end)
+ "Apply syntax text properties between START and END for `elixir-ts-mode'."
+ (let ((captures
+ (treesit-query-capture 'elixir elixir-ts--syntax-propertize-query start end)))
+ (pcase-dolist (`(,name . ,node) captures)
+ (pcase-exhaustive name
+ ('quoted-text
+ (put-text-property (1- (treesit-node-end node)) (treesit-node-end node)
+ 'syntax-table (string-to-syntax "$")))))))
+
+(defun elixir-ts--electric-pair-string-delimiter ()
+ "Insert corresponding multi-line string for `electric-pair-mode'."
+ (when (and electric-pair-mode
+ (eq last-command-event ?\")
+ (let ((count 0))
+ (while (eq (char-before (- (point) count)) last-command-event)
+ (cl-incf count))
+ (= count 3))
+ (eq (char-after) last-command-event))
+ (save-excursion
+ (insert (make-string 2 last-command-event)))
+ (save-excursion
+ (newline 1 t))))
+
+;;;###autoload
+(define-derived-mode elixir-ts-mode prog-mode "Elixir"
+ "Major mode for editing Elixir, powered by tree-sitter."
+ :group 'elixir-ts
+ :syntax-table elixir-ts--syntax-table
+
+ ;; Comments.
+ (setq-local comment-start "# ")
+ (setq-local comment-start-skip
+ (rx "#" (* (syntax whitespace))))
+
+ (setq-local comment-end "")
+ (setq-local comment-end-skip
+ (rx (* (syntax whitespace))
+ (group (or (syntax comment-end) "\n"))))
+
+ ;; Compile.
+ (setq-local compile-command "mix")
+
+ ;; Electric pair.
+ (add-hook 'post-self-insert-hook
+ #'elixir-ts--electric-pair-string-delimiter 'append t)
+
+ (when (treesit-ready-p 'elixir)
+ ;; The HEEx parser has to be created first for elixir to ensure elixir
+ ;; is the first language when looking for treesit ranges.
+ (when (treesit-ready-p 'heex)
+ ;; Require heex-ts-mode only when we load elixir-ts-mode
+ ;; so that we don't get a tree-sitter compilation warning for
+ ;; elixir-ts-mode.
+ (require 'heex-ts-mode)
+ (treesit-parser-create 'heex))
+
+ (treesit-parser-create 'elixir)
+
+ (setq-local treesit-language-at-point-function
+ 'elixir-ts--treesit-language-at-point)
+
+ ;; Font-lock.
+ (setq-local treesit-font-lock-settings elixir-ts--font-lock-settings)
+ (setq-local treesit-font-lock-feature-list
+ '(( elixir-comment elixir-constant elixir-doc )
+ ( elixir-string elixir-keyword elixir-unary-operator
+ elixir-call elixir-operator )
+ ( elixir-sigil elixir-string-escape elixir-string-interpolation)))
+
+ ;; Imenu.
+ (setq-local treesit-simple-imenu-settings
+ '((nil "\\`call\\'" elixir-ts--defun-p nil)))
+
+ ;; Indent.
+ (setq-local treesit-simple-indent-rules elixir-ts--indent-rules)
+
+ ;; Navigation.
+ (setq-local forward-sexp-function #'elixir-ts--forward-sexp)
+ (setq-local treesit-defun-type-regexp
+ '("call" . elixir-ts--defun-p))
+
+ (setq-local treesit-defun-name-function #'elixir-ts--defun-name)
+
+ ;; Embedded Heex.
+ (when (treesit-ready-p 'heex)
+ (setq-local treesit-range-settings elixir-ts--treesit-range-rules)
+
+ (setq-local treesit-simple-indent-rules
+ (append treesit-simple-indent-rules heex-ts--indent-rules))
+
+ (setq-local treesit-font-lock-settings
+ (append treesit-font-lock-settings
+ heex-ts--font-lock-settings))
+
+ (setq-local treesit-simple-indent-rules
+ (append treesit-simple-indent-rules
+ heex-ts--indent-rules))
+
+ (setq-local treesit-font-lock-feature-list
+ '(( elixir-comment elixir-constant elixir-doc
+ heex-comment heex-keyword heex-doctype )
+ ( elixir-string elixir-keyword elixir-unary-operator
+ elixir-call elixir-operator
+ heex-component heex-tag heex-attribute heex-string)
+ ( elixir-sigil elixir-string-escape
+ elixir-string-interpolation ))))
+
+ (treesit-major-mode-setup)
+ (setq-local syntax-propertize-function #'elixir-ts--syntax-propertize)))
+
+(if (treesit-ready-p 'elixir)
+ (progn
+ (add-to-list 'auto-mode-alist '("\\.elixir\\'" . elixir-ts-mode))
+ (add-to-list 'auto-mode-alist '("\\.ex\\'" . elixir-ts-mode))
+ (add-to-list 'auto-mode-alist '("\\.exs\\'" . elixir-ts-mode))
+ (add-to-list 'auto-mode-alist '("mix\\.lock" . elixir-ts-mode))))
+
+(provide 'elixir-ts-mode)
+
+;;; elixir-ts-mode.el ends here
diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 6f293acca5e..ac408145696 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -4,9 +4,9 @@
;; Author: Pavel Kobyakov <pk_at_work@yahoo.com>
;; Maintainer: João Távora <joaotavora@gmail.com>
-;; Version: 1.2.2
+;; Version: 1.3.4
;; Keywords: c languages tools
-;; Package-Requires: ((emacs "26.1") (eldoc "1.1.0") (project "0.7.1"))
+;; Package-Requires: ((emacs "26.1") (eldoc "1.14.0") (project "0.7.1"))
;; This is a GNU ELPA :core package. Avoid functionality that is not
;; compatible with the version of Emacs recorded above.
@@ -371,6 +371,20 @@ diagnostics at BEG."
(flymake--diag-accessor flymake-diagnostic-end flymake--diag-end end)
(flymake--diag-accessor flymake-diagnostic-buffer flymake--diag-locus locus)
+(defun flymake-diagnostic-oneliner (diag &optional nopaintp)
+ "Get truncated one-line text string for diagnostic DIAG.
+This is useful for displaying the DIAG's text to the user in
+confined spaces, such as the echo are. Unless NOPAINTP is t,
+propertize returned text with the `echo-face' property of DIAG's
+type."
+ (let* ((txt (flymake-diagnostic-text diag))
+ (txt (substring txt 0 (cl-loop for i from 0 for a across txt
+ when (eq a ?\n) return i))))
+ (if nopaintp txt
+ (propertize txt 'face
+ (flymake--lookup-type-property
+ (flymake-diagnostic-type diag) 'echo-face 'flymake-error)))))
+
(cl-defun flymake--overlays (&key beg end filter compare key)
"Get flymake-related overlays.
If BEG is non-nil and END is nil, consider only `overlays-at'
@@ -417,6 +431,26 @@ verify FILTER, a function, and sort them by COMPARE (using KEY)."
"Face used for marking note regions."
:version "26.1")
+(defface flymake-error-echo
+ '((t :inherit compilation-error))
+ "Face used for showing summarized descriptions of errors."
+ :package-version '(Flymake . "1.3.4"))
+
+(defface flymake-warning-echo
+ '((t :inherit compilation-warning))
+ "Face used for showing summarized descriptions of warnings."
+ :package-version '(Flymake . "1.3.4"))
+
+(defface flymake-note-echo
+ '((t :inherit flymake-note))
+ "Face used for showing summarized descriptions of notes."
+ :package-version '(Flymake . "1.3.4"))
+
+(defcustom flymake-show-diagnostics-at-end-of-line nil
+ "If non-nil, add diagnostic summary messages at end-of-line."
+ :type 'boolean
+ :package-version '(Flymake . "1.3.4"))
+
(define-obsolete-face-alias 'flymake-warnline 'flymake-warning "26.1")
(define-obsolete-face-alias 'flymake-errline 'flymake-error "26.1")
@@ -570,19 +604,25 @@ Node `(Flymake)Flymake error types'"
(put 'flymake-error 'face 'flymake-error)
(put 'flymake-error 'flymake-bitmap 'flymake-error-bitmap)
(put 'flymake-error 'severity (warning-numeric-level :error))
-(put 'flymake-error 'mode-line-face 'compilation-error)
+(put 'flymake-error 'mode-line-face 'flymake-error-echo)
+(put 'flymake-error 'echo-face 'flymake-error-echo)
+(put 'flymake-error 'eol-face 'flymake-error-echo)
(put 'flymake-error 'flymake-type-name "error")
(put 'flymake-warning 'face 'flymake-warning)
(put 'flymake-warning 'flymake-bitmap 'flymake-warning-bitmap)
(put 'flymake-warning 'severity (warning-numeric-level :warning))
-(put 'flymake-warning 'mode-line-face 'compilation-warning)
+(put 'flymake-warning 'mode-line-face 'flymake-warning-echo)
+(put 'flymake-warning 'echo-face 'flymake-warning-echo)
+(put 'flymake-warning 'eol-face 'flymake-warning-echo)
(put 'flymake-warning 'flymake-type-name "warning")
(put 'flymake-note 'face 'flymake-note)
(put 'flymake-note 'flymake-bitmap 'flymake-note-bitmap)
(put 'flymake-note 'severity (warning-numeric-level :debug))
-(put 'flymake-note 'mode-line-face 'compilation-info)
+(put 'flymake-note 'mode-line-face 'flymake-note-echo)
+(put 'flymake-note 'echo-face 'flymake-note-echo)
+(put 'flymake-note 'eol-face 'flymake-note-echo)
(put 'flymake-note 'flymake-type-name "note")
(defun flymake--lookup-type-property (type prop &optional default)
@@ -639,6 +679,12 @@ associated `flymake-category' return DEFAULT."
flymake-diagnostic-text)
always (equal (funcall comp a) (funcall comp b)))))
+(defun flymake--delete-overlay (ov)
+ "Like `delete-overlay', delete OV, but do some more stuff."
+ (let ((eolov (overlay-get ov 'eol-ov)))
+ (when eolov (delete-overlay eolov))
+ (delete-overlay ov)))
+
(cl-defun flymake--highlight-line (diagnostic &optional foreign)
"Attempt to overlay DIAGNOSTIC in current buffer.
@@ -678,6 +724,7 @@ Return nil or the overlay created."
;; diagnostic is already registered in the same place, which only
;; happens for clashes between domestic and foreign diagnostics
(cl-loop for e in (flymake-diagnostics beg end)
+ for eov = (flymake--diag-overlay e)
when (flymake--equal-diagnostic-p e diagnostic)
;; FIXME. This is an imperfect heuristic. Ideally, we'd
;; want to delete no overlays and keep annotating the
@@ -693,7 +740,7 @@ Return nil or the overlay created."
(flymake--diag-orig-beg e)
(flymake--diag-end e)
(flymake--diag-orig-end e))
- (delete-overlay (flymake--diag-overlay e))))
+ (flymake--delete-overlay eov)))
(setq ov (make-overlay end beg))
(setf (flymake--diag-beg diagnostic) (overlay-start ov)
(flymake--diag-end diagnostic) (overlay-end ov))
@@ -711,6 +758,37 @@ Return nil or the overlay created."
(flymake--lookup-type-property type 'flymake-overlay-control))
(alist-get type flymake-diagnostic-types-alist))
do (overlay-put ov ov-prop value))
+ ;; Handle `flymake-show-diagnostics-at-end-of-line'
+ ;;
+ (when-let ((eol-face (and flymake-show-diagnostics-at-end-of-line
+ (flymake--lookup-type-property type 'eol-face))))
+ (save-excursion
+ (goto-char (overlay-start ov))
+ (let* ((start (line-end-position))
+ (end (min (1+ start) (point-max)))
+ (eolov (car
+ (cl-remove-if-not
+ (lambda (o) (overlay-get o 'flymake-source-ovs))
+ (overlays-at start))))
+ (bs (flymake-diagnostic-oneliner diagnostic t)))
+ (setq bs (propertize bs 'face eol-face))
+ ;; FIXME: 1. no checking if there are unexpectedly more than
+ ;; one eolov at point. 2. The first regular source ov to
+ ;; die also kills the eolov (very rare this matters, but
+ ;; could be improved).
+ (cond (eolov
+ (overlay-put eolov 'before-string
+ (concat (overlay-get eolov 'before-string) " " bs))
+ (overlay-put eolov 'flymake-source-ovs
+ (cons ov (overlay-get eolov 'flymake-source-ovs))))
+ (t
+ (setq eolov (make-overlay start end nil t nil))
+ (setq bs (concat " " bs))
+ (put-text-property 0 1 'cursor t bs)
+ (overlay-put eolov 'before-string bs)
+ (overlay-put eolov 'evaporate (not (= start end)))
+ (overlay-put eolov 'flymake-source-ovs (list ov))
+ (overlay-put ov 'eol-ov eolov))))))
;; Now ensure some essential defaults are set
;;
(cl-flet ((default-maybe
@@ -726,11 +804,13 @@ Return nil or the overlay created."
'flymake-bitmap
(alist-get 'bitmap (alist-get type ; backward compat
flymake-diagnostic-types-alist)))))
+ ;; (default-maybe 'after-string
+ ;; (flymake--diag-text diagnostic))
(default-maybe 'help-echo
(lambda (window _ov pos)
(with-selected-window window
(mapconcat
- #'flymake-diagnostic-text
+ #'flymake-diagnostic-oneliner
(flymake-diagnostics pos)
"\n"))))
(default-maybe 'severity (warning-numeric-level :error))
@@ -856,7 +936,7 @@ report applies to that region."
(maphash (lambda (_buffer diags)
(cl-loop for d in diags
when (flymake--diag-overlay d)
- do (delete-overlay it)))
+ do (flymake--delete-overlay it)))
(flymake--state-foreign-diags state))
(clrhash (flymake--state-foreign-diags state)))
@@ -883,7 +963,7 @@ and other buffers."
(flymake--intersects-p
(overlay-start ov) (overlay-end ov)
(car region) (cdr region)))
- do (delete-overlay ov)
+ do (flymake--delete-overlay ov)
else collect diag into surviving
finally (setf (flymake--state-diags state)
surviving)))
@@ -892,7 +972,7 @@ and other buffers."
(not (flymake--state-reported-p state))
(cl-loop for diag in (flymake--state-diags state)
for ov = (flymake--diag-overlay diag)
- when ov do (delete-overlay ov))
+ when ov do (flymake--delete-overlay ov))
(setf (flymake--state-diags state) nil)
;; Also clear all overlays for `foreign-diags' in all other
;; buffers.
@@ -1136,7 +1216,7 @@ special *Flymake log* buffer." :group 'flymake :lighter
;; existing diagnostic overlays, lest we forget them by blindly
;; reinitializing `flymake--state' in the next line.
;; See https://github.com/joaotavora/eglot/issues/223.
- (mapc #'delete-overlay (flymake--overlays))
+ (mapc #'flymake--delete-overlay (flymake--overlays))
(setq flymake--state (make-hash-table))
(setq flymake--recent-changes nil)
@@ -1183,7 +1263,7 @@ special *Flymake log* buffer." :group 'flymake :lighter
(when flymake-timer
(cancel-timer flymake-timer)
(setq flymake-timer nil))
- (mapc #'delete-overlay (flymake--overlays))
+ (mapc #'flymake--delete-overlay (flymake--overlays))
(when flymake--state
(maphash (lambda (_backend state)
(flymake--clear-foreign-diags state))
@@ -1254,10 +1334,11 @@ START and STOP and LEN are as in `after-change-functions'."
(defun flymake-eldoc-function (report-doc &rest _)
"Document diagnostics at point.
Intended for `eldoc-documentation-functions' (which see)."
- (let ((diags (flymake-diagnostics (point))))
- (when diags
- (funcall report-doc
- (mapconcat #'flymake-diagnostic-text diags "\n")))))
+ (when-let ((diags (flymake-diagnostics (point))))
+ (funcall report-doc
+ (mapconcat #'flymake-diagnostic-text diags "\n")
+ :echo (mapconcat #'flymake-diagnostic-oneliner
+ diags "\n"))))
(defun flymake-goto-next-error (&optional n filter interactive)
"Go to Nth next Flymake diagnostic that matches FILTER.
@@ -1582,8 +1663,7 @@ filename of the diagnostic relative to that directory."
"\\1\\2" bname)
"(anon)")
'help-echo (format "From `%s' backend" backend))
- (,(replace-regexp-in-string "\n.*" ""
- (flymake-diagnostic-text diag))
+ (,(flymake-diagnostic-oneliner diag t)
mouse-face highlight
help-echo "mouse-2: visit this diagnostic"
face nil
@@ -1635,6 +1715,7 @@ buffer."
(define-derived-mode flymake-diagnostics-buffer-mode tabulated-list-mode
"Flymake diagnostics"
"A mode for listing Flymake diagnostics."
+ :interactive nil
(setq tabulated-list-format flymake--diagnostics-base-tabulated-list-format)
(setq tabulated-list-entries
'flymake--diagnostics-buffer-entries)
@@ -1692,6 +1773,7 @@ some of this variable's contents the diagnostic listings.")
(define-derived-mode flymake-project-diagnostics-mode tabulated-list-mode
"Flymake diagnostics"
"A mode for listing Flymake diagnostics."
+ :interactive nil
(setq tabulated-list-format
(vconcat [("File" 25 t)]
flymake--diagnostics-base-tabulated-list-format))
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index 8db16729163..060957eac29 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1167,13 +1167,13 @@ no input, and GDB is waiting for input."
(process-live-p proc)
(not gud-running)
(= (point) (marker-position (process-mark proc))))
- ;; Sending an EOF does not work with GDB-MI; submit an
- ;; explicit quit command.
- (progn
- (if (> gdb-control-level 0)
- (process-send-eof proc)
- (insert "quit")
- (comint-send-input t t)))
+ ;; Exit a recursive reading loop or quit.
+ (if (> gdb-control-level 0)
+ (process-send-eof proc)
+ ;; Sending an EOF does not work with GDB-MI; submit an
+ ;; explicit quit command.
+ (insert "quit")
+ (comint-send-input t t))
(delete-char arg))))
(defvar gdb-define-alist nil "Alist of #define directives for GUD tooltips.")
@@ -4404,6 +4404,24 @@ member."
:group 'gud
:version "29.1")
+(defcustom gdb-locals-table-row-config `((name . 20)
+ (type . 20)
+ (value . ,gdb-locals-value-limit))
+ "Configuration for table rows in the local variable display.
+
+An alist that controls the display of the name, type and value of
+local variables inside the currently active stack-frame. The key
+controls which column to change whereas the value determines the
+maximum number of characters to display in each column. A value
+of 0 means there is no limit.
+
+Additionally, the order the element in the alist determines the
+left-to-right display order of the properties."
+ :type '(alist :key-type symbol :value-type integer)
+ :group 'gud
+ :version "30.1")
+
+
(defvar gdb-locals-values-table (make-hash-table :test #'equal)
"Mapping of local variable names to a string with their value.")
@@ -4433,12 +4451,9 @@ member."
(defun gdb-locals-value-filter (value)
"Filter function for the local variable VALUE."
- (let* ((no-nl (replace-regexp-in-string "\n" " " value))
- (str (replace-regexp-in-string "[[:space:]]+" " " no-nl))
- (limit gdb-locals-value-limit))
- (if (>= (length str) limit)
- (concat (substring str 0 limit) "...")
- str)))
+ (let* ((no-nl (replace-regexp-in-string "\n" " " (or value "<Unknown>")))
+ (str (replace-regexp-in-string "[[:space:]]+" " " no-nl)))
+ str))
(defun gdb-edit-locals-value (&optional event)
"Assign a value to a variable displayed in the locals buffer."
@@ -4452,6 +4467,22 @@ member."
(gud-basic-call
(concat "-gdb-set variable " var " = " value)))))
+
+(defun gdb-locals-table-columns-list (alist)
+ "Format and arrange the columns in locals display based on ALIST."
+ (let (columns)
+ (dolist (config gdb-locals-table-row-config columns)
+ (let* ((key (car config))
+ (max (cdr config))
+ (prop (alist-get key alist)))
+ (when prop
+ (if (and (> max 0) (length> prop max))
+ (push (propertize (string-truncate-left prop max) 'help-echo prop)
+ columns)
+ (push prop columns)))))
+ (nreverse columns)))
+
+
;; Complex data types are looked up in `gdb-locals-values-table'.
(defun gdb-locals-handler-custom ()
"Handler to rebuild the local variables table buffer."
@@ -4480,12 +4511,14 @@ member."
help-echo "mouse-2: edit value"
local-map ,gdb-edit-locals-map-1)
value))
+ (setf (gdb-table-right-align table) t)
+ (setq name (propertize name 'font-lock-face font-lock-variable-name-face))
+ (setq type (propertize type 'font-lock-face font-lock-type-face))
(gdb-table-add-row
table
- (list
- (propertize type 'font-lock-face font-lock-type-face)
- (propertize name 'font-lock-face font-lock-variable-name-face)
- value)
+ (gdb-locals-table-columns-list `((name . ,name)
+ (type . ,type)
+ (value . ,value)))
`(gdb-local-variable ,local))))
(insert (gdb-table-string table " "))
(setq mode-name
@@ -5173,6 +5206,8 @@ This arrangement depends on the values of variable
(defun gdb-reset ()
"Exit a debugging session cleanly.
Kills the gdb buffers, and resets variables and the source buffers."
+ ;; Save GDB history
+ (comint-write-input-ring)
;; The gdb-inferior buffer has a pty hooked up to the main gdb
;; process. This pty must be deleted explicitly.
(let ((pty (get-process "gdb-inferior")))
diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el
index 77c97ffac11..fda6a36e42d 100644
--- a/lisp/progmodes/go-ts-mode.el
+++ b/lisp/progmodes/go-ts-mode.el
@@ -35,6 +35,7 @@
(declare-function treesit-node-child "treesit.c")
(declare-function treesit-node-child-by-field-name "treesit.c")
(declare-function treesit-node-start "treesit.c")
+(declare-function treesit-node-end "treesit.c")
(declare-function treesit-node-type "treesit.c")
(declare-function treesit-search-subtree "treesit.c")
@@ -196,9 +197,16 @@
'((ERROR) @font-lock-warning-face))
"Tree-sitter font-lock settings for `go-ts-mode'.")
+(defvar-keymap go-ts-mode-map
+ :doc "Keymap used in Go mode, powered by tree-sitter"
+ :parent prog-mode-map
+ "C-c C-d" #'go-ts-mode-docstring)
+
;;;###autoload
(define-derived-mode go-ts-mode prog-mode "Go"
- "Major mode for editing Go, powered by tree-sitter."
+ "Major mode for editing Go, powered by tree-sitter.
+
+\\{go-ts-mode-map}"
:group 'go
:syntax-table go-ts-mode--syntax-table
@@ -247,9 +255,10 @@
(if (treesit-ready-p 'go)
(add-to-list 'auto-mode-alist '("\\.go\\'" . go-ts-mode)))
-(defun go-ts-mode--defun-name (node)
+(defun go-ts-mode--defun-name (node &optional skip-prefix)
"Return the defun name of NODE.
-Return nil if there is no name or if NODE is not a defun node."
+Return nil if there is no name or if NODE is not a defun node.
+Methods are prefixed with the receiver name, unless SKIP-PREFIX is t."
(pcase (treesit-node-type node)
("function_declaration"
(treesit-node-text
@@ -258,11 +267,10 @@ Return nil if there is no name or if NODE is not a defun node."
t))
("method_declaration"
(let* ((receiver-node (treesit-node-child-by-field-name node "receiver"))
- (type-node (treesit-search-subtree receiver-node "type_identifier"))
- (name-node (treesit-node-child-by-field-name node "name")))
- (concat
- "(" (treesit-node-text type-node) ")."
- (treesit-node-text name-node))))
+ (receiver (treesit-node-text (treesit-search-subtree receiver-node "type_identifier")))
+ (method (treesit-node-text (treesit-node-child-by-field-name node "name"))))
+ (if skip-prefix method
+ (concat "(" receiver ")." method))))
("type_declaration"
(treesit-node-text
(treesit-node-child-by-field-name
@@ -295,6 +303,32 @@ Return nil if there is no name or if NODE is not a defun node."
(not (go-ts-mode--struct-node-p node))
(not (go-ts-mode--alias-node-p node))))
+(defun go-ts-mode-docstring ()
+ "Add a docstring comment for the current defun.
+The added docstring is prefilled with the defun's name. If the
+comment already exists, jump to it."
+ (interactive)
+ (when-let ((defun-node (treesit-defun-at-point)))
+ (goto-char (treesit-node-start defun-node))
+ (if (go-ts-mode--comment-on-previous-line-p)
+ ;; go to top comment line
+ (while (go-ts-mode--comment-on-previous-line-p)
+ (forward-line -1))
+ (insert "// " (go-ts-mode--defun-name defun-node t))
+ (newline)
+ (backward-char))))
+
+(defun go-ts-mode--comment-on-previous-line-p ()
+ "Return t if the previous line is a comment."
+ (when-let ((point (- (pos-bol) 1))
+ ((> point 0))
+ (node (treesit-node-at point)))
+ (and
+ ;; check point is actually inside the found node
+ ;; treesit-node-at can return nodes after point
+ (<= (treesit-node-start node) point (treesit-node-end node))
+ (string-equal "comment" (treesit-node-type node)))))
+
;; go.mod support.
(defvar go-mod-ts-mode--syntax-table
diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el
index 0da16b44dda..82e9c5d8edf 100644
--- a/lisp/progmodes/grep.el
+++ b/lisp/progmodes/grep.el
@@ -457,6 +457,33 @@ buffer `default-directory'."
:type '(repeat (choice (const :tag "Default" nil)
(string :tag "Directory"))))
+(defcustom grep-use-headings nil
+ "If non-nil, subdivide grep output into sections, one per file."
+ :type 'boolean
+ :version "30.1")
+
+(defface grep-heading `((t :inherit ,grep-hit-face))
+ "Face of headings when `grep-use-headings' is non-nil."
+ :version "30.1")
+
+(defvar grep-heading-regexp
+ (rx bol
+ (or
+ (group-n 2
+ (group-n 1 (+ (not (any 0 ?\n))))
+ 0)
+ (group-n 2
+ (group-n 1 (+? nonl))
+ (any ?: ?- ?=)))
+ (+ digit)
+ (any ?: ?- ?=))
+ "Regexp used to create headings from grep output lines.
+It should be anchored at beginning of line. The first capture
+group, if present, should match the heading associated to the
+line. The buffer range of the second capture, if present, is
+made invisible (presumably because displaying it would be
+redundant).")
+
(defvar grep-find-abbreviate-properties
(let ((ellipsis (if (char-displayable-p ?…) "[…]" "[...]"))
(map (make-sparse-keymap)))
@@ -612,6 +639,40 @@ This function is called from `compilation-filter-hook'."
(while (re-search-forward "\033\\[[0-9;]*[mK]" end 1)
(replace-match "" t t))))))
+(defvar grep--heading-format
+ (eval-when-compile
+ (let ((title (propertize "%s"
+ 'font-lock-face 'grep-heading
+ 'outline-level 1)))
+ (propertize (concat title "\n") 'compilation-annotation t)))
+ "Format string of grep headings.
+This is passed to `format' with one argument, the text of the
+first capture group of `grep-heading-regexp'.")
+
+(defvar-local grep--heading-state nil
+ "Variable to keep track of the `grep--heading-filter' state.")
+
+(defun grep--heading-filter ()
+ "Filter function to add headings to output of a grep process."
+ (unless grep--heading-state
+ (setq grep--heading-state (cons (point-min-marker) nil)))
+ (save-excursion
+ (let ((limit (car grep--heading-state)))
+ ;; Move point to the old limit and update limit marker.
+ (move-marker limit (prog1 (pos-bol) (goto-char limit)))
+ (while (re-search-forward grep-heading-regexp limit t)
+ (unless (get-text-property (point) 'compilation-annotation)
+ (let ((heading (match-string-no-properties 1))
+ (start (match-beginning 2))
+ (end (match-end 2)))
+ (when start
+ (put-text-property start end 'invisible t))
+ (when (and heading (not (equal heading (cdr grep--heading-state))))
+ (save-excursion
+ (goto-char (pos-bol))
+ (insert-before-markers (format grep--heading-format heading)))
+ (setf (cdr grep--heading-state) heading))))))))
+
(defun grep-probe (command args &optional func result)
(let (process-file-side-effects)
(equal (condition-case nil
@@ -906,6 +967,11 @@ The value depends on `grep-command', `grep-template',
(add-function :filter-return (local 'kill-transform-function)
(lambda (string)
(string-replace "\0" ":" string)))
+ (when grep-use-headings
+ (add-hook 'compilation-filter-hook #'grep--heading-filter 80 t)
+ (setq-local outline-search-function #'outline-search-level
+ outline-level (lambda () (get-text-property
+ (point) 'outline-level))))
(add-hook 'compilation-filter-hook #'grep-filter nil t))
(defun grep--save-buffers ()
diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el
index 3b792354cbc..d5c8e37a37b 100644
--- a/lisp/progmodes/gud.el
+++ b/lisp/progmodes/gud.el
@@ -135,9 +135,9 @@ Used to gray out relevant toolbar icons.")
(defun gud-goto-info ()
"Go to relevant Emacs info node."
(interactive)
- (if (eq gud-minor-mode 'gdbmi)
- (info-other-window "(emacs)GDB Graphical Interface")
- (info-other-window "(emacs)Debuggers")))
+ (info-other-window (if (eq gud-minor-mode 'gdbmi)
+ "(emacs)GDB Graphical Interface"
+ "(emacs)Debuggers")))
(defun gud-tool-bar-item-visible-no-fringe ()
(not (or (eq (buffer-local-value 'major-mode (window-buffer)) 'speedbar-mode)
@@ -159,143 +159,145 @@ Used to gray out relevant toolbar icons.")
(t
(comint-interrupt-subjob)))))
-(easy-mmode-defmap gud-menu-map
- '(([help] "Info (debugger)" . gud-goto-info)
- ([tooltips] menu-item "Show GUD tooltips" gud-tooltip-mode
- :enable (and (not emacs-basic-display)
- (display-graphic-p)
- (fboundp 'x-show-tip))
- :visible (memq gud-minor-mode
- '(gdbmi guiler dbx sdb xdb pdb))
- :button (:toggle . gud-tooltip-mode))
- ([refresh] "Refresh" . gud-refresh)
- ([run] menu-item "Run" gud-run
- :enable (not gud-running)
- :visible (or (memq gud-minor-mode '(gdb dbx jdb))
- (and (eq gud-minor-mode 'gdbmi)
- (or (not (gdb-show-run-p))
- (bound-and-true-p
- gdb-active-process)))))
- ([go] . (menu-item (if (bound-and-true-p gdb-active-process)
- "Continue" "Run")
- gud-go
- :visible (and (eq gud-minor-mode 'gdbmi)
- (gdb-show-run-p))))
- ([stop] menu-item "Stop" gud-stop-subjob
- :visible (or (not (memq gud-minor-mode '(gdbmi pdb)))
- (and (eq gud-minor-mode 'gdbmi)
- (gdb-show-stop-p))))
- ([until] menu-item "Continue to selection" gud-until
- :enable (not gud-running)
- :visible (and (memq gud-minor-mode '(gdbmi gdb perldb))
- (gud-tool-bar-item-visible-no-fringe)))
- ([remove] menu-item "Remove Breakpoint" gud-remove
- :enable (not gud-running)
- :visible (gud-tool-bar-item-visible-no-fringe))
- ([tbreak] menu-item "Temporary Breakpoint" gud-tbreak
- :enable (not gud-running)
- :visible (memq gud-minor-mode
- '(gdbmi gdb sdb xdb)))
- ([break] menu-item "Set Breakpoint" gud-break
- :enable (not gud-running)
- :visible (gud-tool-bar-item-visible-no-fringe))
- ([up] menu-item "Up Stack" gud-up
- :enable (not gud-running)
- :visible (memq gud-minor-mode
- '(gdbmi gdb guiler dbx xdb jdb pdb)))
- ([down] menu-item "Down Stack" gud-down
- :enable (not gud-running)
- :visible (memq gud-minor-mode
- '(gdbmi gdb guiler dbx xdb jdb pdb)))
- ([pp] menu-item "Print S-expression" gud-pp
- :enable (and (not gud-running)
- (bound-and-true-p gdb-active-process))
- :visible (and (string-equal
- (buffer-local-value
- 'gud-target-name gud-comint-buffer)
- "emacs")
- (eq gud-minor-mode 'gdbmi)))
- ([print*] . (menu-item (if (eq gud-minor-mode 'jdb)
- "Dump object"
- "Print Dereference")
- gud-pstar
- :enable (not gud-running)
- :visible (memq gud-minor-mode '(gdbmi gdb jdb))))
- ([print] menu-item "Print Expression" gud-print
- :enable (not gud-running))
- ([watch] menu-item "Watch Expression" gud-watch
- :enable (not gud-running)
- :visible (eq gud-minor-mode 'gdbmi))
- ([finish] menu-item "Finish Function" gud-finish
- :enable (not gud-running)
- :visible (memq gud-minor-mode
- '(gdbmi gdb guiler xdb jdb pdb)))
- ([stepi] menu-item "Step Instruction" gud-stepi
- :enable (not gud-running)
- :visible (memq gud-minor-mode '(gdbmi gdb dbx)))
- ([nexti] menu-item "Next Instruction" gud-nexti
- :enable (not gud-running)
- :visible (memq gud-minor-mode '(gdbmi gdb dbx)))
- ([step] menu-item "Step Line" gud-step
- :enable (not gud-running))
- ([next] menu-item "Next Line" gud-next
- :enable (not gud-running))
- ([cont] menu-item "Continue" gud-cont
- :enable (not gud-running)
- :visible (not (eq gud-minor-mode 'gdbmi))))
- "Menu for `gud-mode'."
- :name "Gud")
-
-(easy-mmode-defmap gud-minor-mode-map
- (append
- `(([menu-bar debug] . ("Gud" . ,gud-menu-map)))
- ;; Get tool bar like functionality from the menu bar on a text only
- ;; terminal.
- (unless window-system
- `(([menu-bar down]
- . (,(propertize "down" 'face 'font-lock-doc-face) . gud-down))
- ([menu-bar up]
- . (,(propertize "up" 'face 'font-lock-doc-face) . gud-up))
- ([menu-bar finish]
- . (,(propertize "finish" 'face 'font-lock-doc-face) . gud-finish))
- ([menu-bar step]
- . (,(propertize "step" 'face 'font-lock-doc-face) . gud-step))
- ([menu-bar next]
- . (,(propertize "next" 'face 'font-lock-doc-face) . gud-next))
- ([menu-bar until] menu-item
- ,(propertize "until" 'face 'font-lock-doc-face) gud-until
- :visible (memq gud-minor-mode '(gdbmi gdb perldb)))
- ([menu-bar cont] menu-item
- ,(propertize "cont" 'face 'font-lock-doc-face) gud-cont
- :visible (not (eq gud-minor-mode 'gdbmi)))
- ([menu-bar run] menu-item
- ,(propertize "run" 'face 'font-lock-doc-face) gud-run
- :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
- ([menu-bar go] menu-item
- ,(propertize " go " 'face 'font-lock-doc-face) gud-go
- :visible (and (eq gud-minor-mode 'gdbmi)
- (gdb-show-run-p)))
- ([menu-bar stop] menu-item
- ,(propertize "stop" 'face 'font-lock-doc-face) gud-stop-subjob
- :visible (or (and (eq gud-minor-mode 'gdbmi)
- (gdb-show-stop-p))
- (not (eq gud-minor-mode 'gdbmi))))
- ([menu-bar print]
- . (,(propertize "print" 'face 'font-lock-doc-face) . gud-print))
- ([menu-bar tools] . undefined)
- ([menu-bar buffer] . undefined)
- ([menu-bar options] . undefined)
- ([menu-bar edit] . undefined)
- ([menu-bar file] . undefined))))
- "Map used in visited files.")
-
-(setf (alist-get 'gud-minor-mode minor-mode-map-alist)
- gud-minor-mode-map)
+(defvar-keymap gud-text-menu-bar-map
+ :doc "Menu-bar keymap used in GUD buffers on text frames."
+ ;; Use the menu-bar as a pseudo-tool-bar.
+ "<down>" `(,(propertize "down" 'face 'font-lock-doc-face) . gud-down)
+ "<up>" `(,(propertize "up" 'face 'font-lock-doc-face) . gud-up)
+ "<finish>" `(,(propertize "finish" 'face 'font-lock-doc-face) . gud-finish)
+ "<step>" `(,(propertize "step" 'face 'font-lock-doc-face) . gud-step)
+ "<next>" `(,(propertize "next" 'face 'font-lock-doc-face) . gud-next)
+ "<until>" `(menu-item
+ ,(propertize "until" 'face 'font-lock-doc-face) gud-until
+ :visible (memq gud-minor-mode '(gdbmi gdb perldb)))
+ "<cont>" `(menu-item
+ ,(propertize "cont" 'face 'font-lock-doc-face) gud-cont
+ :visible (not (eq gud-minor-mode 'gdbmi)))
+ "<run>" `(menu-item
+ ,(propertize "run" 'face 'font-lock-doc-face) gud-run
+ :visible (memq gud-minor-mode '(gdbmi gdb dbx jdb)))
+ "<go>" `(menu-bar-item
+ ,(propertize " go " 'face 'font-lock-doc-face) gud-go
+ :visible (and (eq gud-minor-mode 'gdbmi)
+ (gdb-show-run-p)))
+ "<stop>" `(menu-item
+ ,(propertize "stop" 'face 'font-lock-doc-face) gud-stop-subjob
+ :visible (or (and (eq gud-minor-mode 'gdbmi)
+ (gdb-show-stop-p))
+ (not (eq gud-minor-mode 'gdbmi))))
+ "<print>" `(,(propertize "print" 'face 'font-lock-doc-face) . gud-print)
+ ;; Hide the usual menus to make room.
+ "<tools>" #'undefined
+ "<buffer>" #'undefined
+ "<options>" #'undefined
+ "<edit>" #'undefined
+ "<file>" #'undefined)
+
+(defvar-keymap gud-menu-mode-map
+ :doc "Keymap shared between `gud-mode' and `gud-minor-mode'.")
+
+(defvar-keymap gud-mode-map
+ :doc "`gud-mode' keymap."
+ ;; BEWARE: `gud-mode-map' does not inherit from something like
+ ;; `gud-menu-mode-map' because the `gud-mode' buffer is also in
+ ;; `gud-minor-mode'.
+ ;;:parent (make-composed-keymap gud-menu-mode-map comint-mode-map)
+ )
-(defvar gud-mode-map
- ;; Will inherit from comint-mode via define-derived-mode.
- (make-sparse-keymap)
- "`gud-mode' keymap.")
+(defvar-keymap gud-minor-mode-map
+ ;; Part of the menu is dynamic, so we use 2 keymaps: `gud-menu-mode-map'
+ ;; is the static/normal menu defined with easy-menu, and
+ ;; `gud-text-menu-bar-map' is the part that's only used on text frames.
+ ;; We then merge them here into `gud-minor-mode-map'.
+ :parent gud-menu-mode-map
+ "<menu-bar>" `(menu-item nil ,gud-text-menu-bar-map
+ ;; Be careful to return an empty keymap rather than nil
+ ;; so as not to hide the parent's menus.
+ :filter ,(lambda (map) (if window-system '(keymap) map))))
+
+(easy-menu-define gud-menu-map gud-menu-mode-map
+ "Menu for `gud-mode'."
+ '("Gud"
+ ["Continue" gud-cont
+ :enable (not gud-running)
+ :visible (not (eq gud-minor-mode 'gdbmi))]
+ ["Next Line" gud-next
+ :enable (not gud-running)]
+ ["Step Line" gud-step
+ :enable (not gud-running)]
+ ["Next Instruction" gud-nexti
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode '(gdbmi gdb dbx))]
+ ["Step Instruction" gud-stepi
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode '(gdbmi gdb dbx))]
+ ["Finish Function" gud-finish
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode '(gdbmi gdb guiler xdb jdb pdb))]
+ ["Watch Expression" gud-watch
+ :enable (not gud-running)
+ :visible (eq gud-minor-mode 'gdbmi)]
+ ["Print Expression" gud-print
+ :enable (not gud-running)]
+ ["Dump object-Derefenrece" gud-pstar
+ :label (if (eq gud-minor-mode 'jdb)
+ "Dump object"
+ "Print Dereference")
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode '(gdbmi gdb jdb))]
+ ["Print S-expression" gud-pp
+ :enable (and (not gud-running)
+ (bound-and-true-p gdb-active-process))
+ :visible (and (string-equal
+ (buffer-local-value
+ 'gud-target-name gud-comint-buffer)
+ "emacs")
+ (eq gud-minor-mode 'gdbmi))]
+ ["Down Stack" gud-down
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode '(gdbmi gdb guiler dbx xdb jdb pdb))]
+ ["Up Stack" gud-up
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode
+ '(gdbmi gdb guiler dbx xdb jdb pdb))]
+ ["Set Breakpoint" gud-break
+ :enable (not gud-running)
+ :visible (gud-tool-bar-item-visible-no-fringe)]
+ ["Temporary Breakpoint" gud-tbreak
+ :enable (not gud-running)
+ :visible (memq gud-minor-mode '(gdbmi gdb sdb xdb))]
+ ["Remove Breakpoint" gud-remove
+ :enable (not gud-running)
+ :visible (gud-tool-bar-item-visible-no-fringe)]
+ ["Continue to selection" gud-until
+ :enable (not gud-running)
+ :visible (and (memq gud-minor-mode '(gdbmi gdb perldb))
+ (gud-tool-bar-item-visible-no-fringe))]
+ ["Stop" gud-stop-subjob
+ :visible (or (not (memq gud-minor-mode '(gdbmi pdb)))
+ (and (eq gud-minor-mode 'gdbmi)
+ (gdb-show-stop-p)))]
+ ["Continue-Run" gud-go
+ :label (if (bound-and-true-p gdb-active-process)
+ "Continue" "Run")
+ :visible (and (eq gud-minor-mode 'gdbmi)
+ (gdb-show-run-p))]
+ ["Run" gud-run
+ :enable (not gud-running)
+ :visible (or (memq gud-minor-mode '(gdb dbx jdb))
+ (and (eq gud-minor-mode 'gdbmi)
+ (or (not (gdb-show-run-p))
+ (bound-and-true-p
+ gdb-active-process))))]
+ ["Refresh" gud-refresh]
+ ["Show GUD tooltips" gud-tooltip-mode
+ :enable (and (not emacs-basic-display)
+ (display-graphic-p)
+ (fboundp 'x-show-tip))
+ :visible (memq gud-minor-mode
+ '(gdbmi guiler dbx sdb xdb pdb))
+ :button (:toggle . gud-tooltip-mode)]
+ ["Info (debugger)" gud-goto-info]))
(setf (alist-get 'gud-minor-mode minor-mode-map-alist)
gud-minor-mode-map)
@@ -323,7 +325,7 @@ Used to gray out relevant toolbar icons.")
(gud-goto-info . "info"))
map)
(tool-bar-local-item-from-menu
- (car x) (cdr x) map gud-minor-mode-map))))
+ (car x) (cdr x) map gud-menu-mode-map))))
(defvar gud-gdb-repeat-map
(let ((map (make-sparse-keymap)))
@@ -582,9 +584,9 @@ required by the caller."
(value (nth 4 var)) (status (nth 5 var))
(has-more (nth 6 var)))
(put-text-property
- 0 (length expr) 'face font-lock-variable-name-face expr)
+ 0 (length expr) 'face 'font-lock-variable-name-face expr)
(put-text-property
- 0 (length type) 'face font-lock-type-face type)
+ 0 (length type) 'face 'font-lock-type-face type)
(while (string-match "\\." varnum start)
(setq depth (1+ depth)
start (1+ (match-beginning 0))))
@@ -1307,7 +1309,7 @@ whereby $stopformat=1 produces an output format compatible with
(define-key map key cmd))
(when (or gud-mips-p
gud-irix-p)
- (define-key map "f" 'gud-finish))
+ (define-key map "f" #'gud-finish))
map)
"Keymap to repeat `dbx' stepping instructions \\`C-x C-a C-n n n'.
Used in `repeat-mode'.")
@@ -3469,9 +3471,9 @@ class of the file (using s to separate nested class ids)."
(defun gdb-script-font-lock-syntactic-face (state)
(cond
- ((nth 3 state) font-lock-string-face)
- ((nth 7 state) font-lock-doc-face)
- (t font-lock-comment-face)))
+ ((nth 3 state) 'font-lock-string-face)
+ ((nth 7 state) 'font-lock-doc-face)
+ (t 'font-lock-comment-face)))
(defvar gdb-script-basic-indent 2)
@@ -3502,7 +3504,7 @@ class of the file (using s to separate nested class ids)."
(defun gdb-script-indent-line ()
"Indent current line of GDB script."
(interactive)
- (if (and (eq (get-text-property (point) 'face) font-lock-doc-face)
+ (if (and (eq (get-text-property (point) 'face) 'font-lock-doc-face)
(save-excursion
(forward-line 0)
(skip-chars-forward " \t")
diff --git a/lisp/progmodes/heex-ts-mode.el b/lisp/progmodes/heex-ts-mode.el
new file mode 100644
index 00000000000..68a537b9229
--- /dev/null
+++ b/lisp/progmodes/heex-ts-mode.el
@@ -0,0 +1,185 @@
+;;; heex-ts-mode.el --- Major mode for Heex with tree-sitter support -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
+
+;; Author: Wilhelm H Kirschbaum <wkirschbaum@gmail.com>
+;; Created: November 2022
+;; Keywords: elixir languages tree-sitter
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package provides `heex-ts-mode' which is a major mode for editing
+;; HEEx files that uses Tree Sitter to parse the language.
+;;
+;; This package is compatible with and was tested against the tree-sitter grammar
+;; for HEEx found at https://github.com/phoenixframework/tree-sitter-heex.
+
+;;; Code:
+
+(require 'treesit)
+(eval-when-compile (require 'rx))
+
+(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-node-child "treesit.c")
+(declare-function treesit-node-type "treesit.c")
+(declare-function treesit-node-start "treesit.c")
+
+(defgroup heex-ts nil
+ "Major mode for editing HEEx code."
+ :prefix "heex-ts-"
+ :group 'langauges)
+
+(defcustom heex-ts-indent-offset 2
+ "Indentation of HEEx statements."
+ :version "30.1"
+ :type 'integer
+ :safe 'integerp
+ :group 'heex-ts)
+
+(defconst heex-ts--sexp-regexp
+ (rx bol
+ (or "directive" "tag" "component" "slot"
+ "attribute" "attribute_value" "quoted_attribute_value")
+ eol))
+
+;; There seems to be no parent directive block for tree-sitter-heex,
+;; so we ignore them for now until we learn how to query them.
+;; https://github.com/phoenixframework/tree-sitter-heex/issues/28
+(defvar heex-ts--indent-rules
+ (let ((offset heex-ts-indent-offset))
+ `((heex
+ ((parent-is "fragment")
+ (lambda (node parent &rest _)
+ ;; If HEEx is embedded indent to parent
+ ;; otherwise indent to the bol.
+ (if (eq (treesit-language-at (point-min)) 'heex)
+ (point-min)
+ (save-excursion
+ (goto-char (treesit-node-start parent))
+ (back-to-indentation)
+ (point))
+ )) 0)
+ ((node-is "end_tag") parent-bol 0)
+ ((node-is "end_component") parent-bol 0)
+ ((node-is "end_slot") parent-bol 0)
+ ((node-is "/>") parent-bol 0)
+ ((node-is ">") parent-bol 0)
+ ((parent-is "comment") prev-adaptive-prefix 0)
+ ((parent-is "component") parent-bol ,offset)
+ ((parent-is "tag") parent-bol ,offset)
+ ((parent-is "start_tag") parent-bol ,offset)
+ ((parent-is "component") parent-bol ,offset)
+ ((parent-is "start_component") parent-bol ,offset)
+ ((parent-is "slot") parent-bol ,offset)
+ ((parent-is "start_slot") parent-bol ,offset)
+ ((parent-is "self_closing_tag") parent-bol ,offset)
+ (no-node parent-bol ,offset)))))
+
+(defvar heex-ts--font-lock-settings
+ (when (treesit-available-p)
+ (treesit-font-lock-rules
+ :language 'heex
+ :feature 'heex-comment
+ '((comment) @font-lock-comment-face)
+ :language 'heex
+ :feature 'heex-doctype
+ '((doctype) @font-lock-doc-face)
+ :language 'heex
+ :feature 'heex-tag
+ `([(tag_name) (slot_name)] @font-lock-function-name-face)
+ :language 'heex
+ :feature 'heex-attribute
+ `((attribute_name) @font-lock-variable-name-face)
+ :language 'heex
+ :feature 'heex-keyword
+ `((special_attribute_name) @font-lock-keyword-face)
+ :language 'heex
+ :feature 'heex-string
+ `([(attribute_value) (quoted_attribute_value)] @font-lock-constant-face)
+ :language 'heex
+ :feature 'heex-component
+ `([
+ (component_name) @font-lock-function-name-face
+ (module) @font-lock-keyword-face
+ (function) @font-lock-keyword-face
+ "." @font-lock-keyword-face
+ ])))
+ "Tree-sitter font-lock settings.")
+
+(defun heex-ts--defun-name (node)
+ "Return the name of the defun NODE.
+Return nil if NODE is not a defun node or doesn't have a name."
+ (pcase (treesit-node-type node)
+ ((or "component" "slot" "tag")
+ (string-trim
+ (treesit-node-text
+ (treesit-node-child (treesit-node-child node 0) 1) nil)))
+ (_ nil)))
+
+(defun heex-ts--forward-sexp (&optional arg)
+ "Move forward across one balanced expression (sexp).
+With ARG, do it many times. Negative ARG means move backward."
+ (or arg (setq arg 1))
+ (funcall
+ (if (> arg 0) #'treesit-end-of-thing #'treesit-beginning-of-thing)
+ heex-ts--sexp-regexp
+ (abs arg)))
+
+;;;###autoload
+(define-derived-mode heex-ts-mode html-mode "HEEx"
+ "Major mode for editing HEEx, powered by tree-sitter."
+ :group 'heex-ts
+
+ (when (treesit-ready-p 'heex)
+ (treesit-parser-create 'heex)
+
+ ;; Comments
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment" "text")))
+
+ (setq-local forward-sexp-function #'heex-ts--forward-sexp)
+
+ ;; Navigation.
+ (setq-local treesit-defun-type-regexp
+ (rx bol (or "component" "tag" "slot") eol))
+ (setq-local treesit-defun-name-function #'heex-ts--defun-name)
+
+ ;; Imenu
+ (setq-local treesit-simple-imenu-settings
+ '(("Component" "\\`component\\'" nil nil)
+ ("Slot" "\\`slot\\'" nil nil)
+ ("Tag" "\\`tag\\'" nil nil)))
+
+ (setq-local treesit-font-lock-settings heex-ts--font-lock-settings)
+
+ (setq-local treesit-simple-indent-rules heex-ts--indent-rules)
+
+ (setq-local treesit-font-lock-feature-list
+ '(( heex-comment heex-keyword heex-doctype )
+ ( heex-component heex-tag heex-attribute heex-string )
+ () ()))
+
+ (treesit-major-mode-setup)))
+
+(if (treesit-ready-p 'heex)
+ ;; Both .heex and the deprecated .leex files should work
+ ;; with the tree-sitter-heex grammar.
+ (add-to-list 'auto-mode-alist '("\\.[hl]?eex\\'" . heex-ts-mode)))
+
+(provide 'heex-ts-mode)
+;;; heex-ts-mode.el ends here
diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el
index 30893638f0d..836db83c2f3 100644
--- a/lisp/progmodes/hideif.el
+++ b/lisp/progmodes/hideif.el
@@ -113,6 +113,7 @@
;; Various floating point types and operations are also supported but the
;; actual precision is limited by the Emacs internal floating representation,
;; which is the C data type "double" or IEEE binary64 format.
+;; C99 and GNU style variadic arguments support is completed in 2022/E.
;;; Code:
@@ -392,8 +393,10 @@ If there is a marked region from START to END it only shows the symbols within."
(add-hook 'after-revert-hook 'hif-after-revert-function)
(defun hif-end-of-line ()
+ "Find the end-point of line concatenation."
(end-of-line)
- (while (= (logand 1 (skip-chars-backward "\\\\")) 1)
+ (while (progn (skip-chars-backward " \t" (line-beginning-position))
+ (= ?\\ (char-before)))
(end-of-line 2)))
(defun hif-merge-ifdef-region (start end)
@@ -536,10 +539,10 @@ that form should be displayed.")
;;===%%SF%% parsing (Start) ===
;;; The code that understands what ifs and ifdef in files look like.
-(defconst hif-cpp-prefix "\\(^\\|\r\\)[ \t]*#[ \t]*")
+(defconst hif-cpp-prefix "\\(^\\|\r\\)?[ \t]*#[ \t]*")
(defconst hif-ifxdef-regexp (concat hif-cpp-prefix "if\\(n\\)?def"))
(defconst hif-ifndef-regexp (concat hif-cpp-prefix "ifndef"))
-(defconst hif-ifx-regexp (concat hif-cpp-prefix "if\\(n?def\\)?[ \t]+"))
+(defconst hif-ifx-regexp (concat hif-cpp-prefix "if\\((\\|\\(n?def\\)?[ \t]+\\)"))
(defconst hif-elif-regexp (concat hif-cpp-prefix "elif"))
(defconst hif-else-regexp (concat hif-cpp-prefix "else"))
(defconst hif-endif-regexp (concat hif-cpp-prefix "endif"))
@@ -547,18 +550,23 @@ that form should be displayed.")
(concat hif-ifx-regexp "\\|" hif-elif-regexp "\\|" hif-else-regexp "\\|"
hif-endif-regexp))
(defconst hif-macro-expr-prefix-regexp
- (concat hif-cpp-prefix "\\(if\\(n?def\\)?\\|elif\\|define\\)[ \t]+"))
+ (concat hif-cpp-prefix "\\(if(\\|if\\(n?def\\)?[ \t]+\\|elif\\|define[ \t]+\\)"))
-(defconst hif-white-regexp "[ \t]*")
+(defconst hif-line-concat "\\\\[ \t]*[\n\r]")
+;; If `hif-white-regexp' is modified, `hif-tokenize' might need to be modified
+;; accordingly.
+(defconst hif-white-regexp (concat "\\(?:[ \t]\\|/\\*.*?\\*/"
+ "\\|\\(?:" hif-line-concat "\\)\\)*"))
(defconst hif-define-regexp (concat hif-cpp-prefix "\\(define\\|undef\\)"))
(defconst hif-id-regexp (concat "[[:alpha:]_][[:alnum:]_]*"))
+(defconst hif-etc-regexp "\\.\\.\\.")
(defconst hif-macroref-regexp
(concat hif-white-regexp "\\(" hif-id-regexp "\\)"
"\\("
"(" hif-white-regexp
"\\(" hif-id-regexp "\\)?" hif-white-regexp
"\\(" "," hif-white-regexp hif-id-regexp hif-white-regexp "\\)*"
- "\\(\\.\\.\\.\\)?" hif-white-regexp
+ "\\(" "," hif-white-regexp "\\)?" "\\(" hif-etc-regexp "\\)?" hif-white-regexp
")"
"\\)?" ))
@@ -936,7 +944,11 @@ Assuming we've just performed a `hif-token-regexp' lookup."
(defun hif-tokenize (start end)
"Separate string between START and END into a list of tokens."
(let ((token-list nil)
- (white-regexp "[ \t]+")
+ ;; Similar to `hif-white-regexp' but keep the spaces if there are
+ (white-regexp (concat "\\(?:"
+ "\\([ \t]+\\)\\|/\\*.*?\\*/"
+ "\\|\\(?:" hif-line-concat "\\)"
+ "\\)*"))
token)
(setq hif-simple-token-only t)
(with-syntax-table hide-ifdef-syntax-table
@@ -956,29 +968,31 @@ Assuming we've just performed a `hif-token-regexp' lookup."
(forward-char 2))
((looking-at hif-string-literal-regexp)
- (setq token (substring-no-properties (match-string 1)))
+ (setq token (match-string-no-properties 1))
(goto-char (match-end 0))
(when (looking-at white-regexp)
- (add-text-properties 0 1 '(hif-space t) token)
+ (if (not (zerop (length (match-string-no-properties 1))))
+ (add-text-properties 0 1 '(hif-space t) token))
(goto-char (match-end 0)))
(push token token-list))
((looking-at hif-token-regexp)
(goto-char (match-end 0))
- (setq token (hif-strtok
- (substring-no-properties (match-string 0))))
+ (setq token (hif-strtok (match-string-no-properties 0)))
(push token token-list)
(when (looking-at white-regexp)
- ;; We can't just append a space to the token string, otherwise
- ;; `0xf0 ' ## `01' will become `0xf0 01' instead of the expected
- ;; `0xf001', hence a standalone `hif-space' is placed instead.
- (push 'hif-space token-list)
+ (if (not (zerop (length (match-string-no-properties 1))))
+ ;; We can't just append a space to the token string,
+ ;; otherwise `0xf0 ' ## `01' will become `0xf0 01' instead
+ ;; of the expected `0xf001', hence a standalone `hif-space'
+ ;; is placed instead.
+ (push 'hif-space token-list))
(goto-char (match-end 0))))
((looking-at "\r") ; Sometimes MS-Windows user will leave CR in
(forward-char 1)) ; the source code. Let's not get stuck here.
- (t (error "Bad #if expression: %s" (buffer-string)))))))
+ (t (error "Bad preprocessor expression: %s" (buffer-string)))))))
(if (eq 'hif-space (car token-list))
(setq token-list (cdr token-list))) ;; remove trailing white space
(nreverse token-list))))
@@ -1126,7 +1140,7 @@ this is to emulate the stringification behavior of C++ preprocessor."
(and (eq (car remains) 'hif-space)
(eq (cadr remains) 'hif-lparen)
(setq remains (cdr remains)))))
- ;; No argument, no invocation
+ ;; No argument list, no invocation
tok
;; Argumented macro, get arguments and invoke it.
;; Dynamically bind `hif-token-list' and `hif-token'
@@ -1369,8 +1383,9 @@ factor : `!' factor | `~' factor | `(' exprlist `)' | `defined(' id `)' |
(parmlist nil) ; A "token" list of parameters, will later be parsed
(parm nil))
- (while (or (not (eq (hif-nexttoken keep-space) 'hif-rparen))
- (/= nest 0))
+ (while (and (or (not (eq (hif-nexttoken keep-space) 'hif-rparen))
+ (/= nest 0))
+ hif-token)
(if (eq (car (last parm)) 'hif-comma)
(setq parm nil))
(cond
@@ -1384,6 +1399,8 @@ factor : `!' factor | `~' factor | `(' exprlist `)' | `defined(' id `)' |
(setq parm nil)))
(push hif-token parm))
+ (if (equal parm '(hif-comma)) ;; missing the last argument
+ (setq parm '(nil)))
(push (nreverse parm) parmlist) ; Okay even if PARM is nil
(hif-nexttoken keep-space) ; Drop the `hif-rparen', get next token
(nreverse parmlist)))
@@ -1609,11 +1626,21 @@ and `+='...)."
;; no need to reassemble the list if no `##' presents
l))
-(defun hif-delimit (lis atom)
- (nconc (mapcan (lambda (l) (list l atom))
+(defun hif-delimit (lis elem)
+ (nconc (mapcan (lambda (l) (list l elem))
(butlast lis))
(last lis)))
+(defun hif-delete-nth (n lst)
+ "Non-destructively delete the nth item from a list."
+ (if (zerop n)
+ (cdr lst)
+ ;; non-destructive
+ (let* ((duplst (copy-sequence lst))
+ (node (nthcdr (1- n) duplst)))
+ (setcdr node (cddr node))
+ duplst)))
+
;; Perform token replacement:
(defun hif-macro-supply-arguments (macro-name actual-parms)
"Expand a macro call, replace ACTUAL-PARMS in the macro body."
@@ -1633,49 +1660,160 @@ and `+='...)."
;; For each actual parameter, evaluate each one and associate it
;; with an actual parameter, put it into local table and finally
;; evaluate the macro body.
- (if (setq etc (eq (car formal-parms) 'hif-etc))
+ (if (setq etc (or (eq (car formal-parms) 'hif-etc)
+ (and (eq (car formal-parms) 'hif-etc-c99) 'c99)))
;; Take care of `hif-etc' first. Prefix `hif-comma' back if needed.
(setq formal-parms (cdr formal-parms)))
(setq formal-count (length formal-parms)
actual-count (length actual-parms))
- (if (> formal-count actual-count)
- (error "Too few parameters for macro %S" macro-name)
- (if (< formal-count actual-count)
- (or etc
- (error "Too many parameters for macro %S" macro-name))))
+ ;; Fix empty arguments applied
+ (if (and (= formal-count 1)
+ (null (car formal-parms)))
+ (setq formal-parms nil
+ formal-count (1- formal-count)))
+ (if (and (= actual-count 1)
+ (or (null (car actual-parms))
+ ;; white space as the only argument
+ (equal '(hif-space) (car actual-parms))))
+ (setq actual-parms nil
+ actual-count (1- actual-count)))
+
+ ;; Basic error checking
+ (if etc
+ (if (eq etc 'c99)
+ (if (and (> formal-count 1) ; f(a,b,...)
+ (< actual-count formal-count))
+ (error "C99 variadic argument macro %S need at least %d arguments"
+ macro-name formal-count))
+ ;; GNU style variadic argument
+ (if (and (> formal-count 1)
+ (< actual-count (1- formal-count)))
+ (error "GNU variadic argument macro %S need at least %d arguments"
+ macro-name (1- formal-count))))
+ (if (> formal-count actual-count)
+ (error "Too few parameters for macro %S; %d instead of %d"
+ macro-name actual-count formal-count)
+ (if (< formal-count actual-count)
+ (error "Too many parameters for macro %S; %d instead of %d"
+ macro-name actual-count formal-count))))
;; Perform token replacement on the MACRO-BODY with the parameters
- (while (setq formal (pop formal-parms))
- ;; Prevent repetitive substitution, thus cannot use `subst'
- ;; for example:
- ;; #define mac(a,b) (a+b)
- ;; #define testmac mac(b,y)
- ;; testmac should expand to (b+y): replace of argument a and b
- ;; occurs simultaneously, not sequentially. If sequentially,
- ;; according to the argument order, it will become:
- ;; 1. formal parm #1 'a' replaced by actual parm 'b', thus (a+b)
- ;; becomes (b+b)
- ;; 2. formal parm #2 'b' replaced by actual parm 'y', thus (b+b)
- ;; becomes (y+y).
- (setq macro-body
- ;; Unlike `subst', `substitute' replace only the top level
- ;; instead of the whole tree; more importantly, it's not
- ;; destructive.
- (cl-substitute (if (and etc (null formal-parms))
- (hif-delimit actual-parms 'hif-comma)
- (car actual-parms))
- formal macro-body))
- (setq actual-parms (cdr actual-parms)))
-
- ;; Replacement completed, stringifiy and concatenate the token list.
- ;; Stringification happens must take place before flattening, otherwise
- ;; only the first token will be stringified.
- (setq macro-body
- (flatten-tree (hif-token-stringification macro-body)))
-
- ;; Token concatenation happens here, keep single 'hif-space
- (hif-keep-single (hif-token-concatenation macro-body) 'hif-space))))
+
+ ;; Every substituted argument in the macro-body must be in list form so
+ ;; that it won't again be substituted incorrectly in later iterations.
+ ;; Finally we will flatten the list to fix that.
+ (cl-loop
+ do
+ ;; Note that C99 '...' and GNU 'x...' allow empty match
+ (setq formal (pop formal-parms))
+ ;;
+ ;; Prevent repetitive substitution, thus cannot use `subst'
+ ;; for example:
+ ;; #define mac(a,b) (a+b)
+ ;; #define testmac mac(b,y)
+ ;; testmac should expand to (b+y): replace of argument a and b
+ ;; occurs simultaneously, not sequentially. If sequentially,
+ ;; according to the argument order, it will become:
+ ;; 1. formal parm #1 'a' replaced by actual parm 'b', thus (a+b)
+ ;; becomes (b+b)
+ ;; 2. formal parm #2 'b' replaced by actual parm 'y', thus (b+b)
+ ;; becomes (y+y).
+ ;; Unlike `subst', `cl-substitute' replace only the top level
+ ;; instead of the whole tree; more importantly, it's not
+ ;; destructive.
+ ;;
+ (if (not (and (null formal-parms) etc))
+ ;; One formal with one actual
+ (setq macro-body
+ (cl-substitute (car actual-parms) formal macro-body))
+ ;; `formal-parms' used up, now take care of '...'
+ (cond
+
+ ((eq etc 'c99) ; C99 __VA_ARGS__ style '...'
+ (when formal
+ (setq macro-body
+ (cl-substitute (car actual-parms) formal macro-body))
+ ;; Now the whole __VA_ARGS__ represents the whole
+ ;; remaining actual params
+ (pop actual-parms))
+ ;; Replace if __VA_ARGS__ presents:
+ ;; if yes, see if it's prefixed with ", ##" or not,
+ ;; if yes, remove the "##", then if actual-params is
+ ;; exhausted, remove the prefixed ',' as well.
+ ;; Prepare for destructive operation
+ (let ((rem-body (copy-sequence macro-body))
+ new-body va left part)
+ ;; Find each __VA_ARGS__ and remove its immediate prefixed '##'
+ ;; and comma if presents and if `formal_param' is exhausted
+ (while (setq va (cl-position '__VA_ARGS__ rem-body))
+ ;; Split REM-BODY @ __VA_ARGS__ into LEFT and right
+ (setq part nil)
+ (if (zerop va)
+ (setq left nil ; __VA_ARGS__ trimed
+ rem-body (cdr rem-body))
+ (setq left rem-body
+ rem-body (cdr (nthcdr va rem-body))) ; _V_ removed
+ (setcdr (nthcdr va left) nil) ; now _V_ be the last in LEFT
+ ;; now LEFT=(, w? ## w? _V_) rem=(W X Y) where w = white space
+ (setq left (cdr (nreverse left)))) ; left=(w? ## w? ,)
+
+ ;; Try to recognize w?##w? and remove ", ##" if found
+ ;; (remember head = __VA_ARGS__ is temporarily removed)
+ (while (and left (eq 'hif-space (car left))) ; skip whites
+ (setq part (cons 'hif-space part)
+ left (cdr left)))
+
+ (if (eq (car left) 'hif-token-concat) ; match '##'
+ (if actual-parms
+ ;; Keep everything
+ (setq part (append part (cdr left)))
+ ;; `actual-params' exhausted, delete ',' if presents
+ (while (and left (eq 'hif-space (car left))) ; skip whites
+ (setq part (cons 'hif-space part)
+ left (cdr left)))
+ (setq part
+ (append part
+ (if (eq (car left) 'hif-comma) ; match ','
+ (cdr left)
+ left))))
+ ;; No immediate '##' found
+ (setq part (append part left)))
+
+ ;; Insert __VA_ARGS__ as a list
+ (push (hif-delimit actual-parms 'hif-comma) part)
+ ;; Reverse `left' back
+ (setq left (nreverse part)
+ new-body (append new-body left)))
+
+ ;; Replacement of __VA_ARGS__ done here, add rem-body back
+ (setq macro-body (append new-body rem-body)
+ actual-parms nil)))
+
+ (etc ; GNU style '...', substitute last argument
+ (if (null actual-parms)
+ ;; Must be non-destructive otherwise the original function
+ ;; definition defined in `hide-ifdef-env' will be destroyed.
+ (setq macro-body (remove formal macro-body))
+ (setq macro-body
+ (cl-substitute (hif-delimit actual-parms 'hif-comma)
+ formal macro-body)
+ actual-parms nil)))
+
+ (t
+ (error "Interal error: impossible case."))))
+
+ (pop actual-parms)
+ while actual-parms) ; end cl-loop
+
+ ;; Replacement completed, stringifiy and concatenate the token list.
+ ;; Stringification happens must take place before flattening, otherwise
+ ;; only the first token will be stringified.
+ (setq macro-body
+ (flatten-tree (hif-token-stringification macro-body))))
+
+ ;; Token concatenation happens here, keep single 'hif-space
+ (hif-keep-single (hif-token-concatenation macro-body) 'hif-space)))
(defun hif-invoke (macro-name actual-parms)
"Invoke a macro by expanding it, reparse macro-body and finally invoke it."
@@ -1710,7 +1848,9 @@ and `+='...)."
Do this when cursor is at the beginning of `regexp' (i.e. #ifX)."
(let ((case-fold-search nil))
(save-excursion
- (re-search-forward regexp)
+ (if (re-search-forward regexp)
+ (if (= ?\( (char-before)) ;; "#if(" found
+ (goto-char (1- (point)))))
(let* ((curr-regexp (match-string 0))
(defined (string-match hif-ifxdef-regexp curr-regexp))
(negate (and defined
@@ -1724,29 +1864,48 @@ Do this when cursor is at the beginning of `regexp' (i.e. #ifX)."
(setq tokens (list 'hif-not tokens)))
(hif-parse-exp tokens)))))
+(defun hif-is-in-comment ()
+ "Check if we're currently within a C(++) comment."
+ (or (nth 4 (syntax-ppss))
+ (looking-at "/[/*]")))
+
+(defun hif-search-ifX-regexp (hif-regexp &optional backward)
+ "Search for a valid ifX regexp defined in hideif."
+ (let ((start (point))
+ (re-search-func (if backward
+ #'re-search-backward
+ #'re-search-forward))
+ (limit (if backward (point-min) (point-max)))
+ found)
+ (while (and (setq found
+ (funcall re-search-func hif-regexp limit t))
+ (hif-is-in-comment)))
+ ;; Jump to the pattern if found
+ (if found
+ (unless backward
+ (setq found
+ (goto-char (- (point) (length (match-string 0))))))
+ (goto-char start))
+ found))
+
(defun hif-find-any-ifX ()
"Move to next #if..., or #ifndef, at point or after."
;; (message "find ifX at %d" (point))
- (prog1
- (re-search-forward hif-ifx-regexp (point-max) t)
- (beginning-of-line)))
-
+ (hif-search-ifX-regexp hif-ifx-regexp))
(defun hif-find-next-relevant ()
"Move to next #if..., #elif..., #else, or #endif, after the current line."
;; (message "hif-find-next-relevant at %d" (point))
(end-of-line)
- ;; Avoid infinite recursion by only going to line-beginning if match found
- (if (re-search-forward hif-ifx-else-endif-regexp (point-max) t)
- (beginning-of-line)))
+ ;; Avoid infinite recursion by going to the pattern only if a match is found
+ (hif-search-ifX-regexp hif-ifx-else-endif-regexp))
(defun hif-find-previous-relevant ()
"Move to previous #if..., #else, or #endif, before the current line."
;; (message "hif-find-previous-relevant at %d" (point))
(beginning-of-line)
- ;; Avoid infinite recursion by only going to line-beginning if match found
- (if (re-search-backward hif-ifx-else-endif-regexp (point-min) t)
- (beginning-of-line)))
+ ;; Avoid infinite recursion by going to the pattern only if a match is found
+ (hif-search-ifX-regexp hif-ifx-else-endif-regexp 't))
(defun hif-looking-at-ifX ()
@@ -1931,6 +2090,7 @@ Point is left unchanged."
((hif-looking-at-else)
(setq else (point)))
(t
+ (beginning-of-line) ; otherwise #endif line will be hidden
(setq end (point)))))
;; If found #else, look for #endif.
(when else
@@ -1940,6 +2100,7 @@ Point is left unchanged."
(hif-ifdef-to-endif))
(if (hif-looking-at-else)
(error "Found two elses in a row? Broken!"))
+ (beginning-of-line) ; otherwise #endif line will be hidden
(setq end (point))) ; (line-end-position)
(hif-make-range start end else elif))))
@@ -2085,16 +2246,20 @@ Refer to `hide-ifdef-expand-reinclusion-guard' for more details."
(eq (car def) 'hif-define-macro))
(let ((cdef (concat "#define " name))
(parmlist (cadr def))
- s)
+ p s etc)
(setq def (caddr def))
;; parmlist
(when parmlist
(setq cdef (concat cdef "("))
- (while (car parmlist)
- (setq cdef (concat cdef (symbol-name (car parmlist))
- (if (cdr parmlist) ","))
+ (if (setq etc (or (eq (setq p (car parmlist)) 'hif-etc)
+ (and (eq p 'hif-etc-c99) 'c99)))
+ (pop parmlist))
+ (while (setq p (car parmlist))
+ (setq cdef (concat cdef (symbol-name p) (if (cdr parmlist) ","))
parmlist (cdr parmlist)))
- (setq cdef (concat cdef ")")))
+ (setq cdef (concat cdef
+ (if etc (concat (if (eq etc 'c99) ",") "..."))
+ ")")))
(setq cdef (concat cdef " "))
;; body
(while def
@@ -2221,25 +2386,38 @@ however, when this command is prefixed, it will display the error instead."
result))))
(defun hif-parse-macro-arglist (str)
- "Parse argument list formatted as `( arg1 [ , argn] [...] )'.
+ "Parse argument list formatted as `( arg1 [ , argn] [,] [...] )'.
The `...' is also included. Return a list of the arguments, if `...' exists the
first arg will be `hif-etc'."
(let* ((hif-simple-token-only nil) ; Dynamic binding var for `hif-tokenize'
(tokenlist
(cdr (hif-tokenize
(- (point) (length str)) (point)))) ; Remove `hif-lparen'
- etc result token)
- (while (not (eq (setq token (pop tokenlist)) 'hif-rparen))
+ etc result token prevtok prev2tok)
+ (while (not (eq (setq prev2tok prevtok
+ prevtok token
+ token (pop tokenlist)) 'hif-rparen))
(cond
((eq token 'hif-etc)
- (setq etc t))
+ ;; GNU type "..." or C99 type
+ (setq etc (if (or (null prevtok)
+ (eq prevtok 'hif-comma)
+ (and (eq prevtok 'hif-space)
+ (eq prev2tok 'hif-comma)))
+ 'c99 t)))
((eq token 'hif-comma)
- t)
+ (if etc
+ (error "Syntax error: no comma allowed after `...'.")))
(t
(push token result))))
- (if etc
- (cons 'hif-etc (nreverse result))
- (nreverse result))))
+ (setq result (nreverse result))
+ (cond
+ ((eq etc 'c99)
+ (cons 'hif-etc-c99 result))
+ ((eq etc t)
+ (cons 'hif-etc result))
+ (t
+ result))))
;; The original version of hideif evaluates the macro early and store the
;; final values for the defined macro into the symbol database (aka
@@ -2280,9 +2458,11 @@ first arg will be `hif-etc'."
(let* ((defining (string= "define" (match-string 2)))
(name (and (re-search-forward hif-macroref-regexp max t)
(match-string 1)))
- (parmlist (or (and (match-string 3) ; First arg id found
+ (parmlist (or (and (or (match-string 3) ; First arg id found
+ (match-string 6)) ; '...' found
(delq 'hif-space
- (hif-parse-macro-arglist (match-string 2))))
+ (hif-parse-macro-arglist
+ (match-string 2))))
(and (match-string 2) ; empty arglist
(list nil)))))
(if defining
@@ -2325,7 +2505,8 @@ first arg will be `hif-etc'."
(expr (and tokens
;; `hif-simple-token-only' is checked only
;; here.
- (or (and hif-simple-token-only
+ (or (and (null parmlist)
+ hif-simple-token-only
(listp tokens)
(= (length tokens) 1)
(hif-parse-exp tokens))
@@ -2354,13 +2535,22 @@ first arg will be `hif-etc'."
(save-excursion
(save-restriction
;; (mark-region min max) ;; for debugging
+ (and min (goto-char min))
(setq hif-verbose-define-count 0)
(forward-comment (point-max))
- (while (hif-find-define min max)
- (forward-comment (point-max))
- (setf min (point)))
+ (setq min (point))
+ (let ((breakloop nil))
+ (while (and (not breakloop)
+ (hif-find-define min max))
+ (forward-comment (point-max))
+ (if (and max
+ (> (point) max))
+ (setq max (point)
+ breakloop t))
+ (setq min (point))))
(if max (goto-char max)
- (goto-char (point-max))))))
+ (goto-char (point-max))
+ nil))))
(defun hide-ifdef-guts ()
"Does most of the work of `hide-ifdefs'.
@@ -2376,7 +2566,7 @@ It does not do the work that's pointless to redo on a recursive entry."
min max)
(setq hif-__COUNTER__ 0)
(goto-char (point-min))
- (setf min (point))
+ (setq min (point))
;; Without this `condition-case' it would be easier to see which
;; operation went wrong thru the backtrace `iff' user realize
;; the underlying meaning of all hif-* operation; for example,
@@ -2384,11 +2574,11 @@ It does not do the work that's pointless to redo on a recursive entry."
;; operation arguments would be invalid.
(condition-case err
(cl-loop do
- (setf max (hif-find-any-ifX))
- (hif-add-new-defines min max)
+ (setq max (hif-find-any-ifX))
+ (setq max (hif-add-new-defines min max))
(if max
(hif-possibly-hide expand-header))
- (setf min (point))
+ (setq min (point))
while max)
(error (error "Error: failed at line %d %S"
(line-number-at-pos) err))))))
diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el
index fca00cdce4f..47d87112ffb 100644
--- a/lisp/progmodes/java-ts-mode.el
+++ b/lisp/progmodes/java-ts-mode.el
@@ -314,6 +314,11 @@ Return nil if there is no name or if NODE is not a defun node."
;; Comments.
(c-ts-common-comment-setup)
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("line_comment"
+ "block_comment"
+ "text_block")))
+
;; Indent.
(setq-local c-ts-common-indent-type-regexp-alist
`((block . ,(rx (or "class_body"
@@ -352,6 +357,29 @@ Return nil if there is no name or if NODE is not a defun node."
"constructor_declaration")))
(setq-local treesit-defun-name-function #'java-ts-mode--defun-name)
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt '("statement"
+ "local_variable_declaration"
+ "field_declaration"
+ "module_declaration"
+ "package_declaration"
+ "import_declaration")))
+
+ (setq-local treesit-sexp-type-regexp
+ (regexp-opt '("annotation"
+ "parenthesized_expression"
+ "argument_list"
+ "identifier"
+ "modifiers"
+ "block"
+ "body"
+ "literal"
+ "access"
+ "reference"
+ "_type"
+ "true"
+ "false")))
+
;; Font-lock.
(setq-local treesit-font-lock-settings java-ts-mode--font-lock-settings)
(setq-local treesit-font-lock-feature-list
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index 52ed19cc682..f68ecb6fa6c 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3801,6 +3801,54 @@ Currently there are `js-mode' and `js-ts-mode'."
;;(syntax-propertize (point-max))
)
+(defvar js--treesit-sentence-nodes
+ '("import_statement"
+ "debugger_statement"
+ "expression_statement"
+ "if_statement"
+ "switch_statement"
+ "for_statement"
+ "for_in_statement"
+ "while_statement"
+ "do_statement"
+ "try_statement"
+ "with_statement"
+ "break_statement"
+ "continue_statement"
+ "return_statement"
+ "throw_statement"
+ "empty_statement"
+ "labeled_statement"
+ "variable_declaration"
+ "lexical_declaration"
+ "jsx_element"
+ "jsx_self_closing_element")
+ "Nodes that designate sentences in JavaScript.
+See `treesit-sentence-type-regexp' for more information.")
+
+(defvar js--treesit-sexp-nodes
+ '("expression"
+ "pattern"
+ "array"
+ "function"
+ "string"
+ "escape"
+ "template"
+ "regex"
+ "number"
+ "identifier"
+ "this"
+ "super"
+ "true"
+ "false"
+ "null"
+ "undefined"
+ "arguments"
+ "pair"
+ "jsx")
+ "Nodes that designate sexps in JavaScript.
+See `treesit-sexp-type-regexp' for more information.")
+
;;;###autoload
(define-derived-mode js-ts-mode js-base-mode "JavaScript"
"Major mode for editing JavaScript.
@@ -3817,6 +3865,11 @@ Currently there are `js-mode' and `js-ts-mode'."
;; Comment.
(c-ts-common-comment-setup)
(setq-local comment-multi-line t)
+
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment"
+ "template_string")))
+
;; Electric-indent.
(setq-local electric-indent-chars
(append "{}():;,<>/" electric-indent-chars)) ;FIXME: js2-mode adds "[]*".
@@ -3835,6 +3888,13 @@ Currently there are `js-mode' and `js-ts-mode'."
"function_declaration"
"lexical_declaration")))
(setq-local treesit-defun-name-function #'js--treesit-defun-name)
+
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt js--treesit-sentence-nodes))
+
+ (setq-local treesit-sexp-type-regexp
+ (regexp-opt js--treesit-sexp-nodes))
+
;; Fontification.
(setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
(setq-local treesit-font-lock-feature-list
diff --git a/lisp/progmodes/json-ts-mode.el b/lisp/progmodes/json-ts-mode.el
index 6272c0073e1..f56d118c0fe 100644
--- a/lisp/progmodes/json-ts-mode.el
+++ b/lisp/progmodes/json-ts-mode.el
@@ -147,6 +147,8 @@ Return nil if there is no name or if NODE is not a defun node."
(rx (or "pair" "object")))
(setq-local treesit-defun-name-function #'json-ts-mode--defun-name)
+ (setq-local treesit-sentence-type-regexp "pair")
+
;; Font-lock.
(setq-local treesit-font-lock-settings json-ts-mode--font-lock-settings)
(setq-local treesit-font-lock-feature-list
diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el
index 087974bd1f0..5ea03b9e852 100644
--- a/lisp/progmodes/make-mode.el
+++ b/lisp/progmodes/make-mode.el
@@ -1326,14 +1326,12 @@ Fill comments, backslashed lines, and variable definitions specially."
(let ((inhibit-read-only t))
(goto-char (point-min))
(erase-buffer)
- (mapconcat
+ (mapc
(lambda (item) (insert (makefile-browser-format-target-line (car item) nil) "\n"))
- targets
- "")
- (mapconcat
+ targets)
+ (mapc
(lambda (item) (insert (makefile-browser-format-macro-line (car item) nil) "\n"))
- macros
- "")
+ macros)
(sort-lines nil (point-min) (point-max))
(goto-char (1- (point-max)))
(delete-char 1) ; remove unnecessary newline at eob
diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el
index 0f3a477abe5..04071703184 100644
--- a/lisp/progmodes/prog-mode.el
+++ b/lisp/progmodes/prog-mode.el
@@ -30,7 +30,12 @@
;;; Code:
(eval-when-compile (require 'cl-lib)
- (require 'subr-x))
+ (require 'subr-x)
+ (require 'treesit))
+
+(declare-function treesit-available-p "treesit.c")
+(declare-function treesit-parser-list "treesit.c")
+(declare-function treesit-node-type "treesit.c")
(defgroup prog-mode nil
"Generic programming mode, from which others derive."
@@ -102,7 +107,8 @@
(defvar-keymap prog-mode-map
:doc "Keymap used for programming modes."
- "C-M-q" #'prog-indent-sexp)
+ "C-M-q" #'prog-indent-sexp
+ "M-q" #'prog-fill-reindent-defun)
(defvar prog-indentation-context nil
"When non-nil, provides context for indenting embedded code chunks.
@@ -140,6 +146,31 @@ instead."
(end (progn (forward-sexp 1) (point))))
(indent-region start end nil))))
+(defun prog-fill-reindent-defun (&optional argument)
+ "Refill or reindent the paragraph or defun that contains point.
+
+If the point is in a string or a comment, fill the paragraph that
+contains point or follows point.
+
+Otherwise, reindent the function definition that contains point
+or follows point."
+ (interactive "P")
+ (save-excursion
+ (let ((treesit-text-node
+ (and (treesit-available-p)
+ (treesit-parser-list)
+ (string-match-p
+ treesit-text-type-regexp
+ (treesit-node-type (treesit-node-at (point)))))))
+ (if (or treesit-text-node
+ (nth 8 (syntax-ppss))
+ (re-search-forward "\\s-*\\s<" (line-end-position) t))
+ (fill-paragraph argument (region-active-p))
+ (beginning-of-defun)
+ (let ((start (point)))
+ (end-of-defun)
+ (indent-region start (point) nil))))))
+
(defun prog-first-column ()
"Return the indentation column normally used for top-level constructs."
(or (car prog-indentation-context) 0))
diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el
index a18b918db62..04c67710d71 100644
--- a/lisp/progmodes/project.el
+++ b/lisp/progmodes/project.el
@@ -202,6 +202,17 @@ CL struct.")
"Value to use instead of `default-directory' when detecting the project.
When it is non-nil, `project-current' will always skip prompting too.")
+(defcustom project-prompter #'project-prompt-project-dir
+ "Function to call to prompt for a project.
+Called with no arguments and should return a project root dir."
+ :type '(choice (const :tag "Prompt for a project directory"
+ project-prompt-project-dir)
+ (const :tag "Prompt for a project name"
+ project-prompt-project-name)
+ (function :tag "Custom function" nil))
+ :group 'project
+ :version "30.1")
+
;;;###autoload
(defun project-current (&optional maybe-prompt directory)
"Return the project instance in DIRECTORY, defaulting to `default-directory'.
@@ -226,7 +237,7 @@ of the project instance object."
(pr)
((unless project-current-directory-override
maybe-prompt)
- (setq directory (project-prompt-project-dir)
+ (setq directory (funcall project-prompter)
pr (project--find-in-directory directory))))
(when maybe-prompt
(if pr
@@ -1251,8 +1262,10 @@ If you exit the `query-replace', you can later continue the
(defun project-prefixed-buffer-name (mode)
(concat "*"
- (file-name-nondirectory
- (directory-file-name default-directory))
+ (if-let ((proj (project-current nil)))
+ (project-name proj)
+ (file-name-nondirectory
+ (directory-file-name default-directory)))
"-"
(downcase mode)
"*"))
@@ -1264,7 +1277,7 @@ If non-nil, it overrides `compilation-buffer-name-function' for
:version "28.1"
:group 'project
:type '(choice (const :tag "Default" nil)
- (const :tag "Prefixed with root directory name"
+ (const :tag "Prefixed with project name"
project-prefixed-buffer-name)
(function :tag "Custom function")))
@@ -1616,7 +1629,7 @@ passed to `message' as its first argument."
"Remove directory PROJECT-ROOT from the project list.
PROJECT-ROOT is the root directory of a known project listed in
the project list."
- (interactive (list (project-prompt-project-dir)))
+ (interactive (list (funcall project-prompter)))
(project--remove-from-project-list
project-root "Project `%s' removed from known projects"))
@@ -1640,6 +1653,32 @@ It's also possible to enter an arbitrary directory not in the list."
(read-directory-name "Select directory: " default-directory nil t)
pr-dir)))
+(defun project-prompt-project-name ()
+ "Prompt the user for a project, by name, that is one of the known project roots.
+The project is chosen among projects known from the project list,
+see `project-list-file'.
+It's also possible to enter an arbitrary directory not in the list."
+ (let* ((dir-choice "... (choose a dir)")
+ (choices
+ (let (ret)
+ (dolist (dir (project-known-project-roots))
+ ;; we filter out directories that no longer map to a project,
+ ;; since they don't have a clean project-name.
+ (if-let (proj (project--find-in-directory dir))
+ (push (cons (project-name proj) proj) ret)))
+ ret))
+ ;; XXX: Just using this for the category (for the substring
+ ;; completion style).
+ (table (project--file-completion-table (cons dir-choice choices)))
+ (pr-name ""))
+ (while (equal pr-name "")
+ ;; If the user simply pressed RET, do this again until they don't.
+ (setq pr-name (completing-read "Select project: " table nil t)))
+ (if (equal pr-name dir-choice)
+ (read-directory-name "Select directory: " default-directory nil t)
+ (let ((proj (assoc pr-name choices)))
+ (if (stringp proj) proj (project-root (cdr proj)))))))
+
;;;###autoload
(defun project-known-project-roots ()
"Return the list of root directories of all known projects."
@@ -1827,7 +1866,7 @@ made from `project-switch-commands'.
When called in a program, it will use the project corresponding
to directory DIR."
- (interactive (list (project-prompt-project-dir)))
+ (interactive (list (funcall project-prompter)))
(let ((command (if (symbolp project-switch-commands)
project-switch-commands
(project--switch-project-command))))
diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el
index 1b48fe9c3a8..66dea8803b3 100644
--- a/lisp/progmodes/prolog.el
+++ b/lisp/progmodes/prolog.el
@@ -828,7 +828,7 @@ Relevant only when `prolog-imenu-flag' is non-nil."
((not (zerop (skip-chars-forward prolog-operator-chars))))
((not (zerop (skip-syntax-forward "w_'"))))
;; In case of non-ASCII punctuation.
- ((not (zerop (skip-syntax-forward ".")))))
+ (t (skip-syntax-forward ".")))
(point))))
(defun prolog-smie-backward-token ()
@@ -842,7 +842,7 @@ Relevant only when `prolog-imenu-flag' is non-nil."
((not (zerop (skip-chars-backward prolog-operator-chars))))
((not (zerop (skip-syntax-backward "w_'"))))
;; In case of non-ASCII punctuation.
- ((not (zerop (skip-syntax-backward ".")))))
+ (t (skip-syntax-backward ".")))
(point))))
(defconst prolog-smie-grammar
diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el
index beccb8182a7..d2c4da794ac 100644
--- a/lisp/progmodes/ruby-mode.el
+++ b/lisp/progmodes/ruby-mode.el
@@ -1850,93 +1850,92 @@ For example:
File.open
See `add-log-current-defun-function'."
- (condition-case nil
- (save-excursion
- (let* ((indent (ruby--add-log-current-indent))
- mname mlist
- (start (point))
- (make-definition-re
- (lambda (re &optional method-name?)
- (concat "^[ \t]*" re "[ \t]+"
- "\\("
- ;; \\. and :: for class methods
- "\\([A-Za-z_]" ruby-symbol-re "*[?!]?"
- "\\|"
- (if method-name? ruby-operator-re "\\.")
- "\\|::" "\\)"
- "+\\)")))
- (definition-re (funcall make-definition-re ruby-defun-beg-re t))
- (module-re (funcall make-definition-re "\\(class\\|module\\)")))
- ;; Get the current method definition (or class/module).
- (when (catch 'found
- (while (and (re-search-backward definition-re nil t)
- (if (if (string-equal "def" (match-string 1))
- ;; We're inside a method.
- (if (ruby-block-contains-point (1- start))
- t
- ;; Try to match a method only once.
- (setq definition-re module-re)
- nil)
- ;; Class/module. For performance,
- ;; comparing indentation.
- (or (not (numberp indent))
- (> indent (current-indentation))))
- (throw 'found t)
- t))))
- (goto-char (match-beginning 1))
- (if (not (string-equal "def" (match-string 1)))
- (setq mlist (list (match-string 2)))
- (setq mname (match-string 2)))
- (setq indent (current-column))
- (beginning-of-line))
- ;; Walk up the class/module nesting.
- (while (and indent
- (> indent 0)
- (re-search-backward module-re nil t))
- (goto-char (match-beginning 1))
- (when (< (current-column) indent)
- (setq mlist (cons (match-string 2) mlist))
- (setq indent (current-column))
- (beginning-of-line)))
- ;; Process the method name.
- (when mname
- (let ((mn (split-string mname "\\.\\|::")))
- (if (cdr mn)
- (progn
- (unless (string-equal "self" (car mn)) ; def self.foo
- ;; def C.foo
- (let ((ml (nreverse mlist)))
- ;; If the method name references one of the
- ;; containing modules, drop the more nested ones.
- (while ml
- (if (string-equal (car ml) (car mn))
- (setq mlist (nreverse (cdr ml)) ml nil))
- (or (setq ml (cdr ml)) (nreverse mlist))))
- (if mlist
- (setcdr (last mlist) (butlast mn))
- (setq mlist (butlast mn))))
- (setq mname (concat "." (car (last mn)))))
- ;; See if the method is in singleton class context.
- (let ((in-singleton-class
- (when (re-search-forward ruby-singleton-class-re start t)
- (goto-char (match-beginning 0))
- ;; FIXME: Optimize it out, too?
- ;; This can be slow in a large file, but
- ;; unlike class/module declaration
- ;; indentations, method definitions can be
- ;; intermixed with these, and may or may not
- ;; be additionally indented after visibility
- ;; keywords.
- (ruby-block-contains-point start))))
- (setq mname (concat
- (if in-singleton-class "." "#")
- mname))))))
- ;; Generate the string.
- (if (consp mlist)
- (setq mlist (mapconcat (function identity) mlist "::")))
- (if mname
- (if mlist (concat mlist mname) mname)
- mlist)))))
+ (save-excursion
+ (let* ((indent (ruby--add-log-current-indent))
+ mname mlist
+ (start (point))
+ (make-definition-re
+ (lambda (re &optional method-name?)
+ (concat "^[ \t]*" re "[ \t]+"
+ "\\("
+ ;; \\. and :: for class methods
+ "\\([A-Za-z_]" ruby-symbol-re "*[?!]?"
+ "\\|"
+ (if method-name? ruby-operator-re "\\.")
+ "\\|::" "\\)"
+ "+\\)")))
+ (definition-re (funcall make-definition-re ruby-defun-beg-re t))
+ (module-re (funcall make-definition-re "\\(class\\|module\\)")))
+ ;; Get the current method definition (or class/module).
+ (when (catch 'found
+ (while (and (re-search-backward definition-re nil t)
+ (if (if (string-equal "def" (match-string 1))
+ ;; We're inside a method.
+ (if (ruby-block-contains-point (1- start))
+ t
+ ;; Try to match a method only once.
+ (setq definition-re module-re)
+ nil)
+ ;; Class/module. For performance,
+ ;; comparing indentation.
+ (or (not (numberp indent))
+ (> indent (current-indentation))))
+ (throw 'found t)
+ t))))
+ (goto-char (match-beginning 1))
+ (if (not (string-equal "def" (match-string 1)))
+ (setq mlist (list (match-string 2)))
+ (setq mname (match-string 2)))
+ (setq indent (current-column))
+ (beginning-of-line))
+ ;; Walk up the class/module nesting.
+ (while (and indent
+ (> indent 0)
+ (re-search-backward module-re nil t))
+ (goto-char (match-beginning 1))
+ (when (< (current-column) indent)
+ (setq mlist (cons (match-string 2) mlist))
+ (setq indent (current-column))
+ (beginning-of-line)))
+ ;; Process the method name.
+ (when mname
+ (let ((mn (split-string mname "\\.\\|::")))
+ (if (cdr mn)
+ (progn
+ (unless (string-equal "self" (car mn)) ; def self.foo
+ ;; def C.foo
+ (let ((ml (nreverse mlist)))
+ ;; If the method name references one of the
+ ;; containing modules, drop the more nested ones.
+ (while ml
+ (if (string-equal (car ml) (car mn))
+ (setq mlist (nreverse (cdr ml)) ml nil))
+ (or (setq ml (cdr ml)) (nreverse mlist))))
+ (if mlist
+ (setcdr (last mlist) (butlast mn))
+ (setq mlist (butlast mn))))
+ (setq mname (concat "." (car (last mn)))))
+ ;; See if the method is in singleton class context.
+ (let ((in-singleton-class
+ (when (re-search-forward ruby-singleton-class-re start t)
+ (goto-char (match-beginning 0))
+ ;; FIXME: Optimize it out, too?
+ ;; This can be slow in a large file, but
+ ;; unlike class/module declaration
+ ;; indentations, method definitions can be
+ ;; intermixed with these, and may or may not
+ ;; be additionally indented after visibility
+ ;; keywords.
+ (ruby-block-contains-point start))))
+ (setq mname (concat
+ (if in-singleton-class "." "#")
+ mname))))))
+ ;; Generate the string.
+ (if (consp mlist)
+ (setq mlist (mapconcat (function identity) mlist "::")))
+ (if mname
+ (if mlist (concat mlist mname) mname)
+ mlist))))
(defun ruby-block-contains-point (pt)
(save-excursion
diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el
index 91d65a2777b..7a00977f14a 100644
--- a/lisp/progmodes/ruby-ts-mode.el
+++ b/lisp/progmodes/ruby-ts-mode.el
@@ -1086,6 +1086,15 @@ leading double colon is not added."
(put-text-property pos (1+ pos) 'syntax-table
(string-to-syntax "!"))))))))
+(defun ruby-ts--sexp-p (node)
+ ;; Skip parenless calls (implicit parens are both non-obvious to the
+ ;; user, and might take over when we want to just over some physical
+ ;; parens/braces).
+ (or (not (equal (treesit-node-type node)
+ "argument_list"))
+ (equal (treesit-node-type (treesit-node-child node 0))
+ "(")))
+
(defvar-keymap ruby-ts-mode-map
:doc "Keymap used in Ruby mode"
:parent prog-mode-map
@@ -1113,6 +1122,45 @@ leading double colon is not added."
;; Navigation.
(setq-local treesit-defun-type-regexp ruby-ts--method-regex)
+ (setq-local treesit-sexp-type-regexp
+ (cons (rx
+ bol
+ (or
+ "class"
+ "module"
+ "method"
+ "array"
+ "hash"
+ "parenthesized_statements"
+ "method_parameters"
+ "array_pattern"
+ "hash_pattern"
+ "if"
+ "unless"
+ "case"
+ "case_match"
+ "when"
+ "block"
+ "do_block"
+ "begin"
+ "integer"
+ "identifier"
+ "constant"
+ "simple_symbol"
+ "hash_key_symbol"
+ "symbol_array"
+ "string"
+ "string_array"
+ "heredoc_body"
+ "regex"
+ "argument_list"
+ "interpolation"
+ "instance_variable"
+ "global_variable"
+ )
+ eol)
+ #'ruby-ts--sexp-p))
+
;; AFAIK, Ruby can not nest methods
(setq-local treesit-defun-prefer-top-level nil)
diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 54da1e0468e..0cde1f387e0 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -1042,7 +1042,9 @@ subshells can nest."
;; Maybe we've bumped into an escaped newline.
(sh-is-quoted-p (point)))
(backward-char 1))
- (when (eq (char-before) ?|)
+ (when (and
+ (eq (char-before) ?|)
+ (not (eq (char-before (1- (point))) ?\;)))
(backward-char 1) t)))
(and (> (point) (1+ (point-min)))
(progn (backward-char 2)
@@ -1053,7 +1055,7 @@ subshells can nest."
;; a normal command rather than the real `in' keyword.
;; I.e. we should look back to try and find the
;; corresponding `case'.
- (and (looking-at ";[;&]\\|\\_<in")
+ (and (looking-at ";\\(?:;&?\\|[&|]\\)\\|\\_<in")
;; ";; esac )" is a case that looks
;; like a case-pattern but it's really just a close
;; paren after a case statement. I.e. if we skipped
@@ -1628,6 +1630,10 @@ not written in Bash or sh."
( bracket delimiter misc-punctuation operator)))
(setq-local treesit-font-lock-settings
sh-mode--treesit-settings)
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment"
+ "heredoc_start"
+ "heredoc_body")))
(setq-local treesit-defun-type-regexp "function_definition")
(treesit-major-mode-setup)))
@@ -1785,8 +1791,9 @@ before the newline and in that case point should be just before the token."
(pattern (rpattern) ("case-(" rpattern))
(branches (branches ";;" branches)
(branches ";&" branches) (branches ";;&" branches) ;bash.
+ (branches ";|" branches) ;zsh.
(pattern "case-)" cmd)))
- '((assoc ";;" ";&" ";;&"))
+ '((assoc ";;" ";&" ";;&" ";|"))
'((assoc ";" "&") (assoc "&&" "||") (assoc "|" "|&")))))
(defconst sh-smie--sh-operators
@@ -2011,7 +2018,7 @@ May return nil if the line should not be treated as continued."
(forward-line -1)
(if (sh-smie--looking-back-at-continuation-p)
(current-indentation)
- (+ (current-indentation) sh-basic-offset))))
+ (+ (current-indentation) (sh-var-value 'sh-indent-for-continuation)))))
(t
;; Just make sure a line-continuation is indented deeper.
(save-excursion
@@ -2032,7 +2039,10 @@ May return nil if the line should not be treated as continued."
;; check the line before that one.
(> ci indent))
(t ;Previous line is the beginning of the continued line.
- (setq indent (min (+ ci sh-basic-offset) max))
+ (setq
+ indent
+ (min
+ (+ ci (sh-var-value 'sh-indent-for-continuation)) max))
nil)))))
indent))))))
@@ -2056,11 +2066,11 @@ May return nil if the line should not be treated as continued."
`(column . ,(smie-indent-virtual))))))
;; FIXME: Maybe this handling of ;; should be made into
;; a smie-rule-terminator function that takes the substitute ";" as arg.
- (`(:before . ,(or ";;" ";&" ";;&"))
- (if (and (smie-rule-bolp) (looking-at ";;?&?[ \t]*\\(#\\|$\\)"))
+ (`(:before . ,(or ";;" ";&" ";;&" ";|"))
+ (if (and (smie-rule-bolp) (looking-at ";\\(?:;&?\\|[&|]\\)?[ \t]*\\(#\\|$\\)"))
(cons 'column (smie-indent-keyword ";"))
(smie-rule-separator kind)))
- (`(:after . ,(or ";;" ";&" ";;&"))
+ (`(:after . ,(or ";;" ";&" ";;&" ";|"))
(with-demoted-errors "SMIE rule error: %S"
(smie-backward-sexp token)
(cons 'column
@@ -2149,8 +2159,9 @@ May return nil if the line should not be treated as continued."
(pattern (pattern "|" pattern))
(branches (branches ";;" branches)
(branches ";&" branches) (branches ";;&" branches) ;bash.
+ (branches ";|" branches) ;zsh.
(pattern "case-)" cmd)))
- '((assoc ";;" ";&" ";;&"))
+ '((assoc ";;" ";&" ";;&" ";|"))
'((assoc "case") (assoc ";" "&") (assoc "&&" "||") (assoc "|" "|&")))))
(defun sh-smie--rc-after-special-arg-p ()
diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el
index 11f20add3ee..3f198e9f180 100644
--- a/lisp/progmodes/typescript-ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -330,6 +330,52 @@ Argument LANGUAGE is either `typescript' or `tsx'."
:override t
'((escape_sequence) @font-lock-escape-face)))
+(defvar typescript-ts-mode--sentence-nodes
+ '("import_statement"
+ "debugger_statement"
+ "expression_statement"
+ "if_statement"
+ "switch_statement"
+ "for_statement"
+ "for_in_statement"
+ "while_statement"
+ "do_statement"
+ "try_statement"
+ "with_statement"
+ "break_statement"
+ "continue_statement"
+ "return_statement"
+ "throw_statement"
+ "empty_statement"
+ "labeled_statement"
+ "variable_declaration"
+ "lexical_declaration"
+ "property_signature")
+ "Nodes that designate sentences in TypeScript.
+See `treesit-sentence-type-regexp' for more information.")
+
+(defvar typescript-ts-mode--sexp-nodes
+ '("expression"
+ "pattern"
+ "array"
+ "function"
+ "string"
+ "escape"
+ "template"
+ "regex"
+ "number"
+ "identifier"
+ "this"
+ "super"
+ "true"
+ "false"
+ "null"
+ "undefined"
+ "arguments"
+ "pair")
+ "Nodes that designate sexps in TypeScript.
+See `treesit-sexp-type-regexp' for more information.")
+
;;;###autoload
(define-derived-mode typescript-ts-base-mode prog-mode "TypeScript"
"Major mode for editing TypeScript."
@@ -338,6 +384,11 @@ Argument LANGUAGE is either `typescript' or `tsx'."
;; Comments.
(c-ts-common-comment-setup)
+ (setq-local treesit-defun-prefer-top-level t)
+
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment"
+ "template_string")))
;; Electric
(setq-local electric-indent-chars
@@ -352,6 +403,12 @@ Argument LANGUAGE is either `typescript' or `tsx'."
"lexical_declaration")))
(setq-local treesit-defun-name-function #'js--treesit-defun-name)
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt typescript-ts-mode--sentence-nodes))
+
+ (setq-local treesit-sexp-type-regexp
+ (regexp-opt typescript-ts-mode--sexp-nodes))
+
;; Imenu (same as in `js-ts-mode').
(setq-local treesit-simple-imenu-settings
`(("Function" "\\`function_declaration\\'" nil nil)
@@ -421,6 +478,18 @@ at least 3 (which is the default value)."
(setq-local treesit-simple-indent-rules
(typescript-ts-mode--indent-rules 'tsx))
+ ;; Navigation
+ (setq-local treesit-sentence-type-regexp
+ (regexp-opt (append
+ typescript-ts-mode--sentence-nodes
+ '("jsx_element"
+ "jsx_self_closing_element"))))
+
+ (setq-local treesit-sexp-type-regexp
+ (regexp-opt (append
+ typescript-ts-mode--sexp-nodes
+ '("jsx"))))
+
;; Font-lock.
(setq-local treesit-font-lock-settings
(typescript-ts-mode--font-lock-settings 'tsx))
diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el
index 3134a09c44f..ac6fd382a46 100644
--- a/lisp/progmodes/verilog-mode.el
+++ b/lisp/progmodes/verilog-mode.el
@@ -9,7 +9,7 @@
;; Keywords: languages
;; The "Version" is the date followed by the decimal rendition of the Git
;; commit hex.
-;; Version: 2021.10.14.127365406
+;; Version: 2022.12.18.181110314
;; Yoni Rabkin <yoni@rabkins.net> contacted the maintainer of this
;; file on 19/3/2008, and the maintainer agreed that when a bug is
@@ -124,7 +124,7 @@
;;
;; This variable will always hold the version number of the mode
-(defconst verilog-mode-version "2021-10-14-797711e-vpo-GNU"
+(defconst verilog-mode-version "2022-12-18-acb862a-vpo-GNU"
"Version of this Verilog mode.")
(defconst verilog-mode-release-emacs t
"If non-nil, this version of Verilog mode was released with Emacs itself.")
@@ -370,7 +370,8 @@ wherever possible, since it is slow."
(unless (fboundp 'ignore-errors)
(defmacro ignore-errors (&rest body)
(declare (debug t) (indent 0))
- `(condition-case nil (progn ,@body) (error nil)))))
+ `(condition-case nil (progn ,@body) (error nil))))
+ (error nil))
;; Added in Emacs 24.1
(condition-case nil
(unless (fboundp 'prog-mode)
@@ -455,11 +456,11 @@ This function may be removed when Emacs 21 is no longer supported."
last-command-event)))
(defvar verilog-no-change-functions nil
- "True if `after-change-functions' is disabled.
+ "Non-nil if `after-change-functions' is disabled.
Use of `syntax-ppss' may break, as ppss's cache may get corrupted.")
(defvar verilog-in-hooks nil
- "True when within a `verilog-run-hooks' block.")
+ "Non-nil when within a `verilog-run-hooks' block.")
(defmacro verilog-run-hooks (&rest hooks)
"Run each hook in HOOKS using `run-hooks'.
@@ -505,8 +506,14 @@ Set `verilog-in-hooks' during this time, to assist AUTO caches."
(defvar verilog-debug nil
"Non-nil means enable debug messages for `verilog-mode' internals.")
-(defvar verilog-warn-fatal nil
- "Non-nil means `verilog-warn-error' warnings are fatal `error's.")
+(defcustom verilog-warn-fatal nil
+ "Non-nil means `verilog-warn-error' warnings are fatal `error's."
+ :group 'verilog-mode-auto
+ :type 'boolean)
+(put 'verilog-warn-fatal 'safe-local-variable #'verilog-booleanp)
+
+;; Internal use similar to `verilog-warn-fatal'
+(defvar verilog-warn-fatal-internal t)
(defcustom verilog-linter
"echo 'No verilog-linter set, see \"M-x describe-variable verilog-linter\"'"
@@ -679,6 +686,18 @@ Set to 0 to have all directives start at the left side of the screen."
:type 'integer)
(put 'verilog-indent-level-directive 'safe-local-variable #'integerp)
+(defcustom verilog-indent-ignore-multiline-defines t
+ "Non-nil means ignore indentation on lines that are part of a multiline define."
+ :group 'verilog-mode-indent
+ :type 'boolean)
+(put 'verilog-indent-ignore-multiline-defines 'safe-local-variable #'verilog-booleanp)
+
+(defcustom verilog-indent-ignore-regexp nil
+ "Regexp that matches lines that should be ignored for indentation."
+ :group 'verilog-mode-indent
+ :type 'boolean)
+(put 'verilog-indent-ignore-regexp 'safe-local-variable #'stringp)
+
(defcustom verilog-cexp-indent 2
"Indentation of Verilog statements split across lines."
:group 'verilog-mode-indent
@@ -723,6 +742,13 @@ Otherwise, line them up."
:type 'boolean)
(put 'verilog-indent-begin-after-if 'safe-local-variable #'verilog-booleanp)
+(defcustom verilog-indent-class-inside-pkg t
+ "Non-nil means indent classes inside packages.
+Otherwise, classes have zero indentation."
+ :group 'verilog-mode-indent
+ :type 'boolean)
+(put 'verilog-indent-class-inside-pkg 'safe-local-variable #'verilog-booleanp)
+
(defcustom verilog-align-ifelse nil
"Non-nil means align `else' under matching `if'.
Otherwise else is lined up with first character on line holding matching if."
@@ -730,6 +756,38 @@ Otherwise else is lined up with first character on line holding matching if."
:type 'boolean)
(put 'verilog-align-ifelse 'safe-local-variable #'verilog-booleanp)
+(defcustom verilog-align-decl-expr-comments t
+ "Non-nil means align declaration and expressions comments."
+ :group 'verilog-mode-indent
+ :type 'boolean)
+(put 'verilog-align-decl-expr-comments 'safe-local-variable #'verilog-booleanp)
+
+(defcustom verilog-align-comment-distance 1
+ "Distance (in spaces) between longest declaration/expression and comments.
+Only works if `verilog-align-decl-expr-comments' is non-nil."
+ :group 'verilog-mode-indent
+ :type 'integer)
+(put 'verilog-align-comment-distance 'safe-local-variable #'integerp)
+
+(defcustom verilog-align-assign-expr nil
+ "Non-nil means align expressions of continuous assignments."
+ :group 'verilog-mode-indent
+ :type 'boolean)
+(put 'verilog-align-assign-expr 'safe-local-variable #'verilog-booleanp)
+
+(defcustom verilog-align-typedef-regexp nil
+ "Regexp that matches user typedefs for declaration alignment."
+ :group 'verilog-mode-indent
+ :type '(choice (regexp :tag "Regexp")
+ (const :tag "None" nil)))
+(put 'verilog-align-typedef-regexp 'safe-local-variable #'stringp)
+
+(defcustom verilog-align-typedef-words nil
+ "List of words that match user typedefs for declaration alignment."
+ :group 'verilog-mode-indent
+ :type '(repeat string))
+(put 'verilog-align-typedef-words 'safe-local-variable #'listp)
+
(defcustom verilog-minimum-comment-distance 10
"Minimum distance (in lines) between begin and end required before a comment.
Setting this variable to zero results in every end acquiring a comment; the
@@ -876,6 +934,12 @@ always be saved."
:type 'boolean)
(put 'verilog-auto-star-save 'safe-local-variable #'verilog-booleanp)
+(defcustom verilog-fontify-variables t
+ "Non-nil means fontify declaration variables."
+ :group 'verilog-mode-actions
+ :type 'boolean)
+(put 'verilog-fontify-variables 'safe-local-variable #'verilog-booleanp)
+
(defvar verilog-auto-update-tick nil
"Modification tick at which autos were last performed.")
@@ -1052,7 +1116,7 @@ You might want these defined in each file; put at the *END* of your file
something like:
// Local Variables:
- // verilog-library-files:(\"/some/path/technology.v\" \"/some/path/tech2.v\")
+ // verilog-library-files:(\"/path/technology.v\" \"/path2/tech2.v\")
// End:
Verilog-mode attempts to detect changes to this local variable, but they
@@ -1124,7 +1188,7 @@ those temporaries reset. See example in `verilog-auto-reset'."
(put 'verilog-auto-reset-blocking-in-non 'safe-local-variable #'verilog-booleanp)
(defcustom verilog-auto-reset-widths t
- "True means AUTORESET should determine the width of signals.
+ "Non-nil means AUTORESET should determine the width of signals.
This is then used to set the width of the zero (32'h0 for example). This
is required by some lint tools that aren't smart enough to ignore widths of
the constant zero. This may result in ugly code when parameters determine
@@ -1264,7 +1328,7 @@ See `verilog-auto-inst-param-value'."
Also affects AUTOINSTPARAM. Declaration order is the default for
backward compatibility, and as some teams prefer signals that are
declared together to remain together. Sorted order reduces
-changes when declarations are moved around in a file. Sorting is
+changes when declarations are moved around in a file. Sorting is
within input/output/inout groupings, there is intentionally no
option to intermix between input/output/inouts.
@@ -1275,7 +1339,7 @@ See also `verilog-auto-arg-sort'."
(put 'verilog-auto-inst-sort 'safe-local-variable #'verilog-booleanp)
(defcustom verilog-auto-inst-vector t
- "True means when creating default ports with AUTOINST, use bus subscripts.
+ "Non-nil means when creating default ports with AUTOINST, use bus subscripts.
If nil, skip the subscript when it matches the entire bus as declared in
the module (AUTOWIRE signals always are subscripted, you must manually
declare the wire to have the subscripts removed.) Setting this to nil may
@@ -1515,10 +1579,9 @@ If set will become buffer local.")
(define-key map "\C-c/" #'verilog-star-comment)
(define-key map "\C-c\C-c" #'verilog-comment-region)
(define-key map "\C-c\C-u" #'verilog-uncomment-region)
- (when (featurep 'xemacs)
- (define-key map [(meta control h)] #'verilog-mark-defun)
- (define-key map "\M-\C-a" #'verilog-beg-of-defun)
- (define-key map "\M-\C-e" #'verilog-end-of-defun))
+ (define-key map "\M-\C-h" #'verilog-mark-defun)
+ (define-key map "\M-\C-a" #'verilog-beg-of-defun)
+ (define-key map "\M-\C-e" #'verilog-end-of-defun)
(define-key map "\C-c\C-d" #'verilog-goto-defun)
(define-key map "\C-c\C-k" #'verilog-delete-auto)
(define-key map "\C-c\C-a" #'verilog-auto)
@@ -2028,11 +2091,11 @@ Where __FLAGS__ appears in the string `verilog-current-flags'
will be substituted. Where __FILE__ appears in the string, the
current buffer's file-name, without the directory portion, will
be substituted."
- (setq command (verilog-string-replace-matches
+ (setq command (verilog-string-replace-matches
;; Note \\b only works if under verilog syntax table
"\\b__FLAGS__\\b" (verilog-current-flags)
t t command))
- (setq command (verilog-string-replace-matches
+ (setq command (verilog-string-replace-matches
"\\b__FILE__\\b" (file-name-nondirectory
(or (buffer-file-name) ""))
t t command))
@@ -2468,13 +2531,8 @@ find the errors."
;;
;; Regular expressions used to calculate indent, etc.
;;
-(defconst verilog-symbol-re "\\<[a-zA-Z_][a-zA-Z_0-9.]*\\>")
-;; Want to match
-;; aa :
-;; aa,bb :
-;; a[34:32] :
-;; a,
-;; b :
+(defconst verilog-identifier-re "[a-zA-Z_][a-zA-Z_0-9]*")
+(defconst verilog-identifier-sym-re (concat "\\<" verilog-identifier-re "\\>"))
(defconst verilog-assignment-operator-re
(eval-when-compile
(verilog-regexp-opt
@@ -2492,12 +2550,11 @@ find the errors."
) 't
)))
(defconst verilog-assignment-operation-re
- (concat
- ;; "\\(^\\s-*[A-Za-z0-9_]+\\(\\[\\([A-Za-z0-9_]+\\)\\]\\)*\\s-*\\)"
- ;; "\\(^\\s-*[^=<>+-*/%&|^:\\s-]+[^=<>+-*/%&|^\n]*?\\)"
- "\\(^.*?\\)" "\\B" verilog-assignment-operator-re "\\B" ))
+ (concat "\\(^.*?\\)" verilog-assignment-operator-re))
+(defconst verilog-assignment-operation-re-2
+ (concat "\\(.*?\\)" verilog-assignment-operator-re))
-(defconst verilog-label-re (concat verilog-symbol-re "\\s-*:\\s-*"))
+(defconst verilog-label-re (concat verilog-identifier-sym-re "\\s-*:\\s-*"))
(defconst verilog-property-re
(concat "\\(" verilog-label-re "\\)?"
;; "\\(assert\\|assume\\|cover\\)\\s-+property\\>"
@@ -2732,6 +2789,9 @@ find the errors."
"\\|\\(\\<clocking\\>\\)" ;17
"\\|\\(\\<`[ou]vm_[a-z_]+_begin\\>\\)" ;18
"\\|\\(\\<`vmm_[a-z_]+_member_begin\\>\\)"
+ "\\|\\(\\<`ifn?def\\>\\)" ;20, matched end can be: `else `elsif `endif
+ "\\|\\(\\<`else\\>\\)" ;21, matched end can be: `endif
+ "\\|\\(\\<`elsif\\>\\)" ;22, matched end can be: `else `endif
;;
))
@@ -2817,40 +2877,54 @@ find the errors."
"localparam" "parameter" "var"
;; misc
"string" "event" "chandle" "virtual" "enum" "genvar"
- "struct" "union"
+ "struct" "union" "type"
;; builtin classes
"mailbox" "semaphore"
))))
-(defconst verilog-declaration-re
- (concat "\\(" verilog-declaration-prefix-re "\\s-*\\)?" verilog-declaration-core-re))
(defconst verilog-range-re "\\(\\[[^]]*\\]\\s-*\\)+")
(defconst verilog-optional-signed-re "\\s-*\\(\\(un\\)?signed\\)?")
(defconst verilog-optional-signed-range-re
- (concat
- "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<\\(un\\)?signed\\>\\s-*\\)?\\(" verilog-range-re "\\)?"))
+ (concat "\\s-*\\(\\<\\(reg\\|wire\\)\\>\\s-*\\)?\\(\\<\\(un\\)?signed\\>\\s-*\\)?\\(" verilog-range-re "\\)?"))
(defconst verilog-macroexp-re "`\\sw+")
-
(defconst verilog-delay-re "#\\s-*\\(\\([0-9_]+\\('s?[hdxbo][0-9a-fA-F_xz]+\\)?\\)\\|\\(([^()]*)\\)\\|\\(\\sw+\\)\\)")
-(defconst verilog-declaration-re-2-no-macro
- (concat "\\s-*" verilog-declaration-re
- "\\s-*\\(\\(" verilog-optional-signed-range-re "\\)\\|\\(" verilog-delay-re "\\)"
- "\\)"))
-(defconst verilog-declaration-re-2-macro
- (concat "\\s-*" verilog-declaration-re
- "\\s-*\\(\\(" verilog-optional-signed-range-re "\\)\\|\\(" verilog-delay-re "\\)"
- "\\|\\(" verilog-macroexp-re "\\)"
- "\\)"))
-(defconst verilog-declaration-re-1-macro
- (concat "^" verilog-declaration-re-2-macro))
-
-(defconst verilog-declaration-re-1-no-macro (concat "^" verilog-declaration-re-2-no-macro))
+(defconst verilog-interface-modport-re "\\(\\s-*\\([a-zA-Z0-9`_$]+\\.[a-zA-Z0-9`_$]+\\)[ \t\f]+\\)")
+(defconst verilog-comment-start-regexp "//\\|/\\*" "Dual comment value for `comment-start-regexp'.")
+(defconst verilog-typedef-enum-re
+ (concat "^\\s-*\\(typedef\\s-+\\)?enum\\(\\s-+" verilog-declaration-core-re verilog-optional-signed-range-re "\\)?"))
+
+(defconst verilog-declaration-simple-re
+ (concat "\\(" verilog-declaration-prefix-re "\\s-*\\)?" verilog-declaration-core-re))
+(defconst verilog-declaration-re
+ (concat "\\s-*" verilog-declaration-simple-re
+ "\\s-*\\(\\(" verilog-optional-signed-range-re "\\)\\|\\(" verilog-delay-re "\\)\\)"))
+(defconst verilog-declaration-re-macro
+ (concat "\\s-*" verilog-declaration-simple-re
+ "\\s-*\\(\\(" verilog-optional-signed-range-re "\\)\\|\\(" verilog-delay-re "\\)\\|\\(" verilog-macroexp-re "\\)\\)"))
+(defconst verilog-declaration-or-iface-mp-re
+ (concat "\\(" verilog-declaration-re "\\)\\|\\(" verilog-interface-modport-re "\\)"))
+(defconst verilog-declaration-embedded-comments-re
+ (concat "\\( " verilog-declaration-re "\\) ""\\s-*" "\\(" verilog-comment-start-regexp "\\)")
+ "Match expressions such as: input logic [7:0] /* auto enum sm_psm */ sm_psm;.")
(defconst verilog-defun-re
(eval-when-compile (verilog-regexp-words '("macromodule" "connectmodule" "module" "class" "program" "interface" "package" "primitive" "config"))))
(defconst verilog-end-defun-re
(eval-when-compile (verilog-regexp-words '("endconnectmodule" "endmodule" "endclass" "endprogram" "endinterface" "endpackage" "endprimitive" "endconfig"))))
+(defconst verilog-defun-tf-re-beg
+ (eval-when-compile (verilog-regexp-words '("macromodule" "connectmodule" "module" "class" "program" "interface" "package" "primitive" "config" "function" "task"))))
+(defconst verilog-defun-tf-re-end
+ (eval-when-compile (verilog-regexp-words '("endconnectmodule" "endmodule" "endclass" "endprogram" "endinterface" "endpackage" "endprimitive" "endconfig" "endfunction" "endtask"))))
+(defconst verilog-defun-tf-re-all
+ (eval-when-compile (verilog-regexp-words '("macromodule" "connectmodule" "module" "class" "program" "interface" "package" "primitive" "config" "function" "task"
+ "endconnectmodule" "endmodule" "endclass" "endprogram" "endinterface" "endpackage" "endprimitive" "endconfig" "endfunction" "endtask"))))
+(defconst verilog-defun-no-class-re
+ (eval-when-compile (verilog-regexp-words '("macromodule" "connectmodule" "module" "program" "interface" "package" "primitive" "config"))))
+(defconst verilog-end-defun-no-class-re
+ (eval-when-compile (verilog-regexp-words '("endconnectmodule" "endmodule" "endprogram" "endinterface" "endpackage" "endprimitive" "endconfig"))))
(defconst verilog-zero-indent-re
(concat verilog-defun-re "\\|" verilog-end-defun-re))
+(defconst verilog-zero-indent-no-class-re
+ (concat verilog-defun-no-class-re "\\|" verilog-end-defun-no-class-re))
(defconst verilog-inst-comment-re
(eval-when-compile (verilog-regexp-words '("Outputs" "Inouts" "Inputs" "Interfaces" "Interfaced"))))
@@ -2983,19 +3057,38 @@ find the errors."
(defconst verilog-extended-case-re "\\(\\(unique0?\\s-+\\|priority\\s-+\\)?case[xz]?\\|randcase\\)")
(defconst verilog-extended-complete-re
;; verilog-beg-of-statement also looks backward one token to extend this match
- (concat "\\(\\(\\<extern\\s-+\\|\\<\\(\\<\\(pure\\|context\\)\\>\\s-+\\)?virtual\\s-+\\|\\<protected\\s-+\\|\\<static\\s-+\\)*\\(\\<function\\>\\|\\<task\\>\\)\\)"
+ (concat "\\(\\(\\<extern\\s-+\\|\\<\\(\\<\\(pure\\|context\\)\\>\\s-+\\)?virtual\\s-+\\|\\<local\\s-+\\|\\<protected\\s-+\\|\\<static\\s-+\\)*\\(\\<function\\>\\|\\<task\\>\\)\\)"
"\\|\\(\\(\\<typedef\\>\\s-+\\)*\\(\\<struct\\>\\|\\<union\\>\\|\\<class\\>\\)\\)"
"\\|\\(\\(\\<\\(import\\|export\\)\\>\\s-+\\)?\\(\"DPI\\(-C\\)?\"\\s-+\\)?\\(\\<\\(pure\\|context\\)\\>\\s-+\\)?\\([A-Za-z_][A-Za-z0-9_]*\\s-*=\\s-*\\)?\\(function\\>\\|task\\>\\)\\)"
"\\|" verilog-extended-case-re ))
+
+(eval-and-compile
+ (defconst verilog-basic-complete-words
+ '("always" "assign" "always_latch" "always_ff" "always_comb" "analog" "connectmodule" "constraint"
+ "import" "initial" "final" "module" "macromodule" "repeat" "randcase" "while"
+ "if" "for" "forever" "foreach" "else" "parameter" "do" "localparam" "assert" "default" "generate"))
+ (defconst verilog-basic-complete-words-expr
+ (let ((words verilog-basic-complete-words))
+ (dolist (word '("default" "parameter" "localparam"))
+ (setq words (remove word words)))
+ words))
+ (defconst verilog-basic-complete-words-expr-no-assign
+ (remove "assign" verilog-basic-complete-words-expr)))
+
(defconst verilog-basic-complete-re
(eval-when-compile
- (verilog-regexp-words
- '(
- "always" "assign" "always_latch" "always_ff" "always_comb" "analog" "connectmodule" "constraint"
- "import" "initial" "final" "module" "macromodule" "repeat" "randcase" "while"
- "if" "for" "forever" "foreach" "else" "parameter" "do" "localparam" "assert"
- ))))
-(defconst verilog-complete-reg
+ (verilog-regexp-words verilog-basic-complete-words)))
+
+(defconst verilog-basic-complete-expr-re
+ (eval-when-compile
+ (verilog-regexp-words verilog-basic-complete-words-expr)))
+
+(defconst verilog-basic-complete-expr-no-assign-re
+ (eval-when-compile
+ (verilog-regexp-words verilog-basic-complete-words-expr-no-assign)))
+
+
+(defconst verilog-complete-re
(concat
verilog-extended-complete-re "\\|\\(" verilog-basic-complete-re "\\)"))
@@ -3114,9 +3207,6 @@ find the errors."
))
"List of Verilog keywords.")
-(defconst verilog-comment-start-regexp "//\\|/\\*"
- "Dual comment value for `comment-start-regexp'.")
-
(defvar verilog-mode-syntax-table
(let ((table (make-syntax-table)))
;; Populate the syntax TABLE.
@@ -3338,12 +3428,12 @@ See also `verilog-font-lock-extra-types'.")
(list
"\\<\\(\\(macro\\|connect\\)?module\\|primitive\\|class\\|program\\|interface\\|package\\|task\\)\\>\\s-*\\(\\sw+\\)"
'(1 font-lock-keyword-face)
- '(3 font-lock-function-name-face prepend))
+ '(3 font-lock-function-name-face))
;; Fontify function definitions
(list
(concat "\\<function\\>\\s-+\\(integer\\|real\\(time\\)?\\|time\\)\\s-+\\(\\sw+\\)" )
'(1 font-lock-keyword-face)
- '(3 font-lock-constant-face prepend))
+ '(3 font-lock-constant-face))
'("\\<function\\>\\s-+\\(\\[[^]]+\\]\\)\\s-+\\(\\sw+\\)"
(1 font-lock-keyword-face)
(2 font-lock-constant-face append))
@@ -3358,12 +3448,12 @@ See also `verilog-font-lock-extra-types'.")
;; Pre-form for this anchored matcher:
;; First, avoid declaration keywords written in comments,
;; which can also trigger this anchor.
- '(if (not (verilog-in-comment-p))
+ '(if (and (not (verilog-in-comment-p))
+ (not (member (thing-at-point 'symbol) verilog-keywords)))
(verilog-single-declaration-end verilog-highlight-max-lookahead)
(point)) ;; => current declaration statement is of 0 length
nil ;; Post-form: nothing to be done
- '(0 font-lock-variable-name-face t t)))
- )))
+ '(0 font-lock-variable-name-face))))))
(setq verilog-font-lock-keywords-2
@@ -3617,7 +3707,7 @@ inserted using a single call to `verilog-insert'."
(defun verilog-single-declaration-end (limit)
"Return pos where current (single) declaration statement ends.
Also, this function moves POINT forward to the start of a variable name
-(skipping the range-part and whitespace).
+\(skipping the range-part and whitespace).
Function expected to be called with POINT just after a declaration keyword.
LIMIT sets the max POINT for searching and moving to. No such limit if LIMIT
is 0.
@@ -3629,8 +3719,6 @@ Meaning of *single* declaration:
and `output [1:0] y' is the other single declaration. In the 1st single
declaration, POINT is moved to start of `clk'. And in the 2nd declaration,
POINT is moved to `y'."
-
-
(let (maxpoint old-point)
;; maxpoint = min(curr-point + limit, buffer-size)
(setq maxpoint (if (eq limit 0)
@@ -3651,7 +3739,7 @@ POINT is moved to `y'."
(not (eq old-point (point)))
(not (eq (char-after) ?\; ))
(not (eq (char-after) ?\) ))
- (not (looking-at verilog-declaration-re)))
+ (not (looking-at (verilog-get-declaration-re))))
(setq old-point (point))
(ignore-errors
(forward-sexp)
@@ -3669,31 +3757,28 @@ This function moves POINT to the next variable within the same declaration (if
it exists).
LIMIT is expected to be the pos at which current single-declaration ends,
obtained using `verilog-single-declaration-end'."
-
- (let (found-var old-point)
-
- ;; Remove starting whitespace
- (verilog-forward-ws&directives limit)
-
- (when (< (point) limit) ;; no matching if this is violated
-
- ;; Find the variable name (match-data is set here)
- (setq found-var (re-search-forward verilog-symbol-re limit t))
-
- ;; Walk to this variable's delimiter
- (save-match-data
- (verilog-forward-ws&directives limit)
- (setq old-point nil)
- (while (and (< (point) limit)
- (not (member (char-after) '(?, ?\) ?\;)))
- (not (eq old-point (point))))
- (setq old-point (point))
+ (when (and verilog-fontify-variables
+ (not (member (thing-at-point 'symbol) verilog-keywords)))
+ (let (found-var old-point)
+ ;; Remove starting whitespace
+ (verilog-forward-ws&directives limit)
+ (when (< (point) limit) ;; no matching if this is violated
+ ;; Find the variable name (match-data is set here)
+ (setq found-var (re-search-forward verilog-identifier-sym-re limit t))
+ ;; Walk to this variable's delimiter
+ (save-match-data
(verilog-forward-ws&directives limit)
- (forward-sexp)
- (verilog-forward-ws&directives limit))
- ;; Only a comma or semicolon expected at this point
- (skip-syntax-forward "."))
- found-var)))
+ (setq old-point nil)
+ (while (and (< (point) limit)
+ (not (member (char-after) '(?, ?\) ?\] ?\} ?\;)))
+ (not (eq old-point (point))))
+ (setq old-point (point))
+ (verilog-forward-ws&directives limit)
+ (forward-sexp)
+ (verilog-forward-ws&directives limit))
+ ;; Only a comma or semicolon expected at this point
+ (skip-syntax-forward "."))
+ found-var))))
(defun verilog-point-text (&optional pointnum)
"Return text describing where POINTNUM or current point is (for errors).
@@ -3728,9 +3813,14 @@ Use filename, if current buffer being edited shorten to just buffer name."
(elsec 1)
(found nil)
(st (point)))
- (if (not (looking-at "\\<"))
- (forward-word-strictly -1))
+ (unless (looking-at "\\<")
+ (forward-word-strictly -1))
(cond
+ ((save-excursion
+ (goto-char st)
+ (member (preceding-char) '(?\) ?\} ?\])))
+ (goto-char st)
+ (backward-sexp 1))
((verilog-skip-backward-comment-or-string))
((looking-at "\\<else\\>")
(setq reg (concat
@@ -3754,7 +3844,17 @@ Use filename, if current buffer being edited shorten to just buffer name."
(setq found 't))))))
((looking-at verilog-end-block-re)
(verilog-leap-to-head))
- ((looking-at "\\(endmodule\\>\\)\\|\\(\\<endprimitive\\>\\)\\|\\(\\<endclass\\>\\)\\|\\(\\<endprogram\\>\\)\\|\\(\\<endinterface\\>\\)\\|\\(\\<endpackage\\>\\)\\|\\(\\<endconnectmodule\\>\\)")
+ (;; Fallback, when current word does not match `verilog-end-block-re'
+ (looking-at (concat
+ "\\(\\<endmodule\\>\\)\\|" ; 1
+ "\\(\\<endprimitive\\>\\)\\|" ; 2
+ "\\(\\<endclass\\>\\)\\|" ; 3
+ "\\(\\<endprogram\\>\\)\\|" ; 4
+ "\\(\\<endinterface\\>\\)\\|" ; 5
+ "\\(\\<endpackage\\>\\)\\|" ; 6
+ "\\(\\<endconnectmodule\\>\\)\\|" ; 7
+ "\\(\\<endchecker\\>\\)\\|" ; 8
+ "\\(\\<endconfig\\>\\)")) ; 9
(cond
((match-end 1)
(verilog-re-search-backward "\\<\\(macro\\)?module\\>" nil 'move))
@@ -3769,7 +3869,11 @@ Use filename, if current buffer being edited shorten to just buffer name."
((match-end 6)
(verilog-re-search-backward "\\<package\\>" nil 'move))
((match-end 7)
- (verilog-re-search-backward "\\<connectmodule\\>" nil 'move))
+ (verilog-re-search-backward "\\<connectmodule\\>" nil 'move))
+ ((match-end 8)
+ (verilog-re-search-backward "\\<checker\\>" nil 'move))
+ ((match-end 9)
+ (verilog-re-search-backward "\\<config\\>" nil 'move))
(t
(goto-char st)
(backward-sexp 1))))
@@ -3782,9 +3886,14 @@ Use filename, if current buffer being edited shorten to just buffer name."
(md 2)
(st (point))
(nest 'yes))
- (if (not (looking-at "\\<"))
- (forward-word-strictly -1))
+ (unless (looking-at "\\<")
+ (forward-word-strictly -1))
(cond
+ ((save-excursion
+ (goto-char st)
+ (member (following-char) '(?\( ?\{ ?\[)))
+ (goto-char st)
+ (forward-sexp 1))
((verilog-skip-forward-comment-or-string)
(verilog-forward-syntactic-ws))
((looking-at verilog-beg-block-re-ordered)
@@ -3843,22 +3952,31 @@ Use filename, if current buffer being edited shorten to just buffer name."
;; Search forward for matching endtask
(setq reg "\\<endtask\\>" )
(setq nest 'no))
- ((match-end 12)
+ ((match-end 13)
;; Search forward for matching endgenerate
(setq reg "\\(\\<generate\\>\\)\\|\\(\\<endgenerate\\>\\)" ))
- ((match-end 13)
+ ((match-end 14)
;; Search forward for matching endgroup
(setq reg "\\(\\<covergroup\\>\\)\\|\\(\\<endgroup\\>\\)" ))
- ((match-end 14)
+ ((match-end 15)
;; Search forward for matching endproperty
(setq reg "\\(\\<property\\>\\)\\|\\(\\<endproperty\\>\\)" ))
- ((match-end 15)
+ ((match-end 16)
;; Search forward for matching endsequence
(setq reg "\\(\\<\\(rand\\)?sequence\\>\\)\\|\\(\\<endsequence\\>\\)" )
(setq md 3)) ; 3 to get to endsequence in the reg above
((match-end 17)
;; Search forward for matching endclocking
- (setq reg "\\(\\<clocking\\>\\)\\|\\(\\<endclocking\\>\\)" )))
+ (setq reg "\\(\\<clocking\\>\\)\\|\\(\\<endclocking\\>\\)" ))
+ ((match-end 20)
+ ;; Search forward for matching `ifn?def, can be `else `elseif or `endif
+ (setq reg "\\(\\<`ifn?def\\>\\)\\|\\(\\<`endif\\>\\|\\<`else\\>\\|\\<`elsif\\>\\)" ))
+ ((match-end 21)
+ ;; Search forward for matching `else, can be `endif
+ (setq reg "\\(\\<`else\\>\\|\\<`ifn?def\\>\\)\\|\\(\\<`endif\\>\\)" ))
+ ((match-end 22)
+ ;; Search forward for matching `elsif, can be `else or `endif, DONT support `elsif
+ (setq reg "\\(\\<`elsif\\>\\|\\<`ifn?def\\>\\)\\|\\(\\<`endif\\>\\|\\<`else\\>\\)" )))
(if (and reg
(forward-word-strictly 1))
(catch 'skip
@@ -3867,15 +3985,26 @@ Use filename, if current buffer being edited shorten to just buffer name."
here)
(while (verilog-re-search-forward reg nil 'move)
(cond
- ((match-end md) ; a closer in regular expression, so we are climbing out
+ ((and (or (match-end md)
+ (and (member (match-string-no-properties 1) '("`else" "`elsif"))
+ (= 1 depth)))
+ (or (and (member (match-string-no-properties 2) '("`else" "`elsif"))
+ (= 1 depth))
+ ;; stop at `else/`elsif which matching ifn?def (or `elsif with same depth)
+ ;; a closer in regular expression, so we are climbing out
+ (not (member (match-string-no-properties 2) '("`else" "`elsif")))))
(setq depth (1- depth))
(if (= 0 depth) ; we are out!
(throw 'skip 1)))
- ((match-end 1) ; an opener in the r-e, so we are in deeper now
+ ((and (match-end 1) ; an opener in the r-e, so we are in deeper now
+ (not (member (match-string-no-properties 1) '("`else" "`elsif"))))
(setq here (point)) ; remember where we started
(goto-char (match-beginning 1))
(cond
- ((if (or
+ ((verilog-looking-back "\\(\\<typedef\\>\\s-+\\)" (point-at-bol))
+ ;; avoid nesting for typedef class defs
+ (forward-word-strictly 1))
+ ((if (or
(looking-at verilog-disable-fork-re)
(and (looking-at "fork")
(progn
@@ -3890,28 +4019,37 @@ Use filename, if current buffer being edited shorten to just buffer name."
(throw 'skip 1))))))
((looking-at (concat
- "\\(\\<\\(macro\\)?module\\>\\)\\|"
- "\\(\\<primitive\\>\\)\\|"
- "\\(\\<class\\>\\)\\|"
- "\\(\\<program\\>\\)\\|"
- "\\(\\<interface\\>\\)\\|"
- "\\(\\<package\\>\\)\\|"
- "\\(\\<connectmodule\\>\\)"))
+ "\\(\\<\\(macro\\)?module\\>\\)\\|" ; 1,2
+ "\\(\\<primitive\\>\\)\\|" ; 3
+ "\\(\\(\\(interface\\|virtual\\)\\s-+\\)?\\<class\\>\\)\\|" ; 4,5,6
+ "\\(\\<program\\>\\)\\|" ; 7
+ "\\(\\<interface\\>\\)\\|" ; 8
+ "\\(\\<package\\>\\)\\|" ; 9
+ "\\(\\<connectmodule\\>\\)\\|" ; 10
+ "\\(\\<generate\\>\\)\\|" ; 11
+ "\\(\\<checker\\>\\)\\|" ; 12
+ "\\(\\<config\\>\\)")) ; 13
(cond
((match-end 1)
(verilog-re-search-forward "\\<endmodule\\>" nil 'move))
- ((match-end 2)
- (verilog-re-search-forward "\\<endprimitive\\>" nil 'move))
((match-end 3)
- (verilog-re-search-forward "\\<endclass\\>" nil 'move))
+ (verilog-re-search-forward "\\<endprimitive\\>" nil 'move))
((match-end 4)
+ (verilog-re-search-forward "\\<endclass\\>" nil 'move))
+ ((match-end 7)
(verilog-re-search-forward "\\<endprogram\\>" nil 'move))
- ((match-end 5)
+ ((match-end 8)
(verilog-re-search-forward "\\<endinterface\\>" nil 'move))
- ((match-end 6)
+ ((match-end 9)
(verilog-re-search-forward "\\<endpackage\\>" nil 'move))
- ((match-end 7)
- (verilog-re-search-forward "\\<endconnectmodule\\>" nil 'move))
+ ((match-end 10)
+ (verilog-re-search-forward "\\<endconnectmodule\\>" nil 'move))
+ ((match-end 11)
+ (verilog-re-search-forward "\\<endgenerate\\>" nil 'move))
+ ((match-end 12)
+ (verilog-re-search-forward "\\<endchecker\\>" nil 'move))
+ ((match-end 13)
+ (verilog-re-search-forward "\\<endconfig\\>" nil 'move))
(t
(goto-char st)
(if (= (following-char) ?\) )
@@ -3924,11 +4062,69 @@ Use filename, if current buffer being edited shorten to just buffer name."
(forward-sexp 1))))))
(defun verilog-declaration-beg ()
- (verilog-re-search-backward verilog-declaration-re (bobp) t))
-
-;;
-;;
-;; Mode
+ (verilog-re-search-backward (verilog-get-declaration-re) (bobp) t))
+
+(defun verilog-align-typedef-enabled-p ()
+ "Return non-nil if alignment of user typedefs is enabled.
+This will be automatically set when either `verilog-align-typedef-regexp'
+or `verilog-align-typedef-words' are non-nil."
+ (when (or verilog-align-typedef-regexp
+ verilog-align-typedef-words)
+ t))
+
+(defun verilog-get-declaration-typedef-re ()
+ "Return regexp of a user defined typedef.
+See `verilog-align-typedef-regexp' and `verilog-align-typedef-words'."
+ (let (typedef-re words words-re re)
+ (when (verilog-align-typedef-enabled-p)
+ (setq typedef-re verilog-align-typedef-regexp)
+ (setq words verilog-align-typedef-words)
+ (setq words-re (verilog-regexp-words verilog-align-typedef-words))
+ (cond ((and typedef-re (not words))
+ (setq re typedef-re))
+ ((and (not typedef-re) words)
+ (setq re words-re))
+ ((and typedef-re words)
+ (setq re (concat verilog-align-typedef-regexp "\\|" words-re))))
+ (concat "\\s-*" "\\(" verilog-declaration-prefix-re "\\s-*\\(" verilog-range-re "\\)?" "\\s-*\\)?"
+ (concat "\\(" re "\\)")
+ "\\(\\s-*" verilog-range-re "\\)?\\s-+"))))
+
+(defun verilog-get-declaration-re (&optional type)
+ "Return declaration regexp depending on customizable variables and TYPE."
+ (let ((re (cond ((equal type 'iface-mp)
+ verilog-declaration-or-iface-mp-re)
+ ((equal type 'embedded-comments)
+ verilog-declaration-embedded-comments-re)
+ (verilog-indent-declaration-macros
+ verilog-declaration-re-macro)
+ (t
+ verilog-declaration-re))))
+ (when (and (verilog-align-typedef-enabled-p)
+ (or (string= re verilog-declaration-or-iface-mp-re)
+ (string= re verilog-declaration-re)))
+ (setq re (concat "\\(" (verilog-get-declaration-typedef-re) "\\)\\|\\(" re "\\)")))
+ re))
+
+(defun verilog-looking-at-decl-to-align ()
+ "Return non-nil if pointing at a Verilog variable declaration that must be aligned."
+ (let* ((re (verilog-get-declaration-re))
+ (valid-re (looking-at re))
+ (id-pos (match-end 0)))
+ (and valid-re
+ (not (verilog-at-struct-decl-p))
+ (not (verilog-at-enum-decl-p))
+ (save-excursion
+ (goto-char id-pos)
+ (verilog-forward-syntactic-ws)
+ (and (not (looking-at ";"))
+ (not (member (thing-at-point 'symbol) verilog-keywords))
+ (progn ; Avoid alignment of instances whose name match user defined types
+ (forward-word)
+ (verilog-forward-syntactic-ws)
+ (not (looking-at "("))))))))
+
+;;; Mode:
;;
(defvar verilog-which-tool 1)
;;;###autoload
@@ -3965,6 +4161,11 @@ Variables controlling indentation/edit style:
function keyword.
`verilog-indent-level-directive' (default 1)
Indentation of \\=`ifdef/\\=`endif blocks.
+ `verilog-indent-ignore-multiline-defines' (default t)
+ Non-nil means ignore indentation on lines that are part of a multiline
+ define.
+ `verilog-indent-ignore-regexp' (default nil
+ Regexp that matches lines that should be ignored for indentation.
`verilog-cexp-indent' (default 1)
Indentation of Verilog statements broken across lines i.e.:
if (a)
@@ -3988,6 +4189,9 @@ Variables controlling indentation/edit style:
otherwise you get:
if (a)
begin
+ `verilog-indent-class-inside-pkg' (default t)
+ Non-nil means indent classes inside packages.
+ Otherwise, classes have zero indentation.
`verilog-auto-endcomments' (default t)
Non-nil means a comment /* ... */ is set after the ends which ends
cases, tasks, functions and modules.
@@ -3997,6 +4201,17 @@ Variables controlling indentation/edit style:
will be inserted. Setting this variable to zero results in every
end acquiring a comment; the default avoids too many redundant
comments in tight quarters.
+ `verilog-align-decl-expr-comments' (default t)
+ Non-nil means align declaration and expressions comments.
+ `verilog-align-comment-distance' (default 1)
+ Distance (in spaces) between longest declaration and comments.
+ Only works if `verilog-align-decl-expr-comments' is non-nil.
+ `verilog-align-assign-expr' (default nil)
+ Non-nil means align expressions of continuous assignments.
+ `verilog-align-typedef-regexp' (default nil)
+ Regexp that matches user typedefs for declaration alignment.
+ `verilog-align-typedef-words' (default nil)
+ List of words that match user typedefs for declaration alignment.
`verilog-auto-lineup' (default `declarations')
List of contexts where auto lineup of code should be done.
@@ -4020,17 +4235,20 @@ Some other functions are:
\\[verilog-mark-defun] Mark function.
\\[verilog-beg-of-defun] Move to beginning of current function.
\\[verilog-end-of-defun] Move to end of current function.
- \\[verilog-label-be] Label matching begin ... end, fork ... join, etc statements.
+ \\[verilog-label-be] Label matching begin ... end, fork ... join, etc
+ statements.
\\[verilog-comment-region] Put marked area in a comment.
- \\[verilog-uncomment-region] Uncomment an area commented with \\[verilog-comment-region].
+ \\[verilog-uncomment-region] Uncomment an area commented with
+ \\[verilog-comment-region].
\\[verilog-insert-block] Insert begin ... end.
\\[verilog-star-comment] Insert /* ... */.
\\[verilog-sk-always] Insert an always @(AS) begin .. end block.
\\[verilog-sk-begin] Insert a begin .. end block.
\\[verilog-sk-case] Insert a case block, prompting for details.
- \\[verilog-sk-for] Insert a for (...) begin .. end block, prompting for details.
+ \\[verilog-sk-for] Insert a for (...) begin .. end block, prompting for
+ details.
\\[verilog-sk-generate] Insert a generate .. endgenerate block.
\\[verilog-sk-header] Insert a header block at the top of file.
\\[verilog-sk-initial] Insert an initial begin .. end block.
@@ -4053,14 +4271,17 @@ Some other functions are:
\\[verilog-sk-else-if] Insert an else if (..) begin .. end block.
\\[verilog-sk-comment] Insert a comment block.
\\[verilog-sk-assign] Insert an assign .. = ..; statement.
- \\[verilog-sk-function] Insert a function .. begin .. end endfunction block.
+ \\[verilog-sk-function] Insert a function .. begin .. end endfunction
+ block.
\\[verilog-sk-input] Insert an input declaration, prompting for details.
\\[verilog-sk-output] Insert an output declaration, prompting for details.
- \\[verilog-sk-state-machine] Insert a state machine definition, prompting for details.
+ \\[verilog-sk-state-machine] Insert a state machine definition, prompting
+ for details.
\\[verilog-sk-inout] Insert an inout declaration, prompting for details.
\\[verilog-sk-wire] Insert a wire declaration, prompting for details.
\\[verilog-sk-reg] Insert a register declaration, prompting for details.
- \\[verilog-sk-define-signal] Define signal under point as a register at the top of the module.
+ \\[verilog-sk-define-signal] Define signal under point as a register at
+ the top of the module.
All key bindings can be seen in a Verilog-buffer with \\[describe-bindings].
Key bindings specific to `verilog-mode-map' are:
@@ -4147,7 +4368,7 @@ Key bindings specific to `verilog-mode-map' are:
;; verilog-mode-hook call added by define-derived-mode
)
-;;; Integration with the speedbar
+;;; Integration with the speedbar:
;;
;; Avoid problems with XEmacs byte-compiles.
@@ -4427,15 +4648,24 @@ following code fragment:
"Mark the current Verilog function (or procedure).
This puts the mark at the end, and point at the beginning."
(interactive)
- (if (featurep 'xemacs)
- (progn
- (push-mark)
- (verilog-end-of-defun)
- (push-mark)
- (verilog-beg-of-defun)
- (if (fboundp 'zmacs-activate-region)
- (zmacs-activate-region)))
- (mark-defun)))
+ (let (found)
+ (if (featurep 'xemacs)
+ (progn
+ (push-mark)
+ (verilog-end-of-defun)
+ (push-mark)
+ (verilog-beg-of-defun)
+ (if (fboundp 'zmacs-activate-region)
+ (zmacs-activate-region)))
+ ;; GNU Emacs
+ (when (verilog-beg-of-defun)
+ (setq found (point))
+ (verilog-end-of-defun)
+ (end-of-line)
+ (push-mark)
+ (goto-char found)
+ (beginning-of-line)
+ (setq mark-active t)))))
(defun verilog-comment-region (start end)
;; checkdoc-params: (start end)
@@ -4514,7 +4744,21 @@ area. See also `verilog-comment-region'."
(defun verilog-beg-of-defun ()
"Move backward to the beginning of the current function or procedure."
(interactive)
- (verilog-re-search-backward verilog-defun-re nil 'move))
+ (let (found)
+ (save-excursion
+ (when (verilog-looking-back verilog-defun-tf-re-end (point-at-bol))
+ (verilog-backward-sexp)
+ (setq found (point)))
+ (while (and (not found)
+ (verilog-re-search-backward verilog-defun-tf-re-all nil t))
+ (cond ((verilog-looking-back "\\(\\<typedef\\>\\s-+\\)" (point-at-bol)) ; corner case, e.g. 'typedef class <id>;'
+ (backward-word))
+ ((looking-at verilog-defun-tf-re-end)
+ (verilog-backward-sexp))
+ ((looking-at verilog-defun-tf-re-beg)
+ (setq found (point))))))
+ (when found
+ (goto-char found))))
(defun verilog-beg-of-defun-quick ()
"Move backward to the beginning of the current function or procedure.
@@ -4525,7 +4769,10 @@ Uses `verilog-scan' cache."
(defun verilog-end-of-defun ()
"Move forward to the end of the current function or procedure."
(interactive)
- (verilog-re-search-forward verilog-end-defun-re nil 'move))
+ (when (or (looking-at verilog-defun-tf-re-beg)
+ (verilog-beg-of-defun))
+ (verilog-forward-sexp)
+ (point)))
(defun verilog-get-end-of-defun ()
(save-excursion
@@ -4542,10 +4789,10 @@ Uses `verilog-scan' cache."
(case-fold-search nil)
(oldpos (point))
(b (progn
- (verilog-beg-of-defun)
+ (verilog-re-search-backward verilog-defun-re nil 'move)
(point-marker)))
(e (progn
- (verilog-end-of-defun)
+ (verilog-re-search-forward verilog-end-defun-re nil 'move)
(point-marker))))
(goto-char (marker-position b))
(if (> (- e b) 200)
@@ -4605,19 +4852,18 @@ Uses `verilog-scan' cache."
(goto-char h)))
;; stop if we see an extended complete reg, perhaps a complete one
(and
- (looking-at verilog-complete-reg)
+ (looking-at verilog-complete-re)
(let* ((p (point)))
(while (and (looking-at verilog-extended-complete-re)
(progn (setq p (point))
(verilog-backward-token)
(/= p (point)))))
(goto-char p)))
- ;; stop if we see a complete reg (previous found extended ones)
- (looking-at verilog-basic-complete-re)
;; stop if previous token is an ender
(save-excursion
(verilog-backward-token)
- (looking-at verilog-end-block-re))))
+ (or (looking-at verilog-end-block-re)
+ (verilog-in-directive-p)))))
(verilog-backward-syntactic-ws)
(verilog-backward-token))
;; Now point is where the previous line ended.
@@ -4634,28 +4880,23 @@ Uses `verilog-scan' cache."
(verilog-backward-syntactic-ws))
(let ((pt (point)))
(catch 'done
- (while (not (looking-at verilog-complete-reg))
+ (while (not (looking-at verilog-complete-re))
(setq pt (point))
(verilog-backward-syntactic-ws)
(if (or (bolp)
(= (preceding-char) ?\;)
+ (and (= (preceding-char) ?\{)
+ (save-excursion
+ (backward-char)
+ (verilog-at-struct-p)))
(progn
(verilog-backward-token)
- (looking-at verilog-ends-re)))
+ (or (looking-at verilog-ends-re)
+ (looking-at "begin"))))
(progn
(goto-char pt)
(throw 'done t)))))
(verilog-forward-syntactic-ws)))
-;;
-;; (while (and
-;; (not (looking-at verilog-complete-reg))
-;; (not (bolp))
-;; (not (= (preceding-char) ?\;)))
-;; (verilog-backward-token)
-;; (verilog-backward-syntactic-ws)
-;; (setq pt (point)))
-;; (goto-char pt)
-;; ;(verilog-forward-syntactic-ws)
(defun verilog-end-of-statement ()
"Move forward to end of current statement."
@@ -4713,7 +4954,7 @@ Uses `verilog-scan' cache."
pos)))))
(defun verilog-in-case-region-p ()
- "Return true if in a case region.
+ "Return non-nil if in a case region.
More specifically, point @ in the line foo : @ begin"
(interactive)
(save-excursion
@@ -4758,37 +4999,29 @@ More specifically, point @ in the line foo : @ begin"
(forward-sexp arg)))
(defun verilog-in-generate-region-p ()
- "Return true if in a generate region.
+ "Return non-nil if in a generate region.
More specifically, after a generate and before an endgenerate."
(interactive)
- (let ((nest 1))
- (save-excursion
- (catch 'done
- (while (and
- (/= nest 0)
- (verilog-re-search-backward
- "\\<\\(module\\)\\|\\(connectmodule\\)\\|\\(generate\\)\\|\\(endgenerate\\)\\|\\(if\\)\\|\\(case\\)\\|\\(for\\)\\>" nil 'move)
- (cond
- ((match-end 1) ; module - we have crawled out
- (throw 'done 1))
- ((match-end 2) ; connectmodule - we have crawled out
- (throw 'done 1))
- ((match-end 3) ; generate
- (setq nest (1- nest)))
- ((match-end 4) ; endgenerate
- (setq nest (1+ nest)))
- ((match-end 5) ; if
- (setq nest (1- nest)))
- ((match-end 6) ; case
- (setq nest (1- nest)))
- ((match-end 7) ; for
- (setq nest (1- nest))))))))
- (= nest 0) )) ; return nest
+ (let ((pos (point))
+ gen-beg-point gen-end-point)
+ (save-match-data
+ (save-excursion
+ (and (verilog-re-search-backward "\\<\\(generate\\)\\>" nil t)
+ (forward-word)
+ (setq gen-beg-point (point))
+ (verilog-forward-sexp)
+ (backward-word)
+ (setq gen-end-point (point)))))
+ (if (and gen-beg-point gen-end-point
+ (>= pos gen-beg-point)
+ (<= pos gen-end-point))
+ t
+ nil)))
(defun verilog-in-fork-region-p ()
- "Return true if between a fork and join."
+ "Return non-nil if between a fork and join."
(interactive)
- (let ((lim (save-excursion (verilog-beg-of-defun) (point)))
+ (let ((lim (save-excursion (verilog-re-search-backward verilog-defun-re nil 'move) (point)))
(nest 1))
(save-excursion
(while (and
@@ -4802,7 +5035,7 @@ More specifically, after a generate and before an endgenerate."
(= nest 0) )) ; return nest
(defun verilog-in-deferred-immediate-final-p ()
- "Return true if inside an `assert/assume/cover final' statement."
+ "Return non-nil if inside an `assert/assume/cover final' statement."
(interactive)
(and (looking-at "final")
(verilog-looking-back "\\<\\(?:assert\\|assume\\|cover\\)\\>\\s-+" nil))
@@ -5013,7 +5246,7 @@ primitive or interface named NAME."
(insert str)
(ding 't))
(let ((lim
- (save-excursion (verilog-beg-of-defun) (point)))
+ (save-excursion (verilog-re-search-backward verilog-defun-re nil 'move) (point)))
(here (point)))
(cond
(;-- handle named block differently
@@ -5461,7 +5694,7 @@ For example:
becomes:
// surefire lint_line_off UDDONX"
(interactive)
- (let ((buff (if (boundp 'next-error-last-buffer) ;Added to Emacs-22.1
+ (let ((buff (if (boundp 'next-error-last-buffer) ; Added to Emacs-22.1
next-error-last-buffer
(verilog--suppressed-warnings
((obsolete compilation-last-buffer))
@@ -5585,13 +5818,14 @@ FILENAME to find directory to run in, or defaults to `buffer-file-name'."
(defun verilog-warn-error (string &rest args)
"Call `error' using STRING and optional ARGS.
If `verilog-warn-fatal' is non-nil, call `verilog-warn' instead."
- (apply (if verilog-warn-fatal #'error #'verilog-warn)
+ (apply (if (and verilog-warn-fatal verilog-warn-fatal-internal)
+ #'error #'verilog-warn)
string args))
(defmacro verilog-batch-error-wrapper (&rest body)
"Execute BODY and add error prefix to any errors found.
This lets programs calling batch mode to easily extract error messages."
- `(let ((verilog-warn-fatal nil))
+ `(let ((verilog-warn-fatal-internal nil))
(condition-case err
(progn ,@body)
(error
@@ -5721,7 +5955,7 @@ This sets up the appropriate Verilog mode environment, calls
(string . 0)))
(defun verilog-continued-line-1 (lim)
- "Return true if this is a continued line.
+ "Return non-nil if this is a continued line.
Set point to where line starts. Limit search to point LIM."
(let ((continued 't))
(if (eq 0 (forward-line -1))
@@ -5774,7 +6008,6 @@ Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)."
;; if we are in a parenthesized list, and the user likes to indent these, return.
;; unless we are in the newfangled coverpoint or constraint blocks
(if (and
- verilog-indent-lists
(verilog-in-paren)
(not (verilog-in-coverage-p))
)
@@ -5791,7 +6024,7 @@ Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)."
(looking-at verilog-in-constraint-re) )) ; may still get hosed if concat in constraint
(let ((sp (point)))
(if (and
- (not (looking-at verilog-complete-reg))
+ (not (looking-at verilog-complete-re))
(verilog-continued-line-1 lim))
(progn (goto-char sp)
(throw 'nesting 'cexp))
@@ -5996,6 +6229,12 @@ Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)."
(goto-char here) ; or is clocking, starts a new block
(throw 'nesting 'block)))))
+ ;; if find `ifn?def `else `elsif
+ ((or (match-end 20)
+ (match-end 21)
+ (match-end 22))
+ (throw 'continue 'foo))
+
((looking-at "\\<class\\|struct\\|function\\|task\\>")
;; *sigh* These words have an optional prefix:
;; extern {virtual|protected}? function a();
@@ -6025,7 +6264,7 @@ Return a list of two elements: (INDENT-TYPE INDENT-LEVEL)."
;; {assert|assume|cover} property (); are complete
;; and could also be labeled: - foo: assert property
;; but
- ;; property ID () ... needs end_property
+ ;; property ID () ... needs endproperty
(verilog-beg-of-statement)
(if (looking-at verilog-property-re)
(throw 'continue 'statement) ; We don't need an endproperty for these
@@ -6110,6 +6349,23 @@ of the appropriate enclosing block."
(ding 't)
(setq nest 0))))))
+(defun verilog-leap-to-class-head ()
+ (let ((nest 1)
+ (class-re (concat "\\(\\<class\\>\\)\\|\\(\\<endclass\\>\\)")))
+ (catch 'skip
+ (while (verilog-re-search-backward class-re nil 'move)
+ (cond
+ ((match-end 1) ; begin
+ (when (verilog-looking-back "\\(\\<interface\\>\\s-+\\)\\|\\(\\<virtual\\>\\s-+\\)" (point-at-bol))
+ (goto-char (match-beginning 0)))
+ (unless (verilog-looking-back "\\<typedef\\>\\s-+" (point-at-bol))
+ (setq nest (1- nest))
+ (if (= 0 nest)
+ ;; Now previous line describes syntax
+ (throw 'skip 1))))
+ ((match-end 2) ; end
+ (setq nest (1+ nest))))))))
+
(defun verilog-leap-to-head ()
"Move point to the head of this block.
Jump from end to matching begin, from endcase to matching case, and so on."
@@ -6137,7 +6393,9 @@ Jump from end to matching begin, from endcase to matching case, and so on."
(setq reg "\\(\\<fork\\>\\)\\|\\(\\<join\\(_any\\|_none\\)?\\>\\)" ))
((looking-at "\\<endclass\\>")
;; 5: Search back for matching class
- (setq reg "\\(\\<class\\>\\)\\|\\(\\<endclass\\>\\)" ))
+ (catch 'nesting
+ (verilog-leap-to-class-head)
+ (setq reg nil)))
((looking-at "\\<endtable\\>")
;; 6: Search back for matching table
(setq reg "\\(\\<table\\>\\)\\|\\(\\<endtable\\>\\)" ))
@@ -6175,7 +6433,19 @@ Jump from end to matching begin, from endcase to matching case, and so on."
(setq reg "\\(\\<\\(rand\\)?sequence\\>\\)\\|\\(\\<endsequence\\>\\)" ))
((looking-at "\\<endclocking\\>")
;; 12: Search back for matching clocking
- (setq reg "\\(\\<clocking\\)\\|\\(\\<endclocking\\>\\)" )))
+ (setq reg "\\(\\<clocking\\)\\|\\(\\<endclocking\\>\\)" ))
+ ;; Search back for matching package
+ ((looking-at "\\<endpackage\\>")
+ (setq reg "\\(\\<package\\>\\)" ))
+ ;; Search back for matching program
+ ((looking-at "\\<endprogram\\>")
+ (setq reg "\\(\\<program\\>\\)" ))
+ ((looking-at "\\<`endif\\>")
+ ;; Search back for matching `endif `else `elsif
+ (setq reg "\\(\\<`ifn?def\\>\\)\\|\\(\\<`endif\\>\\)" ))
+ ((looking-at "\\<`else\\>")
+ ;; Search back for matching `else `else `elsif
+ (setq reg "\\(\\<`ifn?def\\>\\|\\<`elsif\\>\\)\\|\\(\\<`else\\>\\)" )))
(if reg
(catch 'skip
(if (eq nesting 'yes)
@@ -6221,7 +6491,7 @@ Jump from end to matching begin, from endcase to matching case, and so on."
(throw 'skip 1)))))))
(defun verilog-continued-line ()
- "Return true if this is a continued line.
+ "Return non-nil if this is a continued line.
Set point to where line starts."
(let ((continued 't))
(if (eq 0 (forward-line -1))
@@ -6394,10 +6664,10 @@ Optional BOUND limits search."
(let ((state (save-excursion (verilog-syntax-ppss))))
(cond
((nth 7 state) ; in // comment
- (verilog-re-search-backward "//" nil 'move)
+ (re-search-backward "//" nil 'move)
(skip-chars-backward "/"))
((nth 4 state) ; in /* */ comment
- (verilog-re-search-backward "/\\*" nil 'move))))
+ (re-search-backward "/\\*" nil 'move))))
(narrow-to-region bound (point))
(while (/= here (point))
(setq here (point))
@@ -6450,13 +6720,60 @@ Optional BOUND limits search."
(if jump
(beginning-of-line 2))))))))
+(defun verilog-pos-at-beg-of-statement ()
+ "Return point position at the beginning of current statement."
+ (save-excursion
+ (verilog-beg-of-statement)
+ (point)))
+
+(defun verilog-col-at-beg-of-statement ()
+ "Return current column at the beginning of current statement."
+ (save-excursion
+ (verilog-beg-of-statement)
+ (current-column)))
+
+(defun verilog-pos-at-end-of-statement ()
+ "Return point position at the end of current statement."
+ (save-excursion
+ (verilog-end-of-statement)))
+
+(defun verilog-col-at-end-of-statement ()
+ "Return current column at the end of current statement."
+ (save-excursion
+ (verilog-end-of-statement)
+ (current-column)))
+
+(defun verilog-pos-at-forward-syntactic-ws ()
+ "Return point position at next non whitespace/comment token."
+ (save-excursion
+ (verilog-forward-syntactic-ws)
+ (point)))
+
+(defun verilog-col-at-forward-syntactic-ws ()
+ "Return current column at next non whitespace/comment token."
+ (save-excursion
+ (verilog-forward-syntactic-ws)
+ (current-column)))
+
+(defun verilog-pos-at-backward-syntactic-ws ()
+ "Return point position at previous non whitespace/comment token."
+ (save-excursion
+ (verilog-backward-syntactic-ws)
+ (point)))
+
+(defun verilog-col-at-backward-syntactic-ws ()
+ "Return current column at previous non whitespace/comment token."
+ (save-excursion
+ (verilog-backward-syntactic-ws)
+ (current-column)))
+
(defun verilog-in-comment-p ()
- "Return true if in a star or // comment."
+ "Return non-nil if in a star or // comment."
(let ((state (save-excursion (verilog-syntax-ppss))))
(or (nth 4 state) (nth 7 state))))
(defun verilog-in-star-comment-p ()
- "Return true if in a star comment."
+ "Return non-nil if in a star comment."
(let ((state (save-excursion (verilog-syntax-ppss))))
(and
(nth 4 state) ; t if in a comment of style a // or b /**/
@@ -6465,40 +6782,39 @@ Optional BOUND limits search."
))))
(defun verilog-in-slash-comment-p ()
- "Return true if in a slash comment."
+ "Return non-nil if in a slash comment."
(let ((state (save-excursion (verilog-syntax-ppss))))
(nth 7 state)))
(defun verilog-in-comment-or-string-p ()
- "Return true if in a string or comment."
+ "Return non-nil if in a string or comment."
(let ((state (save-excursion (verilog-syntax-ppss))))
(or (nth 3 state) (nth 4 state) (nth 7 state)))) ; Inside string or comment)
(defun verilog-in-attribute-p ()
- "Return true if point is in an attribute (* [] attribute *)."
- (save-match-data
- (save-excursion
- (verilog-re-search-backward "\\((\\*\\)\\|\\(\\*)\\)" nil 'move)
- (cond
- ((match-end 1)
- (progn (goto-char (match-end 1))
- (not (looking-at "\\s-*)")))
- nil)
- ((match-end 2)
- (progn (goto-char (match-beginning 2))
- (not (looking-at "(\\s-*")))
- nil)
- (t nil)))))
+ "Return non-nil if point is in an attribute (* [] attribute *)."
+ (let ((pos (point)))
+ (save-match-data
+ (save-excursion
+ (and (verilog-re-search-backward "(\\*" nil 'move)
+ (progn (forward-sexp)
+ (skip-chars-backward "*)"))
+ (< pos (point)))))))
(defun verilog-in-parameter-p ()
- "Return true if point is in a parameter assignment #( p1=1, p2=5)."
+ "Return non-nil if point is in a parameter assignment #( p1=1, p2=5)."
(save-match-data
(save-excursion
- (verilog-re-search-backward "\\(#(\\)\\|\\()\\)" nil 'move)
- (numberp (match-beginning 1)))))
+ (and (progn
+ (verilog-backward-up-list 1)
+ (verilog-backward-syntactic-ws)
+ (= (preceding-char) ?\#))
+ (progn
+ (verilog-beg-of-statement-1)
+ (looking-at verilog-defun-re))))))
(defun verilog-in-escaped-name-p ()
- "Return true if in an escaped name."
+ "Return non-nil if in an escaped name."
(save-excursion
(backward-char)
(skip-chars-backward "^ \t\n\f")
@@ -6507,20 +6823,20 @@ Optional BOUND limits search."
nil)))
(defun verilog-in-directive-p ()
- "Return true if in a directive."
+ "Return non-nil if in a directive."
(save-excursion
(beginning-of-line)
(looking-at verilog-directive-re-1)))
(defun verilog-in-parenthesis-p ()
- "Return true if in a ( ) expression (but not { } or [ ])."
+ "Return non-nil if in a ( ) expression (but not { } or [ ])."
(save-match-data
(save-excursion
(verilog-re-search-backward "\\((\\)\\|\\()\\)" nil 'move)
(numberp (match-beginning 1)))))
(defun verilog-in-paren ()
- "Return true if in a parenthetical expression.
+ "Return non-nil if in a parenthetical expression.
May cache result using `verilog-syntax-ppss'."
(let ((state (save-excursion (verilog-syntax-ppss))))
(> (nth 0 state) 0 )))
@@ -6534,7 +6850,7 @@ May cache result using `verilog-syntax-ppss'."
0 )))
(defun verilog-in-paren-quick ()
- "Return true if in a parenthetical expression.
+ "Return non-nil if in a parenthetical expression.
Always starts from `point-min', to allow inserts with hooks disabled."
;; The -quick refers to its use alongside the other -quick functions,
;; not that it's likely to be faster than verilog-in-paren.
@@ -6542,7 +6858,7 @@ Always starts from `point-min', to allow inserts with hooks disabled."
(> (nth 0 state) 0 )))
(defun verilog-in-struct-p ()
- "Return true if in a struct declaration."
+ "Return non-nil if in a struct declaration."
(interactive)
(save-excursion
(if (verilog-in-paren)
@@ -6568,7 +6884,7 @@ Return >0 for nested struct."
nil))))
(defun verilog-in-coverage-p ()
- "Return true if in a constraint or coverpoint expression."
+ "Return non-nil if in a constraint or coverpoint expression."
(interactive)
(save-excursion
(if (verilog-in-paren)
@@ -6608,7 +6924,7 @@ Also move point to constraint."
(equal (char-before) ?\;)
(equal (char-before) ?\}))
;; skip what looks like bus repetition operator {#{
- (not (string-match "^{\\s-*[()0-9a-zA-Z_\\]*\\s-*{"
+ (not (string-match "^{\\s-*[][()0-9a-zA-Z_,:\\]*\\s-*{"
(buffer-substring p (point)))))))))
(progn
(let ( (pt (point)) (pass 0))
@@ -6625,7 +6941,7 @@ Also move point to constraint."
))
;; if first word token not keyword, it maybe the instance name
;; check next word token
- (if (looking-at "\\<\\w+\\>\\|\\s-*(\\s-*\\S-+")
+ (if (looking-at "\\<\\w+\\>\\|\\s-*[[(}]\\s-*\\S-+")
(progn (verilog-beg-of-statement)
(if (and
(not (string-match verilog-named-block-re (buffer-substring pt (point)))) ;; Abort if 'begin' keyword is found
@@ -6674,13 +6990,39 @@ Also move point to constraint."
(verilog-in-struct-p)
(looking-at "}\\(?:\\s-*\\w+\\s-*\\(?:,\\s-*\\w+\\s-*\\)*\\)?;")))
+(defun verilog-at-struct-decl-p ()
+ "Return non-nil if at a struct declaration."
+ (interactive)
+ (save-excursion
+ (verilog-re-search-forward "{" (point-at-eol) t)
+ (unless (bobp)
+ (backward-char))
+ (verilog-at-struct-p)))
+
+(defun verilog-at-enum-p ()
+ "If at the { of a enum, return true, not moving point."
+ (save-excursion
+ (when (equal (char-after) ?\{)
+ (verilog-beg-of-statement)
+ (beginning-of-line)
+ (when (verilog-re-search-forward verilog-typedef-enum-re (verilog-pos-at-end-of-statement) t)
+ t))))
+
+(defun verilog-at-enum-decl-p ()
+ "Return non-nil if at a enum declaration."
+ (interactive)
+ (save-excursion
+ (verilog-re-search-forward "{" (verilog-pos-at-end-of-statement) t)
+ (unless (bobp)
+ (backward-char))
+ (verilog-at-enum-p)))
+
(defun verilog-parenthesis-depth ()
"Return non zero if in parenthetical-expression."
(save-excursion (nth 1 (verilog-syntax-ppss))))
-
(defun verilog-skip-forward-comment-or-string ()
- "Return true if in a string or comment."
+ "Return non-nil if in a string or comment."
(let ((state (save-excursion (verilog-syntax-ppss))))
(cond
((nth 3 state) ;Inside string
@@ -6695,7 +7037,7 @@ Also move point to constraint."
nil))))
(defun verilog-skip-backward-comment-or-string ()
- "Return true if in a string or comment."
+ "Return non-nil if in a string or comment."
(let ((state (save-excursion (verilog-syntax-ppss))))
(cond
((nth 3 state) ;Inside string
@@ -6712,7 +7054,7 @@ Also move point to constraint."
nil))))
(defun verilog-skip-backward-comments ()
- "Return true if a comment was skipped."
+ "Return non-nil if a comment was skipped."
(let ((more t))
(while more
(setq more
@@ -6831,6 +7173,9 @@ Only look at a few lines to determine indent level."
(let ((type (car indent-str))
(ind (car (cdr indent-str))))
(cond
+ (; handle indentation ignoring
+ (verilog-indent-ignore-p)
+ nil)
(; handle continued exp
(eq type 'cexp)
(let ((here (point)))
@@ -6840,14 +7185,14 @@ Only look at a few lines to determine indent level."
(= (preceding-char) ?\,)
(save-excursion
(verilog-beg-of-statement-1)
- (looking-at verilog-declaration-re)))
+ (verilog-looking-at-decl-to-align)))
(let* ( fst
(val
(save-excursion
(backward-char 1)
(verilog-beg-of-statement-1)
(setq fst (point))
- (if (looking-at verilog-declaration-re)
+ (if (looking-at (verilog-get-declaration-re))
(progn ; we have multiple words
(goto-char (match-end 0))
(skip-chars-forward " \t")
@@ -6869,9 +7214,9 @@ Only look at a few lines to determine indent level."
(+ (current-column) verilog-cexp-indent))))))
(goto-char here)
(indent-line-to val)
- (if (and (not verilog-indent-lists)
- (verilog-in-paren))
- (verilog-pretty-declarations-auto))
+ (when (and (not verilog-indent-lists)
+ (verilog-in-paren))
+ (verilog-pretty-declarations-auto))
))
((= (preceding-char) ?\) )
(goto-char here)
@@ -6897,21 +7242,17 @@ Only look at a few lines to determine indent level."
(; handle inside parenthetical expressions
(eq type 'cparenexp)
- (let* ( here
- (val (save-excursion
- (verilog-backward-up-list 1)
- (forward-char 1)
- (if verilog-indent-lists
- (skip-chars-forward " \t")
- (verilog-forward-syntactic-ws))
+ (let* ((val (verilog-cparenexp-indent-level))
+ (here (save-excursion
+ (verilog-backward-up-list 1)
+ (forward-char 1)
+ (skip-chars-forward " \t")
+ (point)))
+ (decl (save-excursion
+ (goto-char here)
+ (verilog-forward-syntactic-ws)
(setq here (point))
- (current-column)))
-
- (decl (save-excursion
- (goto-char here)
- (verilog-forward-syntactic-ws)
- (setq here (point))
- (looking-at verilog-declaration-re))))
+ (looking-at (verilog-get-declaration-re)))))
(indent-line-to val)
(if decl
(verilog-pretty-declarations-auto))))
@@ -6938,17 +7279,20 @@ Only look at a few lines to determine indent level."
(;-- defun
(and (eq type 'defun)
- (looking-at verilog-zero-indent-re))
+ (or (and verilog-indent-class-inside-pkg
+ (looking-at verilog-zero-indent-no-class-re))
+ (and (not verilog-indent-class-inside-pkg)
+ (looking-at verilog-zero-indent-re))))
(indent-line-to 0))
(;-- declaration
(and (or
(eq type 'defun)
(eq type 'block))
- (looking-at verilog-declaration-re)
+ (verilog-looking-at-decl-to-align)
;; Do not consider "virtual function", "virtual task", "virtual class"
;; as declarations
- (not (looking-at (concat verilog-declaration-re
+ (not (looking-at (concat (verilog-get-declaration-re)
"\\s-+\\(function\\|task\\|class\\)\\b"))))
(verilog-indent-declaration ind))
@@ -6994,6 +7338,81 @@ Do not count named blocks or case-statements."
(t
(current-column)))))
+(defun verilog-cparenexp-indent-level ()
+ "Return indent level for current line inside a parenthetical expression."
+ (let ((start-pos (point))
+ (close-par (looking-at "[)}]"))
+ pos pos-arg-paren)
+ (save-excursion
+ (verilog-backward-up-list 1)
+ (if verilog-indent-lists
+ (progn
+ (forward-char 1)
+ (skip-chars-forward " \t")
+ (current-column))
+ ;; Indentation with `verilog-indent-lists' set to nil
+ (verilog-beg-of-statement-1)
+ (when (looking-at "\\<\\(function\\|task\\)\\>")
+ (verilog-beg-of-statement)) ; find virtual/protected/static
+ (cond (;; 1) Closing ); of a module/function/task
+ (and close-par
+ (save-excursion
+ (verilog-beg-of-statement-1)
+ (or (looking-at verilog-complete-re)
+ (progn (beginning-of-line)
+ (not (looking-at verilog-assignment-operation-re))))))
+ (current-column))
+ (;; 2) if (condition)
+ (looking-at "(")
+ (forward-char 1)
+ (skip-chars-forward " \t\f" (point-at-eol))
+ (current-column))
+ (;; 3) Inside a module/defun param list or function/task argument list
+ (or (looking-at verilog-defun-level-re)
+ (looking-at "\\(\\<\\(virtual\\|protected\\|static\\)\\>\\s-+\\)?\\(\\<task\\>\\|\\<function\\>\\)"))
+ (setq pos-arg-paren (save-excursion
+ (goto-char start-pos)
+ (verilog-backward-up-list 1)
+ (forward-char)
+ (skip-chars-forward " \t")
+ (when (not (eolp))
+ (current-column))))
+ (or pos-arg-paren
+ ;; arg in next line after (
+ (+ (current-column) verilog-indent-level)))
+ (;; 4) Assignment operation
+ (save-excursion
+ (beginning-of-line)
+ (and (looking-at verilog-assignment-operation-re)
+ (save-excursion
+ (goto-char (match-beginning 2))
+ (not (verilog-within-string)))
+ (progn (verilog-forward-syntactic-ws)
+ (not (looking-at verilog-complete-re)))))
+ (goto-char (match-end 2))
+ (skip-chars-forward " \t\f" (point-at-eol))
+ (skip-chars-forward "{(" (1+ (point)))
+ (skip-chars-forward " \t\f" (point-at-eol))
+ (current-column))
+ (;; 5) Typedef enum declaration
+ (verilog-at-enum-decl-p)
+ (verilog-re-search-forward "{" (verilog-pos-at-end-of-statement) t)
+ (if (> (verilog-pos-at-forward-syntactic-ws) (point-at-eol))
+ (+ (verilog-col-at-beg-of-statement) verilog-indent-level)
+ (verilog-col-at-forward-syntactic-ws)))
+ (;; 6) Long reporting strings (e.g. $display or $sformatf inside `uvm_info)
+ (save-excursion
+ (goto-char start-pos)
+ (verilog-backward-up-list 1)
+ (setq pos (1+ (point)))
+ (backward-word)
+ (or (looking-at (concat "\\$" verilog-identifier-re)) ; System function/task
+ (looking-at verilog-uvm-statement-re))) ; `uvm_* macros
+ (goto-char pos)
+ (current-column))
+ (t ;; 7) Default
+ (+ (current-column) verilog-indent-level)))))))
+
(defun verilog-indent-comment ()
"Indent current line as comment."
(let* ((stcol
@@ -7053,90 +7472,137 @@ _ARG is ignored, for `comment-indent-function' compatibility."
;;
+(defun verilog-align-comments (startpos endpos)
+ "Align inline comments between STARTPOS and ENDPOS."
+ (let (comm-ind e)
+ (when verilog-align-decl-expr-comments
+ (setq comm-ind (verilog-get-comment-align-indent (marker-position startpos) endpos))
+ (save-excursion
+ (goto-char (marker-position startpos))
+ (while (progn (setq e (marker-position endpos))
+ (< (point) e))
+ (when (verilog-search-comment-in-declaration e)
+ (goto-char (match-beginning 0))
+ (delete-horizontal-space)
+ (indent-to (1- (+ comm-ind verilog-align-comment-distance)))))))))
+
(defun verilog-pretty-declarations-auto (&optional quiet)
"Call `verilog-pretty-declarations' QUIET based on `verilog-auto-lineup'."
(when (or (eq 'all verilog-auto-lineup)
(eq 'declarations verilog-auto-lineup))
(verilog-pretty-declarations quiet)))
+(defun verilog--pretty-declarations-find-end (&optional reg-end)
+ "Find end position for current alignment of declarations.
+If region is active, use arg REG-END to set a limit on the alignment."
+ (let (e)
+ (if (and (verilog-parenthesis-depth)
+ (not (verilog-in-struct-p)))
+ ;; In an argument list or parameter block
+ (progn
+ (verilog-backward-up-list -1)
+ (forward-char -1)
+ (verilog-backward-syntactic-ws)
+ (if (region-active-p)
+ (min reg-end (point))
+ (point)))
+ ;; In a declaration block (not in argument list)
+ (verilog-end-of-statement)
+ (setq e (point)) ; Might be on last line
+ (verilog-forward-syntactic-ws)
+ (while (verilog-looking-at-decl-to-align)
+ (verilog-end-of-statement)
+ (setq e (point))
+ (verilog-forward-syntactic-ws))
+ (if (region-active-p)
+ (min reg-end e)
+ e))))
+
+(defun verilog--pretty-declarations-find-base-ind ()
+ "Find base indentation for current alignment of declarations."
+ (if (and (verilog-parenthesis-depth)
+ (not (verilog-in-struct-p)))
+ ;; In an argument list or parameter block
+ (progn
+ (unless (or (verilog-looking-back "(" (point-at-bol))
+ (bolp))
+ (forward-char 1))
+ (skip-chars-forward " \t")
+ (current-column))
+ ;; In a declaration block (not in argument list)
+ (progn
+ (verilog-do-indent (verilog-calculate-indent))
+ (verilog-forward-ws&directives)
+ (current-column))))
+
(defun verilog-pretty-declarations (&optional quiet)
"Line up declarations around point.
Be verbose about progress unless optional QUIET set."
(interactive)
- (let* ((m1 (make-marker))
- (e (point))
- el
- r
- (here (point))
- ind
- start
- startpos
- end
- endpos
- base-ind
- )
+ (let ((m1 (make-marker))
+ (e (point))
+ (here (point))
+ el r ind start startpos end endpos base-ind rstart rend)
(save-excursion
+ (when (region-active-p)
+ (setq rstart (region-beginning))
+ (setq rend (region-end))
+ (goto-char rstart)) ; Shrinks the region but ensures that start is a valid declaration
(if (progn
- ;; (verilog-beg-of-statement-1)
+ ;; Check if alignment can be performed
(beginning-of-line)
(verilog-forward-syntactic-ws)
- (and (not (verilog-in-directive-p)) ; could have `define input foo
- (looking-at verilog-declaration-re)))
- (progn
- (if (verilog-parenthesis-depth)
- ;; in an argument list or parameter block
- (setq el (verilog-backward-up-list -1)
- start (progn
- (goto-char e)
- (verilog-backward-up-list 1)
- (forward-line) ; ignore ( input foo,
- (verilog-re-search-forward verilog-declaration-re el 'move)
- (goto-char (match-beginning 0))
+ (or (and (not (verilog-in-directive-p)) ; could have `define input foo
+ (verilog-looking-at-decl-to-align))
+ (and (verilog-parenthesis-depth)
+ (looking-at verilog-interface-modport-re))))
+ ;; Find boundaries of alignment
+ (progn
+ (cond (;; Using region
+ (region-active-p)
+ (setq start rstart
+ startpos (set-marker (make-marker) start)
+ end (progn (goto-char start)
+ (verilog--pretty-declarations-find-end rend))
+ endpos (set-marker (make-marker) end)
+ base-ind (progn (goto-char start)
+ (verilog--pretty-declarations-find-base-ind))))
+ (;; In an argument list or parameter block
+ (and (verilog-parenthesis-depth)
+ (not (verilog-in-struct-p)))
+ (setq el (verilog-backward-up-list -1)
+ start (progn
+ (goto-char e)
+ (verilog-backward-up-list 1)
+ (verilog-re-search-forward (verilog-get-declaration-re 'iface-mp) el 'move)
+ (goto-char (match-beginning 0))
+ (skip-chars-backward " \t")
+ (point))
+ startpos (set-marker (make-marker) start)
+ end (progn (goto-char start)
+ (verilog--pretty-declarations-find-end))
+ endpos (set-marker (make-marker) end)
+ base-ind (progn (goto-char start)
+ (verilog--pretty-declarations-find-base-ind))))
+ (;; In a declaration block (not in argument list)
+ t
+ (setq
+ start (progn
+ (verilog-beg-of-statement-1)
+ (while (and (verilog-looking-at-decl-to-align)
+ (not (bobp)))
(skip-chars-backward " \t")
- (point))
- startpos (set-marker (make-marker) start)
- end (progn
- (goto-char start)
- (verilog-backward-up-list -1)
- (forward-char -1)
- (verilog-backward-syntactic-ws)
- (point))
- endpos (set-marker (make-marker) end)
- base-ind (progn
- (goto-char start)
- (forward-char 1)
- (skip-chars-forward " \t")
- (current-column)))
- ;; in a declaration block (not in argument list)
- (setq
- start (progn
- (verilog-beg-of-statement-1)
- (while (and (looking-at verilog-declaration-re)
- (not (bobp)))
- (skip-chars-backward " \t")
- (setq e (point))
- (beginning-of-line)
- (verilog-backward-syntactic-ws)
- (backward-char)
- (verilog-beg-of-statement-1))
- e)
- startpos (set-marker (make-marker) start)
- end (progn
- (goto-char here)
- (verilog-end-of-statement)
- (setq e (point)) ;Might be on last line
- (verilog-forward-syntactic-ws)
- (while (looking-at verilog-declaration-re)
- (verilog-end-of-statement)
- (setq e (point))
- (verilog-forward-syntactic-ws))
- e)
- endpos (set-marker (make-marker) end)
- base-ind (progn
- (goto-char start)
- (verilog-do-indent (verilog-calculate-indent))
- (verilog-forward-ws&directives)
- (current-column))))
+ (setq e (point))
+ (verilog-backward-syntactic-ws)
+ (backward-char)
+ (verilog-beg-of-statement-1))
+ e)
+ startpos (set-marker (make-marker) start)
+ end (progn (goto-char here)
+ (verilog--pretty-declarations-find-end))
+ endpos (set-marker (make-marker) end)
+ base-ind (progn (goto-char start)
+ (verilog--pretty-declarations-find-base-ind)))))
;; OK, start and end are set
(goto-char (marker-position startpos))
(if (and (not quiet)
@@ -7152,12 +7618,13 @@ Be verbose about progress unless optional QUIET set."
(indent-line-to base-ind)
(verilog-forward-ws&directives)
(if (< (point) e)
- (verilog-re-search-forward "[ \t\n\f]" e 'move)))
+ (verilog-re-search-forward "[ \t\n\f]" (marker-position endpos) 'move)))
(t
- (just-one-space)
- (verilog-re-search-forward "[ \t\n\f]" e 'move)))
- ;;(forward-line)
- )
+ (unless (verilog-looking-back "(" (point-at-bol))
+ (just-one-space))
+ (if (looking-at verilog-comment-start-regexp)
+ (verilog-forward-syntactic-ws)
+ (verilog-re-search-forward "[ \t\n\f]" e 'move)))))
;; Now find biggest prefix
(setq ind (verilog-get-lineup-indent (marker-position startpos) endpos))
;; Now indent each line.
@@ -7167,27 +7634,27 @@ Be verbose about progress unless optional QUIET set."
(> r 0))
(setq e (point))
(unless quiet (message "%d" r))
- ;; (verilog-do-indent (verilog-calculate-indent)))
(verilog-forward-ws&directives)
(cond
- ((or (and verilog-indent-declaration-macros
- (looking-at verilog-declaration-re-2-macro))
- (looking-at verilog-declaration-re-2-no-macro))
- (let ((p (match-end 0)))
- (set-marker m1 p)
- (if (verilog-re-search-forward "[[#`]" p 'move)
- (progn
- (forward-char -1)
- (just-one-space)
- (goto-char (marker-position m1))
+ ((looking-at (verilog-get-declaration-re 'iface-mp))
+ (unless (looking-at (verilog-get-declaration-re 'embedded-comments))
+ (let ((p (match-end 0)))
+ (set-marker m1 p)
+ (if (verilog-re-search-forward "[[#`]" p 'move)
+ (progn
+ (forward-char -1)
+ (just-one-space)
+ (goto-char (marker-position m1))
+ (delete-horizontal-space)
+ (indent-to ind 1))
+ (progn
(delete-horizontal-space)
- (indent-to ind 1))
- (progn
- (delete-horizontal-space)
- (indent-to ind 1)))))
+ (indent-to ind 1))))))
((verilog-continued-line-1 (marker-position startpos))
(goto-char e)
- (indent-line-to ind))
+ (unless (and (verilog-in-parenthesis-p)
+ (looking-at (concat "\\s-*" verilog-identifier-sym-re "\\s-+" verilog-identifier-sym-re "\\s-*")))
+ (indent-line-to ind)))
((verilog-in-struct-p)
;; could have a declaration of a user defined item
(goto-char e)
@@ -7197,104 +7664,202 @@ Be verbose about progress unless optional QUIET set."
(verilog-forward-ws&directives)
(forward-line -1)))
(forward-line 1))
- (unless quiet (message "")))))))
+ ;; Align comments if enabled
+ (when verilog-align-decl-expr-comments
+ (verilog-align-comments startpos endpos)))
+ ;; Exit
+ (unless quiet (message ""))))))
+
+(defun verilog--pretty-expr-assignment-found (&optional discard-re)
+ "Return non-nil if point is at a valid assignment operation to be aligned.
+Ensure cursor is not over DISCARD-RE (e.g. Verilog keywords).
+If returned non-nil, update match data according to `verilog-assignment-operation-re'."
+ ;; Not looking at a verilog keyword sentence (i.e looking at a potential assignment)
+ (and (if discard-re
+ (not (looking-at discard-re))
+ t)
+ ;; Corner case to filter first parameter on param lists
+ (save-excursion
+ (if (and (verilog-re-search-forward verilog-assignment-operation-re (point-at-eol) 'move)
+ (verilog-in-parenthesis-p))
+ (progn (verilog-backward-up-list 1)
+ (forward-char 1)
+ (not (eq 0 (string-match discard-re (buffer-substring-no-properties (point) (point-at-eol))))))
+ t))
+ ;; Don't work on multiline assignments unless they are continued lines
+ ;; e.g, multiple parameters or variable declarations in the same statement
+ (if (save-excursion
+ (and (not (verilog-in-parameter-p))
+ (verilog-continued-line)
+ (not (looking-at verilog-basic-complete-re))))
+ (save-excursion
+ (verilog-beg-of-statement-1)
+ (looking-at (verilog-get-declaration-re)))
+ t)
+ ;; Ensure it's not any kind of logical comparison
+ (save-excursion
+ (unless (and (not (verilog-in-parameter-p))
+ (verilog-re-search-forward (verilog-regexp-words '("if" "for" "assert" "with")) (point-at-eol) 'move))
+ t))
+ ;; Looking at an assignment (last check, provides match data)
+ (looking-at verilog-assignment-operation-re)))
+
+(defun verilog--pretty-expr-find-end (&optional discard-re reg-end)
+ "Find end position for current alignment of expressions.
+Use optional arg DISCARD-RE when aligning expressions outside of an
+argument list and REG-END to set a limit on the alignment when the
+region is active."
+ (if (verilog-in-parenthesis-p)
+ ;; Limit end in argument list
+ (progn
+ (verilog-backward-up-list -1)
+ (forward-char -1)
+ (verilog-backward-syntactic-ws)
+ (if (region-active-p)
+ (min reg-end (point))
+ (point)))
+ ;; Limit end in non-argument list
+ (save-excursion ; EOL of the last line of the assignment block
+ (end-of-line)
+ (let ((pt (point))) ; Might be on last line
+ (verilog-forward-syntactic-ws)
+ (beginning-of-line)
+ (while (and (verilog--pretty-expr-assignment-found discard-re)
+ (progn
+ (end-of-line)
+ (not (eq pt (point)))))
+ (setq pt (point))
+ (verilog-forward-syntactic-ws)
+ (beginning-of-line))
+ (if (region-active-p)
+ (min reg-end pt)
+ pt)))))
(defun verilog-pretty-expr (&optional quiet)
"Line up expressions around point.
If QUIET is non-nil, do not print messages showing the progress of line-up."
(interactive)
- (unless (verilog-in-comment-or-string-p)
+ (let* ((basic-complete-pretty-expr-re (if verilog-align-assign-expr
+ verilog-basic-complete-expr-no-assign-re
+ verilog-basic-complete-expr-re))
+ (complete-pretty-expr-re (concat verilog-extended-complete-re "\\|\\(" basic-complete-pretty-expr-re "\\)"))
+ (discard-re (concat "^\\s-*\\(" complete-pretty-expr-re "\\)"))
+ rstart rend)
(save-excursion
- (let ((regexp (concat "^\\s-*" verilog-complete-reg))
- (regexp1 (concat "^\\s-*" verilog-basic-complete-re)))
+ (when (region-active-p)
+ (setq rstart (region-beginning))
+ (setq rend (region-end))
+ (goto-char rstart))
+ (unless (verilog-in-comment-or-string-p)
(beginning-of-line)
- (when (and (not (looking-at regexp))
- (looking-at verilog-assignment-operation-re)
+ (when (and (verilog--pretty-expr-assignment-found discard-re)
(save-excursion
(goto-char (match-end 2))
(and (not (verilog-in-attribute-p))
- (not (verilog-in-parameter-p))
(not (verilog-in-comment-or-string-p)))))
- (let* ((start (save-excursion ; BOL of the first line of the assignment block
- (beginning-of-line)
- (let ((pt (point)))
- (verilog-backward-syntactic-ws)
- (beginning-of-line)
- (while (and (not (looking-at regexp1))
- (looking-at verilog-assignment-operation-re)
- (not (bobp)))
- (setq pt (point))
- (verilog-backward-syntactic-ws)
- (beginning-of-line)) ; Ack, need to grok `define
- pt)))
- (end (save-excursion ; EOL of the last line of the assignment block
- (end-of-line)
- (let ((pt (point))) ; Might be on last line
- (verilog-forward-syntactic-ws)
- (beginning-of-line)
- (while (and
- (not (looking-at regexp1))
- (looking-at verilog-assignment-operation-re)
- (progn
- (end-of-line)
- (not (eq pt (point)))))
- (setq pt (point))
- (verilog-forward-syntactic-ws)
- (beginning-of-line))
- pt)))
- (contains-2-char-operator (string-match "<=" (buffer-substring-no-properties start end)))
- (endmark (set-marker (make-marker) end)))
- (goto-char start)
- (verilog-do-indent (verilog-calculate-indent))
+ (let* ((start (cond (;; Using region
+ (region-active-p)
+ rstart)
+ (;; Parameter list
+ (verilog-in-parenthesis-p)
+ (progn
+ (verilog-backward-up-list 1)
+ (forward-char)
+ (verilog-re-search-forward verilog-assignment-operation-re-2 nil 'move)
+ (goto-char (match-beginning 0))
+ (point)))
+ (t ;; Declarations
+ (save-excursion ; BOL of the first line of the assignment block
+ (beginning-of-line)
+ (let ((pt (point)))
+ (verilog-backward-syntactic-ws)
+ (beginning-of-line)
+ (while (and (verilog--pretty-expr-assignment-found discard-re)
+ (not (bobp)))
+ (setq pt (point))
+ (verilog-backward-syntactic-ws)
+ (beginning-of-line)) ; Ack, need to grok `define
+ pt)))))
+ (startpos (set-marker (make-marker) start))
+ (end (cond (;; Using region
+ (region-active-p)
+ (verilog--pretty-expr-find-end discard-re rend))
+ (;; Parameter list
+ (verilog-in-parenthesis-p)
+ (verilog--pretty-expr-find-end))
+ (t ;; Declarations
+ (verilog--pretty-expr-find-end discard-re))))
+ (endpos (set-marker (make-marker) end))
+ (contains-2-char-operator (string-match "<=" (buffer-substring-no-properties start end))))
+ ;; Start with alignment
+ (goto-char startpos)
+ (unless (save-excursion
+ (beginning-of-line)
+ (looking-at discard-re))
+ (verilog-do-indent (verilog-calculate-indent)))
(when (and (not quiet)
- (> (- end start) 100))
+ (> (- (marker-position endpos) (marker-position startpos)) 100))
(message "Lining up expressions.. (please stand by)"))
-
;; Set indent to minimum throughout region
;; Rely on mark rather than on point as the indentation changes can
;; make the older point reference obsolete
- (while (< (point) (marker-position endmark))
+ (while (< (point) (marker-position endpos))
(beginning-of-line)
(save-excursion
- (verilog-just-one-space verilog-assignment-operation-re))
+ (if (looking-at verilog-complete-re)
+ (progn (goto-char (marker-position startpos))
+ (verilog-just-one-space verilog-assignment-operation-re-2))
+ (verilog-just-one-space verilog-assignment-operation-re)))
(verilog-do-indent (verilog-calculate-indent))
(end-of-line)
(verilog-forward-syntactic-ws))
- (let ((ind (verilog-get-lineup-indent-2 verilog-assignment-operation-re start (marker-position endmark))) ; Find the biggest prefix
+ (let ((ind (verilog-get-lineup-indent-2 verilog-assignment-operation-re (marker-position startpos) (marker-position endpos))) ; Find the biggest prefix
e)
;; Now indent each line.
- (goto-char start)
+ (goto-char (marker-position startpos))
(while (progn
- (setq e (marker-position endmark))
+ (setq e (marker-position endpos))
(> e (point)))
(unless quiet
(message " verilog-pretty-expr: %d" (- e (point))))
(setq e (point))
(cond
- ((looking-at verilog-assignment-operation-re)
+ ((or (looking-at verilog-assignment-operation-re)
+ (and (verilog-in-parenthesis-p)
+ (looking-at verilog-assignment-operation-re-2)))
(goto-char (match-beginning 2))
- (unless (or (verilog-in-parenthesis-p) ; Leave attributes and comparisons alone
+ (unless (or (and (verilog-in-parenthesis-p) ; Leave attributes and comparisons alone
+ (save-excursion ; Allow alignment of some expressions inside param/port list
+ (verilog-backward-up-list 1)
+ (verilog-beg-of-statement-1)
+ (not (looking-at verilog-defun-level-re))))
(verilog-in-coverage-p))
(if (and contains-2-char-operator
(eq (char-after) ?=))
(indent-to (1+ ind)) ; Line up the = of the <= with surrounding =
- (indent-to ind))))
- ((verilog-continued-line-1 start)
+ (indent-to ind)))
+ (forward-line 1))
+ ((and (save-excursion
+ (verilog-forward-syntactic-ws)
+ (not (looking-at verilog-complete-re)))
+ (verilog-continued-line-1 (marker-position startpos)))
(goto-char e)
- (indent-line-to ind))
- (t ; Must be comment or white space
+ (indent-line-to ind)
+ (forward-line 1))
+ (t ; Must be comment, white space or syntax error
(goto-char e)
- (verilog-forward-ws&directives)
- (forward-line -1)))
- (forward-line 1))
+ (forward-line 1))))
+ ;; Align comments if enabled
+ (when verilog-align-decl-expr-comments
+ (verilog-align-comments startpos endpos))
(unless quiet
(message "")))))))))
(defun verilog-just-one-space (myre)
"Remove extra spaces around regular expression MYRE."
(interactive)
- (if (and (not(looking-at verilog-complete-reg))
+ (if (and (not(looking-at verilog-complete-re))
(looking-at myre))
(let ((p1 (match-end 1))
(p2 (match-end 2)))
@@ -7312,59 +7877,63 @@ BASEIND is the base indent to offset everything."
;; `ind' is used in expressions stored in `verilog-indent-alist'.
(verilog--suppressed-warnings ((lexical ind)) (defvar ind))
(let ((pos (point-marker))
- (lim (save-excursion
- ;; (verilog-re-search-backward verilog-declaration-opener nil 'move)
- (verilog-re-search-backward "\\(\\<begin\\>\\)\\|\\(\\<\\(connect\\)?module\\>\\)\\|\\(\\<task\\>\\)" nil 'move)
- (point)))
- (ind)
- (val)
- (m1 (make-marker)))
- (setq val
- (+ baseind (eval (cdr (assoc 'declaration verilog-indent-alist)))))
+ (m1 (make-marker))
+ (in-paren (verilog-parenthesis-depth))
+ (val (+ baseind (eval (cdr (assoc 'declaration verilog-indent-alist)))))
+ ind)
(indent-line-to val)
-
;; Use previous declaration (in this module) as template.
- (if (or (eq 'all verilog-auto-lineup)
- (eq 'declarations verilog-auto-lineup))
- (if (verilog-re-search-backward
- (or (and verilog-indent-declaration-macros
- verilog-declaration-re-1-macro)
- verilog-declaration-re-1-no-macro)
- lim t)
- (progn
- (goto-char (match-end 0))
- (skip-chars-forward " \t")
- (setq ind (current-column))
- (goto-char pos)
- (setq val
- (+ baseind
- (eval (cdr (assoc 'declaration verilog-indent-alist)))))
- (indent-line-to val)
- (if (and verilog-indent-declaration-macros
- (looking-at verilog-declaration-re-2-macro))
- (let ((p (match-end 0)))
- (set-marker m1 p)
- (if (verilog-re-search-forward "[[#`]" p 'move)
- (progn
- (forward-char -1)
- (just-one-space)
- (goto-char (marker-position m1))
- (delete-horizontal-space)
- (indent-to ind 1))
- (delete-horizontal-space)
- (indent-to ind 1)))
- (if (looking-at verilog-declaration-re-2-no-macro)
- (let ((p (match-end 0)))
- (set-marker m1 p)
- (if (verilog-re-search-forward "[[`#]" p 'move)
- (progn
- (forward-char -1)
- (just-one-space)
- (goto-char (marker-position m1))
- (delete-horizontal-space)
- (indent-to ind 1))
- (delete-horizontal-space)
- (indent-to ind 1))))))))
+ (when (and (or (eq 'all verilog-auto-lineup)
+ (eq 'declarations verilog-auto-lineup))
+ ;; Limit alignment to consecutive statements
+ (progn
+ (verilog-backward-syntactic-ws)
+ (backward-char)
+ (looking-at ";"))
+ (progn
+ (verilog-beg-of-statement)
+ (looking-at (verilog-get-declaration-re)))
+ ;; Make sure that we don't jump to an argument list or parameter block if
+ ;; we were in a declaration block (not in argument list)
+ (or (and in-paren
+ (verilog-parenthesis-depth))
+ (and (not in-paren)
+ (not (verilog-parenthesis-depth))))
+ ;; Skip variable declarations inside functions/tasks
+ (skip-chars-backward " \t\f")
+ (bolp))
+ (goto-char (match-end 0))
+ (skip-chars-forward " \t")
+ (setq ind (current-column))
+ (goto-char pos)
+ (setq val
+ (+ baseind
+ (eval (cdr (assoc 'declaration verilog-indent-alist)))))
+ (indent-line-to val)
+ (if (looking-at (verilog-get-declaration-re))
+ (let ((p (match-end 0)))
+ (set-marker m1 p)
+ (if (verilog-re-search-forward "[[#`]" p 'move)
+ (progn
+ (forward-char -1)
+ (just-one-space)
+ (goto-char (marker-position m1))
+ (delete-horizontal-space)
+ (indent-to ind 1))
+ (delete-horizontal-space)
+ (indent-to ind 1)))
+ (when (looking-at (verilog-get-declaration-re))
+ (let ((p (match-end 0)))
+ (set-marker m1 p)
+ (if (verilog-re-search-forward "[[`#]" p 'move)
+ (progn
+ (forward-char -1)
+ (just-one-space)
+ (goto-char (marker-position m1))
+ (delete-horizontal-space)
+ (indent-to ind 1))
+ (delete-horizontal-space)
+ (indent-to ind 1))))))
(goto-char pos)))
(defun verilog-get-lineup-indent (b edpos)
@@ -7376,16 +7945,13 @@ Region is defined by B and EDPOS."
;; Get rightmost position
(while (progn (setq e (marker-position edpos))
(< (point) e))
- (if (verilog-re-search-forward
- (or (and verilog-indent-declaration-macros
- verilog-declaration-re-1-macro)
- verilog-declaration-re-1-no-macro) e 'move)
- (progn
- (goto-char (match-end 0))
- (verilog-backward-syntactic-ws)
- (if (> (current-column) ind)
- (setq ind (current-column)))
- (goto-char (match-end 0)))))
+ (when (verilog-re-search-forward (verilog-get-declaration-re 'iface-mp) e 'move)
+ (goto-char (match-end 0))
+ (verilog-backward-syntactic-ws)
+ (if (> (current-column) ind)
+ (setq ind (current-column)))
+ (goto-char (match-end 0))
+ (forward-line 1)))
(if (> ind 0)
(1+ ind)
;; No lineup-string found
@@ -7402,12 +7968,13 @@ BEG and END."
(save-excursion
(let ((ind 0))
(goto-char beg)
+ (beginning-of-line)
;; Get rightmost position
(while (< (point) end)
(when (and (verilog-re-search-forward regexp end 'move)
(not (verilog-in-attribute-p))) ; skip attribute exprs
(goto-char (match-beginning 2))
- (verilog-backward-syntactic-ws)
+ (skip-chars-backward " \t")
(if (> (current-column) ind)
(setq ind (current-column)))
(goto-char (match-end 0))))
@@ -7420,6 +7987,32 @@ BEG and END."
(1+ (current-column))))
ind)))
+(defun verilog-search-comment-in-declaration (bound)
+ "Move cursor to position of comment in declaration and return point.
+BOUND is a buffer position that bounds the search."
+ (and (verilog-re-search-forward (verilog-get-declaration-re 'iface-mp) bound 'move)
+ (not (looking-at (concat "\\s-*" verilog-comment-start-regexp)))
+ (re-search-forward verilog-comment-start-regexp (point-at-eol) :noerror)))
+
+(defun verilog-get-comment-align-indent (b endpos)
+ "Return the indent level that will line up comments within the region.
+Region is defined by B and ENDPOS."
+ (save-excursion
+ (let ((ind 0)
+ e comm-ind)
+ (goto-char b)
+ ;; Get rightmost position
+ (while (progn (setq e (marker-position endpos))
+ (< (point) e))
+ (when (verilog-search-comment-in-declaration e)
+ (end-of-line)
+ (verilog-backward-syntactic-ws)
+ (setq comm-ind (1+ (current-column)))
+ (when (> comm-ind ind)
+ (setq ind comm-ind)))
+ (forward-line 1))
+ ind)))
+
(defun verilog-comment-depth (type val)
"A useful mode debugging aide. TYPE and VAL are comments for insertion."
(save-excursion
@@ -7439,6 +8032,19 @@ BEG and END."
(insert
(format "%s %d" type val))))
+(defun verilog-indent-ignore-p ()
+ "Return non-nil if current line should ignore indentation."
+ (or (and verilog-indent-ignore-multiline-defines
+ ;; Line with multiline define, ends with "\" or "\" plus trailing whitespace
+ (or (looking-at ".*\\\\\\s-*$")
+ (save-excursion ; Last line after multiline define
+ (verilog-backward-syntactic-ws)
+ (unless (bobp)
+ (backward-char))
+ (looking-at "\\\\"))))
+ (and verilog-indent-ignore-regexp ; Ignore lines according to specified regexp
+ (looking-at verilog-indent-ignore-regexp))))
+
;;; Completion:
;;
@@ -7446,7 +8052,7 @@ BEG and END."
(defvar verilog-all nil)
(defvar verilog-buffer-to-use nil)
(defvar verilog-toggle-completions nil
- "True means \\<verilog-mode-map>\\[verilog-complete-word] should try all possible completions one by one.
+ "Non-nil means \\<verilog-mode-map>\\[verilog-complete-word] should try all possible completions one by one.
Repeated use of \\[verilog-complete-word] will show you all of them.
Normally, when there is more than one possible completion,
it displays a list of all possible completions.")
@@ -7598,16 +8204,14 @@ TYPE is `module', `tf' for task or function, or t if unknown."
(defun verilog-get-completion-decl (end)
"Macro for searching through current declaration (var, type or const)
for matches of `str' and adding the occurrence tp `all' through point END."
- (let ((re (or (and verilog-indent-declaration-macros
- verilog-declaration-re-2-macro)
- verilog-declaration-re-2-no-macro))
+ (let ((re (verilog-get-declaration-re))
decl-end match)
;; Traverse lines
(while (and (< (point) end)
(verilog-re-search-forward re end t))
;; Traverse current line
(setq decl-end (save-excursion (verilog-declaration-end)))
- (while (and (verilog-re-search-forward verilog-symbol-re decl-end t)
+ (while (and (verilog-re-search-forward verilog-identifier-sym-re decl-end t)
(not (match-end 1)))
(setq match (buffer-substring (match-beginning 0) (match-end 0)))
(if (string-match (concat "\\<" verilog-str) match)
@@ -7619,7 +8223,7 @@ for matches of `str' and adding the occurrence tp `all' through point END."
"Calculate all possible completions for variables (or constants)."
(let ((start (point)))
;; Search for all reachable var declarations
- (verilog-beg-of-defun)
+ (verilog-re-search-backward verilog-defun-re nil 'move)
(save-excursion
;; Check var declarations
(verilog-get-completion-decl start))))
@@ -8765,6 +9369,11 @@ Return an array of [outputs inouts inputs wire reg assign const gparam intf]."
(t ; Bit width
(setq vec (verilog-string-replace-matches
"\\s-+" "" nil nil keywd)))))
+ ;; int'(a) is cast, not declaration of a
+ ((and (looking-at "'")
+ (not rvalue))
+ (forward-char 1)
+ (setq expect-signal nil rvalue nil))
;; Normal or escaped identifier -- note we remember the \ if escaped
((looking-at "\\s-*\\([a-zA-Z0-9`_$]+\\|\\\\[^ \t\n\f]+\\)")
(goto-char (match-end 0))
@@ -9702,9 +10311,9 @@ resolve it. If optional RECURSE is non-nil, recurse through \\=`includes.
Localparams must be simple assignments to constants, or have their own
\"localparam\" label rather than a list of localparams. Thus:
- localparam X = 5, Y = 10; // Ok
- localparam X = {1\\='b1, 2\\='h2}; // Ok
- localparam X = {1\\='b1, 2\\='h2}, Y = 10; // Bad, make into 2 localparam lines
+ localparam X = 5, Y = 10; // Ok
+ localparam X = {1\\='b1, 2\\='h2}; // Ok
+ localparam X = {1\\='b1, 2\\='h2}, Y = 10; // Bad, make into 2 localparam lines
Defines must be simple text substitutions, one on a line, starting
at the beginning of the line. Any ifdefs or multiline comments around the
@@ -9827,8 +10436,7 @@ variable over and over when many modules are compiled together, put a test
around the inside each include file:
foo.v (an include file):
- \\=`ifdef _FOO_V // include if not already included
- \\=`else
+ \\=`ifndef _FOO_V // include if not already included
\\=`define _FOO_V
... contents of file
\\=`endif // _FOO_V"
@@ -10066,7 +10674,7 @@ Results are cached if inside `verilog-preserve-dir-cache'."
;; (prin1 (verilog-dir-files ".")) nil)
(defun verilog-dir-file-exists-p (filename)
- "Return true if FILENAME exists.
+ "Return non-nil if FILENAME exists.
Like `file-exists-p' but results are cached if inside
`verilog-preserve-dir-cache'."
(let* ((dirname (file-name-directory filename))
@@ -10105,7 +10713,7 @@ Allows version control to check out the file if need be."
modi)))))
(defun verilog-is-number (symbol)
- "Return true if SYMBOL is number-like."
+ "Return non-nil if SYMBOL is number-like."
(or (string-match "^[0-9 \t:]+$" symbol)
(string-match "^[---]*[0-9]+$" symbol)
(string-match "^[0-9 \t]+'s?[hdxbo][0-9a-fA-F_xz? \t]*$" symbol)))
@@ -10177,7 +10785,7 @@ Or, just the existing dirnames themselves if there are no wildcards."
(unless dirnames
(error "`verilog-library-directories' should include at least `.'"))
(save-match-data
- (setq dirnames (reverse dirnames)) ; not nreverse
+ (setq dirnames (reverse dirnames)) ; not nreverse
(let ((dirlist nil)
pattern dirfile dirfiles dirname root filename rest basefile)
(setq dirnames (mapcar #'substitute-in-file-name dirnames))
@@ -10885,12 +11493,12 @@ This repairs those mis-inserted by an AUTOARG."
(if (equal (match-string 3 out) ">>")
(int-to-string (ash (string-to-number (match-string 2 out))
(* -1 (string-to-number (match-string 4 out))))))
- (if (equal (match-string 3 out) "<<")
- (int-to-string (ash (string-to-number (match-string 2 out))
- (string-to-number (match-string 4 out)))))
(if (equal (match-string 3 out) ">>>")
(int-to-string (ash (string-to-number (match-string 2 out))
(* -1 (string-to-number (match-string 4 out))))))
+ (if (equal (match-string 3 out) "<<")
+ (int-to-string (ash (string-to-number (match-string 2 out))
+ (string-to-number (match-string 4 out)))))
(if (equal (match-string 3 out) "<<<")
(int-to-string (ash (string-to-number (match-string 2 out))
(string-to-number (match-string 4 out)))))
@@ -10920,7 +11528,7 @@ This repairs those mis-inserted by an AUTOARG."
(ceiling (/ (log value) (log 2)))))
(defun verilog-typedef-name-p (variable-name)
- "Return true if the VARIABLE-NAME is a type definition."
+ "Return non-nil if the VARIABLE-NAME is a type definition."
(when verilog-typedef-regexp
(verilog-string-match-fold verilog-typedef-regexp variable-name)))
@@ -11678,7 +12286,7 @@ If PAR-VALUES replace final strings with these parameter values."
(concat "." vl-modport) "")
dflt-bits))
;; Find template
- (cond (tpl-ass ; Template of exact port name
+ (cond (tpl-ass ; Template of exact port name
(setq tpl-net (nth 1 tpl-ass)))
((nth 1 tpl-list) ; Wildcards in template, search them
(let ((wildcards (nth 1 tpl-list)))
@@ -12240,7 +12848,9 @@ For more information see the \\[verilog-faq] and forums at URL
(cond ((not verilog-auto-inst-first-any)
(re-search-backward "," pt t)
(delete-char 1)
- (insert ");")
+ (when (looking-at " ")
+ (delete-char 1)) ; so we can align // Templated comments
+ (insert ");")
(search-forward "\n") ; Added by inst-port
(delete-char -1)
(if (search-forward ")" nil t) ; From user, moved up a line
@@ -14645,7 +15255,7 @@ and the case items."
(if (not (member v1 verilog-keywords))
(save-excursion
(setq verilog-sk-signal v1)
- (verilog-beg-of-defun)
+ (verilog-re-search-backward verilog-defun-re nil 'move)
(verilog-end-of-statement)
(verilog-forward-syntactic-ws)
(verilog-sk-def-reg)
@@ -14897,7 +15507,12 @@ Files are checked based on `verilog-library-flags'."
'(
verilog-active-low-regexp
verilog-after-save-font-hook
+ verilog-align-assign-expr
+ verilog-align-comment-distance
+ verilog-align-decl-expr-comments
verilog-align-ifelse
+ verilog-align-typedef-regexp
+ verilog-align-typedef-words
verilog-assignment-delay
verilog-auto-arg-sort
verilog-auto-declare-nettype
@@ -14942,13 +15557,17 @@ Files are checked based on `verilog-library-flags'."
verilog-compiler
verilog-coverage
verilog-delete-auto-hook
+ verilog-fontify-variables
verilog-getopt-flags-hook
verilog-highlight-grouping-keywords
verilog-highlight-includes
verilog-highlight-modules
verilog-highlight-translate-off
verilog-indent-begin-after-if
+ verilog-indent-class-inside-pkg
verilog-indent-declaration-macros
+ verilog-indent-ignore-multiline-defines
+ verilog-indent-ignore-regexp
verilog-indent-level
verilog-indent-level-behavioral
verilog-indent-level-declaration
diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el
index 1ae60796601..d77024136d0 100644
--- a/lisp/progmodes/xref.el
+++ b/lisp/progmodes/xref.el
@@ -1525,7 +1525,7 @@ The meanings of both arguments are the same as documented in
prompt))
(xref-backend-identifier-completion-table backend)
nil nil nil
- 'xref--read-identifier-history def)))
+ 'xref--read-identifier-history def t)))
(if (equal id "")
(or def (user-error "There is no default identifier"))
id)))
diff --git a/lisp/reveal.el b/lisp/reveal.el
index 8a1239e1aa2..5ebc5f7c6c3 100644
--- a/lisp/reveal.el
+++ b/lisp/reveal.el
@@ -118,17 +118,13 @@ Each element has the form (WINDOW . OVERLAY).")
;; overlay. Always reveal invisible text, but only reveal
;; display properties if `reveal-toggle-invisible' is
;; present.
- (let ((inv (overlay-get ol 'invisible))
- (disp (and (overlay-get ol 'display)
- (overlay-get ol 'reveal-toggle-invisible)))
- open)
- (when (and (or (and inv
- ;; There's an `invisible' property.
- ;; Make sure it's actually invisible,
- ;; and ellipsized.
- (and (consp buffer-invisibility-spec)
- (cdr (assq inv buffer-invisibility-spec))))
- disp)
+ (let* ((inv (overlay-get ol 'invisible))
+ (disp (and (overlay-get ol 'display)
+ (overlay-get ol 'reveal-toggle-invisible)))
+ (hidden (invisible-p inv))
+ (ellipsis (and hidden (not (eq t hidden))))
+ open)
+ (when (and (or ellipsis disp)
(or (setq open
(or (overlay-get ol 'reveal-toggle-invisible)
(and (symbolp inv)
diff --git a/lisp/saveplace.el b/lisp/saveplace.el
index 7512fc87c5d..18d296ba2d9 100644
--- a/lisp/saveplace.el
+++ b/lisp/saveplace.el
@@ -35,6 +35,8 @@
;;; Code:
+(require 'cl-lib)
+
;; this is what I was using during testing:
;; (define-key ctl-x-map "p" 'toggle-save-place-globally)
@@ -87,11 +89,77 @@ this happens automatically before saving `save-place-alist' to
`save-place-file'."
:type 'boolean)
+(defun save-place-load-alist-from-file ()
+ (if (not save-place-loaded)
+ (progn
+ (setq save-place-loaded t)
+ (let ((file (expand-file-name save-place-file)))
+ ;; make sure that the alist does not get overwritten, and then
+ ;; load it if it exists:
+ (if (file-readable-p file)
+ ;; don't want to use find-file because we have been
+ ;; adding hooks to it.
+ (with-current-buffer (get-buffer-create " *Saved Places*")
+ (delete-region (point-min) (point-max))
+ ;; Make sure our 'coding:' cookie in the save-place
+ ;; file will take effect, in case the caller binds
+ ;; coding-system-for-read.
+ (let (coding-system-for-read)
+ (insert-file-contents file))
+ (goto-char (point-min))
+ (setq save-place-alist
+ (with-demoted-errors "Error reading save-place-file: %S"
+ (car (read-from-string
+ (buffer-substring (point-min) (point-max))))))
+
+ ;; If there is a limit, and we're over it, then we'll
+ ;; have to truncate the end of the list:
+ (if save-place-limit
+ (if (<= save-place-limit 0)
+ ;; Zero gets special cased. I'm not thrilled
+ ;; with this, but the loop for >= 1 is tight.
+ (setq save-place-alist nil)
+ ;; Else the limit is >= 1, so enforce it by
+ ;; counting and then `setcdr'ing.
+ (let ((s save-place-alist)
+ (count 1))
+ (while s
+ (if (>= count save-place-limit)
+ (setcdr s nil)
+ (setq count (1+ count)))
+ (setq s (cdr s))))))
+
+ (kill-buffer (current-buffer))))
+ nil))))
+
(defcustom save-place-abbreviate-file-names nil
"If non-nil, abbreviate file names before saving them.
This can simplify sharing the `save-place-file' file across
-different hosts."
+different hosts.
+
+Changing this option requires rewriting `save-place-alist' with
+corresponding file name format, therefore setting this option
+just using `setq' may cause out-of-sync problems. You should use
+either `setopt' or M-x customize-variable to set this option."
:type 'boolean
+ :set (lambda (sym val)
+ (set-default sym val)
+ (or save-place-loaded (save-place-load-alist-from-file))
+ (let ((fun (if val #'abbreviate-file-name #'expand-file-name)))
+ (setq save-place-alist
+ (cl-delete-duplicates
+ (cl-loop for (k . v) in save-place-alist
+ collect
+ (cons (funcall fun k)
+ (if (listp v)
+ (cl-loop for (k1 . v1) in v
+ collect
+ (cons k1 (funcall fun v1)))
+ v)))
+ :key #'car
+ :from-end t
+ :test #'equal)))
+ val)
:version "28.1")
(defcustom save-place-save-skipped t
@@ -214,7 +282,11 @@ file names."
((and (derived-mode-p 'dired-mode) directory)
(let ((filename (dired-get-filename nil t)))
(if filename
- `((dired-filename . ,filename))
+ (list
+ (cons 'dired-filename
+ (if save-place-abbreviate-file-names
+ (abbreviate-file-name filename)
+ filename)))
(point))))
(t (point)))))
(if cell
@@ -278,49 +350,6 @@ may have changed) back to `save-place-alist'."
(file-error (message "Saving places: can't write %s" file)))
(kill-buffer (current-buffer))))))
-(defun save-place-load-alist-from-file ()
- (if (not save-place-loaded)
- (progn
- (setq save-place-loaded t)
- (let ((file (expand-file-name save-place-file)))
- ;; make sure that the alist does not get overwritten, and then
- ;; load it if it exists:
- (if (file-readable-p file)
- ;; don't want to use find-file because we have been
- ;; adding hooks to it.
- (with-current-buffer (get-buffer-create " *Saved Places*")
- (delete-region (point-min) (point-max))
- ;; Make sure our 'coding:' cookie in the save-place
- ;; file will take effect, in case the caller binds
- ;; coding-system-for-read.
- (let (coding-system-for-read)
- (insert-file-contents file))
- (goto-char (point-min))
- (setq save-place-alist
- (with-demoted-errors "Error reading save-place-file: %S"
- (car (read-from-string
- (buffer-substring (point-min) (point-max))))))
-
- ;; If there is a limit, and we're over it, then we'll
- ;; have to truncate the end of the list:
- (if save-place-limit
- (if (<= save-place-limit 0)
- ;; Zero gets special cased. I'm not thrilled
- ;; with this, but the loop for >= 1 is tight.
- (setq save-place-alist nil)
- ;; Else the limit is >= 1, so enforce it by
- ;; counting and then `setcdr'ing.
- (let ((s save-place-alist)
- (count 1))
- (while s
- (if (>= count save-place-limit)
- (setcdr s nil)
- (setq count (1+ count)))
- (setq s (cdr s))))))
-
- (kill-buffer (current-buffer))))
- nil))))
-
(defun save-places-to-alist ()
;; go through buffer-list, saving places to alist if save-place-mode
;; is non-nil, deleting them from alist if it is nil.
@@ -353,7 +382,11 @@ may have changed) back to `save-place-alist'."
"Function added to `find-file-hook' by `save-place-mode'.
It runs the hook `save-place-after-find-file-hook'."
(or save-place-loaded (save-place-load-alist-from-file))
- (let ((cell (assoc buffer-file-name save-place-alist)))
+ (let ((cell (and (stringp buffer-file-name)
+ (assoc (if save-place-abbreviate-file-names
+ (abbreviate-file-name buffer-file-name)
+ buffer-file-name)
+ save-place-alist))))
(if cell
(progn
(or revert-buffer-in-progress-p
@@ -368,25 +401,25 @@ It runs the hook `save-place-after-find-file-hook'."
(defun save-place-dired-hook ()
"Position the point in a Dired buffer."
(or save-place-loaded (save-place-load-alist-from-file))
- (let* ((directory (and (derived-mode-p 'dired-mode)
- (boundp 'dired-subdir-alist)
- dired-subdir-alist
- (dired-current-directory)))
- (cell (assoc (and directory
- (expand-file-name (if (consp directory)
- (car directory)
- directory)))
- save-place-alist)))
- (if cell
- (progn
- (or revert-buffer-in-progress-p
- (cond
- ((integerp (cdr cell))
- (goto-char (cdr cell)))
- ((and (listp (cdr cell)) (assq 'dired-filename (cdr cell)))
- (dired-goto-file (cdr (assq 'dired-filename (cdr cell)))))))
- ;; and make sure it will be saved again for later
- (setq save-place-mode t)))))
+ (when-let ((directory (and (derived-mode-p 'dired-mode)
+ (boundp 'dired-subdir-alist)
+ dired-subdir-alist
+ (dired-current-directory)))
+ (item (expand-file-name (if (consp directory)
+ (car directory)
+ directory)))
+ (cell (assoc (if save-place-abbreviate-file-names
+ (abbreviate-file-name item) item)
+ save-place-alist)))
+ (or revert-buffer-in-progress-p
+ (cond
+ ((integerp (cdr cell))
+ (goto-char (cdr cell)))
+ ((listp (cdr cell))
+ (when-let ((elt (assq 'dired-filename (cdr cell))))
+ (dired-goto-file (expand-file-name (cdr elt)))))))
+ ;; and make sure it will be saved again for later
+ (setq save-place-mode t)))
(defun save-place-kill-emacs-hook ()
;; First update the alist. This loads the old save-place-file if nec.
diff --git a/lisp/server.el b/lisp/server.el
index eaf24a770e4..608e5df3a5b 100644
--- a/lisp/server.el
+++ b/lisp/server.el
@@ -273,6 +273,11 @@ If nil, no instructions are displayed."
:version "28.1"
:type 'boolean)
+(defvar server-stop-automatically) ; Defined below to avoid recursive load.
+
+(defvar server-stop-automatically--timer nil
+ "The timer object for `server-stop-automatically--maybe-kill-emacs'.")
+
;; We do not use `temporary-file-directory' here, because emacsclient
;; does not read the init file.
(defvar server-socket-dir
@@ -636,7 +641,8 @@ anyway."
(setq stopped-p t
server-process nil
server-mode nil
- global-minor-modes (delq 'server-mode global-minor-modes)))
+ global-minor-modes (delq 'server-mode global-minor-modes))
+ (server-apply-stop-automatically))
(unwind-protect
;; Delete the socket files made by previous server
;; invocations.
@@ -757,6 +763,7 @@ the `server-process' variable."
(list :family 'local
:service server-file
:plist '(:authenticated t)))))
+ (server-apply-stop-automatically)
(unless server-process (error "Could not start server process"))
(server-log "Started server")
(process-put server-process :server-file server-file)
@@ -1769,9 +1776,6 @@ be a cons cell (LINENUMBER . COLUMNNUMBER)."
(when server-raise-frame
(select-frame-set-input-focus (window-frame)))))
-(defvar server-stop-automatically nil
- "Internal status variable for `server-stop-automatically'.")
-
;;;###autoload
(defun server-save-buffers-kill-terminal (arg)
;; Called from save-buffers-kill-terminal in files.el.
@@ -1779,11 +1783,19 @@ be a cons cell (LINENUMBER . COLUMNNUMBER)."
With ARG non-nil, silently save all file-visiting buffers, then kill.
If emacsclient was started with a list of filenames to edit, then
-only these files will be asked to be saved."
- (let ((proc (frame-parameter nil 'client)))
+only these files will be asked to be saved.
+
+When running Emacs as a daemon and with
+`server-stop-automatically' (which see) set to `kill-terminal' or
+`delete-frame', this function may call `save-buffers-kill-emacs'
+if there are no other active clients."
+ (let ((stop-automatically
+ (and (daemonp)
+ (memq server-stop-automatically '(kill-terminal delete-frame))))
+ (proc (frame-parameter nil 'client)))
(cond ((eq proc 'nowait)
;; Nowait frames have no client buffer list.
- (if (length> (frame-list) (if server-stop-automatically 2 1))
+ (if (length> (frame-list) (if stop-automatically 2 1))
;; If there are any other frames, only delete this one.
;; When `server-stop-automatically' is set, don't count
;; the daemon frame.
@@ -1792,7 +1804,7 @@ only these files will be asked to be saved."
;; If we're the last frame standing, kill Emacs.
(save-buffers-kill-emacs arg)))
((processp proc)
- (if (or (not server-stop-automatically)
+ (if (or (not stop-automatically)
(length> server-clients 1)
(seq-some
(lambda (frame)
@@ -1818,31 +1830,14 @@ only these files will be asked to be saved."
(save-buffers-kill-emacs arg)))
(t (error "Invalid client frame")))))
-(defun server-stop-automatically--handle-delete-frame (frame)
- "Handle deletion of FRAME when `server-stop-automatically' is used."
- (when server-stop-automatically
- (if (if (and (processp (frame-parameter frame 'client))
- (eq this-command 'save-buffers-kill-terminal))
- (progn
- (dolist (f (frame-list))
- (when (and (eq (frame-parameter frame 'client)
- (frame-parameter f 'client))
- (not (eq frame f)))
- (set-frame-parameter f 'client nil)
- (let ((server-stop-automatically nil))
- (delete-frame f))))
- (if (cddr (frame-list))
- (let ((server-stop-automatically nil))
- (delete-frame frame)
- nil)
- t))
- (null (cddr (frame-list))))
- (let ((server-stop-automatically nil))
- (save-buffers-kill-emacs)
- (delete-frame frame)))))
+(defun server-stop-automatically--handle-delete-frame (_frame)
+ "Handle deletion of FRAME when `server-stop-automatically' is `delete-frame'."
+ (when (null (cddr (frame-list)))
+ (let ((server-stop-automatically nil))
+ (save-buffers-kill-emacs))))
(defun server-stop-automatically--maybe-kill-emacs ()
- "Handle closing of Emacs daemon when `server-stop-automatically' is used."
+ "Handle closing of Emacs daemon when `server-stop-automatically' is `empty'."
(unless (cdr (frame-list))
(when (and
(not (memq t (mapcar (lambda (b)
@@ -1856,41 +1851,70 @@ only these files will be asked to be saved."
(process-list)))))
(kill-emacs))))
-;;;###autoload
-(defun server-stop-automatically (arg)
- "Automatically stop server as specified by ARG.
-
-If ARG is the symbol `empty', stop the server when it has no
+(defun server-apply-stop-automatically ()
+ "Apply the current value of `server-stop-automatically'.
+This function adds or removes the necessary helpers to manage
+stopping the Emacs server automatically, depending on the whether
+the server is running or not. This function only applies when
+running Emacs as a daemon."
+ (when (daemonp)
+ (let (empty-timer-p delete-frame-p)
+ (when server-process
+ (pcase server-stop-automatically
+ ('empty (setq empty-timer-p t))
+ ('delete-frame (setq delete-frame-p t))))
+ ;; Start or stop the timer.
+ (if empty-timer-p
+ (unless server-stop-automatically--timer
+ (setq server-stop-automatically--timer
+ (run-with-timer
+ 10 2
+ #'server-stop-automatically--maybe-kill-emacs)))
+ (when server-stop-automatically--timer
+ (cancel-timer server-stop-automatically--timer)
+ (setq server-stop-automatically--timer nil)))
+ ;; Add or remove the delete-frame hook.
+ (if delete-frame-p
+ (add-hook 'delete-frame-functions
+ #'server-stop-automatically--handle-delete-frame)
+ (remove-hook 'delete-frame-functions
+ #'server-stop-automatically--handle-delete-frame))))
+ ;; Return the current value of `server-stop-automatically'.
+ server-stop-automatically)
+
+(defcustom server-stop-automatically nil
+ "If non-nil, stop the server under the requested conditions.
+
+If this is the symbol `empty', stop the server when it has no
remaining clients, no remaining unsaved file-visiting buffers,
and no running processes with a `query-on-exit' flag.
-If ARG is the symbol `delete-frame', ask the user when the last
+If this is the symbol `delete-frame', ask the user when the last
frame is deleted whether each unsaved file-visiting buffer must
be saved and each running process with a `query-on-exit' flag
can be stopped, and if so, stop the server itself.
-If ARG is the symbol `kill-terminal', ask the user when the
+If this is the symbol `kill-terminal', ask the user when the
terminal is killed with \\[save-buffers-kill-terminal] \
whether each unsaved file-visiting
buffer must be saved and each running process with a `query-on-exit'
-flag can be stopped, and if so, stop the server itself.
-
-Any other value of ARG will cause this function to signal an error.
+flag can be stopped, and if so, stop the server itself."
+ :type '(choice
+ (const :tag "Never" nil)
+ (const :tag "When no clients, unsaved files, or processes"
+ empty)
+ (const :tag "When killing last terminal" kill-terminal)
+ (const :tag "When killing last terminal or frame" delete-frame))
+ :set (lambda (symbol value)
+ (set-default symbol value)
+ (server-apply-stop-automatically))
+ :version "29.1")
-This function is meant to be called from the user init file."
- (when (daemonp)
- (setq server-stop-automatically arg)
- (cond
- ((eq arg 'empty)
- (setq server-stop-automatically nil)
- (run-with-timer 10 2
- #'server-stop-automatically--maybe-kill-emacs))
- ((eq arg 'delete-frame)
- (add-hook 'delete-frame-functions
- #'server-stop-automatically--handle-delete-frame))
- ((eq arg 'kill-terminal))
- (t
- (error "Unexpected argument")))))
+;;;###autoload
+(defun server-stop-automatically (value)
+ "Automatically stop the Emacs server as specified by VALUE.
+This sets the variable `server-stop-automatically' (which see)."
+ (setopt server-stop-automatically value))
(define-key ctl-x-map "#" 'server-edit)
@@ -1905,12 +1929,22 @@ This function is meant to be called from the user init file."
;; continue standard unloading
nil)
+(define-error 'server-return-invalid-read-syntax
+ "Emacs server returned unreadable result of evaluation"
+ 'invalid-read-syntax)
+
(defun server-eval-at (server form)
"Contact the Emacs server named SERVER and evaluate FORM there.
-Returns the result of the evaluation, or signals an error if it
-cannot contact the specified server. For example:
+Returns the result of the evaluation. For example:
(server-eval-at \"server\" \\='(emacs-pid))
-returns the process ID of the Emacs instance running \"server\"."
+returns the process ID of the Emacs instance running \"server\".
+
+This function signals `error' if it could not contact the server.
+
+This function signals `server-return-invalid-read-syntax' if
+`read' fails on the result returned by the server.
+This will occur whenever the result of evaluating FORM is
+something that cannot be printed readably."
(let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir))
(server-file (expand-file-name server server-dir))
(coding-system-for-read 'binary)
@@ -1956,8 +1990,14 @@ returns the process ID of the Emacs instance running \"server\"."
(progn (skip-chars-forward "^\n")
(point))))))
(if (not (equal answer ""))
- (read (decode-coding-string (server-unquote-arg answer)
- 'emacs-internal)))))))
+ (condition-case err
+ (read
+ (decode-coding-string (server-unquote-arg answer)
+ 'emacs-internal))
+ ;; Re-signal with a more specific condition.
+ (invalid-read-syntax
+ (signal 'server-return-invalid-read-syntax
+ (cdr err)))))))))
(provide 'server)
diff --git a/lisp/shell.el b/lisp/shell.el
index 5cf108bfa3b..b74442f1961 100644
--- a/lisp/shell.el
+++ b/lisp/shell.el
@@ -366,6 +366,12 @@ Useful for shells like zsh that has this feature."
:group 'shell-directories
:version "28.1")
+(defcustom shell-get-old-input-include-continuation-lines nil
+ "Whether `shell-get-old-input' includes \"\\\" lines."
+ :type 'boolean
+ :group 'shell
+ :version "30.1")
+
(defcustom shell-kill-buffer-on-exit nil
"Kill a shell buffer after the shell process terminates."
:type 'boolean
@@ -506,6 +512,39 @@ Useful for shells like zsh that has this feature."
(push (mapconcat #'identity (nreverse arg) "") args)))
(cons (nreverse args) (nreverse begins)))))
+(defun shell-get-old-input ()
+ "Default for `comint-get-old-input' in `shell-mode'.
+If `comint-use-prompt-regexp' is nil, then either
+return the current input field (if point is on an input field), or the
+current line (if point is on an output field).
+If `comint-use-prompt-regexp' is non-nil, then return
+the current line, with any initial string matching the regexp
+`comint-prompt-regexp' removed.
+In either case, if `shell-get-old-input-include-continuation-lines'
+is non-nil and the current line ends with a backslash, the next
+line is also included and examined for a backslash, ending with a
+final line without a backslash."
+ (let (field-prop bof)
+ (if (and (not comint-use-prompt-regexp)
+ ;; Make sure we're in an input rather than output field.
+ (not (setq field-prop (get-char-property
+ (setq bof (field-beginning)) 'field))))
+ (field-string-no-properties bof)
+ (comint-bol)
+ (let ((start (point)))
+ (cond ((or comint-use-prompt-regexp
+ (eq field-prop 'output))
+ (goto-char (line-end-position))
+ (when shell-get-old-input-include-continuation-lines
+ ;; Include continuation lines as long as the current
+ ;; line ends with a backslash.
+ (while (and (not (eobp))
+ (= (char-before) ?\\))
+ (goto-char (line-end-position 2)))))
+ (t
+ (goto-char (field-end))))
+ (buffer-substring-no-properties start (point))))))
+
;;;###autoload
(defun split-string-shell-command (string)
"Split STRING (a shell command) into a list of strings.
@@ -642,6 +681,7 @@ command."
(setq-local font-lock-defaults '(shell-font-lock-keywords t))
(setq-local shell-dirstack nil)
(setq-local shell-last-dir nil)
+ (setq-local comint-get-old-input #'shell-get-old-input)
;; People expect Shell mode to keep the last line of output at
;; window bottom.
(setq-local scroll-conservatively 101)
diff --git a/lisp/simple.el b/lisp/simple.el
index b6efb06fc27..b621e1603bd 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -623,7 +623,7 @@ A non-nil INTERACTIVE argument means to run the `post-self-insert-hook'."
(beforepos (point))
(last-command-event ?\n)
;; Don't auto-fill if we have a prefix argument.
- (auto-fill-function (if arg nil auto-fill-function))
+ (inhibit-auto-fill (or inhibit-auto-fill arg))
(arg (prefix-numeric-value arg))
(procsym (make-symbol "newline-postproc")) ;(bug#46326)
(postproc
@@ -1761,6 +1761,7 @@ not at the start of a line.
When IGNORE-INVISIBLE-LINES is non-nil, invisible lines are not
included in the count."
+ (declare (side-effect-free t))
(save-excursion
(save-restriction
(narrow-to-region start end)
@@ -2715,7 +2716,16 @@ function as needed."
(let ((doc (car body)))
(when (funcall docstring-p doc)
doc)))
- (_ (signal 'invalid-function (list function))))))
+ ((pred symbolp)
+ (let ((f (indirect-function function)))
+ (if f (function-documentation f)
+ (signal 'void-function (list function)))))
+ (`(macro . ,f) (function-documentation f))
+ (_
+ (let ((doc (internal-subr-documentation function)))
+ (if (eq t doc)
+ (signal 'invalid-function (list function))
+ doc))))))
(cl-defmethod function-documentation ((function accessor))
(oclosure--accessor-docstring function)) ;; FIXME: η-reduce!
@@ -2735,7 +2745,8 @@ instead."
nil)
(cl-defmethod oclosure-interactive-form ((f cconv--interactive-helper))
- `(interactive (funcall ',(cconv--interactive-helper--if f))))
+ (let ((if (cconv--interactive-helper--if f)))
+ `(interactive ,(if (functionp if) `(funcall ',if) if))))
(defun command-execute (cmd &optional record-flag keys special)
;; BEWARE: Called directly from the C code.
@@ -3858,16 +3869,14 @@ whether (MARKER . ADJUSTMENT) undo elements are in the region,
because markers can be arbitrarily relocated. Instead, pass the
marker adjustment's corresponding (TEXT . POS) element."
(cond ((integerp undo-elt)
- (and (>= undo-elt start)
- (<= undo-elt end)))
+ (<= start undo-elt end))
((eq undo-elt nil)
t)
((atom undo-elt)
nil)
((stringp (car undo-elt))
;; (TEXT . POSITION)
- (and (>= (abs (cdr undo-elt)) start)
- (<= (abs (cdr undo-elt)) end)))
+ (<= start (abs (cdr undo-elt)) end))
((and (consp undo-elt) (markerp (car undo-elt)))
;; (MARKER . ADJUSTMENT)
(<= start (car undo-elt) end))
@@ -4732,6 +4741,18 @@ Also see the `async-shell-command-buffer' variable."
action))
(user-error "Shell command in progress"))))
+(defun file-user-uid ()
+ "Return the connection-local effective uid.
+This is similar to `user-uid', but may invoke a file name handler
+based on `default-directory'. See Info node `(elisp)Magic File
+Names'.
+
+If a file name handler is unable to retrieve the effective uid,
+this function will instead return -1."
+ (if-let ((handler (find-file-name-handler default-directory 'file-user-uid)))
+ (funcall handler 'file-user-uid)
+ (user-uid)))
+
(defun max-mini-window-lines (&optional frame)
"Compute maximum number of lines for echo area in FRAME.
As defined by `max-mini-window-height'. FRAME defaults to the
@@ -6506,7 +6527,7 @@ If the Unicode tables are not yet available, e.g. during bootstrap,
then gives correct answers only for ASCII characters."
(cond ((unicode-property-table-internal 'lowercase)
(characterp (get-char-code-property char 'lowercase)))
- ((and (>= char ?A) (<= char ?Z)))))
+ ((<= ?A char ?Z))))
(defun zap-to-char (arg char &optional interactive)
"Kill up to and including ARGth occurrence of CHAR.
@@ -6816,6 +6837,7 @@ is active, and returns an integer or nil in the usual way.
If you are using this in an editing command, you are most likely making
a mistake; see the documentation of `set-mark'."
+ (declare (side-effect-free t))
(if (or force (not transient-mark-mode) mark-active mark-even-if-inactive)
(marker-position (mark-marker))
(signal 'mark-inactive nil)))
@@ -8525,6 +8547,45 @@ are interchanged."
(interactive "*p")
(transpose-subr 'forward-word arg))
+(defun transpose-sexps-default-function (arg)
+ "Default method to locate a pair of points for transpose-sexps."
+ ;; Here we should try to simulate the behavior of
+ ;; (cons (progn (forward-sexp x) (point))
+ ;; (progn (forward-sexp (- x)) (point)))
+ ;; Except that we don't want to rely on the second forward-sexp
+ ;; putting us back to where we want to be, since forward-sexp-function
+ ;; might do funny things like infix-precedence.
+ (if (if (> arg 0)
+ (looking-at "\\sw\\|\\s_")
+ (and (not (bobp))
+ (save-excursion
+ (forward-char -1)
+ (looking-at "\\sw\\|\\s_"))))
+ ;; Jumping over a symbol. We might be inside it, mind you.
+ (progn (funcall (if (> arg 0)
+ #'skip-syntax-backward #'skip-syntax-forward)
+ "w_")
+ (cons (save-excursion (forward-sexp arg) (point)) (point)))
+ ;; Otherwise, we're between sexps. Take a step back before jumping
+ ;; to make sure we'll obey the same precedence no matter which
+ ;; direction we're going.
+ (funcall (if (> arg 0) #'skip-syntax-backward #'skip-syntax-forward)
+ " .")
+ (cons (save-excursion (forward-sexp arg) (point))
+ (progn (while (or (forward-comment (if (> arg 0) 1 -1))
+ (not (zerop (funcall (if (> arg 0)
+ #'skip-syntax-forward
+ #'skip-syntax-backward)
+ ".")))))
+ (point)))))
+
+(defvar transpose-sexps-function #'transpose-sexps-default-function
+ "If non-nil, `transpose-sexps' delegates to this function.
+
+This function takes one argument ARG, a number. Its expected
+return value is a position pair, which is a cons (BEG . END),
+where BEG and END are buffer positions.")
+
(defun transpose-sexps (arg &optional interactive)
"Like \\[transpose-chars] (`transpose-chars'), but applies to sexps.
Unlike `transpose-words', point must be between the two sexps and not
@@ -8540,38 +8601,7 @@ report errors as appropriate for this kind of usage."
(condition-case nil
(transpose-sexps arg nil)
(scan-error (user-error "Not between two complete sexps")))
- (transpose-subr
- (lambda (arg)
- ;; Here we should try to simulate the behavior of
- ;; (cons (progn (forward-sexp x) (point))
- ;; (progn (forward-sexp (- x)) (point)))
- ;; Except that we don't want to rely on the second forward-sexp
- ;; putting us back to where we want to be, since forward-sexp-function
- ;; might do funny things like infix-precedence.
- (if (if (> arg 0)
- (looking-at "\\sw\\|\\s_")
- (and (not (bobp))
- (save-excursion
- (forward-char -1)
- (looking-at "\\sw\\|\\s_"))))
- ;; Jumping over a symbol. We might be inside it, mind you.
- (progn (funcall (if (> arg 0)
- 'skip-syntax-backward 'skip-syntax-forward)
- "w_")
- (cons (save-excursion (forward-sexp arg) (point)) (point)))
- ;; Otherwise, we're between sexps. Take a step back before jumping
- ;; to make sure we'll obey the same precedence no matter which
- ;; direction we're going.
- (funcall (if (> arg 0) 'skip-syntax-backward 'skip-syntax-forward)
- " .")
- (cons (save-excursion (forward-sexp arg) (point))
- (progn (while (or (forward-comment (if (> arg 0) 1 -1))
- (not (zerop (funcall (if (> arg 0)
- 'skip-syntax-forward
- 'skip-syntax-backward)
- ".")))))
- (point)))))
- arg 'special)))
+ (transpose-subr transpose-sexps-function arg 'special)))
(defun transpose-lines (arg)
"Exchange current line and previous line, leaving point after both.
@@ -8596,13 +8626,15 @@ With argument 0, interchanges line point is in with line mark is in."
;; FIXME document SPECIAL.
(defun transpose-subr (mover arg &optional special)
"Subroutine to do the work of transposing objects.
-Works for lines, sentences, paragraphs, etc. MOVER is a function that
-moves forward by units of the given object (e.g. `forward-sentence',
-`forward-paragraph'). If ARG is zero, exchanges the current object
-with the one containing mark. If ARG is an integer, moves the
-current object past ARG following (if ARG is positive) or
-preceding (if ARG is negative) objects, leaving point after the
-current object."
+Works for lines, sentences, paragraphs, etc. MOVER is a function
+that moves forward by units of the given
+object (e.g. `forward-sentence', `forward-paragraph'), or a
+function calculating a cons of buffer positions.
+
+ If ARG is zero, exchanges the current object with the one
+containing mark. If ARG is an integer, moves the current object
+past ARG following (if ARG is positive) or preceding (if ARG is
+negative) objects, leaving point after the current object."
(let ((aux (if special mover
(lambda (x)
(cons (progn (funcall mover x) (point))
@@ -8629,6 +8661,8 @@ current object."
(goto-char (+ (car pos2) (- (cdr pos1) (car pos1))))))))
(defun transpose-subr-1 (pos1 pos2)
+ (unless (and pos1 pos2)
+ (error "Don't have two things to transpose"))
(when (> (car pos1) (cdr pos1)) (setq pos1 (cons (cdr pos1) (car pos1))))
(when (> (car pos2) (cdr pos2)) (setq pos2 (cons (cdr pos2) (car pos2))))
(when (> (car pos1) (car pos2))
@@ -8885,11 +8919,15 @@ unless optional argument SOFT is non-nil."
;; If we're not inside a comment, just try to indent.
(t (indent-according-to-mode))))))
+(defvar inhibit-auto-fill nil
+ "Non-nil means to do as if `auto-fill-mode' was disabled.")
+
(defun internal-auto-fill ()
"The function called by `self-insert-command' to perform auto-filling."
- (when (or (not comment-start)
- (not comment-auto-fill-only-comments)
- (nth 4 (syntax-ppss)))
+ (unless (or inhibit-auto-fill
+ (and comment-start
+ comment-auto-fill-only-comments
+ (not (nth 4 (syntax-ppss)))))
(funcall auto-fill-function)))
(defvar normal-auto-fill-function 'do-auto-fill
@@ -9074,6 +9112,13 @@ presented."
"Toggle buffer size display in the mode line (Size Indication mode)."
:global t :group 'mode-line)
+(defcustom remote-file-name-inhibit-auto-save nil
+ "When nil, `auto-save-mode' will auto-save remote files.
+Any other value means that it will not."
+ :group 'auto-save
+ :type 'boolean
+ :version "30.1")
+
(define-minor-mode auto-save-mode
"Toggle auto-saving in the current buffer (Auto Save mode).
@@ -9096,6 +9141,9 @@ For more details, see Info node `(emacs) Auto Save'."
(setq buffer-auto-save-file-name
(cond
((null val) nil)
+ ((and buffer-file-name remote-file-name-inhibit-auto-save
+ (file-remote-p buffer-file-name))
+ nil)
((and buffer-file-name auto-save-visited-file-name
(not buffer-read-only))
buffer-file-name)
@@ -10143,8 +10191,7 @@ PREFIX is the string that represents this modifier in an event type symbol."
((eq symbol 'shift)
;; FIXME: Should we also apply this "upcase" behavior of shift
;; to non-ascii letters?
- (if (and (<= (downcase event) ?z)
- (>= (downcase event) ?a))
+ (if (<= ?a (downcase event) ?z)
(upcase event)
(logior (ash 1 lshiftby) event)))
(t
@@ -10821,6 +10868,7 @@ If the buffer doesn't exist, create it first."
(defsubst string-empty-p (string)
"Check whether STRING is empty."
+ (declare (pure t) (side-effect-free t))
(string= string ""))
(defun read-signal-name ()
@@ -10838,7 +10886,7 @@ If the buffer doesn't exist, create it first."
(defun lax-plist-get (plist prop)
"Extract a value from a property list, comparing with `equal'."
- (declare (obsolete plist-get "29.1"))
+ (declare (pure t) (side-effect-free t) (obsolete plist-get "29.1"))
(plist-get plist prop #'equal))
(defun lax-plist-put (plist prop val)
diff --git a/lisp/speedbar.el b/lisp/speedbar.el
index 60113ca1410..29f351ca021 100644
--- a/lisp/speedbar.el
+++ b/lisp/speedbar.el
@@ -2591,13 +2591,12 @@ interrupted by the user."
(if (not speedbar-stealthy-update-recurse)
(let ((l (speedbar-initial-stealthy-functions))
(speedbar-stealthy-update-recurse t))
- (unwind-protect
- (speedbar-with-writable
- (while (and l (funcall (car l)))
- ;;(sit-for 0)
- (setq l (cdr l))))
- ;;(dframe-message "Exit with %S" (car l))
- ))))
+ (speedbar-with-writable
+ (while (and l (funcall (car l)))
+ ;;(sit-for 0)
+ (setq l (cdr l))))
+ ;;(dframe-message "Exit with %S" (car l))
+ )))
(defun speedbar-reset-scanners ()
"Reset any variables used by functions in the stealthy list as state.
@@ -3572,38 +3571,36 @@ value is \"show\" then toggle the value of
"For FILE, run etags and create a list of symbols extracted.
Each symbol will be associated with its line position in FILE."
(let ((newlist nil))
- (unwind-protect
- (save-excursion
- (if (get-buffer "*etags tmp*")
- (kill-buffer "*etags tmp*")) ;kill to clean it up
- (if (<= 1 speedbar-verbosity-level)
- (dframe-message "Fetching etags..."))
- (set-buffer (get-buffer-create "*etags tmp*"))
- (apply 'call-process speedbar-fetch-etags-command nil
- (current-buffer) nil
- (append speedbar-fetch-etags-arguments (list file)))
- (goto-char (point-min))
- (if (<= 1 speedbar-verbosity-level)
- (dframe-message "Fetching etags..."))
- (let ((expr
- (let ((exprlst speedbar-fetch-etags-parse-list)
- (ans nil))
- (while (and (not ans) exprlst)
- (if (string-match (car (car exprlst)) file)
- (setq ans (car exprlst)))
- (setq exprlst (cdr exprlst)))
- (cdr ans))))
- (if expr
- (let (tnl)
- (set-buffer (get-buffer-create "*etags tmp*"))
- (while (not (save-excursion (end-of-line) (eobp)))
- (save-excursion
- (setq tnl (speedbar-extract-one-symbol expr)))
- (if tnl (setq newlist (cons tnl newlist)))
- (forward-line 1)))
- (dframe-message
- "Sorry, no support for a file of that extension"))))
- )
+ (save-excursion
+ (if (get-buffer "*etags tmp*")
+ (kill-buffer "*etags tmp*")) ;kill to clean it up
+ (if (<= 1 speedbar-verbosity-level)
+ (dframe-message "Fetching etags..."))
+ (set-buffer (get-buffer-create "*etags tmp*"))
+ (apply 'call-process speedbar-fetch-etags-command nil
+ (current-buffer) nil
+ (append speedbar-fetch-etags-arguments (list file)))
+ (goto-char (point-min))
+ (if (<= 1 speedbar-verbosity-level)
+ (dframe-message "Fetching etags..."))
+ (let ((expr
+ (let ((exprlst speedbar-fetch-etags-parse-list)
+ (ans nil))
+ (while (and (not ans) exprlst)
+ (if (string-match (car (car exprlst)) file)
+ (setq ans (car exprlst)))
+ (setq exprlst (cdr exprlst)))
+ (cdr ans))))
+ (if expr
+ (let (tnl)
+ (set-buffer (get-buffer-create "*etags tmp*"))
+ (while (not (save-excursion (end-of-line) (eobp)))
+ (save-excursion
+ (setq tnl (speedbar-extract-one-symbol expr)))
+ (if tnl (setq newlist (cons tnl newlist)))
+ (forward-line 1)))
+ (dframe-message
+ "Sorry, no support for a file of that extension"))))
(if speedbar-sort-tags
(sort newlist (lambda (a b) (string< (car a) (car b))))
(reverse newlist))))
diff --git a/lisp/startup.el b/lisp/startup.el
index b0f019d704e..9ae53f4e50b 100644
--- a/lisp/startup.el
+++ b/lisp/startup.el
@@ -2918,7 +2918,7 @@ nil default-directory" name)
(when (looking-at "#!")
(forward-line))
(let (value form)
- (while (ignore-error 'end-of-file
+ (while (ignore-error end-of-file
(setq form (read (current-buffer))))
(setq value (eval form t)))
(kill-emacs (if (numberp value)
diff --git a/lisp/strokes.el b/lisp/strokes.el
index fe244d448d8..293bdf0f369 100644
--- a/lisp/strokes.el
+++ b/lisp/strokes.el
@@ -760,27 +760,27 @@ Optional EVENT is acceptable as the starting event of the stroke."
(setq safe-to-draw-p t))
(push (cdr (mouse-pixel-position))
pix-locs)))
- (setq event (read--potential-mouse-event)))))
- ;; protected
- ;; clean up strokes buffer and then bury it.
- (when (equal (buffer-name) strokes-buffer-name)
- (subst-char-in-region (point-min) (point-max)
- strokes-character ?\s)
- (goto-char (point-min))
- (bury-buffer))))
- ;; Otherwise, don't use strokes buffer and read stroke silently
- (when prompt
- (message "%s" prompt)
- (setq event (read--potential-mouse-event))
- (or (strokes-button-press-event-p event)
- (error "You must draw with the mouse")))
- (track-mouse
- (or event (setq event (read--potential-mouse-event)))
- (while (not (strokes-button-release-event-p event))
- (if (strokes-mouse-event-p event)
- (push (cdr (mouse-pixel-position))
- pix-locs))
- (setq event (read--potential-mouse-event))))
+ (setq event (read--potential-mouse-event))))
+ ;; protected
+ ;; clean up strokes buffer and then bury it.
+ (when (equal (buffer-name) strokes-buffer-name)
+ (subst-char-in-region (point-min) (point-max)
+ strokes-character ?\s)
+ (goto-char (point-min))
+ (bury-buffer))))
+ ;; Otherwise, don't use strokes buffer and read stroke silently
+ (when prompt
+ (message "%s" prompt)
+ (setq event (read--potential-mouse-event))
+ (or (strokes-button-press-event-p event)
+ (error "You must draw with the mouse")))
+ (track-mouse
+ (or event (setq event (read--potential-mouse-event)))
+ (while (not (strokes-button-release-event-p event))
+ (if (strokes-mouse-event-p event)
+ (push (cdr (mouse-pixel-position))
+ pix-locs))
+ (setq event (read--potential-mouse-event)))))
(setq grid-locs (strokes-renormalize-to-grid (nreverse pix-locs)))
(strokes-fill-stroke
(strokes-eliminate-consecutive-redundancies grid-locs)))))
diff --git a/lisp/subr.el b/lisp/subr.el
index d4428aef765..427014cedc3 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -281,14 +281,20 @@ change the list."
When COND yields non-nil, eval BODY forms sequentially and return
value of last one, or nil if there are none."
(declare (indent 1) (debug t))
- (list 'if cond (cons 'progn body)))
+ (if body
+ (list 'if cond (cons 'progn body))
+ (macroexp-warn-and-return (format-message "`when' with empty body")
+ cond '(empty-body when) t)))
(defmacro unless (cond &rest body)
"If COND yields nil, do BODY, else return nil.
When COND yields nil, eval BODY forms sequentially and return
value of last one, or nil if there are none."
(declare (indent 1) (debug t))
- (cons 'if (cons cond (cons nil body))))
+ (if body
+ (cons 'if (cons cond (cons nil body)))
+ (macroexp-warn-and-return (format-message "`unless' with empty body")
+ cond '(empty-body unless) t)))
(defsubst subr-primitive-p (object)
"Return t if OBJECT is a built-in primitive function."
@@ -381,9 +387,24 @@ without silencing all errors."
"Execute BODY; if the error CONDITION occurs, return nil.
Otherwise, return result of last form in BODY.
-CONDITION can also be a list of error conditions."
+CONDITION can also be a list of error conditions.
+The CONDITION argument is not evaluated. Do not quote it."
(declare (debug t) (indent 1))
- `(condition-case nil (progn ,@body) (,condition nil)))
+ (cond
+ ((and (eq (car-safe condition) 'quote)
+ (cdr condition) (null (cddr condition)))
+ (macroexp-warn-and-return
+ (format-message
+ "`ignore-error' condition argument should not be quoted: %S"
+ condition)
+ `(condition-case nil (progn ,@body) (,(cadr condition) nil))
+ nil t condition))
+ (body
+ `(condition-case nil (progn ,@body) (,condition nil)))
+ (t
+ (macroexp-warn-and-return (format-message "`ignore-error' with empty body")
+ nil '(empty-body ignore-error) t condition))))
+
;;;; Basic Lisp functions.
@@ -402,7 +423,9 @@ PREFIX is a string, and defaults to \"g\"."
"Do nothing and return nil.
This function accepts any number of ARGUMENTS, but ignores them.
Also see `always'."
- (declare (completion ignore))
+ ;; Not declared `side-effect-free' because we don't want calls to it
+ ;; elided; see `byte-compile-ignore'.
+ (declare (pure t) (completion ignore))
(interactive)
nil)
@@ -410,6 +433,7 @@ Also see `always'."
"Do nothing and return t.
This function accepts any number of ARGUMENTS, but ignores them.
Also see `ignore'."
+ (declare (pure t) (side-effect-free error-free))
t)
;; Signal a compile-error if the first arg is missing.
@@ -489,16 +513,19 @@ was called."
"Return t if NUMBER is zero."
;; Used to be in C, but it's pointless since (= 0 n) is faster anyway because
;; = has a byte-code.
- (declare (compiler-macro (lambda (_) `(= 0 ,number))))
+ (declare (pure t) (side-effect-free t)
+ (compiler-macro (lambda (_) `(= 0 ,number))))
(= 0 number))
(defun fixnump (object)
"Return t if OBJECT is a fixnum."
+ (declare (side-effect-free error-free))
(and (integerp object)
(<= most-negative-fixnum object most-positive-fixnum)))
(defun bignump (object)
"Return t if OBJECT is a bignum."
+ (declare (side-effect-free error-free))
(and (integerp object) (not (fixnump object))))
(defun lsh (value count)
@@ -511,8 +538,10 @@ This function is provided for compatibility. In new code, use `ash'
instead."
(declare (compiler-macro
(lambda (form)
- (macroexp-warn-and-return "avoid `lsh'; use `ash' instead"
- form '(suspicious lsh) t form))))
+ (macroexp-warn-and-return
+ (format-message "avoid `lsh'; use `ash' instead")
+ form '(suspicious lsh) t form)))
+ (side-effect-free t))
(when (and (< value 0) (< count 0))
(when (< value most-negative-fixnum)
(signal 'args-out-of-range (list value count)))
@@ -685,7 +714,7 @@ instead."
If LIST is nil, return nil.
If N is non-nil, return the Nth-to-last link of LIST.
If N is bigger than the length of LIST, return LIST."
- (declare (side-effect-free t))
+ (declare (pure t) (side-effect-free t)) ; pure up to mutation
(if n
(and (>= n 0)
(let ((m (safe-length list)))
@@ -740,7 +769,9 @@ one is kept. See `seq-uniq' for non-destructive operation."
(defun delete-consecutive-dups (list &optional circular)
"Destructively remove `equal' consecutive duplicates from LIST.
First and last elements are considered consecutive if CIRCULAR is
-non-nil."
+non-nil.
+Of several consecutive `equal' occurrences, the one earliest in
+the list is kept."
(let ((tail list) last)
(while (cdr tail)
(if (equal (car tail) (cadr tail))
@@ -776,6 +807,7 @@ TO as (+ FROM (* N INC)) or use a variable whose value was
computed with this exact expression. Alternatively, you can,
of course, also replace TO with a slightly larger value
\(or a slightly more negative value if INC is negative)."
+ (declare (side-effect-free t))
(if (or (not to) (= from to))
(list from)
(or inc (setq inc 1))
@@ -797,6 +829,7 @@ of course, also replace TO with a slightly larger value
If TREE is a cons cell, this recursively copies both its car and its cdr.
Contrast to `copy-sequence', which copies only along the cdrs. With second
argument VECP, this copies vectors as well as conses."
+ (declare (side-effect-free error-free))
(if (consp tree)
(let (result)
(while (consp tree)
@@ -813,6 +846,7 @@ argument VECP, this copies vectors as well as conses."
(aset tree i (copy-tree (aref tree i) vecp)))
tree)
tree)))
+
;;;; Various list-search functions.
@@ -1504,6 +1538,7 @@ See also `current-global-map'.")
(defun eventp (object)
"Return non-nil if OBJECT is an input event or event object."
+ (declare (pure t) (side-effect-free error-free))
(or (integerp object)
(and (if (consp object)
(setq object (car object))
@@ -1568,6 +1603,7 @@ in the current Emacs session, then this function may return nil."
(defsubst mouse-movement-p (object)
"Return non-nil if OBJECT is a mouse movement event."
+ (declare (side-effect-free error-free))
(eq (car-safe object) 'mouse-movement))
(defun mouse-event-p (object)
@@ -1840,7 +1876,7 @@ be a list of the form returned by `event-start' and `event-end'."
(defun log10 (x)
"Return (log X 10), the log base 10 of X."
- (declare (obsolete log "24.4"))
+ (declare (side-effect-free t) (obsolete log "24.4"))
(log x 10))
(set-advertised-calling-convention
@@ -2970,6 +3006,7 @@ It can be retrieved with `(process-get PROCESS PROPNAME)'."
(defun memory-limit ()
"Return an estimate of Emacs virtual memory usage, divided by 1024."
+ (declare (side-effect-free error-free))
(let ((default-directory temporary-file-directory))
(or (cdr (assq 'vsize (process-attributes (emacs-pid)))) 0)))
@@ -3297,7 +3334,7 @@ floating point support."
(lambda (form)
(if (not (or (numberp nodisp) obsolete)) form
(macroexp-warn-and-return
- "Obsolete calling convention for 'sit-for'"
+ (format-message "Obsolete calling convention for `sit-for'")
`(,(car form) (+ ,seconds (/ (or ,nodisp 0) 1000.0)) ,obsolete)
'(obsolete sit-for))))))
;; This used to be implemented in C until the following discussion:
@@ -4140,15 +4177,18 @@ system's shell."
(defsubst string-to-list (string)
"Return a list of characters in STRING."
+ (declare (side-effect-free t))
(append string nil))
(defsubst string-to-vector (string)
"Return a vector of characters in STRING."
+ (declare (side-effect-free t))
(vconcat string))
(defun string-or-null-p (object)
"Return t if OBJECT is a string or nil.
Otherwise, return nil."
+ (declare (pure t) (side-effect-free error-free))
(or (stringp object) (null object)))
(defun list-of-strings-p (object)
@@ -4161,21 +4201,25 @@ Otherwise, return nil."
(defun booleanp (object)
"Return t if OBJECT is one of the two canonical boolean values: t or nil.
Otherwise, return nil."
+ (declare (pure t) (side-effect-free error-free))
(and (memq object '(nil t)) t))
(defun special-form-p (object)
"Non-nil if and only if OBJECT is a special form."
+ (declare (side-effect-free error-free))
(if (and (symbolp object) (fboundp object))
(setq object (indirect-function object)))
(and (subrp object) (eq (cdr (subr-arity object)) 'unevalled)))
(defun plistp (object)
"Non-nil if and only if OBJECT is a valid plist."
+ (declare (pure t) (side-effect-free error-free))
(let ((len (proper-list-p object)))
(and len (zerop (% len 2)))))
(defun macrop (object)
"Non-nil if and only if OBJECT is a macro."
+ (declare (side-effect-free t))
(let ((def (indirect-function object)))
(when (consp def)
(or (eq 'macro (car def))
@@ -4185,6 +4229,7 @@ Otherwise, return nil."
"Return non-nil if OBJECT is a function that has been compiled.
Does not distinguish between functions implemented in machine code
or byte-code."
+ (declare (side-effect-free error-free))
(or (subrp object) (byte-code-function-p object)))
(defun field-at-pos (pos)
@@ -4891,6 +4936,7 @@ but that should be robust in the unexpected case that an error is signaled."
(declare (debug t) (indent 1))
(let* ((err (make-symbol "err"))
(orig-body body)
+ (orig-format format)
(format (if (and (stringp format) body) format
(prog1 "Error: %S"
(if format (push format body)))))
@@ -4901,7 +4947,10 @@ but that should be robust in the unexpected case that an error is signaled."
(if (eq orig-body body) exp
;; The use without `format' is obsolete, let's warn when we bump
;; into any such remaining uses.
- (macroexp-warn-and-return "Missing format argument" exp nil nil format))))
+ (macroexp-warn-and-return
+ (format-message "Missing format argument in `with-demote-errors'")
+ exp nil nil
+ orig-format))))
(defmacro combine-after-change-calls (&rest body)
"Execute BODY, but don't call the after-change functions till the end.
@@ -4982,21 +5031,20 @@ the function `undo--wrap-and-run-primitive-undo'."
beg
(marker-position end-marker)
#'undo--wrap-and-run-primitive-undo
- beg (marker-position end-marker) buffer-undo-list))
+ beg (marker-position end-marker)
+ ;; We will truncate this list by side-effect below.
+ buffer-undo-list))
(ptr buffer-undo-list))
(if (not (eq buffer-undo-list old-bul))
(progn
(while (and (not (eq (cdr ptr) old-bul))
;; In case garbage collection has removed OLD-BUL.
- (cdr ptr))
- (if (and (consp (cdr ptr))
- (consp (cadr ptr))
- (eq (caadr ptr) t))
- ;; Don't include a timestamp entry.
- (setcdr ptr (cddr ptr))
- (setq ptr (cdr ptr))))
- (unless (cdr ptr)
- (message "combine-change-calls: buffer-undo-list broken"))
+ (or (cdr ptr)
+ (progn
+ (message "combine-change-calls: buffer-undo-list broken")
+ nil)))
+ (setq ptr (cdr ptr)))
+ ;; Truncate the list that's in the `apply' entry.
(setcdr ptr nil)
(push ap-elt buffer-undo-list)
(setcdr buffer-undo-list old-bul)))))
@@ -5208,11 +5256,13 @@ wherever possible, since it is slow."
(defsubst looking-at-p (regexp)
"\
Same as `looking-at' except this function does not change the match data."
+ (declare (side-effect-free t))
(looking-at regexp t))
(defsubst string-match-p (regexp string &optional start)
"\
Same as `string-match' except this function does not change the match data."
+ (declare (side-effect-free t))
(string-match regexp string start t))
(defun subregexp-context-p (regexp pos &optional start)
@@ -5483,14 +5533,14 @@ Upper-case and lower-case letters are treated as equal.
Unibyte strings are converted to multibyte for comparison.
See also `string-equal'."
- (declare (pure t) (side-effect-free t))
+ (declare (side-effect-free t))
(eq t (compare-strings string1 0 nil string2 0 nil t)))
(defun string-prefix-p (prefix string &optional ignore-case)
"Return non-nil if PREFIX is a prefix of STRING.
If IGNORE-CASE is non-nil, the comparison is done without paying attention
to case differences."
- (declare (pure t) (side-effect-free t))
+ (declare (side-effect-free t))
(let ((prefix-length (length prefix)))
(if (> prefix-length (length string)) nil
(eq t (compare-strings prefix 0 prefix-length string
@@ -5500,7 +5550,7 @@ to case differences."
"Return non-nil if SUFFIX is a suffix of STRING.
If IGNORE-CASE is non-nil, the comparison is done without paying
attention to case differences."
- (declare (pure t) (side-effect-free t))
+ (declare (side-effect-free t))
(let ((start-pos (- (length string) (length suffix))))
(and (>= start-pos 0)
(eq t (compare-strings suffix nil nil
@@ -5528,6 +5578,7 @@ consisting of STR followed by an invisible left-to-right mark
"Return non-nil if STRING1 is greater than STRING2 in lexicographic order.
Case is significant.
Symbols are also allowed; their print names are used instead."
+ (declare (pure t) (side-effect-free t))
(string-lessp string2 string1))
@@ -5809,6 +5860,7 @@ integer that encodes the corresponding syntax class. See Info
node `(elisp)Syntax Table Internals' for a list of codes.
If SYNTAX is nil, return nil."
+ (declare (pure t) (side-effect-free t))
(and syntax (logand (car syntax) 65535)))
;; Utility motion commands
@@ -6127,14 +6179,8 @@ command is called from a keyboard macro?"
;; Skip special forms (from non-compiled code).
(and frame (null (car frame)))
;; Skip also `interactive-p' (because we don't want to know if
- ;; interactive-p was called interactively but if it's caller was)
- ;; and `byte-code' (idem; this appears in subexpressions of things
- ;; like condition-case, which are wrapped in a separate bytecode
- ;; chunk).
- ;; FIXME: For lexical-binding code, this is much worse,
- ;; because the frames look like "byte-code -> funcall -> #[...]",
- ;; which is not a reliable signature.
- (memq (nth 1 frame) '(interactive-p 'byte-code))
+ ;; interactive-p was called interactively but if it's caller was).
+ (eq (nth 1 frame) 'interactive-p)
;; Skip package-specific stack-frames.
(let ((skip (run-hook-with-args-until-success
'called-interactively-p-functions
@@ -6177,7 +6223,8 @@ To test whether a function can be called interactively, use
`commandp'."
;; Kept around for now. See discussion at:
;; https://lists.gnu.org/r/emacs-devel/2020-08/msg00564.html
- (declare (obsolete called-interactively-p "23.2"))
+ (declare (obsolete called-interactively-p "23.2")
+ (side-effect-free error-free))
(called-interactively-p 'interactive))
(defun internal-push-keymap (keymap symbol)
@@ -6664,6 +6711,7 @@ Note that a version specified by the list (1) is equal to (1 0),
\(1 0 0), (1 0 0 0), etc. That is, the trailing zeros are insignificant.
Also, a version given by the list (1) is higher than (1 -1), which in
turn is higher than (1 -2), which is higher than (1 -3)."
+ (declare (pure t) (side-effect-free t))
(while (and l1 l2 (= (car l1) (car l2)))
(setq l1 (cdr l1)
l2 (cdr l2)))
@@ -6685,6 +6733,7 @@ Note that a version specified by the list (1) is equal to (1 0),
\(1 0 0), (1 0 0 0), etc. That is, the trailing zeros are insignificant.
Also, a version given by the list (1) is higher than (1 -1), which in
turn is higher than (1 -2), which is higher than (1 -3)."
+ (declare (pure t) (side-effect-free t))
(while (and l1 l2 (= (car l1) (car l2)))
(setq l1 (cdr l1)
l2 (cdr l2)))
@@ -6706,6 +6755,7 @@ Note that integer list (1) is equal to (1 0), (1 0 0), (1 0 0 0),
etc. That is, the trailing zeroes are insignificant. Also, integer
list (1) is greater than (1 -1) which is greater than (1 -2)
which is greater than (1 -3)."
+ (declare (pure t) (side-effect-free t))
(while (and l1 l2 (= (car l1) (car l2)))
(setq l1 (cdr l1)
l2 (cdr l2)))
@@ -6723,6 +6773,7 @@ which is greater than (1 -3)."
"Return the first non-zero element of LST, which is a list of integers.
If all LST elements are zeros or LST is nil, return zero."
+ (declare (pure t) (side-effect-free t))
(while (and lst (zerop (car lst)))
(setq lst (cdr lst)))
(if lst
@@ -6862,6 +6913,7 @@ returned list are in the same order as in TREE.
\(flatten-tree \\='(1 (2 . 3) nil (4 5 (6)) 7))
=> (1 2 3 4 5 6 7)"
+ (declare (side-effect-free error-free))
(let (elems)
(while (consp tree)
(let ((elem (pop tree)))
@@ -6888,6 +6940,7 @@ REGEXP defaults to \"[ \\t\\n\\r]+\"."
"Trim STRING of trailing string matching REGEXP.
REGEXP defaults to \"[ \\t\\n\\r]+\"."
+ (declare (side-effect-free t))
(let ((i (string-match-p (concat "\\(?:" (or regexp "[ \t\n\r]+") "\\)\\'")
string)))
(if i (substring string 0 i) string)))
@@ -6959,6 +7012,7 @@ sentence (see Info node `(elisp) Documentation Tips')."
"Return OBJECT as a list.
If OBJECT is already a list, return OBJECT itself. If it's
not a list, return a one-element list containing OBJECT."
+ (declare (side-effect-free error-free))
(if (listp object)
object
(list object)))
@@ -6974,27 +7028,17 @@ string will be displayed only if BODY takes longer than TIMEOUT seconds.
(lambda ()
,@body)))
-(defun function-alias-p (func &optional noerror)
+(defun function-alias-p (func &optional _noerror)
"Return nil if FUNC is not a function alias.
-If FUNC is a function alias, return the function alias chain.
-
-If the function alias chain contains loops, an error will be
-signaled. If NOERROR, the non-loop parts of the chain is returned."
- (declare (side-effect-free t))
- (let ((chain nil)
- (orig-func func))
- (nreverse
- (catch 'loop
- (while (and (symbolp func)
- (setq func (symbol-function func))
- (symbolp func))
- (when (or (memq func chain)
- (eq func orig-func))
- (if noerror
- (throw 'loop chain)
- (signal 'cyclic-function-indirection (list orig-func))))
- (push func chain))
- chain))))
+If FUNC is a function alias, return the function alias chain."
+ (declare (advertised-calling-convention (func) "30.1")
+ (side-effect-free error-free))
+ (let ((chain nil))
+ (while (and (symbolp func)
+ (setq func (symbol-function func))
+ (symbolp func))
+ (push func chain))
+ (nreverse chain)))
(defun readablep (object)
"Say whether OBJECT has a readable syntax.
@@ -7044,6 +7088,7 @@ is inserted before adjusting the number of empty lines."
If OMIT-NULLS, empty lines will be removed from the results.
If KEEP-NEWLINES, don't strip trailing newlines from the result
lines."
+ (declare (side-effect-free t))
(if (equal string "")
(if omit-nulls
nil
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el
index dce6fa735fc..7c3069ca269 100644
--- a/lisp/tab-bar.el
+++ b/lisp/tab-bar.el
@@ -105,7 +105,7 @@ For easier selection of tabs by their numbers, consider customizing
(const hyper)
(const super)
(const alt))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
;; Reenable the tab-bar with new keybindings
@@ -116,23 +116,23 @@ For easier selection of tabs by their numbers, consider customizing
:version "27.1")
(defun tab-bar--define-keys ()
- "Install key bindings for switching between tabs if the user has configured them."
+ "Install key bindings to switch between tabs if so configured."
(when tab-bar-select-tab-modifiers
(global-set-key (vector (append tab-bar-select-tab-modifiers (list ?0)))
- 'tab-recent)
+ #'tab-recent)
(dotimes (i 8)
(global-set-key (vector (append tab-bar-select-tab-modifiers
(list (+ i 1 ?0))))
- 'tab-bar-select-tab))
+ #'tab-bar-select-tab))
(global-set-key (vector (append tab-bar-select-tab-modifiers (list ?9)))
- 'tab-last))
+ #'tab-last))
;; Don't override user customized key bindings
(unless (global-key-binding [(control tab)])
- (global-set-key [(control tab)] 'tab-next))
+ (global-set-key [(control tab)] #'tab-next))
(unless (global-key-binding [(control shift tab)])
- (global-set-key [(control shift tab)] 'tab-previous))
+ (global-set-key [(control shift tab)] #'tab-previous))
(unless (global-key-binding [(control shift iso-lefttab)])
- (global-set-key [(control shift iso-lefttab)] 'tab-previous))
+ (global-set-key [(control shift iso-lefttab)] #'tab-previous))
;; Replace default value with a condition that supports displaying
;; global-mode-string in the tab bar instead of the mode line.
@@ -157,6 +157,9 @@ For easier selection of tabs by their numbers, consider customizing
(defun tab-bar--load-buttons ()
"Load the icons for the tab buttons."
(require 'icons)
+ (declare-function icon-string "icons" (name))
+ (declare-function iconp "icons" (object))
+ (declare-function icons--register "icons")
(unless (iconp 'tab-bar-new)
(define-icon tab-bar-new nil
`((image "tabs/new.xpm"
@@ -227,7 +230,8 @@ a list of frames to update."
;; Update `default-frame-alist'
(when (eq frames t)
(setq default-frame-alist
- (cons (cons 'tab-bar-lines (if (and tab-bar-mode (eq tab-bar-show t)) 1 0))
+ (cons (cons 'tab-bar-lines
+ (if (and tab-bar-mode (eq tab-bar-show t)) 1 0))
(assq-delete-all 'tab-bar-lines default-frame-alist)))))
(define-minor-mode tab-bar-mode
@@ -279,7 +283,8 @@ It returns a list of the form (KEY KEY-BINDING CLOSE-P), where:
;; This code is used when you click the mouse in the tab bar
;; on a console which has no window system but does have a mouse.
(let* ((x-position (car (posn-x-y posn)))
- (keymap (lookup-key (cons 'keymap (nreverse (current-active-maps))) [tab-bar]))
+ (keymap (lookup-key (cons 'keymap (nreverse (current-active-maps)))
+ [tab-bar]))
(column 0))
(when x-position
(catch 'done
@@ -478,7 +483,7 @@ you can use the command `toggle-frame-tab-bar'."
:type '(choice (const :tag "Always" t)
(const :tag "When more than one tab" 1)
(const :tag "Never" nil))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(if val
@@ -529,7 +534,7 @@ to get the group name."
"If non-nil, show the \"New tab\" button in the tab bar.
When this is nil, you can create new tabs with \\[tab-new]."
:type 'boolean
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -550,7 +555,7 @@ If nil, don't show it at all."
(const :tag "On selected tab" selected)
(const :tag "On non-selected tabs" non-selected)
(const :tag "None" nil))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -574,7 +579,7 @@ If nil, don't show it at all."
This helps to select the tab by its number using `tab-bar-select-tab'
and `tab-bar-select-tab-modifiers'."
:type 'boolean
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -604,7 +609,7 @@ from all windows in the window configuration."
(const :tag "All window buffers"
tab-bar-tab-name-all)
(function :tag "Function"))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -704,7 +709,7 @@ Function gets one argument: a tab."
Function gets two arguments, the tab and its number, and should return
the formatted tab name to display in the tab bar."
:type 'function
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -753,7 +758,7 @@ of the mode line. Replacing `tab-bar-format-tabs' with
tab-bar-format-add-tab
tab-bar-format-align-right
tab-bar-format-global)
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -815,7 +820,8 @@ You can hide these buttons by customizing `tab-bar-format' and removing
,(alist-get 'binding tab)
:help "Click to visit tab"))))
(when (alist-get 'close-binding tab)
- `((,(if (eq (car tab) 'current-tab) 'C-current-tab (intern (format "C-tab-%i" i)))
+ `((,(if (eq (car tab) 'current-tab) 'C-current-tab
+ (intern (format "C-tab-%i" i)))
menu-item ""
,(alist-get 'close-binding tab))))))
@@ -832,7 +838,7 @@ You can hide these buttons by customizing `tab-bar-format' and removing
"Function to get a tab group name.
Function gets one argument: a tab."
:type 'function
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -848,7 +854,7 @@ Function gets three arguments, a tab with a group name, its number, and
an optional value that is non-nil when the tab is from the current group.
It should return the formatted tab group name to display in the tab bar."
:type 'function
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(force-mode-line-update))
@@ -919,7 +925,8 @@ when the tab is current. Return the result as a keymap."
(when (and (not (equal previous-group tab-group)) tab-group)
(tab-bar--format-tab-group tab i t))
;; Override default tab faces to use group faces
- (let ((tab-bar-tab-face-function tab-bar-tab-group-face-function))
+ (let ((tab-bar-tab-face-function
+ tab-bar-tab-group-face-function))
(tab-bar--format-tab tab i))))
;; Show first tab of other groups with a group name
((not (equal previous-group tab-group))
@@ -948,7 +955,8 @@ when the tab is current. Return the result as a keymap."
;; when windows are split horizontally (bug#59620)
(if (window-system)
`(space :align-to (- right (,hpos)))
- `(space :align-to (,(- (frame-inner-width) hpos)))))))
+ `(space :align-to (,(- (frame-inner-width)
+ hpos)))))))
`((align-right menu-item ,str ignore))))
(defun tab-bar-format-global ()
@@ -1018,7 +1026,7 @@ This variable has effect only when `tab-bar-auto-width' is non-nil."
(const :tag "No limit" nil)
(list (integer :tag "Max width (pixels)" :value 220)
(integer :tag "Max width (chars)" :value 20)))
- :initialize 'custom-initialize-default
+ :initialize #'custom-initialize-default
:set (lambda (sym val)
(set-default sym val)
(setq tab-bar--auto-width-hash nil))
@@ -1087,12 +1095,14 @@ tab bar might wrap to the second line when it shouldn't.")
curr-width)
(cond
((< prev-width width)
- (let* ((space (apply 'propertize " "
+ (let* ((space (apply #'propertize " "
(text-properties-at 0 name)))
(ins-pos (- len (if close-p 1 0)))
(prev-name name))
(while continue
- (setf (substring name ins-pos ins-pos) space)
+ (setq name (concat (substring name 0 ins-pos)
+ space
+ (substring name ins-pos)))
(setq curr-width (string-pixel-width name))
(if (and (< curr-width width)
(> curr-width prev-width))
@@ -1105,7 +1115,9 @@ tab bar might wrap to the second line when it shouldn't.")
(let ((del-pos1 (if close-p -2 -1))
(del-pos2 (if close-p -1 nil)))
(while continue
- (setf (substring name del-pos1 del-pos2) "")
+ (setq name (concat (substring name 0 del-pos1)
+ (and del-pos2
+ (substring name del-pos2))))
(setq curr-width (string-pixel-width name))
(if (and (> curr-width width)
(< curr-width prev-width))
@@ -1309,11 +1321,13 @@ Negative TAB-NUMBER counts tabs from the end of the tab bar."
(when tab-bar-history-mode
(puthash (selected-frame)
- (and (window-configuration-p (alist-get 'wc (car wc-history-back)))
+ (and (window-configuration-p
+ (alist-get 'wc (car wc-history-back)))
wc-history-back)
tab-bar-history-back)
(puthash (selected-frame)
- (and (window-configuration-p (alist-get 'wc (car wc-history-forward)))
+ (and (window-configuration-p
+ (alist-get 'wc (car wc-history-forward)))
wc-history-forward)
tab-bar-history-forward))))
@@ -1339,7 +1353,8 @@ Negative TAB-NUMBER counts tabs from the end of the tab bar."
(when from-index
(setf (nth from-index tabs) from-tab))
- (setf (nth to-index tabs) (tab-bar--current-tab-make (nth to-index tabs)))
+ (setf (nth to-index tabs)
+ (tab-bar--current-tab-make (nth to-index tabs)))
(unless tab-bar-mode
(message "Selected tab '%s'" (alist-get 'name to-tab))))
@@ -1406,7 +1421,7 @@ and rename it to NAME."
(tab-bar-new-tab)
(tab-bar-rename-tab name))))
-(defalias 'tab-bar-select-tab-by-name 'tab-bar-switch-to-tab)
+(defalias 'tab-bar-select-tab-by-name #'tab-bar-switch-to-tab)
(defun tab-bar-move-tab-to (to-number &optional from-number)
@@ -1421,7 +1436,8 @@ where argument addressing is relative."
(from-number (or from-number (1+ (tab-bar--current-tab-index tabs))))
(from-tab (nth (1- from-number) tabs))
(to-number (if to-number (prefix-numeric-value to-number) 1))
- (to-number (if (< to-number 0) (+ (length tabs) (1+ to-number)) to-number))
+ (to-number (if (< to-number 0) (+ (length tabs) (1+ to-number))
+ to-number))
(to-index (max 0 (min (1- to-number) (1- (length tabs))))))
(setq tabs (delq from-tab tabs))
(cl-pushnew from-tab (nthcdr to-index tabs))
@@ -1447,7 +1463,8 @@ Like `tab-bar-move-tab', but moves in the opposite direction."
(interactive "p")
(tab-bar-move-tab (- (or arg 1))))
-(defun tab-bar-move-tab-to-frame (arg &optional from-frame from-number to-frame to-number)
+(defun tab-bar-move-tab-to-frame (arg &optional from-frame from-number
+ to-frame to-number)
"Move tab from FROM-NUMBER position to new position at TO-NUMBER.
FROM-NUMBER defaults to the current tab number.
FROM-NUMBER and TO-NUMBER count from 1.
@@ -1463,7 +1480,8 @@ to which to move the tab; ARG defaults to 1."
(setq to-frame (next-frame to-frame))))
(unless (eq from-frame to-frame)
(let* ((from-tabs (funcall tab-bar-tabs-function from-frame))
- (from-number (or from-number (1+ (tab-bar--current-tab-index from-tabs))))
+ (from-number (or from-number
+ (1+ (tab-bar--current-tab-index from-tabs))))
(from-tab (nth (1- from-number) from-tabs))
(to-tabs (funcall tab-bar-tabs-function to-frame))
(to-index (max 0 (min (1- (or to-number 1)) (1- (length to-tabs))))))
@@ -1485,7 +1503,8 @@ to which to move the tab; ARG defaults to 1."
FROM-NUMBER defaults to the current tab (which happens interactively)."
(interactive (list (1+ (tab-bar--current-tab-index))))
(let* ((tabs (funcall tab-bar-tabs-function))
- (tab-index (1- (or from-number (1+ (tab-bar--current-tab-index tabs)))))
+ (tab-index (1- (or from-number
+ (1+ (tab-bar--current-tab-index tabs)))))
(tab-name (alist-get 'name (nth tab-index tabs)))
;; On some window managers, `make-frame' selects the new frame,
;; so previously selected frame is saved to `from-frame'.
@@ -1748,7 +1767,8 @@ for the last tab on a frame is determined by
;; Select another tab before deleting the current tab
(let ((to-index (or (if to-number (1- to-number))
(pcase tab-bar-close-tab-select
- ('left (1- (if (< current-index 1) 2 current-index)))
+ ('left (1- (if (< current-index 1) 2
+ current-index)))
('right (if (> (length tabs) (1+ current-index))
(1+ current-index)
(1- current-index)))
@@ -1773,7 +1793,8 @@ for the last tab on a frame is determined by
(force-mode-line-update)
(unless tab-bar-mode
- (message "Deleted tab and switched to %s" tab-bar-close-tab-select))))))
+ (message "Deleted tab and switched to %s"
+ tab-bar-close-tab-select))))))
(defun tab-bar-close-tab-by-name (name)
"Close the tab given its NAME.
@@ -1864,7 +1885,8 @@ If NAME is the empty string, then use the automatic name
function `tab-bar-tab-name-function'."
(interactive
(let* ((tabs (funcall tab-bar-tabs-function))
- (tab-number (or current-prefix-arg (1+ (tab-bar--current-tab-index tabs))))
+ (tab-number (or current-prefix-arg
+ (1+ (tab-bar--current-tab-index tabs))))
(tab-name (alist-get 'name (nth (1- tab-number) tabs))))
(list (read-from-minibuffer
"New name for tab (leave blank for automatic naming): "
@@ -2129,10 +2151,10 @@ and can restore them."
:version "29.1"))
(setq tab-bar-forward-button (icon-string 'tab-bar-forward))
- (add-hook 'pre-command-hook 'tab-bar--history-pre-change)
- (add-hook 'window-configuration-change-hook 'tab-bar--history-change))
- (remove-hook 'pre-command-hook 'tab-bar--history-pre-change)
- (remove-hook 'window-configuration-change-hook 'tab-bar--history-change)))
+ (add-hook 'pre-command-hook #'tab-bar--history-pre-change)
+ (add-hook 'window-configuration-change-hook #'tab-bar--history-change))
+ (remove-hook 'pre-command-hook #'tab-bar--history-pre-change)
+ (remove-hook 'window-configuration-change-hook #'tab-bar--history-change)))
;;; Non-graphical access to frame-local tabs (named window configurations)
@@ -2172,8 +2194,9 @@ For more information, see the function `tab-switcher'."
(tabs (sort tabs (lambda (a b) (< (alist-get 'time b)
(alist-get 'time a))))))
(with-current-buffer (get-buffer-create
- (format " *Tabs*<%s>" (or (frame-parameter nil 'window-id)
- (frame-parameter nil 'name))))
+ (format " *Tabs*<%s>"
+ (or (frame-parameter nil 'window-id)
+ (frame-parameter nil 'name))))
(setq buffer-read-only nil)
(erase-buffer)
(tab-switcher-mode)
@@ -2188,7 +2211,8 @@ For more information, see the function `tab-switcher'."
(propertize
(alist-get 'name tab)
'mouse-face 'highlight
- 'help-echo "mouse-2: select this window configuration"))
+ 'help-echo
+ "mouse-2: select this window configuration"))
'tab tab)))
(goto-char (point-min))
(goto-char (or (next-single-property-change (point) 'tab) (point-min)))
@@ -2264,8 +2288,8 @@ Interactively, ARG is the prefix numeric argument and defaults to 1."
(move-to-column tab-switcher-column))
(defun tab-switcher-unmark (&optional backup)
- "Cancel requested operations on window configuration on this line and move down.
-With prefix arg, move up instead."
+ "Cancel operations on window configuration on this line and move down.
+With prefix arg BACKUP, move up instead."
(interactive "P")
(beginning-of-line)
(move-to-column tab-switcher-column)
@@ -2276,7 +2300,7 @@ With prefix arg, move up instead."
(move-to-column tab-switcher-column))
(defun tab-switcher-backup-unmark ()
- "Move up one line and cancel requested operations on window configuration there."
+ "Move up one line and cancel operations on window configuration there."
(interactive)
(forward-line -1)
(tab-switcher-unmark)
@@ -2284,9 +2308,10 @@ With prefix arg, move up instead."
(move-to-column tab-switcher-column))
(defun tab-switcher-delete (&optional arg)
- "Mark window configuration on this line to be deleted by \\<tab-switcher-mode-map>\\[tab-switcher-execute] command.
+ "Mark window configuration on this line to be deleted.
Prefix arg says how many window configurations to delete.
-Negative arg means delete backwards."
+Negative arg means delete backwards.
+The deletion will be done by the \\<tab-switcher-mode-map>\\[tab-switcher-execute] command."
(interactive "p")
(let ((buffer-read-only nil))
(if (or (null arg) (= arg 0))
@@ -2304,8 +2329,9 @@ Negative arg means delete backwards."
(move-to-column tab-switcher-column)))
(defun tab-switcher-delete-backwards (&optional arg)
- "Mark window configuration on this line to be deleted by \\<tab-switcher-mode-map>\\[tab-switcher-execute] command.
-Then move up one line. Prefix arg means move that many lines."
+ "Mark window configuration on this line to be deleted.
+Then move up one line. Prefix arg means move that many lines.
+The deletion will be done by the \\<tab-switcher-mode-map>\\[tab-switcher-execute] command."
(interactive "p")
(tab-switcher-delete (- (or arg 1))))
@@ -2318,7 +2344,9 @@ Then move up one line. Prefix arg means move that many lines."
(tab-bar-tabs-set (delq tab (funcall tab-bar-tabs-function))))
(defun tab-switcher-execute ()
- "Delete window configurations marked with \\<tab-switcher-mode-map>\\[tab-switcher-delete] commands."
+ "Delete the marked window configurations.
+Use the \\<tab-switcher-mode-map>\\[tab-switcher-delete] commands
+to set those marks."
(interactive)
(save-excursion
(goto-char (point-min))
@@ -2364,7 +2392,8 @@ with those specified by the selected window configuration."
((framep all-frames) (list all-frames))
(t (list (selected-frame)))))
-(defun tab-bar-get-buffer-tab (buffer-or-name &optional all-frames ignore-current-tab all-tabs)
+(defun tab-bar-get-buffer-tab (buffer-or-name
+ &optional all-frames ignore-current-tab all-tabs)
"Return the tab that owns the window whose buffer is BUFFER-OR-NAME.
BUFFER-OR-NAME may be a buffer or a buffer name, and defaults to
the current buffer.
@@ -2540,7 +2569,7 @@ files will be visited."
(progn
(setq value (nreverse value))
(switch-to-buffer-other-tab (car value))
- (mapc 'switch-to-buffer (cdr value))
+ (mapc #'switch-to-buffer (cdr value))
value)
(switch-to-buffer-other-tab value))))
@@ -2582,26 +2611,26 @@ When `switch-to-buffer-obey-display-actions' is non-nil,
;;; Short aliases and keybindings
-(defalias 'tab-new 'tab-bar-new-tab)
-(defalias 'tab-new-to 'tab-bar-new-tab-to)
-(defalias 'tab-duplicate 'tab-bar-duplicate-tab)
-(defalias 'tab-detach 'tab-bar-detach-tab)
-(defalias 'tab-window-detach 'tab-bar-move-window-to-tab)
-(defalias 'tab-close 'tab-bar-close-tab)
-(defalias 'tab-close-other 'tab-bar-close-other-tabs)
-(defalias 'tab-close-group 'tab-bar-close-group-tabs)
-(defalias 'tab-undo 'tab-bar-undo-close-tab)
-(defalias 'tab-select 'tab-bar-select-tab)
-(defalias 'tab-switch 'tab-bar-switch-to-tab)
-(defalias 'tab-next 'tab-bar-switch-to-next-tab)
-(defalias 'tab-previous 'tab-bar-switch-to-prev-tab)
-(defalias 'tab-last 'tab-bar-switch-to-last-tab)
-(defalias 'tab-recent 'tab-bar-switch-to-recent-tab)
-(defalias 'tab-move 'tab-bar-move-tab)
-(defalias 'tab-move-to 'tab-bar-move-tab-to)
-(defalias 'tab-rename 'tab-bar-rename-tab)
-(defalias 'tab-group 'tab-bar-change-tab-group)
-(defalias 'tab-list 'tab-switcher)
+(defalias 'tab-new #'tab-bar-new-tab)
+(defalias 'tab-new-to #'tab-bar-new-tab-to)
+(defalias 'tab-duplicate #'tab-bar-duplicate-tab)
+(defalias 'tab-detach #'tab-bar-detach-tab)
+(defalias 'tab-window-detach #'tab-bar-move-window-to-tab)
+(defalias 'tab-close #'tab-bar-close-tab)
+(defalias 'tab-close-other #'tab-bar-close-other-tabs)
+(defalias 'tab-close-group #'tab-bar-close-group-tabs)
+(defalias 'tab-undo #'tab-bar-undo-close-tab)
+(defalias 'tab-select #'tab-bar-select-tab)
+(defalias 'tab-switch #'tab-bar-switch-to-tab)
+(defalias 'tab-next #'tab-bar-switch-to-next-tab)
+(defalias 'tab-previous #'tab-bar-switch-to-prev-tab)
+(defalias 'tab-last #'tab-bar-switch-to-last-tab)
+(defalias 'tab-recent #'tab-bar-switch-to-recent-tab)
+(defalias 'tab-move #'tab-bar-move-tab)
+(defalias 'tab-move-to #'tab-bar-move-tab-to)
+(defalias 'tab-rename #'tab-bar-rename-tab)
+(defalias 'tab-group #'tab-bar-change-tab-group)
+(defalias 'tab-list #'tab-switcher)
(keymap-set tab-prefix-map "n" #'tab-duplicate)
(keymap-set tab-prefix-map "N" #'tab-new-to)
diff --git a/lisp/term.el b/lisp/term.el
index 2e719567058..e1392908b90 100644
--- a/lisp/term.el
+++ b/lisp/term.el
@@ -1370,7 +1370,6 @@ Entry to this mode runs the hooks on `term-mode-hook'."
(interactive "e")
;; Give temporary modes such as isearch a chance to turn off.
(run-hooks 'mouse-leave-buffer-hook)
- (setq this-command 'yank)
(mouse-set-point click)
;; As we have moved point, bind `select-active-regions' to prevent
;; the `deactivate-mark' call in `term-send-raw-string' from
diff --git a/lisp/textmodes/html-ts-mode.el b/lisp/textmodes/html-ts-mode.el
new file mode 100644
index 00000000000..4c1f410a7ef
--- /dev/null
+++ b/lisp/textmodes/html-ts-mode.el
@@ -0,0 +1,134 @@
+;;; html-ts-mode.el --- tree-sitter support for HTML -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; Author : Theodor Thornhill <theo@thornhill.no>
+;; Maintainer : Theodor Thornhill <theo@thornhill.no>
+;; Created : January 2023
+;; Keywords : html languages tree-sitter
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+
+;;; Code:
+
+(require 'treesit)
+(require 'sgml-mode)
+
+(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-node-type "treesit.c")
+
+(defcustom html-ts-mode-indent-offset 2
+ "Number of spaces for each indentation step in `html-ts-mode'."
+ :version "29.1"
+ :type 'integer
+ :safe 'integerp
+ :group 'html)
+
+(defvar html-ts-mode--indent-rules
+ `((html
+ ((parent-is "fragment") column-0 0)
+ ((node-is "/>") parent-bol 0)
+ ((node-is ">") parent-bol 0)
+ ((node-is "end_tag") parent-bol 0)
+ ((parent-is "comment") prev-adaptive-prefix 0)
+ ((parent-is "element") parent-bol html-ts-mode-indent-offset)
+ ((parent-is "script_element") parent-bol html-ts-mode-indent-offset)
+ ((parent-is "style_element") parent-bol html-ts-mode-indent-offset)
+ ((parent-is "start_tag") parent-bol html-ts-mode-indent-offset)
+ ((parent-is "self_closing_tag") parent-bol html-ts-mode-indent-offset)))
+ "Tree-sitter indent rules.")
+
+(defvar html-ts-mode--font-lock-settings
+ (treesit-font-lock-rules
+ :language 'html
+ :override t
+ :feature 'comment
+ `((comment) @font-lock-comment-face)
+ :language 'html
+ :override t
+ :feature 'keyword
+ `("doctype" @font-lock-keyword-face)
+ :language 'html
+ :override t
+ :feature 'definition
+ `((tag_name) @font-lock-function-name-face)
+ :language 'html
+ :override t
+ :feature 'string
+ `((quoted_attribute_value) @font-lock-string-face)
+ :language 'html
+ :override t
+ :feature 'property
+ `((attribute_name) @font-lock-variable-name-face))
+ "Tree-sitter font-lock settings for `html-ts-mode'.")
+
+(defun html-ts-mode--defun-name (node)
+ "Return the defun name of NODE.
+Return nil if there is no name or if NODE is not a defun node."
+ (when (equal (treesit-node-type node) "tag_name")
+ (treesit-node-text node t)))
+
+;;;###autoload
+(define-derived-mode html-ts-mode html-mode "HTML"
+ "Major mode for editing Html, powered by tree-sitter."
+ :group 'html
+
+ (unless (treesit-ready-p 'html)
+ (error "Tree-sitter for HTML isn't available"))
+
+ (treesit-parser-create 'html)
+
+ ;; Comments.
+ (setq-local treesit-text-type-regexp
+ (regexp-opt '("comment" "text")))
+
+ ;; Indent.
+ (setq-local treesit-simple-indent-rules html-ts-mode--indent-rules)
+
+ ;; Navigation.
+ (setq-local treesit-defun-type-regexp "element")
+
+ (setq-local treesit-defun-name-function #'html-ts-mode--defun-name)
+
+ (setq-local treesit-sentence-type-regexp "tag")
+
+ (setq-local treesit-sexp-type-regexp
+ (regexp-opt '("element"
+ "text"
+ "attribute"
+ "value")))
+
+ ;; Font-lock.
+ (setq-local treesit-font-lock-settings html-ts-mode--font-lock-settings)
+ (setq-local treesit-font-lock-feature-list
+ '((comment keyword definition)
+ (property string)
+ () ()))
+
+ ;; Imenu.
+ (setq-local treesit-simple-imenu-settings
+ '(("Element" "\\`tag_name\\'" nil nil)))
+ (treesit-major-mode-setup))
+
+(if (treesit-ready-p 'html)
+ (add-to-list 'auto-mode-alist '("\\.html\\'" . html-ts-mode)))
+
+(provide 'html-ts-mode)
+
+;;; html-ts-mode.el ends here
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index a9e28a3275b..6c33380b6bd 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -441,13 +441,12 @@ the current paragraph with the one containing the mark."
(if (< (point) (point-max))
(end-of-paragraph-text))))))
-(defun forward-sentence (&optional arg)
+(defun forward-sentence-default-function (&optional arg)
"Move forward to next end of sentence. With argument, repeat.
When ARG is negative, move backward repeatedly to start of sentence.
The variable `sentence-end' is a regular expression that matches ends of
sentences. Also, every paragraph boundary terminates sentences as well."
- (interactive "^p")
(or arg (setq arg 1))
(let ((opoint (point))
(sentence-end (sentence-end)))
@@ -479,6 +478,18 @@ sentences. Also, every paragraph boundary terminates sentences as well."
(setq arg (1- arg)))
(constrain-to-field nil opoint t)))
+(defvar forward-sentence-function #'forward-sentence-default-function
+ "Function to be used to calculate sentence movements.
+See `forward-sentence' for a description of its behavior.")
+
+(defun forward-sentence (&optional arg)
+ "Move forward to next end of sentence. With argument ARG, repeat.
+If ARG is negative, move backward repeatedly to start of
+sentence. Delegates its work to `forward-sentence-function'."
+ (interactive "^p")
+ (or arg (setq arg 1))
+ (funcall forward-sentence-function arg))
+
(defun count-sentences (start end)
"Count sentences in current buffer from START to END."
(let ((sentences 0)
diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el
index 778591a8069..c7a297d5dac 100644
--- a/lisp/textmodes/reftex-index.el
+++ b/lisp/textmodes/reftex-index.el
@@ -1445,20 +1445,19 @@ match, the user will be asked to confirm the replacement."
(as-words reftex-index-phrases-search-whole-words))
(unless macro-data
(error "No macro associated with key %c" char))
- (unwind-protect
- (let ((overlay-arrow-string "=>")
- (overlay-arrow-position
- reftex-index-phrases-marker)
- (replace-count 0))
- ;; Show the overlay arrow
- (move-marker reftex-index-phrases-marker
- (match-beginning 0) (current-buffer))
- ;; Start the query-replace
- (reftex-query-index-phrase-globally
- files phrase macro-fmt
- index-key repeat as-words)
- (message "%s replaced"
- (reftex-number replace-count "occurrence"))))))
+ (let ((overlay-arrow-string "=>")
+ (overlay-arrow-position
+ reftex-index-phrases-marker)
+ (replace-count 0))
+ ;; Show the overlay arrow
+ (move-marker reftex-index-phrases-marker
+ (match-beginning 0) (current-buffer))
+ ;; Start the query-replace
+ (reftex-query-index-phrase-globally
+ files phrase macro-fmt
+ index-key repeat as-words)
+ (message "%s replaced"
+ (reftex-number replace-count "occurrence")))))
(t (error "Cannot parse this line")))))
(defun reftex-index-all-phrases ()
diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el
index 7315c1e1e74..da0779c8e8d 100644
--- a/lisp/textmodes/reftex-ref.el
+++ b/lisp/textmodes/reftex-ref.el
@@ -495,7 +495,7 @@ When called with 2 \\[universal-argument] prefix args, disable magic word recogn
sep1 (cdr (assoc sep reftex-multiref-punctuation))
labels (cdr labels))
(when cut
- (backward-delete-char cut)
+ (delete-char (- cut))
(setq cut nil))
;; remove ~ if we do already have a space
diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el
index 2271d83eff5..50c3f461bcc 100644
--- a/lisp/textmodes/table.el
+++ b/lisp/textmodes/table.el
@@ -1935,8 +1935,8 @@ specific features."
(if (and cell table-detect-cell-alignment)
(table--detect-cell-alignment cell)))
(unless (re-search-forward border end t)
- (goto-char end))))))))))
- (restore-buffer-modified-p modified-flag)))
+ (goto-char end))))))
+ (restore-buffer-modified-p modified-flag)))))))
;;;###autoload
(defun table-unrecognize-region (beg end)
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 9363a474cb5..f3367290dee 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -645,7 +645,7 @@ back from point."
;; Email addresses
(defvar thing-at-point-email-regexp
- "<?[-+_.~a-zA-Z][-+_.~:a-zA-Z0-9]*@[-.a-zA-Z0-9]+>?"
+ "<?[-+_~a-zA-Z0-9][-+_.~:a-zA-Z0-9]*@[-a-zA-Z0-9]+[-.a-zA-Z0-9]*>?"
"A regular expression probably matching an email address.
This does not match the real name portion, only the address, optionally
with angle brackets.")
diff --git a/lisp/time.el b/lisp/time.el
index f04a22dfd28..522bec46ac6 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -139,6 +139,11 @@ make the mail indicator stand out on a color display."
:version "22.1"
:type '(choice (const :tag "None" nil) face))
+(defface display-time-date-and-time nil
+ "Face for `display-time-format'."
+ :group 'mode-line-faces
+ :version "30.1")
+
(defvar display-time-mail-icon
(find-image '((:type xpm :file "letter.xpm" :ascent center)
(:type pbm :file "letter.pbm" :ascent center)))
@@ -179,6 +184,7 @@ depend on `display-time-day-and-date' and `display-time-24hr-format'."
(format-time-string (or display-time-format
(if display-time-24hr-format "%H:%M" "%-I:%M%p"))
now)
+ 'face 'display-time-date-and-time
'help-echo (format-time-string "%a %b %e, %Y" now))
load
(if mail
diff --git a/lisp/treesit.el b/lisp/treesit.el
index e718ea1a23a..ed7ad280684 100644
--- a/lisp/treesit.el
+++ b/lisp/treesit.el
@@ -88,6 +88,7 @@
(declare-function treesit-search-forward "treesit.c")
(declare-function treesit-induce-sparse-tree "treesit.c")
(declare-function treesit-subtree-stat "treesit.c")
+(declare-function treesit-node-match-p "treesit.c")
(declare-function treesit-available-p "treesit.c")
@@ -106,7 +107,7 @@ indent, imenu, etc."
;; 40MB for 64-bit systems, 15 for 32-bit.
(if (or (< most-positive-fixnum (* 2.0 1024 mb))
;; 32-bit system with wide ints.
- (string-match-p "--with-wide-int" system-configuration-options))
+ (string-search "--with-wide-int" system-configuration-options))
(* 15 mb)
(* 40 mb)))
"Maximum buffer size (in bytes) for enabling tree-sitter parsing.
@@ -245,21 +246,19 @@ is nil, try to guess the language at BEG using `treesit-language-at'."
Specifically, return the highest parent of NODE that has the same
type as it. If no such parent exists, return nil.
-If PRED is non-nil, match each parent's type with PRED as a
-regexp, rather than using NODE's type. PRED can also be a
-function that takes the node as an argument, and return
-non-nil/nil for match/no match.
+If PRED is non-nil, match each parent's type with PRED rather
+than using NODE's type. PRED can also be a predicate function,
+and more. See `treesit-thing-settings' for details.
If INCLUDE-NODE is non-nil, return NODE if it satisfies PRED."
- (let ((pred (or pred (treesit-node-type node)))
+ (let ((pred (or pred (rx-to-string
+ `(bos ,(treesit-node-type node) eos))))
(result nil))
(cl-loop for cursor = (if include-node node
(treesit-node-parent node))
then (treesit-node-parent cursor)
while cursor
- if (if (stringp pred)
- (string-match-p pred (treesit-node-type cursor))
- (funcall pred cursor))
+ if (treesit-node-match-p cursor pred)
do (setq result cursor))
result))
@@ -363,6 +362,50 @@ If NAMED is non-nil, count named child only."
(idx (treesit-node-index node)))
(treesit-node-field-name-for-child parent idx)))
+(defun treesit-node-get (node instructions)
+ "Get things from NODE by INSTRUCTIONS.
+
+This is a convenience function that chains together multiple node
+accessor functions together. For example, to get NODE's parent's
+next sibling's second child's text, call
+
+ (treesit-node-get node
+ \\='((parent 1)
+ (sibling 1 nil)
+ (child 1 nil)
+ (text nil)))
+
+INSTRUCTION is a list of INSTRUCTIONs of the form (FN ARG...).
+The following FN's are supported:
+
+\(child IDX NAMED) Get the IDX'th child
+\(parent N) Go to parent N times
+\(field-name) Get the field name of the current node
+\(type) Get the type of the current node
+\(text NO-PROPERTY) Get the text of the current node
+\(children NAMED) Get a list of children
+\(sibling STEP NAMED) Get the nth prev/next sibling, negative STEP
+ means prev sibling, positive means next
+
+Note that arguments like NAMED and NO-PROPERTY can't be omitted,
+unlike in their original functions."
+ (declare (indent 1))
+ (while (and node instructions)
+ (pcase (pop instructions)
+ ('(field-name) (setq node (treesit-node-field-name node)))
+ ('(type) (setq node (treesit-node-type node)))
+ (`(child ,idx ,named) (setq node (treesit-node-child node idx named)))
+ (`(parent ,n) (dotimes (_ n)
+ (setq node (treesit-node-parent node))))
+ (`(text ,no-property) (setq node (treesit-node-text node no-property)))
+ (`(children ,named) (setq node (treesit-node-children node named)))
+ (`(sibling ,step ,named)
+ (dotimes (_ (abs step))
+ (setq node (if (> step 0)
+ (treesit-node-next-sibling node named)
+ (treesit-node-prev-sibling node named)))))))
+ node)
+
;;; Query API supplement
(defun treesit-query-string (string query language)
@@ -1730,6 +1773,49 @@ BACKWARD and ALL are the same as in `treesit-search-forward'."
(goto-char current-pos)))
node))
+(defvar-local treesit-sexp-type-regexp nil
+ "A regexp that matches the node type of sexp nodes.
+
+A sexp node is a node that is bigger than punctuation, and
+delimits medium sized statements in the source code. It is,
+however, smaller in scope than sentences. This is used by
+`treesit-forward-sexp' and friends.")
+
+(defun treesit-forward-sexp (&optional arg)
+ "Tree-sitter implementation for `forward-sexp-function'.
+ARG is described in the docstring of `forward-sexp-function'."
+ (interactive "^p")
+ (or arg (setq arg 1))
+ (funcall
+ (if (> arg 0) #'treesit-end-of-thing #'treesit-beginning-of-thing)
+ treesit-sexp-type-regexp (abs arg) 'restricted))
+
+(defun treesit-transpose-sexps (&optional arg)
+ "Tree-sitter `transpose-sexps' function.
+ARG is the same as in `transpose-sexps'.
+
+Locate the node closest to POINT, and transpose that node with
+its sibling node ARG nodes away.
+
+Return a pair of positions as described by
+`transpose-sexps-function' for use in `transpose-subr' and
+friends."
+ (let* ((parent (treesit-node-parent (treesit-node-at (point))))
+ (child (treesit-node-child parent 0 t)))
+ (named-let loop ((prev child)
+ (next (treesit-node-next-sibling child t)))
+ (when (and prev next)
+ (if (< (point) (treesit-node-end next))
+ (if (= arg -1)
+ (cons (treesit-node-start prev)
+ (treesit-node-end prev))
+ (when-let ((n (treesit-node-child
+ parent (+ arg (treesit-node-index prev t)) t)))
+ (cons (treesit-node-end n)
+ (treesit-node-start n))))
+ (loop (treesit-node-next-sibling prev t)
+ (treesit-node-next-sibling next t)))))))
+
;;; Navigation, defun, things
;;
;; Emacs lets you define "things" by a regexp that matches the type of
@@ -1800,44 +1886,49 @@ nil.")
"The delimiter used to connect several defun names.
This is used in `treesit-add-log-current-defun'.")
-(defsubst treesit--thing-unpack-pattern (pattern)
- "Unpack PATTERN in the shape of `treesit-defun-type-regexp'.
-
-Basically,
-
- (unpack REGEXP) = (REGEXP . nil)
- (unpack (REGEXP . PRED)) = (REGEXP . PRED)"
- (if (consp pattern)
- pattern
- (cons pattern nil)))
-
-(defun treesit-beginning-of-thing (pattern &optional arg)
+(defun treesit-beginning-of-thing (pred &optional arg tactic)
"Like `beginning-of-defun', but generalized into things.
-PATTERN is like `treesit-defun-type-regexp', ARG
+PRED is like `treesit-defun-type-regexp', ARG
is the same as in `beginning-of-defun'.
+TACTIC determines how does this function move between things. It
+can be `nested', `top-level', `restricted', or nil. `nested'
+means normal nested navigation: try to move to siblings first,
+and if there aren't enough siblings, move to the parent and its
+siblings. `top-level' means only consider top-level things, and
+nested things are ignored. `restricted' means movement is
+restricted inside the thing that encloses POS (i.e., parent),
+should there be one. If omitted, TACTIC is considered to be
+`nested'.
+
Return non-nil if successfully moved, nil otherwise."
(pcase-let* ((arg (or arg 1))
- (`(,regexp . ,pred) (treesit--thing-unpack-pattern
- pattern))
(dest (treesit--navigate-thing
- (point) (- arg) 'beg regexp pred)))
+ (point) (- arg) 'beg pred tactic)))
(when dest
(goto-char dest))))
-(defun treesit-end-of-thing (pattern &optional arg)
+(defun treesit-end-of-thing (pred &optional arg tactic)
"Like `end-of-defun', but generalized into things.
-PATTERN is like `treesit-defun-type-regexp', ARG is the same as
+PRED is like `treesit-defun-type-regexp', ARG is the same as
in `end-of-defun'.
+TACTIC determines how does this function move between things. It
+can be `nested', `top-level', `restricted', or nil. `nested'
+means normal nested navigation: try to move to siblings first,
+and if there aren't enough siblings, move to the parent and its
+siblings. `top-level' means only consider top-level things, and
+nested things are ignored. `restricted' means movement is
+restricted inside the thing that encloses POS (i.e., parent),
+should there be one. If omitted, TACTIC is considered to be
+`nested'.
+
Return non-nil if successfully moved, nil otherwise."
(pcase-let* ((arg (or arg 1))
- (`(,regexp . ,pred) (treesit--thing-unpack-pattern
- pattern))
(dest (treesit--navigate-thing
- (point) arg 'end regexp pred)))
+ (point) arg 'end pred tactic)))
(when dest
(goto-char dest))))
@@ -1858,7 +1949,8 @@ and `treesit-defun-skipper'."
(catch 'done
(dotimes (_ 2)
- (when (treesit-beginning-of-thing treesit-defun-type-regexp arg)
+ (when (treesit-beginning-of-thing
+ treesit-defun-type-regexp arg treesit-defun-tactic)
(when treesit-defun-skipper
(funcall treesit-defun-skipper)
(setq success t)))
@@ -1886,7 +1978,8 @@ this function depends on `treesit-defun-type-regexp' and
(catch 'done
(dotimes (_ 2) ; Not making progress is better than infloop.
- (when (treesit-end-of-thing treesit-defun-type-regexp arg)
+ (when (treesit-end-of-thing
+ treesit-defun-type-regexp arg treesit-defun-tactic)
(when treesit-defun-skipper
(funcall treesit-defun-skipper)))
@@ -1898,6 +1991,40 @@ this function depends on `treesit-defun-type-regexp' and
(throw 'done nil)
(setq arg (if (> arg 0) (1+ arg) (1- arg))))))))
+(defvar-local treesit-text-type-regexp "\\`comment\\'"
+ "A regexp that matches the node type of textual nodes.
+
+A textual node is a node that is not normal code, such as
+comments and multiline string literals. For example,
+\"(line|block)_comment\" in the case of a comment, or
+\"text_block\" in the case of a string. This is used by
+`prog-fill-reindent-defun' and friends.")
+
+(defvar-local treesit-sentence-type-regexp nil
+ "A regexp that matches the node type of sentence nodes.
+
+A sentence node is a node that is bigger than a sexp, and
+delimits larger statements in the source code. It is, however,
+smaller in scope than defuns. This is used by
+`treesit-forward-sentence' and friends.")
+
+(defun treesit-forward-sentence (&optional arg)
+ "Tree-sitter `forward-sentence-function' function.
+
+ARG is the same as in `forward-sentence'.
+
+If inside comment or other nodes described in
+`treesit-sentence-type-regexp', use
+`forward-sentence-default-function', else move across nodes as
+described by `treesit-sentence-type-regexp'."
+ (if (string-match-p
+ treesit-text-type-regexp
+ (treesit-node-type (treesit-node-at (point))))
+ (funcall #'forward-sentence-default-function arg)
+ (funcall
+ (if (> arg 0) #'treesit-end-of-thing #'treesit-beginning-of-thing)
+ treesit-sentence-type-regexp (abs arg))))
+
(defun treesit-default-defun-skipper ()
"Skips spaces after navigating a defun.
This function tries to move to the beginning of a line, either by
@@ -1926,7 +2053,7 @@ the current line if the beginning of the defun is indented."
;; parent:
;; 1. node covers pos
;; 2. smallest such node
-(defun treesit--things-around (pos regexp &optional pred)
+(defun treesit--things-around (pos pred)
"Return the previous, next, and parent thing around POS.
Return a list of (PREV NEXT PARENT), where PREV and NEXT are
@@ -1934,7 +2061,8 @@ previous and next sibling things around POS, and PARENT is the
parent thing surrounding POS. All of three could be nil if no
sound things exists.
-REGEXP and PRED are the same as in `treesit-thing-at-point'."
+PRED can be a regexp, a predicate function, and more. See
+`treesit-thing-settings' for details."
(let* ((node (treesit-node-at pos))
(result (list nil nil nil)))
;; 1. Find previous and next sibling defuns.
@@ -1957,9 +2085,7 @@ REGEXP and PRED are the same as in `treesit-thing-at-point'."
when node
do (let ((cursor node)
(iter-pred (lambda (node)
- (and (string-match-p
- regexp (treesit-node-type node))
- (or (null pred) (funcall pred node))
+ (and (treesit-node-match-p node pred)
(funcall pos-pred node)))))
;; Find the node just before/after POS to start searching.
(save-excursion
@@ -1973,13 +2099,11 @@ REGEXP and PRED are the same as in `treesit-thing-at-point'."
(setf (nth idx result)
(treesit-node-top-level cursor iter-pred t))
(setq cursor (treesit-search-forward
- cursor regexp backward backward)))))
+ cursor pred backward backward)))))
;; 2. Find the parent defun.
(let ((cursor (or (nth 0 result) (nth 1 result) node))
(iter-pred (lambda (node)
- (and (string-match-p
- regexp (treesit-node-type node))
- (or (null pred) (funcall pred node))
+ (and (treesit-node-match-p node pred)
(not (treesit-node-eq node (nth 0 result)))
(not (treesit-node-eq node (nth 1 result)))
(< (treesit-node-start node)
@@ -1989,15 +2113,6 @@ REGEXP and PRED are the same as in `treesit-thing-at-point'."
(treesit-parent-until cursor iter-pred)))
result))
-(defun treesit--top-level-thing (node regexp &optional pred)
- "Return the top-level parent thing of NODE.
-REGEXP and PRED are the same as in `treesit-thing-at-point'."
- (treesit-node-top-level
- node (lambda (node)
- (and (string-match-p regexp (treesit-node-type node))
- (or (null pred) (funcall pred node))))
- t))
-
;; The basic idea for nested defun navigation is that we first try to
;; move across sibling defuns in the same level, if no more siblings
;; exist, we move to parents's beg/end, rinse and repeat. We never
@@ -2025,7 +2140,7 @@ REGEXP and PRED are the same as in `treesit-thing-at-point'."
;; -> Obviously we don't want to go to parent's end, instead, we
;; want to go to parent's prev-sibling's end. Again, we recurse
;; in the function to do that.
-(defun treesit--navigate-thing (pos arg side regexp &optional pred recursing)
+(defun treesit--navigate-thing (pos arg side pred &optional tactic recursing)
"Navigate thing ARG steps from POS.
If ARG is positive, move forward that many steps, if negative,
@@ -2036,7 +2151,18 @@ This function doesn't actually move point, it just returns the
position it would move to. If there aren't enough things to move
across, return nil.
-REGEXP and PRED are the same as in `treesit-thing-at-point'.
+PRED can be a regexp, a predicate function, and more. See
+`treesit-thing-settings' for details.
+
+TACTIC determines how does this function move between things. It
+can be `nested', `top-level', `restricted', or nil. `nested'
+means normal nested navigation: try to move to siblings first,
+and if there aren't enough siblings, move to the parent and its
+siblings. `top-level' means only consider top-level things, and
+nested things are ignored. `restricted' means movement is
+restricted inside the thing that encloses POS (i.e., parent),
+should there be one. If omitted, TACTIC is considered to be
+`nested'.
RECURSING is an internal parameter, if non-nil, it means this
function is called recursively."
@@ -2055,78 +2181,77 @@ function is called recursively."
(while (> counter 0)
(pcase-let
((`(,prev ,next ,parent)
- (treesit--things-around pos regexp pred)))
+ (treesit--things-around pos pred)))
;; When PARENT is nil, nested and top-level are the same, if
;; there is a PARENT, make PARENT to be the top-level parent
;; and pretend there is no nested PREV and NEXT.
- (when (and (eq treesit-defun-tactic 'top-level)
+ (when (and (eq tactic 'top-level)
parent)
- (setq parent (treesit--top-level-thing
- parent regexp pred)
+ (setq parent (treesit-node-top-level parent pred t)
prev nil
next nil))
- ;; Move...
- (if (> arg 0)
- ;; ...forward.
- (if (and (eq side 'beg)
- ;; Should we skip the defun (recurse)?
- (cond (next (and (not recursing) ; [1] (see below)
- (eq pos (funcall advance next))))
- (parent t))) ; [2]
- ;; Special case: go to next beg-of-defun, but point
- ;; is already on beg-of-defun. Set POS to the end
- ;; of next-sib/parent defun, and run one more step.
- ;; If there is a next-sib defun, we only need to
- ;; recurse once, so we don't need to recurse if we
- ;; are already recursing [1]. If there is no
- ;; next-sib but a parent, keep stepping out
- ;; (recursing) until we got out of the parents until
- ;; (1) there is a next sibling defun, or (2) no more
- ;; parents [2].
- ;;
- ;; If point on beg-of-defun but we are already
- ;; recurring, that doesn't count as special case,
- ;; because we have already made progress (by moving
- ;; the end of next before recurring.)
+ ;; If TACTIC is `restricted', the implementation is very simple.
+ (if (eq tactic 'restricted)
+ (setq pos (funcall advance (if (> arg 0) next prev)))
+ ;; For `nested', it's a bit more work:
+ ;; Move...
+ (if (> arg 0)
+ ;; ...forward.
+ (if (and (eq side 'beg)
+ ;; Should we skip the defun (recurse)?
+ (cond (next (and (not recursing) ; [1] (see below)
+ (eq pos (funcall advance next))))
+ (parent t))) ; [2]
+ ;; Special case: go to next beg-of-defun, but point
+ ;; is already on beg-of-defun. Set POS to the end
+ ;; of next-sib/parent defun, and run one more step.
+ ;; If there is a next-sib defun, we only need to
+ ;; recurse once, so we don't need to recurse if we
+ ;; are already recursing [1]. If there is no
+ ;; next-sib but a parent, keep stepping out
+ ;; (recursing) until we got out of the parents until
+ ;; (1) there is a next sibling defun, or (2) no more
+ ;; parents [2].
+ ;;
+ ;; If point on beg-of-defun but we are already
+ ;; recurring, that doesn't count as special case,
+ ;; because we have already made progress (by moving
+ ;; the end of next before recurring.)
+ (setq pos (or (treesit--navigate-thing
+ (treesit-node-end (or next parent))
+ 1 'beg pred tactic t)
+ (throw 'term nil)))
+ ;; Normal case.
+ (setq pos (funcall advance (or next parent))))
+ ;; ...backward.
+ (if (and (eq side 'end)
+ (cond (prev (and (not recursing)
+ (eq pos (funcall advance prev))))
+ (parent t)))
+ ;; Special case: go to prev end-of-defun.
(setq pos (or (treesit--navigate-thing
- (treesit-node-end (or next parent))
- 1 'beg regexp pred t)
+ (treesit-node-start (or prev parent))
+ -1 'end pred tactic t)
(throw 'term nil)))
;; Normal case.
- (setq pos (funcall advance (or next parent))))
- ;; ...backward.
- (if (and (eq side 'end)
- (cond (prev (and (not recursing)
- (eq pos (funcall advance prev))))
- (parent t)))
- ;; Special case: go to prev end-of-defun.
- (setq pos (or (treesit--navigate-thing
- (treesit-node-start (or prev parent))
- -1 'end regexp pred t)
- (throw 'term nil)))
- ;; Normal case.
- (setq pos (funcall advance (or prev parent)))))
+ (setq pos (funcall advance (or prev parent))))))
;; A successful step! Decrement counter.
(cl-decf counter))))
;; Counter equal to 0 means we successfully stepped ARG steps.
(if (eq counter 0) pos nil)))
;; TODO: In corporate into thing-at-point.
-(defun treesit-thing-at-point (pattern tactic)
+(defun treesit-thing-at-point (pred tactic)
"Return the thing node at point or nil if none is found.
-\"Thing\" is defined by PATTERN, which can be either a string
-REGEXP or a cons cell (REGEXP . PRED): if a node's type matches
-REGEXP, it is a thing. The \"thing\" could be further restricted
-by PRED: if non-nil, PRED should be a function that takes a node
-and returns t if the node is a \"thing\", and nil if not.
+\"Thing\" is defined by PRED, which can be a regexp, a
+predication function, and more, see `treesit-thing-settings'
+for details.
Return the top-level defun if TACTIC is `top-level', return the
immediate parent thing if TACTIC is `nested'."
- (pcase-let* ((`(,regexp . ,pred)
- (treesit--thing-unpack-pattern pattern))
- (`(,_ ,next ,parent)
- (treesit--things-around (point) regexp pred))
+ (pcase-let* ((`(,_ ,next ,parent)
+ (treesit--things-around (point) pred))
;; If point is at the beginning of a thing, we
;; prioritize that thing over the parent in nested
;; mode.
@@ -2134,7 +2259,7 @@ immediate parent thing if TACTIC is `nested'."
next)
parent)))
(if (eq tactic 'top-level)
- (treesit--top-level-thing node regexp pred)
+ (treesit-node-top-level node pred t)
node)))
(defun treesit-defun-at-point ()
@@ -2366,6 +2491,13 @@ before calling this function."
(when treesit-defun-name-function
(setq-local add-log-current-defun-function
#'treesit-add-log-current-defun))
+
+ (when treesit-sexp-type-regexp
+ (setq-local forward-sexp-function #'treesit-forward-sexp))
+ (setq-local transpose-sexps-function #'treesit-transpose-sexps)
+ (when treesit-sentence-type-regexp
+ (setq-local forward-sentence-function #'treesit-forward-sentence))
+
;; Imenu.
(when treesit-simple-imenu-settings
(setq-local imenu-create-index-function
@@ -2858,6 +2990,9 @@ See `treesit-language-source-alist' for details."
(buffer-local-value 'url-http-response-status buffer)
200)))))
+(defvar treesit--install-language-grammar-out-dir-history nil
+ "History for OUT-DIR for `treesit-install-language-grammar'.")
+
;;;###autoload
(defun treesit-install-language-grammar (lang)
"Build and install the tree-sitter language grammar library for LANG.
@@ -2879,11 +3014,20 @@ executable programs, such as the C/C++ compiler and linker."
(when-let ((recipe
(or (assoc lang treesit-language-source-alist)
(treesit--install-language-grammar-build-recipe
- lang))))
+ lang)))
+ (default-out-dir
+ (or (car treesit--install-language-grammar-out-dir-history)
+ (locate-user-emacs-file "tree-sitter")))
+ (out-dir
+ (read-string
+ (format "Install to (default: %s): "
+ default-out-dir)
+ nil
+ 'treesit--install-language-grammar-out-dir-history
+ default-out-dir)))
(condition-case err
(apply #'treesit--install-language-grammar-1
- ;; The nil is OUT-DIR.
- (cons nil recipe))
+ (cons out-dir recipe))
(error
(display-warning
'treesit
@@ -2974,11 +3118,17 @@ function signals an error."
(apply #'treesit--call-process-signal
(if (file-exists-p "scanner.cc") c++ cc)
nil t nil
- `("-fPIC" "-shared"
- ,@(directory-files
- default-directory nil
- (rx bos (+ anychar) ".o" eos))
- "-o" ,lib-name))
+ (if (eq system-type 'cygwin)
+ `("-shared" "-Wl,-dynamicbase"
+ ,@(directory-files
+ default-directory nil
+ (rx bos (+ anychar) ".o" eos))
+ "-o" ,lib-name)
+ `("-fPIC" "-shared"
+ ,@(directory-files
+ default-directory nil
+ (rx bos (+ anychar) ".o" eos))
+ "-o" ,lib-name)))
;; Copy out.
(unless (file-exists-p out-dir)
(make-directory out-dir t))
@@ -3008,7 +3158,7 @@ function signals an error."
(with-temp-buffer
(insert-file-contents (find-library-name "treesit"))
(cl-remove-if
- (lambda (name) (string-match "treesit--" name))
+ (lambda (name) (string-search "treesit--" name))
(cl-sort
(save-excursion
(goto-char (point-min))
diff --git a/lisp/url/url-domsuf.el b/lisp/url/url-domsuf.el
index 74d46f1c037..671885e418f 100644
--- a/lisp/url/url-domsuf.el
+++ b/lisp/url/url-domsuf.el
@@ -30,14 +30,26 @@
(defvar url-domsuf-domains nil)
+(defun url-domsuf--public-suffix-file ()
+ "Look for and return a file name for a recent \"public_suffix_list.dat\".
+Emacs ships with a copy of this file, but some systems might have
+a newer version available. Look for it in some standard
+locations, and if a newer file was found, then return that."
+ (car (sort
+ (seq-filter
+ #'file-readable-p
+ (list (expand-file-name "publicsuffix.txt.gz" data-directory)
+ (expand-file-name "publicsuffix.txt" data-directory)
+ ;; Debian and Fedora
+ "/usr/share/publicsuffix/public_suffix_list.dat"
+ ;; FreeBSD port
+ "/usr/local/share/public_suffix_list/public_suffix_list.dat"))
+ #'file-newer-than-file-p)))
+
(defun url-domsuf-parse-file ()
(with-temp-buffer
(with-auto-compression-mode
- (insert-file-contents
- (let* ((suffixfile (expand-file-name "publicsuffix.txt" data-directory))
- (compressed-file (concat suffixfile ".gz")))
- (or (and (file-readable-p compressed-file) compressed-file)
- suffixfile))))
+ (insert-file-contents (url-domsuf--public-suffix-file)))
(let ((domains nil)
domain exception)
(while (not (eobp))
diff --git a/lisp/url/url-future.el b/lisp/url/url-future.el
index fc852ed7c0b..9b528835a7b 100644
--- a/lisp/url/url-future.el
+++ b/lisp/url/url-future.el
@@ -53,7 +53,7 @@
(define-inline url-future-errored-p (url-future)
(inline-quote (eq (url-future-status ,url-future) 'error)))
-(define-inline url-future-cancelled-p (url-future)
+(define-inline url-future-canceled-p (url-future)
(inline-quote (eq (url-future-status ,url-future) 'cancel)))
(defun url-future-finish (url-future &optional status)
@@ -96,5 +96,8 @@
(signal 'error 'url-future-already-done)
(url-future-finish url-future 'cancel)))
+(define-obsolete-function-alias 'url-future-cancelled-p
+ #'url-future-canceled-p "30.1")
+
(provide 'url-future)
;;; url-future.el ends here
diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el
index 70714b0f24f..4d7297f6f2e 100644
--- a/lisp/url/url-gw.el
+++ b/lisp/url/url-gw.el
@@ -239,35 +239,34 @@ overriding the value of `url-gateway-method'."
(if url-gateway-broken-resolution
(setq host (url-gateway-nslookup-host host)))
- (condition-case nil
- ;; This is a clean way to ensure the new process inherits the
- ;; right coding systems in both Emacs and XEmacs.
- (let ((coding-system-for-read 'binary)
- (coding-system-for-write 'binary))
- (setq conn (pcase gw-method
- ((or 'tls 'ssl 'native)
- (if (eq gw-method 'native)
- (setq gw-method 'plain))
- (open-network-stream
- name buffer host service
- :type gw-method
- ;; Use non-blocking socket if we can.
- :nowait (and (featurep 'make-network-process)
- (url-asynchronous url-current-object)
- '(:nowait t))))
- ('socks
- (socks-open-network-stream name buffer host service))
- ('telnet
- (url-open-telnet name buffer host service))
- ('rlogin
- (unless url-gw-rlogin-obsolete-warned-once
- (lwarn 'url :error "Setting `url-gateway-method' to `rlogin' is obsolete")
- (setq url-gw-rlogin-obsolete-warned-once t))
- (with-suppressed-warnings ((obsolete url-open-rlogin))
- (url-open-rlogin name buffer host service)))
- (_
- (error "Bad setting of url-gateway-method: %s"
- url-gateway-method))))))
+ ;; This is a clean way to ensure the new process inherits the
+ ;; right coding systems in both Emacs and XEmacs.
+ (let ((coding-system-for-read 'binary)
+ (coding-system-for-write 'binary))
+ (setq conn (pcase gw-method
+ ((or 'tls 'ssl 'native)
+ (if (eq gw-method 'native)
+ (setq gw-method 'plain))
+ (open-network-stream
+ name buffer host service
+ :type gw-method
+ ;; Use non-blocking socket if we can.
+ :nowait (and (featurep 'make-network-process)
+ (url-asynchronous url-current-object)
+ '(:nowait t))))
+ ('socks
+ (socks-open-network-stream name buffer host service))
+ ('telnet
+ (url-open-telnet name buffer host service))
+ ('rlogin
+ (unless url-gw-rlogin-obsolete-warned-once
+ (lwarn 'url :error "Setting `url-gateway-method' to `rlogin' is obsolete")
+ (setq url-gw-rlogin-obsolete-warned-once t))
+ (with-suppressed-warnings ((obsolete url-open-rlogin))
+ (url-open-rlogin name buffer host service)))
+ (_
+ (error "Bad setting of url-gateway-method: %s"
+ url-gateway-method)))))
conn)))
(provide 'url-gw)
diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el
index 24e64e99c9f..04d6d9681ff 100644
--- a/lisp/url/url-mailto.el
+++ b/lisp/url/url-mailto.el
@@ -120,11 +120,11 @@
(url-mail-goto-field nil)
(url-mail-goto-field "subject")))
(if url-request-extra-headers
- (mapconcat
+ (mapc
(lambda (x)
(url-mail-goto-field (car x))
(insert (cdr x)))
- url-request-extra-headers ""))
+ url-request-extra-headers))
(goto-char (point-max))
(insert url-request-data)
;; It seems Microsoft-ish to send without warning.
diff --git a/lisp/use-package/bind-key.el b/lisp/use-package/bind-key.el
index 0ab72eafce2..b216c668d83 100644
--- a/lisp/use-package/bind-key.el
+++ b/lisp/use-package/bind-key.el
@@ -447,7 +447,7 @@ This binds keys in such a way that bindings are not overridden by
other modes. See `override-global-mode'."
(macroexp-progn (bind-keys-form args 'override-global-map)))
-(defun get-binding-description (elem)
+(defun bind-key--get-binding-description (elem)
(cond
((listp elem)
(cond
@@ -474,7 +474,7 @@ other modes. See `override-global-mode'."
(t
"#<byte-compiled lambda>")))
-(defun compare-keybindings (l r)
+(defun bind-key--compare-keybindings (l r)
(let* ((regex bind-key-segregation-regexp)
(lgroup (and (string-match regex (caar l))
(match-string 0 (caar l))))
@@ -517,7 +517,7 @@ other modes. See `override-global-mode'."
(setq personal-keybindings
(sort personal-keybindings
(lambda (l r)
- (car (compare-keybindings l r))))))
+ (car (bind-key--compare-keybindings l r))))))
(if (not (eq (cdar last-binding) (cdar binding)))
(princ (format "\n\n%s: %s\n%s\n\n"
@@ -525,7 +525,7 @@ other modes. See `override-global-mode'."
(make-string (+ 21 (car bind-key-column-widths)
(cdr bind-key-column-widths)) ?-)))
(if (and last-binding
- (cdr (compare-keybindings last-binding binding)))
+ (cdr (bind-key--compare-keybindings last-binding binding)))
(princ "\n")))
(let* ((key-name (caar binding))
@@ -534,10 +534,10 @@ other modes. See `override-global-mode'."
(read-kbd-macro key-name)))
(command (nth 1 binding))
(was-command (nth 2 binding))
- (command-desc (get-binding-description command))
+ (command-desc (bind-key--get-binding-description command))
(was-command-desc (and was-command
- (get-binding-description was-command)))
- (at-present-desc (get-binding-description at-present)))
+ (bind-key--get-binding-description was-command)))
+ (at-present-desc (bind-key--get-binding-description at-present)))
(let ((line
(format
(format "%%-%ds%%-%ds%%s\n" (car bind-key-column-widths)
@@ -555,6 +555,11 @@ other modes. See `override-global-mode'."
(setq last-binding binding)))))
+(define-obsolete-function-alias 'get-binding-description
+ 'bind-key--get-binding-description "30.1")
+(define-obsolete-function-alias 'compare-keybindings
+ 'bind-key--compare-keybindings "30.1")
+
(provide 'bind-key)
;; Local Variables:
diff --git a/lisp/userlock.el b/lisp/userlock.el
index 61f061d3e54..562bc0a0a9f 100644
--- a/lisp/userlock.el
+++ b/lisp/userlock.el
@@ -206,11 +206,12 @@ file, then make the change again."))
;;;###autoload
(defun userlock--handle-unlock-error (error)
"Report an ERROR that occurred while unlocking a file."
- (display-warning
- '(unlock-file)
- ;; There is no need to explain that this is an unlock error because
- ;; ERROR is a `file-error' condition, which explains this.
- (message "%s, ignored" (error-message-string error))
- :warning))
+ (when create-lockfiles
+ (display-warning
+ '(unlock-file)
+ ;; There is no need to explain that this is an unlock error because
+ ;; ERROR is a `file-error' condition, which explains this.
+ (message "%s, ignored" (error-message-string error))
+ :warning)))
;;; userlock.el ends here
diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el
index eb01dede56e..d776375d681 100644
--- a/lisp/vc/diff-mode.el
+++ b/lisp/vc/diff-mode.el
@@ -153,6 +153,17 @@ and hunk-based syntax highlighting otherwise as a fallback."
:type (get 'whitespace-style 'custom-type)
:version "29.1")
+(defcustom diff-ignore-whitespace-switches "-b"
+ "Switch or list of diff switches to use when ignoring whitespace.
+The default \"-b\" means to ignore whitespace-only changes,
+\"-w\" means ignore all whitespace changes."
+ :type '(choice
+ (string :tag "Ignore whitespace-only changes" :value "-b")
+ (string :tag "Ignore all whitespace changes" :value "-w")
+ (string :tag "Single switch")
+ (repeat :tag "Multiple switches" (string :tag "Switch")))
+ :version "30.1")
+
(defvar diff-vc-backend nil
"The VC backend that created the current Diff buffer, if any.")
@@ -2103,10 +2114,13 @@ For use in `add-log-current-defun-function'."
(goto-char (+ (car pos) (cdr src)))
(add-log-current-defun)))))))
-(defun diff-ignore-whitespace-hunk ()
- "Re-diff the current hunk, ignoring whitespace differences."
- (interactive)
- (diff-refresh-hunk t))
+(defun diff-ignore-whitespace-hunk (&optional whole-buffer)
+ "Re-diff the current hunk, ignoring whitespace differences.
+With non-nil prefix arg, re-diff all the hunks."
+ (interactive "P")
+ (if whole-buffer
+ (diff--ignore-whitespace-all-hunks)
+ (diff-refresh-hunk t)))
(defun diff-refresh-hunk (&optional ignore-whitespace)
"Re-diff the current hunk."
@@ -2127,7 +2141,7 @@ For use in `add-log-current-defun-function'."
(coding-system-for-read buffer-file-coding-system)
opts old new)
(when ignore-whitespace
- (setq opts '("-b")))
+ (setq opts (ensure-list diff-ignore-whitespace-switches)))
(when opt-type
(setq opts (cons opt-type opts)))
@@ -2299,6 +2313,16 @@ Call FUN with two args (BEG and END) for each hunk."
(or (ignore-errors (diff-hunk-next) (point))
max)))))))))
+;; This doesn't use `diff--iterate-hunks', since that assumes that
+;; hunks don't change size.
+(defun diff--ignore-whitespace-all-hunks ()
+ "Re-diff all the hunks, ignoring whitespace-differences."
+ (save-excursion
+ (goto-char (point-min))
+ (diff-hunk-next)
+ (while (looking-at diff-hunk-header-re)
+ (diff-refresh-hunk t))))
+
(defun diff--font-lock-refined (max)
"Apply hunk refinement from font-lock."
(when (eq diff-refine 'font-lock)
diff --git a/lisp/vc/emerge.el b/lisp/vc/emerge.el
index de09be80e7c..e95742b304a 100644
--- a/lisp/vc/emerge.el
+++ b/lisp/vc/emerge.el
@@ -1299,7 +1299,7 @@ Otherwise, the A or B file present is copied to the output file."
(setq ancestor-dir-files (cdr ancestor-dir-files))))
(if output-dir
(insert "output=" output-dir f "\t"))
- (backward-delete-char 1)
+ (delete-char -1)
(insert "\n")))))
;;; Common setup routines
diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 7ae763d2ee4..a3469b71386 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -136,12 +136,19 @@ If nil, use the value of `vc-annotate-switches'. If t, use no switches."
;;;###autoload(put 'vc-git-annotate-switches 'safe-local-variable (lambda (switches) (equal switches "-w")))
(defcustom vc-git-log-switches nil
- "String or list of strings specifying switches for Git log under VC."
+ "String or list of strings giving Git log switches for non-shortlogs."
:type '(choice (const :tag "None" nil)
(string :tag "Argument String")
(repeat :tag "Argument List" :value ("") string))
:version "28.1")
+(defcustom vc-git-shortlog-switches nil
+ "String or list of strings giving Git log switches for shortlogs."
+ :type '(choice (const :tag "None" nil)
+ (string :tag "Argument String")
+ (repeat :tag "Argument List" :value ("") string))
+ :version "30.1")
+
(defcustom vc-git-resolve-conflicts t
"When non-nil, mark conflicted file as resolved upon saving.
That is performed after all conflict markers in it have been
@@ -308,6 +315,23 @@ Good example of file name that needs this: \"test[56].xx\".")
(string-trim-right (match-string 1 version-string) "\\.")
"0")))))
+(defun vc-git--git-path (&optional path)
+ "Resolve .git/PATH for the current working tree.
+In particular, handle the case where this is a linked working
+tree, such that .git is a plain file.
+
+See the --git-dir and --git-path options to git-rev-parse(1)."
+ (if (and path (not (string-empty-p path)))
+ ;; Canonicalize in this branch because --git-dir always returns
+ ;; an absolute file name.
+ (expand-file-name
+ (string-trim-right
+ (vc-git--run-command-string nil "rev-parse"
+ "--git-path" path)))
+ (concat (string-trim-right
+ (vc-git--run-command-string nil "rev-parse" "--git-dir"))
+ "/")))
+
(defun vc-git--git-status-to-vc-state (code-list)
"Convert CODE-LIST to a VC status.
@@ -752,12 +776,32 @@ or an empty string if none."
:help "Show the contents of the current stash"))
map))
+(defun vc-git--cmds-in-progress ()
+ "Return a list of Git commands in progress in this worktree."
+ (let ((gitdir (vc-git--git-path))
+ cmds)
+ ;; See contrib/completion/git-prompt.sh in git.git.
+ (when (or (file-directory-p
+ (expand-file-name "rebase-merge" gitdir))
+ (file-exists-p
+ (expand-file-name "rebase-apply/rebasing" gitdir)))
+ (push 'rebase cmds))
+ (when (file-exists-p
+ (expand-file-name "rebase-apply/applying" gitdir))
+ (push 'am cmds))
+ (when (file-exists-p (expand-file-name "MERGE_HEAD" gitdir))
+ (push 'merge cmds))
+ (when (file-exists-p (expand-file-name "BISECT_START" gitdir))
+ (push 'bisect cmds))
+ cmds))
+
(defun vc-git-dir-extra-headers (dir)
(let ((str (with-output-to-string
(with-current-buffer standard-output
(vc-git--out-ok "symbolic-ref" "HEAD"))))
(stash-list (vc-git-stash-list))
(default-directory dir)
+ (in-progress (vc-git--cmds-in-progress))
branch remote remote-url stash-button stash-string)
(if (string-match "^\\(refs/heads/\\)?\\(.+\\)$" str)
@@ -832,9 +876,9 @@ or an empty string if none."
(propertize remote-url
'face 'vc-dir-header-value)))
;; For now just a heading, key bindings can be added later for various bisect actions
- (when (file-exists-p (expand-file-name ".git/BISECT_START" (vc-git-root dir)))
+ (when (memq 'bisect in-progress)
(propertize "\nBisect : in progress" 'face 'vc-dir-status-warning))
- (when (file-exists-p (expand-file-name ".git/rebase-apply" (vc-git-root dir)))
+ (when (memq 'rebase in-progress)
(propertize "\nRebase : in progress" 'face 'vc-dir-status-warning))
(if stash-list
(concat
@@ -1015,13 +1059,26 @@ It is based on `log-edit-mode', and has Git-specific extensions."
;; message. Handle also remote files.
(if (eq system-type 'windows-nt)
(let ((default-directory (file-name-directory file1)))
- (make-nearby-temp-file "git-msg")))))
+ (make-nearby-temp-file "git-msg"))))
+ to-stash)
(when vc-git-patch-string
(unless (zerop (vc-git-command nil t nil "diff" "--cached" "--quiet"))
- ;; Check that all staged changes also exist in the patch.
- ;; This is needed to allow adding/removing files that are
- ;; currently staged to the index. So remove the whole file diff
- ;; from the patch because commit will take it from the index.
+ ;; Check that what's already staged is compatible with what
+ ;; we want to commit (bug#60126).
+ ;;
+ ;; 1. If the changes to a file in the index are identical to
+ ;; the changes to that file we want to commit, remove the
+ ;; changes from our patch, and let the commit take them
+ ;; from the index. This is necessary for adding and
+ ;; removing files to work.
+ ;;
+ ;; 2. If the changes to a file in the index are different to
+ ;; changes to that file we want to commit, then we have to
+ ;; unstage the changes or abort.
+ ;;
+ ;; 3. If there are changes to a file in the index but we don't
+ ;; want to commit any changes to that file, we need to
+ ;; stash those changes before committing.
(with-temp-buffer
;; If the user has switches like -D, -M etc. in their
;; `vc-git-diff-switches', we must pass them here too, or
@@ -1032,23 +1089,35 @@ It is based on `log-edit-mode', and has Git-specific extensions."
;; Following code doesn't understand plain diff(1) output.
(user-error "Cannot commit patch with nil `vc-git-diff-switches'"))
(goto-char (point-min))
- (let ((pos (point)) file-diff file-beg)
+ (let ((pos (point)) file-name file-header file-diff file-beg)
(while (not (eobp))
+ (when (and (looking-at "^diff --git a/\\(.+\\) b/\\(.+\\)")
+ (string= (match-string 1) (match-string 2)))
+ (setq file-name (match-string 1)))
(forward-line 1) ; skip current "diff --git" line
+ (setq file-header (buffer-substring pos (point)))
(search-forward "diff --git" nil 'move)
(move-beginning-of-line 1)
(setq file-diff (buffer-substring pos (point)))
- (if (and (setq file-beg (string-search
- file-diff vc-git-patch-string))
- ;; Check that file diff ends with an empty string
- ;; or the beginning of the next file diff.
- (string-match-p "\\`\\'\\|\\`diff --git"
- (substring
- vc-git-patch-string
- (+ file-beg (length file-diff)))))
- (setq vc-git-patch-string
- (string-replace file-diff "" vc-git-patch-string))
- (user-error "Index not empty"))
+ (cond ((and (setq file-beg (string-search
+ file-diff vc-git-patch-string))
+ ;; Check that file diff ends with an empty string
+ ;; or the beginning of the next file diff.
+ (string-match-p "\\`\\'\\|\\`diff --git"
+ (substring
+ vc-git-patch-string
+ (+ file-beg (length file-diff)))))
+ (setq vc-git-patch-string
+ (string-replace file-diff "" vc-git-patch-string)))
+ ((string-match (format "^%s" (regexp-quote file-header))
+ vc-git-patch-string)
+ (if (and file-name
+ (yes-or-no-p
+ (format "Unstage already-staged changes to %s?"
+ file-name)))
+ (vc-git-command nil 0 file-name "reset" "-q" "--")
+ (user-error "Index not empty")))
+ (t (push file-name to-stash)))
(setq pos (point))))))
(unless (string-empty-p vc-git-patch-string)
(let ((patch-file (make-nearby-temp-file "git-patch")))
@@ -1056,7 +1125,8 @@ It is based on `log-edit-mode', and has Git-specific extensions."
(insert vc-git-patch-string))
(unwind-protect
(vc-git-command nil 0 patch-file "apply" "--cached")
- (delete-file patch-file)))))
+ (delete-file patch-file))))
+ (when to-stash (vc-git--stash-staged-changes files)))
(cl-flet ((boolean-arg-fn
(argument)
(lambda (value) (when (equal value "yes") (list argument)))))
@@ -1082,7 +1152,58 @@ It is based on `log-edit-mode', and has Git-specific extensions."
args)
(unless vc-git-patch-string
(if only (list "--only" "--") '("-a"))))))
- (if (and msg-file (file-exists-p msg-file)) (delete-file msg-file))))
+ (if (and msg-file (file-exists-p msg-file)) (delete-file msg-file))
+ (when to-stash
+ (let ((cached (make-nearby-temp-file "git-cached")))
+ (unwind-protect
+ (progn (with-temp-file cached
+ (vc-git-command t 0 nil "stash" "show" "-p"))
+ (vc-git-command nil 0 cached "apply" "--cached"))
+ (delete-file cached))
+ (vc-git-command nil 0 nil "stash" "drop")))))
+
+(defun vc-git--stash-staged-changes (files)
+ "Stash only the staged changes to FILES."
+ ;; This is necessary because even if you pass a list of file names
+ ;; to 'git stash push', it will stash any and all staged changes.
+ (unless (zerop
+ (vc-git-command nil t files "diff" "--cached" "--quiet"))
+ (cl-flet
+ ((git-string (&rest args)
+ (string-trim-right
+ (with-output-to-string
+ (apply #'vc-git-command standard-output 0 nil args)))))
+ (let ((cached (make-nearby-temp-file "git-cached"))
+ (message "Previously staged changes")
+ tree)
+ ;; Use a temporary index to create a tree object corresponding
+ ;; to the staged changes to FILES.
+ (unwind-protect
+ (progn
+ (with-temp-file cached
+ (vc-git-command t 0 files "diff" "--cached" "--"))
+ (let* ((index (make-nearby-temp-file "git-index"))
+ (process-environment
+ (cons (format "GIT_INDEX_FILE=%s" index)
+ process-environment)))
+ (unwind-protect
+ (progn
+ (vc-git-command nil 0 nil "read-tree" "HEAD")
+ (vc-git-command nil 0 cached "apply" "--cached")
+ (setq tree (git-string "write-tree")))
+ (delete-file index))))
+ (delete-file cached))
+ ;; Prepare stash commit object, which has a special structure.
+ (let* ((tree-commit (git-string "commit-tree" "-m" message
+ "-p" "HEAD" tree))
+ (stash-commit (git-string "commit-tree" "-m" message
+ "-p" "HEAD" "-p" tree-commit
+ tree)))
+ ;; Push the new stash entry.
+ (vc-git-command nil 0 nil "update-ref" "--create-reflog"
+ "-m" message "refs/stash" stash-commit)
+ ;; Unstage the changes we've now stashed.
+ (vc-git-command nil 0 files "reset" "--"))))))
(defun vc-git-find-revision (file rev buffer)
(let* (process-file-side-effects
@@ -1193,8 +1314,7 @@ This prompts for a branch to merge from."
(completing-read "Merge from branch: "
(if (or (member "FETCH_HEAD" branches)
(not (file-readable-p
- (expand-file-name ".git/FETCH_HEAD"
- root))))
+ (vc-git--git-path "FETCH_HEAD"))))
branches
(cons "FETCH_HEAD" branches))
nil t)))
@@ -1239,8 +1359,7 @@ This prompts for a branch to merge from."
(unless (or
(not (eq vc-git-resolve-conflicts 'unstage-maybe))
;; Doing a merge, so bug#20292 doesn't apply.
- (file-exists-p (expand-file-name ".git/MERGE_HEAD"
- (vc-git-root buffer-file-name)))
+ (file-exists-p (vc-git--git-path "MERGE_HEAD"))
(vc-git-conflicted-files (vc-git-root buffer-file-name)))
(vc-git-command nil 0 nil "reset"))
(vc-resynch-buffer buffer-file-name t t)
@@ -1315,7 +1434,8 @@ If LIMIT is a revision string, use it as an end-revision."
,(format "--pretty=tformat:%s"
(car vc-git-root-log-format))
"--abbrev-commit"))
- (ensure-list vc-git-log-switches)
+ (ensure-list
+ (if shortlog vc-git-shortlog-switches vc-git-log-switches))
(when (numberp limit)
(list "-n" (format "%s" limit)))
(when start-revision
@@ -1330,16 +1450,16 @@ If LIMIT is a revision string, use it as an end-revision."
(defun vc-git-log-outgoing (buffer remote-location)
(vc-setup-buffer buffer)
- (vc-git-command
- buffer 'async nil
- "log"
- "--no-color" "--graph" "--decorate" "--date=short"
- (format "--pretty=tformat:%s" (car vc-git-root-log-format))
- "--abbrev-commit"
- (concat (if (string= remote-location "")
- "@{upstream}"
- remote-location)
- "..HEAD")))
+ (apply #'vc-git-command buffer 'async nil
+ `("log"
+ "--no-color" "--graph" "--decorate" "--date=short"
+ ,(format "--pretty=tformat:%s" (car vc-git-root-log-format))
+ "--abbrev-commit"
+ ,@(ensure-list vc-git-shortlog-switches)
+ ,(concat (if (string= remote-location "")
+ "@{upstream}"
+ remote-location)
+ "..HEAD"))))
(defun vc-git-log-incoming (buffer remote-location)
(vc-setup-buffer buffer)
@@ -1349,15 +1469,15 @@ If LIMIT is a revision string, use it as an end-revision."
;; so remove everything except a repository name.
(replace-regexp-in-string
"/.*" "" remote-location)))
- (vc-git-command
- buffer 'async nil
- "log"
- "--no-color" "--graph" "--decorate" "--date=short"
- (format "--pretty=tformat:%s" (car vc-git-root-log-format))
- "--abbrev-commit"
- (concat "HEAD.." (if (string= remote-location "")
- "@{upstream}"
- remote-location))))
+ (apply #'vc-git-command buffer 'async nil
+ `("log"
+ "--no-color" "--graph" "--decorate" "--date=short"
+ ,(format "--pretty=tformat:%s" (car vc-git-root-log-format))
+ "--abbrev-commit"
+ ,@(ensure-list vc-git-shortlog-switches)
+ ,(concat "HEAD.." (if (string= remote-location "")
+ "@{upstream}"
+ remote-location)))))
(defun vc-git-log-search (buffer pattern)
"Search the log of changes for PATTERN and output results into BUFFER.
@@ -1368,6 +1488,7 @@ Display all entries that match log messages in long format.
With a prefix argument, ask for a command to run that will output
log entries."
(let ((args `("log" "--no-color" "-i"
+ ,@(ensure-list vc-git-log-switches)
,(format "--grep=%s" (or pattern "")))))
(when current-prefix-arg
(setq args (cdr (split-string
@@ -1415,11 +1536,11 @@ log entries."
`((,log-view-message-re (1 'change-log-acknowledgment)))
;; Handle the case:
;; user: foo@bar
- '(("^Author:[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)"
+ '(("^\\(?:Author\\|Commit\\):[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)"
(1 'change-log-email))
;; Handle the case:
;; user: FirstName LastName <foo@bar>
- ("^Author:[ \t]+\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]"
+ ("^\\(?:Author\\|Commit\\):[ \t]+\\([^<(]+?\\)[ \t]*[(<]\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)[>)]"
(1 'change-log-name)
(2 'change-log-email))
("^ +\\(?:\\(?:[Aa]cked\\|[Ss]igned-[Oo]ff\\)-[Bb]y:\\)[ \t]+\\([A-Za-z0-9_.+-]+@[A-Za-z0-9_.-]+\\)"
@@ -1430,7 +1551,7 @@ log entries."
("^Merge: \\([0-9a-z]+\\) \\([0-9a-z]+\\)"
(1 'change-log-acknowledgment)
(2 'change-log-acknowledgment))
- ("^\\(?:Date: \\|AuthorDate: \\)\\(.+\\)" (1 'change-log-date))
+ ("^\\(?:Date: \\|AuthorDate: \\|CommitDate: \\)\\(.+\\)" (1 'change-log-date))
("^summary:[ \t]+\\(.+\\)" (1 'log-view-message)))))))
@@ -1452,7 +1573,11 @@ or BRANCH^ (where \"^\" can be repeated)."
(defun vc-git-expanded-log-entry (revision)
(with-temp-buffer
- (apply #'vc-git-command t nil nil (list "log" revision "-1" "--no-color" "--"))
+ (apply #'vc-git-command t nil nil
+ `("log"
+ ,revision
+ "-1" "--no-color" ,@(ensure-list vc-git-log-switches)
+ "--"))
(goto-char (point-min))
(unless (eobp)
;; Indent the expanded log entry.
@@ -1651,7 +1776,8 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"."
(if branchp "branch" "tag"))))
(if branchp
(vc-git-command nil 0 nil "checkout" "-b" name
- (when (and start-point (not (eq start-point "")))
+ (when (and start-point
+ (not (equal start-point "")))
start-point))
(vc-git-command nil 0 nil "tag" name)))))
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 0e3519e2e5c..90905edb887 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -3403,7 +3403,7 @@ If nil, no default will be used. This option may be set locally."
(declare-function message--name-table "message" (orig-string))
(declare-function mml-attach-buffer "mml"
- (buffer &optional type description disposition))
+ (buffer &optional type description disposition filename))
(declare-function log-view-get-marked "log-view" ())
(defun vc-default-prepare-patch (_backend rev)
@@ -3444,6 +3444,19 @@ of the current file."
(and-let* ((file (buffer-file-name)))
(vc-working-revision file)))))
+(defun vc--subject-to-file-name (subject)
+ "Generate a file name for a patch with subject line SUBJECT."
+ (let* ((stripped
+ (replace-regexp-in-string "\\`\\[.*PATCH.*\\]\\s-*" ""
+ subject))
+ (truncated (if (length> stripped 50)
+ (substring stripped 0 50)
+ stripped)))
+ (concat
+ (string-trim (replace-regexp-in-string "\\W" "-" truncated)
+ "-+" "-+")
+ ".patch")))
+
;;;###autoload
(defun vc-prepare-patch (addressee subject revisions)
"Compose an Email sending patches for REVISIONS to ADDRESSEE.
@@ -3454,7 +3467,7 @@ revision, with SUBJECT derived from each revision subject.
When invoked with a numerical prefix argument, use the last N
revisions.
When invoked interactively in a Log View buffer with
-marked revisions, use those these."
+marked revisions, use those."
(interactive
(let ((revs (vc-prepare-patch-prompt-revisions)) to)
(require 'message)
@@ -3500,11 +3513,17 @@ marked revisions, use those these."
(rfc822-goto-eoh)
(forward-line)
(save-excursion
- (dolist (patch patches)
- (mml-attach-buffer (buffer-name (plist-get patch :buffer))
- "text/x-patch"
- (plist-get patch :subject)
- "attachment")))
+ (let ((i 0))
+ (dolist (patch patches)
+ (let* ((patch-subject (plist-get patch :subject))
+ (filename
+ (vc--subject-to-file-name patch-subject)))
+ (mml-attach-buffer
+ (buffer-name (plist-get patch :buffer))
+ "text/x-patch"
+ patch-subject
+ "attachment"
+ (format "%04d-%s" (cl-incf i) filename))))))
(open-line 2)))))
(defun vc-default-responsible-p (_backend _file)
@@ -3645,7 +3664,7 @@ it indicates a specific revision to check out."
"Default `last-change' implementation.
It returns the last revision that changed LINE number in FILE."
(unless (file-exists-p file)
- (signal 'file-error "File doesn't exist"))
+ (signal 'file-error '("File doesn't exist")))
(with-temp-buffer
(vc-call-backend (vc-backend file) 'annotate-command
file (current-buffer))
diff --git a/lisp/whitespace.el b/lisp/whitespace.el
index 9995706a5da..86fc179396e 100644
--- a/lisp/whitespace.el
+++ b/lisp/whitespace.el
@@ -1014,34 +1014,11 @@ See also `whitespace-newline' and `whitespace-display-mappings'."
;;;###autoload
-(define-minor-mode global-whitespace-mode
- "Toggle whitespace visualization globally (Global Whitespace mode).
-
-See also `whitespace-style', `whitespace-newline' and
-`whitespace-display-mappings'."
- :lighter " WS"
+(define-globalized-minor-mode global-whitespace-mode
+ whitespace-mode
+ whitespace-turn-on-if-enabled
:init-value nil
- :global t
- :group 'whitespace
- (cond
- (noninteractive ; running a batch job
- (setq global-whitespace-mode nil))
- (global-whitespace-mode ; global-whitespace-mode on
- (save-current-buffer
- (add-hook 'find-file-hook 'whitespace-turn-on-if-enabled)
- (add-hook 'after-change-major-mode-hook 'whitespace-turn-on-if-enabled)
- (dolist (buffer (buffer-list)) ; adjust all local mode
- (set-buffer buffer)
- (unless whitespace-mode
- (whitespace-turn-on-if-enabled)))))
- (t ; global-whitespace-mode off
- (save-current-buffer
- (remove-hook 'find-file-hook 'whitespace-turn-on-if-enabled)
- (remove-hook 'after-change-major-mode-hook 'whitespace-turn-on-if-enabled)
- (dolist (buffer (buffer-list)) ; adjust all local mode
- (set-buffer buffer)
- (unless whitespace-mode
- (whitespace-turn-off)))))))
+ :group 'whitespace)
(defvar whitespace-enable-predicate
(lambda ()
@@ -1067,7 +1044,7 @@ This variable is normally modified via `add-function'.")
(defun whitespace-turn-on-if-enabled ()
(when (funcall whitespace-enable-predicate)
- (whitespace-turn-on)))
+ (whitespace-mode)))
;;;###autoload
(define-minor-mode global-whitespace-newline-mode
@@ -2511,7 +2488,7 @@ purposes)."
(setq whitespace-display-table-was-local t)
;; Save the old table so we can restore it when
;; `whitespace-mode' is switched off again.
- (when (or whitespace-mode global-whitespace-mode)
+ (when whitespace-mode
(setq whitespace-display-table
(copy-sequence buffer-display-table)))
;; Assure `buffer-display-table' is unique
diff --git a/lisp/window.el b/lisp/window.el
index 016d53ffbdd..aa7520f30fa 100644
--- a/lisp/window.el
+++ b/lisp/window.el
@@ -2510,6 +2510,7 @@ have special meanings:
Any other value of ALL-FRAMES means consider all windows on the
selected frame and no others."
+ (declare (side-effect-free error-free))
(let ((windows (window-list-1 nil 'nomini all-frames))
best-window best-time second-best-window second-best-time time)
(dolist (window windows)
@@ -2588,6 +2589,7 @@ have special meanings:
Any other value of ALL-FRAMES means consider all windows on the
selected frame and no others."
+ (declare (side-effect-free error-free))
(let ((best-size 0)
best-window size)
(dolist (window (window-list-1 nil 'nomini all-frames))
@@ -3786,6 +3788,7 @@ frame, rounded if necessary. PIXELWISE non-nil means to return
the coordinates in pixels where the values for RIGHT and BOTTOM
are one more than the actual value of these edges. Note that if
ABSOLUTE is non-nil, PIXELWISE is implicitly non-nil too."
+ (declare (side-effect-free t))
(let* ((window (window-normalize-window window body))
(frame (window-frame window))
(border-width (frame-internal-border-width frame))
@@ -3841,6 +3844,7 @@ ABSOLUTE is non-nil, PIXELWISE is implicitly non-nil too."
"Return a list of the edge coordinates of WINDOW's body.
The return value is that of `window-edges' called with argument
BODY non-nil."
+ (declare (side-effect-free t))
(window-edges window t))
(defalias 'window-inside-edges 'window-body-edges)
@@ -3848,12 +3852,14 @@ BODY non-nil."
"Return a list of the edge pixel coordinates of WINDOW.
The return value is that of `window-edges' called with argument
PIXELWISE non-nil."
+ (declare (side-effect-free t))
(window-edges window nil nil t))
(defun window-body-pixel-edges (&optional window)
"Return a list of the edge pixel coordinates of WINDOW's body.
The return value is that of `window-edges' called with arguments
BODY and PIXELWISE non-nil."
+ (declare (side-effect-free t))
(window-edges window t nil t))
(defalias 'window-inside-pixel-edges 'window-body-pixel-edges)
@@ -3861,12 +3867,14 @@ BODY and PIXELWISE non-nil."
"Return a list of the edge pixel coordinates of WINDOW.
The return value is that of `window-edges' called with argument
ABSOLUTE non-nil."
+ (declare (side-effect-free t))
(window-edges window nil t t))
(defun window-absolute-body-pixel-edges (&optional window)
"Return a list of the edge pixel coordinates of WINDOW's text area.
The return value is that of `window-edges' called with arguments
BODY and ABSOLUTE non-nil."
+ (declare (side-effect-free t))
(window-edges window t t t))
(defalias 'window-inside-absolute-pixel-edges 'window-absolute-body-pixel-edges)
@@ -4076,6 +4084,7 @@ with a special meaning are:
Anything else means consider all windows on the selected frame
and no others."
+ (declare (side-effect-free error-free))
(let ((base-window (selected-window)))
(if (and nomini (eq base-window (minibuffer-window)))
(setq base-window (next-window base-window)))
diff --git a/lisp/woman.el b/lisp/woman.el
index 92cd425d32f..24f23c8e8f0 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -1690,11 +1690,11 @@ Do not call directly!"
(progn
(goto-char (point-min))
(while (search-forward "__\b\b" nil t)
- (backward-delete-char 4)
+ (delete-char -4)
(woman-set-face (point) (1+ (point)) 'woman-italic))
(goto-char (point-min))
(while (search-forward "\b\b__" nil t)
- (backward-delete-char 4)
+ (delete-char -4)
(woman-set-face (1- (point)) (point) 'woman-italic))))
;; Interpret overprinting to indicate bold face:
diff --git a/m4/acl.m4 b/m4/acl.m4
index 98362858ce5..dc9853a156d 100644
--- a/m4/acl.m4
+++ b/m4/acl.m4
@@ -1,5 +1,5 @@
# acl.m4 - check for access control list (ACL) primitives
-# serial 24
+# serial 27
# Copyright (C) 2002, 2004-2023 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
@@ -17,7 +17,7 @@ AC_DEFUN([gl_FUNC_ACL_ARG],
])
-AC_DEFUN([gl_FUNC_ACL],
+AC_DEFUN_ONCE([gl_FUNC_ACL],
[
AC_REQUIRE([gl_FUNC_ACL_ARG])
AC_CHECK_FUNCS_ONCE([fchmod])
@@ -139,7 +139,9 @@ int type = ACL_TYPE_EXTENDED;]])],
AC_MSG_WARN([AC_PACKAGE_NAME will be built without ACL support.])
fi
fi
- test -n "$gl_need_lib_has_acl" && LIB_HAS_ACL=$LIB_ACL
+ if test -n "$gl_need_lib_has_acl"; then
+ FILE_HAS_ACL_LIB=$LIB_ACL
+ fi
AC_SUBST([LIB_ACL])
AC_DEFINE_UNQUOTED([USE_ACL], [$use_acl],
[Define to nonzero if you want access control list support.])
@@ -197,15 +199,15 @@ AC_DEFUN([gl_FILE_HAS_ACL],
[gl_cv_getxattr_with_posix_acls=yes])])
fi
if test "$gl_cv_getxattr_with_posix_acls" = yes; then
- LIB_HAS_ACL=
+ FILE_HAS_ACL_LIB=
AC_DEFINE([GETXATTR_WITH_POSIX_ACLS], 1,
[Define to 1 if getxattr works with XATTR_NAME_POSIX_ACL_ACCESS
and XATTR_NAME_POSIX_ACL_DEFAULT.])
else
dnl Set gl_need_lib_has_acl to a nonempty value, so that any
- dnl later gl_FUNC_ACL call will set LIB_HAS_ACL=$LIB_ACL.
+ dnl later gl_FUNC_ACL call will set FILE_HAS_ACL_LIB=$LIB_ACL.
gl_need_lib_has_acl=1
- LIB_HAS_ACL=$LIB_ACL
+ FILE_HAS_ACL_LIB=$LIB_ACL
fi
- AC_SUBST([LIB_HAS_ACL])
+ AC_SUBST([FILE_HAS_ACL_LIB])
])
diff --git a/m4/alloca.m4 b/m4/alloca.m4
index 75851875910..c685fac918a 100644
--- a/m4/alloca.m4
+++ b/m4/alloca.m4
@@ -1,6 +1,6 @@
# alloca.m4 serial 21
-dnl Copyright (C) 2002-2004, 2006-2007, 2009-2023 Free Software
-dnl Foundation, Inc.
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2023 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/assert_h.m4 b/m4/assert_h.m4
index 6275f633a69..d255855d313 100644
--- a/m4/assert_h.m4
+++ b/m4/assert_h.m4
@@ -18,7 +18,7 @@ AC_DEFUN([gl_ASSERT_H],
[AC_LANG_PROGRAM(
[[#if defined __clang__ && __STDC_VERSION__ < 202311
#pragma clang diagnostic error "-Wc2x-extensions"
- #pragma clang diagnostic error "-Wc++17-extensions"
+ #pragma clang diagnostic error "-Wc++1z-extensions"
#endif
#ifdef INCLUDE_ASSERT_H
#include <assert.h>
@@ -46,10 +46,13 @@ AC_DEFUN([gl_ASSERT_H],
gl_NEXT_HEADERS([assert.h])])
dnl The "zz" puts this toward config.h's end, to avoid potential
- dnl collisions with other definitions. #undef assert so that
- dnl programs are not tempted to use it without specifically
- dnl including assert.h. Break the #undef apart with a comment
- dnl so that 'configure' does not comment it out.
+ dnl collisions with other definitions.
+ dnl #undef assert so that programs are not tempted to use it without
+ dnl specifically including assert.h.
+ dnl #undef __ASSERT_H__ so that on IRIX, when programs later include
+ dnl <assert.h>, this include actually defines assert.
+ dnl Break the #undef_s apart with a comment so that 'configure' does
+ dnl not comment them out.
AH_VERBATIM([zzstatic_assert],
[#if (!defined HAVE_C_STATIC_ASSERT && !defined assert \
&& (!defined __cplusplus \
@@ -57,10 +60,13 @@ AC_DEFUN([gl_ASSERT_H],
&& __GNUG__ < 6 && __clang_major__ < 6)))
#include <assert.h>
#undef/**/assert
+ #ifdef __sgi
+ #undef/**/__ASSERT_H__
+ #endif
/* Solaris 11.4 <assert.h> defines static_assert as a macro with 2 arguments.
We need it also to be invocable with a single argument. */
#if defined __sun && (__STDC_VERSION__ - 0 >= 201112L) && !defined __cplusplus
- #undef static_assert
+ #undef/**/static_assert
#define static_assert _Static_assert
#endif
#endif])
diff --git a/m4/canonicalize.m4 b/m4/canonicalize.m4
index 03cb0aec93f..d319645fd3f 100644
--- a/m4/canonicalize.m4
+++ b/m4/canonicalize.m4
@@ -1,4 +1,4 @@
-# canonicalize.m4 serial 37
+# canonicalize.m4 serial 38
dnl Copyright (C) 2003-2007, 2009-2023 Free Software Foundation, Inc.
@@ -12,7 +12,8 @@ AC_DEFUN([gl_FUNC_CANONICALIZE_FILENAME_MODE],
[
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
- AC_CHECK_FUNCS_ONCE([canonicalize_file_name faccessat])
+ AC_CHECK_FUNCS_ONCE([canonicalize_file_name])
+ gl_CHECK_FUNCS_ANDROID([faccessat], [[#include <unistd.h>]])
AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
AC_REQUIRE([gl_FUNC_REALPATH_WORKS])
if test $ac_cv_func_canonicalize_file_name = no; then
@@ -58,7 +59,8 @@ AC_DEFUN([gl_CANONICALIZE_LGPL_SEPARATE],
[
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK])
- AC_CHECK_FUNCS_ONCE([canonicalize_file_name faccessat])
+ AC_CHECK_FUNCS_ONCE([canonicalize_file_name])
+ gl_CHECK_FUNCS_ANDROID([faccessat], [[#include <unistd.h>]])
dnl On native Windows, we use _getcwd(), regardless whether getcwd() is
dnl available through the linker option '-loldnames'.
diff --git a/m4/clock_time.m4 b/m4/clock_time.m4
index 411e0710e7f..d624a73d35d 100644
--- a/m4/clock_time.m4
+++ b/m4/clock_time.m4
@@ -1,14 +1,14 @@
-# clock_time.m4 serial 11
+# clock_time.m4 serial 12
dnl Copyright (C) 2002-2006, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
# Check for clock_getres, clock_gettime and clock_settime,
-# and set LIB_CLOCK_GETTIME.
+# and set CLOCK_TIME_LIB.
# For a program named, say foo, you should add a line like the following
# in the corresponding Makefile.am file:
-# foo_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME)
+# foo_LDADD = $(LDADD) $(CLOCK_TIME_LIB)
AC_DEFUN([gl_CLOCK_TIME],
[
@@ -21,12 +21,15 @@ AC_DEFUN([gl_CLOCK_TIME],
# Save and restore LIBS so e.g., -lrt, isn't added to it. Otherwise, *all*
# programs in the package would end up linked with that potentially-shared
# library, inducing unnecessary run-time overhead.
- LIB_CLOCK_GETTIME=
- AC_SUBST([LIB_CLOCK_GETTIME])
+ CLOCK_TIME_LIB=
+ AC_SUBST([CLOCK_TIME_LIB])
gl_saved_libs=$LIBS
AC_SEARCH_LIBS([clock_gettime], [rt posix4],
[test "$ac_cv_search_clock_gettime" = "none required" ||
- LIB_CLOCK_GETTIME=$ac_cv_search_clock_gettime])
+ CLOCK_TIME_LIB=$ac_cv_search_clock_gettime])
AC_CHECK_FUNCS([clock_getres clock_gettime clock_settime])
LIBS=$gl_saved_libs
+ # For backward compatibility.
+ LIB_CLOCK_GETTIME="$CLOCK_TIME_LIB"
+ AC_SUBST([LIB_CLOCK_GETTIME])
])
diff --git a/m4/d-type.m4 b/m4/d-type.m4
index 05eb8ac0cfa..3f63bbe78ee 100644
--- a/m4/d-type.m4
+++ b/m4/d-type.m4
@@ -5,8 +5,7 @@ dnl
dnl Check whether struct dirent has a member named d_type.
dnl
-# Copyright (C) 1997, 1999-2004, 2006, 2009-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 1997, 1999-2004, 2006, 2009-2023 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/dup2.m4 b/m4/dup2.m4
index 8a040d4c369..e1cc73e18db 100644
--- a/m4/dup2.m4
+++ b/m4/dup2.m4
@@ -1,6 +1,5 @@
#serial 27
-dnl Copyright (C) 2002, 2005, 2007, 2009-2023 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2002, 2005, 2007, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/euidaccess.m4 b/m4/euidaccess.m4
index 0dc757820ee..7429779c152 100644
--- a/m4/euidaccess.m4
+++ b/m4/euidaccess.m4
@@ -1,4 +1,4 @@
-# euidaccess.m4 serial 15
+# euidaccess.m4 serial 17
dnl Copyright (C) 2002-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -32,7 +32,7 @@ AC_DEFUN([gl_FUNC_EUIDACCESS],
# Prerequisites of lib/euidaccess.c.
AC_DEFUN([gl_PREREQ_EUIDACCESS], [
dnl Prefer POSIX faccessat over non-standard euidaccess.
- AC_CHECK_FUNCS_ONCE([faccessat])
+ gl_CHECK_FUNCS_ANDROID([faccessat], [[#include <unistd.h>]])
dnl Try various other non-standard fallbacks.
AC_CHECK_HEADERS([libgen.h])
AC_FUNC_GETGROUPS
@@ -41,12 +41,15 @@ AC_DEFUN([gl_PREREQ_EUIDACCESS], [
# Save and restore LIBS so -lgen isn't added to it. Otherwise, *all*
# programs in the package would end up linked with that potentially-shared
# library, inducing unnecessary run-time overhead.
- LIB_EACCESS=
- AC_SUBST([LIB_EACCESS])
+ EUIDACCESS_LIBGEN=
+ AC_SUBST([EUIDACCESS_LIBGEN])
gl_saved_libs=$LIBS
AC_SEARCH_LIBS([eaccess], [gen],
[test "$ac_cv_search_eaccess" = "none required" ||
- LIB_EACCESS=$ac_cv_search_eaccess])
+ EUIDACCESS_LIBGEN=$ac_cv_search_eaccess])
AC_CHECK_FUNCS([eaccess])
LIBS=$gl_saved_libs
+ # For backward compatibility.
+ LIB_EACCESS="$EUIDACCESS_LIBGEN"
+ AC_SUBST([LIB_EACCESS])
])
diff --git a/m4/extensions.m4 b/m4/extensions.m4
index 6596e7efc06..5336b8daf7e 100644
--- a/m4/extensions.m4
+++ b/m4/extensions.m4
@@ -1,4 +1,4 @@
-# serial 22 -*- Autoconf -*-
+# serial 23 -*- Autoconf -*-
# Enable extensions on systems that normally disable them.
# Copyright (C) 2003, 2006-2023 Free Software Foundation, Inc.
@@ -31,7 +31,7 @@ m4_ifndef([AC_CHECK_INCLUDES_DEFAULT],
# its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS
# invocation occurs in gl_EARLY, not in gl_INIT.
-m4_version_prereq([2.70.1], [], [
+m4_version_prereq([2.72], [], [
# AC_USE_SYSTEM_EXTENSIONS
# ------------------------
@@ -113,11 +113,15 @@ AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
# undef __STDC_WANT_IEC_60559_DFP_EXT__
#endif
+/* Enable extensions specified by C23 Annex F. */
+#ifndef __STDC_WANT_IEC_60559_EXT__
+# undef __STDC_WANT_IEC_60559_EXT__
+#endif
/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
#endif
-/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+/* Enable extensions specified by C23 Annex H and ISO/IEC TS 18661-3:2015. */
#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
# undef __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
@@ -187,6 +191,7 @@ dnl it should only be defined when necessary.
AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__])
AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__])
AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__])
+ AC_DEFINE([__STDC_WANT_IEC_60559_EXT__])
AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__])
AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__])
AC_DEFINE([__STDC_WANT_LIB_EXT2__])
diff --git a/m4/faccessat.m4 b/m4/faccessat.m4
index 934c1f41546..a858bfee33d 100644
--- a/m4/faccessat.m4
+++ b/m4/faccessat.m4
@@ -1,4 +1,4 @@
-# serial 10
+# serial 12
# See if we need to provide faccessat replacement.
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
@@ -16,9 +16,12 @@ AC_DEFUN([gl_FUNC_FACCESSAT],
dnl Persuade glibc <unistd.h> to declare faccessat().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([faccessat])
+ gl_CHECK_FUNCS_ANDROID([faccessat], [[#include <unistd.h>]])
if test $ac_cv_func_faccessat = no; then
HAVE_FACCESSAT=0
+ case "$gl_cv_onwards_func_faccessat" in
+ future*) REPLACE_FACCESSAT=1 ;;
+ esac
else
case $gl_cv_func_lstat_dereferences_slashed_symlink in
*yes) ;;
diff --git a/m4/fchmodat.m4 b/m4/fchmodat.m4
index 7a3ee863e3c..5356da40bae 100644
--- a/m4/fchmodat.m4
+++ b/m4/fchmodat.m4
@@ -1,4 +1,4 @@
-# fchmodat.m4 serial 7
+# fchmodat.m4 serial 8
dnl Copyright (C) 2004-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -97,6 +97,6 @@ AC_DEFUN([gl_FUNC_FCHMODAT],
# Prerequisites of lib/fchmodat.c.
AC_DEFUN([gl_PREREQ_FCHMODAT],
[
- AC_CHECK_FUNCS_ONCE([readlinkat])
+ gl_CHECK_FUNCS_ANDROID([readlinkat], [[#include <unistd.h>]])
:
])
diff --git a/m4/fdopendir.m4 b/m4/fdopendir.m4
index 2c975397118..dfcc46c03e2 100644
--- a/m4/fdopendir.m4
+++ b/m4/fdopendir.m4
@@ -1,4 +1,4 @@
-# serial 14
+# serial 15
# See if we need to provide fdopendir.
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
@@ -49,12 +49,12 @@ DIR *fdopendir (int);
[gl_cv_func_fdopendir_works=yes],
[gl_cv_func_fdopendir_works=no],
[case "$host_os" in
- # Guess yes on glibc systems.
- *-gnu*) gl_cv_func_fdopendir_works="guessing yes" ;;
- # Guess yes on musl systems.
- *-musl*) gl_cv_func_fdopendir_works="guessing yes" ;;
- # If we don't know, obey --enable-cross-guesses.
- *) gl_cv_func_fdopendir_works="$gl_cross_guess_normal" ;;
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_fdopendir_works="guessing yes" ;;
+ # Guess yes on musl systems.
+ *-musl* | midipix*) gl_cv_func_fdopendir_works="guessing yes" ;;
+ # If we don't know, obey --enable-cross-guesses.
+ *) gl_cv_func_fdopendir_works="$gl_cross_guess_normal" ;;
esac
])])
case "$gl_cv_func_fdopendir_works" in
diff --git a/m4/filemode.m4 b/m4/filemode.m4
index 2fcc69d119b..3cafc5cd1e1 100644
--- a/m4/filemode.m4
+++ b/m4/filemode.m4
@@ -1,6 +1,5 @@
# filemode.m4 serial 9
-dnl Copyright (C) 2002, 2005-2006, 2009-2023 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2002, 2005-2006, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/fsusage.m4 b/m4/fsusage.m4
index aeb3467a272..88f3ca817cb 100644
--- a/m4/fsusage.m4
+++ b/m4/fsusage.m4
@@ -1,8 +1,7 @@
# serial 35
# Obtaining file system usage information.
-# Copyright (C) 1997-1998, 2000-2001, 2003-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 1997-1998, 2000-2001, 2003-2023 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/futimens.m4 b/m4/futimens.m4
index 3aaa10a0b52..dc0b21b9d51 100644
--- a/m4/futimens.m4
+++ b/m4/futimens.m4
@@ -1,4 +1,4 @@
-# serial 9
+# serial 11
# See if we need to provide futimens replacement.
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
@@ -13,9 +13,12 @@ AC_DEFUN([gl_FUNC_FUTIMENS],
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([futimens])
+ gl_CHECK_FUNCS_ANDROID([futimens], [[#include <sys/stat.h>]])
if test $ac_cv_func_futimens = no; then
HAVE_FUTIMENS=0
+ case "$gl_cv_onwards_func_futimens" in
+ future*) REPLACE_FUTIMENS=1 ;;
+ esac
else
AC_CACHE_CHECK([whether futimens works],
[gl_cv_func_futimens_works],
diff --git a/m4/getgroups.m4 b/m4/getgroups.m4
index d5a18ea88b0..241fec88e3c 100644
--- a/m4/getgroups.m4
+++ b/m4/getgroups.m4
@@ -3,8 +3,7 @@
dnl From Jim Meyering.
dnl A wrapper around AC_FUNC_GETGROUPS.
-# Copyright (C) 1996-1997, 1999-2004, 2008-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 1996-1997, 1999-2004, 2008-2023 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4
index 7097e5dd512..ee83b32f1e0 100644
--- a/m4/getloadavg.m4
+++ b/m4/getloadavg.m4
@@ -1,13 +1,13 @@
# Check for getloadavg.
-# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2023 Free
-# Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2023 Free Software
+# Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-#serial 10
+#serial 12
# Autoconf defines AC_FUNC_GETLOADAVG, but that is obsolescent.
# New applications should use gl_GETLOADAVG instead.
@@ -25,8 +25,13 @@ gl_save_LIBS=$LIBS
# getloadavg is present in libc on glibc >= 2.2, Mac OS X, FreeBSD >= 2.0,
# NetBSD >= 0.9, OpenBSD >= 2.0, Solaris >= 7.
HAVE_GETLOADAVG=1
-AC_CHECK_FUNC([getloadavg], [],
- [gl_func_getloadavg_done=no
+gl_CHECK_FUNCS_ANDROID([getloadavg], [[#include <stdlib.h>]])
+if test $ac_cv_func_getloadavg != yes; then
+ case "$gl_cv_onwards_func_getloadavg" in
+ future*) REPLACE_GETLOADAVG=1 ;;
+ esac
+
+ gl_func_getloadavg_done=no
# Some systems with -lutil have (and need) -lkvm as well, some do not.
# On Solaris, -lkvm requires nlist from -lelf, so check that first
@@ -73,7 +78,8 @@ AC_CHECK_FUNC([getloadavg], [],
AC_DEFINE([DGUX], [1], [Define to 1 for DGUX with <sys/dg_sys_info.h>.])
AC_CHECK_LIB([dgc], [dg_sys_info])])
fi
- fi])
+ fi
+fi
if test "x$gl_save_LIBS" = x; then
GETLOADAVG_LIBS=$LIBS
diff --git a/m4/getrandom.m4 b/m4/getrandom.m4
index 95111567d79..7b7f9ce2ee8 100644
--- a/m4/getrandom.m4
+++ b/m4/getrandom.m4
@@ -1,4 +1,4 @@
-# getrandom.m4 serial 8
+# getrandom.m4 serial 11
dnl Copyright 2020-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -9,9 +9,18 @@ dnl Written by Paul Eggert.
AC_DEFUN([gl_FUNC_GETRANDOM],
[
AC_REQUIRE([gl_SYS_RANDOM_H_DEFAULTS])
- AC_CHECK_FUNCS_ONCE([getrandom])
+ gl_CHECK_FUNCS_ANDROID([getrandom],
+ [[/* Additional includes are needed before <sys/random.h> on uClibc
+ and Mac OS X. */
+ #include <sys/types.h>
+ #include <stdlib.h>
+ #include <sys/random.h>
+ ]])
if test "$ac_cv_func_getrandom" != yes; then
HAVE_GETRANDOM=0
+ case "$gl_cv_onwards_func_getrandom" in
+ future*) REPLACE_GETRANDOM=1 ;;
+ esac
else
dnl On Solaris 11.4 the return type is 'int', not 'ssize_t'.
AC_CACHE_CHECK([whether getrandom is compatible with its GNU+BSD signature],
@@ -56,13 +65,16 @@ AC_DEFUN([gl_FUNC_GETRANDOM],
if test $gl_cv_lib_assume_bcrypt = yes; then
AC_DEFINE([HAVE_LIB_BCRYPT], [1],
[Define to 1 if the bcrypt library is guaranteed to be present.])
- LIB_GETRANDOM='-lbcrypt'
+ GETRANDOM_LIB='-lbcrypt'
else
- LIB_GETRANDOM='-ladvapi32'
+ GETRANDOM_LIB='-ladvapi32'
fi
;;
*)
- LIB_GETRANDOM= ;;
+ GETRANDOM_LIB= ;;
esac
+ AC_SUBST([GETRANDOM_LIB])
+ dnl For backward compatibility.
+ LIB_GETRANDOM="$GETRANDOM_LIB"
AC_SUBST([LIB_GETRANDOM])
])
diff --git a/m4/gettime.m4 b/m4/gettime.m4
index 39067be6fa8..ec1f97ee0d5 100644
--- a/m4/gettime.m4
+++ b/m4/gettime.m4
@@ -1,6 +1,5 @@
-# gettime.m4 serial 12
-dnl Copyright (C) 2002, 2004-2006, 2009-2023 Free Software Foundation,
-dnl Inc.
+# gettime.m4 serial 14
+dnl Copyright (C) 2002, 2004-2006, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -19,25 +18,45 @@ AC_DEFUN([gl_GETTIME],
])
dnl Tests whether the function timespec_get exists.
-dnl Sets gl_cv_func_timespec_get.
+dnl Sets gl_cv_func_timespec_get and gl_cv_onwards_func_timespec_get.
AC_DEFUN([gl_CHECK_FUNC_TIMESPEC_GET],
[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+
dnl Persuade OpenBSD <time.h> to declare timespec_get().
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
dnl We can't use AC_CHECK_FUNC here, because timespec_get() is defined as a
dnl static inline function in <time.h> on MSVC 14.
- AC_CACHE_CHECK([for timespec_get], [gl_cv_func_timespec_get],
- [AC_LINK_IFELSE(
- [AC_LANG_PROGRAM(
- [[#include <time.h>
- struct timespec ts;
- ]],
- [[return timespec_get (&ts, 0);]])
- ],
- [gl_cv_func_timespec_get=yes],
- [gl_cv_func_timespec_get=no])
+ dnl But at the same time, we need to notice a missing declaration, like
+ dnl gl_CHECK_FUNCS_ANDROID does.
+ AC_CHECK_DECL([timespec_get], , , [[#include <time.h>]])
+ AC_CACHE_CHECK([for timespec_get], [gl_cv_onwards_func_timespec_get],
+ [if test $ac_cv_have_decl_timespec_get = yes; then
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <time.h>
+ struct timespec ts;
+ ]],
+ [[return timespec_get (&ts, 0);]])
+ ],
+ [gl_cv_onwards_func_timespec_get=yes],
+ [gl_cv_onwards_func_timespec_get=no])
+ else
+ gl_cv_onwards_func_timespec_get=no
+ fi
+ case "$host_os" in
+ linux*-android*)
+ if test $gl_cv_onwards_func_timespec_get = no; then
+ gl_cv_onwards_func_timespec_get='future OS version'
+ fi
+ ;;
+ esac
])
+ case "$gl_cv_onwards_func_timespec_get" in
+ future*) gl_cv_func_timespec_get=no ;;
+ *) gl_cv_func_timespec_get=$gl_cv_onwards_func_timespec_get ;;
+ esac
])
AC_DEFUN([gl_GETTIME_RES],
diff --git a/m4/gettimeofday.m4 b/m4/gettimeofday.m4
index 66231e0174f..5051d61cc87 100644
--- a/m4/gettimeofday.m4
+++ b/m4/gettimeofday.m4
@@ -1,7 +1,6 @@
# serial 29
-# Copyright (C) 2001-2003, 2005, 2007, 2009-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 2001-2003, 2005, 2007, 2009-2023 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4
index 70e9105bee1..c84a2afd9c5 100644
--- a/m4/gnulib-common.m4
+++ b/m4/gnulib-common.m4
@@ -1,4 +1,4 @@
-# gnulib-common.m4 serial 74
+# gnulib-common.m4 serial 82
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -38,6 +38,11 @@ AC_DEFUN([gl_COMMON_BODY], [
AIX system header files and several gnulib header files use precisely
this syntax with 'extern'. */
# define _Noreturn [[noreturn]]
+# elif (defined __clang__ && __clang_major__ < 16 \
+ && defined _GL_WORK_AROUND_LLVM_BUG_59792)
+ /* Compile with -D_GL_WORK_AROUND_LLVM_BUG_59792 to work around
+ that rare LLVM bug, though you may get many false-alarm warnings. */
+# define _Noreturn
# elif ((!defined __cplusplus || defined __clang__) \
&& (201112 <= (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) \
|| (!defined __STRICT_ANSI__ \
@@ -71,7 +76,7 @@ AC_DEFUN([gl_COMMON_BODY], [
&& (!defined __clang_minor__ \
|| (defined __apple_build_version__ \
? 6000000 <= __apple_build_version__ \
- : 3 < __clang_major__ + (5 <= __clang_minor__))))
+ : 5 <= __clang_major__)))
# define _GL_HAS_ATTRIBUTE(attr) __has_attribute (__##attr##__)
#else
# define _GL_HAS_ATTRIBUTE(attr) _GL_ATTR_##attr
@@ -105,14 +110,10 @@ AC_DEFUN([gl_COMMON_BODY], [
# define _GL_ATTR_warn_unused_result _GL_GNUC_PREREQ (3, 4)
#endif
-#ifdef __has_c_attribute
-# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710 \
- && _GL_GNUC_PREREQ (4, 6))
-# pragma GCC diagnostic ignored "-Wpedantic"
-# endif
-# define _GL_HAS_C_ATTRIBUTE(attr) __has_c_attribute (__##attr##__)
-#else
-# define _GL_HAS_C_ATTRIBUTE(attr) 0
+/* Disable GCC -Wpedantic if using __has_c_attribute and this is not C23+. */
+#if (defined __has_c_attribute && _GL_GNUC_PREREQ (4, 6) \
+ && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) <= 201710)
+# pragma GCC diagnostic ignored "-Wpedantic"
#endif
]dnl There is no _GL_ATTRIBUTE_ALIGNED; use stdalign's alignas instead.
@@ -123,29 +124,35 @@ AC_DEFUN([gl_COMMON_BODY], [
by the Nth argument of the function is the size of the returned memory block.
*/
/* Applies to: function, pointer to function, function types. */
-#if _GL_HAS_ATTRIBUTE (alloc_size)
-# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
-#else
-# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+#ifndef _GL_ATTRIBUTE_ALLOC_SIZE
+# if _GL_HAS_ATTRIBUTE (alloc_size)
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+# else
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+# endif
#endif
/* _GL_ATTRIBUTE_ALWAYS_INLINE tells that the compiler should always inline the
function and report an error if it cannot do so. */
/* Applies to: function. */
-#if _GL_HAS_ATTRIBUTE (always_inline)
-# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
-#else
-# define _GL_ATTRIBUTE_ALWAYS_INLINE
+#ifndef _GL_ATTRIBUTE_ALWAYS_INLINE
+# if _GL_HAS_ATTRIBUTE (always_inline)
+# define _GL_ATTRIBUTE_ALWAYS_INLINE __attribute__ ((__always_inline__))
+# else
+# define _GL_ATTRIBUTE_ALWAYS_INLINE
+# endif
#endif
/* _GL_ATTRIBUTE_ARTIFICIAL declares that the function is not important to show
in stack traces when debugging. The compiler should omit the function from
stack traces. */
/* Applies to: function. */
-#if _GL_HAS_ATTRIBUTE (artificial)
-# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
-#else
-# define _GL_ATTRIBUTE_ARTIFICIAL
+#ifndef _GL_ATTRIBUTE_ARTIFICIAL
+# if _GL_HAS_ATTRIBUTE (artificial)
+# define _GL_ATTRIBUTE_ARTIFICIAL __attribute__ ((__artificial__))
+# else
+# define _GL_ATTRIBUTE_ARTIFICIAL
+# endif
#endif
/* _GL_ATTRIBUTE_COLD declares that the function is rarely executed. */
@@ -153,14 +160,16 @@ AC_DEFUN([gl_COMMON_BODY], [
/* Avoid __attribute__ ((cold)) on MinGW; see thread starting at
<https://lists.gnu.org/r/emacs-devel/2019-04/msg01152.html>.
Also, Oracle Studio 12.6 requires 'cold' not '__cold__'. */
-#if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__
-# ifndef __SUNPRO_C
-# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__))
+#ifndef _GL_ATTRIBUTE_COLD
+# if _GL_HAS_ATTRIBUTE (cold) && !defined __MINGW32__
+# ifndef __SUNPRO_C
+# define _GL_ATTRIBUTE_COLD __attribute__ ((__cold__))
+# else
+# define _GL_ATTRIBUTE_COLD __attribute__ ((cold))
+# endif
# else
-# define _GL_ATTRIBUTE_COLD __attribute__ ((cold))
+# define _GL_ATTRIBUTE_COLD
# endif
-#else
-# define _GL_ATTRIBUTE_COLD
#endif
/* _GL_ATTRIBUTE_CONST declares that it is OK for a compiler to omit duplicate
@@ -170,10 +179,12 @@ AC_DEFUN([gl_COMMON_BODY], [
forever, and does not call longjmp.
(This attribute is stricter than _GL_ATTRIBUTE_PURE.) */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (const)
-# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
-#else
-# define _GL_ATTRIBUTE_CONST
+#ifndef _GL_ATTRIBUTE_CONST
+# if _GL_HAS_ATTRIBUTE (const)
+# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
+# else
+# define _GL_ATTRIBUTE_CONST
+# endif
#endif
/* _GL_ATTRIBUTE_DEALLOC (F, I) declares that the function returns pointers
@@ -182,16 +193,25 @@ AC_DEFUN([gl_COMMON_BODY], [
_GL_ATTRIBUTE_DEALLOC_FREE declares that the function returns pointers that
can be freed via 'free'; it can be used only after declaring 'free'. */
/* Applies to: functions. Cannot be used on inline functions. */
-#if _GL_GNUC_PREREQ (11, 0)
-# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
-#else
-# define _GL_ATTRIBUTE_DEALLOC(f, i)
+#ifndef _GL_ATTRIBUTE_DEALLOC
+# if _GL_GNUC_PREREQ (11, 0)
+# define _GL_ATTRIBUTE_DEALLOC(f, i) __attribute__ ((__malloc__ (f, i)))
+# else
+# define _GL_ATTRIBUTE_DEALLOC(f, i)
+# endif
#endif
/* If gnulib's <string.h> or <wchar.h> has already defined this macro, continue
to use this earlier definition, since <stdlib.h> may not have been included
yet. */
#ifndef _GL_ATTRIBUTE_DEALLOC_FREE
-# define _GL_ATTRIBUTE_DEALLOC_FREE _GL_ATTRIBUTE_DEALLOC (free, 1)
+# if defined __cplusplus && defined __GNUC__ && !defined __clang__
+/* Work around GCC bug <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108231> */
+# define _GL_ATTRIBUTE_DEALLOC_FREE \
+ _GL_ATTRIBUTE_DEALLOC ((void (*) (void *)) free, 1)
+# else
+# define _GL_ATTRIBUTE_DEALLOC_FREE \
+ _GL_ATTRIBUTE_DEALLOC (free, 1)
+# endif
#endif
/* _GL_ATTRIBUTE_DEPRECATED: Declares that an entity is deprecated.
@@ -202,12 +222,18 @@ AC_DEFUN([gl_COMMON_BODY], [
- enumeration, enumeration item,
- typedef,
in C++ also: namespace, class, template specialization. */
-#if _GL_HAS_C_ATTRIBUTE (deprecated)
-# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]]
-#elif _GL_HAS_ATTRIBUTE (deprecated)
-# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
-#else
-# define _GL_ATTRIBUTE_DEPRECATED
+#ifndef _GL_ATTRIBUTE_DEPRECATED
+# ifdef __has_c_attribute
+# if __has_c_attribute (__deprecated__)
+# define _GL_ATTRIBUTE_DEPRECATED [[__deprecated__]]
+# endif
+# endif
+# if !defined _GL_ATTRIBUTE_DEPRECATED && _GL_HAS_ATTRIBUTE (deprecated)
+# define _GL_ATTRIBUTE_DEPRECATED __attribute__ ((__deprecated__))
+# endif
+# ifndef _GL_ATTRIBUTE_DEPRECATED
+# define _GL_ATTRIBUTE_DEPRECATED
+# endif
#endif
/* _GL_ATTRIBUTE_ERROR(msg) requests an error if a function is called and
@@ -215,24 +241,28 @@ AC_DEFUN([gl_COMMON_BODY], [
_GL_ATTRIBUTE_WARNING(msg) requests a warning if a function is called and
the function call is not optimized away. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (error)
-# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg)))
-# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg)))
-#elif _GL_HAS_ATTRIBUTE (diagnose_if)
-# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error")))
-# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning")))
-#else
-# define _GL_ATTRIBUTE_ERROR(msg)
-# define _GL_ATTRIBUTE_WARNING(msg)
+#if !(defined _GL_ATTRIBUTE_ERROR && defined _GL_ATTRIBUTE_WARNING)
+# if _GL_HAS_ATTRIBUTE (error)
+# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__error__ (msg)))
+# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__warning__ (msg)))
+# elif _GL_HAS_ATTRIBUTE (diagnose_if)
+# define _GL_ATTRIBUTE_ERROR(msg) __attribute__ ((__diagnose_if__ (1, msg, "error")))
+# define _GL_ATTRIBUTE_WARNING(msg) __attribute__ ((__diagnose_if__ (1, msg, "warning")))
+# else
+# define _GL_ATTRIBUTE_ERROR(msg)
+# define _GL_ATTRIBUTE_WARNING(msg)
+# endif
#endif
/* _GL_ATTRIBUTE_EXTERNALLY_VISIBLE declares that the entity should remain
visible to debuggers etc., even with '-fwhole-program'. */
/* Applies to: functions, variables. */
-#if _GL_HAS_ATTRIBUTE (externally_visible)
-# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible))
-#else
-# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
+#ifndef _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
+# if _GL_HAS_ATTRIBUTE (externally_visible)
+# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE __attribute__ ((externally_visible))
+# else
+# define _GL_ATTRIBUTE_EXTERNALLY_VISIBLE
+# endif
#endif
/* _GL_ATTRIBUTE_FALLTHROUGH declares that it is not a programming mistake if
@@ -240,12 +270,18 @@ AC_DEFUN([gl_COMMON_BODY], [
'default' label. The compiler should not warn in this case. */
/* Applies to: Empty statement (;), inside a 'switch' statement. */
/* Always expands to something. */
-#if _GL_HAS_C_ATTRIBUTE (fallthrough)
-# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]]
-#elif _GL_HAS_ATTRIBUTE (fallthrough)
-# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
-#else
-# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
+#ifndef _GL_ATTRIBUTE_FALLTHROUGH
+# ifdef __has_c_attribute
+# if __has_c_attribute (__fallthrough__)
+# define _GL_ATTRIBUTE_FALLTHROUGH [[__fallthrough__]]
+# endif
+# endif
+# if !defined _GL_ATTRIBUTE_FALLTHROUGH && _GL_HAS_ATTRIBUTE (fallthrough)
+# define _GL_ATTRIBUTE_FALLTHROUGH __attribute__ ((__fallthrough__))
+# endif
+# ifndef _GL_ATTRIBUTE_FALLTHROUGH
+# define _GL_ATTRIBUTE_FALLTHROUGH ((void) 0)
+# endif
#endif
/* _GL_ATTRIBUTE_FORMAT ((ARCHETYPE, STRING-INDEX, FIRST-TO-CHECK))
@@ -259,10 +295,12 @@ AC_DEFUN([gl_COMMON_BODY], [
If FIRST-TO-CHECK is not 0, arguments starting at FIRST-TO_CHECK
are suitable for the format string. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (format)
-# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
-#else
-# define _GL_ATTRIBUTE_FORMAT(spec)
+#ifndef _GL_ATTRIBUTE_FORMAT
+# if _GL_HAS_ATTRIBUTE (format)
+# define _GL_ATTRIBUTE_FORMAT(spec) __attribute__ ((__format__ spec))
+# else
+# define _GL_ATTRIBUTE_FORMAT(spec)
+# endif
#endif
/* _GL_ATTRIBUTE_LEAF declares that if the function is called from some other
@@ -270,19 +308,23 @@ AC_DEFUN([gl_COMMON_BODY], [
exception handling. This declaration lets the compiler optimize that unit
more aggressively. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (leaf)
-# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__))
-#else
-# define _GL_ATTRIBUTE_LEAF
+#ifndef _GL_ATTRIBUTE_LEAF
+# if _GL_HAS_ATTRIBUTE (leaf)
+# define _GL_ATTRIBUTE_LEAF __attribute__ ((__leaf__))
+# else
+# define _GL_ATTRIBUTE_LEAF
+# endif
#endif
/* _GL_ATTRIBUTE_MALLOC declares that the function returns a pointer to freshly
allocated memory. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (malloc)
-# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
-#else
-# define _GL_ATTRIBUTE_MALLOC
+#ifndef _GL_ATTRIBUTE_MALLOC
+# if _GL_HAS_ATTRIBUTE (malloc)
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+# define _GL_ATTRIBUTE_MALLOC
+# endif
#endif
/* _GL_ATTRIBUTE_MAY_ALIAS declares that pointers to the type may point to the
@@ -290,10 +332,12 @@ AC_DEFUN([gl_COMMON_BODY], [
strict aliasing optimization. */
/* Applies to: types. */
/* Oracle Studio 12.6 mishandles may_alias despite __has_attribute OK. */
-#if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C
-# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__))
-#else
-# define _GL_ATTRIBUTE_MAY_ALIAS
+#ifndef _GL_ATTRIBUTE_MAY_ALIAS
+# if _GL_HAS_ATTRIBUTE (may_alias) && !defined __SUNPRO_C
+# define _GL_ATTRIBUTE_MAY_ALIAS __attribute__ ((__may_alias__))
+# else
+# define _GL_ATTRIBUTE_MAY_ALIAS
+# endif
#endif
/* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if
@@ -305,13 +349,24 @@ AC_DEFUN([gl_COMMON_BODY], [
- enumeration, enumeration item,
- typedef,
in C++ also: class. */
-/* In C++ and C2x, this is spelled [[__maybe_unused__]].
+/* In C++ and C23, this is spelled [[__maybe_unused__]].
GCC's syntax is __attribute__ ((__unused__)).
- clang supports both syntaxes. */
-#if _GL_HAS_C_ATTRIBUTE (maybe_unused)
-# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
-#else
-# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED
+ clang supports both syntaxes. Except that with clang ≥ 6, < 10, in C++ mode,
+ __has_c_attribute (__maybe_unused__) yields true but the use of
+ [[__maybe_unused__]] nevertheless produces a warning. */
+#ifndef _GL_ATTRIBUTE_MAYBE_UNUSED
+# if defined __clang__ && defined __cplusplus
+# if !defined __apple_build_version__ && __clang_major__ >= 10
+# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
+# endif
+# elif defined __has_c_attribute
+# if __has_c_attribute (__maybe_unused__)
+# define _GL_ATTRIBUTE_MAYBE_UNUSED [[__maybe_unused__]]
+# endif
+# endif
+# ifndef _GL_ATTRIBUTE_MAYBE_UNUSED
+# define _GL_ATTRIBUTE_MAYBE_UNUSED _GL_ATTRIBUTE_UNUSED
+# endif
#endif
/* Alternative spelling of this macro, for convenience and for
compatibility with glibc/include/libc-symbols.h. */
@@ -323,21 +378,38 @@ AC_DEFUN([gl_COMMON_BODY], [
discard the return value. The compiler may warn if the caller does not use
the return value, unless the caller uses something like ignore_value. */
/* Applies to: function, enumeration, class. */
-#if _GL_HAS_C_ATTRIBUTE (nodiscard)
-# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
-#elif _GL_HAS_ATTRIBUTE (warn_unused_result)
-# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__))
-#else
-# define _GL_ATTRIBUTE_NODISCARD
+#ifndef _GL_ATTRIBUTE_NODISCARD
+# if defined __clang__ && defined __cplusplus
+ /* With clang up to 15.0.6 (at least), in C++ mode, [[__nodiscard__]] produces
+ a warning.
+ The 1000 below means a yet unknown threshold. When clang++ version X
+ starts supporting [[__nodiscard__]] without warning about it, you can
+ replace the 1000 with X. */
+# if __clang_major__ >= 1000
+# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
+# endif
+# elif defined __has_c_attribute
+# if __has_c_attribute (__nodiscard__)
+# define _GL_ATTRIBUTE_NODISCARD [[__nodiscard__]]
+# endif
+# endif
+# if !defined _GL_ATTRIBUTE_NODISCARD && _GL_HAS_ATTRIBUTE (warn_unused_result)
+# define _GL_ATTRIBUTE_NODISCARD __attribute__ ((__warn_unused_result__))
+# endif
+# ifndef _GL_ATTRIBUTE_NODISCARD
+# define _GL_ATTRIBUTE_NODISCARD
+# endif
#endif
/* _GL_ATTRIBUTE_NOINLINE tells that the compiler should not inline the
function. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (noinline)
-# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__))
-#else
-# define _GL_ATTRIBUTE_NOINLINE
+#ifndef _GL_ATTRIBUTE_NOINLINE
+# if _GL_HAS_ATTRIBUTE (noinline)
+# define _GL_ATTRIBUTE_NOINLINE __attribute__ ((__noinline__))
+# else
+# define _GL_ATTRIBUTE_NOINLINE
+# endif
#endif
/* _GL_ATTRIBUTE_NONNULL ((N1, N2,...)) declares that the arguments N1, N2,...
@@ -345,20 +417,24 @@ AC_DEFUN([gl_COMMON_BODY], [
_GL_ATTRIBUTE_NONNULL () declares that all pointer arguments must not be
null. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (nonnull)
-# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args))
-#else
-# define _GL_ATTRIBUTE_NONNULL(args)
+#ifndef _GL_ATTRIBUTE_NONNULL
+# if _GL_HAS_ATTRIBUTE (nonnull)
+# define _GL_ATTRIBUTE_NONNULL(args) __attribute__ ((__nonnull__ args))
+# else
+# define _GL_ATTRIBUTE_NONNULL(args)
+# endif
#endif
/* _GL_ATTRIBUTE_NONSTRING declares that the contents of a character array is
not meant to be NUL-terminated. */
/* Applies to: struct/union members and variables that are arrays of element
type '[[un]signed] char'. */
-#if _GL_HAS_ATTRIBUTE (nonstring)
-# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__))
-#else
-# define _GL_ATTRIBUTE_NONSTRING
+#ifndef _GL_ATTRIBUTE_NONSTRING
+# if _GL_HAS_ATTRIBUTE (nonstring)
+# define _GL_ATTRIBUTE_NONSTRING __attribute__ ((__nonstring__))
+# else
+# define _GL_ATTRIBUTE_NONSTRING
+# endif
#endif
/* There is no _GL_ATTRIBUTE_NORETURN; use _Noreturn instead. */
@@ -366,10 +442,12 @@ AC_DEFUN([gl_COMMON_BODY], [
/* _GL_ATTRIBUTE_NOTHROW declares that the function does not throw exceptions.
*/
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus
-# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
-#else
-# define _GL_ATTRIBUTE_NOTHROW
+#ifndef _GL_ATTRIBUTE_NOTHROW
+# if _GL_HAS_ATTRIBUTE (nothrow) && !defined __cplusplus
+# define _GL_ATTRIBUTE_NOTHROW __attribute__ ((__nothrow__))
+# else
+# define _GL_ATTRIBUTE_NOTHROW
+# endif
#endif
/* _GL_ATTRIBUTE_PACKED declares:
@@ -378,10 +456,12 @@ AC_DEFUN([gl_COMMON_BODY], [
minimizing the memory required. */
/* Applies to: struct members, struct, union,
in C++ also: class. */
-#if _GL_HAS_ATTRIBUTE (packed)
-# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
-#else
-# define _GL_ATTRIBUTE_PACKED
+#ifndef _GL_ATTRIBUTE_PACKED
+# if _GL_HAS_ATTRIBUTE (packed)
+# define _GL_ATTRIBUTE_PACKED __attribute__ ((__packed__))
+# else
+# define _GL_ATTRIBUTE_PACKED
+# endif
#endif
/* _GL_ATTRIBUTE_PURE declares that It is OK for a compiler to omit duplicate
@@ -391,19 +471,23 @@ AC_DEFUN([gl_COMMON_BODY], [
observable state, and always returns exactly once.
(This attribute is looser than _GL_ATTRIBUTE_CONST.) */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (pure)
-# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
-#else
-# define _GL_ATTRIBUTE_PURE
+#ifndef _GL_ATTRIBUTE_PURE
+# if _GL_HAS_ATTRIBUTE (pure)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define _GL_ATTRIBUTE_PURE
+# endif
#endif
/* _GL_ATTRIBUTE_RETURNS_NONNULL declares that the function's return value is
a non-NULL pointer. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (returns_nonnull)
-# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__))
-#else
-# define _GL_ATTRIBUTE_RETURNS_NONNULL
+#ifndef _GL_ATTRIBUTE_RETURNS_NONNULL
+# if _GL_HAS_ATTRIBUTE (returns_nonnull)
+# define _GL_ATTRIBUTE_RETURNS_NONNULL __attribute__ ((__returns_nonnull__))
+# else
+# define _GL_ATTRIBUTE_RETURNS_NONNULL
+# endif
#endif
/* _GL_ATTRIBUTE_SENTINEL(pos) declares that the variadic function expects a
@@ -411,17 +495,21 @@ AC_DEFUN([gl_COMMON_BODY], [
_GL_ATTRIBUTE_SENTINEL () - The last argument is NULL (requires C99).
_GL_ATTRIBUTE_SENTINEL ((N)) - The (N+1)st argument from the end is NULL. */
/* Applies to: functions. */
-#if _GL_HAS_ATTRIBUTE (sentinel)
-# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos))
-#else
-# define _GL_ATTRIBUTE_SENTINEL(pos)
+#ifndef _GL_ATTRIBUTE_SENTINEL
+# if _GL_HAS_ATTRIBUTE (sentinel)
+# define _GL_ATTRIBUTE_SENTINEL(pos) __attribute__ ((__sentinel__ pos))
+# else
+# define _GL_ATTRIBUTE_SENTINEL(pos)
+# endif
#endif
/* A helper macro. Don't use it directly. */
-#if _GL_HAS_ATTRIBUTE (unused)
-# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
-#else
-# define _GL_ATTRIBUTE_UNUSED
+#ifndef _GL_ATTRIBUTE_UNUSED
+# if _GL_HAS_ATTRIBUTE (unused)
+# define _GL_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+# else
+# define _GL_ATTRIBUTE_UNUSED
+# endif
#endif
]dnl There is no _GL_ATTRIBUTE_VISIBILITY; see m4/visibility.m4 instead.
@@ -432,10 +520,12 @@ AC_DEFUN([gl_COMMON_BODY], [
/* Applies to: label (both in C and C++). */
/* Note that g++ < 4.5 does not support the '__attribute__ ((__unused__)) ;'
syntax. But clang does. */
-#if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__
-# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED
-#else
-# define _GL_UNUSED_LABEL
+#ifndef _GL_UNUSED_LABEL
+# if !(defined __cplusplus && !_GL_GNUC_PREREQ (4, 5)) || defined __clang__
+# define _GL_UNUSED_LABEL _GL_ATTRIBUTE_UNUSED
+# else
+# define _GL_UNUSED_LABEL
+# endif
#endif
])
AH_VERBATIM([async_safe],
@@ -1005,6 +1095,238 @@ AC_DEFUN([gl_CONDITIONAL_HEADER],
m4_popdef([gl_header_name])
])
+dnl Preparations for gl_CHECK_FUNCS_MACOS.
+AC_DEFUN([gl_PREPARE_CHECK_FUNCS_MACOS],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_COMPILER_CLANG])
+ AC_CACHE_CHECK([for compiler option needed when checking for future declarations],
+ [gl_cv_compiler_check_future_option],
+ [case "$host_os" in
+ dnl This is only needed on macOS.
+ darwin*)
+ if test $gl_cv_compiler_clang = yes; then
+ dnl Test whether the compiler supports the option
+ dnl '-Werror=unguarded-availability-new'.
+ save_ac_compile="$ac_compile"
+ ac_compile="$ac_compile -Werror=unguarded-availability-new"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[]])],
+ [gl_cv_compiler_check_future_option='-Werror=unguarded-availability-new'],
+ [gl_cv_compiler_check_future_option=none])
+ ac_compile="$save_ac_compile"
+ else
+ gl_cv_compiler_check_future_option=none
+ fi
+ ;;
+ *) gl_cv_compiler_check_future_option=none ;;
+ esac
+ ])
+])
+
+dnl Pieces of the expansion of
+dnl gl_CHECK_FUNCS_ANDROID
+dnl gl_CHECK_FUNCS_MACOS
+dnl gl_CHECK_FUNCS_ANDROID_MACOS
+
+AC_DEFUN([gl_CHECK_FUNCS_DEFAULT_CASE],
+[
+ *)
+ AC_CHECK_FUNC([$1])
+ [gl_cv_onwards_func_][$1]=$[ac_cv_func_][$1]
+ ;;
+])
+
+AC_DEFUN([gl_CHECK_FUNCS_CASE_FOR_ANDROID],
+[
+ linux*-android*)
+ AC_CHECK_DECL([$1], , , [$2])
+ if test $[ac_cv_have_decl_][$1] = yes; then
+ AC_CHECK_FUNC([[$1]])
+ if test $[ac_cv_func_][$1] = yes; then
+ [gl_cv_onwards_func_][$1]=yes
+ else
+ dnl The function is declared but does not exist. This should not
+ dnl happen normally. But anyway, we know that a future version
+ dnl of Android will have the function.
+ [gl_cv_onwards_func_][$1]='future OS version'
+ fi
+ else
+ [gl_cv_onwards_func_][$1]='future OS version'
+ fi
+ ;;
+])
+
+AC_DEFUN([gl_CHECK_FUNCS_CASE_FOR_MACOS],
+[
+ darwin*)
+ if test "x$gl_cv_compiler_check_future_option" != "xnone"; then
+ dnl Use a compile test, not a link test.
+ save_ac_compile="$ac_compile"
+ ac_compile="$ac_compile $gl_cv_compiler_check_future_option"
+ save_ac_compile_for_check_decl="$ac_compile_for_check_decl"
+ ac_compile_for_check_decl="$ac_compile_for_check_decl $gl_cv_compiler_check_future_option"
+ unset [ac_cv_have_decl_][$1]
+ AC_CHECK_DECL([$1], , , [$2])
+ ac_compile="$save_ac_compile"
+ ac_compile_for_check_decl="$save_ac_compile_for_check_decl"
+ [ac_cv_func_][$1]="$[ac_cv_have_decl_][$1]"
+ if test $[ac_cv_func_][$1] = yes; then
+ [gl_cv_onwards_func_][$1]=yes
+ else
+ unset [ac_cv_have_decl_][$1]
+ AC_CHECK_DECL([$1], , , [$2])
+ if test $[ac_cv_have_decl_][$1] = yes; then
+ [gl_cv_onwards_func_][$1]='future OS version'
+ else
+ [gl_cv_onwards_func_][$1]=no
+ fi
+ fi
+ else
+ AC_CHECK_FUNC([$1])
+ [gl_cv_onwards_func_][$1]=$[ac_cv_func_][$1]
+ fi
+ ;;
+])
+
+AC_DEFUN([gl_CHECK_FUNCS_SET_RESULTS],
+[
+ case "$[gl_cv_onwards_func_][$1]" in
+ future*) [ac_cv_func_][$1]=no ;;
+ *) [ac_cv_func_][$1]=$[gl_cv_onwards_func_][$1] ;;
+ esac
+ if test $[ac_cv_func_][$1] = yes; then
+ AC_DEFINE([HAVE_]m4_translit([[$1]],
+ [abcdefghijklmnopqrstuvwxyz],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ]),
+ [1], [Define to 1 if you have the `$1' function.])
+ fi
+])
+
+dnl gl_CHECK_FUNCS_ANDROID([func], [[#include <foo.h>]])
+dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem
+dnl on Android.
+dnl
+dnl When code is compiled on Android, it is in the context of a certain
+dnl "Android API level", which indicates the minimum version of Android on
+dnl which the app can be installed. In other words, you don't compile for a
+dnl specific version of Android. You compile for all versions of Android,
+dnl onwards from the given API level.
+dnl Thus, the question "does the OS have the function func" has three possible
+dnl answers:
+dnl - yes, in all versions starting from the given API level,
+dnl - no, in no version,
+dnl - not in the given API level, but in a later version of Android.
+dnl
+dnl In detail, this works as follows:
+dnl If func was added to Android API level, say, 28, then the libc.so has the
+dnl symbol func always, whereas the header file <foo.h> declares func
+dnl conditionally:
+dnl #if __ANDROID_API__ >= 28
+dnl ... func (...) __INTRODUCED_IN(28);
+dnl #endif
+dnl Thus, when compiling with "clang -target armv7a-unknown-linux-android28",
+dnl the function func is declared and exists in libc.
+dnl Whereas when compiling with "clang -target armv7a-unknown-linux-android27",
+dnl the function func is not declared but exists in libc.
+dnl
+dnl This macro sets two variables:
+dnl - gl_cv_onwards_func_<func> to yes / no / "future OS version"
+dnl - ac_cv_func_<func> to yes / no / no
+dnl The first variable allows to distinguish all three cases.
+dnl The second variable is set, so that an invocation
+dnl gl_CHECK_FUNCS_ANDROID([func], [[#include <foo.h>]])
+dnl can be used as a drop-in replacement for
+dnl AC_CHECK_FUNCS([func]).
+AC_DEFUN([gl_CHECK_FUNCS_ANDROID],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([for [$1]],
+ [[gl_cv_onwards_func_][$1]],
+ [gl_SILENT([
+ case "$host_os" in
+ gl_CHECK_FUNCS_CASE_FOR_ANDROID([$1], [$2])
+ gl_CHECK_FUNCS_DEFAULT_CASE([$1])
+ esac
+ ])
+ ])
+ gl_CHECK_FUNCS_SET_RESULTS([$1])
+])
+
+dnl gl_CHECK_FUNCS_MACOS([func], [[#include <foo.h>]])
+dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem
+dnl on macOS.
+dnl
+dnl When code is compiled on macOS, it is in the context of a certain minimum
+dnl macOS version, that can be set through the option '-mmacosx-version-min='.
+dnl In other words, you don't compile for a specific version of macOS. You
+dnl compile for all versions of macOS, onwards from the given version.
+dnl Thus, the question "does the OS have the function func" has three possible
+dnl answers:
+dnl - yes, in all versions starting from the given version,
+dnl - no, in no version,
+dnl - not in the given version, but in a later version of macOS.
+dnl
+dnl In detail, this works as follows:
+dnl If func was added to, say, macOS version 13, then the libc has the
+dnl symbol func always, whereas the header file <foo.h> declares func
+dnl conditionally with a special availability attribute:
+dnl ... func (...) __attribute__((availability(macos,introduced=13.0)));
+dnl Thus, when compiling with "clang mmacosx-version-min=13", there is no
+dnl warning about the use of func, and the resulting binary
+dnl - runs fine on macOS 13,
+dnl - aborts with a dyld "Symbol not found" message on macOS 12.
+dnl Whereas, when compiling with "clang mmacosx-version-min=12", there is a
+dnl warning: 'func' is only available on macOS 13.0 or newer
+dnl [-Wunguarded-availability-new],
+dnl and the resulting binary
+dnl - runs fine on macOS 13,
+dnl - crashes with a SIGSEGV (signal 11) on macOS 12.
+dnl
+dnl This macro sets two variables:
+dnl - gl_cv_onwards_func_<func> to yes / no / "future OS version"
+dnl - ac_cv_func_<func> to yes / no / no
+dnl The first variable allows to distinguish all three cases.
+dnl The second variable is set, so that an invocation
+dnl gl_CHECK_FUNCS_MACOS([func], [[#include <foo.h>]])
+dnl can be used as a drop-in replacement for
+dnl AC_CHECK_FUNCS([func]).
+AC_DEFUN([gl_CHECK_FUNCS_MACOS],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_PREPARE_CHECK_FUNCS_MACOS])
+ AC_CACHE_CHECK([for [$1]],
+ [[gl_cv_onwards_func_][$1]],
+ [gl_SILENT([
+ case "$host_os" in
+ gl_CHECK_FUNCS_CASE_FOR_MACOS([$1], [$2])
+ gl_CHECK_FUNCS_DEFAULT_CASE([$1])
+ esac
+ ])
+ ])
+ gl_CHECK_FUNCS_SET_RESULTS([$1])
+])
+
+dnl gl_CHECK_FUNCS_ANDROID_MACOS([func], [[#include <foo.h>]])
+dnl is like AC_CHECK_FUNCS([func]), taking into account a portability problem
+dnl on Android and on macOS.
+dnl It is the combination of gl_CHECK_FUNCS_ANDROID and gl_CHECK_FUNCS_MACOS.
+AC_DEFUN([gl_CHECK_FUNCS_ANDROID_MACOS],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_PREPARE_CHECK_FUNCS_MACOS])
+ AC_CACHE_CHECK([for [$1]],
+ [[gl_cv_onwards_func_][$1]],
+ [gl_SILENT([
+ case "$host_os" in
+ gl_CHECK_FUNCS_CASE_FOR_ANDROID([$1], [$2])
+ gl_CHECK_FUNCS_CASE_FOR_MACOS([$1], [$2])
+ gl_CHECK_FUNCS_DEFAULT_CASE([$1])
+ esac
+ ])
+ ])
+ gl_CHECK_FUNCS_SET_RESULTS([$1])
+])
+
dnl Expands to some code for use in .c programs that, on native Windows, defines
dnl the Microsoft deprecated alias function names to the underscore-prefixed
dnl actual function names. With this macro, these function names are available
diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4
index e03946c94ca..1bd16a779eb 100644
--- a/m4/gnulib-comp.m4
+++ b/m4/gnulib-comp.m4
@@ -44,6 +44,7 @@ AC_DEFUN([gl_EARLY],
# Code from module absolute-header:
# Code from module acl-permissions:
+ # Code from module alignasof:
# Code from module alloca-opt:
# Code from module allocator:
# Code from module assert-h:
@@ -82,7 +83,6 @@ AC_DEFUN([gl_EARLY],
# Code from module errno:
# Code from module euidaccess:
# Code from module execinfo:
- # Code from module explicit_bzero:
# Code from module extensions:
# Code from module extern-inline:
# Code from module faccessat:
@@ -124,7 +124,6 @@ AC_DEFUN([gl_EARLY],
# Code from module intprops:
# Code from module inttypes-incomplete:
# Code from module largefile:
- AC_REQUIRE([gl_YEAR2038_EARLY])
AC_REQUIRE([AC_SYS_LARGEFILE])
# Code from module lchmod:
# Code from module libc-config:
@@ -137,6 +136,7 @@ AC_DEFUN([gl_EARLY],
# Code from module memmem-simple:
# Code from module mempcpy:
# Code from module memrchr:
+ # Code from module memset_explicit:
# Code from module minmax:
# Code from module mkostemp:
# Code from module mktime:
@@ -171,7 +171,6 @@ AC_DEFUN([gl_EARLY],
# Code from module ssize_t:
# Code from module stat-time:
# Code from module std-gnu11:
- # Code from module stdalign:
# Code from module stdbool:
# Code from module stdckdint:
# Code from module stddef:
@@ -190,7 +189,7 @@ AC_DEFUN([gl_EARLY],
# Code from module sys_time:
# Code from module sys_types:
# Code from module tempname:
- # Code from module time:
+ # Code from module time-h:
# Code from module time_r:
# Code from module time_rz:
# Code from module timegm:
@@ -232,6 +231,7 @@ AC_DEFUN([gl_INIT],
gl_source_base='lib'
gl_source_base_prefix=
gl_FUNC_ACL
+ gl_ALIGNASOF
gl_FUNC_ALLOCA
gl_CONDITIONAL_HEADER([alloca.h])
AC_PROG_MKDIR_P
@@ -249,7 +249,7 @@ AC_DEFUN([gl_INIT],
gl_STDLIB_MODULE_INDICATOR([canonicalize_file_name])
gl_STDLIB_MODULE_INDICATOR([realpath])
AC_REQUIRE([AC_C_RESTRICT])
- AC_CHECK_FUNCS_ONCE([readlinkat])
+ gl_CHECK_FUNCS_ANDROID([readlinkat], [[#include <unistd.h>]])
gl_CLOCK_TIME
gl_MODULE_INDICATOR([close-stream])
gl_FUNC_COPY_FILE_RANGE
@@ -285,12 +285,6 @@ AC_DEFUN([gl_INIT],
gl_CONDITIONAL_HEADER([execinfo.h])
AC_PROG_MKDIR_P
gl_CONDITIONAL([GL_COND_OBJ_EXECINFO], [$GL_GENERATE_EXECINFO_H])
- gl_FUNC_EXPLICIT_BZERO
- gl_CONDITIONAL([GL_COND_OBJ_EXPLICIT_BZERO], [test $HAVE_EXPLICIT_BZERO = 0])
- AM_COND_IF([GL_COND_OBJ_EXPLICIT_BZERO], [
- gl_PREREQ_EXPLICIT_BZERO
- ])
- gl_STRING_MODULE_INDICATOR([explicit_bzero])
AC_REQUIRE([gl_EXTERN_INLINE])
gl_FUNC_FACCESSAT
gl_CONDITIONAL([GL_COND_OBJ_FACCESSAT],
@@ -351,7 +345,8 @@ AC_DEFUN([gl_INIT],
gl_SYS_STAT_MODULE_INDICATOR([futimens])
AC_REQUIRE([AC_CANONICAL_HOST])
gl_GETLOADAVG
- gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG], [test $HAVE_GETLOADAVG = 0])
+ gl_CONDITIONAL([GL_COND_OBJ_GETLOADAVG],
+ [test $HAVE_GETLOADAVG = 0 || test $REPLACE_GETLOADAVG = 1])
AM_COND_IF([GL_COND_OBJ_GETLOADAVG], [
gl_PREREQ_GETLOADAVG
])
@@ -411,7 +406,8 @@ AC_DEFUN([gl_INIT],
fi
gl_STRING_MODULE_INDICATOR([memmem])
gl_FUNC_MEMPCPY
- gl_CONDITIONAL([GL_COND_OBJ_MEMPCPY], [test $HAVE_MEMPCPY = 0])
+ gl_CONDITIONAL([GL_COND_OBJ_MEMPCPY],
+ [test $HAVE_MEMPCPY = 0 || test $REPLACE_MEMPCPY = 1])
AM_COND_IF([GL_COND_OBJ_MEMPCPY], [
gl_PREREQ_MEMPCPY
])
@@ -422,9 +418,16 @@ AC_DEFUN([gl_INIT],
gl_PREREQ_MEMRCHR
])
gl_STRING_MODULE_INDICATOR([memrchr])
+ gl_FUNC_MEMSET_EXPLICIT
+ gl_CONDITIONAL([GL_COND_OBJ_MEMSET_EXPLICIT], [test $HAVE_MEMSET_EXPLICIT = 0])
+ AM_COND_IF([GL_COND_OBJ_MEMSET_EXPLICIT], [
+ gl_PREREQ_MEMSET_EXPLICIT
+ ])
+ gl_STRING_MODULE_INDICATOR([memset_explicit])
gl_MINMAX
gl_FUNC_MKOSTEMP
- gl_CONDITIONAL([GL_COND_OBJ_MKOSTEMP], [test $HAVE_MKOSTEMP = 0])
+ gl_CONDITIONAL([GL_COND_OBJ_MKOSTEMP],
+ [test $HAVE_MKOSTEMP = 0 || test $REPLACE_MKOSTEMP = 1])
AM_COND_IF([GL_COND_OBJ_MKOSTEMP], [
gl_PREREQ_MKOSTEMP
])
@@ -457,6 +460,14 @@ AC_DEFUN([gl_INIT],
gl_PREREQ_PTHREAD_SIGMASK
])
gl_SIGNAL_MODULE_INDICATOR([pthread_sigmask])
+ gl_FUNC_XATTR
+ AC_REQUIRE([gl_FUNC_ACL])
+ if test "$use_xattr" = yes; then
+ QCOPY_ACL_LIB="$LIB_XATTR"
+ else
+ QCOPY_ACL_LIB="$LIB_ACL"
+ fi
+ AC_SUBST([QCOPY_ACL_LIB])
gl_FUNC_READLINK
gl_CONDITIONAL([GL_COND_OBJ_READLINK],
[test $HAVE_READLINK = 0 || test $REPLACE_READLINK = 1])
@@ -488,9 +499,6 @@ AC_DEFUN([gl_INIT],
gt_TYPE_SSIZE_T
gl_STAT_TIME
gl_STAT_BIRTHTIME
- gl_STDALIGN_H
- gl_CONDITIONAL_HEADER([stdalign.h])
- AC_PROG_MKDIR_P
gl_C_BOOL
AC_CHECK_HEADERS_ONCE([stdckdint.h])
if test $ac_cv_header_stdckdint_h = yes; then
@@ -541,7 +549,8 @@ AC_DEFUN([gl_INIT],
gl_STDLIB_H_REQUIRE_DEFAULTS
AC_PROG_MKDIR_P
gl_FUNC_STPCPY
- gl_CONDITIONAL([GL_COND_OBJ_STPCPY], [test $HAVE_STPCPY = 0])
+ gl_CONDITIONAL([GL_COND_OBJ_STPCPY],
+ [test $HAVE_STPCPY = 0 || test $REPLACE_STPCPY = 1])
AM_COND_IF([GL_COND_OBJ_STPCPY], [
gl_PREREQ_STPCPY
])
@@ -966,7 +975,7 @@ AC_DEFUN([gl_INIT],
if test $HAVE_FUTIMENS = 0 || test $REPLACE_FUTIMENS = 1; then
func_gl_gnulib_m4code_utimens
fi
- if case $host_os in mingw*) false;; *) test $HAVE_GETLOADAVG = 0;; esac; then
+ if case $host_os in mingw*) false;; *) test $HAVE_GETLOADAVG = 0 || test $REPLACE_GETLOADAVG = 1;; esac; then
func_gl_gnulib_m4code_open
fi
if test $REPLACE_GETOPT = 1; then
@@ -1248,7 +1257,6 @@ AC_DEFUN([gl_FILE_LIST], [
lib/euidaccess.c
lib/execinfo.c
lib/execinfo.in.h
- lib/explicit_bzero.c
lib/faccessat.c
lib/fchmodat.c
lib/fcntl.c
@@ -1318,6 +1326,7 @@ AC_DEFUN([gl_FILE_LIST], [
lib/memmem.c
lib/mempcpy.c
lib/memrchr.c
+ lib/memset_explicit.c
lib/mini-gmp-gnulib.c
lib/mini-gmp.c
lib/mini-gmp.h
@@ -1364,7 +1373,6 @@ AC_DEFUN([gl_FILE_LIST], [
lib/signal.in.h
lib/stat-time.c
lib/stat-time.h
- lib/stdalign.in.h
lib/stdckdint.in.h
lib/stddef.in.h
lib/stdint.in.h
@@ -1432,7 +1440,6 @@ AC_DEFUN([gl_FILE_LIST], [
m4/errno_h.m4
m4/euidaccess.m4
m4/execinfo.m4
- m4/explicit_bzero.m4
m4/extensions.m4
m4/extern-inline.m4
m4/faccessat.m4
@@ -1476,6 +1483,7 @@ AC_DEFUN([gl_FILE_LIST], [
m4/memmem.m4
m4/mempcpy.m4
m4/memrchr.m4
+ m4/memset_explicit.m4
m4/minmax.m4
m4/mkostemp.m4
m4/mktime.m4
@@ -1544,6 +1552,6 @@ AC_DEFUN([gl_FILE_LIST], [
m4/warnings.m4
m4/wchar_t.m4
m4/wint_t.m4
- m4/year2038.m4
+ m4/xattr.m4
m4/zzgnulib.m4
])
diff --git a/m4/group-member.m4 b/m4/group-member.m4
index 6e860c6189d..7c56ee3de7d 100644
--- a/m4/group-member.m4
+++ b/m4/group-member.m4
@@ -1,7 +1,6 @@
# serial 14
-# Copyright (C) 1999-2001, 2003-2007, 2009-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
index bf2eab2ba31..e7efbe94167 100644
--- a/m4/inttypes.m4
+++ b/m4/inttypes.m4
@@ -1,4 +1,4 @@
-# inttypes.m4 serial 36
+# inttypes.m4 serial 37
dnl Copyright (C) 2006-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -170,6 +170,10 @@ AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T])
+ HAVE_IMAXABS=1; AC_SUBST([HAVE_IMAXABS])
+ HAVE_IMAXDIV=1; AC_SUBST([HAVE_IMAXDIV])
+ REPLACE_IMAXABS=0; AC_SUBST([REPLACE_IMAXABS])
+ REPLACE_IMAXDIV=0; AC_SUBST([REPLACE_IMAXDIV])
REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX])
REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX])
INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX])
diff --git a/m4/largefile.m4 b/m4/largefile.m4
index bc8a2b93534..7fb81b864af 100644
--- a/m4/largefile.m4
+++ b/m4/largefile.m4
@@ -12,8 +12,7 @@
# and ftello in C++ mode as well.
# Fixed in Autoconf 2.72, which has AC_SYS_YEAR2038.
AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
-[
- m4_ifndef([AC_SYS_YEAR2038], [
+ m4_ifndef([AC_SYS_YEAR2038], [[
AC_REQUIRE([AC_CANONICAL_HOST])
AC_FUNC_FSEEKO
case "$host_os" in
@@ -22,11 +21,10 @@ AC_DEFUN([gl_SET_LARGEFILE_SOURCE],
[Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2).])
;;
esac
- ])
-])
+ ]])
+)
-# Work around a problem in Autoconf through 2.71 on glibc 2.34+
-# with _TIME_BITS. Also, work around a problem in autoconf <= 2.69:
+# Work around a problem in autoconf <= 2.69:
# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
# or configures them incorrectly in some cases.
m4_version_prereq([2.70], [], [
@@ -46,34 +44,258 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
])
])# m4_version_prereq 2.70
+# Support AC_SYS_YEAR2038, even if Autoconf 2.71 or earlier.
+# This code is taken from Autoconf master.
m4_ifndef([AC_SYS_YEAR2038], [
-# _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
-# CACHE-VAR,
-# DESCRIPTION,
-# PROLOGUE, [FUNCTION-BODY])
-# --------------------------------------------------------
-m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE],
-[AC_CACHE_CHECK([for $1 value needed for large files], [$3],
-[while :; do
- m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
- [AC_LANG_PROGRAM([$5], [$6])],
- [$3=no; break])
- m4_ifval([$6], [AC_LINK_IFELSE], [AC_COMPILE_IFELSE])(
- [AC_LANG_PROGRAM([#undef $1
-#define $1 $2
-$5], [$6])],
- [$3=$2; break])
- $3=unknown
- break
-done])
-case $$3 in #(
- no | unknown) ;;
- *) AC_DEFINE_UNQUOTED([$1], [$$3], [$4]);;
-esac
-rm -rf conftest*[]dnl
-])# _AC_SYS_LARGEFILE_MACRO_VALUE
+# _AC_SYS_YEAR2038_TEST_CODE
+# --------------------------
+# C code used to probe for time_t that can represent time points more
+# than 2**31 - 1 seconds after the epoch. With the usual Unix epoch,
+# these correspond to dates after 2038-01-18 22:14:07 +0000 (Gregorian),
+# hence the name.
+AC_DEFUN([_AC_SYS_YEAR2038_TEST_CODE],
+[[
+ #include <time.h>
+ /* Check that time_t can represent 2**32 - 1 correctly. */
+ #define LARGE_TIME_T \\
+ ((time_t) (((time_t) 1 << 30) - 1 + 3 * ((time_t) 1 << 30)))
+ int verify_time_t_range[(LARGE_TIME_T / 65537 == 65535
+ && LARGE_TIME_T % 65537 == 0)
+ ? 1 : -1];
+]])
+
+# _AC_SYS_YEAR2038_OPTIONS
+# ------------------------
+# List of known ways to enable support for large time_t. If you change
+# this list you probably also need to change the AS_CASE at the end of
+# _AC_SYS_YEAR2038_PROBE.
+m4_define([_AC_SYS_YEAR2038_OPTIONS], m4_normalize(
+ ["none needed"] dnl 64-bit and newer 32-bit Unix
+ ["-D_TIME_BITS=64"] dnl glibc 2.34 with some 32-bit ABIs
+ ["-D__MINGW_USE_VC2005_COMPAT"] dnl 32-bit MinGW
+ ["-U_USE_32_BIT_TIME_T -D__MINGW_USE_VC2005_COMPAT"]
+ dnl 32-bit MinGW (misconfiguration)
+))
+
+# _AC_SYS_YEAR2038_PROBE([IF-NOT-DETECTED])
+# -----------------------------------------
+# Subroutine of AC_SYS_YEAR2038. Probe for time_t that can represent
+# time points more than 2**31 - 1 seconds after the epoch (dates after
+# 2038-01-18, see above) and set the cache variable ac_cv_sys_year2038_opts
+# to one of the values in the _AC_SYS_YEAR2038_OPTIONS list, or to
+# "support not detected" if none of them worked. Then, set compilation
+# options and #defines as necessary to enable large time_t support.
+#
+# Note that we do not test whether mktime, localtime, etc. handle
+# large values of time_t correctly, as that would require use of
+# AC_TRY_RUN. Note also that some systems only support large time_t
+# together with large off_t.
+#
+# If support is not detected, the behavior depends on which of the
+# top-level AC_SYS_YEAR2038 macros was used (see below).
+#
+# If you change this macro you may also need to change
+# _AC_SYS_YEAR2038_OPTIONS.
+AC_DEFUN([_AC_SYS_YEAR2038_PROBE],
+[AC_CACHE_CHECK([for $CC option to enable timestamps after Jan 2038],
+ [ac_cv_sys_year2038_opts],
+ [ac_save_CPPFLAGS="$CPPFLAGS"
+ ac_opt_found=no
+ for ac_opt in _AC_SYS_YEAR2038_OPTIONS; do
+ AS_IF([test x"$ac_opt" != x"none needed"],
+ [CPPFLAGS="$ac_save_CPPFLAGS $ac_opt"])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_YEAR2038_TEST_CODE])],
+ [ac_cv_sys_year2038_opts="$ac_opt"
+ ac_opt_found=yes])
+ test $ac_opt_found = no || break
+ done
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ test $ac_opt_found = yes || ac_cv_sys_year2038_opts="support not detected"])
+
+ac_have_year2038=yes
+AS_CASE([$ac_cv_sys_year2038_opts],
+ ["none needed"], [],
+ ["support not detected"],
+ [ac_have_year2038=no
+ AS_CASE([$enable_year2038],
+ [yes],
+ [# If we're not cross compiling and 'touch' works with a large
+ # timestamp, then we can presume the system supports wider time_t
+ # *somehow* and we just weren't able to detect it. One common
+ # case that we deliberately *don't* probe for is a system that
+ # supports both 32- and 64-bit ABIs but only the 64-bit ABI offers
+ # wide time_t. (It would be inappropriate for us to override an
+ # intentional use of -m32.) Error out, demanding use of
+ # --disable-year2038 if this is intentional.
+ AS_IF([test $cross_compiling = no],
+ [AS_IF([TZ=UTC0 touch -t 210602070628.15 conftest.time 2>/dev/null],
+ [AS_CASE([`TZ=UTC0 LC_ALL=C ls -l conftest.time 2>/dev/null`],
+ [*'Feb 7 2106'* | *'Feb 7 17:10'*],
+ [AC_MSG_FAILURE(m4_text_wrap(
+ [this system appears to support timestamps after January 2038,
+ but no mechanism for enabling wide 'time_t' was detected.
+ Did you mean to build a 64-bit binary? (e.g. 'CC="${CC} -m64"'.)
+ To proceed with 32-bit time_t, configure with '--disable-year2038'.],
+ [], [], [55]))])])])])],
+
+ ["-D_TIME_BITS=64"],
+ [AC_DEFINE([_TIME_BITS], [64],
+ [Number of bits in time_t, on hosts where this is settable.])],
+
+ ["-D__MINGW_USE_VC2005_COMPAT=1"],
+ [AC_DEFINE([__MINGW_USE_VC2005_COMPAT], [1],
+ [Define to 1 on platforms where this makes time_t a 64-bit type.])],
+
+ ["-U_USE_32_BIT_TIME_T"*],
+ [AC_MSG_FAILURE(m4_text_wrap(
+ [the 'time_t' type is currently forced to be 32-bit.
+ It will stop working after January 2038.
+ Remove _USE_32BIT_TIME_T from the compiler flags.],
+ [], [], [55]))],
+
+ [AC_MSG_ERROR(
+ [internal error: bad value for \$ac_cv_sys_year2038_opts])])
+])
+
+# _AC_SYS_YEAR2038_ENABLE
+# -----------------------
+# Subroutine of AC_SYS_YEAR2038 and _AC_SYS_YEAR2038_OPT_IN.
+# Depending on which of the YEAR2038 macros was used, add either an
+# --enable-year2038, or a --disable-year2038, or no option at all to
+# the configure script. Note that this is expanded very late and
+# therefore there cannot be any code in the AC_ARG_ENABLE. The
+# default value for enable_year2038 is emitted unconditionally
+# because the generated code always looks at this variable.
+m4_define([_AC_SYS_YEAR2038_ENABLE],
+[m4_divert_text([DEFAULTS],
+ m4_provide_if([AC_SYS_YEAR2038],
+ [enable_year2038=yes],
+ [enable_year2038=no]))]dnl
+[AC_ARG_ENABLE([year2038],
+ m4_provide_if([AC_SYS_YEAR2038],
+ [AS_HELP_STRING([--disable-year2038],
+ [do not support timestamps after 2038])],
+ [AS_HELP_STRING([--enable-year2038],
+ [support timestamps after 2038])]))])
+
+# _AC_SYS_YEAR2038_OPT_IN
+# -----------------------
+# If the --enable-year2038 option is given to configure, attempt to
+# detect and activate support for large time_t on 32-bit systems.
+# This macro is automatically invoked by AC_SYS_LARGEFILE when large
+# *file* support is detected. It does not AC_REQUIRE AC_SYS_LARGEFILE
+# to avoid a dependency loop, and is therefore unsafe to expose as a
+# documented macro.
+AC_DEFUN([_AC_SYS_YEAR2038_OPT_IN],
+[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
+ AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
+ AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
+])])
+
+# AC_SYS_YEAR2038
+# ---------------
+# Attempt to detect and activate support for large time_t.
+# On systems where time_t is not always 64 bits, this probe can be
+# skipped by passing the --disable-year2038 option to configure.
+AC_DEFUN([AC_SYS_YEAR2038],
+[AC_REQUIRE([AC_SYS_LARGEFILE])]dnl
+[m4_provide_if([_AC_SYS_YEAR2038_PROBE], [], [dnl
+ AS_IF([test "$enable_year2038" != no], [_AC_SYS_YEAR2038_PROBE])
+ AC_CONFIG_COMMANDS_PRE([_AC_SYS_YEAR2038_ENABLE])
+])])
+
+# _AC_SYS_LARGEFILE_TEST_CODE
+# ---------------------------
+# C code used to probe for large file support.
+m4_define([_AC_SYS_LARGEFILE_TEST_CODE],
+[@%:@include <sys/types.h>
+ /* Check that off_t can represent 2**63 - 1 correctly.
+ We can't simply define LARGE_OFF_T to be 9223372036854775807,
+ since some C++ compilers masquerading as C compilers
+ incorrectly reject 9223372036854775807. */
+@%:@define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
+ int off_t_is_large[[(LARGE_OFF_T % 2147483629 == 721
+ && LARGE_OFF_T % 2147483647 == 1)
+ ? 1 : -1]];[]dnl
+])
+
+# _AC_SYS_LARGEFILE_OPTIONS
+# -------------------------
+# List of known ways to enable support for large files. If you change
+# this list you probably also need to change the AS_CASE at the end of
+# _AC_SYS_LARGEFILE_PROBE.
+m4_define([_AC_SYS_LARGEFILE_OPTIONS], m4_normalize(
+ ["none needed"] dnl Most current systems
+ ["-D_FILE_OFFSET_BITS=64"] dnl X/Open LFS spec
+ ["-D_LARGE_FILES=1"] dnl AIX (which versions?)
+ ["-n32"] dnl Irix 6.2 w/ SGI compiler
+))
+
+# _AC_SYS_LARGEFILE_PROBE
+# -----------------------
+# Subroutine of AC_SYS_LARGEFILE. Probe for large file support and set
+# the cache variable ac_cv_sys_largefile_opts to one of the values in
+# the _AC_SYS_LARGEFILE_OPTIONS list, or to "support not detected" if
+# none of the options in that list worked. Then, set compilation
+# options and #defines as necessary to enable large file support.
+#
+# If large file support is not detected, the behavior depends on which of
+# the top-level AC_SYS_LARGEFILE macros was used (see below).
+#
+# If you change this macro you may also need to change
+# _AC_SYS_LARGEFILE_OPTIONS.
+AC_DEFUN([_AC_SYS_LARGEFILE_PROBE],
+[AC_CACHE_CHECK([for $CC option to enable large file support],
+ [ac_cv_sys_largefile_opts],
+ [ac_save_CC="$CC"
+ ac_opt_found=no
+ for ac_opt in _AC_SYS_LARGEFILE_OPTIONS; do
+ AS_IF([test x"$ac_opt" != x"none needed"],
+ [CC="$ac_save_CC $ac_opt"])
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_CODE])],
+ [ac_cv_sys_largefile_opts="$ac_opt"
+ ac_opt_found=yes])
+ test $ac_opt_found = no || break
+ done
+ CC="$ac_save_CC"
+ test $ac_opt_found = yes || ac_cv_sys_largefile_opts="support not detected"])
+
+ac_have_largefile=yes
+AS_CASE([$ac_cv_sys_largefile_opts],
+ ["none needed"], [],
+ ["support not detected"],
+ [ac_have_largefile=no],
+
+ ["-D_FILE_OFFSET_BITS=64"],
+ [AC_DEFINE([_FILE_OFFSET_BITS], [64],
+ [Number of bits in a file offset, on hosts where this is settable.])],
+
+ ["-D_LARGE_FILES=1"],
+ [AC_DEFINE([_LARGE_FILES], [1],
+ [Define to 1 on platforms where this makes off_t a 64-bit type.])],
+
+ ["-n32"],
+ [CC="$CC -n32"],
+
+ [AC_MSG_ERROR(
+ [internal error: bad value for \$ac_cv_sys_largefile_opts])])
+
+_AC_SYS_YEAR2038_OPT_IN
+])
+# _AC_SYS_LARGEFILE_ENABLE
+# ------------------------
+# Subroutine of AC_SYS_LARGEFILE. Note that this
+# is expanded very late and therefore there cannot be any code in the
+# AC_ARG_ENABLE. The default value for enable_largefile is emitted
+# unconditionally because the generated shell code always looks at
+# this variable.
+m4_define([_AC_SYS_LARGEFILE_ENABLE],
+[m4_divert_text([DEFAULTS],
+ enable_largefile=yes)]dnl
+[AC_ARG_ENABLE([largefile],
+ [AS_HELP_STRING([--disable-largefile], [omit support for large files])])])
# AC_SYS_LARGEFILE
# ----------------
@@ -84,44 +306,13 @@ rm -rf conftest*[]dnl
# Additionally, on Linux file systems with 64-bit inodes a file that happens
# to have a 64-bit inode number cannot be accessed by 32-bit applications on
# Linux x86/x86_64. This can occur with file systems such as XFS and NFS.
+# This macro allows configuration to continue if the system doesn't support
+# large files.
AC_DEFUN([AC_SYS_LARGEFILE],
-[AC_ARG_ENABLE(largefile,
- [ --disable-largefile omit support for large files])
-AS_IF([test "$enable_largefile" != no],
- [AC_CACHE_CHECK([for special C compiler options needed for large files],
- ac_cv_sys_largefile_CC,
- [ac_cv_sys_largefile_CC=no
- if test "$GCC" != yes; then
- ac_save_CC=$CC
- while :; do
- # IRIX 6.2 and later do not support large files by default,
- # so use the C compiler's -n32 option if that helps.
- AC_LANG_CONFTEST([AC_LANG_PROGRAM([_AC_SYS_LARGEFILE_TEST_INCLUDES])])
- AC_COMPILE_IFELSE([], [break])
- CC="$CC -n32"
- AC_COMPILE_IFELSE([], [ac_cv_sys_largefile_CC=' -n32'; break])
- break
- done
- CC=$ac_save_CC
- rm -f conftest.$ac_ext
- fi])
- if test "$ac_cv_sys_largefile_CC" != no; then
- CC=$CC$ac_cv_sys_largefile_CC
- fi
-
- _AC_SYS_LARGEFILE_MACRO_VALUE(_FILE_OFFSET_BITS, 64,
- ac_cv_sys_file_offset_bits,
- [Number of bits in a file offset, on hosts where this is settable.],
- [_AC_SYS_LARGEFILE_TEST_INCLUDES])
- AS_CASE([$ac_cv_sys_file_offset_bits],
- [unknown],
- [_AC_SYS_LARGEFILE_MACRO_VALUE([_LARGE_FILES], [1],
- [ac_cv_sys_large_files],
- [Define for large files, on AIX-style hosts.],
- [_AC_SYS_LARGEFILE_TEST_INCLUDES])],
- [64],
- [gl_YEAR2038_BODY([])])])
-])# AC_SYS_LARGEFILE
+[m4_provide_if([_AC_SYS_LARGEFILE_PROBE], [], [dnl
+ AS_IF([test "$enable_largefile" != no], [_AC_SYS_LARGEFILE_PROBE])
+ AC_CONFIG_COMMANDS_PRE([_AC_SYS_LARGEFILE_ENABLE])
+])])
])# m4_ifndef AC_SYS_YEAR2038
# Enable large files on systems where this is implemented by Gnulib, not by the
diff --git a/m4/limits-h.m4 b/m4/limits-h.m4
index 5088fa16fd3..4f8ce41098a 100644
--- a/m4/limits-h.m4
+++ b/m4/limits-h.m4
@@ -23,6 +23,7 @@ AC_DEFUN_ONCE([gl_LIMITS_H],
int wb = WORD_BIT;
int ullw = ULLONG_WIDTH;
int bw = BOOL_WIDTH;
+ int bm = BOOL_MAX;
]])],
[gl_cv_header_limits_width=yes],
[gl_cv_header_limits_width=no])])
diff --git a/m4/lstat.m4 b/m4/lstat.m4
index 7e667fb187a..2bc46697934 100644
--- a/m4/lstat.m4
+++ b/m4/lstat.m4
@@ -1,4 +1,4 @@
-# serial 33
+# serial 34
# Copyright (C) 1997-2001, 2003-2023 Free Software Foundation, Inc.
#
@@ -56,6 +56,9 @@ AC_DEFUN([gl_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK],
linux-* | linux)
# Guess yes on Linux systems.
gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
+ midipix*)
+ # Guess yes on systems that emulate the Linux system calls.
+ gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
*-gnu* | gnu*)
# Guess yes on glibc systems.
gl_cv_func_lstat_dereferences_slashed_symlink="guessing yes" ;;
diff --git a/m4/malloc.m4 b/m4/malloc.m4
index 554029243d1..bc580176f5f 100644
--- a/m4/malloc.m4
+++ b/m4/malloc.m4
@@ -1,4 +1,4 @@
-# malloc.m4 serial 28
+# malloc.m4 serial 29
dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -25,7 +25,7 @@ AC_DEFUN([_AC_FUNC_MALLOC_IF],
[case "$host_os" in
# Guess yes on platforms where we know the result.
*-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
- | gnu* | *-musl* | midnightbsd* \
+ | gnu* | *-musl* | midipix* | midnightbsd* \
| hpux* | solaris* | cygwin* | mingw* | msys* )
ac_cv_func_malloc_0_nonnull="guessing yes" ;;
# If we don't know, obey --enable-cross-guesses.
diff --git a/m4/mempcpy.m4 b/m4/mempcpy.m4
index 3ac8a305bde..612b77b3c11 100644
--- a/m4/mempcpy.m4
+++ b/m4/mempcpy.m4
@@ -1,6 +1,6 @@
-# mempcpy.m4 serial 12
-dnl Copyright (C) 2003-2004, 2006-2007, 2009-2023 Free Software
-dnl Foundation, Inc.
+# mempcpy.m4 serial 14
+dnl Copyright (C) 2003-2004, 2006-2007, 2009-2023 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
@@ -14,9 +14,12 @@ AC_DEFUN([gl_FUNC_MEMPCPY],
AC_REQUIRE([AC_C_RESTRICT])
AC_REQUIRE([gl_STRING_H_DEFAULTS])
- AC_CHECK_FUNCS([mempcpy])
+ gl_CHECK_FUNCS_ANDROID([mempcpy], [[#include <string.h>]])
if test $ac_cv_func_mempcpy = no; then
HAVE_MEMPCPY=0
+ case "$gl_cv_onwards_func_mempcpy" in
+ future*) REPLACE_MEMPCPY=1 ;;
+ esac
fi
])
diff --git a/m4/memrchr.m4 b/m4/memrchr.m4
index ed750b7bdf1..7611ac7e3ac 100644
--- a/m4/memrchr.m4
+++ b/m4/memrchr.m4
@@ -1,6 +1,6 @@
# memrchr.m4 serial 11
-dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software
-dnl Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/memset_explicit.m4 b/m4/memset_explicit.m4
new file mode 100644
index 00000000000..9dcd89a758a
--- /dev/null
+++ b/m4/memset_explicit.m4
@@ -0,0 +1,20 @@
+dnl Copyright 2022-2023 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_MEMSET_EXPLICIT],
+[
+ AC_REQUIRE([gl_STRING_H_DEFAULTS])
+
+ AC_CHECK_FUNCS_ONCE([memset_explicit])
+ if test $ac_cv_func_memset_explicit = no; then
+ HAVE_MEMSET_EXPLICIT=0
+ fi
+])
+
+AC_DEFUN([gl_PREREQ_MEMSET_EXPLICIT],
+[
+ AC_CHECK_FUNCS([explicit_memset])
+ AC_CHECK_FUNCS_ONCE([memset_s])
+])
diff --git a/m4/mkostemp.m4 b/m4/mkostemp.m4
index a7cfac4cb87..1b0d0d55946 100644
--- a/m4/mkostemp.m4
+++ b/m4/mkostemp.m4
@@ -1,4 +1,4 @@
-# mkostemp.m4 serial 2
+# mkostemp.m4 serial 4
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,9 +11,12 @@ AC_DEFUN([gl_FUNC_MKOSTEMP],
dnl Persuade glibc <stdlib.h> to declare mkostemp().
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([mkostemp])
+ gl_CHECK_FUNCS_ANDROID([mkostemp], [[#include <stdlib.h>]])
if test $ac_cv_func_mkostemp != yes; then
HAVE_MKOSTEMP=0
+ case "$gl_cv_onwards_func_mkostemp" in
+ future*) REPLACE_MKOSTEMP=1 ;;
+ esac
fi
])
diff --git a/m4/mktime.m4 b/m4/mktime.m4
index 604dd766f5d..e9d31f35a46 100644
--- a/m4/mktime.m4
+++ b/m4/mktime.m4
@@ -1,6 +1,6 @@
# serial 37
-dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software
-dnl Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/nanosleep.m4 b/m4/nanosleep.m4
index 21ee5a21daf..e21a3e343cb 100644
--- a/m4/nanosleep.m4
+++ b/m4/nanosleep.m4
@@ -1,4 +1,4 @@
-# serial 42
+# serial 43
dnl From Jim Meyering.
dnl Check for the nanosleep function.
@@ -25,11 +25,11 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
# Solaris 2.5.1 needs -lposix4 to get the nanosleep function.
# Solaris 7 prefers the library name -lrt to the obsolescent name -lposix4.
- LIB_NANOSLEEP=
- AC_SUBST([LIB_NANOSLEEP])
+ NANOSLEEP_LIB=
+ AC_SUBST([NANOSLEEP_LIB])
AC_SEARCH_LIBS([nanosleep], [rt posix4],
[test "$ac_cv_search_nanosleep" = "none required" ||
- LIB_NANOSLEEP=$ac_cv_search_nanosleep])
+ NANOSLEEP_LIB=$ac_cv_search_nanosleep])
if test "x$ac_cv_search_nanosleep" != xno; then
dnl The system has a nanosleep function.
@@ -143,4 +143,8 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
HAVE_NANOSLEEP=0
fi
LIBS=$nanosleep_save_libs
+
+ # For backward compatibility.
+ LIB_NANOSLEEP="$NANOSLEEP_LIB"
+ AC_SUBST([LIB_NANOSLEEP])
])
diff --git a/m4/nproc.m4 b/m4/nproc.m4
index 3065b7b9bff..c892ad74b7d 100644
--- a/m4/nproc.m4
+++ b/m4/nproc.m4
@@ -1,4 +1,4 @@
-# nproc.m4 serial 5
+# nproc.m4 serial 6
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -25,8 +25,8 @@ AC_DEFUN([gl_PREREQ_NPROC],
#endif
])
- AC_CHECK_FUNCS([sched_getaffinity sched_getaffinity_np \
- pstat_getdynamic sysmp sysctl])
+ AC_CHECK_FUNCS([sched_getaffinity_np pstat_getdynamic sysmp sysctl])
+ gl_CHECK_FUNCS_ANDROID([sched_getaffinity], [[#include <sched.h>]])
dnl Test whether sched_getaffinity has the expected declaration.
dnl glibc 2.3.[0-2]:
diff --git a/m4/nstrftime.m4 b/m4/nstrftime.m4
index 45b89f752a5..04c0b63fbd0 100644
--- a/m4/nstrftime.m4
+++ b/m4/nstrftime.m4
@@ -1,7 +1,6 @@
# serial 37
-# Copyright (C) 1996-1997, 1999-2007, 2009-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 1996-1997, 1999-2007, 2009-2023 Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/pathmax.m4 b/m4/pathmax.m4
index 5b7fa4242bc..6d47d2c026e 100644
--- a/m4/pathmax.m4
+++ b/m4/pathmax.m4
@@ -1,6 +1,6 @@
# pathmax.m4 serial 11
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software
-dnl Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2023 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/pipe2.m4 b/m4/pipe2.m4
index 501f3a4303d..79de69cd1a4 100644
--- a/m4/pipe2.m4
+++ b/m4/pipe2.m4
@@ -1,4 +1,4 @@
-# pipe2.m4 serial 2
+# pipe2.m4 serial 4
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -11,8 +11,13 @@ AC_DEFUN([gl_FUNC_PIPE2],
dnl Persuade glibc <unistd.h> to declare pipe2().
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([pipe2])
+ gl_CHECK_FUNCS_ANDROID([pipe2], [[#include <unistd.h>]])
if test $ac_cv_func_pipe2 != yes; then
HAVE_PIPE2=0
+ case "$gl_cv_onwards_func_pipe2" in
+ future*) REPLACE_PIPE2=1 ;;
+ esac
+ else
+ REPLACE_PIPE2=1
fi
])
diff --git a/m4/pselect.m4 b/m4/pselect.m4
index 9f2b282cee0..6c3d1b8f97f 100644
--- a/m4/pselect.m4
+++ b/m4/pselect.m4
@@ -1,4 +1,4 @@
-# pselect.m4 serial 10
+# pselect.m4 serial 11
dnl Copyright (C) 2011-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -54,6 +54,8 @@ AC_DEFUN([gl_FUNC_PSELECT],
case "$host_os" in
# Guess yes on Linux systems.
linux-* | linux) gl_cv_func_pselect_detects_ebadf="guessing yes" ;;
+ # Guess yes on systems that emulate the Linux system calls.
+ midipix*) gl_cv_func_pselect_detects_ebadf="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_pselect_detects_ebadf="guessing yes" ;;
# If we don't know, obey --enable-cross-guesses.
diff --git a/m4/pthread_sigmask.m4 b/m4/pthread_sigmask.m4
index 5110668155e..27795282bee 100644
--- a/m4/pthread_sigmask.m4
+++ b/m4/pthread_sigmask.m4
@@ -1,4 +1,4 @@
-# pthread_sigmask.m4 serial 21
+# pthread_sigmask.m4 serial 22
dnl Copyright (C) 2011-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -24,7 +24,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
[gl_cv_func_pthread_sigmask_macro=no])
])
- LIB_PTHREAD_SIGMASK=
+ PTHREAD_SIGMASK_LIB=
if test $gl_cv_func_pthread_sigmask_macro = yes; then
dnl pthread_sigmask is a dummy macro.
@@ -62,7 +62,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
])
if test $gl_cv_func_pthread_sigmask_in_LIBMULTITHREAD = yes; then
dnl pthread_sigmask is available with -pthread or -lpthread.
- LIB_PTHREAD_SIGMASK="$LIBMULTITHREAD"
+ PTHREAD_SIGMASK_LIB="$LIBMULTITHREAD"
else
dnl pthread_sigmask is not available at all.
HAVE_PTHREAD_SIGMASK=0
@@ -101,6 +101,9 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
])
fi
+ AC_SUBST([PTHREAD_SIGMASK_LIB])
+ dnl For backward compatibility.
+ LIB_PTHREAD_SIGMASK="$PTHREAD_SIGMASK_LIB"
AC_SUBST([LIB_PTHREAD_SIGMASK])
dnl We don't need a variable LTLIB_PTHREAD_SIGMASK, because when
dnl "$gl_threads_api" = posix, $LTLIBMULTITHREAD and $LIBMULTITHREAD are the
@@ -114,7 +117,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
dnl On FreeBSD 13.0, MidnightBSD 1.1, HP-UX 11.31, Solaris 9, in programs
dnl that are not linked with -lpthread, the pthread_sigmask() function
dnl always returns 0 and has no effect.
- if test -z "$LIB_PTHREAD_SIGMASK"; then
+ if test -z "$PTHREAD_SIGMASK_LIB"; then
case " $LIBS " in
*' -pthread '*) ;;
*' -lpthread '*) ;;
@@ -162,7 +165,7 @@ AC_DEFUN([gl_FUNC_PTHREAD_SIGMASK],
[gl_cv_func_pthread_sigmask_return_works],
[
gl_save_LIBS="$LIBS"
- LIBS="$LIBS $LIB_PTHREAD_SIGMASK"
+ LIBS="$LIBS $PTHREAD_SIGMASK_LIB"
AC_RUN_IFELSE(
[AC_LANG_SOURCE([[
#include <pthread.h>
@@ -208,7 +211,7 @@ int main ()
gl_cv_func_pthread_sigmask_unblock_works="guessing yes";;
esac
m4_ifdef([gl_][THREADLIB],
- [dnl Link against $LIBMULTITHREAD, not only $LIB_PTHREAD_SIGMASK.
+ [dnl Link against $LIBMULTITHREAD, not only $PTHREAD_SIGMASK_LIB.
dnl Otherwise we get a false positive on those platforms where
dnl $gl_cv_func_pthread_sigmask_in_libc_works is "no".
gl_save_LIBS=$LIBS
diff --git a/m4/readlink.m4 b/m4/readlink.m4
index 078b93aa9dc..f1d41d2b113 100644
--- a/m4/readlink.m4
+++ b/m4/readlink.m4
@@ -1,4 +1,4 @@
-# readlink.m4 serial 16
+# readlink.m4 serial 17
dnl Copyright (C) 2003, 2007, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -38,6 +38,9 @@ AC_DEFUN([gl_FUNC_READLINK],
# Guess yes on Linux or glibc systems.
linux-* | linux | *-gnu* | gnu*)
gl_cv_func_readlink_trailing_slash="guessing yes" ;;
+ # Guess yes on systems that emulate the Linux system calls.
+ midipix*)
+ gl_cv_func_readlink_trailing_slash="guessing yes" ;;
# Guess no on AIX or HP-UX.
aix* | hpux*)
gl_cv_func_readlink_trailing_slash="guessing no" ;;
@@ -75,6 +78,9 @@ AC_DEFUN([gl_FUNC_READLINK],
# Guess yes on Linux or glibc systems.
linux-* | linux | *-gnu* | gnu*)
gl_cv_func_readlink_truncate="guessing yes" ;;
+ # Guess yes on systems that emulate the Linux system calls.
+ midipix*)
+ gl_cv_func_readlink_truncate="guessing yes" ;;
# Guess no on AIX or HP-UX.
aix* | hpux*)
gl_cv_func_readlink_truncate="guessing no" ;;
diff --git a/m4/readlinkat.m4 b/m4/readlinkat.m4
index ffd0b8e9bc1..5c513562919 100644
--- a/m4/readlinkat.m4
+++ b/m4/readlinkat.m4
@@ -1,4 +1,4 @@
-# serial 6
+# serial 8
# See if we need to provide readlinkat replacement.
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
@@ -12,10 +12,13 @@ AC_DEFUN([gl_FUNC_READLINKAT],
[
AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
- AC_CHECK_FUNCS_ONCE([readlinkat])
+ gl_CHECK_FUNCS_ANDROID([readlinkat], [[#include <unistd.h>]])
AC_REQUIRE([gl_FUNC_READLINK])
if test $ac_cv_func_readlinkat = no; then
HAVE_READLINKAT=0
+ case "$gl_cv_onwards_func_readlinkat" in
+ future*) REPLACE_READLINKAT=1 ;;
+ esac
else
AC_CACHE_CHECK([whether readlinkat signature is correct],
[gl_cv_decl_readlinkat_works],
diff --git a/m4/realloc.m4 b/m4/realloc.m4
index d22138fc7ac..26053914cbe 100644
--- a/m4/realloc.m4
+++ b/m4/realloc.m4
@@ -1,4 +1,4 @@
-# realloc.m4 serial 26
+# realloc.m4 serial 27
dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -25,7 +25,7 @@ AC_DEFUN([_AC_FUNC_REALLOC_IF],
[case "$host_os" in
# Guess yes on platforms where we know the result.
*-gnu* | freebsd* | netbsd* | openbsd* | bitrig* \
- | gnu* | *-musl* | midnightbsd* \
+ | gnu* | *-musl* | midipix* | midnightbsd* \
| hpux* | solaris* | cygwin* | mingw* | msys* )
ac_cv_func_realloc_0_nonnull="guessing yes" ;;
# If we don't know, obey --enable-cross-guesses.
diff --git a/m4/sig2str.m4 b/m4/sig2str.m4
index 7aad94a9616..aee18efeefd 100644
--- a/m4/sig2str.m4
+++ b/m4/sig2str.m4
@@ -1,6 +1,5 @@
# serial 7
-dnl Copyright (C) 2002, 2005-2006, 2009-2023 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2002, 2005-2006, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/ssize_t.m4 b/m4/ssize_t.m4
index 1b45e9557cc..1c12c33ea09 100644
--- a/m4/ssize_t.m4
+++ b/m4/ssize_t.m4
@@ -1,6 +1,5 @@
# ssize_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2001-2003, 2006, 2010-2023 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2001-2003, 2006, 2010-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/stat-time.m4 b/m4/stat-time.m4
index 5b6b8101098..40993d5731c 100644
--- a/m4/stat-time.m4
+++ b/m4/stat-time.m4
@@ -1,7 +1,7 @@
# Checks for stat-related time functions.
-# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2023 Free
-# Software Foundation, Inc.
+# Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2023 Free Software
+# Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/stdalign.m4 b/m4/stdalign.m4
index b1438eeaced..f49cf8ec162 100644
--- a/m4/stdalign.m4
+++ b/m4/stdalign.m4
@@ -5,9 +5,11 @@ dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
+dnl Written by Paul Eggert and Bruno Haible.
+
# Prepare for substituting <stdalign.h> if it is not supported.
-AC_DEFUN([gl_STDALIGN_H],
+AC_DEFUN([gl_ALIGNASOF],
[
AC_CACHE_CHECK([for alignas and alignof],
[gl_cv_header_working_stdalign_h],
@@ -58,77 +60,141 @@ AC_DEFUN([gl_STDALIGN_H],
test "$gl_cv_header_working_stdalign_h" != no && break
done])
- GL_GENERATE_STDALIGN_H=false
AS_CASE([$gl_cv_header_working_stdalign_h],
- [no],
- [GL_GENERATE_STDALIGN_H=true],
[yes*keyword*],
[AC_DEFINE([HAVE_C_ALIGNASOF], [1],
[Define to 1 if the alignas and alignof keywords work.])])
- AC_CHECK_HEADERS_ONCE([stdalign.h])
-
dnl The "zz" puts this toward config.h's end, to avoid potential
dnl collisions with other definitions.
AH_VERBATIM([zzalignas],
[#if !defined HAVE_C_ALIGNASOF && __cplusplus < 201103 && !defined alignof
# if HAVE_STDALIGN_H
# include <stdalign.h>
-# else
- /* Substitute. Keep consistent with gnulib/lib/stdalign.in.h. */
-# ifndef _GL_STDALIGN_H
-# define _GL_STDALIGN_H
-# undef _Alignas
-# undef _Alignof
-# if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
- || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
- && !defined __clang__) \
- || (defined __clang__ && __clang_major__ < 8))
-# ifdef __cplusplus
-# if (201103 <= __cplusplus || defined _MSC_VER)
-# define _Alignof(type) alignof (type)
-# else
- template <class __t> struct __alignof_helper { char __a; __t __b; };
-# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
-# define _GL_STDALIGN_NEEDS_STDDEF 1
-# endif
+# endif
+
+/* ISO C23 alignas and alignof for platforms that lack it.
+
+ References:
+ ISO C23 (latest free draft
+ <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf>)
+ sections 6.5.3.4, 6.7.5, 7.15.
+ C++11 (latest free draft
+ <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf>)
+ section 18.10. */
+
+/* alignof (TYPE), also known as _Alignof (TYPE), yields the alignment
+ requirement of a structure member (i.e., slot or field) that is of
+ type TYPE, as an integer constant expression.
+
+ This differs from GCC's and clang's __alignof__ operator, which can
+ yield a better-performing alignment for an object of that type. For
+ example, on x86 with GCC and on Linux/x86 with clang,
+ __alignof__ (double) and __alignof__ (long long) are 8, whereas
+ alignof (double) and alignof (long long) are 4 unless the option
+ '-malign-double' is used.
+
+ The result cannot be used as a value for an 'enum' constant, if you
+ want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
+
+/* GCC releases before GCC 4.9 had a bug in _Alignof. See GCC bug 52023
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023>.
+ clang versions < 8.0.0 have the same bug. */
+# if (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112 \
+ || (defined __GNUC__ && __GNUC__ < 4 + (__GNUC_MINOR__ < 9) \
+ && !defined __clang__) \
+ || (defined __clang__ && __clang_major__ < 8))
+# undef/**/_Alignof
+# ifdef __cplusplus
+# if (201103 <= __cplusplus || defined _MSC_VER)
+# define _Alignof(type) alignof (type)
# else
-# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+ template <class __t> struct __alignof_helper { char __a; __t __b; };
+# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
# define _GL_STDALIGN_NEEDS_STDDEF 1
# endif
-# endif
-# if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))
-# define alignof _Alignof
-# endif
-# define __alignof_is_defined 1
-# if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
-# if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)
-# define _Alignas(a) alignas (a)
-# elif (!defined __attribute__ \
- && ((defined __APPLE__ && defined __MACH__ \
- ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \
- : __GNUC__ && !defined __ibmxl__) \
- || (4 <= __clang_major__) \
- || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \
- || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__))
-# define _Alignas(a) __attribute__ ((__aligned__ (a)))
-# elif 1300 <= _MSC_VER
-# define _Alignas(a) __declspec (align (a))
+# else
+# if (defined __GNUC__ && 4 <= __GNUC__) || defined __clang__
+# define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b)
+# else
+# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+# define _GL_STDALIGN_NEEDS_STDDEF 1
# endif
# endif
-# if ((defined _Alignas \
- && !(defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))) \
- || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
-# define alignas _Alignas
-# endif
-# if (defined alignas \
- || (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)))
-# define __alignas_is_defined 1
-# endif
-# if _GL_STDALIGN_NEEDS_STDDEF
-# include <stddef.h>
+# endif
+# if ! (defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER))
+# undef/**/alignof
+# define alignof _Alignof
+# endif
+
+/* alignas (A), also known as _Alignas (A), aligns a variable or type
+ to the alignment A, where A is an integer constant expression. For
+ example:
+
+ int alignas (8) foo;
+ struct s { int a; int alignas (8) bar; };
+
+ aligns the address of FOO and the offset of BAR to be multiples of 8.
+
+ A should be a power of two that is at least the type's alignment
+ and at most the implementation's alignment limit. This limit is
+ 2**28 on typical GNUish hosts, and 2**13 on MSVC. To be portable
+ to MSVC through at least version 10.0, A should be an integer
+ constant, as MSVC does not support expressions such as 1 << 3.
+ To be portable to Sun C 5.11, do not align auto variables to
+ anything stricter than their default alignment.
+
+ The following C23 requirements are not supported here:
+
+ - If A is zero, alignas has no effect.
+ - alignas can be used multiple times; the strictest one wins.
+ - alignas (TYPE) is equivalent to alignas (alignof (TYPE)).
+
+ */
+# if !HAVE_STDALIGN_H
+# if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112
+# if defined __cplusplus && (201103 <= __cplusplus || defined _MSC_VER)
+# define _Alignas(a) alignas (a)
+# elif (!defined __attribute__ \
+ && ((defined __APPLE__ && defined __MACH__ \
+ ? 4 < __GNUC__ + (1 <= __GNUC_MINOR__) \
+ : __GNUC__ && !defined __ibmxl__) \
+ || (4 <= __clang_major__) \
+ || (__ia64 && (61200 <= __HP_cc || 61200 <= __HP_aCC)) \
+ || __ICC || 0x590 <= __SUNPRO_C || 0x0600 <= __xlC__))
+# define _Alignas(a) __attribute__ ((__aligned__ (a)))
+# elif 1300 <= _MSC_VER
+# define _Alignas(a) __declspec (align (a))
# endif
-# endif /* _GL_STDALIGN_H */
+# endif
+# if ((defined _Alignas \
+ && !(defined __cplusplus \
+ && (201103 <= __cplusplus || defined _MSC_VER))) \
+ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
+# define alignas _Alignas
+# endif
+# endif
+
+# if _GL_STDALIGN_NEEDS_STDDEF
+# include <stddef.h>
# endif
#endif])
])
+
+AC_DEFUN([gl_STDALIGN_H],
+[
+ AC_REQUIRE([gl_ALIGNASOF])
+ if test "$gl_cv_header_working_stdalign_h" = no; then
+ GL_GENERATE_STDALIGN_H=true
+ else
+ GL_GENERATE_STDALIGN_H=false
+ fi
+
+ gl_CHECK_NEXT_HEADERS([stdalign.h])
+ if test $ac_cv_header_stdalign_h = yes; then
+ HAVE_STDALIGN_H=1
+ else
+ HAVE_STDALIGN_H=0
+ fi
+ AC_SUBST([HAVE_STDALIGN_H])
+])
diff --git a/m4/stddef_h.m4 b/m4/stddef_h.m4
index c0553d6f2ff..a2322ebb7ee 100644
--- a/m4/stddef_h.m4
+++ b/m4/stddef_h.m4
@@ -1,4 +1,4 @@
-# stddef_h.m4 serial 12
+# stddef_h.m4 serial 13
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -22,7 +22,14 @@ AC_DEFUN_ONCE([gl_STDDEF_H],
[gl_cv_type_max_align_t],
[AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
- [[#include <stddef.h>
+ [[/* On FreeBSD 12.0/x86, max_align_t defined by <stddef.h> has
+ the correct alignment with the default (wrong) definition of
+ _Alignof, but a wrong alignment as soon as we activate an
+ ISO C compliant _Alignof definition. */
+ #if ((defined __GNUC__ && 4 <= __GNUC__) || defined __clang__) && !defined __cplusplus
+ #define _Alignof(type) __builtin_offsetof (struct { char __a; type __b; }, __b)
+ #endif
+ #include <stddef.h>
unsigned int s = sizeof (max_align_t);
#if defined __GNUC__ || defined __clang__ || defined __IBM__ALIGNOF__
int check1[2 * (__alignof__ (double) <= __alignof__ (max_align_t)) - 1];
diff --git a/m4/stdio_h.m4 b/m4/stdio_h.m4
index 94271e11e78..07569961f8b 100644
--- a/m4/stdio_h.m4
+++ b/m4/stdio_h.m4
@@ -1,4 +1,4 @@
-# stdio_h.m4 serial 59
+# stdio_h.m4 serial 61
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -82,6 +82,16 @@ AC_DEFUN_ONCE([gl_STDIO_H],
if test $ac_cv_have_decl_fcloseall = no; then
HAVE_DECL_FCLOSEALL=0
fi
+
+ AC_CHECK_DECLS_ONCE([getw])
+ if test $ac_cv_have_decl_getw = no; then
+ HAVE_DECL_GETW=0
+ fi
+
+ AC_CHECK_DECLS_ONCE([putw])
+ if test $ac_cv_have_decl_putw = no; then
+ HAVE_DECL_PUTW=0
+ fi
])
# gl_STDIO_MODULE_INDICATOR([modulename])
@@ -178,7 +188,9 @@ AC_DEFUN([gl_STDIO_H_DEFAULTS],
HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO])
HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
+ HAVE_DECL_GETW=1; AC_SUBST([HAVE_DECL_GETW])
HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
+ HAVE_DECL_PUTW=1; AC_SUBST([HAVE_DECL_PUTW])
HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
diff --git a/m4/stdlib_h.m4 b/m4/stdlib_h.m4
index e96be22f583..249ef657224 100644
--- a/m4/stdlib_h.m4
+++ b/m4/stdlib_h.m4
@@ -1,4 +1,4 @@
-# stdlib_h.m4 serial 66
+# stdlib_h.m4 serial 71
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -23,7 +23,7 @@ AC_DEFUN_ONCE([gl_STDLIB_H],
# include <random.h>
#endif
]], [_Exit aligned_alloc atoll canonicalize_file_name free
- getloadavg getsubopt grantpt
+ getloadavg getprogname getsubopt grantpt
initstate initstate_r mbtowc mkdtemp mkostemp mkostemps mkstemp mkstemps
posix_memalign posix_openpt ptsname ptsname_r qsort_r
random random_r reallocarray realpath rpmatch secure_getenv setenv
@@ -73,6 +73,7 @@ AC_DEFUN([gl_STDLIB_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CANONICALIZE_FILE_NAME])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREE_POSIX])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETLOADAVG])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETPROGNAME])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GETSUBOPT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_GRANTPT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MALLOC_GNU])
@@ -130,6 +131,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
HAVE_DECL_FCVT=1; AC_SUBST([HAVE_DECL_FCVT])
HAVE_DECL_GCVT=1; AC_SUBST([HAVE_DECL_GCVT])
HAVE_DECL_GETLOADAVG=1; AC_SUBST([HAVE_DECL_GETLOADAVG])
+ HAVE_GETPROGNAME=1; AC_SUBST([HAVE_GETPROGNAME])
HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
HAVE_GRANTPT=1; AC_SUBST([HAVE_GRANTPT])
HAVE_INITSTATE=1; AC_SUBST([HAVE_INITSTATE])
@@ -166,17 +168,24 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H])
HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT])
HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV])
+ REPLACE__EXIT=0; AC_SUBST([REPLACE__EXIT])
REPLACE_ALIGNED_ALLOC=0; AC_SUBST([REPLACE_ALIGNED_ALLOC])
REPLACE_CALLOC_FOR_CALLOC_GNU=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_GNU])
REPLACE_CALLOC_FOR_CALLOC_POSIX=0; AC_SUBST([REPLACE_CALLOC_FOR_CALLOC_POSIX])
REPLACE_CANONICALIZE_FILE_NAME=0; AC_SUBST([REPLACE_CANONICALIZE_FILE_NAME])
REPLACE_FREE=0; AC_SUBST([REPLACE_FREE])
+ REPLACE_GETLOADAVG=0; AC_SUBST([REPLACE_GETLOADAVG])
+ REPLACE_GETPROGNAME=0; AC_SUBST([REPLACE_GETPROGNAME])
+ REPLACE_GETSUBOPT=0; AC_SUBST([REPLACE_GETSUBOPT])
REPLACE_INITSTATE=0; AC_SUBST([REPLACE_INITSTATE])
REPLACE_MALLOC_FOR_MALLOC_GNU=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_GNU])
REPLACE_MALLOC_FOR_MALLOC_POSIX=0; AC_SUBST([REPLACE_MALLOC_FOR_MALLOC_POSIX])
REPLACE_MBTOWC=0; AC_SUBST([REPLACE_MBTOWC])
+ REPLACE_MKOSTEMP=0; AC_SUBST([REPLACE_MKOSTEMP])
+ REPLACE_MKOSTEMPS=0; AC_SUBST([REPLACE_MKOSTEMPS])
REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
REPLACE_POSIX_MEMALIGN=0; AC_SUBST([REPLACE_POSIX_MEMALIGN])
+ REPLACE_POSIX_OPENPT=0; AC_SUBST([REPLACE_POSIX_OPENPT])
REPLACE_PTSNAME=0; AC_SUBST([REPLACE_PTSNAME])
REPLACE_PTSNAME_R=0; AC_SUBST([REPLACE_PTSNAME_R])
REPLACE_PUTENV=0; AC_SUBST([REPLACE_PUTENV])
diff --git a/m4/stpcpy.m4 b/m4/stpcpy.m4
index e8a76bc34f3..f3acbee7be9 100644
--- a/m4/stpcpy.m4
+++ b/m4/stpcpy.m4
@@ -1,4 +1,4 @@
-# stpcpy.m4 serial 9
+# stpcpy.m4 serial 11
dnl Copyright (C) 2002, 2007, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -13,9 +13,12 @@ AC_DEFUN([gl_FUNC_STPCPY],
AC_REQUIRE([AC_C_RESTRICT])
AC_REQUIRE([gl_STRING_H_DEFAULTS])
- AC_CHECK_FUNCS([stpcpy])
+ gl_CHECK_FUNCS_ANDROID([stpcpy], [[#include <string.h>]])
if test $ac_cv_func_stpcpy = no; then
HAVE_STPCPY=0
+ case "$gl_cv_onwards_func_stpcpy" in
+ future*) REPLACE_STPCPY=1 ;;
+ esac
fi
])
diff --git a/m4/string_h.m4 b/m4/string_h.m4
index 15401e129cd..7f51391cbff 100644
--- a/m4/string_h.m4
+++ b/m4/string_h.m4
@@ -5,7 +5,7 @@
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
-# serial 34
+# serial 37
# Written by Paul Eggert.
@@ -21,7 +21,8 @@ AC_DEFUN_ONCE([gl_STRING_H],
dnl guaranteed by C89.
gl_WARN_ON_USE_PREPARE([[#include <string.h>
]],
- [ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul
+ [explicit_bzero ffsl ffsll memmem mempcpy memrchr memset_explicit
+ rawmemchr stpcpy stpncpy strchrnul
strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r
strerror_r strerrorname_np sigabbrev_np sigdescr_np strsignal strverscmp])
@@ -54,6 +55,7 @@ AC_DEFUN([gl_STRING_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMMEM])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMPCPY])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMRCHR])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MEMSET_EXPLICIT])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RAWMEMCHR])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPCPY])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STPNCPY])
@@ -107,6 +109,7 @@ AC_DEFUN([gl_STRING_H_DEFAULTS],
HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL])
HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM])
HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY])
+ HAVE_MEMSET_EXPLICIT=1; AC_SUBST([HAVE_MEMSET_EXPLICIT])
HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR])
HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR])
HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY])
@@ -128,6 +131,8 @@ AC_DEFUN([gl_STRING_H_DEFAULTS],
REPLACE_FFSLL=0; AC_SUBST([REPLACE_FFSLL])
REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR])
REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM])
+ REPLACE_MEMPCPY=0; AC_SUBST([REPLACE_MEMPCPY])
+ REPLACE_STPCPY=0; AC_SUBST([REPLACE_STPCPY])
REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY])
REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL])
REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP])
diff --git a/m4/strnlen.m4 b/m4/strnlen.m4
index 60e8d81bf3b..d2cac59b6f2 100644
--- a/m4/strnlen.m4
+++ b/m4/strnlen.m4
@@ -1,6 +1,6 @@
# strnlen.m4 serial 14
-dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software
-dnl Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2023 Free Software Foundation,
+dnl Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4
index 1c6ddd386a5..db5cfb7aa9d 100644
--- a/m4/strtoimax.m4
+++ b/m4/strtoimax.m4
@@ -1,6 +1,5 @@
# strtoimax.m4 serial 16
-dnl Copyright (C) 2002-2004, 2006, 2009-2023 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2002-2004, 2006, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/strtoll.m4 b/m4/strtoll.m4
index 1e042175b18..ede630c6061 100644
--- a/m4/strtoll.m4
+++ b/m4/strtoll.m4
@@ -1,6 +1,5 @@
# strtoll.m4 serial 9
-dnl Copyright (C) 2002, 2004, 2006, 2008-2023 Free Software Foundation,
-dnl Inc.
+dnl Copyright (C) 2002, 2004, 2006, 2008-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/symlink.m4 b/m4/symlink.m4
index 7796ec8bbc0..52d6c115ca5 100644
--- a/m4/symlink.m4
+++ b/m4/symlink.m4
@@ -1,4 +1,4 @@
-# serial 9
+# serial 10
# See if we need to provide symlink replacement.
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
@@ -38,6 +38,8 @@ AC_DEFUN([gl_FUNC_SYMLINK],
[case "$host_os" in
# Guess yes on Linux systems.
linux-* | linux) gl_cv_func_symlink_works="guessing yes" ;;
+ # Guess yes on systems that emulate the Linux system calls.
+ midipix*) gl_cv_func_symlink_works="guessing yes" ;;
# Guess yes on glibc systems.
*-gnu* | gnu*) gl_cv_func_symlink_works="guessing yes" ;;
# If we don't know, obey --enable-cross-guesses.
diff --git a/m4/time_h.m4 b/m4/time_h.m4
index fd4a469d192..51d553a2f1a 100644
--- a/m4/time_h.m4
+++ b/m4/time_h.m4
@@ -1,9 +1,8 @@
# Configure a more-standard replacement for <time.h>.
-# Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc.
-# serial 20
+# serial 22
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
@@ -138,6 +137,7 @@ AC_DEFUN([gl_TIME_H_REQUIRE_DEFAULTS],
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_NANOSLEEP])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRFTIME])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_STRPTIME])
+ gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIME])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMEGM])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GET])
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TIMESPEC_GETRES])
@@ -170,7 +170,9 @@ AC_DEFUN([gl_TIME_H_DEFAULTS],
REPLACE_MKTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_MKTIME])
REPLACE_NANOSLEEP=GNULIB_PORTCHECK; AC_SUBST([REPLACE_NANOSLEEP])
REPLACE_STRFTIME=GNULIB_PORTCHECK; AC_SUBST([REPLACE_STRFTIME])
+ REPLACE_TIME=0; AC_SUBST([REPLACE_TIME])
REPLACE_TIMEGM=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMEGM])
+ REPLACE_TIMESPEC_GET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TIMESPEC_GET])
REPLACE_TZSET=GNULIB_PORTCHECK; AC_SUBST([REPLACE_TZSET])
dnl Hack so that the time module doesn't depend on the sys_time module.
diff --git a/m4/timegm.m4 b/m4/timegm.m4
index 6079f1a39c8..8ab265e65fe 100644
--- a/m4/timegm.m4
+++ b/m4/timegm.m4
@@ -1,4 +1,4 @@
-# timegm.m4 serial 13
+# timegm.m4 serial 15
dnl Copyright (C) 2003, 2007, 2009-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -9,7 +9,7 @@ AC_DEFUN([gl_FUNC_TIMEGM],
AC_REQUIRE([gl_TIME_H_DEFAULTS])
AC_REQUIRE([gl_FUNC_MKTIME_WORKS])
REPLACE_TIMEGM=0
- AC_CHECK_FUNCS_ONCE([timegm])
+ gl_CHECK_FUNCS_ANDROID([timegm], [[#include <time.h>]])
if test $ac_cv_func_timegm = yes; then
if test "$gl_cv_func_working_mktime" != yes; then
# Assume that timegm is buggy if mktime is.
@@ -17,6 +17,9 @@ AC_DEFUN([gl_FUNC_TIMEGM],
fi
else
HAVE_TIMEGM=0
+ case "$gl_cv_onwards_func_timegm" in
+ future*) REPLACE_TIMEGM=1 ;;
+ esac
fi
])
diff --git a/m4/timer_time.m4 b/m4/timer_time.m4
index 4c2608b58e8..437d1dc5428 100644
--- a/m4/timer_time.m4
+++ b/m4/timer_time.m4
@@ -1,10 +1,10 @@
-# timer_time.m4 serial 5
+# timer_time.m4 serial 6
dnl Copyright (C) 2011-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-# Check for timer_settime, and set LIB_TIMER_TIME.
+# Check for timer_settime, and set TIMER_TIME_LIB.
AC_DEFUN([gl_TIMER_TIME],
[
@@ -21,13 +21,13 @@ AC_DEFUN([gl_TIMER_TIME],
AC_CHECK_DECL([timer_settime], [], [],
[[#include <time.h>
]])
- LIB_TIMER_TIME=
- AC_SUBST([LIB_TIMER_TIME])
+ TIMER_TIME_LIB=
+ AC_SUBST([TIMER_TIME_LIB])
AS_IF([test "$ac_cv_have_decl_timer_settime" = yes], [
gl_saved_libs=$LIBS
AC_SEARCH_LIBS([timer_settime], [rt posix4],
[test "$ac_cv_search_timer_settime" = "none required" ||
- LIB_TIMER_TIME=$ac_cv_search_timer_settime])
+ TIMER_TIME_LIB=$ac_cv_search_timer_settime])
m4_ifdef([gl_][PTHREADLIB],
[dnl GLIBC uses threads to emulate posix timers when kernel support
dnl is not available (like Linux < 2.6 or when used with kFreeBSD)
@@ -42,8 +42,11 @@ AC_DEFUN([gl_TIMER_TIME],
#endif
#endif
],
- [LIB_TIMER_TIME="$LIB_TIMER_TIME $LIBPMULTITHREAD"])])
+ [TIMER_TIME_LIB="$TIMER_TIME_LIB $LIBPMULTITHREAD"])])
AC_CHECK_FUNCS([timer_settime])
LIBS=$gl_saved_libs
])
+ dnl For backward compatibility.
+ LIB_TIMER_TIME="$TIMER_TIME_LIB"
+ AC_SUBST([LIB_TIMER_TIME])
])
diff --git a/m4/timespec.m4 b/m4/timespec.m4
index 354530319fe..95f475f2cc5 100644
--- a/m4/timespec.m4
+++ b/m4/timespec.m4
@@ -1,7 +1,6 @@
#serial 15
-# Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software
-# Foundation, Inc.
+# Copyright (C) 2000-2001, 2003-2007, 2009-2023 Free Software Foundation, Inc.
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
diff --git a/m4/unistd_h.m4 b/m4/unistd_h.m4
index f4384027e37..1c96158155a 100644
--- a/m4/unistd_h.m4
+++ b/m4/unistd_h.m4
@@ -1,4 +1,4 @@
-# unistd_h.m4 serial 90
+# unistd_h.m4 serial 94
dnl Copyright (C) 2006-2023 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -225,6 +225,7 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
REPLACE_COPY_FILE_RANGE=0; AC_SUBST([REPLACE_COPY_FILE_RANGE])
REPLACE_DUP=0; AC_SUBST([REPLACE_DUP])
REPLACE_DUP2=0; AC_SUBST([REPLACE_DUP2])
+ REPLACE_DUP3=0; AC_SUBST([REPLACE_DUP3])
REPLACE_EXECL=0; AC_SUBST([REPLACE_EXECL])
REPLACE_EXECLE=0; AC_SUBST([REPLACE_EXECLE])
REPLACE_EXECLP=0; AC_SUBST([REPLACE_EXECLP])
@@ -234,10 +235,12 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
REPLACE_EXECVPE=0; AC_SUBST([REPLACE_EXECVPE])
REPLACE_FACCESSAT=0; AC_SUBST([REPLACE_FACCESSAT])
REPLACE_FCHOWNAT=0; AC_SUBST([REPLACE_FCHOWNAT])
+ REPLACE_FDATASYNC=0; AC_SUBST([REPLACE_FDATASYNC])
REPLACE_FTRUNCATE=0; AC_SUBST([REPLACE_FTRUNCATE])
REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
REPLACE_GETDOMAINNAME=0; AC_SUBST([REPLACE_GETDOMAINNAME])
REPLACE_GETDTABLESIZE=0; AC_SUBST([REPLACE_GETDTABLESIZE])
+ REPLACE_GETENTROPY=0; AC_SUBST([REPLACE_GETENTROPY])
REPLACE_GETLOGIN_R=0; AC_SUBST([REPLACE_GETLOGIN_R])
REPLACE_GETGROUPS=0; AC_SUBST([REPLACE_GETGROUPS])
REPLACE_GETPAGESIZE=0; AC_SUBST([REPLACE_GETPAGESIZE])
@@ -248,12 +251,14 @@ AC_DEFUN([gl_UNISTD_H_DEFAULTS],
REPLACE_LINK=0; AC_SUBST([REPLACE_LINK])
REPLACE_LINKAT=0; AC_SUBST([REPLACE_LINKAT])
REPLACE_LSEEK=0; AC_SUBST([REPLACE_LSEEK])
+ REPLACE_PIPE2=0; AC_SUBST([REPLACE_PIPE2])
REPLACE_PREAD=0; AC_SUBST([REPLACE_PREAD])
REPLACE_PWRITE=0; AC_SUBST([REPLACE_PWRITE])
REPLACE_READ=0; AC_SUBST([REPLACE_READ])
REPLACE_READLINK=0; AC_SUBST([REPLACE_READLINK])
REPLACE_READLINKAT=0; AC_SUBST([REPLACE_READLINKAT])
REPLACE_RMDIR=0; AC_SUBST([REPLACE_RMDIR])
+ REPLACE_SETHOSTNAME=0; AC_SUBST([REPLACE_SETHOSTNAME])
REPLACE_SLEEP=0; AC_SUBST([REPLACE_SLEEP])
REPLACE_SYMLINK=0; AC_SUBST([REPLACE_SYMLINK])
REPLACE_SYMLINKAT=0; AC_SUBST([REPLACE_SYMLINKAT])
diff --git a/m4/utimens.m4 b/m4/utimens.m4
index ae35ef789b8..5f8606167a6 100644
--- a/m4/utimens.m4
+++ b/m4/utimens.m4
@@ -3,7 +3,7 @@ dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
dnl with or without modifications, as long as this notice is preserved.
-dnl serial 11
+dnl serial 15
AC_DEFUN([gl_UTIMENS],
[
@@ -11,7 +11,11 @@ AC_DEFUN([gl_UTIMENS],
AC_REQUIRE([gl_FUNC_UTIMES])
AC_REQUIRE([gl_CHECK_TYPE_STRUCT_TIMESPEC])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
- AC_CHECK_FUNCS_ONCE([futimes futimesat futimens utimensat lutimes])
+ gl_CHECK_FUNCS_ANDROID([futimes], [[#include <sys/time.h>]])
+ gl_CHECK_FUNCS_ANDROID([futimesat], [[#include <sys/time.h>]])
+ gl_CHECK_FUNCS_ANDROID([lutimes], [[#include <sys/time.h>]])
+ gl_CHECK_FUNCS_ANDROID([futimens], [[#include <sys/stat.h>]])
+ gl_CHECK_FUNCS_ANDROID([utimensat], [[#include <sys/stat.h>]])
if test $ac_cv_func_futimens = no && test $ac_cv_func_futimesat = yes; then
dnl FreeBSD 8.0-rc2 mishandles futimesat(fd,NULL,time). It is not
diff --git a/m4/utimensat.m4 b/m4/utimensat.m4
index dd210fc989a..1a670bb7b78 100644
--- a/m4/utimensat.m4
+++ b/m4/utimensat.m4
@@ -1,4 +1,4 @@
-# serial 9
+# serial 11
# See if we need to provide utimensat replacement.
dnl Copyright (C) 2009-2023 Free Software Foundation, Inc.
@@ -13,9 +13,12 @@ AC_DEFUN([gl_FUNC_UTIMENSAT],
AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
- AC_CHECK_FUNCS_ONCE([utimensat])
+ gl_CHECK_FUNCS_ANDROID([utimensat], [[#include <sys/stat.h>]])
if test $ac_cv_func_utimensat = no; then
HAVE_UTIMENSAT=0
+ case "$gl_cv_onwards_func_utimensat" in
+ future*) REPLACE_UTIMENSAT=1 ;;
+ esac
else
AC_CACHE_CHECK([whether utimensat works],
[gl_cv_func_utimensat_works],
diff --git a/m4/xattr.m4 b/m4/xattr.m4
new file mode 100644
index 00000000000..0e179cc0d1d
--- /dev/null
+++ b/m4/xattr.m4
@@ -0,0 +1,53 @@
+# xattr.m4 - check for Extended Attributes (Linux)
+# serial 6
+
+# Copyright (C) 2003-2023 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_XATTR],
+[
+ AC_ARG_ENABLE([xattr],
+ AS_HELP_STRING([--disable-xattr],
+ [do not support extended attributes]),
+ [use_xattr=$enableval], [use_xattr=yes])
+
+ LIB_XATTR=
+ AC_SUBST([LIB_XATTR])
+
+ if test "$use_xattr" = yes; then
+ AC_CACHE_CHECK([for xattr library with ATTR_ACTION_PERMISSIONS],
+ [gl_cv_xattr_lib],
+ [gl_cv_xattr_lib=no
+ AC_LANG_CONFTEST(
+ [AC_LANG_PROGRAM(
+ [[#include <attr/error_context.h>
+ #include <attr/libattr.h>
+ static int
+ is_attr_permissions (const char *name, struct error_context *ctx)
+ {
+ return attr_copy_action (name, ctx) == ATTR_ACTION_PERMISSIONS;
+ }
+ ]],
+ [[return attr_copy_fd ("/", 0, "/", 0, is_attr_permissions, 0);
+ ]])])
+ AC_LINK_IFELSE([],
+ [gl_cv_xattr_lib='none required'],
+ [xattr_saved_LIBS=$LIBS
+ LIBS="-lattr $LIBS"
+ AC_LINK_IFELSE([], [gl_cv_xattr_lib=-lattr])
+ LIBS=$xattr_saved_LIBS])])
+ if test "$gl_cv_xattr_lib" = no; then
+ AC_MSG_WARN([libattr development library was not found or not usable.])
+ AC_MSG_WARN([AC_PACKAGE_NAME will be built without xattr support.])
+ use_xattr=no
+ elif test "$gl_cv_xattr_lib" != 'none required'; then
+ LIB_XATTR=$gl_cv_xattr_lib
+ fi
+ fi
+ if test "$use_xattr" = yes; then
+ AC_DEFINE([USE_XATTR], [1],
+ [Define to 1 to use the Linux extended attributes library.])
+ fi
+])
diff --git a/msdos/autogen/Makefile.in b/msdos/autogen/Makefile.in
index 7f44c9867fe..df9b7797989 100644
--- a/msdos/autogen/Makefile.in
+++ b/msdos/autogen/Makefile.in
@@ -921,13 +921,11 @@ LIBXT_OTHER = @LIBXT_OTHER@
LIBX_OTHER = @LIBX_OTHER@
LIBZ = @LIBZ@
LIB_ACL = @LIB_ACL@
-LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
-LIB_EACCESS = @LIB_EACCESS@
+CLOCK_TIME_LIB = @CLOCK_TIME_LIB@
+EUIDACCESS_LIBGEN = @EUIDACCESS_LIBGEN@
LIB_EXECINFO = @LIB_EXECINFO@
-LIB_FDATASYNC = @LIB_FDATASYNC@
LIB_MATH = @LIB_MATH@
LIB_PTHREAD = @LIB_PTHREAD@
-LIB_PTHREAD_SIGMASK = @LIB_PTHREAD_SIGMASK@
LIB_TIMER_TIME = @LIB_TIMER_TIME@
LIB_WSOCK32 = @LIB_WSOCK32@
LN_S_FILEONLY = @LN_S_FILEONLY@
diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp
index 4d4c80a6b1a..162ccb3e8d8 100644
--- a/msdos/sed1v2.inp
+++ b/msdos/sed1v2.inp
@@ -48,9 +48,8 @@ s/\.h\.in/.h-in/
/^LIB_MATH *=/s/@LIB_MATH@/-lm/
/^LIB_PTHREAD *=/s/@LIB_PTHREAD@//
/^LIB_ACL *=/s/@LIB_ACL@//
-/^LIB_EACCESS *=/s/@LIB_EACCESS@//
-/^LIB_FDATASYNC *=/s/@LIB_FDATASYNC@//
-/^LIB_NANOSLEEP *=/s/@LIB_NANOSLEEP@//
+/^EUIDACCESS_LIBGEN *=/s/@EUIDACCESS_LIBGEN@//
+/^NANOSLEEP_LIB *=/s/@NANOSLEEP_LIB@//
s/ *@LIBTIFF@//
s/ *@LIBJPEG@//
s/ *@LIBPNG@//
@@ -140,7 +139,7 @@ s/ *@WEBP_LIBS@//
/^LIBSELINUX_LIBS *=/s/@LIBSELINUX_LIBS@//
/^LIBSYSTEMD_LIBS *=/s/@LIBSYSTEMD_LIBS@//
/^LIBSYSTEMD_CFLAGS *=/s/@LIBSYSTEMD_CFLAGS@//
-/^LIB_CLOCK_GETTIME *=/s/@[^@\n]*@//g
+/^CLOCK_TIME_LIB *=/s/@[^@\n]*@//g
/^LIB_TIMER_TIME *=/s/@[^@\n]*@//g
/^LIB_EXECINFO *=/s/@[^@\n]*@//g
/^LIBGNUTLS_LIBS *=/s/@[^@\n]*@//
@@ -183,6 +182,7 @@ s/ *@WEBP_LIBS@//
/^TREE_SITTER_CFLAGS *=/s/@TREE_SITTER_CFLAGS@//
/^HARFBUZZ_CFLAGS *=/s/@HARFBUZZ_CFLAGS@//
/^HARFBUZZ_LIBS *=/s/@HARFBUZZ_LIBS@//
+/^QCOPY_ACL_LIB *=/s/@QCOPY_ACL_LIB@//
/^LCMS2_CFLAGS *=/s/@LCMS2_CFLAGS@//
/^LCMS2_LIBS *=/s/@LCMS2_LIBS@//
/^LIBGMP *=/s/@LIBGMP@//
diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp
index 9b68359e034..58c1663dda0 100644
--- a/msdos/sed2v2.inp
+++ b/msdos/sed2v2.inp
@@ -67,7 +67,7 @@
/^#undef PACKAGE_NAME/s/^.*$/#define PACKAGE_NAME ""/
/^#undef PACKAGE_STRING/s/^.*$/#define PACKAGE_STRING ""/
/^#undef PACKAGE_TARNAME/s/^.*$/#define PACKAGE_TARNAME ""/
-/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "29.0.90"/
+/^#undef PACKAGE_VERSION/s/^.*$/#define PACKAGE_VERSION "30.0.50"/
/^#undef SYSTEM_TYPE/s/^.*$/#define SYSTEM_TYPE "ms-dos"/
/^#undef HAVE_DECL_GETENV/s/^.*$/#define HAVE_DECL_GETENV 1/
/^#undef SYS_SIGLIST_DECLARED/s/^.*$/#define SYS_SIGLIST_DECLARED 1/
diff --git a/msdos/sed3v2.inp b/msdos/sed3v2.inp
index dc9eaff27c8..9688a27b066 100644
--- a/msdos/sed3v2.inp
+++ b/msdos/sed3v2.inp
@@ -32,9 +32,9 @@
/^LIBRESOLV *=/s/@[^@\n]*@//g
/^LIBS_MAIL *=/s/@[^@\n]*@//g
/^LIBS_SYSTEM *=/s/@[^@\n]*@//g
-/^LIB_CLOCK_GETTIME *=/s/@[^@\n]*@//g
+/^CLOCK_TIME_LIB *=/s/@[^@\n]*@//g
/^LIB_TIMER_TIME *=/s/@[^@\n]*@//g
-/^LIB_GETRANDOM *=/s/@[^@\n]*@//g
+/^GETRANDOM_LIB *=/s/@[^@\n]*@//g
/^CFLAGS *=/s!=.*$!=-O2 -g!
/^CPPFLAGS *=/s/@CPPFLAGS@//
/^LDFLAGS *=/s/@LDFLAGS@//
@@ -49,7 +49,6 @@
/^ALLOCA *=/s!@ALLOCA@!!
/^EXEEXT *=/s!@EXEEXT@!.exe!
/^CLIENTW *=/s/@CLIENTW@//
-/^LIB_FDATASYNC *=/s/@LIB_FDATASYNC@//
/^LIB_WSOCK32 *=/s/@LIB_WSOCK32@//
/^LIBS_ECLIENT *=/s/@LIBS_ECLIENT@//
/^NTLIB *=/s/@NTLIB@//
diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp
index 497aedb2096..c3f410bd74d 100644
--- a/msdos/sedlibmk.inp
+++ b/msdos/sedlibmk.inp
@@ -270,7 +270,6 @@ s/@PACKAGE@/emacs/
/^LDFLAGS *=/s/@[^@\n]*@//
/^LD_FIRSTFLAG *=/s/@[^@\n]*@//
/^LIB_PTHREAD *=/s/@[^@\n]*@//
-/^LIB_PTHREAD_SIGMASK *=/s/@[^@\n]*@//
/^LIBS *=/s/@[^@\n]*@//
/^MAKEINFO *=/s/@MAKEINFO@/makeinfo/
# MKDIR_P lines are edited further below
@@ -323,7 +322,7 @@ s/@PACKAGE@/emacs/
/^REPLACE_MKTIME *=/s/@[^@\n]*@/1/
# We don't want any other gnulib replacement functions
/^REPLACE_[^ =]* *= *@/s/@[^@\n]*@/0/
-/^LIB_GETRANDOM[^ =]* *= *@/s/@[^@\n]*@//
+/^GETRANDOM_LIB[^ =]* *= *@/s/@[^@\n]*@//
/^SIG_ATOMIC_T_SUFFIX *=/s/@SIG_ATOMIC_T_SUFFIX@//
/^SIZE_T_SUFFIX *=/s/@SIZE_T_SUFFIX@/u/
/^ASSERT_H *=/s/@[^@\n]*@/assert.h/
@@ -429,6 +428,8 @@ s/= @GL_GENERATE_STDINT_H_CONDITION@/= 1/
s/= @GL_GENERATE_LIMITS_H_CONDITION@/= 1/
s/= @GL_GENERATE_ERRNO_H_CONDITION@/= /
s/= @GL_GENERATE_LIMITS_H_CONDITION@/= /
+s/= @GL_GENERATE_GETOPT_CDEFS_H_CONDITION@/= 1/
+s/= @GL_GENERATE_GETOPT_H_CONDITION@/= 1/
s/= @GL_GENERATE_GMP_H_CONDITION@/= 1/
s/= @GL_GENERATE_GMP_GMP_H_CONDITION@/= /
s/= @GL_GENERATE_MINI_GMP_H_CONDITION@/= 1/
diff --git a/nt/INSTALL.W64 b/nt/INSTALL.W64
index fa576fb4d7f..fe5f74e3209 100644
--- a/nt/INSTALL.W64
+++ b/nt/INSTALL.W64
@@ -115,7 +115,7 @@ put the Emacs source into C:\emacs\emacs-master:
mkdir /c/emacs
cd /c/emacs
- git clone git://git.sv.gnu.org/emacs.git emacs-master
+ git clone https://git.savannah.gnu.org/git/emacs.git emacs-master
This will produce the development sources, i.e. the master branch of
the Emacs Git repository, in the directory C:\emacs\emacs-master.
diff --git a/nt/README.W32 b/nt/README.W32
index 5a674bf2a4e..da1ede1ea4d 100644
--- a/nt/README.W32
+++ b/nt/README.W32
@@ -1,7 +1,7 @@
Copyright (C) 2001-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.
- Emacs version 29.0.90 for MS-Windows
+ Emacs version 30.0.50 for MS-Windows
This README file describes how to set up and run a precompiled
distribution of the latest version of GNU Emacs for MS-Windows. You
diff --git a/nt/mingw-cfg.site b/nt/mingw-cfg.site
index 7ca19cbad06..425eaace30d 100644
--- a/nt/mingw-cfg.site
+++ b/nt/mingw-cfg.site
@@ -170,3 +170,6 @@ gl_cv_func_free_preserves_errno=yes
# Don't build the Gnulib nanosleep module: it requires W2K or later,
# and MinGW does have nanosleep.
gl_cv_func_nanosleep=yes
+# Suppress configure-time diagnostic from unnecessary libxattr check,
+# as xattr will not be supported here.
+enable_xattr=no
diff --git a/src/Makefile.in b/src/Makefile.in
index c29c3750e59..e08e5eead28 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -144,9 +144,10 @@ M17N_FLT_CFLAGS = @M17N_FLT_CFLAGS@
M17N_FLT_LIBS = @M17N_FLT_LIBS@
LIB_ACL=@LIB_ACL@
-LIB_CLOCK_GETTIME=@LIB_CLOCK_GETTIME@
-LIB_EACCESS=@LIB_EACCESS@
-LIB_NANOSLEEP=@LIB_NANOSLEEP@
+CLOCK_TIME_LIB=@CLOCK_TIME_LIB@
+EUIDACCESS_LIBGEN=@EUIDACCESS_LIBGEN@
+NANOSLEEP_LIB=@NANOSLEEP_LIB@
+QCOPY_ACL_LIB=@QCOPY_ACL_LIB@
LIB_TIMER_TIME=@LIB_TIMER_TIME@
DBUS_CFLAGS = @DBUS_CFLAGS@
@@ -558,9 +559,9 @@ lisp = $(addprefix ${lispsource}/,${shortlisp})
## Construct full set of libraries to be linked.
LIBES = $(LIBS) $(W32_LIBS) $(LIBS_GNUSTEP) $(PGTK_LIBS) $(LIBX_BASE) $(LIBIMAGE) \
$(LIBX_OTHER) $(LIBSOUND) \
- $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_ACL) $(LIB_CLOCK_GETTIME) \
- $(LIB_NANOSLEEP) $(WEBKIT_LIBS) \
- $(LIB_EACCESS) $(LIB_TIMER_TIME) $(DBUS_LIBS) \
+ $(RSVG_LIBS) $(IMAGEMAGICK_LIBS) $(LIB_ACL) $(CLOCK_TIME_LIB) \
+ $(NANOSLEEP_LIB) $(QCOPY_ACL_LIB) $(WEBKIT_LIBS) \
+ $(EUIDACCESS_LIBGEN) $(LIB_TIMER_TIME) $(DBUS_LIBS) \
$(LIB_EXECINFO) $(XRANDR_LIBS) $(XINERAMA_LIBS) $(XFIXES_LIBS) \
$(XDBE_LIBS) $(XSYNC_LIBS) \
$(LIBXML2_LIBS) $(LIBGPM) $(LIBS_SYSTEM) $(CAIRO_LIBS) \
diff --git a/src/alloc.c b/src/alloc.c
index 05a19f0b7e9..d09fc41dec6 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -80,6 +80,37 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <valgrind/memcheck.h>
#endif
+/* AddressSanitizer exposes additional functions for manually marking
+ memory as poisoned/unpoisoned. When ASan is enabled and the needed
+ header is available, memory is poisoned when:
+
+ * An ablock is freed (lisp_align_free), or ablocks are initially
+ allocated (lisp_align_malloc).
+ * An interval_block is initially allocated (make_interval).
+ * A dead INTERVAL is put on the interval free list
+ (sweep_intervals).
+ * A sdata is marked as dead (sweep_strings, pin_string).
+ * An sblock is initially allocated (allocate_string_data).
+ * A string_block is initially allocated (allocate_string).
+ * A dead string is put on string_free_list (sweep_strings).
+ * A float_block is initially allocated (make_float).
+ * A dead float is put on float_free_list.
+ * A cons_block is initially allocated (Fcons).
+ * A dead cons is put on cons_free_list (sweep_cons).
+ * A dead vector is put on vector_free_list (setup_on_free_list),
+ or a new vector block is allocated (allocate_vector_from_block).
+ Accordingly, objects reused from the free list are unpoisoned.
+
+ This feature can be disabled wtih the run-time flag
+ `allow_user_poisoning' set to zero. */
+#if ADDRESS_SANITIZER && defined HAVE_SANITIZER_ASAN_INTERFACE_H \
+ && !defined GC_ASAN_POISON_OBJECTS
+# define GC_ASAN_POISON_OBJECTS 1
+# include <sanitizer/asan_interface.h>
+#else
+# define GC_ASAN_POISON_OBJECTS 0
+#endif
+
/* GC_CHECK_MARKED_OBJECTS means do sanity checks on allocated objects.
We turn that on by default when ENABLE_CHECKING is defined;
define GC_CHECK_MARKED_OBJECTS to zero to disable. */
@@ -1052,7 +1083,11 @@ lisp_free (void *block)
BLOCK_BYTES and guarantees they are aligned on a BLOCK_ALIGN boundary. */
/* Byte alignment of storage blocks. */
-#define BLOCK_ALIGN (1 << 10)
+#ifdef HAVE_UNEXEC
+# define BLOCK_ALIGN (1 << 10)
+#else /* !HAVE_UNEXEC */
+# define BLOCK_ALIGN (1 << 15)
+#endif
verify (POWER_OF_2 (BLOCK_ALIGN));
/* Use aligned_alloc if it or a simple substitute is available.
@@ -1157,6 +1192,16 @@ struct ablocks
(1 & (intptr_t) ABLOCKS_BUSY (abase) ? abase : ((void **) (abase))[-1])
#endif
+#if GC_ASAN_POISON_OBJECTS
+# define ASAN_POISON_ABLOCK(b) \
+ __asan_poison_memory_region (&(b)->x, sizeof ((b)->x))
+# define ASAN_UNPOISON_ABLOCK(b) \
+ __asan_unpoison_memory_region (&(b)->x, sizeof ((b)->x))
+#else
+# define ASAN_POISON_ABLOCK(b) ((void) 0)
+# define ASAN_UNPOISON_ABLOCK(b) ((void) 0)
+#endif
+
/* The list of free ablock. */
static struct ablock *free_ablock;
@@ -1235,6 +1280,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
{
abase->blocks[i].abase = abase;
abase->blocks[i].x.next_free = free_ablock;
+ ASAN_POISON_ABLOCK (&abase->blocks[i]);
free_ablock = &abase->blocks[i];
}
intptr_t ialigned = aligned;
@@ -1247,6 +1293,7 @@ lisp_align_malloc (size_t nbytes, enum mem_type type)
eassert ((intptr_t) ABLOCKS_BUSY (abase) == aligned);
}
+ ASAN_UNPOISON_ABLOCK (free_ablock);
abase = ABLOCK_ABASE (free_ablock);
ABLOCKS_BUSY (abase)
= (struct ablocks *) (2 + (intptr_t) ABLOCKS_BUSY (abase));
@@ -1278,6 +1325,7 @@ lisp_align_free (void *block)
#endif
/* Put on free list. */
ablock->x.next_free = free_ablock;
+ ASAN_POISON_ABLOCK (ablock);
free_ablock = ablock;
/* Update busy count. */
intptr_t busy = (intptr_t) ABLOCKS_BUSY (abase) - 2;
@@ -1290,9 +1338,12 @@ lisp_align_free (void *block)
bool aligned = busy;
struct ablock **tem = &free_ablock;
struct ablock *atop = &abase->blocks[aligned ? ABLOCKS_SIZE : ABLOCKS_SIZE - 1];
-
while (*tem)
{
+#if GC_ASAN_POISON_OBJECTS
+ __asan_unpoison_memory_region (&(*tem)->x,
+ sizeof ((*tem)->x));
+#endif
if (*tem >= (struct ablock *) abase && *tem < atop)
{
i++;
@@ -1421,6 +1472,24 @@ static int interval_block_index = INTERVAL_BLOCK_SIZE;
static INTERVAL interval_free_list;
+#if GC_ASAN_POISON_OBJECTS
+# define ASAN_POISON_INTERVAL_BLOCK(b) \
+ __asan_poison_memory_region ((b)->intervals, \
+ sizeof ((b)->intervals))
+# define ASAN_UNPOISON_INTERVAL_BLOCK(b) \
+ __asan_unpoison_memory_region ((b)->intervals, \
+ sizeof ((b)->intervals))
+# define ASAN_POISON_INTERVAL(i) \
+ __asan_poison_memory_region ((i), sizeof (*(i)))
+# define ASAN_UNPOISON_INTERVAL(i) \
+ __asan_unpoison_memory_region ((i), sizeof (*(i)))
+#else
+# define ASAN_POISON_INTERVAL_BLOCK(b) ((void) 0)
+# define ASAN_UNPOISON_INTERVAL_BLOCK(b) ((void) 0)
+# define ASAN_POISON_INTERVAL(i) ((void) 0)
+# define ASAN_UNPOISON_INTERVAL(i) ((void) 0)
+#endif
+
/* Return a new interval. */
INTERVAL
@@ -1433,6 +1502,7 @@ make_interval (void)
if (interval_free_list)
{
val = interval_free_list;
+ ASAN_UNPOISON_INTERVAL (val);
interval_free_list = INTERVAL_PARENT (interval_free_list);
}
else
@@ -1443,10 +1513,12 @@ make_interval (void)
= lisp_malloc (sizeof *newi, false, MEM_TYPE_NON_LISP);
newi->next = interval_block;
+ ASAN_POISON_INTERVAL_BLOCK (newi);
interval_block = newi;
interval_block_index = 0;
}
val = &interval_block->intervals[interval_block_index++];
+ ASAN_UNPOISON_INTERVAL (val);
}
MALLOC_UNBLOCK_INPUT;
@@ -1687,6 +1759,41 @@ init_strings (void)
staticpro (&empty_multibyte_string);
}
+#if GC_ASAN_POISON_OBJECTS
+/* Prepare s for denoting a free sdata struct, i.e, poison all bytes
+ in the flexible array member, except the first SDATA_OFFSET bytes.
+ This is only effective for strings of size n where n > sdata_size(n).
+ */
+# define ASAN_PREPARE_DEAD_SDATA(s, size) \
+ do { \
+ __asan_poison_memory_region ((s), sdata_size ((size))); \
+ __asan_unpoison_memory_region (&(((s))->string), \
+ sizeof (struct Lisp_String *)); \
+ __asan_unpoison_memory_region (&SDATA_NBYTES ((s)), \
+ sizeof (SDATA_NBYTES ((s)))); \
+ } while (false)
+/* Prepare s for storing string data for NBYTES bytes. */
+# define ASAN_PREPARE_LIVE_SDATA(s, nbytes) \
+ __asan_unpoison_memory_region ((s), sdata_size ((nbytes)))
+# define ASAN_POISON_SBLOCK_DATA(b, size) \
+ __asan_poison_memory_region ((b)->data, (size))
+# define ASAN_POISON_STRING_BLOCK(b) \
+ __asan_poison_memory_region ((b)->strings, STRING_BLOCK_SIZE)
+# define ASAN_UNPOISON_STRING_BLOCK(b) \
+ __asan_unpoison_memory_region ((b)->strings, STRING_BLOCK_SIZE)
+# define ASAN_POISON_STRING(s) \
+ __asan_poison_memory_region ((s), sizeof (*(s)))
+# define ASAN_UNPOISON_STRING(s) \
+ __asan_unpoison_memory_region ((s), sizeof (*(s)))
+#else
+# define ASAN_PREPARE_DEAD_SDATA(s, size) ((void) 0)
+# define ASAN_PREPARE_LIVE_SDATA(s, nbytes) ((void) 0)
+# define ASAN_POISON_SBLOCK_DATA(b, size) ((void) 0)
+# define ASAN_POISON_STRING_BLOCK(b) ((void) 0)
+# define ASAN_UNPOISON_STRING_BLOCK(b) ((void) 0)
+# define ASAN_POISON_STRING(s) ((void) 0)
+# define ASAN_UNPOISON_STRING(s) ((void) 0)
+#endif
#ifdef GC_CHECK_STRING_BYTES
@@ -1805,12 +1912,14 @@ allocate_string (void)
NEXT_FREE_LISP_STRING (s) = string_free_list;
string_free_list = s;
}
+ ASAN_POISON_STRING_BLOCK (b);
}
check_string_free_list ();
/* Pop a Lisp_String off the free-list. */
s = string_free_list;
+ ASAN_UNPOISON_STRING (s);
string_free_list = NEXT_FREE_LISP_STRING (s);
MALLOC_UNBLOCK_INPUT;
@@ -1870,6 +1979,7 @@ allocate_string_data (struct Lisp_String *s,
#endif
b = lisp_malloc (size + GC_STRING_EXTRA, clearit, MEM_TYPE_NON_LISP);
+ ASAN_POISON_SBLOCK_DATA (b, size);
#ifdef DOUG_LEA_MALLOC
if (!mmap_lisp_allowed_p ())
@@ -1891,6 +2001,8 @@ allocate_string_data (struct Lisp_String *s,
{
/* Not enough room in the current sblock. */
b = lisp_malloc (SBLOCK_SIZE, false, MEM_TYPE_NON_LISP);
+ ASAN_POISON_SBLOCK_DATA (b, SBLOCK_SIZE);
+
data = b->data;
b->next = NULL;
b->next_free = data;
@@ -1903,10 +2015,19 @@ allocate_string_data (struct Lisp_String *s,
}
data = b->next_free;
+
if (clearit)
- memset (SDATA_DATA (data), 0, nbytes);
+ {
+#if GC_ASAN_POISON_OBJECTS
+ /* We are accessing SDATA_DATA (data) before it gets
+ * normally unpoisoned, so do it manually. */
+ __asan_unpoison_memory_region (SDATA_DATA (data), nbytes);
+#endif
+ memset (SDATA_DATA (data), 0, nbytes);
+ }
}
+ ASAN_PREPARE_LIVE_SDATA (data, nbytes);
data->string = s;
b->next_free = (sdata *) ((char *) data + needed + GC_STRING_EXTRA);
eassert ((uintptr_t) b->next_free % alignof (sdata) == 0);
@@ -1998,12 +2119,16 @@ sweep_strings (void)
int i, nfree = 0;
struct Lisp_String *free_list_before = string_free_list;
+ ASAN_UNPOISON_STRING_BLOCK (b);
+
next = b->next;
for (i = 0; i < STRING_BLOCK_SIZE; ++i)
{
struct Lisp_String *s = b->strings + i;
+ ASAN_UNPOISON_STRING (s);
+
if (s->u.s.data)
{
/* String was not on free-list before. */
@@ -2040,6 +2165,8 @@ sweep_strings (void)
/* Put the string on the free-list. */
NEXT_FREE_LISP_STRING (s) = string_free_list;
+ ASAN_POISON_STRING (s);
+ ASAN_PREPARE_DEAD_SDATA (data, SDATA_NBYTES (data));
string_free_list = s;
++nfree;
}
@@ -2048,6 +2175,8 @@ sweep_strings (void)
{
/* S was on the free-list before. Put it there again. */
NEXT_FREE_LISP_STRING (s) = string_free_list;
+ ASAN_POISON_STRING (s);
+
string_free_list = s;
++nfree;
}
@@ -2174,6 +2303,7 @@ compact_small_strings (void)
if (from != to)
{
eassert (tb != b || to < from);
+ ASAN_PREPARE_LIVE_SDATA (to, nbytes);
memmove (to, from, size + GC_STRING_EXTRA);
to->string->u.s.data = SDATA_DATA (to);
}
@@ -2525,6 +2655,7 @@ pin_string (Lisp_Object string)
memcpy (s->u.s.data, data, size);
old_sdata->string = NULL;
SDATA_NBYTES (old_sdata) = size;
+ ASAN_PREPARE_DEAD_SDATA (old_sdata, size);
}
s->u.s.size_byte = -3;
}
@@ -2582,6 +2713,24 @@ struct float_block
#define XFLOAT_UNMARK(fptr) \
UNSETMARKBIT (FLOAT_BLOCK (fptr), FLOAT_INDEX ((fptr)))
+#if GC_ASAN_POISON_OBJECTS
+# define ASAN_POISON_FLOAT_BLOCK(fblk) \
+ __asan_poison_memory_region ((fblk)->floats, \
+ sizeof ((fblk)->floats))
+# define ASAN_UNPOISON_FLOAT_BLOCK(fblk) \
+ __asan_unpoison_memory_region ((fblk)->floats, \
+ sizeof ((fblk)->floats))
+# define ASAN_POISON_FLOAT(p) \
+ __asan_poison_memory_region ((p), sizeof (struct Lisp_Float))
+# define ASAN_UNPOISON_FLOAT(p) \
+ __asan_unpoison_memory_region ((p), sizeof (struct Lisp_Float))
+#else
+# define ASAN_POISON_FLOAT_BLOCK(fblk) ((void) 0)
+# define ASAN_UNPOISON_FLOAT_BLOCK(fblk) ((void) 0)
+# define ASAN_POISON_FLOAT(p) ((void) 0)
+# define ASAN_UNPOISON_FLOAT(p) ((void) 0)
+#endif
+
/* Current float_block. */
static struct float_block *float_block;
@@ -2606,6 +2755,7 @@ make_float (double float_value)
if (float_free_list)
{
XSETFLOAT (val, float_free_list);
+ ASAN_UNPOISON_FLOAT (float_free_list);
float_free_list = float_free_list->u.chain;
}
else
@@ -2616,9 +2766,11 @@ make_float (double float_value)
= lisp_align_malloc (sizeof *new, MEM_TYPE_FLOAT);
new->next = float_block;
memset (new->gcmarkbits, 0, sizeof new->gcmarkbits);
+ ASAN_POISON_FLOAT_BLOCK (new);
float_block = new;
float_block_index = 0;
}
+ ASAN_UNPOISON_FLOAT (&float_block->floats[float_block_index]);
XSETFLOAT (val, &float_block->floats[float_block_index]);
float_block_index++;
}
@@ -2690,6 +2842,19 @@ static int cons_block_index = CONS_BLOCK_SIZE;
static struct Lisp_Cons *cons_free_list;
+#if GC_ASAN_POISON_OBJECTS
+# define ASAN_POISON_CONS_BLOCK(b) \
+ __asan_poison_memory_region ((b)->conses, sizeof ((b)->conses))
+# define ASAN_POISON_CONS(p) \
+ __asan_poison_memory_region ((p), sizeof (struct Lisp_Cons))
+# define ASAN_UNPOISON_CONS(p) \
+ __asan_unpoison_memory_region ((p), sizeof (struct Lisp_Cons))
+#else
+# define ASAN_POISON_CONS_BLOCK(b) ((void) 0)
+# define ASAN_POISON_CONS(p) ((void) 0)
+# define ASAN_UNPOISON_CONS(p) ((void) 0)
+#endif
+
/* Explicitly free a cons cell by putting it on the free-list. */
void
@@ -2700,6 +2865,7 @@ free_cons (struct Lisp_Cons *ptr)
cons_free_list = ptr;
ptrdiff_t nbytes = sizeof *ptr;
tally_consing (-nbytes);
+ ASAN_POISON_CONS (ptr);
}
DEFUN ("cons", Fcons, Scons, 2, 2, 0,
@@ -2712,6 +2878,7 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
if (cons_free_list)
{
+ ASAN_UNPOISON_CONS (cons_free_list);
XSETCONS (val, cons_free_list);
cons_free_list = cons_free_list->u.s.u.chain;
}
@@ -2722,10 +2889,12 @@ DEFUN ("cons", Fcons, Scons, 2, 2, 0,
struct cons_block *new
= lisp_align_malloc (sizeof *new, MEM_TYPE_CONS);
memset (new->gcmarkbits, 0, sizeof new->gcmarkbits);
+ ASAN_POISON_CONS_BLOCK (new);
new->next = cons_block;
cons_block = new;
cons_block_index = 0;
}
+ ASAN_UNPOISON_CONS (&cons_block->conses[cons_block_index]);
XSETCONS (val, &cons_block->conses[cons_block_index]);
cons_block_index++;
}
@@ -2980,6 +3149,19 @@ static struct large_vector *large_vectors;
Lisp_Object zero_vector;
+#if GC_ASAN_POISON_OBJECTS
+# define ASAN_POISON_VECTOR_CONTENTS(v, bytes) \
+ __asan_poison_memory_region ((v)->contents, (bytes))
+# define ASAN_UNPOISON_VECTOR_CONTENTS(v, bytes) \
+ __asan_unpoison_memory_region ((v)->contents, (bytes))
+# define ASAN_UNPOISON_VECTOR_BLOCK(b) \
+ __asan_unpoison_memory_region ((b)->data, sizeof ((b)->data))
+#else
+# define ASAN_POISON_VECTOR_CONTENTS(v, bytes) ((void) 0)
+# define ASAN_UNPOISON_VECTOR_CONTENTS(v, bytes) ((void) 0)
+# define ASAN_UNPOISON_VECTOR_BLOCK(b) ((void) 0)
+#endif
+
/* Common shortcut to setup vector on a free list. */
static void
@@ -2992,6 +3174,7 @@ setup_on_free_list (struct Lisp_Vector *v, ptrdiff_t nbytes)
ptrdiff_t vindex = VINDEX (nbytes);
eassert (vindex < VECTOR_MAX_FREE_LIST_INDEX);
set_next_vector (v, vector_free_lists[vindex]);
+ ASAN_POISON_VECTOR_CONTENTS (v, nbytes - header_size);
vector_free_lists[vindex] = v;
}
@@ -3039,6 +3222,7 @@ allocate_vector_from_block (ptrdiff_t nbytes)
if (vector_free_lists[index])
{
vector = vector_free_lists[index];
+ ASAN_UNPOISON_VECTOR_CONTENTS (vector, nbytes - header_size);
vector_free_lists[index] = next_vector (vector);
return vector;
}
@@ -3052,12 +3236,18 @@ allocate_vector_from_block (ptrdiff_t nbytes)
{
/* This vector is larger than requested. */
vector = vector_free_lists[index];
+ ASAN_UNPOISON_VECTOR_CONTENTS (vector, nbytes - header_size);
vector_free_lists[index] = next_vector (vector);
/* Excess bytes are used for the smaller vector,
which should be set on an appropriate free list. */
restbytes = index * roundup_size + VBLOCK_BYTES_MIN - nbytes;
eassert (restbytes % roundup_size == 0);
+#if GC_ASAN_POISON_OBJECTS
+ /* Ensure that accessing excess bytes does not trigger ASan. */
+ __asan_unpoison_memory_region (ADVANCE (vector, nbytes),
+ restbytes);
+#endif
setup_on_free_list (ADVANCE (vector, nbytes), restbytes);
return vector;
}
@@ -3233,6 +3423,7 @@ sweep_vectors (void)
for (vector = (struct Lisp_Vector *) block->data;
VECTOR_IN_BLOCK (vector, block); vector = next)
{
+ ASAN_UNPOISON_VECTOR_BLOCK (block);
if (XVECTOR_MARKED_P (vector))
{
XUNMARK_VECTOR (vector);
@@ -3609,6 +3800,23 @@ struct symbol_block
struct symbol_block *next;
};
+#if GC_ASAN_POISON_OBJECTS
+# define ASAN_POISON_SYMBOL_BLOCK(s) \
+ __asan_poison_memory_region ((s)->symbols, sizeof ((s)->symbols))
+# define ASAN_UNPOISON_SYMBOL_BLOCK(s) \
+ __asan_unpoison_memory_region ((s)->symbols, sizeof ((s)->symbols))
+# define ASAN_POISON_SYMBOL(sym) \
+ __asan_poison_memory_region ((sym), sizeof (*(sym)))
+# define ASAN_UNPOISON_SYMBOL(sym) \
+ __asan_unpoison_memory_region ((sym), sizeof (*(sym)))
+
+#else
+# define ASAN_POISON_SYMBOL_BLOCK(s) ((void) 0)
+# define ASAN_UNPOISON_SYMBOL_BLOCK(s) ((void) 0)
+# define ASAN_POISON_SYMBOL(sym) ((void) 0)
+# define ASAN_UNPOISON_SYMBOL(sym) ((void) 0)
+#endif
+
/* Current symbol block and index of first unused Lisp_Symbol
structure in it. */
@@ -3662,6 +3870,7 @@ Its value is void, and its function definition and property list are nil. */)
if (symbol_free_list)
{
+ ASAN_UNPOISON_SYMBOL (symbol_free_list);
XSETSYMBOL (val, symbol_free_list);
symbol_free_list = symbol_free_list->u.s.next;
}
@@ -3671,10 +3880,13 @@ Its value is void, and its function definition and property list are nil. */)
{
struct symbol_block *new
= lisp_malloc (sizeof *new, false, MEM_TYPE_SYMBOL);
+ ASAN_POISON_SYMBOL_BLOCK (new);
new->next = symbol_block;
symbol_block = new;
symbol_block_index = 0;
}
+
+ ASAN_UNPOISON_SYMBOL (&symbol_block->symbols[symbol_block_index]);
XSETSYMBOL (val, &symbol_block->symbols[symbol_block_index]);
symbol_block_index++;
}
@@ -4562,6 +4774,11 @@ static struct Lisp_String *
live_string_holding (struct mem_node *m, void *p)
{
eassert (m->type == MEM_TYPE_STRING);
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_address_is_poisoned (p))
+ return NULL;
+#endif
+
struct string_block *b = m->start;
char *cp = p;
ptrdiff_t offset = cp - (char *) &b->strings[0];
@@ -4578,6 +4795,10 @@ live_string_holding (struct mem_node *m, void *p)
|| off == offsetof (struct Lisp_String, u.s.data))
{
struct Lisp_String *s = p = cp -= off;
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_region_is_poisoned (s, sizeof (*s)))
+ return NULL;
+#endif
if (s->u.s.data)
return s;
}
@@ -4599,6 +4820,11 @@ static struct Lisp_Cons *
live_cons_holding (struct mem_node *m, void *p)
{
eassert (m->type == MEM_TYPE_CONS);
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_address_is_poisoned (p))
+ return NULL;
+#endif
+
struct cons_block *b = m->start;
char *cp = p;
ptrdiff_t offset = cp - (char *) &b->conses[0];
@@ -4616,6 +4842,10 @@ live_cons_holding (struct mem_node *m, void *p)
|| off == offsetof (struct Lisp_Cons, u.s.u.cdr))
{
struct Lisp_Cons *s = p = cp -= off;
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_region_is_poisoned (s, sizeof (*s)))
+ return NULL;
+#endif
if (!deadp (s->u.s.car))
return s;
}
@@ -4638,6 +4868,10 @@ static struct Lisp_Symbol *
live_symbol_holding (struct mem_node *m, void *p)
{
eassert (m->type == MEM_TYPE_SYMBOL);
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_address_is_poisoned (p))
+ return NULL;
+#endif
struct symbol_block *b = m->start;
char *cp = p;
ptrdiff_t offset = cp - (char *) &b->symbols[0];
@@ -4663,6 +4897,10 @@ live_symbol_holding (struct mem_node *m, void *p)
|| off == offsetof (struct Lisp_Symbol, u.s.next))
{
struct Lisp_Symbol *s = p = cp -= off;
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_region_is_poisoned (s, sizeof (*s)))
+ return NULL;
+#endif
if (!deadp (s->u.s.function))
return s;
}
@@ -4685,6 +4923,11 @@ static struct Lisp_Float *
live_float_holding (struct mem_node *m, void *p)
{
eassert (m->type == MEM_TYPE_FLOAT);
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_address_is_poisoned (p))
+ return NULL;
+#endif
+
struct float_block *b = m->start;
char *cp = p;
ptrdiff_t offset = cp - (char *) &b->floats[0];
@@ -4699,8 +4942,12 @@ live_float_holding (struct mem_node *m, void *p)
&& (b != float_block
|| offset / sizeof b->floats[0] < float_block_index))
{
- p = cp - off;
- return p;
+ struct Lisp_Float *f = (struct Lisp_Float *) (cp - off);
+#if GC_ASAN_POISON_OBJECTS
+ if (__asan_region_is_poisoned (f, sizeof (*f)))
+ return NULL;
+#endif
+ return f;
}
}
return NULL;
@@ -6222,6 +6469,7 @@ garbage_collect (void)
#ifdef HAVE_X_WINDOWS
mark_xterm ();
+ mark_xselect ();
#endif
#ifdef HAVE_NS
@@ -6555,7 +6803,7 @@ mark_buffer (struct buffer *buffer)
if (!BUFFER_LIVE_P (buffer))
mark_object (BVAR (buffer, undo_list));
- if (buffer->overlays)
+ if (!itree_empty_p (buffer->overlays))
mark_overlays (buffer->overlays->root);
/* If this is an indirect buffer, mark its base buffer. */
@@ -7181,11 +7429,13 @@ sweep_conses (void)
struct Lisp_Cons *acons = &cblk->conses[pos];
if (!XCONS_MARKED_P (acons))
{
+ ASAN_UNPOISON_CONS (&cblk->conses[pos]);
this_free++;
cblk->conses[pos].u.s.u.chain = cons_free_list;
cons_free_list = &cblk->conses[pos];
cons_free_list->u.s.car = dead_object ();
- }
+ ASAN_POISON_CONS (&cblk->conses[pos]);
+ }
else
{
num_used++;
@@ -7203,6 +7453,7 @@ sweep_conses (void)
{
*cprev = cblk->next;
/* Unhook from the free list. */
+ ASAN_UNPOISON_CONS (&cblk->conses[0]);
cons_free_list = cblk->conses[0].u.s.u.chain;
lisp_align_free (cblk);
}
@@ -7229,6 +7480,7 @@ sweep_floats (void)
for (struct float_block *fblk; (fblk = *fprev); )
{
int this_free = 0;
+ ASAN_UNPOISON_FLOAT_BLOCK (fblk);
for (int i = 0; i < lim; i++)
{
struct Lisp_Float *afloat = &fblk->floats[i];
@@ -7236,6 +7488,7 @@ sweep_floats (void)
{
this_free++;
fblk->floats[i].u.chain = float_free_list;
+ ASAN_POISON_FLOAT (&fblk->floats[i]);
float_free_list = &fblk->floats[i];
}
else
@@ -7252,7 +7505,8 @@ sweep_floats (void)
{
*fprev = fblk->next;
/* Unhook from the free list. */
- float_free_list = fblk->floats[0].u.chain;
+ ASAN_UNPOISON_FLOAT (&fblk->floats[0]);
+ float_free_list = fblk->floats[0].u.chain;
lisp_align_free (fblk);
}
else
@@ -7278,13 +7532,14 @@ sweep_intervals (void)
for (struct interval_block *iblk; (iblk = *iprev); )
{
int this_free = 0;
-
+ ASAN_UNPOISON_INTERVAL_BLOCK (iblk);
for (int i = 0; i < lim; i++)
{
if (!iblk->intervals[i].gcmarkbit)
{
set_interval_parent (&iblk->intervals[i], interval_free_list);
interval_free_list = &iblk->intervals[i];
+ ASAN_POISON_INTERVAL (&iblk->intervals[i]);
this_free++;
}
else
@@ -7301,6 +7556,7 @@ sweep_intervals (void)
{
*iprev = iblk->next;
/* Unhook from the free list. */
+ ASAN_UNPOISON_INTERVAL (&iblk->intervals[0]);
interval_free_list = INTERVAL_PARENT (&iblk->intervals[0]);
lisp_free (iblk);
}
@@ -7330,6 +7586,8 @@ sweep_symbols (void)
for (sblk = symbol_block; sblk; sblk = *sprev)
{
+ ASAN_UNPOISON_SYMBOL_BLOCK (sblk);
+
int this_free = 0;
struct Lisp_Symbol *sym = sblk->symbols;
struct Lisp_Symbol *end = sym + lim;
@@ -7351,7 +7609,8 @@ sweep_symbols (void)
sym->u.s.next = symbol_free_list;
symbol_free_list = sym;
symbol_free_list->u.s.function = dead_object ();
- ++this_free;
+ ASAN_POISON_SYMBOL (sym);
+ ++this_free;
}
else
{
@@ -7370,6 +7629,7 @@ sweep_symbols (void)
{
*sprev = sblk->next;
/* Unhook from the free list. */
+ ASAN_UNPOISON_SYMBOL (&sblk->symbols[0]);
symbol_free_list = sblk->symbols[0].u.s.next;
lisp_free (sblk);
}
diff --git a/src/buffer.c b/src/buffer.c
index 0c740775e5b..3e3be805a6d 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1307,7 +1307,7 @@ buffer_local_value (Lisp_Object variable, Lisp_Object buffer)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: result = SYMBOL_VAL (sym); break;
case SYMBOL_LOCALIZED:
{ /* Look in local_var_alist. */
@@ -5124,35 +5124,38 @@ A list whose car is an integer is processed by processing the cadr of
negative) to the width specified by that number.
A string is printed verbatim in the mode line except for %-constructs:
- %b -- print buffer name. %f -- print visited file name.
- %F -- print frame name.
- %* -- print %, * or hyphen. %+ -- print *, % or hyphen.
- %& is like %*, but ignore read-only-ness.
- % means buffer is read-only and * means it is modified.
- For a modified read-only buffer, %* gives % and %+ gives *.
- %s -- print process status. %l -- print the current line number.
+ %b -- print buffer name.
%c -- print the current column number (this makes editing slower).
Columns are numbered starting from the left margin, and the
leftmost column is displayed as zero.
To make the column number update correctly in all cases,
- `column-number-mode' must be non-nil.
+ `column-number-mode' must be non-nil.
%C -- Like %c, but the leftmost column is displayed as one.
+ %e -- print error message about full memory.
+ %f -- print visited file name.
+ %F -- print frame name.
%i -- print the size of the buffer.
%I -- like %i, but use k, M, G, etc., to abbreviate.
+ %l -- print the current line number.
+ %n -- print Narrow if appropriate.
%o -- print percent of window travel through buffer, or Top, Bot or All.
%p -- print percent of buffer above top of window, or Top, Bot or All.
%P -- print percent of buffer above bottom of window, perhaps plus Top,
or print Bottom or All.
%q -- print percent of buffer above both the top and the bottom of the
window, separated by ‘-’, or ‘All’.
- %n -- print Narrow if appropriate.
+ %s -- print process status.
%z -- print mnemonics of keyboard, terminal, and buffer coding systems.
%Z -- like %z, but including the end-of-line format.
- %e -- print error message about full memory.
- %@ -- print @ or hyphen. @ means that default-directory is on a
- remote machine.
- %[ -- print one [ for each recursive editing level. %] similar.
- %% -- print %. %- -- print infinitely many dashes.
+ %& -- print * if the buffer is modified, otherwise hyphen.
+ %+ -- print *, % or hyphen (modified, read-only, neither).
+ %* -- print %, * or hyphen (read-only, modified, neither).
+ For a modified read-only buffer, %+ prints * and %* prints %.
+ %@ -- print @ if default-directory is on a remote machine, else hyphen.
+ %[ -- print one [ for each recursive editing level.
+ %] -- print one ] for each recursive editing level.
+ %- -- print enough dashes to fill the mode line.
+ %% -- print %.
Decimal digits after the % specify field width to which to pad. */);
DEFVAR_PER_BUFFER ("major-mode", &BVAR (current_buffer, major_mode),
diff --git a/src/buffer.h b/src/buffer.h
index c0e38ce9659..e700297a264 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1266,8 +1266,7 @@ set_buffer_intervals (struct buffer *b, INTERVAL i)
INLINE bool
buffer_has_overlays (void)
{
- return current_buffer->overlays
- && (current_buffer->overlays->root != NULL);
+ return !itree_empty_p (current_buffer->overlays);
}
/* Functions for accessing a character or byte,
diff --git a/src/coding.c b/src/coding.c
index 49dcd8634f3..a2e0d7040f8 100644
--- a/src/coding.c
+++ b/src/coding.c
@@ -651,6 +651,12 @@ growable_destination (struct coding_system *coding)
consumed_chars++; \
} while (0)
+/* Suppress clang warnings about consumed_chars never being used.
+ Although correct, the warnings are too much trouble to code around. */
+#if 13 <= __clang_major__ - defined __apple_build_version__
+# pragma clang diagnostic ignored "-Wunused-but-set-variable"
+#endif
+
/* Safely get two bytes from the source text pointed by SRC which ends
at SRC_END, and set C1 and C2 to those bytes while skipping the
heading multibyte characters. If there are not enough bytes in the
diff --git a/src/comp.c b/src/comp.c
index 3f72d088a66..9ff3efedbdd 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -535,7 +535,7 @@ load_gccjit_if_necessary (bool mandatory)
#define SETJMP_NAME SETJMP
/* Max number function importable by native compiled code. */
-#define F_RELOC_MAX_SIZE 1500
+#define F_RELOC_MAX_SIZE 1600
typedef struct {
void *link_table[F_RELOC_MAX_SIZE];
diff --git a/src/data.c b/src/data.c
index 930d476bc3f..8f9ee63e779 100644
--- a/src/data.c
+++ b/src/data.c
@@ -683,7 +683,7 @@ global value outside of any lexical scope. */)
switch (sym->u.s.redirect)
{
case SYMBOL_PLAINVAL: valcontents = SYMBOL_VAL (sym); break;
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_LOCALIZED:
{
struct Lisp_Buffer_Local_Value *blv = SYMBOL_BLV (sym);
@@ -843,7 +843,9 @@ the position will be taken. */)
}
DEFUN ("fset", Ffset, Sfset, 2, 2, 0,
- doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION. */)
+ doc: /* Set SYMBOL's function definition to DEFINITION, and return DEFINITION.
+If the resulting chain of function definitions would contain a loop,
+signal a `cyclic-function-indirection' error. */)
(register Lisp_Object symbol, Lisp_Object definition)
{
CHECK_SYMBOL (symbol);
@@ -855,6 +857,12 @@ DEFUN ("fset", Ffset, Sfset, 2, 2, 0,
eassert (valid_lisp_object_p (definition));
+ /* Ensure non-circularity. */
+ for (Lisp_Object s = definition; SYMBOLP (s) && !NILP (s);
+ s = XSYMBOL (s)->u.s.function)
+ if (EQ (s, symbol))
+ xsignal1 (Qcyclic_function_indirection, symbol);
+
#ifdef HAVE_NATIVE_COMP
register Lisp_Object function = XSYMBOL (symbol)->u.s.function;
@@ -1081,7 +1089,7 @@ If CMD is not a command, the return value is nil.
Value, if non-nil, is a list (interactive SPEC). */)
(Lisp_Object cmd)
{
- Lisp_Object fun = indirect_function (cmd); /* Check cycles. */
+ Lisp_Object fun = indirect_function (cmd);
bool genfun = false;
if (NILP (fun))
@@ -1171,7 +1179,7 @@ If COMMAND is not a command, the return value is nil.
The value, if non-nil, is a list of mode name symbols. */)
(Lisp_Object command)
{
- Lisp_Object fun = indirect_function (command); /* Check cycles. */
+ Lisp_Object fun = indirect_function (command);
if (NILP (fun))
return Qnil;
@@ -1241,51 +1249,20 @@ The value, if non-nil, is a list of mode name symbols. */)
Getting and Setting Values of Symbols
***********************************************************************/
-/* Return the symbol holding SYMBOL's value. Signal
- `cyclic-variable-indirection' if SYMBOL's chain of variable
- indirections contains a loop. */
-
-struct Lisp_Symbol *
-indirect_variable (struct Lisp_Symbol *symbol)
-{
- struct Lisp_Symbol *tortoise, *hare;
-
- hare = tortoise = symbol;
-
- while (hare->u.s.redirect == SYMBOL_VARALIAS)
- {
- hare = SYMBOL_ALIAS (hare);
- if (hare->u.s.redirect != SYMBOL_VARALIAS)
- break;
-
- hare = SYMBOL_ALIAS (hare);
- tortoise = SYMBOL_ALIAS (tortoise);
-
- if (hare == tortoise)
- {
- Lisp_Object tem;
- XSETSYMBOL (tem, symbol);
- xsignal1 (Qcyclic_variable_indirection, tem);
- }
- }
-
- return hare;
-}
-
-
DEFUN ("indirect-variable", Findirect_variable, Sindirect_variable, 1, 1, 0,
doc: /* Return the variable at the end of OBJECT's variable chain.
If OBJECT is a symbol, follow its variable indirections (if any), and
return the variable at the end of the chain of aliases. See Info node
`(elisp)Variable Aliases'.
-If OBJECT is not a symbol, just return it. If there is a loop in the
-chain of aliases, signal a `cyclic-variable-indirection' error. */)
+If OBJECT is not a symbol, just return it. */)
(Lisp_Object object)
{
if (SYMBOLP (object))
{
- struct Lisp_Symbol *sym = indirect_variable (XSYMBOL (object));
+ struct Lisp_Symbol *sym = XSYMBOL (object);
+ while (sym->u.s.redirect == SYMBOL_VARALIAS)
+ sym = SYMBOL_ALIAS (sym);
XSETSYMBOL (object, sym);
}
return object;
@@ -1574,7 +1551,7 @@ find_symbol_value (Lisp_Object symbol)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: return SYMBOL_VAL (sym);
case SYMBOL_LOCALIZED:
{
@@ -1663,7 +1640,7 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: SET_SYMBOL_VAL (sym , newval); return;
case SYMBOL_LOCALIZED:
{
@@ -1917,7 +1894,7 @@ default_value (Lisp_Object symbol)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: return SYMBOL_VAL (sym);
case SYMBOL_LOCALIZED:
{
@@ -2011,7 +1988,7 @@ set_default_internal (Lisp_Object symbol, Lisp_Object value,
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: set_internal (symbol, value, Qnil, bindflag); return;
case SYMBOL_LOCALIZED:
{
@@ -2149,7 +2126,7 @@ See also `defvar-local'. */)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL:
forwarded = 0; valcontents.value = SYMBOL_VAL (sym);
if (BASE_EQ (valcontents.value, Qunbound))
@@ -2217,7 +2194,7 @@ Instead, use `add-hook' and specify t for the LOCAL argument. */)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL:
forwarded = 0; valcontents.value = SYMBOL_VAL (sym); break;
case SYMBOL_LOCALIZED:
@@ -2303,7 +2280,7 @@ From now on the default value will apply in this buffer. Return VARIABLE. */)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: return variable;
case SYMBOL_FORWARDED:
{
@@ -2370,7 +2347,7 @@ Also see `buffer-local-boundp'.*/)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: return Qnil;
case SYMBOL_LOCALIZED:
{
@@ -2420,7 +2397,7 @@ value in BUFFER, or if VARIABLE is automatically buffer-local (see
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: return Qnil;
case SYMBOL_LOCALIZED:
{
@@ -2455,7 +2432,7 @@ If the current binding is global (the default), the value is nil. */)
start:
switch (sym->u.s.redirect)
{
- case SYMBOL_VARALIAS: sym = indirect_variable (sym); goto start;
+ case SYMBOL_VARALIAS: sym = SYMBOL_ALIAS (sym); goto start;
case SYMBOL_PLAINVAL: return Qnil;
case SYMBOL_FORWARDED:
{
@@ -2485,55 +2462,22 @@ If the current binding is global (the default), the value is nil. */)
/* If OBJECT is a symbol, find the end of its function chain and
return the value found there. If OBJECT is not a symbol, just
- return it. If there is a cycle in the function chain, signal a
- cyclic-function-indirection error.
-
- This is like Findirect_function, except that it doesn't signal an
- error if the chain ends up unbound. */
+ return it. */
Lisp_Object
-indirect_function (register Lisp_Object object)
+indirect_function (Lisp_Object object)
{
- Lisp_Object tortoise, hare;
-
- hare = tortoise = object;
-
- for (;;)
- {
- if (!SYMBOLP (hare) || NILP (hare))
- break;
- hare = XSYMBOL (hare)->u.s.function;
- if (!SYMBOLP (hare) || NILP (hare))
- break;
- hare = XSYMBOL (hare)->u.s.function;
-
- tortoise = XSYMBOL (tortoise)->u.s.function;
-
- if (EQ (hare, tortoise))
- xsignal1 (Qcyclic_function_indirection, object);
- }
-
- return hare;
+ while (SYMBOLP (object) && !NILP (object))
+ object = XSYMBOL (object)->u.s.function;
+ return object;
}
DEFUN ("indirect-function", Findirect_function, Sindirect_function, 1, 2, 0,
doc: /* Return the function at the end of OBJECT's function chain.
If OBJECT is not a symbol, just return it. Otherwise, follow all
-function indirections to find the final function binding and return it.
-Signal a cyclic-function-indirection error if there is a loop in the
-function chain of symbols. */)
- (register Lisp_Object object, Lisp_Object noerror)
+function indirections to find the final function binding and return it. */)
+ (Lisp_Object object, Lisp_Object noerror)
{
- Lisp_Object result;
-
- /* Optimize for no indirection. */
- result = object;
- if (SYMBOLP (result) && !NILP (result)
- && (result = XSYMBOL (result)->u.s.function, SYMBOLP (result)))
- result = indirect_function (result);
- if (!NILP (result))
- return result;
-
- return Qnil;
+ return indirect_function (object);
}
/* Extract and set vector and string elements. */
@@ -2622,6 +2566,7 @@ bool-vector. IDX starts at 0. */)
}
else if (RECORDP (array))
{
+ CHECK_IMPURE (array, XVECTOR (array));
if (idxval < 0 || idxval >= PVSIZE (array))
args_out_of_range (array, idx);
ASET (array, idxval, newelt);
@@ -4241,10 +4186,11 @@ syms_of_data (void)
Fput (Qrecursion_error, Qerror_message, build_pure_c_string
("Excessive recursive calling error"));
- PUT_ERROR (Qexcessive_variable_binding, recursion_tail,
- "Variable binding depth exceeds max-specpdl-size");
PUT_ERROR (Qexcessive_lisp_nesting, recursion_tail,
"Lisp nesting exceeds `max-lisp-eval-depth'");
+ /* Error obsolete (from 29.1), kept for compatibility. */
+ PUT_ERROR (Qexcessive_variable_binding, recursion_tail,
+ "Variable binding depth exceeds max-specpdl-size");
/* Types that type-of returns. */
DEFSYM (Qinteger, "integer");
diff --git a/src/dispnew.c b/src/dispnew.c
index 87ec83acdf3..43306043a0c 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -3188,7 +3188,7 @@ DEFUN ("redraw-display", Fredraw_display, Sredraw_display, 0, 0, "",
Lisp_Object tail, frame;
FOR_EACH_FRAME (tail, frame)
- if (FRAME_VISIBLE_P (XFRAME (frame)))
+ if (FRAME_REDISPLAY_P (XFRAME (frame)))
redraw_frame (XFRAME (frame));
return Qnil;
diff --git a/src/doc.c b/src/doc.c
index df57f84603e..174341523d7 100644
--- a/src/doc.c
+++ b/src/doc.c
@@ -330,19 +330,7 @@ string is passed through `substitute-command-keys'. */)
xsignal1 (Qvoid_function, function);
if (CONSP (fun) && EQ (XCAR (fun), Qmacro))
fun = XCDR (fun);
-#ifdef HAVE_NATIVE_COMP
- if (!NILP (Fsubr_native_elisp_p (fun)))
- doc = native_function_doc (fun);
- else
-#endif
- if (SUBRP (fun))
- doc = make_fixnum (XSUBR (fun)->doc);
-#ifdef HAVE_MODULES
- else if (MODULE_FUNCTIONP (fun))
- doc = module_function_documentation (XMODULE_FUNCTION (fun));
-#endif
- else
- doc = call1 (Qfunction_documentation, fun);
+ doc = call1 (Qfunction_documentation, fun);
/* If DOC is 0, it's typically because of a dumped file missing
from the DOC file (bug in src/Makefile.in). */
@@ -371,6 +359,25 @@ string is passed through `substitute-command-keys'. */)
return doc;
}
+DEFUN ("internal-subr-documentation", Fsubr_documentation, Ssubr_documentation, 1, 1, 0,
+ doc: /* Return the raw documentation info of a C primitive. */)
+ (Lisp_Object function)
+{
+#ifdef HAVE_NATIVE_COMP
+ if (!NILP (Fsubr_native_elisp_p (function)))
+ return native_function_doc (function);
+ else
+#endif
+ if (SUBRP (function))
+ return make_fixnum (XSUBR (function)->doc);
+#ifdef HAVE_MODULES
+ else if (MODULE_FUNCTIONP (function))
+ return module_function_documentation (XMODULE_FUNCTION (function));
+#endif
+ else
+ return Qt;
+}
+
DEFUN ("documentation-property", Fdocumentation_property,
Sdocumentation_property, 2, 3, 0,
doc: /* Return the documentation string that is SYMBOL's PROP property.
@@ -713,6 +720,7 @@ compute the correct value for the current terminal in the nil case. */);
/* Initialized by ‘main’. */
defsubr (&Sdocumentation);
+ defsubr (&Ssubr_documentation);
defsubr (&Sdocumentation_property);
defsubr (&Ssnarf_documentation);
defsubr (&Stext_quoting_style);
diff --git a/src/emacs-module.h.in b/src/emacs-module.h.in
index 6a23aa708e4..a455c41a5f1 100644
--- a/src/emacs-module.h.in
+++ b/src/emacs-module.h.in
@@ -183,6 +183,21 @@ struct emacs_env_29
@module_env_snippet_29@
};
+struct emacs_env_30
+{
+@module_env_snippet_25@
+
+@module_env_snippet_26@
+
+@module_env_snippet_27@
+
+@module_env_snippet_28@
+
+@module_env_snippet_29@
+
+@module_env_snippet_30@
+};
+
/* Every module should define a function as follows. */
extern int emacs_module_init (struct emacs_runtime *runtime)
EMACS_NOEXCEPT
diff --git a/src/emacs.c b/src/emacs.c
index e63b0924282..80a013b68df 100644
--- a/src/emacs.c
+++ b/src/emacs.c
@@ -2447,7 +2447,8 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem
#ifdef HAVE_DBUS
init_dbusbind ();
#endif
-#if defined(USE_GTK) && !defined(HAVE_PGTK)
+
+#ifdef HAVE_X_WINDOWS
init_xterm ();
#endif
diff --git a/src/eval.c b/src/eval.c
index 2dd0c356e88..cd3eb0a3676 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -571,11 +571,12 @@ omitted or nil, NEW-ALIAS gets the documentation string of BASE-VARIABLE,
or of the variable at the end of the chain of aliases, if BASE-VARIABLE is
itself an alias. If NEW-ALIAS is bound, and BASE-VARIABLE is not,
then the value of BASE-VARIABLE is set to that of NEW-ALIAS.
-The return value is BASE-VARIABLE. */)
+The return value is BASE-VARIABLE.
+
+If the resulting chain of variable definitions would contain a loop,
+signal a `cyclic-variable-indirection' error. */)
(Lisp_Object new_alias, Lisp_Object base_variable, Lisp_Object docstring)
{
- struct Lisp_Symbol *sym;
-
CHECK_SYMBOL (new_alias);
CHECK_SYMBOL (base_variable);
@@ -584,7 +585,18 @@ The return value is BASE-VARIABLE. */)
error ("Cannot make a constant an alias: %s",
SDATA (SYMBOL_NAME (new_alias)));
- sym = XSYMBOL (new_alias);
+ struct Lisp_Symbol *sym = XSYMBOL (new_alias);
+
+ /* Ensure non-circularity. */
+ struct Lisp_Symbol *s = XSYMBOL (base_variable);
+ for (;;)
+ {
+ if (s == sym)
+ xsignal1 (Qcyclic_variable_indirection, base_variable);
+ if (s->u.s.redirect != SYMBOL_VARALIAS)
+ break;
+ s = SYMBOL_ALIAS (s);
+ }
switch (sym->u.s.redirect)
{
@@ -1367,7 +1379,7 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform,
error ("Invalid condition handler: %s",
SDATA (Fprin1_to_string (tem, Qt, Qnil)));
if (CONSP (tem) && EQ (XCAR (tem), QCsuccess))
- success_handler = XCDR (tem);
+ success_handler = tem;
else
clausenb++;
}
@@ -1430,7 +1442,7 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform,
if (!NILP (success_handler))
{
if (NILP (var))
- return Fprogn (success_handler);
+ return Fprogn (XCDR (success_handler));
Lisp_Object handler_var = var;
if (!NILP (Vinternal_interpreter_environment))
@@ -1442,7 +1454,7 @@ internal_lisp_condition_case (Lisp_Object var, Lisp_Object bodyform,
specpdl_ref count = SPECPDL_INDEX ();
specbind (handler_var, result);
- return unbind_to (count, Fprogn (success_handler));
+ return unbind_to (count, Fprogn (XCDR (success_handler)));
}
return result;
}
@@ -2116,7 +2128,7 @@ then strings and vectors are not accepted. */)
fun = function;
- fun = indirect_function (fun); /* Check cycles. */
+ fun = indirect_function (fun);
if (NILP (fun))
return Qnil;
@@ -2348,6 +2360,8 @@ it defines a macro. */)
}
+static Lisp_Object list_of_t; /* Never-modified constant containing (t). */
+
DEFUN ("eval", Feval, Seval, 1, 2, 0,
doc: /* Evaluate FORM and return its value.
If LEXICAL is t, evaluate using lexical scoping.
@@ -2357,7 +2371,7 @@ alist mapping symbols to their value. */)
{
specpdl_ref count = SPECPDL_INDEX ();
specbind (Qinternal_interpreter_environment,
- CONSP (lexical) || NILP (lexical) ? lexical : list1 (Qt));
+ CONSP (lexical) || NILP (lexical) ? lexical : list_of_t);
return unbind_to (count, eval_sub (form));
}
@@ -2371,8 +2385,7 @@ grow_specpdl_allocation (void)
union specbinding *pdlvec = specpdl - 1;
ptrdiff_t size = specpdl_end - specpdl;
ptrdiff_t pdlvecsize = size + 1;
- if (max_size <= size)
- xsignal0 (Qexcessive_variable_binding); /* Can't happen, essentially. */
+ eassert (max_size > size);
pdlvec = xpalloc (pdlvec, &pdlvecsize, 1, max_size + 1, sizeof *specpdl);
specpdl = pdlvec + 1;
specpdl_end = specpdl + pdlvecsize - 1;
@@ -3398,7 +3411,7 @@ DEFUN ("fetch-bytecode", Ffetch_bytecode, Sfetch_bytecode,
return object;
}
-/* Return true if SYMBOL currently has a let-binding
+/* Return true if SYMBOL's default currently has a let-binding
which was made in the buffer that is now current. */
bool
@@ -3413,6 +3426,7 @@ let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol)
struct Lisp_Symbol *let_bound_symbol = XSYMBOL (specpdl_symbol (p));
eassert (let_bound_symbol->u.s.redirect != SYMBOL_VARALIAS);
if (symbol == let_bound_symbol
+ && p->kind != SPECPDL_LET_LOCAL /* bug#62419 */
&& EQ (specpdl_where (p), buf))
return 1;
}
@@ -3474,7 +3488,7 @@ specbind (Lisp_Object symbol, Lisp_Object value)
switch (sym->u.s.redirect)
{
case SYMBOL_VARALIAS:
- sym = indirect_variable (sym); XSETSYMBOL (symbol, sym); goto start;
+ sym = SYMBOL_ALIAS (sym); XSETSYMBOL (symbol, sym); goto start;
case SYMBOL_PLAINVAL:
/* The most common case is that of a non-constant symbol with a
trivial value. Make that as fast as we can. */
@@ -4392,6 +4406,9 @@ alist of active lexical bindings. */);
Qcatch_all_memory_full
= Fmake_symbol (build_pure_c_string ("catch-all-memory-full"));
+ staticpro (&list_of_t);
+ list_of_t = list1 (Qt);
+
defsubr (&Sor);
defsubr (&Sand);
defsubr (&Sif);
diff --git a/src/fileio.c b/src/fileio.c
index f00c389a520..b80f8d61de4 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -134,6 +134,7 @@ static dev_t timestamp_file_system;
is added here. */
static Lisp_Object Vwrite_region_annotation_buffers;
+static Lisp_Object emacs_readlinkat (int, char const *);
static Lisp_Object file_name_directory (Lisp_Object);
static bool a_write (int, Lisp_Object, ptrdiff_t, ptrdiff_t,
Lisp_Object *, struct coding_system *);
@@ -2219,7 +2220,7 @@ permissions. */)
report_file_error ("Copying permissions to", newname);
}
#else /* not WINDOWSNT */
- ifd = emacs_open (SSDATA (encoded_file), O_RDONLY, 0);
+ ifd = emacs_open (SSDATA (encoded_file), O_RDONLY | O_NONBLOCK, 0);
if (ifd < 0)
report_file_error ("Opening input file", file);
@@ -2705,31 +2706,19 @@ This is what happens in interactive use with M-x. */)
}
if (dirp)
call4 (Qcopy_directory, file, newname, Qt, Qnil);
- else
- {
- Lisp_Object symlink_target
- = (S_ISLNK (file_st.st_mode)
- ? check_emacs_readlinkat (AT_FDCWD, file, SSDATA (encoded_file))
- : Qnil);
- if (!NILP (symlink_target))
- Fmake_symbolic_link (symlink_target, newname, ok_if_already_exists);
- else if (S_ISFIFO (file_st.st_mode))
- {
- /* If it's a FIFO, calling `copy-file' will hang if it's a
- inter-file system move, so do it here. (It will signal
- an error in that case, but it won't hang in any case.) */
- if (!NILP (ok_if_already_exists))
- barf_or_query_if_file_exists (newname, false,
- "rename to it",
- FIXNUMP (ok_if_already_exists),
- false);
- if (rename (SSDATA (encoded_file), SSDATA (encoded_newname)) != 0)
- report_file_errno ("Renaming", list2 (file, newname), errno);
- return Qnil;
- }
+ else if (S_ISREG (file_st.st_mode))
+ Fcopy_file (file, newname, ok_if_already_exists, Qt, Qt, Qt);
+ else if (S_ISLNK (file_st.st_mode))
+ {
+ Lisp_Object target = emacs_readlinkat (AT_FDCWD,
+ SSDATA (encoded_file));
+ if (!NILP (target))
+ Fmake_symbolic_link (target, newname, ok_if_already_exists);
else
- Fcopy_file (file, newname, ok_if_already_exists, Qt, Qt, Qt);
+ report_file_error ("Renaming", list2 (file, newname));
}
+ else
+ report_file_errno ("Renaming", list2 (file, newname), rename_errno);
specpdl_ref count = SPECPDL_INDEX ();
specbind (Qdelete_by_moving_to_trash, Qnil);
@@ -3918,8 +3907,6 @@ by calling `format-decode', which see. */)
struct timespec mtime;
int fd;
ptrdiff_t inserted = 0;
- ptrdiff_t how_much;
- off_t beg_offset, end_offset;
int unprocessed;
specpdl_ref count = SPECPDL_INDEX ();
Lisp_Object handler, val, insval, orig_filename, old_undo;
@@ -3932,7 +3919,8 @@ by calling `format-decode', which see. */)
bool replace_handled = false;
bool set_coding_system = false;
Lisp_Object coding_system;
- bool read_quit = false;
+ /* Negative if read error, 0 if OK so far, positive if quit. */
+ ptrdiff_t read_quit = 0;
/* If the undo log only contains the insertion, there's no point
keeping it. It's typically when we first fill a file-buffer. */
bool empty_undo_list_p
@@ -3981,6 +3969,17 @@ by calling `format-decode', which see. */)
goto handled;
}
+ if (!NILP (visit))
+ {
+ if (!NILP (beg) || !NILP (end))
+ error ("Attempt to visit less than an entire file");
+ if (BEG < Z && NILP (replace))
+ error ("Cannot do file visiting in a non-empty buffer");
+ }
+
+ off_t beg_offset = !NILP (beg) ? file_offset (beg) : 0;
+ off_t end_offset = !NILP (end) ? file_offset (end) : -1;
+
orig_filename = filename;
filename = ENCODE_FILE (filename);
@@ -4023,7 +4022,6 @@ by calling `format-decode', which see. */)
if (!S_ISREG (st.st_mode))
{
regular = false;
- seekable = lseek (fd, 0, SEEK_CUR) < 0;
if (! NILP (visit))
{
@@ -4031,32 +4029,18 @@ by calling `format-decode', which see. */)
goto notfound;
}
- if (!NILP (beg) && !seekable)
- xsignal2 (Qfile_error,
- build_string ("cannot use a start position in a non-seekable file/device"),
- orig_filename);
-
if (!NILP (replace))
xsignal2 (Qfile_error,
build_string ("not a regular file"), orig_filename);
- }
- if (!NILP (visit))
- {
- if (!NILP (beg) || !NILP (end))
- error ("Attempt to visit less than an entire file");
- if (BEG < Z && NILP (replace))
- error ("Cannot do file visiting in a non-empty buffer");
+ seekable = lseek (fd, 0, SEEK_CUR) < 0;
+ if (!NILP (beg) && !seekable)
+ xsignal2 (Qfile_error,
+ build_string ("cannot use a start position in a non-seekable file/device"),
+ orig_filename);
}
- if (!NILP (beg))
- beg_offset = file_offset (beg);
- else
- beg_offset = 0;
-
- if (!NILP (end))
- end_offset = file_offset (end);
- else
+ if (end_offset < 0)
{
if (!regular)
end_offset = TYPE_MAXIMUM (off_t);
@@ -4117,7 +4101,7 @@ by calling `format-decode', which see. */)
else
{
/* Don't try looking inside a file for a coding system
- specification if it is not seekable. */
+ specification if it is not a regular file. */
if (regular && !NILP (Vset_auto_coding_function))
{
/* Find a coding system specified in the heading two
@@ -4135,7 +4119,7 @@ by calling `format-decode', which see. */)
if (nread == 1024)
{
int ntail;
- if (lseek (fd, - (1024 * 3), SEEK_END) < 0)
+ if (lseek (fd, st.st_size - 1024 * 3, SEEK_CUR) < 0)
report_file_error ("Setting file position",
orig_filename);
ntail = emacs_read_quit (fd, read_buf + nread, 1024 * 3);
@@ -4420,7 +4404,7 @@ by calling `format-decode', which see. */)
ptrdiff_t bufpos;
unsigned char *decoded;
ptrdiff_t temp;
- ptrdiff_t this = 0;
+ ptrdiff_t this;
specpdl_ref this_count = SPECPDL_INDEX ();
bool multibyte
= ! NILP (BVAR (current_buffer, enable_multibyte_characters));
@@ -4596,8 +4580,12 @@ by calling `format-decode', which see. */)
}
move_gap_both (PT, PT_BYTE);
- if (GAP_SIZE < total)
- make_gap (total - GAP_SIZE);
+
+ /* Ensure the gap is at least one byte larger than needed for the
+ estimated file size, so that in the usual case we read to EOF
+ without reallocating. */
+ if (GAP_SIZE <= total)
+ make_gap (total - GAP_SIZE + 1);
if (beg_offset != 0 || !NILP (replace))
{
@@ -4605,12 +4593,6 @@ by calling `format-decode', which see. */)
report_file_error ("Setting file position", orig_filename);
}
- /* In the following loop, HOW_MUCH contains the total bytes read so
- far for a regular file, and not changed for a special file. But,
- before exiting the loop, it is set to a negative value if I/O
- error occurs. */
- how_much = 0;
-
/* Total bytes inserted. */
inserted = 0;
@@ -4619,23 +4601,26 @@ by calling `format-decode', which see. */)
{
ptrdiff_t gap_size = GAP_SIZE;
- while (how_much < total)
+ while (NILP (end) || inserted < total)
{
- /* `try' is reserved in some compilers (Microsoft C). */
- ptrdiff_t trytry = min (total - how_much, READ_BUF_SIZE);
ptrdiff_t this;
+ if (gap_size == 0)
+ {
+ /* The size estimate was wrong. Make the gap 50% larger. */
+ make_gap (GAP_SIZE >> 1);
+ gap_size = GAP_SIZE - inserted;
+ }
+
+ /* 'try' is reserved in some compilers (Microsoft C). */
+ ptrdiff_t trytry = min (gap_size, READ_BUF_SIZE);
+ if (!NILP (end))
+ trytry = min (trytry, total - inserted);
+
if (!seekable && NILP (end))
{
Lisp_Object nbytes;
- /* Maybe make more room. */
- if (gap_size < trytry)
- {
- make_gap (trytry - gap_size);
- gap_size = GAP_SIZE - inserted;
- }
-
/* Read from the file, capturing `quit'. When an
error occurs, end the loop, and arrange for a quit
to be signaled after decoding the text we read. */
@@ -4646,7 +4631,7 @@ by calling `format-decode', which see. */)
if (NILP (nbytes))
{
- read_quit = true;
+ read_quit = 1;
break;
}
@@ -4665,19 +4650,11 @@ by calling `format-decode', which see. */)
if (this <= 0)
{
- how_much = this;
+ read_quit = this;
break;
}
gap_size -= this;
-
- /* For a regular file, where TOTAL is the real size,
- count HOW_MUCH to compare with it.
- For a special file, where TOTAL is just a buffer size,
- so don't bother counting in HOW_MUCH.
- (INSERTED is where we count the number of characters inserted.) */
- if (seekable || !NILP (end))
- how_much += this;
inserted += this;
}
}
@@ -4698,7 +4675,7 @@ by calling `format-decode', which see. */)
emacs_close (fd);
clear_unwind_protect (fd_index);
- if (how_much < 0)
+ if (read_quit < 0)
report_file_error ("Read error", orig_filename);
notfound:
@@ -6345,24 +6322,6 @@ init_fileio (void)
umask (realmask);
valid_timestamp_file_system = 0;
-
- /* fsync can be a significant performance hit. Often it doesn't
- suffice to make the file-save operation survive a crash. For
- batch scripts, which are typically part of larger shell commands
- that don't fsync other files, its effect on performance can be
- significant so its utility is particularly questionable.
- Hence, for now by default fsync is used only when interactive.
-
- For more on why fsync often fails to work on today's hardware, see:
- Zheng M et al. Understanding the robustness of SSDs under power fault.
- 11th USENIX Conf. on File and Storage Technologies, 2013 (FAST '13), 271-84
- https://www.usenix.org/system/files/conference/fast13/fast13-final80.pdf
-
- For more on why fsync does not suffice even if it works properly, see:
- Roche X. Necessary step(s) to synchronize filename operations on disk.
- Austin Group Defect 672, 2013-03-19
- https://austingroupbugs.net/view.php?id=672 */
- write_region_inhibit_fsync = noninteractive;
}
void
@@ -6620,9 +6579,22 @@ file is usually more useful if it contains the deleted text. */);
DEFVAR_BOOL ("write-region-inhibit-fsync", write_region_inhibit_fsync,
doc: /* Non-nil means don't call fsync in `write-region'.
This variable affects calls to `write-region' as well as save commands.
-Setting this to nil may avoid data loss if the system loses power or
-the operating system crashes. By default, it is non-nil in batch mode. */);
- write_region_inhibit_fsync = 0; /* See also `init_fileio' above. */
+By default, it is non-nil.
+
+Although setting this to nil may avoid data loss if the system loses power,
+it can be a significant performance hit in the usual case, and it doesn't
+necessarily cause file-save operations to actually survive a crash. */);
+
+ /* For more on why fsync often fails to work on today's hardware, see:
+ Zheng M et al. Understanding the robustness of SSDs under power fault.
+ 11th USENIX Conf. on File and Storage Technologies, 2013 (FAST '13), 271-84
+ https://www.usenix.org/system/files/conference/fast13/fast13-final80.pdf
+
+ For more on why fsync does not suffice even if it works properly, see:
+ Roche X. Necessary step(s) to synchronize filename operations on disk.
+ Austin Group Defect 672, 2013-03-19
+ https://austingroupbugs.net/view.php?id=672 */
+ write_region_inhibit_fsync = true;
DEFVAR_BOOL ("delete-by-moving-to-trash", delete_by_moving_to_trash,
doc: /* Specifies whether to use the system's trash can.
diff --git a/src/floatfns.c b/src/floatfns.c
index 1d891ef3ce1..13f0ca3e129 100644
--- a/src/floatfns.c
+++ b/src/floatfns.c
@@ -27,19 +27,22 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
frexp, ldexp, log, log10 [via (log X 10)], *modf, pow, sin, *sinh,
sqrt, tan, *tanh.
- C99 and C11 require the following math.h functions in addition to
+ C99, C11 and C17 require the following math.h functions in addition to
the C89 functions. Of these, Emacs currently exports only the
starred ones to Lisp, since we haven't found a use for the others.
Also, it uses the ones marked "+" internally:
acosh, atanh, cbrt, copysign (implemented by signbit), erf, erfc,
exp2, expm1, fdim, fma, fmax, fmin, fpclassify, hypot, +ilogb,
- isfinite, isgreater, isgreaterequal, isinf, isless, islessequal,
+ +isfinite, isgreater, isgreaterequal, +isinf, isless, islessequal,
islessgreater, *isnan, isnormal, isunordered, lgamma, log1p, *log2
[via (log X 2)], logb (approximately; implemented by frexp),
+lrint/llrint, +lround/llround, nan, nearbyint, nextafter,
nexttoward, remainder, remquo, *rint, round, scalbln, +scalbn,
+signbit, tgamma, *trunc.
+ C23 requires many more math.h functions. Emacs does not yet export
+ or use them.
+
The C standard also requires functions for float and long double
that are not listed above. Of these functions, Emacs uses only the
following internally: fabsf, powf, sprintf.
diff --git a/src/fns.c b/src/fns.c
index ff364c65e26..e92ef7e4c81 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -439,21 +439,32 @@ If string STR1 is greater, the value is a positive number N;
}
/* Check whether the platform allows access to unaligned addresses for
- size_t integers without trapping or undue penalty (a few cycles is OK).
+ size_t integers without trapping or undue penalty (a few cycles is OK),
+ and that a word-sized memcpy can be used to generate such an access.
This whitelist is incomplete but since it is only used to improve
performance, omitting cases is safe. */
-#if defined __x86_64__|| defined __amd64__ \
- || defined __i386__ || defined __i386 \
- || defined __arm64__ || defined __aarch64__ \
- || defined __powerpc__ || defined __powerpc \
- || defined __ppc__ || defined __ppc \
- || defined __s390__ || defined __s390x__
+#if (defined __x86_64__|| defined __amd64__ \
+ || defined __i386__ || defined __i386 \
+ || defined __arm64__ || defined __aarch64__ \
+ || defined __powerpc__ || defined __powerpc \
+ || defined __ppc__ || defined __ppc \
+ || defined __s390__ || defined __s390x__) \
+ && defined __OPTIMIZE__
#define HAVE_FAST_UNALIGNED_ACCESS 1
#else
#define HAVE_FAST_UNALIGNED_ACCESS 0
#endif
+/* Load a word from a possibly unaligned address. */
+static inline size_t
+load_unaligned_size_t (const void *p)
+{
+ size_t x;
+ memcpy (&x, p, sizeof x);
+ return x;
+}
+
DEFUN ("string-lessp", Fstring_lessp, Sstring_lessp, 2, 2, 0,
doc: /* Return non-nil if STRING1 is less than STRING2 in lexicographic order.
Case is significant.
@@ -497,11 +508,11 @@ Symbols are also allowed; their print names are used instead. */)
if (HAVE_FAST_UNALIGNED_ACCESS)
{
/* First compare entire machine words. */
- typedef size_t word_t;
- int ws = sizeof (word_t);
- const word_t *w1 = (const word_t *) SDATA (string1);
- const word_t *w2 = (const word_t *) SDATA (string2);
- while (b < nb - ws + 1 && w1[b / ws] == w2[b / ws])
+ int ws = sizeof (size_t);
+ const char *w1 = SSDATA (string1);
+ const char *w2 = SSDATA (string2);
+ while (b < nb - ws + 1 && load_unaligned_size_t (w1 + b)
+ == load_unaligned_size_t (w2 + b))
b += ws;
}
@@ -3177,13 +3188,14 @@ DEFUN ("yes-or-no-p", Fyes_or_no_p, Syes_or_no_p, 1, 1, 0,
Return t if answer is yes, and nil if the answer is no.
PROMPT is the string to display to ask the question; `yes-or-no-p'
-adds \"(yes or no) \" to it.
+appends `yes-or-no-prompt' (default \"(yes or no) \") to it.
The user must confirm the answer with RET, and can edit it until it
has been confirmed.
If the `use-short-answers' variable is non-nil, instead of asking for
-\"yes\" or \"no\", this function will ask for \"y\" or \"n\".
+\"yes\" or \"no\", this function will ask for \"y\" or \"n\" (and
+ignore the value of `yes-or-no-prompt').
If dialog boxes are supported, a dialog box will be used
if `last-nonmenu-event' is nil, and `use-dialog-box' is non-nil. */)
@@ -3208,8 +3220,7 @@ if `last-nonmenu-event' is nil, and `use-dialog-box' is non-nil. */)
if (use_short_answers)
return call1 (intern ("y-or-n-p"), prompt);
- AUTO_STRING (yes_or_no, "(yes or no) ");
- prompt = CALLN (Fconcat, prompt, yes_or_no);
+ prompt = CALLN (Fconcat, prompt, Vyes_or_no_prompt);
specpdl_ref count = SPECPDL_INDEX ();
specbind (Qenable_recursive_minibuffers, Qt);
@@ -6261,9 +6272,15 @@ When non-nil, `yes-or-no-p' will use `y-or-n-p' to read the answer.
We recommend against setting this variable non-nil, because `yes-or-no-p'
is intended to be used when users are expected not to respond too
quickly, but to take their time and perhaps think about the answer.
-The same variable also affects the function `read-answer'. */);
+The same variable also affects the function `read-answer'. See also
+`yes-or-no-prompt'. */);
use_short_answers = false;
+ DEFVAR_LISP ("yes-or-no-prompt", Vyes_or_no_prompt,
+ doc: /* String to append when `yes-or-no-p' asks a question.
+For best results this should end in a space. */);
+ Vyes_or_no_prompt = make_unibyte_string ("(yes or no) ", strlen ("(yes or no) "));
+
defsubr (&Sidentity);
defsubr (&Srandom);
defsubr (&Slength);
diff --git a/src/frame.c b/src/frame.c
index 38a6583605c..2cea96d4a32 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -1526,7 +1526,7 @@ do_switch_frame (Lisp_Object frame, int for_deletion, Lisp_Object norecord)
if (f->select_mini_window_flag
&& !NILP (Fminibufferp (XWINDOW (f->minibuffer_window)->contents, Qt)))
- f->selected_window = f->minibuffer_window;
+ fset_selected_window (f, f->minibuffer_window);
f->select_mini_window_flag = false;
if (! FRAME_MINIBUF_ONLY_P (XFRAME (selected_frame)))
@@ -1892,12 +1892,61 @@ other_frames (struct frame *f, bool invisible, bool force)
if (f != f1)
{
+ /* The following code is defined out because it is
+ responsible for a performance drop under X connections
+ over a network, and its purpose is unclear. XSync does
+ not handle events (or call any callbacks defined by
+ Emacs), and as such it should not note any "recent change
+ in visibility".
+
+ When writing new code, please try as hard as possible to
+ avoid calls that require a roundtrip to the X server.
+ When such calls are inevitable, use the XCB library to
+ handle multiple consecutive requests with a data reply in
+ a more asynchronous fashion. The following code
+ demonstrates why:
+
+ rc = XGetWindowProperty (dpyinfo->display, window, ...
+ status = XGrabKeyboard (dpyinfo->display, ...
+
+ here, `XGetWindowProperty' will wait for a reply from the
+ X server before returning, and thus allowing Emacs to
+ make the XGrabKeyboard request, which in itself also
+ requires waiting a reply. When XCB is available, this
+ code could be written:
+
+#ifdef HAVE_XCB
+ xcb_get_property_cookie_t cookie1;
+ xcb_get_property_reply_t *reply1;
+ xcb_grab_keyboard_cookie_t cookie2;
+ xcb_grab_keyboard_reply_t *reply2;
+
+ cookie1 = xcb_get_property (dpyinfo->xcb_connection, window, ...
+ cookie2 = xcb_grab_keyboard (dpyinfo->xcb_connection, ...
+ reply1 = xcb_get_property_reply (dpyinfo->xcb_connection,
+ cookie1);
+ reply2 = xcb_grab_keyboard_reply (dpyinfo->xcb_connection,
+ cookie2);
+#endif
+
+ In this code, the GetProperty and GrabKeyboard requests
+ are made simultaneously, and replies are then obtained
+ from the server at once, avoiding the extraneous
+ roundtrip to the X server after the call to
+ `XGetWindowProperty'.
+
+ However, please keep an alternative implementation
+ available for use when Emacs is built without XCB. */
+
+#if 0
/* Verify that we can still talk to the frame's X window, and
note any recent change in visibility. */
#ifdef HAVE_X_WINDOWS
if (FRAME_WINDOW_P (f1))
x_sync (f1);
#endif
+#endif
+
if (!FRAME_TOOLTIP_P (f1)
/* Tooltips and child frames count neither for
invisibility nor for deletions. */
diff --git a/src/frame.h b/src/frame.h
index 4a4c8c38447..b95b94c7685 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -1010,6 +1010,20 @@ default_pixels_per_inch_y (void)
/* True if frame F is currently visible. */
#define FRAME_VISIBLE_P(f) (f)->visible
+/* True if frame F should be redisplayed. This is normally the same
+ as FRAME_VISIBLE_P (f). Under X, frames can continue to be
+ displayed to the user by the compositing manager even if they are
+ invisible, so this also checks whether or not the frame is reported
+ visible by the X server. */
+
+#ifndef HAVE_X_WINDOWS
+#define FRAME_REDISPLAY_P(f) (FRAME_VISIBLE_P (f))
+#else
+#define FRAME_REDISPLAY_P(f) (FRAME_VISIBLE_P (f) \
+ || (FRAME_X_P (f) \
+ && FRAME_X_VISIBLE (f)))
+#endif
+
/* True if frame F is currently visible but hidden. */
#define FRAME_OBSCURED_P(f) ((f)->visible > 1)
@@ -1718,7 +1732,6 @@ extern void x_wm_set_icon_position (struct frame *, int, int);
#if !defined USE_X_TOOLKIT
extern const char *x_get_resource_string (const char *, const char *);
#endif
-extern void x_sync (struct frame *);
#endif /* HAVE_X_WINDOWS */
#if !defined (HAVE_NS) && !defined (HAVE_PGTK)
diff --git a/src/gnutls.c b/src/gnutls.c
index 91e369375f2..ca7e9fc4c73 100644
--- a/src/gnutls.c
+++ b/src/gnutls.c
@@ -34,6 +34,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
# endif
# if GNUTLS_VERSION_NUMBER >= 0x030200
+# define HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
# define HAVE_GNUTLS_CIPHER_GET_IV_SIZE
# endif
@@ -121,6 +122,11 @@ DEF_DLL_FN (int, gnutls_certificate_set_x509_crl_file,
DEF_DLL_FN (int, gnutls_certificate_set_x509_key_file,
(gnutls_certificate_credentials_t, const char *, const char *,
gnutls_x509_crt_fmt_t));
+# ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
+DEF_DLL_FN (int, gnutls_certificate_set_x509_key_file2,
+ (gnutls_certificate_credentials_t, const char *, const char *,
+ gnutls_x509_crt_fmt_t, const char *, unsigned int));
+# endif
# ifdef HAVE_GNUTLS_X509_SYSTEM_TRUST
DEF_DLL_FN (int, gnutls_certificate_set_x509_system_trust,
(gnutls_certificate_credentials_t));
@@ -314,6 +320,9 @@ init_gnutls_functions (void)
LOAD_DLL_FN (library, gnutls_certificate_set_verify_flags);
LOAD_DLL_FN (library, gnutls_certificate_set_x509_crl_file);
LOAD_DLL_FN (library, gnutls_certificate_set_x509_key_file);
+# ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
+ LOAD_DLL_FN (library, gnutls_certificate_set_x509_key_file2);
+# endif
# ifdef HAVE_GNUTLS_X509_SYSTEM_TRUST
LOAD_DLL_FN (library, gnutls_certificate_set_x509_system_trust);
# endif
@@ -455,6 +464,9 @@ init_gnutls_functions (void)
# define gnutls_certificate_set_verify_flags fn_gnutls_certificate_set_verify_flags
# define gnutls_certificate_set_x509_crl_file fn_gnutls_certificate_set_x509_crl_file
# define gnutls_certificate_set_x509_key_file fn_gnutls_certificate_set_x509_key_file
+# ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
+# define gnutls_certificate_set_x509_key_file2 fn_gnutls_certificate_set_x509_key_file2
+# endif
# define gnutls_certificate_set_x509_system_trust fn_gnutls_certificate_set_x509_system_trust
# define gnutls_certificate_set_x509_trust_file fn_gnutls_certificate_set_x509_trust_file
# define gnutls_certificate_type_get fn_gnutls_certificate_type_get
@@ -1774,6 +1786,88 @@ gnutls_verify_boot (Lisp_Object proc, Lisp_Object proplist)
return gnutls_make_error (ret);
}
+#ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
+
+/* Helper function for gnutls-boot.
+
+ The key :flags receives a list of symbols, each of which
+ corresponds to a GnuTLS C flag, the ORed result is to be passed to
+ the function `gnutls_certificate_set_x509_key_file2' as its last
+ argument. */
+static unsigned int
+key_file2_aux (Lisp_Object flags)
+{
+ unsigned int rv = 0;
+ Lisp_Object tail = flags;
+ FOR_EACH_TAIL_SAFE (tail)
+ {
+ Lisp_Object flag = XCAR (tail);
+ if (EQ (flag, Qgnutls_pkcs_plain))
+ rv |= GNUTLS_PKCS_PLAIN;
+#ifdef GNUTLS_PKCS_PKCS12_3DES
+ else if (EQ (flag, Qgnutls_pkcs_pkcs12_3des))
+ rv |= GNUTLS_PKCS_PKCS12_3DES;
+#endif
+#ifdef GNUTLS_PKCS_PKCS12_ARCFOUR
+ else if (EQ (flag, Qgnutls_pkcs_pkcs12_arcfour))
+ rv |= GNUTLS_PKCS_PKCS12_ARCFOUR;
+#endif
+#ifdef GNUTLS_PKCS_PKCS12_RC2_40
+ else if (EQ (flag, Qgnutls_pkcs_pkcs12_rc2_40))
+ rv |= GNUTLS_PKCS_PKCS12_RC2_40;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_3DES
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_3des))
+ rv |= GNUTLS_PKCS_PBES2_3DES;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_AES_128
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_aes_128))
+ rv |= GNUTLS_PKCS_PBES2_AES_128;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_AES_192
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_aes_192))
+ rv |= GNUTLS_PKCS_PBES2_AES_192;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_AES_256
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_aes_256))
+ rv |= GNUTLS_PKCS_PBES2_AES_256;
+#endif
+ else if (EQ (flag, Qgnutls_pkcs_null_password))
+ rv |= GNUTLS_PKCS_NULL_PASSWORD;
+#ifdef GNUTLS_PKCS_PBES2_DES
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_des))
+ rv |= GNUTLS_PKCS_PBES2_DES;
+#endif
+#ifdef GNUTLS_PKCS_PBES1_DES_MD5
+ else if (EQ (flag, Qgnutls_pkcs_pbes1_des_md5))
+ rv |= GNUTLS_PKCS_PBES1_DES_MD5;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_GOST_TC26Z
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_gost_tc26z))
+ rv |= GNUTLS_PKCS_PBES2_GOST_TC26Z;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_GOST_CPA
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_gost_cpa))
+ rv |= GNUTLS_PKCS_PBES2_GOST_CPA;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_GOST_CPB
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_gost_cpb))
+ rv |= GNUTLS_PKCS_PBES2_GOST_CPB;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_GOST_CPC
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_gost_cpc))
+ rv |= GNUTLS_PKCS_PBES2_GOST_CPC;
+#endif
+#ifdef GNUTLS_PKCS_PBES2_GOST_CPD
+ else if (EQ (flag, Qgnutls_pkcs_pbes2_gost_cpd))
+ rv |= GNUTLS_PKCS_PBES2_GOST_CPD;
+#endif
+ }
+ return rv;
+}
+
+#endif /* HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2 */
+
DEFUN ("gnutls-boot", Fgnutls_boot, Sgnutls_boot, 3, 3, 0,
doc: /* Initialize GnuTLS client for process PROC with TYPE+PROPLIST.
Currently only client mode is supported. Return a success/failure
@@ -1813,6 +1907,22 @@ accept in Diffie-Hellman key exchange.
:complete-negotiation, if non-nil, will make negotiation complete
before returning even on non-blocking sockets.
+:pass, the password of the private key as per GnuTLS'
+gnutls_certificate_set_x509_key_file2. Specify as nil to have a NULL
+password.
+
+:flags, a list of symbols relating to :pass, each specifying a flag:
+GNUTLS_PKCS_PLAIN, GNUTLS_PKCS_PKCS12_3DES,
+GNUTLS_PKCS_PKCS12_ARCFOUR, GNUTLS_PKCS_PKCS12_RC2_40,
+GNUTLS_PKCS_PBES2_3DES, GNUTLS_PKCS_PBES2_AES_128,
+GNUTLS_PKCS_PBES2_AES_192, GNUTLS_PKCS_PBES2_AES_256,
+GNUTLS_PKCS_NULL_PASSWORD, GNUTLS_PKCS_PBES2_DES,
+GNUTLS_PKCS_PBES2_DES_MD5, GNUTLS_PKCS_PBES2_GOST_TC26Z,
+GNUTLS_PKCS_PBES2_GOST_CPA, GNUTLS_PKCS_PBES2_GOST_CPB,
+GNUTLS_PKCS_PBES2_GOST_CPC, GNUTLS_PKCS_PBES2_GOST_CPD. If not
+specified, or if nil, the bitflag with value 0 is used.
+Note that some of these are only supported since GnuTLS 3.6.3.
+
The debug level will be set for this process AND globally for GnuTLS.
So if you set it higher or lower at any point, it affects global
debugging.
@@ -1825,6 +1935,9 @@ Processes must be initialized with this function before other GnuTLS
functions are used. This function allocates resources which can only
be deallocated by calling `gnutls-deinit' or by calling it again.
+The :pass and :flags keys are ignored with old versions of GnuTLS, and
+:flags is ignored if :pass is not specified.
+
The callbacks alist can have a `verify' key, associated with a
verification function (UNUSED).
@@ -1842,16 +1955,22 @@ one trustfile (usually a CA bundle). */)
Lisp_Object global_init;
char const *priority_string_ptr = "NORMAL"; /* default priority string. */
char *c_hostname;
+ const char *c_pass;
/* Placeholders for the property list elements. */
Lisp_Object priority_string;
Lisp_Object trustfiles;
Lisp_Object crlfiles;
Lisp_Object keylist;
+ Lisp_Object pass;
+ Lisp_Object flags;
/* Lisp_Object callbacks; */
Lisp_Object loglevel;
Lisp_Object hostname;
Lisp_Object prime_bits;
+#ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
+ unsigned int aux_key_file;
+#endif
struct Lisp_Process *p = XPROCESS (proc);
CHECK_PROCESS (proc);
@@ -1877,6 +1996,13 @@ one trustfile (usually a CA bundle). */)
crlfiles = plist_get (proplist, QCcrlfiles);
loglevel = plist_get (proplist, QCloglevel);
prime_bits = plist_get (proplist, QCmin_prime_bits);
+ pass = plist_get (proplist, QCpass);
+ flags = plist_get (proplist, QCflags);
+
+ if (STRINGP (pass))
+ c_pass = SSDATA (pass);
+ else
+ c_pass = NULL;
if (!STRINGP (hostname))
{
@@ -2038,6 +2164,20 @@ one trustfile (usually a CA bundle). */)
keyfile = ansi_encode_filename (keyfile);
certfile = ansi_encode_filename (certfile);
# endif
+# ifdef HAVE_GNUTLS_CERTIFICATE_SET_X509_KEY_FILE2
+ if (!NILP (plist_member (proplist, QCpass)))
+ {
+ aux_key_file = key_file2_aux (flags);
+ ret
+ = gnutls_certificate_set_x509_key_file2 (x509_cred,
+ SSDATA (certfile),
+ SSDATA (keyfile),
+ file_format,
+ c_pass,
+ aux_key_file);
+ }
+ else
+# endif
ret = gnutls_certificate_set_x509_key_file
(x509_cred, SSDATA (certfile), SSDATA (keyfile), file_format);
@@ -2265,6 +2405,9 @@ gnutls_symmetric_aead (bool encrypting, gnutls_cipher_algorithm_t gca,
aead_auth_size = aend_byte - astart_byte;
}
+ /* Only block ciphers require that ISIZE be a multiple of the block
+ size, and AEAD ciphers are not block ciphers. */
+#if 0
ptrdiff_t expected_remainder = encrypting ? 0 : cipher_tag_size;
ptrdiff_t cipher_block_size = gnutls_cipher_get_block_size (gca);
@@ -2274,6 +2417,7 @@ gnutls_symmetric_aead (bool encrypting, gnutls_cipher_algorithm_t gca,
"is not %"pD"d greater than a multiple of the required %"pD"d"),
gnutls_cipher_get_name (gca), desc,
isize, expected_remainder, cipher_block_size);
+#endif
ret = ((encrypting ? gnutls_aead_cipher_encrypt : gnutls_aead_cipher_decrypt)
(acipher, vdata, vsize, aead_auth_data, aead_auth_size,
@@ -2282,7 +2426,7 @@ gnutls_symmetric_aead (bool encrypting, gnutls_cipher_algorithm_t gca,
Lisp_Object output;
if (GNUTLS_E_SUCCESS <= ret)
output = make_unibyte_string (storage, storage_length);
- explicit_bzero (storage, storage_length);
+ memset_explicit (storage, 0, storage_length);
gnutls_aead_cipher_deinit (acipher);
if (ret < GNUTLS_E_SUCCESS)
@@ -2862,8 +3006,26 @@ level in the ones. For builds without libgnutls, the value is -1. */);
DEFSYM (QCmin_prime_bits, ":min-prime-bits");
DEFSYM (QCloglevel, ":loglevel");
DEFSYM (QCcomplete_negotiation, ":complete-negotiation");
+ DEFSYM (QCpass, ":pass");
+ DEFSYM (QCflags, ":flags");
DEFSYM (QCverify_flags, ":verify-flags");
DEFSYM (QCverify_error, ":verify-error");
+ DEFSYM (Qgnutls_pkcs_plain, "GNUTLS_PKCS_PLAIN");
+ DEFSYM (Qgnutls_pkcs_pkcs12_3des, "GNUTLS_PKCS_PKCS12_3DES");
+ DEFSYM (Qgnutls_pkcs_pkcs12_arcfour, "GNUTLS_PKCS_PKCS12_ARCFOUR");
+ DEFSYM (Qgnutls_pkcs_pkcs12_rc2_40, "GNUTLS_PKCS_PKCS12_RC2_40");
+ DEFSYM (Qgnutls_pkcs_pbes2_3des, "GNUTLS_PKCS_PBES2_3DES");
+ DEFSYM (Qgnutls_pkcs_pbes2_aes_128, "GNUTLS_PKCS_PBES2_AES_128");
+ DEFSYM (Qgnutls_pkcs_pbes2_aes_192, "GNUTLS_PKCS_PBES2_AES_192");
+ DEFSYM (Qgnutls_pkcs_pbes2_aes_256, "GNUTLS_PKCS_PBES2_AES_256");
+ DEFSYM (Qgnutls_pkcs_null_password, "GNUTLS_PKCS_NULL_PASSWORD");
+ DEFSYM (Qgnutls_pkcs_pbes2_des, "GNUTLS_PKCS_PBES2_DES");
+ DEFSYM (Qgnutls_pkcs_pbes1_des_md5, "GNUTLS_PKCS_PBES1_DES_MD5");
+ DEFSYM (Qgnutls_pkcs_pbes2_gost_tc26z, "GNUTLS_PKCS_PBES2_GOST_TC26Z");
+ DEFSYM (Qgnutls_pkcs_pbes2_gost_cpa, "GNUTLS_PKCS_PBES2_GOST_CPA");
+ DEFSYM (Qgnutls_pkcs_pbes2_gost_cpb, "GNUTLS_PKCS_PBES2_GOST_CPB");
+ DEFSYM (Qgnutls_pkcs_pbes2_gost_cpc, "GNUTLS_PKCS_PBES2_GOST_CPC");
+ DEFSYM (Qgnutls_pkcs_pbes2_gost_cpd, "GNUTLS_PKCS_PBES2_GOST_CPD");
DEFSYM (QCcipher_id, ":cipher-id");
DEFSYM (QCcipher_aead_capable, ":cipher-aead-capable");
diff --git a/src/gtkutil.c b/src/gtkutil.c
index f5e70305ead..4cc0f9f15b4 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2103,7 +2103,7 @@ xg_frame_restack (struct frame *f1, struct frame *f2, bool above_flag)
gdk_window_restack (gwin1, gwin2, above_flag);
#ifndef HAVE_PGTK
- x_sync (f1);
+ XSync (FRAME_X_DISPLAY (f1), False);
#else
gdk_flush ();
#endif
@@ -4793,7 +4793,7 @@ xg_update_scrollbar_pos (struct frame *f,
here to get some events. */
#ifndef HAVE_PGTK
- x_sync (f);
+ XSync (FRAME_X_DISPLAY (f), False);
#else
gdk_flush ();
#endif
@@ -4894,7 +4894,7 @@ xg_update_horizontal_scrollbar_pos (struct frame *f,
}
#ifndef HAVE_PGTK
- x_sync (f);
+ XSync (FRAME_X_DISPLAY (f), False);
#else
gdk_flush ();
#endif
diff --git a/src/haikufont.c b/src/haikufont.c
index 4599ca40c47..b4c2e547247 100644
--- a/src/haikufont.c
+++ b/src/haikufont.c
@@ -754,22 +754,30 @@ haikufont_encode_char (struct font *font, int c)
}
static Lisp_Object
-haikufont_open (struct frame *f, Lisp_Object font_entity, int x)
+haikufont_open (struct frame *f, Lisp_Object font_entity, int pixel_size)
{
struct haikufont_info *font_info;
struct haiku_font_pattern ptn;
struct font *font;
void *be_font;
- Lisp_Object font_object, tem, extra, indices, antialias;
+ Lisp_Object font_object, extra, indices, antialias;
int px_size, min_width, max_width;
int avg_width, height, space_width, ascent;
int descent, underline_pos, underline_thickness;
- if (x <= 0)
+ if (XFIXNUM (AREF (font_entity, FONT_SIZE_INDEX)) != 0)
+ pixel_size = XFIXNUM (AREF (font_entity, FONT_SIZE_INDEX));
+ else if (pixel_size == 0)
{
- /* Get pixel size from frame instead. */
- tem = get_frame_param (f, Qfontsize);
- x = NILP (tem) ? 0 : XFIXNAT (tem);
+ /* Try to resolve a suitable size for the font, if the font size
+ has not already been specified. First, if FRAME_FONT is set,
+ use its size. Otherwise, use 12, which is the default on
+ Haiku. */
+
+ if (FRAME_FONT (f))
+ pixel_size = FRAME_FONT (f)->pixel_size;
+ else
+ pixel_size = 12;
}
extra = AREF (font_entity, FONT_EXTRA_INDEX);
@@ -788,7 +796,8 @@ haikufont_open (struct frame *f, Lisp_Object font_entity, int x)
{
block_input ();
be_font = be_open_font_at_index (XFIXNUM (XCAR (indices)),
- XFIXNUM (XCDR (indices)), x);
+ XFIXNUM (XCDR (indices)),
+ pixel_size);
unblock_input ();
if (!be_font)
@@ -799,7 +808,7 @@ haikufont_open (struct frame *f, Lisp_Object font_entity, int x)
block_input ();
haikufont_spec_or_entity_to_pattern (font_entity, 1, &ptn);
- if (BFont_open_pattern (&ptn, &be_font, x))
+ if (BFont_open_pattern (&ptn, &be_font, pixel_size))
{
haikufont_done_with_query_pattern (&ptn);
unblock_input ();
@@ -813,7 +822,7 @@ haikufont_open (struct frame *f, Lisp_Object font_entity, int x)
block_input ();
font_object = font_make_object (VECSIZE (struct haikufont_info),
- font_entity, x);
+ font_entity, pixel_size);
ASET (font_object, FONT_TYPE_INDEX, Qhaiku);
font_info = (struct haikufont_info *) XFONT_OBJECT (font_object);
diff --git a/src/insdel.c b/src/insdel.c
index e459d0cfa17..b65a3fbd805 100644
--- a/src/insdel.c
+++ b/src/insdel.c
@@ -1715,6 +1715,44 @@ del_range (ptrdiff_t from, ptrdiff_t to)
del_range_1 (from, to, 1, 0);
}
+struct safe_del_range_context
+{
+ /* From and to positions. */
+ ptrdiff_t from, to;
+};
+
+static Lisp_Object
+safe_del_range_1 (void *ptr)
+{
+ struct safe_del_range_context *context;
+
+ context = ptr;
+ del_range (context->from, context->to);
+ return Qnil;
+}
+
+static Lisp_Object
+safe_del_range_2 (enum nonlocal_exit type, Lisp_Object value)
+{
+ return Qt;
+}
+
+/* Like del_range; however, catch all non-local exits. Value is 0 if
+ the buffer contents were really deleted. Otherwise, it is 1. */
+
+int
+safe_del_range (ptrdiff_t from, ptrdiff_t to)
+{
+ struct safe_del_range_context context;
+
+ context.from = from;
+ context.to = to;
+
+ return !NILP (internal_catch_all (safe_del_range_1,
+ &context,
+ safe_del_range_2));
+}
+
/* Like del_range; PREPARE says whether to call prepare_to_modify_buffer.
RET_STRING says to return the deleted text. */
diff --git a/src/itree.c b/src/itree.c
index b8db08bc74c..bd3e62a374a 100644
--- a/src/itree.c
+++ b/src/itree.c
@@ -1376,7 +1376,7 @@ itree_iterator_first_node (struct itree_tree *tree,
return node;
}
-/* Start a iterator enumerating all intervals in [BEGIN,END) in the
+/* Start an iterator enumerating all intervals in [BEGIN,END) in the
given ORDER. */
struct itree_iterator *
diff --git a/src/itree.h b/src/itree.h
index 8f675fd43bc..79d03d31ce2 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -25,6 +25,8 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include "lisp.h"
+INLINE_HEADER_BEGIN
+
/* The tree and node structs are mainly here, so they can be
allocated.
@@ -114,6 +116,11 @@ extern void itree_node_set_region (struct itree_tree *, struct itree_node *,
ptrdiff_t, ptrdiff_t);
extern struct itree_tree *itree_create (void);
extern void itree_destroy (struct itree_tree *);
+INLINE bool
+itree_empty_p (struct itree_tree *tree)
+{
+ return !tree || !tree->root;
+}
extern intmax_t itree_size (struct itree_tree *);
extern void itree_clear (struct itree_tree *);
extern void itree_insert (struct itree_tree *, struct itree_node *,
@@ -178,4 +185,6 @@ struct itree_iterator
#define ITREE_FOREACH_NARROW(beg, end) \
itree_iterator_narrow (itree_iter_, beg, end)
+INLINE_HEADER_END
+
#endif
diff --git a/src/lisp.h b/src/lisp.h
index 1276285e2f2..78b68880702 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -22,7 +22,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include <alloca.h>
#include <setjmp.h>
-#include <stdalign.h>
#include <stdarg.h>
#include <stddef.h>
#include <string.h>
@@ -273,7 +272,7 @@ DEFINE_GDB_SYMBOL_END (VALMASK)
emacs_align_type union in alloc.c.
Although these macros are reasonably portable, they are not
- guaranteed on non-GCC platforms, as C11 does not require support
+ guaranteed on non-GCC platforms, as the C standard does not require support
for alignment to GCALIGNMENT and older compilers may ignore
alignment requests. For any type T where garbage collection
requires alignment, use verify (GCALIGNED (T)) to verify the
@@ -2963,9 +2962,10 @@ XFLOAT_DATA (Lisp_Object f)
/* Most hosts nowadays use IEEE floating point, so they use IEC 60559
representations, have infinities and NaNs, and do not trap on
exceptions. Define IEEE_FLOATING_POINT to 1 if this host is one of the
- typical ones. The C11 macro __STDC_IEC_559__ is close to what is
+ typical ones. The C23 macro __STDC_IEC_60559_BFP__ (or its
+ obsolescent C11 counterpart __STDC_IEC_559__) is close to what is
wanted here, but is not quite right because Emacs does not require
- all the features of C11 Annex F (and does not require C11 at all,
+ all the features of C23 Annex F (and does not require C11 or later,
for that matter). */
#define IEEE_FLOATING_POINT (FLT_RADIX == 2 && FLT_MANT_DIG == 24 \
@@ -3965,7 +3965,6 @@ extern Lisp_Object arithcompare (Lisp_Object num1, Lisp_Object num2,
extern intmax_t cons_to_signed (Lisp_Object, intmax_t, intmax_t);
extern uintmax_t cons_to_unsigned (Lisp_Object, uintmax_t);
-extern struct Lisp_Symbol *indirect_variable (struct Lisp_Symbol *);
extern AVOID args_out_of_range (Lisp_Object, Lisp_Object);
extern AVOID circular_list (Lisp_Object);
extern Lisp_Object do_symval_forwarding (lispfwd);
@@ -4116,6 +4115,7 @@ extern void del_range_byte (ptrdiff_t, ptrdiff_t);
extern void del_range_both (ptrdiff_t, ptrdiff_t, ptrdiff_t, ptrdiff_t, bool);
extern Lisp_Object del_range_2 (ptrdiff_t, ptrdiff_t,
ptrdiff_t, ptrdiff_t, bool);
+extern int safe_del_range (ptrdiff_t, ptrdiff_t);
extern void modify_text (ptrdiff_t, ptrdiff_t);
extern void prepare_to_modify_buffer (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
extern void prepare_to_modify_buffer_1 (ptrdiff_t, ptrdiff_t, ptrdiff_t *);
@@ -5212,6 +5212,11 @@ extern void syms_of_profiler (void);
extern char *emacs_root_dir (void);
#endif /* DOS_NT */
+#ifdef HAVE_TEXT_CONVERSION
+/* Defined in textconv.c. */
+extern void report_selected_window_change (struct frame *);
+#endif
+
#ifdef HAVE_NATIVE_COMP
INLINE bool
SUBR_NATIVE_COMPILEDP (Lisp_Object a)
diff --git a/src/lread.c b/src/lread.c
index d0dc85f51c8..273120315df 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2639,154 +2639,137 @@ character_name_to_code (char const *name, ptrdiff_t name_len,
Unicode 9.0.0 the maximum is 83, so this should be safe. */
enum { UNICODE_CHARACTER_NAME_LENGTH_BOUND = 200 };
-/* Read a \-escape sequence, assuming we already read the `\'.
- If the escape sequence forces unibyte, return eight-bit char. */
+static AVOID
+invalid_escape_syntax_error (void)
+{
+ error ("Invalid escape character syntax");
+}
+/* Read a character escape sequence, assuming we just read a backslash
+ and one more character (next_char). */
static int
-read_escape (Lisp_Object readcharfun)
+read_char_escape (Lisp_Object readcharfun, int next_char)
{
- int c = READCHAR;
- /* \u allows up to four hex digits, \U up to eight. Default to the
- behavior for \u, and change this value in the case that \U is seen. */
- int unicode_hex_count = 4;
+ int modifiers = 0;
+ ptrdiff_t ncontrol = 0;
+ int chr;
+
+ again: ;
+ int c = next_char;
+ int unicode_hex_count;
+ int mod;
switch (c)
{
case -1:
end_of_file_error ();
- case 'a':
- return '\007';
- case 'b':
- return '\b';
- case 'd':
- return 0177;
- case 'e':
- return 033;
- case 'f':
- return '\f';
- case 'n':
- return '\n';
- case 'r':
- return '\r';
- case 't':
- return '\t';
- case 'v':
- return '\v';
+ case 'a': chr = '\a'; break;
+ case 'b': chr = '\b'; break;
+ case 'd': chr = 127; break;
+ case 'e': chr = 27; break;
+ case 'f': chr = '\f'; break;
+ case 'n': chr = '\n'; break;
+ case 'r': chr = '\r'; break;
+ case 't': chr = '\t'; break;
+ case 'v': chr = '\v'; break;
case '\n':
/* ?\LF is an error; it's probably a user mistake. */
error ("Invalid escape character syntax");
- case 'M':
- c = READCHAR;
- if (c != '-')
- error ("Invalid escape character syntax");
- c = READCHAR;
- if (c == '\\')
- c = read_escape (readcharfun);
- return c | meta_modifier;
-
- case 'S':
- c = READCHAR;
- if (c != '-')
- error ("Invalid escape character syntax");
- c = READCHAR;
- if (c == '\\')
- c = read_escape (readcharfun);
- return c | shift_modifier;
-
- case 'H':
- c = READCHAR;
- if (c != '-')
- error ("Invalid escape character syntax");
- c = READCHAR;
- if (c == '\\')
- c = read_escape (readcharfun);
- return c | hyper_modifier;
+ /* \M-x etc: set modifier bit and parse the char to which it applies,
+ allowing for chains such as \M-\S-\A-\H-\s-\C-q. */
+ case 'M': mod = meta_modifier; goto mod_key;
+ case 'S': mod = shift_modifier; goto mod_key;
+ case 'H': mod = hyper_modifier; goto mod_key;
+ case 'A': mod = alt_modifier; goto mod_key;
+ case 's': mod = super_modifier; goto mod_key;
- case 'A':
- c = READCHAR;
- if (c != '-')
- error ("Invalid escape character syntax");
- c = READCHAR;
- if (c == '\\')
- c = read_escape (readcharfun);
- return c | alt_modifier;
-
- case 's':
- c = READCHAR;
- if (c != '-')
- {
- UNREAD (c);
- return ' ';
- }
- c = READCHAR;
- if (c == '\\')
- c = read_escape (readcharfun);
- return c | super_modifier;
+ mod_key:
+ {
+ int c1 = READCHAR;
+ if (c1 != '-')
+ {
+ if (c == 's')
+ {
+ /* \s not followed by a hyphen is SPC. */
+ UNREAD (c1);
+ chr = ' ';
+ break;
+ }
+ else
+ /* \M, \S, \H, \A not followed by a hyphen is an error. */
+ invalid_escape_syntax_error ();
+ }
+ modifiers |= mod;
+ c1 = READCHAR;
+ if (c1 == '\\')
+ {
+ next_char = READCHAR;
+ goto again;
+ }
+ chr = c1;
+ break;
+ }
+ /* Control modifiers (\C-x or \^x) are messy and not actually idempotent.
+ For example, ?\C-\C-a = ?\C-\001 = 0x4000001.
+ Keep a count of them and apply them separately. */
case 'C':
- c = READCHAR;
- if (c != '-')
- error ("Invalid escape character syntax");
+ {
+ int c1 = READCHAR;
+ if (c1 != '-')
+ invalid_escape_syntax_error ();
+ }
FALLTHROUGH;
+ /* The prefixes \C- and \^ are equivalent. */
case '^':
- c = READCHAR;
- if (c == '\\')
- c = read_escape (readcharfun);
- if ((c & ~CHAR_MODIFIER_MASK) == '?')
- return 0177 | (c & CHAR_MODIFIER_MASK);
- else if (! ASCII_CHAR_P ((c & ~CHAR_MODIFIER_MASK)))
- return c | ctrl_modifier;
- /* ASCII control chars are made from letters (both cases),
- as well as the non-letters within 0100...0137. */
- else if ((c & 0137) >= 0101 && (c & 0137) <= 0132)
- return (c & (037 | ~0177));
- else if ((c & 0177) >= 0100 && (c & 0177) <= 0137)
- return (c & (037 | ~0177));
- else
- return c | ctrl_modifier;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- /* An octal escape, as in ANSI C. */
{
- register int i = c - '0';
- register int count = 0;
- while (++count < 3)
+ ncontrol++;
+ int c1 = READCHAR;
+ if (c1 == '\\')
{
- if ((c = READCHAR) >= '0' && c <= '7')
- {
- i *= 8;
- i += c - '0';
- }
- else
+ next_char = READCHAR;
+ goto again;
+ }
+ chr = c1;
+ break;
+ }
+
+ /* 1-3 octal digits. Values in 0x80..0xff are encoded as raw bytes. */
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ {
+ int i = c - '0';
+ int count = 0;
+ while (count < 2)
+ {
+ int c = READCHAR;
+ if (c < '0' || c > '7')
{
UNREAD (c);
break;
}
+ i = (i << 3) + (c - '0');
+ count++;
}
if (i >= 0x80 && i < 0x100)
i = BYTE8_TO_CHAR (i);
- return i;
+ chr = i;
+ break;
}
+ /* 1 or more hex digits. Values may encode modifiers.
+ Values in 0x80..0xff using 2 hex digits are encoded as raw bytes. */
case 'x':
- /* A hex escape, as in ANSI C. */
{
unsigned int i = 0;
int count = 0;
while (1)
{
- c = READCHAR;
+ int c = READCHAR;
int digit = char_hexdigit (c);
if (digit < 0)
{
@@ -2796,40 +2779,37 @@ read_escape (Lisp_Object readcharfun)
i = (i << 4) + digit;
/* Allow hex escapes as large as ?\xfffffff, because some
packages use them to denote characters with modifiers. */
- if ((CHAR_META | (CHAR_META - 1)) < i)
+ if (i > (CHAR_META | (CHAR_META - 1)))
error ("Hex character out of range: \\x%x...", i);
count += count < 3;
}
+ if (count == 0)
+ invalid_escape_syntax_error ();
if (count < 3 && i >= 0x80)
- return BYTE8_TO_CHAR (i);
- return i;
+ i = BYTE8_TO_CHAR (i);
+ modifiers |= i & CHAR_MODIFIER_MASK;
+ chr = i & ~CHAR_MODIFIER_MASK;
+ break;
}
+ /* 8-digit Unicode hex escape: \UHHHHHHHH */
case 'U':
- /* Post-Unicode-2.0: Up to eight hex chars. */
unicode_hex_count = 8;
- FALLTHROUGH;
- case 'u':
+ goto unicode_hex;
- /* A Unicode escape. We only permit them in strings and characters,
- not arbitrarily in the source code, as in some other languages. */
+ /* 4-digit Unicode hex escape: \uHHHH */
+ case 'u':
+ unicode_hex_count = 4;
+ unicode_hex:
{
unsigned int i = 0;
- int count = 0;
-
- while (++count <= unicode_hex_count)
+ for (int count = 0; count < unicode_hex_count; count++)
{
- c = READCHAR;
+ int c = READCHAR;
if (c < 0)
- {
- if (unicode_hex_count > 4)
- error ("Malformed Unicode escape: \\U%x", i);
- else
- error ("Malformed Unicode escape: \\u%x", i);
- }
- /* `isdigit' and `isalpha' may be locale-specific, which we don't
- want. */
+ error ("Malformed Unicode escape: \\%c%x",
+ unicode_hex_count == 4 ? 'u' : 'U', i);
int digit = char_hexdigit (c);
if (digit < 0)
error ("Non-hex character used for Unicode escape: %c (%d)",
@@ -2838,13 +2818,14 @@ read_escape (Lisp_Object readcharfun)
}
if (i > 0x10FFFF)
error ("Non-Unicode character: 0x%x", i);
- return i;
+ chr = i;
+ break;
}
+ /* Named character: \N{name} */
case 'N':
- /* Named character. */
{
- c = READCHAR;
+ int c = READCHAR;
if (c != '{')
invalid_syntax ("Expected opening brace after \\N", readcharfun);
char name[UNICODE_CHARACTER_NAME_LENGTH_BOUND + 1];
@@ -2852,12 +2833,12 @@ read_escape (Lisp_Object readcharfun)
ptrdiff_t length = 0;
while (true)
{
- c = READCHAR;
+ int c = READCHAR;
if (c < 0)
end_of_file_error ();
if (c == '}')
break;
- if (! (0 < c && c < 0x80))
+ if (c >= 0x80)
{
AUTO_STRING (format,
"Invalid character U+%04X in character name");
@@ -2886,13 +2867,41 @@ read_escape (Lisp_Object readcharfun)
name[length] = '\0';
/* character_name_to_code can invoke read0, recursively.
- This is why read0's buffer is not static. */
- return character_name_to_code (name, length, readcharfun);
+ This is why read0 needs to be re-entrant. */
+ chr = character_name_to_code (name, length, readcharfun);
+ break;
}
default:
- return c;
+ chr = c;
+ break;
}
+ eassert (chr >= 0 && chr < (1 << CHARACTERBITS));
+
+ /* Apply Control modifiers, using the rules:
+ \C-X = ascii_ctrl(nomod(X)) | mods(X) if nomod(X) is one of:
+ A-Z a-z ? @ [ \ ] ^ _
+
+ X | ctrl_modifier otherwise
+
+ where
+ nomod(c) = c without modifiers
+ mods(c) = the modifiers of c
+ ascii_ctrl(c) = 127 if c = '?'
+ c & 0x1f otherwise
+ */
+ while (ncontrol > 0)
+ {
+ if ((chr >= '@' && chr <= '_') || (chr >= 'a' && chr <= 'z'))
+ chr &= 0x1f;
+ else if (chr == '?')
+ chr = 127;
+ else
+ modifiers |= ctrl_modifier;
+ ncontrol--;
+ }
+
+ return chr | modifiers;
}
/* Return the digit that CHARACTER stands for in the given BASE.
@@ -3014,7 +3023,7 @@ read_char_literal (Lisp_Object readcharfun)
}
if (ch == '\\')
- ch = read_escape (readcharfun);
+ ch = read_char_escape (readcharfun, READCHAR);
int modifiers = ch & CHAR_MODIFIER_MASK;
ch &= ~CHAR_MODIFIER_MASK;
@@ -3080,8 +3089,7 @@ read_string_literal (Lisp_Object readcharfun)
/* `\SPC' and `\LF' generate no characters at all. */
continue;
default:
- UNREAD (ch);
- ch = read_escape (readcharfun);
+ ch = read_char_escape (readcharfun, ch);
break;
}
diff --git a/src/macros.c b/src/macros.c
index 0db0af89a71..d1541d2817f 100644
--- a/src/macros.c
+++ b/src/macros.c
@@ -128,9 +128,9 @@ end_kbd_macro (void)
update_mode_lines = 20;
kset_last_kbd_macro
(current_kboard,
- make_event_array ((current_kboard->kbd_macro_end
- - current_kboard->kbd_macro_buffer),
- current_kboard->kbd_macro_buffer));
+ Fvector ((current_kboard->kbd_macro_end
+ - current_kboard->kbd_macro_buffer),
+ current_kboard->kbd_macro_buffer));
}
DEFUN ("end-kbd-macro", Fend_kbd_macro, Send_kbd_macro, 0, 2, "p",
diff --git a/src/module-env-29.h b/src/module-env-29.h
index 6ca03773181..e69de29bb2d 100644
--- a/src/module-env-29.h
+++ b/src/module-env-29.h
@@ -1,3 +0,0 @@
- /* Add module environment functions newly added in Emacs 29 here.
- Before Emacs 29 is released, remove this comment and start
- module-env-30.h on the master branch. */
diff --git a/src/module-env-30.h b/src/module-env-30.h
new file mode 100644
index 00000000000..6ca03773181
--- /dev/null
+++ b/src/module-env-30.h
@@ -0,0 +1,3 @@
+ /* Add module environment functions newly added in Emacs 29 here.
+ Before Emacs 29 is released, remove this comment and start
+ module-env-30.h on the master branch. */
diff --git a/src/nsterm.m b/src/nsterm.m
index 37462cf49e2..ecbf80ff72d 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -4607,7 +4607,7 @@ ns_send_appdefined (int value)
#if defined (NS_IMPL_COCOA) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1070
static void
-check_native_fs ()
+check_native_fs (void)
{
Lisp_Object frame, tail;
@@ -6707,16 +6707,8 @@ ns_create_font_panel_buttons (id target, SEL select, SEL cancel_action)
- (void)resetCursorRects
{
- NSRect visible;
- NSCursor *currentCursor;
-
- /* On macOS 13, [resetCursorRects:] could be called even after the
- window is closed. */
- if (! emacsframe || ! FRAME_OUTPUT_DATA (emacsframe))
- return;
-
- visible = [self visibleRect];
- currentCursor = FRAME_POINTER_TYPE (emacsframe);
+ NSRect visible = [self visibleRect];
+ NSCursor *currentCursor = FRAME_POINTER_TYPE (emacsframe);
NSTRACE ("[EmacsView resetCursorRects]");
if (currentCursor == nil)
diff --git a/src/pdumper.c b/src/pdumper.c
index 4809fb5dce7..2c3828081fa 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2862,7 +2862,7 @@ dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer)
DUMP_FIELD_COPY (out, buffer, inhibit_buffer_hooks);
DUMP_FIELD_COPY (out, buffer, long_line_optimizations_p);
- if (buffer->overlays && buffer->overlays->root != NULL)
+ if (!itree_empty_p (buffer->overlays))
/* We haven't implemented the code to dump overlays. */
emacs_abort ();
else
diff --git a/src/profiler.c b/src/profiler.c
index 8247b2e90c6..6217071ef9c 100644
--- a/src/profiler.c
+++ b/src/profiler.c
@@ -49,7 +49,13 @@ static const struct hash_table_test hashtest_profiler =
hashfn_profiler,
};
-static Lisp_Object
+struct profiler_log {
+ Lisp_Object log;
+ EMACS_INT gc_count; /* Samples taken during GC. */
+ EMACS_INT discarded; /* Samples evicted during table overflow. */
+};
+
+static struct profiler_log
make_log (void)
{
/* We use a standard Elisp hash-table object, but we use it in
@@ -60,11 +66,13 @@ make_log (void)
= clip_to_bounds (0, profiler_log_size, MOST_POSITIVE_FIXNUM);
ptrdiff_t max_stack_depth
= clip_to_bounds (0, profiler_max_stack_depth, PTRDIFF_MAX);;
- Lisp_Object log = make_hash_table (hashtest_profiler, heap_size,
- DEFAULT_REHASH_SIZE,
- DEFAULT_REHASH_THRESHOLD,
- Qnil, false);
- struct Lisp_Hash_Table *h = XHASH_TABLE (log);
+ struct profiler_log log
+ = { make_hash_table (hashtest_profiler, heap_size,
+ DEFAULT_REHASH_SIZE,
+ DEFAULT_REHASH_THRESHOLD,
+ Qnil, false),
+ 0, 0 };
+ struct Lisp_Hash_Table *h = XHASH_TABLE (log.log);
/* What is special about our hash-tables is that the values are pre-filled
with the vectors we'll use as keys. */
@@ -116,8 +124,9 @@ static EMACS_INT approximate_median (log_t *log,
}
}
-static void evict_lower_half (log_t *log)
+static void evict_lower_half (struct profiler_log *plog)
{
+ log_t *log = XHASH_TABLE (plog->log);
ptrdiff_t size = ASIZE (log->key_and_value) / 2;
EMACS_INT median = approximate_median (log, 0, size);
@@ -127,6 +136,8 @@ static void evict_lower_half (log_t *log)
if (XFIXNUM (HASH_VALUE (log, i)) <= median)
{
Lisp_Object key = HASH_KEY (log, i);
+ EMACS_INT count = XFIXNUM (HASH_VALUE (log, i));
+ plog->discarded = saturated_add (plog->discarded, count);
{ /* FIXME: we could make this more efficient. */
Lisp_Object tmp;
XSET_HASH_TABLE (tmp, log); /* FIXME: Use make_lisp_ptr. */
@@ -148,12 +159,12 @@ static void evict_lower_half (log_t *log)
size for memory. */
static void
-record_backtrace (log_t *log, EMACS_INT count)
+record_backtrace (struct profiler_log *plog, EMACS_INT count)
{
+ eassert (HASH_TABLE_P (plog->log));
+ log_t *log = XHASH_TABLE (plog->log);
if (log->next_free < 0)
- /* FIXME: transfer the evicted counts to a special entry rather
- than dropping them on the floor. */
- evict_lower_half (log);
+ evict_lower_half (plog);
ptrdiff_t index = log->next_free;
/* Get a "working memory" vector. */
@@ -222,10 +233,10 @@ static enum profiler_cpu_running
profiler_cpu_running;
/* Hash-table log of CPU profiler. */
-static Lisp_Object cpu_log;
+static struct profiler_log cpu;
-/* Separate counter for the time spent in the GC. */
-static EMACS_INT cpu_gc_count;
+/* Hash-table log of Memory profiler. */
+static struct profiler_log memory;
/* The current sampling interval in nanoseconds. */
static EMACS_INT current_sampling_interval;
@@ -233,30 +244,34 @@ static EMACS_INT current_sampling_interval;
/* Signal handler for sampling profiler. */
static void
-handle_profiler_signal (int signal)
+add_sample (struct profiler_log *plog, EMACS_INT count)
{
- if (EQ (backtrace_top_function (), QAutomatic_GC))
+ if (EQ (backtrace_top_function (), QAutomatic_GC)) /* bug#60237 */
/* Special case the time-count inside GC because the hash-table
code is not prepared to be used while the GC is running.
More specifically it uses ASIZE at many places where it does
not expect the ARRAY_MARK_FLAG to be set. We could try and
harden the hash-table code, but it doesn't seem worth the
effort. */
- cpu_gc_count = saturated_add (cpu_gc_count, 1);
+ plog->gc_count = saturated_add (plog->gc_count, count);
else
- {
- EMACS_INT count = 1;
+ record_backtrace (plog, count);
+}
+
+
+static void
+handle_profiler_signal (int signal)
+{
+ EMACS_INT count = 1;
#if defined HAVE_ITIMERSPEC && defined HAVE_TIMER_GETOVERRUN
- if (profiler_timer_ok)
- {
- int overruns = timer_getoverrun (profiler_timer);
- eassert (overruns >= 0);
- count += overruns;
- }
-#endif
- eassert (HASH_TABLE_P (cpu_log));
- record_backtrace (XHASH_TABLE (cpu_log), count);
+ if (profiler_timer_ok)
+ {
+ int overruns = timer_getoverrun (profiler_timer);
+ eassert (overruns >= 0);
+ count += overruns;
}
+#endif
+ add_sample (&cpu, count);
}
static void
@@ -343,11 +358,8 @@ See also `profiler-log-size' and `profiler-max-stack-depth'. */)
if (profiler_cpu_running)
error ("CPU profiler is already running");
- if (NILP (cpu_log))
- {
- cpu_gc_count = 0;
- cpu_log = make_log ();
- }
+ if (NILP (cpu.log))
+ cpu = make_log ();
int status = setup_cpu_timer (sampling_interval);
if (status < 0)
@@ -409,6 +421,26 @@ DEFUN ("profiler-cpu-running-p",
return profiler_cpu_running ? Qt : Qnil;
}
+static Lisp_Object
+export_log (struct profiler_log *log)
+{
+ Lisp_Object result = log->log;
+ if (log->gc_count)
+ Fputhash (CALLN (Fvector, QAutomatic_GC, Qnil),
+ make_fixnum (log->gc_count),
+ result);
+ if (log->discarded)
+ Fputhash (CALLN (Fvector, QDiscarded_Samples, Qnil),
+ make_fixnum (log->discarded),
+ result);
+ /* Here we're making the log visible to Elisp, so it's not safe any
+ more for our use afterwards since we can't rely on its special
+ pre-allocated keys anymore. So we have to allocate a new one. */
+ if (profiler_cpu_running)
+ *log = make_log ();
+ return result;
+}
+
DEFUN ("profiler-cpu-log", Fprofiler_cpu_log, Sprofiler_cpu_log,
0, 0, 0,
doc: /* Return the current cpu profiler log.
@@ -418,16 +450,7 @@ of functions, where the last few elements may be nil.
Before returning, a new log is allocated for future samples. */)
(void)
{
- Lisp_Object result = cpu_log;
- /* Here we're making the log visible to Elisp, so it's not safe any
- more for our use afterwards since we can't rely on its special
- pre-allocated keys anymore. So we have to allocate a new one. */
- cpu_log = profiler_cpu_running ? make_log () : Qnil;
- Fputhash (make_vector (1, QAutomatic_GC),
- make_fixnum (cpu_gc_count),
- result);
- cpu_gc_count = 0;
- return result;
+ return (export_log (&cpu));
}
#endif /* PROFILER_CPU_SUPPORT */
@@ -436,8 +459,6 @@ Before returning, a new log is allocated for future samples. */)
/* True if memory profiler is running. */
bool profiler_memory_running;
-static Lisp_Object memory_log;
-
DEFUN ("profiler-memory-start", Fprofiler_memory_start, Sprofiler_memory_start,
0, 0, 0,
doc: /* Start/restart the memory profiler.
@@ -450,8 +471,8 @@ See also `profiler-log-size' and `profiler-max-stack-depth'. */)
if (profiler_memory_running)
error ("Memory profiler is already running");
- if (NILP (memory_log))
- memory_log = make_log ();
+ if (NILP (memory.log))
+ memory = make_log ();
profiler_memory_running = true;
@@ -490,12 +511,7 @@ of functions, where the last few elements may be nil.
Before returning, a new log is allocated for future samples. */)
(void)
{
- Lisp_Object result = memory_log;
- /* Here we're making the log visible to Elisp , so it's not safe any
- more for our use afterwards since we can't rely on its special
- pre-allocated keys anymore. So we have to allocate a new one. */
- memory_log = profiler_memory_running ? make_log () : Qnil;
- return result;
+ return (export_log (&memory));
}
@@ -505,11 +521,7 @@ Before returning, a new log is allocated for future samples. */)
void
malloc_probe (size_t size)
{
- if (EQ (backtrace_top_function (), QAutomatic_GC)) /* bug#60237 */
- /* FIXME: We should do something like what we did with `cpu_gc_count`. */
- return;
- eassert (HASH_TABLE_P (memory_log));
- record_backtrace (XHASH_TABLE (memory_log), min (size, MOST_POSITIVE_FIXNUM));
+ add_sample (&memory, min (size, MOST_POSITIVE_FIXNUM));
}
DEFUN ("function-equal", Ffunction_equal, Sfunction_equal, 2, 2, 0,
@@ -589,21 +601,22 @@ to make room for new entries. */);
profiler_log_size = 10000;
DEFSYM (Qprofiler_backtrace_equal, "profiler-backtrace-equal");
+ DEFSYM (QDiscarded_Samples, "Discarded Samples");
defsubr (&Sfunction_equal);
#ifdef PROFILER_CPU_SUPPORT
profiler_cpu_running = NOT_RUNNING;
- cpu_log = Qnil;
- staticpro (&cpu_log);
+ cpu.log = Qnil;
+ staticpro (&cpu.log);
defsubr (&Sprofiler_cpu_start);
defsubr (&Sprofiler_cpu_stop);
defsubr (&Sprofiler_cpu_running_p);
defsubr (&Sprofiler_cpu_log);
#endif
profiler_memory_running = false;
- memory_log = Qnil;
- staticpro (&memory_log);
+ memory.log = Qnil;
+ staticpro (&memory.log);
defsubr (&Sprofiler_memory_start);
defsubr (&Sprofiler_memory_stop);
defsubr (&Sprofiler_memory_running_p);
@@ -618,16 +631,16 @@ syms_of_profiler_for_pdumper (void)
if (dumped_with_pdumper_p ())
{
#ifdef PROFILER_CPU_SUPPORT
- cpu_log = Qnil;
+ cpu.log = Qnil;
#endif
- memory_log = Qnil;
+ memory.log = Qnil;
}
else
{
#ifdef PROFILER_CPU_SUPPORT
- eassert (NILP (cpu_log));
+ eassert (NILP (cpu.log));
#endif
- eassert (NILP (memory_log));
+ eassert (NILP (memory.log));
}
}
diff --git a/src/regex-emacs.c b/src/regex-emacs.c
index 2571812cb39..746779490ad 100644
--- a/src/regex-emacs.c
+++ b/src/regex-emacs.c
@@ -47,13 +47,6 @@
/* Make syntax table lookup grant data in gl_state. */
#define SYNTAX(c) syntax_property (c, 1)
-/* Convert the pointer to the char to BEG-based offset from the start. */
-#define PTR_TO_OFFSET(d) POS_AS_IN_BUFFER (POINTER_TO_OFFSET (d))
-/* Strings are 0-indexed, buffers are 1-indexed; pun on the boolean
- result to get the right base index. */
-#define POS_AS_IN_BUFFER(p) \
- ((p) + (NILP (gl_state.object) || BUFFERP (gl_state.object)))
-
#define RE_MULTIBYTE_P(bufp) ((bufp)->multibyte)
#define RE_TARGET_MULTIBYTE_P(bufp) ((bufp)->target_multibyte)
#define RE_STRING_CHAR(p, multibyte) \
@@ -3258,12 +3251,7 @@ re_search_2 (struct re_pattern_buffer *bufp, const char *str1, ptrdiff_t size1,
/* See whether the pattern is anchored. */
anchored_start = (bufp->buffer[0] == begline);
- gl_state.object = re_match_object; /* Used by SYNTAX_TABLE_BYTE_TO_CHAR. */
- {
- ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (startpos));
-
- SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
- }
+ RE_SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, startpos);
/* Loop through the string, looking for a place to start matching. */
for (;;)
@@ -3871,10 +3859,7 @@ re_match_2 (struct re_pattern_buffer *bufp,
{
ptrdiff_t result;
- ptrdiff_t charpos;
- gl_state.object = re_match_object; /* Used by SYNTAX_TABLE_BYTE_TO_CHAR. */
- charpos = SYNTAX_TABLE_BYTE_TO_CHAR (POS_AS_IN_BUFFER (pos));
- SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, charpos, 1);
+ RE_SETUP_SYNTAX_TABLE_FOR_OBJECT (re_match_object, pos);
result = re_match_2_internal (bufp, (re_char *) string1, size1,
(re_char *) string2, size2,
@@ -4806,8 +4791,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
int c1, c2;
int s1, s2;
int dummy;
- ptrdiff_t offset = PTR_TO_OFFSET (d);
- ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
+ ptrdiff_t offset = POINTER_TO_OFFSET (d);
+ ptrdiff_t charpos = RE_SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
UPDATE_SYNTAX_TABLE (charpos);
GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
nchars++;
@@ -4846,8 +4831,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
int c1, c2;
int s1, s2;
int dummy;
- ptrdiff_t offset = PTR_TO_OFFSET (d);
- ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+ ptrdiff_t offset = POINTER_TO_OFFSET (d);
+ ptrdiff_t charpos = RE_SYNTAX_TABLE_BYTE_TO_CHAR (offset);
UPDATE_SYNTAX_TABLE (charpos);
PREFETCH ();
GET_CHAR_AFTER (c2, d, dummy);
@@ -4889,8 +4874,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
int c1, c2;
int s1, s2;
int dummy;
- ptrdiff_t offset = PTR_TO_OFFSET (d);
- ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
+ ptrdiff_t offset = POINTER_TO_OFFSET (d);
+ ptrdiff_t charpos = RE_SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
UPDATE_SYNTAX_TABLE (charpos);
GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
nchars++;
@@ -4931,8 +4916,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
is the character at D, and S2 is the syntax of C2. */
int c1, c2;
int s1, s2;
- ptrdiff_t offset = PTR_TO_OFFSET (d);
- ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+ ptrdiff_t offset = POINTER_TO_OFFSET (d);
+ ptrdiff_t charpos = RE_SYNTAX_TABLE_BYTE_TO_CHAR (offset);
UPDATE_SYNTAX_TABLE (charpos);
PREFETCH ();
c2 = RE_STRING_CHAR (d, target_multibyte);
@@ -4972,8 +4957,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
is the character at D, and S2 is the syntax of C2. */
int c1, c2;
int s1, s2;
- ptrdiff_t offset = PTR_TO_OFFSET (d);
- ptrdiff_t charpos = SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
+ ptrdiff_t offset = POINTER_TO_OFFSET (d);
+ ptrdiff_t charpos = RE_SYNTAX_TABLE_BYTE_TO_CHAR (offset) - 1;
UPDATE_SYNTAX_TABLE (charpos);
GET_CHAR_BEFORE_2 (c1, d, string1, end1, string2, end2);
nchars++;
@@ -5008,8 +4993,8 @@ re_match_2_internal (struct re_pattern_buffer *bufp,
mcnt);
PREFETCH ();
{
- ptrdiff_t offset = PTR_TO_OFFSET (d);
- ptrdiff_t pos1 = SYNTAX_TABLE_BYTE_TO_CHAR (offset);
+ ptrdiff_t offset = POINTER_TO_OFFSET (d);
+ ptrdiff_t pos1 = RE_SYNTAX_TABLE_BYTE_TO_CHAR (offset);
UPDATE_SYNTAX_TABLE (pos1);
}
{
diff --git a/src/syntax.c b/src/syntax.c
index 79e16f652f3..e9e04e2d638 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -250,7 +250,6 @@ SETUP_SYNTAX_TABLE (ptrdiff_t from, ptrdiff_t count)
gl_state.b_property = BEGV;
gl_state.e_property = ZV + 1;
gl_state.object = Qnil;
- gl_state.offset = 0;
if (parse_sexp_lookup_properties)
{
if (count > 0)
@@ -266,46 +265,38 @@ SETUP_SYNTAX_TABLE (ptrdiff_t from, ptrdiff_t count)
/* Same as above, but in OBJECT. If OBJECT is nil, use current buffer.
If it is t (which is only used in fast_c_string_match_ignore_case),
ignore properties altogether.
-
- This is meant for regex-emacs.c to use. For buffers, regex-emacs.c
- passes arguments to the UPDATE_SYNTAX_TABLE functions which are
- relative to BEGV. So if it is a buffer, we set the offset field to
- BEGV. */
+ FROMBYTE is an regexp-byteoffset. */
void
-SETUP_SYNTAX_TABLE_FOR_OBJECT (Lisp_Object object,
- ptrdiff_t from, ptrdiff_t count)
+RE_SETUP_SYNTAX_TABLE_FOR_OBJECT (Lisp_Object object,
+ ptrdiff_t frombyte)
{
SETUP_BUFFER_SYNTAX_TABLE ();
gl_state.object = object;
if (BUFFERP (gl_state.object))
{
struct buffer *buf = XBUFFER (gl_state.object);
- gl_state.b_property = 1;
- gl_state.e_property = BUF_ZV (buf) - BUF_BEGV (buf) + 1;
- gl_state.offset = BUF_BEGV (buf) - 1;
+ gl_state.b_property = BEG;
+ gl_state.e_property = BUF_ZV (buf);
}
else if (NILP (gl_state.object))
{
- gl_state.b_property = 1;
- gl_state.e_property = ZV - BEGV + 1;
- gl_state.offset = BEGV - 1;
+ gl_state.b_property = BEG;
+ gl_state.e_property = ZV; /* FIXME: Why not +1 like in SETUP_SYNTAX_TABLE? */
}
else if (EQ (gl_state.object, Qt))
{
gl_state.b_property = 0;
gl_state.e_property = PTRDIFF_MAX;
- gl_state.offset = 0;
}
else
{
gl_state.b_property = 0;
gl_state.e_property = 1 + SCHARS (gl_state.object);
- gl_state.offset = 0;
}
if (parse_sexp_lookup_properties)
- update_syntax_table (from + gl_state.offset - (count <= 0),
- count, 1, gl_state.object);
+ update_syntax_table (RE_SYNTAX_TABLE_BYTE_TO_CHAR (frombyte),
+ 1, 1, gl_state.object);
}
/* Update gl_state to an appropriate interval which contains CHARPOS. The
@@ -341,8 +332,8 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
if (!i)
return;
i = gl_state.forward_i;
- gl_state.b_property = i->position - gl_state.offset;
- gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
+ gl_state.b_property = i->position;
+ gl_state.e_property = INTERVAL_LAST_POS (i);
}
else
{
@@ -362,7 +353,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
{
invalidate = false;
gl_state.forward_i = i;
- gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
+ gl_state.e_property = INTERVAL_LAST_POS (i);
}
}
else if (charpos >= INTERVAL_LAST_POS (i)) /* Move right. */
@@ -375,7 +366,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
{
invalidate = false;
gl_state.backward_i = i;
- gl_state.b_property = i->position - gl_state.offset;
+ gl_state.b_property = i->position;
}
}
}
@@ -391,12 +382,12 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
if (count > 0)
{
gl_state.backward_i = i;
- gl_state.b_property = i->position - gl_state.offset;
+ gl_state.b_property = i->position;
}
else
{
gl_state.forward_i = i;
- gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
+ gl_state.e_property = INTERVAL_LAST_POS (i);
}
}
@@ -426,13 +417,13 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
{
if (count > 0)
{
- gl_state.e_property = i->position - gl_state.offset;
+ gl_state.e_property = i->position;
gl_state.forward_i = i;
}
else
{
gl_state.b_property
- = i->position + LENGTH (i) - gl_state.offset;
+ = i->position + LENGTH (i);
gl_state.backward_i = i;
}
return;
@@ -442,7 +433,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
if (count > 0)
{
gl_state.e_property
- = i->position + LENGTH (i) - gl_state.offset
+ = i->position + LENGTH (i)
/* e_property at EOB is not set to ZV but to ZV+1, so that
we can do INC(from);UPDATE_SYNTAX_TABLE_FORWARD without
having to check eob between the two. */
@@ -451,7 +442,7 @@ update_syntax_table (ptrdiff_t charpos, EMACS_INT count, bool init,
}
else
{
- gl_state.b_property = i->position - gl_state.offset;
+ gl_state.b_property = i->position;
gl_state.backward_i = i;
}
return;
@@ -2201,8 +2192,7 @@ skip_syntaxes (bool forwardp, Lisp_Object string, Lisp_Object lim)
while (!parse_sexp_lookup_properties
|| pos < gl_state.e_property);
- update_syntax_table_forward (pos + gl_state.offset,
- false, gl_state.object);
+ update_syntax_table_forward (pos, false, gl_state.object);
}
}
else
diff --git a/src/syntax.h b/src/syntax.h
index 9eb8701628b..01982be25a0 100644
--- a/src/syntax.h
+++ b/src/syntax.h
@@ -85,8 +85,6 @@ struct gl_state_s
and possibly at the
intervals too, depending
on: */
- /* Offset for positions specified to UPDATE_SYNTAX_TABLE. */
- ptrdiff_t offset;
};
extern struct gl_state_s gl_state;
@@ -147,28 +145,27 @@ extern bool syntax_prefix_flag_p (int c);
extern unsigned char const syntax_spec_code[0400];
-/* Convert the byte offset BYTEPOS into a character position,
- for the object recorded in gl_state with SETUP_SYNTAX_TABLE_FOR_OBJECT.
+/* Convert the regexp's BYTEOFFSET into a character position,
+ for the object recorded in gl_state with RE_SETUP_SYNTAX_TABLE_FOR_OBJECT.
The value is meant for use in code that does nothing when
parse_sexp_lookup_properties is false, so return 0 in that case,
for speed. */
INLINE ptrdiff_t
-SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t bytepos)
+RE_SYNTAX_TABLE_BYTE_TO_CHAR (ptrdiff_t byteoffset)
{
return (! parse_sexp_lookup_properties
? 0
: STRINGP (gl_state.object)
- ? string_byte_to_char (gl_state.object, bytepos)
+ ? string_byte_to_char (gl_state.object, byteoffset)
: BUFFERP (gl_state.object)
? ((buf_bytepos_to_charpos
(XBUFFER (gl_state.object),
- (bytepos + BUF_BEGV_BYTE (XBUFFER (gl_state.object)) - 1)))
- - BUF_BEGV (XBUFFER (gl_state.object)) + 1)
+ (byteoffset + BUF_BEGV_BYTE (XBUFFER (gl_state.object))))))
: NILP (gl_state.object)
- ? BYTE_TO_CHAR (bytepos + BEGV_BYTE - 1) - BEGV + 1
- : bytepos);
+ ? BYTE_TO_CHAR (byteoffset + BEGV_BYTE)
+ : byteoffset);
}
/* Make syntax table state (gl_state) good for CHARPOS, assuming it is
@@ -178,8 +175,7 @@ INLINE void
UPDATE_SYNTAX_TABLE_FORWARD (ptrdiff_t charpos)
{ /* Performs just-in-time syntax-propertization. */
if (parse_sexp_lookup_properties && charpos >= gl_state.e_property)
- update_syntax_table_forward (charpos + gl_state.offset,
- false, gl_state.object);
+ update_syntax_table_forward (charpos, false, gl_state.object);
}
/* Make syntax table state (gl_state) good for CHARPOS, assuming it is
@@ -189,7 +185,7 @@ INLINE void
UPDATE_SYNTAX_TABLE_BACKWARD (ptrdiff_t charpos)
{
if (parse_sexp_lookup_properties && charpos < gl_state.b_property)
- update_syntax_table (charpos + gl_state.offset, -1, false, gl_state.object);
+ update_syntax_table (charpos, -1, false, gl_state.object);
}
/* Make syntax table good for CHARPOS. */
@@ -212,7 +208,7 @@ SETUP_BUFFER_SYNTAX_TABLE (void)
}
extern ptrdiff_t scan_words (ptrdiff_t, EMACS_INT);
-extern void SETUP_SYNTAX_TABLE_FOR_OBJECT (Lisp_Object, ptrdiff_t, ptrdiff_t);
+extern void RE_SETUP_SYNTAX_TABLE_FOR_OBJECT (Lisp_Object, ptrdiff_t);
INLINE_HEADER_END
diff --git a/src/sysdep.c b/src/sysdep.c
index ce6a20f5302..a5b3117d262 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2653,10 +2653,11 @@ emacs_perror (char const *message)
int
renameat_noreplace (int srcfd, char const *src, int dstfd, char const *dst)
{
-#if defined SYS_renameat2 && defined RENAME_NOREPLACE
- return syscall (SYS_renameat2, srcfd, src, dstfd, dst, RENAME_NOREPLACE);
-#elif defined CYGWIN && defined RENAME_NOREPLACE
+#if HAVE_RENAMEAT2 && defined RENAME_NOREPLACE
return renameat2 (srcfd, src, dstfd, dst, RENAME_NOREPLACE);
+#elif defined SYS_renameat2 && defined RENAME_NOREPLACE
+ /* Linux kernel 3.15 (2014) or later, with glibc 2.27 (2018) or earlier. */
+ return syscall (SYS_renameat2, srcfd, src, dstfd, dst, RENAME_NOREPLACE);
#elif defined RENAME_EXCL
return renameatx_np (srcfd, src, dstfd, dst, RENAME_EXCL);
#else
diff --git a/src/textconv.c b/src/textconv.c
new file mode 100644
index 00000000000..d5db6d11717
--- /dev/null
+++ b/src/textconv.c
@@ -0,0 +1,313 @@
+/* String conversion support for graphics terminals.
+
+Copyright (C) 2023 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
+
+/* String conversion support.
+
+ Many input methods require access to text surrounding the cursor.
+ They may then request that the text editor remove or substitute
+ that text for something else, for example when providing the
+ ability to ``undo'' or ``edit'' previously composed text. This is
+ most commonly seen in input methods for CJK laguages for X Windows,
+ and is extensively used throughout Android by input methods for all
+ kinds of scripts. */
+
+#include <config.h>
+
+#include "textconv.h"
+#include "buffer.h"
+#include "syntax.h"
+
+
+
+/* The window system's text conversion interface.
+ NULL when the window system has not set up text conversion.
+
+ This interface will later be heavily extended on the
+ feature/android branch to deal with Android's much less
+ straightforward text conversion protocols. */
+
+static struct textconv_interface *text_interface;
+
+
+
+/* Copy the portion of the current buffer described by BEG, BEG_BYTE,
+ END, END_BYTE to the buffer BUFFER, which is END_BYTE - BEG_BYTEs
+ long. */
+
+static void
+copy_buffer (ptrdiff_t beg, ptrdiff_t beg_byte,
+ ptrdiff_t end, ptrdiff_t end_byte,
+ char *buffer)
+{
+ ptrdiff_t beg0, end0, beg1, end1, size;
+
+ if (beg_byte < GPT_BYTE && GPT_BYTE < end_byte)
+ {
+ /* Two regions, before and after the gap. */
+ beg0 = beg_byte;
+ end0 = GPT_BYTE;
+ beg1 = GPT_BYTE + GAP_SIZE - BEG_BYTE;
+ end1 = end_byte + GAP_SIZE - BEG_BYTE;
+ }
+ else
+ {
+ /* The only region. */
+ beg0 = beg_byte;
+ end0 = end_byte;
+ beg1 = -1;
+ end1 = -1;
+ }
+
+ size = end0 - beg0;
+ memcpy (buffer, BYTE_POS_ADDR (beg0), size);
+ if (beg1 != -1)
+ memcpy (buffer, BEG_ADDR + beg1, end1 - beg1);
+}
+
+
+
+/* Conversion query. */
+
+/* Perform the text conversion operation specified in QUERY and return
+ the results.
+
+ Find the text between QUERY->position from point on F's selected
+ window and QUERY->factor times QUERY->direction from that
+ position. Return it in QUERY->text.
+
+ Then, either delete that text from the buffer if QUERY->operation
+ is TEXTCONV_SUBSTITUTION, or return 0.
+
+ Value is 0 if QUERY->operation was not TEXTCONV_SUBSTITUTION
+ or if deleting the text was successful, and 1 otherwise. */
+
+int
+textconv_query (struct frame *f, struct textconv_callback_struct *query)
+{
+ specpdl_ref count;
+ ptrdiff_t pos, pos_byte, end, end_byte;
+ ptrdiff_t temp, temp1;
+ char *buffer;
+
+ /* Save the excursion, as there will be extensive changes to the
+ selected window. */
+ count = SPECPDL_INDEX ();
+ record_unwind_protect_excursion ();
+
+ /* Inhibit quitting. */
+ specbind (Qinhibit_quit, Qt);
+
+ /* Temporarily switch to F's selected window. */
+ Fselect_window (f->selected_window, Qt);
+
+ /* Now find the appropriate text bounds for QUERY. First, move
+ point QUERY->position steps forward or backwards. */
+
+ pos = PT;
+
+ /* If pos is outside the accessible part of the buffer or if it
+ overflows, move back to point or to the extremes of the
+ accessible region. */
+
+ if (INT_ADD_WRAPV (pos, query->position, &pos))
+ pos = PT;
+
+ if (pos < BEGV)
+ pos = BEGV;
+
+ if (pos > ZV)
+ pos = ZV;
+
+ /* Move to pos. */
+ set_point (pos);
+ pos = PT;
+ pos_byte = PT_BYTE;
+
+ /* Now scan forward or backwards according to what is in QUERY. */
+
+ switch (query->direction)
+ {
+ case TEXTCONV_FORWARD_CHAR:
+ /* Move forward by query->factor characters. */
+ if (INT_ADD_WRAPV (pos, query->factor, &end) || end > ZV)
+ end = ZV;
+
+ end_byte = CHAR_TO_BYTE (end);
+ break;
+
+ case TEXTCONV_BACKWARD_CHAR:
+ /* Move backward by query->factor characters. */
+ if (INT_SUBTRACT_WRAPV (pos, query->factor, &end) || end < BEGV)
+ end = BEGV;
+
+ end_byte = CHAR_TO_BYTE (end);
+ break;
+
+ case TEXTCONV_FORWARD_WORD:
+ /* Move forward by query->factor word. */
+ end = scan_words (pos, (EMACS_INT) query->factor);
+
+ if (!end)
+ {
+ end = ZV;
+ end_byte = ZV_BYTE;
+ }
+ else
+ end_byte = CHAR_TO_BYTE (end);
+
+ break;
+
+ case TEXTCONV_BACKWARD_WORD:
+ /* Move backwards by query->factor word. */
+ end = scan_words (pos, 0 - (EMACS_INT) query->factor);
+
+ if (!end)
+ {
+ end = BEGV;
+ end_byte = BEGV_BYTE;
+ }
+ else
+ end_byte = CHAR_TO_BYTE (end);
+
+ break;
+
+ case TEXTCONV_CARET_UP:
+ /* Move upwards one visual line, keeping the column intact. */
+ Fvertical_motion (Fcons (Fcurrent_column (), make_fixnum (-1)),
+ Qnil, Qnil);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ case TEXTCONV_CARET_DOWN:
+ /* Move downwards one visual line, keeping the column
+ intact. */
+ Fvertical_motion (Fcons (Fcurrent_column (), make_fixnum (1)),
+ Qnil, Qnil);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ case TEXTCONV_NEXT_LINE:
+ /* Move one line forward. */
+ scan_newline (pos, pos_byte, ZV, ZV_BYTE,
+ query->factor, false);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ case TEXTCONV_PREVIOUS_LINE:
+ /* Move one line backwards. */
+ scan_newline (pos, pos_byte, BEGV, BEGV_BYTE,
+ 0 - (EMACS_INT) query->factor, false);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ case TEXTCONV_LINE_START:
+ /* Move to the beginning of the line. */
+ Fbeginning_of_line (Qnil);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ case TEXTCONV_LINE_END:
+ /* Move to the end of the line. */
+ Fend_of_line (Qnil);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ case TEXTCONV_ABSOLUTE_POSITION:
+ /* How to implement this is unclear. */
+ SET_PT (query->factor);
+ end = PT;
+ end_byte = PT_BYTE;
+ break;
+
+ default:
+ unbind_to (count, Qnil);
+ return 1;
+ }
+
+ /* Sort end and pos. */
+
+ if (end < pos)
+ {
+ eassert (end_byte < pos_byte);
+ temp = pos_byte;
+ temp1 = pos;
+ pos_byte = end_byte;
+ pos = end;
+ end = temp1;
+ end_byte = temp;
+ }
+
+ /* Return the string first. */
+ buffer = xmalloc (end_byte - pos_byte);
+ copy_buffer (pos, pos_byte, end, end_byte, buffer);
+ query->text.text = buffer;
+ query->text.length = end - pos;
+ query->text.bytes = end_byte - pos_byte;
+
+ /* Next, perform any operation specified. */
+
+ switch (query->operation)
+ {
+ case TEXTCONV_SUBSTITUTION:
+ if (safe_del_range (pos, end))
+ {
+ /* Undo any changes to the excursion. */
+ unbind_to (count, Qnil);
+ return 1;
+ }
+
+ default:
+ break;
+ }
+
+ /* Undo any changes to the excursion. */
+ unbind_to (count, Qnil);
+ return 0;
+}
+
+
+
+/* Window system interface. These are called from the rest of
+ Emacs. */
+
+/* Notice that F's selected window has been set from redisplay.
+ Reset F's input method state. */
+
+void
+report_selected_window_change (struct frame *f)
+{
+ if (!text_interface)
+ return;
+
+ text_interface->reset (f);
+}
+
+/* Register INTERFACE as the text conversion interface. */
+
+void
+register_texconv_interface (struct textconv_interface *interface)
+{
+ text_interface = interface;
+}
diff --git a/src/textconv.h b/src/textconv.h
new file mode 100644
index 00000000000..f6e7eb7925f
--- /dev/null
+++ b/src/textconv.h
@@ -0,0 +1,109 @@
+/* String conversion support for graphics terminals.
+
+Copyright (C) 2023 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
+
+#ifndef _TEXTCONV_H_
+
+#include "lisp.h"
+#include "frame.h"
+
+/* The function pointers in this structure should be filled out by
+ each GUI backend interested in supporting text conversion.
+
+ Finally, register_texconv_interface must be called at some point
+ during terminal initialization. */
+
+struct textconv_interface
+{
+ /* Notice that the text conversion context has changed (which can
+ happen if the window is deleted or switches buffers, or an
+ unexpected buffer change occurs.) */
+ void (*reset) (struct frame *);
+};
+
+
+
+enum textconv_caret_direction
+ {
+ TEXTCONV_FORWARD_CHAR,
+ TEXTCONV_BACKWARD_CHAR,
+ TEXTCONV_FORWARD_WORD,
+ TEXTCONV_BACKWARD_WORD,
+ TEXTCONV_CARET_UP,
+ TEXTCONV_CARET_DOWN,
+ TEXTCONV_NEXT_LINE,
+ TEXTCONV_PREVIOUS_LINE,
+ TEXTCONV_LINE_START,
+ TEXTCONV_LINE_END,
+ TEXTCONV_ABSOLUTE_POSITION,
+ };
+
+enum textconv_operation
+ {
+ TEXTCONV_SUBSTITUTION,
+ TEXTCONV_RETRIEVAL,
+ };
+
+/* Structure describing text in a buffer corresponding to a ``struct
+ textconv_callback_struct''. */
+
+struct textconv_conversion_text
+{
+ /* Length of the text in characters and bytes. */
+ size_t length, bytes;
+
+ /* Pointer to the text data. This must be deallocated by the
+ caller. */
+ char *text;
+};
+
+/* Structure describing a single query submitted by the input
+ method. */
+
+struct textconv_callback_struct
+{
+ /* Character position, relative to the current spot location, from
+ where on text should be returned. */
+ EMACS_INT position;
+
+ /* The type of scanning to perform to determine either the start or
+ the end of the conversion. */
+ enum textconv_caret_direction direction;
+
+ /* The the number of times for which to repeat the scanning in order
+ to determine the starting position of the text to return. */
+ unsigned short factor;
+
+ /* The operation to perform upon the current buffer contents.
+
+ If this is TEXTCONV_SUBSTITUTION, then the text that is returned
+ will be deleted from the buffer itself.
+
+ Otherwise, the text is simply returned without modifying the
+ buffer contents. */
+ enum textconv_operation operation;
+
+ /* Structure that will be filled with a description of the resulting
+ text. */
+ struct textconv_conversion_text text;
+};
+
+extern int textconv_query (struct frame *, struct textconv_callback_struct *);
+extern void register_texconv_interface (struct textconv_interface *);
+
+#endif /* _TEXTCONV_H_ */
diff --git a/src/treesit.c b/src/treesit.c
index 1bb52888f4b..d2dd83b29fe 100644
--- a/src/treesit.c
+++ b/src/treesit.c
@@ -421,10 +421,17 @@ static Lisp_Object Vtreesit_str_match;
static Lisp_Object Vtreesit_str_pred;
/* This is the limit on recursion levels for some tree-sitter
- functions. Remember to update docstrings when changing this
- value. */
-const ptrdiff_t treesit_recursion_limit = 1000;
-bool treesit_initialized = false;
+ functions. Remember to update docstrings when changing this value.
+
+ If we think of programs and AST, it is very rare for any program to
+ have a very deep AST. For example, you would need 1000+ levels of
+ nested if-statements, or a struct somehow nested for 1000+ levels.
+ It’s hard for me to imagine any hand-written or machine generated
+ program to be like that. So I think 1000 is already generous. If
+ we look at xdisp.c, its AST only have 30 levels. */
+#define TREESIT_RECURSION_LIMIT 1000
+
+static bool treesit_initialized = false;
static bool
load_tree_sitter_if_necessary (bool required)
@@ -478,40 +485,47 @@ treesit_initialize (void)
static void
treesit_symbol_to_c_name (char *symbol_name)
{
- for (int idx = 0; idx < strlen (symbol_name); idx++)
+ size_t len = strlen (symbol_name);
+ for (int idx = 0; idx < len; idx++)
{
if (symbol_name[idx] == '-')
symbol_name[idx] = '_';
}
}
+/* Find the override name for LANGUAGE_SYMBOL in
+ treesit-load-name-override-list. Set NAME and C_SYMBOL to the
+ override name, and return true if there exists one, otherwise
+ return false.
+
+ This function may signal if treesit-load-name-override-list is
+ malformed. */
static bool
treesit_find_override_name (Lisp_Object language_symbol, Lisp_Object *name,
Lisp_Object *c_symbol)
{
- Lisp_Object tem;
-
CHECK_LIST (Vtreesit_load_name_override_list);
+ Lisp_Object tail = Vtreesit_load_name_override_list;
- tem = Vtreesit_load_name_override_list;
-
- FOR_EACH_TAIL (tem)
+ FOR_EACH_TAIL (tail)
{
- Lisp_Object lang = XCAR (XCAR (tem));
+ Lisp_Object entry = XCAR (tail);
+ CHECK_LIST (entry);
+ Lisp_Object lang = XCAR (entry);
CHECK_SYMBOL (lang);
if (EQ (lang, language_symbol))
{
- *name = Fnth (make_fixnum (1), XCAR (tem));
+ *name = Fnth (make_fixnum (1), entry);
CHECK_STRING (*name);
- *c_symbol = Fnth (make_fixnum (2), XCAR (tem));
+ *c_symbol = Fnth (make_fixnum (2), entry);
CHECK_STRING (*c_symbol);
return true;
}
}
- CHECK_LIST_END (tem, Vtreesit_load_name_override_list);
+ CHECK_LIST_END (tail, Vtreesit_load_name_override_list);
return false;
}
@@ -1619,6 +1633,9 @@ buffer. */)
TSRange *treesit_ranges = xmalloc (sizeof (TSRange) * len);
struct buffer *buffer = XBUFFER (XTS_PARSER (parser)->buffer);
+ /* We can use XFUXNUM, XCAR, XCDR freely because we have checked
+ the input by treesit_check_range_argument. */
+
for (int idx = 0; !NILP (ranges); idx++, ranges = XCDR (ranges))
{
Lisp_Object range = XCAR (ranges);
@@ -1639,9 +1656,6 @@ buffer. */)
}
success = ts_parser_set_included_ranges (XTS_PARSER (parser)->parser,
treesit_ranges, len);
- /* Although XFIXNUM could signal, it should be impossible
- because we have checked the input by treesit_check_range_argument.
- So there is no need for unwind-protect. */
xfree (treesit_ranges);
}
@@ -1962,19 +1976,19 @@ live. */)
TSNode treesit_node = XTS_NODE (node)->node;
bool result;
- if (EQ (property, Qoutdated))
+ if (BASE_EQ (property, Qoutdated))
return treesit_node_uptodate_p (node) ? Qnil : Qt;
treesit_check_node (node);
- if (EQ (property, Qnamed))
+ if (BASE_EQ (property, Qnamed))
result = ts_node_is_named (treesit_node);
- else if (EQ (property, Qmissing))
+ else if (BASE_EQ (property, Qmissing))
result = ts_node_is_missing (treesit_node);
- else if (EQ (property, Qextra))
+ else if (BASE_EQ (property, Qextra))
result = ts_node_is_extra (treesit_node);
- else if (EQ (property, Qhas_error))
+ else if (BASE_EQ (property, Qhas_error))
result = ts_node_has_error (treesit_node);
- else if (EQ (property, Qlive))
+ else if (BASE_EQ (property, Qlive))
result = treesit_parser_live_p (XTS_NODE (node)->parser);
else
signal_error ("Expecting `named', `missing', `extra', "
@@ -2293,19 +2307,19 @@ PATTERN can be
See Info node `(elisp)Pattern Matching' for detailed explanation. */)
(Lisp_Object pattern)
{
- if (EQ (pattern, QCanchor))
+ if (BASE_EQ (pattern, QCanchor))
return Vtreesit_str_dot;
- if (EQ (pattern, intern_c_string (":?")))
+ if (BASE_EQ (pattern, QCquestion))
return Vtreesit_str_question_mark;
- if (EQ (pattern, intern_c_string (":*")))
+ if (BASE_EQ (pattern, QCstar))
return Vtreesit_str_star;
- if (EQ (pattern, intern_c_string (":+")))
+ if (BASE_EQ (pattern, QCplus))
return Vtreesit_str_plus;
- if (EQ (pattern, QCequal))
+ if (BASE_EQ (pattern, QCequal))
return Vtreesit_str_pound_equal;
- if (EQ (pattern, QCmatch))
+ if (BASE_EQ (pattern, QCmatch))
return Vtreesit_str_pound_match;
- if (EQ (pattern, QCpred))
+ if (BASE_EQ (pattern, QCpred))
return Vtreesit_str_pound_pred;
Lisp_Object opening_delimeter
= VECTORP (pattern)
@@ -2407,87 +2421,111 @@ treesit_predicates_for_pattern (TSQuery *query, uint32_t pattern_index)
return Fnreverse (result);
}
-/* Translate a capture NAME (symbol) to a node.
- Signals treesit-query-error if such node is not captured. */
-static Lisp_Object
+/* Translate a capture NAME (symbol) to a node. If everything goes
+ fine, set NODE and return true; if error occurs (e.g., when there
+ is no node for the capture name), set NODE to Qnil, SIGNAL_DATA to
+ a suitable signal data, and return false. */
+static bool
treesit_predicate_capture_name_to_node (Lisp_Object name,
- struct capture_range captures)
+ struct capture_range captures,
+ Lisp_Object *node,
+ Lisp_Object *signal_data)
{
- Lisp_Object node = Qnil;
+ *node = Qnil;
for (Lisp_Object tail = captures.start; !EQ (tail, captures.end);
tail = XCDR (tail))
{
if (EQ (XCAR (XCAR (tail)), name))
{
- node = XCDR (XCAR (tail));
+ *node = XCDR (XCAR (tail));
break;
}
}
- if (NILP (node))
- xsignal3 (Qtreesit_query_error,
- build_string ("Cannot find captured node"),
- name, build_string ("A predicate can only refer"
- " to captured nodes in the "
- "same pattern"));
- return node;
+ if (NILP (*node))
+ {
+ *signal_data = list3 (build_string ("Cannot find captured node"),
+ name, build_string ("A predicate can only refer"
+ " to captured nodes in the "
+ "same pattern"));
+ return false;
+ }
+ return true;
}
/* Translate a capture NAME (symbol) to the text of the captured node.
- Signals treesit-query-error if such node is not captured. */
-static Lisp_Object
+ If everything goes fine, set TEXT to the text and return true;
+ otherwise set TEXT to Qnil and set SIGNAL_DATA to a suitable signal
+ data. */
+static bool
treesit_predicate_capture_name_to_text (Lisp_Object name,
- struct capture_range captures)
+ struct capture_range captures,
+ Lisp_Object *text,
+ Lisp_Object *signal_data)
{
- Lisp_Object node = treesit_predicate_capture_name_to_node (name, captures);
+ Lisp_Object node = Qnil;
+ if (!treesit_predicate_capture_name_to_node (name, captures, &node, signal_data))
+ return false;
struct buffer *old_buffer = current_buffer;
set_buffer_internal (XBUFFER (XTS_PARSER (XTS_NODE (node)->parser)->buffer));
- Lisp_Object text = Fbuffer_substring (Ftreesit_node_start (node),
- Ftreesit_node_end (node));
+ *text = Fbuffer_substring (Ftreesit_node_start (node),
+ Ftreesit_node_end (node));
set_buffer_internal (old_buffer);
- return text;
+ return true;
}
/* Handles predicate (#equal A B). Return true if A equals B; return
false otherwise. A and B can be either string, or a capture name.
The capture name evaluates to the text its captured node spans in
- the buffer. */
+ the buffer. If everything goes fine, don't touch SIGNAL_DATA; if
+ error occurs, set it to a suitable signal data. */
static bool
-treesit_predicate_equal (Lisp_Object args, struct capture_range captures)
+treesit_predicate_equal (Lisp_Object args, struct capture_range captures,
+ Lisp_Object *signal_data)
{
if (XFIXNUM (Flength (args)) != 2)
- xsignal2 (Qtreesit_query_error,
- build_string ("Predicate `equal' requires "
- "two arguments but only given"),
- Flength (args));
-
+ {
+ *signal_data = list2 (build_string ("Predicate `equal' requires "
+ "two arguments but only given"),
+ Flength (args));
+ return false;
+ }
Lisp_Object arg1 = XCAR (args);
Lisp_Object arg2 = XCAR (XCDR (args));
- Lisp_Object text1 = (STRINGP (arg1)
- ? arg1
- : treesit_predicate_capture_name_to_text (arg1,
- captures));
- Lisp_Object text2 = (STRINGP (arg2)
- ? arg2
- : treesit_predicate_capture_name_to_text (arg2,
- captures));
+ Lisp_Object text1 = arg1;
+ Lisp_Object text2 = arg2;
+ if (SYMBOLP (arg1))
+ {
+ if (!treesit_predicate_capture_name_to_text (arg1, captures, &text1,
+ signal_data))
+ return false;
+ }
+ if (SYMBOLP (arg2))
+ {
+ if (!treesit_predicate_capture_name_to_text (arg2, captures, &text2,
+ signal_data))
+ return false;
+ }
return !NILP (Fstring_equal (text1, text2));
}
/* Handles predicate (#match "regexp" @node). Return true if "regexp"
- matches the text spanned by @node; return false otherwise. Matching
- is case-sensitive. */
+ matches the text spanned by @node; return false otherwise.
+ Matching is case-sensitive. If everything goes fine, don't touch
+ SIGNAL_DATA; if error occurs, set it to a suitable signal data. */
static bool
-treesit_predicate_match (Lisp_Object args, struct capture_range captures)
+treesit_predicate_match (Lisp_Object args, struct capture_range captures,
+ Lisp_Object *signal_data)
{
if (XFIXNUM (Flength (args)) != 2)
- xsignal2 (Qtreesit_query_error,
- build_string ("Predicate `match' requires two "
- "arguments but only given"),
- Flength (args));
-
+ {
+ *signal_data = list2 (build_string ("Predicate `match' requires two "
+ "arguments but only given"),
+ Flength (args));
+ return false;
+ }
Lisp_Object regexp = XCAR (args);
Lisp_Object capture_name = XCAR (XCDR (args));
@@ -2504,12 +2542,10 @@ treesit_predicate_match (Lisp_Object args, struct capture_range captures)
build_string ("The second argument to `match' should "
"be a capture name, not a string"));
- Lisp_Object node = treesit_predicate_capture_name_to_node (capture_name,
- captures);
-
- struct buffer *old_buffer = current_buffer;
- struct buffer *buffer = XBUFFER (XTS_PARSER (XTS_NODE (node)->parser)->buffer);
- set_buffer_internal (buffer);
+ Lisp_Object node = Qnil;
+ if (!treesit_predicate_capture_name_to_node (capture_name, captures, &node,
+ signal_data))
+ return false;
TSNode treesit_node = XTS_NODE (node)->node;
ptrdiff_t visible_beg = XTS_PARSER (XTS_NODE (node)->parser)->visible_beg;
@@ -2537,61 +2573,71 @@ treesit_predicate_match (Lisp_Object args, struct capture_range captures)
ZV = old_zv;
ZV_BYTE = old_zv_byte;
- set_buffer_internal (old_buffer);
-
return (val > 0);
}
/* Handles predicate (#pred FN ARG...). Return true if FN returns
non-nil; return false otherwise. The arity of FN must match the
- number of ARGs */
+ number of ARGs. If everything goes fine, don't touch SIGNAL_DATA;
+ if error occurs, set it to a suitable signal data. */
static bool
-treesit_predicate_pred (Lisp_Object args, struct capture_range captures)
+treesit_predicate_pred (Lisp_Object args, struct capture_range captures,
+ Lisp_Object *signal_data)
{
if (XFIXNUM (Flength (args)) < 2)
- xsignal2 (Qtreesit_query_error,
- build_string ("Predicate `pred' requires "
- "at least two arguments, "
- "but was only given"),
- Flength (args));
+ {
+ *signal_data = list2 (build_string ("Predicate `pred' requires "
+ "at least two arguments, "
+ "but was only given"),
+ Flength (args));
+ return false;
+ }
Lisp_Object fn = Fintern (XCAR (args), Qnil);
Lisp_Object nodes = Qnil;
Lisp_Object tail = XCDR (args);
FOR_EACH_TAIL (tail)
- nodes = Fcons (treesit_predicate_capture_name_to_node (XCAR (tail),
- captures),
- nodes);
+ {
+ Lisp_Object node = Qnil;
+ if (!treesit_predicate_capture_name_to_node (XCAR (tail), captures, &node,
+ signal_data))
+ return false;
+ nodes = Fcons (node, nodes);
+ }
nodes = Fnreverse (nodes);
return !NILP (CALLN (Fapply, fn, nodes));
}
/* If all predicates in PREDICATES passes, return true; otherwise
- return false. */
+ return false. If everything goes fine, don't touch SIGNAL_DATA; if
+ error occurs, set it to a suitable signal data. */
static bool
-treesit_eval_predicates (struct capture_range captures, Lisp_Object predicates)
+treesit_eval_predicates (struct capture_range captures, Lisp_Object predicates,
+ Lisp_Object *signal_data)
{
bool pass = true;
/* Evaluate each predicates. */
for (Lisp_Object tail = predicates;
- !NILP (tail); tail = XCDR (tail))
+ pass && !NILP (tail); tail = XCDR (tail))
{
Lisp_Object predicate = XCAR (tail);
Lisp_Object fn = XCAR (predicate);
Lisp_Object args = XCDR (predicate);
if (!NILP (Fstring_equal (fn, Vtreesit_str_equal)))
- pass &= treesit_predicate_equal (args, captures);
+ pass &= treesit_predicate_equal (args, captures, signal_data);
else if (!NILP (Fstring_equal (fn, Vtreesit_str_match)))
- pass &= treesit_predicate_match (args, captures);
+ pass &= treesit_predicate_match (args, captures, signal_data);
else if (!NILP (Fstring_equal (fn, Vtreesit_str_pred)))
- pass &= treesit_predicate_pred (args, captures);
+ pass &= treesit_predicate_pred (args, captures, signal_data);
else
- xsignal3 (Qtreesit_query_error,
- build_string ("Invalid predicate"),
- fn, build_string ("Currently Emacs only supports"
- " equal, match, and pred"
- " predicate"));
+ {
+ *signal_data = list3 (build_string ("Invalid predicate"),
+ fn, build_string ("Currently Emacs only supports"
+ " equal, match, and pred"
+ " predicates"));
+ pass = false;
+ }
}
/* If all predicates passed, add captures to result list. */
return pass;
@@ -2631,8 +2677,8 @@ You can use `treesit-query-validate' to validate and debug a query. */)
Lisp_Object signal_symbol = Qnil;
Lisp_Object signal_data = Qnil;
TSQuery *treesit_query = treesit_ensure_query_compiled (lisp_query,
- &signal_symbol,
- &signal_data);
+ &signal_symbol,
+ &signal_data);
if (treesit_query == NULL)
xsignal (signal_symbol, signal_data);
@@ -2641,6 +2687,92 @@ You can use `treesit-query-validate' to validate and debug a query. */)
}
}
+/* Resolve OBJ into a tree-sitter node Lisp_Object. OBJ can be a
+ node, a parser, or a language symbol. Note that this function can
+ signal. */
+static Lisp_Object treesit_resolve_node (Lisp_Object obj)
+{
+ if (TS_NODEP (obj))
+ {
+ treesit_check_node (obj); /* Check if up-to-date. */
+ return obj;
+ }
+ else if (TS_PARSERP (obj))
+ {
+ treesit_check_parser (obj); /* Check if deleted. */
+ return Ftreesit_parser_root_node (obj);
+ }
+ else if (SYMBOLP (obj))
+ {
+ Lisp_Object parser
+ = Ftreesit_parser_create (obj, Fcurrent_buffer (), Qnil);
+ return Ftreesit_parser_root_node (parser);
+ }
+ else
+ xsignal2 (Qwrong_type_argument,
+ list4 (Qor, Qtreesit_node_p, Qtreesit_parser_p, Qsymbolp),
+ obj);
+}
+
+/* Create and initialize QUERY. When success, initialize TS_QUERY,
+ CURSOR, and NEED_FREE, and return true; if failed, initialize
+ SIGNAL_SYMBOL and SIGNAL_DATA, and return false. If NEED_FREE is
+ initialized to true, the TS_QUERY and CURSOR needs to be freed
+ after use; otherwise they shouldn't be freed by hand.
+
+ Basically this function looks at QUERY and check its type, if QUERY
+ is a compiled query, this function takes out its query and cursor;
+ if QUERY is a string or a cons, this function creates a new query
+ and cursor (so they need to be manually freed).
+
+ This function assumes QUERY is either a compiled query, a string or
+ a cons, the caller should make sure QUERY is valid.
+
+ LANG is the language to use if we need to create the query and
+ cursor. */
+static bool
+treesit_initialize_query (Lisp_Object query, const TSLanguage *lang,
+ TSQuery **ts_query, TSQueryCursor **cursor,
+ bool *need_free, Lisp_Object *signal_symbol,
+ Lisp_Object *signal_data)
+{
+ if (TS_COMPILED_QUERY_P (query))
+ {
+ *ts_query = treesit_ensure_query_compiled (query, signal_symbol,
+ signal_data);
+ *cursor = XTS_COMPILED_QUERY (query)->cursor;
+ /* We don't need to free ts_query and cursor because they
+ are stored in a lisp object, which is tracked by gc. */
+ *need_free = false;
+ return (*ts_query != NULL);
+ }
+ else
+ {
+ /* Since query is not TS_COMPILED_QUERY, it can only be a string
+ or a cons. */
+ if (CONSP (query))
+ query = Ftreesit_query_expand (query);
+ char *query_string = SSDATA (query);
+ uint32_t error_offset;
+ TSQueryError error_type;
+ *ts_query = ts_query_new (lang, query_string, strlen (query_string),
+ &error_offset, &error_type);
+ if (*ts_query == NULL)
+ {
+ *signal_symbol = Qtreesit_query_error;
+ *signal_data = treesit_compose_query_signal_data (error_offset,
+ error_type, query);
+ return false;
+ }
+ else
+ {
+ *cursor = ts_query_cursor_new ();
+ *need_free = true;
+ return true;
+ }
+ }
+}
+
DEFUN ("treesit-query-capture",
Ftreesit_query_capture,
Streesit_query_capture, 2, 5, 0,
@@ -2681,35 +2813,12 @@ the query. */)
treesit_initialize ();
/* Resolve NODE into an actual node. */
- Lisp_Object lisp_node;
- if (TS_NODEP (node))
- {
- treesit_check_node (node); /* Check if up-to-date. */
- lisp_node = node;
- }
- else if (TS_PARSERP (node))
- {
- treesit_check_parser (node); /* Check if deleted. */
- lisp_node = Ftreesit_parser_root_node (node);
- }
- else if (SYMBOLP (node))
- {
- Lisp_Object parser
- = Ftreesit_parser_create (node, Fcurrent_buffer (), Qnil);
- lisp_node = Ftreesit_parser_root_node (parser);
- }
- else
- xsignal2 (Qwrong_type_argument,
- list4 (Qor, Qtreesit_node_p, Qtreesit_parser_p, Qsymbolp),
- node);
+ Lisp_Object lisp_node = treesit_resolve_node (node);
/* Extract C values from Lisp objects. */
- TSNode treesit_node
- = XTS_NODE (lisp_node)->node;
- Lisp_Object lisp_parser
- = XTS_NODE (lisp_node)->parser;
- ptrdiff_t visible_beg
- = XTS_PARSER (XTS_NODE (lisp_node)->parser)->visible_beg;
+ TSNode treesit_node = XTS_NODE (lisp_node)->node;
+ Lisp_Object lisp_parser = XTS_NODE (lisp_node)->parser;
+
const TSLanguage *lang
= ts_parser_language (XTS_PARSER (lisp_parser)->parser);
@@ -2725,44 +2834,21 @@ the query. */)
TSQuery *treesit_query;
TSQueryCursor *cursor;
bool needs_to_free_query_and_cursor;
- if (TS_COMPILED_QUERY_P (query))
- {
- Lisp_Object signal_symbol = Qnil;
- Lisp_Object signal_data = Qnil;
- treesit_query = treesit_ensure_query_compiled (query, &signal_symbol,
- &signal_data);
- cursor = XTS_COMPILED_QUERY (query)->cursor;
- /* We don't need to free ts_query and cursor because they
- are stored in a lisp object, which is tracked by gc. */
- needs_to_free_query_and_cursor = false;
- if (treesit_query == NULL)
- xsignal (signal_symbol, signal_data);
- }
- else
- {
- /* Since query is not TS_COMPILED_QUERY, it can only be a string
- or a cons. */
- if (CONSP (query))
- query = Ftreesit_query_expand (query);
- char *query_string = SSDATA (query);
- uint32_t error_offset;
- TSQueryError error_type;
- treesit_query = ts_query_new (lang, query_string, strlen (query_string),
- &error_offset, &error_type);
- if (treesit_query == NULL)
- xsignal (Qtreesit_query_error,
- treesit_compose_query_signal_data (error_offset,
- error_type, query));
- cursor = ts_query_cursor_new ();
- needs_to_free_query_and_cursor = true;
- }
+ Lisp_Object signal_symbol;
+ Lisp_Object signal_data;
+ if (!treesit_initialize_query (query, lang, &treesit_query, &cursor,
+ &needs_to_free_query_and_cursor,
+ &signal_symbol, &signal_data))
+ xsignal (signal_symbol, signal_data);
- /* WARN: After this point, free treesit_query and cursor before every
- signal and return. */
+ /* WARN: After this point, free TREESIT_QUERY and CURSOR before every
+ signal and return if NEEDS_TO_FREE_QUERY_AND_CURSOR is true. */
/* Set query range. */
if (!NILP (beg) && !NILP (end))
{
+ ptrdiff_t visible_beg
+ = XTS_PARSER (XTS_NODE (lisp_node)->parser)->visible_beg;
ptrdiff_t beg_byte = CHAR_TO_BYTE (XFIXNUM (beg));
ptrdiff_t end_byte = CHAR_TO_BYTE (XFIXNUM (end));
/* We never let tree-sitter run on buffers too large, so these
@@ -2791,11 +2877,16 @@ the query. */)
Lisp_Object result = Qnil;
Lisp_Object prev_result = result;
Lisp_Object predicates_table = make_vector (patterns_count, Qt);
+ Lisp_Object predicate_signal_data = Qnil;
+
+ struct buffer *old_buf = current_buffer;
+ set_buffer_internal (buf);
+
while (ts_query_cursor_next_match (cursor, &match))
{
/* Record the checkpoint that we may roll back to. */
prev_result = result;
- /* Get captured nodes. */
+ /* 1. Get captured nodes. */
const TSQueryCapture *captures = match.captures;
for (int idx = 0; idx < match.capture_count; idx++)
{
@@ -2818,9 +2909,10 @@ the query. */)
result = Fcons (cap, result);
}
- /* Get predicates. */
+ /* 2. Get predicates and check whether this match can be
+ included in the result list. */
Lisp_Object predicates = AREF (predicates_table, match.pattern_index);
- if (EQ (predicates, Qt))
+ if (BASE_EQ (predicates, Qt))
{
predicates = treesit_predicates_for_pattern (treesit_query,
match.pattern_index);
@@ -2829,15 +2921,28 @@ the query. */)
/* captures_lisp = Fnreverse (captures_lisp); */
struct capture_range captures_range = { result, prev_result };
- if (!treesit_eval_predicates (captures_range, predicates))
- /* Predicates didn't pass, roll back. */
+ bool match = treesit_eval_predicates (captures_range, predicates,
+ &predicate_signal_data);
+ if (!NILP (predicate_signal_data))
+ break;
+
+ /* Predicates didn't pass, roll back. */
+ if (!match)
result = prev_result;
}
+
+ /* Final clean up. */
if (needs_to_free_query_and_cursor)
{
ts_query_delete (treesit_query);
ts_query_cursor_delete (cursor);
}
+ set_buffer_internal (old_buf);
+
+ /* Some capture predicate signaled an error. */
+ if (!NILP (predicate_signal_data))
+ xsignal (Qtreesit_query_error, predicate_signal_data);
+
return Fnreverse (result);
}
@@ -2917,7 +3022,7 @@ treesit_cursor_helper (TSTreeCursor *cursor, TSNode node, Lisp_Object parser)
TSNode root = ts_tree_root_node (XTS_PARSER (parser)->tree);
*cursor = ts_tree_cursor_new (root);
bool success = treesit_cursor_helper_1 (cursor, &node, end_pos,
- treesit_recursion_limit);
+ TREESIT_RECURSION_LIMIT);
if (!success)
ts_tree_cursor_delete (cursor);
return success;
@@ -3048,10 +3153,147 @@ treesit_traverse_child_helper (TSTreeCursor *cursor,
}
}
-/* Return true if the node at CURSOR matches PRED. PRED can be a
- string or a function. This function assumes PRED is either a
- string or a function. If NAMED is true, also check that the node
- is named. */
+/* Assq but doesn't signal. */
+static Lisp_Object
+safe_assq (Lisp_Object key, Lisp_Object alist)
+{
+ Lisp_Object tail = alist;
+ FOR_EACH_TAIL_SAFE (tail)
+ if (CONSP (XCAR (tail)) && EQ (XCAR (XCAR (tail)), key))
+ return XCAR (tail);
+ return Qnil;
+}
+
+/* Given a symbol THING, and a language symbol LANGUAGE, find the
+ corresponding predicate definition in treesit-things-settings.
+ Don't check for the type of THING and LANGUAGE.
+
+ If there isn't one, return Qnil. */
+static Lisp_Object
+treesit_traverse_get_predicate (Lisp_Object thing, Lisp_Object language)
+{
+ Lisp_Object cons = safe_assq (language, Vtreesit_thing_settings);
+ if (NILP (cons))
+ return Qnil;
+ Lisp_Object definitions = XCDR (cons);
+ Lisp_Object entry = safe_assq (thing, definitions);
+ if (NILP (entry))
+ return Qnil;
+ /* ENTRY looks like (THING PRED). */
+ Lisp_Object cdr = XCDR (entry);
+ if (!CONSP (cdr))
+ return Qnil;
+ return XCAR (cdr);
+}
+
+/* Validate the PRED passed to treesit_traverse_match_predicate. If
+ there's an error, set SIGNAL_DATA to something signal accepts, and
+ return false, otherwise return true. This function also check for
+ recusion levels: we place a arbitrary 100 level limit on recursive
+ predicates. RECURSION_LEVEL is the current recursion level (that
+ starts at 0), if it goes over 99, return false and set
+ SIGNAL_DATA. LANGUAGE is a LANGUAGE symbol. */
+static bool
+treesit_traverse_validate_predicate (Lisp_Object pred,
+ Lisp_Object language,
+ Lisp_Object *signal_data,
+ ptrdiff_t recursion_level)
+{
+ if (recursion_level > 99)
+ {
+ *signal_data = list1 (build_string ("Predicate recursion level "
+ "exceeded: it must not exceed "
+ "100 levels"));
+ return false;
+ }
+ if (STRINGP (pred))
+ return true;
+ else if (FUNCTIONP (pred))
+ return true;
+ else if (SYMBOLP (pred))
+ {
+ Lisp_Object definition = treesit_traverse_get_predicate (pred,
+ language);
+ if (NILP (definition))
+ {
+ *signal_data = list2 (build_string ("Cannot find the definition "
+ "of the predicate in "
+ "`treesit-things-settings'"),
+ pred);
+ return false;
+ }
+ return treesit_traverse_validate_predicate (definition,
+ language,
+ signal_data,
+ recursion_level + 1);
+ }
+ else if (CONSP (pred))
+ {
+ Lisp_Object car = XCAR (pred);
+ Lisp_Object cdr = XCDR (pred);
+ if (BASE_EQ (car, Qnot))
+ {
+ if (!CONSP (cdr))
+ {
+ *signal_data = list2 (build_string ("Invalide `not' "
+ "predicate"),
+ pred);
+ return false;
+ }
+ /* At this point CDR must be a cons. */
+ if (XFIXNUM (Flength (cdr)) != 1)
+ {
+ *signal_data = list2 (build_string ("`not' can only "
+ "have one argument"),
+ pred);
+ return false;
+ }
+ return treesit_traverse_validate_predicate (XCAR (cdr),
+ language,
+ signal_data,
+ recursion_level + 1);
+ }
+ else if (BASE_EQ (car, Qor))
+ {
+ if (!CONSP (cdr) || NILP (cdr))
+ {
+ *signal_data = list2 (build_string ("`or' must have a list "
+ "of patterns as "
+ "arguments "),
+ pred);
+ return false;
+ }
+ FOR_EACH_TAIL (cdr)
+ {
+ if (!treesit_traverse_validate_predicate (XCAR (cdr),
+ language,
+ signal_data,
+ recursion_level + 1))
+ return false;
+ }
+ return true;
+ }
+ else if (STRINGP (car) && FUNCTIONP (cdr))
+ return true;
+ }
+ *signal_data = list2 (build_string ("Invalid predicate, see `treesit-thing-settings' for valid forms of predicate"),
+ pred);
+ return false;
+}
+
+/* Return true if the node at CURSOR matches PRED. PRED can be a lot
+ of things:
+
+ PRED := string | function | (string . function)
+ | (or PRED...) | (not PRED)
+
+ See docstring of treesit-search-forward and friends for the meaning
+ of each shape.
+
+ This function assumes PRED is in one of its valid forms. If NAMED
+ is true, also check that the node is named.
+
+ This function may signal if the predicate function signals. */
static bool
treesit_traverse_match_predicate (TSTreeCursor *cursor, Lisp_Object pred,
Lisp_Object parser, bool named)
@@ -3065,24 +3307,67 @@ treesit_traverse_match_predicate (TSTreeCursor *cursor, Lisp_Object pred,
const char *type = ts_node_type (node);
return fast_c_string_match (pred, type, strlen (type)) >= 0;
}
- else
+ else if (FUNCTIONP (pred))
{
Lisp_Object lisp_node = make_treesit_node (parser, node);
return !NILP (CALLN (Ffuncall, pred, lisp_node));
}
+ else if (SYMBOLP (pred))
+ {
+ Lisp_Object language = XTS_PARSER (parser)->language_symbol;
+ Lisp_Object definition = treesit_traverse_get_predicate (pred,
+ language);
+ return treesit_traverse_match_predicate (cursor, definition,
+ parser, named);
+ }
+ else if (CONSP (pred))
+ {
+ Lisp_Object car = XCAR (pred);
+ Lisp_Object cdr = XCDR (pred);
+
+ if (BASE_EQ (car, Qnot))
+ return !treesit_traverse_match_predicate (cursor, XCAR (cdr),
+ parser, named);
+ else if (BASE_EQ (car, Qor))
+ {
+ FOR_EACH_TAIL (cdr)
+ {
+ if (treesit_traverse_match_predicate (cursor, XCAR (cdr),
+ parser, named))
+ return true;
+ }
+ return false;
+ }
+ else if (STRINGP (car) && FUNCTIONP (cdr))
+ {
+ /* A bit of code duplication here, but should be fine. */
+ const char *type = ts_node_type (node);
+ if (!(fast_c_string_match (car, type, strlen (type)) >= 0))
+ return false;
+
+ Lisp_Object lisp_node = make_treesit_node (parser, node);
+ if (NILP (CALLN (Ffuncall, cdr, lisp_node)))
+ return false;
+
+ return true;
+ }
+ }
+ /* Returning false is better than UB. */
+ return false;
}
-/* Traverse the parse tree starting from CURSOR. PRED can be a
- function (takes a node and returns nil/non-nil), or a string
- (treated as regexp matching the node's type, must be all single
- byte characters). If the node satisfies PRED, leave CURSOR on that
- node and return true. If no node satisfies PRED, move CURSOR back
- to starting position and return false.
+/* Traverse the parse tree starting from CURSOR. See
+ `treesit-thing-settings' for the shapes PRED can have. If the
+ node satisfies PRED, leave CURSOR on that node and return true. If
+ no node satisfies PRED, move CURSOR back to starting position and
+ return false.
LIMIT is the number of levels we descend in the tree. FORWARD
controls the direction in which we traverse the tree, true means
forward, false backward. If SKIP_ROOT is true, don't match ROOT.
- */
+
+ This function may signal if the predicate function signals. */
+
static bool
treesit_search_dfs (TSTreeCursor *cursor,
Lisp_Object pred, Lisp_Object parser,
@@ -3118,7 +3403,10 @@ treesit_search_dfs (TSTreeCursor *cursor,
START. PRED, PARSER, NAMED, FORWARD are the same as in
ts_search_subtree. If a match is found, leave CURSOR at that node,
and return true, if no match is found, return false, and CURSOR's
- position is undefined. */
+ position is undefined.
+
+ This function may signal if the predicate function signals. */
+
static bool
treesit_search_forward (TSTreeCursor *cursor,
Lisp_Object pred, Lisp_Object parser,
@@ -3128,8 +3416,7 @@ treesit_search_forward (TSTreeCursor *cursor,
nodes. This way repeated call of this function traverses each
node in the tree once and only once:
- (while node (setq node (treesit-search-forward node)))
- */
+ (while node (setq node (treesit-search-forward node))) */
bool initial = true;
while (true)
{
@@ -3156,6 +3443,14 @@ treesit_search_forward (TSTreeCursor *cursor,
}
}
+/* Clean up the given tree cursor CURSOR. */
+
+static void
+treesit_traverse_cleanup_cursor (void *cursor)
+{
+ ts_tree_cursor_delete (cursor);
+}
+
DEFUN ("treesit-search-subtree",
Ftreesit_search_subtree,
Streesit_search_subtree, 2, 5, 0,
@@ -3175,14 +3470,12 @@ Return the first matched node, or nil if none matches. */)
Lisp_Object all, Lisp_Object depth)
{
CHECK_TS_NODE (node);
- CHECK_TYPE (STRINGP (predicate) || FUNCTIONP (predicate),
- list3 (Qor, Qstringp, Qfunctionp), predicate);
CHECK_SYMBOL (all);
CHECK_SYMBOL (backward);
/* We use a default limit of 1000. See bug#59426 for the
discussion. */
- ptrdiff_t the_limit = treesit_recursion_limit;
+ ptrdiff_t the_limit = TREESIT_RECURSION_LIMIT;
if (!NILP (depth))
{
CHECK_FIXNUM (depth);
@@ -3192,19 +3485,29 @@ Return the first matched node, or nil if none matches. */)
treesit_initialize ();
Lisp_Object parser = XTS_NODE (node)->parser;
+ Lisp_Object language = XTS_PARSER (parser)->language_symbol;
+
+ Lisp_Object signal_data = Qnil;
+ if (!treesit_traverse_validate_predicate (predicate, language,
+ &signal_data, 0))
+ xsignal1 (Qtreesit_invalid_predicate, signal_data);
+
Lisp_Object return_value = Qnil;
TSTreeCursor cursor;
if (!treesit_cursor_helper (&cursor, XTS_NODE (node)->node, parser))
return return_value;
+ specpdl_ref count = SPECPDL_INDEX ();
+ record_unwind_protect_ptr (treesit_traverse_cleanup_cursor, &cursor);
+
if (treesit_search_dfs (&cursor, predicate, parser, NILP (backward),
NILP (all), the_limit, false))
{
TSNode node = ts_tree_cursor_current_node (&cursor);
return_value = make_treesit_node (parser, node);
}
- ts_tree_cursor_delete (&cursor);
- return return_value;
+
+ return unbind_to (count, return_value);
}
DEFUN ("treesit-search-forward",
@@ -3241,33 +3544,43 @@ always traverse leaf nodes first, then upwards. */)
Lisp_Object all)
{
CHECK_TS_NODE (start);
- CHECK_TYPE (STRINGP (predicate) || FUNCTIONP (predicate),
- list3 (Qor, Qstringp, Qfunctionp), predicate);
CHECK_SYMBOL (all);
CHECK_SYMBOL (backward);
treesit_initialize ();
Lisp_Object parser = XTS_NODE (start)->parser;
+ Lisp_Object language = XTS_PARSER (parser)->language_symbol;
+
+ Lisp_Object signal_data = Qnil;
+ if (!treesit_traverse_validate_predicate (predicate, language,
+ &signal_data, 0))
+ xsignal1 (Qtreesit_invalid_predicate, signal_data);
+
Lisp_Object return_value = Qnil;
TSTreeCursor cursor;
if (!treesit_cursor_helper (&cursor, XTS_NODE (start)->node, parser))
return return_value;
+ specpdl_ref count = SPECPDL_INDEX ();
+ record_unwind_protect_ptr (treesit_traverse_cleanup_cursor, &cursor);
+
if (treesit_search_forward (&cursor, predicate, parser,
NILP (backward), NILP (all)))
{
TSNode node = ts_tree_cursor_current_node (&cursor);
return_value = make_treesit_node (parser, node);
}
- ts_tree_cursor_delete (&cursor);
- return return_value;
+
+ return unbind_to (count, return_value);
}
/* Recursively traverse the tree under CURSOR, and append the result
subtree to PARENT's cdr. See more in Ftreesit_induce_sparse_tree.
Note that the top-level children list is reversed, because
- reasons. */
+ reasons.
+
+ This function may signal if the predicate function signals. */
static void
treesit_build_sparse_tree (TSTreeCursor *cursor, Lisp_Object parent,
Lisp_Object pred, Lisp_Object process_fn,
@@ -3353,15 +3666,13 @@ a regexp. */)
Lisp_Object depth)
{
CHECK_TS_NODE (root);
- CHECK_TYPE (STRINGP (predicate) || FUNCTIONP (predicate),
- list3 (Qor, Qstringp, Qfunctionp), predicate);
if (!NILP (process_fn))
CHECK_TYPE (FUNCTIONP (process_fn), Qfunctionp, process_fn);
/* We use a default limit of 1000. See bug#59426 for the
discussion. */
- ptrdiff_t the_limit = treesit_recursion_limit;
+ ptrdiff_t the_limit = TREESIT_RECURSION_LIMIT;
if (!NILP (depth))
{
CHECK_FIXNUM (depth);
@@ -3371,21 +3682,68 @@ a regexp. */)
treesit_initialize ();
Lisp_Object parser = XTS_NODE (root)->parser;
+ Lisp_Object language = XTS_PARSER (parser)->language_symbol;
+
+ Lisp_Object signal_data = Qnil;
+ if (!treesit_traverse_validate_predicate (predicate, language,
+ &signal_data, 0))
+ xsignal1 (Qtreesit_invalid_predicate, signal_data);
+
Lisp_Object parent = Fcons (Qnil, Qnil);
/* In this function we never traverse above NODE, so we don't need
to use treesit_cursor_helper. */
TSTreeCursor cursor = ts_tree_cursor_new (XTS_NODE (root)->node);
+ specpdl_ref count = SPECPDL_INDEX ();
+ record_unwind_protect_ptr (treesit_traverse_cleanup_cursor, &cursor);
+
treesit_build_sparse_tree (&cursor, parent, predicate, process_fn,
the_limit, parser);
- ts_tree_cursor_delete (&cursor);
+
+ unbind_to (count, Qnil);
+
Fsetcdr (parent, Fnreverse (Fcdr (parent)));
+
if (NILP (Fcdr (parent)))
return Qnil;
else
return parent;
}
+DEFUN ("treesit-node-match-p",
+ Ftreesit_node_match_p,
+ Streesit_node_match_p, 2, 2, 0,
+ doc: /* Check whether NODE matches PREDICATE.
+
+PREDICATE can be a regexp matching node type, a predicate function,
+and more, see `treesit-things-definition' for detail. Return non-nil
+if NODE matches PRED, nil otherwise. */)
+ (Lisp_Object node, Lisp_Object predicate)
+{
+ CHECK_TS_NODE (node);
+
+ Lisp_Object parser = XTS_NODE (node)->parser;
+ Lisp_Object language = XTS_PARSER (parser)->language_symbol;
+
+ Lisp_Object signal_data = Qnil;
+ if (!treesit_traverse_validate_predicate (predicate, language,
+ &signal_data, 0))
+ xsignal1 (Qtreesit_invalid_predicate, signal_data);
+
+ TSTreeCursor cursor = ts_tree_cursor_new (XTS_NODE (node)->node);
+
+ specpdl_ref count = SPECPDL_INDEX ();
+ record_unwind_protect_ptr (treesit_traverse_cleanup_cursor, &cursor);
+
+ bool match = false;
+ match = treesit_traverse_match_predicate (&cursor, predicate,
+ parser, false);
+
+ unbind_to (count, Qnil);
+
+ return match ? Qt : Qnil;
+}
+
DEFUN ("treesit-subtree-stat",
Ftreesit_subtree_stat,
Streesit_subtree_stat, 1, 1, 0,
@@ -3480,8 +3838,12 @@ syms_of_treesit (void)
DEFSYM (Qoutdated, "outdated");
DEFSYM (Qhas_error, "has-error");
DEFSYM (Qlive, "live");
+ DEFSYM (Qnot, "not");
DEFSYM (QCanchor, ":anchor");
+ DEFSYM (QCquestion, ":?");
+ DEFSYM (QCstar, ":*");
+ DEFSYM (QCplus, ":+");
DEFSYM (QCequal, ":equal");
DEFSYM (QCmatch, ":match");
DEFSYM (QCpred, ":pred");
@@ -3504,6 +3866,7 @@ syms_of_treesit (void)
"user-emacs-directory");
DEFSYM (Qtreesit_parser_deleted, "treesit-parser-deleted");
DEFSYM (Qtreesit_pattern_expand, "treesit-pattern-expand");
+ DEFSYM (Qtreesit_invalid_predicate, "treesit-invalid-predicate");
DEFSYM (Qor, "or");
@@ -3531,6 +3894,10 @@ syms_of_treesit (void)
define_error (Qtreesit_parser_deleted,
"This parser is deleted and cannot be used",
Qtreesit_error);
+ define_error (Qtreesit_invalid_predicate,
+ "Invalid predicate, see `treesit-thing-settings' "
+ "for valid forms for a predicate",
+ Qtreesit_error);
DEFVAR_LISP ("treesit-load-name-override-list",
Vtreesit_load_name_override_list,
@@ -3561,6 +3928,33 @@ then in the `tree-sitter' subdirectory of `user-emacs-directory', and
then in the system default locations for dynamic libraries, in that order. */);
Vtreesit_extra_load_path = Qnil;
+ DEFVAR_LISP ("treesit-thing-settings",
+ Vtreesit_thing_settings,
+ doc:
+ /* A list defining things.
+
+The value should be an alist of (LANGUAGE . DEFINITIONS), where
+LANGUAGE is a language symbol, and DEFINITIONS is a list of
+
+ (THING PRED)
+
+THING is a symbol representing the thing, like `defun', `sexp', or
+`block'; PRED defines what kind of node can be qualified as THING.
+
+PRED can be a regexp string that matches the type of the node; it can
+be a predicate function that takes the node as the sole argument and
+returns t if the node is the thing; it can be a cons (REGEXP . FN),
+which is a combination of a regexp and a predicate function, and the
+node has to match both to qualify as the thing.
+
+PRED can also be recursively defined. It can be (or PRED...), meaning
+satisfying anyone of the inner PREDs qualifies the node; or (not
+PRED), meaning not satisfying the inner PRED qualifies the node.
+
+Finally, PRED can refer to other THINGs defined in this list by using
+the symbol of that THING. For example, (or block sexp). */);
+ Vtreesit_thing_settings = Qnil;
+
staticpro (&Vtreesit_str_libtree_sitter);
Vtreesit_str_libtree_sitter = build_pure_c_string ("libtree-sitter-");
staticpro (&Vtreesit_str_tree_sitter);
@@ -3648,6 +4042,7 @@ then in the system default locations for dynamic libraries, in that order. */);
defsubr (&Streesit_search_subtree);
defsubr (&Streesit_search_forward);
defsubr (&Streesit_induce_sparse_tree);
+ defsubr (&Streesit_node_match_p);
defsubr (&Streesit_subtree_stat);
#endif /* HAVE_TREE_SITTER */
defsubr (&Streesit_available_p);
diff --git a/src/w32heap.c b/src/w32heap.c
index a1975d9a975..628fc28e3c5 100644
--- a/src/w32heap.c
+++ b/src/w32heap.c
@@ -121,9 +121,9 @@ typedef struct _RTL_HEAP_PARAMETERS {
# define DUMPED_HEAP_SIZE 10
#else
# if defined _WIN64 || defined WIDE_EMACS_INT
-# define DUMPED_HEAP_SIZE (23*1024*1024)
+# define DUMPED_HEAP_SIZE (28*1024*1024)
# else
-# define DUMPED_HEAP_SIZE (13*1024*1024)
+# define DUMPED_HEAP_SIZE (18*1024*1024)
# endif
#endif
diff --git a/src/window.c b/src/window.c
index 0efd6813f8d..f4e09f49eae 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3876,6 +3876,9 @@ run_window_change_functions_1 (Lisp_Object symbol, Lisp_Object buffer,
*
* This function does not save and restore match data. Any functions
* it calls are responsible for doing that themselves.
+ *
+ * Additionally, report changes to each frame's selected window to the
+ * input method in textconv.c.
*/
void
run_window_change_functions (void)
@@ -4035,6 +4038,18 @@ run_window_change_functions (void)
run_window_change_functions_1
(Qwindow_selection_change_functions, Qnil, frame);
+#if defined HAVE_TEXT_CONVERSION
+
+ /* If the buffer or selected window has changed, also reset the
+ input method composition state. */
+
+ if ((frame_selected_window_change || frame_buffer_change)
+ && FRAME_LIVE_P (f)
+ && FRAME_WINDOW_P (f))
+ report_selected_window_change (f);
+
+#endif
+
/* A frame has changed state when a size or buffer change
occurred, its selected window has changed, when it was
(de-)selected or its window state change flag was set. */
diff --git a/src/xdisp.c b/src/xdisp.c
index 8e265fb5a49..76d6592bf00 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -12448,7 +12448,7 @@ display_echo_area (struct window *w)
reset the echo_area_buffer in question to nil at the end because
with_echo_area_buffer will set it to an empty buffer. */
bool i = display_last_displayed_message_p;
- /* According to the C99, C11 and C++11 standards, the integral value
+ /* According to the C standard, the integral value
of a "bool" is always 0 or 1, so this array access is safe here,
if oddly typed. */
no_message_p = NILP (echo_area_buffer[i]);
@@ -12938,7 +12938,7 @@ clear_garbaged_frames (void)
{
struct frame *f = XFRAME (frame);
- if (FRAME_VISIBLE_P (f) && FRAME_GARBAGED_P (f))
+ if (FRAME_REDISPLAY_P (f) && FRAME_GARBAGED_P (f))
{
if (f->resized_p
/* It makes no sense to redraw a non-selected TTY
@@ -12987,7 +12987,7 @@ echo_area_display (bool update_frame_p)
f = XFRAME (WINDOW_FRAME (w));
/* Don't display if frame is invisible or not yet initialized. */
- if (!FRAME_VISIBLE_P (f) || !f->glyphs_initialized_p)
+ if (!FRAME_REDISPLAY_P (f) || !f->glyphs_initialized_p)
return;
#ifdef HAVE_WINDOW_SYSTEM
@@ -13544,7 +13544,7 @@ prepare_menu_bars (void)
TTY frames to be completely redrawn, when there
are more than one of them, even though nothing
should be changed on display. */
- || (FRAME_VISIBLE_P (f) == 2 && FRAME_WINDOW_P (f))))
+ || (FRAME_REDISPLAY_P (f) && FRAME_WINDOW_P (f))))
gui_consider_frame_title (frame);
}
}
@@ -16433,7 +16433,7 @@ redisplay_internal (void)
{
struct frame *f = XFRAME (frame);
- if (FRAME_VISIBLE_P (f))
+ if (FRAME_REDISPLAY_P (f))
{
++number_of_visible_frames;
/* Adjust matrices for visible frames only. */
@@ -16575,7 +16575,7 @@ redisplay_internal (void)
&& !w->update_mode_line
&& !current_buffer->clip_changed
&& !current_buffer->prevent_redisplay_optimizations_p
- && FRAME_VISIBLE_P (XFRAME (w->frame))
+ && FRAME_REDISPLAY_P (XFRAME (w->frame))
&& !FRAME_OBSCURED_P (XFRAME (w->frame))
&& !XFRAME (w->frame)->cursor_type_changed
&& !XFRAME (w->frame)->face_change
@@ -16853,7 +16853,7 @@ redisplay_internal (void)
if (gcscrollbars && FRAME_TERMINAL (f)->condemn_scroll_bars_hook)
FRAME_TERMINAL (f)->condemn_scroll_bars_hook (f);
- if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
+ if (FRAME_REDISPLAY_P (f) && !FRAME_OBSCURED_P (f))
{
/* Don't allow freeing images and faces for this
frame as long as the frame's update wasn't
@@ -16879,7 +16879,7 @@ redisplay_internal (void)
if (gcscrollbars && FRAME_TERMINAL (f)->judge_scroll_bars_hook)
FRAME_TERMINAL (f)->judge_scroll_bars_hook (f);
- if (FRAME_VISIBLE_P (f) && !FRAME_OBSCURED_P (f))
+ if (FRAME_REDISPLAY_P (f) && !FRAME_OBSCURED_P (f))
{
/* If fonts changed on visible frame, display again. */
if (f->fonts_changed)
@@ -16985,7 +16985,7 @@ redisplay_internal (void)
}
}
}
- else if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf))
+ else if (FRAME_REDISPLAY_P (sf) && !FRAME_OBSCURED_P (sf))
{
sf->inhibit_clear_image_cache = true;
displayed_buffer = XBUFFER (XWINDOW (selected_window)->contents);
@@ -17036,7 +17036,7 @@ redisplay_internal (void)
unrequest_sigio ();
STOP_POLLING;
- if (FRAME_VISIBLE_P (sf) && !FRAME_OBSCURED_P (sf))
+ if (FRAME_REDISPLAY_P (sf) && !FRAME_OBSCURED_P (sf))
{
if (hscroll_retries <= MAX_HSCROLL_RETRIES
&& hscroll_windows (selected_window))
@@ -17135,7 +17135,7 @@ redisplay_internal (void)
FOR_EACH_FRAME (tail, frame)
{
- if (XFRAME (frame)->visible)
+ if (FRAME_REDISPLAY_P (XFRAME (frame)))
new_count++;
}
@@ -26334,16 +26334,17 @@ display_menu_bar (struct window *w)
it.first_visible_x = 0;
it.last_visible_x = FRAME_PIXEL_WIDTH (f);
#elif defined (HAVE_X_WINDOWS) /* X without toolkit. */
+ struct window *menu_window = NULL;
+ struct face *face = FACE_FROM_ID (f, MENU_FACE_ID);
+
if (FRAME_WINDOW_P (f))
{
/* Menu bar lines are displayed in the desired matrix of the
dummy window menu_bar_window. */
- struct window *menu_w;
- menu_w = XWINDOW (f->menu_bar_window);
- init_iterator (&it, menu_w, -1, -1, menu_w->desired_matrix->rows,
+ menu_window = XWINDOW (f->menu_bar_window);
+ init_iterator (&it, menu_window, -1, -1,
+ menu_window->desired_matrix->rows,
MENU_FACE_ID);
- it.first_visible_x = 0;
- it.last_visible_x = FRAME_PIXEL_WIDTH (f);
}
else
#endif /* not USE_X_TOOLKIT and not USE_GTK */
@@ -26397,6 +26398,50 @@ display_menu_bar (struct window *w)
/* Compute the total height of the lines. */
compute_line_metrics (&it);
+ it.glyph_row->full_width_p = true;
+ it.glyph_row->continued_p = false;
+ it.glyph_row->truncated_on_left_p = false;
+ it.glyph_row->truncated_on_right_p = false;
+
+#if defined (HAVE_X_WINDOWS) && !defined (USE_X_TOOLKIT) && !defined (USE_GTK)
+ /* Make a 3D menu bar have a shadow at its right end. */
+ extend_face_to_end_of_line (&it);
+ if (face->box != FACE_NO_BOX)
+ {
+ struct glyph *last = (it.glyph_row->glyphs[TEXT_AREA]
+ + it.glyph_row->used[TEXT_AREA] - 1);
+ int box_thickness = face->box_vertical_line_width;
+ last->right_box_line_p = true;
+ /* Add back the space for the right box line we subtracted in
+ init_iterator, since the right_box_line_p flag will make the
+ glyph wider. We actually add only as much space as is
+ available for the last glyph of the menu bar and whatever
+ space is left beyond it, since that glyph could be only
+ partially visible. */
+ if (box_thickness > 0)
+ last->pixel_width += max (0, (box_thickness
+ - (it.current_x - it.last_visible_x)));
+ }
+
+ /* With the non-toolkit version, modify the menu bar window height
+ accordingly. */
+ if (FRAME_WINDOW_P (it.f) && menu_window)
+ {
+ struct glyph_row *row;
+ int delta_height;
+
+ row = it.glyph_row;
+ delta_height
+ = ((row->y + row->height)
+ - WINDOW_BOX_HEIGHT_NO_MODE_LINE (menu_window));
+
+ if (delta_height != 0)
+ {
+ FRAME_MENU_BAR_HEIGHT (it.f) += delta_height;
+ adjust_frame_size (it.f, -1, -1, 3, false, Qmenu_bar_lines);
+ }
+ }
+#endif
}
/* Deep copy of a glyph row, including the glyphs. */
@@ -27578,7 +27623,9 @@ static const char power_letter[] =
'P', /* peta */
'E', /* exa */
'Z', /* zetta */
- 'Y' /* yotta */
+ 'Y', /* yotta */
+ 'R', /* ronna */
+ 'Q' /* quetta */
};
static void
@@ -33223,7 +33270,7 @@ display_and_set_cursor (struct window *w, bool on,
windows and frames; in the latter case, the frame or window may
be in the midst of changing its size, and x and y may be off the
window. */
- if (! FRAME_VISIBLE_P (f)
+ if (! FRAME_REDISPLAY_P (f)
|| vpos >= w->current_matrix->nrows
|| hpos >= w->current_matrix->matrix_w)
return;
@@ -33384,7 +33431,7 @@ gui_update_cursor (struct frame *f, bool on_p)
void
gui_clear_cursor (struct window *w)
{
- if (FRAME_VISIBLE_P (XFRAME (w->frame)) && w->phys_cursor_on_p)
+ if (FRAME_REDISPLAY_P (XFRAME (w->frame)) && w->phys_cursor_on_p)
update_window_cursor (w, false);
}
diff --git a/src/xfns.c b/src/xfns.c
index 528ae61ca32..9e004f6a678 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -37,13 +37,16 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include "termhooks.h"
#include "font.h"
+#ifdef HAVE_X_I18N
+#include "textconv.h"
+#endif
+
#include <sys/types.h>
#include <sys/stat.h>
#ifdef USE_XCB
#include <xcb/xcb.h>
#include <xcb/xproto.h>
-#include <xcb/xcb_aux.h>
#endif
#include "bitmaps/gray.xbm"
@@ -1368,7 +1371,7 @@ x_set_mouse_color (struct frame *f, Lisp_Object arg, Lisp_Object oldval)
XCreateFontCursor is not a request that waits for a reply,
and as such can return IDs that will not actually be used by
the server. */
- x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f));
+ x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f), 0);
/* Free any successfully created cursors. */
for (i = 0; i < mouse_cursor_max; i++)
@@ -2643,12 +2646,18 @@ append_wm_protocols (struct x_display_info *dpyinfo,
if (existing)
XFree (existing);
- if (!found_wm_ping)
- protos[num_protos++] = dpyinfo->Xatom_net_wm_ping;
+ if (!dpyinfo->untrusted)
+ {
+ /* Untrusted clients cannot use these protocols which require
+ communicating with the window manager. */
+
+ if (!found_wm_ping)
+ protos[num_protos++] = dpyinfo->Xatom_net_wm_ping;
#if !defined HAVE_GTK3 && defined HAVE_XSYNC
- if (!found_wm_sync_request && dpyinfo->xsync_supported_p)
- protos[num_protos++] = dpyinfo->Xatom_net_wm_sync_request;
+ if (!found_wm_sync_request && dpyinfo->xsync_supported_p)
+ protos[num_protos++] = dpyinfo->Xatom_net_wm_sync_request;
#endif
+ }
if (num_protos)
XChangeProperty (dpyinfo->display,
@@ -2666,24 +2675,50 @@ append_wm_protocols (struct x_display_info *dpyinfo,
#ifdef HAVE_X_I18N
-static void xic_preedit_draw_callback (XIC, XPointer, XIMPreeditDrawCallbackStruct *);
-static void xic_preedit_caret_callback (XIC, XPointer, XIMPreeditCaretCallbackStruct *);
+static void xic_preedit_draw_callback (XIC, XPointer,
+ XIMPreeditDrawCallbackStruct *);
+static void xic_preedit_caret_callback (XIC, XPointer,
+ XIMPreeditCaretCallbackStruct *);
static void xic_preedit_done_callback (XIC, XPointer, XPointer);
static int xic_preedit_start_callback (XIC, XPointer, XPointer);
+static void xic_string_conversion_callback (XIC, XPointer,
+ XIMStringConversionCallbackStruct *);
#ifndef HAVE_XICCALLBACK_CALLBACK
#define XICCallback XIMCallback
#define XICProc XIMProc
#endif
-static XIMCallback Xxic_preedit_draw_callback = { NULL,
- (XIMProc) xic_preedit_draw_callback };
-static XIMCallback Xxic_preedit_caret_callback = { NULL,
- (XIMProc) xic_preedit_caret_callback };
-static XIMCallback Xxic_preedit_done_callback = { NULL,
- (XIMProc) xic_preedit_done_callback };
-static XICCallback Xxic_preedit_start_callback = { NULL,
- (XICProc) xic_preedit_start_callback };
+static XIMCallback Xxic_preedit_draw_callback =
+ {
+ NULL,
+ (XIMProc) xic_preedit_draw_callback,
+ };
+
+static XIMCallback Xxic_preedit_caret_callback =
+ {
+ NULL,
+ (XIMProc) xic_preedit_caret_callback,
+ };
+
+static XIMCallback Xxic_preedit_done_callback =
+ {
+ NULL,
+ (XIMProc) xic_preedit_done_callback,
+ };
+
+static XICCallback Xxic_preedit_start_callback =
+ {
+ NULL,
+ (XICProc) xic_preedit_start_callback,
+ };
+
+static XIMCallback Xxic_string_conversion_callback =
+ {
+ /* This is actually an XICCallback! */
+ NULL,
+ (XIMProc) xic_string_conversion_callback,
+ };
#if defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT
/* Create an X fontset on frame F with base font name BASE_FONTNAME. */
@@ -3089,6 +3124,8 @@ create_frame_xic (struct frame *f)
XNFocusWindow, FRAME_X_WINDOW (f),
XNStatusAttributes, status_attr,
XNPreeditAttributes, preedit_attr,
+ XNStringConversionCallback,
+ &Xxic_string_conversion_callback,
NULL);
else if (preedit_attr)
xic = XCreateIC (xim,
@@ -3096,6 +3133,8 @@ create_frame_xic (struct frame *f)
XNClientWindow, FRAME_X_WINDOW (f),
XNFocusWindow, FRAME_X_WINDOW (f),
XNPreeditAttributes, preedit_attr,
+ XNStringConversionCallback,
+ &Xxic_string_conversion_callback,
NULL);
else if (status_attr)
xic = XCreateIC (xim,
@@ -3103,12 +3142,16 @@ create_frame_xic (struct frame *f)
XNClientWindow, FRAME_X_WINDOW (f),
XNFocusWindow, FRAME_X_WINDOW (f),
XNStatusAttributes, status_attr,
+ XNStringConversionCallback,
+ &Xxic_string_conversion_callback,
NULL);
else
xic = XCreateIC (xim,
XNInputStyle, xic_style,
XNClientWindow, FRAME_X_WINDOW (f),
XNFocusWindow, FRAME_X_WINDOW (f),
+ XNStringConversionCallback,
+ &Xxic_string_conversion_callback,
NULL);
if (!xic)
@@ -3372,6 +3415,7 @@ struct x_xim_text_conversion_data
struct coding_system *coding;
char *source;
struct x_display_info *dpyinfo;
+ size_t size;
};
static Lisp_Object
@@ -3407,6 +3451,38 @@ x_xim_text_to_utf8_unix_1 (ptrdiff_t nargs, Lisp_Object *args)
}
static Lisp_Object
+x_encode_xim_text_1 (ptrdiff_t nargs, Lisp_Object *args)
+{
+ struct x_xim_text_conversion_data *data;
+ ptrdiff_t nbytes;
+ Lisp_Object coding_system;
+
+ data = xmint_pointer (args[0]);
+
+ if (SYMBOLP (Vx_input_coding_system))
+ coding_system = Vx_input_coding_system;
+ else if (!NILP (data->dpyinfo->xim_coding))
+ coding_system = data->dpyinfo->xim_coding;
+ else
+ coding_system = Vlocale_coding_system;
+
+ nbytes = data->size;
+
+ data->coding->destination = NULL;
+
+ setup_coding_system (coding_system, data->coding);
+ data->coding->mode |= (CODING_MODE_LAST_BLOCK
+ | CODING_MODE_SAFE_ENCODING);
+ data->coding->source = (const unsigned char *) data->source;
+ data->coding->dst_bytes = 2048;
+ data->coding->destination = xmalloc (2048);
+ encode_coding_object (data->coding, Qnil, 0, 0,
+ nbytes, nbytes, Qnil);
+
+ return Qnil;
+}
+
+static Lisp_Object
x_xim_text_to_utf8_unix_2 (Lisp_Object val, ptrdiff_t nargs,
Lisp_Object *args)
{
@@ -3463,6 +3539,46 @@ x_xim_text_to_utf8_unix (struct x_display_info *dpyinfo,
return (char *) coding.destination;
}
+/* Convert SIZE bytes of the specified text from Emacs's internal
+ coding system to the input method coding system. Return the
+ result, its byte length in *LENGTH, and its character length in
+ *CHARS, or NULL.
+
+ The string returned is not NULL terminated. */
+
+static char *
+x_encode_xim_text (struct x_display_info *dpyinfo, char *text,
+ size_t size, ptrdiff_t *length,
+ ptrdiff_t *chars)
+{
+ struct coding_system coding;
+ struct x_xim_text_conversion_data data;
+ Lisp_Object arg;
+ bool was_waiting_for_input_p;
+
+ data.coding = &coding;
+ data.source = text;
+ data.dpyinfo = dpyinfo;
+ data.size = size;
+
+ was_waiting_for_input_p = waiting_for_input;
+ /* Otherwise Fsignal will crash. */
+ waiting_for_input = false;
+
+ arg = make_mint_ptr (&data);
+ internal_condition_case_n (x_encode_xim_text_1, 1, &arg,
+ Qt, x_xim_text_to_utf8_unix_2);
+ waiting_for_input = was_waiting_for_input_p;
+
+ if (length)
+ *length = coding.produced;
+
+ if (chars)
+ *chars = coding.produced_char;
+
+ return (char *) coding.destination;
+}
+
static void
xic_preedit_draw_callback (XIC xic, XPointer client_data,
XIMPreeditDrawCallbackStruct *call_data)
@@ -3659,6 +3775,128 @@ xic_set_xfontset (struct frame *f, const char *base_fontname)
FRAME_XIC_FONTSET (f) = xfs;
}
+
+
+/* String conversion support. See textconv.c for more details. */
+
+static void
+xic_string_conversion_callback (XIC ic, XPointer client_data,
+ XIMStringConversionCallbackStruct *call_data)
+{
+ struct textconv_callback_struct request;
+ ptrdiff_t length;
+ struct frame *f;
+ int rc;
+
+ /* Find the frame associated with this IC. */
+ f = x_xic_to_frame (ic);
+
+ if (!f)
+ goto failure;
+
+ /* Fill in CALL_DATA as early as possible. */
+ call_data->text->feedback = NULL;
+ call_data->text->encoding_is_wchar = False;
+
+ /* Now translate the conversion request to the format understood by
+ textconv.c. */
+ request.position = call_data->position;
+
+ switch (call_data->direction)
+ {
+ case XIMForwardChar:
+ request.direction = TEXTCONV_FORWARD_CHAR;
+ break;
+
+ case XIMBackwardChar:
+ request.direction = TEXTCONV_BACKWARD_CHAR;
+ break;
+
+ case XIMForwardWord:
+ request.direction = TEXTCONV_FORWARD_WORD;
+ break;
+
+ case XIMBackwardWord:
+ request.direction = TEXTCONV_BACKWARD_WORD;
+ break;
+
+ case XIMCaretUp:
+ request.direction = TEXTCONV_CARET_UP;
+ break;
+
+ case XIMCaretDown:
+ request.direction = TEXTCONV_CARET_DOWN;
+ break;
+
+ case XIMNextLine:
+ request.direction = TEXTCONV_NEXT_LINE;
+ break;
+
+ case XIMPreviousLine:
+ request.direction = TEXTCONV_PREVIOUS_LINE;
+ break;
+
+ case XIMLineStart:
+ request.direction = TEXTCONV_LINE_START;
+ break;
+
+ case XIMLineEnd:
+ request.direction = TEXTCONV_LINE_END;
+ break;
+
+ case XIMAbsolutePosition:
+ request.direction = TEXTCONV_ABSOLUTE_POSITION;
+ break;
+
+ default:
+ goto failure;
+ }
+
+ /* factor is signed in call_data but is actually a CARD16. */
+ request.factor = call_data->factor;
+
+ if (call_data->operation == XIMStringConversionSubstitution)
+ request.operation = TEXTCONV_SUBSTITUTION;
+ else
+ request.operation = TEXTCONV_RETRIEVAL;
+
+ /* Now perform the string conversion. */
+ rc = textconv_query (f, &request);
+
+ if (rc)
+ {
+ xfree (request.text.text);
+ goto failure;
+ }
+
+ /* Encode the text in the locale coding system and give it back to
+ the input method. */
+ request.text.text = NULL;
+ call_data->text->string.mbs
+ = x_encode_xim_text (FRAME_DISPLAY_INFO (f),
+ request.text.text,
+ request.text.bytes, NULL,
+ &length);
+ call_data->text->length = length;
+
+ /* Free the encoded text. This is always set to something
+ valid. */
+ xfree (request.text.text);
+
+ /* Detect failure. */
+ if (!call_data->text->string.mbs)
+ goto failure;
+
+ return;
+
+ failure:
+ /* Return a string of length 0 using the C library malloc. This
+ assumes XFree is able to free data allocated with our malloc
+ wrapper. */
+ call_data->text->length = 0;
+ call_data->text->string.mbs = malloc (0);
+}
+
#endif /* HAVE_X_I18N */
@@ -4736,6 +4974,7 @@ This function is an internal primitive--use `make-frame' instead. */)
#endif /* USE_LUCID && USE_TOOLKIT_SCROLL_BARS */
f->output_data.x->white_relief.pixel = -1;
f->output_data.x->black_relief.pixel = -1;
+ f->output_data.x->visibility_state = VisibilityFullyObscured;
fset_icon_name (f, gui_display_get_arg (dpyinfo,
parms,
@@ -5723,13 +5962,13 @@ x_get_net_workarea (struct x_display_info *dpyinfo, XRectangle *rect)
= xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) dpyinfo->root_window,
(xcb_atom_t) dpyinfo->Xatom_net_current_desktop,
- XCB_ATOM_CARDINAL, 0, 1);
+ XA_CARDINAL, 0, 1);
workarea_cookie
= xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) dpyinfo->root_window,
(xcb_atom_t) dpyinfo->Xatom_net_workarea,
- XCB_ATOM_CARDINAL, 0, UINT32_MAX);
+ XA_CARDINAL, 0, UINT32_MAX);
reply = xcb_get_property_reply (dpyinfo->xcb_connection,
current_desktop_cookie, &error);
@@ -5740,7 +5979,7 @@ x_get_net_workarea (struct x_display_info *dpyinfo, XRectangle *rect)
else
{
if (xcb_get_property_value_length (reply) != 4
- || reply->type != XCB_ATOM_CARDINAL || reply->format != 32)
+ || reply->type != XA_CARDINAL || reply->format != 32)
rc = false;
else
current_workspace = *(uint32_t *) xcb_get_property_value (reply);
@@ -5755,7 +5994,7 @@ x_get_net_workarea (struct x_display_info *dpyinfo, XRectangle *rect)
free (error), rc = false;
else
{
- if (rc && reply->type == XCB_ATOM_CARDINAL && reply->format == 32
+ if (rc && reply->type == XA_CARDINAL && reply->format == 32
&& (xcb_get_property_value_length (reply) / sizeof (uint32_t)
>= current_workspace + 4))
{
@@ -7079,8 +7318,8 @@ that mouse buttons are being held down, such as immediately after a
/* Catch errors since interning lots of targets can potentially
generate a BadAlloc error. */
x_catch_errors (FRAME_X_DISPLAY (f));
- XInternAtoms (FRAME_X_DISPLAY (f), target_names,
- ntargets, False, target_atoms);
+ x_intern_atoms (FRAME_DISPLAY_INFO (f), target_names,
+ ntargets, target_atoms);
x_check_errors (FRAME_X_DISPLAY (f),
"Failed to intern target atoms: %s");
x_uncatch_errors_after_check ();
@@ -7377,20 +7616,6 @@ If TERMINAL is omitted or nil, that stands for the selected frame's display. */
return Qnil;
}
-/* Wait for responses to all X commands issued so far for frame F. */
-
-void
-x_sync (struct frame *f)
-{
- block_input ();
-#ifndef USE_XCB
- XSync (FRAME_X_DISPLAY (f), False);
-#else
- xcb_aux_sync (FRAME_DISPLAY_INFO (f)->xcb_connection);
-#endif
- unblock_input ();
-}
-
/***********************************************************************
Window properties
@@ -7484,7 +7709,7 @@ silently ignored. */)
elsize = element_format == 32 ? sizeof (long) : element_format >> 3;
data = xnmalloc (nelements, elsize);
- x_fill_property_data (FRAME_X_DISPLAY (f), value, data, nelements,
+ x_fill_property_data (FRAME_DISPLAY_INFO (f), value, data, nelements,
element_format);
}
else
@@ -9779,6 +10004,53 @@ This should be called from a variable watcher for `x-gtk-use-native-input'. */)
return Qnil;
}
+
+#if 0
+
+DEFUN ("x-test-string-conversion", Fx_test_string_conversion,
+ Sx_test_string_conversion, 5, 5, 0,
+ doc: /* Perform tests on the XIM string conversion support. */)
+ (Lisp_Object frame, Lisp_Object position,
+ Lisp_Object direction, Lisp_Object operation, Lisp_Object factor)
+{
+ struct frame *f;
+ XIMStringConversionCallbackStruct call_data;
+ XIMStringConversionText text;
+
+ f = decode_window_system_frame (frame);
+
+ if (!FRAME_XIC (f))
+ error ("No XIC on FRAME!");
+
+ CHECK_FIXNUM (position);
+ CHECK_FIXNUM (direction);
+ CHECK_FIXNUM (operation);
+ CHECK_FIXNUM (factor);
+
+ /* xic_string_conversion_callback (XIC ic, XPointer client_data,
+ XIMStringConversionCallbackStruct *call_data) */
+
+ call_data.position = XFIXNUM (position);
+ call_data.direction = XFIXNUM (direction);
+ call_data.operation = XFIXNUM (operation);
+ call_data.factor = XFIXNUM (factor);
+ call_data.text = &text;
+
+ block_input ();
+ xic_string_conversion_callback (FRAME_XIC (f), NULL,
+ &call_data);
+ unblock_input ();
+
+ /* Place a breakpoint here to inspect TEXT! */
+
+ while (1)
+ maybe_quit ();
+
+ return Qnil;
+}
+
+#endif
+
/***********************************************************************
Initialization
@@ -10225,6 +10497,9 @@ eliminated in future versions of Emacs. */);
defsubr (&Sx_display_set_last_user_time);
defsubr (&Sx_translate_coordinates);
defsubr (&Sx_get_modifier_masks);
+#if 0
+ defsubr (&Sx_test_string_conversion);
+#endif
tip_timer = Qnil;
staticpro (&tip_timer);
diff --git a/src/xftfont.c b/src/xftfont.c
index 1ade22a6006..4d5b855f178 100644
--- a/src/xftfont.c
+++ b/src/xftfont.c
@@ -628,6 +628,12 @@ xftfont_shape (Lisp_Object lgstring, Lisp_Object direction)
static int
xftfont_end_for_frame (struct frame *f)
{
+ /* XftDrawDestroy tries to access dpyinfo->display, which could've
+ been destroyed by now, causing Emacs to crash. The alternative
+ is to leak the XftDraw, but that's better than a crash. */
+ if (!FRAME_X_DISPLAY (f))
+ return 0;
+
block_input ();
XftDraw *xft_draw;
diff --git a/src/xselect.c b/src/xselect.c
index 45f933bba30..0586e46870b 100644
--- a/src/xselect.c
+++ b/src/xselect.c
@@ -16,7 +16,6 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
-
/* Rewritten by jwz */
#include <config.h>
@@ -44,7 +43,7 @@ struct prop_location;
struct selection_data;
static void x_decline_selection_request (struct selection_input_event *);
-static bool x_convert_selection (Lisp_Object, Lisp_Object, Atom, bool,
+static bool x_convert_selection (Lisp_Object, Lisp_Object, Atom,
struct x_display_info *, bool);
static bool waiting_for_other_props_on_window (Display *, Window);
static struct prop_location *expect_property_change (Display *, Window,
@@ -77,18 +76,20 @@ static void x_send_client_event (Lisp_Object, Lisp_Object, Lisp_Object,
#define TRACE0(fmt) (void) 0
#define TRACE1(fmt, a0) (void) 0
#define TRACE2(fmt, a0, a1) (void) 0
+#define TRACE3(fmt, a0, a1, a2) (void) 0
#endif
/* Bytes needed to represent 'long' data. This is as per libX11; it
is not necessarily sizeof (long). */
#define X_LONG_SIZE 4
-/* If this is a smaller number than the max-request-size of the display,
- emacs will use INCR selection transfer when the selection is larger
- than this. The max-request-size is usually around 64k, so if you want
- emacs to use incremental selection transfers when the selection is
- smaller than that, set this. I added this mostly for debugging the
- incremental transfer stuff, but it might improve server performance.
+/* If this is a smaller number than the max-request-size of the
+ display, Emacs will use INCR selection transfer when the selection
+ is larger than this. The max-request-size is usually around 64k,
+ so if you want emacs to use incremental selection transfers when
+ the selection is smaller than that, set this. I added this mostly
+ for debugging the incremental transfer stuff, but it might improve
+ server performance.
This value cannot exceed INT_MAX / max (X_LONG_SIZE, sizeof (long))
because it is multiplied by X_LONG_SIZE and by sizeof (long) in
@@ -101,7 +102,9 @@ static void x_send_client_event (Lisp_Object, Lisp_Object, Lisp_Object,
static int
selection_quantum (Display *display)
{
- long mrs = XExtendedMaxRequestSize (display);
+ long mrs;
+
+ mrs = XExtendedMaxRequestSize (display);
if (!mrs)
mrs = XMaxRequestSize (display);
@@ -281,10 +284,8 @@ x_own_selection (Lisp_Object selection_name, Lisp_Object selection_value,
timestamp = dpyinfo->last_user_time;
block_input ();
- x_catch_errors (display);
- XSetSelectionOwner (display, selection_atom, selecting_window, timestamp);
- x_check_errors (display, "Can't set selection: %s");
- x_uncatch_errors_after_check ();
+ XSetSelectionOwner (display, selection_atom, selecting_window,
+ timestamp);
unblock_input ();
/* Now update the local cache */
@@ -459,7 +460,7 @@ x_decline_selection_request (struct selection_input_event *event)
/* The reason for the error may be that the receiver has
died in the meantime. Handle that case. */
block_input ();
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, reply->requestor,
False, 0, &reply_base);
x_stop_ignoring_errors (dpyinfo);
@@ -472,19 +473,65 @@ x_decline_selection_request (struct selection_input_event *event)
struct selection_data
{
+ /* Pointer to the selection data. */
unsigned char *data;
+
+ /* A Lisp_Object containing the selection data. This is either
+ Qnil, or `data' is NULL. If non-nil, then this must be a string
+ whose contents will be written out verbatim. */
+ Lisp_Object string;
+
+ /* The size, in number of items, of the selection data.
+ The value is meaningless if string is non-nil. */
ptrdiff_t size;
+
+ /* The format of the selection data. */
int format;
+
+ /* The type of the selection data. */
Atom type;
- bool nofree;
+
+ /* The property describing the selection data. */
Atom property;
- /* This can be set to non-NULL during x_reply_selection_request, if
- the selection is waiting for an INCR transfer to complete. Don't
- free these; that's done by unexpect_property_change. */
- struct prop_location *wait_object;
+
+ /* The next piece of selection data in the current selection request
+ stack frame. This can be NULL. */
struct selection_data *next;
};
+/* Structure representing a single outstanding selection request (or
+ subrequest if MULTIPLE is being used.) */
+
+struct transfer
+{
+ /* The requestor of this transfer. */
+ Window requestor;
+
+ /* The current offset in items into the selection data, and the
+ number of items to send with each ChangeProperty request. */
+ size_t offset, items_per_request;
+
+ /* The display info associated with the transfer. */
+ struct x_display_info *dpyinfo;
+
+ /* The converted selection data. */
+ struct selection_data data;
+
+ /* The next and last selection transfers on this list. */
+ struct transfer *next, *last;
+
+ /* The atimer for the timeout. */
+ struct atimer *timeout;
+
+ /* The selection serial. */
+ unsigned int serial;
+
+ /* Flags. */
+ int flags;
+};
+
+#define SELECTED_EVENTS 1
+
struct x_selection_request
{
/* The last element in this stack. */
@@ -499,8 +546,8 @@ struct x_selection_request
/* Linked list of the above (in support of MULTIPLE targets). */
struct selection_data *converted_selections;
- /* "Data" to send a requestor for a failed MULTIPLE subtarget. */
- Atom conversion_fail_tag;
+ /* The serial used to handle X errors. */
+ unsigned int serial;
/* Whether or not conversion was successful. */
bool converted;
@@ -511,6 +558,50 @@ struct x_selection_request
struct x_selection_request *selection_request_stack;
+/* List of all outstanding selection transfers which are currently
+ being processed. */
+
+struct transfer outstanding_transfers;
+
+/* A counter for selection serials. */
+
+static unsigned int selection_serial;
+
+
+
+struct prop_location
+{
+ int identifier;
+ Display *display;
+ Window window;
+ Atom property;
+ int desired_state;
+ bool arrived;
+ struct prop_location *next;
+};
+
+static int prop_location_identifier;
+
+static Lisp_Object property_change_reply;
+
+static struct prop_location *property_change_reply_object;
+
+static struct prop_location *property_change_wait_list;
+
+static void
+set_property_change_object (struct prop_location *location)
+{
+ /* Input must be blocked so we don't get the event before we set
+ these. */
+ if (! input_blocked_p ())
+ emacs_abort ();
+
+ XSETCAR (property_change_reply, Qnil);
+ property_change_reply_object = location;
+}
+
+
+
static void
x_push_current_selection_request (struct selection_input_event *se,
struct x_display_info *dpyinfo)
@@ -523,7 +614,6 @@ x_push_current_selection_request (struct selection_input_event *se,
frame->request = se;
frame->dpyinfo = dpyinfo;
frame->converted_selections = NULL;
- frame->conversion_fail_tag = None;
selection_request_stack = frame;
}
@@ -554,7 +644,7 @@ x_selection_request_lisp_error (void)
for (cs = frame->converted_selections; cs; cs = next)
{
next = cs->next;
- if (! cs->nofree && cs->data)
+ if (cs->data)
xfree (cs->data);
xfree (cs);
}
@@ -564,250 +654,450 @@ x_selection_request_lisp_error (void)
x_decline_selection_request (frame->request);
}
-static void
-x_catch_errors_unwind (void)
+
+
+static size_t
+c_size_for_format (int format)
{
- block_input ();
- x_uncatch_errors ();
- unblock_input ();
+ switch (format)
+ {
+ case 8:
+ return sizeof (char);
+
+ case 16:
+ return sizeof (short);
+
+ case 32:
+ return sizeof (long);
+ }
+
+ emacs_abort ();
}
-
-/* This stuff is so that INCR selections are reentrant (that is, so we can
- be servicing multiple INCR selection requests simultaneously.) I haven't
- actually tested that yet. */
+static size_t
+x_size_for_format (int format)
+{
+ switch (format)
+ {
+ case 8:
+ return 1;
+
+ case 16:
+ return 2;
-/* Keep a list of the property changes that are awaited. */
+ case 32:
+ return 4;
+ }
-struct prop_location
+ emacs_abort ();
+}
+
+/* Return a pointer to the remaining part of the selection data, given
+ a pointer to a struct selection_data and an offset in items. Place
+ the number of items remaining in REMAINING. Garbage collection
+ must not happen, or the returned pointer becomes invalid. */
+
+static unsigned char *
+selection_data_for_offset (struct selection_data *data,
+ long offset, size_t *remaining)
{
- int identifier;
- Display *display;
- Window window;
- Atom property;
- int desired_state;
- bool arrived;
- struct prop_location *next;
-};
+ unsigned char *base;
+ size_t size;
-static int prop_location_identifier;
+ if (!NILP (data->string))
+ {
+ base = SDATA (data->string);
+ size = SBYTES (data->string);
+ }
+ else
+ {
+ base = data->data;
+ size = data->size;
+ }
-static Lisp_Object property_change_reply;
+ if (offset >= size)
+ {
+ *remaining = 0;
+ return NULL;
+ }
-static struct prop_location *property_change_reply_object;
+ base += (offset * c_size_for_format (data->format));
+ *remaining = size - offset;
+ return base;
+}
-static struct prop_location *property_change_wait_list;
+/* Return the size, in bytes transferred to the X server, of
+ data->size items of selection data in data->format-bit
+ quantities. */
-static void
-set_property_change_object (struct prop_location *location)
+static size_t
+selection_data_size (struct selection_data *data)
{
- /* Input must be blocked so we don't get the event before we set these. */
- if (! input_blocked_p ())
- emacs_abort ();
- XSETCAR (property_change_reply, Qnil);
- property_change_reply_object = location;
+ size_t scratch;
+
+ if (!NILP (data->string))
+ return SBYTES (data->string);
+
+ switch (data->format)
+ {
+ case 8:
+ return (size_t) data->size;
+
+ case 16:
+ if (INT_MULTIPLY_WRAPV (data->size, 2, &scratch))
+ return SIZE_MAX;
+
+ return scratch;
+
+ case 32:
+ if (INT_MULTIPLY_WRAPV (data->size, 4, &scratch))
+ return SIZE_MAX;
+
+ return scratch;
+ }
+
+ /* The specified format is invalid. */
+ emacs_abort ();
}
-
-/* Send the reply to a selection request event EVENT. */
+/* Return whether or not another outstanding selection transfer is
+ still selecting for events on the specified requestor window. */
-#ifdef TRACE_SELECTION
-static int x_reply_selection_request_cnt;
-#endif /* TRACE_SELECTION */
+static bool
+transfer_selecting_event (struct x_display_info *dpyinfo,
+ Window requestor)
+{
+ struct transfer *next;
+
+ next = outstanding_transfers.next;
+ for (; next != &outstanding_transfers; next = next->next)
+ {
+ if (next->requestor == requestor
+ && next->dpyinfo == dpyinfo)
+ return true;
+ }
+
+ return false;
+}
+
+/* Cancel the specified selection transfer. When called by
+ `start_transfer', the transfer may be partially formed. */
static void
-x_reply_selection_request (struct selection_input_event *event,
- struct x_display_info *dpyinfo)
+x_cancel_selection_transfer (struct transfer *transfer)
{
- XEvent reply_base;
- XSelectionEvent *reply = &(reply_base.xselection);
- Display *display = SELECTION_EVENT_DISPLAY (event);
- Window window = SELECTION_EVENT_REQUESTOR (event);
- ptrdiff_t bytes_remaining;
- int max_bytes = selection_quantum (display);
- specpdl_ref count = SPECPDL_INDEX ();
- struct selection_data *cs;
- struct x_selection_request *frame;
+ xfree (transfer->data.data);
- frame = selection_request_stack;
+ if (transfer->next)
+ {
+ transfer->next->last = transfer->last;
+ transfer->last->next = transfer->next;
+ }
- reply->type = SelectionNotify;
- reply->display = display;
- reply->requestor = window;
- reply->selection = SELECTION_EVENT_SELECTION (event);
- reply->time = SELECTION_EVENT_TIME (event);
- reply->target = SELECTION_EVENT_TARGET (event);
- reply->property = SELECTION_EVENT_PROPERTY (event);
- if (reply->property == None)
- reply->property = reply->target;
+ if (transfer->flags & SELECTED_EVENTS
+ && !transfer_selecting_event (transfer->dpyinfo,
+ transfer->requestor)
+ /* This can be called from x_delete_display. */
+ && transfer->dpyinfo->display)
+ {
+ /* Ignore errors generated by the change window request in case
+ the window has gone away. */
+ block_input ();
+ x_ignore_errors_for_next_request (transfer->dpyinfo, 0);
+ XSelectInput (transfer->dpyinfo->display,
+ transfer->requestor, NoEventMask);
+ x_stop_ignoring_errors (transfer->dpyinfo);
+ unblock_input ();
+ }
- block_input ();
- /* The protected block contains wait_for_property_change, which can
- run random lisp code (process handlers) or signal. Therefore, we
- put the x_uncatch_errors call in an unwind. */
- record_unwind_protect_void (x_catch_errors_unwind);
- x_catch_errors (display);
+ cancel_atimer (transfer->timeout);
+ xfree (transfer);
+}
- /* Loop over converted selections, storing them in the requested
- properties. If data is large, only store the first N bytes
- (section 2.7.2 of ICCCM). Note that we store the data for a
- MULTIPLE request in the opposite order; the ICCM says only that
- the conversion itself must be done in the same order. */
- for (cs = frame->converted_selections; cs; cs = cs->next)
+static void
+x_selection_transfer_timeout (struct atimer *atimer)
+{
+ struct transfer *transfer;
+
+ transfer = atimer->client_data;
+ x_cancel_selection_transfer (transfer);
+}
+
+/* Start a selection transfer to write the specified selection data to
+ its requestor. If the data is small enough, write it to the
+ requestor window and return. Otherwise, start INCR transfer and
+ begin listening for PropertyNotify events on the requestor. */
+
+static void
+x_start_selection_transfer (struct x_display_info *dpyinfo, Window requestor,
+ struct selection_data *data)
+{
+ struct transfer *transfer;
+ intmax_t timeout;
+ intmax_t secs;
+ int nsecs;
+ size_t remaining, max_size;
+ unsigned char *xdata;
+ unsigned long data_size;
+
+ timeout = max (0, x_selection_timeout);
+ secs = timeout / 1000;
+ nsecs = (timeout % 1000) * 1000000;
+
+ transfer = xzalloc (sizeof *transfer);
+ transfer->requestor = requestor;
+ transfer->dpyinfo = dpyinfo;
+
+ transfer->timeout = start_atimer (ATIMER_RELATIVE,
+ make_timespec (secs, nsecs),
+ x_selection_transfer_timeout,
+ transfer);
+
+ /* Note that DATA is copied into transfer. DATA->data is then set
+ to NULL, giving the struct transfer ownership over the selection
+ data. */
+
+ transfer->data = *data;
+ data->data = NULL;
+
+ /* Finally, transfer now holds a reference to data->string, if it is
+ present. GC cannot be allowed to happen until this function
+ returns. */
+ data->string = Qnil;
+
+ /* Now, try to write the selection data. If it is bigger than
+ selection_quantum (dpyinfo->display), start incremental transfer
+ and link the transfer onto the list of pending selections.
+ Otherwise, write the transfer at once. */
+
+ max_size = selection_quantum (dpyinfo->display);
+
+ TRACE3 (" x_start_selection_transfer: transferring to 0x%lx. "
+ "transfer consists of %zu bytes, quantum being %zu",
+ requestor, selection_data_size (&transfer->data),
+ max_size);
+
+ if (selection_data_size (&transfer->data) > max_size)
{
- if (cs->property == None)
- continue;
+ /* Begin incremental selection transfer. First, calculate how
+ many elements it is ok to write for every ChangeProperty
+ request. */
+ transfer->items_per_request
+ = (max_size / x_size_for_format (transfer->data.format));
+ TRACE1 (" x_start_selection_transfer: starting incremental"
+ " selection transfer, with %zu items per request",
+ transfer->items_per_request);
+
+ /* Next, link the transfer onto the list of pending selection
+ transfers. */
+ transfer->next = outstanding_transfers.next;
+ transfer->last = &outstanding_transfers;
+ transfer->next->last = transfer;
+ transfer->last->next = transfer;
+
+ /* Find a valid (non-zero) serial for the selection transfer.
+ Any asynchronously trapped errors will then cause the
+ selection transfer to be cancelled. */
+ transfer->serial = (++selection_serial
+ ? selection_serial
+ : ++selection_serial);
+
+ /* Now, write the INCR property to begin incremental selection
+ transfer. offset is currently 0. */
+
+ data_size = selection_data_size (&transfer->data);
+
+ /* Set SELECTED_EVENTS before the actual XSelectInput
+ request. */
+ transfer->flags |= SELECTED_EVENTS;
+
+ x_ignore_errors_for_next_request (dpyinfo, transfer->serial);
+ XChangeProperty (dpyinfo->display, requestor,
+ transfer->data.property,
+ dpyinfo->Xatom_INCR, 32, PropModeReplace,
+ (unsigned char *) &data_size, 1);
+
+ /* This assumes that Emacs is not selecting for any other events
+ from the requestor!
+
+ If the holder of some manager selections (i.e. the settings
+ manager) asks Emacs for selection data, things will subtly go
+ wrong. */
+ XSelectInput (dpyinfo->display, requestor, PropertyChangeMask);
+ x_stop_ignoring_errors (dpyinfo);
+ }
+ else
+ {
+ /* Write the property data now. */
+ xdata = selection_data_for_offset (&transfer->data,
+ 0, &remaining);
+ eassert (remaining <= INT_MAX);
+
+ TRACE1 (" x_start_selection_transfer: writing"
+ " %zu elements directly to requestor window",
+ remaining);
+
+ x_ignore_errors_for_next_request (dpyinfo, 0);
+ XChangeProperty (dpyinfo->display, requestor,
+ transfer->data.property,
+ transfer->data.type,
+ transfer->data.format,
+ PropModeReplace, xdata, remaining);
+ x_stop_ignoring_errors (dpyinfo);
+
+ /* Next, get rid of the transfer. */
+ x_cancel_selection_transfer (transfer);
+ }
+}
- bytes_remaining = cs->size;
- bytes_remaining *= cs->format >> 3;
- if (bytes_remaining <= max_bytes)
- {
- /* Send all the data at once, with minimal handshaking. */
- TRACE1 ("Sending all %"pD"d bytes", bytes_remaining);
- XChangeProperty (display, window, cs->property,
- cs->type, cs->format, PropModeReplace,
- cs->data, cs->size);
- }
- else
- {
- /* Send an INCR tag to initiate incremental transfer. */
- long value[1];
-
- TRACE2 ("Start sending %"pD"d bytes incrementally (%s)",
- bytes_remaining, XGetAtomName (display, cs->property));
- cs->wait_object
- = expect_property_change (display, window, cs->property,
- PropertyDelete);
-
- /* XChangeProperty expects an array of long even if long is
- more than 32 bits. */
- value[0] = min (bytes_remaining, X_LONG_MAX);
- XChangeProperty (display, window, cs->property,
- dpyinfo->Xatom_INCR, 32, PropModeReplace,
- (unsigned char *) value, 1);
- XSelectInput (display, window, PropertyChangeMask);
- }
+/* Write out the next piece of data that is part of the specified
+ selection transfer. If no more data remains to be written, write
+ the EOF property and complete the transfer. */
+
+static void
+x_continue_selection_transfer (struct transfer *transfer)
+{
+ size_t remaining;
+ unsigned char *xdata;
+
+ xdata = selection_data_for_offset (&transfer->data,
+ transfer->offset,
+ &remaining);
+ remaining = min (remaining, transfer->items_per_request);
+
+ if (!remaining)
+ {
+ /* The transfer is finished. Write zero-length property data to
+ signal EOF and remove the transfer. */
+ TRACE0 (" x_continue_selection_transfer: writing 0 items to"
+ " indicate EOF");
+ x_ignore_errors_for_next_request (transfer->dpyinfo, 0);
+ XChangeProperty (transfer->dpyinfo->display,
+ transfer->requestor,
+ transfer->data.property,
+ transfer->data.type,
+ transfer->data.format,
+ PropModeReplace,
+ NULL, 0);
+ x_stop_ignoring_errors (transfer->dpyinfo);
+ TRACE0 (" x_continue_selection_transfer: done sending incrementally");
+
+ x_cancel_selection_transfer (transfer);
+ }
+ else
+ {
+ TRACE2 (" x_continue_selection_transfer: writing %zu items"
+ "; current offset is %zu", remaining, transfer->offset);
+ eassert (remaining <= INT_MAX);
+
+ transfer->offset += remaining;
+
+ x_ignore_errors_for_next_request (transfer->dpyinfo,
+ transfer->serial);
+ XChangeProperty (transfer->dpyinfo->display,
+ transfer->requestor,
+ transfer->data.property,
+ transfer->data.type,
+ transfer->data.format,
+ PropModeReplace, xdata,
+ remaining);
+ x_stop_ignoring_errors (transfer->dpyinfo);
}
+}
- /* Now issue the SelectionNotify event. */
- XSendEvent (display, window, False, 0, &reply_base);
- XFlush (display);
+void
+x_remove_selection_transfers (struct x_display_info *dpyinfo)
+{
+ struct transfer *next, *last;
-#ifdef TRACE_SELECTION
- {
- char *sel = XGetAtomName (display, reply->selection);
- char *tgt = XGetAtomName (display, reply->target);
- TRACE3 ("Sent SelectionNotify: %s, target %s (%d)",
- sel, tgt, ++x_reply_selection_request_cnt);
- if (sel) XFree (sel);
- if (tgt) XFree (tgt);
- }
-#endif /* TRACE_SELECTION */
+ next = outstanding_transfers.next;
+ while (next != &outstanding_transfers)
+ {
+ last = next;
+ next = next->next;
- /* Finish sending the rest of each of the INCR values. This should
- be improved; there's a chance of deadlock if more than one
- subtarget in a MULTIPLE selection requires an INCR transfer, and
- the requestor and Emacs loop waiting on different transfers. */
- for (cs = frame->converted_selections; cs; cs = cs->next)
- if (cs->wait_object)
- {
- int format_bytes = cs->format / 8;
- bool had_errors_p = x_had_errors_p (display);
+ if (last->dpyinfo == dpyinfo)
+ x_cancel_selection_transfer (last);
+ }
+}
- /* Must set this inside block_input (). unblock_input may read
- events and setting property_change_reply in
- wait_for_property_change is then too late. */
- set_property_change_object (cs->wait_object);
- unblock_input ();
+/* Handle an X error generated trying to write to a window. SERIAL
+ identifies the outstanding incremental selection transfer, which is
+ immediately removed. */
- bytes_remaining = cs->size;
- bytes_remaining *= format_bytes;
+void
+x_handle_selection_error (unsigned int serial, XErrorEvent *error)
+{
+ struct transfer *next, *last;
- /* Wait for the requestor to ack by deleting the property.
- This can run Lisp code (process handlers) or signal. */
- if (! had_errors_p)
- {
- TRACE1 ("Waiting for ACK (deletion of %s)",
- XGetAtomName (display, cs->property));
- wait_for_property_change (cs->wait_object);
- }
- else
- unexpect_property_change (cs->wait_object);
+ if (error->error_code != BadWindow)
+ /* The error was not caused by the window going away. As such,
+ Emacs must deselect for PropertyChangeMask from the requestor
+ window, which isn't safe here. Return and wait for the timeout
+ to run. */
+ return;
- while (bytes_remaining)
- {
- int i = ((bytes_remaining < max_bytes)
- ? bytes_remaining
- : max_bytes) / format_bytes;
- block_input ();
-
- cs->wait_object
- = expect_property_change (display, window, cs->property,
- PropertyDelete);
-
- TRACE1 ("Sending increment of %d elements", i);
- TRACE1 ("Set %s to increment data",
- XGetAtomName (display, cs->property));
-
- /* Append the next chunk of data to the property. */
- XChangeProperty (display, window, cs->property,
- cs->type, cs->format, PropModeAppend,
- cs->data, i);
- bytes_remaining -= i * format_bytes;
- cs->data += i * ((cs->format == 32) ? sizeof (long)
- : format_bytes);
- XFlush (display);
- had_errors_p = x_had_errors_p (display);
- /* See comment above about property_change_reply. */
- set_property_change_object (cs->wait_object);
- unblock_input ();
-
- if (had_errors_p) break;
-
- /* Wait for the requestor to ack this chunk by deleting
- the property. This can run Lisp code or signal. */
- TRACE1 ("Waiting for increment ACK (deletion of %s)",
- XGetAtomName (display, cs->property));
- wait_for_property_change (cs->wait_object);
- }
+ next = outstanding_transfers.next;
+ while (next != &outstanding_transfers)
+ {
+ last = next;
+ next = next->next;
- /* Now write a zero-length chunk to the property to tell the
- requestor that we're done. */
- block_input ();
- if (! waiting_for_other_props_on_window (display, window))
- XSelectInput (display, window, 0);
-
- TRACE1 ("Set %s to a 0-length chunk to indicate EOF",
- XGetAtomName (display, cs->property));
- XChangeProperty (display, window, cs->property,
- cs->type, cs->format, PropModeReplace,
- cs->data, 0);
- TRACE0 ("Done sending incrementally");
- }
+ if (last->serial == serial)
+ {
+ /* Clear SELECTED_EVENTS, so x_cancel_selection_transfer
+ will not make X requests. That is unsafe inside an error
+ handler, and unnecessary because the window has already
+ gone. */
+ last->flags &= ~SELECTED_EVENTS;
+ x_cancel_selection_transfer (last);
+ }
+ }
+}
- /* rms, 2003-01-03: I think I have fixed this bug. */
- /* The window we're communicating with may have been deleted
- in the meantime (that's a real situation from a bug report).
- In this case, there may be events in the event queue still
- referring to the deleted window, and we'll get a BadWindow error
- in XTread_socket when processing the events. I don't have
- an idea how to fix that. gerd, 2001-01-98. */
- /* 2004-09-10: XSync and UNBLOCK so that possible protocol errors are
- delivered before uncatch errors. */
- XSync (display, False);
- unblock_input ();
+/* Send the reply to a selection request event EVENT. */
+
+static void
+x_reply_selection_request (struct selection_input_event *event,
+ struct x_display_info *dpyinfo)
+{
+ XEvent message;
+ struct selection_data *cs;
+ struct x_selection_request *frame;
- /* GTK queues events in addition to the queue in Xlib. So we
- UNBLOCK to enter the event loop and get possible errors delivered,
- and then BLOCK again because x_uncatch_errors requires it. */
block_input ();
- /* This calls x_uncatch_errors. */
- unbind_to (count, Qnil);
+ frame = selection_request_stack;
+
+ message.xselection.type = SelectionNotify;
+ message.xselection.display = dpyinfo->display;
+ message.xselection.requestor = SELECTION_EVENT_REQUESTOR (event);
+ message.xselection.selection = SELECTION_EVENT_SELECTION (event);
+ message.xselection.time = SELECTION_EVENT_TIME (event);
+ message.xselection.target = SELECTION_EVENT_TARGET (event);
+ message.xselection.property = SELECTION_EVENT_PROPERTY (event);
+
+ if (message.xselection.property == None)
+ message.xselection.property = message.xselection.target;
+
+ /* For each of the converted selections, start a write transfer from
+ Emacs to the requestor. */
+ for (cs = frame->converted_selections; cs; cs = cs->next)
+ x_start_selection_transfer (dpyinfo,
+ SELECTION_EVENT_REQUESTOR (event),
+ cs);
+
+
+ /* Send the SelectionNotify event to the requestor, telling it that
+ the property data has arrived. */
+ x_ignore_errors_for_next_request (dpyinfo, 0);
+ XSendEvent (dpyinfo->display, SELECTION_EVENT_REQUESTOR (event),
+ False, NoEventMask, &message);
+ x_stop_ignoring_errors (dpyinfo);
unblock_input ();
}
-
-/* Handle a SelectionRequest event EVENT.
- This is called from keyboard.c when such an event is found in the queue. */
+
+/* Handle a SelectionRequest event EVENT. This is called from
+ keyboard.c when such an event is found in the queue. */
static void
x_handle_selection_request (struct selection_input_event *event)
@@ -892,7 +1182,9 @@ x_handle_selection_request (struct selection_input_event *event)
ptrdiff_t j, nselections;
struct selection_data cs;
- if (property == None) goto DONE;
+ if (property == None)
+ goto DONE;
+
multprop
= x_get_window_property_as_lisp_data (dpyinfo, requestor, property,
QMULTIPLE, selection, true);
@@ -904,23 +1196,24 @@ x_handle_selection_request (struct selection_input_event *event)
/* Perform conversions. This can signal. */
for (j = 0; j < nselections; j++)
{
- Lisp_Object subtarget = AREF (multprop, 2*j);
+ Lisp_Object subtarget = AREF (multprop, 2 * j);
Atom subproperty = symbol_to_x_atom (dpyinfo,
AREF (multprop, 2*j+1));
bool subsuccess = false;
if (subproperty != None)
subsuccess = x_convert_selection (selection_symbol, subtarget,
- subproperty, true, dpyinfo,
+ subproperty, dpyinfo,
use_alternate);
if (!subsuccess)
- ASET (multprop, 2*j+1, Qnil);
+ ASET (multprop, 2 * j + 1, Qnil);
}
+
/* Save conversion results */
lisp_data_to_selection_data (dpyinfo, multprop, &cs);
- /* If cs.type is ATOM, change it to ATOM_PAIR. This is because
- the parameters to a MULTIPLE are ATOM_PAIRs. */
+ /* If cs.type is ATOM, change it to ATOM_PAIR. This is
+ because the parameters to a MULTIPLE are ATOM_PAIRs. */
if (cs.type == XA_ATOM)
cs.type = dpyinfo->Xatom_ATOM_PAIR;
@@ -929,27 +1222,29 @@ x_handle_selection_request (struct selection_input_event *event)
cs.type, cs.format, PropModeReplace,
cs.data, cs.size);
success = true;
+
+ xfree (cs.data);
}
else
{
if (property == None)
property = SELECTION_EVENT_TARGET (event);
+
success = x_convert_selection (selection_symbol,
target_symbol, property,
- false, dpyinfo,
- use_alternate);
+ dpyinfo, use_alternate);
}
DONE:
- if (pushed)
- selection_request_stack->converted = true;
-
if (success)
x_reply_selection_request (event, dpyinfo);
else
x_decline_selection_request (event);
+ if (pushed)
+ selection_request_stack->converted = true;
+
/* Run the `x-sent-selection-functions' abnormal hook. */
if (!NILP (Vx_sent_selection_functions)
&& !BASE_EQ (Vx_sent_selection_functions, Qunbound))
@@ -960,19 +1255,18 @@ x_handle_selection_request (struct selection_input_event *event)
REALLY_DONE:
unbind_to (count, Qnil);
+ return;
}
/* Perform the requested selection conversion, and write the data to
the converted_selections linked list, where it can be accessed by
- x_reply_selection_request. If FOR_MULTIPLE, write out
- the data even if conversion fails, using conversion_fail_tag.
+ x_reply_selection_request.
Return true if successful. */
static bool
-x_convert_selection (Lisp_Object selection_symbol,
- Lisp_Object target_symbol, Atom property,
- bool for_multiple, struct x_display_info *dpyinfo,
+x_convert_selection (Lisp_Object selection_symbol, Lisp_Object target_symbol,
+ Atom property, struct x_display_info *dpyinfo,
bool use_alternate)
{
Lisp_Object lisp_selection;
@@ -988,33 +1282,16 @@ x_convert_selection (Lisp_Object selection_symbol,
/* A nil return value means we can't perform the conversion. */
if (NILP (lisp_selection)
|| (CONSP (lisp_selection) && NILP (XCDR (lisp_selection))))
- {
- if (for_multiple)
- {
- cs = xmalloc (sizeof *cs);
- cs->data = ((unsigned char *)
- &selection_request_stack->conversion_fail_tag);
- cs->size = 1;
- cs->format = 32;
- cs->type = XA_ATOM;
- cs->nofree = true;
- cs->property = property;
- cs->wait_object = NULL;
- cs->next = frame->converted_selections;
- frame->converted_selections = cs;
- }
-
- return false;
- }
+ return false;
/* Otherwise, record the converted selection to binary. */
cs = xmalloc (sizeof *cs);
cs->data = NULL;
- cs->nofree = true;
+ cs->string = Qnil;
cs->property = property;
- cs->wait_object = NULL;
cs->next = frame->converted_selections;
frame->converted_selections = cs;
+
lisp_data_to_selection_data (dpyinfo, lisp_selection, cs);
return true;
}
@@ -1274,6 +1551,10 @@ void
x_handle_property_notify (const XPropertyEvent *event)
{
struct prop_location *rest;
+ struct transfer *next;
+#ifdef TRACE_SELECTION
+ char *name;
+#endif
for (rest = property_change_wait_list; rest; rest = rest->next)
{
@@ -1283,9 +1564,16 @@ x_handle_property_notify (const XPropertyEvent *event)
&& rest->display == event->display
&& rest->desired_state == event->state)
{
+#ifdef TRACE_SELECTION
+ name = XGetAtomName (event->display, event->atom);
+
TRACE2 ("Expected %s of property %s",
(event->state == PropertyDelete ? "deletion" : "change"),
- XGetAtomName (event->display, event->atom));
+ name ? name : "unknown");
+
+ if (name)
+ XFree (name);
+#endif
rest->arrived = true;
@@ -1297,6 +1585,26 @@ x_handle_property_notify (const XPropertyEvent *event)
return;
}
}
+
+ /* Look for a property change for an outstanding selection
+ transfer. */
+ next = outstanding_transfers.next;
+ while (next != &outstanding_transfers)
+ {
+ if (next->dpyinfo->display == event->display
+ && next->requestor == event->window
+ && next->data.property == event->atom
+ && event->state == PropertyDelete)
+ {
+ TRACE1 ("Expected PropertyDelete event arrived from the"
+ " requestor window %lx", next->requestor);
+
+ x_continue_selection_transfer (next);
+ return;
+ }
+
+ next = next->next;
+ }
}
static void
@@ -1450,10 +1758,10 @@ x_get_window_property (Display *display, Window window, Atom property,
/* Maximum value for TOTAL_SIZE. It cannot exceed PTRDIFF_MAX - 1
and SIZE_MAX - 1, for an extra byte at the end. And it cannot
exceed LONG_MAX * X_LONG_SIZE, for XGetWindowProperty. */
- ptrdiff_t total_size_max =
- ((min (PTRDIFF_MAX, SIZE_MAX) - 1) / x_long_size < LONG_MAX
- ? min (PTRDIFF_MAX, SIZE_MAX) - 1
- : LONG_MAX * x_long_size);
+ ptrdiff_t total_size_max
+ = ((min (PTRDIFF_MAX, SIZE_MAX) - 1) / x_long_size < LONG_MAX
+ ? min (PTRDIFF_MAX, SIZE_MAX) - 1
+ : LONG_MAX * x_long_size);
block_input ();
@@ -1946,10 +2254,14 @@ static void
lisp_data_to_selection_data (struct x_display_info *dpyinfo,
Lisp_Object obj, struct selection_data *cs)
{
- Lisp_Object type = Qnil;
+ Lisp_Object type;
+ char **name_buffer;
+
+ USE_SAFE_ALLOCA;
+
+ type = Qnil;
eassert (cs != NULL);
- cs->nofree = false;
if (CONSP (obj) && SYMBOLP (XCAR (obj)))
{
@@ -1959,8 +2271,10 @@ lisp_data_to_selection_data (struct x_display_info *dpyinfo,
obj = XCAR (obj);
}
+ /* This is not the same as declining. */
+
if (EQ (obj, QNULL) || (EQ (type, QNULL)))
- { /* This is not the same as declining */
+ {
cs->format = 32;
cs->size = 0;
cs->data = NULL;
@@ -1971,12 +2285,14 @@ lisp_data_to_selection_data (struct x_display_info *dpyinfo,
if (SCHARS (obj) < SBYTES (obj))
/* OBJ is a multibyte string containing a non-ASCII char. */
signal_error ("Non-ASCII string must be encoded in advance", obj);
+
if (NILP (type))
type = QSTRING;
+
cs->format = 8;
- cs->size = SBYTES (obj);
- cs->data = SDATA (obj);
- cs->nofree = true;
+ cs->size = -1;
+ cs->data = NULL;
+ cs->string = obj;
}
else if (SYMBOLP (obj))
{
@@ -2048,8 +2364,19 @@ lisp_data_to_selection_data (struct x_display_info *dpyinfo,
x_atoms = data;
cs->format = 32;
cs->size = size;
- for (i = 0; i < size; i++)
- x_atoms[i] = symbol_to_x_atom (dpyinfo, AREF (obj, i));
+
+ if (size == 1)
+ x_atoms[0] = symbol_to_x_atom (dpyinfo, AREF (obj, i));
+ else
+ {
+ SAFE_NALLOCA (name_buffer, sizeof *x_atoms, size);
+
+ for (i = 0; i < size; i++)
+ name_buffer[i] = SSDATA (SYMBOL_NAME (AREF (obj, i)));
+
+ x_intern_atoms (dpyinfo, name_buffer, size,
+ x_atoms);
+ }
}
else
/* This vector is an INTEGER set, or something like it */
@@ -2091,6 +2418,8 @@ lisp_data_to_selection_data (struct x_display_info *dpyinfo,
signal_error (/* Qselection_error */ "Unrecognized selection data", obj);
cs->type = symbol_to_x_atom (dpyinfo, type);
+
+ SAFE_FREE ();
}
static Lisp_Object
@@ -2618,8 +2947,8 @@ x_check_property_data (Lisp_Object data)
XClientMessageEvent). */
void
-x_fill_property_data (Display *dpy, Lisp_Object data, void *ret,
- int nelements_max, int format)
+x_fill_property_data (struct x_display_info *dpyinfo, Lisp_Object data,
+ void *ret, int nelements_max, int format)
{
unsigned long val;
unsigned long *d32 = (unsigned long *) ret;
@@ -2654,7 +2983,7 @@ x_fill_property_data (Display *dpy, Lisp_Object data, void *ret,
else if (STRINGP (o))
{
block_input ();
- val = XInternAtom (dpy, SSDATA (o), False);
+ val = x_intern_cached_atom (dpyinfo, SSDATA (o), false);
unblock_input ();
}
else
@@ -2942,7 +3271,7 @@ x_send_client_event (Lisp_Object display, Lisp_Object dest, Lisp_Object from,
memset (event.xclient.data.l, 0, sizeof (event.xclient.data.l));
/* event.xclient.data can hold 20 chars, 10 shorts, or 5 longs. */
- x_fill_property_data (dpyinfo->display, values, event.xclient.data.b,
+ x_fill_property_data (dpyinfo, values, event.xclient.data.b,
5 * 32 / event.xclient.format,
event.xclient.format);
@@ -3002,10 +3331,11 @@ syms_of_xselect (void)
reading_selection_reply = Fcons (Qnil, Qnil);
staticpro (&reading_selection_reply);
-
staticpro (&property_change_reply);
- /* FIXME: Duplicate definition in nsselect.c. */
+ outstanding_transfers.next = &outstanding_transfers;
+ outstanding_transfers.last = &outstanding_transfers;
+
DEFVAR_LISP ("selection-converter-alist", Vselection_converter_alist,
doc: /* An alist associating X Windows selection-types with functions.
These functions are called to convert the selection, with three args:
@@ -3120,9 +3450,43 @@ Note that this does not affect setting or owning selections. */);
static void
syms_of_xselect_for_pdumper (void)
{
+ outstanding_transfers.next = &outstanding_transfers;
+ outstanding_transfers.last = &outstanding_transfers;
+
reading_selection_window = 0;
reading_which_selection = 0;
property_change_wait_list = 0;
prop_location_identifier = 0;
property_change_reply = Fcons (Qnil, Qnil);
}
+
+void
+mark_xselect (void)
+{
+ struct transfer *next;
+ struct x_selection_request *frame;
+ struct selection_data *cs;
+
+ /* Mark all the strings being used as selection data. A string that
+ is still reachable is always reachable via either the selection
+ request stack or the list of outstanding transfers. */
+
+ next = outstanding_transfers.next;
+
+ if (!next)
+ /* syms_of_xselect has not yet been called. */
+ return;
+
+ while (next != &outstanding_transfers)
+ {
+ mark_object (next->data.string);
+ next = next->next;
+ }
+
+ frame = selection_request_stack;
+ for (; frame; frame = frame->last)
+ {
+ for (cs = frame->converted_selections; cs; cs = cs->next)
+ mark_object (cs->string);
+ }
+}
diff --git a/src/xterm.c b/src/xterm.c
index e981a36fa9c..d621d94a2cf 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -26,6 +26,22 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
contains subroutines comprising the redisplay interface, setting up
scroll bars and widgets, and handling input.
+ X WINDOW SYSTEM
+
+ The X Window System is a windowing system for bitmap graphics
+ displays which originated at MIT in 1984. Version 11, which is
+ currently supported by Emacs, first appeared in September 1987.
+
+ X has a long history and has been developed by many different
+ organizations over the years; at present, it is being primarily
+ developed by the X.Org Foundation. It is the main window system
+ that Emacs is developed and tested against, and X version 10 was
+ the first window system that Emacs was ported to. As a consequence
+ of its age and wide availability, X contains many idiosyncrasies,
+ but that has not prevented it from becoming the dominant free
+ window system, and the platform of reference for all GUI code in
+ Emacs.
+
Some of what is explained below also applies to the other window
systems that Emacs supports, to varying degrees. YMMV.
@@ -555,7 +571,56 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
drop happening with the primary selection and synthetic button
events (see `x_dnd_do_unsupported_drop'). That function implements
the OffiX drag-and-drop protocol by default. See
- `x-dnd-handle-unsupported-drop' in `x-dnd.el' for more details. */
+ `x-dnd-handle-unsupported-drop' in `x-dnd.el' for more details.
+
+ DISPLAY ERROR HANDLING
+
+ While error handling under X was originally designed solely as a
+ mechanism for the X server to report fatal errors to clients, most
+ clients (including Emacs) have adopted a system of "error traps" to
+ handle or discard these errors as they arrive. Discarding errors is
+ usually necessary when Emacs performs an X request that might fail:
+ for example, sending a message to a window that may no longer exist,
+ or might not exist at all. Handling errors is then necessary when
+ the detailed error must be reported to another piece of code: for
+ example, as a Lisp error.
+
+ It is not acceptable for Emacs to crash when it is sent invalid data
+ by another client, or by Lisp. As a result, errors must be caught
+ around Xlib functions generating requests containing resource
+ identifiers that could potentially be invalid, such as window or
+ atom identifiers provided in a client message from another program,
+ or a child window ID obtained through XTranslateCoordinates that may
+ refer to a window that has been deleted in the meantime.
+
+ There are two sets of functions used to perform this "error
+ trapping". Which one should be used depends on what kind of
+ processing must be done on the error. The first consists of the
+ functions `x_ignore_errors_for_next_request' and
+ `x_stop_ignoring_errors', which ignore errors generated by requests
+ made in between a call to the first function and a corresponding
+ call to the second. They should be used for simple asynchronous
+ requests that do not require a reply from the X server: using them
+ instead of the second set improves performance, as they simply
+ record a range of request serials to ignore errors from, instead of
+ synchronizing with the X server to handle errors.
+
+ The second set consists of the following functions:
+
+ - x_catch_errors_with_handler
+ - x_catch_errors
+ - x_uncatch_errors_after_check
+ - x_uncatch_errors
+ - x_check_errors
+ - x_had_errors_p
+ - x_clear_errors
+
+ Callers using this set should consult the comment(s) on top of the
+ aformentioned functions. They should not be used when the requests
+ being made do not require roundtrips to the X server, and obtaining
+ the details of any error generated is unecessary, as
+ `x_uncatch_errors' will always synchronize with the X server, which
+ is a potentially slow operation. */
#include <config.h>
#include <stdlib.h>
@@ -571,10 +636,13 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include "xterm.h"
#include <X11/cursorfont.h>
+#ifdef HAVE_X_I18N
+#include "textconv.h"
+#endif
+
#ifdef USE_XCB
#include <xcb/xproto.h>
#include <xcb/xcb.h>
-#include <xcb/xcb_aux.h>
#endif
/* If we have Xfixes extension, use it for pointer blanking. */
@@ -1052,6 +1120,20 @@ static const struct x_atom_ref x_atom_refs[] =
/* Old OffiX (a.k.a. old KDE) drop protocol support. */
ATOM_REFS_INIT ("DndProtocol", Xatom_DndProtocol)
ATOM_REFS_INIT ("_DND_PROTOCOL", Xatom_DND_PROTOCOL)
+ /* Here are some atoms that are not actually used from C, just
+ defined to make replying to selection requests fast. */
+ ATOM_REFS_INIT ("text/plain;charset=utf-8", Xatom_text_plain_charset_utf_8)
+ ATOM_REFS_INIT ("LENGTH", Xatom_LENGTH)
+ ATOM_REFS_INIT ("FILE_NAME", Xatom_FILE_NAME)
+ ATOM_REFS_INIT ("CHARACTER_POSITION", Xatom_CHARACTER_POSITION)
+ ATOM_REFS_INIT ("LINE_NUMBER", Xatom_LINE_NUMBER)
+ ATOM_REFS_INIT ("COLUMN_NUMBER", Xatom_COLUMN_NUMBER)
+ ATOM_REFS_INIT ("OWNER_OS", Xatom_OWNER_OS)
+ ATOM_REFS_INIT ("HOST_NAME", Xatom_HOST_NAME)
+ ATOM_REFS_INIT ("USER", Xatom_USER)
+ ATOM_REFS_INIT ("CLASS", Xatom_CLASS)
+ ATOM_REFS_INIT ("NAME", Xatom_NAME)
+ ATOM_REFS_INIT ("SAVE_TARGETS", Xatom_SAVE_TARGETS)
};
enum
@@ -2509,7 +2591,7 @@ xm_send_drop_message (struct x_display_info *dpyinfo, Window source,
*((uint32_t *) &msg.xclient.data.b[12]) = dmsg->index_atom;
*((uint32_t *) &msg.xclient.data.b[16]) = dmsg->source_window;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
}
@@ -2536,7 +2618,7 @@ xm_send_top_level_enter_message (struct x_display_info *dpyinfo, Window source,
msg.xclient.data.b[18] = 0;
msg.xclient.data.b[19] = 0;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
}
@@ -2567,7 +2649,7 @@ xm_send_drag_motion_message (struct x_display_info *dpyinfo, Window source,
msg.xclient.data.b[18] = 0;
msg.xclient.data.b[19] = 0;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
}
@@ -2626,7 +2708,7 @@ xm_send_top_level_leave_message (struct x_display_info *dpyinfo, Window source,
msg.xclient.data.b[18] = 0;
msg.xclient.data.b[19] = 0;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
}
@@ -2921,7 +3003,7 @@ x_dnd_free_toplevels (bool display_alive)
if (n_windows)
{
eassume (dpyinfo);
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
for (i = 0; i < n_windows; ++i)
{
@@ -3058,7 +3140,7 @@ x_dnd_compute_toplevels (struct x_display_info *dpyinfo)
0, 0);
get_property_cookies[i]
= xcb_get_property (dpyinfo->xcb_connection, 0, (xcb_window_t) toplevels[i],
- (xcb_atom_t) dpyinfo->Xatom_wm_state, XCB_ATOM_ANY,
+ (xcb_atom_t) dpyinfo->Xatom_wm_state, 0,
0, 2);
xm_property_cookies[i]
= xcb_get_property (dpyinfo->xcb_connection, 0, (xcb_window_t) toplevels[i],
@@ -3069,7 +3151,7 @@ x_dnd_compute_toplevels (struct x_display_info *dpyinfo)
= xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) toplevels[i],
(xcb_atom_t) dpyinfo->Xatom_net_frame_extents,
- XCB_ATOM_CARDINAL, 0, 4);
+ XA_CARDINAL, 0, 4);
get_geometry_cookies[i]
= xcb_get_geometry (dpyinfo->xcb_connection, (xcb_window_t) toplevels[i]);
@@ -3197,7 +3279,7 @@ x_dnd_compute_toplevels (struct x_display_info *dpyinfo)
{
if (xcb_get_property_value_length (extent_property_reply) == 16
&& extent_property_reply->format == 32
- && extent_property_reply->type == XCB_ATOM_CARDINAL)
+ && extent_property_reply->type == XA_CARDINAL)
{
fextents = xcb_get_property_value (extent_property_reply);
frame_extents[0] = fextents[0];
@@ -3291,7 +3373,7 @@ x_dnd_compute_toplevels (struct x_display_info *dpyinfo)
if (dpyinfo->xshape_supported_p)
{
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XShapeSelectInput (dpyinfo->display,
toplevels[i],
ShapeNotifyMask);
@@ -3456,7 +3538,7 @@ x_dnd_compute_toplevels (struct x_display_info *dpyinfo)
}
#endif
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSelectInput (dpyinfo->display, toplevels[i],
(attrs.your_event_mask
| StructureNotifyMask
@@ -3571,13 +3653,13 @@ x_dnd_get_proxy_proto (struct x_display_info *dpyinfo, Window wdesc,
xdnd_proxy_cookie = xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) wdesc,
(xcb_atom_t) dpyinfo->Xatom_XdndProxy,
- XCB_ATOM_WINDOW, 0, 1);
+ XA_WINDOW, 0, 1);
if (proto_out)
xdnd_proto_cookie = xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) wdesc,
(xcb_atom_t) dpyinfo->Xatom_XdndAware,
- XCB_ATOM_ATOM, 0, 1);
+ XA_ATOM, 0, 1);
if (proxy_out)
{
@@ -3589,7 +3671,7 @@ x_dnd_get_proxy_proto (struct x_display_info *dpyinfo, Window wdesc,
else
{
if (reply->format == 32
- && reply->type == XCB_ATOM_WINDOW
+ && reply->type == XA_WINDOW
&& (xcb_get_property_value_length (reply) >= 4))
*proxy_out = *(xcb_window_t *) xcb_get_property_value (reply);
@@ -3607,7 +3689,7 @@ x_dnd_get_proxy_proto (struct x_display_info *dpyinfo, Window wdesc,
else
{
if (reply->format == 32
- && reply->type == XCB_ATOM_ATOM
+ && reply->type == XA_ATOM
&& (xcb_get_property_value_length (reply) >= 4))
*proto_out = (int) *(xcb_atom_t *) xcb_get_property_value (reply);
@@ -3791,15 +3873,15 @@ x_dnd_get_wm_state_and_proto (struct x_display_info *dpyinfo,
wmstate_cookie = xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) window,
(xcb_atom_t) dpyinfo->Xatom_wm_state,
- XCB_ATOM_ANY, 0, 2);
+ 0, 0, 2);
xdnd_proto_cookie = xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) window,
(xcb_atom_t) dpyinfo->Xatom_XdndAware,
- XCB_ATOM_ATOM, 0, 1);
+ XA_ATOM, 0, 1);
xdnd_proxy_cookie = xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) window,
(xcb_atom_t) dpyinfo->Xatom_XdndProxy,
- XCB_ATOM_WINDOW, 0, 1);
+ XA_WINDOW, 0, 1);
xm_style_cookie = xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) window,
(xcb_atom_t) dpyinfo->Xatom_MOTIF_DRAG_RECEIVER_INFO,
@@ -3846,7 +3928,7 @@ x_dnd_get_wm_state_and_proto (struct x_display_info *dpyinfo,
else
{
if (reply->format == 32
- && reply->type == XCB_ATOM_WINDOW
+ && reply->type == XA_WINDOW
&& (xcb_get_property_value_length (reply) >= 4))
*proxy_out = *(xcb_window_t *) xcb_get_property_value (reply);
@@ -3962,6 +4044,12 @@ x_dnd_do_unsupported_drop (struct x_display_info *dpyinfo,
if (owner != FRAME_X_WINDOW (f))
return;
+ /* mouse-drag-and-drop-region will immediately deactivate the mark
+ after this is set. Make sure the primary selection is not
+ clobbered in that case by setting `deactivate-mark' to
+ Qdont_save. */
+ Vdeactivate_mark = Qdont_save;
+
event.xbutton.window = child;
event.xbutton.subwindow = None;
event.xbutton.x = dest_x;
@@ -3975,7 +4063,7 @@ x_dnd_do_unsupported_drop (struct x_display_info *dpyinfo,
event.xbutton.type = ButtonPress;
event.xbutton.time = before + 1;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, child,
True, ButtonPressMask, &event);
@@ -4487,7 +4575,7 @@ x_dnd_send_enter (struct frame *f, Window target, Window toplevel,
so we don't have to set it again. */
x_dnd_init_type_lists = true;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (FRAME_X_DISPLAY (f), target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
}
@@ -4559,7 +4647,7 @@ x_dnd_send_position (struct frame *f, Window target, Window toplevel,
return;
}
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (FRAME_X_DISPLAY (f), target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
@@ -4586,7 +4674,7 @@ x_dnd_send_leave (struct frame *f, Window target, Window toplevel)
x_dnd_waiting_for_status_window = None;
x_dnd_pending_send_position.type = 0;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (FRAME_X_DISPLAY (f), target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
}
@@ -4619,7 +4707,7 @@ x_dnd_send_drop (struct frame *f, Window target, Window toplevel,
if (supported >= 1)
msg.xclient.data.l[2] = timestamp;
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (FRAME_X_DISPLAY (f), target, False, NoEventMask, &msg);
x_stop_ignoring_errors (dpyinfo);
return true;
@@ -5666,7 +5754,8 @@ xi_device_from_id (struct x_display_info *dpyinfo, int deviceid)
static void
xi_link_touch_point (struct xi_device_t *device,
- int detail, double x, double y)
+ int detail, double x, double y,
+ struct frame *frame)
{
struct xi_touch_point_t *touchpoint;
@@ -5675,6 +5764,7 @@ xi_link_touch_point (struct xi_device_t *device,
touchpoint->x = x;
touchpoint->y = y;
touchpoint->number = detail;
+ touchpoint->frame = frame;
device->touchpoints = touchpoint;
}
@@ -5703,6 +5793,36 @@ xi_unlink_touch_point (int detail,
return false;
}
+/* Unlink all touch points associated with the frame F.
+ This is done upon unmapping or destroying F's window, because
+ touch point delivery after that point is undefined. */
+
+static void
+xi_unlink_touch_points (struct frame *f)
+{
+ struct xi_device_t *device;
+ struct xi_touch_point_t **next, *last;
+ int i;
+
+ for (i = 0; i < FRAME_DISPLAY_INFO (f)->num_devices; ++i)
+ {
+ device = &FRAME_DISPLAY_INFO (f)->devices[i];
+
+ /* Now unlink all touch points on DEVICE matching F. */
+
+ for (next = &device->touchpoints; (last = *next);)
+ {
+ if (last->frame == f)
+ {
+ *next = last->next;
+ xfree (last);
+ }
+ else
+ next = &last->next;
+ }
+ }
+}
+
static struct xi_touch_point_t *
xi_find_touch_point (struct xi_device_t *device, int detail)
{
@@ -6733,7 +6853,7 @@ x_set_frame_alpha (struct frame *f)
Do this unconditionally as this function is called on reparent when
alpha has not changed on the frame. */
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
if (!FRAME_PARENT_FRAME (f))
{
@@ -6909,6 +7029,7 @@ static void
x_sync_wait_for_frame_drawn_event (struct frame *f)
{
XEvent event;
+ struct x_display_info *dpyinfo;
if (!FRAME_X_WAITING_FOR_DRAW (f)
/* The compositing manager can't draw a frame if it is
@@ -6916,6 +7037,8 @@ x_sync_wait_for_frame_drawn_event (struct frame *f)
|| !FRAME_VISIBLE_P (f))
return;
+ dpyinfo = FRAME_DISPLAY_INFO (f);
+
/* Wait for the frame drawn message to arrive. */
if (x_if_event (FRAME_X_DISPLAY (f), &event,
x_sync_is_frame_drawn_event, (XPointer) f,
@@ -6931,6 +7054,11 @@ x_sync_wait_for_frame_drawn_event (struct frame *f)
"been disabled\n");
FRAME_X_OUTPUT (f)->use_vsync_p = false;
+ /* Remove the compositor bypass property from the outer
+ window. */
+ XDeleteProperty (dpyinfo->display, FRAME_OUTER_WINDOW (f),
+ dpyinfo->Xatom_net_wm_bypass_compositor);
+
/* Also change the frame parameter to reflect the new
state. */
store_frame_param (f, Quse_frame_synchronization, Qnil);
@@ -6944,7 +7072,7 @@ x_sync_wait_for_frame_drawn_event (struct frame *f)
}
}
else
- x_sync_note_frame_times (FRAME_DISPLAY_INFO (f), f, &event);
+ x_sync_note_frame_times (dpyinfo, f, &event);
FRAME_X_WAITING_FOR_DRAW (f) = false;
}
@@ -7557,6 +7685,46 @@ x_after_update_window_line (struct window *w, struct glyph_row *desired_row)
#endif
}
+/* Generate a premultiplied pixel value for COLOR with ALPHA applied
+ on the given display. COLOR will be modified. The display must
+ use a visual that supports an alpha channel.
+
+ This is possibly dead code on builds which do not support
+ XRender. */
+
+#ifndef USE_CAIRO
+
+static unsigned long
+x_premultiply_pixel (struct x_display_info *dpyinfo,
+ XColor *color, double alpha)
+{
+ unsigned long pixel;
+
+ eassert (dpyinfo->alpha_bits);
+
+ /* Multiply the RGB channels. */
+ color->red *= alpha;
+ color->green *= alpha;
+ color->blue *= alpha;
+
+ /* First, allocate a fully opaque pixel. */
+ pixel = x_make_truecolor_pixel (dpyinfo, color->red,
+ color->green,
+ color->blue);
+
+ /* Next, erase the alpha component. */
+ pixel &= ~dpyinfo->alpha_mask;
+
+ /* And add an alpha channel. */
+ pixel |= (((unsigned long) (alpha * 65535)
+ >> (16 - dpyinfo->alpha_bits))
+ << dpyinfo->alpha_offset);
+
+ return pixel;
+}
+
+#endif
+
static void
x_draw_fringe_bitmap (struct window *w, struct glyph_row *row,
struct draw_fringe_bitmap_params *p)
@@ -7646,18 +7814,15 @@ x_draw_fringe_bitmap (struct window *w, struct glyph_row *row,
if (FRAME_DISPLAY_INFO (f)->alpha_bits
&& f->alpha_background < 1.0)
{
+ /* Extend the background color with an alpha channel
+ according to f->alpha_background. */
bg.pixel = background;
x_query_colors (f, &bg, 1);
- bg.red *= f->alpha_background;
- bg.green *= f->alpha_background;
- bg.blue *= f->alpha_background;
- background = x_make_truecolor_pixel (FRAME_DISPLAY_INFO (f),
- bg.red, bg.green, bg.blue);
- background &= ~FRAME_DISPLAY_INFO (f)->alpha_mask;
- background |= (((unsigned long) (f->alpha_background * 0xffff)
- >> (16 - FRAME_DISPLAY_INFO (f)->alpha_bits))
- << FRAME_DISPLAY_INFO (f)->alpha_offset);
+ background
+ = x_premultiply_pixel (FRAME_DISPLAY_INFO (f),
+ &bg,
+ f->alpha_background);
}
/* Draw the bitmap. I believe these small pixmaps can be cached
@@ -8806,7 +8971,11 @@ x_color_cells (Display *dpy, int *ncells)
/* On frame F, translate pixel colors to RGB values for the NCOLORS
- colors in COLORS. Use cached information, if available. */
+ colors in COLORS. Use cached information, if available.
+
+ Pixel values are in unsigned normalized format, meaning that
+ extending missing bits is done straightforwardly without any
+ complex colorspace conversions. */
void
x_query_colors (struct frame *f, XColor *colors, int ncolors)
@@ -8854,6 +9023,7 @@ x_query_colors (struct frame *f, XColor *colors, int ncolors)
colors[i].green = (g * gmult) >> 16;
colors[i].blue = (b * bmult) >> 16;
}
+
return;
}
@@ -8896,16 +9066,10 @@ x_query_frame_background_color (struct frame *f, XColor *bgcolor)
{
bg.pixel = background;
x_query_colors (f, &bg, 1);
- bg.red *= f->alpha_background;
- bg.green *= f->alpha_background;
- bg.blue *= f->alpha_background;
- background = x_make_truecolor_pixel (FRAME_DISPLAY_INFO (f),
- bg.red, bg.green, bg.blue);
- background &= ~FRAME_DISPLAY_INFO (f)->alpha_mask;
- background |= (((unsigned long) (f->alpha_background * 0xffff)
- >> (16 - FRAME_DISPLAY_INFO (f)->alpha_bits))
- << FRAME_DISPLAY_INFO (f)->alpha_offset);
+ background
+ = x_premultiply_pixel (FRAME_DISPLAY_INFO (f),
+ &bg, f->alpha_background);
}
#endif
}
@@ -10995,6 +11159,31 @@ x_clear_frame (struct frame *f)
unblock_input ();
}
+/* Send a message to frame F telling the event loop to track whether
+ or not an hourglass is being displayed. This is required to ignore
+ the right events when the hourglass is mapped without callig XSync
+ after displaying or hiding the hourglass. */
+
+static void
+x_send_hourglass_message (struct frame *f, bool hourglass_enabled)
+{
+ struct x_display_info *dpyinfo;
+ XEvent msg;
+
+ dpyinfo = FRAME_DISPLAY_INFO (f);
+ memset (&msg, 0, sizeof msg);
+
+ msg.xclient.type = ClientMessage;
+ msg.xclient.message_type
+ = dpyinfo->Xatom_EMACS_TMP;
+ msg.xclient.format = 8;
+ msg.xclient.window = FRAME_X_WINDOW (f);
+ msg.xclient.data.b[0] = hourglass_enabled ? 1 : 0;
+
+ XSendEvent (dpyinfo->display, FRAME_X_WINDOW (f),
+ False, NoEventMask, &msg);
+}
+
/* RIF: Show hourglass cursor on frame F. */
static void
@@ -11015,14 +11204,14 @@ x_show_hourglass (struct frame *f)
if (popup_activated ())
return;
+ x_send_hourglass_message (f, true);
+
#ifdef USE_X_TOOLKIT
if (x->widget)
#else
if (FRAME_OUTER_WINDOW (f))
#endif
{
- x->hourglass_p = true;
-
if (!x->hourglass_window)
{
#ifndef USE_XCB
@@ -11089,15 +11278,11 @@ x_hide_hourglass (struct frame *f)
{
#ifndef USE_XCB
XUnmapWindow (FRAME_X_DISPLAY (f), x->hourglass_window);
- /* Sync here because XTread_socket looks at the
- hourglass_p flag that is reset to zero below. */
- XSync (FRAME_X_DISPLAY (f), False);
#else
xcb_unmap_window (FRAME_DISPLAY_INFO (f)->xcb_connection,
(xcb_window_t) x->hourglass_window);
- xcb_aux_sync (FRAME_DISPLAY_INFO (f)->xcb_connection);
#endif
- x->hourglass_p = false;
+ x_send_hourglass_message (f, false);
}
}
@@ -11221,21 +11406,32 @@ XTflash (struct frame *f)
static void
XTring_bell (struct frame *f)
{
- if (FRAME_X_DISPLAY (f))
+ struct x_display_info *dpyinfo;
+
+ if (!FRAME_X_DISPLAY (f))
+ return;
+
+ dpyinfo = FRAME_DISPLAY_INFO (f);
+
+ if (visible_bell)
+ XTflash (f);
+ else
{
- if (visible_bell)
- XTflash (f);
- else
- {
- block_input ();
+ /* When Emacs is untrusted, Bell requests sometimes generate
+ Access errors. This is not in the security extension
+ specification but seems to be a bug in the X consortium XKB
+ implementation. */
+
+ block_input ();
+ x_ignore_errors_for_next_request (dpyinfo, 0);
#ifdef HAVE_XKB
- XkbBell (FRAME_X_DISPLAY (f), None, 0, None);
+ XkbBell (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), 0, None);
#else
- XBell (FRAME_X_DISPLAY (f), 0);
+ XBell (FRAME_X_DISPLAY (f), 0);
#endif
- XFlush (FRAME_X_DISPLAY (f));
- unblock_input ();
- }
+ XFlush (FRAME_X_DISPLAY (f));
+ x_stop_ignoring_errors (dpyinfo);
+ unblock_input ();
}
}
@@ -11481,7 +11677,7 @@ x_frame_highlight (struct frame *f)
the window-manager in use, tho something more is at play since I've been
using that same window-manager binary for ever. Let's not crash just
because of this (bug#9310). */
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSetWindowBorder (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
f->output_data.x->border_pixel);
x_stop_ignoring_errors (dpyinfo);
@@ -11504,7 +11700,7 @@ x_frame_unhighlight (struct frame *f)
block_input ();
/* Same as above for XSetWindowBorder (bug#9310). */
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSetWindowBorderPixmap (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
f->output_data.x->border_tile);
x_stop_ignoring_errors (dpyinfo);
@@ -11568,7 +11764,7 @@ x_new_focus_frame (struct x_display_info *dpyinfo, struct frame *frame)
x_frame_rehighlight (dpyinfo);
}
-#ifdef HAVE_XFIXES
+#if defined HAVE_XFIXES && XFIXES_VERSION >= 40000
/* True if the display in DPYINFO supports a version of Xfixes
sufficient for pointer blanking. */
@@ -11580,11 +11776,12 @@ x_fixes_pointer_blanking_supported (struct x_display_info *dpyinfo)
&& dpyinfo->xfixes_major >= 4);
}
-#endif /* HAVE_XFIXES */
+#endif /* HAVE_XFIXES && XFIXES_VERSION >= 40000 */
/* Toggle mouse pointer visibility on frame F using the XFixes
extension. */
-#ifdef HAVE_XFIXES
+#if defined HAVE_XFIXES && XFIXES_VERSION >= 40000
+
static void
xfixes_toggle_visible_pointer (struct frame *f, bool invisible)
@@ -11595,6 +11792,7 @@ xfixes_toggle_visible_pointer (struct frame *f, bool invisible)
XFixesShowCursor (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f));
f->pointer_invisible = invisible;
}
+
#endif /* HAVE_XFIXES */
/* Create invisible cursor on the X display referred by DPYINFO. */
@@ -11643,7 +11841,7 @@ x_toggle_visible_pointer (struct frame *f, bool invisible)
if (dpyinfo->invisible_cursor == None)
dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo);
-#ifndef HAVE_XFIXES
+#if !defined HAVE_XFIXES || XFIXES_VERSION < 40000
if (dpyinfo->invisible_cursor == None)
invisible = false;
#else
@@ -11676,7 +11874,7 @@ static void
XTtoggle_invisible_pointer (struct frame *f, bool invisible)
{
block_input ();
-#ifdef HAVE_XFIXES
+#if defined HAVE_XFIXES && XFIXES_VERSION >= 40000
if (FRAME_DISPLAY_INFO (f)->fixes_pointer_blanking
&& x_fixes_pointer_blanking_supported (FRAME_DISPLAY_INFO (f)))
xfixes_toggle_visible_pointer (f, invisible);
@@ -12265,6 +12463,13 @@ x_dnd_begin_drag_and_drop (struct frame *f, Time time, Atom xaction,
struct xi_device_t *device;
#endif
+ if (FRAME_DISPLAY_INFO (f)->untrusted)
+ /* Untrusted clients cannot send messages to trusted clients or
+ read the window tree, so drag and drop will likely not work at
+ all. */
+ error ("Drag-and-drop is not possible when the client is"
+ " not trusted by the X server.");
+
base = SPECPDL_INDEX ();
/* Bind this here to avoid juggling bindings and SAFE_FREE in
@@ -13370,6 +13575,10 @@ xi_disable_devices (struct x_display_info *dpyinfo,
#ifdef HAVE_XINPUT2_2
struct xi_touch_point_t *tem, *last;
#endif
+#if defined HAVE_XINPUT2_2 && !defined HAVE_EXT_TOOL_BAR
+ struct x_output *output;
+ Lisp_Object tail, frame;
+#endif
/* Don't pointlessly copy dpyinfo->devices if there are no devices
to disable. */
@@ -13412,6 +13621,34 @@ xi_disable_devices (struct x_display_info *dpyinfo,
tem = tem->next;
xfree (last);
}
+
+#ifndef HAVE_EXT_TOOL_BAR
+
+ /* Now look through each frame on DPYINFO. If it has an
+ outstanding tool bar press for this device, release
+ the tool bar. */
+
+ FOR_EACH_FRAME (tail, frame)
+ {
+ if (!FRAME_X_P (XFRAME (frame))
+ || (FRAME_DISPLAY_INFO (XFRAME (frame))
+ != dpyinfo))
+ continue;
+
+ output = FRAME_OUTPUT_DATA (XFRAME (frame));
+
+ if (output->tool_bar_touch_device
+ == dpyinfo->devices[i].device_id)
+ {
+ if (XFRAME (frame)->last_tool_bar_item != -1
+ && WINDOWP (XFRAME (frame)->tool_bar_window))
+ handle_tool_bar_click (XFRAME (frame), 0, 0,
+ false, 0);
+
+ output->tool_bar_touch_device = 0;
+ }
+ }
+#endif
#endif
goto out;
@@ -15036,9 +15273,7 @@ x_send_scroll_bar_event (Lisp_Object window, enum scroll_bar_part part,
XClientMessageEvent *ev = &event.xclient;
struct window *w = XWINDOW (window);
struct frame *f = XFRAME (w->frame);
- intptr_t iw = (intptr_t) w;
verify (INTPTR_WIDTH <= 64);
- int sign_shift = INTPTR_WIDTH - 32;
/* Don't do anything if too many scroll bar events have been
sent but not received. */
@@ -15055,15 +15290,11 @@ x_send_scroll_bar_event (Lisp_Object window, enum scroll_bar_part part,
ev->window = FRAME_X_WINDOW (f);
ev->format = 32;
- /* A 32-bit X client can pass a window pointer through the X server
- as-is.
-
- A 64-bit client is in trouble because a pointer does not fit in
- the 32 bits given for ClientMessage data and will be truncated by
- Xlib. So use two slots and hope that X12 will resolve such
- issues someday. */
- ev->data.l[0] = iw >> 31 >> 1;
- ev->data.l[1] = sign_shift <= 0 ? iw : iw << sign_shift >> sign_shift;
+ /* These messages formerly contained a pointer to the window, but
+ now that information is kept internally. The following two
+ fields are thus zero. */
+ ev->data.l[0] = 0;
+ ev->data.l[1] = 0;
ev->data.l[2] = part;
ev->data.l[3] = portion;
ev->data.l[4] = whole;
@@ -18494,7 +18725,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
x_dnd_waiting_for_status_window = None;
else
{
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSendEvent (dpyinfo->display, target,
False, NoEventMask,
&x_dnd_pending_send_position);
@@ -18608,6 +18839,16 @@ handle_one_xevent (struct x_display_info *dpyinfo,
}
}
+ if (event->xclient.message_type == dpyinfo->Xatom_EMACS_TMP
+ && event->xclient.format == 8)
+ {
+ /* This is actually an hourglass message. Set whether or
+ not events from here on have the hourglass enabled. */
+
+ if (any)
+ FRAME_X_OUTPUT (any)->hourglass_p = event->xclient.data.b[0];
+ }
+
if (event->xclient.message_type == dpyinfo->Xatom_wm_protocols
&& event->xclient.format == 32)
{
@@ -19196,7 +19437,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
= xcb_get_property (dpyinfo->xcb_connection, 0,
(xcb_window_t) FRAME_OUTER_WINDOW (f),
(xcb_atom_t) dpyinfo->Xatom_net_wm_window_opacity,
- XCB_ATOM_CARDINAL, 0, 1);
+ XA_CARDINAL, 0, 1);
opacity_reply
= xcb_get_property_reply (dpyinfo->xcb_connection,
opacity_cookie, &error);
@@ -19205,9 +19446,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
free (error), rc = false;
else
rc = (opacity_reply->format == 32
- && (opacity_reply->type == XCB_ATOM_CARDINAL
- || opacity_reply->type == XCB_ATOM_ATOM
- || opacity_reply->type == XCB_ATOM_WINDOW)
+ && (opacity_reply->type == XA_CARDINAL
+ || opacity_reply->type == XA_ATOM
+ || opacity_reply->type == XA_WINDOW)
&& (xcb_get_property_value_length (opacity_reply) >= 4));
if (rc)
@@ -21355,7 +21596,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
if (FRAME_PARENT_FRAME (f) || (hf && frame_ancestor_p (f, hf)))
{
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
RevertToParent, event->xbutton.time);
x_stop_ignoring_errors (dpyinfo);
@@ -21576,9 +21817,9 @@ handle_one_xevent (struct x_display_info *dpyinfo,
case VisibilityNotify:
f = x_top_window_to_frame (dpyinfo, event->xvisibility.window);
- if (f && (event->xvisibility.state == VisibilityUnobscured
- || event->xvisibility.state == VisibilityPartiallyObscured))
- SET_FRAME_VISIBLE (f, 1);
+
+ if (f)
+ FRAME_X_OUTPUT (f)->visibility_state = event->xvisibility.state;
goto OTHER;
@@ -23053,7 +23294,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
/* This can generate XI_BadDevice if the
device's attachment was destroyed
server-side. */
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XISetFocus (dpyinfo->display, device->attachment,
/* Note that the input extension
only supports RevertToParent-type
@@ -23066,7 +23307,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
events to handle focus. Errors are still
caught here in case the window is not
viewable. */
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSetInputFocus (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f),
RevertToParent, xev->time);
x_stop_ignoring_errors (dpyinfo);
@@ -24042,6 +24283,73 @@ handle_one_xevent (struct x_display_info *dpyinfo,
}
#endif
+#ifndef HAVE_EXT_TOOL_BAR
+ /* Is this a touch from a direct touch device that is in
+ the tool-bar? */
+ if (device->direct_p
+ && WINDOWP (f->tool_bar_window)
+ && WINDOW_TOTAL_LINES (XWINDOW (f->tool_bar_window)))
+ {
+ Lisp_Object window;
+ int x = xev->event_x;
+ int y = xev->event_y;
+
+ window = window_from_coordinates (f, x, y, 0, true, true);
+ /* Ignore button release events if the mouse
+ wasn't previously pressed on the tool bar.
+ We do this because otherwise selecting some
+ text with the mouse and then releasing it on
+ the tool bar doesn't stop selecting text,
+ since the tool bar eats the button up
+ event. */
+ tool_bar_p = EQ (window, f->tool_bar_window);
+
+ /* If this touch has started in the tool bar, do not
+ send it to Lisp. Instead, simulate a tool bar
+ click, releasing it once it goes away. */
+
+ if (tool_bar_p)
+ {
+ /* Call note_mouse_highlight on the tool bar
+ item. Otherwise, get_tool_bar_item will
+ return 1.
+
+ This is not necessary when mouse-highlight is
+ nil. */
+
+ if (!NILP (Vmouse_highlight))
+ {
+ note_mouse_highlight (f, x, y);
+
+ /* Always allow future mouse motion to
+ update the mouse highlight, no matter
+ where it is. */
+ memset (&dpyinfo->last_mouse_glyph, 0,
+ sizeof dpyinfo->last_mouse_glyph);
+ dpyinfo->last_mouse_glyph_frame = f;
+ }
+
+ handle_tool_bar_click_with_device (f, x, y, true, 0,
+ (source
+ ? source->name : Qt));
+
+ /* Flush any changes made by that to the front
+ buffer. */
+ x_flush_dirty_back_buffer_on (f);
+
+ /* Record the device and the touch ID on the
+ frame. That way, Emacs knows when to dismiss
+ the tool bar click later. */
+
+ FRAME_OUTPUT_DATA (f)->tool_bar_touch_device
+ = device->device_id;
+ FRAME_OUTPUT_DATA (f)->tool_bar_touch_id = xev->detail;
+
+ goto XI_OTHER;
+ }
+ }
+#endif
+
if (!menu_bar_p && !tool_bar_p)
{
if (f && device->direct_p)
@@ -24051,13 +24359,16 @@ handle_one_xevent (struct x_display_info *dpyinfo,
x_catch_errors (dpyinfo->display);
if (x_input_grab_touch_events)
- XIAllowTouchEvents (dpyinfo->display, xev->deviceid,
- xev->detail, xev->event, XIAcceptTouch);
+ XIAllowTouchEvents (dpyinfo->display,
+ xev->deviceid,
+ xev->detail, xev->event,
+ XIAcceptTouch);
if (!x_had_errors_p (dpyinfo->display))
{
- xi_link_touch_point (device, xev->detail, xev->event_x,
- xev->event_y);
+ xi_link_touch_point (device, xev->detail,
+ xev->event_x,
+ xev->event_y, f);
inev.ie.kind = TOUCHSCREEN_BEGIN_EVENT;
inev.ie.timestamp = xev->time;
@@ -24075,7 +24386,7 @@ handle_one_xevent (struct x_display_info *dpyinfo,
#ifndef HAVE_GTK3
else if (x_input_grab_touch_events)
{
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XIAllowTouchEvents (dpyinfo->display, xev->deviceid,
xev->detail, xev->event, XIRejectTouch);
x_stop_ignoring_errors (dpyinfo);
@@ -24132,10 +24443,11 @@ handle_one_xevent (struct x_display_info *dpyinfo,
for (touchpoint = device->touchpoints;
touchpoint; touchpoint = touchpoint->next)
{
- arg = Fcons (list3i (lrint (touchpoint->x),
- lrint (touchpoint->y),
- lrint (touchpoint->number)),
- arg);
+ if (touchpoint->frame == f)
+ arg = Fcons (list3i (lrint (touchpoint->x),
+ lrint (touchpoint->y),
+ lrint (touchpoint->number)),
+ arg);
}
if (source)
@@ -24181,6 +24493,33 @@ handle_one_xevent (struct x_display_info *dpyinfo,
}
}
+#ifndef HAVE_EXT_TOOL_BAR
+ /* Now see if the touchpoint was previously on the tool bar.
+ If it was, release the tool bar. */
+
+ if (!f)
+ f = x_window_to_frame (dpyinfo, xev->event);
+
+ if (f && (FRAME_OUTPUT_DATA (f)->tool_bar_touch_id
+ == xev->detail))
+ {
+ if (f->last_tool_bar_item != -1)
+ handle_tool_bar_click_with_device (f, xev->event_x,
+ xev->event_y,
+ false, 0,
+ (source
+ ? source->name
+ : Qnil));
+
+ /* Cancel any outstanding mouse highlight. */
+ note_mouse_highlight (f, -1, -1);
+ x_flush_dirty_back_buffer_on (f);
+
+ /* Now clear the tool bar device. */
+ FRAME_OUTPUT_DATA (f)->tool_bar_touch_device = 0;
+ }
+#endif
+
goto XI_OTHER;
}
@@ -25512,10 +25851,17 @@ x_clean_failable_requests (struct x_display_info *dpyinfo)
x_uncatch_errors_after_check is that this function does not sync to
catch errors if requests were made. It should be used instead of
those two functions for catching errors around requests that do not
- require a reply. */
+ require a reply.
+
+ As a special feature intended to support xselect.c,
+ SELECTION_SERIAL may be an arbitrary number greater than zero: when
+ that is the case, x_select_handle_selection_error is called with
+ the specified number to delete the selection request that
+ encountered the error. */
void
-x_ignore_errors_for_next_request (struct x_display_info *dpyinfo)
+x_ignore_errors_for_next_request (struct x_display_info *dpyinfo,
+ unsigned int selection_serial)
{
struct x_failable_request *request, *max;
unsigned long next_request;
@@ -25569,6 +25915,7 @@ x_ignore_errors_for_next_request (struct x_display_info *dpyinfo)
request->start = next_request;
request->end = 0;
+ request->selection_serial = selection_serial;
dpyinfo->next_failable_request++;
}
@@ -25990,9 +26337,11 @@ For details, see etc/PROBLEMS.\n",
if (!ioerror && dpyinfo)
{
/* Dump the list of error handlers for debugging
- purposes. */
+ purposes if the list exists. */
- fprintf (stderr, "X error handlers currently installed:\n");
+ if ((dpyinfo->failable_requests
+ != dpyinfo->next_failable_request) || x_error_message)
+ fprintf (stderr, "X error handlers currently installed:\n");
for (failable = dpyinfo->failable_requests;
failable < dpyinfo->next_failable_request;
@@ -26081,6 +26430,12 @@ x_error_handler (Display *display, XErrorEvent *event)
+ (last - fail));
}
+ /* If a selection transfer is the cause of this error,
+ remove the selection transfer now. */
+ if (fail->selection_serial)
+ x_handle_selection_error (fail->selection_serial,
+ event);
+
return 0;
}
}
@@ -26117,8 +26472,10 @@ x_error_handler (Display *display, XErrorEvent *event)
static void NO_INLINE
x_error_quitter (Display *display, XErrorEvent *event)
{
- char buf[256], buf1[400 + INT_STRLEN_BOUND (int)
- + INT_STRLEN_BOUND (unsigned long)];
+ char buf[256], buf1[800 + INT_STRLEN_BOUND (int)
+ + INT_STRLEN_BOUND (unsigned long)
+ + INT_STRLEN_BOUND (XID)
+ + INT_STRLEN_BOUND (int)];
/* Ignore BadName errors. They can happen because of fonts
or colors that are not defined. */
@@ -26131,8 +26488,12 @@ x_error_quitter (Display *display, XErrorEvent *event)
XGetErrorText (display, event->error_code, buf, sizeof (buf));
sprintf (buf1, "X protocol error: %s on protocol request %d\n"
- "Serial no: %lu\n", buf, event->request_code,
- event->serial);
+ "Serial no: %lu\n"
+ "Failing resource ID (if any): 0x%lx\n"
+ "Minor code: %d\n"
+ "This is a bug! Please report this to bug-gnu-emacs@gnu.org!\n",
+ buf, event->request_code, event->serial, event->resourceid,
+ event->minor_code);
x_connection_closed (display, buf1, false);
}
@@ -26633,38 +26994,43 @@ x_set_offset (struct frame *f, int xoff, int yoff, int change_gravity)
modified_left, modified_top);
#endif
- /* 'x_sync_with_move' is too costly for dragging child frames. */
- if (!FRAME_PARENT_FRAME (f)
- /* If no window manager exists, just calling XSync will be
- sufficient to ensure that the window geometry has been
- updated. */
- && NILP (Vx_no_window_manager))
- {
- x_sync_with_move (f, f->left_pos, f->top_pos,
- FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN);
-
- /* change_gravity is non-zero when this function is called from Lisp to
- programmatically move a frame. In that case, we call
- x_check_expected_move to discover if we have a "Type A" or "Type B"
- window manager, and, for a "Type A" window manager, adjust the position
- of the frame.
-
- We call x_check_expected_move if a programmatic move occurred, and
- either the window manager type (A/B) is unknown or it is Type A but we
- need to compute the top/left offset adjustment for this frame. */
-
- if (change_gravity != 0
- && (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
- || (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A
- && (FRAME_X_OUTPUT (f)->move_offset_left == 0
- && FRAME_X_OUTPUT (f)->move_offset_top == 0))))
- x_check_expected_move (f, modified_left, modified_top);
- }
- /* Instead, just wait for the last ConfigureWindow request to
- complete. No window manager is involved when moving child
- frames. */
- else
- XSync (FRAME_X_DISPLAY (f), False);
+ /* The following code is too slow over a latent network
+ connection. */
+ if (NILP (Vx_lax_frame_positioning))
+ {
+ /* 'x_sync_with_move' is too costly for dragging child frames. */
+ if (!FRAME_PARENT_FRAME (f)
+ /* If no window manager exists, just calling XSync will be
+ sufficient to ensure that the window geometry has been
+ updated. */
+ && NILP (Vx_no_window_manager))
+ {
+ x_sync_with_move (f, f->left_pos, f->top_pos,
+ FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN);
+
+ /* change_gravity is non-zero when this function is called from Lisp to
+ programmatically move a frame. In that case, we call
+ x_check_expected_move to discover if we have a "Type A" or "Type B"
+ window manager, and, for a "Type A" window manager, adjust the position
+ of the frame.
+
+ We call x_check_expected_move if a programmatic move occurred, and
+ either the window manager type (A/B) is unknown or it is Type A but we
+ need to compute the top/left offset adjustment for this frame. */
+
+ if (change_gravity != 0
+ && (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_UNKNOWN
+ || (FRAME_DISPLAY_INFO (f)->wm_type == X_WMTYPE_A
+ && (FRAME_X_OUTPUT (f)->move_offset_left == 0
+ && FRAME_X_OUTPUT (f)->move_offset_top == 0))))
+ x_check_expected_move (f, modified_left, modified_top);
+ }
+ /* Instead, just wait for the last ConfigureWindow request to
+ complete. No window manager is involved when moving child
+ frames. */
+ else
+ XSync (FRAME_X_DISPLAY (f), False);
+ }
unblock_input ();
}
@@ -26724,6 +27090,12 @@ x_wm_supports_1 (struct x_display_info *dpyinfo, Atom want_atom)
if (!NILP (Vx_no_window_manager))
return false;
+ /* If the window system says Emacs is untrusted, there will be no
+ way to send any information to the window manager, making any
+ hints useless. */
+ if (dpyinfo->untrusted)
+ return false;
+
block_input ();
x_catch_errors (dpy);
@@ -27194,13 +27566,12 @@ do_ewmh_fullscreen (struct frame *f)
static void
XTfullscreen_hook (struct frame *f)
{
- if (FRAME_VISIBLE_P (f))
- {
- block_input ();
- x_check_fullscreen (f);
- x_sync (f);
- unblock_input ();
- }
+ if (!FRAME_VISIBLE_P (f))
+ return;
+
+ block_input ();
+ x_check_fullscreen (f);
+ unblock_input ();
}
@@ -27294,10 +27665,7 @@ x_check_fullscreen (struct frame *f)
if (FRAME_VISIBLE_P (f))
x_wait_for_event (f, ConfigureNotify);
else
- {
- change_frame_size (f, width, height, false, true, false);
- x_sync (f);
- }
+ change_frame_size (f, width, height, false, true, false);
}
/* `x_net_wm_state' might have reset the fullscreen frame parameter,
@@ -27471,6 +27839,12 @@ x_set_window_size_1 (struct frame *f, bool change_gravity,
we have to make sure to do it here. */
SET_FRAME_GARBAGED (f);
+ /* The following code is too slow over a latent network
+ connection, so skip it when the user says so. */
+
+ if (!NILP (Vx_lax_frame_positioning))
+ return;
+
/* Now, strictly speaking, we can't be sure that this is accurate,
but the window manager will get around to dealing with the size
change request eventually, and we'll hear how it went when the
@@ -27511,8 +27885,6 @@ x_set_window_size_1 (struct frame *f, bool change_gravity,
adjust_frame_size (f, FRAME_PIXEL_TO_TEXT_WIDTH (f, width),
FRAME_PIXEL_TO_TEXT_HEIGHT (f, height),
5, 0, Qx_set_window_size_1);
-
- x_sync (f);
}
}
@@ -27566,7 +27938,7 @@ frame_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y)
&& deviceid != -1)
{
block_input ();
- x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f));
+ x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f), 0);
XIWarpPointer (FRAME_X_DISPLAY (f), deviceid, None,
FRAME_X_WINDOW (f), 0, 0, 0, 0, pix_x, pix_y);
x_stop_ignoring_errors (FRAME_DISPLAY_INFO (f));
@@ -27863,7 +28235,7 @@ x_set_input_focus (struct x_display_info *dpyinfo, Window window,
{
eassert (device->use == XIMasterPointer);
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XISetFocus (dpyinfo->display, device->attachment,
/* Note that the input extension
only supports RevertToParent-type
@@ -27878,7 +28250,7 @@ x_set_input_focus (struct x_display_info *dpyinfo, Window window,
/* Otherwise, use the pointer device that the X server says is the
client pointer. */
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
XSetInputFocus (dpyinfo->display, window, RevertToParent, time);
x_stop_ignoring_errors (dpyinfo);
}
@@ -27898,12 +28270,17 @@ x_focus_frame (struct frame *f, bool noactivate)
struct x_display_info *dpyinfo;
Time time;
+ dpyinfo = FRAME_DISPLAY_INFO (f);
+
+ if (dpyinfo->untrusted)
+ /* The X server ignores all input focus related requests from
+ untrusted clients. */
+ return;
+
/* The code below is not reentrant wrt to dpyinfo->x_focus_frame and
friends being set. */
block_input ();
- dpyinfo = FRAME_DISPLAY_INFO (f);
-
if (FRAME_X_EMBEDDED_P (f))
/* For Xembedded frames, normally the embedder forwards key
events. See XEmbed Protocol Specification at
@@ -28015,7 +28392,7 @@ xembed_send_message (struct frame *f, Time t, enum xembed_message msg,
but I don't understand why: there is no way for clients to
survive the death of the parent anyway. */
- x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f));
+ x_ignore_errors_for_next_request (FRAME_DISPLAY_INFO (f), 0);
XSendEvent (FRAME_X_DISPLAY (f), FRAME_X_OUTPUT (f)->parent_desc,
False, NoEventMask, &event);
x_stop_ignoring_errors (FRAME_DISPLAY_INFO (f));
@@ -28166,6 +28543,7 @@ x_make_frame_visible (struct frame *f)
&& !FRAME_ICONIFIED_P (f)
&& !FRAME_X_EMBEDDED_P (f)
&& !FRAME_PARENT_FRAME (f)
+ && NILP (Vx_lax_frame_positioning)
&& f->win_gravity == NorthWestGravity
&& previously_visible)
{
@@ -28194,7 +28572,8 @@ x_make_frame_visible (struct frame *f)
}
/* Try to wait for a MapNotify event (that is what tells us when a
- frame becomes visible). */
+ frame becomes visible). Unless `x-lax-frame-positioning' is
+ non-nil: there, that is a little slow. */
#ifdef CYGWIN
/* On Cygwin, which uses input polling, we need to force input to
@@ -28212,7 +28591,8 @@ x_make_frame_visible (struct frame *f)
poll_suppress_count = old_poll_suppress_count;
#endif
- if (!FRAME_VISIBLE_P (f))
+ if (!FRAME_VISIBLE_P (f)
+ && NILP (Vx_lax_frame_positioning))
{
if (CONSP (frame_size_history))
frame_size_history_plain
@@ -28245,6 +28625,11 @@ x_make_frame_invisible (struct frame *f)
block_input ();
+#ifdef HAVE_XINPUT2_2
+ /* Remove any touch points associated with F. */
+ xi_unlink_touch_points (f);
+#endif
+
/* Before unmapping the window, update the WM_SIZE_HINTS property to claim
that the current position of the window is user-specified, rather than
program-specified, so that when the window is mapped again, it will be
@@ -28269,7 +28654,10 @@ x_make_frame_invisible (struct frame *f)
error ("Can't notify window manager of window withdrawal");
}
- x_sync (f);
+ /* Don't perform the synchronization if the network connection is
+ slow, and the user says it is unwanted. */
+ if (NILP (Vx_lax_frame_positioning))
+ XSync (FRAME_X_DISPLAY (f), False);
/* We can't distinguish this from iconification
just by the event that we get from the server.
@@ -28280,8 +28668,7 @@ x_make_frame_invisible (struct frame *f)
SET_FRAME_ICONIFIED (f, false);
if (CONSP (frame_size_history))
- frame_size_history_plain
- (f, build_string ("x_make_frame_invisible"));
+ frame_size_history_plain (f, build_string ("x_make_frame_invisible"));
unblock_input ();
}
@@ -28448,6 +28835,11 @@ x_free_frame_resources (struct frame *f)
xi_handle_delete_frame (dpyinfo, f);
#endif
+#ifdef HAVE_XINPUT2_2
+ /* Remove any touch points associated with F. */
+ xi_unlink_touch_points (f);
+#endif
+
/* If a display connection is dead, don't try sending more
commands to the X server. */
if (dpyinfo->display)
@@ -28631,6 +29023,13 @@ x_free_frame_resources (struct frame *f)
if (f == hlinfo->mouse_face_mouse_frame)
reset_mouse_highlight (hlinfo);
+ /* These two need to be freed now that they are used to compute the
+ mouse position, I think. */
+ if (f == dpyinfo->last_mouse_motion_frame)
+ dpyinfo->last_mouse_motion_frame = NULL;
+ if (f == dpyinfo->last_mouse_frame)
+ dpyinfo->last_mouse_frame = NULL;
+
#ifdef HAVE_XINPUT2
/* Consider a frame being unfocused with no following FocusIn event
while an older focus from another seat exists. The client
@@ -28867,6 +29266,53 @@ x_get_atom_name (struct x_display_info *dpyinfo, Atom atom,
return value;
}
+/* Intern an array of atoms, and do so quickly, avoiding extraneous
+ roundtrips to the X server.
+
+ Avoid sending atoms that have already been found to the X server.
+ This cannot do anything that will end up triggering garbage
+ collection. */
+
+void
+x_intern_atoms (struct x_display_info *dpyinfo, char **names, int count,
+ Atom *atoms_return)
+{
+ int i, j, indices[256];
+ char *new_names[256];
+ Atom results[256], candidate;
+
+ if (count > 256)
+ /* Atoms array too big to inspect reasonably, just send it to the
+ server and back. */
+ XInternAtoms (dpyinfo->display, new_names, count, False, atoms_return);
+ else
+ {
+ for (i = 0, j = 0; i < count; ++i)
+ {
+ candidate = x_intern_cached_atom (dpyinfo, names[i],
+ true);
+
+ if (candidate)
+ atoms_return[i] = candidate;
+ else
+ {
+ indices[j++] = i;
+ new_names[j - 1] = names[i];
+ }
+ }
+
+ if (!j)
+ return;
+
+ /* Now, get the results back from the X server. */
+ XInternAtoms (dpyinfo->display, new_names, j, False,
+ results);
+
+ for (i = 0; i < j; ++i)
+ atoms_return[indices[i]] = results[i];
+ }
+}
+
#ifndef USE_GTK
/* Set up XEmbed for F, and change its save set to handle the parent
@@ -29415,6 +29861,7 @@ struct x_display_info *
x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
{
Display *dpy;
+ XKeyboardState keyboard_state;
struct terminal *terminal;
struct x_display_info *dpyinfo;
XrmDatabase xrdb;
@@ -29634,6 +30081,32 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
dpyinfo = xzalloc (sizeof *dpyinfo);
terminal = x_create_terminal (dpyinfo);
+ if (!NILP (Vx_detect_server_trust))
+ {
+ /* Detect whether or not the X server trusts this client, which
+ is done by making a SetKeyboardControl request and checking
+ for an Access error. */
+ XGrabServer (dpy);
+ XGetKeyboardControl (dpy, &keyboard_state);
+
+ x_catch_errors (dpy);
+
+ /* At this point, the display is not on x_display_list, so
+ x_uncatch_errors won't sync. However, that's okay because
+ x_had_errors_p will. */
+
+ if (keyboard_state.global_auto_repeat
+ == AutoRepeatModeOn)
+ XAutoRepeatOn (dpy);
+ else
+ XAutoRepeatOff (dpy);
+
+ if (x_had_errors_p (dpy))
+ dpyinfo->untrusted = true;
+ x_uncatch_errors_after_check ();
+ XUngrabServer (dpy);
+ }
+
dpyinfo->next_failable_request = dpyinfo->failable_requests;
{
@@ -29654,13 +30127,17 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
{
char *vendor = ServerVendor (dpy);
- /* Temporarily hide the partially initialized terminal. */
+ /* Temporarily hide the partially initialized terminal.
+ Use safe_call so that if a signal happens, a partially
+ initialized display (and display connection) is not
+ kept around. */
terminal_list = terminal->next_terminal;
unblock_input ();
- kset_system_key_alist
- (terminal->kboard,
- call1 (Qvendor_specific_keysyms,
- vendor ? build_string (vendor) : empty_unibyte_string));
+ kset_system_key_alist (terminal->kboard,
+ safe_call1 (Qvendor_specific_keysyms,
+ (vendor
+ ? build_string (vendor)
+ : empty_unibyte_string)));
block_input ();
terminal->next_terminal = terminal_list;
terminal_list = terminal;
@@ -30278,8 +30755,8 @@ x_term_init (Lisp_Object display_name, char *xrm_option, char *resource_name)
1, 0, 1);
dpyinfo->invisible_cursor = make_invisible_cursor (dpyinfo);
-#ifdef HAVE_XFIXES
- dpyinfo->fixes_pointer_blanking = egetenv ("EMACS_XFIXES");
+#if defined HAVE_XFIXES && XFIXES_VERSION >= 40000
+ dpyinfo->fixes_pointer_blanking = (egetenv ("EMACS_XFIXES") != NULL);
#endif
#ifdef HAVE_X_I18N
@@ -30606,8 +31083,13 @@ x_delete_display (struct x_display_info *dpyinfo)
last = ie;
}
+ /* Delete selection requests bound for dpyinfo from the keyboard
+ buffer. */
x_delete_selection_requests (dpyinfo);
+ /* And remove any outstanding selection transfers. */
+ x_remove_selection_transfers (dpyinfo);
+
if (next_noop_dpyinfo == dpyinfo)
next_noop_dpyinfo = dpyinfo->next;
@@ -31034,7 +31516,37 @@ x_initialize (void)
XSetIOErrorHandler (x_io_error_quitter);
}
-#ifdef USE_GTK
+#ifdef HAVE_X_I18N
+
+/* Notice that a change has occured on F that requires its input
+ method state to be reset. */
+
+static void
+x_reset_conversion (struct frame *f)
+{
+ char *string;
+
+ if (FRAME_XIC (f))
+ {
+ string = XmbResetIC (FRAME_XIC (f));
+
+ /* string is actually any string that was being composed at the
+ time of the reset. */
+
+ if (string)
+ XFree (string);
+ }
+}
+
+/* Interface used to control input method ``text conversion''. */
+
+static struct textconv_interface text_conversion_interface =
+ {
+ x_reset_conversion,
+ };
+
+#endif
+
void
init_xterm (void)
{
@@ -31048,8 +31560,11 @@ init_xterm (void)
gdk_disable_multidevice ();
#endif
#endif
-}
+
+#ifdef HAVE_X_I18N
+ register_texconv_interface (&text_conversion_interface);
#endif
+}
void
mark_xterm (void)
@@ -31113,7 +31628,7 @@ x_catch_errors_for_lisp (struct x_display_info *dpyinfo)
if (!x_fast_protocol_requests)
x_catch_errors (dpyinfo->display);
else
- x_ignore_errors_for_next_request (dpyinfo);
+ x_ignore_errors_for_next_request (dpyinfo, 0);
}
void
@@ -31322,6 +31837,8 @@ syms_of_xterm (void)
DEFSYM (Qnow, "now");
DEFSYM (Qx_dnd_targets_list, "x-dnd-targets-list");
DEFSYM (Qx_auto_preserve_selections, "x-auto-preserve-selections");
+ DEFSYM (Qexpose, "expose");
+ DEFSYM (Qdont_save, "dont-save");
#ifdef USE_GTK
xg_default_icon_file = build_pure_c_string ("icons/hicolor/scalable/apps/emacs.svg");
@@ -31491,7 +32008,6 @@ always uses gtk_window_move and ignores the value of this variable. */);
This option is only effective when Emacs is built with XInput 2
support. */);
Vx_scroll_event_delta_factor = make_float (1.0);
- DEFSYM (Qexpose, "expose");
DEFVAR_BOOL ("x-gtk-use-native-input", x_gtk_use_native_input,
doc: /* Non-nil means to use GTK for input method support.
@@ -31705,4 +32221,26 @@ select text over slow X connections.
If that is still too slow, setting this variable to the symbol
`really-fast' will make Emacs return only cached values. */);
Vx_use_fast_mouse_position = Qnil;
+
+ DEFVAR_LISP ("x-detect-server-trust", Vx_detect_server_trust,
+ doc: /* If non-nil, Emacs should detect whether or not it is trusted by X.
+
+If non-nil, Emacs will make an X request at connection startup that is
+prohibited to untrusted clients under the X Security Extension and
+check whether or not a resulting Access error is generated by the X
+server. If the X server reports the error, Emacs will disable certain
+features that do not work for untrusted clients. */);
+ Vx_detect_server_trust = Qnil;
+
+ DEFVAR_LISP ("x-lax-frame-positioning", Vx_lax_frame_positioning,
+ doc: /* If non-nil, Emacs won't compensate for WM geometry behavior.
+
+Setting this to non-nil is useful when the compensation proves to be
+too slow, which is usually true when the X server is located over a
+network connection with high latency. Doing so will make frame
+creation and placement faster at the cost of reducing the accuracy of
+frame placement via frame parameters, `set-frame-position', and
+`set-frame-size', along with the actual state of a frame after
+`x_make_frame_invisible'. */);
+ Vx_lax_frame_positioning = Qnil;
}
diff --git a/src/xterm.h b/src/xterm.h
index 8834346e7ca..28ae00ca190 100644
--- a/src/xterm.h
+++ b/src/xterm.h
@@ -21,6 +21,22 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#define XTERM_H
#include <X11/Xlib.h>
+
+#ifdef HAVE_XFIXES
+#include <X11/extensions/Xfixes.h>
+
+#if defined HAVE_XINPUT2 && XFIXES_MAJOR < 5
+/* XI2 headers need PointerBarrier, which is not defined in old
+ versions of the fixes library. Define that type here. */
+typedef XID PointerBarrier;
+#endif
+#if defined HAVE_XCOMPOSITE && XFIXES_MAJOR < 2
+/* Recent Composite headers need XserverRegion, which is not defined
+ in old versions of the fixes library. Define that type here. */
+typedef XID XserverRegion;
+#endif
+#endif
+
#include <X11/cursorfont.h>
/* Include Xutil.h after keysym.h to work around a bug that prevents
@@ -241,10 +257,17 @@ struct xi_scroll_valuator_t
struct xi_touch_point_t
{
+ /* The next touch point in this list. */
struct xi_touch_point_t *next;
+ /* The touchpoint detail. */
int number;
+
+ /* The last known X and Y position of the touchpoint. */
double x, y;
+
+ /* The frame associated with this touch point. */
+ struct frame *frame;
};
#endif
@@ -318,6 +341,9 @@ struct x_failable_request
/* If this is zero, then the request has not yet been made.
Otherwise, this is the request that ends this sequence. */
unsigned long end;
+
+ /* Any selection event serial associated with this error trap. */
+ unsigned int selection_serial;
};
#ifdef HAVE_XFIXES
@@ -360,6 +386,10 @@ struct x_display_info
/* Number of frames that are on this display. */
int reference_count;
+ /* True if this display connection cannot communicate with the
+ window manager because it is not trusted by the X server. */
+ bool untrusted;
+
/* The Screen this connection is connected to. */
Screen *screen;
@@ -406,7 +436,7 @@ struct x_display_info
Unused if this display supports Xfixes extension. */
Cursor invisible_cursor;
-#ifdef HAVE_XFIXES
+#if defined HAVE_XFIXES && XFIXES_VERSION >= 40000
/* Whether or not to use Xfixes for pointer blanking. */
bool fixes_pointer_blanking;
#endif
@@ -537,6 +567,12 @@ struct x_display_info
KDE" protocol in x-dnd.el). */
Atom Xatom_DndProtocol, Xatom_DND_PROTOCOL;
+ /* Atoms to make x_intern_cached_atom fast. */
+ Atom Xatom_text_plain_charset_utf_8, Xatom_LENGTH, Xatom_FILE_NAME,
+ Xatom_CHARACTER_POSITION, Xatom_LINE_NUMBER, Xatom_COLUMN_NUMBER,
+ Xatom_OWNER_OS, Xatom_HOST_NAME, Xatom_USER, Xatom_CLASS,
+ Xatom_NAME, Xatom_SAVE_TARGETS;
+
/* The frame (if any) which has the X window that has keyboard focus.
Zero if none. This is examined by Ffocus_frame in xfns.c. Note
that a mere EnterNotify event can set this; if you need to know the
@@ -1261,6 +1297,21 @@ struct x_output
strictly an optimization to avoid extraneous synchronizing in
some cases. */
int root_x, root_y;
+
+ /* The frame visibility state. This starts out
+ VisibilityFullyObscured, but is set to something else in
+ handle_one_xevent. */
+ int visibility_state;
+
+#ifdef HAVE_XINPUT2_2
+ /* The touch ID of the last touch point to have touched the tool
+ bar. */
+ int tool_bar_touch_id;
+
+ /* The device that last touched the tool bar. 0 if no device
+ touched the tool bar. */
+ int tool_bar_touch_device;
+#endif
};
enum
@@ -1379,6 +1430,11 @@ extern void x_mark_frame_dirty (struct frame *f);
/* And its corresponding visual info. */
#define FRAME_X_VISUAL_INFO(f) (&FRAME_DISPLAY_INFO (f)->visual_info)
+/* Whether or not the frame is visible. Do not test this alone.
+ Instead, use FRAME_REDISPLAY_P. */
+#define FRAME_X_VISIBLE(f) (FRAME_X_OUTPUT (f)->visibility_state \
+ != VisibilityFullyObscured)
+
#ifdef HAVE_XRENDER
#define FRAME_X_PICTURE_FORMAT(f) FRAME_DISPLAY_INFO (f)->pict_format
#define FRAME_X_PICTURE(f) ((f)->output_data.x->picture)
@@ -1644,7 +1700,8 @@ extern bool x_had_errors_p (Display *);
extern void x_unwind_errors_to (int);
extern void x_uncatch_errors (void);
extern void x_uncatch_errors_after_check (void);
-extern void x_ignore_errors_for_next_request (struct x_display_info *);
+extern void x_ignore_errors_for_next_request (struct x_display_info *,
+ unsigned int);
extern void x_stop_ignoring_errors (struct x_display_info *);
extern void x_clear_errors (Display *);
extern void x_set_window_size (struct frame *, bool, int, int);
@@ -1717,6 +1774,11 @@ extern Lisp_Object x_handle_translate_coordinates (struct frame *, Lisp_Object,
extern Bool x_query_pointer (Display *, Window, Window *, Window *, int *,
int *, int *, int *, unsigned int *);
+extern Atom x_intern_cached_atom (struct x_display_info *, const char *,
+ bool);
+extern void x_intern_atoms (struct x_display_info *, char **, int, Atom *);
+extern char *x_get_atom_name (struct x_display_info *, Atom, bool *)
+ ATTRIBUTE_MALLOC ATTRIBUTE_DEALLOC_FREE;
#ifdef HAVE_GTK3
extern void x_scroll_bar_configure (GdkEvent *);
@@ -1798,6 +1860,9 @@ extern void x_handle_property_notify (const XPropertyEvent *);
extern void x_handle_selection_notify (const XSelectionEvent *);
extern void x_handle_selection_event (struct selection_input_event *);
extern void x_clear_frame_selections (struct frame *);
+extern void x_remove_selection_transfers (struct x_display_info *);
+extern void x_handle_selection_error (unsigned int, XErrorEvent *);
+
extern Lisp_Object x_atom_to_symbol (struct x_display_info *, Atom);
extern Atom symbol_to_x_atom (struct x_display_info *, Lisp_Object);
@@ -1807,11 +1872,8 @@ extern bool x_handle_dnd_message (struct frame *,
struct input_event *,
bool, int, int);
extern int x_check_property_data (Lisp_Object);
-extern void x_fill_property_data (Display *,
- Lisp_Object,
- void *,
- int,
- int);
+extern void x_fill_property_data (struct x_display_info *, Lisp_Object,
+ void *, int, int);
extern Lisp_Object x_property_data_to_lisp (struct frame *,
const unsigned char *,
Atom,
@@ -1824,10 +1886,10 @@ extern Lisp_Object x_timestamp_for_selection (struct x_display_info *,
Lisp_Object);
extern void x_own_selection (Lisp_Object, Lisp_Object, Lisp_Object,
Lisp_Object, Time);
-extern Atom x_intern_cached_atom (struct x_display_info *, const char *,
- bool);
-extern char *x_get_atom_name (struct x_display_info *, Atom, bool *)
- ATTRIBUTE_MALLOC ATTRIBUTE_DEALLOC_FREE;
+
+extern void mark_xselect (void);
+
+/* Misc definitions. */
#ifdef USE_GTK
extern bool xg_set_icon (struct frame *, Lisp_Object);
diff --git a/test/Makefile.in b/test/Makefile.in
index e8edf7739b7..e2a14c4dd92 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -271,8 +271,8 @@ endif
GMP_H = @GMP_H@
LIBGMP = @LIBGMP@
-LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@
-LIB_NANOSLEEP = @LIB_NANOSLEEP@
+CLOCK_TIME_LIB = @CLOCK_TIME_LIB@
+NANOSLEEP_LIB = @NANOSLEEP_LIB@
MODULE_CFLAGS = $(and $(GMP_H),-I.) -I../src -I$(srcdir)/../src \
$(FPIC_CFLAGS) $(PROFILING_CFLAGS) \
@@ -293,7 +293,7 @@ $(test_module): $(test_module:${SO}=.c) ../src/emacs-module.h \
$(AM_V_at)$(CC) -shared $(CPPFLAGS) $(MODULE_CFLAGS) $(LDFLAGS) \
-o $@ $< $(LIBGMP) \
$(and $(GMP_H),$(srcdir)/../lib/mini-gmp.c) \
- $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP)
+ $(CLOCK_TIME_LIB) $(NANOSLEEP_LIB)
endif
src/emacs-tests.log: ../lib-src/seccomp-filter.c
diff --git a/test/infra/Dockerfile.emba b/test/infra/Dockerfile.emba
index 7f12d682a13..689573236da 100644
--- a/test/infra/Dockerfile.emba
+++ b/test/infra/Dockerfile.emba
@@ -60,6 +60,29 @@ RUN ./autogen.sh autoconf
RUN ./configure --with-file-notification=gfile
RUN make bootstrap
+# Debian bullseye doesn't provide proper packages. So we use Debian
+# sid for this.
+FROM debian:sid as emacs-eglot
+
+# This corresponds to emacs-base.
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
+ libc-dev gcc g++ make autoconf automake libncurses-dev gnutls-dev \
+ libdbus-1-dev libacl1-dev acl git texinfo gdb \
+ && rm -rf /var/lib/apt/lists/*
+
+# Install clangd.
+RUN apt-get update && \
+ apt-get install -y --no-install-recommends -o=Dpkg::Use-Pty=0 \
+ clangd \
+ && rm -rf /var/lib/apt/lists/*
+
+COPY . /checkout
+WORKDIR /checkout
+RUN ./autogen.sh autoconf
+RUN ./configure
+RUN make bootstrap
+
FROM emacs-base as emacs-gnustep
RUN apt-get update && \
diff --git a/test/infra/gitlab-ci.yml b/test/infra/gitlab-ci.yml
index de1148460aa..d1fef0187d4 100644
--- a/test/infra/gitlab-ci.yml
+++ b/test/infra/gitlab-ci.yml
@@ -166,6 +166,16 @@ default:
- test/lisp/autorevert-tests.el
- test/lisp/filenotify-tests.el
+.eglot-template:
+ rules:
+ - if: '$CI_PIPELINE_SOURCE == "web"'
+ - if: '$CI_PIPELINE_SOURCE == "schedule"'
+ changes:
+ - "**.in"
+ - lisp/progmodes/eglot.el
+ - test/infra/*
+ - test/lisp/progmodes/eglot-tests.el
+
.native-comp-template:
rules:
- if: '$CI_PIPELINE_SOURCE == "web"'
@@ -229,6 +239,23 @@ test-filenotify-gio:
# This is needed in order to get a JUnit test report.
make_params: '-k -C test check-expensive LOGFILES="lisp/autorevert-tests.log lisp/filenotify-tests.log"'
+build-image-eglot:
+ stage: platform-images
+ extends: [.job-template, .build-template, .eglot-template]
+ variables:
+ target: emacs-eglot
+
+test-eglot:
+ stage: platforms
+ extends: [.job-template, .test-template, .eglot-template]
+ needs:
+ - job: build-image-eglot
+ optional: true
+ variables:
+ target: emacs-eglot
+ # This is needed in order to get a JUnit test report.
+ make_params: '-k -C test check-expensive LOGFILES="lisp/progmodes/eglot-tests.log"'
+
build-image-gnustep:
stage: platform-images
extends: [.job-template, .build-template, .gnustep-template]
diff --git a/test/lisp/auth-source-tests.el b/test/lisp/auth-source-tests.el
index 6f832725754..ef915e5fc5b 100644
--- a/test/lisp/auth-source-tests.el
+++ b/test/lisp/auth-source-tests.el
@@ -341,13 +341,14 @@
(should
(string-equal (plist-get auth-info :user) (user-login-name)))
(should (string-equal (plist-get auth-info :host) host))
- (should (string-equal auth-passwd passwd)))))
-
- ;; Cleanup.
- ;; Should use `auth-source-delete' when implemented for :secrets backend.
- (secrets-delete-item
- "session"
- (format "%s@%s" (plist-get auth-info :user) (plist-get auth-info :host))))))
+ (should (string-equal auth-passwd passwd))))
+
+ ;; Cleanup.
+ ;; Should use `auth-source-delete' when implemented for :secrets backend.
+ (secrets-delete-item
+ "session"
+ (format
+ "%s@%s" (plist-get auth-info :user) (plist-get auth-info :host)))))))
(ert-deftest auth-source-test-netrc-create-secret ()
(ert-with-temp-file netrc-file
diff --git a/test/lisp/calendar/lunar-tests.el b/test/lisp/calendar/lunar-tests.el
index baae9282628..e19965d1034 100644
--- a/test/lisp/calendar/lunar-tests.el
+++ b/test/lisp/calendar/lunar-tests.el
@@ -41,10 +41,10 @@
(should (equal (lunar-phase 1)
'((1 8 1900) "05:40" 1 "")))))
-(ert-deftest lunar-test-eclipse-check ()
+(ert-deftest lunar-test-check-for-eclipse ()
(with-lunar-test
- (should (equal (eclipse-check 10.0 1) ""))
- (should (equal (eclipse-check 10.0 2) "** Lunar Eclipse **"))))
+ (should (equal (lunar-check-for-eclipse 10.0 1) ""))
+ (should (equal (lunar-check-for-eclipse 10.0 2) "** Lunar Eclipse **"))))
(ert-deftest lunar-test-phase-list ()
(with-lunar-test
diff --git a/test/lisp/dired-aux-tests.el b/test/lisp/dired-aux-tests.el
index 5939f480680..62011d8b0f0 100644
--- a/test/lisp/dired-aux-tests.el
+++ b/test/lisp/dired-aux-tests.el
@@ -55,12 +55,11 @@
(setq to-mv
(expand-file-name
"foo-mv" (file-name-as-directory (expand-file-name "qux" ,foo))))
- (unwind-protect
- (if ,yes-or-no
- (cl-letf (((symbol-function 'yes-or-no-p)
- (lambda (_prompt) (eq ,yes-or-no 'yes))))
- ,@body)
- ,@body)))))))
+ (if ,yes-or-no
+ (cl-letf (((symbol-function 'yes-or-no-p)
+ (lambda (_prompt) (eq ,yes-or-no 'yes))))
+ ,@body)
+ ,@body))))))
(ert-deftest dired-test-bug28834 ()
"test for https://debbugs.gnu.org/28834 ."
diff --git a/test/lisp/dired-tests.el b/test/lisp/dired-tests.el
index 347bdfc0d7b..0701b229edd 100644
--- a/test/lisp/dired-tests.el
+++ b/test/lisp/dired-tests.el
@@ -477,9 +477,9 @@
;;(should (= 0 (length (directory-files testdir nil "[0-9]" t -1))))
(should (= 5 (length (directory-files testdir nil "[0-9]" t))))
(should (= 5 (length (directory-files testdir nil "[0-9]" t 50))))
- (should-not (directory-empty-p testdir)))
+ (should-not (directory-empty-p testdir))))
- (delete-directory testdir t)))))
+ (delete-directory testdir t))))
(ert-deftest dired-test-directory-files-and-attributes ()
"Test for `directory-files-and-attributes'."
diff --git a/test/lisp/elide-head-tests.el b/test/lisp/elide-head-tests.el
index d751eee06a0..40a9d365f37 100644
--- a/test/lisp/elide-head-tests.el
+++ b/test/lisp/elide-head-tests.el
@@ -180,6 +180,90 @@
;; along with Mentor. If not, see <https://www.gnu.org/licenses>.
" "Mentor is distributed in the hope that")
+;; from GnuTLS [has a line break in snail mail address]
+(elide-head--add-test gpl3-6 "\
+# This file is part of GnuTLS.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
+# USA
+" "This program is distributed in the hope that")
+
+;; from GnuTLS [has a different line break in snail mail address]
+(elide-head--add-test gpl3-7 "\
+# This file is part of GnuTLS.
+#
+# The GnuTLS is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public License
+# as published by the Free Software Foundation; either version 2.1 of
+# the License, or (at your option) any later version.
+#
+# The GnuTLS is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with GnuTLS; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1301, USA
+" "The GnuTLS is distributed in the hope that")
+
+;; from GnuTLS [has a typo in the 02111-1301 part]
+(elide-head--add-test gpl3-8 "\
+/* nettle, low-level cryptographics library
+ *
+ * Copyright (C) 2002 Niels Möller
+ * Copyright (C) 2014 Red Hat
+ *\s\s
+ * The nettle library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or (at your
+ * option) any later version.
+ *\s
+ * The nettle library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
+ * License for more details.
+ *\s
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with the nettle library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02111-1301, USA.
+ */
+" "The nettle library is distributed in the hope that")
+
+;; from GnuTLS-EXTRA [has a different line break in snail mail address]
+(elide-head--add-test gpl3-9 "\
+# This file is part of GnuTLS-EXTRA.
+#
+# GnuTLS-extra is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
+# published by the Free Software Foundation; either version 3 of the
+# License, or (at your option) any later version.
+#
+# GnuTLS-extra is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GnuTLS-EXTRA; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+" "GnuTLS-extra is distributed in the hope that")
+
;;; GPLv2
@@ -201,6 +285,28 @@
" "This program is distributed in the hope that")
+;;; Apache License
+
+(elide-head--add-test apache1-1 "\
+/*
+ * Copyright 2011-2016 The Pkcs11Interop Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the \"License\");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an \"AS IS\" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+" "Unless required by applicable law")
+
+
+
;;; Obsolete
(with-suppressed-warnings ((obsolete elide-head)
diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el
index 7ae10cdea73..9ade47331df 100644
--- a/test/lisp/emacs-lisp/bytecomp-tests.el
+++ b/test/lisp/emacs-lisp/bytecomp-tests.el
@@ -704,6 +704,68 @@ inner loops respectively."
(let ((bytecomp-tests--xx 1))
(set (make-local-variable 'bytecomp-tests--xx) 2)
bytecomp-tests--xx)
+
+ ;; Check for-effect optimisation of `condition-case' body form.
+ ;; With `condition-case' in for-effect context:
+ (let ((x (bytecomp-test-identity ?A))
+ (r nil))
+ (condition-case e
+ (characterp x) ; value (:success, var)
+ (error (setq r 'bad))
+ (:success (setq r (list 'good e))))
+ r)
+ (let ((x (bytecomp-test-identity ?B))
+ (r nil))
+ (condition-case nil
+ (characterp x) ; for-effect (:success, no var)
+ (error (setq r 'bad))
+ (:success (setq r 'good)))
+ r)
+ (let ((x (bytecomp-test-identity ?C))
+ (r nil))
+ (condition-case e
+ (characterp x) ; for-effect (no :success, var)
+ (error (setq r (list 'bad e))))
+ r)
+ (let ((x (bytecomp-test-identity ?D))
+ (r nil))
+ (condition-case nil
+ (characterp x) ; for-effect (no :success, no var)
+ (error (setq r 'bad)))
+ r)
+ ;; With `condition-case' in value context:
+ (let ((x (bytecomp-test-identity ?E)))
+ (condition-case e
+ (characterp x) ; for-effect (:success, var)
+ (error (list 'bad e))
+ (:success (list 'good e))))
+ (let ((x (bytecomp-test-identity ?F)))
+ (condition-case nil
+ (characterp x) ; for-effect (:success, no var)
+ (error 'bad)
+ (:success 'good)))
+ (let ((x (bytecomp-test-identity ?G)))
+ (condition-case e
+ (characterp x) ; value (no :success, var)
+ (error (list 'bad e))))
+ (let ((x (bytecomp-test-identity ?H)))
+ (condition-case nil
+ (characterp x) ; value (no :success, no var)
+ (error 'bad)))
+
+ (condition-case nil
+ (bytecomp-test-identity 3)
+ (error 'bad)
+ (:success)) ; empty handler
+
+ ;; `cond' miscompilation bug
+ (let ((fn (lambda (x)
+ (let ((y nil))
+ (cond ((progn (setq x (1+ x)) (> x 10)) (setq y 'a))
+ ((eq x 1) (setq y 'b))
+ ((eq x 2) (setq y 'c)))
+ (list x y)))))
+ (mapcar fn (bytecomp-test-identity '(0 1 2 3 10 11))))
)
"List of expressions for cross-testing interpreted and compiled code.")
@@ -833,13 +895,28 @@ byte-compiled. Run with dynamic binding."
;; Should not warn that mt--test2 is not known to be defined.
(should-not (re-search-forward "my--test2" nil t))))
-(defmacro bytecomp--with-warning-test (re-warning &rest form)
+(defun bytecomp--with-warning-test (re-warning form)
(declare (indent 1))
- `(with-current-buffer (get-buffer-create "*Compile-Log*")
+ (with-current-buffer (get-buffer-create "*Compile-Log*")
(let ((inhibit-read-only t)) (erase-buffer))
- (byte-compile ,@form)
- (ert-info ((prin1-to-string (buffer-string)) :prefix "buffer: ")
- (should (re-search-forward ,(string-replace " " "[ \n]+" re-warning))))))
+ (let ((text-quoting-style 'grave)
+ (macroexp--warned ; oh dear
+ (make-hash-table :test #'equal :weakness 'key)))
+ (ert-info ((prin1-to-string form) :prefix "form: ")
+ (byte-compile form)
+ (ert-info ((prin1-to-string (buffer-string)) :prefix "buffer: ")
+ (should (re-search-forward
+ (string-replace " " "[ \n]+" re-warning))))))))
+
+(ert-deftest bytecomp-warn--ignore ()
+ (bytecomp--with-warning-test "unused"
+ '(lambda (y) 6))
+ (bytecomp--with-warning-test "\\`\\'" ;No warning!
+ '(lambda (y) (ignore y) 6))
+ (bytecomp--with-warning-test "assq"
+ '(lambda (x y) (progn (assq x y) 5)))
+ (bytecomp--with-warning-test "\\`\\'" ;No warning!
+ '(lambda (x y) (progn (ignore (assq x y)) 5))))
(ert-deftest bytecomp-warn-wrong-args ()
(bytecomp--with-warning-test "remq.*3.*2"
@@ -863,6 +940,66 @@ byte-compiled. Run with dynamic binding."
(bytecomp--with-warning-test "defvar.*foo.*wider than.*characters"
`(defvar foo t ,bytecomp-tests--docstring)))
+(ert-deftest bytecomp-warn-quoted-condition ()
+ (bytecomp--with-warning-test
+ "Warning: `condition-case' condition should not be quoted: 'arith-error"
+ '(condition-case nil
+ (abc)
+ ('arith-error "ugh")))
+ (bytecomp--with-warning-test
+ "Warning: `ignore-error' condition argument should not be quoted: 'error"
+ '(ignore-error 'error (abc))))
+
+(ert-deftest bytecomp-warn-dodgy-args-eq ()
+ (dolist (fn '(eq eql))
+ (cl-flet ((msg (type arg)
+ (format
+ "`%s' called with literal %s that may never match (arg %d)"
+ fn type arg)))
+ (bytecomp--with-warning-test (msg "list" 1) `(,fn '(a) 'x))
+ (bytecomp--with-warning-test (msg "string" 2) `(,fn 'x "a"))
+ (bytecomp--with-warning-test (msg "vector" 2) `(,fn 'x [a]))
+ (bytecomp--with-warning-test (msg "function" 2) `(,fn 'x (lambda () 1)))
+ (bytecomp--with-warning-test (msg "function" 2) `(,fn 'x #'(lambda () 1)))
+ (unless (eq fn 'eql)
+ (bytecomp--with-warning-test (msg "integer" 2) `(,fn 'x #x10000000000))
+ (bytecomp--with-warning-test (msg "float" 2) `(,fn 'x 1.0))))))
+
+(ert-deftest bytecomp-warn-dodgy-args-memq ()
+ (dolist (fn '(memq memql remq delq assq rassq))
+ (cl-labels
+ ((msg1 (type)
+ (format
+ "`%s' called with literal %s that may never match (arg 1)"
+ fn type))
+ (msg2 (type)
+ (format
+ "`%s' called with literal %s that may never match (element 2 of arg 2)"
+ fn type))
+ (lst (elt)
+ (cond ((eq fn 'assq) `((a . 1) (,elt . 2) (c . 3)))
+ ((eq fn 'rassq) `((1 . a) (2 . ,elt) (3 . c)))
+ (t `(a ,elt c))))
+ (form2 (elt)
+ `(,fn 'x ',(lst elt))))
+
+ (bytecomp--with-warning-test (msg1 "list") `(,fn '(a) '(x)))
+ (bytecomp--with-warning-test (msg1 "string") `(,fn "a" '(x)))
+ (bytecomp--with-warning-test (msg1 "vector") `(,fn [a] '(x)))
+ (bytecomp--with-warning-test (msg1 "function") `(,fn (lambda () 1) '(x)))
+ (bytecomp--with-warning-test (msg1 "function") `(,fn #'(lambda () 1) '(x)))
+ (unless (eq fn 'memql)
+ (bytecomp--with-warning-test (msg1 "integer") `(,fn #x10000000000 '(x)))
+ (bytecomp--with-warning-test (msg1 "float") `(,fn 1.0 '(x))))
+
+ (bytecomp--with-warning-test (msg2 "list") (form2 '(b)))
+ (bytecomp--with-warning-test (msg2 "list") (form2 ''b))
+ (bytecomp--with-warning-test (msg2 "string") (form2 "b"))
+ (bytecomp--with-warning-test (msg2 "vector") (form2 [b]))
+ (unless (eq fn 'memql)
+ (bytecomp--with-warning-test (msg2 "integer") (form2 #x10000000000))
+ (bytecomp--with-warning-test (msg2 "float") (form2 1.0))))))
+
(defmacro bytecomp--define-warning-file-test (file re-warning &optional reverse)
`(ert-deftest ,(intern (format "bytecomp/%s" file)) ()
(with-current-buffer (get-buffer-create "*Compile-Log*")
@@ -1094,7 +1231,8 @@ byte-compiled. Run with dynamic binding."
literals (Bug#20852)."
(should (boundp 'lread--unescaped-character-literals))
(let ((byte-compile-error-on-warn t)
- (byte-compile-debug t))
+ (byte-compile-debug t)
+ (text-quoting-style 'grave))
(bytecomp-tests--with-temp-file source
(write-region "(list ?) ?( ?; ?\" ?[ ?])" nil source)
(bytecomp-tests--with-temp-file destination
@@ -1213,6 +1351,7 @@ literals (Bug#20852)."
(defun test-suppression (form suppress match)
(let ((lexical-binding t)
+ (text-quoting-style 'grave)
(byte-compile-log-buffer (generate-new-buffer " *Compile-Log*")))
;; Check that we get a warning without suppression.
(with-current-buffer byte-compile-log-buffer
@@ -1299,8 +1438,8 @@ literals (Bug#20852)."
'(defun zot ()
(mapcar #'list '(1 2 3))
nil)
- '((mapcar mapcar))
- "Warning: .mapcar. called for effect")
+ '((ignored-return-value mapcar))
+ "Warning: value from call to `mapcar' is unused; use `mapc' or `dolist' instead")
(test-suppression
'(defun zot ()
@@ -1314,7 +1453,62 @@ literals (Bug#20852)."
(set-buffer (get-buffer-create "foo"))
nil))
'((suspicious set-buffer))
- "Warning: Use .with-current-buffer. rather than"))
+ "Warning: Use .with-current-buffer. rather than")
+
+ (test-suppression
+ '(defun zot (x)
+ (condition-case nil (list x)))
+ '((suspicious condition-case))
+ "Warning: `condition-case' without handlers")
+
+ (test-suppression
+ '(defun zot (x)
+ (unwind-protect (print x)))
+ '((suspicious unwind-protect))
+ "Warning: `unwind-protect' without unwind forms")
+
+ (test-suppression
+ '(defun zot ()
+ (let ((_ 1))
+ ))
+ '((empty-body let))
+ "Warning: `let' with empty body")
+
+ (test-suppression
+ '(defun zot ()
+ (let* ((_ 1))
+ ))
+ '((empty-body let*))
+ "Warning: `let\\*' with empty body")
+
+ (test-suppression
+ '(defun zot (x)
+ (when x
+ ))
+ '((empty-body when))
+ "Warning: `when' with empty body")
+
+ (test-suppression
+ '(defun zot (x)
+ (unless x
+ ))
+ '((empty-body unless))
+ "Warning: `unless' with empty body")
+
+ (test-suppression
+ '(defun zot (x)
+ (ignore-error arith-error
+ ))
+ '((empty-body ignore-error))
+ "Warning: `ignore-error' with empty body")
+
+ (test-suppression
+ '(defun zot (x)
+ (with-suppressed-warnings ((suspicious eq))
+ ))
+ '((empty-body with-suppressed-warnings))
+ "Warning: `with-suppressed-warnings' with empty body")
+ )
(ert-deftest bytecomp-tests--not-writable-directory ()
"Test that byte compilation works if the output directory isn't
@@ -1662,6 +1856,34 @@ EXPECTED-POINT BINDINGS (MODES \\='\\='(ruby-mode js-mode python-mode)) \
(should (eq (byte-compile-file src-file) 'no-byte-compile))
(should-not (file-exists-p dest-file))))
+(ert-deftest bytecomp--copy-tree ()
+ (should (null (bytecomp--copy-tree nil)))
+ (let ((print-circle t))
+ (let* ((x '(1 2 (3 4)))
+ (y (bytecomp--copy-tree x)))
+ (should (equal (prin1-to-string (list x y))
+ "((1 2 (3 4)) (1 2 (3 4)))")))
+ (let* ((x '#1=(a #1#))
+ (y (bytecomp--copy-tree x)))
+ (should (equal (prin1-to-string (list x y))
+ "(#1=(a #1#) #2=(a #2#))")))
+ (let* ((x '#1=(#1# a))
+ (y (bytecomp--copy-tree x)))
+ (should (equal (prin1-to-string (list x y))
+ "(#1=(#1# a) #2=(#2# a))")))
+ (let* ((x '((a . #1=(b)) #1#))
+ (y (bytecomp--copy-tree x)))
+ (should (equal (prin1-to-string (list x y))
+ "(((a . #1=(b)) #1#) ((a . #2=(b)) #2#))")))
+ (let* ((x '#1=(a #2=(#1# b . #3=(#2# c . #1#)) (#3# d)))
+ (y (bytecomp--copy-tree x)))
+ (should (equal (prin1-to-string (list x y))
+ (concat
+ "("
+ "#1=(a #2=(#1# b . #3=(#2# c . #1#)) (#3# d))"
+ " "
+ "#4=(a #5=(#4# b . #6=(#5# c . #4#)) (#6# d))"
+ ")"))))))
;; Local Variables:
;; no-byte-compile: t
diff --git a/test/lisp/emacs-lisp/cconv-tests.el b/test/lisp/emacs-lisp/cconv-tests.el
index 83013cf46a9..6facd3452ea 100644
--- a/test/lisp/emacs-lisp/cconv-tests.el
+++ b/test/lisp/emacs-lisp/cconv-tests.el
@@ -364,5 +364,30 @@
(call-interactively f))
'((t 51696) (nil 51695) (t 51697)))))))
+(ert-deftest cconv-safe-for-space ()
+ (let* ((magic-string "This-is-a-magic-string")
+ (safe-p (lambda (x) (not (string-match magic-string (format "%S" x))))))
+ (should (funcall safe-p (lambda (x) (+ x 1))))
+ (should (funcall safe-p (eval '(lambda (x) (+ x 1))
+ `((y . ,magic-string)))))
+ (should (funcall safe-p (eval '(lambda (x) :closure-dont-trim-context)
+ `((y . ,magic-string)))))
+ (should-not (funcall safe-p
+ (eval '(lambda (x) :closure-dont-trim-context (+ x 1))
+ `((y . ,magic-string)))))))
+
+(ert-deftest cconv-tests-interactive-form-modify-bug60974 ()
+ (let* ((f '(function (lambda (&optional arg)
+ (interactive
+ (list (if current-prefix-arg
+ (prefix-numeric-value current-prefix-arg)
+ 'toggle)))
+ (ignore arg))))
+ (if (cadr (nth 2 (cadr f))))
+ (if2))
+ (cconv-closure-convert f)
+ (setq if2 (cadr (nth 2 (cadr f))))
+ (should (eq if if2))))
+
(provide 'cconv-tests)
;;; cconv-tests.el ends here
diff --git a/test/lisp/emacs-lisp/cl-lib-tests.el b/test/lisp/emacs-lisp/cl-lib-tests.el
index d5886626bf1..4e1a0fd63a2 100644
--- a/test/lisp/emacs-lisp/cl-lib-tests.el
+++ b/test/lisp/emacs-lisp/cl-lib-tests.el
@@ -404,7 +404,7 @@
(ert-deftest cl-lib-nth-value-test-multiple-values ()
"While CL multiple values are an alias to list, these won't work."
:expected-result :failed
- (should (eq (cl-nth-value 0 '(2 3)) '(2 3)))
+ (should (equal (cl-nth-value 0 '(2 3)) '(2 3)))
(should (= (cl-nth-value 0 1) 1))
(should (null (cl-nth-value 1 1)))
(should-error (cl-nth-value -1 (cl-values 2 3)) :type 'args-out-of-range)
@@ -431,7 +431,8 @@
(should (eq nums (cdr (cl-adjoin 3 nums))))
;; add only when not already there
(should (eq nums (cl-adjoin 2 nums)))
- (should (equal '(2 1 (2)) (cl-adjoin 2 '(1 (2)))))
+ (with-suppressed-warnings ((suspicious memql))
+ (should (equal '(2 1 (2)) (cl-adjoin 2 '(1 (2))))))
;; default test function is eql
(should (equal '(1.0 1 2) (cl-adjoin 1.0 nums)))
;; own :test function - returns true if match
diff --git a/test/lisp/emacs-lisp/ert-tests.el b/test/lisp/emacs-lisp/ert-tests.el
index 3e499fc6f59..7713a0f6e38 100644
--- a/test/lisp/emacs-lisp/ert-tests.el
+++ b/test/lisp/emacs-lisp/ert-tests.el
@@ -577,13 +577,12 @@ This macro is used to test if macroexpansion in `should' works."
(lambda (format-string &rest args)
(push (apply #'format format-string args) messages))))
(save-window-excursion
- (unwind-protect
- (let ((case-fold-search nil)
- (ert-batch-backtrace-right-margin nil)
- (ert-batch-print-level 10)
- (ert-batch-print-length 11))
- (ert-run-tests-batch
- `(member ,failing-test-1 ,failing-test-2))))))
+ (let ((case-fold-search nil)
+ (ert-batch-backtrace-right-margin nil)
+ (ert-batch-print-level 10)
+ (ert-batch-print-length 11))
+ (ert-run-tests-batch
+ `(member ,failing-test-1 ,failing-test-2)))))
(let ((long-text "(different-types[ \t\n]+(1 1 1 1 1 1 1 1 1 1 1)[ \t\n]+1)))[ \t\n]*$")
(complex-text "(different-types[ \t\n]+((:1[ \t\n]+(:2[ \t\n]+(:3[ \t\n]+(:4[ \t\n]+(:5[ \t\n]+(:6[ \t\n]+\"abc\")))))))[ \t\n]+1)))[ \t\n]*$")
found-long
@@ -609,14 +608,13 @@ This macro is used to test if macroexpansion in `should' works."
(lambda (format-string &rest args)
(push (apply #'format format-string args) messages))))
(save-window-excursion
- (unwind-protect
- (let ((case-fold-search nil)
- (ert-batch-backtrace-right-margin nil)
- (ert-batch-backtrace-line-length nil)
- (ert-batch-print-level 6)
- (ert-batch-print-length 11))
- (ert-run-tests-batch
- `(member ,failing-test-1))))))
+ (let ((case-fold-search nil)
+ (ert-batch-backtrace-right-margin nil)
+ (ert-batch-backtrace-line-length nil)
+ (ert-batch-print-level 6)
+ (ert-batch-print-length 11))
+ (ert-run-tests-batch
+ `(member ,failing-test-1)))))
(let ((frame "ert-fail(((should (equal complex-list 1)) :form (equal ((:1 (:2 (:3 (:4 (:5 (:6 \"abc\"))))))) 1) :value nil :explanation (different-types ((:1 (:2 (:3 (:4 (:5 (:6 \"abc\"))))))) 1)))")
found-frame)
(cl-loop for msg in (reverse messages)
diff --git a/test/lisp/emacs-lisp/multisession-tests.el b/test/lisp/emacs-lisp/multisession-tests.el
index c55db6491cd..639a8ab5219 100644
--- a/test/lisp/emacs-lisp/multisession-tests.el
+++ b/test/lisp/emacs-lisp/multisession-tests.el
@@ -94,7 +94,7 @@
(dotimes (i 100)
(cl-incf (multisession-value multisession--bar))))))))
(while (process-live-p proc)
- (ignore-error 'sqlite-locked-error
+ (ignore-error sqlite-locked-error
(message "multisession--bar %s" (multisession-value multisession--bar))
;;(cl-incf (multisession-value multisession--bar))
)
diff --git a/test/lisp/emacs-lisp/nadvice-tests.el b/test/lisp/emacs-lisp/nadvice-tests.el
index 748d42f2120..f6bd5733ba3 100644
--- a/test/lisp/emacs-lisp/nadvice-tests.el
+++ b/test/lisp/emacs-lisp/nadvice-tests.el
@@ -29,6 +29,7 @@
(advice-add 'sm-test1 :around (lambda (f y) (* (funcall f y) 2)))
(advice-remove 'sm-test1 (lambda (f y) (* (funcall f y) 5)))
(defun sm-test1 (x) (+ x 4))
+ (declare-function sm-test1 nil)
(should (equal (sm-test1 6) 20))
(advice-remove 'sm-test1 (lambda (f y) (* (funcall f y) 2)))
(should (equal (sm-test1 6) 10))
@@ -62,6 +63,7 @@
(ert-deftest advice-tests-advice ()
"Test advice code."
(defun sm-test2 (x) (+ x 4))
+ (declare-function sm-test2 nil)
(should (equal (sm-test2 6) 10))
(defadvice sm-test2 (around sm-test activate)
ad-do-it (setq ad-return-value (* ad-return-value 5)))
@@ -94,6 +96,7 @@
(ert-deftest advice-tests-combination ()
"Combining old style and new style advices."
(defun sm-test5 (x) (+ x 4))
+ (declare-function sm-test5 nil)
(should (equal (sm-test5 6) 10))
(advice-add 'sm-test5 :around (lambda (f y) (* (funcall f y) 5)))
(should (equal (sm-test5 6) 50))
@@ -112,22 +115,23 @@
(ert-deftest advice-test-called-interactively-p ()
"Check interaction between advice and called-interactively-p."
(defun sm-test7 (&optional x) (interactive) (+ (or x 7) 4))
+ (declare-function sm-test7 nil)
(advice-add 'sm-test7 :around
(lambda (f &rest args)
- (list (cons 1 (called-interactively-p)) (apply f args))))
+ (list (cons 1 (called-interactively-p 'any)) (apply f args))))
(should (equal (sm-test7) '((1 . nil) 11)))
(should (equal (call-interactively 'sm-test7) '((1 . t) 11)))
(let ((smi 7))
(advice-add 'sm-test7 :before
- (lambda (&rest args)
- (setq smi (called-interactively-p))))
+ (lambda (&rest _args)
+ (setq smi (called-interactively-p 'any))))
(should (equal (list (sm-test7) smi)
'(((1 . nil) 11) nil)))
(should (equal (list (call-interactively 'sm-test7) smi)
'(((1 . t) 11) t))))
(advice-add 'sm-test7 :around
(lambda (f &rest args)
- (cons (cons 2 (called-interactively-p)) (apply f args))))
+ (cons (cons 2 (called-interactively-p 'any)) (apply f args))))
(should (equal (call-interactively 'sm-test7) '((2 . t) (1 . t) 11))))
(ert-deftest advice-test-called-interactively-p-around ()
@@ -136,24 +140,28 @@
This tests the currently broken case of the innermost advice to a
function being an around advice."
:expected-result :failed
- (defun sm-test7.2 () (interactive) (cons 1 (called-interactively-p)))
+ (defun sm-test7.2 () (interactive) (cons 1 (called-interactively-p 'any)))
+ (declare-function sm-test7.2 nil)
(advice-add 'sm-test7.2 :around
(lambda (f &rest args)
- (list (cons 1 (called-interactively-p)) (apply f args))))
+ (list (cons 1 (called-interactively-p 'any)) (apply f args))))
(should (equal (sm-test7.2) '((1 . nil) (1 . nil))))
(should (equal (call-interactively 'sm-test7.2) '((1 . t) (1 . t)))))
(ert-deftest advice-test-called-interactively-p-filter-args ()
"Check interaction between filter-args advice and called-interactively-p."
:expected-result :failed
- (defun sm-test7.3 () (interactive) (cons 1 (called-interactively-p)))
+ (defun sm-test7.3 () (interactive) (cons 1 (called-interactively-p 'any)))
+ (declare-function sm-test7.3 nil)
(advice-add 'sm-test7.3 :filter-args #'list)
(should (equal (sm-test7.3) '(1 . nil)))
(should (equal (call-interactively 'sm-test7.3) '(1 . t))))
(ert-deftest advice-test-call-interactively ()
"Check interaction between advice on call-interactively and called-interactively-p."
- (let ((sm-test7.4 (lambda () (interactive) (cons 1 (called-interactively-p))))
+ (let ((sm-test7.4 (lambda ()
+ (interactive)
+ (cons 1 (called-interactively-p 'any))))
(old (symbol-function 'call-interactively)))
(unwind-protect
(progn
@@ -213,8 +221,16 @@ function being an around advice."
(should (equal (cl-prin1-to-string (car x))
"#f(advice first :before #f(advice car :after cdr))"))))
-;; Local Variables:
-;; no-byte-compile: t
-;; End:
+(ert-deftest advice-test-bug61179 ()
+ (let* ((magic 42)
+ (ad (lambda (&rest _)
+ (interactive (lambda (is)
+ (cons magic (advice-eval-interactive-spec is))))
+ nil))
+ (sym (make-symbol "adtest")))
+ (defalias sym (lambda (&rest args) (interactive (list 'main)) args))
+ (should (equal (call-interactively sym) '(main)))
+ (advice-add sym :before ad)
+ (should (equal (call-interactively sym) '(42 main)))))
;;; nadvice-tests.el ends here
diff --git a/test/lisp/emacs-lisp/shortdoc-tests.el b/test/lisp/emacs-lisp/shortdoc-tests.el
index 516d095767f..596b47d2543 100644
--- a/test/lisp/emacs-lisp/shortdoc-tests.el
+++ b/test/lisp/emacs-lisp/shortdoc-tests.el
@@ -65,6 +65,49 @@
(when buf
(kill-buffer buf))))))
+(defun shortdoc-tests--to-ascii (x)
+ "Translate Unicode arrows to ASCII for making the test work everywhere."
+ (cond ((consp x)
+ (cons (shortdoc-tests--to-ascii (car x))
+ (shortdoc-tests--to-ascii (cdr x))))
+ ((stringp x)
+ (thread-last x
+ (string-replace "⇒" "=>")
+ (string-replace "→" "->")))
+ (t x)))
+
+(ert-deftest shortdoc-function-examples-test ()
+ "Test the extraction of usage examples of some Elisp functions."
+ (should (equal '((list . "(delete 2 (list 1 2 3 4))\n => (1 3 4)\n (delete \"a\" (list \"a\" \"b\" \"c\" \"d\"))\n => (\"b\" \"c\" \"d\")"))
+ (shortdoc-tests--to-ascii
+ (shortdoc-function-examples 'delete))))
+ (should (equal '((alist . "(assq 'foo '((foo . bar) (zot . baz)))\n => (foo . bar)")
+ (list . "(assq 'b '((a . 1) (b . 2)))\n => (b . 2)"))
+ (shortdoc-tests--to-ascii
+ (shortdoc-function-examples 'assq))))
+ (should (equal '((regexp . "(string-match-p \"^[fo]+\" \"foobar\")\n => 0"))
+ (shortdoc-tests--to-ascii
+ (shortdoc-function-examples 'string-match-p)))))
+
+(ert-deftest shortdoc-help-fns-examples-function-test ()
+ "Test that `shortdoc-help-fns-examples-function' correctly prints ELisp function examples."
+ (with-temp-buffer
+ (shortdoc-help-fns-examples-function 'string-fill)
+ (should (equal "\n Examples:\n\n (string-fill \"Three short words\" 12)\n => \"Three short\\nwords\"\n (string-fill \"Long-word\" 3)\n => \"Long-word\"\n\n"
+ (shortdoc-tests--to-ascii
+ (buffer-substring-no-properties (point-min) (point-max)))))
+ (erase-buffer)
+ (shortdoc-help-fns-examples-function 'assq)
+ (should (equal "\n Examples:\n\n (assq 'foo '((foo . bar) (zot . baz)))\n => (foo . bar)\n\n (assq 'b '((a . 1) (b . 2)))\n => (b . 2)\n\n"
+ (shortdoc-tests--to-ascii
+ (buffer-substring-no-properties (point-min) (point-max)))))
+ (erase-buffer)
+ (shortdoc-help-fns-examples-function 'string-trim)
+ (should (equal "\n Example:\n\n (string-trim \" foo \")\n => \"foo\"\n\n"
+ (shortdoc-tests--to-ascii
+ (buffer-substring-no-properties (point-min)
+ (point-max)))))))
+
(provide 'shortdoc-tests)
;;; shortdoc-tests.el ends here
diff --git a/test/lisp/erc/erc-dcc-tests.el b/test/lisp/erc/erc-dcc-tests.el
index bd8a9fc7951..7fb5f82e784 100644
--- a/test/lisp/erc/erc-dcc-tests.el
+++ b/test/lisp/erc/erc-dcc-tests.el
@@ -60,6 +60,8 @@
erc-input-marker (make-marker)
erc-insert-marker (make-marker)
erc-server-current-nick "dummy")
+ (erc-display-prompt)
+ (set-marker erc-insert-marker (pos-bol))
(set-process-query-on-exit-flag erc-server-process nil)
(should-not erc-dcc-list)
(erc-ctcp-query-DCC erc-server-process
@@ -100,7 +102,7 @@
(ert-deftest erc-dcc-handle-ctcp-send--turbo ()
(erc-dcc-tests--dcc-handle-ctcp-send t))
-(ert-deftest erc-dcc-do-GET-command ()
+(defun erc-dcc-tests--erc-dcc-do-GET-command (file &optional sep)
(with-temp-buffer
(let* ((proc (start-process "fake" (current-buffer) "sleep" "10"))
(elt (list :nick "tester!~tester@fake.irc"
@@ -109,7 +111,7 @@
:parent proc
:ip "127.0.0.1"
:port "9899"
- :file "foo.bin"
+ :file file
:size 1405135128))
(erc-dcc-list (list elt))
;;
@@ -124,7 +126,7 @@
erc-server-current-nick "dummy")
(set-process-query-on-exit-flag proc nil)
(cl-letf (((symbol-function 'read-file-name)
- (lambda (&rest _) "foo.bin"))
+ (lambda (&rest _) file))
((symbol-function 'erc-dcc-get-file)
(lambda (&rest r) (push r calls))))
(goto-char (point-max))
@@ -134,38 +136,44 @@
(ert-info ("No turbo")
(should-not (plist-member elt :turbo))
(goto-char erc-input-marker)
- (insert "/dcc GET tester foo.bin")
+ (insert "/dcc GET tester " (or sep "") (prin1-to-string file))
(erc-send-current-line)
(should-not (plist-member (car erc-dcc-list) :turbo))
- (should (equal (pop calls) (list elt "foo.bin" proc))))
+ (should (equal (pop calls) (list elt file proc))))
(ert-info ("Arg turbo in pos 2")
(should-not (plist-member elt :turbo))
(goto-char erc-input-marker)
- (insert "/dcc GET -t tester foo.bin")
+ (insert "/dcc GET -t tester " (or sep "") (prin1-to-string file))
(erc-send-current-line)
(should (eq t (plist-get (car erc-dcc-list) :turbo)))
- (should (equal (pop calls) (list elt "foo.bin" proc))))
+ (should (equal (pop calls) (list elt file proc))))
(ert-info ("Arg turbo in pos 4")
(setq elt (plist-put elt :turbo nil)
erc-dcc-list (list elt))
(goto-char erc-input-marker)
- (insert "/dcc GET tester -t foo.bin")
+ (insert "/dcc GET tester -t " (or sep "") (prin1-to-string file))
(erc-send-current-line)
(should (eq t (plist-get (car erc-dcc-list) :turbo)))
- (should (equal (pop calls) (list elt "foo.bin" proc))))
+ (should (equal (pop calls) (list elt file proc))))
(ert-info ("Arg turbo in pos 6")
(setq elt (plist-put elt :turbo nil)
erc-dcc-list (list elt))
(goto-char erc-input-marker)
- (insert "/dcc GET tester foo.bin -t")
+ (insert "/dcc GET tester " (prin1-to-string file) " -t" (or sep ""))
(erc-send-current-line)
- (should (eq t (plist-get (car erc-dcc-list) :turbo)))
- (should (equal (pop calls) (list elt "foo.bin" proc))))))))
+ (should (eq (if sep nil t) (plist-get (car erc-dcc-list) :turbo)))
+ (should (equal (pop calls) (if sep nil (list elt file proc)))))))))
+
+(ert-deftest erc-dcc-do-GET-command ()
+ (erc-dcc-tests--erc-dcc-do-GET-command "foo.bin")
+ (erc-dcc-tests--erc-dcc-do-GET-command "foo - file.bin")
+ (erc-dcc-tests--erc-dcc-do-GET-command "foo -t file.bin")
+ (erc-dcc-tests--erc-dcc-do-GET-command "-t" "-- "))
-(defun erc-dcc-tests--pcomplete-common (test-fn)
+(defun erc-dcc-tests--pcomplete-common (test-fn &optional file)
(with-current-buffer (get-buffer-create "*erc-dcc-do-GET-command*")
(let* ((inhibit-message noninteractive)
(proc (start-process "fake" (current-buffer) "sleep" "10"))
@@ -175,7 +183,7 @@
:parent proc
:ip "127.0.0.1"
:port "9899"
- :file "foo.bin"
+ :file (or file "foo.bin")
:size 1405135128))
;;
erc-accidental-paste-threshold-seconds
@@ -211,6 +219,20 @@
(beginning-of-line)
(should (search-forward "/dcc get tester foo.bin" nil t))))))
+(ert-deftest pcomplete/erc-mode/DCC--get-quoted ()
+ (erc-dcc-tests--pcomplete-common
+ (lambda ()
+ (insert "/dcc get ")
+ (call-interactively #'completion-at-point)
+ (save-excursion
+ (beginning-of-line)
+ (should (search-forward "/dcc get tester" nil t)))
+ (call-interactively #'completion-at-point)
+ (save-excursion
+ (beginning-of-line)
+ (should (search-forward "/dcc get tester \"foo bar.bin\"" nil t))))
+ "foo bar.bin"))
+
(ert-deftest pcomplete/erc-mode/DCC--get-1flag ()
(erc-dcc-tests--pcomplete-common
(lambda ()
@@ -282,4 +304,23 @@
(beginning-of-line)
(should (search-forward "/dcc get -t -s tester foo.bin" nil t))))))
+(ert-deftest pcomplete/erc-mode/DCC--get-sep ()
+ (erc-dcc-tests--pcomplete-common
+ (lambda ()
+ (insert "/dcc get ")
+ (call-interactively #'completion-at-point)
+ (save-excursion
+ (beginning-of-line)
+ (should (search-forward "/dcc get tester" nil t)))
+ (insert "-")
+ (call-interactively #'completion-at-point)
+ (save-excursion
+ (beginning-of-line)
+ (should (search-forward "/dcc get tester -- " nil t)))
+ (call-interactively #'completion-at-point)
+ (save-excursion
+ (beginning-of-line)
+ (should (search-forward "/dcc get tester -- -t" nil t))))
+ "-t"))
+
;;; erc-dcc-tests.el ends here
diff --git a/test/lisp/erc/erc-fill-tests.el b/test/lisp/erc/erc-fill-tests.el
new file mode 100644
index 00000000000..f249be8fb86
--- /dev/null
+++ b/test/lisp/erc/erc-fill-tests.el
@@ -0,0 +1,313 @@
+;;; erc-fill-tests.el --- Tests for erc-fill -*- lexical-binding:t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; FIXME these tests are brittle and error prone. Replace with
+;; scenarios.
+
+;;; Code:
+(require 'ert-x)
+(require 'erc-fill)
+
+(defvar erc-fill-tests--buffers nil)
+(defvar erc-fill-tests--time-vals (lambda () 0))
+
+(defun erc-fill-tests--insert-privmsg (speaker &rest msg-parts)
+ (declare (indent 1))
+ (let ((msg (erc-format-privmessage speaker
+ (apply #'concat msg-parts) nil t)))
+ (put-text-property 0 (length msg) 'erc-command 'PRIVMSG msg)
+ (erc-display-message nil nil (current-buffer) msg)))
+
+(defun erc-fill-tests--wrap-populate (test)
+ (let ((original-window-buffer (window-buffer (selected-window)))
+ (erc-stamp--tz t)
+ (erc-fill-function 'erc-fill-wrap)
+ (pre-command-hook pre-command-hook)
+ (inhibit-message noninteractive)
+ erc-insert-post-hook
+ extended-command-history
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (cl-letf (((symbol-function 'erc-stamp--current-time)
+ (lambda () (funcall erc-fill-tests--time-vals)))
+ ((symbol-function 'erc-server-connect)
+ (lambda (&rest _)
+ (setq erc-server-process
+ (start-process "sleep" (current-buffer) "sleep" "1"))
+ (set-process-query-on-exit-flag erc-server-process nil))))
+ (with-current-buffer
+ (car (push (erc-open "localhost" 6667 "tester" "Tester" 'connect
+ nil nil nil nil nil "tester" 'foonet)
+ erc-fill-tests--buffers))
+ (setq erc-network 'foonet
+ erc-server-connected t)
+ (with-current-buffer (erc--open-target "#chan")
+ (set-window-buffer (selected-window) (current-buffer))
+
+ (erc-update-channel-member
+ "#chan" "alice" "alice" t nil nil nil nil nil "fake" "~u" nil nil t)
+
+ (erc-update-channel-member
+ "#chan" "bob" "bob" t nil nil nil nil nil "fake" "~u" nil nil t)
+
+ (erc-display-message
+ nil 'notice (current-buffer)
+ (concat "This server is in debug mode and is logging all user I/O. "
+ "If you do not wish for everything you send to be readable "
+ "by the server owner(s), please disconnect."))
+
+ (erc-fill-tests--insert-privmsg "alice"
+ "bob: come, you are a tedious fool: to the purpose. "
+ "What was done to Elbow's wife, that he hath cause to complain of? "
+ "Come me to what was done to her.")
+
+ ;; Introduce an artificial gap in properties `line-prefix' and
+ ;; `wrap-prefix' and later ensure they're not incremented twice.
+ (save-excursion
+ (forward-line -1)
+ (search-forward "? ")
+ (with-silent-modifications
+ (remove-text-properties (1- (point)) (point)
+ '(line-prefix t wrap-prefix t))))
+
+ (erc-fill-tests--insert-privmsg "bob"
+ "alice: Either your unparagoned mistress is dead, "
+ "or she's outprized by a trifle.")
+
+ ;; Defend against non-local exits from `ert-skip'
+ (unwind-protect
+ (funcall test)
+ (set-window-buffer (selected-window) original-window-buffer)
+ (when noninteractive
+ (while-let ((buf (pop erc-fill-tests--buffers)))
+ (kill-buffer buf))
+ (kill-buffer))))))))
+
+(defun erc-fill-tests--wrap-check-prefixes (&rest prefixes)
+ ;; Check that prefix props are applied over correct intervals.
+ (save-excursion
+ (goto-char (point-min))
+ (dolist (prefix prefixes)
+ (should (search-forward prefix nil t))
+ (should (get-text-property (pos-bol) 'line-prefix))
+ (should (get-text-property (pos-eol) 'line-prefix))
+ (should (equal (get-text-property (pos-bol) 'wrap-prefix)
+ '(space :width erc-fill--wrap-value)))
+ (should (equal (get-text-property (pos-eol) 'wrap-prefix)
+ '(space :width erc-fill--wrap-value))))))
+
+;; Set this variable to t to generate new snapshots after carefully
+;; reviewing the output of *each* snapshot (not just first and last).
+;; Obviously, only run one test at a time.
+(defvar erc-fill-tests--save-p nil)
+
+(defun erc-fill-tests--compare (name)
+ (when (display-graphic-p)
+ (setq name (concat name "-graphic")))
+ (let* ((dir (expand-file-name "fill/snapshots/" (ert-resource-directory)))
+ (expect-file (file-name-with-extension (expand-file-name name dir)
+ "eld"))
+ (erc--own-property-names
+ (seq-difference `(font-lock-face ,@erc--own-property-names)
+ '(field display wrap-prefix line-prefix)
+ #'eq))
+ (print-circle t)
+ (print-escape-newlines t)
+ (print-escape-nonascii t)
+ (got (erc--remove-text-properties
+ (buffer-substring (point-min) erc-insert-marker)))
+ (repr (string-replace "erc-fill--wrap-value"
+ (number-to-string erc-fill--wrap-value)
+ (prin1-to-string got))))
+ (with-current-buffer (generate-new-buffer name)
+ (push name erc-fill-tests--buffers)
+ (with-silent-modifications
+ (insert (setq got (read repr))))
+ (erc-mode))
+ (if erc-fill-tests--save-p
+ (with-temp-file expect-file
+ (insert repr))
+ (if (file-exists-p expect-file)
+ ;; Compare set-equal over intervals
+ (should (equal-including-properties
+ (read repr)
+ (read (with-temp-buffer
+ (insert-file-contents-literally expect-file)
+ (buffer-string)))))
+ (message "Snapshot file missing: %S" expect-file)))))
+
+;; To inspect variable pitch, set `erc-mode-hook' to
+;;
+;; (lambda () (face-remap-add-relative 'default :family "Sans Serif"))
+;;
+;; or similar.
+
+(ert-deftest erc-fill-wrap--monospace ()
+ :tags '(:unstable)
+ (unless (>= emacs-major-version 29)
+ (ert-skip "Emacs version too low, missing `buffer-text-pixel-size'"))
+
+ (erc-fill-tests--wrap-populate
+
+ (lambda ()
+ (should (= erc-fill--wrap-value 27))
+ (erc-fill-tests--wrap-check-prefixes "*** " "<alice> " "<bob> ")
+ (erc-fill-tests--compare "monospace-01-start")
+
+ (ert-info ("Shift right by one (plus)")
+ ;; Args are all `erc-fill-wrap-nudge' +1 because interactive "p"
+ (ert-with-message-capture messages
+ ;; M-x erc-fill-wrap-nudge RET =
+ (ert-simulate-command '(erc-fill-wrap-nudge 2))
+ (should (string-match (rx "for further adjustment") messages)))
+ (should (= erc-fill--wrap-value 29))
+ (erc-fill-tests--wrap-check-prefixes "*** " "<alice> " "<bob> ")
+ (erc-fill-tests--compare "monospace-02-right"))
+
+ (ert-info ("Shift left by five")
+ ;; "M-x erc-fill-wrap-nudge RET -----"
+ (ert-simulate-command '(erc-fill-wrap-nudge -4))
+ (should (= erc-fill--wrap-value 25))
+ (erc-fill-tests--wrap-check-prefixes "*** " "<alice> " "<bob> ")
+ (erc-fill-tests--compare "monospace-03-left"))
+
+ (ert-info ("Reset")
+ ;; M-x erc-fill-wrap-nudge RET 0
+ (ert-simulate-command '(erc-fill-wrap-nudge 0))
+ (should (= erc-fill--wrap-value 27))
+ (erc-fill-tests--wrap-check-prefixes "*** " "<alice> " "<bob> ")
+ (erc-fill-tests--compare "monospace-04-reset")))))
+
+(ert-deftest erc-fill-wrap--merge ()
+ :tags '(:unstable)
+ (unless (>= emacs-major-version 29)
+ (ert-skip "Emacs version too low, missing `buffer-text-pixel-size'"))
+
+ (erc-fill-tests--wrap-populate
+
+ (lambda ()
+ ;; Set this here so that the first few messages are from 1970
+ (let ((erc-fill-tests--time-vals (lambda () 1680332400)))
+ (erc-fill-tests--insert-privmsg "bob" "zero.")
+ (erc-fill-tests--insert-privmsg "alice" "one.")
+ (erc-fill-tests--insert-privmsg "alice" "two.")
+ (erc-fill-tests--insert-privmsg "bob" "three.")
+ (erc-fill-tests--insert-privmsg "bob" "four."))
+
+ (should (= erc-fill--wrap-value 27))
+ (erc-fill-tests--wrap-check-prefixes
+ "*** " "<alice> " "<bob> "
+ "<bob> " "<alice> " "<alice> " "<bob> " "<bob> ")
+ (erc-fill-tests--compare "merge-01-start")
+
+ (ert-info ("Shift right by one (plus)")
+ (ert-simulate-command '(erc-fill-wrap-nudge 2))
+ (should (= erc-fill--wrap-value 29))
+ (erc-fill-tests--wrap-check-prefixes
+ "*** " "<alice> " "<bob> "
+ "<bob> " "<alice> " "<alice> " "<bob> " "<bob> ")
+ (erc-fill-tests--compare "merge-02-right")))))
+
+(ert-deftest erc-fill-wrap-visual-keys--body ()
+ :tags '(:unstable)
+ (erc-fill-tests--wrap-populate
+
+ (lambda ()
+ (ert-info ("Value: non-input")
+ (should (eq erc-fill--wrap-visual-keys 'non-input))
+ (goto-char (point-min))
+ (should (search-forward "that he hath" nil t))
+ (execute-kbd-macro "\C-a")
+ (should-not (looking-at (rx "<alice> ")))
+ (execute-kbd-macro "\C-e")
+ (should (search-backward "tedious fool" nil t))
+ (should-not (looking-back "done to her\\."))
+ (forward-char)
+ (execute-kbd-macro "\C-e")
+ (should (search-forward "done to her." nil t)))
+
+ (ert-info ("Value: nil")
+ (execute-kbd-macro "\C-ca")
+ (should-not erc-fill--wrap-visual-keys)
+ (goto-char (point-min))
+ (should (search-forward "in debug mode" nil t))
+ (execute-kbd-macro "\C-a")
+ (should (looking-at (rx "*** ")))
+ (execute-kbd-macro "\C-e")
+ (should (eql ?\] (char-before (point)))))
+
+ (ert-info ("Value: t")
+ (execute-kbd-macro "\C-ca")
+ (should (eq erc-fill--wrap-visual-keys t))
+ (goto-char (point-min))
+ (should (search-forward "that he hath" nil t))
+ (execute-kbd-macro "\C-a")
+ (should-not (looking-at (rx "<alice> ")))
+ (should (search-backward "tedious fool" nil t))
+ (execute-kbd-macro "\C-e")
+ (should-not (looking-back (rx "done to her\\.")))
+ (should (search-forward "done to her." nil t))
+ (execute-kbd-macro "\C-a")
+ (should-not (looking-at (rx "<alice> ")))))))
+
+(ert-deftest erc-fill-wrap-visual-keys--prompt ()
+ :tags '(:unstable)
+ (erc-fill-tests--wrap-populate
+
+ (lambda ()
+ (set-window-buffer (selected-window) (current-buffer))
+ (goto-char erc-input-marker)
+ (insert "This buffer is for text that is not saved, and for Lisp "
+ "evaluation. To create a file, visit it with C-x C-f and "
+ "enter text in its buffer.")
+
+ (ert-info ("Value: non-input")
+ (should (eq erc-fill--wrap-visual-keys 'non-input))
+ (execute-kbd-macro "\C-a")
+ (should (looking-at "This buffer"))
+ (execute-kbd-macro "\C-e")
+ (should (looking-back "its buffer\\."))
+ (execute-kbd-macro "\C-a")
+ (execute-kbd-macro "\C-k")
+ (should (eobp)))
+
+ (ert-info ("Value: nil") ; same
+ (execute-kbd-macro "\C-ca")
+ (should-not erc-fill--wrap-visual-keys)
+ (execute-kbd-macro "\C-y")
+ (should (looking-back "its buffer\\."))
+ (execute-kbd-macro "\C-a")
+ (should (looking-at "This buffer"))
+ (execute-kbd-macro "\C-k")
+ (should (eobp)))
+
+ (ert-info ("Value: non-input")
+ (execute-kbd-macro "\C-ca")
+ (should (eq erc-fill--wrap-visual-keys t))
+ (execute-kbd-macro "\C-y")
+ (execute-kbd-macro "\C-a")
+ (should-not (looking-at "This buffer"))
+ (execute-kbd-macro "\C-p")
+ (should-not (looking-back "its buffer\\."))
+ (should (search-forward "its buffer." nil t))
+ (should (search-backward "ERC> " nil t))
+ (execute-kbd-macro "\C-a")))))
+
+;;; erc-fill-tests.el ends here
diff --git a/test/lisp/erc/erc-goodies-tests.el b/test/lisp/erc/erc-goodies-tests.el
new file mode 100644
index 00000000000..a1f53c5bf88
--- /dev/null
+++ b/test/lisp/erc/erc-goodies-tests.el
@@ -0,0 +1,334 @@
+;;; erc-goodies-tests.el --- Tests for erc-goodies -*- lexical-binding:t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;; Code:
+(require 'ert-x)
+(require 'erc-goodies)
+(declare-function erc--initialize-markers "erc" (old-point continued) t)
+
+(defun erc-goodies-tests--assert-face (beg end-str present &optional absent)
+ (setq beg (+ beg (point-min)))
+ (let ((end (+ beg (1- (length end-str)))))
+ (while (and beg (< beg end))
+ (let* ((val (get-text-property beg 'font-lock-face))
+ (ft (flatten-tree (ensure-list val))))
+ (dolist (p (ensure-list present))
+ (if (consp p)
+ (should (member p val))
+ (should (memq p ft))))
+ (dolist (a (ensure-list absent))
+ (if (consp a)
+ (should-not (member a val))
+ (should-not (memq a ft))))
+ (setq beg (text-property-not-all beg (point-max)
+ 'font-lock-face val))))))
+
+;; These are from the "Examples" section of
+;; https://modern.ircdocs.horse/formatting.html
+
+(ert-deftest erc-controls-highlight--examples ()
+ ;; FIXME remove after adding
+ (unless (fboundp 'erc--initialize-markers)
+ (ert-skip "Missing required function"))
+ (should (eq t erc-interpret-controls-p))
+ (let ((erc-insert-modify-hook '(erc-controls-highlight))
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (with-current-buffer (get-buffer-create "#chan")
+ (erc-mode)
+ (setq-local erc-interpret-mirc-color t)
+ (erc--initialize-markers (point) nil)
+
+ (let* ((m "I love \C-c3IRC!\C-c It is the \C-c7best protocol ever!")
+ (msg (erc-format-privmessage "bob" m nil t)))
+ (erc-display-message nil nil (current-buffer) msg))
+ (forward-line -1)
+ (should (search-forward "<bob> " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (erc-goodies-tests--assert-face
+ 0 "I love" 'erc-default-face 'fg:erc-color-face3)
+ (erc-goodies-tests--assert-face
+ 7 " IRC!" 'fg:erc-color-face3)
+ (erc-goodies-tests--assert-face
+ 11 " It is the " 'erc-default-face 'fg:erc-color-face7)
+ (erc-goodies-tests--assert-face
+ 22 "best protocol ever!" 'fg:erc-color-face7))
+
+ (let* ((m "This is a \C-]\C-c13,9cool \C-cmessage")
+ (msg (erc-format-privmessage "alice" m nil t)))
+ (erc-display-message nil nil (current-buffer) msg))
+ (should (search-forward "<alice> " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (erc-goodies-tests--assert-face
+ 0 "this is a " 'erc-default-face 'erc-italic-face)
+ (erc-goodies-tests--assert-face
+ 10 "cool " '(erc-italic-face fg:erc-color-face13 bg:erc-color-face9))
+ (erc-goodies-tests--assert-face
+ 15 "message" 'erc-italic-face
+ '(fg:erc-color-face13 bg:erc-color-face9)))
+
+ (let* ((m "IRC \C-bis \C-c4,12so \C-cgreat\C-o!")
+ (msg (erc-format-privmessage "bob" m nil t)))
+ (erc-display-message nil nil (current-buffer) msg))
+ (should (search-forward "<bob> " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (erc-goodies-tests--assert-face
+ 0 "IRC " 'erc-default-face 'erc-bold-face)
+ (erc-goodies-tests--assert-face
+ 4 "is " 'erc-bold-face '(fg:erc-color-face4 bg:erc-color-face12))
+ (erc-goodies-tests--assert-face
+ 7 "so " '(erc-bold-face fg:erc-color-face4 bg:erc-color-face12))
+ (erc-goodies-tests--assert-face
+ 10 "great" 'erc-bold-face '(fg:erc-color-face4 bg:erc-color-face12))
+ (erc-goodies-tests--assert-face
+ 15 "!" 'erc-default-face 'erc-bold-face))
+
+ (let* ((m (concat "Rules: Don't spam 5\C-c13,8,6\C-c,7,8, "
+ "and especially not \C-b9\C-b\C-]!"))
+ (msg (erc-format-privmessage "alice" m nil t)))
+ (erc-display-message nil nil (current-buffer) msg))
+ (should (search-forward "<alice> " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (erc-goodies-tests--assert-face
+ 0 "Rules: Don't spam 5" 'erc-default-face
+ '(fg:erc-color-face13 bg:erc-color-face8))
+ (erc-goodies-tests--assert-face
+ 19 ",6" '(fg:erc-color-face13 bg:erc-color-face8))
+ (erc-goodies-tests--assert-face
+ 21 ",7,8, and especially not " 'erc-default-face
+ '(fg:erc-color-face13 bg:erc-color-face8 erc-bold-face))
+ (erc-goodies-tests--assert-face
+ 44 "9" 'erc-bold-face 'erc-italic-face)
+ (erc-goodies-tests--assert-face
+ 45 "!" 'erc-italic-face 'erc-bold-face))
+
+ (when noninteractive
+ (kill-buffer)))))
+
+;; Like the test above, this is most intuitive when run interactively.
+;; Hovering over the redacted area should reveal its underlying text
+;; in a high-contrast face.
+
+(ert-deftest erc-controls-highlight--inverse ()
+ ;; FIXME remove after adding
+ (unless (fboundp 'erc--initialize-markers)
+ (ert-skip "Missing required function"))
+ (should (eq t erc-interpret-controls-p))
+ (let ((erc-insert-modify-hook '(erc-controls-highlight))
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (with-current-buffer (get-buffer-create "#chan")
+ (erc-mode)
+ (setq-local erc-interpret-mirc-color t)
+ (erc--initialize-markers (point) nil)
+
+ (let* ((m "Spoiler: \C-c0,0Hello\C-c1,1World!")
+ (msg (erc-format-privmessage "bob" m nil t)))
+ (erc-display-message nil nil (current-buffer) msg))
+ (forward-line -1)
+ (should (search-forward "<bob> " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (should (eq (get-text-property (+ 9 (point)) 'mouse-face)
+ 'erc-inverse-face))
+ (should (eq (get-text-property (1- (pos-eol)) 'mouse-face)
+ 'erc-inverse-face))
+ (erc-goodies-tests--assert-face
+ 0 "Spoiler: " 'erc-default-face
+ '(fg:erc-color-face0 bg:erc-color-face0))
+ (erc-goodies-tests--assert-face
+ 9 "Hello" '(erc-spoiler-face)
+ '( fg:erc-color-face0 bg:erc-color-face0
+ fg:erc-color-face1 bg:erc-color-face1))
+ (erc-goodies-tests--assert-face
+ 18 " World" '(erc-spoiler-face)
+ '( fg:erc-color-face0 bg:erc-color-face0
+ fg:erc-color-face1 bg:erc-color-face1 )))
+ (when noninteractive
+ (kill-buffer)))))
+
+(defvar erc-goodies-tests--motd
+ ;; This is from ergo's MOTD
+ '((":- - this is \2bold text\17.")
+ (":- - this is \35italics text\17.")
+ (":- - this is \0034red\3 and \0032blue\3 text.")
+ (":- - this is \0034,12red text with a light blue background\3.")
+ (":- - this is a normal escaped dollarsign: $")
+ (":- ")
+ (":- "
+ "\0031,0 00 \0030,1 01 \0030,2 02 \0030,3 03 "
+ "\0031,4 04 \0030,5 05 \0030,6 06 \0031,7 07 ")
+ (":- "
+ "\0031,8 08 \0031,9 09 \0030,10 10 \0031,11 11 "
+ "\0030,12 12 \0031,13 13 \0031,14 14 \0031,15 15 ")
+ (":- ")
+ (":- "
+ "\0030,16 16 \0030,17 17 \0030,18 18 \0030,19 19 "
+ "\0030,20 20 \0030,21 21 \0030,22 22 \0030,23 23 "
+ "\0030,24 24 \0030,25 25 \0030,26 26 \0030,27 27 ")
+ (":- "
+ "\0030,28 28 \0030,29 29 \0030,30 30 \0030,31 31 "
+ "\0030,32 32 \0030,33 33 \0030,34 34 \0030,35 35 "
+ "\0030,36 36 \0030,37 37 \0030,38 38 \0030,39 39 ")
+ (":- "
+ "\0030,40 40 \0030,41 41 \0030,42 42 \0030,43 43 "
+ "\0030,44 44 \0030,45 45 \0030,46 46 \0030,47 47 "
+ "\0030,48 48 \0030,49 49 \0030,50 50 \0030,51 51 ")
+ (":- "
+ "\0030,52 52 \0030,53 53 \0031,54 54 \0031,55 55 "
+ "\0031,56 56 \0031,57 57 \0031,58 58 \0030,59 59 "
+ "\0030,60 60 \0030,61 61 \0030,62 62 \0030,63 63 ")
+ (":- "
+ "\0030,64 64 \0031,65 65 \0031,66 66 \0031,67 67 "
+ "\0031,68 68 \0031,69 69 \0031,70 70 \0031,71 71 "
+ "\0030,72 72 \0030,73 73 \0030,74 74 \0030,75 75 ")
+ (":- "
+ "\0031,76 76 \0031,77 77 \0031,78 78 \0031,79 79 "
+ "\0031,80 80 \0031,81 81 \0031,82 82 \0031,83 83 "
+ "\0031,84 84 \0031,85 85 \0031,86 86 \0031,87 87 ")
+ (":- "
+ "\0030,88 88 \0030,89 89 \0030,90 90 \0030,91 91 "
+ "\0030,92 92 \0030,93 93 \0030,94 94 \0030,95 95 "
+ "\0031,96 96 \0031,97 97 \0031,98 98 \399,99 99 ")
+ (":- ")))
+
+(ert-deftest erc-controls-highlight--motd ()
+ ;; FIXME remove after adding
+ (unless (fboundp 'erc--initialize-markers)
+ (ert-skip "Missing required function"))
+ (should (eq t erc-interpret-controls-p))
+ (let ((erc-insert-modify-hook '(erc-controls-highlight))
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (with-current-buffer (get-buffer-create "#chan")
+ (erc-mode)
+ (setq-local erc-interpret-mirc-color t)
+ (erc--initialize-markers (point) nil)
+
+ (dolist (parts erc-goodies-tests--motd)
+ (erc-display-message nil 'notice (current-buffer) (string-join parts)))
+
+ ;; Spot check
+ (goto-char (point-min))
+ (should (search-forward " 16 " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (erc-goodies-tests--assert-face
+ 0 " 17 " '(fg:erc-color-face0 (:background "#472100")))
+ (erc-goodies-tests--assert-face
+ 4 " 18 " '(fg:erc-color-face0 (:background "#474700"))
+ '((:background "#472100"))))
+
+ (should (search-forward " 71 " nil t))
+ (save-restriction
+ (narrow-to-region (point) (pos-eol))
+ (erc-goodies-tests--assert-face
+ 0 " 72 " '(fg:erc-color-face0 (:background "#5959ff")))
+ (erc-goodies-tests--assert-face
+ 4 " 73 " '(fg:erc-color-face0 (:background "#c459ff"))
+ '((:background "#5959ff"))))
+
+ (goto-char (point-min))
+ (when noninteractive
+ (kill-buffer)))))
+
+
+;; Among other things, this test also asserts that a local module's
+;; minor-mode toggle is allowed to disable its mode variable as
+;; needed.
+
+(ert-deftest erc-keep-place-indicator-mode ()
+ ;; FIXME remove after adding
+ (unless (fboundp 'erc--initialize-markers)
+ (ert-skip "Missing required function"))
+ (with-current-buffer (get-buffer-create "*erc-keep-place-indicator-mode*")
+ (erc-mode)
+ (erc--initialize-markers (point) nil)
+ (let ((assert-off
+ (lambda ()
+ (should-not erc-keep-place-indicator-mode)
+ (should-not (local-variable-p 'window-configuration-change-hook))
+ (should-not erc--keep-place-indicator-overlay)))
+ (assert-on
+ (lambda ()
+ (should erc--keep-place-indicator-overlay)
+ (should (local-variable-p 'window-configuration-change-hook))
+ (should window-configuration-change-hook)
+ (should erc-keep-place-mode)))
+ ;;
+ erc-insert-pre-hook
+ erc-modules)
+
+ (funcall assert-off)
+
+ (ert-info ("Value t")
+ (should (eq erc-keep-place-indicator-buffer-type t))
+ (erc-keep-place-indicator-mode +1)
+ (funcall assert-on)
+ (goto-char (point-min))
+ (should (search-forward "Enabling" nil t))
+ (should (memq 'keep-place erc-modules)))
+
+ (erc-keep-place-indicator-mode -1)
+ (funcall assert-off)
+
+ (ert-info ("Value `target'")
+ (let ((erc-keep-place-indicator-buffer-type 'target))
+ (erc-keep-place-indicator-mode +1)
+ (funcall assert-off)
+ (setq erc--target (erc--target-from-string "#chan"))
+ (erc-keep-place-indicator-mode +1)
+ (funcall assert-on)))
+
+ (erc-keep-place-indicator-mode -1)
+ (funcall assert-off)
+
+ (ert-info ("Value `server'")
+ (let ((erc-keep-place-indicator-buffer-type 'server))
+ (erc-keep-place-indicator-mode +1)
+ (funcall assert-off)
+ (setq erc--target nil)
+ (erc-keep-place-indicator-mode +1)
+ (funcall assert-on)))
+
+ ;; Populate buffer
+ (erc-display-message nil 'notice (current-buffer)
+ "This buffer is for text that is not saved")
+ (erc-display-message nil 'notice (current-buffer)
+ "and for lisp evaluation")
+ (should (search-forward "saved" nil t))
+ (erc-keep-place-move nil)
+ (goto-char erc-input-marker)
+
+ (ert-info ("Indicator survives reconnect")
+ (let ((erc--server-reconnecting (buffer-local-variables)))
+ (cl-letf (((symbol-function 'erc-server-connect) #'ignore))
+ (erc-open "localhost" 6667 "tester" "Tester" 'connect
+ nil nil nil nil nil "tester" nil)))
+ (funcall assert-on)
+ (should (= (point) erc-input-marker))
+ (goto-char (overlay-start erc--keep-place-indicator-overlay))
+ (should (looking-at (rx "*** This buffer is for text")))))
+
+ (when noninteractive
+ (kill-buffer))))
+
+;;; erc-goodies-tests.el ends here
diff --git a/test/lisp/erc/erc-networks-tests.el b/test/lisp/erc/erc-networks-tests.el
index 96836c29aed..b9d216f217b 100644
--- a/test/lisp/erc/erc-networks-tests.el
+++ b/test/lisp/erc/erc-networks-tests.el
@@ -1475,10 +1475,16 @@
(erc-mode)
(setq erc-network 'FooNet
erc-server-current-nick "tester"
- erc-insert-marker (set-marker (make-marker) (point-max))
+ erc-insert-marker (make-marker)
+ erc-input-marker (make-marker)
erc-server-process (erc-networks-tests--create-live-proc)
erc-networks--id (erc-networks--id-create nil))
- (should-not (erc-networks--rename-server-buffer erc-server-process))
+ (set-process-sentinel erc-server-process #'ignore)
+ (erc-display-prompt nil (point-max))
+ (set-marker erc-insert-marker (pos-bol))
+ (erc-display-message nil 'notice (current-buffer) "notice")
+ (with-silent-modifications
+ (should-not (erc-networks--rename-server-buffer erc-server-process)))
(should (eq erc-active-buffer old-buf))
(should-not (erc-server-process-alive))
(should (string= (buffer-name) "irc.foonet.org"))
diff --git a/test/lisp/erc/erc-scenarios-base-auto-recon.el b/test/lisp/erc/erc-scenarios-base-auto-recon.el
new file mode 100644
index 00000000000..40e2c23408b
--- /dev/null
+++ b/test/lisp/erc/erc-scenarios-base-auto-recon.el
@@ -0,0 +1,141 @@
+;;; erc-scenarios-base-auto-recon.el --- auto-recon scenarios -*- lexical-binding: t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert-x)
+(eval-and-compile
+ (let ((load-path (cons (ert-resource-directory) load-path)))
+ (require 'erc-scenarios-common)))
+
+(defun erc-scenarios-base-auto-recon--get-unused-port ()
+ (let ((server (make-network-process :name "*erc-scenarios-base-auto-recon*"
+ :host "localhost"
+ :service t
+ :server t)))
+ (delete-process server)
+ (process-contact server :service)))
+
+;; This demos one possible flavor of intermittent service.
+;; It may end up needing to be marked :unstable.
+
+(ert-deftest erc-scenarios-base-auto-recon-unavailable ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-server-flood-penalty 0.1)
+ (port (erc-scenarios-base-auto-recon--get-unused-port))
+ (erc--server-reconnect-timeout-scale-function (lambda (_) 1))
+ (erc-server-auto-reconnect t)
+ (erc-server-reconnect-function #'erc-server-delayed-check-reconnect)
+ (expect (erc-d-t-make-expecter))
+ (erc-scenarios-common-dialog "base/reconnect")
+ (dumb-server nil))
+
+ (ert-info ("Dialing fails: nobody home")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :full-name "tester")
+ (erc-d-t-wait-for 10 (not (erc-server-process-alive)))
+ (erc-d-t-wait-for 10 erc--server-reconnect-timer)
+ (funcall expect 10 "Opening connection")
+ (funcall expect 10 "failed")
+
+ (ert-info ("Reconnect function freezes attempts at 1")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))
+ (funcall expect 10 "nobody home")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))
+ (funcall expect 10 "nobody home"))))
+
+ (ert-info ("Service appears")
+ (setq dumb-server (erc-d-run "localhost" port
+ 'just-eof 'unexpected-disconnect))
+ (with-current-buffer (format "127.0.0.1:%d" port)
+ (funcall expect 10 "server is in debug mode")
+ (should (equal (buffer-name) "FooNet"))))
+
+ (ert-info ("Service interrupted, reconnect starts again")
+ (with-current-buffer "FooNet"
+ (funcall expect 10 "failed")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))))
+
+ (ert-info ("Service restored")
+ (delete-process dumb-server)
+ (setq dumb-server (erc-d-run "localhost" port
+ 'just-eof 'unexpected-disconnect))
+ (with-current-buffer "FooNet"
+ (funcall expect 10 "server is in debug mode")))
+
+ (ert-info ("Service interrupted a third time, reconnect starts yet again")
+ (with-current-buffer "FooNet"
+ (funcall expect 10 "failed")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))
+ (erc-cmd-RECONNECT "cancel")
+ (funcall expect 10 "canceled")))))
+
+;; In this test, a listener accepts but doesn't respond to any messages.
+
+(ert-deftest erc-scenarios-base-auto-recon-no-proto ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-server-flood-penalty 0.1)
+ (erc-scenarios-common-dialog "base/reconnect")
+ (erc-d-auto-pong nil)
+ (dumb-server (erc-d-run "localhost" t 'unexpected-disconnect))
+ (port (process-contact dumb-server :service))
+ (erc--server-reconnect-timeout-scale-function (lambda (_) 1))
+ (erc--server-reconnect-timeout-check 0.5)
+ (erc-server-auto-reconnect t)
+ (erc-server-reconnect-function #'erc-server-delayed-check-reconnect)
+ (expect (erc-d-t-make-expecter)))
+
+ (ert-info ("Session succeeds but cut short")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :full-name "tester")
+ (funcall expect 10 "server is in debug mode")
+ (should (equal (buffer-name) "FooNet"))
+ (erc-d-t-wait-for 10 erc--server-reconnect-timer)
+ (delete-process dumb-server)
+ (funcall expect 10 "failed")
+
+ (ert-info ("Reconnect function freezes attempts at 1")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))
+ (funcall expect 10 "nobody home")
+ (funcall expect 10 "timed out while dialing")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))
+ (funcall expect 10 "nobody home"))))
+
+ (ert-info ("Service restored")
+ (setq dumb-server (erc-d-run "localhost" port
+ 'just-ping
+ 'ping-pong
+ 'unexpected-disconnect))
+ (with-current-buffer "FooNet"
+ (funcall expect 30 "server is in debug mode")))
+
+ (ert-info ("Service interrupted again, reconnect starts again")
+ (with-current-buffer "FooNet"
+ (funcall expect 10 "failed")
+ (funcall expect 10 '(: "reconnecting" (+ nonl) "attempt 1/2"))
+ (erc-cmd-RECONNECT "cancel")
+ (funcall expect 10 "canceled")))))
+
+;;; erc-scenarios-base-auto-recon.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-local-module-modes.el b/test/lisp/erc/erc-scenarios-base-local-module-modes.el
new file mode 100644
index 00000000000..7b91e28dc83
--- /dev/null
+++ b/test/lisp/erc/erc-scenarios-base-local-module-modes.el
@@ -0,0 +1,211 @@
+;;; erc-scenarios-base-local-module-modes.el --- More local-mod ERC tests -*- lexical-binding: t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; A local module doubles as a minor mode whose mode variable and
+;; associated local data can withstand service disruptions.
+;; Unfortunately, the current implementation is too unwieldy to be
+;; made public because it doesn't perform any of the boiler plate
+;; needed to save and restore buffer-local and "network-local" copies
+;; of user options. Ultimately, a user-friendly framework must fill
+;; this void if third-party local modules are ever to become
+;; practical.
+;;
+;; The following tests all use `sasl' because, as of ERC 5.5, it's the
+;; only local module.
+
+;;; Code:
+
+(require 'ert-x)
+(eval-and-compile
+ (let ((load-path (cons (ert-resource-directory) load-path)))
+ (require 'erc-scenarios-common)))
+
+(require 'erc-sasl)
+
+;; After quitting a session for which `sasl' is enabled, you
+;; disconnect and toggle `erc-sasl-mode' off. You then reconnect
+;; using an alternate nickname. You again disconnect and reconnect,
+;; this time immediately, and the mode stays disabled. Finally, you
+;; once again disconnect, toggle the mode back on, and reconnect. You
+;; are authenticated successfully, just like in the initial session.
+;;
+;; This is meant to show that a user's local mode settings persist
+;; between sessions. It also happens to show (in round four, below)
+;; that a server renicking a user on 001 after a 903 is handled just
+;; like a user-initiated renick, although this is not the main thrust.
+
+(ert-deftest erc-scenarios-base-local-module-modes--reconnect ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-scenarios-common-dialog "base/local-modules")
+ (erc-server-flood-penalty 0.1)
+ (dumb-server (erc-d-run "localhost" t 'first 'second 'third 'fourth))
+ (port (process-contact dumb-server :service))
+ (erc-modules (cons 'sasl erc-modules))
+ (expect (erc-d-t-make-expecter))
+ (server-buffer-name (format "127.0.0.1:%d" port)))
+
+ (ert-info ("Round one, initial authentication succeeds as expected")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :user "tester"
+ :password "changeme"
+ :full-name "tester")
+ (should (string= (buffer-name) server-buffer-name))
+ (funcall expect 10 "You are now logged in as tester"))
+
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "foonet"))
+ (funcall expect 10 "This server is in debug mode")
+ (erc-cmd-JOIN "#chan")
+
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
+ (funcall expect 20 "She is Lavinia, therefore must"))
+
+ (erc-cmd-QUIT "")
+ (funcall expect 10 "finished")))
+
+ (ert-info ("Round two, nick rejected, alternate granted")
+ (with-current-buffer "foonet"
+
+ (ert-info ("Toggle mode off, reconnect")
+ (erc-sasl-mode -1)
+ (erc-cmd-RECONNECT))
+
+ (funcall expect 10 "User modes for tester`")
+ (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+ (should (equal (buffer-name) "foonet"))
+ (should-not (cdr (erc-scenarios-common-buflist "#chan")))
+
+ (with-current-buffer "#chan"
+ (funcall expect 10 "Some enigma, some riddle"))
+
+ (erc-cmd-QUIT "")
+ (funcall expect 10 "finished")))
+
+ (ert-info ("Round three, send alternate nick initially")
+ (with-current-buffer "foonet"
+
+ (ert-info ("Keep mode off, reconnect")
+ (should-not erc-sasl-mode)
+ (should (local-variable-p 'erc-sasl-mode))
+ (erc-cmd-RECONNECT))
+
+ (funcall expect 10 "User modes for tester`")
+ (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+ (should (equal (buffer-name) "foonet"))
+ (should-not (cdr (erc-scenarios-common-buflist "#chan")))
+
+ (with-current-buffer "#chan"
+ (funcall expect 10 "Let our reciprocal vows be remembered."))
+
+ (erc-cmd-QUIT "")
+ (funcall expect 10 "finished")))
+
+ (ert-info ("Round four, authenticated successfully again")
+ (with-current-buffer "foonet"
+
+ (ert-info ("Toggle mode on, reconnect")
+ (should-not erc-sasl-mode)
+ (should (local-variable-p 'erc-sasl-mode))
+ (erc-sasl-mode +1)
+ (erc-cmd-RECONNECT))
+
+ (funcall expect 10 "User modes for tester")
+ (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+ (should (equal (buffer-name) "foonet"))
+ (should-not (cdr (erc-scenarios-common-buflist "#chan")))
+
+ (with-current-buffer "#chan"
+ (funcall expect 10 "Well met; good morrow, Titus and Hortensius."))
+
+ (erc-cmd-QUIT "")))))
+
+;; In contrast to the mode-persistence test above, this one
+;; demonstrates that a user reinvoking an entry point declares their
+;; intention to reset local-module state for the server buffer.
+;; Whether a local-module's state variable is also reset in target
+;; buffers up to the module. That is, by default, they're left alone.
+
+(ert-deftest erc-scenarios-base-local-module-modes--entrypoint ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-scenarios-common-dialog "base/local-modules")
+ (erc-server-flood-penalty 0.1)
+ (dumb-server (erc-d-run "localhost" t 'first 'first))
+ (port (process-contact dumb-server :service))
+ (erc-modules (cons 'sasl erc-modules))
+ (expect (erc-d-t-make-expecter))
+ (server-buffer-name (format "127.0.0.1:%d" port)))
+
+ (ert-info ("Round one, initial authentication succeeds as expected")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :user "tester"
+ :password "changeme"
+ :full-name "tester")
+ (should (string= (buffer-name) server-buffer-name))
+ (funcall expect 10 "You are now logged in as tester"))
+
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "foonet"))
+ (funcall expect 10 "This server is in debug mode")
+ (erc-cmd-JOIN "#chan")
+
+ (ert-info ("Toggle local-module off in target buffer")
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
+ (funcall expect 20 "She is Lavinia, therefore must")
+ (erc-sasl-mode -1)))
+
+ (erc-cmd-QUIT "")
+ (funcall expect 10 "finished")
+
+ (ert-info ("Toggle mode off")
+ (erc-sasl-mode -1)
+ (should (local-variable-p 'erc-sasl-mode)))))
+
+ (ert-info ("Reconnecting via entry point discards `erc-sasl-mode' value.")
+ ;; If you were to /RECONNECT here, no PASS changeme would be
+ ;; sent instead of CAP SASL, resulting in a failure.
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :user "tester"
+ :password "changeme"
+ :full-name "tester")
+ (should (string= (buffer-name) server-buffer-name))
+ (funcall expect 10 "You are now logged in as tester")
+
+ (erc-d-t-wait-for 10 (equal (buffer-name) "foonet"))
+ (funcall expect 10 "User modes for tester")
+ (should erc-sasl-mode)) ; obviously
+
+ ;; No other foonet buffer exists, e.g., foonet<2>
+ (should-not (cdr (erc-scenarios-common-buflist "foonet")))
+
+ (ert-info ("Target buffer retains local-module state")
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
+ (funcall expect 20 "She is Lavinia, therefore must")
+ (should-not erc-sasl-mode)
+ (should (local-variable-p 'erc-sasl-mode))
+ (erc-cmd-QUIT ""))))))
+
+;;; erc-scenarios-base-local-module-modes.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-local-modules.el b/test/lisp/erc/erc-scenarios-base-local-modules.el
index 1318207a3bf..d6dbd87c8cc 100644
--- a/test/lisp/erc/erc-scenarios-base-local-modules.el
+++ b/test/lisp/erc/erc-scenarios-base-local-modules.el
@@ -82,105 +82,6 @@
(erc-cmd-QUIT "")
(funcall expect 10 "finished")))))
-;; After quitting a session for which `sasl' is enabled, you
-;; disconnect and toggle `erc-sasl-mode' off. You then reconnect
-;; using an alternate nickname. You again disconnect and reconnect,
-;; this time immediately, and the mode stays disabled. Finally, you
-;; once again disconnect, toggle the mode back on, and reconnect. You
-;; are authenticated successfully, just like in the initial session.
-;;
-;; This is meant to show that a user's local mode settings persist
-;; between sessions. It also happens to show (in round four, below)
-;; that a server renicking a user on 001 after a 903 is handled just
-;; like a user-initiated renick, although this is not the main thrust.
-
-(ert-deftest erc-scenarios-base-local-modules--mode-persistence ()
- :tags '(:expensive-test)
- (erc-scenarios-common-with-cleanup
- ((erc-scenarios-common-dialog "base/local-modules")
- (erc-server-flood-penalty 0.1)
- (dumb-server (erc-d-run "localhost" t 'first 'second 'third 'fourth))
- (port (process-contact dumb-server :service))
- (erc-modules (cons 'sasl erc-modules))
- (expect (erc-d-t-make-expecter))
- (server-buffer-name (format "127.0.0.1:%d" port)))
-
- (ert-info ("Round one, initial authentication succeeds as expected")
- (with-current-buffer (erc :server "127.0.0.1"
- :port port
- :nick "tester"
- :user "tester"
- :password "changeme"
- :full-name "tester")
- (should (string= (buffer-name) server-buffer-name))
- (funcall expect 10 "You are now logged in as tester"))
-
- (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "foonet"))
- (funcall expect 10 "This server is in debug mode")
- (erc-cmd-JOIN "#chan")
-
- (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
- (funcall expect 20 "She is Lavinia, therefore must"))
-
- (erc-cmd-QUIT "")
- (funcall expect 10 "finished")))
-
- (ert-info ("Round two, nick rejected, alternate granted")
- (with-current-buffer "foonet"
-
- (ert-info ("Toggle mode off, reconnect")
- (erc-sasl-mode -1)
- (erc-cmd-RECONNECT))
-
- (funcall expect 10 "User modes for tester`")
- (should-not (cdr (erc-scenarios-common-buflist "foonet")))
- (should (equal (buffer-name) "foonet"))
- (should-not (cdr (erc-scenarios-common-buflist "#chan")))
-
- (with-current-buffer "#chan"
- (funcall expect 10 "Some enigma, some riddle"))
-
- (erc-cmd-QUIT "")
- (funcall expect 10 "finished")))
-
- (ert-info ("Round three, send alternate nick initially")
- (with-current-buffer "foonet"
-
- (ert-info ("Keep mode off, reconnect")
- (should-not erc-sasl-mode)
- (should (local-variable-p 'erc-sasl-mode))
- (erc-cmd-RECONNECT))
-
- (funcall expect 10 "User modes for tester`")
- (should-not (cdr (erc-scenarios-common-buflist "foonet")))
- (should (equal (buffer-name) "foonet"))
- (should-not (cdr (erc-scenarios-common-buflist "#chan")))
-
- (with-current-buffer "#chan"
- (funcall expect 10 "Let our reciprocal vows be remembered."))
-
- (erc-cmd-QUIT "")
- (funcall expect 10 "finished")))
-
- (ert-info ("Round four, authenticated successfully again")
- (with-current-buffer "foonet"
-
- (ert-info ("Toggle mode on, reconnect")
- (should-not erc-sasl-mode)
- (should (local-variable-p 'erc-sasl-mode))
- (erc-sasl-mode +1)
- (erc-cmd-RECONNECT))
-
- (funcall expect 10 "User modes for tester")
- (should-not (cdr (erc-scenarios-common-buflist "foonet")))
- (should (equal (buffer-name) "foonet"))
- (should-not (cdr (erc-scenarios-common-buflist "#chan")))
-
- (with-current-buffer "#chan"
- (funcall expect 10 "Well met; good morrow, Titus and Hortensius."))
-
- (erc-cmd-QUIT "")))))
-
;; For local modules, the twin toggle commands `erc-FOO-enable' and
;; `erc-FOO-disable' affect all buffers of a connection, whereas
;; `erc-FOO-mode' continues to operate only on the current buffer.
diff --git a/test/lisp/erc/erc-scenarios-base-misc-regressions.el b/test/lisp/erc/erc-scenarios-base-misc-regressions.el
index 16b2cb355d1..c1915d088a0 100644
--- a/test/lisp/erc/erc-scenarios-base-misc-regressions.el
+++ b/test/lisp/erc/erc-scenarios-base-misc-regressions.el
@@ -124,4 +124,48 @@ Originally from scenario rebuffed/gapless as explained in Bug#48598:
(with-current-buffer (erc-d-t-wait-for 5 (get-buffer "#chan"))
(erc-d-t-search-for 10 "and be prosperous")))))
+;; This defends against a partial regression in which an /MOTD caused
+;; 376 and 422 handlers in erc-networks to run.
+
+(ert-deftest erc-cmd-MOTD ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-scenarios-common-dialog "base/commands")
+ (erc-server-flood-penalty 0.1)
+ (dumb-server (erc-d-run "localhost" t 'motd))
+ (port (process-contact dumb-server :service))
+ (expect (erc-d-t-make-expecter)))
+
+ (ert-info ("Connect to server")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :full-name "tester")
+ (funcall expect 10 "This is the default Ergo MOTD")
+ (funcall expect 10 "debug mode")))
+
+ (ert-info ("Send plain MOTD")
+ (with-current-buffer "foonet"
+ (erc-cmd-MOTD)
+ (funcall expect -0.2 "Unexpected state detected")
+ (funcall expect 10 "This is the default Ergo MOTD")))
+
+ (ert-info ("Send MOTD with known target")
+ (with-current-buffer "foonet"
+ (erc-scenarios-common-say "/MOTD irc1.foonet.org")
+ (funcall expect -0.2 "Unexpected state detected")
+ (funcall expect 10 "This is the default Ergo MOTD")))
+
+ (ert-info ("Send MOTD with erroneous target")
+ (with-current-buffer "foonet"
+ (erc-scenarios-common-say "/MOTD fake.foonet.org")
+ (funcall expect -0.2 "Unexpected state detected")
+ (funcall expect 10 "No such server")
+ ;; Message may show up before the handler runs.
+ (erc-d-t-wait-for 10
+ (not (local-variable-p 'erc-server-402-functions)))
+ (should-not (local-variable-p 'erc-server-376-functions))
+ (should-not (local-variable-p 'erc-server-422-functions))
+ (erc-cmd-QUIT "")))))
+
;;; erc-scenarios-base-misc-regressions.el ends here
diff --git a/test/lisp/erc/erc-scenarios-base-renick.el b/test/lisp/erc/erc-scenarios-base-renick.el
index f1723200533..f8350676fb7 100644
--- a/test/lisp/erc/erc-scenarios-base-renick.el
+++ b/test/lisp/erc/erc-scenarios-base-renick.el
@@ -303,4 +303,47 @@
(should-not (search-forward "now known as frenemy" nil t))
(erc-d-t-search-for 25 "I have lost"))))
+;; The server rejects your nick during registration, so ERC acquires a
+;; placeholder and successfully renicks once the connection is up.
+;; See also `erc-scenarios-base-renick-self-auto'.
+
+(ert-deftest erc-scenarios-base-renick-auto-regain ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-server-flood-penalty 0.1)
+ (erc-scenarios-common-dialog "base/renick/regain")
+ (dumb-server (erc-d-run "localhost" t 'normal 'normal-again))
+ (port (process-contact dumb-server :service))
+ (erc-server-auto-reconnect t)
+ (erc-modules (cons 'sasl erc-modules))
+ (erc-nickname-in-use-functions '(erc-regain-nick-on-connect))
+ (expect (erc-d-t-make-expecter)))
+
+ (ert-info ("Session succeeds but cut short")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester"
+ :user "tester"
+ :password "changeme"
+ :full-name "tester")
+ (funcall expect 10 "Last login from")
+ (erc-cmd-JOIN "#test")))
+
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#test"))
+ (funcall expect 10 "was created on"))
+
+ (ert-info ("Service restored")
+ (with-current-buffer "Libera.Chat"
+ (erc-d-t-wait-for 10 erc--server-reconnect-timer)
+ (funcall expect 10 "Connection failed!")
+ (funcall expect 10 "already in use")
+ (funcall expect 10 "changed mode for tester`")
+ (funcall expect 10 "Last login from")
+ (funcall expect 10 "Your new nickname is tester")))
+
+ (with-current-buffer (get-buffer "#test")
+ (funcall expect 10 "tester ")
+ (funcall expect 10 "was created on"))))
+
+
;;; erc-scenarios-base-renick.el ends here
diff --git a/test/lisp/erc/erc-scenarios-misc.el b/test/lisp/erc/erc-scenarios-misc.el
index 5927eee48fd..bb925eed836 100644
--- a/test/lisp/erc/erc-scenarios-misc.el
+++ b/test/lisp/erc/erc-scenarios-misc.el
@@ -205,4 +205,38 @@
(with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
(funcall expect 10 "welcome")))))
+;; Ensure that ERC does not attempt to switch to a killed server
+;; buffer via `erc-track-switch-buffer'.
+
+(declare-function erc-track-switch-buffer "erc-track" (arg))
+(defvar erc-track-mode)
+
+(ert-deftest erc-scenarios-base-kill-server-track ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-scenarios-common-dialog "networks/merge-server")
+ (dumb-server (erc-d-run "localhost" t 'track))
+ (port (process-contact dumb-server :service))
+ (erc-server-flood-penalty 0.1)
+ (expect (erc-d-t-make-expecter)))
+
+ (ert-info ("Connect")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "tester")
+ (should (string= (buffer-name) (format "127.0.0.1:%d" port)))
+ (should erc-track-mode)
+ (funcall expect 5 "changed mode for tester")
+ (erc-cmd-JOIN "#chan")))
+
+ (ert-info ("Join channel and kill server buffer")
+ (with-current-buffer (erc-d-t-wait-for 10 (get-buffer "#chan"))
+ (funcall expect 5 "The hour that fools should ask"))
+ (with-current-buffer "FooNet"
+ (set-process-query-on-exit-flag erc-server-process nil)
+ (kill-buffer))
+ (should-not (eq (current-buffer) (get-buffer "#chan"))) ; *temp*
+ (ert-simulate-command '(erc-track-switch-buffer 1)) ; No longer signals
+ (should (eq (current-buffer) (get-buffer "#chan"))))))
+
;;; erc-scenarios-misc.el ends here
diff --git a/test/lisp/erc/erc-scenarios-sasl.el b/test/lisp/erc/erc-scenarios-sasl.el
index 3878237c7d2..ab652d72dd2 100644
--- a/test/lisp/erc/erc-scenarios-sasl.el
+++ b/test/lisp/erc/erc-scenarios-sasl.el
@@ -51,6 +51,70 @@
;; Regression "\0\0\0\0 ..." caused by (fillarray passphrase 0)
(should (string= erc-sasl-password "password123"))))))
+;; The user's unreasonably long password is apportioned into chunks on
+;; the way out the door.
+
+(ert-deftest erc-scenarios-sasl--plain-overlong-split ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-scenarios-common-dialog "sasl")
+ (erc-server-flood-penalty 0.1)
+ (dumb-server (erc-d-run "localhost" t 'plain-overlong-split))
+ (port (process-contact dumb-server :service))
+ (erc-modules (cons 'sasl erc-modules))
+ (erc-sasl-password
+ (concat
+ "Est ut beatae omnis ipsam. "
+ "Quis fugiat deleniti totam qui. "
+ "Ipsum quam a dolorum tempora velit laborum odit. "
+ "Et saepe voluptate sed cumque vel. "
+ "Voluptas sint ab pariatur libero veritatis corrupti. "
+ "Vero iure omnis ullam. "
+ "Vero beatae dolores facere fugiat ipsam. "
+ "Ea est pariatur minima nobis sunt aut ut. "
+ "Dolores ut laudantium maiores temporibus voluptates. "
+ "Reiciendis impedit omnis et unde delectus quas ab. "
+ "Quae eligendi necessitatibus doloribus "
+ "molestias tempora magnam assumenda."))
+ (expect (erc-d-t-make-expecter)))
+
+ (ert-info ("Connect")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "emersion"
+ :user "emersion"
+ :full-name "emersion")
+ (funcall expect 10 "This server is in debug mode")
+ (erc-cmd-QUIT "")))))
+
+(ert-deftest erc-scenarios-sasl--plain-overlong-aligned ()
+ :tags '(:expensive-test)
+ (erc-scenarios-common-with-cleanup
+ ((erc-scenarios-common-dialog "sasl")
+ (erc-server-flood-penalty 0.1)
+ (dumb-server (erc-d-run "localhost" t 'plain-overlong-aligned))
+ (port (process-contact dumb-server :service))
+ (erc-modules (cons 'sasl erc-modules))
+ (erc-sasl-password
+ (concat
+ "Est ut beatae omnis ipsam. "
+ "Quis fugiat deleniti totam qui. "
+ "Ipsum quam a dolorum tempora velit laborum odit. "
+ "Et saepe voluptate sed cumque vel. "
+ "Voluptas sint ab pariatur libero veritatis corrupti. "
+ "Vero iure omnis ullam. Vero beatae dolores facere fugiat ipsam. "
+ "Ea est pariatur minima nobis"))
+ (expect (erc-d-t-make-expecter)))
+
+ (ert-info ("Connect")
+ (with-current-buffer (erc :server "127.0.0.1"
+ :port port
+ :nick "emersion"
+ :user "emersion"
+ :full-name "emersion")
+ (funcall expect 10 "This server is in debug mode")
+ (erc-cmd-QUIT "")))))
+
(ert-deftest erc-scenarios-sasl--external ()
:tags '(:expensive-test)
(erc-scenarios-common-with-cleanup
diff --git a/test/lisp/erc/erc-services-tests.el b/test/lisp/erc/erc-services-tests.el
index 9181a47ee3b..6cbba02a37e 100644
--- a/test/lisp/erc/erc-services-tests.el
+++ b/test/lisp/erc/erc-services-tests.el
@@ -212,39 +212,32 @@
(advice-remove 'epg-decrypt-string 'erc--auth-source-plstore)
(advice-remove 'epg-find-configuration 'erc--auth-source-plstore)))
-(defvar erc-services-tests--auth-source-plstore-standard-entries
- '(("ba950d38118a76d71f9f0591bb373d6cb366a512"
- :secret-secret t
- :host "irc.gnu.org"
- :user "#chan"
- :port "irc")
- ("7f17ca445d11158065e911a6d0f4cbf52ca250e3"
- :secret-secret t
- :host "my.gnu.org"
- :user "#chan"
- :port "irc")
- ("fcd3c8bd6daf4509de0ad6ee98e744ce0fca9377"
- :secret-secret t
- :host "GNU.chat"
- :user "#chan"
- :port "irc")))
-
-(defvar erc-services-tests--auth-source-plstore-standard-secrets
- '(("ba950d38118a76d71f9f0591bb373d6cb366a512" :secret "bar")
- ("7f17ca445d11158065e911a6d0f4cbf52ca250e3" :secret "baz")
- ("fcd3c8bd6daf4509de0ad6ee98e744ce0fca9377" :secret "foo")))
+(defvar erc-services-tests--auth-source-plstore-standard-announced "\
+;;; public entries -*- mode: plstore -*-
+((\"ba950d38118a76d71f9f0591bb373d6cb366a512\"
+ :secret-secret t
+ :host \"irc.gnu.org\"
+ :user \"#chan\"
+ :port \"irc\")
+ (\"7f17ca445d11158065e911a6d0f4cbf52ca250e3\"
+ :secret-secret t
+ :host \"my.gnu.org\"
+ :user \"#chan\"
+ :port \"irc\")
+ (\"fcd3c8bd6daf4509de0ad6ee98e744ce0fca9377\"
+ :secret-secret t
+ :host \"GNU.chat\"
+ :user \"#chan\"
+ :port \"irc\"))
+;;; secret entries
+((\"ba950d38118a76d71f9f0591bb373d6cb366a512\" :secret \"bar\")
+ (\"7f17ca445d11158065e911a6d0f4cbf52ca250e3\" :secret \"baz\")
+ (\"fcd3c8bd6daf4509de0ad6ee98e744ce0fca9377\" :secret \"foo\"))")
(ert-deftest erc--auth-source-search--plstore-standard ()
(ert-with-temp-file plstore-file
:suffix ".plist"
- :text (concat ";;; public entries -*- mode: plstore -*- \n"
- (prin1-to-string
- erc-services-tests--auth-source-plstore-standard-entries)
- "\n;;; secret entries\n"
- (prin1-to-string
- erc-services-tests--auth-source-plstore-standard-secrets)
- "\n")
-
+ :text erc-services-tests--auth-source-plstore-standard-announced
(let ((auth-sources (list plstore-file))
(auth-source-do-cache nil))
(erc-services-tests--auth-source-standard
@@ -254,14 +247,7 @@
(ert-deftest erc--auth-source-search--plstore-announced ()
(ert-with-temp-file plstore-file
:suffix ".plist"
- :text (concat ";;; public entries -*- mode: plstore -*- \n"
- (prin1-to-string
- erc-services-tests--auth-source-plstore-standard-entries)
- "\n;;; secret entries\n"
- (prin1-to-string
- erc-services-tests--auth-source-plstore-standard-secrets)
- "\n")
-
+ :text erc-services-tests--auth-source-plstore-standard-announced
(let ((auth-sources (list plstore-file))
(auth-source-do-cache nil))
(erc-services-tests--auth-source-announced
@@ -271,29 +257,33 @@
(ert-deftest erc--auth-source-search--plstore-overrides ()
(ert-with-temp-file plstore-file
:suffix ".plist"
- :text (concat
- ";;; public entries -*- mode: plstore -*- \n"
- (prin1-to-string
- `(,@erc-services-tests--auth-source-plstore-standard-entries
- ("1b3fab249a8dff77a4d8fe7eb4b0171b25cc711a"
- :secret-secret t :host "GNU.chat" :user "#chan" :port "6697")
- ("6cbcdc39476b8cfcca6f3e9a7876f41ec3f708cc"
- :secret-secret t :host "my.gnu.org" :user "#fsf" :port "irc")
- ("a33e2b3bd2d6f33995a4b88710a594a100c5e41d"
- :secret-secret t :host "irc.gnu.org" :port "6667")
- ("ab2fd349b2b7d6a9215bb35a92d054261b0b1537"
- :secret-secret t :host "MyHost" :port "irc")
- ("61a6bd552059494f479ff720e8de33e22574650a"
- :secret-secret t :host "MyHost" :port "6667")))
- "\n;;; secret entries\n"
- (prin1-to-string
- `(,@erc-services-tests--auth-source-plstore-standard-secrets
- ("1b3fab249a8dff77a4d8fe7eb4b0171b25cc711a" :secret "spam")
- ("6cbcdc39476b8cfcca6f3e9a7876f41ec3f708cc" :secret "42")
- ("a33e2b3bd2d6f33995a4b88710a594a100c5e41d" :secret "sesame")
- ("ab2fd349b2b7d6a9215bb35a92d054261b0b1537" :secret "456")
- ("61a6bd552059494f479ff720e8de33e22574650a" :secret "123")))
- "\n")
+ :text "\
+;;; public entries -*- mode: plstore -*-
+((\"ba950d38118a76d71f9f0591bb373d6cb366a512\"
+ :secret-secret t :host \"irc.gnu.org\" :user \"#chan\" :port \"irc\")
+ (\"7f17ca445d11158065e911a6d0f4cbf52ca250e3\"
+ :secret-secret t :host \"my.gnu.org\" :user \"#chan\" :port \"irc\")
+ (\"fcd3c8bd6daf4509de0ad6ee98e744ce0fca9377\"
+ :secret-secret t :host \"GNU.chat\" :user \"#chan\" :port \"irc\")
+ (\"1b3fab249a8dff77a4d8fe7eb4b0171b25cc711a\"
+ :secret-secret t :host \"GNU.chat\" :user \"#chan\" :port \"6697\")
+ (\"6cbcdc39476b8cfcca6f3e9a7876f41ec3f708cc\"
+ :secret-secret t :host \"my.gnu.org\" :user \"#fsf\" :port \"irc\")
+ (\"a33e2b3bd2d6f33995a4b88710a594a100c5e41d\"
+ :secret-secret t :host \"irc.gnu.org\" :port \"6667\")
+ (\"ab2fd349b2b7d6a9215bb35a92d054261b0b1537\"
+ :secret-secret t :host \"MyHost\" :port \"irc\")
+ (\"61a6bd552059494f479ff720e8de33e22574650a\"
+ :secret-secret t :host \"MyHost\" :port \"6667\"))
+;;; secret entries
+((\"ba950d38118a76d71f9f0591bb373d6cb366a512\" :secret \"bar\")
+ (\"7f17ca445d11158065e911a6d0f4cbf52ca250e3\" :secret \"baz\")
+ (\"fcd3c8bd6daf4509de0ad6ee98e744ce0fca9377\" :secret \"foo\")
+ (\"1b3fab249a8dff77a4d8fe7eb4b0171b25cc711a\" :secret \"spam\")
+ (\"6cbcdc39476b8cfcca6f3e9a7876f41ec3f708cc\" :secret \"42\")
+ (\"a33e2b3bd2d6f33995a4b88710a594a100c5e41d\" :secret \"sesame\")
+ (\"ab2fd349b2b7d6a9215bb35a92d054261b0b1537\" :secret \"456\")
+ (\"61a6bd552059494f479ff720e8de33e22574650a\" :secret \"123\"))"
(let ((auth-sources (list plstore-file))
(auth-source-do-cache nil))
@@ -303,17 +293,24 @@
;; auth-source JSON backend
-(defvar erc-services-tests--auth-source-json-standard-entries
- [(:host "irc.gnu.org" :port "irc" :user "#chan" :secret "bar")
- (:host "my.gnu.org" :port "irc" :user "#chan" :secret "baz")
- (:host "GNU.chat" :port "irc" :user "#chan" :secret "foo")])
+(defvar erc-services-tests--auth-source-json-standard-announced "\
+[{\"host\": \"irc.gnu.org\",
+ \"port\": \"irc\",
+ \"user\": \"#chan\",
+ \"secret\": \"bar\"},
+ {\"host\": \"my.gnu.org\",
+ \"port\": \"irc\",
+ \"user\": \"#chan\",
+ \"secret\": \"baz\"},
+ {\"host\": \"GNU.chat\",
+ \"port\": \"irc\",
+ \"user\": \"#chan\",
+ \"secret\": \"foo\"}]")
(ert-deftest erc--auth-source-search--json-standard ()
(ert-with-temp-file json-store
+ :text erc-services-tests--auth-source-json-standard-announced
:suffix ".json"
- :text (let ((json-object-type 'plist))
- (json-encode
- erc-services-tests--auth-source-json-standard-entries))
(let ((auth-sources (list json-store))
(auth-source-do-cache nil))
(erc-services-tests--auth-source-standard #'erc-auth-source-search))))
@@ -321,10 +318,7 @@
(ert-deftest erc--auth-source-search--json-announced ()
(ert-with-temp-file plstore-file
:suffix ".json"
- :text (let ((json-object-type 'plist))
- (json-encode
- erc-services-tests--auth-source-json-standard-entries))
-
+ :text erc-services-tests--auth-source-json-standard-announced
(let ((auth-sources (list plstore-file))
(auth-source-do-cache nil))
(erc-services-tests--auth-source-announced #'erc-auth-source-search))))
@@ -332,16 +326,36 @@
(ert-deftest erc--auth-source-search--json-overrides ()
(ert-with-temp-file json-file
:suffix ".json"
- :text (let ((json-object-type 'plist))
- (json-encode
- (vconcat
- erc-services-tests--auth-source-json-standard-entries
- [(:secret "spam" :host "GNU.chat" :user "#chan" :port "6697")
- (:secret "42" :host "my.gnu.org" :user "#fsf" :port "irc")
- (:secret "sesame" :host "irc.gnu.org" :port "6667")
- (:secret "456" :host "MyHost" :port "irc")
- (:secret "123" :host "MyHost" :port "6667")])))
-
+ :text "\
+[{\"host\": \"irc.gnu.org\",
+ \"port\": \"irc\",
+ \"user\": \"#chan\",
+ \"secret\": \"bar\"},
+ {\"host\": \"my.gnu.org\",
+ \"port\": \"irc\",
+ \"user\": \"#chan\",
+ \"secret\": \"baz\"},
+ {\"host\": \"GNU.chat\",
+ \"port\": \"irc\",
+ \"user\": \"#chan\",
+ \"secret\": \"foo\"},
+ {\"host\": \"GNU.chat\",
+ \"user\": \"#chan\",
+ \"port\": \"6697\",
+ \"secret\": \"spam\"},
+ {\"host\": \"my.gnu.org\",
+ \"user\": \"#fsf\",
+ \"port\": \"irc\",
+ \"secret\": \"42\"},
+ {\"host\": \"irc.gnu.org\",
+ \"port\": \"6667\",
+ \"secret\": \"sesame\"},
+ {\"host\": \"MyHost\",
+ \"port\": \"irc\",
+ \"secret\": \"456\"},
+ {\"host\": \"MyHost\",
+ \"port\": \"6667\",
+ \"secret\": \"123\"}]"
(let ((auth-sources (list json-file))
(auth-source-do-cache nil))
(erc-services-tests--auth-source-overrides #'erc-auth-source-search))))
@@ -370,6 +384,14 @@
("#chan@my.gnu.org:irc" . "baz")
("#chan@GNU.chat:irc" . "foo")))
+(defun erc-services-tests--secrets-search-items (entries _ &rest r)
+ (mapcan (lambda (s)
+ (and (seq-every-p (pcase-lambda (`(,k . ,v))
+ (equal v (alist-get k (cdr s))))
+ (map-pairs r))
+ (list (car s))))
+ entries))
+
(ert-deftest erc--auth-source-search--secrets-standard ()
(skip-unless (bound-and-true-p secrets-enabled))
(let ((auth-sources '("secrets:Test"))
@@ -378,18 +400,12 @@
(secrets erc-services-tests--auth-source-secrets-standard-secrets))
(cl-letf (((symbol-function 'secrets-search-items)
- (lambda (col &rest r)
- (should (equal col "Test"))
- (should (plist-get r :user))
- (map-keys entries)))
+ (apply-partially #'erc-services-tests--secrets-search-items
+ entries))
((symbol-function 'secrets-get-secret)
- (lambda (col label)
- (should (equal col "Test"))
- (assoc-default label secrets)))
+ (lambda (_ label) (assoc-default label secrets)))
((symbol-function 'secrets-get-attributes)
- (lambda (col label)
- (should (equal col "Test"))
- (assoc-default label entries))))
+ (lambda (_ label) (assoc-default label entries))))
(erc-services-tests--auth-source-standard #'erc-auth-source-search))))
@@ -401,18 +417,12 @@
(secrets erc-services-tests--auth-source-secrets-standard-secrets))
(cl-letf (((symbol-function 'secrets-search-items)
- (lambda (col &rest r)
- (should (equal col "Test"))
- (should (plist-get r :user))
- (map-keys entries)))
+ (apply-partially #'erc-services-tests--secrets-search-items
+ entries))
((symbol-function 'secrets-get-secret)
- (lambda (col label)
- (should (equal col "Test"))
- (assoc-default label secrets)))
+ (lambda (_ label) (assoc-default label secrets)))
((symbol-function 'secrets-get-attributes)
- (lambda (col label)
- (should (equal col "Test"))
- (assoc-default label entries))))
+ (lambda (_ label) (assoc-default label entries))))
(erc-services-tests--auth-source-announced #'erc-auth-source-search))))
@@ -444,17 +454,12 @@
("MyHost:6667" . "123"))))
(cl-letf (((symbol-function 'secrets-search-items)
- (lambda (col &rest _)
- (should (equal col "Test"))
- (map-keys entries)))
+ (apply-partially #'erc-services-tests--secrets-search-items
+ entries))
((symbol-function 'secrets-get-secret)
- (lambda (col label)
- (should (equal col "Test"))
- (assoc-default label secrets)))
+ (lambda (_ label) (assoc-default label secrets)))
((symbol-function 'secrets-get-attributes)
- (lambda (col label)
- (should (equal col "Test"))
- (assoc-default label entries))))
+ (lambda (_ label) (assoc-default label entries))))
(erc-services-tests--auth-source-overrides #'erc-auth-source-search))))
diff --git a/test/lisp/erc/erc-stamp-tests.el b/test/lisp/erc/erc-stamp-tests.el
new file mode 100644
index 00000000000..01e71e348e0
--- /dev/null
+++ b/test/lisp/erc/erc-stamp-tests.el
@@ -0,0 +1,265 @@
+;;; erc-stamp-tests.el --- Tests for erc-stamp. -*- lexical-binding:t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+;;
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published
+;; by the Free Software Foundation, either version 3 of the License,
+;; or (at your option) any later version.
+;;
+;; GNU Emacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;;; Code:
+(require 'ert-x)
+(require 'erc-stamp)
+(require 'erc-goodies) ; for `erc-make-read-only'
+
+;; These display-oriented tests are brittle because many factors
+;; influence how text properties are applied. We should just
+;; rework these into full scenarios.
+
+(defun erc-stamp-tests--insert-right (test)
+ (let ((val (list 0 0))
+ (erc-insert-modify-hook '(erc-add-timestamp))
+ (erc-insert-post-hook '(erc-make-read-only)) ; see comment above
+ (erc-timestamp-only-if-changed-flag nil)
+ ;;
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+
+ (advice-add 'erc-format-timestamp :filter-args
+ (lambda (args) (cons (cl-incf (cadr val) 60) (cdr args)))
+ '((name . ert-deftest--erc-timestamp-use-align-to)))
+
+ (with-current-buffer (get-buffer-create "*erc-stamp-tests--insert-right*")
+ (erc-mode)
+ (erc-munge-invisibility-spec)
+ (setq erc-server-process (start-process "p" (current-buffer)
+ "sleep" "1")
+ erc-input-marker (make-marker)
+ erc-insert-marker (make-marker))
+ (set-process-query-on-exit-flag erc-server-process nil)
+ (set-marker erc-insert-marker (point-max))
+ (erc-display-prompt)
+
+ (funcall test)
+
+ (when noninteractive
+ (kill-buffer)))
+
+ (advice-remove 'erc-format-timestamp
+ 'ert-deftest--erc-timestamp-use-align-to)))
+
+(ert-deftest erc-timestamp-use-align-to--nil ()
+ (erc-stamp-tests--insert-right
+ (lambda ()
+
+ (ert-info ("nil, normal")
+ (let ((erc-timestamp-use-align-to nil))
+ (erc-display-message nil 'notice (current-buffer) "begin"))
+ (goto-char (point-min))
+ (should (search-forward-regexp
+ (rx "begin" (+ "\t") (* " ") "[") nil t))
+ ;; Field includes intervening spaces
+ (should (eql ?n (char-before (field-beginning (point)))))
+ ;; Timestamp extends to the end of the line
+ (should (eql ?\n (char-after (field-end (point))))))
+
+ ;; The option `erc-timestamp-right-column' is normally nil by
+ ;; default, but it's a convenient stand in for a sufficiently
+ ;; small `erc-fill-column' (we can force a line break without
+ ;; involving that module).
+ (should-not erc-timestamp-right-column)
+
+ (ert-info ("nil, overlong (hard wrap)")
+ (let ((erc-timestamp-use-align-to nil)
+ (erc-timestamp-right-column 20))
+ (erc-display-message nil 'notice (current-buffer)
+ "twenty characters"))
+ (should (search-forward-regexp (rx bol (+ "\t") (* " ") "[") nil t))
+ ;; Field excludes leading whitespace (arguably undesirable).
+ (should (eql ?\[ (char-after (field-beginning (point)))))
+ ;; Timestamp extends to the end of the line.
+ (should (eql ?\n (char-after (field-end (point)))))))))
+
+(ert-deftest erc-timestamp-use-align-to--t ()
+ (erc-stamp-tests--insert-right
+ (lambda ()
+
+ (ert-info ("t, normal")
+ (let ((erc-timestamp-use-align-to t))
+ (let ((msg (erc-format-privmessage "bob" "msg one" nil t)))
+ (erc-display-message nil nil (current-buffer) msg)))
+ (goto-char (point-min))
+ ;; Exactly two spaces, one from format, one added by erc-stamp.
+ (should (search-forward "msg one [" nil t))
+ ;; Field covers space between.
+ (should (eql ?e (char-before (field-beginning (point)))))
+ (should (eql ?\n (char-after (field-end (point))))))
+
+ (ert-info ("t, overlong (hard wrap)")
+ (let ((erc-timestamp-use-align-to t)
+ (erc-timestamp-right-column 20))
+ (let ((msg (erc-format-privmessage "bob" "tttt wwww oooo" nil t)))
+ (erc-display-message nil nil (current-buffer) msg)))
+ ;; Indented to pos (this is arguably a bug).
+ (should (search-forward-regexp (rx bol (+ "\t") (* " ") "[") nil t))
+ ;; Field starts *after* leading space (arguably bad).
+ (should (eql ?\[ (char-after (field-beginning (point)))))
+ (should (eql ?\n (char-after (field-end (point)))))))))
+
+(ert-deftest erc-timestamp-use-align-to--integer ()
+ (erc-stamp-tests--insert-right
+ (lambda ()
+
+ (ert-info ("integer, normal")
+ (let ((erc-timestamp-use-align-to 1))
+ (let ((msg (erc-format-privmessage "bob" "msg one" nil t)))
+ (erc-display-message nil nil (current-buffer) msg)))
+ (goto-char (point-min))
+ ;; Space not added because included in format string.
+ (should (search-forward "msg one [" nil t))
+ ;; Field covers space between.
+ (should (eql ?e (char-before (field-beginning (point)))))
+ (should (eql ?\n (char-after (field-end (point))))))
+
+ (ert-info ("integer, overlong (hard wrap)")
+ (let ((erc-timestamp-use-align-to 1)
+ (erc-timestamp-right-column 20))
+ (let ((msg (erc-format-privmessage "bob" "tttt wwww oooo" nil t)))
+ (erc-display-message nil nil (current-buffer) msg)))
+ ;; No hard wrap
+ (should (search-forward "oooo [" nil t))
+ ;; Field starts at leading space.
+ (should (eql ?\s (char-after (field-beginning (point)))))
+ (should (eql ?\n (char-after (field-end (point)))))))))
+
+(ert-deftest erc-timestamp-use-align-to--margin ()
+ (erc-stamp-tests--insert-right
+ (lambda ()
+ (erc-stamp--display-margin-mode +1)
+
+ (ert-info ("margin, normal")
+ (let ((erc-timestamp-use-align-to 'margin))
+ (let ((msg (erc-format-privmessage "bob" "msg one" nil t)))
+ (put-text-property 0 (length msg) 'wrap-prefix 10 msg)
+ (erc-display-message nil nil (current-buffer) msg)))
+ (goto-char (point-min))
+ ;; Space not added (treated as opaque string).
+ (should (search-forward "msg one[" nil t))
+ ;; Field covers stamp alone
+ (should (eql ?e (char-before (field-beginning (point)))))
+ ;; Vanity props extended
+ (should (get-text-property (field-beginning (point)) 'wrap-prefix))
+ (should (get-text-property (1+ (field-beginning (point))) 'wrap-prefix))
+ (should (get-text-property (1- (field-end (point))) 'wrap-prefix))
+ (should (eql ?\n (char-after (field-end (point))))))
+
+ (ert-info ("margin, overlong (hard wrap)")
+ (let ((erc-timestamp-use-align-to 'margin)
+ (erc-timestamp-right-column 20))
+ (let ((msg (erc-format-privmessage "bob" "tttt wwww oooo" nil t)))
+ (erc-display-message nil nil (current-buffer) msg)))
+ ;; No hard wrap
+ (should (search-forward "oooo[" nil t))
+ ;; Field starts at format string (right bracket)
+ (should (eql ?\[ (char-after (field-beginning (point)))))
+ (should (eql ?\n (char-after (field-end (point)))))))))
+
+;; This concerns a proposed partial reversal of the changes resulting
+;; from:
+;;
+;; 24.1.50; Wrong behavior of move-end-of-line in ERC (Bug#11706)
+;;
+;; Perhaps core behavior has changed since this bug was reported, but
+;; C-e stopping one char short of EOL no longer seems a problem.
+;; However, invoking C-n (`next-line') exhibits a similar effect.
+;; When point is in a stamp or near the beginning of a line, issuing a
+;; C-n puts point one past the start of the message (i.e., two chars
+;; beyond the timestamp's closing "]". Dropping the invisible
+;; property when timestamps are hidden does indeed prevent this, but
+;; it's also a lasting commitment. The docs mention that it's
+;; pointless to pair the old `intangible' property with `invisible'
+;; and suggest users look at `cursor-intangible-mode'. Turning off
+;; the latter does indeed do the trick as does decrementing the end of
+;; the `cursor-intangible' interval so that, in addition to C-n
+;; working, a C-f from before the timestamp doesn't overshoot. This
+;; appears to be the case whether `erc-hide-timestamps' is enabled or
+;; not, but it may be inadvisable for some reason (a hack) and
+;; therefore warrants further investigation.
+;;
+;; Note some striking omissions here:
+;;
+;; 1. a lack of `fill' module integration (we simulate it by
+;; making lines short enough to not wrap)
+;; 2. functions like `line-move' behave differently when
+;; `noninteractive'
+;; 3. no actual test assertions involving `cursor-sensor' movement
+;; even though that's a huge ingredient
+
+(ert-deftest erc-timestamp-intangible--left ()
+ (let ((erc-timestamp-only-if-changed-flag nil)
+ (erc-timestamp-intangible t) ; default changed to nil in 2014
+ (erc-hide-timestamps t)
+ (erc-insert-timestamp-function 'erc-insert-timestamp-left)
+ (erc-server-process (start-process "true" (current-buffer) "true"))
+ (erc-insert-modify-hook '(erc-make-read-only erc-add-timestamp))
+ msg
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (should (not cursor-sensor-inhibit))
+ (set-process-query-on-exit-flag erc-server-process nil)
+ (erc-mode)
+ (with-current-buffer (get-buffer-create "*erc-timestamp-intangible*")
+ (erc-mode)
+ (erc--initialize-markers (point) nil)
+ (erc-munge-invisibility-spec)
+ (erc-display-message nil 'notice (current-buffer) "Welcome")
+ ;;
+ ;; Pretend `fill' is active and that these lines are
+ ;; folded. Otherwise, there's an annoying issue on wrapped lines
+ ;; (when visual-line-mode is off and stamps are visible) where
+ ;; C-e sends you to the end of the previous line.
+ (setq msg "Lorem ipsum dolor sit amet")
+ (erc-display-message nil nil (current-buffer)
+ (erc-format-privmessage "alyssa" msg nil t))
+ (erc-display-message nil 'notice (current-buffer) "Home")
+ (goto-char (point-min))
+
+ ;; EOL is actually EOL (Bug#11706)
+
+ (ert-info ("Notice before stamp, C-e") ; first line/stamp
+ (should (search-forward "Welcome" nil t))
+ (ert-simulate-command '(erc-bol))
+ (should (looking-at (rx "[")))
+ (let ((end (pos-eol))) ; `line-end-position' fails because fields
+ (ert-simulate-command '(move-end-of-line 1))
+ (should (= end (point)))))
+
+ (ert-info ("Privmsg before stamp, C-e")
+ (should (search-forward "Lorem" nil t))
+ (goto-char (pos-bol))
+ (should (looking-at (rx "[")))
+ (let ((end (pos-eol)))
+ (ert-simulate-command '(move-end-of-line 1))
+ (should (= end (point)))))
+
+ (ert-info ("Privmsg first line, C-e")
+ (goto-char (pos-bol))
+ (should (search-forward "ipsum" nil t))
+ (let ((end (pos-eol)))
+ (ert-simulate-command '(move-end-of-line 1))
+ (should (= end (point)))))
+
+ (when noninteractive
+ (kill-buffer)))))
+
+;;; erc-stamp-tests.el ends here
diff --git a/test/lisp/erc/erc-tests.el b/test/lisp/erc/erc-tests.el
index d6c63934163..29bda7e742d 100644
--- a/test/lisp/erc/erc-tests.el
+++ b/test/lisp/erc/erc-tests.el
@@ -113,15 +113,27 @@
(should (get-buffer "#spam"))
(kill-buffer "#spam")))
+(ert-deftest erc-with-server-buffer ()
+ (setq erc-away 1)
+ (erc-tests--set-fake-server-process "sleep" "1")
+
+ (let (calls)
+ (advice-add 'buffer-local-value :after (lambda (&rest r) (push r calls))
+ '((name . erc-with-server-buffer)))
+
+ (should (= 1 (erc-with-server-buffer erc-away)))
+ (should (equal (pop calls) (list 'erc-away (current-buffer))))
+
+ (should (= 1 (erc-with-server-buffer (ignore 'me) erc-away)))
+ (should-not calls)
+
+ (advice-remove 'buffer-local-value 'erc-with-server-buffer)))
+
(defun erc-tests--send-prep ()
;; Caller should probably shadow `erc-insert-modify-hook' or
;; populate user tables for erc-button.
(erc-mode)
- (insert "\n\n")
- (setq erc-input-marker (make-marker)
- erc-insert-marker (make-marker))
- (set-marker erc-insert-marker (point-max))
- (erc-display-prompt)
+ (erc--initialize-markers (point) nil)
(should (= (point) erc-input-marker)))
(defun erc-tests--set-fake-server-process (&rest args)
@@ -257,6 +269,79 @@
(kill-buffer "bob")
(kill-buffer "ServNet"))))
+(ert-deftest erc--initialize-markers ()
+ (let ((proc (start-process "true" (current-buffer) "true"))
+ erc-modules
+ erc-connect-pre-hook
+ erc-insert-modify-hook
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (set-process-query-on-exit-flag proc nil)
+ (erc-mode)
+ (setq erc-server-process proc
+ erc-networks--id (erc-networks--id-create 'foonet))
+ (erc-open "localhost" 6667 "tester" "Tester" nil
+ "fake" nil "#chan" proc nil "user" nil)
+ (with-current-buffer (should (get-buffer "#chan"))
+ (should (= ?\n (char-after 1)))
+ (should (= ?E (char-after erc-insert-marker)))
+ (should (= 3 (marker-position erc-insert-marker)))
+ (should (= 8 (marker-position erc-input-marker)))
+ (should (= 8 (point-max)))
+ (should (= 8 (point)))
+ ;; These prompt properties are a continual source of confusion.
+ ;; Including the literal defaults here can hopefully serve as a
+ ;; quick reference for anyone operating in that area.
+ (should (equal (buffer-string)
+ #("\n\nERC> "
+ 2 6 ( font-lock-face erc-prompt-face
+ rear-nonsticky t
+ erc-prompt t
+ field erc-prompt
+ front-sticky t
+ read-only t)
+ 6 7 ( rear-nonsticky t
+ erc-prompt t
+ field erc-prompt
+ front-sticky t
+ read-only t))))
+
+ ;; Simulate some activity by inserting some text before and
+ ;; after the prompt (multiline).
+ (erc-display-error-notice nil "Welcome")
+ (goto-char (point-max))
+ (insert "Hello\nWorld")
+ (goto-char 3)
+ (should (looking-at-p (regexp-quote "*** Welcome"))))
+
+ (ert-info ("Reconnect")
+ (erc-open "localhost" 6667 "tester" "Tester" nil
+ "fake" nil "#chan" proc nil "user" nil)
+ (should-not (get-buffer "#chan<2>")))
+
+ (ert-info ("Existing prompt respected")
+ (with-current-buffer (should (get-buffer "#chan"))
+ (should (= ?\n (char-after 1)))
+ (should (= ?E (char-after erc-insert-marker)))
+ (should (= 15 (marker-position erc-insert-marker)))
+ (should (= 20 (marker-position erc-input-marker)))
+ (should (= 3 (point))) ; point restored
+ (should (equal (buffer-string)
+ #("\n\n*** Welcome\nERC> Hello\nWorld"
+ 2 13 (font-lock-face erc-error-face)
+ 14 18 ( font-lock-face erc-prompt-face
+ rear-nonsticky t
+ erc-prompt t
+ field erc-prompt
+ front-sticky t
+ read-only t)
+ 18 19 ( rear-nonsticky t
+ erc-prompt t
+ field erc-prompt
+ front-sticky t
+ read-only t))))
+ (when noninteractive
+ (kill-buffer))))))
+
(ert-deftest erc--switch-to-buffer ()
(defvar erc-modified-channels-alist) ; lisp/erc/erc-track.el
@@ -314,6 +399,309 @@
(dolist (b '("server" "other" "#chan" "#foo" "#fake"))
(kill-buffer b))))
+(defun erc-tests--run-in-term (&optional debug)
+ (let* ((default-directory (getenv "EMACS_TEST_DIRECTORY"))
+ (emacs (expand-file-name invocation-name invocation-directory))
+ (process-environment (cons "ERC_TESTS_SUBPROCESS=1"
+ process-environment))
+ (name (ert-test-name (ert-running-test)))
+ (temp-file (make-temp-file "erc-term-test-"))
+ (cmd `(let ((stats 1))
+ (setq enable-dir-local-variables nil)
+ (unwind-protect
+ (setq stats (ert-run-tests-batch ',name))
+ (unless ',debug
+ (let ((buf (with-current-buffer (messages-buffer)
+ (buffer-string))))
+ (with-temp-file ,temp-file
+ (insert buf)))
+ (kill-emacs (ert-stats-completed-unexpected stats))))))
+ ;; `ert-test' object in Emacs 29 has a `file-name' field
+ (file-name (symbol-file name 'ert--test))
+ (default-directory (expand-file-name (file-name-directory file-name)))
+ (package (if-let* ((found (getenv "ERC_PACKAGE_NAME"))
+ ((string-prefix-p "erc-" found)))
+ (intern found)
+ 'erc))
+ (setup (and (featurep 'compat)
+ `(progn
+ (require 'package)
+ (let ((package-load-list '((compat t) (,package t))))
+ (package-initialize)))))
+ ;; Make subprocess terminal bigger than controlling.
+ (buf (cl-letf (((symbol-function 'window-screen-lines)
+ (lambda () 20))
+ ((symbol-function 'window-max-chars-per-line)
+ (lambda () 40)))
+ (make-term (symbol-name name) emacs nil "-Q" "-nw"
+ "-eval" (prin1-to-string setup)
+ "-l" file-name "-eval" (format "%S" cmd))))
+ (proc (get-buffer-process buf))
+ (err (lambda ()
+ (with-temp-buffer
+ (insert-file-contents temp-file)
+ (message "Subprocess: %s" (buffer-string))
+ (delete-file temp-file)))))
+ (with-current-buffer buf
+ (set-process-query-on-exit-flag proc nil)
+ (with-timeout (10 (funcall err) (error "Timed out awaiting result"))
+ (while (process-live-p proc)
+ (accept-process-output proc 0.1)))
+ (while (accept-process-output proc))
+ (goto-char (point-min))
+ ;; Otherwise gives process exited abnormally with exit-code >0
+ (unless (search-forward (format "Process %s finished" name) nil t)
+ (funcall err)
+ (ert-fail (when (search-forward "exited" nil t)
+ (buffer-substring-no-properties (line-beginning-position)
+ (line-end-position)))))
+ (delete-file temp-file)
+ (when noninteractive
+ (kill-buffer)))))
+
+(defun erc-tests--servars (source &rest vars)
+ (unless (bufferp source)
+ (setq source (get-buffer source)))
+ (dolist (var vars)
+ (should (local-variable-if-set-p var))
+ (set var (buffer-local-value var source))))
+
+(defun erc-tests--erc-reuse-frames (test &optional debug)
+ (if (and (or debug noninteractive) (not (getenv "ERC_TESTS_SUBPROCESS")))
+ (progn
+ (when (memq system-type '(windows-nt ms-dos))
+ (ert-skip "System must be UNIX"))
+ (erc-tests--run-in-term debug))
+ (should-not erc-frame-dedicated-flag)
+ (should (eq erc-reuse-frames t))
+ (let ((erc-join-buffer 'frame)
+ (erc-reuse-frames t)
+ (erc-frame-alist nil)
+ (orig-frame (selected-frame))
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (delete-other-frames)
+ (delete-other-windows)
+ (set-window-buffer (selected-window) "*scratch*")
+ (funcall test orig-frame)
+ (delete-other-frames orig-frame)
+ (delete-other-windows))))
+
+;; TODO add cases for frame-display behavior while reconnecting
+
+(defun erc-tests--erc-reuse-frames--t (_)
+ (ert-info ("New server buffer creates and raises second frame")
+ (with-current-buffer (generate-new-buffer "server")
+ (erc-mode)
+ (setq erc-server-process (start-process "server"
+ (current-buffer) "sleep" "10")
+ erc-frame-alist (cons '(name . "server") default-frame-alist)
+ erc-network 'foonet
+ erc-networks--id (erc-networks--id-create nil)
+ erc--server-last-reconnect-count 0)
+ (set-process-buffer erc-server-process (current-buffer))
+ (set-process-query-on-exit-flag erc-server-process nil)
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ (should (equal "server" (frame-parameter (window-frame) 'name)))
+ (should (get-buffer-window (current-buffer) t))))
+
+ (ert-info ("New channel creates and raises third frame")
+ (with-current-buffer (generate-new-buffer "#chan")
+ (erc-mode)
+ (erc-tests--servars "server" 'erc-server-process 'erc-networks--id
+ 'erc-network)
+ (setq erc-frame-alist (cons '(name . "#chan") default-frame-alist)
+ erc-default-recipients '("#chan"))
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ (should (equal "#chan" (frame-parameter (window-frame) 'name)))
+ (should (get-buffer-window (current-buffer) t))
+ (should (cddr (frame-list))))))
+
+(ert-deftest erc-reuse-frames--t ()
+ :tags '(:unstable :expensive-test)
+ (erc-tests--erc-reuse-frames
+ (lambda (orig-frame)
+ (erc-tests--erc-reuse-frames--t orig-frame)
+ (dolist (b '("server" "#chan"))
+ (kill-buffer b)))))
+
+(defun erc-tests--erc-reuse-frames--displayed-single (_ server-name chan-name)
+
+ (should (eq erc-reuse-frames 'displayed))
+
+ (ert-info ("New server buffer shown in existing frame")
+ (with-current-buffer (generate-new-buffer server-name)
+ (erc-mode)
+ (setq erc-server-process (start-process server-name (current-buffer)
+ "sleep" "10")
+ erc-frame-alist (cons `(name . ,server-name) default-frame-alist)
+ erc-network (make-symbol server-name)
+ erc-server-current-nick "tester"
+ erc-networks--id (erc-networks--id-create nil)
+ erc--server-last-reconnect-count 0)
+ (set-process-buffer erc-server-process (current-buffer))
+ (set-process-query-on-exit-flag erc-server-process nil)
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ (should-not (equal server-name (frame-parameter (window-frame) 'name)))
+ ;; New server buffer window appears in split below ERT/scratch
+ (should (get-buffer-window (current-buffer) t))))
+
+ (ert-info ("New channel shown in existing frame")
+ (with-current-buffer (generate-new-buffer chan-name)
+ (erc-mode)
+ (erc-tests--servars server-name 'erc-server-process 'erc-networks--id
+ 'erc-network)
+ (setq erc-frame-alist (cons `(name . ,chan-name) default-frame-alist)
+ erc-default-recipients (list chan-name))
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ (should-not (equal chan-name (frame-parameter (window-frame) 'name)))
+ ;; New channel buffer replaces server in lower window
+ (should (get-buffer-window (current-buffer) t))
+ (should-not (get-buffer-window server-name t)))))
+
+(ert-deftest erc-reuse-frames--displayed-single ()
+ :tags '(:unstable :expensive-test)
+ (erc-tests--erc-reuse-frames
+ (lambda (orig-frame)
+ (let ((erc-reuse-frames 'displayed))
+ (erc-tests--erc-reuse-frames--displayed-single orig-frame
+ "server" "#chan")
+ (should-not (cdr (frame-list))))
+ (dolist (b '("server" "#chan"))
+ (kill-buffer b)))))
+
+(defun erc-tests--assert-server-split (buffer-or-name frame-name)
+ ;; Assert current buffer resides on one side of a horizontal split
+ ;; in the "server" frame but is not selected.
+ (let* ((buffer-window (get-buffer-window buffer-or-name t))
+ (buffer-frame (window-frame buffer-window)))
+ (should (equal frame-name (frame-parameter buffer-frame 'name)))
+ (should (memq buffer-window (car-safe (window-tree buffer-frame))))
+ (should-not (eq buffer-window (frame-selected-window)))
+ buffer-frame))
+
+(defun erc-tests--erc-reuse-frames--displayed-double (_)
+ (should (eq erc-reuse-frames 'displayed))
+
+ (make-frame '((name . "other")))
+ (select-frame (make-frame '((name . "server"))) 'no-record)
+ (set-window-buffer (selected-window) "*scratch*") ; invokes `erc'
+
+ ;; A user invokes an entry point and switches immediately to a new
+ ;; frame before autojoin kicks in (bug#55540).
+
+ (ert-info ("New server buffer shown in selected frame")
+ (with-current-buffer (generate-new-buffer "server")
+ (erc-mode)
+ (setq erc-server-process (start-process "server" (current-buffer)
+ "sleep" "10")
+ erc-network 'foonet
+ erc-server-current-nick "tester"
+ erc-networks--id (erc-networks--id-create nil)
+ erc--server-last-reconnect-count 0)
+ (set-process-buffer erc-server-process (current-buffer))
+ (set-process-query-on-exit-flag erc-server-process nil)
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ (should (equal "server" (frame-parameter (window-frame) 'name)))
+ (should (get-buffer-window (current-buffer) t))))
+
+ (select-frame-by-name "other")
+
+ (ert-info ("New channel shown in dedicated frame")
+ (with-current-buffer (generate-new-buffer "#chan")
+ (erc-mode)
+ (erc-tests--servars "server" 'erc-server-process 'erc-networks--id
+ 'erc-network)
+ (setq erc-frame-alist (cons '(name . "#chan") default-frame-alist)
+ erc-default-recipients '("#chan"))
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ (erc-tests--assert-server-split (current-buffer) "server")
+ ;; New channel buffer replaces server in lower window of other frame
+ (should-not (get-buffer-window "server" t)))))
+
+(ert-deftest erc-reuse-frames--displayed-double ()
+ :tags '(:unstable :expensive-test)
+ (erc-tests--erc-reuse-frames
+ (lambda (orig-frame)
+ (let ((erc-reuse-frames 'displayed))
+ (erc-tests--erc-reuse-frames--displayed-double orig-frame))
+ (dolist (b '("server" "#chan"))
+ (kill-buffer b)))))
+
+;; If a frame showing ERC buffers exists among other frames, new,
+;; additional connections will use the existing IRC frame. However,
+;; if two or more frames exist with ERC buffers unique to a particular
+;; connection, the correct frame will be found.
+
+(defun erc-tests--erc-reuse-frames--displayed-full (orig-frame)
+ (erc-tests--erc-reuse-frames--displayed-double orig-frame)
+ ;; Server buffer is not displayed because #chan has replaced it in
+ ;; the "server" frame, which is not selected.
+ (should (equal "other" (frame-parameter (window-frame) 'name)))
+ (erc-tests--erc-reuse-frames--displayed-single orig-frame "ircd" "#spam")
+ (should (equal "other" (frame-parameter (window-frame) 'name)))
+
+ ;; Buffer "#spam" has replaced "ircd", which earlier replaced
+ ;; "#chan" in frame "server". But this is confusing, so...
+ (ert-info ("Arrange windows for second connection in other frame")
+ (set-window-buffer (selected-window) "ircd")
+ (split-window-below)
+ (set-window-buffer (next-window) "#spam")
+ (should (equal (cddar (window-tree))
+ (list (get-buffer-window "ircd" t)
+ (get-buffer-window "#spam" t)))))
+
+ (ert-info ("Arrange windows for first connection in server frame")
+ (select-frame-by-name "server")
+ (set-window-buffer (selected-window) "server")
+ (set-window-buffer (next-window) "#chan")
+ (should (equal (cddar (window-tree))
+ (list (get-buffer-window "server" t)
+ (get-buffer-window "#chan" t)))))
+
+ ;; Select original ERT frame
+ (ert-info ("New target for connection server finds appropriate frame")
+ (select-frame orig-frame 'no-record)
+ (with-current-buffer (window-buffer (selected-window))
+ (should (member (buffer-name) '("*ert*" "*scratch*")))
+ (with-current-buffer (generate-new-buffer "alice")
+ (erc-mode)
+ (erc-tests--servars "server" 'erc-server-process 'erc-networks--id)
+ (setq erc-default-recipients '("alice"))
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ ;; Window created in frame "server"
+ (should (eq (selected-frame) orig-frame))
+ (erc-tests--assert-server-split (current-buffer) "server"))))
+
+ (ert-info ("New target for connection ircd finds appropriate frame")
+ (select-frame orig-frame 'no-record)
+ (with-current-buffer (window-buffer (selected-window))
+ (should (member (buffer-name) '("*ert*" "*scratch*")))
+ (with-current-buffer (generate-new-buffer "bob")
+ (erc-mode)
+ (erc-tests--servars "ircd" 'erc-server-process 'erc-networks--id)
+ (setq erc-default-recipients '("bob"))
+ (should-not (get-buffer-window (current-buffer) t))
+ (erc-setup-buffer (current-buffer))
+ ;; Window created in frame "other"
+ (should (eq (selected-frame) orig-frame))
+ (erc-tests--assert-server-split (current-buffer) "other")))))
+
+(ert-deftest erc-reuse-frames--displayed-full ()
+ :tags '(:unstable :expensive-test)
+ (erc-tests--erc-reuse-frames
+ (lambda (orig-frame)
+ (let ((erc-reuse-frames 'displayed))
+ (erc-tests--erc-reuse-frames--displayed-full orig-frame))
+ (dolist (b '("server" "ircd" "bob" "alice" "#spam" "#chan"))
+ (kill-buffer b)))))
+
(ert-deftest erc-lurker-maybe-trim ()
(let (erc-lurker-trim-nicks
(erc-lurker-ignore-chars "_`"))
@@ -447,6 +835,27 @@
(should (equal (erc-downcase "Tilde~") "tilde~" ))
(should (equal (erc-downcase "\\O/") "|o/" )))))
+(ert-deftest erc-channel-p ()
+ (let ((erc--isupport-params (make-hash-table))
+ erc-server-parameters)
+
+ (should (erc-channel-p "#chan"))
+ (should (erc-channel-p "##chan"))
+ (should (erc-channel-p "&chan"))
+ (should (erc-channel-p "+chan"))
+ (should (erc-channel-p "!chan"))
+ (should-not (erc-channel-p "@chan"))
+
+ (push '("CHANTYPES" . "#&@+!") erc-server-parameters)
+
+ (should (erc-channel-p "!chan"))
+ (should (erc-channel-p "#chan"))
+
+ (with-current-buffer (get-buffer-create "#chan")
+ (setq erc--target (erc--target-from-string "#chan")))
+ (should (erc-channel-p (get-buffer "#chan"))))
+ (kill-buffer "#chan"))
+
(ert-deftest erc--valid-local-channel-p ()
(ert-info ("Local channels not supported")
(let ((erc--isupport-params (make-hash-table)))
@@ -471,6 +880,50 @@
(should (equal (erc--target-from-string "&Bitlbee")
#s(erc--target-channel-local "&Bitlbee" &bitlbee)))))
+(ert-deftest erc--modify-local-map ()
+ (when (and (bound-and-true-p erc-irccontrols-mode)
+ (fboundp 'erc-irccontrols-mode))
+ (erc-irccontrols-mode -1))
+ (when (and (bound-and-true-p erc-match-mode)
+ (fboundp 'erc-match-mode))
+ (erc-match-mode -1))
+ (let* (calls
+ (inhibit-message noninteractive)
+ (cmd-foo (lambda () (interactive) (push 'foo calls)))
+ (cmd-bar (lambda () (interactive) (push 'bar calls))))
+
+ (ert-info ("Add non-existing")
+ (erc--modify-local-map t "C-c C-c" cmd-foo "C-c C-k" cmd-bar)
+ (with-temp-buffer
+ (set-window-buffer (selected-window) (current-buffer))
+ (use-local-map erc-mode-map)
+ (execute-kbd-macro "\C-c\C-c")
+ (execute-kbd-macro "\C-c\C-k"))
+ (should (equal calls '(bar foo))))
+ (setq calls nil)
+
+ (ert-info ("Add existing") ; Attempt to swap definitions fails
+ (erc--modify-local-map t "C-c C-c" cmd-bar "C-c C-k" cmd-foo)
+ (with-temp-buffer
+ (set-window-buffer (selected-window) (current-buffer))
+ (use-local-map erc-mode-map)
+ (execute-kbd-macro "\C-c\C-c")
+ (execute-kbd-macro "\C-c\C-k"))
+ (should (equal calls '(bar foo))))
+ (setq calls nil)
+
+ (ert-info ("Remove existing")
+ (ert-with-message-capture messages
+ (erc--modify-local-map nil "C-c C-c" cmd-foo "C-c C-k" cmd-bar)
+ (with-temp-buffer
+ (set-window-buffer (selected-window) (current-buffer))
+ (use-local-map erc-mode-map)
+ (execute-kbd-macro "\C-c\C-c")
+ (execute-kbd-macro "\C-c\C-k"))
+ (should (string-search "C-c C-c is undefined" messages))
+ (should (string-search "C-c C-k is undefined" messages))
+ (should-not calls)))))
+
(ert-deftest erc-ring-previous-command-base-case ()
(ert-info ("Create ring when nonexistent and do nothing")
(let (erc-input-ring
@@ -494,8 +947,8 @@
;;
(cl-letf (((symbol-function 'erc-process-input-line)
(lambda (&rest _)
- (insert-before-markers
- (erc-display-message-highlight 'notice "echo: one\n"))))
+ (erc-display-message
+ nil 'notice (current-buffer) "echo: one\n")))
((symbol-function 'erc-command-no-process-p)
(lambda (&rest _) t)))
(ert-info ("Create ring, populate, recall")
@@ -999,32 +1452,67 @@
(should (string-match erc--server-connect-dumb-ipv6-regexp
(concat "[" a "]")))))
+(ert-deftest erc--with-entrypoint-environment ()
+ (let ((env '((erc-join-buffer . foo)
+ (erc-server-connect-function . bar))))
+ (erc--with-entrypoint-environment env
+ (should (eq erc-join-buffer 'foo))
+ (should (eq erc-server-connect-function 'bar)))))
+
(ert-deftest erc-select-read-args ()
- (ert-info ("Does not default to TLS")
- (should (equal (ert-simulate-keys "\r\r\r\r"
+ (ert-info ("Prompts for switch to TLS by default")
+ (should (equal (ert-simulate-keys "\r\r\r\ry\r"
(erc-select-read-args))
(list :server "irc.libera.chat"
- :port 6667
+ :port 6697
+ :nick (user-login-name)
+ '&interactive-env
+ '((erc-server-connect-function . erc-open-tls-stream)
+ (erc-join-buffer . buffer))))))
+
+ (ert-info ("Switches to TLS when port matches default TLS port")
+ (should (equal (ert-simulate-keys "irc.gnu.org\r6697\r\r\r"
+ (erc-select-read-args))
+ (list :server "irc.gnu.org"
+ :port 6697
+ :nick (user-login-name)
+ '&interactive-env
+ '((erc-server-connect-function . erc-open-tls-stream)
+ (erc-join-buffer . buffer))))))
+
+ (ert-info ("Switches to TLS when URL is ircs://")
+ (should (equal (ert-simulate-keys "ircs://irc.gnu.org\r\r\r\r"
+ (erc-select-read-args))
+ (list :server "irc.gnu.org"
+ :port 6697
:nick (user-login-name)
- :password nil))))
+ '&interactive-env
+ '((erc-server-connect-function . erc-open-tls-stream)
+ (erc-join-buffer . buffer))))))
+
+ (setq-local erc-interactive-display nil) ; cheat to save space
+
+ (ert-info ("Opt out of non-TLS warning manually")
+ (should (equal (ert-simulate-keys "\r\r\r\rn\r"
+ (erc-select-read-args))
+ (list :server "irc.libera.chat"
+ :port 6667
+ :nick (user-login-name)))))
(ert-info ("Override default TLS")
(should (equal (ert-simulate-keys "irc://irc.libera.chat\r\r\r\r"
(erc-select-read-args))
(list :server "irc.libera.chat"
:port 6667
- :nick (user-login-name)
- :password nil))))
+ :nick (user-login-name)))))
(ert-info ("Address includes port")
- (should (equal (ert-simulate-keys
- "localhost:6667\rnick\r\r"
+ (should (equal (ert-simulate-keys "localhost:6667\rnick\r\r"
(erc-select-read-args))
(list :server "localhost"
:port 6667
- :nick "nick"
- :password nil))))
+ :nick "nick"))))
(ert-info ("Address includes nick, password skipped via option")
(should (equal (ert-simulate-keys "nick@localhost:6667\r"
@@ -1032,8 +1520,7 @@
(erc-select-read-args)))
(list :server "localhost"
:port 6667
- :nick "nick"
- :password nil))))
+ :nick "nick"))))
(ert-info ("Address includes nick and password")
(should (equal (ert-simulate-keys "nick:sesame@localhost:6667\r\r"
@@ -1048,37 +1535,53 @@
(erc-select-read-args))
(list :server "[::1]"
:port 6667
- :nick (user-login-name)
- :password nil))))
+ :nick (user-login-name)))))
(ert-info ("IPv6 address with port")
(should (equal (ert-simulate-keys "[::1]:6667\r\r\r"
(erc-select-read-args))
(list :server "[::1]"
:port 6667
- :nick (user-login-name)
- :password nil))))
+ :nick (user-login-name)))))
(ert-info ("IPv6 address includes nick")
(should (equal (ert-simulate-keys "nick@[::1]:6667\r\r"
(erc-select-read-args))
(list :server "[::1]"
:port 6667
+ :nick "nick"))))
+
+ (ert-info ("Extra args use URL nick by default")
+ (should (equal (ert-simulate-keys "nick:sesame@localhost:6667\r\r\r\r"
+ (let ((current-prefix-arg '(4)))
+ (erc-select-read-args)))
+ (list :server "localhost"
+ :port 6667
:nick "nick"
- :password nil)))))
+ :user "nick"
+ :password "sesame"
+ :full-name "nick")))))
(ert-deftest erc-tls ()
- (let (calls)
+ (let (calls env)
(cl-letf (((symbol-function 'user-login-name)
(lambda (&optional _) "tester"))
((symbol-function 'erc-open)
- (lambda (&rest r) (push r calls))))
+ (lambda (&rest r)
+ (push `((erc-join-buffer ,erc-join-buffer)
+ (erc-server-connect-function
+ ,erc-server-connect-function))
+ env)
+ (push r calls))))
(ert-info ("Defaults")
(erc-tls)
(should (equal (pop calls)
'("irc.libera.chat" 6697 "tester" "unknown" t
- nil nil nil nil nil "user" nil))))
+ nil nil nil nil nil "user" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer bury)
+ (erc-server-connect-function erc-open-tls-stream)))))
(ert-info ("Full")
(erc-tls :server "irc.gnu.org"
@@ -1091,7 +1594,10 @@
:id 'GNU.org)
(should (equal (pop calls)
'("irc.gnu.org" 7000 "bob" "Bob's Name" t
- "bob:changeme" nil nil nil t "bobo" GNU.org))))
+ "bob:changeme" nil nil nil t "bobo" GNU.org)))
+ (should (equal (pop env)
+ '((erc-join-buffer bury)
+ (erc-server-connect-function erc-open-tls-stream)))))
;; Values are often nil when called by lisp code, which leads to
;; null params. This is why `erc-open' recomputes almost
@@ -1107,7 +1613,92 @@
:password "bob:changeme"))
(should (equal (pop calls)
'(nil 7000 nil "Bob's Name" t
- "bob:changeme" nil nil nil nil "bobo" nil)))))))
+ "bob:changeme" nil nil nil nil "bobo" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer bury)
+ (erc-server-connect-function erc-open-tls-stream)))))
+
+ (ert-info ("Interactive")
+ (ert-simulate-keys "nick:sesame@localhost:6667\r\r"
+ (call-interactively #'erc-tls))
+ (should (equal (pop calls)
+ '("localhost" 6667 "nick" "unknown" t "sesame"
+ nil nil nil nil "user" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer buffer)
+ (erc-server-connect-function erc-open-tls-stream)))))
+
+ (ert-info ("Custom connect function")
+ (let ((erc-server-connect-function 'my-connect-func))
+ (erc-tls)
+ (should (equal (pop calls)
+ '("irc.libera.chat" 6697 "tester" "unknown" t
+ nil nil nil nil nil "user" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer bury)
+ (erc-server-connect-function my-connect-func))))))
+
+ (ert-info ("Advised default function overlooked") ; intentional
+ (advice-add 'erc-server-connect-function :around #'ignore
+ '((name . erc-tests--erc-tls)))
+ (erc-tls)
+ (should (equal (pop calls)
+ '("irc.libera.chat" 6697 "tester" "unknown" t
+ nil nil nil nil nil "user" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer bury)
+ (erc-server-connect-function erc-open-tls-stream))))
+ (advice-remove 'erc-server-connect-function 'erc-tests--erc-tls))
+
+ (ert-info ("Advised non-default function honored")
+ (let ((f (lambda (&rest r) (ignore r))))
+ (cl-letf (((symbol-value 'erc-server-connect-function) f))
+ (advice-add 'erc-server-connect-function :around #'ignore
+ '((name . erc-tests--erc-tls)))
+ (erc-tls)
+ (should (equal (pop calls)
+ '("irc.libera.chat" 6697 "tester" "unknown" t
+ nil nil nil nil nil "user" nil)))
+ (should (equal (pop env) `((erc-join-buffer bury)
+ (erc-server-connect-function ,f))))
+ (advice-remove 'erc-server-connect-function
+ 'erc-tests--erc-tls)))))))
+
+;; See `erc-select-read-args' above for argument parsing.
+;; This only tests the "hidden" arguments.
+
+(ert-deftest erc--interactive ()
+ (let (calls env)
+ (cl-letf (((symbol-function 'user-login-name)
+ (lambda (&optional _) "tester"))
+ ((symbol-function 'erc-open)
+ (lambda (&rest r)
+ (push `((erc-join-buffer ,erc-join-buffer)
+ (erc-server-connect-function
+ ,erc-server-connect-function))
+ env)
+ (push r calls))))
+
+ (ert-info ("Default click-through accept TLS upgrade")
+ (ert-simulate-keys "\r\r\r\ry\r"
+ (call-interactively #'erc))
+ (should (equal (pop calls)
+ '("irc.libera.chat" 6697 "tester" "unknown" t nil
+ nil nil nil nil "user" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer buffer) (erc-server-connect-function
+ erc-open-tls-stream)))))
+
+ (ert-info ("Nick supplied, decline TLS upgrade")
+ (ert-simulate-keys "\r\rdummy\r\rn\r"
+ (call-interactively #'erc))
+ (should (equal (pop calls)
+ '("irc.libera.chat" 6667 "dummy" "unknown" t nil
+ nil nil nil nil "user" nil)))
+ (should (equal (pop env)
+ '((erc-join-buffer buffer)
+ (erc-server-connect-function
+ erc-open-network-stream))))))))
(defun erc-tests--make-server-buf (name)
(with-current-buffer (get-buffer-create name)
@@ -1203,27 +1794,150 @@
(kill-buffer "baznet")
(kill-buffer "#chan")))
+(defconst erc-tests--modules
+ '( autoaway autojoin button capab-identify completion dcc fill identd
+ imenu irccontrols keep-place list log match menu move-to-prompt netsplit
+ networks noncommands notifications notify page readonly
+ replace ring sasl scrolltobottom services smiley sound
+ spelling stamp track truncate unmorse xdcc))
+
+;; Ensure that `:initialize' doesn't change the ordering of the
+;; members because otherwise the widget's state is "edited".
+
+(ert-deftest erc-modules--initialize ()
+ ;; This is `custom--standard-value' from Emacs 28.
+ (should (equal (eval (car (get 'erc-modules 'standard-value)) t)
+ erc-modules)))
+
+;; Ensure the `:initialize' function for `erc-modules' successfully
+;; tags all built-in modules with the internal property `erc--module'.
+
+(ert-deftest erc-modules--internal-property ()
+ (let (ours)
+ (mapatoms (lambda (s)
+ (when-let ((v (get s 'erc--module))
+ ((eq v s)))
+ (push s ours))))
+ (should (equal (sort ours #'string-lessp) erc-tests--modules))))
+
+(ert-deftest erc--normalize-module-symbol ()
+ (dolist (mod erc-tests--modules)
+ (should (eq (erc--normalize-module-symbol mod) mod)))
+ (should (eq (erc--normalize-module-symbol 'pcomplete) 'completion))
+ (should (eq (erc--normalize-module-symbol 'Completion) 'completion))
+ (should (eq (erc--normalize-module-symbol 'ctcp-page) 'page))
+ (should (eq (erc--normalize-module-symbol 'ctcp-sound) 'sound))
+ (should (eq (erc--normalize-module-symbol 'timestamp) 'stamp))
+ (should (eq (erc--normalize-module-symbol 'nickserv) 'services)))
+
+;; Worrying about which library a module comes from is mostly not
+;; worth the hassle so long as ERC can find its minor mode. However,
+;; bugs involving multiple modules living in the same library may slip
+;; by because a module's loading problems may remain hidden on account
+;; of its place in the default ordering.
+
+(ert-deftest erc--find-mode ()
+ (let* ((package (if-let* ((found (getenv "ERC_PACKAGE_NAME"))
+ ((string-prefix-p "erc-" found)))
+ (intern found)
+ 'erc))
+ (prog
+ `(,@(and (featurep 'compat)
+ `((progn
+ (require 'package)
+ (let ((package-load-list '((compat t) (,package t))))
+ (package-initialize)))))
+ (require 'erc)
+ (let ((mods (mapcar #'cadddr
+ (cdddr (get 'erc-modules 'custom-type))))
+ moded)
+ (setq mods
+ (sort mods (lambda (a b) (if (zerop (random 2)) a b))))
+ (dolist (mod mods)
+ (unless (keywordp mod)
+ (push (if-let ((mode (erc--find-mode mod)))
+ mod
+ (list :missing mod))
+ moded)))
+ (message "%S"
+ (sort moded
+ (lambda (a b)
+ (string< (symbol-name a) (symbol-name b))))))))
+ (proc (start-process "erc--module-mode-autoloads"
+ (current-buffer)
+ (concat invocation-directory invocation-name)
+ "-batch" "-Q"
+ "-eval" (format "%S" (cons 'progn prog)))))
+ (set-process-query-on-exit-flag proc t)
+ (while (accept-process-output proc 10))
+ (goto-char (point-min))
+ (should (equal (read (current-buffer)) erc-tests--modules))))
+
(ert-deftest erc-migrate-modules ()
(should (equal (erc-migrate-modules '(autojoin timestamp button))
'(autojoin stamp button)))
;; Default unchanged
(should (equal (erc-migrate-modules erc-modules) erc-modules)))
+(ert-deftest erc--find-group ()
+ ;; These two are loaded by default
+ (should (eq (erc--find-group 'keep-place nil) 'erc))
+ (should (eq (erc--find-group 'networks nil) 'erc-networks))
+ ;; These are fake
+ (cl-letf (((get 'erc-bar 'group-documentation) "")
+ ((get 'baz 'erc-group) 'erc-foo))
+ (should (eq (erc--find-group 'foo 'bar) 'erc-bar))
+ (should (eq (erc--find-group 'bar 'foo) 'erc-bar))
+ (should (eq (erc--find-group 'bar nil) 'erc-bar))
+ (should (eq (erc--find-group 'foo nil) 'erc))
+ (should (eq (erc--find-group 'fake 'baz) 'erc-foo))))
+
+(ert-deftest erc--find-group--real ()
+ :tags '(:unstable)
+ (require 'erc-services)
+ (require 'erc-stamp)
+ (require 'erc-sound)
+ (require 'erc-page)
+ (require 'erc-join)
+ (require 'erc-capab)
+ (require 'erc-pcomplete)
+ (should (eq (erc--find-group 'services 'nickserv) 'erc-services))
+ (should (eq (erc--find-group 'stamp 'timestamp) 'erc-stamp))
+ (should (eq (erc--find-group 'sound 'ctcp-sound) 'erc-sound))
+ (should (eq (erc--find-group 'page 'ctcp-page) 'erc-page))
+ (should (eq (erc--find-group 'autojoin) 'erc-autojoin))
+ (should (eq (erc--find-group 'pcomplete 'Completion) 'erc-pcomplete))
+ (should (eq (erc--find-group 'capab-identify) 'erc-capab))
+ ;; No group specified.
+ (should (eq (erc--find-group 'smiley nil) 'erc))
+ (should (eq (erc--find-group 'unmorse nil) 'erc)))
+
(ert-deftest erc--update-modules ()
(let (calls
erc-modules
erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+
+ ;; This `lbaz' module is unknown, so ERC looks for it via the
+ ;; symbol proerty `erc--feature' and, failing that, by
+ ;; `require'ing its "erc-" prefixed symbol.
+ (should-not (intern-soft "erc-lbaz-mode"))
+
(cl-letf (((symbol-function 'require)
- (lambda (s &rest _) (push s calls)))
+ (lambda (s &rest _)
+ (when (eq s 'erc--lbaz-feature)
+ (fset (intern "erc-lbaz-mode") ; local module
+ (lambda (n) (push (cons 'lbaz n) calls))))
+ (push s calls)))
;; Local modules
- ((symbol-function 'erc-fake-bar-mode)
- (lambda (n) (push (cons 'fake-bar n) calls)))
+ ((symbol-function 'erc-lbar-mode)
+ (lambda (n) (push (cons 'lbar n) calls)))
+ ((get 'lbaz 'erc--feature) 'erc--lbaz-feature)
;; Global modules
- ((symbol-function 'erc-fake-foo-mode)
- (lambda (n) (push (cons 'fake-foo n) calls)))
- ((get 'erc-fake-foo-mode 'standard-value) 'ignore)
+ ((symbol-function 'erc-gfoo-mode)
+ (lambda (n) (push (cons 'gfoo n) calls)))
+ ((get 'erc-gfoo-mode 'standard-value) 'ignore)
((symbol-function 'erc-autojoin-mode)
(lambda (n) (push (cons 'autojoin n) calls)))
((get 'erc-autojoin-mode 'standard-value) 'ignore)
@@ -1234,20 +1948,28 @@
(lambda (n) (push (cons 'completion n) calls)))
((get 'erc-completion-mode 'standard-value) 'ignore))
+ (ert-info ("Unknown module")
+ (setq erc-modules '(lfoo))
+ (should-error (erc--update-modules))
+ (should (equal (pop calls) 'erc-lfoo))
+ (should-not calls))
+
(ert-info ("Local modules")
- (setq erc-modules '(fake-foo fake-bar))
- (should (equal (erc--update-modules) '(erc-fake-bar-mode)))
- ;; Bar the feature is still required but the mode is not activated
- (should (equal (nreverse calls)
- '(erc-fake-foo (fake-foo . 1) erc-fake-bar)))
+ (setq erc-modules '(gfoo lbar lbaz))
+ ;; Don't expose the mode here
+ (should (equal (mapcar #'symbol-name (erc--update-modules))
+ '("erc-lbaz-mode" "erc-lbar-mode")))
+ ;; Lbaz required because unknown.
+ (should (equal (nreverse calls) '((gfoo . 1) erc--lbaz-feature)))
+ (fmakunbound (intern "erc-lbaz-mode"))
+ (unintern (intern "erc-lbaz-mode") obarray)
(setq calls nil))
- (ert-info ("Module name overrides")
- (setq erc-modules '(completion autojoin networks))
+ (ert-info ("Global modules") ; `pcomplete' resolved to `completion'
+ (setq erc-modules '(pcomplete autojoin networks))
(should-not (erc--update-modules)) ; no locals
- (should (equal (nreverse calls) '( erc-pcomplete (completion . 1)
- erc-join (autojoin . 1)
- erc-networks (networks . 1))))
+ (should (equal (nreverse calls)
+ '((completion . 1) (autojoin . 1) (networks . 1))))
(setq calls nil)))))
(ert-deftest erc--merge-local-modes ()
@@ -1276,21 +1998,27 @@
(ert-deftest define-erc-module--global ()
(let ((global-module '(define-erc-module mname malias
- "Some docstring"
+ "Some docstring."
((ignore a) (ignore b))
((ignore c) (ignore d)))))
- (should (equal (macroexpand global-module)
+ (should (equal (cl-letf (((symbol-function
+ 'erc--prepare-custom-module-type)
+ #'symbol-name))
+ (macroexpand global-module))
`(progn
(define-minor-mode erc-mname-mode
"Toggle ERC mname mode.
-With a prefix argument ARG, enable mname if ARG is positive,
-and disable it otherwise. If called from Lisp, enable the mode
-if ARG is omitted or nil.
-Some docstring"
+With a prefix argument ARG, enable mname if ARG is positive, and
+disable it otherwise. If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
+Some docstring."
:global t
- :group 'erc-mname
+ :group (erc--find-group 'mname 'malias)
+ :get #'erc--neuter-custom-variable-state
+ :type "mname"
(if erc-mname-mode
(erc-mname-enable)
(erc-mname-disable)))
@@ -1298,14 +2026,22 @@ Some docstring"
(defun erc-mname-enable ()
"Enable ERC mname mode."
(interactive)
- (cl-pushnew 'mname erc-modules)
+ (unless (or erc--inside-mode-toggle-p
+ (memq 'mname erc-modules))
+ (let ((erc--inside-mode-toggle-p t))
+ (erc--favor-changed-reverted-modules-state
+ 'mname #'cons)))
(setq erc-mname-mode t)
(ignore a) (ignore b))
(defun erc-mname-disable ()
"Disable ERC mname mode."
(interactive)
- (setq erc-modules (delq 'mname erc-modules))
+ (unless (or erc--inside-mode-toggle-p
+ (not (memq 'mname erc-modules)))
+ (let ((erc--inside-mode-toggle-p t))
+ (erc--favor-changed-reverted-modules-state
+ 'mname #'delq)))
(setq erc-mname-mode nil)
(ignore c) (ignore d))
@@ -1319,7 +2055,7 @@ Some docstring"
(ert-deftest define-erc-module--local ()
(let* ((global-module '(define-erc-module mname nil ; no alias
- "Some docstring"
+ "Some docstring."
((ignore a) (ignore b))
((ignore c) (ignore d))
'local))
@@ -1331,19 +2067,21 @@ Some docstring"
`(progn
(define-minor-mode erc-mname-mode
"Toggle ERC mname mode.
-With a prefix argument ARG, enable mname if ARG is positive,
-and disable it otherwise. If called from Lisp, enable the mode
-if ARG is omitted or nil.
-Some docstring"
+With a prefix argument ARG, enable mname if ARG is positive, and
+disable it otherwise. If called from Lisp, enable the mode if
+ARG is omitted or nil.
+
+Some docstring."
:global nil
- :group 'erc-mname
+ :group (erc--find-group 'mname nil)
(if erc-mname-mode
(erc-mname-enable)
(erc-mname-disable)))
(defun erc-mname-enable (&optional ,arg-en)
"Enable ERC mname mode.
-When called interactively, do so in all buffers for the current connection."
+When called interactively, do so in all buffers for the current
+connection."
(interactive "p")
(when (derived-mode-p 'erc-mode)
(if ,arg-en
@@ -1355,7 +2093,8 @@ When called interactively, do so in all buffers for the current connection."
(defun erc-mname-disable (&optional ,arg-dis)
"Disable ERC mname mode.
-When called interactively, do so in all buffers for the current connection."
+When called interactively, do so in all buffers for the current
+connection."
(interactive "p")
(when (derived-mode-p 'erc-mode)
(if ,arg-dis
@@ -1370,4 +2109,65 @@ When called interactively, do so in all buffers for the current connection."
(put 'erc-mname-enable 'definition-name 'mname)
(put 'erc-mname-disable 'definition-name 'mname))))))
+
+;; XXX move erc-button tests to new file if more added.
+(require 'erc-button)
+
+;; See also `erc-scenarios-networks-announced-missing' in
+;; erc-scenarios-misc.el for a more realistic example.
+(ert-deftest erc-button--display-error-notice-with-keys ()
+ (with-current-buffer (get-buffer-create "*fake*")
+ (let ((mode erc-button-mode)
+ (inhibit-message noninteractive)
+ erc-modules
+ erc-kill-channel-hook erc-kill-server-hook erc-kill-buffer-hook)
+ (erc-mode)
+ (erc-tests--set-fake-server-process "sleep" "1")
+ (erc--initialize-markers (point) nil)
+ (erc-button-mode +1)
+ (should (equal (erc-button--display-error-notice-with-keys
+ "If \\[erc-bol] fails, "
+ "see \\[erc-bug] or `erc-mode-map'.")
+ "*** If C-a fails, see M-x erc-bug or `erc-mode-map'."))
+ (goto-char (point-min))
+
+ (ert-info ("Keymap substitution succeeds")
+ (erc-button-next)
+ (should (looking-at "C-a"))
+ (should (eq (get-text-property (point) 'mouse-face) 'highlight))
+ (erc-button-press-button)
+ (with-current-buffer "*Help*"
+ (goto-char (point-min))
+ (should (search-forward "erc-bol" nil t)))
+ (erc-button-next)
+ (erc-button-previous) ; end of interval correct
+ (should (looking-at "a fails")))
+
+ (ert-info ("Extended command mapping succeeds")
+ (erc-button-next)
+ (should (looking-at "M-x erc-bug"))
+ (erc-button-press-button)
+ (should (eq (get-text-property (point) 'mouse-face) 'highlight))
+ (with-current-buffer "*Help*"
+ (goto-char (point-min))
+ (should (search-forward "erc-bug" nil t))))
+
+ (ert-info ("Symbol-description face preserved") ; mutated by d-e-n-w-k
+ (erc-button-next)
+ (should (equal (get-text-property (point) 'font-lock-face)
+ '(erc-button erc-error-face)))
+ (should (eq (get-text-property (point) 'mouse-face) 'highlight))
+ (should (eq erc-button-face 'erc-button))) ; extent evaporates
+
+ (ert-info ("Format when trailing args include non-strings")
+ (should (equal (erc-button--display-error-notice-with-keys
+ "abc" " %d def" " 45%s" 123 '\6)
+ "*** abc 123 def 456")))
+
+ (when noninteractive
+ (unless mode
+ (erc-button-mode -1))
+ (kill-buffer "*Help*")
+ (kill-buffer)))))
+
;;; erc-tests.el ends here
diff --git a/test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld b/test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld
index 58df79e19fa..f34ae02f4e4 100644
--- a/test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld
+++ b/test/lisp/erc/resources/base/assoc/bouncer-history/foonet.eld
@@ -27,6 +27,7 @@
(0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:02] alice: Here come the lovers, full of joy and mirth.")
(0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:07] bob: According to the fool's bolt, sir, and such dulcet diseases.")
(0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:10] alice: And hang himself. I pray you, do my greeting.")
+ (0 ":someone!~u@abcdefg.irc PRIVMSG #chan :[07:04:10] hi everyone.")
(0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:18] bob: And you sat smiling at his cruel prey.")
(0 ":bob!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:21] alice: Or never after look me in the face.")
(0 ":alice!~u@svpn88yjcdj42.irc PRIVMSG #chan :[07:04:25] bob: If that may be, than all is well. Come, sit down, every mother's son, and rehearse your parts. Pyramus, you begin: when you have spoken your speech, enter into that brake; and so every one according to his cue.")
diff --git a/test/lisp/erc/resources/base/commands/motd.eld b/test/lisp/erc/resources/base/commands/motd.eld
new file mode 100644
index 00000000000..6d10ee122e2
--- /dev/null
+++ b/test/lisp/erc/resources/base/commands/motd.eld
@@ -0,0 +1,48 @@
+;; -*- mode: lisp-data; -*-
+((nick 10 "NICK tester"))
+((user 10 "USER user 0 * :tester")
+ (0.00 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester")
+ (0.01 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version ergo-v2.11.1")
+ (0.01 ":irc.foonet.org 003 tester :This server was created Sun, 12 Mar 2023 02:30:29 UTC")
+ (0.00 ":irc.foonet.org 004 tester irc.foonet.org ergo-v2.11.1 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.00 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# CHATHISTORY=1000 ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX :are supported by this server")
+ (0.01 ":irc.foonet.org 005 tester KICKLEN=390 MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=foonet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8ONLY WHOX :are supported by this server")
+ (0.01 ":irc.foonet.org 005 tester draft/CHATHISTORY=1000 :are supported by this server")
+ (0.00 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)")
+ (0.00 ":irc.foonet.org 252 tester 0 :IRC Operators online")
+ (0.00 ":irc.foonet.org 253 tester 0 :unregistered connections")
+ (0.00 ":irc.foonet.org 254 tester 1 :channels formed")
+ (0.00 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers")
+ (0.00 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3")
+ (0.00 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3")
+ (0.00 ":irc.foonet.org 375 tester :- irc.foonet.org Message of the day - ")
+ (0.00 ":irc.foonet.org 372 tester :- This is the default Ergo MOTD.")
+ (0.01 ":irc.foonet.org 372 tester :- ")
+ (0.02 ":irc.foonet.org 372 tester :- For more information on using these, see MOTDFORMATTING.md")
+ (0.00 ":irc.foonet.org 376 tester :End of MOTD command"))
+
+((mode 10 "MODE tester +i")
+ (0.00 ":irc.foonet.org 221 tester +i")
+ (0.00 ":irc.foonet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.")
+ (0.05 ":irc.foonet.org 221 tester +i"))
+
+((motd-1 10 "MOTD")
+ (0.08 ":irc.foonet.org 375 tester :- irc.foonet.org Message of the day - ")
+ (0.02 ":irc.foonet.org 372 tester :- This is the default Ergo MOTD.")
+ (0.01 ":irc.foonet.org 372 tester :- ")
+ (0.00 ":irc.foonet.org 372 tester :- For more information on using these, see MOTDFORMATTING.md")
+ (0.00 ":irc.foonet.org 376 tester :End of MOTD command"))
+
+((motd-2 10 "MOTD irc1.foonet.org")
+ (0.08 ":irc1.foonet.org 375 tester :- irc1.foonet.org Message of the day - ")
+ (0.02 ":irc1.foonet.org 372 tester :- This is the default Ergo MOTD.")
+ (0.01 ":irc1.foonet.org 372 tester :- ")
+ (0.00 ":irc1.foonet.org 372 tester :- For more information on using these, see MOTDFORMATTING.md")
+ (0.00 ":irc1.foonet.org 376 tester :End of MOTD command"))
+
+((motd-3 10 "MOTD fake.foonet.org")
+ (0.00 ":irc.foonet.org 402 tester fake.foonet.org :No such server"))
+
+((quit 10 "QUIT :\2ERC\2")
+ (0.07 ":tester!~u@h3f95zveyc38a.irc QUIT :Quit: \2ERC\2 5.5 (IRC client for GNU Emacs 30.0.50)")
+ (0.01 "ERROR :Quit: \2ERC\2 5.5 (IRC client for GNU Emacs 30.0.50)"))
diff --git a/test/lisp/erc/resources/base/reconnect/just-eof.eld b/test/lisp/erc/resources/base/reconnect/just-eof.eld
new file mode 100644
index 00000000000..c80a39b3170
--- /dev/null
+++ b/test/lisp/erc/resources/base/reconnect/just-eof.eld
@@ -0,0 +1,3 @@
+;; -*- mode: lisp-data; -*-
+((eof 5 EOF))
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/reconnect/just-ping.eld b/test/lisp/erc/resources/base/reconnect/just-ping.eld
new file mode 100644
index 00000000000..d57888b42d3
--- /dev/null
+++ b/test/lisp/erc/resources/base/reconnect/just-ping.eld
@@ -0,0 +1,4 @@
+;; -*- mode: lisp-data; -*-
+((ping 20 "PING"))
+
+((eof 10 EOF))
diff --git a/test/lisp/erc/resources/base/reconnect/ping-pong.eld b/test/lisp/erc/resources/base/reconnect/ping-pong.eld
new file mode 100644
index 00000000000..b3d36cf6cec
--- /dev/null
+++ b/test/lisp/erc/resources/base/reconnect/ping-pong.eld
@@ -0,0 +1,6 @@
+;; -*- mode: lisp-data; -*-
+((ping 10 "PING ")
+ (0 "PONG fake"))
+
+((eof 10 EOF))
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/reconnect/unexpected-disconnect.eld b/test/lisp/erc/resources/base/reconnect/unexpected-disconnect.eld
new file mode 100644
index 00000000000..386d0f4b085
--- /dev/null
+++ b/test/lisp/erc/resources/base/reconnect/unexpected-disconnect.eld
@@ -0,0 +1,24 @@
+;; -*- mode: lisp-data; -*-
+((nick 10 "NICK tester"))
+((user 10 "USER user 0 * :tester")
+ (0 ":irc.foonet.org 001 tester :Welcome to the foonet IRC Network tester")
+ (0 ":irc.foonet.org 002 tester :Your host is irc.foonet.org, running version oragono-2.6.0-7481bf0385b95b16")
+ (0 ":irc.foonet.org 003 tester :This server was created Tue, 04 May 2021 05:06:18 UTC")
+ (0 ":irc.foonet.org 004 tester irc.foonet.org oragono-2.6.0-7481bf0385b95b16 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0 ":irc.foonet.org 005 tester AWAYLEN=390 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server")
+ (0 ":irc.foonet.org 005 tester MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=FooNet NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY WHOX :are supported by this server")
+ (0 ":irc.foonet.org 005 tester draft/CHATHISTORY=100 :are supported by this server")
+ (0 ":irc.foonet.org 251 tester :There are 0 users and 3 invisible on 1 server(s)")
+ (0 ":irc.foonet.org 252 tester 0 :IRC Operators online")
+ (0 ":irc.foonet.org 253 tester 0 :unregistered connections")
+ (0 ":irc.foonet.org 254 tester 1 :channels formed")
+ (0 ":irc.foonet.org 255 tester :I have 3 clients and 0 servers")
+ (0 ":irc.foonet.org 265 tester 3 3 :Current local users 3, max 3")
+ (0 ":irc.foonet.org 266 tester 3 3 :Current global users 3, max 3")
+ (0 ":irc.foonet.org 422 tester :MOTD File is missing"))
+
+((mode-user 10 "MODE tester +i")
+ (0 ":irc.foonet.org 221 tester +i")
+ (0 ":irc.foonet.org NOTICE tester :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect."))
+
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/base/renick/regain/normal-again.eld b/test/lisp/erc/resources/base/renick/regain/normal-again.eld
new file mode 100644
index 00000000000..c0529052c70
--- /dev/null
+++ b/test/lisp/erc/resources/base/renick/regain/normal-again.eld
@@ -0,0 +1,56 @@
+;; -*- mode: lisp-data; -*-
+((cap 10 "CAP REQ :sasl"))
+((nick 10 "NICK tester"))
+((user 10 "USER tester 0 * :tester"))
+
+((authenticate 10 "AUTHENTICATE PLAIN")
+ (0.04 ":tantalum.libera.chat NOTICE * :*** Checking Ident")
+ (0.01 ":tantalum.libera.chat NOTICE * :*** Looking up your hostname...")
+ (0.01 ":tantalum.libera.chat NOTICE * :*** Couldn't look up your hostname")
+ (0.06 ":tantalum.libera.chat NOTICE * :*** No Ident response")
+ (0.02 ":tantalum.libera.chat CAP * ACK :sasl")
+ (0.03 ":tantalum.libera.chat 433 * tester :Nickname is already in use."))
+
+((nick 10 "NICK tester`")
+ (0.03 "AUTHENTICATE +"))
+
+((authenticate 10 "AUTHENTICATE AHRlc3RlcgBjaGFuZ2VtZQ==")
+ (0.06 ":tantalum.libera.chat 900 tester` tester`!tester@127.0.0.1 tester :You are now logged in as tester")
+ (0.02 ":tantalum.libera.chat 903 tester` :SASL authentication successful"))
+
+((cap 10 "CAP END")
+ (0.02 ":tantalum.libera.chat 001 tester` :Welcome to the Libera.Chat Internet Relay Chat Network tester`")
+ (0.02 ":tantalum.libera.chat 002 tester` :Your host is tantalum.libera.chat[93.158.237.2/6697], running version solanum-1.0-dev")
+ (0.02 ":tantalum.libera.chat 003 tester` :This server was created Mon Feb 13 2023 at 12:05:04 UTC")
+ (0.01 ":tantalum.libera.chat 004 tester` tantalum.libera.chat solanum-1.0-dev DGMQRSZaghilopsuwz CFILMPQRSTbcefgijklmnopqrstuvz bkloveqjfI")
+ (0.01 ":tantalum.libera.chat 005 tester` WHOX MONITOR=100 SAFELIST ELIST=CMNTU ETRACE FNC CALLERID=g KNOCK CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQRSTcgimnprstuz :are supported by this server")
+ (0.01 ":tantalum.libera.chat 005 tester` CHANLIMIT=#:250 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=Libera.Chat STATUSMSG=@+ CASEMAPPING=rfc1459 NICKLEN=16 MAXNICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D :are supported by this server")
+ (0.03 ":tantalum.libera.chat 005 tester` TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz :are supported by this server")
+ (0.01 ":tantalum.libera.chat 251 tester` :There are 70 users and 42977 invisible on 28 servers")
+ (0.00 ":tantalum.libera.chat 252 tester` 38 :IRC Operators online")
+ (0.00 ":tantalum.libera.chat 253 tester` 87 :unknown connection(s)")
+ (0.00 ":tantalum.libera.chat 254 tester` 22908 :channels formed")
+ (0.00 ":tantalum.libera.chat 255 tester` :I have 2507 clients and 1 servers")
+ (0.00 ":tantalum.libera.chat 265 tester` 2507 3232 :Current local users 2507, max 3232")
+ (0.00 ":tantalum.libera.chat 266 tester` 43047 51777 :Current global users 43047, max 51777")
+ (0.00 ":tantalum.libera.chat 250 tester` :Highest connection count: 3233 (3232 clients) (284887 connections received)")
+ (0.03 ":tantalum.libera.chat 375 tester` :- tantalum.libera.chat Message of the Day - ")
+ (0.00 ":tantalum.libera.chat 372 tester` :- This server provided by Hyperfilter (https://hyperfilter.com)")
+ (0.00 ":tantalum.libera.chat 372 tester` :- Email: support@libera.chat")
+ (0.02 ":tantalum.libera.chat 376 tester` :End of /MOTD command."))
+
+((mode 10 "MODE tester` +i")
+ (0.01 ":tester` MODE tester` :+Ziw")
+ (0.02 ":SaslServ!SaslServ@services.libera.chat NOTICE tester` :Last login from: \2~tester@127.0.0.1\2 on Apr 07 01:36:25 2023 +0000."))
+
+((nick 10 "NICK tester")
+ (0.02 ":tester`!~tester@127.0.0.1 NICK :tester"))
+
+((join 10 "JOIN #test")
+ (0.02 ":tester!~tester@127.0.0.1 JOIN #test")
+ (0.02 ":tantalum.libera.chat 353 tester = #test :tester zbyqbepbqre7 pusevgfpu Thrfg2187 zngbeb qnexNssvavgl wrebzr- rqpentt Ilehf grfg2 AvtugZbaxrl pevfgvvbna xrivap_ fnvybePng shohxv gxan arrqyr avpx16 NeanhqW_kzcc jvyyr wrnaogeq Wnarg cnefavc0 Xbentt RcvpArb flfqrs wfgbxre hafcrag__ Lbevpx_")
+ (0.02 ":tantalum.libera.chat 366 tester #test :End of /NAMES list."))
+
+((mode 10 "MODE #test")
+ (0.02 ":tantalum.libera.chat 324 tester #test +nt")
+ (0.02 ":tantalum.libera.chat 329 tester #test 1621432263"))
diff --git a/test/lisp/erc/resources/base/renick/regain/normal.eld b/test/lisp/erc/resources/base/renick/regain/normal.eld
new file mode 100644
index 00000000000..9f4df70e580
--- /dev/null
+++ b/test/lisp/erc/resources/base/renick/regain/normal.eld
@@ -0,0 +1,53 @@
+;; -*- mode: lisp-data; -*-
+((cap 10 "CAP REQ :sasl"))
+((nick 10 "NICK tester"))
+((user 10 "USER tester 0 * :tester"))
+
+((authenticate 10 "AUTHENTICATE PLAIN")
+ (0.02 ":cadmium.libera.chat NOTICE * :*** Checking Ident")
+ (0.01 ":cadmium.libera.chat NOTICE * :*** Looking up your hostname...")
+ (0.01 ":cadmium.libera.chat NOTICE * :*** Couldn't look up your hostname")
+ (0.06 ":cadmium.libera.chat NOTICE * :*** No Ident response")
+ (0.09 ":cadmium.libera.chat CAP * ACK :sasl")
+ (0.01 "AUTHENTICATE +"))
+
+((authenticate 10 "AUTHENTICATE AHRlc3RlcgBjaGFuZ2VtZQ==")
+ (0.03 ":cadmium.libera.chat 900 tester tester!tester@127.0.0.1 tester :You are now logged in as tester")
+ (0.01 ":cadmium.libera.chat 903 tester :SASL authentication successful"))
+
+((cap 10 "CAP END")
+ (0.03 ":cadmium.libera.chat 001 tester :Welcome to the Libera.Chat Internet Relay Chat Network tester")
+ (0.02 ":cadmium.libera.chat 002 tester :Your host is cadmium.libera.chat[103.196.37.95/6697], running version solanum-1.0-dev")
+ (0.01 ":cadmium.libera.chat 003 tester :This server was created Wed Jan 25 2023 at 10:22:45 UTC")
+ (0.01 ":cadmium.libera.chat 004 tester cadmium.libera.chat solanum-1.0-dev DGMQRSZaghilopsuwz CFILMPQRSTbcefgijklmnopqrstuvz bkloveqjfI")
+ (0.00 ":cadmium.libera.chat 005 tester CALLERID=g WHOX ETRACE FNC SAFELIST ELIST=CMNTU KNOCK MONITOR=100 CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQRSTcgimnprstuz :are supported by this server")
+ (0.01 ":cadmium.libera.chat 005 tester CHANLIMIT=#:250 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=Libera.Chat STATUSMSG=@+ CASEMAPPING=rfc1459 NICKLEN=16 MAXNICKLEN=16 CHANNELLEN=50 TOPICLEN=390 DEAF=D :are supported by this server")
+ (0.01 ":cadmium.libera.chat 005 tester TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,ajrxz :are supported by this server")
+ (0.01 ":cadmium.libera.chat 251 tester :There are 70 users and 42996 invisible on 28 servers")
+ (0.02 ":cadmium.libera.chat 252 tester 38 :IRC Operators online")
+ (0.01 ":cadmium.libera.chat 253 tester 57 :unknown connection(s)")
+ (0.01 ":cadmium.libera.chat 254 tester 22912 :channels formed")
+ (0.01 ":cadmium.libera.chat 255 tester :I have 2499 clients and 1 servers")
+ (0.01 ":cadmium.libera.chat 265 tester 2499 4187 :Current local users 2499, max 4187")
+ (0.01 ":cadmium.libera.chat 266 tester 43066 51827 :Current global users 43066, max 51827")
+ (0.01 ":cadmium.libera.chat 250 tester :Highest connection count: 4188 (4187 clients) (319420 connections received)")
+ (0.01 ":cadmium.libera.chat 375 tester :- cadmium.libera.chat Message of the Day - ")
+ (0.01 ":cadmium.libera.chat 372 tester :- This server kindly provided by Mach Dilemma (www.m-d.net)")
+ (0.01 ":cadmium.libera.chat 372 tester :- Welcome to Libera Chat, the IRC network for")
+ (0.00 ":cadmium.libera.chat 372 tester :- Email: support@libera.chat")
+ (0.00 ":cadmium.libera.chat 376 tester :End of /MOTD command.")
+ (0.00 ":tester MODE tester :+Ziw")
+ (0.02 ":SaslServ!SaslServ@services.libera.chat NOTICE tester :Last login from: \2~tester@127.0.0.1\2 on Apr 07 01:02:11 2023 +0000."))
+
+((mode 10 "MODE tester +i"))
+
+((join 10 "JOIN #test")
+ (0.09 ":tester!~tester@127.0.0.1 JOIN #test"))
+
+((mode 10 "MODE #test")
+ (0.03 ":cadmium.libera.chat 353 tester = #test :tester zbyqbepbqre7 pusevgfpu Thrfg2187 zngbeb qnexNssvavgl wrebzr- rqpentt Ilehf grfg2 AvtugZbaxrl pevfgvvbna xrivap_ fnvybePng shohxv gxan arrqyr avpx16 NeanhqW_kzcc Lbevpx_ hafcrag__ wfgbxre flfqrs RcvpArb Xbentt jvyyr cnefavc0 Wnarg wrnaogeq")
+ (0.02 ":cadmium.libera.chat 366 tester #test :End of /NAMES list.")
+ (0.00 ":cadmium.libera.chat 324 tester #test +nt")
+ (0.01 ":cadmium.libera.chat 329 tester #test 1621432263"))
+
+((drop 0 DROP))
diff --git a/test/lisp/erc/resources/erc-scenarios-common.el b/test/lisp/erc/resources/erc-scenarios-common.el
index 0d9a79ae9ce..f259c88594b 100644
--- a/test/lisp/erc/resources/erc-scenarios-common.el
+++ b/test/lisp/erc/resources/erc-scenarios-common.el
@@ -121,6 +121,7 @@
(erc-modules (copy-sequence erc-modules))
(inhibit-interaction t)
(auth-source-do-cache nil)
+ (timer-list (copy-sequence timer-list))
(erc-auth-source-parameters-join-function nil)
(erc-autojoin-channels-alist nil)
(erc-server-auto-reconnect nil)
diff --git a/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld b/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld
new file mode 100644
index 00000000000..db3136a9d9e
--- /dev/null
+++ b/test/lisp/erc/resources/fill/snapshots/merge-01-start.eld
@@ -0,0 +1 @@
+#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.[00:00]\n<alice> bob: come, you are a tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause to complain of? Come me to what was done to her.\n<bob> alice: Either your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[Sat Apr 1 2023]\n<bob> zero.[07:00]\n<alice> one.\n<alice> two.\n<bob> three.\n<bob> four.\n" 2 21 (erc-timestamp 0 line-prefix (space :width (- 27 18)) field erc-timestamp) 21 183 (erc-timestamp 0 wrap-prefix #2=(space :width 27) line-prefix #3=(space :width (- 27 (4)))) 183 190 (erc-timestamp 0 field erc-timestamp wrap-prefix #2# line-prefix #3# display #1=(#6=(margin right-margin) #("[00:00]" 0 7 (display #1# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 190 191 (wrap-prefix #2# line-prefix #3#) 191 192 (erc-timestamp 0 wrap-prefix #2# line-prefix #4=(space :width (- 27 (8))) erc-command PRIVMSG) 192 197 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 197 199 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 199 202 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 202 315 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 315 316 (erc-timestamp 0 erc-command PRIVMSG) 316 348 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 348 349 (wrap-prefix #2# line-prefix #4#) 349 350 (erc-timestamp 0 wrap-prefix #2# line-prefix #5=(space :width (- 27 (6))) erc-command PRIVMSG) 350 353 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 353 355 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 355 360 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 360 435 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 435 436 (wrap-prefix #2# line-prefix #5#) 436 455 (erc-timestamp 1680332400 line-prefix (space :width (- 27 18)) field erc-timestamp) 455 456 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #8=(space :width (- 27 (6))) erc-command PRIVMSG) 456 459 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #8# erc-command PRIVMSG) 459 466 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #8# erc-command PRIVMSG) 466 473 (erc-timestamp 1680332400 field erc-timestamp wrap-prefix #2# line-prefix #8# display #7=(#6# #("[07:00]" 0 7 (display #7# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 473 474 (wrap-prefix #2# line-prefix #8#) 474 475 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #9=(space :width (- 27 (8))) erc-command PRIVMSG) 475 480 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #9# erc-command PRIVMSG) 480 486 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #9# erc-command PRIVMSG) 486 487 (wrap-prefix #2# line-prefix #9#) 487 488 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10=(space :width (- 27 0)) display #11="" erc-command PRIVMSG) 488 493 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10# display #11# erc-command PRIVMSG) 493 495 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10# display #11# erc-command PRIVMSG) 495 499 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10# erc-command PRIVMSG) 499 500 (wrap-prefix #2# line-prefix #10#) 500 501 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #12=(space :width (- 27 (6))) erc-command PRIVMSG) 501 504 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #12# erc-command PRIVMSG) 504 512 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #12# erc-command PRIVMSG) 512 513 (wrap-prefix #2# line-prefix #12#) 513 514 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13=(space :width (- 27 0)) display #11# erc-command PRIVMSG) 514 517 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13# display #11# erc-command PRIVMSG) 517 519 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13# display #11# erc-command PRIVMSG) 519 524 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13# erc-command PRIVMSG) 524 525 (wrap-prefix #2# line-prefix #13#)) \ No newline at end of file
diff --git a/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld b/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld
new file mode 100644
index 00000000000..fcb9e59b757
--- /dev/null
+++ b/test/lisp/erc/resources/fill/snapshots/merge-02-right.eld
@@ -0,0 +1 @@
+#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.[00:00]\n<alice> bob: come, you are a tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause to complain of? Come me to what was done to her.\n<bob> alice: Either your unparagoned mistress is dead, or she's outprized by a trifle.\n\n[Sat Apr 1 2023]\n<bob> zero.[07:00]\n<alice> one.\n<alice> two.\n<bob> three.\n<bob> four.\n" 2 21 (erc-timestamp 0 line-prefix (space :width (- 29 18)) field erc-timestamp) 21 183 (erc-timestamp 0 wrap-prefix #2=(space :width 29) line-prefix #3=(space :width (- 29 (4)))) 183 190 (erc-timestamp 0 field erc-timestamp wrap-prefix #2# line-prefix #3# display #1=(#6=(margin right-margin) #("[00:00]" 0 7 (display #1# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 190 191 (wrap-prefix #2# line-prefix #3#) 191 192 (erc-timestamp 0 wrap-prefix #2# line-prefix #4=(space :width (- 29 (8))) erc-command PRIVMSG) 192 197 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 197 199 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 199 202 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 202 315 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 315 316 (erc-timestamp 0 erc-command PRIVMSG) 316 348 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 348 349 (wrap-prefix #2# line-prefix #4#) 349 350 (erc-timestamp 0 wrap-prefix #2# line-prefix #5=(space :width (- 29 (6))) erc-command PRIVMSG) 350 353 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 353 355 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 355 360 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 360 435 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 435 436 (wrap-prefix #2# line-prefix #5#) 436 455 (erc-timestamp 1680332400 line-prefix (space :width (- 29 18)) field erc-timestamp) 455 456 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #8=(space :width (- 29 (6))) erc-command PRIVMSG) 456 459 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #8# erc-command PRIVMSG) 459 466 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #8# erc-command PRIVMSG) 466 473 (erc-timestamp 1680332400 field erc-timestamp wrap-prefix #2# line-prefix #8# display #7=(#6# #("[07:00]" 0 7 (display #7# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 473 474 (wrap-prefix #2# line-prefix #8#) 474 475 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #9=(space :width (- 29 (8))) erc-command PRIVMSG) 475 480 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #9# erc-command PRIVMSG) 480 486 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #9# erc-command PRIVMSG) 486 487 (wrap-prefix #2# line-prefix #9#) 487 488 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10=(space :width (- 29 0)) display #11="" erc-command PRIVMSG) 488 493 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10# display #11# erc-command PRIVMSG) 493 495 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10# display #11# erc-command PRIVMSG) 495 499 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #10# erc-command PRIVMSG) 499 500 (wrap-prefix #2# line-prefix #10#) 500 501 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #12=(space :width (- 29 (6))) erc-command PRIVMSG) 501 504 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #12# erc-command PRIVMSG) 504 512 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #12# erc-command PRIVMSG) 512 513 (wrap-prefix #2# line-prefix #12#) 513 514 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13=(space :width (- 29 0)) display #11# erc-command PRIVMSG) 514 517 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13# display #11# erc-command PRIVMSG) 517 519 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13# display #11# erc-command PRIVMSG) 519 524 (erc-timestamp 1680332400 wrap-prefix #2# line-prefix #13# erc-command PRIVMSG) 524 525 (wrap-prefix #2# line-prefix #13#)) \ No newline at end of file
diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld b/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld
new file mode 100644
index 00000000000..67ebad542fb
--- /dev/null
+++ b/test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld
@@ -0,0 +1 @@
+#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.[00:00]\n<alice> bob: come, you are a tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause to complain of? Come me to what was done to her.\n<bob> alice: Either your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 21 (erc-timestamp 0 line-prefix (space :width (- 27 18)) field erc-timestamp) 21 183 (erc-timestamp 0 wrap-prefix #2=(space :width 27) line-prefix #3=(space :width (- 27 (4)))) 183 190 (erc-timestamp 0 field erc-timestamp wrap-prefix #2# line-prefix #3# display #1=((margin right-margin) #("[00:00]" 0 7 (display #1# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 190 191 (wrap-prefix #2# line-prefix #3#) 191 192 (erc-timestamp 0 wrap-prefix #2# line-prefix #4=(space :width (- 27 (8))) erc-command PRIVMSG) 192 197 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 197 199 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 199 202 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 202 315 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 315 316 (erc-timestamp 0 erc-command PRIVMSG) 316 348 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 348 349 (wrap-prefix #2# line-prefix #4#) 349 350 (erc-timestamp 0 wrap-prefix #2# line-prefix #5=(space :width (- 27 (6))) erc-command PRIVMSG) 350 353 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 353 355 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 355 360 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 360 435 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 435 436 (wrap-prefix #2# line-prefix #5#)) \ No newline at end of file
diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld b/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld
new file mode 100644
index 00000000000..0bf8001475d
--- /dev/null
+++ b/test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld
@@ -0,0 +1 @@
+#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.[00:00]\n<alice> bob: come, you are a tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause to complain of? Come me to what was done to her.\n<bob> alice: Either your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 21 (erc-timestamp 0 line-prefix (space :width (- 29 18)) field erc-timestamp) 21 183 (erc-timestamp 0 wrap-prefix #2=(space :width 29) line-prefix #3=(space :width (- 29 (4)))) 183 190 (erc-timestamp 0 field erc-timestamp wrap-prefix #2# line-prefix #3# display #1=((margin right-margin) #("[00:00]" 0 7 (display #1# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 190 191 (wrap-prefix #2# line-prefix #3#) 191 192 (erc-timestamp 0 wrap-prefix #2# line-prefix #4=(space :width (- 29 (8))) erc-command PRIVMSG) 192 197 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 197 199 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 199 202 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 202 315 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 315 316 (erc-timestamp 0 erc-command PRIVMSG) 316 348 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 348 349 (wrap-prefix #2# line-prefix #4#) 349 350 (erc-timestamp 0 wrap-prefix #2# line-prefix #5=(space :width (- 29 (6))) erc-command PRIVMSG) 350 353 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 353 355 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 355 360 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 360 435 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 435 436 (wrap-prefix #2# line-prefix #5#)) \ No newline at end of file
diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld b/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld
new file mode 100644
index 00000000000..7d231d19cef
--- /dev/null
+++ b/test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld
@@ -0,0 +1 @@
+#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.[00:00]\n<alice> bob: come, you are a tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause to complain of? Come me to what was done to her.\n<bob> alice: Either your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 21 (erc-timestamp 0 line-prefix (space :width (- 25 18)) field erc-timestamp) 21 183 (erc-timestamp 0 wrap-prefix #2=(space :width 25) line-prefix #3=(space :width (- 25 (4)))) 183 190 (erc-timestamp 0 field erc-timestamp wrap-prefix #2# line-prefix #3# display #1=((margin right-margin) #("[00:00]" 0 7 (display #1# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 190 191 (wrap-prefix #2# line-prefix #3#) 191 192 (erc-timestamp 0 wrap-prefix #2# line-prefix #4=(space :width (- 25 (8))) erc-command PRIVMSG) 192 197 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 197 199 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 199 202 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 202 315 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 315 316 (erc-timestamp 0 erc-command PRIVMSG) 316 348 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 348 349 (wrap-prefix #2# line-prefix #4#) 349 350 (erc-timestamp 0 wrap-prefix #2# line-prefix #5=(space :width (- 25 (6))) erc-command PRIVMSG) 350 353 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 353 355 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 355 360 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 360 435 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 435 436 (wrap-prefix #2# line-prefix #5#)) \ No newline at end of file
diff --git a/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld b/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld
new file mode 100644
index 00000000000..67ebad542fb
--- /dev/null
+++ b/test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld
@@ -0,0 +1 @@
+#("\n\n\n[Thu Jan 1 1970]\n*** This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect.[00:00]\n<alice> bob: come, you are a tedious fool: to the purpose. What was done to Elbow's wife, that he hath cause to complain of? Come me to what was done to her.\n<bob> alice: Either your unparagoned mistress is dead, or she's outprized by a trifle.\n" 2 21 (erc-timestamp 0 line-prefix (space :width (- 27 18)) field erc-timestamp) 21 183 (erc-timestamp 0 wrap-prefix #2=(space :width 27) line-prefix #3=(space :width (- 27 (4)))) 183 190 (erc-timestamp 0 field erc-timestamp wrap-prefix #2# line-prefix #3# display #1=((margin right-margin) #("[00:00]" 0 7 (display #1# isearch-open-invisible timestamp invisible timestamp font-lock-face erc-timestamp-face)))) 190 191 (wrap-prefix #2# line-prefix #3#) 191 192 (erc-timestamp 0 wrap-prefix #2# line-prefix #4=(space :width (- 27 (8))) erc-command PRIVMSG) 192 197 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 197 199 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 199 202 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 202 315 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 315 316 (erc-timestamp 0 erc-command PRIVMSG) 316 348 (erc-timestamp 0 wrap-prefix #2# line-prefix #4# erc-command PRIVMSG) 348 349 (wrap-prefix #2# line-prefix #4#) 349 350 (erc-timestamp 0 wrap-prefix #2# line-prefix #5=(space :width (- 27 (6))) erc-command PRIVMSG) 350 353 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 353 355 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 355 360 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 360 435 (erc-timestamp 0 wrap-prefix #2# line-prefix #5# erc-command PRIVMSG) 435 436 (wrap-prefix #2# line-prefix #5#)) \ No newline at end of file
diff --git a/test/lisp/erc/resources/sasl/plain-overlong-aligned.eld b/test/lisp/erc/resources/sasl/plain-overlong-aligned.eld
new file mode 100644
index 00000000000..6ed8981be0f
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/plain-overlong-aligned.eld
@@ -0,0 +1,39 @@
+;; -*- mode: lisp-data; -*-
+((cap-req 10 "CAP REQ :sasl"))
+((nick 10 "NICK emersion"))
+((user 10 "USER emersion 0 * :emersion")
+ (0.0 ":irc.example.org NOTICE * :*** Looking up your hostname...")
+ (0.0 ":irc.example.org NOTICE * :*** Found your hostname")
+ (0.0 ":irc.example.org CAP * ACK :sasl"))
+
+((authenticate-plain 10 "AUTHENTICATE PLAIN")
+ (0.0 ":irc.example.org AUTHENTICATE +"))
+((authenticate-gimme-1 10 "AUTHENTICATE AGVtZXJzaW9uAEVzdCB1dCBiZWF0YWUgb21uaXMgaXBzYW0uIFF1aXMgZnVnaWF0IGRlbGVuaXRpIHRvdGFtIHF1aS4gSXBzdW0gcXVhbSBhIGRvbG9ydW0gdGVtcG9yYSB2ZWxpdCBsYWJvcnVtIG9kaXQuIEV0IHNhZXBlIHZvbHVwdGF0ZSBzZWQgY3VtcXVlIHZlbC4gVm9sdXB0YXMgc2ludCBhYiBwYXJpYXR1ciBsaWJlcm8gdmVyaXRhdGlzIGNvcnJ1cHRpLiBWZXJvIGl1cmUgb21uaXMgdWxsYW0uIFZlcm8gYmVhdGFlIGRvbG9yZXMgZmFjZXJlIGZ1Z2lhdCBpcHNhbS4gRWEgZXN0IHBhcmlhdHVyIG1pbmltYSBub2Jpcw=="))
+((authenticate-gimme-2 10 "AUTHENTICATE +")
+ (0.0 ":irc.example.org 900 * * emersion :You are now logged in as emersion")
+ (0.0 ":irc.example.org 903 * :Authentication successful"))
+
+((cap-end 10 "CAP END")
+ (0.0 ":irc.example.org 001 emersion :Welcome to the ExampleOrg IRC Network emersion")
+ (0.0 ":irc.example.org 002 emersion :Your host is irc.example.org, running version oragono-2.6.1")
+ (0.0 ":irc.example.org 003 emersion :This server was created Sat, 17 Jul 2021 09:06:42 UTC")
+ (0.0 ":irc.example.org 004 emersion irc.example.org oragono-2.6.1 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.0 ":irc.example.org 005 emersion AWAYLEN=200 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server")
+ (0.0 ":irc.example.org 005 emersion MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=ExampleOrg NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY :are supported by this server")
+ (0.0 ":irc.example.org 005 emersion draft/CHATHISTORY=100 :are supported by this server")
+ (0.0 ":irc.example.org 251 emersion :There are 1 users and 0 invisible on 1 server(s)")
+ (0.0 ":irc.example.org 252 emersion 0 :IRC Operators online")
+ (0.0 ":irc.example.org 253 emersion 0 :unregistered connections")
+ (0.0 ":irc.example.org 254 emersion 0 :channels formed")
+ (0.0 ":irc.example.org 255 emersion :I have 1 clients and 0 servers")
+ (0.0 ":irc.example.org 265 emersion 1 1 :Current local users 1, max 1")
+ (0.0 ":irc.example.org 266 emersion 1 1 :Current global users 1, max 1")
+ (0.0 ":irc.example.org 422 emersion :MOTD File is missing"))
+
+((mode-user 10 "MODE emersion +i")
+ (0.0 ":irc.example.org 221 emersion +Zi")
+ (0.0 ":irc.example.org NOTICE emersion :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect."))
+
+((quit 5 "QUIT :\2ERC\2")
+ (0 ":emersion!~u@yuvqisyu7m7qs.irc QUIT :Quit"))
+((drop 1 DROP))
diff --git a/test/lisp/erc/resources/sasl/plain-overlong-split.eld b/test/lisp/erc/resources/sasl/plain-overlong-split.eld
new file mode 100644
index 00000000000..3e6870790f3
--- /dev/null
+++ b/test/lisp/erc/resources/sasl/plain-overlong-split.eld
@@ -0,0 +1,39 @@
+;; -*- mode: lisp-data; -*-
+((cap-req 10 "CAP REQ :sasl"))
+((nick 10 "NICK emersion"))
+((user 10 "USER emersion 0 * :emersion")
+ (0.0 ":irc.example.org NOTICE * :*** Looking up your hostname...")
+ (0.0 ":irc.example.org NOTICE * :*** Found your hostname")
+ (0.0 ":irc.example.org CAP * ACK :sasl"))
+
+((authenticate-plain 10 "AUTHENTICATE PLAIN")
+ (0.0 ":irc.example.org AUTHENTICATE +"))
+((authenticate-gimme-1 10 "AUTHENTICATE AGVtZXJzaW9uAEVzdCB1dCBiZWF0YWUgb21uaXMgaXBzYW0uIFF1aXMgZnVnaWF0IGRlbGVuaXRpIHRvdGFtIHF1aS4gSXBzdW0gcXVhbSBhIGRvbG9ydW0gdGVtcG9yYSB2ZWxpdCBsYWJvcnVtIG9kaXQuIEV0IHNhZXBlIHZvbHVwdGF0ZSBzZWQgY3VtcXVlIHZlbC4gVm9sdXB0YXMgc2ludCBhYiBwYXJpYXR1ciBsaWJlcm8gdmVyaXRhdGlzIGNvcnJ1cHRpLiBWZXJvIGl1cmUgb21uaXMgdWxsYW0uIFZlcm8gYmVhdGFlIGRvbG9yZXMgZmFjZXJlIGZ1Z2lhdCBpcHNhbS4gRWEgZXN0IHBhcmlhdHVyIG1pbmltYSBub2JpcyBz"))
+((authenticate-gimme-2 10 "AUTHENTICATE dW50IGF1dCB1dC4gRG9sb3JlcyB1dCBsYXVkYW50aXVtIG1haW9yZXMgdGVtcG9yaWJ1cyB2b2x1cHRhdGVzLiBSZWljaWVuZGlzIGltcGVkaXQgb21uaXMgZXQgdW5kZSBkZWxlY3R1cyBxdWFzIGFiLiBRdWFlIGVsaWdlbmRpIG5lY2Vzc2l0YXRpYnVzIGRvbG9yaWJ1cyBtb2xlc3RpYXMgdGVtcG9yYSBtYWduYW0gYXNzdW1lbmRhLg==")
+ (0.0 ":irc.example.org 900 * * emersion :You are now logged in as emersion")
+ (0.0 ":irc.example.org 903 * :Authentication successful"))
+
+((cap-end 10 "CAP END")
+ (0.0 ":irc.example.org 001 emersion :Welcome to the ExampleOrg IRC Network emersion")
+ (0.0 ":irc.example.org 002 emersion :Your host is irc.example.org, running version oragono-2.6.1")
+ (0.0 ":irc.example.org 003 emersion :This server was created Sat, 17 Jul 2021 09:06:42 UTC")
+ (0.0 ":irc.example.org 004 emersion irc.example.org oragono-2.6.1 BERTZios CEIMRUabefhiklmnoqstuv Iabefhkloqv")
+ (0.0 ":irc.example.org 005 emersion AWAYLEN=200 BOT=B CASEMAPPING=ascii CHANLIMIT=#:100 CHANMODES=Ibe,k,fl,CEMRUimnstu CHANNELLEN=64 CHANTYPES=# ELIST=U EXCEPTS EXTBAN=,m FORWARD=f INVEX KICKLEN=390 :are supported by this server")
+ (0.0 ":irc.example.org 005 emersion MAXLIST=beI:60 MAXTARGETS=4 MODES MONITOR=100 NETWORK=ExampleOrg NICKLEN=32 PREFIX=(qaohv)~&@%+ STATUSMSG=~&@%+ TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,USERHOST:10,PRIVMSG:4,TAGMSG:4,NOTICE:4,MONITOR:100 TOPICLEN=390 UTF8MAPPING=rfc8265 UTF8ONLY :are supported by this server")
+ (0.0 ":irc.example.org 005 emersion draft/CHATHISTORY=100 :are supported by this server")
+ (0.0 ":irc.example.org 251 emersion :There are 1 users and 0 invisible on 1 server(s)")
+ (0.0 ":irc.example.org 252 emersion 0 :IRC Operators online")
+ (0.0 ":irc.example.org 253 emersion 0 :unregistered connections")
+ (0.0 ":irc.example.org 254 emersion 0 :channels formed")
+ (0.0 ":irc.example.org 255 emersion :I have 1 clients and 0 servers")
+ (0.0 ":irc.example.org 265 emersion 1 1 :Current local users 1, max 1")
+ (0.0 ":irc.example.org 266 emersion 1 1 :Current global users 1, max 1")
+ (0.0 ":irc.example.org 422 emersion :MOTD File is missing"))
+
+((mode-user 10 "MODE emersion +i")
+ (0.0 ":irc.example.org 221 emersion +Zi")
+ (0.0 ":irc.example.org NOTICE emersion :This server is in debug mode and is logging all user I/O. If you do not wish for everything you send to be readable by the server owner(s), please disconnect."))
+
+((quit 5 "QUIT :\2ERC\2")
+ (0 ":emersion!~u@yuvqisyu7m7qs.irc QUIT :Quit"))
+((drop 1 DROP))
diff --git a/test/lisp/eshell/em-alias-tests.el b/test/lisp/eshell/em-alias-tests.el
index 273e19d580b..ec1704545a4 100644
--- a/test/lisp/eshell/em-alias-tests.el
+++ b/test/lisp/eshell/em-alias-tests.el
@@ -72,6 +72,15 @@
(eshell-match-command-output "show-all-args a" "a\n")
(eshell-match-command-output "show-all-args a b c" "a\nb\nc\n")))
+(ert-deftest em-alias-test/alias-all-args-var-splice ()
+ "Test alias with splicing the $* variable"
+ (with-temp-eshell
+ (eshell-insert-command "alias show-all-args 'echo args: $@*'")
+ (eshell-match-command-output "show-all-args" "args:\n")
+ (eshell-match-command-output "show-all-args a" "(\"args:\" \"a\")\n")
+ (eshell-match-command-output "show-all-args a b c"
+ "(\"args:\" \"a\" \"b\" \"c\")\n")))
+
(ert-deftest em-alias-test/alias-all-args-var-indices ()
"Test alias with the $* variable using indices"
(with-temp-eshell
diff --git a/test/lisp/eshell/em-cmpl-tests.el b/test/lisp/eshell/em-cmpl-tests.el
new file mode 100644
index 00000000000..29a41625d5e
--- /dev/null
+++ b/test/lisp/eshell/em-cmpl-tests.el
@@ -0,0 +1,352 @@
+;;; em-cmpl-tests.el --- em-cmpl test suite -*- lexical-binding:t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Tests for Eshell's interactive completion.
+
+;;; Code:
+
+(require 'ert)
+(require 'eshell)
+(require 'em-cmpl)
+(require 'em-dirs)
+(require 'em-hist)
+(require 'em-tramp)
+(require 'em-unix)
+
+(require 'eshell-tests-helpers
+ (expand-file-name "eshell-tests-helpers"
+ (file-name-directory (or load-file-name
+ default-directory))))
+
+(defvar eshell-test-value nil)
+
+(defun eshell-insert-and-complete (input)
+ "Insert INPUT and invoke completion, returning the result."
+ (insert input)
+ (completion-at-point)
+ (eshell-get-old-input))
+
+(defun eshell-arguments-equal (actual expected)
+ "Return t if ACTUAL and EXPECTED are equal, including properties of strings.
+ACTUAL and EXPECTED should both be lists of strings."
+ (when (length= actual (length expected))
+ (catch 'not-equal
+ (cl-mapc (lambda (i j)
+ (unless (equal-including-properties i j)
+ (throw 'not-equal nil)))
+ actual expected)
+ t)))
+
+(defun eshell-arguments-equal--equal-explainer (actual expected)
+ "Explain the result of `eshell-arguments-equal'."
+ `(nonequal-result
+ (actual ,actual)
+ (expected ,expected)))
+
+(put 'eshell-arguments-equal 'ert-explainer
+ #'eshell-arguments-equal--equal-explainer)
+
+;;; Tests:
+
+(ert-deftest em-cmpl-test/parse-arguments/pipeline ()
+ "Test that parsing arguments for completion discards earlier commands."
+ (with-temp-eshell
+ (insert "echo hi | cat")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ '("cat")))))
+
+(ert-deftest em-cmpl-test/parse-arguments/multiple-dots ()
+ "Test parsing arguments with multiple dots like \".../\"."
+ (with-temp-eshell
+ (insert "echo .../file.txt")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize "../../file.txt"
+ 'pcomplete-arg-value
+ ".../file.txt"))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/variable/numeric ()
+ "Test parsing arguments with a numeric variable interpolation."
+ (with-temp-eshell
+ (let ((eshell-test-value 42))
+ (insert "echo $eshell-test-value")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize "42" 'pcomplete-arg-value 42)))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/variable/nil ()
+ "Test parsing arguments with a nil variable interpolation."
+ (with-temp-eshell
+ (let ((eshell-test-value nil))
+ (insert "echo $eshell-test-value")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize "" 'pcomplete-arg-value nil)))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/variable/list ()
+ "Test parsing arguments with a list variable interpolation."
+ (with-temp-eshell
+ (let ((eshell-test-value '("foo" "bar")))
+ (insert "echo $eshell-test-value")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize "(\"foo\" \"bar\")"
+ 'pcomplete-arg-value
+ eshell-test-value)))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/variable/splice ()
+ "Test parsing arguments with a spliced variable interpolation."
+ (with-temp-eshell
+ (let ((eshell-test-value '("foo" "bar")))
+ (insert "echo $@eshell-test-value")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ '("echo" "foo" "bar"))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/unevaluated-subcommand ()
+ "Test that subcommands return a stub when parsing for completion."
+ (with-temp-eshell
+ (insert "echo {echo hi}")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize
+ "\0" 'eshell-argument-stub 'named-command)))))
+ (with-temp-eshell
+ (insert "echo ${echo hi}")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize
+ "\0" 'eshell-argument-stub 'named-command))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/unevaluated-lisp-form ()
+ "Test that Lisp forms return a stub when parsing for completion."
+ (with-temp-eshell
+ (insert "echo (concat \"hi\")")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize
+ "\0" 'eshell-argument-stub 'lisp-command)))))
+ (with-temp-eshell
+ (insert "echo $(concat \"hi\")")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize
+ "\0" 'eshell-argument-stub 'lisp-command))))))
+
+(ert-deftest em-cmpl-test/parse-arguments/unevaluated-inner-subcommand ()
+ "Test that nested subcommands return a stub when parsing for completion."
+ (with-temp-eshell
+ (insert "echo $exec-path[${echo 0}]")
+ (should (eshell-arguments-equal
+ (car (eshell-complete-parse-arguments))
+ `("echo" ,(propertize
+ "\0" 'eshell-argument-stub 'named-command))))))
+
+(ert-deftest em-cmpl-test/file-completion/unique ()
+ "Test completion of file names when there's a unique result."
+ (with-temp-eshell
+ (ert-with-temp-directory default-directory
+ (write-region nil nil (expand-file-name "file.txt"))
+ (should (equal (eshell-insert-and-complete "echo fi")
+ "echo file.txt ")))))
+
+(ert-deftest em-cmpl-test/file-completion/non-unique ()
+ "Test completion of file names when there are multiple results."
+ (with-temp-eshell
+ (ert-with-temp-directory default-directory
+ (write-region nil nil (expand-file-name "file.txt"))
+ (write-region nil nil (expand-file-name "file.el"))
+ (should (equal (eshell-insert-and-complete "echo fi")
+ "echo file."))
+ ;; Now try completing again.
+ (let ((minibuffer-message-timeout 0)
+ (inhibit-message t))
+ (completion-at-point))
+ ;; FIXME: We can't use `current-message' here.
+ (with-current-buffer (messages-buffer)
+ (save-excursion
+ (goto-char (point-max))
+ (forward-line -1)
+ (should (looking-at "Complete, but not unique")))))))
+
+(ert-deftest em-cmpl-test/file-completion/glob ()
+ "Test completion of file names using a glob."
+ (with-temp-eshell
+ (ert-with-temp-directory default-directory
+ (write-region nil nil (expand-file-name "file.txt"))
+ (write-region nil nil (expand-file-name "file.el"))
+ (should (equal (eshell-insert-and-complete "echo fi*.el")
+ "echo file.el ")))))
+
+(ert-deftest em-cmpl-test/file-completion/after-list ()
+ "Test completion of file names after previous list arguments.
+See bug#59956."
+ (with-temp-eshell
+ (let ((eshell-test-value '("foo" "bar")))
+ (ert-with-temp-directory default-directory
+ (write-region nil nil (expand-file-name "file.txt"))
+ (should (equal (eshell-insert-and-complete "echo $eshell-test-value fi")
+ "echo $eshell-test-value file.txt "))))))
+
+(ert-deftest em-cmpl-test/command-completion ()
+ "Test completion of command names like \"command\"."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "listif")
+ "listify "))))
+
+(ert-deftest em-cmpl-test/subcommand-completion ()
+ "Test completion of command names like \"{command}\"."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "{ listif")
+ "{ listify ")))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo ${ listif")
+ "echo ${ listify "))))
+
+(ert-deftest em-cmpl-test/lisp-symbol-completion ()
+ "Test completion of Lisp forms like \"#'symbol\" and \"`symbol\".
+See <lisp/eshell/esh-cmd.el>."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo #'system-nam")
+ "echo #'system-name ")))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo `system-nam")
+ "echo `system-name "))))
+
+(ert-deftest em-cmpl-test/lisp-function-completion ()
+ "Test completion of Lisp forms like \"(func)\".
+See <lisp/eshell/esh-cmd.el>."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo (eshell/ech")
+ "echo (eshell/echo")))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo $(eshell/ech")
+ "echo $(eshell/echo"))))
+
+(ert-deftest em-cmpl-test/special-ref-completion/type ()
+ "Test completion of the start of special references like \"#<buffer\".
+See <lisp/eshell/esh-arg.el>."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo hi > #<buf")
+ "echo hi > #<buffer ")))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo hi > #<proc")
+ "echo hi > #<process "))))
+
+(ert-deftest em-cmpl-test/special-ref-completion/implicit-buffer ()
+ "Test completion of special references like \"#<buf>\".
+See <lisp/eshell/esh-arg.el>."
+ (let (bufname)
+ (with-temp-buffer
+ (setq bufname (rename-buffer "my-buffer" t))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo hi > #<my-buf")
+ (format "echo hi > #<%s> " bufname))))
+ (setq bufname (rename-buffer "another buffer" t))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo hi > #<anoth")
+ (format "echo hi > #<%s> "
+ (string-replace " " "\\ " bufname))))))))
+
+(ert-deftest em-cmpl-test/special-ref-completion/buffer ()
+ "Test completion of special references like \"#<buffer buf>\".
+See <lisp/eshell/esh-arg.el>."
+ (let (bufname)
+ (with-temp-buffer
+ (setq bufname (rename-buffer "my-buffer" t))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo hi > #<buffer my-buf")
+ (format "echo hi > #<buffer %s> " bufname))))
+ (setq bufname (rename-buffer "another buffer" t))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo hi > #<buffer anoth")
+ (format "echo hi > #<buffer %s> "
+ (string-replace " " "\\ " bufname))))))))
+
+(ert-deftest em-cmpl-test/variable-ref-completion ()
+ "Test completion of variable references like \"$var\".
+See <lisp/eshell/esh-var.el>."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo $system-nam")
+ "echo $system-name "))))
+
+(ert-deftest em-cmpl-test/quoted-variable-ref-completion ()
+ "Test completion of variable references like \"$'var'\".
+See <lisp/eshell/esh-var.el>."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo $'system-nam")
+ "echo $'system-name' ")))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo $\"system-nam")
+ "echo $\"system-name\" "))))
+
+(ert-deftest em-cmpl-test/variable-ref-completion/directory ()
+ "Test completion of variable references that expand to directories.
+See <lisp/eshell/esh-var.el>."
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo $PW")
+ "echo $PWD/")))
+ (with-temp-eshell
+ (let ((minibuffer-message-timeout 0)
+ (inhibit-message t))
+ (should (equal (eshell-insert-and-complete "echo $PWD")
+ "echo $PWD/"))))
+ (with-temp-eshell
+ (should (equal (eshell-insert-and-complete "echo $'PW")
+ "echo $'PWD'/"))))
+
+(ert-deftest em-cmpl-test/variable-assign-completion ()
+ "Test completion of variable assignments like \"var=value\".
+See <lisp/eshell/esh-var.el>."
+ (with-temp-eshell
+ (ert-with-temp-directory default-directory
+ (write-region nil nil (expand-file-name "file.txt"))
+ (should (equal (eshell-insert-and-complete "VAR=f")
+ "VAR=file.txt ")))))
+
+(ert-deftest em-cmpl-test/variable-assign-completion/non-assignment ()
+ "Test completion of things that look like variable assignment, but aren't.
+For example, the second argument in \"tar --directory=dir\" looks
+like it could be a variable assignment, but it's not. We should
+let `pcomplete/tar' handle it instead.
+
+See <lisp/eshell/esh-var.el>."
+ (with-temp-eshell
+ (ert-with-temp-directory default-directory
+ (write-region nil nil (expand-file-name "file.txt"))
+ (make-directory "dir")
+ (should (equal (eshell-insert-and-complete "tar --directory=")
+ "tar --directory=dir/")))))
+
+(ert-deftest em-cmpl-test/user-ref-completion ()
+ "Test completion of user references like \"~user\".
+See <lisp/eshell/em-dirs.el>."
+ (unwind-protect
+ (with-temp-eshell
+ (cl-letf (((symbol-function 'eshell-read-user-names)
+ (lambda () (setq eshell-user-names '((1234 . "user"))))))
+ (should (equal (eshell-insert-and-complete "echo ~us")
+ "echo ~user/"))))
+ ;; Clear the cached user names we set above.
+ (setq eshell-user-names nil)))
+
+;;; em-cmpl-tests.el ends here
diff --git a/test/lisp/eshell/em-extpipe-tests.el b/test/lisp/eshell/em-extpipe-tests.el
index 6d6d4daac9d..1184b5df5f8 100644
--- a/test/lisp/eshell/em-extpipe-tests.el
+++ b/test/lisp/eshell/em-extpipe-tests.el
@@ -42,7 +42,7 @@
(shell-command-switch "-c"))
;; Strip `eshell-trap-errors'.
(should (equal ,expected
- (cadr (eshell-parse-command input))))))
+ (cadadr (eshell-parse-command input))))))
(with-substitute-for-temp (&rest body)
;; Substitute name of an actual temporary file and/or
;; buffer into `input'. The substitution logic is
diff --git a/test/lisp/eshell/em-prompt-tests.el b/test/lisp/eshell/em-prompt-tests.el
new file mode 100644
index 00000000000..257549e40fb
--- /dev/null
+++ b/test/lisp/eshell/em-prompt-tests.el
@@ -0,0 +1,120 @@
+;;; em-prompt-tests.el --- em-prompt test suite -*- lexical-binding:t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Tests for Eshell's prompt support.
+
+;;; Code:
+
+(require 'ert)
+(require 'eshell)
+(require 'em-prompt)
+
+(require 'eshell-tests-helpers
+ (expand-file-name "eshell-tests-helpers"
+ (file-name-directory (or load-file-name
+ default-directory))))
+
+;;; Tests:
+
+(ert-deftest em-prompt-test/field-properties ()
+ "Check that field properties are properly set on Eshell output/prompts."
+ (with-temp-eshell
+ (eshell-insert-command "echo hello")
+ (let ((last-prompt (field-string (1- eshell-last-input-start)))
+ (last-input (field-string (1+ eshell-last-input-start)))
+ (last-output (field-string (1+ eshell-last-input-end))))
+ (should (equal-including-properties
+ last-prompt
+ (propertize
+ (format "%s %s " (directory-file-name default-directory)
+ (if (= (file-user-uid) 0) "#" "$"))
+ 'read-only t
+ 'field 'prompt
+ 'font-lock-face 'eshell-prompt
+ 'front-sticky '(read-only field font-lock-face)
+ 'rear-nonsticky '(read-only field font-lock-face))))
+ (should (equal last-input "echo hello\n"))
+ (should (equal-including-properties
+ last-output
+ (apply #'propertize "hello\n"
+ eshell-command-output-properties))))))
+
+(ert-deftest em-prompt-test/field-properties/no-highlight ()
+ "Check that field properties are properly set on Eshell output/prompts.
+This tests the case when `eshell-highlight-prompt' is nil."
+ (let ((eshell-highlight-prompt nil))
+ (with-temp-eshell
+ (eshell-insert-command "echo hello")
+ (let ((last-prompt (field-string (1- eshell-last-input-start)))
+ (last-input (field-string (1+ eshell-last-input-start)))
+ (last-output (field-string (1+ eshell-last-input-end))))
+ (should (equal-including-properties
+ last-prompt
+ (propertize
+ (format "%s %s " (directory-file-name default-directory)
+ (if (= (file-user-uid) 0) "#" "$"))
+ 'field 'prompt
+ 'front-sticky '(field)
+ 'rear-nonsticky '(field))))
+ (should (equal last-input "echo hello\n"))
+ (should (equal-including-properties
+ last-output
+ (apply #'propertize "hello\n"
+ eshell-command-output-properties)))))))
+
+(ert-deftest em-prompt-test/next-previous-prompt ()
+ "Check that navigating forward/backward through old prompts works correctly."
+ (with-temp-eshell
+ (eshell-insert-command "echo one")
+ (eshell-insert-command "echo two")
+ (eshell-insert-command "echo three")
+ (insert "echo fou") ; A partially-entered command.
+ ;; Go back one prompt.
+ (eshell-previous-prompt 1)
+ (should (equal (eshell-get-old-input) "echo three"))
+ ;; Go back two prompts, starting from the end of this line.
+ (end-of-line)
+ (eshell-previous-prompt 2)
+ (should (equal (eshell-get-old-input) "echo one"))
+ ;; Go forward three prompts.
+ (eshell-next-prompt 3)
+ (should (equal (eshell-get-old-input) "echo fou"))))
+
+(ert-deftest em-prompt-test/forward-backward-matching-input ()
+ "Check that navigating forward/backward via regexps works correctly."
+ (with-temp-eshell
+ (eshell-insert-command "echo one")
+ (eshell-insert-command "printnl something else")
+ (eshell-insert-command "echo two")
+ (eshell-insert-command "echo three")
+ (insert "echo fou") ; A partially-entered command.
+ ;; Go back one prompt.
+ (eshell-backward-matching-input "echo" 1)
+ (should (equal (eshell-get-old-input) "echo three"))
+ ;; Go back two prompts, starting from the end of this line.
+ (end-of-line)
+ (eshell-backward-matching-input "echo" 2)
+ (should (equal (eshell-get-old-input) "echo one"))
+ ;; Go forward three prompts.
+ (eshell-forward-matching-input "echo" 3)
+ (should (equal (eshell-get-old-input) "echo fou"))))
+
+;;; em-prompt-tests.el ends here
diff --git a/test/lisp/eshell/em-script-tests.el b/test/lisp/eshell/em-script-tests.el
index 4e557fada73..74328844778 100644
--- a/test/lisp/eshell/em-script-tests.el
+++ b/test/lisp/eshell/em-script-tests.el
@@ -35,21 +35,43 @@
;;; Tests:
(ert-deftest em-script-test/source-script ()
- "Test sourcing script with no argumentss"
+ "Test sourcing a simple script."
(ert-with-temp-file temp-file :text "echo hi"
(with-temp-eshell
(eshell-match-command-output (format "source %s" temp-file)
"hi\n"))))
-(ert-deftest em-script-test/source-script-arg-vars ()
- "Test sourcing script with $0, $1, ... variables"
+(ert-deftest em-script-test/source-script/redirect ()
+ "Test sourcing a script and redirecting its output."
+ (ert-with-temp-file temp-file
+ :text "echo hi\necho bye"
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-match-command-output
+ (format "source %s > #<%s>" temp-file bufname)
+ "\\`\\'"))
+ (should (equal (buffer-string) "hibye")))))
+
+(ert-deftest em-script-test/source-script/redirect/dev-null ()
+ "Test sourcing a script and redirecting its output, including to /dev/null."
+ (ert-with-temp-file temp-file
+ :text "echo hi\necho bad > /dev/null\necho bye"
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-match-command-output
+ (format "source %s > #<%s>" temp-file bufname)
+ "\\`\\'"))
+ (should (equal (buffer-string) "hibye")))))
+
+(ert-deftest em-script-test/source-script/arg-vars ()
+ "Test sourcing script with $0, $1, ... variables."
(ert-with-temp-file temp-file :text "printnl $0 \"$1 $2\""
(with-temp-eshell
(eshell-match-command-output (format "source %s one two" temp-file)
(format "%s\none two\n" temp-file)))))
-(ert-deftest em-script-test/source-script-all-args-var ()
- "Test sourcing script with the $* variable"
+(ert-deftest em-script-test/source-script/all-args-var ()
+ "Test sourcing script with the $* variable."
(ert-with-temp-file temp-file :text "printnl $*"
(with-temp-eshell
(eshell-match-command-output (format "source %s" temp-file)
diff --git a/test/lisp/eshell/em-tramp-tests.el b/test/lisp/eshell/em-tramp-tests.el
index 1d4ad9dc632..a3bda970b63 100644
--- a/test/lisp/eshell/em-tramp-tests.el
+++ b/test/lisp/eshell/em-tramp-tests.el
@@ -23,37 +23,41 @@
(require 'em-tramp)
(require 'tramp)
+(defmacro em-tramp-test/should-replace-command (form replacement)
+ "Check that calling FORM results in it being replaced with REPLACEMENT."
+ (declare (indent 1))
+ `(should (equal
+ (catch 'eshell-replace-command ,form)
+ (list 'eshell-with-copied-handles
+ (list 'eshell-trap-errors
+ ,replacement)
+ t))))
+
(ert-deftest em-tramp-test/su-default ()
"Test Eshell `su' command with no arguments."
- (should (equal
- (catch 'eshell-replace-command (eshell/su))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/su:root@%s:%s"
- tramp-default-host default-directory)))))))
+ (em-tramp-test/should-replace-command (eshell/su)
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/su:root@%s:%s"
+ tramp-default-host default-directory)))))
(ert-deftest em-tramp-test/su-user ()
"Test Eshell `su' command with USER argument."
- (should (equal
- (catch 'eshell-replace-command (eshell/su "USER"))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/su:USER@%s:%s"
- tramp-default-host default-directory)))))))
+ (em-tramp-test/should-replace-command (eshell/su "USER")
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/su:USER@%s:%s"
+ tramp-default-host default-directory)))))
(ert-deftest em-tramp-test/su-login ()
"Test Eshell `su' command with -/-l/--login option."
(dolist (args '(("--login")
("-l")
("-")))
- (should (equal
- (catch 'eshell-replace-command (apply #'eshell/su args))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/su:root@%s:~/" tramp-default-host))))))))
+ (em-tramp-test/should-replace-command (apply #'eshell/su args)
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/su:root@%s:~/" tramp-default-host))))))
(defun mock-eshell-named-command (&rest args)
"Dummy function to test Eshell `sudo' command rewriting."
@@ -89,23 +93,19 @@
"Test Eshell `sudo' command with -s/--shell option."
(dolist (args '(("--shell")
("-s")))
- (should (equal
- (catch 'eshell-replace-command (apply #'eshell/sudo args))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/sudo:root@%s:%s"
- tramp-default-host default-directory))))))))
+ (em-tramp-test/should-replace-command (apply #'eshell/sudo args)
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/sudo:root@%s:%s"
+ tramp-default-host default-directory))))))
(ert-deftest em-tramp-test/sudo-user-shell ()
"Test Eshell `sudo' command with -s and -u options."
- (should (equal
- (catch 'eshell-replace-command (eshell/sudo "-u" "USER" "-s"))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/sudo:USER@%s:%s"
- tramp-default-host default-directory)))))))
+ (em-tramp-test/should-replace-command (eshell/sudo "-u" "USER" "-s")
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/sudo:USER@%s:%s"
+ tramp-default-host default-directory)))))
(ert-deftest em-tramp-test/doas-basic ()
"Test Eshell `doas' command with default user."
@@ -142,22 +142,18 @@
"Test Eshell `doas' command with -s/--shell option."
(dolist (args '(("--shell")
("-s")))
- (should (equal
- (catch 'eshell-replace-command (apply #'eshell/doas args))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/doas:root@%s:%s"
- tramp-default-host default-directory))))))))
+ (em-tramp-test/should-replace-command (apply #'eshell/doas args)
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/doas:root@%s:%s"
+ tramp-default-host default-directory))))))
(ert-deftest em-tramp-test/doas-user-shell ()
"Test Eshell `doas' command with -s and -u options."
- (should (equal
- (catch 'eshell-replace-command (eshell/doas "-u" "USER" "-s"))
- `(eshell-trap-errors
- (eshell-named-command
- "cd"
- (list ,(format "/doas:USER@%s:%s"
- tramp-default-host default-directory)))))))
+ (em-tramp-test/should-replace-command (eshell/doas "-u" "USER" "-s")
+ `(eshell-named-command
+ "cd"
+ (list ,(format "/doas:USER@%s:%s"
+ tramp-default-host default-directory)))))
;;; em-tramp-tests.el ends here
diff --git a/test/lisp/eshell/esh-arg-tests.el b/test/lisp/eshell/esh-arg-tests.el
index 918ad3a949f..c883db3907f 100644
--- a/test/lisp/eshell/esh-arg-tests.el
+++ b/test/lisp/eshell/esh-arg-tests.el
@@ -102,4 +102,34 @@ treated literally, as a backslash and a newline."
(eshell-match-command-output "echo \"hi\\\nthere\""
"hithere\n")))
+(ert-deftest esh-arg-test/special-reference/default ()
+ "Test that \"#<buf>\" refers to the buffer \"buf\"."
+ (with-temp-buffer
+ (rename-buffer "my-buffer" t)
+ (eshell-command-result-equal
+ (format "echo #<%s>" (buffer-name))
+ (current-buffer))))
+
+(ert-deftest esh-arg-test/special-reference/buffer ()
+ "Test that \"#<buffer buf>\" refers to the buffer \"buf\"."
+ (with-temp-buffer
+ (rename-buffer "my-buffer" t)
+ (eshell-command-result-equal
+ (format "echo #<buffer %s>" (buffer-name))
+ (current-buffer))))
+
+(ert-deftest esh-arg-test/special-reference/special ()
+ "Test that \"#<...>\" works correctly when escaping special characters."
+ (with-temp-buffer
+ (rename-buffer "<my buffer>" t)
+ (let ((escaped-bufname (replace-regexp-in-string
+ (rx (group (or "\\" "<" ">" space))) "\\\\\\1"
+ (buffer-name))))
+ (eshell-command-result-equal
+ (format "echo #<%s>" escaped-bufname)
+ (current-buffer))
+ (eshell-command-result-equal
+ (format "echo #<buffer %s>" escaped-bufname)
+ (current-buffer)))))
+
;; esh-arg-tests.el ends here
diff --git a/test/lisp/eshell/esh-cmd-tests.el b/test/lisp/eshell/esh-cmd-tests.el
index 912822eeddb..a7208eb3a0b 100644
--- a/test/lisp/eshell/esh-cmd-tests.el
+++ b/test/lisp/eshell/esh-cmd-tests.el
@@ -73,6 +73,30 @@ Test that trailing arguments outside the subcommand are ignored.
e.g. \"{(+ 1 2)} 3\" => 3"
(eshell-command-result-equal "{(+ 1 2)} 3" 3))
+(ert-deftest esh-cmd-test/subcommand-shadow-value ()
+ "Test that the variable `value' isn't shadowed inside subcommands."
+ (with-temp-eshell
+ (with-no-warnings (setq-local value "hello"))
+ (eshell-match-command-output "echo ${echo $value}"
+ "hello\n")))
+
+(ert-deftest esh-cmd-test/let-rebinds-after-defer ()
+ "Test that let-bound values are properly updated after `eshell-defer'.
+When inside a `let' block in an Eshell command form, we need to
+ensure that deferred commands update any let-bound variables so
+they have the correct values when resuming evaluation. See
+bug#59469."
+ (skip-unless (executable-find "echo"))
+ (with-temp-eshell
+ (eshell-match-command-output
+ (concat "{"
+ " export LOCAL=value; "
+ " echo \"$LOCAL\"; "
+ " *echo external; " ; This will throw `eshell-defer'.
+ " echo \"$LOCAL\"; "
+ "}")
+ "value\nexternal\nvalue\n")))
+
;; Lisp forms
@@ -134,13 +158,13 @@ e.g. \"{(+ 1 2)} 3\" => 3"
(eshell-match-command-output "for i in 1 2 (list 3 4) { echo $i }"
"1\n2\n3\n4\n")))
-(ert-deftest esh-cmd-test/for-name-loop () ; bug#15231
+(ert-deftest esh-cmd-test/for-loop-name () ; bug#15231
"Test invocation of a for loop using `name'."
(let ((process-environment (cons "name" process-environment)))
(eshell-command-result-equal "for name in 3 { echo $name }"
3)))
-(ert-deftest esh-cmd-test/for-name-shadow-loop () ; bug#15372
+(ert-deftest esh-cmd-test/for-loop-name-shadow () ; bug#15372
"Test invocation of a for loop using an env-var."
(let ((process-environment (cons "name=env-value" process-environment)))
(with-temp-eshell
@@ -148,14 +172,28 @@ e.g. \"{(+ 1 2)} 3\" => 3"
"echo $name; for name in 3 { echo $name }; echo $name"
"env-value\n3\nenv-value\n"))))
+(ert-deftest esh-cmd-test/for-loop-for-items-shadow ()
+ "Test that the variable `for-items' isn't shadowed inside for loops."
+ (with-temp-eshell
+ (with-no-warnings (setq-local for-items "hello"))
+ (eshell-match-command-output "for i in 1 { echo $for-items }"
+ "hello\n")))
+
+(ert-deftest esh-cmd-test/for-loop-pipe ()
+ "Test invocation of a for loop piped to another command."
+ (skip-unless (executable-find "rev"))
+ (with-temp-eshell
+ (eshell-match-command-output "for i in foo bar baz { echo $i } | rev"
+ "zabraboof")))
+
(ert-deftest esh-cmd-test/while-loop ()
"Test invocation of a while loop."
(with-temp-eshell
(let ((eshell-test-value '(0 1 2)))
(eshell-match-command-output
(concat "while $eshell-test-value "
- "{ setq eshell-test-value (cdr eshell-test-value) }")
- "(1 2)\n(2)\n"))))
+ "{ (pop eshell-test-value) }")
+ "0\n1\n2\n"))))
(ert-deftest esh-cmd-test/while-loop-lisp-form ()
"Test invocation of a while loop using a Lisp form."
@@ -176,6 +214,17 @@ e.g. \"{(+ 1 2)} 3\" => 3"
"{ setq eshell-test-value (1+ eshell-test-value) }")
"1\n2\n3\n"))))
+(ert-deftest esh-cmd-test/while-loop-pipe ()
+ "Test invocation of a while loop piped to another command."
+ (skip-unless (executable-find "rev"))
+ (with-temp-eshell
+ (let ((eshell-test-value '("foo" "bar" "baz")))
+ (eshell-match-command-output
+ (concat "while $eshell-test-value "
+ "{ (pop eshell-test-value) }"
+ " | rev")
+ "zabraboof"))))
+
(ert-deftest esh-cmd-test/until-loop ()
"Test invocation of an until loop."
(with-temp-eshell
@@ -253,6 +302,30 @@ This tests when `eshell-lisp-form-nil-is-failure' is nil."
(eshell-command-result-equal "if {[ foo = bar ]} {echo yes} {echo no}"
"no"))
+(ert-deftest esh-cmd-test/if-statement-pipe ()
+ "Test invocation of an if statement piped to another command."
+ (skip-unless (executable-find "rev"))
+ (with-temp-eshell
+ (let ((eshell-test-value t))
+ (eshell-match-command-output "if $eshell-test-value {echo yes} | rev"
+ "\\`sey\n?"))
+ (let ((eshell-test-value nil))
+ (eshell-match-command-output "if $eshell-test-value {echo yes} | rev"
+ "\\`\n?"))))
+
+(ert-deftest esh-cmd-test/if-else-statement-pipe ()
+ "Test invocation of an if/else statement piped to another command."
+ (skip-unless (executable-find "rev"))
+ (with-temp-eshell
+ (let ((eshell-test-value t))
+ (eshell-match-command-output
+ "if $eshell-test-value {echo yes} {echo no} | rev"
+ "\\`sey\n?"))
+ (let ((eshell-test-value nil))
+ (eshell-match-command-output
+ "if $eshell-test-value {echo yes} {echo no} | rev"
+ "\\`on\n?"))))
+
(ert-deftest esh-cmd-test/unless-statement ()
"Test invocation of an unless statement."
(let ((eshell-test-value t))
diff --git a/test/lisp/eshell/esh-io-tests.el b/test/lisp/eshell/esh-io-tests.el
index b38d6090f13..ed350a9691c 100644
--- a/test/lisp/eshell/esh-io-tests.el
+++ b/test/lisp/eshell/esh-io-tests.el
@@ -146,6 +146,45 @@
(should (equal (buffer-string) "new"))
(should (equal eshell-test-value "new")))))
+(ert-deftest esh-io-test/redirect-subcommands ()
+ "Check that redirecting subcommands applies to all subcommands."
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-insert-command (format "{echo foo; echo bar} > #<%s>" bufname)))
+ (should (equal (buffer-string) "foobar"))))
+
+(ert-deftest esh-io-test/redirect-subcommands/override ()
+ "Check that redirecting subcommands applies to all subcommands.
+Include a redirect to another location in the subcommand to
+ensure only its statement is redirected."
+ (eshell-with-temp-buffer bufname "old"
+ (eshell-with-temp-buffer bufname-2 "also old"
+ (with-temp-eshell
+ (eshell-insert-command
+ (format "{echo foo; echo bar > #<%s>; echo baz} > #<%s>"
+ bufname-2 bufname)))
+ (should (equal (buffer-string) "bar")))
+ (should (equal (buffer-string) "foobaz"))))
+
+(ert-deftest esh-io-test/redirect-subcommands/dev-null ()
+ "Check that redirecting subcommands applies to all subcommands.
+Include a redirect to /dev/null to ensure it only applies to its
+statement."
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-insert-command
+ (format "{echo foo; echo bar > /dev/null; echo baz} > #<%s>"
+ bufname)))
+ (should (equal (buffer-string) "foobaz"))))
+
+(ert-deftest esh-io-test/redirect-subcommands/interpolated ()
+ "Check that redirecting interpolated subcommands applies to all subcommands."
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-insert-command
+ (format "echo ${echo foo; echo bar} > #<%s>" bufname)))
+ (should (equal (buffer-string) "foobar"))))
+
;; Redirecting specific handles
@@ -262,24 +301,56 @@ stdout originally pointed (the terminal)."
"stderr\n"))
(should (equal (buffer-string) "stdout\n"))))
-(ert-deftest esh-io-test/redirect-pipe ()
- "Check that \"redirecting\" to a pipe works."
- ;; `|' should only redirect stdout.
+
+;; Pipelines
+
+(ert-deftest esh-io-test/pipeline/default ()
+ "Check that `|' only pipes stdout."
+ (skip-unless (executable-find "rev"))
(eshell-command-result-equal "test-output | rev"
- "stderr\ntuodts\n")
- ;; `|&' should redirect stdout and stderr.
+ "stderr\ntuodts\n"))
+
+
+(ert-deftest esh-io-test/pipeline/all ()
+ "Check that `|&' only pipes stdout and stderr."
+ (skip-unless (executable-find "rev"))
(eshell-command-result-equal "test-output |& rev"
"tuodts\nrredts\n"))
+(ert-deftest esh-io-test/pipeline/subcommands ()
+ "Chek that all commands in a subcommand are properly piped."
+ (skip-unless (executable-find "rev"))
+ (with-temp-eshell
+ (eshell-match-command-output "{echo foo; echo bar} | rev"
+ "\\`raboof\n?")))
+
;; Virtual targets
-(ert-deftest esh-io-test/virtual-dev-eshell ()
+(ert-deftest esh-io-test/virtual/dev-null ()
+ "Check that redirecting to /dev/null works."
+ (with-temp-eshell
+ (eshell-match-command-output "echo hi > /dev/null" "\\`\\'")))
+
+(ert-deftest esh-io-test/virtual/dev-null/multiple ()
+ "Check that redirecting to /dev/null works alongside other redirections."
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-match-command-output
+ (format "echo new > /dev/null > #<%s>" bufname) "\\`\\'"))
+ (should (equal (buffer-string) "new")))
+ (eshell-with-temp-buffer bufname "old"
+ (with-temp-eshell
+ (eshell-match-command-output
+ (format "echo new > #<%s> > /dev/null" bufname) "\\`\\'"))
+ (should (equal (buffer-string) "new"))))
+
+(ert-deftest esh-io-test/virtual/dev-eshell ()
"Check that redirecting to /dev/eshell works."
(with-temp-eshell
(eshell-match-command-output "echo hi > /dev/eshell" "hi")))
-(ert-deftest esh-io-test/virtual-dev-kill ()
+(ert-deftest esh-io-test/virtual/dev-kill ()
"Check that redirecting to /dev/kill works."
(with-temp-eshell
(eshell-insert-command "echo one > /dev/kill")
diff --git a/test/lisp/eshell/esh-proc-tests.el b/test/lisp/eshell/esh-proc-tests.el
index 8e02fbb5497..fa20efa71e1 100644
--- a/test/lisp/eshell/esh-proc-tests.el
+++ b/test/lisp/eshell/esh-proc-tests.el
@@ -192,6 +192,59 @@ pipeline."
"stdout\nstderr\n"))))
+;; Synchronous processes
+
+;; These tests check that synchronous subprocesses (only used on
+;; MS-DOS by default) work correctly. To help them run on MS-DOS as
+;; well, we use the Emacs executable as our subprocess to test
+;; against; that way, users don't need to have GNU coreutils (or
+;; similar) installed.
+
+(defsubst esh-proc-test/emacs-command (command)
+ "Evaluate COMMAND in a new Emacs batch instance."
+ (mapconcat #'shell-quote-argument
+ `(,(expand-file-name invocation-name invocation-directory)
+ "-Q" "--batch" "--eval" ,(prin1-to-string command))
+ " "))
+
+(defvar esh-proc-test/emacs-echo
+ (esh-proc-test/emacs-command '(princ "hello\n"))
+ "A command that prints \"hello\" to stdout using Emacs.")
+
+(defvar esh-proc-test/emacs-upcase
+ (esh-proc-test/emacs-command
+ '(princ (upcase (concat (read-string "") "\n"))))
+ "A command that upcases the text from stdin using Emacs.")
+
+(ert-deftest esh-proc-test/synchronous-proc/simple/interactive ()
+ "Test that synchronous processes work in an interactive shell."
+ (let ((eshell-supports-asynchronous-processes nil))
+ (with-temp-eshell
+ (eshell-match-command-output esh-proc-test/emacs-echo
+ "\\`hello\n"))))
+
+(ert-deftest esh-proc-test/synchronous-proc/simple/command-result ()
+ "Test that synchronous processes work via `eshell-command-result'."
+ (let ((eshell-supports-asynchronous-processes nil))
+ (eshell-command-result-equal esh-proc-test/emacs-echo
+ "hello\n")))
+
+(ert-deftest esh-proc-test/synchronous-proc/pipeline/interactive ()
+ "Test that synchronous pipelines work in an interactive shell."
+ (let ((eshell-supports-asynchronous-processes nil))
+ (with-temp-eshell
+ (eshell-match-command-output (concat esh-proc-test/emacs-echo " | "
+ esh-proc-test/emacs-upcase)
+ "\\`HELLO\n"))))
+
+(ert-deftest esh-proc-test/synchronous-proc/pipeline/command-result ()
+ "Test that synchronous pipelines work via `eshell-command-result'."
+ (let ((eshell-supports-asynchronous-processes nil))
+ (eshell-command-result-equal (concat esh-proc-test/emacs-echo " | "
+ esh-proc-test/emacs-upcase)
+ "HELLO\n")))
+
+
;; Killing processes
(ert-deftest esh-proc-test/kill-process/foreground-only ()
diff --git a/test/lisp/eshell/esh-util-tests.el b/test/lisp/eshell/esh-util-tests.el
index afaf1b77f2b..ed841e96c7e 100644
--- a/test/lisp/eshell/esh-util-tests.el
+++ b/test/lisp/eshell/esh-util-tests.el
@@ -54,4 +54,69 @@
"Test that `eshell-stringify' correctly stringifies complex objects."
(should (equal (eshell-stringify (list 'quote 'hello)) "'hello")))
+(ert-deftest esh-util-test/eshell-convert-to-number/integer ()
+ "Test that `eshell-convert-to-number' correctly converts integers."
+ (should (equal (eshell-convert-to-number "123") 123))
+ (should (equal (eshell-convert-to-number "-123") -123))
+ ;; These are technially integers, since Emacs Lisp requires at least
+ ;; one digit after the "." to be a float:
+ (should (equal (eshell-convert-to-number "123.") 123))
+ (should (equal (eshell-convert-to-number "-123.") -123)))
+
+(ert-deftest esh-util-test/eshell-convert-to-number/floating-point ()
+ "Test that `eshell-convert-to-number' correctly converts floats."
+ (should (equal (eshell-convert-to-number "1.23") 1.23))
+ (should (equal (eshell-convert-to-number "-1.23") -1.23))
+ (should (equal (eshell-convert-to-number ".1") 0.1))
+ (should (equal (eshell-convert-to-number "-.1") -0.1)))
+
+(ert-deftest esh-util-test/eshell-convert-to-number/floating-point-exponent ()
+ "Test that `eshell-convert-to-number' correctly converts exponent notation."
+ ;; Positive exponent:
+ (dolist (exp '("e2" "e+2" "E2" "E+2"))
+ (should (equal (eshell-convert-to-number (concat "123" exp)) 12300.0))
+ (should (equal (eshell-convert-to-number (concat "-123" exp)) -12300.0))
+ (should (equal (eshell-convert-to-number (concat "1.23" exp)) 123.0))
+ (should (equal (eshell-convert-to-number (concat "-1.23" exp)) -123.0))
+ (should (equal (eshell-convert-to-number (concat "1." exp)) 100.0))
+ (should (equal (eshell-convert-to-number (concat "-1." exp)) -100.0))
+ (should (equal (eshell-convert-to-number (concat ".1" exp)) 10.0))
+ (should (equal (eshell-convert-to-number (concat "-.1" exp)) -10.0)))
+ ;; Negative exponent:
+ (dolist (exp '("e-2" "E-2"))
+ (should (equal (eshell-convert-to-number (concat "123" exp)) 1.23))
+ (should (equal (eshell-convert-to-number (concat "-123" exp)) -1.23))
+ (should (equal (eshell-convert-to-number (concat "1.23" exp)) 0.0123))
+ (should (equal (eshell-convert-to-number (concat "-1.23" exp)) -0.0123))
+ (should (equal (eshell-convert-to-number (concat "1." exp)) 0.01))
+ (should (equal (eshell-convert-to-number (concat "-1." exp)) -0.01))
+ (should (equal (eshell-convert-to-number (concat ".1" exp)) 0.001))
+ (should (equal (eshell-convert-to-number (concat "-.1" exp)) -0.001))))
+
+(ert-deftest esh-util-test/eshell-convert-to-number/floating-point/infinite ()
+ "Test that `eshell-convert-to-number' correctly converts infinite floats."
+ (should (equal (eshell-convert-to-number "1.0e+INF") 1.0e+INF))
+ (should (equal (eshell-convert-to-number "2.e+INF") 1.0e+INF))
+ (should (equal (eshell-convert-to-number "-1.0e+INF") -1.0e+INF))
+ (should (equal (eshell-convert-to-number "-2.e+INF") -1.0e+INF)))
+
+(ert-deftest esh-util-test/eshell-convert-to-number/floating-point/nan ()
+ "Test that `eshell-convert-to-number' correctly converts NaNs."
+ (should (equal (eshell-convert-to-number "1.0e+NaN") 1.0e+NaN))
+ (should (equal (eshell-convert-to-number "2.e+NaN") 2.0e+NaN))
+ (should (equal (eshell-convert-to-number "-1.0e+NaN") -1.0e+NaN))
+ (should (equal (eshell-convert-to-number "-2.e+NaN") -2.0e+NaN)))
+
+(ert-deftest esh-util-test/eshell-convert-to-number/non-numeric ()
+ "Test that `eshell-convert-to-number' does nothing to non-numeric values."
+ (should (equal (eshell-convert-to-number "foo") "foo"))
+ (should (equal (eshell-convert-to-number "") ""))
+ (should (equal (eshell-convert-to-number "123foo") "123foo")))
+
+(ert-deftest esh-util-test/eshell-convert-to-number/no-convert ()
+ "Test that `eshell-convert-to-number' does nothing when disabled."
+ (let ((eshell-convert-numeric-arguments nil))
+ (should (equal (eshell-convert-to-number "123") "123"))
+ (should (equal (eshell-convert-to-number "1.23") "1.23"))))
+
;;; esh-util-tests.el ends here
diff --git a/test/lisp/eshell/esh-var-tests.el b/test/lisp/eshell/esh-var-tests.el
index 7ec1731f94e..771bd5a419c 100644
--- a/test/lisp/eshell/esh-var-tests.el
+++ b/test/lisp/eshell/esh-var-tests.el
@@ -60,41 +60,101 @@
(eshell-command-result-equal "echo $\"user-login-name\"-foo"
(concat user-login-name "-foo")))
-(ert-deftest esh-var-test/interp-var-indices ()
- "Interpolate list variable with indices"
- (let ((eshell-test-value '("zero" "one" "two" "three" "four")))
+(ert-deftest esh-var-test/interp-list-var ()
+ "Interpolate list variable"
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo $eshell-test-value"
+ '(1 2 3))))
+
+(ert-deftest esh-var-test/interp-list-var-concat ()
+ "Interpolate and concat list variable"
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo a$'eshell-test-value'z"
+ '("a1" 2 "3z"))))
+
+(defun esh-var-test/interp-var-indices (function &optional range-function)
+ "Test interpolation of an indexable value with indices.
+FUNCTION is a function that takes a list of elements and returns
+the object to test.
+
+RANGE-FUNCTION is a function that takes a list of elements and
+returns the expected result of an index range for the object; if
+nil, use FUNCTION instead."
+ (let ((eshell-test-value
+ (funcall function '("zero" "one" "two" "three" "four")))
+ (range-function (or range-function function)))
+ ;; Positive indices
(eshell-command-result-equal "echo $eshell-test-value[0]"
"zero")
(eshell-command-result-equal "echo $eshell-test-value[0 2]"
'("zero" "two"))
(eshell-command-result-equal "echo $eshell-test-value[0 2 4]"
- '("zero" "two" "four"))))
+ '("zero" "two" "four"))
+ ;; Negative indices
+ (eshell-command-result-equal "echo $eshell-test-value[-1]"
+ "four")
+ (eshell-command-result-equal "echo $eshell-test-value[-1 -3]"
+ '("four" "two"))
+ ;; Index ranges
+ (eshell-command-result-equal
+ "echo $eshell-test-value[1..4]"
+ (funcall range-function '("one" "two" "three")))
+ (eshell-command-result-equal
+ "echo $eshell-test-value[..2]"
+ (funcall range-function '("zero" "one")))
+ (eshell-command-result-equal
+ "echo $eshell-test-value[-2..]"
+ (funcall range-function '("three" "four")))
+ (eshell-command-result-equal
+ "echo $eshell-test-value[..]"
+ (funcall range-function '("zero" "one" "two" "three" "four")))
+ (eshell-command-result-equal
+ "echo $eshell-test-value[1..4 -2..]"
+ (list (funcall range-function '("one" "two" "three"))
+ (funcall range-function '("three" "four"))))))
-(ert-deftest esh-var-test/interp-var-split-indices ()
- "Interpolate string variable with indices"
- (let ((eshell-test-value "zero one two three four"))
- (eshell-command-result-equal "echo $eshell-test-value[0]"
- "zero")
- (eshell-command-result-equal "echo $eshell-test-value[0 2]"
- '("zero" "two"))
- (eshell-command-result-equal "echo $eshell-test-value[0 2 4]"
- '("zero" "two" "four"))))
+(ert-deftest esh-var-test/interp-var-indices/list ()
+ "Interpolate list variable with indices."
+ (esh-var-test/interp-var-indices #'identity))
+
+(ert-deftest esh-var-test/interp-var-indices/vector ()
+ "Interpolate vector variable with indices."
+ (esh-var-test/interp-var-indices #'vconcat))
+
+(ert-deftest esh-var-test/interp-var-indices/ring ()
+ "Interpolate ring variable with indices."
+ (esh-var-test/interp-var-indices #'ring-convert-sequence-to-ring))
+
+(ert-deftest esh-var-test/interp-var-indices/split ()
+ "Interpolate string variable with indices."
+ (esh-var-test/interp-var-indices
+ (lambda (values) (string-join values " "))
+ #'identity))
(ert-deftest esh-var-test/interp-var-string-split-indices ()
- "Interpolate string variable with string splitter and indices"
+ "Interpolate string variable with string splitter and indices."
+ ;; Test using punctuation as a delimiter.
(let ((eshell-test-value "zero:one:two:three:four"))
(eshell-command-result-equal "echo $eshell-test-value[: 0]"
"zero")
(eshell-command-result-equal "echo $eshell-test-value[: 0 2]"
'("zero" "two")))
+ ;; Test using a letter as a delimiter.
(let ((eshell-test-value "zeroXoneXtwoXthreeXfour"))
(eshell-command-result-equal "echo $eshell-test-value[X 0]"
"zero")
(eshell-command-result-equal "echo $eshell-test-value[X 0 2]"
+ '("zero" "two")))
+ ;; Test using a number as a delimiter.
+ (let ((eshell-test-value "zero0one0two0three0four"))
+ (eshell-command-result-equal "echo $eshell-test-value[\"0\" 0]"
+ "zero")
+ (eshell-command-result-equal "echo $eshell-test-value[\"0\" 0 2]"
'("zero" "two"))))
(ert-deftest esh-var-test/interp-var-regexp-split-indices ()
- "Interpolate string variable with regexp splitter and indices"
+ "Interpolate string variable with regexp splitter and indices."
+ ;; Test using a regexp as a delimiter.
(let ((eshell-test-value "zero:one!two:three!four"))
(eshell-command-result-equal "echo $eshell-test-value['[:!]' 0]"
"zero")
@@ -103,18 +163,37 @@
(eshell-command-result-equal "echo $eshell-test-value[\"[:!]\" 0]"
"zero")
(eshell-command-result-equal "echo $eshell-test-value[\"[:!]\" 0 2]"
+ '("zero" "two")))
+ ;; Test using a regexp that looks like range syntax as a delimiter.
+ (let ((eshell-test-value "zero0..0one0..0two0..0three0..0four"))
+ (eshell-command-result-equal "echo $eshell-test-value[\"0..0\" 0]"
+ "zero")
+ (eshell-command-result-equal "echo $eshell-test-value[\"0..0\" 0 2]"
'("zero" "two"))))
(ert-deftest esh-var-test/interp-var-assoc ()
- "Interpolate alist variable with index"
- (let ((eshell-test-value '(("foo" . 1) (bar . 2))))
+ "Interpolate alist variable with index."
+ (let ((eshell-test-value '(("foo" . 1) (bar . 2) ("3" . "three"))))
(eshell-command-result-equal "echo $eshell-test-value[foo]"
1)
(eshell-command-result-equal "echo $eshell-test-value[#'bar]"
- 2)))
+ 2)
+ (eshell-command-result-equal "echo $eshell-test-value[\"3\"]"
+ "three")))
+
+(ert-deftest esh-var-test/interp-var-indices-subcommand ()
+ "Interpolate list variable with subcommand expansion for indices."
+ (skip-unless (executable-find "echo"))
+ (let ((eshell-test-value '("zero" "one" "two" "three" "four")))
+ (eshell-command-result-equal
+ "echo $eshell-test-value[${*echo 0}]"
+ "zero")
+ (eshell-command-result-equal
+ "echo $eshell-test-value[${*echo 0} ${*echo 2}]"
+ '("zero" "two"))))
(ert-deftest esh-var-test/interp-var-length-list ()
- "Interpolate length of list variable"
+ "Interpolate length of list variable."
(let ((eshell-test-value '((1 2) (3) (5 (6 7 8 9)))))
(eshell-command-result-equal "echo $#eshell-test-value" 3)
(eshell-command-result-equal "echo $#eshell-test-value[1]" 1)
@@ -126,55 +205,75 @@
(eshell-command-result-equal "echo $#eshell-test-value" 6)))
(ert-deftest esh-var-test/interp-var-length-alist ()
- "Interpolate length of alist variable"
+ "Interpolate length of alist variable."
(let ((eshell-test-value '(("foo" . (1 2 3)))))
(eshell-command-result-equal "echo $#eshell-test-value" 1)
(eshell-command-result-equal "echo $#eshell-test-value[foo]" 3)))
+(ert-deftest esh-var-test/interp-var-splice ()
+ "Splice-interpolate list variable."
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo a $@eshell-test-value z"
+ '("a" 1 2 3 "z"))))
+
+(ert-deftest esh-var-test/interp-var-splice-concat ()
+ "Splice-interpolate and concat list variable."
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo it is a$@'eshell-test-value'z"
+ '("it" "is" "a1" 2 "3z"))
+ ;; This is a tricky case. We're concatenating a spliced list and
+ ;; a non-spliced list. The general rule is that splicing should
+ ;; work as though the user typed "$X[0] $X[1] ... $X[N]". That
+ ;; means that the last value of our splice should get concatenated
+ ;; into the first value of the non-spliced list.
+ (eshell-command-result-equal
+ "echo it is $@'eshell-test-value'$eshell-test-value"
+ '("it" "is" 1 2 (31 2 3)))))
+
(ert-deftest esh-var-test/interp-lisp ()
- "Interpolate Lisp form evaluation"
+ "Interpolate Lisp form evaluation."
(eshell-command-result-equal "+ $(+ 1 2) 3" 6))
(ert-deftest esh-var-test/interp-lisp-indices ()
- "Interpolate Lisp form evaluation with index"
+ "Interpolate Lisp form evaluation with index."
(eshell-command-result-equal "+ $(list 1 2)[1] 3" 5))
(ert-deftest esh-var-test/interp-cmd ()
- "Interpolate command result"
+ "Interpolate command result."
(eshell-command-result-equal "+ ${+ 1 2} 3" 6))
(ert-deftest esh-var-test/interp-cmd-indices ()
- "Interpolate command result with index"
+ "Interpolate command result with index."
(eshell-command-result-equal "+ ${listify 1 2}[1] 3" 5))
(ert-deftest esh-var-test/interp-cmd-external ()
- "Interpolate command result from external command"
+ "Interpolate command result from external command."
(skip-unless (executable-find "echo"))
(with-temp-eshell
(eshell-match-command-output "echo ${*echo hi}"
"hi\n")))
(ert-deftest esh-var-test/interp-cmd-external-indices ()
- "Interpolate command result from external command with index"
+ "Interpolate command result from external command with index."
(skip-unless (executable-find "echo"))
(with-temp-eshell
(eshell-match-command-output "echo ${*echo \"hi\nbye\"}[1]"
"bye\n")))
(ert-deftest esh-var-test/interp-temp-cmd ()
- "Interpolate command result redirected to temp file"
+ "Interpolate command result redirected to temp file."
(eshell-command-result-equal "cat $<echo hi>" "hi"))
(ert-deftest esh-var-test/interp-concat-lisp ()
- "Interpolate and concat Lisp form"
+ "Interpolate and concat Lisp form."
(eshell-command-result-equal "+ $(+ 1 2)3 3" 36))
(ert-deftest esh-var-test/interp-concat-lisp2 ()
- "Interpolate and concat two Lisp forms"
+ "Interpolate and concat two Lisp forms."
(eshell-command-result-equal "+ $(+ 1 2)$(+ 1 2) 3" 36))
(ert-deftest esh-var-test/interp-concat-cmd ()
- "Interpolate and concat command with literal"
+ "Interpolate and concat command with literal."
(eshell-command-result-equal "+ ${+ 1 2}3 3" 36)
(eshell-command-result-equal "echo ${*echo \"foo\nbar\"}-baz"
'("foo" "bar-baz"))
@@ -187,18 +286,21 @@
'("hi" "23")))
(ert-deftest esh-var-test/interp-concat-cmd2 ()
- "Interpolate and concat two commands"
+ "Interpolate and concat two commands."
(eshell-command-result-equal "+ ${+ 1 2}${+ 1 2} 3" 36))
(ert-deftest esh-var-test/interp-concat-cmd-external ()
- "Interpolate command result from external command with concatenation"
+ "Interpolate command result from external command with concatenation."
(skip-unless (executable-find "echo"))
(with-temp-eshell
(eshell-match-command-output "echo ${echo hi}-${*echo there}"
"hi-there\n")))
+
+;; Quoted variable interpolation
+
(ert-deftest esh-var-test/quoted-interp-var ()
- "Interpolate variable inside double-quotes"
+ "Interpolate variable inside double-quotes."
(eshell-command-result-equal "echo \"$user-login-name\""
user-login-name))
@@ -209,8 +311,20 @@
(eshell-command-result-equal "echo \"hi, $\\\"user-login-name\\\"\""
(concat "hi, " user-login-name)))
+(ert-deftest esh-var-test/quoted-interp-list-var ()
+ "Interpolate list variable inside double-quotes."
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo \"$eshell-test-value\""
+ "(1 2 3)")))
+
+(ert-deftest esh-var-test/quoted-interp-list-var-concat ()
+ "Interpolate and concat list variable inside double-quotes"
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo \"a$'eshell-test-value'z\""
+ "a(1 2 3)z")))
+
(ert-deftest esh-var-test/quoted-interp-var-indices ()
- "Interpolate string variable with indices inside double-quotes"
+ "Interpolate string variable with indices inside double-quotes."
(let ((eshell-test-value '("zero" "one" "two" "three" "four")))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"zero")
@@ -224,8 +338,21 @@
(eshell-command-result-equal "echo \"$eshell-test-value[1 2 4]\""
"(\"one\" \"two\" \"four\")")))
+(ert-deftest esh-var-test/quote-interp-var-indices-subcommand ()
+ "Interpolate list variable with subcommand expansion for indices inside double-quotes."
+ (skip-unless (executable-find "echo"))
+ (let ((eshell-test-value '("zero" "one" "two" "three" "four")))
+ (eshell-command-result-equal
+ "echo \"$eshell-test-value[${*echo 0}]\""
+ "zero")
+ ;; FIXME: These tests would use the 0th index like the other tests
+ ;; here, but see above.
+ (eshell-command-result-equal
+ "echo \"$eshell-test-value[${*echo 1} ${*echo 2}]\""
+ "(\"one\" \"two\")")))
+
(ert-deftest esh-var-test/quoted-interp-var-split-indices ()
- "Interpolate string variable with indices inside double-quotes"
+ "Interpolate string variable with indices inside double-quotes."
(let ((eshell-test-value "zero one two three four"))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"zero")
@@ -233,8 +360,7 @@
"(\"zero\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-string-split-indices ()
- "Interpolate string variable with string splitter and indices
-inside double-quotes"
+ "Interpolate string variable with string splitter and indices inside double-quotes."
(let ((eshell-test-value "zero:one:two:three:four"))
(eshell-command-result-equal "echo \"$eshell-test-value[: 0]\""
"zero")
@@ -247,7 +373,7 @@ inside double-quotes"
"(\"zero\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-regexp-split-indices ()
- "Interpolate string variable with regexp splitter and indices"
+ "Interpolate string variable with regexp splitter and indices."
(let ((eshell-test-value "zero:one!two:three!four"))
(eshell-command-result-equal "echo \"$eshell-test-value['[:!]' 0]\""
"zero")
@@ -260,7 +386,7 @@ inside double-quotes"
"(\"zero\" \"two\")")))
(ert-deftest esh-var-test/quoted-interp-var-assoc ()
- "Interpolate alist variable with index inside double-quotes"
+ "Interpolate alist variable with index inside double-quotes."
(let ((eshell-test-value '(("foo" . 1) (bar . 2))))
(eshell-command-result-equal "echo \"$eshell-test-value[foo]\""
"1")
@@ -268,7 +394,7 @@ inside double-quotes"
"2")))
(ert-deftest esh-var-test/quoted-interp-var-length-list ()
- "Interpolate length of list variable inside double-quotes"
+ "Interpolate length of list variable inside double-quotes."
(let ((eshell-test-value '((1 2) (3) (5 (6 7 8 9)))))
(eshell-command-result-equal "echo \"$#eshell-test-value\""
"3")
@@ -278,63 +404,90 @@ inside double-quotes"
"4")))
(ert-deftest esh-var-test/quoted-interp-var-length-string ()
- "Interpolate length of string variable inside double-quotes"
+ "Interpolate length of string variable inside double-quotes."
(let ((eshell-test-value "foobar"))
(eshell-command-result-equal "echo \"$#eshell-test-value\""
"6")))
(ert-deftest esh-var-test/quoted-interp-var-length-alist ()
- "Interpolate length of alist variable inside double-quotes"
+ "Interpolate length of alist variable inside double-quotes."
(let ((eshell-test-value '(("foo" . (1 2 3)))))
(eshell-command-result-equal "echo \"$#eshell-test-value\""
"1")
(eshell-command-result-equal "echo \"$#eshell-test-value[foo]\""
"3")))
+(ert-deftest esh-var-test/quoted-interp-var-splice ()
+ "Splice-interpolate list variable inside double-quotes."
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo a \"$@eshell-test-value\" z"
+ '("a" "1 2 3" "z"))))
+
+(ert-deftest esh-var-test/quoted-interp-var-splice-concat ()
+ "Splice-interpolate and concat list variable inside double-quotes"
+ (let ((eshell-test-value '(1 2 3)))
+ (eshell-command-result-equal "echo \"a$@'eshell-test-value'z\""
+ "a1 2 3z")))
+
(ert-deftest esh-var-test/quoted-interp-lisp ()
- "Interpolate Lisp form evaluation inside double-quotes"
+ "Interpolate Lisp form evaluation inside double-quotes."
(eshell-command-result-equal "echo \"hi $(concat \\\"the\\\" \\\"re\\\")\""
"hi there"))
(ert-deftest esh-var-test/quoted-interp-lisp-indices ()
- "Interpolate Lisp form evaluation with index"
+ "Interpolate Lisp form evaluation with index."
(eshell-command-result-equal "concat \"$(list 1 2)[1]\" cool"
"2cool"))
(ert-deftest esh-var-test/quoted-interp-cmd ()
- "Interpolate command result inside double-quotes"
+ "Interpolate command result inside double-quotes."
(eshell-command-result-equal "echo \"hi ${echo \\\"there\\\"}\""
"hi there"))
(ert-deftest esh-var-test/quoted-interp-cmd-indices ()
- "Interpolate command result with index inside double-quotes"
+ "Interpolate command result with index inside double-quotes."
(eshell-command-result-equal "concat \"${listify 1 2}[1]\" cool"
"2cool"))
(ert-deftest esh-var-test/quoted-interp-temp-cmd ()
- "Interpolate command result redirected to temp file inside double-quotes"
+ "Interpolate command result redirected to temp file inside double-quotes."
(let ((temporary-file-directory
(file-name-as-directory (make-temp-file "esh-vars-tests" t))))
(unwind-protect
- (eshell-command-result-equal "cat \"$<echo hi>\"" "hi")
+ (eshell-command-result-equal "cat \"$<echo \\\"hi\\\">\"" "hi")
(delete-directory temporary-file-directory t))))
(ert-deftest esh-var-test/quoted-interp-concat-cmd ()
- "Interpolate and concat command with literal"
+ "Interpolate and concat command with literal."
(eshell-command-result-equal "echo \"${echo \\\"foo\nbar\\\"} baz\""
"foo\nbar baz"))
+;; Interpolating commands
+
+(ert-deftest esh-var-test/command-interp ()
+ "Interpolate a variable as a command name."
+ (let ((eshell-test-value "printnl"))
+ (eshell-command-result-equal "$eshell-test-value hello there"
+ "hello\nthere\n")))
+
+(ert-deftest esh-var-test/command-interp-splice ()
+ "Interpolate a splice variable as a command name with arguments."
+ (let ((eshell-test-value '("printnl" "hello" "there")))
+ (eshell-command-result-equal "$@eshell-test-value"
+ "hello\nthere\n")))
+
+
;; Interpolated variable conversion
(ert-deftest esh-var-test/interp-convert-var-number ()
- "Interpolate numeric variable"
+ "Interpolate numeric variable."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of $eshell-test-value"
'integer)))
(ert-deftest esh-var-test/interp-convert-var-split-indices ()
- "Interpolate and convert string variable with indices"
+ "Interpolate and convert string variable with indices."
;; Check that numeric forms are converted to numbers.
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo $eshell-test-value[0]"
@@ -349,7 +502,7 @@ inside double-quotes"
"baz\n")))
(ert-deftest esh-var-test/interp-convert-quoted-var-number ()
- "Interpolate numeric quoted numeric variable"
+ "Interpolate numeric quoted numeric variable."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of $'eshell-test-value'"
'integer)
@@ -357,7 +510,7 @@ inside double-quotes"
'integer)))
(ert-deftest esh-var-test/interp-convert-quoted-var-split-indices ()
- "Interpolate and convert quoted string variable with indices"
+ "Interpolate and convert quoted string variable with indices."
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo $'eshell-test-value'[0]"
0)
@@ -365,11 +518,11 @@ inside double-quotes"
'(0 20))))
(ert-deftest esh-var-test/interp-convert-cmd-string-newline ()
- "Interpolate trailing-newline command result"
+ "Interpolate trailing-newline command result."
(eshell-command-result-equal "echo ${echo \"foo\n\"}" "foo"))
(ert-deftest esh-var-test/interp-convert-cmd-multiline ()
- "Interpolate multi-line command result"
+ "Interpolate multi-line command result."
(eshell-command-result-equal "echo ${echo \"foo\nbar\"}"
'("foo" "bar"))
;; Numeric output should be converted to numbers...
@@ -380,24 +533,24 @@ inside double-quotes"
'("01" "02" "hi")))
(ert-deftest esh-var-test/interp-convert-cmd-number ()
- "Interpolate numeric command result"
+ "Interpolate numeric command result."
(eshell-command-result-equal "echo ${echo \"1\"}" 1))
(ert-deftest esh-var-test/interp-convert-cmd-split-indices ()
- "Interpolate command result with indices"
+ "Interpolate command result with indices."
(eshell-command-result-equal "echo ${echo \"000 010 020\"}[0]"
0)
(eshell-command-result-equal "echo ${echo \"000 010 020\"}[0 2]"
'(0 20)))
(ert-deftest esh-var-test/quoted-interp-convert-var-number ()
- "Interpolate numeric variable inside double-quotes"
+ "Interpolate numeric variable inside double-quotes."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of \"$eshell-test-value\""
'string)))
(ert-deftest esh-var-test/quoted-interp-convert-var-split-indices ()
- "Interpolate string variable with indices inside double-quotes"
+ "Interpolate string variable with indices inside double-quotes."
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"000")
@@ -405,7 +558,7 @@ inside double-quotes"
"(\"000\" \"020\")")))
(ert-deftest esh-var-test/quoted-interp-convert-quoted-var-number ()
- "Interpolate numeric quoted variable inside double-quotes"
+ "Interpolate numeric quoted variable inside double-quotes."
(let ((eshell-test-value 123))
(eshell-command-result-equal "type-of \"$'eshell-test-value'\""
'string)
@@ -413,7 +566,7 @@ inside double-quotes"
'string)))
(ert-deftest esh-var-test/quoted-interp-convert-quoted-var-split-indices ()
- "Interpolate quoted string variable with indices inside double-quotes"
+ "Interpolate quoted string variable with indices inside double-quotes."
(let ((eshell-test-value "000 010 020 030 040"))
(eshell-command-result-equal "echo \"$eshell-test-value[0]\""
"000")
@@ -421,23 +574,23 @@ inside double-quotes"
"(\"000\" \"020\")")))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-string-newline ()
- "Interpolate trailing-newline command result inside double-quotes"
+ "Interpolate trailing-newline command result inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"foo\n\\\"}\""
"foo")
(eshell-command-result-equal "echo \"${echo \\\"foo\n\n\\\"}\""
"foo"))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-multiline ()
- "Interpolate multi-line command result inside double-quotes"
+ "Interpolate multi-line command result inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"foo\nbar\\\"}\""
"foo\nbar"))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-number ()
- "Interpolate numeric command result inside double-quotes"
+ "Interpolate numeric command result inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"1\\\"}\"" "1"))
(ert-deftest esh-var-test/quoted-interp-convert-cmd-split-indices ()
- "Interpolate command result with indices inside double-quotes"
+ "Interpolate command result with indices inside double-quotes."
(eshell-command-result-equal "echo \"${echo \\\"000 010 020\\\"}[0]\""
"000"))
@@ -596,19 +749,19 @@ it, since the setter is nil."
(window-body-height nil 'remap)))
(ert-deftest esh-var-test/columns-var ()
- "$COLUMNS should equal (window-body-width nil 'remap)"
+ "$COLUMNS should equal (window-body-width nil 'remap)."
(eshell-command-result-equal "echo $COLUMNS"
(window-body-width nil 'remap)))
(ert-deftest esh-var-test/inside-emacs-var ()
- "Test presence of \"INSIDE_EMACS\" in subprocesses"
+ "Test presence of \"INSIDE_EMACS\" in subprocesses."
(with-temp-eshell
(eshell-match-command-output "env"
(format "INSIDE_EMACS=%s,eshell"
emacs-version))))
(ert-deftest esh-var-test/inside-emacs-var-split-indices ()
- "Test using \"INSIDE_EMACS\" with split indices"
+ "Test using \"INSIDE_EMACS\" with split indices."
(with-temp-eshell
(eshell-match-command-output "echo $INSIDE_EMACS[, 1]"
"eshell")))
@@ -672,8 +825,12 @@ it, since the setter is nil."
(format "cd %s" ert-remote-temporary-file-directory))
(eshell-match-command-output "echo $PATH" (regexp-quote remote-path)))))
+(ert-deftest esh-var-test/uid-var ()
+ "Test that $UID is equivalent to (user-uid) for local directories."
+ (eshell-command-result-equal "echo $UID" (user-uid)))
+
(ert-deftest esh-var-test/last-status-var-lisp-command ()
- "Test using the \"last exit status\" ($?) variable with a Lisp command"
+ "Test using the \"last exit status\" ($?) variable with a Lisp command."
(with-temp-eshell
(eshell-match-command-output "zerop 0; echo $?"
"t\n0\n")
@@ -683,7 +840,7 @@ it, since the setter is nil."
"1\n" nil t)))
(ert-deftest esh-var-test/last-status-var-lisp-form ()
- "Test using the \"last exit status\" ($?) variable with a Lisp form"
+ "Test using the \"last exit status\" ($?) variable with a Lisp form."
(let ((eshell-lisp-form-nil-is-failure t))
(with-temp-eshell
(eshell-match-command-output "(zerop 0); echo $?"
@@ -706,7 +863,7 @@ This tests when `eshell-lisp-form-nil-is-failure' is nil."
"1\n" nil t))))
(ert-deftest esh-var-test/last-status-var-ext-cmd ()
- "Test using the \"last exit status\" ($?) variable with an external command"
+ "Test using the \"last exit status\" ($?) variable with an external command."
(skip-unless (executable-find "["))
(with-temp-eshell
(eshell-match-command-output "[ foo = foo ]; echo $?"
@@ -715,19 +872,19 @@ This tests when `eshell-lisp-form-nil-is-failure' is nil."
"1\n")))
(ert-deftest esh-var-test/last-result-var ()
- "Test using the \"last result\" ($$) variable"
+ "Test using the \"last result\" ($$) variable."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $$ 2"
"3\n5\n")))
(ert-deftest esh-var-test/last-result-var-twice ()
- "Test using the \"last result\" ($$) variable twice"
+ "Test using the \"last result\" ($$) variable twice."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $$ $$"
"3\n6\n")))
(ert-deftest esh-var-test/last-result-var-ext-cmd ()
- "Test using the \"last result\" ($$) variable with an external command"
+ "Test using the \"last result\" ($$) variable with an external command."
(skip-unless (executable-find "["))
(with-temp-eshell
;; MS-DOS/MS-Windows have an external command 'format', which we
@@ -739,7 +896,7 @@ This tests when `eshell-lisp-form-nil-is-failure' is nil."
"nil\n"))))
(ert-deftest esh-var-test/last-result-var-split-indices ()
- "Test using the \"last result\" ($$) variable with split indices"
+ "Test using the \"last result\" ($$) variable with split indices."
(with-temp-eshell
(eshell-match-command-output
"string-join (list \"01\" \"02\") :; + $$[: 1] 3"
@@ -749,13 +906,13 @@ This tests when `eshell-lisp-form-nil-is-failure' is nil."
"01:02\n02\n")))
(ert-deftest esh-var-test/last-arg-var ()
- "Test using the \"last arg\" ($_) variable"
+ "Test using the \"last arg\" ($_) variable."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $_ 4"
"3\n6\n")))
(ert-deftest esh-var-test/last-arg-var-indices ()
- "Test using the \"last arg\" ($_) variable with indices"
+ "Test using the \"last arg\" ($_) variable with indices."
(with-temp-eshell
(eshell-match-command-output "+ 1 2; + $_[0] 4"
"3\n5\n")
@@ -763,7 +920,7 @@ This tests when `eshell-lisp-form-nil-is-failure' is nil."
"3\n6\n")))
(ert-deftest esh-var-test/last-arg-var-split-indices ()
- "Test using the \"last arg\" ($_) variable with split indices"
+ "Test using the \"last arg\" ($_) variable with split indices."
(with-temp-eshell
(eshell-match-command-output "concat 01:02 03:04; + $_[0][: 1] 5"
"01:0203:04\n7\n")
diff --git a/test/lisp/eshell/eshell-tests-helpers.el b/test/lisp/eshell/eshell-tests-helpers.el
index f1d12dbe9f3..2c913d71cb4 100644
--- a/test/lisp/eshell/eshell-tests-helpers.el
+++ b/test/lisp/eshell/eshell-tests-helpers.el
@@ -33,9 +33,9 @@
(defvar eshell-history-file-name nil)
(defvar eshell-last-dir-ring-file-name nil)
-(defvar eshell-test--max-subprocess-time 5
- "The maximum amount of time to wait for a subprocess to finish, in seconds.
-See `eshell-wait-for-subprocess'.")
+(defvar eshell-test--max-wait-time 5
+ "The maximum amount of time to wait for a condition to resolve, in seconds.
+See `eshell-wait-for'.")
(defun eshell-tests-remote-accessible-p ()
"Return if a test involving remote files can proceed.
@@ -73,19 +73,28 @@ BUFNAME will be set to the name of the temporary buffer."
(let ((,bufname (buffer-name)))
,@body)))
+(defun eshell-wait-for (predicate &optional message)
+ "Wait until PREDICATE returns non-nil.
+If this takes longer than `eshell-test--max-wait-time', raise an
+error. MESSAGE is an optional message to use if this times out."
+ (let ((start (current-time))
+ (message (or message "timed out waiting for condition")))
+ (while (not (funcall predicate))
+ (when (> (float-time (time-since start))
+ eshell-test--max-wait-time)
+ (error message))
+ (sit-for 0.1))))
+
(defun eshell-wait-for-subprocess (&optional all)
"Wait until there is no interactive subprocess running in Eshell.
If ALL is non-nil, wait until there are no Eshell subprocesses at
all running.
-If this takes longer than `eshell-test--max-subprocess-time',
+If this takes longer than `eshell-test--max-wait-time',
raise an error."
- (let ((start (current-time)))
- (while (if all eshell-process-list (eshell-interactive-process-p))
- (when (> (float-time (time-since start))
- eshell-test--max-subprocess-time)
- (error "timed out waiting for subprocess(es)"))
- (sit-for 0.1))))
+ (eshell-wait-for
+ (lambda ()
+ (not (if all eshell-process-list (eshell-interactive-process-p))))))
(defun eshell-insert-command (command &optional func)
"Insert a COMMAND at the end of the buffer.
diff --git a/test/lisp/eshell/eshell-tests-unload.el b/test/lisp/eshell/eshell-tests-unload.el
new file mode 100644
index 00000000000..cdd58efef18
--- /dev/null
+++ b/test/lisp/eshell/eshell-tests-unload.el
@@ -0,0 +1,99 @@
+;;; eshell-tests-unload.el --- test unloading Eshell -*- lexical-binding:t -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; Tests for unloading Eshell.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+
+;; In order to test unloading Eshell, don't require any of its files
+;; at the top level. This means we need to explicitly declare some of
+;; the variables and functions we'll use.
+(defvar eshell-directory-name)
+(defvar eshell-history-file-name)
+(defvar eshell-last-dir-ring-file-name)
+(defvar eshell-modules-list)
+
+(declare-function eshell-module--feature-name "esh-module"
+ (module &optional kind))
+(declare-function eshell-subgroups "esh-util" (groupsym))
+
+(defvar max-unload-time 5
+ "The maximum amount of time to wait to unload Eshell modules, in seconds.
+See `unload-eshell'.")
+
+(defun load-eshell ()
+ "Load Eshell by calling the `eshell' function and immediately closing it."
+ (save-current-buffer
+ (ert-with-temp-directory eshell-directory-name
+ (let* (;; We want no history file, so prevent Eshell from falling
+ ;; back on $HISTFILE.
+ (process-environment (cons "HISTFILE" process-environment))
+ (eshell-history-file-name nil)
+ (eshell-last-dir-ring-file-name nil)
+ (eshell-buffer (eshell t)))
+ (let (kill-buffer-query-functions)
+ (kill-buffer eshell-buffer))))))
+
+(defun unload-eshell ()
+ "Unload Eshell, waiting until the core modules are unloaded as well."
+ (let ((debug-on-error t)
+ (inhibit-message t))
+ (unload-feature 'eshell)
+ ;; We unload core modules are unloaded from a timer, since they
+ ;; need to wait until after `eshell' itself is unloaded. Wait for
+ ;; this to finish.
+ (let ((start (current-time)))
+ (while (featurep 'esh-arg)
+ (when (> (float-time (time-since start))
+ max-unload-time)
+ (error "timed out waiting to unload Eshell modules"))
+ (sit-for 0.1)))))
+
+;;; Tests:
+
+(ert-deftest eshell-test-unload/default ()
+ "Test unloading Eshell with the default list of extension modules."
+ (load-eshell)
+ (unload-eshell))
+
+(ert-deftest eshell-test-unload/no-modules ()
+ "Test unloading Eshell with no extension modules."
+ (require 'esh-module)
+ (let (eshell-modules-list)
+ (load-eshell))
+ (dolist (module (eshell-subgroups 'eshell-module))
+ (should-not (featurep (intern (eshell-module--feature-name module)))))
+ (unload-eshell))
+
+(ert-deftest eshell-test-unload/all-modules ()
+ "Test unloading Eshell with every extension module."
+ (require 'esh-module)
+ (let ((eshell-modules-list (eshell-subgroups 'eshell-module)))
+ (load-eshell))
+ (dolist (module (eshell-subgroups 'eshell-module))
+ (should (featurep (intern (eshell-module--feature-name module)))))
+ (unload-eshell))
+
+(provide 'eshell-tests-unload)
+;;; eshell-tests-unload.el ends here
diff --git a/test/lisp/eshell/eshell-tests.el b/test/lisp/eshell/eshell-tests.el
index fbff51a8873..390f75cfbb9 100644
--- a/test/lisp/eshell/eshell-tests.el
+++ b/test/lisp/eshell/eshell-tests.el
@@ -34,6 +34,8 @@
(file-name-directory (or load-file-name
default-directory))))
+(defvar eshell-test-value nil)
+
;;; Tests:
(ert-deftest eshell-test/pipe-headproc ()
@@ -129,17 +131,12 @@ This test uses a pipeline for the command."
"Test that `eshell-command' works for background commands."
(skip-unless (executable-find "echo"))
(ert-with-temp-directory eshell-directory-name
- (let ((eshell-history-file-name nil))
- ;; XXX: We can't write to the current buffer here, since
- ;; `eshell-command' will produce an invalid command in that
- ;; case. Just make sure the command runs and produces an output
- ;; buffer.
- (eshell-command "*echo hi &")
- (with-current-buffer "*Eshell Async Command Output*"
- (while (get-buffer-process (current-buffer))
- (accept-process-output))
- (goto-char (point-min))
- (should (looking-at "\\[echo\\(\\.exe\\)?\\(<[0-9]+>\\)?\\]"))))))
+ (let ((orig-processes (process-list))
+ (eshell-history-file-name nil))
+ (with-temp-buffer
+ (eshell-command "*echo hi &" t)
+ (eshell-wait-for (lambda () (equal (process-list) orig-processes)))
+ (should (equal (buffer-string) "hi\n"))))))
(ert-deftest eshell-test/eshell-command/background-pipeline ()
"Test that `eshell-command' works for background commands.
@@ -147,14 +144,12 @@ This test uses a pipeline for the command."
(skip-unless (and (executable-find "echo")
(executable-find "cat")))
(ert-with-temp-directory eshell-directory-name
- (let ((eshell-history-file-name nil))
- ;; XXX: As above, we can't write to the current buffer here.
- (eshell-command "*echo hi | *cat &")
- (with-current-buffer "*Eshell Async Command Output*"
- (while (get-buffer-process (current-buffer))
- (accept-process-output))
- (goto-char (point-min))
- (should (looking-at "\\[cat\\(\\.exe\\)?\\(<[0-9]+>\\)?\\]"))))))
+ (let ((orig-processes (copy-tree (process-list)))
+ (eshell-history-file-name nil))
+ (with-temp-buffer
+ (eshell-command "*echo hi | *cat &" t)
+ (eshell-wait-for (lambda () (equal (process-list) orig-processes)))
+ (should (equal (buffer-string) "hi\n"))))))
(ert-deftest eshell-test/command-running-p ()
"Modeline should show no command running"
@@ -168,27 +163,28 @@ This test uses a pipeline for the command."
(with-temp-eshell
(eshell-insert-command "echo $(+ 1 (- 4 3)) \"alpha beta\" file" 'ignore)
(let ((here (point)) begin valid)
- (eshell-bol)
+ (beginning-of-line)
(setq begin (point))
(eshell-forward-argument 4)
(setq valid (= here (point)))
(eshell-backward-argument 4)
(prog1
(and valid (= begin (point)))
- (eshell-bol)
+ (beginning-of-line)
(delete-region (point) (point-max))))))
(ert-deftest eshell-test/queue-input ()
- "Test queuing command input"
+ "Test queuing command input.
+This should let the current command finish, then automatically
+insert the queued one at the next prompt, and finally run it."
(with-temp-eshell
- (eshell-insert-command "sleep 2")
- (eshell-insert-command "echo alpha" 'eshell-queue-input)
- (let ((count 10))
- (while (and eshell-current-command
- (> count 0))
- (sit-for 1)
- (setq count (1- count))))
- (should (eshell-match-output "alpha\n"))))
+ (eshell-insert-command "sleep 1; echo slept")
+ (eshell-insert-command "echo alpha" #'eshell-queue-input)
+ (let ((start (marker-position (eshell-beginning-of-output))))
+ (eshell-wait-for (lambda () (not eshell-current-command)))
+ (should (string-match "^slept\n.*echo alpha\nalpha\n$"
+ (buffer-substring-no-properties
+ start (eshell-end-of-output)))))))
(ert-deftest eshell-test/flush-output ()
"Test flushing of previous output"
@@ -198,12 +194,43 @@ This test uses a pipeline for the command."
(should (eshell-match-output
(concat "^" (regexp-quote "*** output flushed ***\n") "$")))))
-(ert-deftest eshell-test/run-old-command ()
- "Re-run an old command"
+(ert-deftest eshell-test/get-old-input ()
+ "Test that we can get the input of a previous command."
(with-temp-eshell
(eshell-insert-command "echo alpha")
(goto-char eshell-last-input-start)
- (string= (eshell-get-old-input) "echo alpha")))
+ (should (string= (eshell-get-old-input) "echo alpha"))
+ ;; Make sure that `eshell-get-old-input' works even if the point is
+ ;; inside the prompt.
+ (let ((inhibit-field-text-motion t))
+ (beginning-of-line))
+ (should (string= (eshell-get-old-input) "echo alpha"))))
+
+(ert-deftest eshell-test/get-old-input/rerun-command ()
+ "Test that we can rerun an old command when point is on it."
+ (with-temp-eshell
+ (let ((eshell-test-value "first"))
+ (eshell-match-command-output "echo $eshell-test-value" "first"))
+ ;; Go to the previous prompt.
+ (forward-line -2)
+ (let ((inhibit-field-text-motion t))
+ (end-of-line))
+ ;; Rerun the command, but with a different variable value.
+ (let ((eshell-test-value "second"))
+ (eshell-send-input))
+ (eshell-match-output "second")))
+
+(ert-deftest eshell-test/get-old-input/run-output ()
+ "Test that we can run a line of output as a command when point is on it."
+ (with-temp-eshell
+ (eshell-match-command-output "echo \"echo there\"" "echo there")
+ ;; Go to the output, and insert "hello" after "echo".
+ (forward-line -1)
+ (forward-word)
+ (insert " hello")
+ ;; Run the line as a command.
+ (eshell-send-input)
+ (eshell-match-output "(\"hello\" \"there\")")))
(provide 'eshell-tests)
diff --git a/test/lisp/gnus/mml-sec-tests.el b/test/lisp/gnus/mml-sec-tests.el
index 37e84c148af..a5dadf21c8c 100644
--- a/test/lisp/gnus/mml-sec-tests.el
+++ b/test/lisp/gnus/mml-sec-tests.el
@@ -66,34 +66,29 @@ This fixture temporarily unsets GPG_AGENT_INFO to enable passphrase tests,
which will neither work with gpgsm nor GnuPG 2.1 any longer, I guess.
Actually, I'm not sure why people would want to cache passwords in Emacs
instead of gpg-agent."
- (unwind-protect
- (let ((agent-info (getenv "GPG_AGENT_INFO"))
- (gpghome (getenv "GNUPGHOME")))
- (condition-case error
- (let ((epg-gpg-home-directory (ert-resource-directory))
- (mml-smime-use 'epg)
- ;; Create debug output in empty epg-debug-buffer.
- (epg-debug t)
- (epg-debug-buffer (get-buffer-create " *epg-test*"))
- (mml-secure-fail-when-key-problem (not interactive)))
- (with-current-buffer epg-debug-buffer
- (erase-buffer))
- ;; Unset GPG_AGENT_INFO to enable passphrase caching inside Emacs.
- ;; Just for testing. Jens does not recommend this for daily use.
- (setenv "GPG_AGENT_INFO")
- ;; Set GNUPGHOME as gpg-agent started by gpgsm does
- ;; not look in the proper places otherwise, see:
- ;; https://bugs.gnupg.org/gnupg/issue2126
- (setenv "GNUPGHOME" epg-gpg-home-directory)
- (unwind-protect
- (funcall body)
- (mml-sec-test--kill-gpg-agent)))
- (error
- (setenv "GPG_AGENT_INFO" agent-info)
- (setenv "GNUPGHOME" gpghome)
- (signal (car error) (cdr error))))
- (setenv "GPG_AGENT_INFO" agent-info)
- (setenv "GNUPGHOME" gpghome))))
+ (let ((agent-info (getenv "GPG_AGENT_INFO"))
+ (gpghome (getenv "GNUPGHOME")))
+ (unwind-protect
+ (let ((epg-gpg-home-directory (ert-resource-directory))
+ (mml-smime-use 'epg)
+ ;; Create debug output in empty epg-debug-buffer.
+ (epg-debug t)
+ (epg-debug-buffer (get-buffer-create " *epg-test*"))
+ (mml-secure-fail-when-key-problem (not interactive)))
+ (with-current-buffer epg-debug-buffer
+ (erase-buffer))
+ ;; Unset GPG_AGENT_INFO to enable passphrase caching inside Emacs.
+ ;; Just for testing. Jens does not recommend this for daily use.
+ (setenv "GPG_AGENT_INFO")
+ ;; Set GNUPGHOME as gpg-agent started by gpgsm does
+ ;; not look in the proper places otherwise, see:
+ ;; https://bugs.gnupg.org/gnupg/issue2126
+ (setenv "GNUPGHOME" epg-gpg-home-directory)
+ (unwind-protect
+ (funcall body)
+ (mml-sec-test--kill-gpg-agent)))
+ (setenv "GPG_AGENT_INFO" agent-info)
+ (setenv "GNUPGHOME" gpghome))))
(defun mml-secure-test-message-setup (method to from &optional text bcc)
"Setup a buffer with MML METHOD, TO, and FROM headers.
diff --git a/test/lisp/help-fns-tests.el b/test/lisp/help-fns-tests.el
index 4d715cde1d5..243a45ae6d2 100644
--- a/test/lisp/help-fns-tests.el
+++ b/test/lisp/help-fns-tests.el
@@ -181,10 +181,6 @@ Return first line of the output of (describe-function-1 FUNC)."
(ert-deftest help-fns--analyze-function-recursive ()
(defalias 'help-fns--a 'help-fns--b)
(should (equal (help-fns--analyze-function 'help-fns--a)
- '(help-fns--a help-fns--b t help-fns--b)))
- ;; Make a loop and see that it doesn't infloop.
- (defalias 'help-fns--b 'help-fns--a)
- (should (equal (help-fns--analyze-function 'help-fns--a)
'(help-fns--a help-fns--b t help-fns--b))))
;;; help-fns-tests.el ends here
diff --git a/test/lisp/hl-line-tests.el b/test/lisp/hl-line-tests.el
index 56924ff8e3e..9c120e0d7ff 100644
--- a/test/lisp/hl-line-tests.el
+++ b/test/lisp/hl-line-tests.el
@@ -104,10 +104,10 @@
(run-hooks 'post-command-hook)
(should (hl-line-tests-verify 257 t))
(with-current-buffer second-buffer
- (should (hl-line-tests-verify 999 nil)))))
- (let (kill-buffer-query-functions)
- (ignore-errors (kill-buffer first-buffer))
- (ignore-errors (kill-buffer second-buffer)))))
+ (should (hl-line-tests-verify 999 nil))))
+ (let (kill-buffer-query-functions)
+ (ignore-errors (kill-buffer first-buffer))
+ (ignore-errors (kill-buffer second-buffer))))))
(provide 'hl-line-tests)
diff --git a/test/lisp/jsonrpc-tests.el b/test/lisp/jsonrpc-tests.el
index a595167d130..85ac96a931c 100644
--- a/test/lisp/jsonrpc-tests.el
+++ b/test/lisp/jsonrpc-tests.el
@@ -124,7 +124,7 @@
"Signals an -32603 JSONRPC error."
(jsonrpc--with-emacsrpc-fixture (conn)
(condition-case err
- (progn
+ (let ((jsonrpc-inhibit-debug-on-error t))
(jsonrpc-request conn '+ ["a" 2])
(ert-fail "A `jsonrpc-error' should have been signaled!"))
(jsonrpc-error
diff --git a/test/lisp/net/tramp-archive-tests.el b/test/lisp/net/tramp-archive-tests.el
index b28b32bc7d3..94ef40a1116 100644
--- a/test/lisp/net/tramp-archive-tests.el
+++ b/test/lisp/net/tramp-archive-tests.el
@@ -121,12 +121,6 @@ the origin of the temporary TMPFILE, have no write permissions."
(directory-files tmpfile 'full directory-files-no-dot-files-regexp))
(delete-directory tmpfile)))
-(defun tramp-archive--test-emacs27-p ()
- "Check for Emacs version >= 27.1.
-Some semantics has been changed for there, without new functions or
-variables, so we check the Emacs version directly."
- (>= emacs-major-version 27))
-
(ert-deftest tramp-archive-test00-availability ()
"Test availability of archive file name functions."
:expected-result (if tramp-archive-enabled :passed :failed)
@@ -615,16 +609,13 @@ This checks also `file-name-as-directory', `file-name-directory',
(with-temp-buffer
(insert-directory tramp-archive-test-archive nil)
(goto-char (point-min))
- (should
- (looking-at-p
- (tramp-compat-rx (literal tramp-archive-test-archive)))))
+ (should (looking-at-p (rx (literal tramp-archive-test-archive)))))
(with-temp-buffer
(insert-directory tramp-archive-test-archive "-al")
(goto-char (point-min))
(should
(looking-at-p
- (tramp-compat-rx
- bol (+ nonl) blank (literal tramp-archive-test-archive) eol))))
+ (rx bol (+ nonl) blank (literal tramp-archive-test-archive) eol))))
(with-temp-buffer
(insert-directory
(file-name-as-directory tramp-archive-test-archive)
@@ -880,26 +871,31 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(ert-deftest tramp-archive-test43-file-system-info ()
"Check that `file-system-info' returns proper values."
(skip-unless tramp-archive-enabled)
- ;; Since Emacs 27.1.
- (skip-unless (fboundp 'file-system-info))
- ;; `file-system-info' exists since Emacs 27. We don't want to see
- ;; compiler warnings for older Emacsen.
- (let ((fsi (with-no-warnings (file-system-info tramp-archive-test-archive))))
+ (let ((fsi (file-system-info tramp-archive-test-archive)))
(skip-unless fsi)
(should (and (consp fsi)
- (= (length fsi) 3)
+ (tramp-compat-length= fsi 3)
(numberp (nth 0 fsi))
;; FREE and AVAIL are always 0.
(zerop (nth 1 fsi))
(zerop (nth 2 fsi))))))
-(ert-deftest tramp-archive-test47-auto-load ()
+;; `file-user-uid' was introduced in Emacs 30.1.
+(ert-deftest tramp-archive-test44-file-user-uid ()
+ "Check that `file-user-uid' returns proper values."
+ (skip-unless tramp-archive-enabled)
+ (skip-unless (fboundp 'file-user-uid))
+
+ (let ((default-directory tramp-archive-test-archive))
+ ;; `file-user-uid' exists since Emacs 30.1. We don't want to see
+ ;; compiler warnings for older Emacsen.
+ (should (integerp (with-no-warnings (file-user-uid))))))
+
+(ert-deftest tramp-archive-test48-auto-load ()
"Check that `tramp-archive' autoloads properly."
:tags '(:expensive-test)
(skip-unless tramp-archive-enabled)
- ;; Autoloading tramp-archive works since Emacs 27.1.
- (skip-unless (tramp-archive--test-emacs27-p))
;; tramp-archive is neither loaded at Emacs startup, nor when
;; loading a file like "/mock::foo" (which loads Tramp).
@@ -922,7 +918,7 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(dolist (file `("/mock::foo" ,(concat tramp-archive-test-archive "foo")))
(should
(string-match
- (tramp-compat-rx
+ (rx
"tramp-archive loaded: "
(literal (symbol-name
(tramp-archive-file-name-p default-directory)))
@@ -941,12 +937,10 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(format "(setq tramp-archive-enabled %s)" enabled))
(shell-quote-argument (format code file)))))))))))
-(ert-deftest tramp-archive-test47-delay-load ()
+(ert-deftest tramp-archive-test48-delay-load ()
"Check that `tramp-archive' is loaded lazily, only when needed."
:tags '(:expensive-test)
(skip-unless tramp-archive-enabled)
- ;; Autoloading tramp-archive works since Emacs 27.1.
- (skip-unless (tramp-archive--test-emacs27-p))
;; tramp-archive is neither loaded at Emacs startup, nor when
;; loading a file like "/foo.tar". It is loaded only when
@@ -967,7 +961,7 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(dolist (tae '(t nil))
(should
(string-match
- (tramp-compat-rx
+ (rx
"tramp-archive loaded: nil" (+ ascii)
"tramp-archive loaded: nil" (+ ascii)
"tramp-archive loaded: " (literal (symbol-name tae)))
diff --git a/test/lisp/net/tramp-tests.el b/test/lisp/net/tramp-tests.el
index 0a777617c1d..9bca6a03754 100644
--- a/test/lisp/net/tramp-tests.el
+++ b/test/lisp/net/tramp-tests.el
@@ -33,7 +33,7 @@
;; remote host, set this environment variable to "/dev/null" or
;; whatever is appropriate on your system.
-;; For slow remote connections, `tramp-test44-asynchronous-requests'
+;; For slow remote connections, `tramp-test45-asynchronous-requests'
;; might be too heavy. Setting $REMOTE_PARALLEL_PROCESSES to a proper
;; value less than 10 could help.
@@ -74,16 +74,15 @@
(defvar tramp-remote-path)
(defvar tramp-remote-process-environment)
-;; Needed for Emacs 26.
-(declare-function with-connection-local-variables "files-x")
;; Needed for Emacs 27.
(defvar lock-file-name-transforms)
(defvar process-file-return-signal-string)
(defvar remote-file-name-inhibit-locks)
-(defvar shell-command-dont-erase-buffer)
-;; Needed for Emacs 28.
(defvar dired-copy-dereference)
+;; Declared in Emacs 30.
+(defvar remote-file-name-inhibit-delete-by-moving-to-trash)
+
;; `ert-resource-file' was introduced in Emacs 28.1.
(unless (macrop 'ert-resource-file)
(eval-and-compile
@@ -166,6 +165,9 @@ A resource file is in the resource directory as per
;; Suppress nasty messages.
(fset #'shell-command-sentinel #'ignore)
;; We do not want to be interrupted.
+ (fset #'tramp-action-yesno
+ (lambda (_proc vec)
+ (tramp-send-string vec (concat "yes" tramp-local-end-of-line)) t))
(eval-after-load 'tramp-gvfs
'(fset 'tramp-gvfs-handler-askquestion
(lambda (_message _choices) '(t nil 0)))))
@@ -224,7 +226,7 @@ If LOCAL is non-nil, a local file name is returned.
If QUOTED is non-nil, the local part of the file name is quoted.
The temporary file is not created."
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(make-temp-name "tramp-test")
(if local temporary-file-directory ert-remote-temporary-file-directory))))
@@ -2296,10 +2298,9 @@ This checks also `file-name-as-directory', `file-name-directory',
;; Check `directory-abbrev-alist' abbreviation.
(let ((directory-abbrev-alist
- `((,(tramp-compat-rx bos (literal home-dir) "/foo")
- . ,(concat home-dir "/f"))
- (,(tramp-compat-rx bos (literal remote-host) "/nowhere")
- . ,(concat remote-host "/nw")))))
+ `((,(rx bos (literal home-dir) "/foo") . ,(concat home-dir "/f"))
+ (,(rx bos (literal remote-host) "/nowhere")
+ . ,(concat remote-host "/nw")))))
(should (equal (abbreviate-file-name (concat home-dir "/foo/bar"))
(concat remote-host-nohop "~/f/bar")))
(should (equal (abbreviate-file-name
@@ -2350,7 +2351,24 @@ This checks also `file-name-as-directory', `file-name-directory',
(expand-file-name
(file-name-nondirectory tmp-name) trash-directory))))
(delete-directory trash-directory 'recursive)
- (should-not (file-exists-p trash-directory)))))))
+ (should-not (file-exists-p trash-directory))))
+
+ ;; Setting `remote-file-name-inhibit-delete-by-moving-to-trash'
+ ;; prevents trashing remote files.
+ (let ((trash-directory (tramp--test-make-temp-name 'local quoted))
+ (delete-by-moving-to-trash t)
+ (remote-file-name-inhibit-delete-by-moving-to-trash t))
+ (make-directory trash-directory)
+ (should-not (file-exists-p tmp-name))
+ (write-region "foo" nil tmp-name)
+ (should (file-exists-p tmp-name))
+ (delete-file tmp-name 'trash)
+ (should-not (file-exists-p tmp-name))
+ (should-not
+ (file-exists-p
+ (expand-file-name (file-name-nondirectory tmp-name) trash-directory)))
+ (delete-directory trash-directory 'recursive)
+ (should-not (file-exists-p trash-directory))))))
(ert-deftest tramp-test08-file-local-copy ()
"Check `file-local-copy'."
@@ -2394,22 +2412,51 @@ This checks also `file-name-as-directory', `file-name-directory',
(with-temp-buffer
(write-region "foo" nil tmp-name)
(let ((point (point)))
- (insert-file-contents tmp-name)
+ (should
+ (equal
+ (insert-file-contents tmp-name)
+ `(,(expand-file-name tmp-name) 3)))
(should (string-equal (buffer-string) "foo"))
(should (= point (point))))
(goto-char (1+ (point)))
(let ((point (point)))
- (insert-file-contents tmp-name)
+ (should
+ (equal
+ (insert-file-contents tmp-name)
+ `(,(expand-file-name tmp-name) 3)))
(should (string-equal (buffer-string) "ffoooo"))
(should (= point (point))))
;; Insert partly.
(let ((point (point)))
- (insert-file-contents tmp-name nil 1 3)
+ (should
+ (equal
+ (insert-file-contents tmp-name nil 1 3)
+ `(,(expand-file-name tmp-name) 2)))
(should (string-equal (buffer-string) "foofoooo"))
(should (= point (point))))
+ (let ((point (point)))
+ (should
+ (equal
+ (insert-file-contents tmp-name nil 2 5)
+ `(,(expand-file-name tmp-name) 1)))
+ (should (string-equal (buffer-string) "fooofoooo"))
+ (should (= point (point))))
;; Replace.
(let ((point (point)))
- (insert-file-contents tmp-name nil nil nil 'replace)
+ ;; 0 characters replaced, because "foo" is already there.
+ (should
+ (equal
+ (insert-file-contents tmp-name nil nil nil 'replace)
+ `(,(expand-file-name tmp-name) 0)))
+ (should (string-equal (buffer-string) "foo"))
+ (should (= point (point))))
+ (let ((point (point)))
+ (replace-string-in-region "foo" "bar" (point-min) (point-max))
+ (goto-char point)
+ (should
+ (equal
+ (insert-file-contents tmp-name nil nil nil 'replace)
+ `(,(expand-file-name tmp-name) 3)))
(should (string-equal (buffer-string) "foo"))
(should (= point (point))))
;; Error case.
@@ -2479,17 +2526,14 @@ This checks also `file-name-as-directory', `file-name-directory',
(should (string-equal (buffer-string) "foo")))
;; Write empty string. Used for creation of temporary files.
- ;; Since Emacs 27.1.
- (when (fboundp 'make-empty-file)
- (with-no-warnings
- (should-error
- (make-empty-file tmp-name)
- :type 'file-already-exists)
- (delete-file tmp-name)
- (make-empty-file tmp-name)
- (with-temp-buffer
- (insert-file-contents tmp-name)
- (should (string-equal (buffer-string) "")))))
+ (should-error
+ (make-empty-file tmp-name)
+ :type 'file-already-exists)
+ (delete-file tmp-name)
+ (make-empty-file tmp-name)
+ (with-temp-buffer
+ (insert-file-contents tmp-name)
+ (should (string-equal (buffer-string) "")))
;; Write partly.
(with-temp-buffer
@@ -2511,12 +2555,11 @@ This checks also `file-name-as-directory', `file-name-directory',
(string-match-p
(if (and (null noninteractive)
(or (eq visit t) (null visit) (stringp visit)))
- (tramp-compat-rx
- bol "Wrote " (literal tmp-name) "\n" eos)
+ (rx bol "Wrote " (literal tmp-name) "\n" eos)
(rx bos))
tramp--test-messages))))))
- ;; We do not test lockname here. See
+ ;; We do not test the lock file here. See
;; `tramp-test39-make-lock-file-name'.
;; Do not overwrite if excluded.
@@ -2542,8 +2585,6 @@ This checks also `file-name-as-directory', `file-name-directory',
"Check that `file-precious-flag' is respected with Tramp in use."
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p))
- ;; The bug is fixed in Emacs 27.1.
- (skip-unless (tramp--test-emacs27-p))
(let* ((tmp-name (tramp--test-make-temp-name))
(inhibit-message t)
@@ -2626,10 +2667,7 @@ This checks also `file-name-as-directory', `file-name-directory',
"Check `copy-file'."
(skip-unless (tramp--test-enabled))
- ;; `filename-non-special' has been fixed in Emacs 27.1, see Bug#29579.
- (dolist (quoted
- (if (and (tramp--test-expensive-test-p) (tramp--test-emacs27-p))
- '(nil t) '(nil)))
+ (dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (tramp--test-make-temp-name nil quoted))
(tmp-name3 (tramp--test-make-temp-name 'local quoted)))
@@ -2738,10 +2776,7 @@ This checks also `file-name-as-directory', `file-name-directory',
"Check `rename-file'."
(skip-unless (tramp--test-enabled))
- ;; `filename-non-special' has been fixed in Emacs 27.1, see Bug#29579.
- (dolist (quoted
- (if (and (tramp--test-expensive-test-p) (tramp--test-emacs27-p))
- '(nil t) '(nil)))
+ (dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (tramp--test-make-temp-name nil quoted))
(tmp-name3 (tramp--test-make-temp-name 'local quoted)))
@@ -2857,6 +2892,7 @@ This checks also `file-name-as-directory', `file-name-directory',
This tests also `file-directory-p' and `file-accessible-directory-p'."
(skip-unless (tramp--test-enabled))
+ ;; Since Emacs 29.1, `make-directory' has defined return values.
(dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let* ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (expand-file-name "foo/bar" tmp-name1))
@@ -2865,7 +2901,9 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(unwind-protect
(progn
(with-file-modes unusual-file-mode-1
- (make-directory tmp-name1))
+ (if (tramp--test-emacs29-p)
+ (should-not (make-directory tmp-name1))
+ (make-directory tmp-name1)))
(should-error
(make-directory tmp-name1)
:type 'file-already-exists)
@@ -2878,15 +2916,19 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(make-directory tmp-name2)
:type 'file-error)
(with-file-modes unusual-file-mode-2
- (make-directory tmp-name2 'parents))
+ (if (tramp--test-emacs29-p)
+ (should-not (make-directory tmp-name2 'parents))
+ (make-directory tmp-name2 'parents)))
(should (file-directory-p tmp-name2))
(should (file-accessible-directory-p tmp-name2))
(when (tramp--test-supports-set-file-modes-p)
(should (equal (format "%#o" unusual-file-mode-2)
(format "%#o" (file-modes tmp-name2)))))
;; If PARENTS is non-nil, `make-directory' shall not
- ;; signal an error when DIR exists already.
- (make-directory tmp-name2 'parents))
+ ;; signal an error when DIR exists already. It returns t.
+ (if (tramp--test-emacs29-p)
+ (should (make-directory tmp-name2 'parents))
+ (make-directory tmp-name2 'parents)))
;; Cleanup.
(ignore-errors (delete-directory tmp-name1 'recursive))))))
@@ -2918,13 +2960,11 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(delete-directory tmp-name1 'recursive)
(should-not (file-directory-p tmp-name1))
- ;; Trashing directories works only since Emacs 27.1. It doesn't
- ;; work when `system-move-file-to-trash' is defined (on MS
- ;; Windows and macOS), for encrypted remote directories and for
- ;; ange-ftp.
+ ;; Trashing directories doesn't work when
+ ;; `system-move-file-to-trash' is defined (on MS Windows and
+ ;; macOS), for encrypted remote directories and for ange-ftp.
(when (and (not (fboundp 'system-move-file-to-trash))
- (not (tramp--test-crypt-p)) (not (tramp--test-ftp-p))
- (tramp--test-emacs27-p))
+ (not (tramp--test-crypt-p)) (not (tramp--test-ftp-p)))
(let ((trash-directory (tramp--test-make-temp-name 'local quoted))
(delete-by-moving-to-trash t))
(make-directory trash-directory)
@@ -2965,7 +3005,23 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
"%s/%s/%s/bla" trash-directory (file-name-nondirectory tmp-name1)
(file-name-nondirectory tmp-name2))))
(delete-directory trash-directory 'recursive)
- (should-not (file-exists-p trash-directory)))))))
+ (should-not (file-exists-p trash-directory))))
+
+ ;; Setting `remote-file-name-inhibit-delete-by-moving-to-trash'
+ ;; prevents trashing remote files.
+ (let ((trash-directory (tramp--test-make-temp-name 'local quoted))
+ (delete-by-moving-to-trash t)
+ (remote-file-name-inhibit-delete-by-moving-to-trash t))
+ (make-directory trash-directory)
+ (make-directory tmp-name1)
+ (should (file-directory-p tmp-name1))
+ (delete-directory tmp-name1 nil 'trash)
+ (should-not (file-exists-p tmp-name1))
+ (should-not
+ (file-exists-p
+ (expand-file-name (file-name-nondirectory tmp-name1) trash-directory)))
+ (delete-directory trash-directory 'recursive)
+ (should-not (file-exists-p trash-directory))))))
(ert-deftest tramp-test15-copy-directory ()
"Check `copy-directory'."
@@ -3193,9 +3249,6 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
;; (this is performed by `dired'). If FULL is nil, it shows just
;; one file. So we refrain from testing.
(skip-unless (not (tramp--test-ange-ftp-p)))
- ;; `insert-directory' of encrypted remote directories works only
- ;; since Emacs 27.1.
- (skip-unless (or (not (tramp--test-crypt-p)) (tramp--test-emacs27-p)))
(dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let* ((tmp-name1
@@ -3213,26 +3266,23 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(with-temp-buffer
(insert-directory tmp-name1 nil)
(goto-char (point-min))
- (should (looking-at-p (tramp-compat-rx (literal tmp-name1)))))
+ (should (looking-at-p (rx (literal tmp-name1)))))
(with-temp-buffer
(insert-directory (file-name-as-directory tmp-name1) nil)
(goto-char (point-min))
(should
- (looking-at-p
- (tramp-compat-rx (literal (file-name-as-directory tmp-name1))))))
+ (looking-at-p (rx (literal (file-name-as-directory tmp-name1))))))
(with-temp-buffer
(insert-directory tmp-name1 "-al")
(goto-char (point-min))
(should
- (looking-at-p
- (tramp-compat-rx bol (+ nonl) blank (literal tmp-name1) eol))))
+ (looking-at-p (rx bol (+ nonl) blank (literal tmp-name1) eol))))
(with-temp-buffer
(insert-directory (file-name-as-directory tmp-name1) "-al")
(goto-char (point-min))
(should
(looking-at-p
- (tramp-compat-rx
- bol (+ nonl) blank (literal tmp-name1) "/" eol))))
+ (rx bol (+ nonl) blank (literal tmp-name1) "/" eol))))
(with-temp-buffer
(insert-directory
(file-name-as-directory tmp-name1) "-al" nil 'full-directory-p)
@@ -3293,7 +3343,7 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(tmp-name4 (expand-file-name "bar" tmp-name2))
(ert-remote-temporary-file-directory
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
ert-remote-temporary-file-directory))
buffer)
(unwind-protect
@@ -3316,14 +3366,14 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
(literal
(file-relative-name
tmp-name1 ert-remote-temporary-file-directory)))))
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
(literal
(file-relative-name
tmp-name2 ert-remote-temporary-file-directory))))))
@@ -3338,14 +3388,14 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
(literal
(file-relative-name
tmp-name3 ert-remote-temporary-file-directory)))))
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
(literal
(file-relative-name
tmp-name4
@@ -3368,14 +3418,14 @@ This tests also `file-directory-p' and `file-accessible-directory-p'."
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
(literal
(file-relative-name
tmp-name3 ert-remote-temporary-file-directory)))))
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
(literal
(file-relative-name
tmp-name4
@@ -3548,7 +3598,7 @@ This tests also `access-file', `file-readable-p',
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(file-attribute-type attr))
(file-remote-p (file-truename tmp-name1) 'localname)))
(delete-file tmp-name2))
@@ -3612,9 +3662,6 @@ This tests also `access-file', `file-readable-p',
(cons '(nil "perl" nil)
tramp-connection-properties)))
(progn
- ;; `ert-test-result-duration' exists since Emacs 27. It
- ;; doesn't hurt to call it unconditionally, because
- ;; `skip-unless' hides the error.
(skip-unless (< (ert-test-result-duration result) 300))
(funcall (ert-test-body ert-test)))
(ert-skip (format "Test `%s' must run before" ',test)))))
@@ -3643,9 +3690,6 @@ This tests also `access-file', `file-readable-p',
(nil "id" nil))
tramp-connection-properties)))
(progn
- ;; `ert-test-result-duration' exists since Emacs 27. It
- ;; doesn't hurt to call it unconditionally, because
- ;; `skip-unless' hides the error.
(skip-unless (< (ert-test-result-duration result) 300))
(funcall (ert-test-body ert-test)))
(ert-skip (format "Test `%s' must run before" ',test)))))
@@ -3672,9 +3716,6 @@ This tests also `access-file', `file-readable-p',
(nil "readlink" nil))
tramp-connection-properties)))
(progn
- ;; `ert-test-result-duration' exists since Emacs 27. It
- ;; doesn't hurt to call it unconditionally, because
- ;; `skip-unless' hides the error.
(skip-unless (< (ert-test-result-duration result) 300))
(funcall (ert-test-body ert-test)))
(ert-skip (format "Test `%s' must run before" ',test)))))
@@ -3710,9 +3751,9 @@ They might differ only in time attributes or directory size."
;; few seconds). We use a test start time minus 10 seconds, in
;; order to compensate a possible timestamp resolution higher than
;; a second on the remote machine.
- (when (or (tramp-compat-time-equal-p
+ (when (or (time-equal-p
(file-attribute-modification-time attr1) tramp-time-dont-know)
- (tramp-compat-time-equal-p
+ (time-equal-p
(file-attribute-modification-time attr2) tramp-time-dont-know))
(setcar (nthcdr 5 attr1) tramp-time-dont-know)
(setcar (nthcdr 5 attr2) tramp-time-dont-know))
@@ -3723,9 +3764,9 @@ They might differ only in time attributes or directory size."
(float-time (file-attribute-modification-time attr2)))
(setcar (nthcdr 5 attr2) tramp-time-dont-know))
;; Status change time. Ditto.
- (when (or (tramp-compat-time-equal-p
+ (when (or (time-equal-p
(file-attribute-status-change-time attr1) tramp-time-dont-know)
- (tramp-compat-time-equal-p
+ (time-equal-p
(file-attribute-status-change-time attr2) tramp-time-dont-know))
(setcar (nthcdr 6 attr1) tramp-time-dont-know)
(setcar (nthcdr 6 attr2) tramp-time-dont-know))
@@ -3864,7 +3905,7 @@ This tests also `file-executable-p', `file-writable-p' and `set-file-modes'."
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity)
+ (if quoted #'file-name-unquote #'identity)
(file-remote-p tmp-name1 'localname))
(file-symlink-p tmp-name2)))
;; Both report the modes of `tmp-name1'.
@@ -3937,7 +3978,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity)
+ (if quoted #'file-name-unquote #'identity)
(file-remote-p tmp-name1 'localname))
(file-symlink-p tmp-name2)))
(when (tramp--test-expensive-test-p)
@@ -3955,14 +3996,14 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity)
+ (if quoted #'file-name-unquote #'identity)
(file-remote-p tmp-name1 'localname))
(file-symlink-p tmp-name2))))
(make-symbolic-link tmp-name1 tmp-name2 'ok-if-already-exists)
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity)
+ (if quoted #'file-name-unquote #'identity)
(file-remote-p tmp-name1 'localname))
(file-symlink-p tmp-name2)))
;; If we use the local part of `tmp-name1', it shall still work.
@@ -3972,7 +4013,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity)
+ (if quoted #'file-name-unquote #'identity)
(file-remote-p tmp-name1 'localname))
(file-symlink-p tmp-name2)))
;; `tmp-name3' is a local file name. Therefore, the link
@@ -3994,7 +4035,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity)
+ (if quoted #'file-name-unquote #'identity)
(file-remote-p tmp-name1 'localname))
(file-symlink-p tmp-name5)))
;; Check, that files in symlinked directories still work.
@@ -4088,16 +4129,14 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"/[penguin/motd]" "/penguin:motd:")))
(delete-file tmp-name2)
(make-symbolic-link
- (funcall
- (if quoted #'tramp-compat-file-name-unquote #'identity) penguin)
+ (funcall (if quoted #'file-name-unquote #'identity) penguin)
tmp-name2)
(should (file-symlink-p tmp-name2))
(should-not (file-regular-p tmp-name2))
(should
(string-equal
(file-truename tmp-name2)
- (tramp-compat-file-name-quote
- (concat (file-remote-p tmp-name2) penguin)))))
+ (file-name-quote (concat (file-remote-p tmp-name2) penguin)))))
;; `tmp-name3' is a local file name.
;; `make-symbolic-link' might not be permitted on w32 systems.
(unless (tramp--test-windows-nt-p)
@@ -4110,7 +4149,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should
(string-equal
(file-truename tmp-name1)
- (tramp-compat-file-name-unquote (file-truename tmp-name3))))))
+ (file-name-unquote (file-truename tmp-name3))))))
;; Cleanup.
(ignore-errors
@@ -4166,6 +4205,10 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should (file-symlink-p tmp-name1))
(should-not (file-regular-p tmp-name1))
(should-not (file-regular-p tmp-name2))
+ (should
+ (string-equal
+ (file-truename tmp-name1)
+ (file-truename tmp-name2)))
(if (tramp--test-smb-p)
;; The symlink command of "smbclient" detects the
;; cycle already.
@@ -4173,10 +4216,15 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(make-symbolic-link tmp-name1 tmp-name2)
:type 'file-error)
(make-symbolic-link tmp-name1 tmp-name2)
+ (should (file-symlink-p tmp-name1))
(should (file-symlink-p tmp-name2))
+ (should-not (file-regular-p tmp-name1))
(should-not (file-regular-p tmp-name2))
(should-error
(file-truename tmp-name1)
+ :type 'file-error)
+ (should-error
+ (file-truename tmp-name2)
:type 'file-error))))
;; Cleanup.
@@ -4188,7 +4236,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(let* ((dir1
(directory-file-name
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
ert-remote-temporary-file-directory)))
(dir2 (file-name-as-directory dir1)))
(should (string-equal (file-truename dir1) (expand-file-name dir1)))
@@ -4217,12 +4265,12 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(skip-unless (set-file-times tmp-name1 (seconds-to-time 60)))
;; Dumb remote shells without perl(1) or stat(1) are not
;; able to return the date correctly. They say "don't know".
- (unless (tramp-compat-time-equal-p
+ (unless (time-equal-p
(file-attribute-modification-time
(file-attributes tmp-name1))
tramp-time-dont-know)
(should
- (tramp-compat-time-equal-p
+ (time-equal-p
(file-attribute-modification-time (file-attributes tmp-name1))
(seconds-to-time 60)))
;; Setting the time for not existing files shall fail.
@@ -4241,7 +4289,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(with-no-warnings
(set-file-times tmp-name1 (seconds-to-time 60) 'nofollow)
(should
- (tramp-compat-time-equal-p
+ (time-equal-p
(file-attribute-modification-time
(file-attributes tmp-name1))
(seconds-to-time 60)))))))
@@ -4287,10 +4335,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(skip-unless (file-acl ert-remote-temporary-file-directory))
(skip-unless (not (tramp--test-crypt-p)))
- ;; `filename-non-special' has been fixed in Emacs 27.1, see Bug#29579.
- (dolist (quoted
- (if (and (tramp--test-expensive-test-p) (tramp--test-emacs27-p))
- '(nil t) '(nil)))
+ (dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (tramp--test-make-temp-name nil quoted))
(tmp-name3 (tramp--test-make-temp-name 'local quoted)))
@@ -4367,10 +4412,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
'(nil nil nil nil))))
(skip-unless (not (tramp--test-crypt-p)))
- ;; `filename-non-special' has been fixed in Emacs 27.1, see Bug#29579.
- (dolist (quoted
- (if (and (tramp--test-expensive-test-p) (tramp--test-emacs27-p))
- '(nil t) '(nil)))
+ (dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
(tmp-name2 (tramp--test-make-temp-name nil quoted))
(tmp-name3 (tramp--test-make-temp-name 'local quoted)))
@@ -4511,42 +4553,40 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(let ((tramp-fuse-remove-hidden-files t)
(method (file-remote-p ert-remote-temporary-file-directory 'method))
(host (file-remote-p ert-remote-temporary-file-directory 'host))
- (orig-syntax tramp-syntax))
+ (orig-syntax tramp-syntax)
+ (minibuffer-completing-file-name t))
(when (and (stringp host) (string-match tramp-host-with-port-regexp host))
(setq host (match-string 1 host)))
(unwind-protect
- (dolist
- (syntax
- (if (tramp--test-expensive-test-p)
- (tramp-syntax-values) `(,orig-syntax)))
+ (dolist (syntax (if (tramp--test-expensive-test-p)
+ (tramp-syntax-values) `(,orig-syntax)))
(tramp-change-syntax syntax)
;; This has cleaned up all connection data, which are used
;; for completion. We must refill the cache.
(tramp-set-connection-property tramp-test-vec "property" nil)
- (let ;; This is needed for the `separate' syntax.
- ((prefix-format (substring tramp-prefix-format 1))
- ;; This is needed for the IPv6 host name syntax.
- (ipv6-prefix
- (and (string-match-p tramp-ipv6-regexp host)
- tramp-prefix-ipv6-format))
- (ipv6-postfix
- (and (string-match-p tramp-ipv6-regexp host)
- tramp-postfix-ipv6-format)))
+ (let (;; This is needed for the `separate' syntax.
+ (prefix-format (substring tramp-prefix-format 1))
+ ;; This is needed for the IPv6 host name syntax.
+ (ipv6-prefix
+ (and (string-match-p tramp-ipv6-regexp host)
+ tramp-prefix-ipv6-format))
+ (ipv6-postfix
+ (and (string-match-p tramp-ipv6-regexp host)
+ tramp-postfix-ipv6-format)))
;; Complete method name.
- (unless (or (zerop (length method))
- (zerop (length tramp-method-regexp)))
+ (unless (or (tramp-string-empty-or-nil-p method)
+ (string-empty-p tramp-method-regexp))
(should
(member
(concat prefix-format method tramp-postfix-method-format)
(file-name-all-completions
(concat prefix-format (substring method 0 1)) "/"))))
;; Complete host name.
- (unless (or (zerop (length method))
- (zerop (length tramp-method-regexp))
- (zerop (length host))
- (tramp--test-gvfs-p method))
+ (unless (or (tramp-string-empty-or-nil-p method)
+ (string-empty-p tramp-method-regexp)
+ (tramp-string-empty-or-nil-p host))
(should
(member
(concat
@@ -4579,6 +4619,13 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should (equal (file-name-completion "foo" tmp-name) t))
(should (equal (file-name-completion "b" tmp-name) "bo"))
(should-not (file-name-completion "a" tmp-name))
+ ;; `file-name-completion' should not err out if
+ ;; directory does not exist. (Bug#61890)
+ ;; Ange-FTP does not support this.
+ (unless (tramp--test-ange-ftp-p)
+ (should-not
+ (file-name-completion
+ "a" (tramp-compat-file-name-concat tmp-name "fuzz"))))
;; Ange-FTP does not support predicates.
(unless (tramp--test-ange-ftp-p)
(should
@@ -4624,6 +4671,190 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
;; Cleanup.
(ignore-errors (delete-directory tmp-name 'recursive)))))))
+(tramp--test-deftest-with-perl tramp-test26-file-name-completion)
+
+(tramp--test-deftest-with-ls tramp-test26-file-name-completion)
+
+;; This test is inspired by Bug#51386, Bug#52758, Bug#53513, Bug#54042
+;; and Bug#60505.
+(ert-deftest tramp-test26-interactive-file-name-completion ()
+ "Check interactive completion with different `completion-styles'."
+ ;; Method, user and host name in completion mode. This kind of
+ ;; completion does not work on MS Windows.
+ (skip-unless (not (memq system-type '(cygwin windows-nt))))
+ (tramp-cleanup-connection tramp-test-vec nil 'keep-password)
+
+ (let ((method (file-remote-p ert-remote-temporary-file-directory 'method))
+ (user (file-remote-p ert-remote-temporary-file-directory 'user))
+ (host (file-remote-p ert-remote-temporary-file-directory 'host))
+ (hop (file-remote-p ert-remote-temporary-file-directory 'hop))
+ (orig-syntax tramp-syntax)
+ (non-essential t)
+ (inhibit-message t))
+ (when (and (stringp host) (string-match tramp-host-with-port-regexp host))
+ (setq host (match-string 1 host)))
+
+ ;; (trace-function #'tramp-completion-file-name-handler)
+ ;; (trace-function #'completion-file-name-table)
+ (unwind-protect
+ (dolist (syntax (if (tramp--test-expensive-test-p)
+ (tramp-syntax-values) `(,orig-syntax)))
+ (tramp-change-syntax syntax)
+ ;; This has cleaned up all connection data, which are used
+ ;; for completion. We must refill the cache.
+ (tramp-set-connection-property tramp-test-vec "property" nil)
+
+ (dolist
+ (style
+ (if (tramp--test-expensive-test-p)
+ ;; It doesn't work for `initials' and `shorthand'
+ ;; completion styles. Should it?
+ '(emacs21 emacs22 basic partial-completion substring flex)
+ '(basic)))
+
+ (when (assoc style completion-styles-alist)
+ (let* (;; Force the real minibuffer in batch mode.
+ (executing-kbd-macro noninteractive)
+ (completion-styles `(,style))
+ completion-category-defaults
+ completion-category-overrides
+ ;; This is needed for the `simplified' syntax,
+ (tramp-default-method method)
+ (method-string
+ (unless (string-empty-p tramp-method-regexp)
+ (concat method tramp-postfix-method-format)))
+ (user-string
+ (unless (tramp-string-empty-or-nil-p user)
+ (concat user tramp-postfix-user-format)))
+ ;; This is needed for the IPv6 host name syntax.
+ (ipv6-prefix
+ (and (string-match-p tramp-ipv6-regexp host)
+ tramp-prefix-ipv6-format))
+ (ipv6-postfix
+ (and (string-match-p tramp-ipv6-regexp host)
+ tramp-postfix-ipv6-format))
+ (host-string
+ (unless (tramp-string-empty-or-nil-p host)
+ (concat
+ ipv6-prefix host
+ ipv6-postfix tramp-postfix-host-format)))
+ ;; The hop string fits only the initial syntax.
+ (hop (and (eq tramp-syntax orig-syntax) hop))
+ test result completions)
+
+ (dolist
+ (test-and-result
+ ;; These are triples of strings (TEST-STRING
+ ;; RESULT-CHECK COMPLETION-CHECK). RESULT-CHECK
+ ;; could be not unique, in this case it is a list
+ ;; (RESULT1 RESULT2 ...).
+ (append
+ ;; Complete method name.
+ (unless (string-empty-p tramp-method-regexp)
+ `((,(concat
+ tramp-prefix-format hop
+ (substring-no-properties
+ method 0 (min 2 (length method))))
+ ,(concat tramp-prefix-format method-string)
+ ,method-string)))
+ ;; Complete user name.
+ (unless (tramp-string-empty-or-nil-p user)
+ `((,(concat
+ tramp-prefix-format hop method-string
+ (substring-no-properties
+ user 0 (min 2 (length user))))
+ ,(concat
+ tramp-prefix-format method-string user-string)
+ ,user-string)))
+ ;; Complete host name.
+ (unless (tramp-string-empty-or-nil-p host)
+ `((,(concat
+ tramp-prefix-format hop method-string
+ ipv6-prefix
+ (substring-no-properties
+ host 0 (min 2 (length host))))
+ (,(concat
+ tramp-prefix-format method-string host-string)
+ ,(concat
+ tramp-prefix-format method-string
+ user-string host-string))
+ ,host-string)))
+ ;; Complete user and host name.
+ (unless (or (tramp-string-empty-or-nil-p user)
+ (tramp-string-empty-or-nil-p host))
+ `((,(concat
+ tramp-prefix-format hop method-string user-string
+ ipv6-prefix
+ (substring-no-properties
+ host 0 (min 2 (length host))))
+ ,(concat
+ tramp-prefix-format method-string
+ user-string host-string)
+ ,host-string)))))
+
+ (ignore-errors (kill-buffer "*Completions*"))
+ ;; (and (bufferp trace-buffer) (kill-buffer trace-buffer))
+ (discard-input)
+ (setq test (car test-and-result)
+ unread-command-events
+ (mapcar #'identity (concat test "\t\t\n"))
+ completions nil
+ result (read-file-name "Prompt: "))
+
+ (if (or (not (get-buffer "*Completions*"))
+ (string-match-p
+ (if (string-empty-p tramp-method-regexp)
+ (rx
+ (| (regexp tramp-postfix-user-regexp)
+ (regexp tramp-postfix-host-regexp))
+ eos)
+ (rx
+ (| (regexp tramp-postfix-method-regexp)
+ (regexp tramp-postfix-user-regexp)
+ (regexp tramp-postfix-host-regexp))
+ eos))
+ result))
+ (progn
+ ;; (tramp--test-message
+ ;; "syntax: %s style: %s test: %s result: %s"
+ ;; syntax style test result)
+ (if (stringp (cadr test-and-result))
+ (should
+ (string-prefix-p (cadr test-and-result) result))
+ (should
+ (let (res)
+ (dolist (elem (cadr test-and-result) res)
+ (setq
+ res (or res (string-prefix-p elem result))))))))
+
+ (with-current-buffer "*Completions*"
+ ;; We must remove leading `default-directory'.
+ (goto-char (point-min))
+ (let ((inhibit-read-only t))
+ (while (re-search-forward "//" nil 'noerror)
+ (delete-region (line-beginning-position) (point))))
+ (goto-char (point-min))
+ (re-search-forward
+ (rx bol (0+ nonl)
+ (any "Pp") "ossible completions"
+ (0+ nonl) eol))
+ (forward-line 1)
+ (setq completions
+ (split-string
+ (buffer-substring-no-properties (point) (point-max))
+ (rx (any "\r\n\t ")) 'omit)))
+
+ ;; (tramp--test-message
+ ;; "syntax: %s style: %s test: %s result: %s completions: %S"
+ ;; syntax style test result completions)
+ (should (member (caddr test-and-result) completions))))))))
+
+ ;; Cleanup.
+ ;; (tramp--test-message "%s" (tramp-get-buffer-string trace-buffer))
+ ;; (untrace-function #'tramp-completion-file-name-handler)
+ ;; (untrace-function #'completion-file-name-table)
+ (tramp-change-syntax orig-syntax))))
+
(ert-deftest tramp-test27-load ()
"Check `load'."
(skip-unless (tramp--test-enabled))
@@ -4871,13 +5102,14 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
;; Cleanup.
(ignore-errors (delete-process proc)))
- ;; Disabled process filter. "sshfs" does not cooperate.
- (unless (tramp--test-sshfs-p)
+ ;; Disabled process filter. It doesn't work reliable.
+ (unless t
(unwind-protect
(with-temp-buffer
- (setq command '("cat")
- proc
- (apply #'start-file-process "test4" (current-buffer) command))
+ (setq command '("cat")
+ proc
+ (apply
+ #'start-file-process "test4" (current-buffer) command))
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
@@ -4897,12 +5129,7 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
;; Process connection type.
(when (and (tramp--test-sh-p)
(not (tramp-direct-async-process-p))
- ;; `executable-find' has changed the number of
- ;; parameters in Emacs 27.1, so we use `apply' for
- ;; older Emacsen.
- (ignore-errors
- (with-no-warnings
- (apply #'executable-find '("hexdump" remote)))))
+ (executable-find "hexdump" 'remote))
(dolist (process-connection-type '(nil pipe t pty))
(unwind-protect
(with-temp-buffer
@@ -4914,23 +5141,21 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
+ ;; Give the pipe process a chance to start.
+ (when (memq process-connection-type '(nil pipe))
+ (sit-for 0.1 'nodisp))
(process-send-string proc "foo\r\n")
(process-send-eof proc)
- ;; Read output.
- (with-timeout (10 (tramp--test-timeout-handler))
- (while (< (- (point-max) (point-min))
- (length "66\n6F\n6F\n0D\n0A\n"))
- (while (accept-process-output proc 0 nil t))))
- (should
- (string-match-p
- (if (and (memq process-connection-type '(nil pipe))
- (not (tramp--test-macos-p)))
- ;; On macOS, there is always newline conversion.
- ;; "telnet" converts \r to <CR><NUL> if `crlf'
- ;; flag is FALSE. See telnet(1) man page.
- (rx "66\n6F\n6F\n0D" (? "\n00") "\n0A\n")
- (rx "66\n6F\n6F\n0A" (? "\n00") "\n0A\n"))
- (buffer-string))))
+ ;; Read output. On macOS, there is always newline
+ ;; conversion. "telnet" converts \r to <CR><NUL> if
+ ;; `crlf' flag is FALSE. See telnet(1) man page.
+ (let ((expected
+ (rx "66\n" "6F\n" "6F\n"
+ (| "0D\n" "0A\n") (? "00\n") "0A\n")))
+ (with-timeout (10 (tramp--test-timeout-handler))
+ (while (not (string-match-p expected (buffer-string)))
+ (while (accept-process-output proc 0 nil t))))
+ (should (string-match-p expected (buffer-string)))))
;; Cleanup.
(ignore-errors (delete-process proc)))))
@@ -4959,33 +5184,29 @@ This tests also `make-symbolic-link', `file-truename' and `add-name-to-file'."
"Define ert test `TEST-direct-async' for direct async processes.
If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(declare (indent 1))
- ;; `make-process' supports file name handlers since Emacs 27. We
- ;; cannot use `tramp--test-always' during compilation of the macro.
- (when (let ((file-name-handler-alist '(("" . (lambda (&rest _) t)))))
- (ignore-errors (make-process :file-handler t)))
- `(ert-deftest ,(intern (concat (symbol-name test) "-direct-async")) ()
- ;; This is the docstring. However, it must be expanded to a
- ;; string inside the macro. No idea.
- ;; (concat (ert-test-documentation (get ',test 'ert--test))
- ;; "\nUse direct async process.")
- :tags (append '(:expensive-test :tramp-asynchronous-processes)
- (and ,unstable '(:unstable)))
- (skip-unless (tramp--test-enabled))
- (let ((default-directory ert-remote-temporary-file-directory)
- (ert-test (ert-get-test ',test))
- (tramp-connection-properties
- (cons '(nil "direct-async-process" t)
- tramp-connection-properties)))
- (skip-unless (tramp-direct-async-process-p))
- ;; We do expect an established connection already,
- ;; `file-truename' does it by side-effect. Suppress
- ;; `tramp--test-enabled', in order to keep the connection.
- ;; Suppress "Process ... finished" messages.
- (cl-letf (((symbol-function #'tramp--test-enabled) #'tramp--test-always)
- ((symbol-function #'internal-default-process-sentinel)
- #'ignore))
- (file-truename ert-remote-temporary-file-directory)
- (funcall (ert-test-body ert-test)))))))
+ `(ert-deftest ,(intern (concat (symbol-name test) "-direct-async")) ()
+ ;; This is the docstring. However, it must be expanded to a
+ ;; string inside the macro. No idea.
+ ;; (concat (ert-test-documentation (get ',test 'ert--test))
+ ;; "\nUse direct async process.")
+ :tags (append '(:expensive-test :tramp-asynchronous-processes)
+ (and ,unstable '(:unstable)))
+ (skip-unless (tramp--test-enabled))
+ (let ((default-directory ert-remote-temporary-file-directory)
+ (ert-test (ert-get-test ',test))
+ (tramp-connection-properties
+ (cons '(nil "direct-async-process" t)
+ tramp-connection-properties)))
+ (skip-unless (tramp-direct-async-process-p))
+ ;; We do expect an established connection already,
+ ;; `file-truename' does it by side-effect. Suppress
+ ;; `tramp--test-enabled', in order to keep the connection.
+ ;; Suppress "Process ... finished" messages.
+ (cl-letf (((symbol-function #'tramp--test-enabled) #'tramp--test-always)
+ ((symbol-function #'internal-default-process-sentinel)
+ #'ignore))
+ (file-truename ert-remote-temporary-file-directory)
+ (funcall (ert-test-body ert-test))))))
(tramp--test-deftest-direct-async-process tramp-test29-start-file-process)
@@ -4996,24 +5217,21 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
'(:unstable)))
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-supports-processes-p))
- ;; `make-process' supports file name handlers since Emacs 27.
- (skip-unless (tramp--test-emacs27-p))
(dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((default-directory ert-remote-temporary-file-directory)
(tmp-name (tramp--test-make-temp-name nil quoted))
kill-buffer-query-functions command proc)
- (with-no-warnings (should-not (make-process)))
+ (should-not (make-process))
;; Simple process.
(unwind-protect
(with-temp-buffer
(setq command '("cat")
proc
- (with-no-warnings
- (make-process
- :name "test1" :buffer (current-buffer) :command command
- :file-handler t)))
+ (make-process
+ :name "test1" :buffer (current-buffer) :command command
+ :file-handler t))
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
@@ -5035,10 +5253,9 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(should (file-exists-p tmp-name))
(setq command `("cat" ,(file-name-nondirectory tmp-name))
proc
- (with-no-warnings
- (make-process
- :name "test2" :buffer (current-buffer) :command command
- :file-handler t)))
+ (make-process
+ :name "test2" :buffer (current-buffer) :command command
+ :file-handler t))
(should (processp proc))
(should (equal (process-get proc 'remote-command) command))
;; Read output.
@@ -5057,13 +5274,12 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(with-temp-buffer
(setq command '("cat")
proc
- (with-no-warnings
- (make-process
- :name "test3" :buffer (current-buffer) :command command
- :filter
- (lambda (p s)
- (with-current-buffer (process-buffer p) (insert s)))
- :file-handler t)))
+ (make-process
+ :name "test3" :buffer (current-buffer) :command command
+ :filter
+ (lambda (p s)
+ (with-current-buffer (process-buffer p) (insert s)))
+ :file-handler t))
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
@@ -5078,17 +5294,15 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
;; Cleanup.
(ignore-errors (delete-process proc)))
- ;; Disabled process filter. "sshfs" does not cooperate.
- (unless (tramp--test-sshfs-p)
+ ;; Disabled process filter. It doesn't work reliable.
+ (unless t
(unwind-protect
(with-temp-buffer
(setq command '("cat")
proc
- (with-no-warnings
- (make-process
- :name "test4" :buffer (current-buffer) :command command
- :filter t
- :file-handler t)))
+ (make-process
+ :name "test4" :buffer (current-buffer) :command command
+ :filter t :file-handler t))
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
@@ -5109,13 +5323,12 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(with-temp-buffer
(setq command '("cat")
proc
- (with-no-warnings
- (make-process
- :name "test5" :buffer (current-buffer) :command command
- :sentinel
- (lambda (p s)
- (with-current-buffer (process-buffer p) (insert s)))
- :file-handler t)))
+ (make-process
+ :name "test5" :buffer (current-buffer) :command command
+ :sentinel
+ (lambda (p s)
+ (with-current-buffer (process-buffer p) (insert s)))
+ :file-handler t))
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
@@ -5141,11 +5354,9 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(with-temp-buffer
(setq command '("cat" "/does-not-exist")
proc
- (with-no-warnings
- (make-process
- :name "test6" :buffer (current-buffer) :command command
- :stderr stderr
- :file-handler t)))
+ (make-process
+ :name "test6" :buffer (current-buffer) :command command
+ :stderr stderr :file-handler t))
(should (processp proc))
(should (equal (process-get proc 'remote-command) command))
;; Read output.
@@ -5174,11 +5385,9 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(with-temp-buffer
(setq command '("cat" "/does-not-exist")
proc
- (with-no-warnings
- (make-process
- :name "test7" :buffer (current-buffer) :command command
- :stderr tmp-name
- :file-handler t)))
+ (make-process
+ :name "test7" :buffer (current-buffer) :command command
+ :stderr tmp-name :file-handler t))
(should (processp proc))
(should (equal (process-get proc 'remote-command) command))
;; Read stderr.
@@ -5199,51 +5408,43 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
;; Process connection type.
(when (and (tramp--test-sh-p)
(not (tramp-direct-async-process-p))
- ;; `executable-find' has changed the number of
- ;; parameters in Emacs 27.1, so we use `apply' for
- ;; older Emacsen.
- (ignore-errors
- (with-no-warnings
- (apply #'executable-find '("hexdump" remote)))))
+ (executable-find "hexdump" 'remote))
(dolist (connection-type '(nil pipe t pty))
;; `process-connection-type' is taken when
;; `:connection-type' is nil.
(dolist (process-connection-type
- (unless connection-type '(nil pipe t pty)))
+ (if connection-type '(nil pipe t pty) '(nil)))
(unwind-protect
(with-temp-buffer
(setq command '("hexdump" "-v" "-e" "/1 \"%02X\n\"")
proc
- (with-no-warnings
- (make-process
- :name
- (format "test8-%s-%s"
- connection-type process-connection-type)
- :buffer (current-buffer)
- :connection-type connection-type
- :command command
- :file-handler t)))
+ (make-process
+ :name
+ (format "test8-%s-%s"
+ connection-type process-connection-type)
+ :buffer (current-buffer)
+ :connection-type connection-type
+ :command command
+ :file-handler t))
(should (processp proc))
(should (equal (process-status proc) 'run))
(should (equal (process-get proc 'remote-command) command))
+ ;; Give the pipe process a chance to start.
+ (when (or (eq connection-type 'pipe)
+ (memq process-connection-type '(nil pipe)))
+ (sit-for 0.1 'nodisp))
(process-send-string proc "foo\r\n")
(process-send-eof proc)
- ;; Read output.
- (with-timeout (10 (tramp--test-timeout-handler))
- (while (< (- (point-max) (point-min))
- (length "66\n6F\n6F\n0D\n0A\n"))
- (while (accept-process-output proc 0 nil t))))
- (should
- (string-match-p
- (if (and (memq (or connection-type process-connection-type)
- '(nil pipe))
- (not (tramp--test-macos-p)))
- ;; On macOS, there is always newline conversion.
- ;; "telnet" converts \r to <CR><NUL> if `crlf'
- ;; flag is FALSE. See telnet(1) man page.
- (rx "66\n6F\n6F\n0D" (? "\n00") "\n0A\n")
- (rx "66\n6F\n6F\n0A" (? "\n00") "\n0A\n"))
- (buffer-string))))
+ ;; Read output. On macOS, there is always newline
+ ;; conversion. "telnet" converts \r to <CR><NUL> if
+ ;; `crlf' flag is FALSE. See telnet(1) man page.
+ (let ((expected
+ (rx "66\n" "6F\n" "6F\n"
+ (| "0D\n" "0A\n") (? "00\n") "0A\n")))
+ (with-timeout (10 (tramp--test-timeout-handler))
+ (while (not (string-match-p expected (buffer-string)))
+ (while (accept-process-output proc 0 nil t))))
+ (should (string-match-p expected (buffer-string)))))
;; Cleanup.
(ignore-errors (delete-process proc)))))))))
@@ -5258,8 +5459,6 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(skip-unless (tramp--test-sh-p))
(skip-unless (not (tramp--test-windows-nt-p)))
(skip-unless (not (tramp--test-crypt-p)))
- ;; Since Emacs 27.1.
- (skip-unless (macrop 'with-connection-local-variables))
;; We must use `file-truename' for the temporary directory, in
;; order to establish the connection prior running an asynchronous
@@ -5301,8 +5500,6 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(skip-unless (tramp--test-sh-p))
(skip-unless (not (tramp--test-windows-nt-p)))
(skip-unless (not (tramp--test-crypt-p)))
- ;; Since Emacs 27.1.
- (skip-unless (macrop 'with-connection-local-variables))
;; Since Emacs 29.1.
(skip-unless (boundp 'signal-process-functions))
@@ -5403,7 +5600,7 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
;; (tramp--test-message "%s" attributes)
(should (equal (cdr (assq 'comm attributes)) (car command)))
(should (equal (cdr (assq 'args attributes))
- (mapconcat #'identity command " ")))))
+ (string-join command " ")))))
;; Cleanup.
(ignore-errors (delete-process proc)))))
@@ -5419,7 +5616,7 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
(when-let ((default-directory ert-remote-temporary-file-directory)
(mi (memory-info)))
(should (consp mi))
- (should (= (length mi) 4))
+ (should (tramp-compat-length= mi 4))
(dotimes (i (length mi))
(should (natnump (nth i mi))))))
@@ -5429,11 +5626,9 @@ If UNSTABLE is non-nil, the test is tagged as `:unstable'."
INPUT, if non-nil, is a string sent to the process."
(let ((proc (async-shell-command command output-buffer error-buffer))
(delete-exited-processes t))
- ;; Since Emacs 27.1.
- (when (macrop 'with-connection-local-variables)
- (should (equal (process-get proc 'remote-command)
- (with-connection-local-variables
- `(,shell-file-name ,shell-command-switch ,command)))))
+ (should (equal (process-get proc 'remote-command)
+ (with-connection-local-variables
+ `(,shell-file-name ,shell-command-switch ,command))))
(cl-letf (((symbol-function #'shell-command-sentinel) #'ignore))
(when (stringp input)
(process-send-string proc input))
@@ -5454,10 +5649,6 @@ INPUT, if non-nil, is a string sent to the process."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-supports-processes-p))
- ;; Prior Emacs 27, `shell-file-name' was hard coded as "/bin/sh" for
- ;; remote processes in Emacs. That doesn't work for tramp-adb.el.
- (when (tramp--test-adb-p)
- (skip-unless (tramp--test-emacs27-p)))
(dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((tmp-name (tramp--test-make-temp-name nil quoted))
@@ -5525,7 +5716,7 @@ INPUT, if non-nil, is a string sent to the process."
(should
(string-match-p
;; Some shells echo, for example the "adb" or container methods.
- (tramp-compat-rx
+ (rx
bos (** 1 2 (literal (file-name-nondirectory tmp-name)) "\n")
eos)
(buffer-string))))
@@ -5533,10 +5724,8 @@ INPUT, if non-nil, is a string sent to the process."
;; Cleanup.
(ignore-errors (delete-file tmp-name))))))
- ;; Test `async-shell-command-width'. It exists since Emacs 26.1,
- ;; but seems to work since Emacs 27.1 only.
- (when (and (tramp--test-asynchronous-processes-p)
- (tramp--test-sh-p) (tramp--test-emacs27-p))
+ ;; Test `async-shell-command-width'.
+ (when (and (tramp--test-asynchronous-processes-p) (tramp--test-sh-p))
(let* ((async-shell-command-width 1024)
(default-directory ert-remote-temporary-file-directory)
(cols (ignore-errors
@@ -5556,8 +5745,6 @@ INPUT, if non-nil, is a string sent to the process."
(skip-unless (tramp--test-enabled))
(skip-unless nil)
(skip-unless (tramp--test-supports-processes-p))
- ;; Prior Emacs 27, `shell-command-dont-erase-buffer' wasn't working properly.
- (skip-unless (tramp--test-emacs27-p))
;; (message " s-c-d-e-b current-buffer buffer-string point")
;; (message "===============================================")
@@ -5732,8 +5919,7 @@ INPUT, if non-nil, is a string sent to the process."
;; Variable is set.
(should
(string-match-p
- (tramp-compat-rx (literal envvar))
- (funcall this-shell-command-to-string "set"))))
+ (rx (literal envvar)) (funcall this-shell-command-to-string "set"))))
(unless (tramp-direct-async-process-p)
;; We force a reconnect, in order to have a clean environment.
@@ -5759,7 +5945,7 @@ INPUT, if non-nil, is a string sent to the process."
;; Variable is unset.
(should-not
(string-match-p
- (tramp-compat-rx (literal envvar))
+ (rx (literal envvar))
;; We must remove PS1, the output is truncated otherwise.
;; We must suppress "_=VAR...".
(funcall
@@ -5804,13 +5990,10 @@ INPUT, if non-nil, is a string sent to the process."
(dolist (dir '("/mock:localhost#11111:" "/mock:localhost#22222:"))
(tramp-cleanup-connection (tramp-dissect-file-name dir)))))
-;; Connection-local variables are enabled per default since Emacs 27.1.
(ert-deftest tramp-test34-connection-local-variables ()
"Check that connection-local variables are enabled."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
- ;; Since Emacs 27.1.
- (skip-unless (macrop 'with-connection-local-variables))
(let* ((default-directory ert-remote-temporary-file-directory)
(tmp-name1 (tramp--test-make-temp-name))
@@ -5851,22 +6034,42 @@ INPUT, if non-nil, is a string sent to the process."
(should (eq local-variable 'connect))
(kill-buffer (current-buffer)))
- ;; `local-variable' is dir-local due to existence of .dir-locals.el.
+ ;; `local-variable' is still connection-local due to Tramp.
+ ;; `find-file-hook' overrides dir-local settings.
(write-region
"((nil . ((local-variable . dir))))" nil
(expand-file-name ".dir-locals.el" tmp-name1))
(should (file-exists-p (expand-file-name ".dir-locals.el" tmp-name1)))
- (with-current-buffer (find-file-noselect tmp-name2)
- (should (eq local-variable 'dir))
- (kill-buffer (current-buffer)))
-
- ;; `local-variable' is file-local due to specifying as file variable.
+ (when (memq #'tramp-set-connection-local-variables-for-buffer
+ find-file-hook)
+ (with-current-buffer (find-file-noselect tmp-name2)
+ (should (eq local-variable 'connect))
+ (kill-buffer (current-buffer))))
+ ;; `local-variable' is dir-local due to existence of .dir-locals.el.
+ (let ((find-file-hook
+ (remq #'tramp-set-connection-local-variables-for-buffer
+ find-file-hook)))
+ (with-current-buffer (find-file-noselect tmp-name2)
+ (should (eq local-variable 'dir))
+ (kill-buffer (current-buffer))))
+
+ ;; `local-variable' is still connection-local due to Tramp.
+ ;; `find-file-hook' overrides dir-local settings.
(write-region
"-*- mode: comint; local-variable: file; -*-" nil tmp-name2)
(should (file-exists-p tmp-name2))
- (with-current-buffer (find-file-noselect tmp-name2)
- (should (eq local-variable 'file))
- (kill-buffer (current-buffer))))
+ (when (memq #'tramp-set-connection-local-variables-for-buffer
+ find-file-hook)
+ (with-current-buffer (find-file-noselect tmp-name2)
+ (should (eq local-variable 'connect))
+ (kill-buffer (current-buffer))))
+ ;; `local-variable' is file-local due to specifying as file variable.
+ (let ((find-file-hook
+ (remq #'tramp-set-connection-local-variables-for-buffer
+ find-file-hook)))
+ (with-current-buffer (find-file-noselect tmp-name2)
+ (should (eq local-variable 'file))
+ (kill-buffer (current-buffer)))))
;; Cleanup.
(custom-set-variables
@@ -5879,10 +6082,6 @@ INPUT, if non-nil, is a string sent to the process."
:tags '(:expensive-test :tramp-asynchronous-processes)
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-supports-processes-p))
- ;; Prior Emacs 27, `shell-file-name' was hard coded as "/bin/sh" for
- ;; remote processes in Emacs. That doesn't work for tramp-adb.el.
- (when (tramp--test-adb-p)
- (skip-unless (tramp--test-emacs27-p)))
(let ((default-directory ert-remote-temporary-file-directory)
explicit-shell-file-name kill-buffer-query-functions
@@ -5891,9 +6090,6 @@ INPUT, if non-nil, is a string sent to the process."
connection-local-profile-alist connection-local-criteria-alist)
(unwind-protect
(progn
- ;; `shell-mode' would ruin our test, because it deletes all
- ;; buffer local variables. Not needed in Emacs 27.1.
- (put 'explicit-shell-file-name 'permanent-local t)
(connection-local-set-profile-variables
'remote-sh
`((explicit-shell-file-name . ,(tramp--test-shell-file-name))
@@ -5927,29 +6123,24 @@ INPUT, if non-nil, is a string sent to the process."
`(connection-local-criteria-alist ',clca now))
(kill-buffer "*shell*"))))
-;; `exec-path' was introduced in Emacs 27.1. `executable-find' has
-;; changed the number of parameters, so we use `apply' for older
-;; Emacsen.
(ert-deftest tramp-test35-exec-path ()
"Check `exec-path' and `executable-find'."
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-supports-processes-p))
(skip-unless (tramp--test-supports-set-file-modes-p))
- ;; Since Emacs 27.1.
- (skip-unless (fboundp 'exec-path))
(let ((tmp-name (tramp--test-make-temp-name))
(default-directory ert-remote-temporary-file-directory))
(unwind-protect
(progn
- (should (consp (with-no-warnings (exec-path))))
+ (should (consp (exec-path)))
;; Last element is the `exec-directory'.
(should
(string-equal
- (car (last (with-no-warnings (exec-path))))
+ (car (last (exec-path)))
(file-remote-p default-directory 'localname)))
;; The shell "sh" shall always exist.
- (should (apply #'executable-find '("sh" remote)))
+ (should (executable-find "sh" 'remote))
;; Since the last element in `exec-path' is the current
;; directory, an executable file in that directory will be
;; found.
@@ -5960,32 +6151,25 @@ INPUT, if non-nil, is a string sent to the process."
(should (file-executable-p tmp-name))
(should
(string-equal
- (apply
- #'executable-find `(,(file-name-nondirectory tmp-name) remote))
+ (executable-find (file-name-nondirectory tmp-name) 'remote)
(file-remote-p tmp-name 'localname)))
(should-not
- (apply
- #'executable-find
- `(,(concat (file-name-nondirectory tmp-name) "foo") remote))))
+ (executable-find
+ (concat (file-name-nondirectory tmp-name) "foo") 'remote)))
;; Cleanup.
(ignore-errors (delete-file tmp-name)))))
;; This test is inspired by Bug#33781.
-;; `exec-path' was introduced in Emacs 27.1. `executable-find' has
-;; changed the number of parameters, so we use `apply' for older
-;; Emacsen.
(ert-deftest tramp-test35-remote-path ()
"Check loooong `tramp-remote-path'."
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p))
(skip-unless (not (tramp--test-crypt-p)))
- ;; Since Emacs 27.1.
- (skip-unless (fboundp 'exec-path))
(let* ((tmp-name (tramp--test-make-temp-name))
(default-directory ert-remote-temporary-file-directory)
- (orig-exec-path (with-no-warnings (exec-path)))
+ (orig-exec-path (exec-path))
(tramp-remote-path tramp-remote-path)
(orig-tramp-remote-path tramp-remote-path)
path)
@@ -5995,20 +6179,19 @@ INPUT, if non-nil, is a string sent to the process."
(setq tramp-remote-path
(cons (file-remote-p tmp-name 'localname) tramp-remote-path))
(tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password)
- (should (equal (with-no-warnings (exec-path)) orig-exec-path))
+ (should (equal (exec-path) orig-exec-path))
(setq tramp-remote-path orig-tramp-remote-path)
;; Double entries are removed.
(setq tramp-remote-path (append '("/" "/") tramp-remote-path))
(tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password)
- (should
- (equal (with-no-warnings (exec-path)) (cons "/" orig-exec-path)))
+ (should (equal (exec-path) (cons "/" orig-exec-path)))
(setq tramp-remote-path orig-tramp-remote-path)
;; We make a super long `tramp-remote-path'.
(make-directory tmp-name)
(should (file-directory-p tmp-name))
- (while (< (length (mapconcat #'identity orig-exec-path ":")) 5000)
+ (while (tramp-compat-length< (string-join orig-exec-path ":") 5000)
(let ((dir (make-temp-file (file-name-as-directory tmp-name) 'dir)))
(should (file-directory-p dir))
(setq tramp-remote-path
@@ -6020,19 +6203,19 @@ INPUT, if non-nil, is a string sent to the process."
`(,(file-remote-p dir 'localname))
(last orig-exec-path)))))
(tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password)
- (should (equal (with-no-warnings (exec-path)) orig-exec-path))
+ (should (equal (exec-path) orig-exec-path))
;; Ignore trailing newline.
(setq path (substring (shell-command-to-string "echo $PATH") nil -1))
;; The shell doesn't handle such long strings.
- (when (<= (length path)
- (tramp-get-connection-property
- tramp-test-vec "pipe-buf" 4096))
+ (unless (tramp-compat-length>
+ path
+ (tramp-get-connection-property
+ tramp-test-vec "pipe-buf" 4096))
;; The last element of `exec-path' is `exec-directory'.
(should
- (string-equal
- path (mapconcat #'identity (butlast orig-exec-path) ":"))))
+ (string-equal path (string-join (butlast orig-exec-path) ":"))))
;; The shell "sh" shall always exist.
- (should (apply #'executable-find '("sh" remote))))
+ (should (executable-find "sh" 'remote)))
;; Cleanup.
(tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password)
@@ -6152,7 +6335,7 @@ INPUT, if non-nil, is a string sent to the process."
(string-equal
(make-auto-save-file-name)
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(format "#%s#" (file-name-nondirectory tmp-name1))
ert-remote-temporary-file-directory))))))
@@ -6177,7 +6360,7 @@ INPUT, if non-nil, is a string sent to the process."
("|" . "__")
("[" . "_l")
("]" . "_r"))
- (tramp-compat-file-name-unquote tmp-name1)))
+ (file-name-unquote tmp-name1)))
tmp-name2)))
(should (file-directory-p tmp-name2)))))
@@ -6201,7 +6384,7 @@ INPUT, if non-nil, is a string sent to the process."
("|" . "__")
("[" . "_l")
("]" . "_r"))
- (tramp-compat-file-name-unquote tmp-name1)))
+ (file-name-unquote tmp-name1)))
tmp-name2)))
(should (file-directory-p tmp-name2)))))
@@ -6257,10 +6440,13 @@ INPUT, if non-nil, is a string sent to the process."
(find-backup-file-name tmp-name1)
(list
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(format "%s~" (file-name-nondirectory tmp-name1))
- ert-remote-temporary-file-directory)))))))
+ ert-remote-temporary-file-directory))))))
+
+ ;; Cleanup. Nothing to do yet.
+ nil)
(unwind-protect
;; Map `backup-directory-alist'.
@@ -6271,7 +6457,7 @@ INPUT, if non-nil, is a string sent to the process."
(find-backup-file-name tmp-name1)
(list
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(format
"%s~"
@@ -6300,7 +6486,7 @@ INPUT, if non-nil, is a string sent to the process."
(find-backup-file-name tmp-name1)
(list
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(format
"%s~"
@@ -6331,7 +6517,7 @@ INPUT, if non-nil, is a string sent to the process."
(find-backup-file-name tmp-name1)
(list
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(expand-file-name
(format
"%s~"
@@ -6388,7 +6574,7 @@ INPUT, if non-nil, is a string sent to the process."
(skip-unless (and (fboundp 'file-locked-p) (fboundp 'make-lock-file-name)))
;; `lock-file', `unlock-file', `file-locked-p' and
- ;; `make-lock-file-name' exists since Emacs 28.1. We don't want to
+ ;; `make-lock-file-name' exist since Emacs 28.1. We don't want to
;; see compiler warnings for older Emacsen.
(dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
(let ((tmp-name1 (tramp--test-make-temp-name nil quoted))
@@ -6422,11 +6608,33 @@ INPUT, if non-nil, is a string sent to the process."
(save-buffer)
(should-not (buffer-modified-p)))
(should-not (with-no-warnings (file-locked-p tmp-name1)))
+
+ ;; `kill-buffer' removes the lock.
(with-no-warnings (lock-file tmp-name1))
(should (eq (with-no-warnings (file-locked-p tmp-name1)) t))
+ (with-temp-buffer
+ (set-visited-file-name tmp-name1)
+ (insert "foo")
+ (should (buffer-modified-p))
+ (cl-letf (((symbol-function #'read-from-minibuffer)
+ (lambda (&rest _args) "yes")))
+ (kill-buffer)))
+ (should-not (with-no-warnings (file-locked-p tmp-name1)))
+ ;; `kill-buffer' should not remove the lock when the
+ ;; connection is broken. See Bug#61663.
+ (with-no-warnings (lock-file tmp-name1))
+ (should (eq (with-no-warnings (file-locked-p tmp-name1)) t))
+ (with-temp-buffer
+ (set-visited-file-name tmp-name1)
+ (insert "foo")
+ (should (buffer-modified-p))
+ (tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password)
+ (cl-letf (((symbol-function #'read-from-minibuffer)
+ (lambda (&rest _args) "yes")))
+ (kill-buffer)))
;; A new connection changes process id, and also the
- ;; lockname contents.
+ ;; lock file contents. But it still exists.
(tramp-cleanup-connection tramp-test-vec 'keep-debug 'keep-password)
(should (stringp (with-no-warnings (file-locked-p tmp-name1))))
@@ -6589,7 +6797,6 @@ INPUT, if non-nil, is a string sent to the process."
(tramp-cleanup-connection
tramp-test-vec 'keep-debug 'keep-password)))))))
-;; The functions were introduced in Emacs 26.1.
(ert-deftest tramp-test40-make-nearby-temp-file ()
"Check `make-nearby-temp-file' and `temporary-file-directory'."
(skip-unless (tramp--test-enabled))
@@ -6621,12 +6828,6 @@ INPUT, if non-nil, is a string sent to the process."
(delete-directory tmp-file)
(should-not (file-exists-p tmp-file))))
-(defun tramp--test-emacs27-p ()
- "Check for Emacs version >= 27.1.
-Some semantics has been changed for there, without new functions
-or variables, so we check the Emacs version directly."
- (>= emacs-major-version 27))
-
(defun tramp--test-emacs28-p ()
"Check for Emacs version >= 28.1.
Some semantics has been changed for there, without new functions
@@ -6661,7 +6862,7 @@ This is used in tests which we don't want to tag
:body nil :tags '(:tramp-asynchronous-processes))))
;; tramp-adb.el cannot apply multi-byte commands.
(not (and (tramp--test-adb-p)
- (string-match-p (tramp-compat-rx multibyte) default-directory)))))
+ (string-match-p (rx multibyte) default-directory)))))
(defun tramp--test-crypt-p ()
"Check, whether the remote directory is encrypted."
@@ -6826,10 +7027,7 @@ This requires restrictions of file name syntax."
(defun tramp--test-check-files (&rest files)
"Run a simple but comprehensive test over every file in FILES."
- ;; `filename-non-special' has been fixed in Emacs 27.1, see Bug#29579.
- (dolist (quoted
- (if (and (tramp--test-expensive-test-p) (tramp--test-emacs27-p))
- '(nil t) '(nil)))
+ (dolist (quoted (if (tramp--test-expensive-test-p) '(nil t) '(nil)))
;; We must use `file-truename' for the temporary directory,
;; because it could be located on a symlinked directory. This
;; would let the test fail.
@@ -6879,7 +7077,7 @@ This requires restrictions of file name syntax."
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(file-attribute-type (file-attributes file3)))
(file-remote-p (file-truename file1) 'localname)))
;; Check file contents.
@@ -6970,14 +7168,14 @@ This requires restrictions of file name syntax."
(should
(string-equal
(caar (directory-files-and-attributes
- file1 nil (tramp-compat-rx (literal elt1))))
+ file1 nil (rx (literal elt1))))
elt1))
(should
(string-equal
(funcall
- (if quoted #'tramp-compat-file-name-quote #'identity)
+ (if quoted #'file-name-quote #'identity)
(cadr (car (directory-files-and-attributes
- file1 nil (tramp-compat-rx (literal elt1))))))
+ file1 nil (rx (literal elt1))))))
(file-remote-p (file-truename file2) 'localname)))
(delete-file file3)
(should-not (file-exists-p file3))))
@@ -6986,15 +7184,7 @@ This requires restrictions of file name syntax."
;; `default-directory' with special characters. See
;; Bug#53846.
(when (and (tramp--test-expensive-test-p)
- (tramp--test-supports-processes-p)
- ;; Prior Emacs 27, `shell-file-name' was
- ;; hard coded as "/bin/sh" for remote
- ;; processes in Emacs. That doesn't work
- ;; for tramp-adb.el. tramp-sshfs.el times
- ;; out for older Emacsen, reason unknown.
- (or (and (not (tramp--test-adb-p))
- (not (tramp--test-sshfs-p)))
- (tramp--test-emacs27-p)))
+ (tramp--test-supports-processes-p))
(let ((default-directory file1))
(dolist (this-shell-command
(append
@@ -7032,7 +7222,7 @@ This requires restrictions of file name syntax."
(goto-char (point-min))
(should
(re-search-forward
- (tramp-compat-rx
+ (rx
bol (literal envvar)
"=" (literal (getenv envvar)) eol))))))))
@@ -7103,7 +7293,7 @@ This requires restrictions of file name syntax."
;; Simplify test in order to speed up.
(apply #'tramp--test-check-files
(if (tramp--test-expensive-test-p)
- files (list (mapconcat #'identity files ""))))))
+ files (list (string-join files ""))))))
(tramp--test-deftest-with-stat tramp-test41-special-characters)
@@ -7152,6 +7342,9 @@ This requires restrictions of file name syntax."
;; Use all available language specific snippets.
(lambda (x)
(and
+ ;; The "Oriya" and "Odia" languages use some problematic
+ ;; composition characters.
+ (not (member (car x) '("Oriya" "Odia")))
(stringp (setq x (eval (get-language-info (car x) 'sample-text) t)))
;; Filter out strings which use unencodable characters.
(not (and (or (tramp--test-gvfs-p) (tramp--test-smb-p))
@@ -7178,23 +7371,47 @@ This requires restrictions of file name syntax."
(ert-deftest tramp-test43-file-system-info ()
"Check that `file-system-info' returns proper values."
(skip-unless (tramp--test-enabled))
- ;; Since Emacs 27.1.
- (skip-unless (fboundp 'file-system-info))
- ;; `file-system-info' exists since Emacs 27.1. We don't want to see
- ;; compiler warnings for older Emacsen.
- (when-let ((fsi (with-no-warnings
- (file-system-info ert-remote-temporary-file-directory))))
+ (when-let ((fsi (file-system-info ert-remote-temporary-file-directory)))
(should (consp fsi))
- (should (= (length fsi) 3))
+ (should (tramp-compat-length= fsi 3))
(dotimes (i (length fsi))
(should (natnump (or (nth i fsi) 0))))))
-;; `tramp-test44-asynchronous-requests' could be blocked. So we set a
+;; `file-user-uid' was introduced in Emacs 30.1.
+(ert-deftest tramp-test44-file-user-uid ()
+ "Check that `file-user-uid' and `tramp-get-remote-*' return proper values."
+ (skip-unless (tramp--test-enabled))
+
+ (let ((default-directory ert-remote-temporary-file-directory))
+ ;; `file-user-uid' exists since Emacs 30.1. We don't want to see
+ ;; compiler warnings for older Emacsen.
+ (when (fboundp 'file-user-uid)
+ (should (integerp (with-no-warnings (file-user-uid)))))
+
+ (with-parsed-tramp-file-name default-directory nil
+ (should (or (integerp (tramp-get-remote-uid v 'integer))
+ (null (tramp-get-remote-uid v 'integer))))
+ (should (or (stringp (tramp-get-remote-uid v 'string))
+ (null (tramp-get-remote-uid v 'string))))
+
+ (should (or (integerp (tramp-get-remote-gid v 'integer))
+ (null (tramp-get-remote-gid v 'integer))))
+ (should (or (stringp (tramp-get-remote-gid v 'string))
+ (null (tramp-get-remote-gid v 'string))))
+
+ (when-let ((groups (tramp-get-remote-groups v 'integer)))
+ (should (consp groups))
+ (dolist (group groups) (should (integerp group))))
+ (when-let ((groups (tramp-get-remote-groups v 'string)))
+ (should (consp groups))
+ (dolist (group groups) (should (stringp group)))))))
+
+;; `tramp-test45-asynchronous-requests' could be blocked. So we set a
;; timeout of 300 seconds, and we send a SIGUSR1 signal after 300
;; seconds. Similar check is performed in the timer function.
(defconst tramp--test-asynchronous-requests-timeout 300
- "Timeout for `tramp-test44-asynchronous-requests'.")
+ "Timeout for `tramp-test45-asynchronous-requests'.")
(defmacro tramp--test-with-proper-process-name-and-buffer (proc &rest body)
"Set \"process-name\" and \"process-buffer\" connection properties.
@@ -7230,20 +7447,18 @@ This is needed in timer functions as well as process filters and sentinels."
(tramp-flush-connection-property v "process-buffer")))))
;; This test is inspired by Bug#16928.
-(ert-deftest tramp-test44-asynchronous-requests ()
+(ert-deftest tramp-test45-asynchronous-requests ()
"Check parallel asynchronous requests.
Such requests could arrive from timers, process filters and
process sentinels. They shall not disturb each other."
- :tags (append '(:expensive-test :tramp-asynchronous-processes)
- (and (or (getenv "EMACS_HYDRA_CI")
- (getenv "EMACS_EMBA_CI"))
- '(:unstable)))
+ ;; :tags (append '(:expensive-test :tramp-asynchronous-processes)
+ ;; (and (or (getenv "EMACS_HYDRA_CI")
+ ;; (getenv "EMACS_EMBA_CI"))
+ ;; '(:unstable)))
+ ;; It doesn't work sufficiently.
+ :tags '(:expensive-test :tramp-asynchronous-processes :unstable)
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-supports-processes-p))
- ;; Prior Emacs 27, `shell-file-name' was hard coded as "/bin/sh" for
- ;; remote processes in Emacs. That doesn't work for tramp-adb.el.
- (when (tramp--test-adb-p)
- (skip-unless (tramp--test-emacs27-p)))
(skip-unless (not (tramp--test-container-p)))
(skip-unless (not (tramp--test-telnet-p)))
(skip-unless (not (tramp--test-sshfs-p)))
@@ -7401,7 +7616,7 @@ process sentinels. They shall not disturb each other."
(unless (process-live-p proc)
(setq buffers (delq buf buffers))))))
- ;; Checks. All process output shall exists in the
+ ;; Checks. All process output shall exist in the
;; respective buffers. All created files shall be
;; deleted.
(tramp--test-message "Check %s" (current-time-string))
@@ -7427,10 +7642,10 @@ process sentinels. They shall not disturb each other."
(ignore-errors (cancel-timer timer))
(ignore-errors (delete-directory tmp-name 'recursive))))))
-;; (tramp--test-deftest-direct-async-process tramp-test44-asynchronous-requests
+;; (tramp--test-deftest-direct-async-process tramp-test45-asynchronous-requests
;; 'unstable)
-(ert-deftest tramp-test45-dired-compress-file ()
+(ert-deftest tramp-test46-dired-compress-file ()
"Check that Tramp (un)compresses normal files."
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p))
@@ -7451,7 +7666,7 @@ process sentinels. They shall not disturb each other."
(should (string= tmp-name (dired-get-filename)))
(delete-file tmp-name)))
-(ert-deftest tramp-test45-dired-compress-dir ()
+(ert-deftest tramp-test46-dired-compress-dir ()
"Check that Tramp (un)compresses directories."
(skip-unless (tramp--test-enabled))
(skip-unless (tramp--test-sh-p))
@@ -7473,7 +7688,7 @@ process sentinels. They shall not disturb each other."
(delete-directory tmp-name)
(delete-file (concat tmp-name ".tar.gz"))))
-(ert-deftest tramp-test46-read-password ()
+(ert-deftest tramp-test47-read-password ()
"Check Tramp password handling."
:tags '(:expensive-test)
(skip-unless (tramp--test-enabled))
@@ -7533,7 +7748,7 @@ process sentinels. They shall not disturb each other."
(should (file-exists-p ert-remote-temporary-file-directory)))))))))
;; This test is inspired by Bug#29163.
-(ert-deftest tramp-test47-auto-load ()
+(ert-deftest tramp-test48-auto-load ()
"Check that Tramp autoloads properly."
;; If we use another syntax but `default', Tramp is already loaded
;; due to the `tramp-change-syntax' call.
@@ -7549,7 +7764,7 @@ process sentinels. They shall not disturb each other."
ert-remote-temporary-file-directory)))
(should
(string-match-p
- (rx "Tramp loaded: t" (+ (any "\n\r")))
+ (rx "Tramp loaded: t" (+ (any "\r\n")))
(shell-command-to-string
(format
"%s -batch -Q -L %s --eval %s"
@@ -7558,7 +7773,7 @@ process sentinels. They shall not disturb each other."
(mapconcat #'shell-quote-argument load-path " -L ")
(shell-quote-argument code)))))))
-(ert-deftest tramp-test47-delay-load ()
+(ert-deftest tramp-test48-delay-load ()
"Check that Tramp is loaded lazily, only when needed."
;; Tramp is neither loaded at Emacs startup, nor when completing a
;; non-Tramp file name like "/foo". Completing a Tramp-alike file
@@ -7576,10 +7791,10 @@ process sentinels. They shall not disturb each other."
(dolist (tm '(t nil))
(should
(string-match-p
- (tramp-compat-rx
- "Tramp loaded: nil" (+ (any "\n\r"))
- "Tramp loaded: nil" (+ (any "\n\r"))
- "Tramp loaded: " (literal (symbol-name tm)) (+ (any "\n\r")))
+ (rx
+ "Tramp loaded: nil" (+ (any "\r\n"))
+ "Tramp loaded: nil" (+ (any "\r\n"))
+ "Tramp loaded: " (literal (symbol-name tm)) (+ (any "\r\n")))
(shell-command-to-string
(format
"%s -batch -Q -L %s --eval %s"
@@ -7588,7 +7803,7 @@ process sentinels. They shall not disturb each other."
(mapconcat #'shell-quote-argument load-path " -L ")
(shell-quote-argument (format code tm)))))))))
-(ert-deftest tramp-test47-recursive-load ()
+(ert-deftest tramp-test48-recursive-load ()
"Check that Tramp does not fail due to recursive load."
(skip-unless (tramp--test-enabled))
@@ -7612,7 +7827,7 @@ process sentinels. They shall not disturb each other."
(mapconcat #'shell-quote-argument load-path " -L ")
(shell-quote-argument code))))))))
-(ert-deftest tramp-test47-remote-load-path ()
+(ert-deftest tramp-test48-remote-load-path ()
"Check that Tramp autoloads its packages with remote `load-path'."
;; `tramp-cleanup-all-connections' is autoloaded from tramp-cmds.el.
;; It shall still work, when a remote file name is in the
@@ -7624,7 +7839,7 @@ process sentinels. They shall not disturb each other."
(tramp-cleanup-all-connections))"))
(should
(string-match-p
- (tramp-compat-rx
+ (rx
"Loading "
(literal
(expand-file-name
@@ -7637,7 +7852,7 @@ process sentinels. They shall not disturb each other."
(mapconcat #'shell-quote-argument load-path " -L ")
(shell-quote-argument code)))))))
-(ert-deftest tramp-test48-unload ()
+(ert-deftest tramp-test49-unload ()
"Check that Tramp and its subpackages unload completely.
Since it unloads Tramp, it shall be the last test to run."
:tags '(:expensive-test)
@@ -7675,6 +7890,8 @@ Since it unloads Tramp, it shall be the last test to run."
;; `tramp-register-archive-file-name-handler' is autoloaded
;; in Emacs < 29.1.
(not (eq 'tramp-register-archive-file-name-handler x))
+ ;; `tramp-compat-rx' is autoloaded in Emacs 29.1.
+ (not (eq 'tramp-compat-rx x))
(not (string-match-p
(rx bol "tramp" (? "-archive") (** 1 2 "-") "test")
(symbol-name x)))
@@ -7736,19 +7953,19 @@ If INTERACTIVE is non-nil, the tests are run interactively."
;; * file-name-case-insensitive-p
;; * memory-info
;; * tramp-get-home-directory
-;; * tramp-get-remote-gid
-;; * tramp-get-remote-groups
-;; * tramp-get-remote-uid
;; * tramp-set-file-uid-gid
;; * Work on skipped tests. Make a comment, when it is impossible.
;; * Revisit expensive tests, once problems in `tramp-error' are solved.
;; * Fix `tramp-test06-directory-file-name' for "ftp".
+;; * Check, why a process filter t doesn't work in
+;; `tramp-test29-start-file-process' and
+;; `tramp-test30-make-process'.
;; * Implement `tramp-test31-interrupt-process' and
;; `tramp-test31-signal-process' for "adb", "sshfs" and for direct
;; async processes. Check, why they don't run stable.
;; * Check, why direct async processes do not work for
-;; `tramp-test44-asynchronous-requests'.
+;; `tramp-test45-asynchronous-requests'.
(provide 'tramp-tests)
diff --git a/test/lisp/proced-tests.el b/test/lisp/proced-tests.el
new file mode 100644
index 00000000000..1f475665298
--- /dev/null
+++ b/test/lisp/proced-tests.el
@@ -0,0 +1,122 @@
+;;; proced-tests.el --- Test suite for proced.el -*- lexical-binding: t -*-
+
+;; Copyright (C) 2022 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+(require 'ert)
+(require 'proced)
+(require 'thingatpt)
+
+(cl-defmacro proced--within-buffer (format filter &body body)
+ "Execute BODY within a proced buffer using format FORMAT and filter FILTER."
+ `(let ((proced-format ,format)
+ (proced-filter ,filter)
+ (proced-auto-update-flag nil)
+ (inhibit-message t))
+ (proced)
+ (unwind-protect
+ (with-current-buffer "*Proced*"
+ ,@body)
+ (kill-buffer "*Proced*"))))
+
+(defun proced--assert-emacs-pid-in-buffer ()
+ "Fail unless the process ID of the current Emacs process exists in buffer."
+ (should (string-match-p
+ (number-to-string (emacs-pid))
+ (buffer-substring-no-properties (point-min) (point-max)))))
+
+(defun proced--move-to-column (attribute)
+ "Move to the column under ATTRIBUTE in the current proced buffer."
+ (move-to-column (string-match attribute proced-header-line)))
+
+(ert-deftest proced-format-test ()
+ (dolist (format '(short medium long verbose))
+ (proced--within-buffer
+ format
+ 'user
+ (proced--assert-emacs-pid-in-buffer))))
+
+(ert-deftest proced-update-test ()
+ (proced--within-buffer
+ 'short
+ 'user
+ (proced-update)
+ (proced--assert-emacs-pid-in-buffer)))
+
+(ert-deftest proced-revert-test ()
+ (proced--within-buffer
+ 'short
+ 'user
+ (proced-revert)
+ (proced--assert-emacs-pid-in-buffer)))
+
+(ert-deftest proced-color-test ()
+ (let ((proced-enable-color-flag t))
+ (proced--within-buffer
+ 'short
+ 'user
+ (proced--assert-emacs-pid-in-buffer))))
+
+(ert-deftest proced-refine-test ()
+ ;;(skip-unless (memq system-type '(gnu/linux gnu/kfreebsd darwin)))
+ (proced--within-buffer
+ 'medium
+ 'user
+ ;; When refining on PID for process A, a process is kept if and only
+ ;; if its PID are the same as process A, which more or less guarentees
+ ;; the refinement will remove some processes.
+ (proced--move-to-column "PID")
+ (let ((pid (word-at-point)))
+ (proced-refine)
+ (while (not (eobp))
+ (proced--move-to-column "PID")
+ (should (string= pid (word-at-point)))
+ (forward-line)))))
+
+(ert-deftest proced-refine-with-update-test ()
+ (proced--within-buffer
+ 'medium
+ 'user
+ (proced--move-to-column "PID")
+ (let ((pid (word-at-point)))
+ (proced-refine)
+ (proced-update t)
+ (while (not (eobp))
+ (proced--move-to-column "PID")
+ (should (string= pid (word-at-point)))
+ (forward-line)))))
+
+(ert-deftest proced-update-preserves-pid-at-point-test ()
+ (proced--within-buffer
+ 'medium
+ 'user
+ (goto-char (point-min))
+ (search-forward (number-to-string (emacs-pid)))
+ (proced--move-to-column "PID")
+ (save-window-excursion
+ (let ((pid (proced-pid-at-point))
+ (new-window (split-window))
+ (old-window (get-buffer-window)))
+ (select-window new-window)
+ (with-current-buffer "*Proced*"
+ (proced-update t t))
+ (select-window old-window)
+ (should (= pid (proced-pid-at-point)))))))
+
+(provide 'proced-tests)
+;;; proced-tests.el ends here
diff --git a/test/lisp/progmodes/eglot-tests.el b/test/lisp/progmodes/eglot-tests.el
index 7ce0116636d..518f8810bdf 100644
--- a/test/lisp/progmodes/eglot-tests.el
+++ b/test/lisp/progmodes/eglot-tests.el
@@ -31,23 +31,20 @@
;; Some of these tests rely on the GNU ELPA package company.el and
;; yasnippet.el being available.
-;; Some of the tests require access to a remote host files. Since
-;; this could be problematic, a mock-up connection method "mock" is
-;; used. Emulating a remote connection, it simply calls "sh -i".
-;; Tramp's file name handlers still run, so this test is sufficient
-;; except for connection establishing.
-
-;; If you want to test a real Tramp connection, set
-;; $REMOTE_TEMPORARY_FILE_DIRECTORY to a suitable value in order to
-;; overwrite the default value. If you want to skip tests accessing a
-;; remote host, set this environment variable to "/dev/null" or
-;; whatever is appropriate on your system.
+;; Some of the tests require access to a remote host files, which is
+;; mocked in the simplest case. If you want to test a real Tramp
+;; connection, override $REMOTE_TEMPORARY_FILE_DIRECTORY to a suitable
+;; value (FIXME: like what?) in order to overwrite the default value.
+;;
+;; IMPORTANT: Since Eglot is a :core ELPA package, these tests are
+;; supposed to run on Emacsen down to 26.3. Do not use bleeding-edge
+;; functionality not compatible with that Emacs version.
;;; Code:
(require 'eglot)
(require 'cl-lib)
(require 'ert)
-(require 'tramp) ; must be prior ert-x
+(require 'tramp)
(require 'ert-x) ; ert-simulate-command
(require 'edebug)
(require 'cc-mode) ; c-mode-hook
@@ -58,73 +55,66 @@
;;; Helpers
+(defun eglot--test-message (format &rest args)
+ "Message out with FORMAT with ARGS."
+ (message "[eglot-tests] %s"
+ (apply #'format format args)))
+
(defmacro eglot--with-fixture (fixture &rest body)
- "Setup FIXTURE, call BODY, teardown FIXTURE.
+ "Set up FIXTURE, call BODY, tear down FIXTURE.
FIXTURE is a list. Its elements are of the form (FILE . CONTENT)
to create a readable FILE with CONTENT. FILE may be a directory
name and CONTENT another (FILE . CONTENT) list to specify a
-directory hierarchy. FIXTURE's elements can also be (SYMBOL
-VALUE) meaning SYMBOL should be bound to VALUE during BODY and
-then restored."
+directory hierarchy."
(declare (indent 1) (debug t))
- `(eglot--call-with-fixture
- ,fixture #'(lambda () ,@body)))
+ `(eglot--call-with-fixture ,fixture (lambda () ,@body)))
(defun eglot--make-file-or-dir (ass)
- (let ((file-or-dir-name (car ass))
+ (let ((file-or-dir-name (expand-file-name (car ass)))
(content (cdr ass)))
(cond ((listp content)
(make-directory file-or-dir-name 'parents)
- (let ((default-directory (concat default-directory "/" file-or-dir-name)))
+ (let ((default-directory (file-name-as-directory file-or-dir-name)))
(mapcan #'eglot--make-file-or-dir content)))
((stringp content)
- (with-temp-buffer
- (insert content)
- (write-region nil nil file-or-dir-name nil 'nomessage))
- (list (expand-file-name file-or-dir-name)))
+ (with-temp-file file-or-dir-name
+ (insert content))
+ (list file-or-dir-name))
(t
(eglot--error "Expected a string or a directory spec")))))
(defun eglot--call-with-fixture (fixture fn)
"Helper for `eglot--with-fixture'. Run FN under FIXTURE."
- (let* ((fixture-directory (make-nearby-temp-file "eglot--fixture" t))
- (default-directory fixture-directory)
- file-specs created-files
- syms-to-restore
+ (let* ((fixture-directory (make-nearby-temp-file "eglot--fixture-" t))
+ (default-directory (file-name-as-directory fixture-directory))
+ created-files
new-servers
test-body-successful-p)
- (dolist (spec fixture)
- (cond ((symbolp spec)
- (push (cons spec (symbol-value spec)) syms-to-restore)
- (set spec nil))
- ((symbolp (car spec))
- (push (cons (car spec) (symbol-value (car spec))) syms-to-restore)
- (set (car spec) (cadr spec)))
- ((stringp (car spec)) (push spec file-specs))))
+ (eglot--test-message "[%s]: test start" (ert-test-name (ert-running-test)))
(unwind-protect
- (let* ((process-environment
- (append
- `(;; Set XDF_CONFIG_HOME to /dev/null to prevent
- ;; user-configuration to have an influence on
- ;; language servers. (See github#441)
- "XDG_CONFIG_HOME=/dev/null"
- ;; ... on the flip-side, a similar technique by
- ;; Emacs's test makefiles means that HOME is
- ;; spoofed to /nonexistent, or sometimes /tmp.
- ;; This breaks some common installations for LSP
- ;; servers like pylsp, rust-analyzer making these
- ;; tests mostly useless, so we hack around it here
- ;; with a great big hack.
- ,(format "HOME=%s"
- (expand-file-name (format "~%s" (user-login-name)))))
- process-environment))
- (eglot-server-initialized-hook
- (lambda (server) (push server new-servers))))
- (setq created-files (mapcan #'eglot--make-file-or-dir file-specs))
+ (let ((process-environment
+ `(;; Set XDG_CONFIG_HOME to /dev/null to prevent
+ ;; user-configuration influencing language servers
+ ;; (see github#441).
+ ,(format "XDG_CONFIG_HOME=%s" null-device)
+ ;; ... on the flip-side, a similar technique in
+ ;; Emacs's `test/Makefile' spoofs HOME as
+ ;; /nonexistent (and as `temporary-file-directory' in
+ ;; `ert-remote-temporary-file-directory').
+ ;; This breaks some common installations for LSP
+ ;; servers like rust-analyzer, making these tests
+ ;; mostly useless, so we hack around it here with a
+ ;; great big hack.
+ ,(format "HOME=%s"
+ (expand-file-name (format "~%s" (user-login-name))))
+ ,@process-environment))
+ (eglot-server-initialized-hook
+ (lambda (server) (push server new-servers))))
+ (setq created-files (mapcan #'eglot--make-file-or-dir fixture))
(prog1 (funcall fn)
(setq test-body-successful-p t)))
- (eglot--message
- "Test body was %s" (if test-body-successful-p "OK" "A FAILURE"))
+ (eglot--test-message "[%s]: %s" (ert-test-name (ert-running-test))
+ (if test-body-successful-p "OK" "FAILED"))
(unwind-protect
(let ((eglot-autoreconnect nil))
(dolist (server new-servers)
@@ -133,8 +123,7 @@ then restored."
(eglot-shutdown
server nil 3 (not test-body-successful-p))
(error
- (eglot--message "Non-critical shutdown error after test: %S"
- oops))))
+ (eglot--test-message "Non-critical cleanup error: %S" oops))))
(when (not test-body-successful-p)
;; We want to do this after the sockets have
;; shut down such that any pending data has been
@@ -147,24 +136,21 @@ then restored."
(jsonrpc-events-buffer server)))))
(cond (noninteractive
(dolist (buffer buffers)
- (eglot--message "%s:" (buffer-name buffer))
+ (eglot--test-message "contents of `%s':" (buffer-name buffer))
(princ (with-current-buffer buffer (buffer-string))
'external-debugging-output)))
(t
- (eglot--message "Preserved for inspection: %s"
- (mapconcat #'buffer-name buffers ", "))))))))
- (eglot--cleanup-after-test fixture-directory created-files syms-to-restore)))))
+ (eglot--test-message "Preserved for inspection: %s"
+ (mapconcat #'buffer-name buffers ", "))))))))
+ (eglot--cleanup-after-test fixture-directory created-files)))))
-(defun eglot--cleanup-after-test (fixture-directory created-files syms-to-restore)
+(defun eglot--cleanup-after-test (fixture-directory created-files)
(let ((buffers-to-delete
- (delete nil (mapcar #'find-buffer-visiting created-files))))
- (eglot--message "Killing %s, wiping %s, restoring %s"
- buffers-to-delete
- fixture-directory
- (mapcar #'car syms-to-restore))
- (cl-loop for (sym . val) in syms-to-restore
- do (set sym val))
- (dolist (buf buffers-to-delete) ;; have to save otherwise will get prompted
+ (delq nil (mapcar #'find-buffer-visiting created-files))))
+ (eglot--test-message "Killing %s, wiping %s"
+ buffers-to-delete
+ fixture-directory)
+ (dolist (buf buffers-to-delete) ;; Have to save otherwise will get prompted.
(with-current-buffer buf (save-buffer) (kill-buffer)))
(delete-directory fixture-directory 'recursive)
;; Delete Tramp buffers if needed.
@@ -249,12 +235,12 @@ then restored."
(advice-remove #'jsonrpc--log-event ',log-event-ad-sym))))
(cl-defmacro eglot--wait-for ((events-sym &optional (timeout 1) message) args &body body)
- "Spin until FN match in EVENTS-SYM, flush events after it.
-Pass TIMEOUT to `eglot--with-timeout'."
(declare (indent 2) (debug (sexp sexp sexp &rest form)))
`(eglot--with-timeout '(,timeout ,(or message
(format "waiting for:\n%s" (pp-to-string body))))
- (let ((event
+ (eglot--test-message "waiting for `%s'" (with-output-to-string
+ (mapc #'princ ',body)))
+ (let ((events
(cl-loop thereis (cl-loop for json in ,events-sym
for method = (plist-get json :method)
when (keywordp method)
@@ -268,16 +254,21 @@ Pass TIMEOUT to `eglot--with-timeout'."
collect json into before)
for i from 0
when (zerop (mod i 5))
- ;; do (eglot--message "still struggling to find in %s"
- ;; ,events-sym)
+ ;; do (eglot--test-message "still struggling to find in %s"
+ ;; ,events-sym)
do
;; `read-event' is essential to have the file
;; watchers come through.
- (read-event "[eglot] Waiting a bit..." nil 0.1)
+ (cond ((fboundp 'flush-standard-output)
+ (read-event nil nil 0.1) (princ ".")
+ (flush-standard-output))
+ (t
+ (read-event "." nil 0.1)))
(accept-process-output nil 0.1))))
- (setq ,events-sym (cdr event))
- (eglot--message "Event detected:\n%s"
- (pp-to-string (car event))))))
+ (setq ,events-sym (cdr events))
+ (cl-destructuring-bind (&key method id &allow-other-keys) (car events)
+ (eglot--test-message "detected: %s"
+ (or method (and id (format "id=%s" id))))))))
;; `rust-mode' is not a part of Emacs, so we define these two shims
;; which should be more than enough for testing.
@@ -304,6 +295,13 @@ Pass TIMEOUT to `eglot--with-timeout'."
(setq last-command-event char)
(call-interactively (key-binding (vector char))))
+(defun eglot--clangd-version ()
+ "Report on the clangd version used in various tests."
+ (let ((version (shell-command-to-string "clangd --version")))
+ (when (string-match "version[[:space:]]+\\([0-9.]*\\)"
+ version)
+ (match-string 1 version))))
+
;;; Unit tests
@@ -311,8 +309,7 @@ Pass TIMEOUT to `eglot--with-timeout'."
"Connect to eclipse.jdt.ls server."
(skip-unless (executable-find "jdtls"))
(eglot--with-fixture
- '(("project/src/main/java/foo" . (("Main.java" . "")))
- ("project/.git/" . nil))
+ '(("project/src/main/java/foo" . (("Main.java" . ""))))
(with-current-buffer
(eglot--find-file-noselect "project/src/main/java/foo/Main.java")
(eglot--sniffing (:server-notifications s-notifs)
@@ -431,7 +428,7 @@ Pass TIMEOUT to `eglot--with-timeout'."
(eglot--find-file-noselect "diag-project/main.c")
(eglot--sniffing (:server-notifications s-notifs)
(eglot--tests-connect)
- (eglot--wait-for (s-notifs 2)
+ (eglot--wait-for (s-notifs 10)
(&key _id method &allow-other-keys)
(string= method "textDocument/publishDiagnostics"))
(flymake-start)
@@ -441,16 +438,20 @@ Pass TIMEOUT to `eglot--with-timeout'."
(ert-deftest eglot-test-diagnostic-tags-unnecessary-code ()
"Test rendering of diagnostics tagged \"unnecessary\"."
- (skip-unless (executable-find "rust-analyzer"))
- (skip-unless (executable-find "cargo"))
+ (skip-unless (executable-find "clangd"))
+ (skip-unless (version<= "14" (eglot--clangd-version)))
(eglot--with-fixture
- '(("diagnostic-tag-project" .
- (("main.rs" .
- "fn main() -> () { let test=3; }"))))
+ `(("diag-project" .
+ (("main.cpp" . "int main(){float a = 42.2; return 0;}"))))
(with-current-buffer
- (eglot--find-file-noselect "diagnostic-tag-project/main.rs")
- (let ((eglot-server-programs '((rust-mode . ("rust-analyzer")))))
- (should (zerop (shell-command "cargo init")))
+ (eglot--find-file-noselect "diag-project/main.cpp")
+ (eglot--make-file-or-dir '(".git"))
+ (eglot--make-file-or-dir
+ `("compile_commands.json" .
+ ,(jsonrpc--json-encode
+ `[(:directory ,default-directory :command "/usr/bin/c++ -Wall -c main.cpp"
+ :file ,(expand-file-name "main.cpp"))])))
+ (let ((eglot-server-programs '((c++-mode . ("clangd")))))
(eglot--sniffing (:server-notifications s-notifs)
(eglot--tests-connect)
(eglot--wait-for (s-notifs 10)
@@ -462,11 +463,11 @@ Pass TIMEOUT to `eglot--with-timeout'."
(should (eq 'eglot-diagnostic-tag-unnecessary-face (face-at-point))))))))
(defun eglot--eldoc-on-demand ()
- ;; Trick Eldoc 1.1.0 into accepting on-demand calls.
+ ;; Trick ElDoc 1.1.0 into accepting on-demand calls.
(eldoc t))
(defun eglot--tests-force-full-eldoc ()
- ;; FIXME: This uses some Eldoc implementation defatils.
+ ;; FIXME: This uses some ElDoc implementation details.
(when (buffer-live-p eldoc--doc-buffer)
(with-current-buffer eldoc--doc-buffer
(let ((inhibit-read-only t))
@@ -652,7 +653,7 @@ int main() {
(should (string-match "^fprintf" (eglot--tests-force-full-eldoc))))))
(ert-deftest eglot-test-multiline-eldoc ()
- "Test Eldoc documentation from multiple osurces."
+ "Test ElDoc documentation from multiple osurces."
(skip-unless (executable-find "clangd"))
(eglot--with-fixture
`(("project" . (("coiso.c" .
@@ -704,8 +705,8 @@ int main() {
(should (zerop (shell-command "cargo init")))
(eglot--sniffing (:server-notifications s-notifs)
(should (eglot--tests-connect))
- (eglot--wait-for (s-notifs 10) (&key method &allow-other-keys)
- (string= method "textDocument/publishDiagnostics")))
+ (eglot--wait-for (s-notifs 20) (&key method &allow-other-keys)
+ (string= method "textDocument/publishDiagnostics")))
(goto-char (point-max))
(eglot--simulate-key-event ?.)
(should (looking-back "^ \\."))))))
@@ -770,33 +771,35 @@ int main() {
(should (= 4 (length (flymake--project-diagnostics))))))))))
(ert-deftest eglot-test-project-wide-diagnostics-rust-analyzer ()
- "Test diagnostics through multiple files in a TypeScript LSP."
+ "Test diagnostics through multiple files in rust-analyzer."
(skip-unless (executable-find "rust-analyzer"))
(skip-unless (executable-find "cargo"))
+ (skip-unless (executable-find "git"))
(eglot--with-fixture
'(("project" .
(("main.rs" .
- "fn main() -> () { let test=3; }")
+ "fn main() -> i32 { return 42.2;}")
("other-file.rs" .
"fn foo() -> () { let hi=3; }"))))
- (eglot--make-file-or-dir '(".git"))
(let ((eglot-server-programs '((rust-mode . ("rust-analyzer")))))
- ;; Open other-file, and see diagnostics arrive for main.rs
+ ;; Open other-file.rs, and see diagnostics arrive for main.rs,
+ ;; which we didn't open.
(with-current-buffer (eglot--find-file-noselect "project/other-file.rs")
+ (should (zerop (shell-command "git init")))
(should (zerop (shell-command "cargo init")))
(eglot--sniffing (:server-notifications s-notifs)
(eglot--tests-connect)
(flymake-start)
- (eglot--wait-for (s-notifs 10)
- (&key _id method &allow-other-keys)
- (string= method "textDocument/publishDiagnostics"))
- (let ((diags (flymake--project-diagnostics)))
- (should (= 2 (length diags)))
- ;; Check that we really get a diagnostic from main.rs, and
- ;; not from other-file.rs
- (should (string-suffix-p
- "main.rs"
- (flymake-diagnostic-buffer (car diags))))))))))
+ (eglot--wait-for (s-notifs 20)
+ (&key _id method params &allow-other-keys)
+ (and (string= method "textDocument/publishDiagnostics")
+ (string-suffix-p "main.rs" (plist-get params :uri))))
+ (let* ((diags (flymake--project-diagnostics)))
+ (should (cl-some (lambda (diag)
+ (let ((locus (flymake-diagnostic-buffer diag)))
+ (and (stringp (flymake-diagnostic-buffer diag))
+ (string-suffix-p "main.rs" locus))))
+ diags))))))))
(ert-deftest eglot-test-json-basic ()
"Test basic autocompletion in vscode-json-languageserver."
@@ -853,9 +856,9 @@ int main() {
(skip-unless (executable-find "clangd"))
(eglot--with-fixture
`(("project" . (("foo.c" . "int foo() {return 42;}")
- ("bar.c" . "int bar() {return 42;}")))
- (c-mode-hook (eglot-ensure)))
- (let (server)
+ ("bar.c" . "int bar() {return 42;}"))))
+ (let ((c-mode-hook '(eglot-ensure))
+ server)
;; need `ert-simulate-command' because `eglot-ensure'
;; relies on `post-command-hook'.
(with-current-buffer
@@ -1039,7 +1042,8 @@ int main() {
(cl-defmacro eglot--guessing-contact ((interactive-sym
prompt-args-sym
guessed-class-sym guessed-contact-sym
- &optional guessed-lang-id-sym)
+ &optional guessed-major-modes-sym
+ guessed-lang-ids-sym)
&body body)
"Guess LSP contact with `eglot--guessing-contact', evaluate BODY.
@@ -1049,10 +1053,10 @@ BODY is evaluated twice, with INTERACTIVE bound to the boolean passed to
If the user would have been prompted, PROMPT-ARGS-SYM is bound to
the list of arguments that would have been passed to
`read-shell-command', else nil. GUESSED-CLASS-SYM,
-GUESSED-CONTACT-SYM and GUESSED-LANG-ID-SYM are bound to the
-useful return values of `eglot--guess-contact'. Unless the
-server program evaluates to \"a-missing-executable.exe\", this
-macro will assume it exists."
+GUESSED-CONTACT-SYM, GUESSED-LANG-IDS-SYM and
+GUESSED-MAJOR-MODES-SYM are bound to the useful return values of
+`eglot--guess-contact'. Unless the server program evaluates to
+\"a-missing-executable.exe\", this macro will assume it exists."
(declare (indent 1) (debug t))
(let ((i-sym (cl-gensym)))
`(dolist (,i-sym '(nil t))
@@ -1068,8 +1072,9 @@ macro will assume it exists."
`(lambda (&rest args) (setq ,prompt-args-sym args) "")
`(lambda (&rest _dummy) ""))))
(cl-destructuring-bind
- (_ _ ,guessed-class-sym ,guessed-contact-sym
- ,(or guessed-lang-id-sym '_))
+ (,(or guessed-major-modes-sym '_)
+ _ ,guessed-class-sym ,guessed-contact-sym
+ ,(or guessed-lang-ids-sym '_))
(eglot--guess-contact ,i-sym)
,@body))))))
@@ -1164,16 +1169,17 @@ macro will assume it exists."
(ert-deftest eglot-test-server-programs-guess-lang ()
(let ((major-mode 'foo-mode))
(let ((eglot-server-programs '((foo-mode . ("prog-executable")))))
- (eglot--guessing-contact (_ nil _ _ guessed-lang)
- (should (equal guessed-lang "foo"))))
+ (eglot--guessing-contact (_ nil _ _ _ guessed-langs)
+ (should (equal guessed-langs '("foo")))))
(let ((eglot-server-programs '(((foo-mode :language-id "bar")
. ("prog-executable")))))
- (eglot--guessing-contact (_ nil _ _ guessed-lang)
- (should (equal guessed-lang "bar"))))
+ (eglot--guessing-contact (_ nil _ _ _ guessed-langs)
+ (should (equal guessed-langs '("bar")))))
(let ((eglot-server-programs '(((baz-mode (foo-mode :language-id "bar"))
. ("prog-executable")))))
- (eglot--guessing-contact (_ nil _ _ guessed-lang)
- (should (equal guessed-lang "bar"))))))
+ (eglot--guessing-contact (_ nil _ _ modes guessed-langs)
+ (should (equal guessed-langs '("bar" "baz")))
+ (should (equal modes '(foo-mode baz-mode)))))))
(defun eglot--glob-match (glob str)
(funcall (eglot--glob-compile glob t t) str))
@@ -1231,17 +1237,29 @@ macro will assume it exists."
(defvar tramp-histfile-override)
(defun eglot--call-with-tramp-test (fn)
+ (unless (>= emacs-major-version 27)
+ (ert-skip "Eglot Tramp support only on Emacs >= 27"))
;; Set up a Tramp method that’s just a shell so the remote host is
;; really just the local host.
- (let* ((tramp-remote-path (cons 'tramp-own-remote-path tramp-remote-path))
+ (let* ((tramp-remote-path (cons 'tramp-own-remote-path
+ tramp-remote-path))
(tramp-histfile-override t)
(tramp-allow-unsafe-temporary-files t)
(tramp-verbose 1)
- (temporary-file-directory ert-remote-temporary-file-directory)
+ (temporary-file-directory
+ (or (bound-and-true-p ert-remote-temporary-file-directory)
+ (prog1 (format "/mock::%s" temporary-file-directory)
+ (add-to-list
+ 'tramp-methods
+ '("mock"
+ (tramp-login-program "sh") (tramp-login-args (("-i")))
+ (tramp-direct-async ("-c")) (tramp-remote-shell "/bin/sh")
+ (tramp-remote-shell-args ("-c")) (tramp-connection-timeout 10)))
+ (add-to-list 'tramp-default-host-alist
+ `("\\`mock\\'" nil ,(system-name)))
+ (when (and noninteractive (not (file-directory-p "~/")))
+ (setenv "HOME" temporary-file-directory)))))
(default-directory temporary-file-directory))
- ;; We must check the remote LSP server. So far, just "clangd" is used.
- (unless (executable-find "clangd" 'remote)
- (ert-skip "Remote clangd not found"))
(funcall fn)))
(ert-deftest eglot-test-tramp-test ()
@@ -1257,7 +1275,7 @@ macro will assume it exists."
(ert-deftest eglot-test-path-to-uri-windows ()
(skip-unless (eq system-type 'windows-nt))
(should (string-prefix-p "file:///"
- (eglot--path-to-uri "c:/Users/Foo/bar.lisp")))
+ (eglot--path-to-uri "c:/Users/Foo/bar.lisp")))
(should (string-suffix-p "c%3A/Users/Foo/bar.lisp"
(eglot--path-to-uri "c:/Users/Foo/bar.lisp"))))
@@ -1287,8 +1305,9 @@ macro will assume it exists."
(should (eq (eglot-current-server) server))))))
(provide 'eglot-tests)
-;;; eglot-tests.el ends here
;; Local Variables:
;; checkdoc-force-docstrings-flag: nil
;; End:
+
+;;; eglot-tests.el ends here
diff --git a/test/lisp/progmodes/elisp-mode-tests.el b/test/lisp/progmodes/elisp-mode-tests.el
index 57b39a49801..5b6ef88dceb 100644
--- a/test/lisp/progmodes/elisp-mode-tests.el
+++ b/test/lisp/progmodes/elisp-mode-tests.el
@@ -1004,6 +1004,11 @@ evaluation of BODY."
(should (equal (elisp--xref-infer-namespace p6) 'function)))
(elisp-mode-test--with-buffer
+ (concat "(defclass child-class ({p1}parent-1 {p2}parent-2))\n")
+ (should (equal (elisp--xref-infer-namespace p1) 'function))
+ (should (equal (elisp--xref-infer-namespace p2) 'function)))
+
+ (elisp-mode-test--with-buffer
(concat "(require '{p1}alpha)\n"
"(fboundp '{p2}beta)\n"
"(boundp '{p3}gamma)\n"
diff --git a/test/lisp/progmodes/elixir-ts-mode-resources/indent.erts b/test/lisp/progmodes/elixir-ts-mode-resources/indent.erts
new file mode 100644
index 00000000000..9ad604e5198
--- /dev/null
+++ b/test/lisp/progmodes/elixir-ts-mode-resources/indent.erts
@@ -0,0 +1,350 @@
+Code:
+ (lambda ()
+ (elixir-ts-mode)
+ (indent-region (point-min) (point-max)))
+
+Point-Char: $
+
+Name: Basic modules
+
+=-=
+ defmodule Foobar do
+def bar() do
+"one"
+ end
+ end
+=-=
+defmodule Foobar do
+ def bar() do
+ "one"
+ end
+end
+=-=-=
+
+Name: Map
+
+=-=
+map = %{
+ "a" => 1,
+ "b" => 2
+}
+=-=-=
+
+Name: Map in function def
+
+=-=
+def foobar() do
+ %{
+ one: "one",
+ two: "two",
+ three: "three",
+ four: "four"
+ }
+end
+=-=-=
+
+Name: Map in tuple
+
+=-=
+def foo() do
+ {:ok,
+ %{
+ state
+ | extra_arguments: extra_arguments,
+ max_children: max_children,
+ max_restarts: max_restarts,
+ max_seconds: max_seconds,
+ strategy: strategy
+ }}
+end
+=-=-=
+
+Name: Nested maps
+
+=-=
+%{
+ foo: "bar",
+ bar: %{
+ foo: "bar"
+ }
+}
+
+def foo() do
+ %{
+ foo: "bar",
+ bar: %{
+ foo: "bar"
+ }
+ }
+end
+=-=-=
+
+Name: Block assignments
+
+=-=
+foo =
+ if true do
+ "yes"
+ else
+ "no"
+ end
+=-=-=
+
+Name: Function rescue
+
+=-=
+def foo do
+ "bar"
+rescue
+ e ->
+ "bar"
+end
+=-=-=
+
+Name: With statement
+=-=
+with one <- one(),
+ two <- two(),
+ {:ok, value} <- get_value(one, two) do
+ {:ok, value}
+else
+ {:error, %{"Message" => message}} ->
+ {:error, message}
+end
+=-=-=
+
+Name: Pipe statements with fn
+
+=-=
+[1, 2]
+|> Enum.map(fn num ->
+ num + 1
+end)
+=-=-=
+
+Name: Pipe statements stab clases
+
+=-=
+[1, 2]
+|> Enum.map(fn
+ x when x < 10 -> x * 2
+ x -> x * 3
+end)
+=-=-=
+
+Name: Pipe statements params
+
+=-=
+[1, 2]
+|> foobar(
+ :one,
+ :two,
+ :three,
+ :four
+)
+=-=-=
+
+Name: Parameter maps
+
+=-=
+def something(%{
+ one: :one,
+ two: :two
+ }) do
+ {:ok, "done"}
+end
+=-=-=
+
+Name: Binary operator in else block
+
+=-=
+defp foobar() do
+ if false do
+ :foo
+ else
+ :bar |> foo
+ end
+end
+=-=-=
+
+Name: Tuple indentation
+
+=-=
+tuple = {
+ :one,
+ :two
+}
+
+{
+ :one,
+ :two
+}
+=-=-=
+
+Name: Spec and method
+
+=-=
+@spec foobar(
+ t,
+ acc,
+ (one, something -> :bar | far),
+ (two -> :bar | far)
+ ) :: any()
+ when chunk: any
+def foobar(enumerable, acc, chunk_fun, after_fun) do
+ {_, {res, acc}} =
+ case after_fun.(acc) do
+ {:one, "one"} ->
+ "one"
+
+ {:two, "two"} ->
+ "two"
+ end
+end
+=-=-=
+
+Name: Spec with multi-line result
+
+=-=
+@type result ::
+ {:done, term}
+ | {:two}
+ | {:one}
+
+@type result ::
+ {
+ :done,
+ term
+ }
+ | {:two}
+ | {:one}
+
+@type boo_bar ::
+ (foo :: pos_integer, bar :: pos_integer -> any())
+
+@spec foo_bar(
+ t,
+ (foo -> any),
+ (() -> any) | (foo, foo -> boolean) | module()
+ ) :: any
+ when foo: any
+def foo(one, fun, other)
+=-=-=
+
+Name: String concatenation in call
+
+=-=
+IO.warn(
+ "one" <>
+ "two" <>
+ "bar"
+)
+
+IO.warn(
+ "foo" <>
+ "bar"
+)
+=-=-=
+
+Name: Incomplete tuple
+
+=-=
+map = {
+:foo
+
+=-=
+map = {
+ :foo
+
+=-=-=
+
+Name: Incomplete map
+
+=-=
+map = %{
+ "a" => "a",
+=-=-=
+
+Name: Incomplete list
+
+=-=
+map = [
+:foo
+
+=-=
+map = [
+ :foo
+
+=-=-=
+
+Name: String concatenation
+
+=-=
+"one" <>
+ "two" <>
+ "three" <>
+ "four"
+=-=-=
+
+Name: Tuple with same line first node
+
+=-=
+{:one,
+ :two}
+
+{:ok,
+ fn one ->
+ one
+ |> String.upcase(one)
+ end}
+=-=-=
+
+Name: Long tuple
+
+=-=
+{"January", "February", "March", "April", "May", "June", "July", "August", "September",
+ "October", "November", "December"}
+=-=-=
+
+Name: Embedded HEEx
+
+=-=
+ defmodule Foo do
+ def foo(assigns) do
+~H"""
+<span>
+text
+</span>
+"""
+ end
+ end
+=-=
+defmodule Foo do
+ def foo(assigns) do
+ ~H"""
+ <span>
+ text
+ </span>
+ """
+ end
+end
+=-=-=
+
+Code:
+ (lambda ()
+ (elixir-ts-mode)
+ (newline)
+ (indent-for-tab-command))
+
+Name: New list item
+
+=-=
+[
+ :foo,$
+]
+=-=
+[
+ :foo,
+ $
+]
+=-=-=
diff --git a/test/lisp/progmodes/elixir-ts-mode-tests.el b/test/lisp/progmodes/elixir-ts-mode-tests.el
new file mode 100644
index 00000000000..488fc1b646f
--- /dev/null
+++ b/test/lisp/progmodes/elixir-ts-mode-tests.el
@@ -0,0 +1,31 @@
+;;; elixir-ts-mode-tests.el --- Tests for elixir-ts-mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'treesit)
+
+(ert-deftest elixir-ts-mode-test-indentation ()
+ (skip-unless (and (treesit-ready-p 'elixir) (treesit-ready-p 'heex)))
+ (ert-test-erts-file (ert-resource-file "indent.erts")))
+
+(provide 'elixir-ts-mode-tests)
+;;; elixir-ts-mode-tests.el ends here
diff --git a/test/lisp/progmodes/grep-tests.el b/test/lisp/progmodes/grep-tests.el
index 39307999d6d..9b7f83086bf 100644
--- a/test/lisp/progmodes/grep-tests.el
+++ b/test/lisp/progmodes/grep-tests.el
@@ -66,4 +66,18 @@
(cl-letf (((symbol-function 'w32-shell-dos-semantics) #'ignore))
(grep-tests--check-rgrep-abbreviation))))
+(ert-deftest grep-tests--grep-heading-regexp-without-null ()
+ (dolist (sep '(?: ?- ?=))
+ (let ((string (format "filename%c123%ctext" sep sep)))
+ (should (string-match grep-heading-regexp string))
+ (should (equal (match-string 1 string) "filename"))
+ (should (equal (match-string 2 string) (format "filename%c" sep))))))
+
+(ert-deftest grep-tests--grep-heading-regexp-with-null ()
+ (dolist (sep '(?: ?- ?=))
+ (let ((string (format "funny:0:filename%c123%ctext" 0 sep)))
+ (should (string-match grep-heading-regexp string))
+ (should (equal (match-string 1 string) "funny:0:filename"))
+ (should (equal (match-string 2 string) "funny:0:filename\0")))))
+
;;; grep-tests.el ends here
diff --git a/test/lisp/progmodes/heex-ts-mode-resources/indent.erts b/test/lisp/progmodes/heex-ts-mode-resources/indent.erts
new file mode 100644
index 00000000000..500ddb2b536
--- /dev/null
+++ b/test/lisp/progmodes/heex-ts-mode-resources/indent.erts
@@ -0,0 +1,47 @@
+Code:
+ (lambda ()
+ (setq indent-tabs-mode nil)
+ (heex-ts-mode)
+ (indent-region (point-min) (point-max)))
+
+Point-Char: $
+
+Name: Tag
+
+=-=
+ <div>
+ div
+ </div>
+=-=
+<div>
+ div
+</div>
+=-=-=
+
+Name: Component
+
+=-=
+ <Foo>
+ foobar
+ </Foo>
+=-=
+<Foo>
+ foobar
+</Foo>
+=-=-=
+
+Name: Slots
+
+=-=
+ <Foo>
+ <:bar>
+ foobar
+ </:bar>
+ </Foo>
+=-=
+<Foo>
+ <:bar>
+ foobar
+ </:bar>
+</Foo>
+=-=-=
diff --git a/test/lisp/progmodes/heex-ts-mode-tests.el b/test/lisp/progmodes/heex-ts-mode-tests.el
new file mode 100644
index 00000000000..def6d845de9
--- /dev/null
+++ b/test/lisp/progmodes/heex-ts-mode-tests.el
@@ -0,0 +1,31 @@
+;;; heex-ts-mode-tests.el --- Tests for heex-ts-mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'treesit)
+
+(ert-deftest heex-ts-mode-test-indentation ()
+ (skip-unless (treesit-ready-p 'heex))
+ (ert-test-erts-file (ert-resource-file "indent.erts")))
+
+(provide 'heex-ts-mode-tests)
+;;; heex-ts-mode-tests.el ends here
diff --git a/test/lisp/progmodes/java-ts-mode-resources/indent.erts b/test/lisp/progmodes/java-ts-mode-resources/indent.erts
new file mode 100644
index 00000000000..4fca74dd2e1
--- /dev/null
+++ b/test/lisp/progmodes/java-ts-mode-resources/indent.erts
@@ -0,0 +1,112 @@
+Code:
+ (lambda ()
+ (setq indent-tabs-mode nil)
+ (setq java-ts-mode-indent-offset 4)
+ (java-ts-mode)
+ (indent-region (point-min) (point-max)))
+
+Point-Char: |
+
+Name: Basic
+
+=-=
+public class Basic {
+ public void basic() {
+ return;
+ }
+}
+=-=-=
+
+Name: Empty Line
+
+=-=
+public class EmptyLine {
+ public void emptyLine() {
+ |
+ }
+}
+=-=-=
+
+Name: Statements
+
+=-=
+if (x) {
+ for (var foo : foos) {
+ |
+ }
+} else if (y) {
+ for (int i = 0; x < foos.size(); i++) {
+ return;
+ }
+} else {
+ return;
+}
+=-=-=
+
+Name: Field declaration without access modifier (bug#61115)
+
+=-=
+public class T {
+ @Autowired
+ String a;
+}
+=-=-=
+
+Name: Array initializer
+
+=-=
+public class Java {
+ void foo() {
+ return new String[]{
+ "foo", // These
+ "bar"
+ }
+ }
+}
+=-=-=
+
+Name: Advanced bracket matching indentation (bug#61142)
+
+=-=
+public class Java {
+
+ public Java(
+ String foo) {
+ this.foo = foo;
+ }
+
+ void foo(
+ String foo) {
+
+ for (var f : rs)
+ return new String[]{
+ "foo",
+ "bar"
+ };
+ if (a == 0
+ && b == 1
+ && foo) {
+ return 0;
+ } else if (a == 1) {
+ return 1;
+ } else if (true)
+ return 5;
+ else {
+ if (a == 0
+ && b == 1
+ && foo)
+ while (true)
+ for (
+ ;;)
+ if (true)
+ return 5;
+ else if (false) {
+ return 6;
+ } else
+ if (true
+ && false)
+ return 6;
+ }
+ }
+}
+=-=-=
diff --git a/test/lisp/progmodes/java-ts-mode-resources/movement.erts b/test/lisp/progmodes/java-ts-mode-resources/movement.erts
new file mode 100644
index 00000000000..23639b1f5ff
--- /dev/null
+++ b/test/lisp/progmodes/java-ts-mode-resources/movement.erts
@@ -0,0 +1,154 @@
+Code:
+ (lambda ()
+ (java-ts-mode)
+ (forward-sentence 1))
+
+Point-Char: |
+
+Name: forward-sentence moves over if
+
+=-=
+public class Basic {
+ public void basic() {
+ |if (x) {
+
+ }
+ log.info("some text: {}", text);
+ return;
+ }
+}
+=-=
+public class Basic {
+ public void basic() {
+ if (x) {
+
+ }|
+ log.info("some text: {}", text);
+ return;
+ }
+}
+=-=-=
+
+Name: forward-sentence moves over method invocation
+
+=-=
+public class Basic {
+ public void basic() {
+ |log.info("some text: {}", text);
+ }
+}
+=-=
+public class Basic {
+ public void basic() {
+ log.info("some text: {}", text);|
+ }
+}
+=-=-=
+
+Code:
+ (lambda ()
+ (java-ts-mode)
+ (forward-sentence 2))
+
+Name: forward-sentence moves over multiple statements
+
+=-=
+public class Basic {
+ public void basic() {
+ |return;
+ return;
+ }
+}
+=-=
+public class Basic {
+ public void basic() {
+ return;
+ return;|
+ }
+}
+=-=-=
+
+Code:
+ (lambda ()
+ (java-ts-mode)
+ (backward-sentence 1))
+
+Name: backward-sentence moves over one statement
+
+=-=
+public class Basic {
+ public void basic() {
+ return;|
+ }
+}
+=-=
+public class Basic {
+ public void basic() {
+ |return;
+ }
+}
+=-=-=
+
+Code:
+ (lambda ()
+ (java-ts-mode)
+ (beginning-of-defun))
+
+Name: beginning-of-defun moves to defun start
+
+=-=
+public class Basic {
+ public void basic() {
+ return;|
+ }
+}
+=-=
+public class Basic {
+| public void basic() {
+ return;
+ }
+}
+=-=-=
+
+Code:
+ (lambda ()
+ (java-ts-mode)
+ (beginning-of-defun)
+ (beginning-of-defun))
+
+Name: beginning-of-defun moves to class
+
+=-=
+public class Basic {
+ public void basic() {
+ return;|
+ }
+}
+=-=
+|public class Basic {
+ public void basic() {
+ return;
+ }
+}
+=-=-=
+
+Code:
+ (lambda ()
+ (java-ts-mode)
+ (end-of-defun))
+
+Name: end-of-defun moves to defun end
+
+=-=
+public class Basic {
+ public void basic() {
+ return;|
+ }
+}
+=-=
+public class Basic {
+ public void basic() {
+ return;
+ }
+|}
+=-=-=
diff --git a/test/lisp/progmodes/java-ts-mode-tests.el b/test/lisp/progmodes/java-ts-mode-tests.el
new file mode 100644
index 00000000000..4fd8fc3019f
--- /dev/null
+++ b/test/lisp/progmodes/java-ts-mode-tests.el
@@ -0,0 +1,35 @@
+;;; java-ts-mode-tests.el --- Tests for Tree-sitter-based Java mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'treesit)
+
+(ert-deftest java-ts-mode-test-indentation ()
+ (skip-unless (treesit-ready-p 'java))
+ (ert-test-erts-file (ert-resource-file "indent.erts")))
+
+(ert-deftest java-ts-mode-test-movement ()
+ (skip-unless (treesit-ready-p 'java))
+ (ert-test-erts-file (ert-resource-file "movement.erts")))
+
+(provide 'java-ts-mode-tests)
+;;; java-ts-mode-tests.el ends here
diff --git a/test/lisp/progmodes/sh-script-tests.el b/test/lisp/progmodes/sh-script-tests.el
index c850a5d8af7..52c1303c414 100644
--- a/test/lisp/progmodes/sh-script-tests.el
+++ b/test/lisp/progmodes/sh-script-tests.el
@@ -52,6 +52,24 @@
(ert-deftest test-indentation ()
(ert-test-erts-file (ert-resource-file "sh-indents.erts")))
+(ert-deftest test-indent-after-continuation ()
+ (with-temp-buffer
+ (insert "for f \\\nin a; do \\\ntoto; \\\ndone\n")
+ (shell-script-mode)
+ (let ((sh-indent-for-continuation '++))
+ (let ((sh-indent-after-continuation t))
+ (indent-region (point-min) (point-max))
+ (should (equal (buffer-string)
+ "for f \\\n\tin a; do \\\n toto; \\\n done\n")))
+ (let ((sh-indent-after-continuation 'always))
+ (indent-region (point-min) (point-max))
+ (should (equal (buffer-string)
+ "for f \\\n\tin a; do \\\n\ttoto; \\\n\tdone\n")))
+ (let ((sh-indent-after-continuation nil))
+ (indent-region (point-min) (point-max))
+ (should (equal (buffer-string)
+ "for f \\\nin a; do \\\n toto; \\\ndone\n"))))))
+
(defun test-sh-back (string &optional pos)
(with-temp-buffer
(shell-script-mode)
diff --git a/test/lisp/progmodes/typescript-ts-mode-resources/indent.erts b/test/lisp/progmodes/typescript-ts-mode-resources/indent.erts
new file mode 100644
index 00000000000..146ee76574e
--- /dev/null
+++ b/test/lisp/progmodes/typescript-ts-mode-resources/indent.erts
@@ -0,0 +1,73 @@
+Code:
+ (lambda ()
+ (setq indent-tabs-mode nil)
+ (setq typescript-ts-mode-indent-offset 2)
+ (typescript-ts-mode)
+ (indent-region (point-min) (point-max)))
+
+Point-Char: |
+
+Name: Basic indentation
+
+=-=
+const foo = () => {
+ console.log("bar");
+ if (x) {
+ return y;
+ } else if (y) {
+ return u;
+ }
+ return baz.x()
+ ? true
+ : false;
+}
+=-=-=
+
+Code:
+ (lambda ()
+ (setq indent-tabs-mode nil)
+ (setq tsx-ts-mode-indent-offset 2)
+ (tsx-ts-mode)
+ (indent-region (point-min) (point-max)))
+
+Name: JSX indentation
+
+=-=
+const foo = (props) => {
+ return (
+ <div>
+ <div>
+ <div>
+ <div>
+ {
+ props.foo
+ ? Hello, foo!
+ : Hello, World!;
+ }
+ </div>
+ </div>
+ </div>
+ </div>
+ );
+}
+=-=-=
+
+Name: JSX indentation with attributes
+
+=-=
+const foo = (props) => {
+ return (
+ <div
+ className={foo}
+ onClick={() => {
+ alert('???');
+ return () => {
+ return 5+5;
+ };
+ }}
+ >
+ <p>Some text</p>
+ </div>
+ );
+}
+=-=-=
diff --git a/test/lisp/progmodes/typescript-ts-mode-tests.el b/test/lisp/progmodes/typescript-ts-mode-tests.el
new file mode 100644
index 00000000000..126f5e3298f
--- /dev/null
+++ b/test/lisp/progmodes/typescript-ts-mode-tests.el
@@ -0,0 +1,31 @@
+;;; typescript-ts-mode-tests.el --- Tests for Tree-sitter-based TypeScript mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2023 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-x)
+(require 'treesit)
+
+(ert-deftest typescript-ts-mode-test-indentation ()
+ (skip-unless (treesit-ready-p 'typescript))
+ (ert-test-erts-file (ert-resource-file "indent.erts")))
+
+(provide 'typescript-ts-mode-tests)
+;;; typescript-ts-mode-tests.el ends here
diff --git a/test/lisp/simple-tests.el b/test/lisp/simple-tests.el
index 28d8120f143..7dabb735522 100644
--- a/test/lisp/simple-tests.el
+++ b/test/lisp/simple-tests.el
@@ -839,7 +839,7 @@ See Bug#21722."
(forward-line 2)
(narrow-to-region (pos-bol) (pos-eol))
(should (equal (line-number-at-pos) 1))
- (line-number-at-pos nil t)
+ (should (equal (line-number-at-pos nil t) 3))
(should (equal (line-number-at-pos) 1))))
(ert-deftest line-number-at-pos-keeps-point ()
@@ -849,8 +849,8 @@ See Bug#21722."
(goto-char (point-min))
(forward-line 2)
(setq pos (point))
- (line-number-at-pos)
- (line-number-at-pos nil t)
+ (should (equal (line-number-at-pos) 3))
+ (should (equal (line-number-at-pos nil t) 3))
(should (equal pos (point))))))
(ert-deftest line-number-at-pos-when-passing-point ()
diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el
index 1abd3be4ea1..8f46c2af136 100644
--- a/test/lisp/subr-tests.el
+++ b/test/lisp/subr-tests.el
@@ -579,7 +579,8 @@
(cons (mapcar (pcase-lambda (`(,evald ,func ,args ,_))
`(,evald ,func ,@args))
(backtrace-frames base))
- (subr-test--backtrace-frames-with-backtrace-frame base))))))
+ (subr-test--backtrace-frames-with-backtrace-frame base))
+ (sit-for 0))))) ; dummy unwind form
(defun subr-test--frames-1 (base)
(subr-test--frames-2 base))
@@ -1058,10 +1059,12 @@ final or penultimate step during initialization."))
'(subr-tests--b subr-tests--c)))
(defalias 'subr-tests--d 'subr-tests--e)
- (defalias 'subr-tests--e 'subr-tests--d)
- (should-error (function-alias-p 'subr-tests--d))
- (should (equal (function-alias-p 'subr-tests--d t)
- '(subr-tests--e))))
+ (should (equal (function-alias-p 'subr-tests--d)
+ '(subr-tests--e)))
+
+ (fset 'subr-tests--f 'subr-tests--a)
+ (should (equal (function-alias-p 'subr-tests--f)
+ '(subr-tests--a subr-tests--b subr-tests--c))))
(ert-deftest test-readablep ()
(should (readablep "foo"))
@@ -1169,5 +1172,39 @@ final or penultimate step during initialization."))
(should-not (list-of-strings-p '("a" nil "b")))
(should-not (list-of-strings-p '("a" "b" . "c"))))
+(ert-deftest subr--delete-dups ()
+ (should (equal (delete-dups nil) nil))
+ (let* ((a (list "a" "b" "c"))
+ (a-dedup (delete-dups a)))
+ (should (equal a-dedup '("a" "b" "c")))
+ (should (eq a a-dedup)))
+ (let* ((a (list "a" "a" "b" "b" "a" "c" "b" "c" "a"))
+ (a-b (cddr a)) ; link of first "b"
+ (a-dedup (delete-dups a)))
+ (should (equal a-dedup '("a" "b" "c")))
+ (should (eq a a-dedup))
+ (should (eq (cdr a-dedup) a-b))))
+
+(ert-deftest subr--delete-consecutive-dups ()
+ (should (equal (delete-consecutive-dups nil) nil))
+ (let* ((a (list "a" "b" "c"))
+ (a-dedup (delete-consecutive-dups a)))
+ (should (equal a-dedup '("a" "b" "c")))
+ (should (eq a a-dedup)))
+ (let* ((a (list "a" "a" "b" "a" "a" "b" "b" "b" "c" "c" "a" "a"))
+ (a-b (nthcdr 3 a)) ; link of third "a"
+ (a-dedup (delete-consecutive-dups a)))
+ (should (equal a-dedup '("a" "b" "a" "b" "c" "a")))
+ (should (eq a a-dedup))
+ (should (equal (nthcdr 2 a-dedup) a-b)))
+ (let* ((a (list "a" "b" "a"))
+ (a-dedup (delete-consecutive-dups a t)))
+ (should (equal a-dedup '("a" "b")))
+ (should (eq a a-dedup)))
+ (let* ((a (list "a" "a" "b" "a" "a" "b" "b" "b" "c" "c" "a" "a"))
+ (a-dedup (delete-consecutive-dups a t)))
+ (should (equal a-dedup '("a" "b" "a" "b" "c")))
+ (should (eq a a-dedup))))
+
(provide 'subr-tests)
;;; subr-tests.el ends here
diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el
index 0daf27f32ec..7cf41d2817b 100644
--- a/test/lisp/thingatpt-tests.el
+++ b/test/lisp/thingatpt-tests.el
@@ -72,7 +72,38 @@
("<url:ftp.example.net/abc/>" 1 url "ftp://ftp.example.net/abc/")
;; UUID, only hex is allowed
("01234567-89ab-cdef-ABCD-EF0123456789" 1 uuid "01234567-89ab-cdef-ABCD-EF0123456789")
- ("01234567-89ab-cdef-ABCD-EF012345678G" 1 uuid nil))
+ ("01234567-89ab-cdef-ABCD-EF012345678G" 1 uuid nil)
+ ;; email addresses
+ ("foo@example.com" 1 email "foo@example.com")
+ ("f@example.com" 1 email "f@example.com")
+ ("foo@example.com" 4 email "foo@example.com")
+ ("foo@example.com" 5 email "foo@example.com")
+ ("foo@example.com" 15 email "foo@example.com")
+ ("foo@example.com" 16 email "foo@example.com")
+ ("<foo@example.com>" 1 email "<foo@example.com>")
+ ("<foo@example.com>" 4 email "<foo@example.com>")
+ ("<foo@example.com>" 5 email "<foo@example.com>")
+ ("<foo@example.com>" 16 email "<foo@example.com>")
+ ("<foo@example.com>" 17 email "<foo@example.com>")
+ ;; email adresses containing numbers
+ ("foo1@example.com" 1 email "foo1@example.com")
+ ("1foo@example.com" 1 email "1foo@example.com")
+ ("11@example.com" 1 email "11@example.com")
+ ("1@example.com" 1 email "1@example.com")
+ ;; email adresses user portion containing dots
+ ("foo.bar@example.com" 1 email "foo.bar@example.com")
+ (".foobar@example.com" 1 email nil)
+ (".foobar@example.com" 2 email "foobar@example.com")
+ ;; email adresses domain portion containing dots and dashes
+ ("foobar@.example.com" 1 email nil)
+ ("foobar@-example.com" 1 email "foobar@-example.com")
+ ;; These are illegal, but thingatpt doesn't yet handle them
+ ;; ("foo..bar@example.com" 1 email nil)
+ ;; ("foobar@.example.com" 1 email nil)
+ ;; ("foobar@example..com" 1 email nil)
+ ;; ("foobar.@example.com" 1 email nil)
+
+ )
"List of `thing-at-point' tests.
Each list element should have the form
diff --git a/test/lisp/url/url-domsuf-tests.el b/test/lisp/url/url-domsuf-tests.el
index 09fd6240065..8dbf65dae44 100644
--- a/test/lisp/url/url-domsuf-tests.el
+++ b/test/lisp/url/url-domsuf-tests.el
@@ -24,6 +24,10 @@
(require 'url-domsuf)
(require 'ert)
+(ert-deftest url-domsuf--public-suffix-file ()
+ ;; We should always have a file, since it ships with Emacs.
+ (should (file-readable-p (url-domsuf--public-suffix-file))))
+
(defun url-domsuf-tests--run ()
(should-not (url-domsuf-cookie-allowed-p "com"))
(should (url-domsuf-cookie-allowed-p "foo.bar.bd"))
diff --git a/test/lisp/url/url-future-tests.el b/test/lisp/url/url-future-tests.el
index 5c5802ef3e4..18e6e31c8ce 100644
--- a/test/lisp/url/url-future-tests.el
+++ b/test/lisp/url/url-future-tests.el
@@ -52,7 +52,7 @@
(should (equal (url-future-cancel tocancel) tocancel))
(should-error (url-future-call tocancel))
(should (null url-future-tests--saver))
- (should (url-future-cancelled-p tocancel))))
+ (should (url-future-canceled-p tocancel))))
(provide 'url-future-tests)
diff --git a/test/lisp/whitespace-tests.el b/test/lisp/whitespace-tests.el
index 7b76ac87129..f059104cdb9 100644
--- a/test/lisp/whitespace-tests.el
+++ b/test/lisp/whitespace-tests.el
@@ -57,6 +57,24 @@ buffer's content."
(whitespace-cleanup)
(buffer-string)))
+(ert-deftest whitespace-tests--global ()
+ (let ((backup global-whitespace-mode)
+ (noninteractive nil)
+ (whitespace-enable-predicate (lambda () t)))
+ (unwind-protect
+ (progn
+ (global-whitespace-mode 1)
+ (ert-with-test-buffer-selected ()
+ (normal-mode)
+ (should whitespace-mode)
+ (global-whitespace-mode -1)
+ (should (null whitespace-mode))
+ (whitespace-mode 1)
+ (should whitespace-mode)
+ (global-whitespace-mode 1)
+ (should whitespace-mode)))
+ (global-whitespace-mode (if backup 1 -1)))))
+
(ert-deftest whitespace-cleanup-eob ()
(let ((whitespace-style '(empty)))
(should (equal (whitespace-tests--cleanup-string "a\n")
diff --git a/test/manual/indent/shell.sh b/test/manual/indent/shell.sh
index bd4a74f7054..5b3fb0e66fb 100755
--- a/test/manual/indent/shell.sh
+++ b/test/manual/indent/shell.sh
@@ -140,6 +140,7 @@ foo () {
5) hello ;;
4) hello ;&
4) hello ;;&
+ 4) hello ;|
5) hello ;;
5) hello ;;
esac
diff --git a/test/manual/noverlay/itree-tests.c b/test/manual/noverlay/itree-tests.c
index 1fef87ea98d..0f1e4138954 100644
--- a/test/manual/noverlay/itree-tests.c
+++ b/test/manual/noverlay/itree-tests.c
@@ -26,7 +26,6 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
#include "emacs-compat.h"
#define EMACS_LISP_H /* lisp.h inclusion guard */
-#define ITREE_DEBUG 1
#define ITREE_TESTING
#include "itree.c"
@@ -53,7 +52,7 @@ test_insert1_setup (void)
enum { N = 6 };
const int values[N] = {50, 30, 20, 10, 15, 5};
struct itree_node *nodes[N] = {&N_50, &N_30, &N_20, &N_10, &N_15, &N_05};
- interval_tree_init (&tree);
+ itree_init (&tree);
for (int i = 0; i < N; ++i)
{
nodes[i]->begin = nodes[i]->end = values[i];
@@ -67,7 +66,7 @@ START_TEST (test_insert_1)
* [50]
*/
- interval_tree_insert (&tree, &N_50);
+ itree_insert_node (&tree, &N_50);
ck_assert (! N_50.red);
ck_assert_ptr_eq (&N_50, tree.root);
}
@@ -81,8 +80,8 @@ START_TEST (test_insert_2)
* (30)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_30);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_30);
ck_assert (! N_50.red);
ck_assert (N_30.red);
ck_assert_ptr_eq (&N_50, tree.root);
@@ -102,9 +101,9 @@ START_TEST (test_insert_3)
* (20) (50)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_30);
- interval_tree_insert (&tree, &N_20);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_30);
+ itree_insert_node (&tree, &N_20);
ck_assert (N_50.red);
ck_assert (! N_30.red);
ck_assert (N_20.red);
@@ -128,10 +127,10 @@ START_TEST (test_insert_4)
* (10)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_30);
- interval_tree_insert (&tree, &N_20);
- interval_tree_insert (&tree, &N_10);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_30);
+ itree_insert_node (&tree, &N_20);
+ itree_insert_node (&tree, &N_10);
ck_assert (! N_50.red);
ck_assert (! N_30.red);
ck_assert (! N_20.red);
@@ -159,11 +158,11 @@ START_TEST (test_insert_5)
* (10) (20)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_30);
- interval_tree_insert (&tree, &N_20);
- interval_tree_insert (&tree, &N_10);
- interval_tree_insert (&tree, &N_15);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_30);
+ itree_insert_node (&tree, &N_20);
+ itree_insert_node (&tree, &N_10);
+ itree_insert_node (&tree, &N_15);
ck_assert (! N_50.red);
ck_assert (! N_30.red);
ck_assert (N_20.red);
@@ -197,12 +196,12 @@ START_TEST (test_insert_6)
* (5)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_30);
- interval_tree_insert (&tree, &N_20);
- interval_tree_insert (&tree, &N_10);
- interval_tree_insert (&tree, &N_15);
- interval_tree_insert (&tree, &N_05);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_30);
+ itree_insert_node (&tree, &N_20);
+ itree_insert_node (&tree, &N_10);
+ itree_insert_node (&tree, &N_15);
+ itree_insert_node (&tree, &N_05);
ck_assert (! N_50.red);
ck_assert (! N_30.red);
ck_assert (! N_20.red);
@@ -238,7 +237,7 @@ test_insert2_setup (void)
enum { N = 6 };
const int values[] = {50, 70, 80, 90, 85, 95};
struct itree_node *nodes[N] = {&N_50, &N_70, &N_80, &N_90, &N_85, &N_95};
- interval_tree_init (&tree);
+ itree_init (&tree);
for (int i = 0; i < N; ++i)
{
nodes[i]->begin = nodes[i]->end = values[i];
@@ -252,7 +251,7 @@ START_TEST (test_insert_7)
* [50]
*/
- interval_tree_insert (&tree, &N_50);
+ itree_insert_node (&tree, &N_50);
ck_assert (! N_50.red);
ck_assert_ptr_eq (&N_50, tree.root);
}
@@ -266,8 +265,8 @@ START_TEST (test_insert_8)
* (70)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_70);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_70);
ck_assert (! N_50.red);
ck_assert (N_70.red);
ck_assert_ptr_eq (&N_50, tree.root);
@@ -287,9 +286,9 @@ START_TEST (test_insert_9)
* (50) (80)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_70);
- interval_tree_insert (&tree, &N_80);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_70);
+ itree_insert_node (&tree, &N_80);
ck_assert (N_50.red);
ck_assert (! N_70.red);
ck_assert (N_80.red);
@@ -313,10 +312,10 @@ START_TEST (test_insert_10)
* (90)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_70);
- interval_tree_insert (&tree, &N_80);
- interval_tree_insert (&tree, &N_90);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_70);
+ itree_insert_node (&tree, &N_80);
+ itree_insert_node (&tree, &N_90);
ck_assert (! N_50.red);
ck_assert (! N_70.red);
ck_assert (! N_80.red);
@@ -344,11 +343,11 @@ START_TEST (test_insert_11)
* (80) (90)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_70);
- interval_tree_insert (&tree, &N_80);
- interval_tree_insert (&tree, &N_90);
- interval_tree_insert (&tree, &N_85);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_70);
+ itree_insert_node (&tree, &N_80);
+ itree_insert_node (&tree, &N_90);
+ itree_insert_node (&tree, &N_85);
ck_assert (! N_50.red);
ck_assert (! N_70.red);
ck_assert (N_80.red);
@@ -383,12 +382,12 @@ START_TEST (test_insert_12)
* (95)
*/
- interval_tree_insert (&tree, &N_50);
- interval_tree_insert (&tree, &N_70);
- interval_tree_insert (&tree, &N_80);
- interval_tree_insert (&tree, &N_90);
- interval_tree_insert (&tree, &N_85);
- interval_tree_insert (&tree, &N_95);
+ itree_insert_node (&tree, &N_50);
+ itree_insert_node (&tree, &N_70);
+ itree_insert_node (&tree, &N_80);
+ itree_insert_node (&tree, &N_90);
+ itree_insert_node (&tree, &N_85);
+ itree_insert_node (&tree, &N_95);
ck_assert (! N_50.red);
ck_assert (! N_70.red);
ck_assert (! N_80.red);
@@ -419,7 +418,7 @@ START_TEST (test_insert_13)
enum { N = 4 };
const int values[N] = {10, 20, 30, 40};
struct itree_node *nodes[N] = {&N_10, &N_20, &N_30, &N_40};
- interval_tree_init (&tree);
+ itree_init (&tree);
for (int i = 0; i < N; ++i)
itree_insert (&tree, nodes[i], values[i], values[i]);
@@ -437,13 +436,13 @@ END_TEST
START_TEST (test_insert_14)
{
enum { N = 3 };
- struct itree_node nodes[N];
- interval_tree_init (&tree);
+ struct itree_node nodes[N] = {0};
+ itree_init (&tree);
for (int i = 0; i < N; ++i)
itree_insert (&tree, &nodes[i], 10, 10);
for (int i = 0; i < N; ++i)
- ck_assert (interval_tree_contains (&tree, &nodes[i]));
+ ck_assert (itree_contains (&tree, &nodes[i]));
}
END_TEST
@@ -458,7 +457,7 @@ END_TEST
static void
test_remove1_setup (void)
{
- interval_tree_init (&tree);
+ itree_init (&tree);
tree.root = &B;
A.parent = &B; B.parent = NULL; C.parent = &D; D.parent = &B; E.parent = &D;
A.left = A.right = C.left = C.right = E.left = E.right = NULL;
@@ -480,7 +479,7 @@ START_TEST (test_remove_1)
{
B.red = A.red = C.red = E.red = false;
D.red = true;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -502,7 +501,7 @@ END_TEST
START_TEST (test_remove_2)
{
B.red = D.red = A.red = C.red = E.red = false;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -523,7 +522,7 @@ START_TEST (test_remove_3)
{
D.red = A.red = E.red = false;
B.red = C.red = true;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -546,7 +545,7 @@ START_TEST (test_remove_4)
{
B.red = C.red = E.red = true;
A.red = D.red = false;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -569,7 +568,7 @@ END_TEST
static void
test_remove2_setup (void)
{
- interval_tree_init (&tree);
+ itree_init (&tree);
tree.root = &B;
A.parent = &B; B.parent = NULL; C.parent = &D; D.parent = &B; E.parent = &D;
A.right = A.left = C.right = C.left = E.right = E.left = NULL;
@@ -589,7 +588,7 @@ START_TEST (test_remove_5)
{
B.red = A.red = C.red = E.red = false;
D.red = true;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -611,7 +610,7 @@ END_TEST
START_TEST (test_remove_6)
{
B.red = D.red = A.red = C.red = E.red = false;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -632,7 +631,7 @@ START_TEST (test_remove_7)
{
D.red = A.red = E.red = false;
B.red = C.red = true;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -655,7 +654,7 @@ START_TEST (test_remove_8)
{
B.red = C.red = E.red = true;
A.red = D.red = false;
- interval_tree_remove_fix (&tree, &A, &B);
+ itree_remove_fix (&tree, &A, &B);
ck_assert (! A.red);
ck_assert (! B.red);
@@ -676,7 +675,7 @@ START_TEST (test_remove_9)
enum { N = 4 };
const int values[N] = {10, 20, 30, 40};
struct itree_node *nodes[N] = {&N_10, &N_20, &N_30, &N_40};
- interval_tree_init (&tree);
+ itree_init (&tree);
for (int i = 0; i < N; ++i)
itree_insert (&tree, nodes[i], values[i], values[i]);
@@ -722,8 +721,8 @@ START_TEST (test_remove_10)
srand (42);
shuffle (index, N);
- interval_tree_init (&tree);
- struct itree_node nodes[N];
+ itree_init (&tree);
+ struct itree_node nodes[N] = {0};
for (int i = 0; i < N; ++i)
{
ptrdiff_t pos = (i + 1) * 10;
@@ -733,10 +732,10 @@ START_TEST (test_remove_10)
shuffle (index, N);
for (int i = 0; i < N; ++i)
{
- ck_assert (interval_tree_contains (&tree, &nodes[index[i]]));
+ ck_assert (itree_contains (&tree, &nodes[index[i]]));
itree_remove (&tree, &nodes[index[i]]);
}
- ck_assert_ptr_null (tree.root);
+ ck_assert (itree_empty_p (&tree));
ck_assert_int_eq (tree.size, 0);
}
END_TEST
@@ -748,12 +747,12 @@ END_TEST
START_TEST (test_generator_1)
{
- struct itree_node node, *n;
- struct itree_iterator *g;
- interval_tree_init (&tree);
+ struct itree_node node = {0}, *n;
+ struct itree_iterator it, *g;
+ itree_init (&tree);
itree_insert (&tree, &node, 10, 20);
- g = itree_iterator_start (&tree, 0, 30, ITREE_ASCENDING, NULL, 0);
+ g = itree_iterator_start (&it, &tree, 0, 30, ITREE_ASCENDING);
n = itree_iterator_next (g);
ck_assert_ptr_eq (n, &node);
ck_assert_int_eq (n->begin, 10);
@@ -761,13 +760,11 @@ START_TEST (test_generator_1)
ck_assert_ptr_null (itree_iterator_next (g));
ck_assert_ptr_null (itree_iterator_next (g));
ck_assert_ptr_null (itree_iterator_next (g));
- itree_iterator_finish (g);
- g = itree_iterator_start (&tree, 30, 50, ITREE_ASCENDING, NULL, 0);
+ g = itree_iterator_start (&it, &tree, 30, 50, ITREE_ASCENDING);
ck_assert_ptr_null (itree_iterator_next (g));
ck_assert_ptr_null (itree_iterator_next (g));
ck_assert_ptr_null (itree_iterator_next (g));
- itree_iterator_finish (g);
}
END_TEST
@@ -777,8 +774,8 @@ test_check_generator (struct itree_tree *tree,
int n, ...)
{
va_list ap;
- struct itree_iterator *g =
- itree_iterator_start (tree, begin, end, ITREE_ASCENDING, NULL, 0);
+ struct itree_iterator it, *g =
+ itree_iterator_start (&it, tree, begin, end, ITREE_ASCENDING);
va_start (ap, n);
for (int i = 0; i < n; ++i)
@@ -790,13 +787,12 @@ test_check_generator (struct itree_tree *tree,
va_end (ap);
ck_assert_ptr_null (itree_iterator_next (g));
ck_assert_ptr_null (itree_iterator_next (g));
- itree_iterator_finish (g);
}
START_TEST (test_generator_2)
{
- interval_tree_init (&tree);
- struct itree_node nodes[3];
+ itree_init (&tree);
+ struct itree_node nodes[3] = {0};
for (int i = 0; i < 3; ++i)
itree_insert (&tree, &nodes[i], 10 * (i + 1), 10 * (i + 2));
@@ -830,7 +826,7 @@ test_create_tree (struct itree_node *nodes, int n, bool doshuffle)
shuffle (index, n);
}
- interval_tree_init (&tree);
+ itree_init (&tree);
for (int i = 0; i < n; ++i)
{
struct itree_node *node = &nodes[index[i]];
@@ -862,8 +858,8 @@ START_TEST (test_generator_5)
{.begin = 30, .end = 50},
{.begin = 40, .end = 60}};
test_create_tree (nodes, N, false);
- struct itree_iterator *g =
- itree_iterator_start (&tree, 0, 100, ITREE_PRE_ORDER, NULL, 0);
+ struct itree_iterator it, *g =
+ itree_iterator_start (&it, &tree, 0, 100, ITREE_PRE_ORDER);
for (int i = 0; i < N; ++i)
{
struct itree_node *n = itree_iterator_next (g);
@@ -876,7 +872,6 @@ START_TEST (test_generator_5)
case 3: ck_assert_int_eq (40, n->begin); break;
}
}
- itree_iterator_finish (g);
}
END_TEST
@@ -888,8 +883,8 @@ START_TEST (test_generator_6)
{.begin = 30, .end = 50},
{.begin = 40, .end = 60}};
test_create_tree (nodes, N, true);
- struct itree_iterator *g =
- itree_iterator_start (&tree, 0, 100, ITREE_ASCENDING, NULL, 0);
+ struct itree_iterator it, *g =
+ itree_iterator_start (&it, &tree, 0, 100, ITREE_ASCENDING);
for (int i = 0; i < N; ++i)
{
struct itree_node *n = itree_iterator_next (g);
@@ -902,7 +897,6 @@ START_TEST (test_generator_6)
case 3: ck_assert_int_eq (40, n->begin); break;
}
}
- itree_iterator_finish (g);
}
END_TEST
@@ -914,8 +908,8 @@ START_TEST (test_generator_7)
{.begin = 30, .end = 50},
{.begin = 40, .end = 60}};
test_create_tree (nodes, N, true);
- struct itree_iterator *g =
- itree_iterator_start (&tree, 0, 100, ITREE_DESCENDING, NULL, 0);
+ struct itree_iterator it, *g =
+ itree_iterator_start (&it, &tree, 0, 100, ITREE_DESCENDING);
for (int i = 0; i < N; ++i)
{
struct itree_node *n = itree_iterator_next (g);
@@ -928,7 +922,6 @@ START_TEST (test_generator_7)
case 3: ck_assert_int_eq (10, n->begin); break;
}
}
- itree_iterator_finish (g);
}
END_TEST
@@ -938,14 +931,13 @@ START_TEST (test_generator_8)
struct itree_node nodes[N] = {{.begin = 20, .end = 30},
{.begin = 40, .end = 50}};
test_create_tree (nodes, N, false);
- struct itree_iterator *g =
- itree_iterator_start (&tree, 1, 60, ITREE_DESCENDING, NULL, 0);
+ struct itree_iterator it, *g =
+ itree_iterator_start (&it, &tree, 1, 60, ITREE_DESCENDING);
struct itree_node *n = itree_iterator_next (g);
ck_assert_int_eq (n->begin, 40);
itree_iterator_narrow (g, 50, 60);
n = itree_iterator_next (g);
ck_assert_ptr_null (n);
- itree_iterator_finish (g);
}
END_TEST
@@ -955,14 +947,13 @@ START_TEST (test_generator_9)
struct itree_node nodes[N] = {{.begin = 25, .end = 25},
{.begin = 20, .end = 30}};
test_create_tree (nodes, N, false);
- struct itree_iterator *g =
- itree_iterator_start (&tree, 1, 30, ITREE_DESCENDING, NULL, 0);
+ struct itree_iterator it, *g =
+ itree_iterator_start (&it, &tree, 1, 30, ITREE_DESCENDING);
struct itree_node *n = itree_iterator_next (g);
ck_assert_int_eq (n->begin, 25);
itree_iterator_narrow (g, 25, 30);
n = itree_iterator_next (g);
ck_assert_int_eq (n->begin, 20);
- itree_iterator_finish (g);
}
END_TEST
@@ -981,7 +972,7 @@ static void
test_setup_gap_node (ptrdiff_t begin, ptrdiff_t end,
bool front_advance, bool rear_advance)
{
- interval_tree_init (&gap_tree);
+ itree_init (&gap_tree);
gap_node.front_advance = front_advance;
gap_node.rear_advance = rear_advance;
itree_insert (&gap_tree, &gap_node, begin, end);
@@ -1281,9 +1272,8 @@ main (void)
Suite *s = basic_suite ();
SRunner *sr = srunner_create (s);
- init_itree ();
srunner_run_all (sr, CK_ENV);
- int nfailed = srunner_ntests_failed (sr);
+ int failed = srunner_ntests_failed (sr);
srunner_free (sr);
- return (nfailed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return failed ? EXIT_FAILURE : EXIT_SUCCESS;
}
diff --git a/test/src/comp-resources/comp-test-funcs.el b/test/src/comp-resources/comp-test-funcs.el
index fff881dd595..73da7182a54 100644
--- a/test/src/comp-resources/comp-test-funcs.el
+++ b/test/src/comp-resources/comp-test-funcs.el
@@ -518,6 +518,19 @@
(defun comp-test-48029-nonascii-žžž-f (arg)
(when arg t))
+(defun comp-test-62537-1-f ())
+
+(defun comp-test-62537-2-f ()
+ (when (let ((val (comp-test-62537-1-f)))
+ (cond
+ ((eq val 'x)
+ t)
+ ((eq val 'y)
+ 'y)))
+ (comp-test-62537-1-f))
+ t)
+
+
;;;;;;;;;;;;;;;;;;;;
;; Tromey's tests ;;
diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el
index c5e5b346adb..4682cac450e 100644
--- a/test/src/comp-tests.el
+++ b/test/src/comp-tests.el
@@ -536,7 +536,7 @@ https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-03/msg00914.html."
"Verify we can compile calls to redefined primitives with
dedicated byte-op code."
(let (x
- (f (lambda (fn &rest args)
+ (f (lambda (_fn &rest args)
(setq comp-test-primitive-redefine-args args))))
(advice-add #'delete-region :around f)
(unwind-protect
diff --git a/test/src/data-tests.el b/test/src/data-tests.el
index 28cee9d2c5b..680fdd57d71 100644
--- a/test/src/data-tests.el
+++ b/test/src/data-tests.el
@@ -772,4 +772,40 @@ comparing the subr with a much slower Lisp implementation."
"Can't set variable marked with 'make_symbol_constant'."
(should-error (setq most-positive-fixnum 1) :type 'setting-constant))
+(ert-deftest data-tests-fset ()
+ (fset 'data-tests--fs-fun (lambda () 'moo))
+ (declare-function data-tests--fs-fun nil)
+ (should (equal (data-tests--fs-fun) 'moo))
+
+ (fset 'data-tests--fs-fun1 'data-tests--fs-fun)
+ (declare-function data-tests--fs-fun1 nil)
+ (should (equal (data-tests--fs-fun1) 'moo))
+
+ (fset 'data-tests--fs-a 'data-tests--fs-b)
+ (fset 'data-tests--fs-b 'data-tests--fs-c)
+
+ (should-error (fset 'data-tests--fs-c 'data-tests--fs-c)
+ :type 'cyclic-function-indirection)
+ (fset 'data-tests--fs-d 'data-tests--fs-a)
+ (should-error (fset 'data-tests--fs-c 'data-tests--fs-d)
+ :type 'cyclic-function-indirection))
+
+(ert-deftest data-tests-defalias ()
+ (defalias 'data-tests--da-fun (lambda () 'baa))
+ (declare-function data-tests--da-fun nil)
+ (should (equal (data-tests--da-fun) 'baa))
+
+ (defalias 'data-tests--da-fun1 'data-tests--da-fun)
+ (declare-function data-tests--da-fun1 nil)
+ (should (equal (data-tests--da-fun1) 'baa))
+
+ (defalias 'data-tests--da-a 'data-tests--da-b)
+ (defalias 'data-tests--da-b 'data-tests--da-c)
+
+ (should-error (defalias 'data-tests--da-c 'data-tests--da-c)
+ :type 'cyclic-function-indirection)
+ (defalias 'data-tests--da-d 'data-tests--da-a)
+ (should-error (defalias 'data-tests--da-c 'data-tests--da-d)
+ :type 'cyclic-function-indirection))
+
;;; data-tests.el ends here
diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el
index 1e7edca3bac..4589763b2f5 100644
--- a/test/src/eval-tests.el
+++ b/test/src/eval-tests.el
@@ -247,4 +247,39 @@ expressions works for identifiers starting with period."
(should (equal (string-trim (buffer-string))
expected-messages))))))))
+(defvar-local eval-test--local-var 'global)
+
+(ert-deftest eval-test--bug62419 ()
+ (with-temp-buffer
+ (setq eval-test--local-var 'first-local)
+ (let ((eval-test--local-var t))
+ (kill-local-variable 'eval-test--local-var)
+ (setq eval-test--local-var 'second-local)
+ (should (eq eval-test--local-var 'second-local)))
+ ;; FIXME: It's not completely clear if exiting the above `let'
+ ;; should restore the buffer-local binding to `first-local'
+ ;; (i.e. reset the value of the second buffer-local binding to the
+ ;; first's initial value) or should do nothing (on the principle that
+ ;; the first buffer-local binding doesn't exists any more so there's
+ ;; nothing to restore). I think both semantics make sense.
+ ;;(should (eq eval-test--local-var 'first-local))
+ )
+ (should (eq eval-test--local-var 'global)))
+
+(ert-deftest eval-tests-defvaralias ()
+ (defvar eval-tests--my-var 'coo)
+ (defvaralias 'eval-tests--my-var1 'eval-tests--my-var)
+ (defvar eval-tests--my-var1)
+ (should (equal eval-tests--my-var 'coo))
+ (should (equal eval-tests--my-var1 'coo))
+
+ (defvaralias 'eval-tests--my-a 'eval-tests--my-b)
+ (defvaralias 'eval-tests--my-b 'eval-tests--my-c)
+
+ (should-error (defvaralias 'eval-tests--my-c 'eval-tests--my-c)
+ :type 'cyclic-variable-indirection)
+ (defvaralias 'eval-tests--my-d 'eval-tests--my-a)
+ (should-error (defvaralias 'eval-tests--my-c 'eval-tests--my-d)
+ :type 'cyclic-variable-indirection))
+
;;; eval-tests.el ends here
diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el
index b84d39a063d..2859123da80 100644
--- a/test/src/fns-tests.el
+++ b/test/src/fns-tests.el
@@ -114,22 +114,24 @@
(should-error (nreverse 1))
(should-error (nreverse (make-char-table 'foo)))
(should (equal (nreverse (copy-sequence "xyzzy")) "yzzyx"))
- (let ((A (vector)))
- (nreverse A)
- (should (equal A [])))
- (let ((A (vector 0)))
- (nreverse A)
- (should (equal A [0])))
- (let ((A (vector 1 2 3 4)))
- (nreverse A)
- (should (equal A [4 3 2 1])))
- (let ((A (vector 1 2 3 4)))
- (nreverse A)
- (nreverse A)
- (should (equal A [1 2 3 4])))
+ (let* ((A (vector))
+ (B (nreverse A)))
+ (should (equal A []))
+ (should (eq B A)))
+ (let* ((A (vector 0))
+ (B (nreverse A)))
+ (should (equal A [0]))
+ (should (eq B A)))
(let* ((A (vector 1 2 3 4))
- (B (nreverse (nreverse A))))
- (should (equal A B))))
+ (B (nreverse A)))
+ (should (equal A [4 3 2 1]))
+ (should (eq B A)))
+ (let* ((A (vector 1 2 3 4))
+ (B (nreverse A))
+ (C (nreverse A)))
+ (should (equal A [1 2 3 4]))
+ (should (eq B A))
+ (should (eq C A))))
(ert-deftest fns-tests-reverse-bool-vector ()
(let ((A (make-bool-vector 10 nil)))
@@ -140,9 +142,10 @@
(ert-deftest fns-tests-nreverse-bool-vector ()
(let ((A (make-bool-vector 10 nil)))
(dotimes (i 5) (aset A i t))
- (nreverse A)
- (should (equal [nil nil nil nil nil t t t t t] (vconcat A)))
- (should (equal [t t t t t nil nil nil nil nil] (vconcat (nreverse A))))))
+ (let ((B (nreverse A)))
+ (should (eq B A))
+ (should (equal [nil nil nil nil nil t t t t t] (vconcat A)))
+ (should (equal [t t t t t nil nil nil nil nil] (vconcat (nreverse A)))))))
(defconst fns-tests--string-lessp-cases
`(("abc" < "abd")
@@ -622,7 +625,7 @@
(insert "foo")
(goto-char 2)
(insert " ")
- (backward-delete-char 1)
+ (delete-char -1)
(buffer-hash))
(sha1 "foo"))))
diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el
index 459a06a39b6..fc00204ce7b 100644
--- a/test/src/lread-tests.el
+++ b/test/src/lread-tests.el
@@ -116,8 +116,27 @@
(should-error (read "#") :type 'invalid-read-syntax))
(ert-deftest lread-char-modifiers ()
- (should (eq ?\C-\M-é (+ (- ?\M-a ?a) ?\C-é)))
- (should (eq (- ?\C-ŗ ?ŗ) (- ?\C-é ?é))))
+ (should (equal ?\C-\M-é (+ (- ?\M-a ?a) ?\C-é)))
+ (should (equal (- ?\C-ŗ ?ŗ) (- ?\C-é ?é)))
+ (should (equal ?\C-\C-c #x4000003))
+ (should (equal ?\C-\M-\C-c #xc000003))
+ (should (equal ?\M-\C-\C-c #xc000003))
+ (should (equal ?\C-\C-\M-c #xc000003))
+ (should (equal ?\M-\S-\H-\A-\C-\s-x #xbc00018))
+
+ (should (equal "\s-x" " -x"))
+ (should (equal "\C-x" "\x18"))
+ (should (equal "\^x" "\x18"))
+ (should (equal "\M-x" "\xf8")))
+
+(ert-deftest lread-many-modifiers ()
+ ;; The string literal "\M-\M-...\M-a" should be equivalent to "\M-a",
+ ;; and we should not run out of stack space parsing it.
+ (let* ((n 500000)
+ (s (concat "\""
+ (apply #'concat (make-list n "\\M-"))
+ "a\"")))
+ (should (equal (read-from-string s) (cons "\M-a" (+ (* n 3) 3))))))
(ert-deftest lread-record-1 ()
(should (equal '(#s(foo) #s(foo))
@@ -137,11 +156,13 @@ literals (Bug#20852)."
(write-region "?) ?( ?; ?\" ?[ ?]" nil file-name)
(should (equal (load file-name nil :nomessage :nosuffix) t))
(should (equal (lread-tests--last-message)
- (concat (format-message "Loading `%s': " file-name)
- "unescaped character literals "
- "`?\"', `?(', `?)', `?;', `?[', `?]' detected, "
- "`?\\\"', `?\\(', `?\\)', `?\\;', `?\\[', `?\\]' "
- "expected!")))))
+ (format-message
+ (concat "Loading `%s': "
+ "unescaped character literals "
+ "`?\"', `?(', `?)', `?;', `?[', `?]' detected, "
+ "`?\\\"', `?\\(', `?\\)', `?\\;', `?\\[', `?\\]' "
+ "expected!")
+ file-name)))))
(ert-deftest lread-test-bug26837 ()
"Test for https://debbugs.gnu.org/26837 ."
diff --git a/test/src/process-tests.el b/test/src/process-tests.el
index c3b4e17dbc0..e17e1c0d833 100644
--- a/test/src/process-tests.el
+++ b/test/src/process-tests.el
@@ -830,7 +830,7 @@ Return nil if that can't be determined."
(when (eq process-tests--EMFILE-message :unknown)
(setq process-tests--EMFILE-message
(with-temp-buffer
- (when (eql (ignore-error 'file-error
+ (when (eql (ignore-error file-error
(call-process "errno" nil t nil "EMFILE"))
0)
(goto-char (point-min))
diff --git a/test/src/regex-emacs-tests.el b/test/src/regex-emacs-tests.el
index c8f161c9b24..52d43775b8e 100644
--- a/test/src/regex-emacs-tests.el
+++ b/test/src/regex-emacs-tests.el
@@ -273,7 +273,7 @@ on success"
string
(condition-case nil
(if (string-match pattern string) nil 'search-failed)
- ('invalid-regexp 'compilation-failed))
+ (invalid-regexp 'compilation-failed))
bounds-ref substring-ref)))
@@ -518,7 +518,7 @@ known/benign differences in behavior.")
what-failed
(condition-case nil
(if (string-match pattern string) nil 'search-failed)
- ('invalid-regexp 'compilation-failed))
+ (invalid-regexp 'compilation-failed))
matches-observed
(cl-loop for x from 0 to 20
diff --git a/test/src/treesit-tests.el b/test/src/treesit-tests.el
index 468cd221ef9..5b2955c34e3 100644
--- a/test/src/treesit-tests.el
+++ b/test/src/treesit-tests.el
@@ -257,6 +257,7 @@
(defmacro treesit--ert-search-setup (&rest body)
"Setup macro used by `treesit-search-forward' and friends.
BODY is the test body."
+ (declare (debug (&rest form)))
`(with-temp-buffer
(let (parser root array)
(progn
@@ -332,6 +333,59 @@ BODY is the test body."
do (should (equal (treesit-node-text cursor)
text)))))
+(ert-deftest treesit-search-forward-predicate ()
+ "Test various form of supported predicates in search functions."
+ (skip-unless (treesit-language-available-p 'json))
+ (treesit--ert-search-setup
+ ;; The following tests are adapted from `treesit-search-forward'.
+
+ ;; Test `or'
+ (cl-loop for cursor = (treesit-node-child array 0)
+ then (treesit-search-forward cursor `(or "number" ,(rx "["))
+ nil t)
+ for text in '("[" "[" "1" "2" "3"
+ "[" "4" "5" "6"
+ "[" "7" "8" "9")
+ while cursor
+ do (should (equal (treesit-node-text cursor) text)))
+ ;; Test `not' and `or'
+ (cl-loop for cursor = (treesit-node-child array 0)
+ then (treesit-search-forward cursor
+ `(not (or "number" ,(rx "[")))
+ nil t)
+ for text in '("[" "," "," "]"
+ "[1,2,3]" ","
+ "," "," "]"
+ "[4,5,6]" ","
+ "," "," "]"
+ "[7,8,9]" "]"
+ "[[1,2,3], [4,5,6], [7,8,9]]")
+ while cursor
+ do (should (equal (treesit-node-text cursor) text)))
+ ;; Test (regexp . function)
+ (let ((is-odd (lambda (node)
+ (let ((string (treesit-node-text node)))
+ (and (eq 1 (length string))
+ (cl-oddp (string-to-number string)))))))
+ (cl-loop for cursor = (treesit-node-child array 0)
+ then (treesit-search-forward cursor `("number" . ,is-odd)
+ nil t)
+ for text in '("[" "1" "3" "5" "7" "9")
+ while cursor
+ do (should (equal (treesit-node-text cursor) text))))))
+
+(ert-deftest treesit-search-forward-predicate-invalid-predicate ()
+ "Test tree-sitter's ability to detect invalid predicates."
+ (skip-unless (treesit-language-available-p 'json))
+ (treesit--ert-search-setup
+ (dolist (pred '( 1 (not 1) (not "2" "3") (or) (or 1) 'a))
+ (should-error (treesit-search-forward (treesit-node-child array 0)
+ pred)
+ :type 'treesit-invalid-predicate))
+ (should-error (treesit-search-forward (treesit-node-child array 0)
+ (lambda (node) (car node)))
+ :type 'wrong-type-argument)))
+
(ert-deftest treesit-cursor-helper-with-missing-node ()
"Test treesit_cursor_helper with a missing node."
(skip-unless (treesit-language-available-p 'json))
@@ -831,7 +885,7 @@ the return value is ((1 3) (1 3))."
(funcall fn)))))
(defun treesit--ert-test-defun-navigation
- (init program master &optional opening closing)
+ (init program master tactic &optional opening closing)
"Run defun navigation tests on PROGRAM and MASTER.
INIT is a setup function that runs right after this function
@@ -843,6 +897,8 @@ starting marker position, and the rest are marker positions the
corresponding navigation should stop at (after running
`treesit-defun-skipper').
+TACTIC is the same as in `treesit--navigate-thing'.
+
OPENING and CLOSING are the same as in
`treesit--ert-insert-and-parse-marker', by default they are \"[\"
and \"]\"."
@@ -860,8 +916,6 @@ and \"]\"."
collect
(cl-loop for pos in record
collect (alist-get pos marker-alist))))
- (`(,regexp . ,pred) (treesit--thing-unpack-pattern
- treesit-defun-type-regexp))
;; Collect positions each function returns.
(positions
(treesit--ert-collect-positions
@@ -873,7 +927,7 @@ and \"]\"."
(if-let ((pos (funcall
#'treesit--navigate-thing
(point) (car conf) (cdr conf)
- regexp pred)))
+ treesit-defun-type-regexp tactic)))
(save-excursion
(goto-char pos)
(funcall treesit-defun-skipper)
@@ -1025,43 +1079,42 @@ the prev-beg, now point should be at marker 103\", etc.")
"Test defun navigation."
(skip-unless (treesit-language-available-p 'python))
;; Nested defun navigation
- (let ((treesit-defun-tactic 'nested))
- (require 'python)
- (treesit--ert-test-defun-navigation
- 'python-ts-mode
- treesit--ert-defun-navigation-python-program
- treesit--ert-defun-navigation-nested-master)))
+ (require 'python)
+ (treesit--ert-test-defun-navigation
+ 'python-ts-mode
+ treesit--ert-defun-navigation-python-program
+ treesit--ert-defun-navigation-nested-master
+ 'nested))
(ert-deftest treesit-defun-navigation-nested-2 ()
"Test defun navigation using `js-ts-mode'."
(skip-unless (treesit-language-available-p 'javascript))
;; Nested defun navigation
- (let ((treesit-defun-tactic 'nested))
- (require 'js)
- (treesit--ert-test-defun-navigation
- 'js-ts-mode
- treesit--ert-defun-navigation-js-program
- treesit--ert-defun-navigation-nested-master)))
+ (require 'js)
+ (treesit--ert-test-defun-navigation
+ 'js-ts-mode
+ treesit--ert-defun-navigation-js-program
+ treesit--ert-defun-navigation-nested-master
+ 'nested))
(ert-deftest treesit-defun-navigation-nested-3 ()
"Test defun navigation using `bash-ts-mode'."
(skip-unless (treesit-language-available-p 'bash))
;; Nested defun navigation
- (let ((treesit-defun-tactic 'nested))
- (treesit--ert-test-defun-navigation
- (lambda ()
- (treesit-parser-create 'bash)
- (setq-local treesit-defun-type-regexp "function_definition"))
- treesit--ert-defun-navigation-bash-program
- treesit--ert-defun-navigation-nested-master)))
+ (treesit--ert-test-defun-navigation
+ (lambda ()
+ (treesit-parser-create 'bash)
+ (setq-local treesit-defun-type-regexp "function_definition"))
+ treesit--ert-defun-navigation-bash-program
+ treesit--ert-defun-navigation-nested-master
+ 'nested))
(ert-deftest treesit-defun-navigation-nested-4 ()
"Test defun navigation using Elixir.
This tests bug#60355."
(skip-unless (treesit-language-available-p 'elixir))
;; Nested defun navigation
- (let ((treesit-defun-tactic 'nested)
- (pred (lambda (node)
+ (let ((pred (lambda (node)
(member (treesit-node-text
(treesit-node-child-by-field-name node "target"))
'("def" "defmodule")))))
@@ -1070,18 +1123,19 @@ This tests bug#60355."
(treesit-parser-create 'elixir)
(setq-local treesit-defun-type-regexp `("call" . ,pred)))
treesit--ert-defun-navigation-elixir-program
- treesit--ert-defun-navigation-nested-master)))
+ treesit--ert-defun-navigation-nested-master
+ 'nested)))
(ert-deftest treesit-defun-navigation-top-level ()
"Test top-level only defun navigation."
(skip-unless (treesit-language-available-p 'python))
;; Nested defun navigation
- (let ((treesit-defun-tactic 'top-level))
- (require 'python)
- (treesit--ert-test-defun-navigation
- 'python-ts-mode
- treesit--ert-defun-navigation-python-program
- treesit--ert-defun-navigation-top-level-master)))
+ (require 'python)
+ (treesit--ert-test-defun-navigation
+ 'python-ts-mode
+ treesit--ert-defun-navigation-python-program
+ treesit--ert-defun-navigation-top-level-master
+ 'top-level))
;; TODO
;; - Functions in treesit.el
diff --git a/test/src/undo-tests.el b/test/src/undo-tests.el
index 84151d3b5db..fd45a9101fa 100644
--- a/test/src/undo-tests.el
+++ b/test/src/undo-tests.el
@@ -439,6 +439,78 @@ Demonstrates bug 16818."
(should (string= (buffer-string) "aaaFirst line\nSecond line\nbbb"))))
+(ert-deftest undo-test-combine-change-calls-1 ()
+ "Test how `combine-change-calls' updates `buffer-undo-list'.
+Case 1: a file-visiting buffer with `buffer-undo-list' non-nil
+and `buffer-modified-p' non-nil when `combine-change-calls' is
+called."
+ (ert-with-temp-file tempfile
+ (with-current-buffer (find-file tempfile)
+ (insert "A")
+ (undo-boundary)
+ (insert "B")
+ (undo-boundary)
+ (insert "C")
+ (undo-boundary)
+ (insert " ")
+ (undo-boundary)
+ (insert "D")
+ (undo-boundary)
+ (insert "E")
+ (undo-boundary)
+ (insert "F")
+ (should (= (length buffer-undo-list) 14))
+ (goto-char (point-min))
+ (combine-change-calls (point-min) (point-max)
+ (re-search-forward "ABC ")
+ (replace-match "Z "))
+ (should (= (length buffer-undo-list) 15)))))
+
+(ert-deftest undo-test-combine-change-calls-2 ()
+ "Test how `combine-change-calls' updates `buffer-undo-list'.
+Case 2: a file-visiting buffer with `buffer-undo-list' non-nil
+and `buffer-modified-p' nil when `combine-change-calls' is
+called."
+ (ert-with-temp-file tempfile
+ (with-current-buffer (find-file tempfile)
+ (insert "A")
+ (undo-boundary)
+ (insert "B")
+ (undo-boundary)
+ (insert "C")
+ (undo-boundary)
+ (insert " ")
+ (undo-boundary)
+ (insert "D")
+ (undo-boundary)
+ (insert "E")
+ (undo-boundary)
+ (insert "F")
+ (should (= (length buffer-undo-list) 14))
+ (save-buffer)
+ (goto-char (point-min))
+ (combine-change-calls (point-min) (point-max)
+ (re-search-forward "ABC ")
+ (replace-match "Z "))
+ (should (= (length buffer-undo-list) 15)))))
+
+(ert-deftest undo-test-combine-change-calls-3 ()
+ "Test how `combine-change-calls' updates `buffer-undo-list'.
+Case 3: a file-visiting buffer with `buffer-undo-list' nil and
+`buffer-modified-p' nil when `combine-change-calls' is called."
+ (ert-with-temp-file tempfile
+ (with-current-buffer (find-file tempfile)
+ (insert "ABC DEF")
+ (save-buffer)
+ (kill-buffer))
+ (with-current-buffer (find-file tempfile)
+ (should (= (length buffer-undo-list) 0))
+ (goto-char (point-min))
+ (combine-change-calls (point-min) (point-max)
+ (re-search-forward "ABC ")
+ (replace-match "Z "))
+ (should (= (length buffer-undo-list) 1)))))
+
(defun undo-test-all (&optional interactive)
"Run all tests for \\[undo]."
(interactive "p")