diff --git a/.dir-locals.el b/.dir-locals.el index af92eac5bba..d9ccf82b166 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -15,7 +15,12 @@ "/[ \t]*DEFVAR_[A-Z_ \t(]+\"[^\"]+\",[ \t]\\([A-Za-z0-9_]+\\)/\\1/")))) (etags-regen-ignores . ("test/manual/etags/")) (vc-prepare-patches-separately . nil) - (vc-default-patch-addressee . "bug-gnu-emacs@gnu.org"))) + (vc-default-patch-addressee . "bug-gnu-emacs@gnu.org") + ;; Uncomment these later once people's builds are likely to know + ;; they're safe local variable values. + ;; (vc-trunk-branch-regexps . ("master" "\\`emacs-[0-9]+\\'")) + ;; (vc-topic-branch-regexps . ("\\`feature/")) + )) (c-mode . ((c-file-style . "GNU") (c-noise-macro-names . ("INLINE" "NO_INLINE" "ATTRIBUTE_NO_SANITIZE_UNDEFINED" "ATTRIBUTE_NO_SANITIZE_ADDRESS" diff --git a/.gitattributes b/.gitattributes index 06d4e0400d3..5353236943e 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,6 @@ # Attributes of Emacs files in the Git repository. -# Copyright 2015-2025 Free Software Foundation, Inc. +# Copyright 2015-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/.gitignore b/.gitignore index 6e700e0d391..83b0b6fd5c4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Files that Git should ignore in the Emacs source directory. -# Copyright 2009-2025 Free Software Foundation, Inc. +# Copyright 2009-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 904f10bdf08..c092d89941f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -# Copyright (C) 2021-2025 Free Software Foundation, Inc. +# Copyright (C) 2021-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/.mailmap b/.mailmap index 5350eadca67..c75dc4ed2f1 100644 --- a/.mailmap +++ b/.mailmap @@ -158,6 +158,7 @@ Philip Kaludercic Philip Kaludercic Philip Kaludercic Philip Kaludercic +Philip Kaludercic Philipp Stephani Philipp Stephani Phillip Lord diff --git a/CONTRIBUTE b/CONTRIBUTE index ed42c4b8116..4fdcd613d8d 100644 --- a/CONTRIBUTE +++ b/CONTRIBUTE @@ -1,4 +1,4 @@ -Copyright (C) 2006-2025 Free Software Foundation, Inc. +Copyright (C) 2006-2026 Free Software Foundation, Inc. See the end of the file for license conditions. * How developers contribute to GNU Emacs @@ -136,9 +136,10 @@ command to index them; for instance, use @vindex for variables and https://www.gnu.org/software/texinfo/manual/texinfo/html_node/Predefined-Indices.html or run the shell command 'info "(texinfo)Predefined Indices"'. -We prefer American English both in doc strings and in the manuals. -That includes both spelling (e.g., "behavior", not "behaviour") and -the convention of leaving 2 spaces between sentences. +We prefer American English in doc strings, manuals, NEWS entries, text +of messages, and identifier names. That includes both spelling (e.g., +"behavior", not "behaviour") and the convention of leaving 2 spaces +between sentences. For more specific tips on Emacs's doc style, see https://www.gnu.org/software/emacs/manual/html_node/elisp/Documentation-Tips.html diff --git a/ChangeLog.1 b/ChangeLog.1 index 5b8eb65f0ca..bafaf6719ec 100644 --- a/ChangeLog.1 +++ b/ChangeLog.1 @@ -14700,7 +14700,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.2 b/ChangeLog.2 index 56848194267..c6be6b0087c 100644 --- a/ChangeLog.2 +++ b/ChangeLog.2 @@ -35788,7 +35788,7 @@ See ChangeLog.1 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2015-2025 Free Software Foundation, Inc. + Copyright (C) 2015-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.3 b/ChangeLog.3 index 7bf40eca0c0..7d9ac034cdc 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -5864,7 +5864,7 @@ * doc/lispref/symbols.texi (Shorthand, Exceptions): New subsubsection. - * src/lread.c (read1): Exempt punctionation-only symbols from + * src/lread.c (read1): Exempt punctuation-only symbols from oblookup_considering_shorthand. * test/lisp/progmodes/elisp-mode-tests.el @@ -74080,7 +74080,7 @@ * lisp/emacs-lisp/bytecomp.el (byte-compile-associative): Rename to... (byte-compile-variadic-numeric): ...this function and simplify, fixing incorrect comments. The 3-arg strength reduction is now - always done in the optimisers and is no longer needed here. + always done in the optimizers and is no longer needed here. (byte-compile-min-max): New function. (byte-compile-minus): Simplify, remove incorrect comment, and use byte-compile-variadic-numeric. @@ -115589,7 +115589,7 @@ * lisp/progmodes/hideif.el (hide-ifdef-mode-prefix-key): Make into a defcustom since it seems like this is something that should be - user-customisable (bug#8922). + user-customizable (bug#8922). 2019-08-21 Lars Ingebrigtsen @@ -131651,7 +131651,7 @@ cache. (c-parse-ps-state-below): Use the new function c-state-semi-trim-cache. (c-before-change-check-<>-operators): Check simply for < or > in the - neighbourhood before doing more expensive processing. + neighborhood before doing more expensive processing. (c-maybe-re-mark-raw-string): Give a backward search limit to an operation which was needlessly lacking one. @@ -237355,7 +237355,7 @@ See ChangeLog.2 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2015-2025 Free Software Foundation, Inc. + Copyright (C) 2015-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.4 b/ChangeLog.4 index 0271c67981a..1eb44ba7b44 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -4161,7 +4161,7 @@ 2024-07-15 Michael Albinus - Adapt tressitter tests on EMBA + Adapt treesitter tests on EMBA * test/infra/Makefile.in (TREE-SITTER-FILES): Simplify. @@ -31670,7 +31670,7 @@ Slight funcall_subr optimization * src/eval.c (funcall_subr): Help the compiler by reducing aliasing - problems, and compensate for a missed-optimisation bug in LLVM where + problems, and compensate for a missed-optimization bug in LLVM where switches sometimes forget to use variable range information (reported in https://github.com/llvm/llvm-project/issues/76085). @@ -41085,7 +41085,7 @@ 2023-09-27 Wilhelm H Kirschbaum - Fix treesit-langauge-at-point for elixir-ts-mode. + Fix treesit-language-at-point for elixir-ts-mode. The treesit-language-at-point function is only suppose to query the host language. @@ -63312,7 +63312,7 @@ Use memcpy for loading unaligned words on platforms where this can be done efficiently. This guards against problems arising from future - compiler autovectorisation improvements that might cause instructions + compiler autovectorization improvements that might cause instructions that require aligned addresses to be emitted, and should also work with an address sanitizer enabled. @@ -75655,7 +75655,7 @@ but never did so because of a coding mistake (eq instead of equal), found by a recently added warning. They weren't actually needed - thanks to the optimiser's fixpoint iteration: we eventually get the + thanks to the optimizer's fixpoint iteration: we eventually get the same results through (if X nil t) -> (if (not X) t nil) -> (if (not X) t) -> (not X) @@ -75904,7 +75904,7 @@ but never did so because of a coding mistake (eq instead of equal), found by a recently added warning. They weren't actually needed - thanks to the optimiser's fixpoint iteration: we eventually get the + thanks to the optimizer's fixpoint iteration: we eventually get the same results through (if X nil t) -> (if (not X) t nil) -> (if (not X) t) -> (not X) @@ -98166,7 +98166,7 @@ but never did so because of a coding mistake (eq instead of equal), found by a recently added warning. They weren't actually needed - thanks to the optimiser's fixpoint iteration: we eventually get the + thanks to the optimizer's fixpoint iteration: we eventually get the same results through (if X nil t) -> (if (not X) t nil) -> (if (not X) t) -> (not X) @@ -99787,7 +99787,7 @@ Replace `|` with `||` to explicitly introduce sequence points since the variables, `length` and `nskip`, are mutated more than once. - The `|` was just a weak attempt at micro-optimisation in any case; + The `|` was just a weak attempt at micro-optimization in any case; sorry about that. 2022-12-05 Yuan Fu @@ -105719,7 +105719,7 @@ * src/treesit.c (treesit_find_override_name) (treesit_load_language_push_for_each_suffix, treesit_load_language) - (Ftreesit_langauge_available_p, treesit_record_change) + (Ftreesit_language_available_p, treesit_record_change) (make_treesit_parser, make_treesit_node, make_treesit_query) (Ftreesit_parser_create, Ftreesit_parser_delete, Ftreesit_parser_list) (treesit_check_range_argument, Ftreesit_parser_included_ranges) @@ -110037,7 +110037,7 @@ Better signal data for treesit-load-language-error * src/treesit.c (ts_load_language): Better formatted signal data, - (Ftreesit_langauge_available_p): Optionally return the signal data if + (Ftreesit_language_available_p): Optionally return the signal data if language not available. * doc/lispref/parsing.texi: Document the signal data in detail. @@ -110153,7 +110153,7 @@ * src/treesit.h (struct Lisp_TS_Query): Add two new field. * src/treesit.c (ts_load_language): Return signal symbol and data rather than signaling itself. - (Ftreesit_langauge_available_p) + (Ftreesit_language_available_p) (Ftreesit_parser_create): Update usage of ts_load_language (make_ts_query): Now returns a lisp object. @@ -140625,7 +140625,7 @@ Fix drag-and-drop of files with multibyte filenames - * lisp/dired.el (dired-mouse-drag): Fix re-signalling of errors. + * lisp/dired.el (dired-mouse-drag): Fix re-signaling of errors. * lisp/select.el (xselect-convert-to-filename): (xselect-convert-to-text-uri-list): @@ -154980,7 +154980,7 @@ * doc/misc/ses.texi (The Basics): Document that ses-jump may be customized. - (Customizing @acronym{SES}): Document new customisations for ses-jump. + (Customizing @acronym{SES}): Document new customizations for ses-jump. * lisp/ses.el (ses-jump-cell-name-function) (ses-jump-prefix-function): New defcustoms. @@ -157179,7 +157179,7 @@ Make eshell link faces more distinctive on 8-color displays * lisp/eshell/em-ls.el (eshell-ls-directory): - (eshell-ls-symlink): Make the faces be distinctive on 8-colour + (eshell-ls-symlink): Make the faces be distinctive on 8-color displays (bug#43615). 2022-03-22 dickmao @@ -167362,7 +167362,7 @@ 2022-01-24 Mattias Engdegård - Byte code arity check micro-optimisation + Byte code arity check micro-optimization * src/bytecode.c (exec_byte_code): Slight simplification. @@ -185159,7 +185159,7 @@ (gen-clean): Delete it. * admin/unidata/README (https): Note the source for the Unicode - file that has emoji categorisations. + file that has emoji categorizations. * admin/unidata/emoji-test.txt: Import another Unicode file. @@ -193726,7 +193726,7 @@ use-package--foo--pre-config-hook use-package--foo--post-config-hook - This should make config customisations more predictable (for example, spacemacs + This should make config customizations more predictable (for example, spacemacs uses these hooks extensively to allow 'layers' to be customized). I got rid of the "special" default value for :config, because it doesn't seem to @@ -199850,7 +199850,7 @@ Instead of testing the length of each form passed to :custom-face, the sanity check would test the number of forms passed to :custom-face, - causing it to fail when more than 2 face customisations are used. + causing it to fail when more than 2 face customizations are used. Fixes https://github.com/jwiegley/use-package/issues/600. @@ -203628,7 +203628,7 @@ See ChangeLog.3 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2022-2025 Free Software Foundation, Inc. + Copyright (C) 2022-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.5 b/ChangeLog.5 index 4f27baa2d22..43806515e08 100644 --- a/ChangeLog.5 +++ b/ChangeLog.5 @@ -1467,7 +1467,7 @@ See ChangeLog.4 for earlier changes. ;; coding: utf-8 ;; End: - Copyright (C) 2025 Free Software Foundation, Inc. + Copyright (C) 2025-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/ChangeLog.android b/ChangeLog.android index 2f05c6bcc28..ecadd55c85f 100644 --- a/ChangeLog.android +++ b/ChangeLog.android @@ -7261,7 +7261,7 @@ and those made after the Android port was installed. ;; coding: utf-8 ;; End: - Copyright (C) 2023-2025 Free Software Foundation, Inc. + Copyright (C) 2023-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/GNUmakefile b/GNUmakefile index 918acb08951..43ffb7c9c3a 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,6 +1,6 @@ # Build Emacs from a fresh tarball or version-control checkout. -# Copyright (C) 2011-2025 Free Software Foundation, Inc. +# Copyright (C) 2011-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/INSTALL b/INSTALL index 40cb674d48f..4558f706f06 100644 --- a/INSTALL +++ b/INSTALL @@ -1,5 +1,5 @@ GNU Emacs Installation Guide -Copyright (C) 1992, 1994, 1996-1997, 2000-2025 Free Software Foundation, +Copyright (C) 1992, 1994, 1996-1997, 2000-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/INSTALL.REPO b/INSTALL.REPO index 0a687ce8d9e..e37f1a7f200 100644 --- a/INSTALL.REPO +++ b/INSTALL.REPO @@ -107,7 +107,7 @@ You can display that file in Emacs with 'C-h C-d', or just read it with any program that can display text files, such as Less. -Copyright (C) 2002-2025 Free Software Foundation, Inc. +Copyright (C) 2002-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/Makefile.in b/Makefile.in index ea05fe6ac99..01436d1645d 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1992-2025 Free Software Foundation, Inc. +# Copyright (C) 1992-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/README b/README index 20a920ce3cc..4c6bab5d3cb 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES index c07fdc487ee..bdd5a097ab7 100644 --- a/admin/CPP-DEFINES +++ b/admin/CPP-DEFINES @@ -34,7 +34,9 @@ __ANDROID_API__ A numerical "API level" indicating the version of HAVE_NTGUI Use the native W32 GUI for windows, frames, menus&scrollbars. HAVE_NS Use the NeXT/OpenStep/Cocoa UI under macOS or GNUstep. NS_IMPL_GNUSTEP Compile support for GNUstep implementation of NS GUI API. + Only true on systems other than macOS. NS_IMPL_COCOA Compile support for Cocoa (Apple) implementation of NS GUI API. + Only true on macOS. HAVE_X11 Compile support for the X11 GUI. HAVE_PGTK Compile support for using GTK itself without directly using X Windows APIs. HAVE_HAIKU Compile support for the Haiku window system. diff --git a/admin/ChangeLog.1 b/admin/ChangeLog.1 index beb5974c1fc..166798122c5 100644 --- a/admin/ChangeLog.1 +++ b/admin/ChangeLog.1 @@ -2577,7 +2577,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2001-2025 Free Software Foundation, Inc. + Copyright (C) 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/admin/MAINTAINERS b/admin/MAINTAINERS index 68e8881adfc..dd339f9af80 100644 --- a/admin/MAINTAINERS +++ b/admin/MAINTAINERS @@ -10,6 +10,7 @@ The (co-)maintainers of Emacs are: Eli Zaretskii Stefan Kangas Andrea Corallo + Sean Whitton Richard Stallman (Richard Stallman is one of the Emacs maintainers, @@ -234,7 +235,6 @@ Philip Kaludercic lisp/emacs-lisp/package.el lisp/emacs-lisp/package-vc.el lisp/emacs-lisp/compat.el - lisp/net/rcirc.el Yuan Fu src/treesit.c @@ -252,8 +252,12 @@ Sean Whitton test/lisp/vc/* Stephane Marks + lisp/system-taskbar.el lisp/emacs-lisp/vtable.el +Elías Gabriel Pérez + lisp/progmodes/hideshow.el + ============================================================================== 2. Areas that someone is willing to maintain, although he would not necessarily mind if someone else was the official maintainer. @@ -385,6 +389,7 @@ Juri Linkov lisp/repeat.el Philip Kaludercic + lisp/net/rcirc.el lisp/epa-ks.el Harald Jörg diff --git a/admin/README b/admin/README index 73ea015118c..3f2aae3fe84 100644 --- a/admin/README +++ b/admin/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -53,6 +53,10 @@ be used to debug Emacs with dense colormaps (PseudoColor). Check doc strings against documentation. +** cl-lib-deps-report.el + +Audit Lisp files for cl-lib usage and missing requires. + ** cus-test.el Tests for custom types and load problems. diff --git a/admin/admin.el b/admin/admin.el index 7e761c3f1f4..d4639ce4bc9 100644 --- a/admin/admin.el +++ b/admin/admin.el @@ -1,6 +1,6 @@ ;;; admin.el --- utilities for Emacs administration -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/admin/alloc-colors.c b/admin/alloc-colors.c index dbbb5ce6dbe..bcbc899cf3d 100644 --- a/admin/alloc-colors.c +++ b/admin/alloc-colors.c @@ -1,6 +1,6 @@ /* Allocate X colors. Used for testing with dense colormaps. -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/admin/authors.el b/admin/authors.el index 27df4ce97c0..41653b8bddf 100644 --- a/admin/authors.el +++ b/admin/authors.el @@ -1,6 +1,6 @@ ;;; authors.el --- utility for maintaining Emacs's AUTHORS file -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Maintainer: emacs-devel@gnu.org @@ -69,6 +69,7 @@ files.") (nil "BlaCk_Void" "alstjr7375@daum\\.net") (nil "bug-gnu-emacs@gnu\\.org") ; mistake ("Björn Torkelsson" "Bjorn Torkelsson") + ("Boris Buliga" "boris@d12frosted\\.io") (nil "brandon\\.irizarry@gmail\\.com") ("Brian Fox" "Brian J\\. Fox") ("Brian P Templeton" "BT Templeton") diff --git a/admin/automerge b/admin/automerge index b6bc4d51764..c3b7a5ae836 100755 --- a/admin/automerge +++ b/admin/automerge @@ -1,7 +1,7 @@ #!/bin/bash ### automerge - automatically merge the Emacs release branch to master -## Copyright (C) 2018-2025 Free Software Foundation, Inc. +## Copyright (C) 2018-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: Stefan Kangas diff --git a/admin/build-configs b/admin/build-configs index c8810882d15..10a6bd09216 100755 --- a/admin/build-configs +++ b/admin/build-configs @@ -1,7 +1,7 @@ #! /usr/bin/perl # Build Emacs in several different configurations. -# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 2001-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/charsets/Makefile.in b/admin/charsets/Makefile.in index 3553f95336d..af2f52f41c3 100644 --- a/admin/charsets/Makefile.in +++ b/admin/charsets/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2015-2025 Free Software Foundation, Inc. +# Copyright (C) 2015-2026 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index 8505fe3f9b2..24bf118db93 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv @@ -1,6 +1,6 @@ #!/bin/sh -# Copyright (C) 2015-2025 Free Software Foundation, Inc. +# Copyright (C) 2015-2026 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/charsets/mapfiles/README b/admin/charsets/mapfiles/README index 73e24d97512..fd3579f17fa 100644 --- a/admin/charsets/mapfiles/README +++ b/admin/charsets/mapfiles/README @@ -1,4 +1,4 @@ -Copyright (C) 2009-2025 Free Software Foundation, Inc. +Copyright (C) 2009-2026 Free Software Foundation, Inc. Copyright (C) 2009, 2010, 2011 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H13PRO009 diff --git a/admin/check-man-pages b/admin/check-man-pages index 84ca56bf084..497583759ee 100755 --- a/admin/check-man-pages +++ b/admin/check-man-pages @@ -1,7 +1,7 @@ #!/bin/bash ### check-man-pages - check man pages for errors -## Copyright (C) 2022-2025 Free Software Foundation, Inc. +## Copyright (C) 2022-2026 Free Software Foundation, Inc. ## Author: Stefan Kangas diff --git a/admin/cl-lib-deps-report.el b/admin/cl-lib-deps-report.el new file mode 100755 index 00000000000..37d741161ac --- /dev/null +++ b/admin/cl-lib-deps-report.el @@ -0,0 +1,162 @@ +:;exec emacs -Q --batch -l "$0" -- "$@" # -*- lexical-binding: t -*- +;;; cl-lib-deps-report.el --- report cl-lib dependencies in lisp files -*- lexical-binding: t -*- + +;; Copyright (C) 2026 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 . + +;;; Commentary: + +;; Generate an Org report of cl-lib macro/function usage and missing +;; compile-time/runtime requires for files under lisp/. + +;;; Code: + +(require 'cl-lib) +(require 'org) + +(setq debug-on-error nil) + +(defun cl-lib-deps-report--scan-file (file symbol-re macros funcs) + "Return cl-lib usage data for FILE using SYMBOL-RE, MACROS, and FUNCS. +Exclude tokens found in strings or comments, and return a list with +dependency flags, require kind, and sorted symbol lists." + (with-temp-buffer + (insert-file-contents file) + (with-syntax-table emacs-lisp-mode-syntax-table + (let ((tokens '()) + (total-req 0) + (eval-req 0)) + (goto-char (point-min)) + (while (re-search-forward symbol-re nil t) + (let ((ppss (syntax-ppss))) + (unless (or (nth 3 ppss) (nth 4 ppss)) + (push (match-string 0) tokens)))) + (setq tokens (cl-delete-duplicates tokens :test #'string=)) + (let* ((macro-toks (cl-remove-if-not (lambda (tok) (member tok macros)) tokens)) + (func-toks (cl-remove-if-not (lambda (tok) (member tok funcs)) tokens)) + (macro-dep (and macro-toks t)) + (func-dep (and func-toks t))) + (goto-char (point-min)) + (while (re-search-forward "(require[[:space:]\n]*'cl-lib" nil t) + (let ((ppss (syntax-ppss))) + (unless (or (nth 3 ppss) (nth 4 ppss)) + (setq total-req (1+ total-req))))) + (goto-char (point-min)) + (while (re-search-forward "(eval-when-compile[[:space:]\n]*(require[[:space:]\n]*'cl-lib" nil t) + (let ((ppss (syntax-ppss))) + (unless (or (nth 3 ppss) (nth 4 ppss)) + (setq eval-req (1+ eval-req))))) + (let* ((runtime-req (> total-req eval-req)) + (eval-req-present (> eval-req 0)) + (require-kind + (cond + ((and (= total-req 0) (= eval-req 0)) "no") + ((> total-req eval-req) "runtime") + (t "compile-time")))) + (list macro-dep func-dep require-kind runtime-req eval-req-present + (sort macro-toks #'string<) + (sort func-toks #'string<)))))))) + +(defun cl-lib-deps-report--main (args) + "Generate an Org report of cl-lib dependencies under a Lisp directory. +ARGS should be `command-line-args-left', which starts with \"--\" when +invoked via the file's exec stub." + (let* ((script-dir (file-name-directory (or load-file-name buffer-file-name))) + (default-root (expand-file-name "../lisp" script-dir)) + ;; `command-line-args-left' includes a \"--\" sentinel from the exec stub. + (args (if (and args (string= (car args) "--")) (cdr args) args)) + (root (or (car args) default-root))) + (unless (file-directory-p root) + (princ (format "%s: Directory not found: %s\n" (or load-file-name "cl-lib-deps-report.el") root)) + (kill-emacs 1)) + (let* ((candidate-re "cl-[[:alnum:]-]+\\*?") + (symbol-re "\\_") + (pattern (format "%s|\\(require[[:space:]]*'cl-lib|\\(eval-when-compile[[:space:]]*\\(require[[:space:]]*'cl-lib" + candidate-re)) + (files + (let ((cmd (format "find %s -type f -name '*.el' -print0 | xargs -0 grep -l -E %s || true" + (shell-quote-argument root) + (shell-quote-argument pattern)))) + (with-temp-buffer + (call-process "sh" nil t nil "-c" cmd) + (split-string (buffer-string) "\n" t)))) + (macros '()) + (funcs '())) + (mapatoms + (lambda (sym) + (when (and (symbolp sym) + (string-prefix-p "cl-" (symbol-name sym))) + (cond + ((macrop sym) (push (symbol-name sym) macros)) + ((fboundp sym) (push (symbol-name sym) funcs)))))) + (setq macros (sort macros #'string<)) + (setq funcs (sort funcs #'string<)) + (setq files (sort files #'string<)) + (with-temp-buffer + (org-mode) + (insert (format "* cl-lib dependency report (%s)\n" root)) + (insert "** files\n") + (insert "| file | cl- macros used | cl- functions used | require |\n") + (insert "|------|-----------------|--------------------|---------|\n") + (let (runtime-missing compile-missing require-unneeded) + (dolist (file files) + (when (file-regular-p file) + (cl-destructuring-bind (macro-dep func-dep require-kind runtime-req eval-req-present macro-toks func-toks) + (cl-lib-deps-report--scan-file file symbol-re macros funcs) + (when (and func-dep (not runtime-req)) + (push (list file func-toks) runtime-missing)) + (when (and macro-dep (not eval-req-present)) + (push (list file macro-toks) compile-missing)) + (when (and (not func-dep) (not macro-dep) + (or runtime-req eval-req-present)) + (push file require-unneeded)) + (let ((skip + (or (and (not macro-dep) (not func-dep) + (string= require-kind "no")) + (and func-dep (string= require-kind "runtime")) + (and macro-dep (not func-dep) + (string= require-kind "compile-time"))))) + (unless skip + (insert (format "| %s | %s | %s | %s |\n" + file + (if macro-dep "yes" "no") + (if func-dep "yes" "no") + require-kind))))))) + (org-table-align) + (insert "** runtime dependency missing require\n") + (dolist (entry (sort runtime-missing (lambda (a b) (string< (car a) (car b))))) + (insert (format "- %s (%s)\n" + (car entry) + (mapconcat (lambda (s) (format "~%s~" s)) (cadr entry) ", ")))) + (insert "\n** compile-time dependency missing eval-when-compile require\n") + (dolist (entry (sort compile-missing (lambda (a b) (string< (car a) (car b))))) + (insert (format "- %s (%s)\n" + (car entry) + (mapconcat (lambda (s) (format "~%s~" s)) (cadr entry) ", ")))) + (insert "\n** no dependency but require present\n") + (dolist (f (sort require-unneeded #'string<)) + (insert (format "- %s\n" f))) + (insert "\n* Summary\n") + (insert (format "- Total files audited: %d\n" (length files))) + (insert (format "- Redundant requires found: %d\n" (length require-unneeded))) + (insert (format "- Missing runtime requires: %d\n" (length runtime-missing))) + (insert (format "- Missing compile-time requires: %d\n" (length compile-missing)))) + (princ (buffer-string)))))) + +(cl-lib-deps-report--main command-line-args-left) + +;;; cl-lib-deps-report.el ends here diff --git a/admin/cus-test.el b/admin/cus-test.el index 9740ce27111..3eaf63cc286 100644 --- a/admin/cus-test.el +++ b/admin/cus-test.el @@ -1,6 +1,6 @@ ;;; cus-test.el --- tests for custom types and load problems -*- lexical-binding: t; -*- -;; Copyright (C) 1998, 2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000, 2002-2026 Free Software Foundation, Inc. ;; Author: Markus Rost ;; Created: 13 Sep 1998 diff --git a/admin/diff-tar-files b/admin/diff-tar-files index 8f3bae51983..f49fbf50e6a 100755 --- a/admin/diff-tar-files +++ b/admin/diff-tar-files @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 2001-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/download-android-deps.sh b/admin/download-android-deps.sh index e40392381d7..f2578e284d9 100644 --- a/admin/download-android-deps.sh +++ b/admin/download-android-deps.sh @@ -61,7 +61,7 @@ download_tarball () # 1c8f3b0cbad474da0ab09018c4ecf2119ac4a52d pixman-0.38.4-emacs.tar.gz # b687c8439d51634d921674dd009645e24873ca36 rsvg-2.40.21-emacs.tar.gz # eda251614598aacb06f5984a0a280833de456b29 tiff-4.5.1-emacs.tar.gz -# c00d0ea9c6e848f5cce350cb3ed742024f2bdb8b tree-sitter-0.20.7-emacs.tar.gz +# 9d032de89c874354c22d304f7e968f4ca6de8c0a tree-sitter-0.26.3-emacs.tar.gz download_tarball "giflib-5.2.1-emacs.tar.gz" "giflib-5.2.1" \ "a407c568961d729bb2d0175a34e0d4ed4a269978" @@ -90,8 +90,8 @@ download_tarball "libtasn1-4.19.0-emacs.tar.gz" "libtasn1-4.19.0" \ "fdc827211075d9b70a8ba6ceffa02eb48d6741e9" download_tarball "libselinux-3.6-emacs.tar.gz" "libselinux-3.6" \ "8361966e19fe25ae987b08799f1442393ae6366b" -download_tarball "tree-sitter-0.20.7-emacs.tar.gz" "tree-sitter-0.20.7" \ - "c00d0ea9c6e848f5cce350cb3ed742024f2bdb8b" +download_tarball "tree-sitter-0.26.3-emacs.tar.gz" "tree-sitter-0.26.3" \ + "9d032de89c874354c22d304f7e968f4ca6de8c0a" download_tarball "harfbuzz-7.1.0-emacs.tar.gz" "harfbuzz-7.1.0" \ "22dc71d503ab2eb263dc8411de9da1db144520f5" download_tarball "tiff-4.5.1-emacs.tar.gz" "tiff-4.5.1" \ diff --git a/admin/emacs-shell-lib b/admin/emacs-shell-lib index 842474ec959..080ce560f33 100644 --- a/admin/emacs-shell-lib +++ b/admin/emacs-shell-lib @@ -1,7 +1,7 @@ #!/bin/bash ### emacs-shell-lib - shared code for Emacs shell scripts -## Copyright (C) 2022-2025 Free Software Foundation, Inc. +## Copyright (C) 2022-2026 Free Software Foundation, Inc. ## Author: Stefan Kangas diff --git a/admin/emake b/admin/emake index dbb0bb356fb..0dd283a61c0 100755 --- a/admin/emake +++ b/admin/emake @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2022-2025 Free Software Foundation, Inc. +# Copyright (C) 2022-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/find-gc.el b/admin/find-gc.el index d68a1e6c0bf..1ea0dd6f1bf 100644 --- a/admin/find-gc.el +++ b/admin/find-gc.el @@ -1,6 +1,6 @@ ;;; find-gc.el --- detect functions that call the garbage collector -*- lexical-binding: t; -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/git-bisect-start b/admin/git-bisect-start index 7d8ed448614..184a808caa7 100755 --- a/admin/git-bisect-start +++ b/admin/git-bisect-start @@ -6,7 +6,7 @@ ### default options, on a GNU/Linux computer and with GCC; see below), ### are skipped. -## Copyright (C) 2022-2025 Free Software Foundation, Inc. +## Copyright (C) 2022-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/gitmerge.el b/admin/gitmerge.el index 5bfb23dc3a2..a2aae07db7f 100644 --- a/admin/gitmerge.el +++ b/admin/gitmerge.el @@ -1,6 +1,6 @@ ;;; gitmerge.el --- help merge one Emacs branch into another -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Authors: David Engster ;; Stefan Monnier diff --git a/admin/grammars/Makefile.in b/admin/grammars/Makefile.in index 8436d7fb3c1..78d4c158091 100644 --- a/admin/grammars/Makefile.in +++ b/admin/grammars/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -## Copyright (C) 2013-2025 Free Software Foundation, Inc. +## Copyright (C) 2013-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/grammars/c.by b/admin/grammars/c.by index f193cc7775a..a5fc1ecb61d 100644 --- a/admin/grammars/c.by +++ b/admin/grammars/c.by @@ -1,5 +1,5 @@ ;;; c.by -- LL grammar for C/C++ language specification -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam ;; David Ponce diff --git a/admin/grammars/grammar.wy b/admin/grammars/grammar.wy index beb21382824..5256ec31984 100644 --- a/admin/grammars/grammar.wy +++ b/admin/grammars/grammar.wy @@ -1,6 +1,6 @@ ;;; semantic-grammar.wy -- LALR grammar of Semantic input grammars ;; -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; ;; Author: David Ponce ;; Created: 26 Aug 2002 diff --git a/admin/grammars/java-tags.wy b/admin/grammars/java-tags.wy index 16289928fbc..40a18fe9dfe 100644 --- a/admin/grammars/java-tags.wy +++ b/admin/grammars/java-tags.wy @@ -1,6 +1,6 @@ ;;; java-tags.wy -- Semantic LALR grammar for Java -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; ;; Author: David Ponce ;; Created: 26 Aug 2002 diff --git a/admin/grammars/js.wy b/admin/grammars/js.wy index 0b2ec6176f6..761da0d9d07 100644 --- a/admin/grammars/js.wy +++ b/admin/grammars/js.wy @@ -1,6 +1,6 @@ ;;; javascript-jv.wy -- LALR grammar for Javascript -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Copyright (C) 1998-2011 Ecma International. ;; Author: Joakim Verona diff --git a/admin/grammars/make.by b/admin/grammars/make.by index a77f22669e6..6547b202f06 100644 --- a/admin/grammars/make.by +++ b/admin/grammars/make.by @@ -1,6 +1,6 @@ ;;; make.by -- BY notation for Makefiles. -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; ;; Author: Eric M. Ludlam ;; David Ponce diff --git a/admin/grammars/python.wy b/admin/grammars/python.wy index 8046461c3cc..0001843d755 100644 --- a/admin/grammars/python.wy +++ b/admin/grammars/python.wy @@ -1,6 +1,6 @@ ;;; python.wy -- LALR grammar for Python -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, ;; 2009, 2010 Python Software Foundation; All Rights Reserved diff --git a/admin/grammars/scheme.by b/admin/grammars/scheme.by index da3007bf224..91b7204fd64 100644 --- a/admin/grammars/scheme.by +++ b/admin/grammars/scheme.by @@ -1,6 +1,6 @@ ;;; scheme.by -- Scheme BNF language specification -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/admin/grammars/srecode-template.wy b/admin/grammars/srecode-template.wy index c0e1f64d597..fd2d5aed3fd 100644 --- a/admin/grammars/srecode-template.wy +++ b/admin/grammars/srecode-template.wy @@ -1,6 +1,6 @@ ;;; srecode-template.wy --- Semantic Recoder Template parser -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: syntax diff --git a/admin/last-chance.el b/admin/last-chance.el index e96d1354faa..13974e1e5c5 100644 --- a/admin/last-chance.el +++ b/admin/last-chance.el @@ -1,6 +1,6 @@ ;;; last-chance.el --- dangling deterrence -*- lexical-binding: t; -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Author: Thien-Thi Nguyen ;; Maintainer: emacs-devel@gnu.org diff --git a/admin/make-emacs b/admin/make-emacs index 15ac1876aa8..bf45ba2f479 100755 --- a/admin/make-emacs +++ b/admin/make-emacs @@ -2,7 +2,7 @@ # Build Emacs with various options for profiling, debugging, # with and without warnings enabled etc. -# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 2001-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/make-manuals b/admin/make-manuals index ae2347863f6..29fbcebc310 100755 --- a/admin/make-manuals +++ b/admin/make-manuals @@ -1,7 +1,7 @@ #!/bin/bash ### make-manuals - create the Emacs manuals to upload to the gnu.org website -## Copyright 2018-2025 Free Software Foundation, Inc. +## Copyright 2018-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/admin/merge-gnulib b/admin/merge-gnulib index 34b1dda1d58..c64c9647d11 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -4,7 +4,7 @@ # # admin/merge-gnulib -# Copyright 2012-2025 Free Software Foundation, Inc. +# Copyright 2012-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/merge-pkg-config b/admin/merge-pkg-config index 75a8b7c7c2b..eb697fd8498 100755 --- a/admin/merge-pkg-config +++ b/admin/merge-pkg-config @@ -4,7 +4,7 @@ # # admin/merge-pkg-config -# Copyright 2014-2025 Free Software Foundation, Inc. +# Copyright 2014-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/notes/copyright b/admin/notes/copyright index bf1687085e3..4ae98746b2e 100644 --- a/admin/notes/copyright +++ b/admin/notes/copyright @@ -1,4 +1,4 @@ -Copyright (C) 2007-2025 Free Software Foundation, Inc. +Copyright (C) 2007-2026 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -7,7 +7,7 @@ NOTES ON COPYRIGHTS AND LICENSES Some terminology: A "copyright notice" consists of one or a few lines of this format: -"Copyright (C) 2007-2025 Free Software Foundation, Inc." +"Copyright (C) 2007-2026 Free Software Foundation, Inc." A "license notice" is a statement of permissions, and is usually much longer, eg the text "GNU Emacs is free software...". diff --git a/admin/notes/elpa b/admin/notes/elpa deleted file mode 100644 index afcda71d1dd..00000000000 --- a/admin/notes/elpa +++ /dev/null @@ -1,35 +0,0 @@ -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 https://git.savannah.gnu.org/git/emacs/elpa - cd elpa - make setup - -That leaves the elpa/packages directory empty; you must check out the -ones you want. - -If you wish to check out all the packages into the packages directory, -you can run the command: - - make worktrees - -You can check out a specific package into the packages -directory with: - - make packages/ - - -Changes to this repository propagate to elpa.gnu.org via a -"deployment" script run daily. This script generates the content -visible at https://elpa.gnu.org/packages. - -A new package is released as soon as the "version number" of that -package is changed. So you can use 'elpa' to work on a package -without fear of releasing those changes prematurely. And once the -code is ready, just bump the version number to make a new release of -the package. - -It is easy to use the elpa branch to deploy a "local" copy of the -package archive. For details, see the README file in the elpa branch. diff --git a/admin/notes/elpa.md b/admin/notes/elpa.md new file mode 100644 index 00000000000..791f0dec677 --- /dev/null +++ b/admin/notes/elpa.md @@ -0,0 +1,43 @@ +# NOTES ON THE EMACS PACKAGE ARCHIVE + +The Emacs package archives at `elpa.gnu.org` (GNU ELPA and NonGNU ELPA) +are managed using two Git repositories named `gnu.git` and `nongnu.git` +hosted in the `elpa` group on Savannah. +To check them out: + + git clone https://git.savannah.gnu.org/git/elpa/gnu.git + cd gnu + make setup + +resp. + + git clone https://git.savannah.gnu.org/git/elpa/nongnu.git + cd nongnu + make setup + +That leaves the `(non)gnu/packages` directory empty; you must check out the +ones you want. + +If you wish to check out all the packages into the packages directory, +you can run the command: + + make worktrees + +You can check out a specific package into the packages +directory with: + + make packages/ + +Changes to this repository propagate to `elpa.gnu.org` via a +"deployment" script run daily. This script generates the content +visible at https://elpa.gnu.org/packages and https://elpa.nongnu.org/nongnu + +A new package is released as soon as the "version number" of that +package is changed (as found in the `;; Version:` header of the main +ELisp file of the package). So you can use `elpa/(non)gnu.git` to work +on a package without fear of releasing those changes prematurely. +And once the code is ready, just bump the version number to make a new +release of the package. + +It is easy to use these repositories to deploy a "local" copy of the +package archive. For details, see the README file after cloning them. diff --git a/admin/notes/emba b/admin/notes/emba index 515edd3435f..4bf6f3a9c76 100644 --- a/admin/notes/emba +++ b/admin/notes/emba @@ -1,6 +1,6 @@ -*- mode: outline; coding: utf-8 -*- -Copyright (C) 2019-2025 Free Software Foundation, Inc. +Copyright (C) 2019-2026 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS CONTINUOUS BUILD ON EMBA diff --git a/admin/notes/hydra b/admin/notes/hydra index 2c29cd73afb..344df286cf6 100644 --- a/admin/notes/hydra +++ b/admin/notes/hydra @@ -1,6 +1,6 @@ -*- mode: outline; coding: utf-8 -*- -Copyright (C) 2013-2025 Free Software Foundation, Inc. +Copyright (C) 2013-2026 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS CONTINUOUS BUILD ON HYDRA diff --git a/admin/notes/java b/admin/notes/java index 9a7c925e123..61777fe67a2 100644 --- a/admin/notes/java +++ b/admin/notes/java @@ -1,5 +1,5 @@ Installation instructions for Android -Copyright (C) 2023-2025 Free Software Foundation, Inc. +Copyright (C) 2023-2026 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -453,7 +453,7 @@ See http://docs.oracle.com/en/java/javase/19/docs/specs/jni/intro.html for more details. Java does not support `goto' statements, which it defines as reserved -identifiers but does not assign any syntatic role. If you are in a +identifiers but does not assign any syntactic role. If you are in a position where you must exercise `goto' to exit a block prematurely, you may define the block and exit it with a named `break' statement, thus: diff --git a/admin/notes/multi-tty b/admin/notes/multi-tty index 11ff90ceb5d..7783eb395e7 100644 --- a/admin/notes/multi-tty +++ b/admin/notes/multi-tty @@ -1,6 +1,6 @@ -*- coding: utf-8; mode: text; -*- -Copyright (C) 2007-2025 Free Software Foundation, Inc. +Copyright (C) 2007-2026 Free Software Foundation, Inc. See the end of the file for license conditions. From README.multi-tty in the multi-tty branch. diff --git a/admin/notes/repo b/admin/notes/repo index c5caec11e35..2ed51c5cfc7 100644 --- a/admin/notes/repo +++ b/admin/notes/repo @@ -54,8 +54,8 @@ We do not intend to "git merge" from scratch branches, so force-pushes are tolerated, as well as commits with poor style, incomplete commit messages, etc. -We do expect to "git merge" from feature branches so: no force push, -and no commits that don't have a proper commit message. +We do expect to "git merge" from feature branches so no force pushes. +Also cf. "Long-lived feature branches" in admin/notes/git-workflow. Automatic tests are run for feature/* branches on EMBA. See: https://emba.gnu.org/emacs/emacs/-/pipelines diff --git a/admin/notes/unicode b/admin/notes/unicode index 21ce2c4cda3..054b54e319e 100644 --- a/admin/notes/unicode +++ b/admin/notes/unicode @@ -1,6 +1,6 @@ -*-mode: text; coding: utf-8;-*- -Copyright (C) 2002-2025 Free Software Foundation, Inc. +Copyright (C) 2002-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Importing a new Unicode Standard version into Emacs diff --git a/admin/notes/www b/admin/notes/www index 369b3657bd6..47bea4375ce 100644 --- a/admin/notes/www +++ b/admin/notes/www @@ -1,6 +1,6 @@ -*- outline -*- -Copyright (C) 2013-2025 Free Software Foundation, Inc. +Copyright (C) 2013-2026 Free Software Foundation, Inc. See the end of the file for license conditions. NOTES FOR EMACS WWW PAGES diff --git a/admin/notes/years b/admin/notes/years index 9c0b9a81886..7b3fad97556 100644 --- a/admin/notes/years +++ b/admin/notes/years @@ -9,22 +9,18 @@ results for plausibility, then commit them. A few known problems with the build-aux/update-copyright script: - . it doesn't update config.bat, msdos/depfiles.bat, - nt/configure.bat, etc/tutorials/TUTORIAL.cn, - etc/tutorials/TUTORIAL.el_GR, etc/tutorials/TUTORIAL.he, - because the "Copyright" statement begins in these files - after a prefix that is more than 5 characters long - . it doesn't update etc/tutorials/TUTORIAL.nl, - etc/tutorials/TUTORIAL.ro, and msdos/autogen/Makefile.in, - for some reason + . it doesn't update config.bat, msdos/depfiles.bat, nt/configure.bat, + etc/tutorials/TUTORIAL.el_GR, etc/tutorials/TUTORIAL.he, because the + "Copyright" statement begins in these files after a prefix that is + more than 5 characters long . it doesn't update the second Copyright notice, the one that gets output into PDF and PS, in etc/refcards/ru-refcard.tex + . it doesn't update the copyright year down in the output of + lib-src/rcs2log and msdos/sed2v2.inp . it doesn't update etc/refcards/gnus-refcard.tex, doc/misc/org.org, nt/emacs.rc.in, and nt/emacsclient.rc.in, because their Copyright statements have a non-standard format - . several README files under etc/images/, and also - etc/refcards/README, msdos/README, and nt/icons/README aren't - updated either + . several README files under etc/images/ aren't updated either . the copyright notices for headers generated by configure.ac and exec/configure.ac are not updated as the files already bear notices above them diff --git a/admin/nt/README-UNDUMP.W32 b/admin/nt/README-UNDUMP.W32 index 91fe51671fc..de56f94caf0 100644 --- a/admin/nt/README-UNDUMP.W32 +++ b/admin/nt/README-UNDUMP.W32 @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Emacs for Windows diff --git a/admin/nt/dist-build/README-windows-binaries b/admin/nt/dist-build/README-windows-binaries index b42c00e1912..50b2244147c 100644 --- a/admin/nt/dist-build/README-windows-binaries +++ b/admin/nt/dist-build/README-windows-binaries @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Precompiled Distributions of diff --git a/admin/nt/dist-build/build-dep-zips.py b/admin/nt/dist-build/build-dep-zips.py index af3036eb8e6..5c760fb21ce 100755 --- a/admin/nt/dist-build/build-dep-zips.py +++ b/admin/nt/dist-build/build-dep-zips.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 -## Copyright (C) 2017-2025 Free Software Foundation, Inc. +## Copyright (C) 2017-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/nt/dist-build/build-zips.sh b/admin/nt/dist-build/build-zips.sh index 53b41ef6b49..f825cb53fa7 100755 --- a/admin/nt/dist-build/build-zips.sh +++ b/admin/nt/dist-build/build-zips.sh @@ -1,6 +1,6 @@ #!/bin/bash -## Copyright (C) 2017-2025 Free Software Foundation, Inc. +## Copyright (C) 2017-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs index 5453456d09c..dcc34f914c7 100755 --- a/admin/quick-install-emacs +++ b/admin/quick-install-emacs @@ -1,7 +1,7 @@ #!/bin/sh ### quick-install-emacs --- do a halfway-decent job of installing emacs quickly -## Copyright (C) 2001-2025 Free Software Foundation, Inc. +## Copyright (C) 2001-2026 Free Software Foundation, Inc. ## Author: Miles Bader diff --git a/admin/run-codespell b/admin/run-codespell index f5728f831f0..48ac8f6c707 100755 --- a/admin/run-codespell +++ b/admin/run-codespell @@ -1,7 +1,7 @@ #!/usr/bin/env bash ### run-codespell - run codespell on Emacs -## Copyright (C) 2023-2025 Free Software Foundation, Inc. +## Copyright (C) 2023-2026 Free Software Foundation, Inc. ## Author: Stefan Kangas diff --git a/admin/syncdoc-type-hierarchy.el b/admin/syncdoc-type-hierarchy.el index e58675c6e3c..579a4cca751 100644 --- a/admin/syncdoc-type-hierarchy.el +++ b/admin/syncdoc-type-hierarchy.el @@ -1,6 +1,6 @@ ;;; syncdoc-type-hierarchy.el--- -*- lexical-binding: t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo ;; Keywords: documentation diff --git a/admin/tree-sitter/treesit-admin.el b/admin/tree-sitter/treesit-admin.el index a76e105e908..5e78f930443 100644 --- a/admin/tree-sitter/treesit-admin.el +++ b/admin/tree-sitter/treesit-admin.el @@ -1,6 +1,6 @@ ;;; treesit-admin.el --- Tree-sitter related admin scripts -*- lexical-binding: t; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Maintainer: 付禹安 (Yuan Fu) ;; Keywords: maint @@ -138,14 +138,12 @@ This is done by `require'ing all of the features that extend it." (lambda (source) (cond ((or (memq :revision source) (memq :commit source)) - (when (memq :revision source) - (let ((unversioned-source (copy-sequence source))) - (setcar (cdr (memq :revision unversioned-source)) nil) - unversioned-source)) - (when (memq :commit source) - (let ((unversioned-source (copy-sequence source))) - (setcar (cdr (memq :commit unversioned-source)) nil) - unversioned-source))) + (let ((unversioned-source (copy-sequence source))) + (when (memq :revision source) + (setcar (cdr (memq :revision unversioned-source)) nil)) + (when (memq :commit source) + (setcar (cdr (memq :commit unversioned-source)) nil)) + unversioned-source)) ((nthcdr 2 source) (let ((unversioned-source (copy-sequence source))) (setcar (nthcdr 2 unversioned-source) nil) diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in index 223d3fe9cab..b954990cf9e 100644 --- a/admin/unidata/Makefile.in +++ b/admin/unidata/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2012-2025 Free Software Foundation, Inc. +# Copyright (C) 2012-2026 Free Software Foundation, Inc. # Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/unidata/blocks.awk b/admin/unidata/blocks.awk index 3d7041c4ce4..477f0c725bd 100755 --- a/admin/unidata/blocks.awk +++ b/admin/unidata/blocks.awk @@ -1,6 +1,6 @@ #!/usr/bin/awk -f -## Copyright (C) 2015-2025 Free Software Foundation, Inc. +## Copyright (C) 2015-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/admin/unidata/emoji-zwj.awk b/admin/unidata/emoji-zwj.awk index 5eccb7af4a9..1cb7508e443 100644 --- a/admin/unidata/emoji-zwj.awk +++ b/admin/unidata/emoji-zwj.awk @@ -1,6 +1,6 @@ #!/usr/bin/awk -f -## Copyright (C) 2020, 2022-2025 Free Software Foundation, Inc. +## Copyright (C) 2020, 2022-2026 Free Software Foundation, Inc. ## Author: Robert Pluim diff --git a/admin/unidata/unidata-gen.el b/admin/unidata/unidata-gen.el index ac3328787f0..cdbb7b09bae 100644 --- a/admin/unidata/unidata-gen.el +++ b/admin/unidata/unidata-gen.el @@ -1,6 +1,6 @@ ;;; unidata-gen.el --- Create files containing character property data -*- lexical-binding:t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/admin/unidata/uvs.el b/admin/unidata/uvs.el index 5e6caec60aa..14a16a609d9 100644 --- a/admin/unidata/uvs.el +++ b/admin/unidata/uvs.el @@ -1,6 +1,6 @@ ;;; uvs.el --- utility for UVS (format 14) cmap subtables in OpenType fonts -*- lexical-binding:t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: YAMAMOTO Mitsuharu diff --git a/admin/update-copyright b/admin/update-copyright index fd1396e60e2..e4d50d5baa3 100755 --- a/admin/update-copyright +++ b/admin/update-copyright @@ -7,7 +7,7 @@ # By default, this script uses the local-time calendar year. # Set the UPDATE_COPYRIGHT_YEAR environment variable to override the default. -# Copyright 2013-2025 Free Software Foundation, Inc. +# Copyright 2013-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/admin/update_autogen b/admin/update_autogen index 06f930175be..f785118e12c 100755 --- a/admin/update_autogen +++ b/admin/update_autogen @@ -1,7 +1,7 @@ #!/usr/bin/env bash ### update_autogen - update some auto-generated files in the Emacs tree -## Copyright (C) 2011-2025 Free Software Foundation, Inc. +## Copyright (C) 2011-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: Stefan Kangas diff --git a/admin/upload-manuals b/admin/upload-manuals index 3624a7ed3a7..d8fa0a33892 100755 --- a/admin/upload-manuals +++ b/admin/upload-manuals @@ -2,7 +2,7 @@ ### upload-manuals - upload the Emacs manuals to the gnu.org website -## Copyright 2018-2025 Free Software Foundation, Inc. +## Copyright 2018-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/autogen.sh b/autogen.sh index b46d1e6c90a..a61d74b981d 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,7 +1,7 @@ #!/bin/sh ### autogen.sh - tool to help build Emacs from a repository checkout -## Copyright (C) 2011-2025 Free Software Foundation, Inc. +## Copyright (C) 2011-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/build-aux/git-hooks/commit-msg b/build-aux/git-hooks/commit-msg index a52862bf745..159990b1406 100755 --- a/build-aux/git-hooks/commit-msg +++ b/build-aux/git-hooks/commit-msg @@ -1,7 +1,7 @@ #!/bin/sh # Check the format of GNU Emacs change log entries. -# Copyright 2014-2025 Free Software Foundation, Inc. +# Copyright 2014-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/commit-msg-files.awk b/build-aux/git-hooks/commit-msg-files.awk index 2595b66b808..852488b551e 100644 --- a/build-aux/git-hooks/commit-msg-files.awk +++ b/build-aux/git-hooks/commit-msg-files.awk @@ -1,6 +1,6 @@ # Check the file list of GNU Emacs change log entries for each commit SHA. -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/post-commit b/build-aux/git-hooks/post-commit index d5d7b585fa3..73fd5b28780 100755 --- a/build-aux/git-hooks/post-commit +++ b/build-aux/git-hooks/post-commit @@ -1,7 +1,7 @@ #!/bin/sh # Check the file list of GNU Emacs change log entries after committing. -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit index b38c06175d7..987d3d6b616 100755 --- a/build-aux/git-hooks/pre-commit +++ b/build-aux/git-hooks/pre-commit @@ -1,7 +1,7 @@ #!/bin/sh # Check file names in git commits for GNU Emacs. -# Copyright 2014-2025 Free Software Foundation, Inc. +# Copyright 2014-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/pre-push b/build-aux/git-hooks/pre-push index b88a8ed8502..81ba85697c3 100755 --- a/build-aux/git-hooks/pre-push +++ b/build-aux/git-hooks/pre-push @@ -1,7 +1,7 @@ #!/bin/sh # Check the file list of GNU Emacs change log entries before pushing. -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/git-hooks/prepare-commit-msg b/build-aux/git-hooks/prepare-commit-msg index e8243e157cd..c91367518b6 100755 --- a/build-aux/git-hooks/prepare-commit-msg +++ b/build-aux/git-hooks/prepare-commit-msg @@ -1,7 +1,7 @@ #!/bin/sh # Check the format of GNU Emacs change log entries. -# Copyright 2019-2025 Free Software Foundation, Inc. +# Copyright 2019-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/build-aux/gitlog-to-changelog b/build-aux/gitlog-to-changelog index 0c751f95703..134833a984b 100755 --- a/build-aux/gitlog-to-changelog +++ b/build-aux/gitlog-to-changelog @@ -3,7 +3,7 @@ # Convert git log output to ChangeLog format. -# Copyright (C) 2008-2025 Free Software Foundation, Inc. +# Copyright (C) 2008-2026 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/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog index c15a732293b..7019261bfc1 100755 --- a/build-aux/gitlog-to-emacslog +++ b/build-aux/gitlog-to-emacslog @@ -2,7 +2,7 @@ # Convert git log output to ChangeLog format for GNU Emacs. -# Copyright (C) 2014-2025 Free Software Foundation, Inc. +# Copyright (C) 2014-2026 Free Software Foundation, Inc. # Author: Paul Eggert diff --git a/build-aux/make-info-dir b/build-aux/make-info-dir index c355bec63e9..243cb813b32 100755 --- a/build-aux/make-info-dir +++ b/build-aux/make-info-dir @@ -2,7 +2,7 @@ ### make-info-dir - create info/dir, for systems without install-info -## Copyright (C) 2013-2025 Free Software Foundation, Inc. +## Copyright (C) 2013-2026 Free Software Foundation, Inc. ## Author: Glenn Morris ## Maintainer: emacs-devel@gnu.org diff --git a/build-aux/makecounter.sh b/build-aux/makecounter.sh index 8baa7af62af..e39e85bfbe4 100755 --- a/build-aux/makecounter.sh +++ b/build-aux/makecounter.sh @@ -2,7 +2,7 @@ # Generate or update a C file containing an increasing counter # variable. # -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 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 diff --git a/build-aux/move-if-change b/build-aux/move-if-change index 90b8152ad84..19c3ced7ca1 100755 --- a/build-aux/move-if-change +++ b/build-aux/move-if-change @@ -8,7 +8,7 @@ VERSION='2025-06-10 02:42'; # UTC # If you change this file with Emacs, please let the write hook # do its job. Otherwise, update this string manually. -# Copyright (C) 2002-2025 Free Software Foundation, Inc. +# Copyright (C) 2002-2026 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/build-aux/msys-to-w32 b/build-aux/msys-to-w32 index c8fa6d2b04c..bd0e8773321 100755 --- a/build-aux/msys-to-w32 +++ b/build-aux/msys-to-w32 @@ -2,7 +2,7 @@ # Convert a MSYS path list to Windows-native format. # Status is zero if successful, nonzero otherwise. -# Copyright (C) 2013-2025 Free Software Foundation, Inc. +# Copyright (C) 2013-2026 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/build-aux/ndk-build-helper-1.mk b/build-aux/ndk-build-helper-1.mk index a70c813cbd8..d56d74df14c 100644 --- a/build-aux/ndk-build-helper-1.mk +++ b/build-aux/ndk-build-helper-1.mk @@ -1,5 +1,5 @@ # ndk-build-helper-1.mk -- Helper for ndk-build.m4. -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs is free software: you can redistribute it and/or modify diff --git a/build-aux/ndk-build-helper-2.mk b/build-aux/ndk-build-helper-2.mk index 879c7fc236b..643f24d7bee 100644 --- a/build-aux/ndk-build-helper-2.mk +++ b/build-aux/ndk-build-helper-2.mk @@ -1,5 +1,5 @@ # ndk-build-helper-2.mk -- Helper for ndk-build.m4. -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs is free software: you can redistribute it and/or modify diff --git a/build-aux/ndk-build-helper-3.mk b/build-aux/ndk-build-helper-3.mk index 57a51dd9be7..42b5ae99410 100644 --- a/build-aux/ndk-build-helper-3.mk +++ b/build-aux/ndk-build-helper-3.mk @@ -1,5 +1,5 @@ # ndk-build-helper-3.mk -- Helper for ndk-build.m4. -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs is free software: you can redistribute it and/or modify diff --git a/build-aux/ndk-build-helper-4.mk b/build-aux/ndk-build-helper-4.mk index 2fe4f8b61f4..ad13e43fe07 100644 --- a/build-aux/ndk-build-helper-4.mk +++ b/build-aux/ndk-build-helper-4.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs is free software: you can redistribute it and/or modify diff --git a/build-aux/ndk-build-helper.mk b/build-aux/ndk-build-helper.mk index edd926ff9f6..9ce36a175d7 100644 --- a/build-aux/ndk-build-helper.mk +++ b/build-aux/ndk-build-helper.mk @@ -1,5 +1,5 @@ # ndk-build-helper.mk -- Helper for ndk-build.m4. -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. # GNU Emacs is free software: you can redistribute it and/or modify diff --git a/build-aux/update-copyright b/build-aux/update-copyright index 592bd8b2695..b50bec9ac5d 100755 --- a/build-aux/update-copyright +++ b/build-aux/update-copyright @@ -3,7 +3,7 @@ # Update an FSF copyright year list to include the current year. -# Copyright (C) 2009-2025 Free Software Foundation, Inc. +# Copyright (C) 2009-2026 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 @@ -47,8 +47,8 @@ # Each file's copyright statement must be formatted correctly in # order to be recognized. For example, each of these is fine: # -# Copyright @copyright{} 1990-2005, 2007-2009, 2025 Free Software Foundation, -# Inc. +# Copyright @copyright{} 1990-2005, 2007-2009, 2025-2026 Free Software +# Foundation, Inc. # # # Copyright (C) 1990-2005, 2007-2009 Free Software # # Foundation, Inc. diff --git a/build-aux/update-subdirs b/build-aux/update-subdirs index b25ad855f4a..44c84c330aa 100755 --- a/build-aux/update-subdirs +++ b/build-aux/update-subdirs @@ -1,7 +1,7 @@ #!/bin/sh # Write into $1/subdirs.el a list of subdirs of directory $1. -# Copyright (C) 1994-1995, 1997, 1999, 2001-2025 Free Software +# Copyright (C) 1994-1995, 1997, 1999, 2001-2026 Free Software # Foundation, Inc. # This file is part of GNU Emacs. diff --git a/config.bat b/config.bat index 393c950074e..91d41f8fbfb 100644 --- a/config.bat +++ b/config.bat @@ -1,7 +1,7 @@ @echo off rem ---------------------------------------------------------------------- rem Configuration script for MSDOS -rem Copyright (C) 1994-1999, 2001-2025 Free Software Foundation, Inc. +rem Copyright (C) 1994-1999, 2001-2026 Free Software Foundation, Inc. rem This file is part of GNU Emacs. diff --git a/configure.ac b/configure.ac index 9d113be88d5..420ab6dabe6 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ dnl autoconf dnl in the directory containing this script. dnl If you changed any AC_DEFINES, also run autoheader. dnl -dnl Copyright (C) 1994-1996, 1999-2025 Free Software Foundation, Inc. +dnl Copyright (C) 1994-1996, 1999-2026 Free Software Foundation, Inc. dnl dnl This file is part of GNU Emacs. dnl @@ -1804,6 +1804,7 @@ AS_IF([test $gl_gcc_warnings = no], nw="$nw -Wsync-nand" # irrelevant here, and provokes ObjC warning nw="$nw -Wunsafe-loop-optimizations" # OK to suppress unsafe optimizations nw="$nw -Wbad-function-cast" # These casts are no worse than others. + nw="$nw -Wzero-as-null-pointer-constant" # Emacs is not yet C2y-safe. # Emacs doesn't care about shadowing; see # . @@ -2886,6 +2887,11 @@ Mac OS X 12.x or later. [Define to use native OS APIs for images.]) NATIVE_IMAGE_API="yes (ns)" fi + + if test "${NS_IMPL_GNUSTEP}" = yes; then + AC_CHECK_DECLS([NSImageNameCaution], [], [], + [[#import ]]) + fi fi AC_SUBST([LIBS_GNUSTEP]) @@ -3590,21 +3596,25 @@ if test "${with_webp}" != "no"; then || test "${HAVE_BE_APP}" = "yes" || test "${HAVE_PGTK}" = "yes" \ || test "${REALLY_ANDROID}" = "yes"; then WEBP_REQUIRED=0.6.0 - WEBP_MODULE="libwebpdemux >= $WEBP_REQUIRED" + # Definitions from webp/decode.h are in libwebp, and those from + # webp/demux.h in libwebpdemux, which depends on libwebp. + WEBP_MODULE="libwebpdemux >= $WEBP_REQUIRED libwebp >= $WEBP_REQUIRED" EMACS_CHECK_MODULES([WEBP], [$WEBP_MODULE]) - # WebPGetInfo is sometimes not present inside libwebpdemux, so - # if it does not link, also check for libwebpdecoder. + # If for some reason we still don't have functions from + # webp/decode.h, try libwebpdecoder as well, which is the + # decoder-only subset of libwebp (bug#61988, bug#66221). OLD_CFLAGS=$CFLAGS OLD_LIBS=$LIBS CFLAGS="$CFLAGS $WEBP_CFLAGS" - LIBS="$LIBS $WEBP_LIBS" + LIBS="$WEBP_LIBS $LIBS" AS_IF([test "$REALLY_ANDROID" != "yes"], [ - AC_CHECK_FUNC([WebPGetInfo], [], - [WEBP_MODULE="$WEBP_MODULE libwebpdecoder >= $WEBP_REQUIRED" + AC_CHECK_FUNC([WebPDecodeRGBA], [], + [WEBP_MODULE="libwebpdemux >= $WEBP_REQUIRED" + WEBP_MODULE="$WEBP_MODULE libwebpdecoder >= $WEBP_REQUIRED" HAVE_WEBP=no AS_UNSET([WEBP_LIBS]) AS_UNSET([WEBP_CFLAGS]) @@ -4059,39 +4069,15 @@ TREE_SITTER_OBJ= NEED_DYNLIB=no if test "${with_tree_sitter}" != "no"; then - dnl Tree-sitter 0.20.2 added support to change the malloc it uses - dnl at runtime, we need that feature. However, tree-sitter's - dnl Makefile has problems, until that's fixed, all tree-sitter - dnl libraries distributed are versioned 0.6.3. We try to - dnl accept a tree-sitter library that has incorrect version as long - dnl as it supports changing malloc. - EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.20.2], + dnl Tree-sitter 0.20.10 added ts_tree_cursor_goto_previous_sibling, we + dnl need it for a more efficient implementation for traversing the + dnl parse tree backwards (bug#80108). + EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.20.10], [HAVE_TREE_SITTER=yes], [HAVE_TREE_SITTER=no]) if test "${HAVE_TREE_SITTER}" = yes; then AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.]) NEED_DYNLIB=yes - else - EMACS_CHECK_MODULES([TREE_SITTER], [tree-sitter >= 0.6.3], - [HAVE_TREE_SITTER=yes], [HAVE_TREE_SITTER=no]) - if test "${HAVE_TREE_SITTER}" = yes; then - OLD_CFLAGS=$CFLAGS - OLD_LIBS=$LIBS - CFLAGS="$CFLAGS $TREE_SITTER_CFLAGS" - LIBS="$TREE_SITTER_LIBS $LIBS" - AC_CHECK_FUNCS([ts_set_allocator]) - CFLAGS=$OLD_CFLAGS - LIBS=$OLD_LIBS - if test "$ac_cv_func_ts_set_allocator" = yes; then - AC_DEFINE(HAVE_TREE_SITTER, 1, [Define if using tree-sitter.]) - NEED_DYNLIB=yes - else - AC_MSG_ERROR([Tree-sitter library exists but its version is too old]); - TREE_SITTER_CFLAGS= - TREE_SITTER_LIBS= - fi - fi fi - # Windows loads tree-sitter dynamically if test "${opsys}" = "mingw32"; then TREE_SITTER_LIBS= @@ -7143,7 +7129,7 @@ fi version=$PACKAGE_VERSION -copyright="Copyright (C) 2025 Free Software Foundation, Inc." +copyright="Copyright (C) 2026 Free Software Foundation, Inc." AC_DEFINE_UNQUOTED([COPYRIGHT], ["$copyright"], [Short copyright string for this version of Emacs.]) AC_SUBST([copyright]) @@ -7195,6 +7181,9 @@ AC_SUBST([ns_appsrc]) AC_SUBST([GNU_OBJC_CFLAGS]) AC_SUBST([OTHER_FILES]) +AS_IF([test $prefix = "NONE"], [_prefix=/usr/local], [_prefix=$prefix]) +AC_DEFINE_UNQUOTED([BINDIR], ["${_prefix}/bin/"], [Executables directory.]) + if test -n "${term_header}"; then AC_DEFINE_UNQUOTED([TERM_HEADER], ["${term_header}"], [Define to the header for the built-in window system.]) @@ -7523,7 +7512,7 @@ AC_SUBST([WINDOW_SYSTEM_OBJ]) AH_TOP([/* GNU Emacs site configuration template file. -Copyright (C) 1988-2025 Free Software Foundation, Inc. +Copyright (C) 1988-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/cross/Makefile.in b/cross/Makefile.in index b1322ea4c5b..0876ef8e314 100644 --- a/cross/Makefile.in +++ b/cross/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/langinfo.h b/cross/langinfo.h index bdd4f92858b..cf7017bce8f 100644 --- a/cross/langinfo.h +++ b/cross/langinfo.h @@ -1,6 +1,6 @@ /* Replacement langinfo.h file for building GNU Emacs on Android. -Copyright (C) 2023-2025 Free Software Foundation, Inc. +Copyright (C) 2023-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/cross/ndk-build/Makefile.in b/cross/ndk-build/Makefile.in index 79d0820c1b4..76fa7cc53e1 100644 --- a/cross/ndk-build/Makefile.in +++ b/cross/ndk-build/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/README b/cross/ndk-build/README index f76ee9f30f4..3c9e31dbc25 100644 --- a/cross/ndk-build/README +++ b/cross/ndk-build/README @@ -1,6 +1,6 @@ NDK BUILD SYSTEM IMPLEMENTATION -Copyright (C) 2023-2025 Free Software Foundation, Inc. +Copyright (C) 2023-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Emacs implements ndk-build itself, because the version that comes with diff --git a/cross/ndk-build/ndk-build-executable.mk b/cross/ndk-build/ndk-build-executable.mk index 533a8f132b6..03ac61579ef 100644 --- a/cross/ndk-build/ndk-build-executable.mk +++ b/cross/ndk-build/ndk-build-executable.mk @@ -1,4 +1,4 @@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-build-shared-library.mk b/cross/ndk-build/ndk-build-shared-library.mk index bca96f3895e..45f9da85b72 100644 --- a/cross/ndk-build/ndk-build-shared-library.mk +++ b/cross/ndk-build/ndk-build-shared-library.mk @@ -1,4 +1,4 @@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-build-static-library.mk b/cross/ndk-build/ndk-build-static-library.mk index 27e924c01f9..a76d71eb5f0 100644 --- a/cross/ndk-build/ndk-build-static-library.mk +++ b/cross/ndk-build/ndk-build-static-library.mk @@ -1,4 +1,4 @@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-build.mk.in b/cross/ndk-build/ndk-build.mk.in index d0855bebcfc..2640224df1c 100644 --- a/cross/ndk-build/ndk-build.mk.in +++ b/cross/ndk-build/ndk-build.mk.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2023-2025 Free Software Foundation, Inc. +# Copyright (C) 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-clear-vars.mk b/cross/ndk-build/ndk-clear-vars.mk index be36284f0d3..69c1c28a045 100644 --- a/cross/ndk-build/ndk-clear-vars.mk +++ b/cross/ndk-build/ndk-clear-vars.mk @@ -1,4 +1,4 @@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-prebuilt-shared-library.mk b/cross/ndk-build/ndk-prebuilt-shared-library.mk index c50d7ab3147..c0691469fc9 100644 --- a/cross/ndk-build/ndk-prebuilt-shared-library.mk +++ b/cross/ndk-build/ndk-prebuilt-shared-library.mk @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-prebuilt-static-library.mk b/cross/ndk-build/ndk-prebuilt-static-library.mk index 2e07b5ce380..8785beb7cbc 100644 --- a/cross/ndk-build/ndk-prebuilt-static-library.mk +++ b/cross/ndk-build/ndk-prebuilt-static-library.mk @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/ndk-build/ndk-resolve.mk b/cross/ndk-build/ndk-resolve.mk index fedca37288d..11afb0bfaa4 100644 --- a/cross/ndk-build/ndk-resolve.mk +++ b/cross/ndk-build/ndk-resolve.mk @@ -1,4 +1,4 @@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2023-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/cross/verbose.mk.android b/cross/verbose.mk.android index 08c0b66a92d..75746ff67ac 100644 --- a/cross/verbose.mk.android +++ b/cross/verbose.mk.android @@ -1,7 +1,7 @@ ### verbose.mk --- Makefile fragment for GNU Emacs during ### cross-compilation. -## Copyright (C) 2023-2025 Free Software Foundation, Inc. +## Copyright (C) 2023-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index 67e00ee7b45..1f3240ac709 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -10919,7 +10919,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/emacs/Makefile.in b/doc/emacs/Makefile.in index f93309520e8..1801b0be204 100644 --- a/doc/emacs/Makefile.in +++ b/doc/emacs/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/emacs/abbrevs.texi b/doc/emacs/abbrevs.texi index 4ee8e759570..764adde0d5c 100644 --- a/doc/emacs/abbrevs.texi +++ b/doc/emacs/abbrevs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Abbrevs diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index dd783da35a6..003047fc547 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1994--1997, 1999--2025 Free Software Foundation, Inc. +@c Copyright (C) 1994--1997, 1999--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @node Acknowledgments @@ -1423,6 +1423,10 @@ from Jamie Zawinski. Rodney Whitby and Reto Zimmermann wrote @file{vhdl-mode.el}, a major mode for editing VHDL source code. +@item +Sean Whitton was the Emacs (co-)maintainer from Emacs 31.1 onwards, and +wrote many extensions and new features for VC. + @item John Wiegley was the Emacs (co-)maintainer from Emacs 25 to 29.1. He wrote @file{align.el}, a set of commands for aligning text according diff --git a/doc/emacs/android.texi b/doc/emacs/android.texi index 8b00ea94cb3..bc596d766ff 100644 --- a/doc/emacs/android.texi +++ b/doc/emacs/android.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2023--2025 Free Software Foundation, Inc. +@c Copyright (C) 2023--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Android @appendix Emacs and Android diff --git a/doc/emacs/anti.texi b/doc/emacs/anti.texi index e525afd5abb..5e2a6cb5eb7 100644 --- a/doc/emacs/anti.texi +++ b/doc/emacs/anti.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 2005--2025 Free Software Foundation, Inc. +@c Copyright (C) 2005--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Antinews diff --git a/doc/emacs/arevert-xtra.texi b/doc/emacs/arevert-xtra.texi index 3914f8fc16e..d31fc1e80cd 100644 --- a/doc/emacs/arevert-xtra.texi +++ b/doc/emacs/arevert-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/back.texi b/doc/emacs/back.texi index 3bfd7eb07cd..b326153a063 100644 --- a/doc/emacs/back.texi +++ b/doc/emacs/back.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @c diff --git a/doc/emacs/basic.texi b/doc/emacs/basic.texi index abfd8c6d436..11ee6684cd5 100644 --- a/doc/emacs/basic.texi +++ b/doc/emacs/basic.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Basic diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 2bcf0c318b5..9ec7c0e1eda 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Buffers diff --git a/doc/emacs/building.texi b/doc/emacs/building.texi index 39c5e79a870..2fd3ccc6d87 100644 --- a/doc/emacs/building.texi +++ b/doc/emacs/building.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Building @@ -64,6 +64,12 @@ named @file{*compilation*}. The current buffer's default directory is used as the working directory for the execution of the command, so by default compilation takes place in that directory. + When invoked with a prefix argument, the @file{*compilation*} buffer +is using Comint mode as its major mode (@pxref{Shell Mode}). By default +Comint mode has the nice property of looking for any credential prompts +in its contents and make Emacs asks for a password if this happens. +This is useful should the compilation command need such a credential. + @vindex compile-command The default compilation command is @samp{make -k}, which is usually correct for programs compiled using the @command{make} utility (the diff --git a/doc/emacs/cal-xtra.texi b/doc/emacs/cal-xtra.texi index a09d5b833a5..f7f28345159 100644 --- a/doc/emacs/cal-xtra.texi +++ b/doc/emacs/cal-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/calendar.texi b/doc/emacs/calendar.texi index 4bfe3f65422..5c673f21988 100644 --- a/doc/emacs/calendar.texi +++ b/doc/emacs/calendar.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Calendar/Diary diff --git a/doc/emacs/cmdargs.texi b/doc/emacs/cmdargs.texi index 79ae2d064d1..3bcf4949581 100644 --- a/doc/emacs/cmdargs.texi +++ b/doc/emacs/cmdargs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Emacs Invocation diff --git a/doc/emacs/commands.texi b/doc/emacs/commands.texi index 591c8fb2cc3..08fb2220a97 100644 --- a/doc/emacs/commands.texi +++ b/doc/emacs/commands.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/custom.texi b/doc/emacs/custom.texi index f7ad5bf108a..b2fcb3c489f 100644 --- a/doc/emacs/custom.texi +++ b/doc/emacs/custom.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Customization @@ -1615,24 +1615,30 @@ your preference, such as @code{ws-butler-mode}. @cindex per-connection local variables Most of the variables reflect the situation on the local machine. -Often, they must use a different value when you operate in buffers -with a remote default directory. Think about the behavior when -calling @code{shell} -- on your local machine, you might use -@file{/bin/bash} and rely on termcap, but on a remote machine, it may -be @file{/bin/ksh} and terminfo. +Often, they must use a different value when you operate in buffers with +a remote default directory. Think about the behavior when calling +@code{shell} --- on your local machine, you might use @file{/bin/bash} +and rely on termcap, but on a remote machine, it may be @file{/bin/ksh} +and terminfo. - This can be accomplished with @dfn{connection-local variables}. -Directory and file local variables override connection-local -variables. Unsafe connection-local variables are handled in the same -way as unsafe file-local variables (@pxref{Safe File Variables}). + This can be accomplished with @dfn{connection-local variables}. Such +variables are declared depending on the value of +@code{default-directory} of the current buffer. When a buffer has a +remote @code{default-directory}, and there exist a connection-local +variable which matches @code{default-directory}, this alternative value +of the variable is used. Directory and file local variables override +connection-local variables. Unsafe connection-local variables are +handled in the same way as unsafe file-local variables (@pxref{Safe File +Variables}). @findex connection-local-set-profile-variables @findex connection-local-set-profiles - Connection-local variables are declared as a group of -variables/value pairs in a @dfn{profile}, using the + Connection-local variables are declared as a group of variables/value +pairs in a @dfn{profile}, using the @code{connection-local-set-profile-variables} function. The function -@code{connection-local-set-profiles} activates profiles for a given -criteria, identifying a remote machine: +@code{connection-local-set-profiles} declares profiles for a given +criteria (the first argument), identifying a remote machine with respect +to @code{default-directory} of the current buffer: @example (connection-local-set-profile-variables 'remote-terminfo @@ -1654,12 +1660,46 @@ criteria, identifying a remote machine: This code declares three different profiles, @code{remote-terminfo}, @code{remote-ksh}, and @code{remote-bash}. The profiles -@code{remote-terminfo} and @code{remote-ksh} are applied to all -buffers which have a remote default directory matching the regexp -@code{"remotemachine"} as host name. Such a criteria can also -discriminate for the properties @code{:protocol} (this is the Tramp -method) or @code{:user} (a remote user name). The @code{nil} criteria -matches all buffers with a remote default directory. +@code{remote-terminfo} and @code{remote-ksh} are applied to all buffers +which have a remote @code{default-directory} matching the string +@code{"remotemachine"} as host name. + + Criteria, the first argument of @code{connection-local-set-profiles}, +specifies, how the profiles match @code{default-directory}. It is a +plist identifying a connection and the application using this +connection. Property names might be @code{:application}, +@code{:protocol}, @code{:user} and @code{:machine}. The property value +of @code{:application} is a symbol, all other property values are +strings. In general the symbol @code{tramp} should be used as +@code{:application} value. Some packages use a different +@code{:application} (for example @code{eshell} or @code{vc-git}); they +say it in their documentation then. All properties are optional. + + The other properties are used for checking @code{default-directory}. +The propertiy @code{:protocol} is used for the method a remote +@code{default-directory} uses, the property +@code{:user} is the remote user name, and the property @code{:machine} +is the remote host name. All checks are performed via +@code{string-equal}. The @code{nil} criteria matches all buffers +with a remote default directory. + + Connection-local variables are not activated by default. A package +which uses connection-local variables must activate them for a given +buffer, specifying for which @code{:application} it uses them. +@xref{Applying Connection Local Variables,,, elisp, The Emacs Lisp +Reference Manual}, for details. + + After the above definition of profiles and their activation, any +connection made by Tramp to the @samp{remotemachine} system will use + +@itemize +@item @code{t} as the connection-specific value of @code{system-uses-terminfo}, +@item @samp{dumb-emacs-ansi} as the connection-specific value of +@code{comint-terminfo-terminal}, +@item @samp{/bin/ksh} as the connection-specific value of as +@code{shell-file-name}, +@item @samp{-c} as the connection-specific value of @code{shell-command-switch}. +@end itemize Be careful when declaring different profiles with the same variable, and setting these profiles to criteria which could match in parallel. @@ -3098,30 +3138,33 @@ elisp, The Emacs Lisp Reference Manual}. If the directory specified by @code{user-lisp-directory}, defaulting to @file{~/.config/emacs/user-lisp/} or @file{~/.emacs.d/user-lisp/}, exists, then at startup Emacs will prepare Lisp files within that -directory for use in the session. Emacs does the following things: +directory for use in the session. Specifically, Emacs does the +following: @itemize @item Gather and activate autoload cookies. This means that you can use autoloaded commands and other entry points for the files in your @code{user-lisp-directory} without explicitly loading any of the -files in your initialization file. (@pxref{Autoload,,, elisp, The -Emacs Lisp Reference Manual}.) +files in your initialization file. @xref{Autoload,,, elisp, The +Emacs Lisp Reference Manual}. @item -Byte-compile all files, and if supported on your system, natively -compile them too. This speeds up the execution of the code in the -files when they are loaded. (@pxref{Byte Compilation,,, elisp, The -Emacs Lisp Reference Manual}.) +Byte-compile all the files (@pxref{Byte Compilation,,, elisp, The Emacs +Lisp Reference Manual}), and if supported by your build of Emacs, +compile them to native code as well (@pxref{Native Compilation,,, elisp, +The Emacs Lisp Reference Manual}). This speeds up the execution of the +code in those files when they are loaded and when they are executed +later. @item Adjust @code{load-path} such that all the files can be loaded and -autoloaded in the usual ways. (@pxref{Library Search,,, elisp, The -Emacs Lisp Reference Manual}.) +autoloaded in the usual ways. @xref{Library Search,,, elisp, The +Emacs Lisp Reference Manual}. @end itemize - The User Lisp directory is processed before loading the @ref{Init -File} file. Therefore any customizations to the user options discussed -below must be made in your early init file (@pxref{Early Init File}) in -order to have any effect. + The User Lisp directory is processed before loading your init file +(@pxref{Init File}). Therefore any customizations to the user +options discussed below must be made in your early init file +(@pxref{Early Init File}) in order to have any effect. @vindex user-lisp-ignored-directories @vindex user-lisp-auto-scrape diff --git a/doc/emacs/dired-xtra.texi b/doc/emacs/dired-xtra.texi index d8536dcecee..1bcf586cd57 100644 --- a/doc/emacs/dired-xtra.texi +++ b/doc/emacs/dired-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/dired.texi b/doc/emacs/dired.texi index 599c0308cec..9abef21f459 100644 --- a/doc/emacs/dired.texi +++ b/doc/emacs/dired.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Dired @@ -733,7 +733,8 @@ Auto-Revert mode, you might want to set Undo changes in the Dired buffer, such as adding or removing marks (@code{dired-undo}). @emph{This command does not revert the actual file operations, nor recover lost files!} It just undoes -changes in the buffer itself. +changes in the buffer itself. Like with @code{undo}, a numeric prefix +argument specifies a repeat count. In some cases, using this after commands that operate on files can cause trouble. For example, after renaming one or more files, diff --git a/doc/emacs/display.texi b/doc/emacs/display.texi index dd898e0cf88..dde6cc4f1b6 100644 --- a/doc/emacs/display.texi +++ b/doc/emacs/display.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @@ -2048,20 +2048,41 @@ variable @code{visible-cursor} is @code{nil} when Emacs starts or resumes, it uses the normal cursor. @vindex cursor-type - On a graphical display, many more properties of the text cursor can -be altered. To customize its color, change the @code{:background} -attribute of the face named @code{cursor} (@pxref{Face -Customization}). (The other attributes of this face have no effect; -the text shown under the cursor is drawn using the frame's background -color.) To change its shape, customize the buffer-local variable -@code{cursor-type}; possible values are @code{box} (the default), -@code{(box . @var{size})} (box cursor becoming a hollow box under -masked images larger than @var{size} pixels in either dimension), -@code{hollow} (a hollow box), @code{bar} (a vertical bar), @code{(bar -. @var{n})} (a vertical bar @var{n} pixels wide), @code{hbar} (a -horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n} + On a graphical display and many Xterm-compatible text terminals, the +color and shape of the text cursor can be altered. To customize its +color, change the @code{:background} attribute of the face named +@code{cursor} (@pxref{Face Customization}). (The other attributes of +this face have no effect; the text shown under the cursor is drawn using +the frame's background color.) To change its shape, customize the +buffer-local variable @code{cursor-type}; possible values are @code{box} +(the default), @code{(box . @var{size})} (box cursor becoming a hollow +box under masked images larger than @var{size} pixels in either +dimension), @code{hollow} (a hollow box), @code{bar} (a vertical bar), +@code{(bar . @var{n})} (a vertical bar @var{n} pixels wide), @code{hbar} +(a horizontal bar), @code{(hbar . @var{n})} (a horizontal bar @var{n} pixels tall), or @code{nil} (no cursor at all). +@vindex xterm-update-cursor + On Xterm-compatible text terminals cursor customization is controlled +by the user option @code{xterm-update-cursor}. Valid values are +@code{t} to update the cursor's color and shape, @code{type} to update +the cursor's shape only, @code{color} to update the cursor's color only, +and @code{nil} to not update the cursor's appearance. Text terminals +can not display a hollow box and instead use a filled box. Similarly, +all text terminals ignore the pixel sizes for @code{bar} and +@code{hbar}. + +@findex hl-line-mode +@findex global-hl-line-mode +@cindex highlight current line + To make the cursor even more visible, you can use HL Line mode, a +minor mode that highlights the line containing point. Use @kbd{M-x +hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x +global-hl-line-mode} enables or disables the same mode globally. + + The remaining controls only work on graphical displays where Emacs can +fully control the way the cursor appears. + @findex blink-cursor-mode @cindex cursor, blinking @cindex blinking cursor @@ -2105,14 +2126,6 @@ non-blinking hollow box. (For a bar cursor, it instead appears as a thinner bar.) To turn off cursors in non-selected windows, change the variable @code{cursor-in-non-selected-windows} to @code{nil}. -@findex hl-line-mode -@findex global-hl-line-mode -@cindex highlight current line - To make the cursor even more visible, you can use HL Line mode, a -minor mode that highlights the line containing point. Use @kbd{M-x -hl-line-mode} to enable or disable it in the current buffer. @kbd{M-x -global-hl-line-mode} enables or disables the same mode globally. - @node Line Truncation @section Line Truncation @@ -2338,6 +2351,16 @@ of lines which are a multiple of certain numbers. Customize @code{display-line-numbers-minor-tick} respectively to set those numbers. +@vindex line-spacing + The variable @code{line-spacing} controls the vertical spacing between +lines. It can be set to an integer (specifying pixels) or a float +(specifying spacing relative to the default frame font height). You can +also set this variable to a cons cell of integers or floats, such as +@code{(@var{top} . @var{bottom})}. When set to a cons cell, the spacing +is distributed above and below the line, allowing for text to be +vertically centered within the line height. See also @ref{Line Height,,, +elisp, The Emacs Lisp Reference Manual}. + @vindex visible-bell If the variable @code{visible-bell} is non-@code{nil}, Emacs attempts to make the whole screen blink when it would normally make an audible bell diff --git a/doc/emacs/emacs-xtra.texi b/doc/emacs/emacs-xtra.texi index 2668daf8dda..7af1a9935a8 100644 --- a/doc/emacs/emacs-xtra.texi +++ b/doc/emacs/emacs-xtra.texi @@ -16,7 +16,7 @@ @copying This manual describes specialized features of Emacs. -Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/emacs/emacs.texi b/doc/emacs/emacs.texi index bdd9f2753ba..05ced62dd9c 100644 --- a/doc/emacs/emacs.texi +++ b/doc/emacs/emacs.texi @@ -20,7 +20,7 @@ This is the @cite{GNU Emacs Manual}, @end ifclear updated for Emacs version @value{EMACSVER}. -Copyright @copyright{} 1985--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1985--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -871,7 +871,7 @@ Miscellaneous Commands and Features of VC * VC Delete/Rename:: Deleting and renaming version-controlled files. * Revision Tags:: Symbolic names for revisions. * Merge Bases:: The most recent revision existing on both branches. -* Outgoing Base Diffs:: Diffs including all outstanding changes on a branch. +* Outstanding Changes:: Diffs including all outstanding changes on a branch. * Other Working Trees:: Multiple sets of workfiles. * Version Headers:: Inserting version control headers into working files. * Editing VC Commands:: Editing the VC shell commands that Emacs will run. diff --git a/doc/emacs/emerge-xtra.texi b/doc/emacs/emerge-xtra.texi index d80c3f3b3a3..e2f74671981 100644 --- a/doc/emacs/emerge-xtra.texi +++ b/doc/emacs/emerge-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/entering.texi b/doc/emacs/entering.texi index cde5f58223e..e561596635b 100644 --- a/doc/emacs/entering.texi +++ b/doc/emacs/entering.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/files.texi b/doc/emacs/files.texi index d82a2b8948d..a9bcee0b060 100644 --- a/doc/emacs/files.texi +++ b/doc/emacs/files.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Files @@ -1000,17 +1000,17 @@ File Shadowing is not available on MS Windows. @cindex modification dates @cindex last modified time -You can arrange to have a time stamp in a file be updated -automatically each time you save the file. -(A time stamp may also be called a date stamp or a last modified time.) Having a time stamp in the text of a file ensures that the time the file was written will be preserved even if the file is copied or transformed in a way that loses the file system's modification time. +A time stamp may also be called a date stamp or a last modified time. +You can arrange to have a time stamp in a file update +automatically each time you save the file. There are two steps to setting up automatic time stamping. -First, the file needs a time stamp template -somewhere in the first eight lines. -The template looks like this: +First, the file needs a time stamp template. +By default, the template occurs somewhere in the first eight lines +and looks like this: @example Time-stamp: <> @@ -1026,10 +1026,9 @@ Time-stamp: " " @findex time-stamp With that template in place, you can update the current buffer's time stamp once immediately with the command @kbd{M-x time-stamp}. -Emacs will check for a template; if a template is found, +The Emacs editor will check for a template; if a template is found, Emacs will write the current date, time, author, and/or -other info between the brackets or quotes. -(If the buffer has no template, @code{time-stamp} does nothing.) +other info between the angle brackets or quotes. After the first time stamp, the line might look like this: @example @@ -1039,13 +1038,25 @@ Time-stamp: <1993-07-06 11:05:14 terryg> Second, configure your Emacs to run @code{time-stamp} whenever it saves a file, by adding @code{time-stamp} to @code{before-save-hook} (@pxref{Hooks}). -You can either use @kbd{M-x customize-option} (@pxref{Specific -Customization}) to customize the option @code{before-save-hook}, -or you can edit your init file adding this line: +There are two ways to do this: you can +@itemize +@item +use @kbd{M-x customize-option} (@pxref{Specific Customization}) +to customize the option @code{before-save-hook}, or + +@item +edit your initialization file (@pxref{Init File}), +adding this line: @example (add-hook 'before-save-hook 'time-stamp) @end example +@end itemize + +Now every time you save a file, Emacs will look for a time stamp. +If the buffer has no template, @code{time-stamp} does nothing; +any file that does have a time stamp will have it kept up to date +automatically. @menu * Time Stamp Customization:: How to customize with time-stamp-pattern. @@ -1064,14 +1075,17 @@ identify a template and where in the file to look for the pattern using @code{time-stamp-pattern}; for details, see the variable's built-in documentation (with @kbd{C-h v}, @pxref{Name Help}). -As a simple example, if this line occurs near the top of a file: +As a simple example, suppose you want a manuscript to say the year +and city of publication. +You would like the year updated as you make revisions. +You could have this line near the top of a file: @example publishing_year_and_city = "Published nnnn in Boston, Mass."; @end example @noindent -then the following comment at the end of the same file tells +and the following comment at the end of the same file to tell @code{time-stamp} how to identify and update that custom template: @example @@ -1084,12 +1098,24 @@ then the following comment at the end of the same file tells This pattern says that the text before the start of the time stamp is ``Published '', and the text after the end is `` in Boston''. -If @code{time-stamp} finds both in one of the first eight lines, -what is between will be replaced by the current year, as requested by -the @code{%Y} format. +If @code{time-stamp} finds both the start and the end in one of the +first eight lines, +what is between will be updated as specified by the format, @code{%Y} in +this example. Since @code{%Y} requests the year, the result might look +like this: -After any change to file-local variables, -type @kbd{M-x normal-mode} to re-read them. +@example +publishing_year_and_city = "Published 2025 in Boston, Mass."; +@end example + +By specifying a format of @code{%Y}, we get exactly the year +substituted; other parts of the default format (day, time and +author) are not part of this example pattern and so do not appear in the +result. + +After changing the value of @code{time-stamp-pattern} +(or any file-local variable), +type @kbd{M-x normal-mode} so that Emacs notices. Here is another example, with the time stamp inserted into the last paragraph of an HTML document. @@ -1126,7 +1152,7 @@ for specifics on formatting and other variables that affect it. If you are working on a file with multiple authors, and you cannot be sure the other authors have enabled time-stamping globally in -their Emacs init files, you can force it to be enabled for a +their Emacs initialization files, you can force it to be enabled for a particular file by adding @code{time-stamp} to that buffer's @code{before-save-hook} in that file's local variables list. To extend one of the previous examples: @@ -1140,11 +1166,13 @@ To extend one of the previous examples: @end group @end example -@noindent Although this example shows them both set together, you can use @code{eval} without also setting @code{time-stamp-pattern} if you like the default pattern. +The extra arguments to @code{add-hook} used here, @code{nil} and @code{t}, +are necessary to have the added hook affect only this buffer. + @node Reverting @section Reverting a Buffer @findex revert-buffer @@ -1807,7 +1835,8 @@ the start of the @var{n}th previous file. @findex diff-hunk-kill @item M-k -Kill the hunk at point (@code{diff-hunk-kill}). +Kill the hunk at point (@code{diff-hunk-kill}). If the region is +active, kills all hunks the region overlaps. @findex diff-file-kill @item M-K @@ -2743,10 +2772,16 @@ are shown in the Customize buffer. Remember to select @samp{Save for future sessions} if you want to use the same filesets in future Emacs sessions. +@findex filesets-open +@findex filesets-close +@findex filesets-run-cmd +@vindex filesets-commands You can use the command @kbd{M-x filesets-open} to visit all the files in a fileset, and @kbd{M-x filesets-close} to close them. Use -@kbd{M-x filesets-run-cmd} to run a shell command on all the files in -a fileset. These commands are also available from the @samp{Filesets} +@kbd{M-x filesets-run-cmd} to run a command (such as +@code{multi-isearch-files} or @command{grep}) on all the files in +a fileset. These commands, which are specified in +@code{filesets-commands}, are also available from the @samp{Filesets} menu, where each existing fileset is represented by a submenu. @xref{Version Control}, for a different concept of filesets: diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi index f240057aa69..36a27a78dda 100644 --- a/doc/emacs/fixit.texi +++ b/doc/emacs/fixit.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Fixit @@ -418,6 +418,20 @@ Suspend Emacs or iconify the selected frame. Show the list of options. @end table +@vindex ispell-save-corrections-as-abbrevs + You can have Ispell remember your spelling corrections so that they +are applied automatically when Abbrev mode is enabled (@pxref{Abbrevs}). +If you customize @code{ispell-save-corrections-as-abbrevs} to a non-nil +value, then each time you correct a misspelled word, Emacs saves the +correction as a global abbrev. Then, whenever you type the misspelling +and then a word-separator (@key{SPC}, comma, etc.) in a buffer with +Abbrev mode enabled, Emacs expands the misspelling to its correction. +You can override this and disable saving a particular correction by +supplying a @kbd{C-u} prefix argument when selecting a replacement. If +@code{ispell-save-corrections-as-abbrevs} has its default value of nil, +the meaning of a prefix argument is inverted, in that typing @kbd{C-u} +before selecting a replacement @emph{does} save a global abbrev. + Use the command @kbd{M-@key{TAB}} (@code{completion-at-point}) to complete the word at point. Insert the beginning of a word, and then type @kbd{M-@key{TAB}} to select from a list of completions. (If your diff --git a/doc/emacs/fortran-xtra.texi b/doc/emacs/fortran-xtra.texi index 16287518cb9..016a53cf8e8 100644 --- a/doc/emacs/fortran-xtra.texi +++ b/doc/emacs/fortran-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/frames.texi b/doc/emacs/frames.texi index 5b11af2b17f..9950ce4c6e8 100644 --- a/doc/emacs/frames.texi +++ b/doc/emacs/frames.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--2025 Free Software Foundation, Inc. +@c Copyright (C) 1985--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Frames @chapter Frames and Graphical Displays @@ -58,6 +58,7 @@ for doing so on MS-DOS). Menus are supported on all text terminals. * Menu Bars:: Enabling and disabling the menu bar. * Tool Bars:: Enabling and disabling the tool bar. * Tab Bars:: Enabling and disabling the tab bar. +* System Taskbar:: Using system GUI taskbar features. * Dialog Boxes:: Controlling use of dialog boxes. * Tooltips:: Displaying information at the current mouse position. * Mouse Avoidance:: Preventing the mouse pointer from obscuring text. @@ -1631,6 +1632,75 @@ This moves forward in the history of window configurations. It's possible to customize the items displayed on the tab bar by the user option @code{tab-bar-format}. +@node System Taskbar +@section Using System GUI Taskbar Features +@cindex system taskbar +@cindex mode, system taskbar + + Emacs can use your GUI system taskbar to display a badge overlay on +the Emacs taskbar icon, a progress bar report, and alert the user that +an Emacs session needs attention. Note: The system taskbar might be +called the dock, the launcher, or something similar. + +@cindex system taskbar, GNU/Linux +On GNU/Linux eligible GUI desktops, system taskbar effects will appear +on the desktop destinations determined by your shell extension, most +often the application launcher or dock panel, or the top panel. Effects +are global for an Emacs instance. + +Note: The GNU/Linux implementation sends system taskbar messages to the +GUI using D-Bus. You may need to install or configure shell extensions +such as @url{https://extensions.gnome.org/extension/307/dash-to-dock/} +that implement Ubuntu's Unity D-Bus launcher spec which you can read +more about here @url{https://wiki.ubuntu.com/Unity/LauncherAPI}. +@xref{Top,,, dbus, The D-Bus Manual}. + +@cindex system taskbar, macOS/GNUstep +@cindex system taskbar, NS +On macOS/GNUstep 10.5+, system taskbar effects appear on the Dock and in +the App Switcher. Effects are global for an Emacs instance. +macOS/GNUstep need no special configuration. + +@cindex system taskbar, MS-Windows +On MS-Windows 7+, taskbar effects appear on the Windows system taskbar. +Effects are associated with the frame from which they are initiated. +MS-Windows needs no special configuration. + +@findex system-taskbar-mode + You must initialize system taskbar before using it. To do that, type +@kbd{M-x system-taskbar-mode}. + +@vindex system-taskbar-use-progress-reporter + The user option @code{system-taskbar-use-progress-reporter} integrates +@code{system-taskbar-mode} with Emacs progress report functions, which +many longer-running functions use to indicate the progress of their +work. Progress reports will appear in the echo area and on the system +taskbar Emacs icon. This variable defaults to @code{t}. Customize this +variable before enabling @code{system-taskbar-mode}. @xref{Progress,,, +elisp} + +@vindex system-taskbar-clear-attention-on-frame-focus + The user option @code{system-taskbar-clear-attention-on-frame-focus} +turns on a helper useful on GNU/Linux D-Bus platforms which +automatically clears the system taskbar attention indicator when any +Emacs frame is focused. This has no effect on macOS/GNUstep or +MS-Windows. It defaults to @code{t}. Customize this variable before +enabling @code{system-taskbar-mode}. + +@vindex system-taskbar-dbus-desktop-file-name + The user option @code{system-taskbar-dbus-desktop-file-name} helps +D-Bus on GNU/Linux identify launched instance of Emacs. It defaults to +@samp{emacsclient} and may need to be changed to @samp{emacs} depending +on your GNU/Linux configuration. + +@vindex system-taskbar-dbus-timeout + The user option @code{system-taskbar-dbus-timeout} is a +troubleshooting tool and it likely does not need to be customized. It +defaults to @code{nil} which uses the D-Bus default timeout which is +25,000ms or 25s. + +@xref{System Taskbar,,, elisp, The Emacs Lisp Reference Manual} + @node Dialog Boxes @section Using Dialog Boxes @cindex dialog boxes diff --git a/doc/emacs/glossary.texi b/doc/emacs/glossary.texi index a5e5b4577fc..12ea332d7ce 100644 --- a/doc/emacs/glossary.texi +++ b/doc/emacs/glossary.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Glossary diff --git a/doc/emacs/gnu.texi b/doc/emacs/gnu.texi index 2266d40b2f3..bce27382f77 100644 --- a/doc/emacs/gnu.texi +++ b/doc/emacs/gnu.texi @@ -1,4 +1,4 @@ -@c Copyright (C) 1985--1987, 1993, 1995, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993, 1995, 2001--2026 Free Software @c Foundation, Inc. @c @c Permission is granted to anyone to make or distribute verbatim copies diff --git a/doc/emacs/haiku.texi b/doc/emacs/haiku.texi index b8d8bbd7da0..15877151108 100644 --- a/doc/emacs/haiku.texi +++ b/doc/emacs/haiku.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2021--2025 Free Software Foundation, Inc. +@c Copyright (C) 2021--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Haiku @appendix Emacs and Haiku diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi index b2cd7f19e71..c16e94df5aa 100644 --- a/doc/emacs/help.texi +++ b/doc/emacs/help.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Help @@ -422,8 +422,9 @@ search for noninteractive functions too. Search for functions and variables. Both interactive functions (commands) and noninteractive functions can be found by this. -@item M-x apropos-user-option +@kindex C-h u @findex apropos-user-option +@item C-h u Search for user-customizable variables. With a prefix argument, search for non-customizable variables too. diff --git a/doc/emacs/indent.texi b/doc/emacs/indent.texi index 049b9358a10..5f292fbacd4 100644 --- a/doc/emacs/indent.texi +++ b/doc/emacs/indent.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Indentation diff --git a/doc/emacs/input.texi b/doc/emacs/input.texi index 9b044bdc821..63d47c4037d 100644 --- a/doc/emacs/input.texi +++ b/doc/emacs/input.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2023--2025 Free Software Foundation, Inc. +@c Copyright (C) 2023--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Other Input @section Touchscreen Input and Virtual Keyboards diff --git a/doc/emacs/killing.texi b/doc/emacs/killing.texi index 4f267e7b2d7..eea3a5ba5a2 100644 --- a/doc/emacs/killing.texi +++ b/doc/emacs/killing.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. diff --git a/doc/emacs/kmacro.texi b/doc/emacs/kmacro.texi index 09c6c5d4675..f347ad62986 100644 --- a/doc/emacs/kmacro.texi +++ b/doc/emacs/kmacro.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Keyboard Macros diff --git a/doc/emacs/m-x.texi b/doc/emacs/m-x.texi index aaf424eb90b..0c91cd6c2ee 100644 --- a/doc/emacs/m-x.texi +++ b/doc/emacs/m-x.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node M-x diff --git a/doc/emacs/macos.texi b/doc/emacs/macos.texi index 81af6cd398c..6bd334f48e3 100644 --- a/doc/emacs/macos.texi +++ b/doc/emacs/macos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2000--2025 Free Software Foundation, Inc. +@c Copyright (C) 2000--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mac OS / GNUstep @appendix Emacs and macOS / GNUstep diff --git a/doc/emacs/maintaining.texi b/doc/emacs/maintaining.texi index 29e05ba17e5..305487b4e6d 100644 --- a/doc/emacs/maintaining.texi +++ b/doc/emacs/maintaining.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual., Abbrevs, This is part of the Emacs manual., Top -@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Maintaining @@ -573,7 +573,7 @@ after popping up the @file{*vc-log*} buffer to allow you to type a suitable commit log message. Once you type @kbd{C-x v v}, the fileset or patches cannot be changed -without first cancelling the commit by typing @kbd{C-c C-k} in the +without first canceling the commit by typing @kbd{C-c C-k} in the @file{*vc-log*} buffer. For example, if you change which files are marked in the @file{*vc-dir*} buffer after Emacs has already popped up the @file{*vc-log*} buffer, the old fileset will remain in effect for @@ -1057,17 +1057,21 @@ Display the log entry and changes (diffs) of a single @var{revision} (@code{vc-print-root-log}). @item C-x v b l -Display the change history for another branch -(@code{vc-print-branch-log}). +Display the change history for the current fileset on another branch +(@code{vc-print-fileset-branch-log}). + +@item C-x v b L +Display the change history for the current repository on another branch +(@code{vc-print-root-branch-log}). @item C-x v I Display log entries for the changes that a ``pull'' operation will -retrieve (@code{vc-log-incoming}). +retrieve (@code{vc-root-log-incoming}). @vindex vc-use-incoming-outgoing-prefixes If you customize @code{vc-use-incoming-outgoing-prefixes} to non-@code{nil}, @kbd{C-x v I} becomes a prefix key, and -@code{vc-log-incoming} becomes bound to @kbd{C-x v I L}. +@code{vc-root-log-incoming} becomes bound to @kbd{C-x v I L}. @item M-x vc-root-diff-incoming Display a diff of all changes that a pull operation will retrieve. @@ -1084,11 +1088,11 @@ non-@code{nil}, this command becomes available on @kbd{C-x v I =}. @item C-x v O Display log entries for the changes that will be sent by the next -``push'' operation (@code{vc-log-outgoing}). +``push'' operation (@code{vc-root-log-outgoing}). If you customize @code{vc-use-incoming-outgoing-prefixes} to non-@code{nil}, @kbd{C-x v O} becomes a prefix key, and -@code{vc-log-outgoing} becomes bound to @kbd{C-x v O L}. +@code{vc-root-log-outgoing} becomes bound to @kbd{C-x v O L}. @item M-x vc-root-diff-outgoing Display a diff of all changes that will be sent by the next push @@ -1162,40 +1166,53 @@ showing only the first line of each log entry. However, you can type revision at point. A second @key{RET} hides it again. @kindex C-x v b l -@findex vc-print-branch-log - @kbd{C-x v b l @var{branch-name} @key{RET}} (@code{vc-print-branch-log}) -displays a @file{*vc-change-log*} buffer showing the history of the -version-controlled directory tree, like @code{vc-print-root-log} does, -but it shows the history of a branch other than the current one; it -prompts for the branch whose history to display. +@kindex C-x v b L +@findex vc-print-fileset-branch-log +@findex vc-print-root-branch-log + @kbd{C-x v b l @var{branch-name} @key{RET}} +(@code{vc-print-fileset-branch-log}) displays a @file{*vc-change-log*} +buffer showing the history of changes made to the current fileset in the +long form, like @code{vc-print-log} does, but it shows the history of a +branch other than the current one; it prompts for the name of the branch +whose history you would like to see. @w{@kbd{C-x v b L +@var{branch-name} @key{RET}}} (@code{vc-print-root-branch-log}) is +similar except that it shows the history of the version-controlled +directory tree, like @code{vc-print-root-log}. + +For a version control system for which it makes sense, you can also +specify a revision ID instead of the name of a branch as +@var{branch-name}, and Emacs will print a log starting from that +revision ID. You can also specify other names for specific revisions +supported by the VCS, such as the names of tags (@pxref{Revision Tags}), +or the remote branch references supported by Git. @kindex C-x v I @kindex C-x v O -@findex vc-log-incoming -@findex vc-log-outgoing +@findex vc-root-log-incoming +@findex vc-root-log-outgoing On a decentralized version control system, the @kbd{C-x v I} -(@code{vc-log-incoming}) command displays a log buffer showing the +(@code{vc-root-log-incoming}) command displays a log buffer showing the changes that will be applied the next time you run the version control system's pull command to get new revisions from another remote location (@pxref{Pulling / Pushing}). This other remote location is the default one from which changes are pulled, as defined by the version control -system; with a prefix argument, @code{vc-log-incoming} prompts for a -particular remote location. Similarly, @kbd{C-x v O} -(@code{vc-log-outgoing}) shows the changes that will be sent to another -remote location, the next time you run the push command; with a prefix -argument, it prompts for a particular destination that in case of some -version control system can be a branch name. +system; with a prefix argument, @code{vc-root-log-incoming} prompts for +a particular remote location. Similarly, @kbd{C-x v O} +(@code{vc-root-log-outgoing}) shows the changes that will be sent to +another remote location, the next time you run the push command; with a +prefix argument, it prompts for a particular destination that in case of +some version control system can be a branch name. @findex vc-root-diff-incoming @findex vc-root-diff-outgoing The closely related commands @code{vc-root-diff-incoming} and @code{vc-root-diff-outgoing} are the diff analogues of -@code{vc-log-incoming} and @code{vc-log-outgoing}. These display diff -buffers reporting the changes that would be pulled or pushed. You can -use a prefix argument here too to specify a particular remote location. -@code{vc-root-diff-outgoing} is useful as a way to preview your push and -quickly check that all and only the changes you intended to include were -committed and will be pushed. +@code{vc-root-log-incoming} and @code{vc-root-log-outgoing}. These +display diff buffers reporting the changes that would be pulled or +pushed. You can use a prefix argument here too to specify a particular +remote location. @code{vc-root-diff-outgoing} is useful as a way to +preview your push and quickly check that all and only the changes you +intended to include were committed and will be pushed. @findex vc-diff-incoming @findex vc-diff-outgoing @@ -1343,6 +1360,7 @@ also prompt for a specific VCS shell command to run for this purpose. @table @kbd @item C-x v u +@item C-x v @@ Revert the work file(s) in the current VC fileset to the last revision (@code{vc-revert}). @@ -1357,24 +1375,25 @@ Delete an unpushed commit from the revision history. @end table @kindex C-x v u +@kindex C-x v @@ @findex vc-revert @vindex vc-revert-show-diff - If you want to discard all the changes you have made to the current -VC fileset, type @kbd{C-x v u} (@code{vc-revert}). This will ask you -for confirmation before discarding the changes. If you agree, the -fileset is reverted. + If you want to discard all the changes you have made to the current VC +fileset, type @kbd{C-x v u} or @kbd{C-x v @@} (@code{vc-revert}). This +will ask you for confirmation before discarding the changes. If you +agree, the fileset is reverted. If @code{vc-revert-show-diff} is non-@code{nil}, this command will -show you a diff between the work file(s) and the revision from which -you started editing. Afterwards, the diff buffer will either be -killed (if this variable is @code{kill}), or the buffer will be buried -(any other non-@code{nil} value). If you don't want @kbd{C-x v u} to -show a diff, set this variable to @code{nil} (you can still view the -diff directly with @kbd{C-x v =}; @pxref{Old Revisions}). +show you a diff between the work file(s) and the revision from which you +started editing. Afterwards, the diff buffer will either be killed (if +this variable is @code{kill}), or the buffer will be buried (any other +non-@code{nil} value). If you don't want @code{vc-revert} to show you +diffs, set this variable to @code{nil} (you can still view the diff +directly with @kbd{C-x v =}; @pxref{Old Revisions}). - On locking-based version control systems, @kbd{C-x v u} leaves files -unlocked; you must lock again to resume editing. You can also use -@kbd{C-x v u} to unlock a file if you lock it and then decide not to + On locking-based version control systems, @code{vc-revert} leaves +files unlocked; you must lock again to resume editing. You can also use +@code{vc-revert} to unlock a file if you lock it and then decide not to change it. @findex vc-revert-or-delete-revision @@ -1545,8 +1564,8 @@ repository, such as the name of the backend in use and the working directory. In addition, for decentralized VCS, if you have outgoing commits (@pxref{VC Change Log}), Emacs displays a line @w{"Outgoing : N unpushed revisions"} where @var{N} is a number. You can click on this -text to execute the @code{vc-log-outgoing} command (@pxref{VC Change -Log}). +text to execute the @code{vc-root-log-outgoing} command (@pxref{VC +Change Log}). @vindex vc-dir-show-outgoing-count Emacs tries to use cached information to determine the number of @@ -1624,6 +1643,10 @@ ignore (@code{vc-dir-ignore}). For instance, if the VC is Git, it will append this file to the @file{.gitignore} file. If given a prefix, do this with all the marked files. +@item @@ +Discard all the changes you have made to the current fileset +(@code{vc-revert}). + @item q Quit the VC Directory buffer, and bury it (@code{quit-window}). @@ -1689,6 +1712,9 @@ Do an incremental regular expression search on the fileset Apart from acting on multiple files, these commands behave much like their single-buffer counterparts (@pxref{Search}). +@c Outstanding changes commands under 'T' are not mentioned because +@c these are an advanced feature documented only in vc1-xtra.texi. + The VC Directory buffer additionally defines some branch-related commands starting with the prefix @kbd{b}: @@ -1697,9 +1723,9 @@ commands starting with the prefix @kbd{b}: Create a new branch (@code{vc-create-branch}). @xref{Creating Branches}. -@item b l +@item b L Prompt for the name of a branch and display the change history of that -branch (@code{vc-print-branch-log}). +branch (@code{vc-print-root-branch-log}). @item b s Switch to a branch (@code{vc-switch-branch}). @xref{Switching @@ -1823,9 +1849,9 @@ with Git, and @kbd{hg push} with Mercurial. The default commands always push to the repository in the default location determined by the version control system from your branch configuration. -Prior to pushing, you can use @kbd{C-x v O} (@code{vc-log-outgoing}) -to view a log buffer of the changes to be sent upstream. @xref{VC -Change Log}. +Prior to pushing, you can use @kbd{C-x v O} +(@code{vc-root-log-outgoing}) to view a log buffer of the changes to be +sent upstream. @xref{VC Change Log}. @cindex bound branch (Bazaar VCS) This command is currently supported only by Bazaar, Git, and Mercurial. @@ -1859,9 +1885,9 @@ it into the current branch. With Mercurial, it calls @kbd{hg pull -u} to fetch changesets from the default remote repository and update the working directory. - Prior to pulling, you can use @kbd{C-x v I} (@code{vc-log-incoming}) -to view a log buffer of the changes to be applied. @xref{VC Change -Log}. + Prior to pulling, you can use @kbd{C-x v I} +(@code{vc-root-log-incoming}) to view a log buffer of the changes to be +applied. @xref{VC Change Log}. With a centralized version control system like CVS, @kbd{C-x v +} updates the current VC fileset from the repository. @@ -2032,7 +2058,10 @@ project. See its entry below for description and related options. If this user option is non-@code{nil}, Emacs displays the name of the current project (if any) on the mode line; clicking @kbd{mouse-1} on the project name pops up the menu with the project-related commands. -The default value is @code{nil}. +The default value is @code{nil}. If the value is @code{non-remote}, +Emacs will show the name of the project only for local files; this comes +in handy when updating the mode line for projects on remote systems is +slow due to network latencies. @end defopt @menu @@ -2305,7 +2334,9 @@ Using this variable you can add more ignore patterns to the project, to exclude more files from the project's file listing. The value is a list of glob strings. They can match both regular files and directories. To anchor an entry to the project root, start it with @code{./}. To match -directories only, end it with @code{/}. +directories only, end it with @code{/}. When this variable has +directory-local value, it will only be applied to the corresponding +directory subtree. @end defopt @defopt project-vc-name @@ -2469,7 +2500,7 @@ between them. end of the change log file. Here is an example: @smallexample -Copyright 1997--1998, 2025 Free Software Foundation, Inc. +Copyright 1997--1998, 2025--2026 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved. @end smallexample @@ -2538,12 +2569,13 @@ files, and build a database of these references. A backend can then access this database whenever it needs to list or look up references. The Emacs distribution includes @command{etags}, a command for tagging identifier definitions in programs, which supports many programming -languages and other major modes, such as HTML, by extracting -references into @dfn{tags tables}. @xref{Create Tags Table}. Major -modes for languages supported by @command{etags} can use tags tables -as basis for their backend. (One disadvantage of this kind of backend -is that tags tables need to be kept reasonably up to date, by -rebuilding them from time to time.) +languages and other major modes, such as HTML, by extracting references +into @dfn{tags tables}. Major modes for languages supported by +@command{etags} can use tags tables as basis for their backend. Enable +@code{etags-regen-mode} to have tags tables generated across the current +project for supported file types and updated automatically upon edit. +Alternatively, you can build the table manually to control the set of +files and when it is updated, see @ref{Create Tags Table}. @end enumerate @menu @@ -2617,6 +2649,9 @@ to always prompt, customize @code{xref-prompt-for-identifier} to usual minibuffer completion commands (@pxref{Completion}), with the known identifier names being the completion candidates. + It uses the current Xref backend, and will signal an error when there +is none configured, with some recommendations. + @kindex C-x 4 . @findex xref-find-definitions-other-window @kindex C-x 5 . @@ -2997,7 +3032,9 @@ writes the tags to a @dfn{tags table file}, or @dfn{tags file} in short. The conventional name for a tags file is @file{TAGS}@. @xref{Create Tags Table}. (It is also possible to create a tags table by using one of the commands from other packages that can produce such -tables in the same format.) +tables in the same format.) If you enable the @code{etags-regen-mode} +global minor mode, Emacs will generate and update the tags tables +automatically as needed. Emacs uses the tags tables via the @code{etags} package as one of the supported backends for @code{xref}. Because tags tables are @@ -3279,6 +3316,10 @@ You should update a tags table when you define new tags that you want to have listed, or when you move tag definitions from one file to another, or when changes become substantial. + If the @code{etags-regen-mode} minor mode, described below, is +enabled, Emacs will automatically keep the tags tables up-to-date as +needed. + You can make a tags table @dfn{include} another tags table, by passing the @samp{--include=@var{file}} option to @command{etags}. It then covers all the files covered by the included tags file, as well @@ -3387,11 +3428,11 @@ Command-line options to pass to the program which regenerates tags tables. @item etags-regen-ignores -List of glob patterns which specify files to ignore when regenerating -tags tables. +List of glob wildcard patterns which specify files to ignore when +regenerating tags tables. @end vtable -@cindex tags-reset-tags-tables +@findex tags-reset-tags-tables If you select a tags table manually, with @kbd{M-x visit-tags-table} (@pxref{Select Tags Table}), @code{etags-regen-mode} effectively disables itself: it will no longer automatically create and update @@ -3576,6 +3617,12 @@ to the first directory that contains a file named @file{TAGS} encountered when recursively searching upward from the default directory. + If you enable the @code{etags-regen-mode} global minor mode, it will +automatically find and visit the tags table file when needed. If you +then invoke @code{visit-tags-table} manually to select a tags table, +@code{etags-regen-mode} will disable automatic regeneration of the tags +table. @xref{Create Tags Table}. + @vindex tags-file-name Emacs does not actually read in the tags table contents until you try to use them; all @code{visit-tags-table} does is store the file diff --git a/doc/emacs/mark.texi b/doc/emacs/mark.texi index 4145c1772b2..4c802f6e8a9 100644 --- a/doc/emacs/mark.texi +++ b/doc/emacs/mark.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Mark diff --git a/doc/emacs/mini.texi b/doc/emacs/mini.texi index 37a20f3eb78..7936712d31c 100644 --- a/doc/emacs/mini.texi +++ b/doc/emacs/mini.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Minibuffer @@ -500,7 +500,7 @@ completion buffer and delete the window showing it @vindex minibuffer-visible-completions If the variable @code{minibuffer-visible-completions} is customized to -a non-@code{nil} value, it changes the commands bound to the arrow keys: +the value @code{t}, it changes the commands bound to the arrow keys: instead of moving in the minibuffer, they move between completion candidates, like meta-arrow keys do by default (but note that, just as when the window showing the completion list is selected, here too, @@ -509,7 +509,11 @@ when the window showing the completion list is selected, here too, regardless of the completion list format). Similarly, @kbd{@key{RET}} selects the current candidate, like @kbd{M-@key{RET}} does normally. @code{C-g} hides the completion window, but leaves the minibuffer -active, so you can continue typing at the prompt. +active, so you can continue typing at the prompt. If the value of this +variable is @code{up-down}, only the @kbd{@key{UP}} and @kbd{@key{DOWN}} +arrow keys move point between completion candidates, while +@kbd{@key{RIGHT}} and @kbd{@key{LEFT}} move point in the minibuffer +window. @node Completion Exit @subsection Completion Exit diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 6c700869182..0d6745d312e 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--2025 Free Software Foundation, Inc. +@c Copyright (C) 1985--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex @chapter Miscellaneous Commands diff --git a/doc/emacs/modes.texi b/doc/emacs/modes.texi index b5049ccbd01..a2dad0ddbf7 100644 --- a/doc/emacs/modes.texi +++ b/doc/emacs/modes.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Modes @@ -520,7 +520,7 @@ remapping from @code{c-mode} to @code{c-ts-mode} (if you enable the latter). By default, this option's value is @code{nil}, so no tree-sitter based modes are enabled. -Enabling a tree-stter based mode means that visiting files in the +Enabling a tree-sitter based mode means that visiting files in the corresponding programming language will automatically turn on that mode, instead of any non-tree-sitter based modes for the same language. For example, if you enable @code{c-ts-mode}, visiting C source files will diff --git a/doc/emacs/msdos-xtra.texi b/doc/emacs/msdos-xtra.texi index b0893b47d33..16818dcf5e0 100644 --- a/doc/emacs/msdos-xtra.texi +++ b/doc/emacs/msdos-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/msdos.texi b/doc/emacs/msdos.texi index f97151c630f..26b6ccbce09 100644 --- a/doc/emacs/msdos.texi +++ b/doc/emacs/msdos.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Microsoft Windows diff --git a/doc/emacs/mule.texi b/doc/emacs/mule.texi index 61734bd09d6..9275da62bdc 100644 --- a/doc/emacs/mule.texi +++ b/doc/emacs/mule.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1997, 1999--2025 Free Software Foundation, Inc. +@c Copyright (C) 1997, 1999--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @node International @chapter International Character Set Support diff --git a/doc/emacs/package.texi b/doc/emacs/package.texi index fd8a79aa922..e6432678c62 100644 --- a/doc/emacs/package.texi +++ b/doc/emacs/package.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Packages @@ -402,6 +402,17 @@ package is somehow unavailable, Emacs signals an error and stops installation.) A package's requirements list is shown in its help buffer. +@cindex review +@vindex package-review-policy + If you are cautious when it comes to installing and upgrading packages +from package archives, you can configure @code{package-review-policy} to +give you a chance to review packages before installing them. By setting +the user option to @code{t}, you get to review all packages (including +dependencies), during which you can browse the source code, examine a +diff between the downloaded package and a previous installation or read +a changelog. You can also configure @code{package-review-policy} to +selectively trust or distrust specific packages or archives. + @cindex GNU ELPA @cindex NonGNU ELPA By default, Emacs downloads packages from two archives: diff --git a/doc/emacs/picture-xtra.texi b/doc/emacs/picture-xtra.texi index e746a9d5081..f604f87ca44 100644 --- a/doc/emacs/picture-xtra.texi +++ b/doc/emacs/picture-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in emacs-xtra.texi (when producing the diff --git a/doc/emacs/programs.texi b/doc/emacs/programs.texi index 1e487120272..57d3babef41 100644 --- a/doc/emacs/programs.texi +++ b/doc/emacs/programs.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 1999--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Programs diff --git a/doc/emacs/regs.texi b/doc/emacs/regs.texi index 04042be2b8f..4a2683c7a5d 100644 --- a/doc/emacs/regs.texi +++ b/doc/emacs/regs.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Registers diff --git a/doc/emacs/rmail.texi b/doc/emacs/rmail.texi index 70fabace693..987fe3a55d4 100644 --- a/doc/emacs/rmail.texi +++ b/doc/emacs/rmail.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Rmail diff --git a/doc/emacs/screen.texi b/doc/emacs/screen.texi index e2546ce132d..05c259f93c5 100644 --- a/doc/emacs/screen.texi +++ b/doc/emacs/screen.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Screen diff --git a/doc/emacs/search.texi b/doc/emacs/search.texi index 11626480fe9..2bd35380780 100644 --- a/doc/emacs/search.texi +++ b/doc/emacs/search.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Search diff --git a/doc/emacs/sending.texi b/doc/emacs/sending.texi index 0c45330eb24..7e63768a748 100644 --- a/doc/emacs/sending.texi +++ b/doc/emacs/sending.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Sending Mail diff --git a/doc/emacs/text.texi b/doc/emacs/text.texi index d8a7e0fc25e..f37601be629 100644 --- a/doc/emacs/text.texi +++ b/doc/emacs/text.texi @@ -1,6 +1,6 @@ @c -*- coding: utf-8 -*- @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Text diff --git a/doc/emacs/trouble.texi b/doc/emacs/trouble.texi index 45f15c7dd0d..dbb1cfd8cdd 100644 --- a/doc/emacs/trouble.texi +++ b/doc/emacs/trouble.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @iftex diff --git a/doc/emacs/vc-xtra.texi b/doc/emacs/vc-xtra.texi index bbcdc2d224c..f4a70a68464 100644 --- a/doc/emacs/vc-xtra.texi +++ b/doc/emacs/vc-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included in emacs-xtra.texi when producing the printed diff --git a/doc/emacs/vc1-xtra.texi b/doc/emacs/vc1-xtra.texi index 6f1face7f40..2bb695025db 100644 --- a/doc/emacs/vc1-xtra.texi +++ b/doc/emacs/vc1-xtra.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 2004--2025 Free Software Foundation, Inc. +@c Copyright (C) 2004--2026 Free Software Foundation, Inc. @c See file emacs.texi for copying conditions. @c @c This file is included either in vc-xtra.texi (when producing the @@ -15,7 +15,7 @@ * VC Delete/Rename:: Deleting and renaming version-controlled files. * Revision Tags:: Symbolic names for revisions. * Merge Bases:: The most recent revision existing on both branches. -* Outgoing Base Diffs:: Diffs including all outstanding changes on a branch. +* Outstanding Changes:: Diffs including all outstanding changes on a branch. * Other Working Trees:: Multiple sets of workfiles. * Version Headers:: Inserting version control headers into working files. * Editing VC Commands:: Editing the VC shell commands that Emacs will run. @@ -246,7 +246,7 @@ another (@code{vc-log-mergebase}). @c This definition is possibly dVCS-specific -- can revisions exist on @c more than one branch for older VCS? This needs thinking through if -@c any of our centalized VCS gain support for these commands. +@c any of our centralized VCS gain support for these commands. The @dfn{merge base} of two branches is the most recent revision that exists on both branches. If neither of the branches was ever merged into the other (@pxref{Merging}), then the merge base is the revision @@ -293,27 +293,36 @@ on the target branch if you were to merge the source branch into it, and @kbd{C-x v M L} shows you a log of the changes on the source branch not yet merged into the target branch. -@node Outgoing Base Diffs -@subsubsection Commands for diffs including all outstanding changes +@node Outstanding Changes +@subsubsection Commands to see all outstanding changes @cindex outstanding changes @table @kbd -@item C-x v B = +@item C-x v T = Display diffs of changes to the VC fileset since the merge base of this branch and its upstream counterpart (@code{vc-diff-outgoing-base}). -@item C-x v B D -Display all changes since the merge base of this branch and its upstream -counterpart (@code{vc-root-diff-outgoing-base}). +@item C-x v T D +Display a diff of all changes since the merge base of this branch and +its upstream counterpart (@code{vc-root-diff-outgoing-base}). + +@item C-x v T l +Display log messages for changes to the VC fileset since the merge base +of this branch and its upstream counterpart +(@code{vc-log-outgoing-base}). + +@item C-x v T L +Display log messages for all changes since the merge base of this branch +and its upstream counterpart (@code{vc-root-log-outgoing-base}). @end table For decentralized version control systems (@pxref{VCS Repositories}), -these commands provide specialized versions of @kbd{C-x v M D} (see -@pxref{Merge Bases}) which also take into account the state of upstream -repositories. These commands are useful both when working on a single -branch and when developing features on a separate branch -(@pxref{Branches}). These two cases involve using the commands -differently, and so we will describe them separately. +these commands provide specialized versions of @kbd{C-x v M L} and +@w{@kbd{C-x v M D}} (see @pxref{Merge Bases}) which also take into +account the state of upstream repositories. These commands are useful +both when working on a single branch and when developing features on a +separate branch (@pxref{Branches}). These two cases are conceptually +distinct, and so we will introduce them separately. First, consider working on a single branch. @dfn{Outstanding changes} are those which you haven't yet pushed upstream. This includes both @@ -321,17 +330,17 @@ unpushed commits and uncommitted changes in your working tree. In many cases the reason these changes are not pushed yet is that they are not finished: the changes committed so far don't make sense in isolation. -@kindex C-x v B = +@kindex C-x v T = @findex vc-diff-outgoing-base -@kindex C-x v B D +@kindex C-x v T D @findex vc-root-diff-outgoing-base -Type @kbd{C-x v B D} (@code{vc-root-diff-outgoing-base}) to display a +Type @kbd{C-x v T D} (@code{vc-root-diff-outgoing-base}) to display a summary of all these changes, committed and uncommitted. This summary is in the form of a diff of what committing and pushing (@pxref{Pulling / Pushing}) all these changes would do to the upstream repository. You -can use @kbd{C-x v B =} (@code{vc-diff-outgoing-base}) instead to limit +can use @kbd{C-x v T =} (@code{vc-diff-outgoing-base}) instead to limit the display of changes to the current VC fileset. (The difference -between @w{@kbd{C-x v B D}} and @w{@kbd{C-x v B =}} is like the +between @w{@kbd{C-x v T D}} and @w{@kbd{C-x v T =}} is like the difference between @kbd{C-x v D} and @kbd{C-x v =} (@pxref{Old Revisions}).)@footnote{Another point of comparison is that these commands are like @w{@kbd{C-x v O =}} (@code{vc-fileset-diff-outgoing}) @@ -340,42 +349,135 @@ include uncommitted changes in the reported diffs. Like those other commands, you can use a prefix argument to specify a particular upstream location.} -Second, consider developing a feature on a separate branch. Call this -the @dfn{feature branch},@footnote{Many version control workflows -involve developing new features on isolated branches. However, the term -``feature branch'' is usually reserved for a particular kind of isolated -branch, one that other branches are repeatedly merged into. +@kindex C-x v T l +@findex vc-log-outgoing-base +@kindex C-x v T L +@findex vc-root-log-outgoing-base +Type @kbd{C-x v T L} (@code{vc-root-log-outgoing-base}) to display a +summary of the same changes in the form of a revision log; this does not +include uncommitted changes. You can use @kbd{C-x v T l} +(@code{vc-log-outgoing-base}) instead to limit the display of changes to +the current VC fileset. -That doesn't matter to this explanation, so we use ``feature branch'' to -refer to the separate branch used for developing the feature even though -whether it is really a feature branch depends on other aspects of the -branching workflow in use.} and call the branch from which the feature -branch was originally created the @dfn{trunk} or @dfn{development -trunk}. +Second, consider developing a feature on a separate branch. Call this +the @dfn{topic branch},@footnote{What we mean by a topic branch is any +shorter-lived branch used for work which will later be merged into a +longer-lived branch. Topic branches are sometimes called ``feature +branches''. It is also common for the term ``feature branch'' to be +reserved for a particular kind of topic branch, one that another branch +or other branches are repeatedly merged into.} and call the branch from +which the topic branch was originally created the @dfn{trunk} or +@dfn{development trunk}. In this case, outstanding changes is a more specific notion than just -unpushed and uncommitted changes on the feature branch. You're not +unpushed and uncommitted changes on the topic branch. You're not finished sharing changes with your collaborators until they have been merged into the trunk, and pushed. Therefore, in this example, outstanding changes are those which haven't yet been integrated into the upstream repository's development trunk. That means committed changes -on the feature branch that haven't yet been merged into the trunk, plus +on the topic branch that haven't yet been merged into the trunk, plus uncommitted changes. -@cindex outgoing base, version control -The @dfn{outgoing base} is the upstream location for which the changes -are destined once they are no longer outstanding. In this case, that's -the upstream version of the trunk, to which you and your collaborators -push finished work. +When the current branch is a topic branch and you type @kbd{C-x v T D}, +Emacs displays a summary of all the changes that are outstanding against +the trunk to which the current branch will be merged. This summary is +in the form of a diff of what committing and pushing all the changes, +@emph{and} subsequently merging the topic branch, would do to the trunk. +As above, you can use @kbd{C-x v T =} instead to limit the display of +changes to the current VC fileset. @kbd{C-x v T L} and @kbd{C-x v T l} +show the corresponding revision logs, excluding uncommitted changes as +above. -To display a summary of outgoing changes in this multi-branch example, -supply a prefix argument, by typing @w{@kbd{C-u C-x v B =}} or -@w{@kbd{C-u C-x v B D}}. When prompted, enter the outgoing base. -Exactly what you must supply here depends on the name of your -development trunk and the version control system in use. For example, -with Git, usually you will enter @kbd{origin/master}. We hope to -improve these commands such that no prefix argument is required in the -multi-branch case, too. +This functionality relies on Emacs correctly detecting whether the +current branch is a trunk or a topic branch, and in the latter case, +correctly determining the branch to which the topic branch will +eventually be merged. If the autodetection doesn't produce the right +results, there are several options to tweak and override it. + +@vindex vc-trunk-branch-regexps +@vindex vc-topic-branch-regexps +The variables @code{vc-trunk-branch-regexps} and +@code{vc-topic-branch-regexps} contain lists of regular expressions +matching the names of branches that should always be considered trunk +and topic branches, respectively. You can also specify prefix arguments +to @kbd{C-x v T @dots{}}. Here is a summary of how to use these +controls: + +@enumerate +@item +If the problem is that Emacs thinks your topic branch is a trunk, you +can add either its name, or a regular expression matching its name +(@pxref{Regexps}), to the @code{vc-topic-branch-regexps} variable. +There are a few special kinds of value to simplify common use cases: + +@itemize +@item +If an element contains no characters that are special in regular +expressions, then the regular expression is implictly anchored at both +ends, i.e., it matches only a branch with exactly that name. + +@item +If the first element of @code{vc-topic-branch-regexps} is the symbol +@code{not}, then the meaning of @code{vc-topic-branch-regexps} is +inverted, in that Emacs treats all branches whose names @emph{don't} +match any element of @code{vc-topic-branch-regexps} to be topic +branches. + +@item +If instead of a list of regular expressions the +@code{vc-topic-branch-regexps} variable has the special value @code{t}, +then Emacs treats as a topic branch any branch that the +@code{vc-trunk-branch-regexps} variable doesn't positively identify as a +trunk. +@end itemize + +@xref{Directory Variables}, regarding how to specify values of +@code{vc-topic-branch-regexps} and @code{vc-trunk-branch-regexps} for a +single VC repository. + +@item +If the problem is that Emacs thinks your trunk is a topic branch, you +can add either its name, or a regular expression matching its name, to +the @code{vc-trunk-branch-regexps} variable. This works just like +@code{vc-topic-branch-regexps} with the same special values we just +described. E.g., if the value of @code{vc-trunk-branch-regexps} is +@code{t}, Emacs treats as a trunk any branch that the +@code{vc-topic-branch-regexps} variable doesn't identify as a topic +branch. + +@item +Supply a double prefix argument, i.e. @w{@kbd{C-u C-u C-x v T @dots{}}}, +and Emacs will treat the current branch as a trunk, no matter what. +This is useful when you simply want to obtain a diff of all outgoing +changes (@pxref{VC Change Log}) plus uncommitted changes. + +@item +@cindex outgoing base, version control +Finally, you can take full manual control by supplying a single prefix +argument, i.e. @w{@kbd{C-u C-x v T @dots{}}}. Emacs will prompt you for +the @dfn{outgoing base}, which is the upstream location for which the +changes are destined once they are no longer outstanding. + +To treat the current branch as a trunk specify a reference to the +upstream version of the current branch, to which you and your +collaborators push finished work. To treat the current branch as a +topic branch specify a reference to the upstream version of the trunk to +which the topic branch will later be merged. + +Exactly how to specify a reference to the upstream version of a branch +depends on the version control system in use. For example, with Git, to +refer to the upstream version of a branch @var{foo}, you would supply +@kbd{origin/@var{foo}}. So if @var{foo} is the current branch then you +would enter an outgoing base of @kbd{origin/@var{foo}} to treat +@var{foo} as a trunk, or an outgoing base of @kbd{origin/@var{bar}} to +treat @var{foo} as a topic branch which will later be merged into a +trunk named @var{bar}. + +If there is a default option, it is what Emacs thinks you need to enter +in order to treat the current branch as a topic branch. If there is no +default, then entering nothing at the prompt means to treat the current +branch as a trunk. +@end enumerate @node Other Working Trees @subsubsection Multiple Working Trees for One Repository @@ -412,7 +514,7 @@ Ordinary VC commands like @kbd{C-x v v} (@pxref{Basic VC Editing}) and when there exist other working trees, except that the commits, branches and other VC artifacts they create will be visible from all working trees. Another way to put this is that any action taken in any working -tree which creates new artefacts in the VCS backing store will be +tree which creates new artifacts in the VCS backing store will be visible from other working trees, but actions which only affect workfiles won't be. So if you apply a patch to some workfiles in one working tree, that only affects that working tree. But if you commit @@ -609,11 +711,11 @@ arguments to VCS commands without unnecessary complications of the VC command set and its interfaces with the backend. For example, Git can produce logs of more than one branch, but -@kbd{C-x v b l} (@code{vc-print-branch-log}) prompts for the name of -just one branch. To obtain a log of more than one branch, you can -type @w{@kbd{C-x v ! C-x v b l}} and then append the names of -additional branches to the end of the @samp{git log} command that VC -is about to run. +@w{@kbd{C-x v b L}} (@code{vc-print-root-branch-log}) prompts for the +name of just one branch. To obtain a log of more than one branch, you +can type @w{@kbd{C-x v ! C-x v b L}} and then append the names of +additional branches to the end of the @samp{git log} command that VC is +about to run. @node Preparing Patches @subsubsection Preparing Patches diff --git a/doc/emacs/windows.texi b/doc/emacs/windows.texi index 4c3174b9e1a..8500e3b7731 100644 --- a/doc/emacs/windows.texi +++ b/doc/emacs/windows.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2025 Free Software +@c Copyright (C) 1985--1987, 1993--1995, 1997, 2000--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node Windows @@ -519,6 +519,8 @@ selected frame, and display the buffer in that new window. @vindex split-height-threshold @vindex split-width-threshold @vindex split-window-preferred-direction +@cindex portrait frame +@cindex landscape frame The split can be either vertical or horizontal, depending on the variables @code{split-height-threshold} and @code{split-width-threshold}. These variables should have integer @@ -528,8 +530,14 @@ window's height, the split puts the new window below. Otherwise, if split puts the new window on the right. If neither condition holds, Emacs tries to split so that the new window is below---but only if the window was not split before (to avoid excessive splitting). Whether -Emacs tries first to split vertically or horizontally, is -determined by the value of @code{split-window-preferred-direction}. +Emacs tries first to split vertically or horizontally when both +conditions hold is determined by the value of +@code{split-window-preferred-direction}. Its default is @code{longest}, +which means to split vertically if the window's frame is taller than it +is wide (a @dfn{portrait} frame), and split horizontally if its wider +than it's tall (a @dfn{landscape} frame). The values @code{vertical} +and @code{horizontal} always prefer, respectively, the vertical or the +horizontal split. @item Otherwise, display the buffer in a window previously showing it. diff --git a/doc/emacs/xresources.texi b/doc/emacs/xresources.texi index 0f7aa9fdf52..94b00cc8aea 100644 --- a/doc/emacs/xresources.texi +++ b/doc/emacs/xresources.texi @@ -1,5 +1,5 @@ @c This is part of the Emacs manual. -@c Copyright (C) 1987, 1993--1995, 1997, 2001--2025 Free Software +@c Copyright (C) 1987, 1993--1995, 1997, 2001--2026 Free Software @c Foundation, Inc. @c See file emacs.texi for copying conditions. @node X Resources diff --git a/doc/lispintro/ChangeLog.1 b/doc/lispintro/ChangeLog.1 index badacd6c1aa..b03f37ff954 100644 --- a/doc/lispintro/ChangeLog.1 +++ b/doc/lispintro/ChangeLog.1 @@ -782,7 +782,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2001-2025 Free Software Foundation, Inc. + Copyright (C) 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/lispintro/Makefile.in b/doc/lispintro/Makefile.in index 715882423e2..411a6f1a473 100644 --- a/doc/lispintro/Makefile.in +++ b/doc/lispintro/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994-1999, 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 1994-1999, 2001-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/lispintro/README b/doc/lispintro/README index 08432e738ea..e6eb899a513 100644 --- a/doc/lispintro/README +++ b/doc/lispintro/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/doc/lispintro/cons-1.eps b/doc/lispintro/cons-1.eps index b97af28e2d3..33fd5f0b8aa 100644 --- a/doc/lispintro/cons-1.eps +++ b/doc/lispintro/cons-1.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:26:58 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-2.eps b/doc/lispintro/cons-2.eps index 025dbb72b0c..987e36e3359 100644 --- a/doc/lispintro/cons-2.eps +++ b/doc/lispintro/cons-2.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:26:39 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-2a.eps b/doc/lispintro/cons-2a.eps index 8e584d02284..026823ac8e0 100644 --- a/doc/lispintro/cons-2a.eps +++ b/doc/lispintro/cons-2a.eps @@ -4,7 +4,7 @@ %%CreationDate: Tue Mar 14 15:09:30 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-3.eps b/doc/lispintro/cons-3.eps index a0645aae660..80d244f5042 100644 --- a/doc/lispintro/cons-3.eps +++ b/doc/lispintro/cons-3.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:25:41 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-4.eps b/doc/lispintro/cons-4.eps index 9aaf39039b0..58a15c2c5b5 100644 --- a/doc/lispintro/cons-4.eps +++ b/doc/lispintro/cons-4.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:25:06 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/cons-5.eps b/doc/lispintro/cons-5.eps index d771f470ac2..4fa0669cc40 100644 --- a/doc/lispintro/cons-5.eps +++ b/doc/lispintro/cons-5.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:27:28 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/drawers.eps b/doc/lispintro/drawers.eps index a4dc0246f59..d11575c22aa 100644 --- a/doc/lispintro/drawers.eps +++ b/doc/lispintro/drawers.eps @@ -9,7 +9,7 @@ %%EndComments %%BeginProlog -% Copyright (C) 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index fe72a4d8d24..371c8993cdd 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi @@ -115,7 +115,7 @@ Edition @value{edition-number}, @value{update-date} @sp 1 Distributed with Emacs version @value{EMACSVER}. @sp 1 -Copyright @copyright{} 1990--1995, 1997, 2001--2025 Free Software +Copyright @copyright{} 1990--1995, 1997, 2001--2026 Free Software Foundation, Inc. @sp 1 diff --git a/doc/lispintro/lambda-1.eps b/doc/lispintro/lambda-1.eps index 3d2af88bbb4..dbc5b9de5d6 100644 --- a/doc/lispintro/lambda-1.eps +++ b/doc/lispintro/lambda-1.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:31:53 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-2.eps b/doc/lispintro/lambda-2.eps index 2d222361d3c..1e3767392b4 100644 --- a/doc/lispintro/lambda-2.eps +++ b/doc/lispintro/lambda-2.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:33:09 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispintro/lambda-3.eps b/doc/lispintro/lambda-3.eps index 31c5f50aea7..b6318ed4526 100644 --- a/doc/lispintro/lambda-3.eps +++ b/doc/lispintro/lambda-3.eps @@ -4,7 +4,7 @@ %%CreationDate: Wed Mar 8 14:33:49 1995 %%Creator: Tgif-2.16-p4 by William Chia-Wei Cheng (william@cs.UCLA.edu) -% Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +% Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. % % This file is part of GNU Emacs. % diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1 index 2acde16f79e..3b6a6b00d51 100644 --- a/doc/lispref/ChangeLog.1 +++ b/doc/lispref/ChangeLog.1 @@ -13989,7 +13989,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1998-2025 Free Software Foundation, Inc. + Copyright (C) 1998-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/lispref/Makefile.in b/doc/lispref/Makefile.in index cbd57bdf20b..1140551a34a 100644 --- a/doc/lispref/Makefile.in +++ b/doc/lispref/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1990-1996, 1998-2025 Free Software Foundation, Inc. +# Copyright (C) 1990-1996, 1998-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/lispref/README b/doc/lispref/README index 55fd686d497..d5b5b21c81d 100644 --- a/doc/lispref/README +++ b/doc/lispref/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. -*- outline -*- +Copyright (C) 2001-2026 Free Software Foundation, Inc. -*- outline -*- See the end of the file for license conditions. diff --git a/doc/lispref/abbrevs.texi b/doc/lispref/abbrevs.texi index 3d16c53461a..1d04deeae1a 100644 --- a/doc/lispref/abbrevs.texi +++ b/doc/lispref/abbrevs.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 1999, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1994, 1999, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Abbrevs diff --git a/doc/lispref/anti.texi b/doc/lispref/anti.texi index 161c9c5c9a3..861fa02c16b 100644 --- a/doc/lispref/anti.texi +++ b/doc/lispref/anti.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2002--2025 Free Software Foundation, Inc. +@c Copyright (C) 1999, 2002--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c This node must have no pointers. diff --git a/doc/lispref/back.texi b/doc/lispref/back.texi index 54a036ac829..2db75343120 100644 --- a/doc/lispref/back.texi +++ b/doc/lispref/back.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2001--2025 Free Software Foundation, Inc. +@c Copyright (C) 2001--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c @c %**start of header diff --git a/doc/lispref/backups.texi b/doc/lispref/backups.texi index 9e262346edb..b4e18916496 100644 --- a/doc/lispref/backups.texi +++ b/doc/lispref/backups.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1999, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1995, 1999, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Backups and Auto-Saving diff --git a/doc/lispref/buffers.texi b/doc/lispref/buffers.texi index e759df5746c..054efba9ae1 100644 --- a/doc/lispref/buffers.texi +++ b/doc/lispref/buffers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Buffers diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi index 5a2e3eb1ec9..b907ba96bed 100644 --- a/doc/lispref/commands.texi +++ b/doc/lispref/commands.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Command Loop @@ -4062,7 +4062,8 @@ definition to find the actual event. user signals like @code{sigusr1} are normally handled in this way. The keymap which defines how to handle special events---and which events are special---is in the variable @code{special-event-map} -(@pxref{Controlling Active Maps}). +(@pxref{Controlling Active Maps}). @xref{Misc Events}, for more details +about these and other special events. @defun insert-special-event @cindex inserting special events diff --git a/doc/lispref/compile.texi b/doc/lispref/compile.texi index 57e67001847..87a1e053905 100644 --- a/doc/lispref/compile.texi +++ b/doc/lispref/compile.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 2001--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--1994, 2001--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Byte Compilation @chapter Byte Compilation diff --git a/doc/lispref/control.texi b/doc/lispref/control.texi index 421559cc811..2b882763e06 100644 --- a/doc/lispref/control.texi +++ b/doc/lispref/control.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Control Structures @chapter Control Structures @@ -1493,25 +1493,27 @@ argument: @subsection The @code{cond*} macro @findex cond*@r{, a macro} - The @code{cond*} macro is an alternative to @code{pcase}, and supports -the same functionality, but using syntax that some might find less -cryptic. + You can use the @code{cond*} macro as an alternative to @code{pcase} +if you find @code{pcase}'s syntax too cryptic. In addition, +@code{cond*} offers some new forms of control flow that aren't related +to being an alternative to @code{pcase}. @defmac cond* &rest clauses The @code{cond*} macro is an extended form of the traditional @code{cond}. A @code{cond*} expression contains a series of -@var{clauses}, each of which can use @code{bind*} to specify binding -variables, use @code{match*} to specify matching a pattern as a -condition, or specify an expression as a condition to evaluate as a -test. +@var{clauses}, each of which can use @code{bind*} or @code{bind-and*} to +specify binding variables, use @code{match*} or @code{pcase*} to specify +matching a pattern as a condition, or specify an expression as a +condition to evaluate as a test. Each clause normally has the form @w{@code{(@var{condition} @var{body}@dots{})}}. @var{condition} can be a Lisp expression, as in @code{cond} (@pxref{Conditionals}). Or it can be @w{@code{(bind* -@var{bindings}@dots{})}} or @w{@code{(match* @var{pattern} -@var{datum})}}. +@var{bindings}@dots{})}}, @w{@code{(match* @var{pattern} @var{datum})}}, +@w{@code{(bind-and* @var{bindings}@dots{})}} or @w{@code{(pcase* +@var{pattern} @var{datum})}} @findex bind* @code{(bind* @var{bindings}@dots{})} means to bind @var{bindings} (like @@ -1522,10 +1524,10 @@ true if the first binding's value is non-@code{nil}. @findex bind-and* @code{(bind-and* @var{bindings}@dots{})} means to bind @var{bindings} (like the bindings list in @code{if-let*}, @pxref{Conditionals}) for -only the body of the clause. As a condition, it counts as true if none -of the bindings evaluate to @code{nil}. In addition, if any binding -evaluates to @code{nil}, the expressions for the values of subsequent -bindings are not evaluated. +only the body of the clause. It is always a non-exit clause. As a +condition, it counts as true if none of the bindings evaluate to +@code{nil}. In addition, if any binding evaluates to @code{nil}, the +expressions for the values of subsequent bindings are not evaluated. @findex match* @findex pcase* @@ -1536,23 +1538,24 @@ bind to the parts of @var{datum} that they match. @code{(pcase* @var{pattern} @var{datum})} works in the same way except it uses the Pcase syntax for @var{pattern}. -@code{bind*}, @code{match*}, and @code{pcase*} normally bind their bindings over -the execution of the whole containing clause. However, if the clause is -written to specify ``non-exit'', the clause's bindings cover the whole -rest of the @code{cond*}. +@code{match*}, and @code{pcase*} normally bind their bindings over the +execution of the whole containing clause. However, if the clause is +written to specify ``non-exit'' (see below), the clause's bindings cover +the whole rest of the @code{cond*}. When a clause's condition is true, and it exits the @code{cond*} or is the last clause, the value of the last expression in the clause's body becomes the return value of the @code{cond*} construct. -@subheading Non-exit clause +@subheading Non-exit clauses -If a clause has only one element, or if its first element is @code{t}, -or if it ends with the keyword @code{:non-exit}, then this clause never -exits the @code{cond*} construct. Instead, control falls through to the -next clause (if any). The bindings made in @var{condition} for the -@var{body} of the non-exit clause are passed along to the rest of the -clauses in this @code{cond*} construct. +If a clause has only one element, or if its first element is @code{t}, a +@code{bind*} form or a @code{bind-and*} form, or if it ends with the +keyword @code{:non-exit}, then this clause never exits the @code{cond*} +construct. Instead, control falls through to the next clause (if any). +Except for @code{bind-and*}, the bindings made in @var{condition} for +the @var{body} of the non-exit clause are passed along to the rest of +the clauses in this @code{cond*} construct. Note: @code{pcase*} does not support @code{:non-exit}, and when used in a non-exit clause, it follows the semantics of @code{pcase-let}, see @@ -2344,7 +2347,9 @@ the other usual filtering mechanisms say it should. @xref{Error Debugging}. The macro @code{condition-case-unless-debug} provides another way to handle debugging of such forms. It behaves exactly like @code{condition-case}, unless the variable @code{debug-on-error} is -non-@code{nil}, in which case it does not handle any errors at all. +non-@code{nil}, in which case it causes Emacs to enter the debugger +before executing any applicable handler. (The applicable handler, if +any, will still run when the debugger exits.) @end defmac Once Emacs decides that a certain handler handles the error, it diff --git a/doc/lispref/customize.texi b/doc/lispref/customize.texi index 2d124bd7e8d..364edf63031 100644 --- a/doc/lispref/customize.texi +++ b/doc/lispref/customize.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1997--2025 Free Software Foundation, Inc. +@c Copyright (C) 1997--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Customization @chapter Customization Settings diff --git a/doc/lispref/debugging.texi b/doc/lispref/debugging.texi index 9b36f9ecdb2..8d498608da4 100644 --- a/doc/lispref/debugging.texi +++ b/doc/lispref/debugging.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1994, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Debugging diff --git a/doc/lispref/display.texi b/doc/lispref/display.texi index eb3f7fd5feb..464c0badc36 100644 --- a/doc/lispref/display.texi +++ b/doc/lispref/display.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--1995, 1998--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Display @chapter Emacs Display @@ -486,7 +486,7 @@ A convenient way to do this is to use a @dfn{progress reporter}. (progress-reporter-done progress-reporter)) @end smallexample -@defun make-progress-reporter message &optional min-value max-value current-value min-change min-time +@defun make-progress-reporter message &optional min-value max-value current-value min-change min-time context This function creates and returns a progress reporter object, which you will use as an argument for the other functions listed below. The idea is to precompute as much data as possible to make progress @@ -513,13 +513,19 @@ If @var{min-value} and @var{max-value} are numbers, you can give the argument @var{current-value} a numerical value specifying the initial progress; if omitted, this defaults to @var{min-value}. -The remaining arguments control the rate of echo area updates. The -progress reporter will wait for at least @var{min-change} more -percents of the operation to be completed before printing next -message; the default is one percent. @var{min-time} specifies the -minimum time in seconds to pass between successive prints; the default -is 0.2 seconds. (On some operating systems, the progress reporter may -handle fractions of seconds with varying precision). +The arguments @var{min-change} and @var{min-time} control the rate of +echo area updates. The progress reporter will wait for at least +@var{min-change} more percents of the operation to be completed before +printing next message; the default is one percent. @var{min-time} +specifies the minimum time in seconds to pass between successive prints; +the default is 0.2 seconds. (On some operating systems, the progress +reporter may handle fractions of seconds with varying precision). + +If @var{context} is the symbol @code{async}, it announces that the updates +will occur asynchronously. Backends can use that info to prevent the +progress updates from interfering with other data. For example, the +backend that displays the progress in the echo area will not display +those async updates when the echo area is in use. This function calls @code{progress-reporter-update}, so the first message is printed immediately. @@ -2237,6 +2243,9 @@ means hide the excess parts of @var{string} with a @code{display} text property (@pxref{Display Property}) showing the ellipsis, instead of actually truncating the string. +See also the function @code{truncate-string-pixelwise} for pixel-level +resolution. + @example @group (truncate-string-to-width "\tab\t" 12 4) @@ -2434,6 +2443,37 @@ non-@code{nil}, use any face remappings (@pxref{Face Remapping}) from that buffer when computing the width of @var{string}. @end defun +@defun truncate-string-pixelwise string max-pixels &optional buffer ellipsis ellipsis-pixels +This is a convenience function that uses @code{window-text-pixel-size} +to truncate @var{string} to @var{max-pixels} pixels. Caveat: if you +call this function to measure the width of a string with embedded +newlines, it will then return the width of the widest substring that +does not include newlines. The meaning of this result is the widest +line taken by the string if inserted into a buffer. If @var{buffer} is +non-@code{nil}, use any face remappings (@pxref{Face Remapping}) from +that buffer when computing the width of @var{string}. + +If @var{ellipsis} is non-@code{nil}, it should be a string which will +replace the end of @var{string} when it is truncated. In this case, +more characters will be removed from @var{string} to free enough space +for @var{ellipsis} to fit within @var{max-pixels} pixels. However, if +the pixel width of @var{string} is less than the pixel width of +@var{ellipsis}, @var{ellipsis} will not be appended to the result. If +@var{ellipsis} is non-@code{nil} and not a string, it stands for the +value returned by the function @code{truncate-string-ellipsis}, +described above. + +If @var{ellipsis-pixels} is non-@code{nil} and @var{ellipsis} is +non-@code{nil}, it should be the number of pixels of @var{ellipsis} that +you should precompute using @code{string-pixel-width}, specifying the +same buffer. This is useful to avoid the cost of recomputing this value +repeatedly when you have many strings to truncate using the same +ellipsis string. + +See also the function @code{truncate-string-to-width} for +character-level resolution. +@end defun + @defun line-pixel-height This function returns the height in pixels of the line at point in the selected window. The value includes the line spacing of the line @@ -2576,10 +2616,13 @@ the spacing relative to the frame's default line height. @vindex line-spacing You can specify the line spacing for all lines in a buffer via the -buffer-local @code{line-spacing} variable. An integer specifies -the number of pixels put below lines. A floating-point number -specifies the spacing relative to the default frame line height. This -overrides line spacings specified for the frame. +buffer-local @code{line-spacing} variable. An integer specifies the +number of pixels put below lines. A floating-point number specifies the +spacing relative to the default frame line height. A cons cell of +integers or floating-point numbers specifies the spacing put above and +below the line, allowing for vertically centering text. This overrides +line spacings specified for the frame. + @kindex line-spacing @r{(text property)} Finally, a newline can have a @code{line-spacing} text or overlay @@ -4208,7 +4251,8 @@ The font name (a string), in either XLFD, Fontconfig, or GTK+ format. @itemx :width These have the same meanings as the face attributes of the same name. @xref{Face Attributes}. @code{:family} and @code{:foundry} are -strings, while the other three are symbols. As example values, +strings or symbols, while the other three are either symbols or numbers, +the numerical values of the valid style symbols. As example values, @code{:slant} may be @code{italic}, @code{:weight} may be @code{bold} and @code{:width} may be @code{normal}. @@ -4904,7 +4948,7 @@ either a string or a vector of integers, where each element (an integer) corresponds to one row of the bitmap. Each bit of an integer corresponds to one pixel of the bitmap, where the low bit corresponds to the rightmost pixel of the bitmap. (Note that this order of bits -is opposite of the order in XBM images; @pxref{XBM Images}.) +is the opposite of the order in XBM images; @pxref{XBM Images}.) The height is normally the length of @var{bits}. However, you can specify a different height with non-@code{nil} @var{height}. The width @@ -6360,8 +6404,8 @@ used for each pixel in the XBM that is 0. The default is the frame's background color. @end table - If you specify an XBM image using data within Emacs instead of an -external file, use the following three properties: + To specify an XBM image using data within Emacs instead of an +external file, use the following properties: @table @code @item :data @var{data} @@ -6992,6 +7036,7 @@ Supports the @code{:index} property. @xref{Multi-Frame Images}. @item WebP Image type @code{webp}. +Supports the @code{:index} property. @xref{Multi-Frame Images}. @end table @node Defining Images @@ -7313,8 +7358,8 @@ about these image-specific key bindings. @cindex image frames Some image files can contain more than one image. We say that there are multiple ``frames'' in the image. At present, Emacs supports -multiple frames for GIF, TIFF, and certain ImageMagick formats such as -DJVM@. +multiple frames for GIF, TIFF, WebP, and certain ImageMagick formats +such as DJVM@. The frames can be used either to represent multiple pages (this is usually the case with multi-frame TIFF files, for example), or to @@ -7404,7 +7449,7 @@ period much shorter than @code{image-cache-eviction-delay} (see below), you can opt to flush unused images yourself, instead of waiting for Emacs to do it automatically. -@defun clear-image-cache &optional filter +@defun clear-image-cache &optional filter animation-filter This function clears an image cache, removing all the images stored in it. If @var{filter} is omitted or @code{nil}, it clears the cache for the selected frame. If @var{filter} is a frame, it clears the cache @@ -7412,6 +7457,16 @@ for that frame. If @var{filter} is @code{t}, all image caches are cleared. Otherwise, @var{filter} is taken to be a file name, and all images associated with that file name are removed from all image caches. + +This function also clears the image animation cache, which is a separate +cache that Emacs maintains for animated multi-frame images +(@pxref{Multi-Frame Images}). If @var{animation-filter} is omitted or +@code{nil}, it clears the animation cache in addition to the image +caches selected by @var{filter}. Otherwise, this function removes the +image with specification @code{eq} to @var{animation-filter} only from +the animation cache, and does not clear any image caches. This can help +reduce memory usage after an animation is stopped but the image is still +displayed. @end defun If an image in the image cache has not been displayed for a specified diff --git a/doc/lispref/edebug.texi b/doc/lispref/edebug.texi index 2f5e4d27c46..29d511e8ecc 100644 --- a/doc/lispref/edebug.texi +++ b/doc/lispref/edebug.texi @@ -1,6 +1,6 @@ @comment -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1992--1994, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1992--1994, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. diff --git a/doc/lispref/elisp.texi b/doc/lispref/elisp.texi index 724437b3eb7..aeda08f95f3 100644 --- a/doc/lispref/elisp.texi +++ b/doc/lispref/elisp.texi @@ -99,7 +99,7 @@ This is the @cite{GNU Emacs Lisp Reference Manual} @end ifclear corresponding to Emacs version @value{EMACSVER}. -Copyright @copyright{} 1990--1996, 1998--2025 Free Software Foundation, +Copyright @copyright{} 1990--1996, 1998--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/lispref/errors.texi b/doc/lispref/errors.texi index f8a6ab82b84..77ac3a995cb 100644 --- a/doc/lispref/errors.texi +++ b/doc/lispref/errors.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1993, 1999, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1993, 1999, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Errors diff --git a/doc/lispref/eval.texi b/doc/lispref/eval.texi index ddf67a09671..74fdd16e2f9 100644 --- a/doc/lispref/eval.texi +++ b/doc/lispref/eval.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 1998, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1994, 1998, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Evaluation diff --git a/doc/lispref/files.texi b/doc/lispref/files.texi index 84d6299b018..049e8ac3e84 100644 --- a/doc/lispref/files.texi +++ b/doc/lispref/files.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Files diff --git a/doc/lispref/frames.texi b/doc/lispref/frames.texi index 77b606282da..bdd79528cac 100644 --- a/doc/lispref/frames.texi +++ b/doc/lispref/frames.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Frames @@ -109,6 +109,25 @@ must be a root frame, which means it cannot be a child frame itself descending from it. @end defun +@cindex frame identifier +@defun frame-id &optional frame +This function returns the unique identifier of a frame, an integer, +assigned to @var{frame}. If @var{frame} is @code{nil} or unspecified, +it defaults to the selected frame (@pxref{Input Focus}). This can be +used to unambiguously identify a frame in a context where you do not or +cannot use a frame object. + +A frame undeleted using @command{undelete-frame} will retain its +identifier. A frame cloned using @command{clone-frame} will not retain +its original identifier. @xref{Frame Commands,,,emacs, the Emacs +Manual}. + +Frame identifiers are not persisted using the desktop library +(@pxref{Desktop Save Mode}), @command{frameset-to-register}, or +@code{frameset-save}, and each of their restored frames will bear a new +unique id. +@end defun + @menu * Creating Frames:: Creating additional frames. * Multiple Terminals:: Displaying on several different devices. @@ -198,6 +217,11 @@ A normal hook run by @code{make-frame} before it creates the frame. An abnormal hook run by @code{make-frame} after it created the frame. Each function in @code{after-make-frame-functions} receives one argument, the frame just created. + +You can consult the frame parameters @code{cloned-from} and +@code{undeleted} in your function to determine if a frame was cloned +using @command{clone-frame}, or if it was undeleted using +@command{undelete-frame}. @xref{Frame Parameters}. @end defvar Note that any functions added to these hooks by your initial file are @@ -2206,8 +2230,18 @@ left position ratio is preserved if the @sc{cdr} of the cell is either @code{t} or @code{left-only}. The top position ratio is preserved if the @sc{cdr} of the cell is either @code{t} or @code{top-only}. This parameter has not been yet implemented on text terminals. -@end table +@vindex cloned-from@r{, a frame parameter} +@item cloned-from +The original frame if this frame was made via @code{clone-frame} +(@pxref{Creating Frames,,,emacs, the Emacs Manual}). + +@vindex undeleted@r{, a frame parameter} +@item undeleted +This is non-@code{nil} if this frame was undeleted using the command +@command{undelete-frame} (@pxref{Frame Commands,,,emacs, the Emacs +Manual}). +@end table @node Mouse Dragging Parameters @subsubsection Mouse Dragging Parameters @@ -3154,6 +3188,29 @@ could switch to a different terminal without switching back when you're done. @end deffn +@deffn Command select-frame-by-id id &optional noerror +This function searches open and undeletable frames for a matching frame +identifier @var{id} (@pxref{Frames}). If found, its frame is undeleted, +if necessary, then raised, given focus, and made the selected frame. On +a text terminal, raising a frame causes it to occupy the entire terminal +display. + +This function returns the selected frame or signals an error if @var{id} +is not found, unless @var{noerror} is non-@code{nil}, in which case it +returns @code{nil}. +@end deffn + +@deffn Command undelete-frame-by-id id &optional noerror +This function searches undeletable frames for a matching frame +identifier @var{id} (@pxref{Frames}). If found, its frame is undeleted, +raised, given focus, and made the selected frame. On a text terminal, +raising a frame causes it to occupy the entire terminal display. + +This function returns the undeleted frame or signals an error if +@var{id} is not found, unless @var{noerror} is non-@code{nil}, in which +case it returns @code{nil}. +@end deffn + @cindex text-terminal focus notification Emacs cooperates with the window system by arranging to select frames as the server and window manager request. When a window system diff --git a/doc/lispref/functions.texi b/doc/lispref/functions.texi index 2721c2ce4a0..5444cea7fa9 100644 --- a/doc/lispref/functions.texi +++ b/doc/lispref/functions.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Functions @@ -674,6 +674,7 @@ variable; these two uses of a symbol are independent and do not conflict. (This is not the case in some dialects of Lisp, like Scheme.) +@cindex internal functions, naming conventions By convention, if a function's symbol consists of two names separated by @samp{--}, the function is intended for internal use and the first part names the file defining the function. For example, a diff --git a/doc/lispref/hash.texi b/doc/lispref/hash.texi index 56862a9d934..2f66a4f9abc 100644 --- a/doc/lispref/hash.texi +++ b/doc/lispref/hash.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1999, 2001--2025 Free Software Foundation, Inc. +@c Copyright (C) 1999, 2001--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Hash Tables @chapter Hash Tables diff --git a/doc/lispref/help.texi b/doc/lispref/help.texi index f39ab3e4d05..3261cf838f7 100644 --- a/doc/lispref/help.texi +++ b/doc/lispref/help.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Documentation diff --git a/doc/lispref/hooks.texi b/doc/lispref/hooks.texi index 32d69ca77a4..28f3d2ce996 100644 --- a/doc/lispref/hooks.texi +++ b/doc/lispref/hooks.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1993, 1998, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1993, 1998, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Hooks diff --git a/doc/lispref/internals.texi b/doc/lispref/internals.texi index 986b8048ecf..26292d75369 100644 --- a/doc/lispref/internals.texi +++ b/doc/lispref/internals.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1993, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1993, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node GNU Emacs Internals @@ -286,13 +286,9 @@ program does not use so much space as to force a second garbage collection). @end quotation -@deffn Command garbage-collect -This command runs a garbage collection, and returns information on -the amount of space in use. (Garbage collection can also occur -spontaneously if you use more than @code{gc-cons-threshold} bytes of -Lisp data since the previous garbage collection.) - -@code{garbage-collect} returns a list with information on amount of space in +@defun garbage-collect-heapsize +This function returns information on the current memory usage. +The return value is a list with information on amount of space in use, where each entry has the form @samp{(@var{name} @var{size} @var{used})} or @samp{(@var{name} @var{size} @var{used} @var{free})}. In the entry, @var{name} is a symbol describing the kind of objects this entry represents, @@ -422,6 +418,16 @@ Total heap size, in @var{unit-size} units. @item free-size Heap space which is not currently used, in @var{unit-size} units. @end table +@end defun + +@deffn Command garbage-collect +This command runs a garbage collection, and returns information on +the amount of space in use. (Garbage collection can also occur +spontaneously if you use more than @code{gc-cons-threshold} bytes of +Lisp data since the previous garbage collection.) + +@code{garbage-collect} returns the same list as shown above for +@code{garbage-collect-heapsize}. @end deffn @defopt garbage-collection-messages @@ -1660,6 +1666,7 @@ point to an array of at least @var{count} elements specifying the little-endian magnitude of the return value. @end deftypefn +@cindex GMP, the GNU Multiprecision Library The following example uses the GNU Multiprecision Library (GMP) to calculate the next probable prime after a given integer. @xref{Top,,,gmp}, for a general overview of GMP, and @pxref{Integer @@ -1752,7 +1759,11 @@ next_prime (emacs_env *env, ptrdiff_t nargs, emacs_value *args, mpz_t p; mpz_init (p); extract_big_integer (env, args[0], p); + + /* Assume Emacs is linked to the full GMP library, + not to its mini-gmp subset that lacks mpz_nextprime. */ mpz_nextprime (p, p); + emacs_value result = make_big_integer (env, p); mpz_clear (p); return result; @@ -2844,11 +2855,23 @@ Avoid arbitrary limits. For example, avoid @code{int len = strlen fit in @code{int} range. @item +@cindex overflow in integers +@cindex integer overflow Do not assume that signed integer arithmetic wraps around on overflow. This is no longer true of Emacs porting targets: signed integer overflow has undefined behavior in practice, and can dump core or even cause earlier or later code to behave illogically. Unsigned -overflow does wrap around reliably, modulo a power of two. +overflow does wrap around reliably, modulo a power of two, +if all operand types are unsigned and are @code{unsigned int} or wider. + +@item +Use the macros of @code{} to check for integer overflow +or to implement wraparound arithmetic reliably with integer types +that are signed or are narrower than @code{unsigned int}. +Although @code{} was not standardized until C23, +on non-C23 platforms Emacs internally provides a fallback substitute. +Avoid complex arguments to its macros @code{ckd_add}, @code{ckd_sub} and +@code{ckd_mul}, as the fallback macros might evaluate arguments more than once. @item Prefer signed types to unsigned, as code gets confusing when signed @@ -2907,10 +2930,17 @@ although @code{off_t} is always signed, @code{time_t} need not be. @item Prefer @code{intmax_t} for representing values that might be any -signed integer value. +signed integer value in machine range. A @code{printf}-family function can print such a value via a format like @code{"%"PRIdMAX}. +@item +Prefer Emacs integers, which are either fixnums or bignums, +for representing values that might be outside machine range. +Although low level code uses GMP directly for efficiency, +Emacs integers are typically more convenient at higher levels of +abstraction. + @item Prefer @code{bool}, @code{false} and @code{true} for booleans. Using @code{bool} can make programs easier to read and a bit faster than diff --git a/doc/lispref/intro.texi b/doc/lispref/intro.texi index a4695c9cb5d..cc0cbfaf980 100644 --- a/doc/lispref/intro.texi +++ b/doc/lispref/intro.texi @@ -1,5 +1,5 @@ @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 2001--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--1994, 2001--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Introduction diff --git a/doc/lispref/keymaps.texi b/doc/lispref/keymaps.texi index 3e6b82fab00..8ef6b77c178 100644 --- a/doc/lispref/keymaps.texi +++ b/doc/lispref/keymaps.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 1998--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--1994, 1998--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Keymaps @chapter Keymaps diff --git a/doc/lispref/lay-flat.texi b/doc/lispref/lay-flat.texi index 3c050249549..829332f00f8 100644 --- a/doc/lispref/lay-flat.texi +++ b/doc/lispref/lay-flat.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2001--2025 Free Software Foundation, Inc. +@c Copyright (C) 2001--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @c @comment %**start of header diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi index 37ef8d46525..90d0bfc4d12 100644 --- a/doc/lispref/lists.texi +++ b/doc/lispref/lists.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Lists diff --git a/doc/lispref/loading.texi b/doc/lispref/loading.texi index acbe98ed84c..77880dd611d 100644 --- a/doc/lispref/loading.texi +++ b/doc/lispref/loading.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Loading diff --git a/doc/lispref/macros.texi b/doc/lispref/macros.texi index fde475bbc8b..5af1608eb62 100644 --- a/doc/lispref/macros.texi +++ b/doc/lispref/macros.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1995, 1998, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Macros @@ -640,3 +640,25 @@ indentation is being computed by @kbd{C-M-q}; if the value is a number, @kbd{C-M-q} need not recalculate indentation for the following lines until the end of the list. @end table + +@defvar lisp-indent-local-overrides +This variable can be used to override the indentation specification used +for certain symbol, as specified using their @code{lisp-indent-function} +symbol property (@pxref{Symbol Properties}). It is intended to be used +as a file-local or directory-local variable; @xref{File Variables, , +Local Variables in Files, emacs, The GNU Emacs Manual}. + +Each key is a symbol and each value is an indent specification, which +overrides the value of the symbol's @code{lisp-indent-function} +property. The value can take the same forms as the value of the symbol +property, documented above. Note that using a function is not safe and +should be avoided, else all users, who visit the file, would have to +explicitly approve or decline their use. + +This variable is used by the functions @code{lisp-indent-function} +and @code{common-lisp-indent-function}. In case of the latter, the +symbol properties @code{common-lisp-indent-function-for-elisp} and +@code{common-lisp-indent-function} take precedence not only over the +@code{lisp-indent-function} property but also over this variable. + +@end defvar diff --git a/doc/lispref/maps.texi b/doc/lispref/maps.texi index f7116d6cf68..cf933bafceb 100644 --- a/doc/lispref/maps.texi +++ b/doc/lispref/maps.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1993, 1999, 2001--2025 Free Software Foundation, +@c Copyright (C) 1990--1993, 1999, 2001--2026 Free Software Foundation, @c Inc. @c See the file elisp.texi for copying conditions. @node Standard Keymaps diff --git a/doc/lispref/markers.texi b/doc/lispref/markers.texi index 2fd71a2a5a8..53bca93621b 100644 --- a/doc/lispref/markers.texi +++ b/doc/lispref/markers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Markers diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi index b34f73feb5b..9d73aa89b2d 100644 --- a/doc/lispref/minibuf.texi +++ b/doc/lispref/minibuf.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Minibuffers diff --git a/doc/lispref/modes.texi b/doc/lispref/modes.texi index 668205d5c04..2214a30c170 100644 --- a/doc/lispref/modes.texi +++ b/doc/lispref/modes.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Modes diff --git a/doc/lispref/nonascii.texi b/doc/lispref/nonascii.texi index c833ed96b0b..458786f40ea 100644 --- a/doc/lispref/nonascii.texi +++ b/doc/lispref/nonascii.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1998--1999, 2001--2025 Free Software Foundation, Inc. +@c Copyright (C) 1998--1999, 2001--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Non-ASCII Characters @chapter Non-@acronym{ASCII} Characters diff --git a/doc/lispref/numbers.texi b/doc/lispref/numbers.texi index 5394dc5894f..b225a4b50d7 100644 --- a/doc/lispref/numbers.texi +++ b/doc/lispref/numbers.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Numbers diff --git a/doc/lispref/objects.texi b/doc/lispref/objects.texi index aa8bca84dab..158a5117d9d 100644 --- a/doc/lispref/objects.texi +++ b/doc/lispref/objects.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Lisp Data Types diff --git a/doc/lispref/os.texi b/doc/lispref/os.texi index 44dd3bbb63c..f5ca6efa21b 100644 --- a/doc/lispref/os.texi +++ b/doc/lispref/os.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node System Interface @@ -34,6 +34,7 @@ terminal and the screen. * Batch Mode:: Running Emacs without terminal interaction. * Session Management:: Saving and restoring state with X Session Management. * Desktop Notifications:: Desktop notifications. +* System Taskbar:: Controlling system GUI taskbar features. * File Notifications:: File notifications. * Dynamic Libraries:: On-demand loading of support libraries. * Security Considerations:: Running Emacs in an unfriendly environment. @@ -3342,7 +3343,7 @@ notification sent will belong. This category is reproduced within the system's notification settings menus, but is ignored under Android 7.1 and earlier. -If @var{group} is nil or not present within @var{params}, it is +If @var{group} is @code{nil} or not present within @var{params}, it is replaced by the string @samp{"Desktop Notifications"}. Callers should provide one stable combination of @var{urgency} and @@ -3371,6 +3372,127 @@ Android 13 and later, any notifications sent will be silently disregarded. @end defun +@node System Taskbar +@section Controlling System GUI Taskbar Features +@cindex system taskbar +@cindex mode, system taskbar + + @xref{System Taskbar,,, emacs, The GNU Emacs Manual}, for an overview +and configuration. + +@defun system-taskbar-badge &optional count +This function displays @var{count} as an overlay on the system taskbar +Emacs icon. + +If @var{count} is an integer, display that. + +If @var{count} is a string on back ends that support strings, display +that. The string should be short. + +On back ends which do not support strings, convert @var{count} to an +integer, or @code{nil} if that fails. + +If @var{count} is @code{nil} or an empty string, remove the counter or +short string. + +Display the system taskbar icon badge set to @var{count}. If +@var{count} is @code{nil}, clear the badge. @var{count} is typically an +integer. + +If @var{count} is a string, it is converted to an integer on systems +that do not support string badges, such as GNU/Linux D-Bus, and the +badge will be cleared if the string is an invalid integer +representation. On systems that support strings, such as macOS/GNUstep +and MS-Windows, the badge is set to the string and displayed, and may be +truncated to fit the visual space allocated by the system. In any case, +if the string is empty, clear the badge. +@end defun + +@defun system-taskbar-attention &optional urgency timeout +This function flashes or bounces system taskbar Emacs icon and/or its +frame to alert the user. + +@var{urgency} can be one of the symbols @code{informational}, or +@code{critical}. + +If @var{urgency} is @code{nil}, clear the attention indicator. + +The attention indicator is cleared by the earliest of bringing the Emacs +GUI into focus, or after @var{timeout} seconds. If @var{timeout} is +@code{nil}, the system GUI behavior has priority. + +On some back ends, @code{critical} has the same effect as +@code{informational}. + +On some back ends, attention will be displayed +only if Emacs is not the currently focused application. +@end defun + +@defun system-taskbar-progress &optional progress + This function displays a progress indicator overlay on the system +taskbar Emacs icon. + +@var{progress} is a float in the range 0.0 to 1.0. If @var{progress} is +@code{nil}, remove the progress indicator. + +It is convenient to use the built-in progress reporter functions which, +when @code{system-taskbar-mode} is enabled, integrate with +@code{system-taskbar-progress} by default. @xref{Progress}. +@end defun + +@noindent +Examples of system taskbar functions: + +@lisp +@group +;; Enable and initialize system-taskbar-mode before calling its +;; package functions. +(system-taskbar-mode) + +;; Display a badge integer on the taskbar icon. +(system-taskbar-badge emacs-major-version) + +;; A string representation of an integer is converted to an +;; integer on GNU/Linux. +(system-taskbar-badge "31") + +;; Short strings are displayed on macOS/GNUstep and MS-Windows. +(system-taskbar-badge "Test") + +;; Clear the badge. +(system-taskbar-badge) +@end group + +@group +;; Get the user's attention and clear the request after 3 seconds. +(system-taskbar-attention 'informational 3) + +;; Get the user's attention and clear when Emacs is focused. +(system-taskbar-attention 'critical) + +;; Clear the attention request. +(system-taskbar-attention) +@end group + +@group +;; Make sure system taskbar is integrated with progress-reporter. +(setopt system-taskbar-use-progress-reporter t) ; t is the default +(system-taskbar-mode) + +;; Report `dotimes` progress on the taskbar icon. +(dotimes-with-progress-reporter + (i 10) + "Counting from 1 to 10..." + (sleep-for 1)) + +;; Report `dolist` progress on the taskbar icon. +(dolist-with-progress-reporter + (i (make-list 10 t)) + "Progress from 1 to 10 elements..." + (sleep-for 1)) +@end group +@end lisp + @node File Notifications @section Notifications on File Changes @cindex file notifications diff --git a/doc/lispref/package.texi b/doc/lispref/package.texi index 41fc6c77dd6..8f3f5fe79b0 100644 --- a/doc/lispref/package.texi +++ b/doc/lispref/package.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2010--2025 Free Software Foundation, Inc. +@c Copyright (C) 2010--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Packaging @chapter Preparing Lisp code for distribution @@ -156,7 +156,7 @@ the various headers, as illustrated by the following example: @group ;;; superfrobnicator.el --- Frobnicate and bifurcate flanges -*- lexical-binding:t -*- -;; Copyright (C) 2022, 2025 Free Software Foundation, Inc. +;; Copyright (C) 2022, 2025--2026 Free Software Foundation, Inc. @end group ;; Author: J. R. Hacker diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi index 08f5c310a24..fde8d403f54 100644 --- a/doc/lispref/parsing.texi +++ b/doc/lispref/parsing.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2021--2025 Free Software Foundation, Inc. +@c Copyright (C) 2021--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Parsing Program Source @chapter Parsing Program Source @@ -1599,7 +1599,7 @@ loops, it is important to compile that query, because a compiled query is much faster than an uncompiled one. A compiled query can be used anywhere a query is accepted. -@defun treesit-query-compile language query +@defun treesit-query-compile language query &optional eager This function compiles @var{query} for @var{language} into a compiled query object and returns it. @@ -1607,17 +1607,33 @@ This function raises the @code{treesit-query-error} error if @var{query} is malformed. The signal data contains a description of the specific error. You can use @code{treesit-query-validate} to validate and debug the query. + +By default, Emacs lazily compiles @var{query}, meaning @var{query} isn't +actually compiled until it's used. To compile @var{query} immediately, +pass non-@code{nil} for @var{eager}. + +@findex treesit-query-eagerly-compiled-p +To tell an actually compiled query apart from one that hasn't been +compiled, use @code{treesit-query-eagerly-compiled-p}. + +If @var{query} is malformed or language can't be loaded, this function +signals @code{treesit-query-error}. Obviously this will only happen +when @var{eager} is non-@code{nil}, since otherwise Emacs doesn't +actually compile @var{query}. @end defun @findex treesit-query-language +@findex treesit-query-source @findex treesit-query-expand @findex treesit-pattern-expand @findex treesit-query-valid-p There are some additional functions for queries: @code{treesit-query-language} returns the language of a query; -@code{treesit-query-valid-p} checks whether a query is valid; -@code{treesit-query-expand} converts a s-expression query into the -string format; and @code{treesit-pattern-expand} converts a pattern. +@code{treesit-query-source} returns the original string or sexp source +query of a compiled query; @code{treesit-query-valid-p} checks whether a +query is valid; @code{treesit-query-expand} converts a s-expression +query into the string format; and @code{treesit-pattern-expand} converts +a pattern. @findex treesit-query-first-valid Tree-sitter grammars change overtime. To support multiple possible diff --git a/doc/lispref/peg.texi b/doc/lispref/peg.texi index d93b1f6df29..0c851f15ade 100644 --- a/doc/lispref/peg.texi +++ b/doc/lispref/peg.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Parsing Expression Grammars diff --git a/doc/lispref/positions.texi b/doc/lispref/positions.texi index e25cfacd19f..9fcffee2ee0 100644 --- a/doc/lispref/positions.texi +++ b/doc/lispref/positions.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--1995, 1998--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Positions @chapter Positions @@ -57,14 +57,18 @@ buffer size plus 1. If narrowing is in effect (@pxref{Narrowing}), then point is constrained to fall within the accessible portion of the buffer (possibly at one end of it). +@cindex buffer point Each buffer has its own value of point, which is independent of the value of point in other buffers. Each window also has a value of point, -which is independent of the value of point in other windows on the same -buffer. This is why point can have different values in various windows -that display the same buffer. When a buffer appears in only one window, -the buffer's point and the window's point normally have the same value, -so the distinction is rarely important. @xref{Window Point}, for more -details. +which is independent of the value of point in other windows showing the +same buffer. This is why the cursor may appear at different positions +in various windows that display the same buffer. Wherever necessary, we +use the terms @dfn{buffer point} for the unique position of point of a +specific buffer and the term @dfn{window point} for the position of +point in a specific window showing that buffer. When a buffer appears +in only one window, its buffer's point and that window's point normally +have the same value, so the distinction is rarely important. +@xref{Window Point}, for more details. @defun point @cindex current buffer position diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 12e43cda5a6..555f795dcfd 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Processes @@ -1842,11 +1842,11 @@ text arrives, you could insert a line like the following just before the To force point to the end of the new output, no matter where it was previously, eliminate the variable @code{moving} from the example and call @code{goto-char} unconditionally. Note that this doesn't -necessarily move the window point. The default filter actually uses -@code{insert-before-markers} which moves all markers, including the -window point. This may move unrelated markers, so it's generally -better to move the window point explicitly, or set its insertion type -to @code{t} (@pxref{Window Point}). +necessarily move window point. The default filter actually uses +@code{insert-before-markers} which moves all markers, including window +point. This may move unrelated markers, so it's generally better to +move window point explicitly, or set its insertion type to @code{t} +(@pxref{Window Point}). @ignore In earlier Emacs versions, every filter function that did regular diff --git a/doc/lispref/records.texi b/doc/lispref/records.texi index 427adb8748f..f0c856f9871 100644 --- a/doc/lispref/records.texi +++ b/doc/lispref/records.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2017--2025 Free Software Foundation, Inc. +@c Copyright (C) 2017--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Records @chapter Records diff --git a/doc/lispref/searching.texi b/doc/lispref/searching.texi index a1354d30c07..fce9229fb30 100644 --- a/doc/lispref/searching.texi +++ b/doc/lispref/searching.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Searching and Matching diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 2b1db79e07b..afee255346c 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Sequences Arrays Vectors @@ -1110,9 +1110,9 @@ instead of the default @code{equal}. @cindex sequences, intersection of @cindex intersection of sequences This function returns a copy of @var{sequence1} from which the -elements that appear in @var{sequence2} where removed. If the optional -argument @var{function} is non-@code{nil}, it is a function of two -arguments to use to compare elements instead of the default +elements that do not appear in @var{sequence2} were removed. If the +optional argument @var{function} is non-@code{nil}, it is a function of +two arguments to use to compare elements instead of the default @code{equal}. @example @@ -1125,10 +1125,11 @@ arguments to use to compare elements instead of the default @defun seq-difference sequence1 sequence2 &optional function - This function returns a list of the elements that appear in -@var{sequence1} but not in @var{sequence2}. If the optional argument -@var{function} is non-@code{nil}, it is a function of two arguments to -use to compare elements instead of the default @code{equal}. + This function returns a copy of @var{sequence1} from which the +elements that appear in @var{sequence2} were removed. If the optional +argument @var{function} is non-@code{nil}, it is a function of two +arguments to use to compare elements instead of the default +@code{equal}. @example @group diff --git a/doc/lispref/streams.texi b/doc/lispref/streams.texi index f049a2d23b1..288fa2b0b71 100644 --- a/doc/lispref/streams.texi +++ b/doc/lispref/streams.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1994, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1994, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Read and Print @@ -713,11 +713,11 @@ would have printed for the same argument. (prin1-to-string (mark-marker)) @result{} "#" @end group +@end example If @var{overrides} is non-@code{nil}, it should either be @code{t} (which tells @code{prin1} to use the defaults for all printer related variables), or a list of settings. @xref{Output Overrides}, for details. -@end example If @var{noescape} is non-@code{nil}, that inhibits use of quoting characters in the output. (This argument is supported in Emacs versions diff --git a/doc/lispref/strings.texi b/doc/lispref/strings.texi index fa629622a71..d073d3ffe2f 100644 --- a/doc/lispref/strings.texi +++ b/doc/lispref/strings.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Strings and Characters @@ -281,6 +281,17 @@ another string, alter a constant string in the program, or even raise an error. To obtain a string that you can safely mutate, use @code{copy-sequence} on the result. +If you need to create a string made from @var{n} copies of a given +source string @var{source}, you can use @code{concat} as follows: + +@lisp + (apply #'concat (make-list @var{n} @var{source})) +@end lisp + +@noindent +This uses the fact that @code{concat} can take any kind of sequence as +its arguments. + For information about other concatenation functions, see the description of @code{mapconcat} in @ref{Mapping Functions}, @code{vconcat} in @ref{Vector Functions}, and @code{append} in @ref{Building @@ -289,7 +300,7 @@ string to be used as a shell command, see @ref{Shell Arguments, combine-and-quote-strings}. @end defun -@defun split-string string &optional separators omit-nulls trim +@defun split-string string &optional separators omit-empty trim This function splits @var{string} into substrings based on the regular expression @var{separators} (@pxref{Regular Expressions}). Each match for @var{separators} defines a splitting point; the substrings between @@ -297,85 +308,37 @@ splitting points are made into a list, which is returned. If @var{separators} is @code{nil} (or omitted), the default is the value of @code{split-string-default-separators} and the function -behaves as if @var{omit-nulls} were @code{t}. +behaves as if @var{omit-empty} were @code{t}. -If @var{omit-nulls} is @code{nil} (or omitted), the result contains -null strings whenever there are two consecutive matches for +If @var{omit-empty} is @code{nil} (or omitted), the result contains +empty strings whenever there are two consecutive matches for @var{separators}, or a match is adjacent to the beginning or end of -@var{string}. If @var{omit-nulls} is @code{t}, these null strings are +@var{string}. If @var{omit-empty} is @code{t}, these empty strings are omitted from the result. If the optional argument @var{trim} is non-@code{nil}, it should be a regular expression to match text to trim from the beginning and end of -each substring. If trimming makes the substring empty, it is treated -as null. +each substring. Trimming may make the substring empty and omitted from +the result if @var{omit-empty} is @code{t} as above. If you need to split a string into a list of individual command-line arguments suitable for @code{call-process} or @code{start-process}, see @ref{Shell Arguments, split-string-and-unquote}. +Do not use a value for @var{separators} that matches the empty string, +or the results will be unpredictable. To split a string into individual +characters, use @code{string-to-list} or @code{string-to-vector}. + Examples: @example -(split-string " two words ") - @result{} ("two" "words") -@end example - -The result is not @code{("" "two" "words" "")}, which would rarely be -useful. If you need such a result, use an explicit value for -@var{separators}: - -@example -(split-string " two words " - split-string-default-separators) - @result{} ("" "two" "words" "") -@end example - -@example -(split-string "Soup is good food" "o") - @result{} ("S" "up is g" "" "d f" "" "d") -(split-string "Soup is good food" "o" t) - @result{} ("S" "up is g" "d f" "d") -(split-string "Soup is good food" "o+") - @result{} ("S" "up is g" "d f" "d") -@end example - -Empty matches do count, except that @code{split-string} will not look -for a final empty match when it already reached the end of the string -using a non-empty match or when @var{string} is empty: - -@example -(split-string "aooob" "o*") - @result{} ("" "a" "" "b" "") -(split-string "ooaboo" "o*") - @result{} ("" "" "a" "b" "") -(split-string "" "") - @result{} ("") -@end example - -However, when @var{separators} can match the empty string, -@var{omit-nulls} is usually @code{t}, so that the subtleties in the -three previous examples are rarely relevant: - -@example -(split-string "Soup is good food" "o*" t) - @result{} ("S" "u" "p" " " "i" "s" " " "g" "d" " " "f" "d") -(split-string "Nice doggy!" "" t) - @result{} ("N" "i" "c" "e" " " "d" "o" "g" "g" "y" "!") -(split-string "" "" t) - @result{} nil -@end example - -Somewhat odd, but predictable, behavior can occur for certain -``non-greedy'' values of @var{separators} that can prefer empty -matches over non-empty matches. Again, such values rarely occur in -practice: - -@example -(split-string "ooo" "o*" t) - @result{} nil -(split-string "ooo" "\\|o+" t) - @result{} ("o" "o" "o") +@group +(split-string " one two ") @result{} ("one" "two") +(split-string "one::two:" ":") @result{} ("one" "" "two" "") +(split-string "one::two:" ":+") @result{} ("one" "two" "") +(split-string "one::two:" ":" t) @result{} ("one" "two") +(split-string "one: : two : " ":" t " +") @result{} ("one" "two") +@end group @end example @end defun @@ -435,9 +398,9 @@ display purposes; use @code{truncate-string-to-width} or (@pxref{Size of Displayed Text}). @end defun -@defun string-lines string &optional omit-nulls keep-newlines +@defun string-lines string &optional omit-empty keep-newlines Split @var{string} into a list of strings on newline boundaries. If -the optional argument @var{omit-nulls} is non-@code{nil}, remove empty +the optional argument @var{omit-empty} is non-@code{nil}, remove empty lines from the results. If the optional argument @var{keep-newlines} is non-@code{nil}, don't remove the trailing newlines from the result strings. @@ -1027,10 +990,24 @@ made with quoting (that is, using @code{prin1}---@pxref{Output Functions}). Thus, strings are enclosed in @samp{"} characters, and @samp{\} characters appear where necessary before special characters. +@item %b +@item %B +@cindex integer to binary +Replace the specification with the base-two or binary representation of +an integer. The representation has leading @samp{-} if negative; +for an unsigned two's complement representation of a possibly-negative +integer @var{n}, format @code{(logand @var{n} @var{mask})} +where @var{mask} corresponds to the desired word size. +Although plain @samp{%b} and @samp{%B} are identical, +@samp{%#b} prefixes with lower case @samp{0b} and @samp{%#B} with upper case. +The object can also be a floating-point number that is +formatted as an integer, dropping any fraction. + @item %o @cindex integer to octal Replace the specification with the base-eight representation of an -integer. The object can also be a floating-point number that is formatted +integer. Like @samp{%b}, the representation has leading @samp{-} if negative; +The object can also be a floating-point number that is formatted as an integer, dropping any fraction. @item %d @@ -1043,8 +1020,9 @@ formatted as an integer, dropping any fraction. @itemx %X @cindex integer to hexadecimal Replace the specification with the base-sixteen representation of an -integer. @samp{%x} uses lower case and @samp{%X} uses upper -case. The object can also be a floating-point number that is +integer. Like @samp{%b}, the representation has leading @samp{-} if negative. +@samp{%x} uses lower case and @samp{%X} uses upper case. +The object can also be a floating-point number that is formatted as an integer, dropping any fraction. @item %c @@ -1132,8 +1110,9 @@ both flags are used, @samp{+} takes precedence. The flag @samp{#} specifies an alternate form which depends on the format in use. For @samp{%o}, it ensures that the result begins -with a @samp{0}. For @samp{%x} and @samp{%X}, it prefixes nonzero results -with @samp{0x} or @samp{0X}. For @samp{%e} and @samp{%f}, the +with @samp{0}. For @samp{%x}, @samp{%X}, @samp{%b} and @samp{%B}, +it prefixes nonzero results with @samp{0x}, @samp{0X}, @samp{0b} +or @samp{0B}, respectively. For @samp{%e} and @samp{%f}, the @samp{#} flag means include a decimal point even if the precision is zero. For @samp{%g}, it always includes a decimal point, and also forces any trailing zeros after the decimal point to be left in place @@ -1220,11 +1199,10 @@ family produce. retrieve a copy of the formatted value, use a specification that lets @code{read} reconstruct the value. To format numbers in this reversible way you can use @samp{%s} and @samp{%S}, to format just -integers you can also use @samp{%d}, and to format just nonnegative -integers you can also use @samp{#x%x} and @samp{#o%o}. Other formats -may be problematic; for example, @samp{%d} and @samp{%g} can mishandle -NaNs and can lose precision and type, and @samp{#x%x} and @samp{#o%o} -can mishandle negative integers. @xref{Input Functions}. +integers you can also use @samp{%d}, @samp{#x%x}, @samp{#o%o} and @samp{#b%b}. +Other formats do not guarantee preservation of all values; for example, +@samp{%g} can lose precision and type and does not preserve NaN or +infinity. @xref{Input Functions}. The functions described in this section accept a fixed set of specification characters. The next section describes a function diff --git a/doc/lispref/symbols.texi b/doc/lispref/symbols.texi index c6c3e6e189a..4fd0c83450e 100644 --- a/doc/lispref/symbols.texi +++ b/doc/lispref/symbols.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Symbols diff --git a/doc/lispref/syntax.texi b/doc/lispref/syntax.texi index 3ab349df8f3..c9c7424847b 100644 --- a/doc/lispref/syntax.texi +++ b/doc/lispref/syntax.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Syntax Tables diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi index c6e3b1bdbec..a313480944b 100644 --- a/doc/lispref/text.texi +++ b/doc/lispref/text.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--1995, 1998--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Text @chapter Text @@ -6014,12 +6014,21 @@ must be a Lisp object that can be serialized as JSON (@pxref{Parsing JSON}). The result is forwarded to the server as the JSONRPC @code{result} object. A non-local return, achieved by calling the function @code{jsonrpc-error}, causes an error response to be sent to -the server. The details of the accompanying JSONRPC @code{error} -object are filled out with whatever was passed to -@code{jsonrpc-error}. A non-local return triggered by an unexpected -error of any other type also causes an error response to be sent -(unless you have set @code{debug-on-error}, in which case this calls -the Lisp debugger, @pxref{Error Debugging}). +the server. A non-local return triggered by an unexpected error of any +other type also causes a response to be sent. The debugger is never +called (unless you have set @code{debug-on-error}, in which case the +Lisp debugger may be called, @pxref{Error Debugging}). + +The details of the accompanying JSONRPC @code{error} object are filled +out automatically (in the case of unexpected errors) or with whatever +was passed to @code{jsonrpc-error} (in the case of explicit calls). + +Exceptionally, an explicit call to @code{jsonrpc-error} which sets +@code{:code} to 32000 and @code{:data} to any JSON object has the +meaning of ``no error'' and triggers a normal response to the remote +endpoint with @code{result} being set to @code{:data}. This is useful +if the application wants to treat some non-local exits such as user +quits as benign. @findex jsonrpc-convert-to-endpoint @findex jsonrpc-convert-from-endpoint @@ -6582,6 +6591,19 @@ risk that the @var{signal} function gets triggered in the middle of it, because the @var{signal} is re-enabled only after @var{func} finishes. @end defun +@defvar track-changes-undo-only +If your code uses @code{track-changes} to perform further modifications +to the buffer (for example, to mark the parts of the buffer that have +been edited), then you may want to refrain from making those +modifications when the changes are the result of an undo (which +presumably also undoes the modifications you had applied back when the +corresponding edit was made). +To that end @code{track-changes-fetch} binds +@code{track-changes-undo-only} to non-@code{nil} during calls to +@var{func} if the changes were the result of undo. +@end defvar + + @defun track-changes-unregister id This function tells the library that the tracker @var{id} does not need to know about buffer changes any more. Most clients will never want to diff --git a/doc/lispref/threads.texi b/doc/lispref/threads.texi index db6d0cf4d26..11d851f85ac 100644 --- a/doc/lispref/threads.texi +++ b/doc/lispref/threads.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 2012--2025 Free Software Foundation, Inc. +@c Copyright (C) 2012--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Threads @chapter Threads diff --git a/doc/lispref/tips.texi b/doc/lispref/tips.texi index f4f5756ea07..7f22dc06ef2 100644 --- a/doc/lispref/tips.texi +++ b/doc/lispref/tips.texi @@ -1,6 +1,6 @@ @c -*- mode: texinfo; coding: utf-8 -*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1993, 1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1993, 1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Tips @@ -1065,7 +1065,7 @@ explains these conventions, starting with an example: @group ;;; foo.el --- Support for the Foo programming language -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Your Name +;; Copyright (C) 2010-2026 Your Name @end group ;; Author: Your Name diff --git a/doc/lispref/two-volume-cross-refs.txt b/doc/lispref/two-volume-cross-refs.txt index dcd9e67ec55..7498013097b 100644 --- a/doc/lispref/two-volume-cross-refs.txt +++ b/doc/lispref/two-volume-cross-refs.txt @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See end for copying conditions. Two Volume Cross References diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make index b3b8363904b..9d77f6b8fe6 100644 --- a/doc/lispref/two-volume.make +++ b/doc/lispref/two-volume.make @@ -1,4 +1,4 @@ -# Copyright (C) 2007-2025 Free Software Foundation, Inc. +# Copyright (C) 2007-2026 Free Software Foundation, Inc. # See end for copying conditions. # although it would be nice to use tex rather than pdftex to avoid diff --git a/doc/lispref/variables.texi b/doc/lispref/variables.texi index d250b0e711e..e89b28eb0c0 100644 --- a/doc/lispref/variables.texi +++ b/doc/lispref/variables.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--2025 Free Software Foundation, Inc. +@c Copyright (C) 1990--2026 Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Variables @chapter Variables @@ -617,6 +617,8 @@ float-pi @node Tips for Defining @section Tips for Defining Variables Robustly +@cindex variables, naming conventions +@cindex naming conventions, variables When you define a variable whose value is a function, or a list of functions, use a name that ends in @samp{-function} or @@ -659,6 +661,7 @@ The value is a whole shell command. @item @dots{}-switches The value specifies options for a command. +@cindex internal variables, naming conventions @item @var{prefix}--@dots{} The variable is intended for internal use and is defined in the file @file{@var{prefix}.el}. (Emacs code contributed before 2018 may @@ -2653,6 +2656,19 @@ This macro returns the connection-local value of @var{symbol} for If @var{symbol} does not have a connection-local binding, the value is the default binding of the variable. + +The difference to @code{with-connection-local@{-application@}-variables} +is, that @code{symbol} is not set buffer-local. A typical usage pattern +is to use only the the connection value of a variable if it exists, and +not to use its default value otherwise (using @code{my-app-variable} +initialized above): + +@lisp +(if (connection-local-p my-app-variable 'my-app) + (connection-local-value my-app-variable 'my-app) + ;; Something else. + ) +@end lisp @end defmac @defvar enable-connection-local-variables diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 739f61905f3..d804c34250f 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -1,6 +1,6 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. -@c Copyright (C) 1990--1995, 1998--1999, 2001--2025 Free Software +@c Copyright (C) 1990--1995, 1998--1999, 2001--2026 Free Software @c Foundation, Inc. @c See the file elisp.texi for copying conditions. @node Windows @@ -3549,6 +3549,72 @@ the selected window is not used; thus if the selected frame has a single window, it is not used. @end defun +@defun display-buffer-in-new-tab buffer alist +This function tries to display @var{buffer} in a new tab. + +If @var{alist} contains a non-@code{nil} @code{tab-name} entry (which +may be a string or a function), the buffer is displayed in a new tab +with that name. If the @code{tab-name} entry is a function, it is +called with two arguments (@var{buffer} and @var{alist}), and should +return the tab name. + +If the @code{tab-name} entry is omitted or @code{nil}, a new tab is +created without an explicit name. + +If @var{alist} contains a non-@code{nil} @code{tab-group} entry, this +defines the tab group, overriding user option +@code{tab-bar-new-tab-group}. This entry may again be a string or a +function which is called in the same manner as @code{tab-name}. +@end defun + +@defun display-buffer-in-tab buffer alist +This function tries to display @var{buffer} in a new or existing tab. + +If @var{alist} contains a non-@code{nil} @code{reusable-frames} entry +then the frames indicated by its value are searched for an existing tab +which already displays the buffer. The possible values of +@code{reusable-frames} are: + +@itemize @bullet +@item @code{t} +means consider all existing frames. +@item @code{visible} +means consider all visible frames. +@item 0 +means consider all frames on the current terminal. +@item A frame +means consider that frame only. +@item Any other non-@code{nil} value +means consider the selected frame. +@item @code{nil} +means do not search any frames (equivalent to omitting the entry). Note +that this is different to the typical meaning of the value @code{nil} +for a @code{reusable-frames} entry in a buffer display action alist. +@end itemize + +If @var{alist} contains a non-@code{nil} @code{ignore-current-tab} +entry, then the current tab is skipped when searching for a reusable +tab. Otherwise the current tab is used by preference if it already +displays the buffer. + +If a window displaying the buffer is located in any reusable tab then +that tab and window are selected. + +If no such window is located, the buffer is displayed in a new or +existing tab based on the @var{alist} entry @code{tab-name} (which may +be a string or a function). If a tab with this name already exists then +that tab is selected, otherwise a new tab with that name is created. If +the @code{tab-name} entry is a function, it is called with two arguments +(@var{buffer} and @var{alist}), and should return the tab name. If the +@code{tab-name} entry is omitted or @code{nil}, a new tab is created +without an explicit name. + +If a new tab is created and @var{alist} contains a non-@code{nil} +@code{tab-group} entry, this defines the tab group, overriding user +option @code{tab-bar-new-tab-group}. This entry may again be a string +or a function which is called in the same manner as @code{tab-name}. +@end defun + @defun display-buffer-no-window buffer alist If @var{alist} has a non-@code{nil} @code{allow-no-window} entry, then this function does not display @var{buffer} and returns the symbol @@ -3661,6 +3727,10 @@ well. @code{display-buffer-in-previous-window} consults it when searching for a window that previously displayed the buffer on another frame. +Action function @code{display-buffer-in-tab} searches the tabs of the +frame(s) identified by this entry, and also interprets the value +@code{nil} differently. + @vindex inhibit-switch-frame@r{, a buffer display action alist entry} @item inhibit-switch-frame A non-@code{nil} value prevents another frame from being raised or @@ -3981,6 +4051,19 @@ List, @code{buffer-match-p}}. Thus, if a Lisp program uses a particular @var{symbol} as the category when calling @code{display-buffer}, users can customize how these buffers will be displayed by including such an entry in @code{display-buffer-alist}. + +@vindex tab-name@r{, a buffer display action alist entry} +@item tab-name +The value names the tab in which the buffer should be displayed. This +entry is used by @code{display-buffer-in-new-tab} and (conditionally) by +@code{display-buffer-in-tab}. + +@vindex tab-group@r{, a buffer display action alist entry} +@vindex tab-bar-new-tab-group@r{, override for buffer display actions} +@item tab-group +The value names the tab group to use when creating a new tab, overriding +user option @code{tab-bar-new-tab-group}. This entry is used by +@code{display-buffer-in-new-tab} and @code{display-buffer-in-tab}. @end table By convention, the entries @code{window-height}, @code{window-width} @@ -4039,16 +4122,19 @@ window. If @var{window} cannot be split, it returns @code{nil}. If @var{window} is omitted or @code{nil}, it defaults to the selected window. -This function obeys the usual rules that determine when a window may -be split (@pxref{Splitting Windows}). It first tries to split by -placing the new window below, subject to the restriction imposed by -@code{split-height-threshold} (see below), in addition to any other -restrictions. If that fails, it tries to split by placing the new -window to the right, subject to @code{split-width-threshold} (see -below). If that also fails, and the window is the only window on its -frame, this function again tries to split and place the new window -below, disregarding @code{split-height-threshold}. If this fails as -well, this function gives up and returns @code{nil}. +This function obeys the usual rules that determine when a window may be +split (@pxref{Splitting Windows}). It first tries either a vertical +split by placing the new window below, subject to the restriction +imposed by @code{split-height-threshold} (see below), or a horizontal +split that places the new window to the right, subject to +@code{split-width-threshold}, in addition to any other restrictions. +Whether it tries first to split vertically or horizontally depends on +the value of the user option @code{split-window-preferred-direction}. +If splitting along the first dimension fails, it tries to split along +the other dimension. If that also fails, and the window is the only +window on its frame, this function again tries to split and place the +new window below, disregarding @code{split-height-threshold}. If this +fails as well, this function gives up and returns @code{nil}. @end defun @defopt split-height-threshold @@ -4067,6 +4153,18 @@ window has at least that many columns. If the value is @code{nil}, that means not to split this way. @end defopt +@defopt split-window-preferred-direction +This variable determines the first dimension along which +@code{split-window-sensibly} tries to split the window, if the window +could be split both vertically and horizontally, as determined by the +values of @code{split-height-threshold} and +@code{split-width-threshold}. The default value is @code{longest}, +which means to split vertically if the height of the window's frame is +greater or equal to its width, and horizontally otherwise. The values +@code{vertical} and @code{horizontal} specify the direction in which to +attempt the first split. +@end defopt + @defopt even-window-sizes This variable, if non-@code{nil}, causes @code{display-buffer} to even window sizes whenever it reuses an existing window, and that window is @@ -4826,8 +4924,8 @@ Each list element has the form @code{(@var{buffer} @var{window-start} @var{window-pos})}, where @var{buffer} is a buffer previously shown in the window, @var{window-start} is the window start position (@pxref{Window Start and End}) when that buffer was last shown, and -@var{window-pos} is the point position (@pxref{Window Point}) when -that buffer was last shown in @var{window}. +@var{window-pos} is the window point position (@pxref{Window Point}) +when that buffer was last shown in @var{window}. The list is ordered so that earlier elements correspond to more recently-shown buffers, and the first element usually corresponds to the @@ -5774,8 +5872,8 @@ makes it useful to have multiple windows showing one buffer. @itemize @bullet @item -The window point is established when a window is first created; it is -initialized from the buffer's point, or from the window point of another +Window point is established when a window is first created; it is +initialized from the buffer's point, or from window point of another window opened on the buffer if such a window exists. @item @@ -5789,6 +5887,18 @@ the other windows are stored in those windows. @item As long as the selected window displays the current buffer, the window's point and the buffer's point always move together; they remain equal. + +@item +Many Emacs functions temporarily select a window in order to operate on +its contents. This will move point (@pxref{Point}) of that +window's buffer to the position of window point of that window and +not restore buffer point to its previous position when terminating +the temporary selection. This means that when one and the same buffer +is simultaneously displayed in more than one window, its buffer point +may change in unpredictable ways to the position of window point of any +of these windows as a side-effect of things like redisplay, calling +@code{with-selected-window} (@pxref{Selecting Windows}) or running +@code{window-configuration-change-hook} (@pxref{Window Hooks}). @end itemize @cindex cursor @@ -5844,6 +5954,40 @@ This function returns the cursor type of @var{window}, defaulting to the selected window. @end defun +@defun window-cursor-info &optional window +This function returns information about the cursor of @var{window}, +defaulting to the selected window. + +The value returned by the function is a vector of the form +@w{@code{[@var{type} @var{x} @var{y} @var{width} @var{height} +@var{ascent}]}}. Here's the description of each components of this +vector: + +@table @var +@item type +The type of the cursor, a symbol. This is the same value returned by +@code{window-cursor-type}. + +@item x +@itemx y +The pixel coordinates of the cursor's top-left corner, relative to the +top-left corner of @var{window}'s text area. + +@item width +@itemx height +The pixel dimensions of the cursor. + +@item ascent +The number of pixels the cursor extends above the baseline. +@end table + +If the cursor is not currently displayed for @var{window}, this function +returns @code{nil}. + +Any element except the first one in the returned vector may be +@code{-1}, meaning the actual value is currently unavailable. +@end defun + @node Window Start and End @section The Window Start and End Positions @cindex window start position @@ -7185,8 +7329,8 @@ function may also delete windows which were found live by Each entry in the list that is passed as the second argument to the function is itself a list of six values: the window whose buffer was -found dead, the dead buffer or its name, the positions of window-start -(@pxref{Window Start and End}) and window-point (@pxref{Window Point}) +found dead, the dead buffer or its name, the positions of window start +(@pxref{Window Start and End}) and window point (@pxref{Window Point}) of the buffer in that window, the dedicated state of the window as previously reported by @code{window-dedicated-p} and a flag that is @code{t} if the window has been found to be alive by diff --git a/doc/man/ChangeLog.1 b/doc/man/ChangeLog.1 index 5e58b9681e2..b1ece75d6b0 100644 --- a/doc/man/ChangeLog.1 +++ b/doc/man/ChangeLog.1 @@ -176,7 +176,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2007-2025 Free Software Foundation, Inc. + Copyright (C) 2007-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/man/ebrowse.1 b/doc/man/ebrowse.1 index 8c96088e5ae..85e60ea9b12 100644 --- a/doc/man/ebrowse.1 +++ b/doc/man/ebrowse.1 @@ -82,7 +82,7 @@ should give you access to the complete manual. was written by Gerd Moellmann. . .SH COPYING -Copyright 2008\(en2025 Free Software Foundation, Inc. +Copyright 2008\(en2026 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/man/emacs.1.in b/doc/man/emacs.1.in index bd8d6ed9835..57264dbb3bf 100644 --- a/doc/man/emacs.1.in +++ b/doc/man/emacs.1.in @@ -664,7 +664,7 @@ For detailed credits and acknowledgments, see the GNU Emacs manual. . . .SH COPYING -Copyright 1995\(en2025 Free Software Foundation, Inc. +Copyright 1995\(en2026 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/man/etags.1 b/doc/man/etags.1 index 3921a60361b..c098f5198e3 100644 --- a/doc/man/etags.1 +++ b/doc/man/etags.1 @@ -311,7 +311,7 @@ Stallman. .BR vi ( 1 ). .SH COPYING -Copyright 1992, 1999, 2001\(en2025 Free Software Foundation, Inc. +Copyright 1992, 1999, 2001\(en2026 Free Software Foundation, Inc. .PP Permission is granted to make and distribute verbatim copies of this document provided the copyright notice and this permission notice are diff --git a/doc/misc/ChangeLog.1 b/doc/misc/ChangeLog.1 index 44e63877e9b..67fcf11ac28 100644 --- a/doc/misc/ChangeLog.1 +++ b/doc/misc/ChangeLog.1 @@ -12110,7 +12110,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/doc/misc/Makefile.in b/doc/misc/Makefile.in index 95c8a92ded1..5eee5023f54 100644 --- a/doc/misc/Makefile.in +++ b/doc/misc/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 1994, 1996-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 1996-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi index 18f24ed6f0c..2111b4febf7 100644 --- a/doc/misc/auth.texi +++ b/doc/misc/auth.texi @@ -9,7 +9,7 @@ @copying This file describes the Emacs auth-source library. -Copyright @copyright{} 2008--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2008--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/autotype.texi b/doc/misc/autotype.texi index 377dcda3efd..131d3165def 100644 --- a/doc/misc/autotype.texi +++ b/doc/misc/autotype.texi @@ -11,7 +11,7 @@ @c @cindex autotypist @copying -Copyright @copyright{} 1994--1995, 1999, 2001--2025 Free Software +Copyright @copyright{} 1994--1995, 1999, 2001--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/bovine.texi b/doc/misc/bovine.texi index c4fd83d154d..7ce02db3b6e 100644 --- a/doc/misc/bovine.texi +++ b/doc/misc/bovine.texi @@ -24,7 +24,7 @@ @c %**end of header @copying -Copyright @copyright{} 1999--2004, 2012--2025 Free Software Foundation, +Copyright @copyright{} 1999--2004, 2012--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 9b7cdd8b37f..deddcd7a7ad 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -96,7 +96,7 @@ This file documents Calc, the GNU Emacs calculator, included with GNU Emacs @value{EMACSVER}. @end ifnotinfo -Copyright @copyright{} 1990--1991, 2001--2025 Free Software Foundation, +Copyright @copyright{} 1990--1991, 2001--2026 Free Software Foundation, Inc. @quotation @@ -35694,10 +35694,9 @@ The variable @code{calc-string-maximum-character} is the maximum value of a vector's elements for @code{calc-display-strings}, @code{string}, and @code{bstring} to display the vector as a string. This maximum @emph{must} represent a character, i.e. it's a non-negative integer less -than or equal to @code{(max-char)} or @code{0x3FFFFF}. Any negative -value effectively disables the display of strings, and for values larger -than @code{0x3FFFFF} the display acts as if the maximum were -@code{0x3FFFFF}. Some natural choices (and their resulting ranges) are: +than or equal to @code{(max-char)} or @code{0x3FFFFF}. Any value not +representing a character effectively disables the display of strings. +Some natural choices (and their resulting ranges) are: @itemize @item diff --git a/doc/misc/cc-mode.texi b/doc/misc/cc-mode.texi index fe93bc759b2..44486cc9f7d 100644 --- a/doc/misc/cc-mode.texi +++ b/doc/misc/cc-mode.texi @@ -167,7 +167,7 @@ CC Mode @copying This manual is for CC Mode in Emacs. -Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -6217,7 +6217,7 @@ to perform indentation. @defun c-lineup-item-after-paren-at-boi @findex lineup-item-after-paren-at-boi (c-) Line up under the first entry on the same line as an open parenthesis -when that parenthesis is the lefmost non-space character in its line. +when that parenthesis is the leftmost non-space character in its line. For example: @example @@ -6996,7 +6996,7 @@ the_larch, @hereFn{c-lineup-topmost-intro-cont} @defun c-lineup-class-field-cont @findex lineup-class-field-cont (c-) -Indent continutation lines zero or one @code{c-basic-offset} steps. +Indent continuation lines zero or one @code{c-basic-offset} steps. This is intended for continuation lines within a class/struct etc. construct. For a declaration following a template specification, zero steps are used. Other constructs are indented one step. diff --git a/doc/misc/cl.texi b/doc/misc/cl.texi index 6400fc6ece4..7bf59449606 100644 --- a/doc/misc/cl.texi +++ b/doc/misc/cl.texi @@ -7,7 +7,7 @@ @copying This file documents the GNU Emacs Common Lisp emulation package. -Copyright @copyright{} 1993, 2001--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1993, 2001--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -3985,7 +3985,7 @@ the specified slots, such as @code{:first-name}, @code{:age}, and @code{:sex}. These keyword arguments specify the initial values for the respective slots in the new object. If a keyword argument is not provided, the slot is initialized to @code{nil}.@footnote{This behavior -differs from Common Lisp, where an unitialized slot would be left as +differs from Common Lisp, where an uninitialized slot would be left as ``undefined''.} In the example below, we create a new instance of the @code{person} diff --git a/doc/misc/dbus.texi b/doc/misc/dbus.texi index f9ab2c56e3c..5b302c883ad 100644 --- a/doc/misc/dbus.texi +++ b/doc/misc/dbus.texi @@ -10,7 +10,7 @@ @syncodeindex fn cp @copying -Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -64,6 +64,7 @@ another. An overview of D-Bus can be found at * Alternative Buses:: Alternative buses and environments. * Errors and Events:: Errors and events. * Monitoring Messages:: Monitoring messages. +* File Descriptors:: Handle file descriptors. * Index:: Index including concepts, functions, variables. * GNU Free Documentation License:: The license for this documentation. @@ -124,7 +125,7 @@ name could be @samp{org.gnu.Emacs.TextEditor} or @node Inspection -@chapter Inspection of D-Bus services. +@chapter Inspection of D-Bus services @cindex inspection @menu @@ -139,7 +140,7 @@ name could be @samp{org.gnu.Emacs.TextEditor} or @node Version -@section D-Bus version. +@section D-Bus version D-Bus has evolved over the years. New features have been added with new D-Bus versions. There are two variables, which allow the determination @@ -158,7 +159,7 @@ It is also @code{nil}, if it cannot be determined at runtime. @node Bus names -@section Bus names. +@section Bus names There are several basic functions which inspect the buses for registered names. Internally they use the basic interface @@ -267,7 +268,7 @@ at D-Bus @var{bus}, as a string. @node Introspection -@section Knowing the details of D-Bus services. +@section Knowing the details of D-Bus services D-Bus services publish their interfaces. This can be retrieved and analyzed during runtime, in order to understand the used @@ -483,7 +484,7 @@ If @var{object} has no @var{attribute}, the function returns @node Nodes and Interfaces -@section Detecting object paths and interfaces. +@section Detecting object paths and interfaces The first elements, to be introspected for a D-Bus object, are further object paths and interfaces. @@ -593,7 +594,7 @@ data from a running system: @node Methods and Signal -@section Applying the functionality. +@section Applying the functionality Methods and signals are the communication means to D-Bus. The following functions return their specifications. @@ -673,7 +674,7 @@ Example: @node Properties and Annotations -@section What else to know about interfaces. +@section What else to know about interfaces Interfaces can have properties. These can be exposed via the @samp{org.freedesktop.DBus.Properties} interface@footnote{See @@ -894,7 +895,7 @@ An attribute value can be retrieved by @node Arguments and Signatures -@section The final details. +@section The final details Methods and signals have arguments. They are described in the @code{arg} XML elements. @@ -962,7 +963,7 @@ non-@code{nil}, @var{direction} must be @samp{out}. Example: @node Type Conversion -@chapter Mapping Lisp types and D-Bus types. +@chapter Mapping Lisp types and D-Bus types @cindex type conversion D-Bus method calls and signals accept usually several arguments as @@ -975,7 +976,7 @@ applied Lisp object @expansion{} D-Bus type for input parameters, and D-Bus type @expansion{} Lisp object for output parameters. -@section Input parameters. +@section Input parameters Input parameters for D-Bus methods and signals occur as arguments of a Lisp function call. The following mapping to D-Bus types is @@ -1116,7 +1117,7 @@ lower-case hex digits. As a special case, "" is escaped to @end defun -@section Output parameters. +@section Output parameters Output parameters of D-Bus methods and signals are mapped to Lisp objects. @@ -1199,7 +1200,7 @@ that string: @node Synchronous Methods -@chapter Calling methods in a blocking way. +@chapter Calling methods in a blocking way @cindex method calls, synchronous @cindex synchronous method calls @@ -1211,7 +1212,7 @@ which carries the input parameters to the object owning the method to be called, and a reply message returning the resulting output parameters from the object. -@defun dbus-call-method bus service path interface method &optional :timeout timeout :authorizable auth &rest args +@defun dbus-call-method bus service path interface method &optional :timeout timeout :authorizable auth :keep-fd &rest args @anchor{dbus-call-method} This function calls @var{method} on the D-Bus @var{bus}. @var{bus} is either the keyword @code{:system} or the keyword @code{:session}. @@ -1240,8 +1241,15 @@ running): "org.freedesktop.systemd1.Manager" "RestartUnit" :authorizable t "bluetooth.service" "replace") + +@result{} "/org/freedesktop/systemd1/job/17508" @end lisp +If the parameter @code{:keep-fd} is given, and the return message has a +first argument with a D-Bus type @code{:unix-fd}, the returned file +descriptor is kept internally, and can be used in a later call of +@code{dbus--close-fd} (@pxref{File Descriptors}). + The remaining arguments @var{args} are passed to @var{method} as arguments. They are converted into D-Bus types as described in @ref{Type Conversion}. @@ -1317,11 +1325,11 @@ emulate the @code{lshal} command on GNU/Linux systems: @node Asynchronous Methods -@chapter Calling methods non-blocking. +@chapter Calling methods non-blocking @cindex method calls, asynchronous @cindex asynchronous method calls -@defun dbus-call-method-asynchronously bus service path interface method handler &optional :timeout timeout :authorizable auth &rest args +@defun dbus-call-method-asynchronously bus service path interface method handler &optional :timeout timeout :authorizable auth :keep-fd &rest args This function calls @var{method} on the D-Bus @var{bus} asynchronously. @var{bus} is either the keyword @code{:system} or the keyword @code{:session}. @@ -1344,6 +1352,11 @@ If the parameter @code{:authorizable} is given and the following @var{auth} is non-@code{nil}, the invoked method may interactively prompt the user for authorization. The default is @code{nil}. +If the parameter @code{:keep-fd} is given, and the return message has a +first argument with a D-Bus type @code{:unix-fd}, the returned file +descriptor is kept internally, and can be used in a later call of +@code{dbus--close-fd} (@pxref{File Descriptors}). + The remaining arguments @var{args} are passed to @var{method} as arguments. They are converted into D-Bus types as described in @ref{Type Conversion}. @@ -1369,7 +1382,7 @@ message arrives, and @var{handler} is called. Example: @node Register Objects -@chapter Offering own services. +@chapter Offering own services @cindex method calls, returning @cindex returning method calls @@ -1720,7 +1733,7 @@ to the service from D-Bus. @node Signals -@chapter Sending and receiving signals. +@chapter Sending and receiving signals @cindex signals Signals are one way messages. They carry input parameters, which are @@ -1752,6 +1765,8 @@ arguments. They are converted into D-Bus types as described in :session nil dbus-path-emacs (concat dbus-interface-emacs ".FileManager") "FileModified" "/home/albinus/.emacs") + +@result{} nil @end lisp @end defun @@ -1779,7 +1794,10 @@ argument. @var{handler} is a Lisp function to be called when the @var{signal} is received. It must accept as arguments the output parameters -@var{signal} is sending. +@var{signal} is sending.@footnote{It is possible to register different +handlers for the same signal. All registered handlers will be called +when the signal arrives. This is useful for example if different Lisp +packages are interested in the same signal.} The remaining arguments @var{args} can be keywords or keyword string pairs.@footnote{For backward compatibility, the arguments @var{args} @@ -1852,7 +1870,7 @@ for a dummy signal, and check the result: @node Alternative Buses -@chapter Alternative buses and environments. +@chapter Alternative buses and environments @cindex bus names @cindex UNIX domain socket @cindex TCP/IP socket @@ -1979,7 +1997,7 @@ running. This could be achieved by @node Errors and Events -@chapter Errors and events. +@chapter Errors and events @cindex debugging @cindex errors @cindex events @@ -2138,7 +2156,7 @@ whether a given D-Bus error is related to them. @node Monitoring Messages -@chapter Monitoring messages. +@chapter Monitoring messages @cindex monitoring @defun dbus-register-monitor bus &optional handler &key type sender destination path interface member @@ -2178,12 +2196,16 @@ The following form shows all D-Bus events on the session bus in buffer @lisp (dbus-register-monitor :session) + +@result{} ((:monitor :session-private) (nil nil dbus-monitor-handler)) @end lisp And this form restricts the monitoring on D-Bus errors: @lisp (dbus-register-monitor :session nil :type "error") + +@result{} ((:monitor :session-private) (nil nil dbus-monitor-handler)) @end lisp @end defun @@ -2193,6 +2215,92 @@ switches to the monitor buffer. @end deffn +@node File Descriptors +@chapter Handle file descriptors + +Methods offered by the D-Bus API could return a file descriptor, which +must be handled further. This is indicated by the @code{:keep-fd} +parameter when calling the method (@pxref{dbus-call-method}). + +For example, @uref{https://systemd.io/INHIBITOR_LOCKS/, Systemd} +includes a logic to inhibit system shutdowns and sleep states. It can +be controlled by a the method @samp{Inhibit} of interface +@samp{org.freedesktop.login1.Manager}@footnote{@uref{https://www.freedesktop.org/software/systemd/man/latest/org.freedesktop.login1.html}}. +This function returns a file descriptor, which must be used to unlock +the locked resource, some of which lock the system. In order to keep +this file descriptor internally, the respective D-Bus method call looks +like (@var{what}, @var{who}, @var{why} and @var{mode} are +method-specific string arguments) + +@lisp +(dbus-call-method + :system + "org.freedesktop.login1" "/org/freedesktop/login1" + "org.freedesktop.login1.Manager" "Inhibit" + :keep-fd WHAT WHO WHY MODE) + +@result{} 25 +@end lisp + +The inhibition lock is unlocked, when the returned file descriptor is +removed from the file system. This cannot be achieved on Lisp level. +Therefore, there is the function @code{dbus--fd-close} to performs this +task (see below). + +@strong{Note}: When the Emacs process itself dies, all such locks are +released. + +@strong{Note}: The following functions are internal to the D-Bus +implementation of Emacs. Use them with care. + +@defun dbus--fd-open filename +Open @var{filename} and return the respective read-only file descriptor. +This is another function to keep a file descriptor internally. The +returned file descriptor can be closed by @code{dbus--fd-close}. +Example: + +@lisp +(dbus--fd-open "~/.emacs") + +@result{} 20 +@end lisp +@end defun + +@defun dbus--fd-close fd +Close file descriptor @var{fd}. +@var{fd} must be the result of a @code{dbus-call-method} or +@code{dbus--fd-open} call, see @code{dbus--registered-fds}. It returns +@code{t} in case of success, or @code{nil} if it isn’t be possible to +close the file descriptor, or if the file descriptor is closed already. +Example: + +@lisp +(dbus--fd-close 25) + +@result{} t +@end lisp +@end defun + +@defun dbus--registered-fds +Return registered file descriptors, an alist. +The key is an open file descriptor, retrieved via +@code{dbus-call-method} or @code{dbus--open-fd}. The value is a string +@var{object-path} or @var{filename}, which represents the arguments the +function was called with. Those values are not needed for further +operations; they are just shown for information. + +This alist allows to check, whether other packages of the running Emacs +instance have acquired a file descriptor as well. Example: + +@lisp +(dbus--registered-fds) + +@result{} ((20 . "/home/user/.emacs") + (25 . "/org/freedesktop/login1")) +@end lisp +@end defun + + @node Index @unnumbered Index diff --git a/doc/misc/dired-x.texi b/doc/misc/dired-x.texi index bd8010edcb1..f35cb9af289 100644 --- a/doc/misc/dired-x.texi +++ b/doc/misc/dired-x.texi @@ -20,7 +20,7 @@ @comment %**end of header (This is for running Texinfo on a region.) @copying -Copyright @copyright{} 1994--1995, 1999, 2001--2025 Free Software +Copyright @copyright{} 1994--1995, 1999, 2001--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/ebrowse.texi b/doc/misc/ebrowse.texi index 91b6896d6d1..4001a533446 100644 --- a/doc/misc/ebrowse.texi +++ b/doc/misc/ebrowse.texi @@ -11,7 +11,7 @@ @copying This file documents Ebrowse, a C++ class browser for GNU Emacs. -Copyright @copyright{} 2000--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2000--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/ede.texi b/doc/misc/ede.texi index dc1845dc276..b23aafd18a5 100644 --- a/doc/misc/ede.texi +++ b/doc/misc/ede.texi @@ -6,7 +6,7 @@ @copying This file describes EDE, the Emacs Development Environment. -Copyright @copyright{} 1998--2001, 2004--2005, 2008--2025 Free Software +Copyright @copyright{} 1998--2001, 2004--2005, 2008--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/ediff.texi b/doc/misc/ediff.texi index 73f751f3a4b..5a746b313cf 100644 --- a/doc/misc/ediff.texi +++ b/doc/misc/ediff.texi @@ -26,7 +26,7 @@ This file documents Ediff, a comprehensive visual interface to Unix diff and patch utilities. -Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/edt.texi b/doc/misc/edt.texi index 68f2d7eeedd..bcc3cee24e7 100644 --- a/doc/misc/edt.texi +++ b/doc/misc/edt.texi @@ -6,7 +6,7 @@ @copying This file documents the EDT emulation package for Emacs. -Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2025 Free Software +Copyright @copyright{} 1986, 1992, 1994--1995, 1999--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/efaq-w32.texi b/doc/misc/efaq-w32.texi index 74e12485eec..9d99a6635b3 100644 --- a/doc/misc/efaq-w32.texi +++ b/doc/misc/efaq-w32.texi @@ -15,7 +15,7 @@ Answers to Frequently asked Questions about using Emacs on Microsoft Windows. @include emacsver.texi @copying -Copyright @copyright{} 2008, 2010--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2008, 2010--2026 Free Software Foundation, Inc. @quotation This list of frequently asked questions about GNU Emacs on MS Windows diff --git a/doc/misc/efaq.texi b/doc/misc/efaq.texi index 673fb96f145..532a55fc620 100644 --- a/doc/misc/efaq.texi +++ b/doc/misc/efaq.texi @@ -8,7 +8,7 @@ @include emacsver.texi @copying -Copyright @copyright{} 2001--2025 Free Software Foundation, Inc.@* +Copyright @copyright{} 2001--2026 Free Software Foundation, Inc.@* Copyright @copyright{} 1994--2000 Reuven M. Lerner@* Copyright @copyright{} 1992--1993 Steven Byrnes@* Copyright @copyright{} 1990--1992 Joseph Brian Wells@* diff --git a/doc/misc/eglot.texi b/doc/misc/eglot.texi index 12379f890c9..8483881c52a 100644 --- a/doc/misc/eglot.texi +++ b/doc/misc/eglot.texi @@ -10,7 +10,7 @@ @copying This manual is for Eglot, the Emacs LSP client. -Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2022--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -87,7 +87,9 @@ Eglot itself is completely language-agnostic, but it can support any programming language for which there is a language server and an Emacs major mode. -This manual documents how to configure, use, and customize Eglot. +This manual documents how to configure, use, and customize Eglot. To +read this manual from within Emacs, type @kbd{M-x eglot-manual +@key{RET}}. @insertcopying @@ -97,6 +99,7 @@ This manual documents how to configure, use, and customize Eglot. * Using Eglot:: Important Eglot commands and variables. * Customizing Eglot:: Eglot customization and advanced features. * Advanced server configuration:: Fine-tune a specific language server +* Multi-server support:: Use more than one server in a buffer * Extending Eglot:: Writing Eglot extensions in Elisp * Troubleshooting Eglot:: Troubleshooting and reporting bugs. * GNU Free Documentation License:: The license for this manual. @@ -763,6 +766,22 @@ serve hints about positional parameter names in function calls and a variable's automatically deduced type. Inlay hints help the user not have to remember these things by heart. +@cindex momentary inlay hints +@item eglot-momentary-inlay-hints +When bound to a single key in @code{eglot-mode-map} +(@pxref{Customization Variables}), this will arrange for inlay hints to +be displayed as long as the key is held down, and then hidden shortly +after it is released. The best way to set it up is something like this: + +@lisp +(define-key eglot-mode-map [f7] 'eglot-momentary-inlay-hints) +@end lisp + +@noindent +Note that Emacs doesn't support binding to \"key up\" events, so this +command offers an approximation by estimating your system keyboard delay +and repeat rate. + @cindex semantic tokens @item M-x eglot-semantic-tokens-mode This command toggles LSP @dfn{semantic tokens} fontification on and off @@ -975,6 +994,7 @@ For example: (define-key eglot-mode-map (kbd "C-c o") 'eglot-code-action-organize-imports) (define-key eglot-mode-map (kbd "C-c h") 'eldoc) (define-key eglot-mode-map (kbd "") 'xref-find-definitions) + (define-key eglot-mode-map (kbd "") 'eglot-momentary-inlay-hints) @end lisp @cindex progress @@ -1509,6 +1529,152 @@ is serialized by Eglot to the following JSON text: @} @end example +@node Multi-server support +@chapter Multi-server support +@cindex multiple servers per buffer +@cindex LSP server multiplexer +@cindex per-buffer multiple servers + +One of the most frequently requested features for Eglot in close to a +decade of existence is the ability to use more than one LSP server in a +single buffer. This is distinct from using multiple servers in a +project, where each server manages a disjoint set of files written in +different languages. + +The latter case---multiple servers for different files---is +intrinsically supported by Eglot. For example, in a web project with +JavaScript, CSS, and Python files, Eglot can seamlessly manage separate +language servers for each file type within the same project +(@pxref{Starting Eglot}). Each buffer communicates with its appropriate +server, and this works out-of-the-box. + +However, there are several scenarios where multiple servers per buffer +are useful: + +@itemize @bullet +@item +Combining a spell-checking language server like @command{codebook-lsp} +with language-specific servers for C++, Go, or Python files. The +spell-checker provides diagnostics for comments and strings, while the +language server handles syntax and semantics. + +@item +One might want multiple servers to cover different aspects of the same +language. For Python, you might combine @command{ty} for type checking +with @command{ruff} for linting and formatting. For JavaScript, you +might use @command{typescript-language-server} for language features +together with @command{eslint} for linting. + +@item +When working on multi-language files like Vue @file{.vue} files, which +contain JavaScript, CSS, and HTML embedded in a single file, multiple +servers can manage the different areas of the buffer. +@end itemize + +These use cases are not directly supported by Eglot's architecture, +however, you can use a language-agnostic @dfn{LSP server multiplexer} +that sits between Eglot and the actual language servers. Eglot still +communicates with a single LSP server process in each buffer, but that +process mediates communication to multiple language-specific servers, +meaning that for practical purposes, it's @emph{as if} Eglot was +connected to them directly. + +This approach is more powerful and user-friendly than current +workarounds that combine one LSP server in a buffer with additional +non-LSP mechanisms such as extra Flymake backends (@pxref{Top,,, +Flymake, GNU Flymake manual}) for the same buffer. + +@menu +* Using Rassumfrassum:: Setup the @code{rass} LSP multiplexer +* Design rationale:: Benefits and drawbacks of LSP multiplexers +@end menu + +@node Using Rassumfrassum +@section Using Rassumfrassum + +@uref{https://github.com/joaotavora/rassumfrassum, Rassumfrassum} is an +LSP server multiplexer program that fits the bill. Like most language +servers, it must be installed separately since it is not bundled with +Emacs (at time of writing). The installation is similar to installing +any other language server, and usually amounts to making sure the +program executable is somewhere in @code{PATH} or @code{exec-path}. + +The Rassumfrassum program, invoked via the @command{rass} command, works +by spawning multiple LSP server subprocesses and aggregating their +capabilities, requests, and responses into a single unified LSP +interface. From Eglot's perspective, it appears to be communicating with +a single server. + +To use Rassumfrassum with Eglot, you can start it interactively with a +prefix argument to @code{eglot} and specify the @command{rass} command +followed by the actual servers you want to use, separated by @code{--}: + +@example +C-u M-x eglot RET rass -- clangd -- codebook-lsp serve RET +@end example + +@noindent +This starts @command{clangd} for C++ language support and +@command{codebook-lsp} for spell-checking in the same buffer. + +For Python, you might use: + +@example +C-u M-x eglot RET rass -- ty server -- ruff server RET +@end example + +@noindent +or simply @kbd{C-u M-x eglot RET rass python}, using the ``preset'' +feature. This combines @command{ty} for type checking with +@command{ruff} for linting and formatting. + +These configurations can be integrated into the +@code{eglot-server-programs} variable (@pxref{Setting Up LSP Servers}) +for automatic use: + +@lisp +(with-eval-after-load 'eglot + (add-to-list 'eglot-server-programs + '(c-ts-base-mode . ("rass" "--" "clangd" "--" + "codebook-lsp" "serve"))) + (add-to-list 'eglot-server-programs + '(python-mode . ("rass" "--" "ty" "server" "--" + "ruff" "server")))) +@end lisp + +@node Design rationale +@section Design rationale + +Using an LSP server multiplexer like @command{rass} relieves Eglot from +knowing about the specific characteristics of individual servers and the +complexity of managing multiple simultaneous server connections per +buffer. This helps preserve the essential features that distinguish +Eglot's code base from other LSP offers for Emacs: simple, performant +and mindful of the core tenet of LSP, which is for a client to be +language-agnostic. + +This approach has an additional benefit: because the multiplexer +mediates all communication between Eglot and the servers, it can take +advantage of different optimization opportunities. For instance, at the +system level it may be multi-threaded to process different JSONRPC +streams in with true parallelism, something which is currently +impossible to do in plain Elisp. At the LSP-level it can merge server +responses intelligently, truncate unnecessarily large objects, and cache +significant amounts of information in efficient ways. In many cases, +this can reduce the amount of JSONRPC traffic exchanged with Emacs to +levels well below what would occur if a client connected to multiple +servers separately. Some of these optimizations may apply even when a +program like @command{rass} is mediating communication to a single +server. + +The multiplexer approach is not without drawbacks. Since LSP is a +relatively large protocol with a decade of existence and many backward +compatibility concerns, combining the responses of servers using completely +different mechanisms of the protocol to respond to the same request +sometimes leads to complexity in covering the corner cases. However, +offloading this complexity to a completely separate layer has proven +very effective in practice. + @node Extending Eglot @chapter Extending Eglot @@ -1685,9 +1851,13 @@ slowly, try to customize the variable @code{eglot-events-buffer-config} 0. This will disable recording any events and may speed things up. In other situations, the cause of poor performance lies in the language -server itself. Servers use aggressive caching and other techniques to -improve their performance. Often, this can be tweaked by changing the -server configuration (@pxref{Advanced server configuration}). +server itself. Some servers use aggressive caching and other techniques +to improve their performance. Often, this can be tweaked by changing +the server configuration (@pxref{Advanced server configuration}). + +Another aspect that may cause performance degradation is the amount of +JSONRPC information exchanged with Emacs. Using an LSP program like +@ref{Using Rassumfrassum,Rassumfrassum} may alleviate such problems. @node Getting the latest version @section Getting the latest version @@ -1749,10 +1919,17 @@ may be using. If possible, try to replicate the problem with the C/C@t{++} or Python servers, as these are very easy to install. @item -Describe how to setup a @emph{minimal} project directory where Eglot +If using an LSP multiplexer server like @ref{Using Rassumfrassum, +Rassumfrassum}, first verify if the program replicates by using one of +the multiplexed servers directly. If it doesn't the problem lies in the +LSP multiplexer program and should be reported there. + +@item +Include a description of a @emph{minimal} project directory where Eglot should be started for the problem to happen. Describe each file's name -and its contents. Alternatively, you can supply the address of a public -Git repository. +and its contents, or---sometimes better--- zip that project directory +completely and attach it. Alternatively, you can supply the address of +a public Git repository. @item Include versions of the software used. The Emacs version can be @@ -1765,12 +1942,13 @@ first check if the problem isn't already fixed in the latest version It's also essential to include the version of ELPA packages that are explicitly or implicitly loaded. The optional but popular Company or Markdown packages are distributed as GNU ELPA packages, not to mention -Eglot itself in some situations. Some major modes (Go, Rust, etc.) are -provided by ELPA packages. It's sometimes easy to miss these, since -they are usually implicitly loaded when visiting a file in that -language. +Eglot itself in some situations. Prefer reproducing the problem with +built-in Treesit major modes like @code{go-ts-mode} or +@code{rust-ts-mode} since the non-ts modes for such languages are +usually provided by ELPA packages, and it's often easy to miss them. -ELPA packages usually live in @code{~/.emacs.d/elpa} (or what is in +If you can't reproduce your bug without ELPA packages, you may find the +ones you're using in @code{~/.emacs.d/elpa} (or what is in @code{package-user-dir}). Including a listing of files in that directory is a way to tell the maintainers about ELPA package versions. diff --git a/doc/misc/eieio.texi b/doc/misc/eieio.texi index bf6f2fdb430..018e95cf083 100644 --- a/doc/misc/eieio.texi +++ b/doc/misc/eieio.texi @@ -12,7 +12,7 @@ @copying This manual documents EIEIO, an object framework for Emacs Lisp. -Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/emacs-gnutls.texi b/doc/misc/emacs-gnutls.texi index 8e38b952920..9d5d64b1e8d 100644 --- a/doc/misc/emacs-gnutls.texi +++ b/doc/misc/emacs-gnutls.texi @@ -9,7 +9,7 @@ @copying This file describes the Emacs GnuTLS integration. -Copyright @copyright{} 2012--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2012--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/emacs-mime.texi b/doc/misc/emacs-mime.texi index 9cd1b52eb54..ecb8bda75ad 100644 --- a/doc/misc/emacs-mime.texi +++ b/doc/misc/emacs-mime.texi @@ -10,7 +10,7 @@ @copying This file documents the Emacs MIME interface functionality. -Copyright @copyright{} 1998--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1998--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/epa.texi b/doc/misc/epa.texi index 1ec23440b39..3901f26a95d 100644 --- a/doc/misc/epa.texi +++ b/doc/misc/epa.texi @@ -10,7 +10,7 @@ @copying This file describes EasyPG Assistant @value{VERSION}. -Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/erc.texi b/doc/misc/erc.texi index 8ef027c8f04..131a66c8abb 100644 --- a/doc/misc/erc.texi +++ b/doc/misc/erc.texi @@ -12,7 +12,7 @@ @copying This manual is for ERC @value{ERCVER} @value{ERCDIST}. -Copyright @copyright{} 2005--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2005--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -663,7 +663,7 @@ its mode variable has a local binding in all affected buffers @end enumerate In keeping with this, all built-in local modules disable themselves in -nonapplicable buffers rather than remain no-ops. Some also take strides +inapplicable buffers rather than remain no-ops. Some also take strides to enable themselves elsewhere when needed or at least emit a helpful error. For example, the @samp{nicks} module does both in server buffers, where it shares resources among the target buffers it primarily diff --git a/doc/misc/ert.texi b/doc/misc/ert.texi index 4007fb0d882..6ed3ea6dacb 100644 --- a/doc/misc/ert.texi +++ b/doc/misc/ert.texi @@ -15,7 +15,7 @@ @end direntry @copying -Copyright @copyright{} 2008, 2010--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2008, 2010--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -52,7 +52,7 @@ just like the code under test, making it easy to write expressive and concise test cases. ERT has unique features that take advantage of the dynamic and -interactive nature of Emacs. It is unopinionated about when or how +interactive nature of Emacs. It has no opinion about when or how tests are written: you can use it to verify newly written code, reproduce known bugs, prevent regressions, or explore the behavior of complex systems. It can be used for both unit tests and larger diff --git a/doc/misc/eshell.texi b/doc/misc/eshell.texi index 5d387961204..9cdf6c5c0a2 100644 --- a/doc/misc/eshell.texi +++ b/doc/misc/eshell.texi @@ -10,7 +10,7 @@ @copying This manual is for Eshell, the Emacs shell. -Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/eudc.texi b/doc/misc/eudc.texi index d7a31bf7b09..ec6a7f437a9 100644 --- a/doc/misc/eudc.texi +++ b/doc/misc/eudc.texi @@ -14,7 +14,7 @@ This file documents EUDC version 1.40.0. EUDC is the Emacs Unified Directory Client, a common interface to directory servers and contact information. -Copyright @copyright{} 1998, 2000--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1998, 2000--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/eww.texi b/doc/misc/eww.texi index b527e84f182..99f6eace778 100644 --- a/doc/misc/eww.texi +++ b/doc/misc/eww.texi @@ -8,7 +8,7 @@ @copying This file documents the GNU Emacs Web Wowser (EWW) package. -Copyright @copyright{} 2014--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2014--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -378,7 +378,7 @@ customizing @code{shr-blocked-images}. the ``ALT'' text of images instead. @vindex shr-sliced-image-height - To make scrolling up/down past images more intuititve, EWW splits + To make scrolling up/down past images more intuitive, EWW splits large images into several rows. This way, you can scroll individually past each slice, instead of jumping past the entire image. EWW slices images that take up more than @code{shr-sliced-image-height} of the diff --git a/doc/misc/flymake.texi b/doc/misc/flymake.texi index 2cdeac98d76..7d76631cb19 100644 --- a/doc/misc/flymake.texi +++ b/doc/misc/flymake.texi @@ -13,7 +13,7 @@ @copying This manual is for GNU Flymake (version @value{VERSION}, @value{UPDATED}). -Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/forms.texi b/doc/misc/forms.texi index e1fa0beb364..971edd49e8b 100644 --- a/doc/misc/forms.texi +++ b/doc/misc/forms.texi @@ -20,7 +20,7 @@ @copying This file documents Forms mode, a form-editing major mode for GNU Emacs. -Copyright @copyright{} 1989, 1997, 2001--2025 Free Software Foundation, +Copyright @copyright{} 1989, 1997, 2001--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/gnus-faq.texi b/doc/misc/gnus-faq.texi index c4bec5a273f..e5a1b4751f8 100644 --- a/doc/misc/gnus-faq.texi +++ b/doc/misc/gnus-faq.texi @@ -1,7 +1,7 @@ @c \input texinfo @c -*-texinfo-*- @c Uncomment 1st line before texing this file alone. @c %**start of header -@c Copyright (C) 1995--2025 Free Software Foundation, Inc. +@c Copyright (C) 1995--2026 Free Software Foundation, Inc. @c @c @setfilename gnus-faq.info @c @settitle Frequently Asked Questions diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 74da7df3247..eabf10d4511 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -8,7 +8,7 @@ @syncodeindex pg cp @copying -Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/htmlfontify.texi b/doc/misc/htmlfontify.texi index 5d51c2dd518..5bcfd98ef2c 100644 --- a/doc/misc/htmlfontify.texi +++ b/doc/misc/htmlfontify.texi @@ -10,7 +10,7 @@ This manual documents Htmlfontify, a source code -> crosslinked + formatted + syntax colorized html transformer. -Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2002--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/idlwave.texi b/doc/misc/idlwave.texi index a9a594dfcee..3f315711091 100644 --- a/doc/misc/idlwave.texi +++ b/doc/misc/idlwave.texi @@ -23,7 +23,7 @@ Emacs, and interacting with an IDL shell run as a subprocess. This is edition @value{EDITION} of the IDLWAVE User Manual for IDLWAVE @value{VERSION}. -Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/ido.texi b/doc/misc/ido.texi index a5abbf5633c..2dc4d11ba51 100644 --- a/doc/misc/ido.texi +++ b/doc/misc/ido.texi @@ -7,7 +7,7 @@ @copying This file documents the Ido package for GNU Emacs. -Copyright @copyright{} 2013--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2013--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/info.texi b/doc/misc/info.texi index 71497562bce..3b22c9aa711 100644 --- a/doc/misc/info.texi +++ b/doc/misc/info.texi @@ -15,7 +15,7 @@ This file describes how to use Info, the menu-driven GNU documentation system. -Copyright @copyright{} 1989, 1992, 1996--2025 Free Software Foundation, +Copyright @copyright{} 1989, 1992, 1996--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/mairix-el.texi b/doc/misc/mairix-el.texi index 286511a7283..55840e03b7b 100644 --- a/doc/misc/mairix-el.texi +++ b/doc/misc/mairix-el.texi @@ -5,7 +5,7 @@ @include docstyle.texi @copying -Copyright @copyright{} 2008--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2008--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/message.texi b/doc/misc/message.texi index 1f8b04853e9..7962460bf0b 100644 --- a/doc/misc/message.texi +++ b/doc/misc/message.texi @@ -9,7 +9,7 @@ @copying This file documents Message, the Emacs message composition mode. -Copyright @copyright{} 1996--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1996--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/mh-e.texi b/doc/misc/mh-e.texi index cd11e6dc228..e5bee085888 100644 --- a/doc/misc/mh-e.texi +++ b/doc/misc/mh-e.texi @@ -25,7 +25,7 @@ This is version @value{VERSION}@value{EDITION} of @cite{The MH-E Manual}, last updated @value{UPDATED}. -Copyright @copyright{} 1995, 2001--2003, 2005--2025 Free Software +Copyright @copyright{} 1995, 2001--2003, 2005--2026 Free Software Foundation, Inc. @c This dual license has been agreed upon by the FSF. diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index 43983505576..6e6cf68c7d2 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 5.1.0 -#+macro: release-date 2025-11-07 -#+macro: development-version 5.2.0-dev +#+macro: stable-version 5.2.0 +#+macro: release-date 2025-12-31 +#+macro: development-version 5.3.0-dev #+macro: file @@texinfo:@file{@@$1@@texinfo:}@@ #+macro: space @@texinfo:@: @@ #+macro: kbd @@texinfo:@kbd{@@$1@@texinfo:}@@ @@ -50,7 +50,7 @@ Current development target is {{{development-version}}}. :custom_id: h:b14c3fcb-13dd-4144-9d92-2c58b3ed16d3 :end: -Copyright (C) 2020-2025 Free Software Foundation, Inc. +Copyright (C) 2020-2026 Free Software Foundation, Inc. #+begin_quote Permission is granted to copy, distribute and/or modify this document @@ -367,12 +367,25 @@ customizations ([[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customizatio #+findex: modus-themes-select #+findex: modus-themes-rotate #+findex: modus-themes-load-random -#+findex: modus-themes-select The commands ~modus-themes-toggle~, ~modus-themes-rotate~, ~modus-themes-load-random~, and ~modus-themes-select~ use ~modus-themes-load-theme~ internally ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). The aforementioned hold true for them as well. +Convenience commands for loading only dark or light themes are: + +#+findex: modus-themes-select-dark +- ~modus-themes-select-dark~ + +#+findex: modus-themes-select-light +- ~modus-themes-select-light~ + +#+findex: modus-themes-load-random-dark +- ~modus-themes-load-random-dark~ + +#+findex: modus-themes-load-random-light +- ~modus-themes-load-random-light~ + ** The ~require-theme~ for built-in Emacs themes :PROPERTIES: :CUSTOM_ID: h:b66b128d-54a4-4265-b59f-4d1ea2feb073 @@ -597,10 +610,12 @@ Possible values: When the value is non-~nil~, the commands ~modus-themes-toggle~, ~modus-themes-rotate~, ~modus-themes-load-random~, and ~modus-themes-select~, as well as the ~modus-themes-load-theme~ -function, will disable all other themes while loading the specified -Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). 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. +function (and any related convenience wrappers like +~modus-themes-load-random-dark~), will disable all other themes while +loading the specified Modus theme ([[#h:4fbfed66-5a89-447a-a07d-a03f6819c5bd][Option for which themes to toggle]]). +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. @@ -4163,13 +4178,19 @@ This section concerns package developers or advanced users. The Modus themes can be used as the basis for another theme. The ~ef-themes~ and ~standard-themes~ packages (also by Protesilaos), are -two such case. Developers may do so to benefit from the extensive -customization of the Modus themes and the fact that they are part of -core Emacs. +two such case. Developers may build on top of Modus to benefit from +the extensive customization of the Modus themes and the fact that they +are part of core Emacs. Note that because the ~ef-themes~ and +~standard-themes~ existed before they were redone on top of Modus, +they have to provide lots of compatibility aliases. Whereas a new +theme can be as simple as a single file that only calls +~modus-themes-theme~. This manual covers everything in detail with +examples that can be copy-pasted directly, both for private use or to +create a new package ([[#h:bd47fea9-416d-481e-a504-82850b8c2a58][Complete example of a Modus derivative theme]]). #+findex: modus-themes-theme #+vindex: modus-themes-registered-items -A new theme exists in a file whose directory is in the ~custom-theme-load-path~. +A theme exists in a file whose directory is in the ~custom-theme-load-path~. The theme file is named =NAME-theme.el=. For example, the ~modus-operandi~ theme is in the file =modus-operandi-theme.el=. A theme object can be instantiated with the function ~modus-themes-theme~. This function takes care to @@ -4272,11 +4293,667 @@ Custom faces passed in this way can still define their semantic palette mappings, as illustrated herein where ~border-mode-line-active~ corresponds to some named color in the palette of the active theme. +** Complete example of a Modus derivative theme +:PROPERTIES: +:CUSTOM_ID: h:bd47fea9-416d-481e-a504-82850b8c2a58 +:END: + +[ For more context: [[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]. ] + +In this section, we show how to define a new Modus derivative theme. +In its simplest form, a theme is a file called =NAME-theme.el= in a +directory that is part of the ~custom-theme-load-path~. We show how to +do this for a package and for a private configuration: + +- [[#h:f2757848-ea41-4cd7-a04d-7e650555a59b][Complete example of a package that is derived from Modus]] +- [[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]] + +*** Complete example of a package that is derived from Modus +:PROPERTIES: +:CUSTOM_ID: h:f2757848-ea41-4cd7-a04d-7e650555a59b +:END: + +For package developers, the following snippet needs to be included in +each theme file ([[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]]): + +#+begin_src emacs-lisp +;;;; Add themes from this package to the `custom-theme-load-path' + +;;;###autoload +(when load-file-name + (let ((dir (file-name-directory load-file-name))) + (add-to-list 'custom-theme-load-path dir))) +#+end_src + +If the package provides many themes, then the above snippet can be +included in a shared file that is then loaded via ~require~ in the +individual theme files. + +For example, the family of themes that includes =prot-light-theme.el= +and =prot-dark-theme.el= has a shared library which is +=prot-themes.el= and therein we find at least the following: + +#+begin_src emacs-lisp +;; Package headers here for prot-themes.el... + +;; Any other shared definitions... + +;;;; Add themes from this package to the `custom-theme-load-path' + +;;;###autoload +(when load-file-name + (let ((dir (file-name-directory load-file-name))) + (add-to-list 'custom-theme-load-path dir))) + +(provide 'prot-themes) +;;; prot-themes.el ends here +#+end_src + +Then each individual theme can look like this ([[#h:ca3031b5-5f7a-46d4-bc83-e84e8bed038c][Complete example of a custom theme with its own palette]]): + +#+begin_src emacs-lisp +(require 'prot-themes) + +(modus-themes-theme + 'prot-light + 'prot-themes + "My demo `prot-light' theme." + 'light + 'modus-operandi-palette + nil + nil) +#+end_src + +The contents of such a package will be of this form: + +- =prot-themes.el= :: Common file with all the shared definitions. +- =prot-light-theme.el= :: The light theme. +- =prot-dark-theme.el= :: The dark theme. + +The shared file can be skipped if the only piece of common code is +the aforementioned snippet about the ~custom-theme-load-path~. Simply +add that snippet to the bottom of each theme file, like this: + +#+begin_src emacs-lisp +(modus-themes-theme + 'prot-light + 'prot-themes + "My demo `prot-light' theme." + 'light + 'modus-operandi-palette + nil + nil) + +;;;###autoload +(when load-file-name + (let ((dir (file-name-directory load-file-name))) + (add-to-list 'custom-theme-load-path dir))) +#+end_src + +The package is then a collection of =NAME-theme.el= files and nothing more. + +In principle, a package derived from Modus does not need to define any +commands or user options. What is shown in this section is enough. +Packages such as the ~ef-themes~ and ~standard-themes~ are exceptions +because they existed for years before they were based on Modus and +must remain backward compatible. + +[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]]. + +*** Complete example of a private theme derived from Modus +:PROPERTIES: +:CUSTOM_ID: h:48e391a6-831b-48ec-b92d-4e7e6871b043 +:END: + +If your derivative theme is not going to be distributed as a package +([[#h:f2757848-ea41-4cd7-a04d-7e650555a59b][Complete example of a package that is derived from Modus]]), then +create a directory where all custom themes are stored and add it to +the ~custom-theme-load-path~. For example, the =my-custom-themes= +directory can be included thus somewhere in the Emacs initialization +file: + +#+begin_src emacs-lisp +(add-to-list 'custom-theme-load-path (locate-user-emacs-file "my-custom-themes/")) +#+end_src + +The function ~locate-user-emacs-file~ takes care to return a path +relative to where the user's init file is. If, say, we have +=~/.emacs.d/init.el= then we get =~/.emacs.d/my-custom-themes/=. + +Create the directory in that path. Then for each derivative Modus +theme, write a new file of the form =NAME-theme.el=. If, for instance, +your theme is named =prot-light= the file is called =prot-light-theme.el=. + +At minimum, the contents of a theme file are these ([[#h:ca3031b5-5f7a-46d4-bc83-e84e8bed038c][Complete example of a custom theme with its own palette]]): + +#+begin_src emacs-lisp +(modus-themes-theme + 'prot-light + 'prot-themes + "My demo `prot-light' theme." + 'light + 'modus-operandi-palette + nil + nil) +#+end_src + +[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]]. + +*** Complete example of a custom theme with its own palette +:PROPERTIES: +:CUSTOM_ID: h:ca3031b5-5f7a-46d4-bc83-e84e8bed038c +:END: + +It is a good idea for a derivative theme to use as its core palette +one of those defined in the ~modus-themes~, such as ~modus-operandi-palette~. +This guarantees that all core palette definitions are inherited by the +derivative theme. + +The derivative may then add its own colors to the user palette, which +will override the core palette in such of a conflict ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]). + +The core and user palettes are among the arguments passed to the +~modus-themes-theme~ functions, as explained elsewhere in this manual +([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). + +In the following example, we are defining the ~prot-light~ theme in +the =prot-light-theme.el= file. This theme declares itself as +belonging to the =prot-themes= family. It is based on the +~modus-operandi-palette~ but then defines its own palette, the +~prot-light-palette~ with entries that take precedence over whatever +equivalent is in the ~modus-operandi-palette~. + +#+begin_src emacs-lisp +(defvar prot-light-palette + '((cursor "#ff0000") + (bg-main "#f0e0d0") + (fg-main "#202020")) + "Like `modus-operandi-palette'.") + +(modus-themes-theme + 'prot-light + 'prot-themes + "My demo `prot-light' theme." + 'light + 'modus-operandi-palette + 'prot-light-palette + nil) +#+end_src + +The above is a complete theme which is like ~modus-operandi~ except +for those three color definitions specified in the ~prot-light-palette~. +There is no limit to how comprehensive the user palette is. + +Depending on the requirements, this theme can make itself further +customizable by the end user via theme-specific palette overrides. In +this case, we have the addition of a user option, which we could call +anything though it makes sense to name it consistently like ~prot-light-palette-overrides~. + +#+begin_src emacs-lisp +(defvar prot-light-palette + '((cursor "#ff0000") + (bg-main "#f0e0d0") + (fg-main "#202020")) + "Like `modus-operandi-palette'.") + +(defcustom prot-light-palette-overrides nil + "Overrides for the `prot-light' theme." + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) + +(modus-themes-theme + 'prot-light + 'prot-themes + "My demo `prot-light' theme." + 'light + 'modus-operandi-palette + 'prot-light-palette + 'prot-light-palette-overrides) +#+end_src + +In the above example, we have our ~prot-light~ theme which is like +~modus-operandi~ except three colors and which can now be customized +further by the user via the ~prot-light-palette-overrides~ ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). + +Finally, a derivative theme can specify its own settings for custom +faces and variables. This is generally not needed, but is provided as +an option for maximum flexibility. In the following example, the +~prot-light~ theme has its own face definitions in addition to all the +aforementioned: + +#+begin_src emacs-lisp +(defvar prot-light-palette + '((cursor "#ff0000") + (bg-main "#f0e0d0") + (fg-main "#202020")) + "Like `modus-operandi-palette'.") + +(defcustom prot-light-palette-overrides nil + "Overrides for the `prot-light' theme." + :type '(repeat (list symbol (choice symbol string))) + :link '(info-link "(modus-themes) Palette overrides")) + +(defvar prot-light-custom-faces + '( + `(region ((,c :background ,bg-ochre :foreground ,unspecified :extend nil))) + `(font-lock-keyword-face ((,c :inherit italic :foreground ,keyword)))) + "Custom faces that deviate from---or complement---those in the Modus themes.") + +(modus-themes-theme + 'prot-light + 'prot-themes + "My demo `prot-light' theme." + 'light + 'modus-operandi-palette + 'prot-light-palette + 'prot-light-palette-overrides + 'prot-light-custom-faces) +#+end_src + +The custom faces can name a color from the given theme's palette. In +this example, =bg-ochre= comes from the ~modus-operandi-palette~ +though it would work the same way if, say, ~prot-light-palette~ +defined ~bg-soil~ and then referenced it in ~prot-light-custom-faces~. + +[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]]. + +*** Complete example that also uses ~modus-themes-generate-palette~ +:PROPERTIES: +:CUSTOM_ID: h:3a7ede17-f0d4-4322-8e69-1804ed69012b +:END: +#+cindex: Easily define a fully fledged Modus palette + +The guide herein is of use to those who plan to create their own +derivative themes ([[#h:48e391a6-831b-48ec-b92d-4e7e6871b043][Complete example of a private theme derived from Modus]]). + +The ~modus-themes-generate-palette~ defines a fully flegded Modus +palette that can be passed to ~modus-themes-theme~ without necessarily +depending on any of the core Modus palettes. I will walk you through +the steps of working with something like the following code block. + +[ We use color values from Solarized as an example for the rest of + this entry, naming them according to our conventions. ] + +#+begin_src emacs-lisp +(defvar modus-solarized-dark-palette + (modus-themes-generate-palette + '((bg-main "#073642") + (fg-main "#EEE8D5") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")))) + +(modus-themes-theme + 'modus-solarized-dark + 'modus-solarized-themes + "Sample of a basic Solarized port." + 'dark + 'modus-solarized-dark-palette + nil + nil) +#+end_src + +The Modus themes define hundreds of entries in their palette. Some are +named colors while others are semantic mappings ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). + +This gives users maximum control via overrides, though comes at the +considerable cost of making it harder to derive a custom palette from +a small set of colors. Color schemes, which are not themes in the +sense of ensuring consistency across all elements and interfaces, will +typically provide 8 or 16 colors. This is the case with terminal +emulators. For example, the widely known Solarized theme, originally +designed by Ethan Schoonover, defines 16 colors for terminal +emulators. Nothing else. Thus a hypothetical Modus+Solarized cannot +work without knowing how to complement the base with all the extra +color definitions. + +#+findex: modus-themes-generate-palette +This is where the function ~modus-themes-generate-palette~ comes in. +In broad terms, it is meant to be used as a starting point. The user +may then decide which results need further tweaking. But at least they +will have something to create a fully fledged Modus palette right +away. + +The minimum ~modus-themes-generate-palette~ needs is a list of +=BASE-COLORS=. Each element is of the form =(NAME VALUE)= where =NAME= +is a symbol and =VALUE= is a string with a hexadecimal RGB color value +or a string with a name of a color among those listed in the output of +the command ~list-colors-display~. + +The =BASE-COLORS= can be as short as follows: + +#+begin_src emacs-lisp +;; All missing palette entries will be derived automatically. This +;; will return a COMPLETE Modus themes palette. +(modus-themes-generate-palette + '((bg-main "#073642") + (fg-main "#EEE8D5"))) +#+end_src + +The only two mandatory entries in =BASE-COLORS= are =bg-main= and +=fg-main= as shown above. In this scenario, the derived palette will +get the job done, but will be very close to what Modus defines. The +more we add to the =BASE-COLORS=, the more well defined the character +of the new palette will be. For example: + +#+begin_src emacs-lisp +(modus-themes-generate-palette + ;; The two base colors of Solarized, plus most of its accents. + '((bg-main "#073642") + (fg-main "#EEE8D5") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198"))) +#+end_src + +This is already going to be a tolerable port of Solarized. If the +=BASE-COLORS= provides =bg-main=, =fg-main=, and the six hues of +=red=, =green=, =yellow=, =blue=, =magenta=, =cyan=, we will get a new +palette that has no trace of the color values implemented by core +Modus. Though we can go further and greatly improve the results. + +#+vindex: modus-themes-operandi-palette +#+vindex: modus-themes-vivendi-palette +The ~modus-themes-generate-palette~ will internally calculate colors +based on what it receives. Anything missing will be taken from a core +Modus palette, depending on the value of =bg-main=: if it is light, +then the ~modus-themes-operandi-palette~ is used, otherwise it is +~modus-themes-vivendi-palette~. If all six of the aforementioned hues +are present, the ~modus-themes-generate-palette~ will not calculate +any more color values. It will use those to derive the relevant +permutations (e.g. blue backgrounds from the =blue= we give it). + +What also plays a role in the interal calculations is whether +=bg-main= is a =cool= or =warm= color, meaning whether it is closer to +blue or red, respectively. Internally, =cool= and =warm= influence the +kind of color values and semantic mappings that will go into the new +palette. To this end, the ~modus-themes-generate-palette~ accepts an +optional parameter called =COOL-OR-WARM-PREFERENCE=. This is a +preference for the symbol =cool= or =warm=: it make the decision +explicit. + +For example, Solarized can swap the values of =bg-main= and =fg-main= +to switch between its light and dark implementations (I understand +this is a smart trick for terminal emulators, but is otherwise not +good enough for thematic consistency as some accent values look +out-of-place and the contrasts vary considerably). The light color +Solarized uses is inherently =warm= (yellowish color means it is +closer to red than blue) while the dark color is =cool=, due to it +being closer to pure blue. Users may wish to experiment with a +deviation from what would have been the default output, such that the +dark blue when used as a background actually combines with warmer +foreground hues, while the light cream background goes together with +cooler foreground values. Thus: + +#+begin_src emacs-lisp +(modus-themes-generate-palette + '((bg-main "#073642") ; normally this is a `cool' theme + (fg-main "#EEE8D5") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")) + 'warm) ; but we want to use it with `warm' foregrounds + +;; And here is the inverse of the above, now with the light version of +;; Solarized. +(modus-themes-generate-palette + '((bg-main "#EEE8D5") ; normally this is a `warm' theme + (fg-main "#073642") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")) + 'cool) ; but we want to use it with `cool' foregrounds +#+end_src + +This is now getting better, but we can go further. At this point users +should be able to do the common work of taking a color scheme that was +originally designed for terminal emulators and quickly turning it into +a fully fledged Modus palette. All they need is to follow the naming +convention for =bg-main=, =fg-main=, and then +={red,green,yellow,blue,magenta,cyan}{,-warmer,-cooler}=. Preview a +palette to get the complete list ([[#h:f4d4b71b-2ca5-4c3d-b0b4-9bfd7aa7fb4d][Preview theme colors]]). And, again, +remember that not all colors need to be defined in =BASE-COLORS= (e.g. +we could leave out ~magenta-cooler~ if we do not care about it). + +The next optional parameter of ~modus-themes-generate-palette~ is the +=CORE-PALETTE= it should use. This is to make explicit the decision +that is otherwise handled internally on whether to fill in any missing +palette entries from Modus Operandi or Modus Vivendi (or their tinted +variants if =warm= is the preference). + +The =CORE-PALETTE= is the symbol of a variable whose value is a +palette, like ~modus-themes-operandi-palette~. Normally, users do not +need to ever set =CORE-PALETTE=. The only two scenaria where this is +likely helpful is (i) the theme is optimized for red-green or +blue-yellow color deficiency, in which case one of the Modus palettes +for deuteranopia and tritanopia is needed, or (ii) the user wants to +use a palette from a Modus derivative theme, such as my ~ef-themes~ +and ~standard-themes~. In the latter scenario, users need to take care +to either copy the palette they want to use or, anyhow, ~load~ the +relevant files. + +In the interest of clarity, here is how the =CORE-PALETTE= is passed, +but, again, users probably should leave this to ~nil~: + +#+begin_src emacs-lisp +(modus-themes-generate-palette + ;; The two base colors of Solarized, plus all its accents. + '((bg-main "#073642") + (fg-main "#EEE8D5") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")) + nil ; COOL-OR-WARM-PREFERENCE is derived internally based on `bg-main' + 'modus-themes-vivendi-tritanopia-palette) ; we specifically want this as our CORE-PALETTE +#+end_src + +With core Modus palettes, the =CORE-PALETTE= should not make much of a +difference. Though a completely custom Modus derivative, like one of +the ~ef-themes~, will be defining colors values that differ +substantially from those of core Modus, as well as completely +different semantic mappings. + +Finally, ~modus-themes-generate-palette~ has an optional =MAPPINGS= +parameter. This is a list of semantic mappings where each entry is of +the form =(NAME OTHER-NAME)= ([[#h:34c7a691-19bb-4037-8d2f-67a07edab150][Option for palette overrides]]). The +=NAME= has the same meaning as for the =BASE-COLORS= we have been +examining all along, while =OTHER-NAME= is the symbol of another +=NAME= that exists in the palette, hence the mapping. This manual +contains lots of examples along those lines ([[#h:df1199d8-eaba-47db-805d-6b568a577bf3][DIY Stylistic variants using palette overrides]]). +For our purposes, we will modify some of the obvious elements of the +theme, namely, the cursor, mode lines, current line highlight, +matching parentheses, and active region. + +#+begin_src emacs-lisp +(modus-themes-generate-palette + '((bg-main "#073642") + (fg-main "#EEE8D5") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")) + nil + nil + ;; And here are our MAPPINGS where we can specify what values apply + ;; to which semantic color. The `modus-themes-list-colors' shows + ;; them all. + ;; + ;; Note that in our BASE-COLORS above we never wrote what, say, + ;; `magenta-warmer' is: it is derived programmatically from the + ;; `magenta' we have there. Absent that, it would be taken from + ;; the CORE-PALETTE. + '((cursor magenta-warmer) + (bg-hl-line bg-blue-nuanced) + (bg-paren-match bg-magenta-subtle) + (bg-region bg-blue-intense) + (fg-region fg-dim) + (bg-mode-line-active bg-blue-nuanced) + (fg-mode-line-active blue-warmer) + (border-mode-line-active blue-cooler))) +#+end_src + +The =MAPPINGS= can be as long as the user needs. Whatever is defined +here will take precedence of what the =CORE-PALETTE= (or its +internally derived equivalent) provides. At most, users can have a +completely custom palette. Though I expect that this will not be done +at the outset, but only after a long process of experimentation (if +you already knew how to do this, ~modus-themes-generate-palette~ would +not be of real value). The point is to start with something that works +and then refine it one small step at a time. + +We are now ready to try our Solarized themes, using the example of +doing this in our private configuration ([[#h:f2757848-ea41-4cd7-a04d-7e650555a59b][Complete example of a package that is derived from Modus]]). + +- Create two files, one is called =modus-solarized-dark-theme.el= (or + however you want to identify it, but always keep =-theme.el= at the + end) and the other is =modus-solarized-light-theme=. + +- Add their directory to the ~custom-theme-load-path~, like + ~(add-to-list 'custom-theme-load-path "~/.emacs.d/custom-themes/")~. + +- Use the minimal code from the following two blocks to create your + new themes. + +- Optionally activate ~modus-themes-include-derivatives-mode~ to have + all Modus commands recognize your themes. + +- Load your themes with ~load-theme~. + +- Enjoy! + +#+begin_src emacs-lisp +;; Modus+Solarized dark +(defvar modus-solarized-dark-palette + (modus-themes-generate-palette + ;; We provide the two base colors of Solarized, plus most of its + ;; accents. These form the BASE-COLORS we pass as an argument. + ;; All other color values come from those. The BASE-COLORS here + ;; are enough to generate a new palatte that has no traces of, say, + ;; the `modus-vivendi' color values. + '((bg-main "#073642") + (fg-main "#EEE8D5") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")) + ;; The COOL-OR-WARM-PREFERENCE is derived internally based on + ;; `bg-main'. We can pass it here if we feel strongly about it. + nil + ;; If we need to specify the CORE-PALETTE from where to inherit any + ;; missing colors and/or semantic mappings, we can give it here. + ;; Though nil is the appropriate starting point, as the code will + ;; handle things internally. + nil + ;; And here are our MAPPINGS where we can specify what values apply + ;; to which semantic color. The `modus-themes-list-colors' shows + ;; them all. + ;; + ;; Note that in our BASE-COLORS above we never wrote what, say, + ;; `magenta-warmer' is: it is derived programmatically from the + ;; `magenta' we have there. Absent that, it would be taken from + ;; the CORE-PALETTE. + '((cursor magenta-warmer) + (bg-hl-line bg-blue-nuanced) + (bg-paren-match bg-magenta-subtle) + (bg-region bg-blue-intense) + (fg-region fg-dim) + (bg-mode-line-active bg-blue-nuanced) + (fg-mode-line-active blue-warmer) + (border-mode-line-active blue-cooler)))) + +(modus-themes-theme + 'modus-solarized-dark + 'modus-solarized-themes + "Sample of a basic Solarized dark port." + 'dark + 'modus-solarized-dark-palette + nil + nil) +#+end_src + +And the light variant: + +#+begin_src emacs-lisp +;; Modus+Solarized light +(defvar modus-solarized-light-palette + (modus-themes-generate-palette + ;; We provide the two base colors of Solarized, plus most of its + ;; accents. These form the BASE-COLORS we pass as an argument. + ;; All other color values come from those. The BASE-COLORS here + ;; are enough to generate a new palatte that has no traces of, say, + ;; the `modus-operandi' color values. + '((bg-main "#EEE8D5") + (fg-main "#073642") + (red "#DC322F") + (green "#859900") + (yellow "#B58900") + (blue "#268BD2") + (magenta "#D33682") + (cyan "#2AA198")) + ;; The COOL-OR-WARM-PREFERENCE is derived internally based on + ;; `bg-main'. We can pass it here if we feel strongly about it. + nil + ;; If we need to specify the CORE-PALETTE from where to inherit any + ;; missing colors and/or semantic mappings, we can give it here. + ;; Though nil is the appropriate starting point, as the code will + ;; handle things internally. + nil + ;; And here are our MAPPINGS where we can specify what values apply + ;; to which semantic color. The `modus-themes-list-colors' shows + ;; them all. + ;; + ;; Note that in our BASE-COLORS above we never wrote what, say, + ;; `magenta-warmer' is: it is derived programmatically from the + ;; `magenta' we have there. Absent that, it would be taken from + ;; the CORE-PALETTE. + '((cursor yellow-warmer) + (bg-hl-line bg-red-nuanced) + (bg-paren-match bg-green-subtle) + (bg-region bg-blue-intense) + (fg-region fg-dim) + (bg-mode-line-active bg-yellow-subtle) + (fg-mode-line-active yellow-cooler) + (border-mode-line-active yellow-warmer)))) + +(modus-themes-theme + 'modus-solarized-light + 'modus-solarized-themes + "Sample of a basic Solarized light port." + 'light + 'modus-solarized-light-palette + nil + nil) +#+end_src + +[[#h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa][Arrange to activate your derivative themes]]. + ** Determine what counts as a Modus theme :PROPERTIES: :CUSTOM_ID: h:412e3017-81fe-4a95-97a6-225de1867757 :END: +[ NOTE: Users of many Modus derivatives do not need to do anything of + what is described herein. Just enable the ~modus-themes-include-derivatives-mode~. ] + #+findex: modus-themes-get-all-known-themes Once the theme is instantiated, it will be listed in the return value of the function ~modus-themes-get-all-known-themes~. This function @@ -4350,6 +5027,9 @@ accordingly." :CUSTOM_ID: h:6bfbb4d6-2f23-4d06-827a-8b9a91507a02 :END: +[ NOTE: Users of many Modus derivatives do not need to do anything of + what is described herein. Just enable the ~modus-themes-include-derivatives-mode~. ] + #+findex: modus-themes-define-derivative-command In the previous section, we explored the mechanics of the ~modus-themes-get-themes~ ([[#h:412e3017-81fe-4a95-97a6-225de1867757][Determine what counts as a Modus theme]]). @@ -4394,6 +5074,58 @@ because the developer wants to introduce a user option to affect what the command is doing), though this approach with the ~cl-letf~ can still prove useful. +** Arrange to activate your derivative themes +:PROPERTIES: +:CUSTOM_ID: h:6eb0dba7-89cb-4b21-bc5d-97f6b5eb3caa +:END: + +The ~modus-themes-theme~ function is responsible for instantiating a +theme and registering it for use by the various Modus commands that +act on a theme ([[#h:86eb375b-9be4-43ce-879a-0686a524a63b][Build on top of the Modus themes]]). Due to how Emacs +themes are designed to be bound to files, ~modus-themes-theme~ can +only work if the given theme file is already loaded. Otherwise our +function is never called and the theme is never created. + +To this end, users need to call the function ~modus-themes-activate~ +with each theme they want as an argument. Remember that themes are +files with a =-theme.el= suffix inside one of the directories listed +in the value of the variable ~custom-theme-load-path~. In its simplest +form, the activation looks as follows, assuming the theme's file +=modus-solarized-dark-theme.el= exists: + +#+begin_src emacs-lisp +(modus-themes-activate 'modus-solarized-dark) +#+end_src + +To load multiple themes at once we can define a function like the +following: + +#+begin_src emacs-lisp +(defun my-modus-derivatives-activate-themes (directory) + "Activate all themes in DIRECTORY. +This makes all Modus derivatives available to commands such as +`modus-themes-select' if `modus-themes-include-derivatives-mode' is +enabled." + (let* ((files (directory-files directory :full-path "-theme\\.el")) + (names (mapcar + (lambda (file) + (intern (replace-regexp-in-string "-theme\\.el" "" file))) + files))) + (mapc #'modus-themes-activate names))) +#+end_src + +Then call it thus: + +#+begin_src emacs-lisp +(my-modus-derivatives-activate-themes "/path/to/my/custom/theme/directory/") +#+end_src + +Again, remember that the directory is in the ~custom-theme-load-path~: + +#+begin_src emacs-lisp +(add-to-list 'custom-theme-load-path "/path/to/my/custom/theme/directory/") +#+end_src + * Face coverage :properties: :custom_id: h:a9c8f29d-7f72-4b54-b74b-ddefe15d6a19 @@ -4444,6 +5176,7 @@ have lots of extensions, so the "full support" may not be 100% true… + column-enforce-mode + company-mode* + compilation-mode ++ completion-preview + completions + consult + corfu @@ -5969,35 +6702,36 @@ The Modus themes are a collective effort. Every bit of work matters. 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, Eshel Yaron, Farasha - Euker, Feng Shu, Filippo Argiolas, Gautier Ponsinet, Gerry Agbobada, - Gianluca Recchia, Gonçalo Marrafa, Guilherme Semente, Gustavo - Barros, Hörmetjan Yiltiz, Ilja Kocken, Imran Khan, Iris Garcia, Ivan - Popovych, Jabir Ali Ouassou, James Ferguson, Jeremy Friesen, Jerry - Zhang, Johannes Grødem, John Haman, John Sullivan, John Wick, 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, Lasse Lindner, Len Trigg, Lennart - C.{{{space()}}} 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, Nicolas Semrau, Olaf Meeuwissen, Oliver Epper, 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, Stéphane Marks, Steve Downey, 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, TitusMu, Trey, - bepolymathe, bit9tream, bangedorrunt, case-lambda, chainedghost, - derek-upham, doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag, - okamsn, pedro-nonfree, pRot0ta1p, shimeike, shipmints, soaringbird, + Gjorgjevski, David Edmondson, Davor Rotim, Divan Santana, Dominik + Schrempf, Eliraz Kedmi, Emanuele Michele Alberto Monterosso, Eshel + Yaron, Farasha Euker, Feng Shu, Filippo Argiolas, Gaston Cabotin, + Gautier Ponsinet, Gerry Agbobada, Gianluca Recchia, Gonçalo Marrafa, + Guilherme Semente, Gustavo Barros, Hörmetjan Yiltiz, Ilja Kocken, + Imran Khan, Iris Garcia, Ivan Popovych, Jabir Ali Ouassou, James + Ferguson, JD Smith, Jeremy Friesen, Jerry Zhang, Johannes Grødem, + John Haman, John Sullivan, John Wick, 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, + Lasse Lindner, Len Trigg, Lennart C.{{{space()}}} 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, Nicolas + Semrau, Olaf Meeuwissen, Oliver Epper, Pablo Stafforini, Paul + Poloskov, Pengji Zhang, Pete Kazmier, Peter Wu, Philip Kaludercic, + Pierre Téchoueyres, Przemysław Kryger, Robert Hepple, Roman Rudakov, + Roshan Shariff, Russell Sim, Ryan Phillips, Rytis Paškauskas, Rudolf + Adamkovič, Sam Kleinman, Samuel Culpepper, Saša Janiška, Shreyas + Ragavan, Simon Pugnet, Stéphane Marks, Steve Downey, 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, TitusMu, Trey, bepolymathe, + bit9tream, bangedorrunt, case-lambda, chainedghost, derek-upham, + doolio, fleimgruber, gitrj95, iSeeU, jixiuf, ltmsyvag, okamsn, + pedro-nonfree, pRot0ta1p, realazy, shimeike, shipmints, soaringbird, tumashu, wakamenod. + Packaging :: Basil L.{{{space()}}} Contovounesios, Eli Zaretskii, @@ -6031,7 +6765,7 @@ All errors are my own. Version 1.3, 3 November 2008 - Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. + Copyright (C) 2000-2002, 2007-2008, 2026 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. diff --git a/doc/misc/newsticker.texi b/doc/misc/newsticker.texi index 71ba1873d3a..48310dced48 100644 --- a/doc/misc/newsticker.texi +++ b/doc/misc/newsticker.texi @@ -15,7 +15,7 @@ This manual documents Newsticker, a feed reader for Emacs. It corresponds to Emacs version @value{EMACSVER}. @noindent -Copyright @copyright{} 2004--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2004--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/nxml-mode.texi b/doc/misc/nxml-mode.texi index 7371b8ba4f8..c68a0997e07 100644 --- a/doc/misc/nxml-mode.texi +++ b/doc/misc/nxml-mode.texi @@ -9,7 +9,7 @@ This manual documents nXML mode, an Emacs major mode for editing XML with RELAX NG support. -Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/octave-mode.texi b/doc/misc/octave-mode.texi index 6d9472c7b1b..a334f644811 100644 --- a/doc/misc/octave-mode.texi +++ b/doc/misc/octave-mode.texi @@ -6,7 +6,7 @@ @c %**end of header @copying -Copyright @copyright{} 1996--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1996--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/org-setup.org b/doc/misc/org-setup.org index 63cb9a4c654..3519089180c 100644 --- a/doc/misc/org-setup.org +++ b/doc/misc/org-setup.org @@ -1,6 +1,6 @@ # SETUPFILE for Org manual -# Copyright (C) 2021-2025 Free Software Foundation, Inc. +# Copyright (C) 2021-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/doc/misc/org.org b/doc/misc/org.org index 26cb46cf13c..9f80cf4885e 100644 --- a/doc/misc/org.org +++ b/doc/misc/org.org @@ -23031,7 +23031,7 @@ that are mentioned in the manual. For a more complete list, use This manual is for Org version {{{version}}}. -Copyright \copy 2004--2025 Free Software Foundation, Inc. +Copyright \copy 2004--2026 Free Software Foundation, Inc. #+begin_quote Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/pcl-cvs.texi b/doc/misc/pcl-cvs.texi index b6ce91d8a51..7e096a4c753 100644 --- a/doc/misc/pcl-cvs.texi +++ b/doc/misc/pcl-cvs.texi @@ -7,7 +7,7 @@ @c %**end of header @copying -Copyright @copyright{} 1991--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1991--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/pgg.texi b/doc/misc/pgg.texi index f77671cbae6..2e97118d60b 100644 --- a/doc/misc/pgg.texi +++ b/doc/misc/pgg.texi @@ -10,7 +10,7 @@ This file describes PGG @value{VERSION}, an Emacs interface to various PGP implementations. -Copyright @copyright{} 2001, 2003--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2001, 2003--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/rcirc.texi b/doc/misc/rcirc.texi index 3e0e7d1c92d..aad3b5d4b79 100644 --- a/doc/misc/rcirc.texi +++ b/doc/misc/rcirc.texi @@ -6,7 +6,7 @@ @c %**end of header @copying -Copyright @copyright{} 2006--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2006--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/reftex.texi b/doc/misc/reftex.texi index f0f877d0849..34fdc2fc5ac 100644 --- a/doc/misc/reftex.texi +++ b/doc/misc/reftex.texi @@ -45,7 +45,7 @@ This manual documents @RefTeX{} (version @value{VERSION}), a package to do labels, references, citations and indices for LaTeX documents with Emacs. -Copyright @copyright{} 1997--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1997--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/remember.texi b/doc/misc/remember.texi index a9fcf6e6d48..44d97b75279 100644 --- a/doc/misc/remember.texi +++ b/doc/misc/remember.texi @@ -10,7 +10,7 @@ @copying This manual is for Remember Mode, as distributed with Emacs @value{EMACSVER}. -Copyright @copyright{} 2001, 2004--2005, 2007--2025 Free Software +Copyright @copyright{} 2001, 2004--2005, 2007--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/sasl.texi b/doc/misc/sasl.texi index a9261813948..a67329766a7 100644 --- a/doc/misc/sasl.texi +++ b/doc/misc/sasl.texi @@ -9,7 +9,7 @@ @copying This file describes the Emacs SASL library, version @value{VERSION}. -Copyright @copyright{} 2000, 2004--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2000, 2004--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/sc.texi b/doc/misc/sc.texi index 36657270737..80fe03f8f53 100644 --- a/doc/misc/sc.texi +++ b/doc/misc/sc.texi @@ -15,7 +15,7 @@ This document describes Supercite, an Emacs package for citing and attributing replies to mail and news messages. -Copyright @copyright{} 1993, 2001--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1993, 2001--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/sem-user.texi b/doc/misc/sem-user.texi index cb3238e377e..6ad9eb7cde3 100644 --- a/doc/misc/sem-user.texi +++ b/doc/misc/sem-user.texi @@ -1,5 +1,5 @@ @c This is part of the Semantic manual. -@c Copyright (C) 1999--2005, 2007, 2009--2025 Free Software Foundation, +@c Copyright (C) 1999--2005, 2007, 2009--2026 Free Software Foundation, @c Inc. @c See file semantic.texi for copying conditions. diff --git a/doc/misc/semantic.texi b/doc/misc/semantic.texi index 20cf0cec585..a5ab4574165 100644 --- a/doc/misc/semantic.texi +++ b/doc/misc/semantic.texi @@ -25,7 +25,7 @@ @copying This manual documents the Semantic library and utilities. -Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/ses.texi b/doc/misc/ses.texi index a52183055cc..d0de5a3c573 100644 --- a/doc/misc/ses.texi +++ b/doc/misc/ses.texi @@ -12,7 +12,7 @@ @copying This file documents @acronym{SES}: the Simple Emacs Spreadsheet. -Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2002--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/sieve.texi b/doc/misc/sieve.texi index deadc991173..35b81f013aa 100644 --- a/doc/misc/sieve.texi +++ b/doc/misc/sieve.texi @@ -10,7 +10,7 @@ @copying This file documents the Emacs Sieve package, for server-side mail filtering. -Copyright @copyright{} 2001--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2001--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/smtpmail.texi b/doc/misc/smtpmail.texi index 12b4ea41810..28ad7424e93 100644 --- a/doc/misc/smtpmail.texi +++ b/doc/misc/smtpmail.texi @@ -4,7 +4,7 @@ @include docstyle.texi @syncodeindex vr fn @copying -Copyright @copyright{} 2003--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2003--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/speedbar.texi b/doc/misc/speedbar.texi index 18e0a78857d..528eeae5e6a 100644 --- a/doc/misc/speedbar.texi +++ b/doc/misc/speedbar.texi @@ -5,7 +5,7 @@ @syncodeindex fn cp @copying -Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/srecode.texi b/doc/misc/srecode.texi index 8e075da8c07..bc52ff63ab9 100644 --- a/doc/misc/srecode.texi +++ b/doc/misc/srecode.texi @@ -16,7 +16,7 @@ @c %**end of header @copying -Copyright @copyright{} 2007--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2007--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/texinfo.tex b/doc/misc/texinfo.tex index 20e4f78b6c9..260bf4a9f80 100644 --- a/doc/misc/texinfo.tex +++ b/doc/misc/texinfo.tex @@ -3,7 +3,7 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi % -\def\texinfoversion{2025-12-06.19} +\def\texinfoversion{2025-12-23.13} % % Copyright 1985, 1986, 1988, 1990-2025 Free Software Foundation, Inc. % @@ -10435,7 +10435,7 @@ \gdefchar^^af{\={}} % \gdefchar^^b0{\textdegree} - \gdefchar^^b1{$\pm$} + \gdefchar^^b1{\ensuremath\pm} \gdefchar^^b2{$^2$} \gdefchar^^b3{$^3$} \gdefchar^^b4{\'{}} @@ -10456,7 +10456,7 @@ \gdefchar^^c2{\^A} \gdefchar^^c3{\~A} \gdefchar^^c4{\"A} - \gdefchar^^c5{\ringaccent A} + \gdefchar^^c5{\AA} \gdefchar^^c6{\AE} \gdefchar^^c7{\cedilla C} \gdefchar^^c8{\`E} @@ -10475,7 +10475,7 @@ \gdefchar^^d4{\^O} \gdefchar^^d5{\~O} \gdefchar^^d6{\"O} - \gdefchar^^d7{$\times$} + \gdefchar^^d7{\ensuremath\times} \gdefchar^^d8{\O} \gdefchar^^d9{\`U} \gdefchar^^da{\'U} @@ -10490,7 +10490,7 @@ \gdefchar^^e2{\^a} \gdefchar^^e3{\~a} \gdefchar^^e4{\"a} - \gdefchar^^e5{\ringaccent a} + \gdefchar^^e5{\aa} \gdefchar^^e6{\ae} \gdefchar^^e7{\cedilla c} \gdefchar^^e8{\`e} @@ -10509,7 +10509,7 @@ \gdefchar^^f4{\^o} \gdefchar^^f5{\~o} \gdefchar^^f6{\"o} - \gdefchar^^f7{$\div$} + \gdefchar^^f7{\ensuremath\div} \gdefchar^^f8{\o} \gdefchar^^f9{\`u} \gdefchar^^fa{\'u} @@ -10595,7 +10595,7 @@ \gdefchar^^d4{\^O} \gdefchar^^d5{\H O} \gdefchar^^d6{\"O} - \gdefchar^^d7{$\times$} + \gdefchar^^d7{\ensuremath\times} \gdefchar^^d8{\v R} \gdefchar^^d9{\ringaccent U} \gdefchar^^da{\'U} @@ -10629,7 +10629,7 @@ \gdefchar^^f4{\^o} \gdefchar^^f5{\H o} \gdefchar^^f6{\"o} - \gdefchar^^f7{$\div$} + \gdefchar^^f7{\ensuremath\div} \gdefchar^^f8{\v r} \gdefchar^^f9{\ringaccent u} \gdefchar^^fa{\'u} diff --git a/doc/misc/todo-mode.texi b/doc/misc/todo-mode.texi index 323fd5ddf32..e22b8495e2e 100644 --- a/doc/misc/todo-mode.texi +++ b/doc/misc/todo-mode.texi @@ -9,7 +9,7 @@ @c %**end of header @copying -Copyright @copyright{} 2013--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2013--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/tramp.texi b/doc/misc/tramp.texi index 7976b1e7cd8..c916588a060 100644 --- a/doc/misc/tramp.texi +++ b/doc/misc/tramp.texi @@ -12,7 +12,7 @@ @footnotestyle end @copying -Copyright @copyright{} 1999--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1999--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -1132,9 +1132,11 @@ an external transfer program. External methods save on the overhead of encoding and decoding of inline methods. +@vindex tramp-copy-size-limit Since external methods have the overhead of opening a new channel, files smaller than @code{tramp-copy-size-limit} still use inline -methods. +methods. If an external method is used inside a multi-hop connection +(@pxref{Multi-hops}), its inherent inline method is used as well. @table @asis @cindex method @option{rcp} @@ -3176,6 +3178,14 @@ connection cleanup or on Emacs exiting. @subsection @option{rclone} setup @cindex rclone setup +Check, that your @command{rclone} program is compiled with mount +support. Call @samp{rclone mount} and check for an error message. + +Sometimes, the saved configuration expires. In this case, you must +renew it with the command @samp{rclone config reconnect +@var{remote}:}, with @var{remote} being the name of your configured +system storage. + The default arguments of the @command{rclone} operations @command{mount}, @command{copyto}, @command{moveto} and @command{about} are declared in the variable @code{tramp-methods} as @@ -3883,7 +3893,7 @@ proxy @samp{bird@@bastion} to a remote file on @samp{you@@remotehost}: ssh@value{postfixhop}you@@remotehost@value{postfix}/path @key{RET}} @end example -Each involved method must be an inline method (@pxref{Inline methods}). +Each involved method must be handled by @value{tramp}'s @code{tramp-sh} backend. @value{tramp} adds the ad-hoc definitions as an ephemeral record to @code{tramp-default-proxies-alist}, which are available for reuse diff --git a/doc/misc/trampver.texi b/doc/misc/trampver.texi index bfae103a782..6eddd0e71c5 100644 --- a/doc/misc/trampver.texi +++ b/doc/misc/trampver.texi @@ -2,12 +2,12 @@ @c texi/trampver.texi. Generated from trampver.texi.in by configure. @c This is part of the Emacs manual. -@c Copyright (C) 2003--2025 Free Software Foundation, Inc. +@c Copyright (C) 2003--2026 Free Software Foundation, Inc. @c See file doclicense.texi for copying conditions. @c In the Tramp GIT, the version number and the bug report address @c are auto-frobbed from configure.ac. -@set trampver 2.8.1-pre +@set trampver 2.8.2-pre @set trampurl https://www.gnu.org/software/tramp/ @set tramp-bug-report-address tramp-devel@@gnu.org @set emacsver 28.1 diff --git a/doc/misc/transient.texi b/doc/misc/transient.texi index d55244d0579..25d0e11fac7 100644 --- a/doc/misc/transient.texi +++ b/doc/misc/transient.texi @@ -8,7 +8,7 @@ @copying @quotation -Copyright (C) 2018--2025 Free Software Foundation, Inc. +Copyright (C) 2018--2026 Free Software Foundation, Inc. You can redistribute this document and/or modify it under the terms of the GNU General Public License as published by the Free Software @@ -25,13 +25,13 @@ General Public License for more details. @dircategory Emacs misc features @direntry -* Transient: (transient). Transient Commands. +* Transient: (transient). Transient Commands. @end direntry @finalout @titlepage @title Transient User and Developer Manual -@subtitle for version 0.11.0 +@subtitle for version 0.12.0 @author Jonas Bernoulli @page @vskip 0pt plus 1filll @@ -53,7 +53,7 @@ resource to get over that hurdle is Psionic K's interactive tutorial, available at @uref{https://github.com/positron-solutions/transient-showcase}. @noindent -This manual is for Transient version 0.11.0. +This manual is for Transient version 0.12.0. @insertcopying @end ifnottex @@ -385,7 +385,7 @@ than outlined above and even customizable.} If the user does not save the value and just exits using a regular suffix command, then the value is merely saved to the transient's history. That value won't be used when the transient is next invoked, -but it is easily accessible (see @ref{Using History}). +but it is easily accessible (@pxref{Using History}). Option @code{transient-common-command-prefix} controls the prefix key used in the following bindings. For simplicity's sake the default, @kbd{C-x}, @@ -454,8 +454,8 @@ previously used values. Usually the same keys as those mentioned above are bound to those commands. Authors of transients should arrange for different infix commands that -read the same kind of value to also use the same history key (see -@ref{Suffix Slots}). +read the same kind of value to also use the same history key +(@pxref{Suffix Slots}). Both kinds of history are saved to a file when Emacs is exited. @@ -785,7 +785,7 @@ menu buffer. The menu buffer is displayed in a window using The value of this option has the form @code{(@var{FUNCTION} . @var{ALIST})}, where @var{FUNCTION} is a function or a list of functions. Each such function should accept two arguments: a buffer to display and an -alist of the same form as @var{ALIST}. See @ref{Choosing Window,,,elisp,}, +alist of the same form as @var{ALIST}. @xref{Choosing Window,,,elisp,}, for details. The default is: @@ -798,8 +798,8 @@ The default is: @end lisp This displays the window at the bottom of the selected frame. -For alternatives see @ref{Buffer Display Action Functions,,,elisp,}, -and @ref{Buffer Display Action Alists,,,elisp,}. +For alternatives @xref{Buffer Display Action Functions,,,elisp,}, +and @xref{Buffer Display Action Alists,,,elisp,}. When you switch to a different ACTION, you should keep the ALIST entries for @code{dedicated} and @code{inhibit-same-window} in most cases. @@ -861,7 +861,7 @@ used to draw the line. This user option may be overridden if @code{:mode-line-format} is passed when creating a new prefix with @code{transient-define-prefix}. -Otherwise this can be any mode-line format. See @ref{Mode Line Format,,,elisp,}, for details. +Otherwise this can be any mode-line format. @xref{Mode Line Format,,,elisp,}, for details. @end defopt @defopt transient-semantic-coloring @@ -879,7 +879,7 @@ This option controls whether key bindings of infix commands that do not match the respective command-line argument should be highlighted. For other infix commands this option has no effect. -This is mostly indended for autors of transient menus and disabled +This is mostly intended for authors of transient menus and disabled by default. When this option is non-@code{nil}, the key binding for an infix argument @@ -1002,8 +1002,8 @@ That buffer is current and empty when this hook is runs. @cindex modifying existing transients -To an extent, transients can be customized interactively, see -@ref{Enabling and Disabling Suffixes}. This section explains how existing +To an extent, transients can be customized interactively, +@xref{Enabling and Disabling Suffixes}. This section explains how existing transients can be further modified non-interactively. Let's begin with an example: @@ -1029,10 +1029,10 @@ which can be included in multiple prefixes. See TODO@. as expected by @code{transient-define-prefix}. Note that an infix is a special kind of suffix. Depending on context ``suffixes'' means ``suffixes (including infixes)'' or ``non-infix suffixes''. Here it -means the former. See @ref{Suffix Specifications}. +means the former. @xref{Suffix Specifications}. @var{SUFFIX} may also be a group in the same form as expected by -@code{transient-define-prefix}. See @ref{Group Specifications}. +@code{transient-define-prefix}. @xref{Group Specifications}. @item @var{LOC} is a key description (a string as returned by @code{key-description} @@ -1055,9 +1055,9 @@ the function @code{transient--get-layout}. These functions operate on the information stored in the @code{transient--layout} property of the @var{PREFIX} symbol. Elements in that -tree are not objects but have the form @code{(@var{CLASS} @var{PLIST}) for suffixes} and +tree are not objects but have the form @code{(@var{CLASS} @var{PLIST})} for suffixes and @code{[CLASS PLIST CHILDREN]} for groups. At the root of the tree is an -element @code{[N Nil CHILDREN]}, where @code{N} is the version of the layout format, +element @code{[N nil CHILDREN]}, where @code{N} is the version of the layout format, currently and hopefully for a long time 2. While that element looks like a group vector, that element does not count when identifying a group using a coordinate vector, i.e., @code{[0]} is its first child, not the @@ -1072,7 +1072,7 @@ or after @var{LOC}. Conceptually adding a binding to a transient prefix is similar to adding a binding to a keymap, but this is complicated by the fact that multiple suffix commands can be bound to the same key, provided -they are never active at the same time, see @ref{Predicate Slots}. +they are never active at the same time, @xref{Predicate Slots}. Unfortunately both false-positives and false-negatives are possible. To deal with the former, use non-@code{nil} @var{KEEP-OTHER@.} The symbol @code{always} @@ -1205,14 +1205,14 @@ enabled. One benefit of the Transient interface is that it remembers history not only on a global level (``this command was invoked using these arguments, and previously it was invoked using those other arguments''), but also remembers the values of individual arguments -independently. See @ref{Using History}. +independently. @xref{Using History}. After a transient prefix command is invoked, @kbd{C-h @var{KEY}} can be used to show the documentation for the infix or suffix command that @kbd{@var{KEY}} is -bound to (see @ref{Getting Help for Suffix Commands}), and infixes and +bound to (@pxref{Getting Help for Suffix Commands}), and infixes and suffixes can be removed from the transient using @kbd{C-x l @var{KEY}}. Infixes and suffixes that are disabled by default can be enabled the same way. -See @ref{Enabling and Disabling Suffixes}. +@xref{Enabling and Disabling Suffixes}. Transient ships with support for a few different types of specialized infix commands. A command that sets a command line option, for example, @@ -1263,7 +1263,7 @@ explicitly. @var{GROUP}s add key bindings for infix and suffix commands and specify how these bindings are presented in the menu buffer. At least one -@var{GROUP} has to be specified. See @ref{Binding Suffix and Infix Commands}. +@var{GROUP} has to be specified. @xref{Binding Suffix and Infix Commands}. The @var{BODY} is optional. If it is omitted, then @var{ARGLIST} is ignored and the function definition becomes: @@ -1314,11 +1314,13 @@ GROUPs have the same form as for @code{transient-define-prefix}. @section Binding Suffix and Infix Commands The macro @code{transient-define-prefix} is used to define a transient. -This defines the actual transient prefix command (see @ref{Defining Transients}) and adds the transient's infix and suffix bindings, as +This defines the actual transient prefix command (@pxref{Defining +Transients}) and adds the transient's infix and suffix bindings, as described below. Users and third-party packages can add additional bindings using -functions such as @code{transient-insert-suffix} (see @ref{Modifying Existing Transients}). These functions take a ``suffix specification'' as one of +functions such as @code{transient-insert-suffix} (@pxref{Modifying Existing Transients}). +These functions take a ``suffix specification'' as one of their arguments, which has the same form as the specifications used in @code{transient-define-prefix}. @@ -1334,7 +1336,7 @@ for a set of suffixes. Several group classes exist, some of which organize suffixes in subgroups. In most cases the class does not have to be specified -explicitly, but see @ref{Group Classes}. +explicitly, but @xref{Group Classes}. Groups are specified in the call to @code{transient-define-prefix}, using vectors. Because groups are represented using vectors, we cannot use @@ -1344,10 +1346,13 @@ brackets to do the latter. Group specifications then have this form: @lisp -[@{LEVEL@} @{DESCRIPTION@} @{KEYWORD VALUE@}... ELEMENT...] +[@{@var{LEVEL}@} @{@var{DESCRIPTION}@} + @{@var{KEYWORD} @var{VALUE}@}... + @var{ELEMENT}...] @end lisp -The @var{LEVEL} is optional and defaults to 4. See @ref{Enabling and Disabling Suffixes}. +The @var{LEVEL} is optional and defaults to 4. @xref{Enabling and +Disabling Suffixes}. The @var{DESCRIPTION} is optional. If present, it is used as the heading of the group. @@ -1378,7 +1383,7 @@ useful while rebase is already in progress; and another that uses initiate a rebase. These predicates can also be used on individual suffixes and are -only documented once, see @ref{Predicate Slots}. +only documented once, @xref{Predicate Slots}. @item The value of @code{:hide}, if non-@code{nil}, is a predicate that controls @@ -1483,13 +1488,13 @@ The form of suffix specifications is documented in the next node. @cindex suffix specifications A transient's suffix and infix commands are bound when the transient -prefix command is defined using @code{transient-define-prefix}, see -@ref{Defining Transients}. The commands are organized into groups, see -@ref{Group Specifications}. Here we describe the form used to bind an +prefix command is defined using @code{transient-define-prefix}, +@xref{Defining Transients}. The commands are organized into groups, +@xref{Group Specifications}. Here we describe the form used to bind an individual suffix command. The same form is also used when later binding additional commands -using functions such as @code{transient-insert-suffix}, see @ref{Modifying Existing Transients}. +using functions such as @code{transient-insert-suffix}, @xref{Modifying Existing Transients}. Note that an infix is a special kind of suffix. Depending on context ``suffixes'' means ``suffixes (including infixes)'' or ``non-infix @@ -1498,7 +1503,9 @@ suffixes''. Here it means the former. Suffix specifications have this form: @lisp -([LEVEL] [KEY [DESCRIPTION]] COMMAND|ARGUMENT [KEYWORD VALUE]...) +([@var{LEVEL}] + [@var{KEY} [@var{DESCRIPTION}]] + @var{COMMAND}|@var{ARGUMENT} [@var{KEYWORD} @var{VALUE}]...) @end lisp @var{LEVEL}, @var{KEY} and @var{DESCRIPTION} can also be specified using the @var{KEYWORD}s @@ -1509,8 +1516,8 @@ the object's values just for the binding inside this transient. @itemize @item -@var{LEVEL} is the suffix level, an integer between 1 and 7. See -@ref{Enabling and Disabling Suffixes}. +@var{LEVEL} is the suffix level, an integer between 1 and 7. +@xref{Enabling and Disabling Suffixes}. @item KEY is the key binding, a string in the format returned by @@ -1584,7 +1591,7 @@ guessed based on the long argument. If the argument ends with @samp{=} Finally, details can be specified using optional @var{KEYWORD}-@var{VALUE} pairs. Each keyword has to be a keyword symbol, either @code{:class} or a keyword -argument supported by the constructor of that class. See @ref{Suffix Slots}. +argument supported by the constructor of that class. @xref{Suffix Slots}. If a keyword argument accepts a function as value, you an use a @code{lambda} expression. As a special case, the @code{##} macro (which returns a @code{lambda} @@ -1702,7 +1709,7 @@ should be used. @end defun @defun transient-get-value -This function returns the value of the erant prefix. +This function returns the value of the extant prefix. This function is intended to be used when setting up a menu and its suffixes. It is not intended to be used when a suffix command is @@ -1934,8 +1941,8 @@ means that all outer prefixes are exited at once. @item The behavior for non-suffixes can be set for a particular prefix, by the prefix's @code{transient-non-suffix} slot to a boolean, a suitable -pre-command function, or a shorthand for such a function. See -@ref{Pre-commands for Non-Suffixes}. +pre-command function, or a shorthand for such a function. +@xref{Pre-commands for Non-Suffixes}. @item The common behavior for the suffixes of a particular prefix can be @@ -2260,7 +2267,7 @@ Transient itself provides a single class for prefix commands, @code{transient-prefix}, but package authors may wish to define specialized classes. Doing so makes it possible to change the behavior of the set of prefix commands that use that class, by implementing specialized -methods for certain generic functions (see @ref{Prefix Methods}). +methods for certain generic functions (@pxref{Prefix Methods}). A transient prefix command's object is stored in the @code{transient--prefix} property of the command symbol. While a transient is active, a clone @@ -2275,7 +2282,7 @@ object should not affect later invocations. @item All suffix and infix classes derive from @code{transient-suffix}, which in turn derives from @code{transient-child}, from which @code{transient-group} also -derives (see @ref{Group Classes}). +derives (@pxref{Group Classes}). @item All infix classes derive from the abstract @code{transient-infix} class, @@ -2283,13 +2290,13 @@ which in turn derives from the @code{transient-suffix} class. Infixes are a special type of suffixes. The primary difference is that infixes always use the @code{transient--do-stay} pre-command, while -non-infix suffixes use a variety of pre-commands (see @ref{Transient State}). Doing that is most easily achieved by using this class, +non-infix suffixes use a variety of pre-commands (@pxref{Transient State}). Doing that is most easily achieved by using this class, though theoretically it would be possible to define an infix class that does not do so. If you do that then you get to implement many methods. Also, infixes and non-infix suffixes are usually defined using -different macros (see @ref{Defining Suffix and Infix Commands}). +different macros (@pxref{Defining Suffix and Infix Commands}). @item Classes used for infix commands that represent arguments should @@ -2699,7 +2706,7 @@ secondary value, called a ``scope''. See @code{transient-define-prefix}. @code{transient-suffix}, @code{transient-non-suffix} and @code{transient-switch-frame} play a part when determining whether the currently active transient prefix command remains active/transient when a suffix or arbitrary -non-suffix command is invoked. See @ref{Transient State}. +non-suffix command is invoked. @xref{Transient State}. @item @code{refresh-suffixes} Normally suffix objects and keymaps are only setup @@ -2781,7 +2788,7 @@ of the same symbol. @item @code{level} The level of the prefix commands. The suffix commands whose -layer is equal or lower are displayed. See @ref{Enabling and Disabling Suffixes}. +layer is equal or lower are displayed. @pxref{Enabling and Disabling Suffixes}. @item @code{value} The likely outdated value of the prefix. Instead of accessing @@ -2805,15 +2812,15 @@ Here we document most of the slots that are only available for suffix objects. Some slots are shared by suffix and group objects, they are documented in @ref{Predicate Slots}. -Also see @ref{Suffix Classes}. +Also @xref{Suffix Classes}. @anchor{Slots of @code{transient-child}} @subheading Slots of @code{transient-child} This is the abstract superclass of @code{transient-suffix} and @code{transient-group}. -This is where the shared @code{if*} and @code{inapt-if*} slots (see @ref{Predicate Slots}), -the @code{level} slot (see @ref{Enabling and Disabling Suffixes}), and the @code{advice} -and @code{advice*} slots (see @ref{Slots of @code{transient-suffix}}) are defined. +This is where the shared @code{if*} and @code{inapt-if*} slots (@pxref{Predicate Slots}), +the @code{level} slot (@pxref{Enabling and Disabling Suffixes}), and the @code{advice} +and @code{advice*} slots (@pxref{Slots of @code{transient-suffix}}) are defined. @itemize @item @@ -2839,7 +2846,7 @@ which is useful for alignment purposes. @code{command} The command, a symbol. @item -@code{transient} Whether to stay transient. See @ref{Transient State}. +@code{transient} Whether to stay transient. @xref{Transient State}. @item @code{format} The format used to display the suffix in the menu buffer. @@ -3063,14 +3070,14 @@ currently cannot be invoked. By default these predicates run when the prefix command is invoked, but this can be changes, using the @code{refresh-suffixes} prefix slot. -See @ref{Prefix Slots}. +@xref{Prefix Slots}. One more slot is shared between group and suffix classes, @code{level}. Like the slots documented above, it is a predicate, but it is used for a different purpose. The value has to be an integer between 1 and 7. @code{level} controls whether a suffix or a group should be available depending on user preference. -See @ref{Enabling and Disabling Suffixes}. +@xref{Enabling and Disabling Suffixes}. @node FAQ @appendix FAQ diff --git a/doc/misc/url.texi b/doc/misc/url.texi index b04f0ad0d25..f0b57b975b1 100644 --- a/doc/misc/url.texi +++ b/doc/misc/url.texi @@ -21,7 +21,7 @@ @copying This is the manual for the @code{url} Emacs Lisp library. -Copyright @copyright{} 1993--1999, 2002, 2004--2025 Free Software +Copyright @copyright{} 1993--1999, 2002, 2004--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/use-package.texi b/doc/misc/use-package.texi index 2e9fd87776a..ac09d25d4a8 100644 --- a/doc/misc/use-package.texi +++ b/doc/misc/use-package.texi @@ -13,7 +13,7 @@ @copying This manual is for use-package @value{USEP_VER} @value{USEP_DIST}. -Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2022--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/vhdl-mode.texi b/doc/misc/vhdl-mode.texi index 3a7f3966ca8..df63a85f36b 100644 --- a/doc/misc/vhdl-mode.texi +++ b/doc/misc/vhdl-mode.texi @@ -10,7 +10,7 @@ @copying This file documents VHDL Mode, an Emacs mode for editing VHDL code. -Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2025 Free Software +Copyright @copyright{} 1995--2008, 2010, 2012, 2015--2026 Free Software Foundation, Inc. @quotation diff --git a/doc/misc/viper.texi b/doc/misc/viper.texi index 6932d29c296..a610527fe47 100644 --- a/doc/misc/viper.texi +++ b/doc/misc/viper.texi @@ -8,7 +8,7 @@ @include docstyle.texi @copying -Copyright @copyright{} 1995--2025 Free Software Foundation, Inc. +Copyright @copyright{} 1995--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/vtable.texi b/doc/misc/vtable.texi index dd2f79512c1..d53c9e8a266 100644 --- a/doc/misc/vtable.texi +++ b/doc/misc/vtable.texi @@ -12,7 +12,7 @@ @copying This file documents the GNU vtable.el package. -Copyright @copyright{} 2022--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2022--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/misc/widget.texi b/doc/misc/widget.texi index 864489726c8..b7ce3f7a262 100644 --- a/doc/misc/widget.texi +++ b/doc/misc/widget.texi @@ -9,7 +9,7 @@ @c %**end of header @copying -Copyright @copyright{} 2000--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2000--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -785,13 +785,19 @@ The following navigation commands are available: @table @kbd @item @key{TAB} -@deffn Command widget-forward &optional count -Move point @var{count} buttons or editing fields forward. +@deffn Command widget-forward count &optional suppress-echo +Move point @var{count} buttons or editing fields forward. The optional +@var{suppress-echo} argument suppresses showing in the echo-area the +help-echo text, if any, for the final position after the move; it is +always @code{nil} in interactive invocations. @end deffn @item M-@key{TAB} @itemx S-@key{TAB} -@deffn Command widget-backward &optional count -Move point @var{count} buttons or editing fields backward. +@deffn Command widget-backward count &optional suppress-echo +Move point @var{count} buttons or editing fields backward. The optional +@var{suppress-echo} argument suppresses showing in the echo-area the +help-echo text, if any, for the final position after the move; it is +always @code{nil} in interactive invocations. @end deffn @end table diff --git a/doc/misc/wisent.texi b/doc/misc/wisent.texi index b49166b5791..331ae5215a9 100644 --- a/doc/misc/wisent.texi +++ b/doc/misc/wisent.texi @@ -24,7 +24,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2025 +Copyright @copyright{} 1988--1993, 1995, 1998--2004, 2007, 2012--2026 Free Software Foundation, Inc. @c Since we are both GNU manuals, we do not need to ack each other here. diff --git a/doc/misc/woman.texi b/doc/misc/woman.texi index a0af654d002..370ec3f25c6 100644 --- a/doc/misc/woman.texi +++ b/doc/misc/woman.texi @@ -15,7 +15,7 @@ This file documents WoMan: A program to browse Unix manual pages ``W.O. (without) man''. -Copyright @copyright{} 2001--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2001--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/doc/translations/README b/doc/translations/README index 8ee74b1c64d..bac8bc5d188 100644 --- a/doc/translations/README +++ b/doc/translations/README @@ -196,7 +196,7 @@ etc. * License of this document -Copyright (C) 2024-2025 Free Software Foundation, Inc. +Copyright (C) 2024-2026 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice diff --git a/doc/translations/fr/misc/ses-fr.texi b/doc/translations/fr/misc/ses-fr.texi index 4bc0bf7f96b..3740c1f508b 100644 --- a/doc/translations/fr/misc/ses-fr.texi +++ b/doc/translations/fr/misc/ses-fr.texi @@ -15,7 +15,7 @@ Ce fichier documente @acronym{SES} : le tableur simple d’Emacs (Simple Emacs Spreadsheet). -Copyright @copyright{} 2002--2025 Free Software Foundation, Inc. +Copyright @copyright{} 2002--2026 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document diff --git a/etc/CALC-NEWS b/etc/CALC-NEWS index aec31e940de..c0d109f44f9 100644 --- a/etc/CALC-NEWS +++ b/etc/CALC-NEWS @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Calc is an advanced desk calculator for GNU Emacs. diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1 index d241e6d636d..feddd880066 100644 --- a/etc/ChangeLog.1 +++ b/etc/ChangeLog.1 @@ -6891,7 +6891,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1993-1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1993-1999, 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/etc/DEBUG b/etc/DEBUG index dc1601a34f8..e70fe8de390 100644 --- a/etc/DEBUG +++ b/etc/DEBUG @@ -1,6 +1,6 @@ Debugging GNU Emacs -Copyright (C) 1985, 2000-2025 Free Software Foundation, Inc. +Copyright (C) 1985, 2000-2026 Free Software Foundation, Inc. See the end of the file for license conditions. ** Preliminaries diff --git a/etc/DISTRIB b/etc/DISTRIB index 1f154fd74d7..b548b65f864 100644 --- a/etc/DISTRIB +++ b/etc/DISTRIB @@ -1,7 +1,7 @@ -*- text -*- GNU Emacs availability information -Copyright (C) 1986-1993, 1995, 1998, 2000-2025 Free Software Foundation, +Copyright (C) 1986-1993, 1995, 1998, 2000-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/EGLOT-NEWS b/etc/EGLOT-NEWS index b3edd77cacd..20c2208c54c 100644 --- a/etc/EGLOT-NEWS +++ b/etc/EGLOT-NEWS @@ -1,6 +1,6 @@ Eglot NEWS -*- outline -*- -Copyright (C) 2018-2025 Free Software Foundation, Inc. +Copyright (C) 2018-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Eglot bug reports to 'bug-gnu-emacs@gnu.org', and Cc (or @@ -20,6 +20,71 @@ https://github.com/joaotavora/eglot/issues/1234. * Changes to upcoming Eglot +** File watch limits to prevent resource exhaustion (github#1568) + +The new variable 'eglot-max-file-watches' limits the number of file +watches that can be created. Some language servers request watching +for a very large number of directories (e.g. Python virtualenvs), which +can exhaust system resources and cause slow startup. + +** Support for complex workspace edits (create/rename/delete files) + +Eglot now advertises support for file resource operations in workspace +edits and can handle create, rename, and delete file operations. The +confirmation UI has been reworked to handle mixed operation types. + +The 'eglot-confirm-server-edits' defcustom has been overhauled and now +also accepts file operation kinds as keys in the alist form, providing +more fine-grained control over what confirmation mechanism to use. + +** 'eglot-advertise-cancellation' now defaults to t + +The variable 'eglot-advertise-cancellation' now defaults to t, which +means Eglot will send '$/cancelRequest' notifications to servers when it +thinks responses to inflight requests are no longer useful. The current +2026 LSP landscape (especially gopls and ocamllsp) suggests this is +beneficial and helps servers avoid costly useless work. + +** Imenu setup is more predictable (github#1569) + +Eglot now sets 'imenu-create-index-function' using ':override' advice, +making the integration cleaner and more predictable. + +** Fixed textDocument/prepareRename support (github#1554) + +Eglot now properly checks server capabilities before sending +prepareRename requests. + + +* Changes in Eglot 1.21 (11/1/2026) + +This is a bugfix release with small fixes for semantic tokens and Emacs +26.3 compatibility. + + +* Changes in Eglot 1.20 (11/1/2026) + +** Dramatically faster handling of files with many diagnostics + +Diagnostic conversion between LSP and Flymake versions is now much +faster. Previously, editing, e.g. a Python file with thousands of +diagnostics was next to impossible to to periodic interruptions of +diagnostic reports. Now it's practically unnoticeable. + +** Support for LSP server multiplexers via Rassumfrassum + +Eglot can now leverage LSP server multiplexer programs like Rassumfrassum +(invoked via the 'rass' command) to use multiple language servers in a +single buffer. This enables combining spell-checkers with language +servers, using multiple servers for the same language (e.g., 'ty' for +type checking and 'ruff' for linting in Python), or handling +multi-language files like Vue. + +Some invocations of 'rass' are offered as alternatives in the built-in +'eglot-server-programs' variable. The manual (readable with 'M-x +eglot-manual') contains a comprehensive discussion of how to set up and +use multiplexers in the new "Multi-server support" chapter. + ** Support for pull diagnostics (github#1559, github#1290) For servers supporting the 'diagnosticProvider' capability, Eglot @@ -28,6 +93,15 @@ requests diagnostics explicitly rather than relying on sporadic server is known to support the "pull" variant exclusively, while the 'ty' server is known to support it alongside "push". +** New command 'eglot-momentary-inlay-hints' + +When bound to a single key in 'eglot-mode-map' this will arrange for +inlay hints to be displayed as long as the key is held down, and then +hidden shortly after it is released. Emacs doesn't support binding to +\"key up\" events, but this function offers an approximation. It relies +on measuring your keyboard initial delay and repeat rate, and may not be +100% accurate. + ** Support for watching files outside the project (bug#79809) Eglot now supports and advertises the 'relativePatternSupport' @@ -45,6 +119,11 @@ controlling which token types and modifiers to consider, as well as faces for customizing their appearance. The minor mode is on by default: consult the manual on how to turn it off. +** Reading the Eglot manual in Emacs is easy again + +The command 'M-x eglot-manual' is now easier to reach and directly drops +the user into the manual. + * Changes in Eglot 1.19 (23/10/2025) @@ -155,7 +234,7 @@ use this. ** Eglot uses an internal 'track-changes.el' library (bug#70077) -This should in theory help smoothen the Eglot's handling of events that +This should in theory help smooth the Eglot's handling of events that change the buffer. The library has been problematic in the past, let's hope we're past that phase. diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index 932b7a58aa7..9ede2566e6d 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -1,6 +1,6 @@ ERC NEWS -Copyright (C) 2006-2025 Free Software Foundation, Inc. +Copyright (C) 2006-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send ERC bug reports to 'bug-gnu-emacs@gnu.org', @@ -68,8 +68,8 @@ ERC buffers as having been read. ** An arguably less distracting 'erc-nicks-track-faces' variant. Setting this option to t tells the 'track' module to have the mode-line indicator stick with the most recent speaker's face, even when they're -monologuing, instead of alternating between it and the highest ranked -'erc-track-faces-normal-list' member in a given message. +the only speaker, instead of alternating between it and the highest +ranked 'erc-track-faces-normal-list' member in a given message. ** Module 'querypoll' has left 'goodies' and moved in with 'notify'. The 'querypoll' module was initially placed in 'erc-goodies' even though diff --git a/etc/ETAGS.EBNF b/etc/ETAGS.EBNF index e617c1c4592..53636e496cd 100644 --- a/etc/ETAGS.EBNF +++ b/etc/ETAGS.EBNF @@ -94,7 +94,7 @@ those. ===================== end of discussion of tag names ===================== -Copyright (C) 2002-2025 Free Software Foundation, Inc. +Copyright (C) 2002-2026 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/ETAGS.README b/etc/ETAGS.README index 4e077728e8a..4b5e717e475 100644 --- a/etc/ETAGS.README +++ b/etc/ETAGS.README @@ -28,7 +28,7 @@ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2025 Free Software +Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2026 Free Software Foundation, Inc. This file is not considered part of GNU Emacs. diff --git a/etc/HELLO b/etc/HELLO index 07be2d55293..8a7c7dbe706 100644 --- a/etc/HELLO +++ b/etc/HELLO @@ -132,7 +132,7 @@ Wancho (𞋒𞋀𞋉𞋃𞋕) 𞋂𞋈𞋛 -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/etc/MACHINES b/etc/MACHINES index c3f091800b8..a3046f271d7 100644 --- a/etc/MACHINES +++ b/etc/MACHINES @@ -1,6 +1,6 @@ Emacs machines list -Copyright (C) 1989-2025 Free Software Foundation, Inc. +Copyright (C) 1989-2026 Free Software Foundation, Inc. See the end of the file for license conditions. This is a list of the status of GNU Emacs on various machines and systems. diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS index 96bffc0bb2c..19677670860 100644 --- a/etc/MH-E-NEWS +++ b/etc/MH-E-NEWS @@ -1,6 +1,6 @@ * COPYRIGHT -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. * Changes in MH-E 8.6 diff --git a/etc/NEWS b/etc/NEWS index c7b9ec1341b..1b95bc37364 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2022-2025 Free Software Foundation, Inc. +Copyright (C) 2022-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. @@ -82,6 +82,13 @@ other directory on your system. You can also invoke the * Changes in Emacs 31.1 ++++ +** 'line-spacing' now supports specifying spacing above the line. +Previously, only spacing below the line could be specified. The user +option can now be set to a cons cell to specify spacing both above and +below the line, which allows for vertically centering text. + ++++ ** 'prettify-symbols-mode' attempts to ignore undisplayable characters. Previously, such characters would be rendered as, e.g., white boxes. @@ -199,6 +206,13 @@ different completion categories by customizing be updated as you type, or nil to suppress this always. Note that for large or inefficient completion tables this can slow down typing. ++++ +*** New optional value of 'minibuffer-visible-completions'. +If the value of this option is 'up-down', only the '' and '' +arrow keys move point between candidates shown in the "*Completions*" +buffer display, while '' and '' arrows move point in the +minibuffer window. + --- *** 'RET' chooses the completion selected with 'M-/M-'. If a completion candidate is selected with 'M-' or 'M-', @@ -306,7 +320,7 @@ to extend the boundaries of the active region by dragging the mouse pointer. --- *** 'context-menu-mode' now includes a "Send to..." menu item. The menu item enables sending current file(s) or region text to external -(non-Emacs) applications or services. See send-to.el for customisations. +(non-Emacs) applications or services. See send-to.el for customizations. --- *** The mouse now drags lines in character increments again. @@ -315,7 +329,7 @@ dividing side-by-side windows now by default happens in increments of the corresponding frame's character size again. This is the behavior described in the manual and was the default behavior before 'window-resize-pixelwise' was added for Emacs 24.1. To drag in pixel -increments as with Emcas 24 through Emacs 30 you now have to set +increments as with Emacs 24 through Emacs 30 you now have to set 'window-resize-pixelwise' to t. ** Windows @@ -402,11 +416,20 @@ for which you can use '(category . tex-shell)'. +++ *** New user option 'split-window-preferred-direction'. -Users can now choose in which direction Emacs tries to split first: -vertically or horizontally. The new default is to prefer to split -horizontally if the frame is landscape and vertically if it is portrait. -You can customize this option to 'vertical' to restore Emacs's old -behavior of always preferring vertical splits. +Functions called by 'display-buffer' split the selected window when they +need to create a new window. A window can be split either vertically, +one below the other, or horizontally, side by side. This new option +determines which direction will be tried first, when both directions are +possible according to the values of 'split-width-threshold' and +'split-height-threshold'. The default value is 'longest', which means +to prefer to split horizontally if the window's frame is a "landscape" +frame, and vertically if it is a "portrait" frame. (A frame is +considered to be "portrait" if its vertical dimension in pixels is +greater or equal to its horizontal dimension, otherwise it's considered +to be "landscape".) Previous versions of Emacs always tried to split +vertically first, so to get previous behavior, you can customize this +option to 'vertical'. The value 'horizontal' always prefers the +horizontal split. +++ *** New argument INDIRECT for 'get-buffer-window-list'. @@ -440,6 +463,12 @@ adjacent windows and subsequently operate on that parent. 'uncombine-window' can then be used to restore the window configuration to the state it had before running 'combine-windows'. ++++ +*** New function 'window-cursor-info'. +This function returns a vector of pixel-level information about the +physical cursor in a given window, including its type, coordinates, +dimensions, and ascent. + ** Frames +++ @@ -465,6 +494,13 @@ either resize the frame and change the fullscreen status accordingly or keep the frame size unchanged. The value t means to first reset the fullscreen status and then resize the frame. +*** New functions to set frame size and position in one compound step. +'set-frame-size-and-position' sets the new size and position of a frame +in one compound step. Both, size and position, can be specified as with +the corresponding frame parameters 'width', 'height', 'left' and 'top'. +'set-frame-size-and-position-pixelwise' is similar but has a more +restricted set of values for specifying size and position. + *** New commands 'split-frame' and 'merge-frames'. 'split-frame' moves a specified number of windows from an existing frame to a newly-created frame. 'merge-frames' merges all windows from two @@ -475,6 +511,30 @@ frames into one of these frames and deletes the other one. Unlike with other frame names, an attempt to rename to "F" throws an error when a frame of that name already exists. ++++ +*** New frame parameters 'cloned-from' and 'undeleted'. +The frame parameter 'cloned-from' is set to the frame from which the new +frame is cloned using the command 'clone-frame'. + +The frame parameter 'undeleted' is set to t when a frame is undeleted +using the command 'undelete-frame'. + +These are useful if you need to detect a cloned frame or undeleted frame +in hooks like 'after-make-frame-functions' and +'server-after-make-frame-hook'. + +*** Frames now have unique ids and the new function 'frame-id'. +Each non-tooltip frame is assigned a unique integer id. This allows you +to unambiguously identify frames even if they share the same name or +title. When 'undelete-frame-mode' is enabled, each deleted frame's id +is stored for resurrection. The function 'frame-id' returns a frame's +id (in C, use the frame struct member 'id'). + +*** New commands 'select-frame-by-id', 'undelete-frame-by-id'. +The command 'select-frame-by-id' selects a frame by ID and undeletes it +if deleted. The command 'undelete-frame-by-id' undeletes a frame by its +ID. When called interactively, both functions prompt for an ID. + ** Mode Line +++ @@ -498,6 +558,12 @@ every buffer. ** Tab Bars and Tab Lines +--- +*** New commands 'split-tab' and 'merge-tabs'. +'split-tab' moves a specified number of windows from an existing tab +to a newly-created tab. 'merge-tabs' merges all windows from two tabs +into one of these tabs and closes the other tab. + --- *** New abnormal hook 'tab-bar-auto-width-functions'. This hook allows you to control which tab-bar tabs are auto-resized. @@ -654,6 +720,17 @@ project, during completion. That makes some items shorter. The category defaults are the same as for 'buffer' but any user customizations would need to be re-added. ++++ +*** 'project-mode-line' can now show project name only for local files. +If the value of 'project-mode-line' is 'non-remote', project name and +the Project menu will be shown on the mode line only for projects with +local files. + +** Help + ++++ +*** New keybinding 'C-h u' for 'apropos-user-option'. + ** IDLWAVE has been moved to GNU ELPA. The version bundled with Emacs is out-of-date, and is now marked as obsolete. Use 'M-x list-packages' to install the 'idlwave' package from @@ -737,6 +814,15 @@ Emacs previously discarded arguments to emacsclient of zero length, such as in 'emacsclient --eval "(length (pop server-eval-args-left))" ""'. These are no longer discarded. ++++ +** New user option 'xterm-update-cursor' to update cursor display on TTYs. +When enabled, Emacs sends Xterm escape sequences on Xterm-compatible +terminals to update the cursor's appearacse. Emacs can update the +cursor's shape and color. For example, if you use a purple bar cursor +on graphical displays then when this option is enabled Emacs will use a +purple bar cursor on compatible terminals as well. See the Info node +"(emacs) Cursor Display" for more information. + * Editing Changes in Emacs 31.1 @@ -767,10 +853,10 @@ Northern Iroquoian language family: 'mohawk-postfix' (Mohawk [Kanien’kéha / Kanyen’kéha / Onkwehonwehnéha]), 'oneida-postfix' (Oneida [Onʌyote’a·ká· / Onyota’a:ká: / Ukwehuwehnéha]), 'cayuga-postfix' (Cayuga [Gayogo̱ho:nǫhnéha:ˀ]), 'onondaga-postfix' (Onondaga -[Onųdaʔgegáʔ]), and 'seneca-postfix' (Seneca [Onödowá’ga:’]). -Additionally, there is a general-purpose 'haudenosaunee-postfix' input -method to facilitate writing in the orthographies of the five languages -simultaneously. +[Onųdaʔgegáʔ]), 'seneca-postfix' (Seneca [Onödowá’ga:’]), and +'tuscarora-postfix' (Tuscarora [Skarù·ręʔ]). Additionally, there is a +general-purpose 'haudenosaunee-postfix' input method to facilitate +writing in the orthographies of the six languages simultaneously. --- *** New input methods for languages based on Burmese. @@ -845,6 +931,12 @@ activate the mark if it is not already active. The default value is t, which retains the old behavior. This variable has no effect when Transient Mark mode is off. +--- +** You can now use 'M-s t' to swap FROM and TO during 'query-replace'. +Likewise during 'query-replace-regexp'. The original binding of 'M-s' +('next-matching-history-element') is now available on 'M-s M-s' or 'M-s +s' for query replace minibuffer input. + --- ** New commands for filling text using semantic linefeeds. The new command 'fill-paragraph-semlf' fills a paragraph of text using @@ -870,6 +962,19 @@ failed. You can now use 'C-u C-x .' to clear the fill prefix, similarly to how you could already use 'C-u C-x C-n' to clear the goal column. ++++ +** New prefix argument for 'C-/' in Dired and Proced modes. +The Dired and Proced major modes bind mode-specific undo commands to the +same keys to which 'undo' is globally bound, 'C-/', 'C-_' and 'C-x u'. +These commands did not previously accept a prefix argument. +Now a numeric prefix argument specifies a repeat count, just like it +already did for 'undo'. + +** New minor mode 'center-line-mode'. +This mode keeps modified lines centered horizontally according to the +value of 'fill-column', by calling 'center-line' on each non-empty line +of the modified region. + * Changes in Specialized Modes and Packages in Emacs 31.1 @@ -1012,6 +1117,14 @@ defined by the new tree-sitter thing 'list'. The new variable 'forward-comment-function' is set to the new function 'treesit-forward-comment' if a major mode defines the thing 'comment'. ++++ +*** New function 'treesit-query-eagerly-compiled-p'. +This function returns non-nil if a query was eagerly compiled. + ++++ +*** New function 'treesit-query-source'. +This function returns the string or sexp source query of a compiled query. + +++ *** New function 'treesit-language-display-name'. This new function returns the display name of a language given the @@ -1101,6 +1214,11 @@ convention. Also, the ':match?' predicate can now take the regexp as either the first or second argument, so it works with both tree-sitter convention (regexp arg second) and Emacs convention (regexp arg first). +** Track changes + ++++ +*** New variable 'track-changes-undo-only' to distinguish undo changes. + ** Hideshow +++ @@ -1114,7 +1232,7 @@ blocks. This command hides or shows all the blocks in the current buffer. --- -*** 'hs-hide-level' no longer hide all the blocks in the current buffer. +*** 'hs-hide-level' no longer hides all the blocks in the current buffer. If 'hs-hide-level' was not inside a code block it would hide all the blocks in the buffer like 'hs-hide-all'. Now it should only hide all the second level blocks. @@ -1170,10 +1288,9 @@ buffer-local variables 'hs-block-start-regexp', 'hs-c-start-regexp', 'hs-forward-sexp-function', etc. +++ -*** 'hs-hide-level' and 'hs-cycle' can now hide comments too. +*** 'hs-hide-level' can now hide comments too. This is controlled by 'hs-hide-comments-when-hiding-all'. - ** C-ts mode +++ @@ -1232,6 +1349,12 @@ available. Now method chaining is indented by 8 spaces rather than 4, and this option controls how much is indented for method chaining. +** JSON-ts mode + +*** New command 'json-ts-jq-path-at-point'. +This command copies the path of the JSON element at point to the +kill-ring, formatted for use with the 'jq' utility. + ** PHP-ts mode --- @@ -1283,6 +1406,13 @@ associated to a remote PHP file, show the remote PHP ini files. Rust number literals may have an optional type suffix. When this option is non-nil, this suffix is fontified using 'font-lock-type-face'. +** YAML-ts mode + +--- +*** New user option 'yaml-ts-mode-yamllint-options'. +Additional options for 'yamllint', the command used for Flymake's YAML +support. + ** EIEIO --- @@ -1521,7 +1651,7 @@ If 'page-delimiters' is set in 'whitespace-style', or the new minor mode 'whitespace-page-delimiters-mode' is on, the page delimiter characters ('^L') are displayed as a pretty horizontal line that spans the entire width of the window. The new 'whitespace-page-delimiter' face can be -used to customize the appearence. +used to customize the appearance. ** Bookmark @@ -1588,7 +1718,6 @@ is the default. This user option is in sympathy with recentf, and savehist autosave timers. - ** Savehist --- @@ -1958,6 +2087,15 @@ for docstrings where symbols 'nil' and 't' are in quotes. In most cases, having it enabled leads to a large amount of false positives. +--- +*** New function 'checkdoc-batch'. +It checks the buffer in batch mode, prints all found errors +and signals the first found error. + +*** New file-local variable 'lisp-indent-local-overrides'. +This variable can be used to locally override the indent specification +of symbols. + ** IELM --- @@ -1966,6 +2104,14 @@ When you kill the IELM process with 'C-c C-c', the input history is now saved to the file specified by 'ielm-history-file-name', just like when you exit the Emacs session or kill the IELM buffer. +--- +*** New value 'point' for user option 'ielm-dynamic-return'. +When 'ielm-dynamic-return' is set to 'point', typing 'RET' has dynamic +behavior based on whether point is inside an sexp. While point is +inside an sexp typing 'RET' inserts a newline, and otherwise Emacs +proceeds with evaluating the expression. This is useful when +'electric-pair-mode', or a similar automatic pairing mode, is enabled. + ** DocView --- @@ -1996,6 +2142,14 @@ option 'doc-view-djvused-program'. The default value is now 30 seconds, as the old value was too short to allow reading the help text. ++++ +*** Ispell can now save spelling corrections as abbrevs. +In the Ispell command loop, type 'C-u' immediately before selecting a +replacement to toggle whether that correction will be saved as a global +abbrev expansion for its misspelling. The new user option +'ispell-save-corrections-as-abbrevs' determines whether abbrev saving +is enabled by default. + ** Flyspell --- @@ -2023,6 +2177,10 @@ connections after you close remote-file buffers without having to either cherry-pick via 'tramp-cleanup-connection' or clear them all via 'tramp-cleanup-all-connections'. ++++ +*** External methods can now be used in multi-hop connections. +This is implemented for 'tramp-sh' methods, like "/scp:user@host|sudo::". + +++ *** New command 'tramp-dired-find-file-with-sudo'. This command, bound to '@' in Dired, visits the file or directory on the @@ -2126,15 +2284,19 @@ one as before. This makes them different from 'vc-diff' and *** 'diff-apply-hunk' now supports creating and deleting files. +++ -*** 'diff-apply-hunk' and 'diff-apply-buffer' now consider the region. -If the region is active, these commands now apply all hunks that the -region overlaps. Otherwise, they have their existing behavior. +*** Diff mode's application and killing commands now consider the region. +If the region is active, 'diff-apply-hunk', 'diff-apply-buffer' and +'diff-hunk-kill' now apply or kill all hunks that the region overlaps. +Otherwise, they have their existing behavior. +++ *** 'diff-apply-buffer' can reverse-apply. With a prefix argument, it now reverse-applies hunks. This matches the existing prefix argument to 'diff-apply-hunk'. +--- +*** 's' is now bound to 'diff-split-hunk' in read-only Diff mode buffers. + ** Ediff +++ @@ -2346,6 +2508,12 @@ When point is between indentation, the command deletes the text in the region and deactivates the mark if Transient Mark mode is enabled, the mark is active, and prefix argument is 1. +--- +*** 'python-eldoc-function-timeout' now accepts floating-point numbers. +To allow for finer-grained adjustment of timeout for +'python-eldoc-function', 'python-eldoc-function-timeout' now accepts +floating-point numbers as well as integers. + ** Tmm Menubar --- @@ -2355,7 +2523,7 @@ The hardcoded '^' shortcut gets you back to the previous menu. --- *** New user option 'tmm-shortcut-inside-entry'. When non-nil, highlight the character shortcut in the menu entry's -string instead of preprending it and 'tmm-mid-prompt' to said entry. +string instead of prepending it and 'tmm-mid-prompt' to said entry. ** Foldout @@ -2401,6 +2569,25 @@ appearance of the list can be customized with the new faces ** VC ++++ +*** Printing root branch logs has moved to 'C-x v b L'. +Previously, the command to print the root log for a branch was bound to +'C-x v b l'. It has now been renamed from 'vc-print-branch-log' to +'vc-print-root-branch-log', and bound to 'C-x v b L'. This is more +consistent with the rest of the 'C-x v' keymap, and makes room for a new +fileset-specific branch log command. + +To undo this change you can use + + (keymap-global-set "C-x v b l" #'vc-print-root-branch-log) + (with-eval-after-load 'vc-dir + (keymap-set vc-dir-mode-map "b l" #'vc-print-root-branch-log)) + ++++ +*** New command 'C-x v b l' ('vc-print-fileset-branch-log'). +This command prints the log of VC changes to the current fileset on +another branch. + +++ *** New commands to handle repositories with multiple working trees. Some VCS support more than one working tree with the same backing @@ -2447,8 +2634,15 @@ cloning, or prompts for that, too. When the argument is non-nil, the function switches to a buffer visiting the directory into which the repository was cloned. ++++ +*** 'vc-revert' is now bound to '@' in VC Directory. + ++++ +*** 'vc-revert' is now additionally bound to 'C-x v @'. +This is in addition to 'C-x v u'. + --- -*** 'C-x v u' ('vc-revert') now works on directories listed in VC Directory. +*** 'vc-revert' now works on directories listed in VC Directory. Reverting a directory means reverting changes to all files inside it. +++ @@ -2564,8 +2758,8 @@ relevant buffers before generating the contents of a VC Directory buffer *** New commands to report incoming and outgoing diffs. 'vc-root-diff-incoming' and 'vc-root-diff-outgoing' report diffs of all the changes that would be pulled and would be pushed, respectively. -They are the diff analogues of the existing commands 'vc-log-incoming' -and 'vc-log-outgoing'. +They are the diff analogues of the existing commands +'vc-root-log-incoming' and 'vc-root-log-outgoing'. In particular, 'vc-root-diff-outgoing' is useful as a way to preview your push and ensure that all and only the changes you intended to @@ -2575,12 +2769,15 @@ include were committed and will be pushed. current VC fileset. +++ -*** New commands to report diffs of outstanding changes. -'C-x v B =' ('vc-diff-outgoing-base') and 'C-x v B D' +*** New commands to report information about outstanding changes. +'C-x v T =' ('vc-diff-outgoing-base') and 'C-x v T D' ('vc-root-diff-outgoing-base') report diffs of changes since the merge base with the remote branch, including uncommitted changes. -They are useful to view all outstanding (unmerged, unpushed) changes on -the current branch. +'C-x v T l' ('vc-log-outgoing-base') and 'C-x v T L' +('vc-root-log-outgoing-base') show the corresponding revision logs. +These are useful to view all outstanding (unmerged, unpushed) changes on +the current branch. They are also available as 'T =', 'T D', 'T l' and +'T L' in VC Directory buffers. +++ *** New user option 'vc-use-incoming-outgoing-prefixes'. @@ -2588,16 +2785,16 @@ If this is customized to non-nil, 'C-x v I' and 'C-x v O' become prefix commands, such that the new incoming and outgoing commands have global bindings: -- 'C-x v I L' is bound to 'vc-log-incoming' +- 'C-x v I L' is bound to 'vc-root-log-incoming' - 'C-x v I D' is bound to 'vc-root-diff-incoming' -- 'C-x v O L' is bound to 'vc-log-outgoing' +- 'C-x v O L' is bound to 'vc-root-log-outgoing' - 'C-x v O D' is bound to 'vc-root-diff-outgoing'. +++ *** New display of outgoing revisions count in VC Directory. If there are outgoing revisions, VC Directory now includes a count of how many in its headers, to remind you to push them. -You can disable this by customizing vc-dir-show-outgoing-count to nil. +You can disable this by customizing 'vc-dir-show-outgoing-count' to nil. +++ *** New user option 'vc-async-checkin' to enable async checkin operations. @@ -2671,9 +2868,36 @@ View mode, copies to the kill ring the ID of the revision at point in the log entry. If there are marked revisions, it copies the IDs of those, instead. +--- +*** New commands 'vc-print-change-log' and 'vc-print-root-change-log'. +These are just like 'vc-print-log' and 'vc-print-root-log' except that +they have a different prefix argument that some users may prefer. +With a prefix argument, these commands prompt for a branch, tag or other +reference to a revision to log, and a maximum number of revisions to +print. If you find this prefix argument more useful, or more mnemonic, +than the prefix arguments that 'vc-print-log' and 'vc-print-root-log' +already have, consider replacing the default global bindings, like this: + + (keymap-global-set "C-x v l" #'vc-print-change-log) + (keymap-global-set "C-x v L" #'vc-print-root-change-log) + --- *** New command alias 'vc-restore' for 'vc-revert'. +--- +*** The 'diff-restrict-view' command is disabled by default. +This command is Diff mode's specialized 'narrow-to-region'. +'narrow-to-region' has long been disabled by default, so for +consistency, 'diff-restrict-view' is now too. +To enable it again, use 'M-x enable-command'. + +--- +*** 'C-x v !' has its own input history. + +--- +*** 'C-u C-x v +' and 'C-u C-x v P' for Git have an input history. +This was already in place for Mercurial. + ** Package +++ @@ -2709,6 +2933,11 @@ When called from Lisp, it now only accepts a symbol. When invoking the command in a Dired buffer with marked files, the command will only copy those files. +--- +*** 'package-isolate' can now also install packages. +If a package is missing, 'package-isolate' will fetch the missing +tarballs and prepare them to be activated in the sub-process. + +++ *** package-x.el is now obsolete. @@ -2732,6 +2961,14 @@ packages. --- *** Uninstalling a package now removes its directory from 'load-path'. ++++ +*** Packages can be reviewed before installation or upgrade. +The user option 'package-review-policy' can configure which packages +the user should be allowed to review before any processing takes place. +The package review can include reading the downloaded source code, +presenting a diff between the downloaded code and a previous +installation or displaying a ChangeLog. + ** Rcirc +++ @@ -2809,7 +3046,7 @@ used to write notes. --- *** New handler that appends remember data in directory. The 'remember-append-in-data-directory' handler appends remember data in -a file, that file being choosen by the user through the minibuffer. +a file, that file being chosen by the user through the minibuffer. --- *** New prefix map for remember commands. @@ -2842,6 +3079,10 @@ Meant to be given a global binding convenient to the user. Example: ** Icomplete +*** New key 'M-j' for 'icomplete-mode' and 'icomplete-vertical-mode'. +Like 'M-j' in 'fido-mode', it can exit the minibuffer with a selected +candidate even when 'icomplete-show-matches-on-no-input' is non-nil. + *** New user options for 'icomplete-vertical-mode'. New user options have been added to enhance 'icomplete-vertical-mode': @@ -3138,6 +3379,11 @@ each refresh. The sort direction can be controlled by using a cons cell of a format string and a boolean. Alternatively, a sorting function can be provided directly. +--- +*** New user option 'display-time-help-echo-format'. +This option controls the format of the help echo when hovering over the +time. + ** Fill +++ @@ -3248,7 +3494,7 @@ the source, or to 'antlr-v3' otherwise. *** New command 'antlr-v4-mode' is a derived mode of 'antlr-mode'. It sets 'antlr-tool-version' to value 'antlr-v4', and is automatically -used for files with extension "g4". +used for files with extension ".g4". *** The variable 'antlr-language' is now used more generally. The variable has a symbol as value which determines which of the @@ -3261,8 +3507,8 @@ ObjC, Python and Ruby, additional to Java and Cpp. *** New user option 'antlr-run-tool-on-buffer-file'. Command 'antlr-run-tool' now usually runs on the file for the current -buffer. Customize this user option to have value ' nil' to get the -previous behavior back. +buffer. Customize this user option to nil to get the previous behavior +back. ** Hi Lock @@ -3272,6 +3518,10 @@ If an active region exists, the commands 'hi-lock-line-face-buffer' and 'hi-lock-face-phrase-buffer' now use its contents as their default value. Previously, only 'hi-lock-face-buffer' supported this. +** Shadowfile + +*** 'shadow-info-buffer' and 'shadow-todo-buffer' use ephemeral buffer names now. + * New Modes and Packages in Emacs 31.1 @@ -3311,6 +3561,21 @@ This library provides functions to throttle or debounce Emacs Lisp functions. This is useful for corralling overeager code that is slow and blocks Emacs, or does not provide ways to limit how often it runs. ++++ +** New mode 'system-taskbar-mode'. +This is a global minor mode and companion functions that integrate Emacs +with system GUI taskbars (also called docks or launchers or something +similar) to display a taskbar icon "badge" overlay, a progress bar +report overlay, alert the user that an Emacs session needs attention, +often by flashing or bouncing the Emacs application icon. Supported +capable systems are GNU/Linux via D-Bus, macOS/GNUstep 10.5+, MS-Windows +7+. + +On GNU/Linux systems, shell extensions or similar helpers such as +"dash-to-dock" may be required. See + and +. + * Incompatible Lisp Changes in Emacs 31.1 @@ -3421,6 +3686,12 @@ separator, are also supported. --- ** The obsolete variable 'load-convert-to-unibyte' has been removed. +--- +** The experimental variable 'binary-as-unsigned' has been removed. +Instead of '(let ((binary-as-unsigned t)) (format "%x" N))' you can use +'(format "%x" (logand N MASK))' where MASK is for the desired word size, +e.g., #x3fffffffffffffff for typical Emacs fixnums. + +++ ** The 'exec-path' variable now uses same default PATH as other programs. That is, if the PATH environment variable is unset or empty, 'exec-path' @@ -3432,7 +3703,7 @@ on GNU/Linux systems. The display optimization where the combination 'TAB' characters + 'BACKSPACE' is used to move to a position on a TTY frame is now disabled by default and controlled by this variable; it can be set to non-nil -to keep the old behavior. This change is to accomodate screen +to keep the old behavior. This change is to accommodate screen readers. --- @@ -3465,9 +3736,27 @@ display time or even cause Emacs to hang trying to display such a face. Affected APIs include 'defface', 'set-face-attribute', their callers, and other similar functions. +--- +** 'help-setup-xref' now re-enables the major mode of the Help buffer. +As a result, in many cases the buffer will be read-only afterwards. +This should not cause any trouble as long as the actual buffer +modification takes place inside 'with-help-window' or +'with-output-to-temp-buffer' after the call to 'help-setup-xref'. + +--- +** Xref commands don't automatically suggest to visit a tags table anymore. +When no tags file is loaded, symbol completion just won't provide any +suggestions. So the 'M-?' command now works without a tags table. And +the 'M-.' will show a message describing the several built-in options +that will provide an Xref backend when used. * Lisp Changes in Emacs 31.1 ++++ +** New function 'garbage-collect-heapsize'. +Same as 'garbage-collect' but just returns the info from the last GC +without performing a collection. + +++ ** Improve 'replace-region-contents' to accept more forms of sources. It has been promoted from 'subr-x' to the C code. @@ -3599,12 +3888,23 @@ without marking it as automatically buffer-local. ** The obsolete face attribute ':reverse-video' has been removed. Use ':inverse-video' instead. +** D-Bus + +++ -** Support interactive D-Bus authorization. +*** Support interactive D-Bus authorization. A new ':authorizable t' parameter has been added to 'dbus-call-method' and 'dbus-call-method-asynchronously' to allow the user to interactively authorize the invoked D-Bus method (for example via polkit). ++++ +*** Support D-Bus file descriptor manipulation. +A new ':keep-fd' parameter has been added to 'dbus-call-method' and +'dbus-call-method-asynchronously' to instruct D-Bus to keep a file +descriptor, which has been returned by a method call, internally. The +functions 'dbus--fd-open', 'dbus--fd-close' and 'dbus--registered-fds' +implement managing these file descriptors. See the Info node "(dbus) +File Descriptors" for details. + ** The customization group 'wp' has been removed. It has been obsolete since Emacs 26.1. Use the group 'text' instead. @@ -3613,6 +3913,14 @@ It has been obsolete since Emacs 26.1. Use the group 'text' instead. If supplied, 'string-pixel-width' will use any face remappings from BUFFER when computing the string's width. ++++ +** New function 'truncate-string-pixelwise'. +This function truncates a string to the specified maximum number of +pixels rather than by characters, as in 'truncate-string-to-width', and +respects face remappings if BUFFER is specified. You can also specify +an optional ellipsis string to append, similar to +'truncate-string-to-width'. + --- ** New macro 'with-work-buffer'. This macro is similar to the already existing macro 'with-temp-buffer', @@ -3708,6 +4016,13 @@ Binding 'inhibit-message' to a non-nil value will now suppress both the display of messages and the clearing of the echo area, such as caused by calling 'message' with a nil argument. +--- +** 'minibuffer-message' no longer blocks while displaying message. +'minibuffer-message' now uses a timer to clear the message printed to +the minibuffer, instead of waiting with 'sit-for' and then clearing it. +This makes 'minibuffer-message' usable in Lisp programs which want to +print a message and then continue to perform work. + ** Special Events +++ @@ -3775,6 +4090,26 @@ When the theme is set on PGTK, Android, or MS-Windows systems, variable 'toolkit-theme' as either symbol 'dark' or 'light', but may be extended to encompass other toolkit-specific symbols in the future. +** Progress reporter + ++++ +*** Progress reporter callbacks. +'make-progress-reporter' now accepts optional arguments UPDATE-CALLBACK, +called on progress steps, and DONE-CALLBACK, called when the progress +reporter is done. See the 'make-progress-reporter' docstring for a full +specification of these new optional arguments. + ++++ +*** Progress reporter context. +'make-progress-reporter' now accepts the optional argument CONTEXT, +which if it is the symbol 'async', inhibits updates in the echo area +when it is busy. This is useful, for example, if you want to monitor progress +of an inherently asynchronous command such as 'compile'. + +** Binary format specifications '%b' and '%B' added. +These produce the binary representation of a number. +'%#b' and '%#B' prefix the bits with '0b' and '0B', respectively. + * Changes in Emacs 31.1 on Non-Free Operating Systems diff --git a/etc/NEWS.1-17 b/etc/NEWS.1-17 index 431bf3490a0..793dc2a3014 100644 --- a/etc/NEWS.1-17 +++ b/etc/NEWS.1-17 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 26-Mar-1986 -Copyright (C) 1985-1986, 2006-2025 Free Software Foundation, Inc. +Copyright (C) 1985-1986, 2006-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.18 b/etc/NEWS.18 index 68aba7b00df..bf559981c04 100644 --- a/etc/NEWS.18 +++ b/etc/NEWS.18 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 17-Aug-1988 -Copyright (C) 1988, 2006-2025 Free Software Foundation, Inc. +Copyright (C) 1988, 2006-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.19 b/etc/NEWS.19 index 1cd69144dc5..4d13ee9a923 100644 --- a/etc/NEWS.19 +++ b/etc/NEWS.19 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 1992. -Copyright (C) 1993-1995, 2001, 2006-2025 Free Software Foundation, Inc. +Copyright (C) 1993-1995, 2001, 2006-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.20 b/etc/NEWS.20 index 1aa093f0957..36ccfd64b61 100644 --- a/etc/NEWS.20 +++ b/etc/NEWS.20 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 -Copyright (C) 1999-2001, 2006-2025 Free Software Foundation, Inc. +Copyright (C) 1999-2001, 2006-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.21 b/etc/NEWS.21 index 2b6b6084c6e..50f195b635a 100644 --- a/etc/NEWS.21 +++ b/etc/NEWS.21 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. 2006-05-31 -Copyright (C) 2000-2025 Free Software Foundation, Inc. +Copyright (C) 2000-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/NEWS.22 b/etc/NEWS.22 index 9d3c5b97dde..41a9718c0f3 100644 --- a/etc/NEWS.22 +++ b/etc/NEWS.22 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.23 b/etc/NEWS.23 index bf89e62cadf..624331f0370 100644 --- a/etc/NEWS.23 +++ b/etc/NEWS.23 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2007-2025 Free Software Foundation, Inc. +Copyright (C) 2007-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.24 b/etc/NEWS.24 index e2614767a61..4a5ac24cfff 100644 --- a/etc/NEWS.24 +++ b/etc/NEWS.24 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2010-2025 Free Software Foundation, Inc. +Copyright (C) 2010-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.25 b/etc/NEWS.25 index 0aa49c68153..1801020619e 100644 --- a/etc/NEWS.25 +++ b/etc/NEWS.25 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2014-2025 Free Software Foundation, Inc. +Copyright (C) 2014-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to bug-gnu-emacs@gnu.org. diff --git a/etc/NEWS.26 b/etc/NEWS.26 index 471c48f1eb6..04909314257 100644 --- a/etc/NEWS.26 +++ b/etc/NEWS.26 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2016-2025 Free Software Foundation, Inc. +Copyright (C) 2016-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. diff --git a/etc/NEWS.27 b/etc/NEWS.27 index d3f47a356a7..cd8c7d1ec9f 100644 --- a/etc/NEWS.27 +++ b/etc/NEWS.27 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2017-2025 Free Software Foundation, Inc. +Copyright (C) 2017-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. diff --git a/etc/NEWS.28 b/etc/NEWS.28 index cf61e762c88..b8fcc731b19 100644 --- a/etc/NEWS.28 +++ b/etc/NEWS.28 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2019-2025 Free Software Foundation, Inc. +Copyright (C) 2019-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. diff --git a/etc/NEWS.29 b/etc/NEWS.29 index 00641ef1e16..378e5ad48a2 100644 --- a/etc/NEWS.29 +++ b/etc/NEWS.29 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2021-2025 Free Software Foundation, Inc. +Copyright (C) 2021-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. diff --git a/etc/NEWS.30 b/etc/NEWS.30 index dfe6c5cafe6..3789456f941 100644 --- a/etc/NEWS.30 +++ b/etc/NEWS.30 @@ -1,6 +1,6 @@ GNU Emacs NEWS -- history of user-visible changes. -Copyright (C) 2022-2025 Free Software Foundation, Inc. +Copyright (C) 2022-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Emacs bug reports to 'bug-gnu-emacs@gnu.org'. @@ -2807,7 +2807,7 @@ parsers with that tag. Note that passing nil as tag doesn't mean return all parsers, but rather "all parsers with no tags". *** New variable 'treesit-primary-parser'. -This variable should be set by multi-langauge major modes before calling +This variable should be set by multi-language major modes before calling 'treesit-major-mode-setup', in order for tree-sitter integration functionalities to operate correctly. diff --git a/etc/NEXTSTEP b/etc/NEXTSTEP index 13b7c11e738..58726c0cc8b 100644 --- a/etc/NEXTSTEP +++ b/etc/NEXTSTEP @@ -1,4 +1,4 @@ -Copyright (C) 2008-2025 Free Software Foundation, Inc. +Copyright (C) 2008-2026 Free Software Foundation, Inc. See the end of the file for license conditions. This file contains information about GNU Emacs on "Nextstep" platforms. diff --git a/etc/NXML-NEWS b/etc/NXML-NEWS index 5bb887063ce..c7042115394 100644 --- a/etc/NXML-NEWS +++ b/etc/NXML-NEWS @@ -1,4 +1,4 @@ -Copyright (C) 2007-2025 Free Software Foundation, Inc. +Copyright (C) 2007-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS index 1a73eea5c91..3302f50ec69 100644 --- a/etc/ORG-NEWS +++ b/etc/ORG-NEWS @@ -6,7 +6,7 @@ ORG NEWS -- history of user-visible changes. -*- mode: org; coding: utf-8 -*- #+LINK: msg https://list.orgmode.org/%s/ #+LINK: git https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=%s -Copyright (C) 2012-2025 Free Software Foundation, Inc. +Copyright (C) 2012-2026 Free Software Foundation, Inc. See the end of the file for license conditions. Please send Org bug reports to mailto:emacs-orgmode@gnu.org. @@ -323,7 +323,7 @@ This is no longer the case. ~display-buffer-alist~ is fully obeyed. ~org-switch-to-buffer-other-window~ and ~org-no-popups~ are now deprecated. -*** Asynchronous code evaluatation in ~ob-shell~ +*** Asynchronous code evaluation in ~ob-shell~ Running shell blocks with the ~:session~ header freezes Emacs until execution completes. The new ~:async~ header allows users to continue diff --git a/etc/PROBLEMS b/etc/PROBLEMS index ff9c0105cb3..340e99c0425 100644 --- a/etc/PROBLEMS +++ b/etc/PROBLEMS @@ -1,6 +1,6 @@ Known Problems with GNU Emacs -Copyright (C) 1987-1989, 1993-1999, 2001-2025 Free Software Foundation, +Copyright (C) 1987-1989, 1993-1999, 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -1382,6 +1382,19 @@ these problems by disabling XIM in your X resources: Emacs.useXIM: false +** When the compose key is pressed, a small window appears that won't go away + +In some circumstances, pressing the compose key under X pops up a small +character-selection window next to the cursor, which can be moved but +not closed; it disappears when some window manager operation is +performed, like creating or deleting a window. You can prevent this +window from appearing by completely disabling the X input method (XIM). +If this is acceptable to you, you should set the 'XMODIFIERS' +environment variable to the value '@im=none', and export it before +calling Emacs, for example by invoking Emacs like so: + + env XMODIFIERS=@im=none emacs + ** On Haiku, BeCJK doesn't work properly with Emacs Some popular Haiku input methods such BeCJK are known to behave badly diff --git a/etc/README b/etc/README index f7187c0e084..94676cfb226 100644 --- a/etc/README +++ b/etc/README @@ -7,5 +7,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: emacs.icon Author: Sun Microsystems, Inc - Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1999, 2001-2026 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/TERMS b/etc/TERMS index 8caa6f39197..7835e09715f 100644 --- a/etc/TERMS +++ b/etc/TERMS @@ -1,4 +1,4 @@ -Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. +Copyright (C) 1999, 2001-2026 Free Software Foundation, Inc. See the end of the file for copying permissions. This file describes what you must or might want to do to termcap entries diff --git a/etc/TODO b/etc/TODO index 40cfbbb85d7..2ee6b0e8eb1 100644 --- a/etc/TODO +++ b/etc/TODO @@ -1,6 +1,6 @@ Emacs TODO List -*-outline-*- -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/etc/charsets/README b/etc/charsets/README index 1ad5b6335a9..a751f817f57 100644 --- a/etc/charsets/README +++ b/etc/charsets/README @@ -1,6 +1,6 @@ # README file for charset mapping files in this directory. -# Copyright (C) 2003-2025 Free Software Foundation, Inc. +# Copyright (C) 2003-2026 Free Software Foundation, Inc. # Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 # National Institute of Advanced Industrial Science and Technology (AIST) # Registration Number H13PRO009 diff --git a/etc/compilation.txt b/etc/compilation.txt index 39d9c3a923c..c2a0967c6a5 100644 --- a/etc/compilation.txt +++ b/etc/compilation.txt @@ -735,7 +735,7 @@ Compilation segmentation fault at Thu Jul 13 10:55:49 Compilation finished at Thu Jul 21 15:02:15 -Copyright (C) 2004-2025 Free Software Foundation, Inc. +Copyright (C) 2004-2026 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/edt-user.el b/etc/edt-user.el index 6108893272c..033e6067a0e 100644 --- a/etc/edt-user.el +++ b/etc/edt-user.el @@ -1,6 +1,6 @@ ;;; edt-user.el --- Sample user customizations for Emacs EDT emulation -*- lexical-binding: t -*- -;; Copyright (C) 1986, 1992-1993, 2000-2025 Free Software Foundation, +;; Copyright (C) 1986, 1992-1993, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Kevin Gallagher diff --git a/etc/emacs-buffer.gdb b/etc/emacs-buffer.gdb index 2615cd87408..73bb71644b0 100644 --- a/etc/emacs-buffer.gdb +++ b/etc/emacs-buffer.gdb @@ -1,6 +1,6 @@ # emacs-buffer.gdb --- gdb macros for recovering buffers from emacs coredumps -# Copyright (C) 2005-2025 Free Software Foundation, Inc. +# Copyright (C) 2005-2026 Free Software Foundation, Inc. # Author: Noah Friedman # Created: 2005-04-28 diff --git a/etc/emacs.metainfo.xml b/etc/emacs.metainfo.xml index 8414e9ac6ba..e6f748cd3b0 100644 --- a/etc/emacs.metainfo.xml +++ b/etc/emacs.metainfo.xml @@ -1,5 +1,5 @@ - + org.gnu.emacs GFDL-1.3+ diff --git a/etc/emacs_lldb.py b/etc/emacs_lldb.py index c7cd0577902..2d2dd00c02a 100644 --- a/etc/emacs_lldb.py +++ b/etc/emacs_lldb.py @@ -1,4 +1,4 @@ -# Copyright (C) 2022-2025 Free Software Foundation, Inc. +# Copyright (C) 2022-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/etc/enriched.txt b/etc/enriched.txt index 23b34e26d14..b4559c1d6aa 100644 --- a/etc/enriched.txt +++ b/etc/enriched.txt @@ -259,7 +259,7 @@ it. -Copyright (C) 1995, 1997, 2001-2025 Free Software Foundation, Inc. +Copyright (C) 1995, 1997, 2001-2026 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/forms/forms-d2.el b/etc/forms/forms-d2.el index 5118d960bf8..8241f6f9bb9 100644 --- a/etc/forms/forms-d2.el +++ b/etc/forms/forms-d2.el @@ -1,6 +1,6 @@ ;;; forms-d2.el --- demo forms-mode -*- lexical-binding:t -*- -;; Copyright (C) 1991, 1994-1997, 2001-2025 Free Software Foundation, +;; Copyright (C) 1991, 1994-1997, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Johan Vromans diff --git a/etc/gnus-tut.txt b/etc/gnus-tut.txt index 89fcc988f9a..3dd6e088169 100644 --- a/etc/gnus-tut.txt +++ b/etc/gnus-tut.txt @@ -24,7 +24,7 @@ was done by moi, yours truly, your humble servant, Lars Magne Ingebrigtsen. If you have a WWW browser, you can investigate to your heart's delight at . -;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/etc/grep.txt b/etc/grep.txt index b529034f046..3977cb2b2c7 100644 --- a/etc/grep.txt +++ b/etc/grep.txt @@ -104,7 +104,7 @@ grep -nH -e "xyzxyz" ../info/* * Miscellaneous -Copyright (C) 2005-2025 Free Software Foundation, Inc. +Copyright (C) 2005-2026 Free Software Foundation, Inc. COPYING PERMISSIONS: diff --git a/etc/images/README b/etc/images/README index a439c0c9348..a36f0a8a0ce 100644 --- a/etc/images/README +++ b/etc/images/README @@ -27,19 +27,19 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES File: mh-logo.xpm Author: Satyaki Das - Copyright (C) 2003-2025 Free Software Foundation, Inc. + Copyright (C) 2003-2026 Free Software Foundation, Inc. Files: gnus.pbm Author: Luis Fernandes - Copyright (C) 2003-2025 Free Software Foundation, Inc. + Copyright (C) 2003-2026 Free Software Foundation, Inc. Files: splash.png, splash.svg, splash.pbm, splash.xpm Author: Francesc Rocher - Copyright (C) 2003-2025 Free Software Foundation, Inc. + Copyright (C) 2003-2026 Free Software Foundation, Inc. Files: checked.xpm, unchecked.xpm Author: Chong Yidong - Copyright (C) 2003-2025 Free Software Foundation, Inc. + Copyright (C) 2003-2026 Free Software Foundation, Inc. * The following icons are from GTK+ 2.x. They are not part of Emacs, but diff --git a/etc/images/custom/README b/etc/images/custom/README index 7f1d2e313fb..59533e9c45e 100644 --- a/etc/images/custom/README +++ b/etc/images/custom/README @@ -6,5 +6,5 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES Files: down.xpm down-pushed.xpm right.xpm right-pushed.xpm Author: Juri Linkov -Copyright (C) 2008-2025 Free Software Foundation, Inc. +Copyright (C) 2008-2026 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/images/ezimage/README b/etc/images/ezimage/README index d9521a1436b..456125140df 100644 --- a/etc/images/ezimage/README +++ b/etc/images/ezimage/README @@ -7,5 +7,5 @@ Files: bits.xpm bitsbang.xpm box-minus.xpm box-plus.xpm tag-gt.xpm tag-minus.xpm tag-plus.xpm tag-type.xpm tag-v.xpm tag.xpm unlock.xpm Author: Eric M. Ludlam -Copyright (C) 1999-2025 Free Software Foundation, Inc. +Copyright (C) 1999-2026 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/images/gnus/README b/etc/images/gnus/README index 3e415fdfd7e..77da3eaf637 100644 --- a/etc/images/gnus/README +++ b/etc/images/gnus/README @@ -7,7 +7,7 @@ COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES Files: important.xpm, unimportant.xpm Author: Simon Josefsson -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm describe-group.pbm describe-group.xpm exit-gnus.pbm exit-gnus.xpm @@ -21,11 +21,11 @@ Files: catchup.pbm catchup.xpm cu-exit.pbm cu-exit.xpm unsubscribe.pbm unsubscribe.xpm uu-decode.pbm uu-decode.xpm uu-post.pbm uu-post.xpm Author: Luis Fernandes -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. Files: gnus.png, gnus.svg Author: Francesc Rocher - Copyright (C) 2008-2025 Free Software Foundation, Inc. + Copyright (C) 2008-2026 Free Software Foundation, Inc. * The following icons are from GNOME 2.x. They are not part of Emacs, diff --git a/etc/images/gnus/gnus-pointer.svg b/etc/images/gnus/gnus-pointer.svg index 3252c156be4..7d3822b1d04 100644 --- a/etc/images/gnus/gnus-pointer.svg +++ b/etc/images/gnus/gnus-pointer.svg @@ -1,7 +1,7 @@ + diff --git a/etc/org/README b/etc/org/README index 685396e50a5..af2160bf9d9 100644 --- a/etc/org/README +++ b/etc/org/README @@ -1,7 +1,7 @@ The files OrgOdtContentTemplate.xml and OrgOdtStyles.xml have the following copyright information: -Copyright (C) 2010-2025 Free Software Foundation, Inc. +Copyright (C) 2010-2026 Free Software Foundation, Inc. These files are part of GNU Emacs. diff --git a/etc/ps-prin0.ps b/etc/ps-prin0.ps index 35540d8c1df..c984bd4d0d6 100644 --- a/etc/ps-prin0.ps +++ b/etc/ps-prin0.ps @@ -1,7 +1,7 @@ % === BEGIN ps-print prologue 0 % version: 6.0 -% Copyright (C) 2000-2025 Free Software Foundation, Inc. +% Copyright (C) 2000-2026 Free Software Foundation, Inc. % This file is part of GNU Emacs. diff --git a/etc/ps-prin1.ps b/etc/ps-prin1.ps index d4476cc01fd..802da716b28 100644 --- a/etc/ps-prin1.ps +++ b/etc/ps-prin1.ps @@ -1,7 +1,7 @@ % === BEGIN ps-print prologue 1 % version: 6.1 -% Copyright (C) 2000-2025 Free Software Foundation, Inc. +% Copyright (C) 2000-2026 Free Software Foundation, Inc. % This file is part of GNU Emacs. diff --git a/etc/refcards/Makefile b/etc/refcards/Makefile index 727ed18e2e3..3cc1c9d7a7c 100644 --- a/etc/refcards/Makefile +++ b/etc/refcards/Makefile @@ -1,6 +1,6 @@ ### Makefile for Emacs refcards -## Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +## Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. # diff --git a/etc/refcards/README b/etc/refcards/README index d344f82d3a4..9836961def6 100644 --- a/etc/refcards/README +++ b/etc/refcards/README @@ -1,4 +1,4 @@ -Copyright (C) 2013-2025 Free Software Foundation, Inc. +Copyright (C) 2013-2026 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -82,7 +82,7 @@ it is reproduced here for convenience. File: gnus-logo.eps, gnus-logo.pdf Author: Luis Fernandes - Copyright (C) 2013-2025 Free Software Foundation, Inc. + Copyright (C) 2013-2026 Free Software Foundation, Inc. License: GNU General Public License version 3 or later (see COPYING) diff --git a/etc/refcards/calccard.tex b/etc/refcards/calccard.tex index aeaaddb7ae5..71e54229c39 100644 --- a/etc/refcards/calccard.tex +++ b/etc/refcards/calccard.tex @@ -20,7 +20,7 @@ % Typical command to format: tex calccard.tex % Typical command to print (3 cols): dvips -t landscape calccard.dvi -% Copyright (C) 1987, 1992, 2001--2025 Free Software Foundation, Inc. +% Copyright (C) 1987, 1992, 2001--2026 Free Software Foundation, Inc. % This document 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/etc/refcards/cs-dired-ref.tex b/etc/refcards/cs-dired-ref.tex index 92d355afd91..1d1e41a8b75 100644 --- a/etc/refcards/cs-dired-ref.tex +++ b/etc/refcards/cs-dired-ref.tex @@ -1,6 +1,6 @@ % Reference Card for Dired -*- coding: utf-8 -*- -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Evgeny Roubinchtein % Czech translation: Pavel Janík , March 2001 diff --git a/etc/refcards/cs-refcard.tex b/etc/refcards/cs-refcard.tex index 3eee9ff37ea..764f490a540 100644 --- a/etc/refcards/cs-refcard.tex +++ b/etc/refcards/cs-refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -*- coding: utf-8 -*- -% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software +% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software % Foundation, Inc. % Author: Stephen Gildea diff --git a/etc/refcards/cs-survival.tex b/etc/refcards/cs-survival.tex index f8fe0fd3305..6d41b5d3d84 100644 --- a/etc/refcards/cs-survival.tex +++ b/etc/refcards/cs-survival.tex @@ -1,6 +1,6 @@ % Title: GNU Emacs Survival Card -*- coding: utf-8 -*- -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Włodek Bzyl % Czech translation: Pavel Janík , March 2001 diff --git a/etc/refcards/de-refcard.tex b/etc/refcards/de-refcard.tex index 4ab3c474d7e..b640977aebb 100644 --- a/etc/refcards/de-refcard.tex +++ b/etc/refcards/de-refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -% Copyright (C) 1987, 1993, 1996, 2000--2025 Free Software Foundation, +% Copyright (C) 1987, 1993, 1996, 2000--2026 Free Software Foundation, % Inc. % Author: Stephen Gildea diff --git a/etc/refcards/dired-ref.tex b/etc/refcards/dired-ref.tex index df65c2a5734..97ac0e36f7e 100644 --- a/etc/refcards/dired-ref.tex +++ b/etc/refcards/dired-ref.tex @@ -1,6 +1,6 @@ % Reference Card for Dired -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Evgeny Roubinchtein diff --git a/etc/refcards/emacsver.tex.in b/etc/refcards/emacsver.tex.in index b1061e09c4a..3d09588c782 100644 --- a/etc/refcards/emacsver.tex.in +++ b/etc/refcards/emacsver.tex.in @@ -2,4 +2,4 @@ \def\versionemacs{@majorversion@} % major version of emacs %% This one should not be automatically updated; %% M-x set-copyright in admin.el handles it. -\def\year{2025} % latest copyright year +\def\year{2026} % latest copyright year diff --git a/etc/refcards/es-dired-ref.tex b/etc/refcards/es-dired-ref.tex index d8a065d4692..db02349336e 100644 --- a/etc/refcards/es-dired-ref.tex +++ b/etc/refcards/es-dired-ref.tex @@ -1,6 +1,6 @@ % Reference Card for Dired -% Copyright (C) 2025 Free Software Foundation, Inc. +% Copyright (C) 2025--2026 Free Software Foundation, Inc. % Author: Evgeny Roubinchtein % Spanish translation: Elias Gabriel Perez diff --git a/etc/refcards/es-refcard.tex b/etc/refcards/es-refcard.tex index 22343fe1aeb..b742a7fbd98 100644 --- a/etc/refcards/es-refcard.tex +++ b/etc/refcards/es-refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -% Copyright (C) 2025 Free Software Foundation, Inc. +% Copyright (C) 2025--2026 Free Software Foundation, Inc. % Author: Stephen Gildea % Spanish translation: Elias Gabriel Perez diff --git a/etc/refcards/es-survival.tex b/etc/refcards/es-survival.tex index f0e64717fc4..de5cad7b6a3 100644 --- a/etc/refcards/es-survival.tex +++ b/etc/refcards/es-survival.tex @@ -1,7 +1,7 @@ %&tex % Title: GNU Emacs Survival Card -% Copyright (C) 2025 Free Software Foundation, Inc. +% Copyright (C) 2025--2026 Free Software Foundation, Inc. % Author: Włodek Bzyl % Spanish translation: Elias Gabriel Perez diff --git a/etc/refcards/fr-dired-ref.tex b/etc/refcards/fr-dired-ref.tex index 81e1c94e484..412a469b3c3 100644 --- a/etc/refcards/fr-dired-ref.tex +++ b/etc/refcards/fr-dired-ref.tex @@ -1,6 +1,6 @@ % Reference Card for Dired -*- coding: utf-8 -*- -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Evgeny Roubinchtein % French translation: Eric Jacoboni diff --git a/etc/refcards/fr-refcard.tex b/etc/refcards/fr-refcard.tex index fc9622d2927..4079a84a9bf 100644 --- a/etc/refcards/fr-refcard.tex +++ b/etc/refcards/fr-refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software +% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software % Foundation, Inc. % Author: Stephen Gildea diff --git a/etc/refcards/fr-survival.tex b/etc/refcards/fr-survival.tex index 7de6d6f7611..d8bcef58d6f 100644 --- a/etc/refcards/fr-survival.tex +++ b/etc/refcards/fr-survival.tex @@ -1,7 +1,7 @@ %&tex % Title: GNU Emacs Survival Card -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Włodek Bzyl % French translation: \'Eric Jacoboni , November 2001 diff --git a/etc/refcards/gnus-logo.eps b/etc/refcards/gnus-logo.eps index 98ff7f93c6f..12c32ae05c7 100644 --- a/etc/refcards/gnus-logo.eps +++ b/etc/refcards/gnus-logo.eps @@ -1,5 +1,5 @@ %!PS-Adobe-2.0 EPSF-2.0 -% Copyright (C) 2000-2025 Free Software Foundation, Inc. +% Copyright (C) 2000-2026 Free Software Foundation, Inc. % % Author: Luis Fernandes % diff --git a/etc/refcards/gnus-refcard.tex b/etc/refcards/gnus-refcard.tex index b798296036d..705c342d934 100644 --- a/etc/refcards/gnus-refcard.tex +++ b/etc/refcards/gnus-refcard.tex @@ -120,7 +120,7 @@ %% Gnus logo by Luis Fernandes. \newcommand{\Copyright}{% \begin{center} - Copyright \copyright\ 1995, 2000, 2002--2025 Free Software Foundation, Inc.\\* + Copyright \copyright\ 1995, 2000, 2002--2026 Free Software Foundation, Inc.\\* \end{center} Released under the terms of the GNU General Public License version 3 or later. diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex index 9b3bdddc103..69f67100541 100644 --- a/etc/refcards/orgcard.tex +++ b/etc/refcards/orgcard.tex @@ -21,7 +21,7 @@ \pdflayout=(1l) % Nothing else needs to be changed below this line. -% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software +% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software % Foundation, Inc. % This document is free software: you can redistribute it and/or modify diff --git a/etc/refcards/pdflayout.sty b/etc/refcards/pdflayout.sty index 20e0afe4c31..6b8acf79b1e 100644 --- a/etc/refcards/pdflayout.sty +++ b/etc/refcards/pdflayout.sty @@ -1,4 +1,4 @@ -% Copyright (C) 2007-2025 Free Software Foundation, Inc. +% Copyright (C) 2007-2026 Free Software Foundation, Inc. % This file is part of GNU Emacs. diff --git a/etc/refcards/pl-refcard.tex b/etc/refcards/pl-refcard.tex index af4acf7dd33..f06b5d07f3c 100644 --- a/etc/refcards/pl-refcard.tex +++ b/etc/refcards/pl-refcard.tex @@ -1,7 +1,7 @@ %&mex % Reference Card for GNU Emacs -% Copyright (C) 1999, 2001--2025 Free Software Foundation, Inc. +% Copyright (C) 1999, 2001--2026 Free Software Foundation, Inc. % Author: Stephen Gildea % Polish translation: Włodek Bzyl diff --git a/etc/refcards/pt-br-refcard.tex b/etc/refcards/pt-br-refcard.tex index 4e67652cfbf..97e57d08c23 100644 --- a/etc/refcards/pt-br-refcard.tex +++ b/etc/refcards/pt-br-refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -% Copyright (C) 1987, 1993, 1996--1997, 2002--2004, 2006--2025 Free +% Copyright (C) 1987, 1993, 1996--1997, 2002--2004, 2006--2026 Free % Software Foundation, Inc. % Author: Stephen Gildea diff --git a/etc/refcards/refcard.tex b/etc/refcards/refcard.tex index 20d545271c5..84dab82b967 100644 --- a/etc/refcards/refcard.tex +++ b/etc/refcards/refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software +% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software % Foundation, Inc. % Author: Stephen Gildea diff --git a/etc/refcards/ru-refcard.tex b/etc/refcards/ru-refcard.tex index 58a81677e03..53fa116722e 100644 --- a/etc/refcards/ru-refcard.tex +++ b/etc/refcards/ru-refcard.tex @@ -1,4 +1,4 @@ -% Copyright (C) 1997, 2002--2025 Free Software Foundation, Inc. +% Copyright (C) 1997, 2002--2026 Free Software Foundation, Inc. % Author: Stephen Gildea % Russian translation: Alex Ott @@ -41,7 +41,7 @@ \setlength{\ColThreeWidth}{25mm} \newcommand{\versionemacs}[0]{31} % version of Emacs this is for -\newcommand{\cyear}[0]{2024} % copyright year +\newcommand{\cyear}[0]{2026} % copyright year \newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill \centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc. diff --git a/etc/refcards/sk-dired-ref.tex b/etc/refcards/sk-dired-ref.tex index 80457560617..545da04475e 100644 --- a/etc/refcards/sk-dired-ref.tex +++ b/etc/refcards/sk-dired-ref.tex @@ -1,6 +1,6 @@ % Reference Card for Dired -*- coding: utf-8 -*- -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Evgeny Roubinchtein % Czech translation: Pavel Janík , March 2001 diff --git a/etc/refcards/sk-refcard.tex b/etc/refcards/sk-refcard.tex index e37784be17b..f250e5331bd 100644 --- a/etc/refcards/sk-refcard.tex +++ b/etc/refcards/sk-refcard.tex @@ -1,6 +1,6 @@ % Reference Card for GNU Emacs -*- coding: utf-8 -*- -% Copyright (C) 1987, 1993, 1996--1997, 2001--2025 Free Software +% Copyright (C) 1987, 1993, 1996--1997, 2001--2026 Free Software % Foundation, Inc. % Author: Stephen Gildea diff --git a/etc/refcards/sk-survival.tex b/etc/refcards/sk-survival.tex index 889da9667bf..cf6eeb0fb63 100644 --- a/etc/refcards/sk-survival.tex +++ b/etc/refcards/sk-survival.tex @@ -1,6 +1,6 @@ % Title: GNU Emacs Survival Card -*- coding: utf-8 -*- -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Włodek Bzyl % Czech translation: Pavel Janík , March 2001 diff --git a/etc/refcards/survival.tex b/etc/refcards/survival.tex index 6f13bdbe374..bc90b4b3ce5 100644 --- a/etc/refcards/survival.tex +++ b/etc/refcards/survival.tex @@ -1,7 +1,7 @@ %&tex % Title: GNU Emacs Survival Card -% Copyright (C) 2000--2025 Free Software Foundation, Inc. +% Copyright (C) 2000--2026 Free Software Foundation, Inc. % Author: Włodek Bzyl diff --git a/etc/refcards/viperCard.tex b/etc/refcards/viperCard.tex index 81681791c24..4759ed92d02 100644 --- a/etc/refcards/viperCard.tex +++ b/etc/refcards/viperCard.tex @@ -1,6 +1,6 @@ % ViperCard -- The Reference Card for Viper under GNU Emacs -% Copyright (C) 1995--1997, 2001--2025 Free Software Foundation, Inc. +% Copyright (C) 1995--1997, 2001--2026 Free Software Foundation, Inc. % Author: Michael Kifer (Viper) % Aamod Sane (VIP 4.3) diff --git a/etc/schema/locate.rnc b/etc/schema/locate.rnc index 56f68436afd..04a1873a3da 100644 --- a/etc/schema/locate.rnc +++ b/etc/schema/locate.rnc @@ -1,4 +1,4 @@ -# Copyright (C) 2003-2004, 2007-2025 Free Software Foundation, Inc. +# Copyright (C) 2003-2004, 2007-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/etc/schema/relaxng.rnc b/etc/schema/relaxng.rnc index ecc8d40a221..a9b8a381060 100644 --- a/etc/schema/relaxng.rnc +++ b/etc/schema/relaxng.rnc @@ -1,6 +1,6 @@ # RELAX NG XML syntax expressed in RELAX NG Compact syntax. -# Copyright (C) 2003-2004, 2007-2025 Free Software Foundation, Inc. +# Copyright (C) 2003-2004, 2007-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml index 6701b9b56a6..b245d87cc0a 100644 --- a/etc/schema/schemas.xml +++ b/etc/schema/schemas.xml @@ -1,5 +1,5 @@ - goto-if-not-*-X+1 Y: - ;; (This can pull the loop test to the end of the loop) + ;; + ;; goto(X) Y: ... X: goto-if*(Y) + ;; -> goto-if-not-*(Z) Y: ... X: goto-if*(Y) Z: + ;; + ;; goto(X) Y: ... X: goto-if-nil-else-pop(Y) + ;; -> goto-if-not-nil(Z) nil Y: ... X: goto-if-nil-else-pop(Y) Z: + ;; + ;; where in both cases the first jump may go either + ;; forwards or backwards. The purpose is to move a conditional + ;; branch from the top to the botton of a loop, but it only works + ;; when other transforms have prepared the ground first. ;; ((and (eq (car lap0) 'byte-goto) (eq (car lap1) 'TAG) - (let ((tmp (cdr (memq (cdr lap0) (cdr lap-head))))) + (let* ((tail (cdr (memq (cdr lap0) (cdr lap-head)))) + (branch (car tail))) (and - (eq lap1 (cdar tmp)) - (memq (car (car tmp)) - '( byte-goto byte-goto-if-nil byte-goto-if-not-nil + (eq lap1 (cdr branch)) + (memq (car branch) + '( byte-goto-if-nil byte-goto-if-not-nil byte-goto-if-nil-else-pop)) - (let ((newtag (byte-compile-make-tag))) + (let ((newtag (byte-compile-make-tag)) + (new-jmp (cdr (assq (car branch) + '((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))))) + ;; Rematerialise nil value if needed. + ;; (We can't handle goto-if-not-nil-else-pop + ;; because we wouldn't know which non-nil + ;; constant to push.) + (new-const + (and (eq (car branch) 'byte-goto-if-nil-else-pop) + (cons 'byte-constant + (byte-compile-get-constant nil)))) + ) (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)))) + " %s %s ... %s %s\t-->\t%s %s %s ... %s %s %s" + lap0 lap1 (cdr lap0) branch + (cons new-jmp newtag) (or new-const "") lap1 + (cdr lap0) branch newtag) + (setcdr tail (cons (setcdr lap0 newtag) (cdr tail))) + (when new-const + (setcdr rest (cons new-const (cdr rest)))) + (setcar lap0 new-jmp) (setq keep-going t) t))))) diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el index 47bafbde03e..7e18e8cef57 100644 --- a/lisp/emacs-lisp/byte-run.el +++ b/lisp/emacs-lisp/byte-run.el @@ -1,6 +1,6 @@ ;;; byte-run.el --- byte-compiler support for inlining -*- lexical-binding: t -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Author: Jamie Zawinski ;; Hallvard Furuseth diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index ebbba25d017..949a1a5e517 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -1,6 +1,6 @@ ;;; bytecomp.el --- compilation of Lisp code into byte code -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1992, 1994, 1998, 2000-2025 Free Software +;; Copyright (C) 1985-1987, 1992, 1994, 1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Jamie Zawinski @@ -1620,11 +1620,11 @@ extra args." (while (and (< start len) (string-match (rx "%" - (? (group (+ digit)) "$") ; field - (* (in "+ #0-")) ; flags - (* digit) ; width - (? "." (* digit)) ; precision - (? (group (in "sdioxXefgcS%")))) ; spec + (? (group (+ digit)) "$") ; field + (* (in "+ #0-")) ; flags + (* digit) ; width + (? "." (* digit)) ; precision + (? (group (in "sdibBoxXefgcS%")))) ; spec format-str start)) (let ((field (if (match-beginning 1) (string-to-number (match-string 1 format-str)) @@ -1856,7 +1856,8 @@ It is too wide if it has any lines longer than the largest of ;; The native compiler doesn't use those dynamic docstrings. (not byte-native-compiling) ;; Docstrings can only be dynamic when compiling a file. - byte-compile--\#$) + byte-compile--\#$ + (not (equal doc ""))) ; empty lazy strings are pointless (let* ((byte-pos (with-memoization ;; Reuse a previously written identical docstring. ;; This is not done out of thriftiness but to try and @@ -4078,7 +4079,7 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\"" (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, - ;; but optimisations may have been disabled. + ;; but optimizations may have been disabled. (let ((l (length form))) (cond ((= l 3) @@ -5141,7 +5142,8 @@ binding slots have been popped." (when (stringp doc) (setq rest (byte-compile--list-with-n rest 0 - (byte-compile--docstring doc (nth 0 form) name))))) + (byte-compile--docstring doc (nth 0 form) name))) + (setq form (nconc (take 3 form) rest)))) (pcase-let* ;; `macro' is non-nil if it defines a macro. ;; `fun' is the function part of `arg' (defaults to `arg'). diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el index ce5d990c2f5..60114369d2d 100644 --- a/lisp/emacs-lisp/cconv.el +++ b/lisp/emacs-lisp/cconv.el @@ -1,6 +1,6 @@ ;;; cconv.el --- Closure conversion for statically scoped Emacs Lisp. -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Igor Kuzmin ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/chart.el b/lisp/emacs-lisp/chart.el index 09ce2e763f6..9cdc431cb25 100644 --- a/lisp/emacs-lisp/chart.el +++ b/lisp/emacs-lisp/chart.el @@ -1,6 +1,6 @@ ;;; chart.el --- Draw charts (bar charts, etc) -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Old-Version: 0.2 diff --git a/lisp/emacs-lisp/check-declare.el b/lisp/emacs-lisp/check-declare.el index 733b720095a..146d18d3ee5 100644 --- a/lisp/emacs-lisp/check-declare.el +++ b/lisp/emacs-lisp/check-declare.el @@ -1,6 +1,6 @@ ;;; check-declare.el --- Check declare-function statements -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Glenn Morris ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/checkdoc.el b/lisp/emacs-lisp/checkdoc.el index d32a9b6389d..fd226b89fda 100644 --- a/lisp/emacs-lisp/checkdoc.el +++ b/lisp/emacs-lisp/checkdoc.el @@ -1,6 +1,6 @@ ;;; checkdoc.el --- check documentation strings for style requirements -*- lexical-binding:t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Maintainer: emacs-devel@gnu.org @@ -381,6 +381,9 @@ large number of libraries means it is impractical to fix all of these warnings masse. In almost any other case, setting this to anything but t is likely to be counter-productive.") +(defvar checkdoc--batch-flag nil + "Non-nil in batch mode.") + (defun checkdoc-list-of-strings-p (obj) "Return t when OBJ is a list of strings." (declare (obsolete list-of-strings-p "29.1")) @@ -1063,12 +1066,13 @@ Optional argument INTERACT permits more interactive fixing." (e (checkdoc-rogue-space-check-engine nil nil interact)) (checkdoc-generate-compile-warnings-flag (or take-notes checkdoc-generate-compile-warnings-flag))) - (if (not (called-interactively-p 'interactive)) + (if (not (or (called-interactively-p 'interactive) checkdoc--batch-flag)) e (if e (message "%s" (checkdoc-error-text e)) (checkdoc-show-diagnostics) - (message "Space Check: done."))))) + (if (called-interactively-p 'interactive) + (message "Space Check: done.")))))) ;;;###autoload (defun checkdoc-message-text (&optional take-notes) @@ -1081,7 +1085,7 @@ Optional argument TAKE-NOTES causes all errors to be logged." (checkdoc-generate-compile-warnings-flag (or take-notes checkdoc-generate-compile-warnings-flag))) (setq e (checkdoc-message-text-search)) - (if (not (called-interactively-p 'interactive)) + (if (not (or (called-interactively-p 'interactive) checkdoc--batch-flag)) e (if e (user-error "%s" (checkdoc-error-text e)) @@ -2819,7 +2823,7 @@ function called to create the messages." (defun checkdoc-show-diagnostics () "Display the checkdoc diagnostic buffer in a temporary window." - (if checkdoc-pending-errors + (if (and checkdoc-pending-errors (not checkdoc--batch-flag)) (let* ((b (get-buffer checkdoc-diagnostic-buffer)) (win (if b (display-buffer b)))) (when win @@ -2832,6 +2836,23 @@ function called to create the messages." (setq checkdoc-pending-errors nil) nil))) + +;;;###autoload +(defun checkdoc-batch () + "Check current buffer in batch mode. +Report any errors and signal the first found error." + (when noninteractive + (let ((checkdoc-autofix-flag nil) + (checkdoc--batch-flag t)) + (checkdoc-current-buffer t) + (when checkdoc-pending-errors + (when-let* ((b (get-buffer checkdoc-diagnostic-buffer))) + (with-current-buffer b + (princ (buffer-string))) + (terpri)) + (checkdoc-current-buffer))))) + + (defun checkdoc-get-keywords () "Return a list of package keywords for the current file." (save-excursion diff --git a/lisp/emacs-lisp/cl-extra.el b/lisp/emacs-lisp/cl-extra.el index 0c80400d028..25c5eaa1204 100644 --- a/lisp/emacs-lisp/cl-extra.el +++ b/lisp/emacs-lisp/cl-extra.el @@ -1,6 +1,6 @@ ;;; cl-extra.el --- Common Lisp features, part 2 -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Gillespie ;; Keywords: extensions diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el index ad032e82e9e..320bc4c3d8e 100644 --- a/lisp/emacs-lisp/cl-generic.el +++ b/lisp/emacs-lisp/cl-generic.el @@ -1,6 +1,6 @@ ;;; cl-generic.el --- CLOS-style generic functions for Elisp -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Version: 1.0 @@ -154,17 +154,22 @@ also passed as second argument to SPECIALIZERS-FUNCTION." (:constructor cl--generic-make-method (specializers qualifiers call-con function)) (:predicate nil)) + "Type of `cl-generic' method objects. +FUNCTION holds a function containing the actual code of the method. +SPECIALIZERS holds the list of specializers (as long as the number of +mandatory arguments of the method). +QUALIFIERS holds the list of qualifiers. +CALL-CON indicates the calling convention expected by FUNCTION: +- nil: FUNCTION is just a normal function with no extra arguments for + `call-next-method' or `next-method-p' (which it hence can't use). +- `curried': FUNCTION is a curried function that first takes the + \"next combined method\" and returns the resulting combined method. + It can distinguish `next-method-p' by checking if that next method + is `cl--generic-isnot-nnm-p'. +- t: FUNCTION takes the `call-next-method' function as an extra first + argument." (specializers nil :read-only t :type list) (qualifiers nil :read-only t :type (list-of atom)) - ;; CALL-CON indicates the calling convention expected by FUNCTION: - ;; - nil: FUNCTION is just a normal function with no extra arguments for - ;; `call-next-method' or `next-method-p' (which it hence can't use). - ;; - `curried': FUNCTION is a curried function that first takes the - ;; "next combined method" and return the resulting combined method. - ;; It can distinguish `next-method-p' by checking if that next method - ;; is `cl--generic-isnot-nnm-p'. - ;; - t: FUNCTION takes the `call-next-method' function as its first (extra) - ;; argument. (call-con nil :read-only t :type symbol) (function nil :read-only t :type function)) @@ -181,7 +186,10 @@ also passed as second argument to SPECIALIZERS-FUNCTION." ;; The most important dispatch is last in the list (and the least is first). (dispatches nil :type (list-of (cons natnum (list-of generalizers)))) (method-table nil :type (list-of cl--generic-method)) - (options nil :type list)) + (options nil :type list) + ;; This slot holds the function we put into `symbol-function' before + ;; the actual dispatch function has been computed. + (lazy-function nil)) (defun cl-generic-function-options (generic) "Return the options of the generic function GENERIC." @@ -316,6 +324,9 @@ DEFAULT-BODY, if present, is used as the body of a default method. ,@warnings (defalias ',name (cl-generic-define ',name ',args ',(nreverse options)) + ;; FIXME: This docstring argument is used as circumstantial + ;; evidence that this generic function was defined via + ;; `cl-defgeneric' rather than only `cl-defmethod's. ,(if (consp doc) ;An expression rather than a constant. `(help-add-fundoc-usage ,doc ',args) (help-add-fundoc-usage doc args))) @@ -658,8 +669,6 @@ The set of acceptable TYPEs (also called \"specializers\") is defined ;; Keep the ordering; important for methods with :extra qualifiers. (mapcar (lambda (x) (if (eq x (car me)) method x)) mt))) (let ((sym (cl--generic-name generic)) ; Actual name (for aliases). - ;; FIXME: Try to avoid re-constructing a new function if the old one - ;; is still valid (e.g. still empty method cache)? (gfun (cl--generic-make-function generic))) (cl-pushnew `(cl-defmethod . ,(cl--generic-load-hist-format (cl--generic-name generic) @@ -827,9 +836,30 @@ You might need to add: %S" ,@fixedargs args))))))))) (defun cl--generic-make-function (generic) - (cl--generic-make-next-function generic - (cl--generic-dispatches generic) - (cl--generic-method-table generic))) + "Return the function to put into the `symbol-function' of GENERIC." + ;; The function we want is the one that performs the dispatch, + ;; but that function depends on the set of methods and needs to be + ;; flushed/recomputed when the set of methods changes. + ;; To avoid reconstructing such a method N times for N `cl-defmethod', + ;; we construct the dispatch function lazily: + ;; we first return a "lazy" function, which waits until the + ;; first call to the method to really compute the dispatch function, + ;; at which point we replace the dummy with the real one. + (with-memoization (cl--generic-lazy-function generic) + (lambda (&rest args) + (let* ((real + (cl--generic-make-next-function generic + (cl--generic-dispatches generic) + (cl--generic-method-table generic))) + (sym (cl--generic-name generic)) + (old-adv-cc (get-advertised-calling-convention + (symbol-function sym)))) + (when (listp old-adv-cc) + (set-advertised-calling-convention real old-adv-cc nil)) + (when (symbol-function sym) + (let ((current-load-list nil)) + (defalias sym real))) + (apply real args))))) (defun cl--generic-make-next-function (generic dispatches methods) (let* ((dispatch @@ -855,33 +885,32 @@ This is particularly useful when many different tags select the same set of methods, since this table then allows us to share a single combined-method for all those different tags in the method-cache.") -(define-error 'cl--generic-cyclic-definition "Cyclic definition") - (defun cl--generic-build-combined-method (generic methods) - (if (null methods) - ;; Special case needed to fix a circularity during bootstrap. - (cl--generic-standard-method-combination generic methods) - (let ((f - (with-memoization - ;; FIXME: Since the fields of `generic' are modified, this - ;; hash-table won't work right, because the hashes will change! - ;; It's not terribly serious, but reduces the effectiveness of - ;; the table. - (gethash (cons generic methods) - cl--generic-combined-method-memoization) - (puthash (cons generic methods) :cl--generic--under-construction - cl--generic-combined-method-memoization) - (condition-case nil - (cl-generic-combine-methods generic methods) - ;; Special case needed to fix a circularity during bootstrap. - (cl--generic-cyclic-definition - (cl--generic-standard-method-combination generic methods)))))) - (if (eq f :cl--generic--under-construction) - (signal 'cl--generic-cyclic-definition - (list (cl--generic-name generic))) - f)))) + ;; Since `cl-generic-combine-methods' is itself a generic function, + ;; there is a chicken and egg problem when computing a combined + ;; method for `cl-generic-combine-methods'. + ;; We break such infinite recursion by detecting it and falling + ;; back to `cl--generic-standard-method-combination' when it happens. + ;; FIXME: Since the fields of `generic' are modified, the + ;; `cl--generic-combined-method-memoization' hash-table won't work + ;; right, because the hashes will change! It's not terribly serious, + ;; but reduces the effectiveness of the table. + (let ((key (cons generic methods))) + (pcase (gethash key cl--generic-combined-method-memoization) + (:cl--generic--under-construction + ;; Fallback to the standard method combination. + (setf (gethash key cl--generic-combined-method-memoization) + (cl--generic-standard-method-combination generic methods))) + ('nil + (setf (gethash key cl--generic-combined-method-memoization) + :cl--generic--under-construction) + (let ((f nil)) + (unwind-protect + (setq f (cl-generic-combine-methods generic methods)) + (setf (gethash key cl--generic-combined-method-memoization) f)))) + (f f)))) -(oclosure-define (cl--generic-nnm) +(oclosure-define cl--generic-nnm "Special type for `call-next-method's that just call `no-next-method'.") (defun cl-generic-call-method (generic method &optional fun) @@ -1002,11 +1031,11 @@ The code which extracts the tag should be as fast as possible. The tags should be chosen according to the following rules: - The tags should not be too specific: similar objects which match the same list of specializers should ideally use the same (`eql') tag. - This insures that the cached computation of the applicable + This ensures that the cached computation of the applicable methods for one object can be reused for other objects. - Corollary: objects which don't match any of the relevant specializers should ideally all use the same tag (typically nil). - This insures that this cache does not grow unnecessarily large. + This ensures that this cache does not grow unnecessarily large. - Two different generalizers G1 and G2 should not use the same tag unless they use it for the same set of objects. IOW, if G1.tag(X1) = G2.tag(X2) then G1.tag(X1) = G2.tag(X1) = G1.tag(X2) = G2.tag(X2). @@ -1028,8 +1057,7 @@ those methods.") (unless (ignore-errors (cl-generic-generalizers t)) ;; Temporary definition to let the next defmethod succeed. (fset 'cl-generic-generalizers - (lambda (specializer) - (if (eq t specializer) (list cl--generic-t-generalizer)))) + (lambda (_specializer) (list cl--generic-t-generalizer))) (fset 'cl-generic-combine-methods #'cl--generic-standard-method-combination)) (cl-defmethod cl-generic-generalizers (specializer) diff --git a/lisp/emacs-lisp/cl-indent.el b/lisp/emacs-lisp/cl-indent.el index 5ea7015adf0..630d8161671 100644 --- a/lisp/emacs-lisp/cl-indent.el +++ b/lisp/emacs-lisp/cl-indent.el @@ -1,6 +1,6 @@ ;;; cl-indent.el --- Enhanced lisp-indent mode -*- lexical-binding:t -*- -;; Copyright (C) 1987, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1987, 2000-2026 Free Software Foundation, Inc. ;; Author: Richard Mlynarik ;; Created: July 1987 @@ -169,7 +169,10 @@ the standard Lisp indent package." (get symbol 'common-lisp-indent-function-for-elisp)) (get symbol 'common-lisp-indent-function) (and (not no-compat) - (get symbol 'lisp-indent-function)))) + (let ((local (assq symbol lisp-indent-local-overrides))) + (if local + (cdr local) + (get symbol 'lisp-indent-function)))))) (defun common-lisp-loop-part-indentation (indent-point state) "Compute the indentation of loop form constituents." diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el index 07f37410d3f..8174050cc0c 100644 --- a/lisp/emacs-lisp/cl-lib.el +++ b/lisp/emacs-lisp/cl-lib.el @@ -1,6 +1,6 @@ ;;; cl-lib.el --- Common Lisp extensions for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Gillespie ;; Version: 1.0 diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index 73b3b243643..caa02fb24b2 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -1,6 +1,6 @@ ;;; cl-macs.el --- Common Lisp macros -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Gillespie ;; Old-Version: 2.02 @@ -327,15 +327,16 @@ FORM is of the form (ARGS . BODY)." ;; "manual" parsing. (let ((slen (length simple-args)) (usage-str - ;; Macro expansion can take place in the middle of - ;; apparently harmless computation, so it should not - ;; touch the match-data. - (save-match-data - (help--docstring-quote - (let ((print-gensym nil) (print-quoted t) - (print-escape-newlines t)) - (format "%S" (cons 'fn (cl--make-usage-args - orig-args)))))))) + ;; Macro expansion can take place in the middle of + ;; apparently harmless computation, so it should not + ;; touch the match-data. + (save-match-data + (require 'help) + (help--docstring-quote + (let ((print-gensym nil) (print-quoted t) + (print-escape-newlines t)) + (format "%S" (cons 'fn (cl--make-usage-args + orig-args)))))))) (when (memq '&optional simple-args) (decf slen)) (setq header diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el index 36437b346d2..f6376fbd192 100644 --- a/lisp/emacs-lisp/cl-preloaded.el +++ b/lisp/emacs-lisp/cl-preloaded.el @@ -1,6 +1,6 @@ ;;; cl-preloaded.el --- Preloaded part of the CL library -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc +;; Copyright (C) 2015-2026 Free Software Foundation, Inc ;; Author: Stefan Monnier ;; Package: emacs @@ -296,10 +296,11 @@ (cl-defstruct (built-in-class (:include cl--class) + (:conc-name built-in-class--) (:noinline t) (:constructor nil) (:constructor built-in-class--make - (name docstring parent-types + (name docstring parent-types &optional non-abstract-supertype &aux (parents (mapcar (lambda (type) (or (get type 'cl--class) @@ -308,7 +309,9 @@ (:copier nil)) "Type descriptors for built-in types. The `slots' (and hence `index-table') are currently unused." - ) + ;; As a general rule, built-in types are abstract if-and-only-if they have + ;; other built-in types as subtypes. But there are a few exceptions. + (non-abstract-supertype nil :read-only t)) (defmacro cl--define-built-in-type (name parents &optional docstring &rest slots) ;; `slots' is currently unused, but we could make it take @@ -322,19 +325,22 @@ The `slots' (and hence `index-table') are currently unused." (let ((predicate (intern-soft (format (if (string-match "-" (symbol-name name)) "%s-p" "%sp") - name)))) + name))) + (nas nil)) (unless (fboundp predicate) (setq predicate nil)) (while (keywordp (car slots)) (let ((kw (pop slots)) (val (pop slots))) (pcase kw (:predicate (setq predicate val)) + (:non-abstract-supertype (setq nas val)) (_ (error "Unknown keyword arg: %S" kw))))) `(progn ,(if predicate `(put ',name 'cl-deftype-satisfies #',predicate) ;; (message "Missing predicate for: %S" name) nil) (put ',name 'cl--class - (built-in-class--make ',name ,docstring ',parents))))) + (built-in-class--make ',name ,docstring ',parents + ,@(if nas '(t))))))) ;; FIXME: Our type DAG has various quirks: ;; - Some `keyword's are also `symbol-with-pos' but that's not reflected @@ -381,6 +387,7 @@ regardless if `funcall' would accept to call them." "Abstract supertype of both `number's and `marker's.") (cl--define-built-in-type symbol atom "Type of symbols." + :non-abstract-supertype t ;; Example of slots we could document. It would be desirable to ;; have some way to extract this from the C code, or somehow keep it ;; in sync (probably not for `cons' and `symbol' but for things like @@ -411,7 +418,8 @@ The size depends on the Emacs version and compilation options. For this build of Emacs it's %dbit." (1+ (logb (1+ most-positive-fixnum))))) (cl--define-built-in-type boolean (symbol) - "Type of the canonical boolean values, i.e. either nil or t.") + "Type of the canonical boolean values, i.e. either nil or t." + :non-abstract-supertype t) (cl--define-built-in-type symbol-with-pos (symbol) "Type of symbols augmented with source-position information.") (cl--define-built-in-type vector (array)) @@ -450,9 +458,9 @@ The fields are used as follows: 5 [iform] The interactive form (if present)") (cl--define-built-in-type byte-code-function (compiled-function closure) "Type of functions that have been byte-compiled.") -(cl--define-built-in-type subr (atom) - "Abstract type of functions compiled to machine code.") -(cl--define-built-in-type module-function (function) +(cl--define-built-in-type subr (atom) ;Beware: not always a function. + "Abstract type of functions and special forms compiled to machine code.") +(cl--define-built-in-type module-function (compiled-function) "Type of functions provided via the module API.") (cl--define-built-in-type interpreted-function (closure) "Type of functions that have not been compiled.") diff --git a/lisp/emacs-lisp/cl-print.el b/lisp/emacs-lisp/cl-print.el index ba699f75b71..1e2458c6d20 100644 --- a/lisp/emacs-lisp/cl-print.el +++ b/lisp/emacs-lisp/cl-print.el @@ -1,6 +1,6 @@ ;;; cl-print.el --- CL-style generic printing -*- lexical-binding: t; -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el index e58f73109a4..8e9207d079f 100644 --- a/lisp/emacs-lisp/cl-seq.el +++ b/lisp/emacs-lisp/cl-seq.el @@ -1,6 +1,6 @@ ;;; cl-seq.el --- Common Lisp features, part 3 -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Gillespie ;; Old-Version: 2.02 @@ -134,7 +134,7 @@ the result of calling FUNCTION with zero arguments. This is the only case where FUNCTION is called with fewer than two arguments. If SEQ contains exactly one element and no :INITIAL-VALUE is -specified, then just return that element wihout calling FUNCTION. +specified, then just return that element without calling FUNCTION. If :FROM-END is non-nil, the reduction occurs from the back of the SEQ moving forward, and the order of arguments to the diff --git a/lisp/emacs-lisp/comp-common.el b/lisp/emacs-lisp/comp-common.el index faf368bb858..d81e800cc36 100644 --- a/lisp/emacs-lisp/comp-common.el +++ b/lisp/emacs-lisp/comp-common.el @@ -1,6 +1,6 @@ ;;; comp-common.el --- common code -*- lexical-binding: t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo ;; Keywords: lisp @@ -272,7 +272,7 @@ Used to modify the compiler environment." (member (function (t list) list)) (memq (function (t list) list)) (memql (function (t list) list)) - (message (function (string &rest t) string)) + (message (function ((or string null) &rest t) (or string null))) (min (function ((or number marker) &rest (or number marker)) number)) (minibuffer-selected-window (function () (or window null))) (minibuffer-window (function (&optional frame) window)) diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el index 9c0dabb5bf0..bd49dc59315 100644 --- a/lisp/emacs-lisp/comp-cstr.el +++ b/lisp/emacs-lisp/comp-cstr.el @@ -1,6 +1,6 @@ ;;; comp-cstr.el --- native compiler constraint library -*- lexical-binding: t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo ;; Keywords: lisp @@ -988,8 +988,8 @@ Non memoized version of `comp-cstr-intersection-no-mem'." (defun comp-cstr-= (dst op1 op2 nm-objs-h) "Constraint OP1 being = OP2 setting the result into DST. -NM-OBJS-H is an hash with all the immediates generated at compile time -which should not be rendered into compiled code." +NM-OBJS-H is an hash with all the immediate values generated at compile +time which should not be rendered into compiled code." (with-comp-cstr-accessors (cl-flet ((relax-cstr (cstr) (setf cstr (copy-sequence cstr)) diff --git a/lisp/emacs-lisp/comp-run.el b/lisp/emacs-lisp/comp-run.el index 5e33b1bc318..3826d8482a6 100644 --- a/lisp/emacs-lisp/comp-run.el +++ b/lisp/emacs-lisp/comp-run.el @@ -1,6 +1,6 @@ ;;; comp-runtime.el --- runtime Lisp native compiler code -*- lexical-binding: t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo ;; Keywords: lisp @@ -454,6 +454,7 @@ bytecode definition was not changed in the meantime)." (unless (listp files) (setf files (list files))) (let ((added-something nil) + (old-comp-files-queue comp-files-queue) file-list) (dolist (file-or-dir files) (cond ((file-directory-p file-or-dir) @@ -472,6 +473,8 @@ bytecode definition was not changed in the meantime)." ;; compilation, so update `comp-files-queue' to reflect that. (unless (or (null load) (eq load (cdr entry))) + ;; IIUC, this is a non-destructive version of + ;; (setcdr entry load)? (setf comp-files-queue (cl-loop for i in comp-files-queue with old = (car entry) @@ -494,6 +497,9 @@ bytecode definition was not changed in the meantime)." out-filename))))))) ;; Perhaps nothing passed `native--compile-async-skip-p'? (when (and added-something + ;; If the queue was already non-empty, then we already + ;; in the middle of processing the queue. + (null old-comp-files-queue) ;; Don't start if there's one already running. (zerop (comp--async-runnings))) (comp--run-async-workers)))) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index cf8bd19580d..b50613b3ac8 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -1,6 +1,6 @@ ;;; comp.el --- compilation of Lisp code into native code -*- lexical-binding: t -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo ;; Keywords: lisp diff --git a/lisp/emacs-lisp/compat.el b/lisp/emacs-lisp/compat.el index 0a3c2dd068c..f687b76d99d 100644 --- a/lisp/emacs-lisp/compat.el +++ b/lisp/emacs-lisp/compat.el @@ -1,6 +1,6 @@ ;;; compat.el --- Stub of the Compatibility Library -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Philip Kaludercic , ;; Daniel Mendler diff --git a/lisp/emacs-lisp/cond-star.el b/lisp/emacs-lisp/cond-star.el index 0883ddc5383..dfb08459506 100644 --- a/lisp/emacs-lisp/cond-star.el +++ b/lisp/emacs-lisp/cond-star.el @@ -1,6 +1,6 @@ ;;; cond-star.el --- Extended form of `cond' construct -*-lexical-binding: t; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Maintainer: Richard Stallman ;; Package: cond-star @@ -58,7 +58,7 @@ normally has the form (CONDITION BODY...). CONDITION can be a Lisp expression, as in `cond'. Or it can be one of `(bind* BINDINGS...)', `(match* PATTERN DATUM)', -or `(pcase* PATTERN DATUM)', +`(bind-and* BINDINGS...)' or `(pcase* PATTERN DATUM)', `(bind* BINDINGS...)' means to bind BINDINGS (as if they were in `let*') for the body of the clause, and all subsequent clauses, since the `bind*' @@ -70,8 +70,9 @@ For its patterns, see `match*'. The condition counts as true if PATTERN matches DATUM. `(bind-and* BINDINGS...)' means to bind BINDINGS (as if they were in -`if-let*') for only the the body of the clause. If any expression -evaluates to nil, the condition counts as false. +`if-let*') for only the the body of the clause. It is always a non-exit +clause. If any expression evaluates to nil, the condition counts as +false. `(pcase* PATTERN DATUM)' means to match DATUM against the pattern PATTERN, using the same pattern syntax as `pcase'. @@ -81,15 +82,18 @@ When a clause's condition is true, and it exits the `cond*' or is the last clause, the value of the last expression in its body becomes the return value of the `cond*' construct. -Non-exit clause: +Non-exit clauses: -If a clause has only one element, or if its first element is -t or a `bind*' clause, this clause never exits the `cond*' construct. +If a clause has only one element, or if its first element is t, a +`bind*' form or a `bind-and*' form, or if it ends with the keyword +`:non-exit', then this clause never exits the `cond*' construct. Instead, control always falls through to the next clause (if any). -All bindings made in CONDITION for the BODY of the non-exit clause -are passed along to the rest of the clauses in this `cond*' construct. +Except for `bind-and*', all bindings made in CONDITION for the BODY of +the non-exit clause are passed along to the rest of the clauses in this +`cond*' construct. -\\[match*] for documentation of the patterns for use in `match*'." +See `match*' for documentation of the patterns for use in `match*' +conditions." ;; FIXME: Want an Edebug declaration. (cond*-convert clauses)) @@ -193,16 +197,18 @@ CONDITION of a `cond*' clause. See `cond*' for details." (and (cdr-safe clause) ;; Starts with t. (or (eq (car clause) t) - ;; Starts with a `bind*' pseudo-form. + ;; Starts with a `bind*' or `bind-and*' pseudo-form. (and (consp (car clause)) - (eq (caar clause) 'bind*)))))) + (memq (caar clause) '(bind* bind-and*))))) + ;; Ends with keyword. + (eq (car (last clause)) :non-exit))) (defun cond*-non-exit-clause-substance (clause) "For a non-exit cond* clause CLAUSE, return its substance. This removes a final keyword if that's what makes CLAUSE non-exit." (cond ((or (null (cdr-safe clause)) ;; either clause has only one element - (and (consp (car clause)) ;; or it starts with `bind*' - (eq (caar clause) 'bind*))) + (and (consp (car clause)) ;; or it starts with `bind*'/`bind-and*' + (memq (caar clause) '(bind* bind-and*)))) clause) ;; Starts with t or a keyword. ;; Include t as the first element of the substance @@ -214,7 +220,7 @@ This removes a final keyword if that's what makes CLAUSE non-exit." (cons t (cdr clause))) ;; Ends with keyword. - ((keywordp (car (last clause))) + ((eq (car (last clause)) :non-exit) ;; Do NOT include the final keyword. (butlast clause)))) diff --git a/lisp/emacs-lisp/copyright.el b/lisp/emacs-lisp/copyright.el index 59a2b166a9d..ac4b71656f2 100644 --- a/lisp/emacs-lisp/copyright.el +++ b/lisp/emacs-lisp/copyright.el @@ -1,6 +1,6 @@ ;;; copyright.el --- update the copyright notice in current buffer -*- lexical-binding: t -*- -;; Copyright (C) 1991-1995, 1998, 2001-2025 Free Software Foundation, +;; Copyright (C) 1991-1995, 1998, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Daniel Pfeiffer diff --git a/lisp/emacs-lisp/crm.el b/lisp/emacs-lisp/crm.el index f1e5e4fc63e..a1c7175fc66 100644 --- a/lisp/emacs-lisp/crm.el +++ b/lisp/emacs-lisp/crm.el @@ -1,6 +1,6 @@ ;;; crm.el --- read multiple strings with completion -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1986, 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1986, 1993-2026 Free Software Foundation, Inc. ;; Author: Sen Nagata ;; Keywords: completion, minibuffer, multiple elements @@ -254,19 +254,12 @@ with empty strings removed." (let* ((map (if require-match crm-local-must-match-map crm-local-completion-map)) - (map (if minibuffer-visible-completions - (make-composed-keymap - (list minibuffer-visible-completions-map - map)) - map)) - (buffer (current-buffer)) + (map (minibuffer-visible-completions--maybe-compose-map map)) input) (minibuffer-with-setup-hook (lambda () (add-hook 'choose-completion-string-functions 'crm--choose-completion-string nil 'local) - (setq-local minibuffer-completion-table #'crm--collection-fn) - (setq-local minibuffer-completion-predicate predicate) (setq-local completion-list-insert-choice-function (lambda (_start _end choice) (let* ((beg (save-excursion @@ -280,14 +273,9 @@ with empty strings removed." (1- (point)) (point-max))))) (completion--replace beg end choice)))) - ;; see completing_read in src/minibuf.c - (setq-local minibuffer-completion-confirm - (unless (eq require-match t) require-match)) - (setq-local minibuffer--require-match require-match) - (setq-local minibuffer--original-buffer buffer) (setq-local crm-completion-table table) - (completions--start-eager-display)) - (setq input (read-from-minibuffer + (use-local-map map)) + (setq input (completing-read (format-spec crm-prompt (let* ((sep (or (get-text-property 0 'separator crm-separator) @@ -295,11 +283,8 @@ with empty strings removed." (desc (or (get-text-property 0 'description crm-separator) (concat "list separated by " sep)))) `((?s . ,sep) (?d . ,desc) (?p . ,prompt)))) - initial-input map nil hist def inherit-input-method))) - ;; If the user enters empty input, `read-from-minibuffer' - ;; returns the empty string, not DEF. - (when (and def (string-equal input "")) - (setq input (if (consp def) (car def) def))) + #'crm--collection-fn predicate + require-match initial-input hist def inherit-input-method))) ;; Remove empty strings in the list of read strings. (split-string input crm-separator t))) diff --git a/lisp/emacs-lisp/cursor-sensor.el b/lisp/emacs-lisp/cursor-sensor.el index 390c1a86717..2562bfa30fb 100644 --- a/lisp/emacs-lisp/cursor-sensor.el +++ b/lisp/emacs-lisp/cursor-sensor.el @@ -1,6 +1,6 @@ ;;; cursor-sensor.el --- React to cursor movement -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: @@ -83,40 +83,45 @@ By convention, this is a list of symbols where each symbol stands for the nil p)) p))) -(defun cursor-sensor-tangible-pos (curpos window &optional second-chance) - (let ((newpos curpos)) - (when (cursor-sensor--intangible-p newpos) - (let ((oldpos (window-parameter window 'cursor-intangible--last-point))) - (cond - ((or (and (integerp oldpos) (< oldpos newpos)) - (eq newpos (point-min))) - (while - (when (< newpos (point-max)) - (setq newpos - (if (get-char-property newpos 'cursor-intangible) - (next-single-char-property-change - newpos 'cursor-intangible nil (point-max)) - (1+ newpos))) - (cursor-sensor--intangible-p newpos)))) - (t ;; (>= oldpos newpos) - (while - (when (> newpos (point-min)) - (setq newpos - (if (get-char-property (1- newpos) 'cursor-intangible) - (previous-single-char-property-change - newpos 'cursor-intangible nil (point-min)) - (1- newpos))) - (cursor-sensor--intangible-p newpos))))) - (if (not (and (or (eq newpos (point-min)) (eq newpos (point-max))) - (cursor-sensor--intangible-p newpos))) - ;; All clear, we're good to go. - newpos - ;; We're still on an intangible position because we bumped - ;; into an intangible BOB/EOB: try to move in the other direction. - (if second-chance - ;; Actually, we tried already and that failed! - curpos - (cursor-sensor-tangible-pos newpos window 'second-chance))))))) +(defun cursor-sensor-tangible-pos (curpos window) + (when (cursor-sensor--intangible-p curpos) + ;; Find the two nearest tangible positions. + (let ((nextpos curpos) + (prevpos curpos) + (oldpos (window-parameter window 'cursor-intangible--last-point))) + (while (if (>= nextpos (point-max)) + (when (cursor-sensor--intangible-p nextpos) (setq nextpos nil)) + (setq nextpos + (if (get-char-property nextpos 'cursor-intangible) + (next-single-char-property-change + nextpos 'cursor-intangible nil (point-max)) + (1+ nextpos))) + (cursor-sensor--intangible-p nextpos))) + (while (if (<= prevpos (point-min)) + (when (cursor-sensor--intangible-p prevpos) (setq prevpos nil)) + (setq prevpos + (if (get-char-property (1- prevpos) 'cursor-intangible) + (previous-single-char-property-change + prevpos 'cursor-intangible nil (point-min)) + (1- prevpos))) + (cursor-sensor--intangible-p prevpos))) + ;; Pick the preferred one depending on the direction of the motion. + ;; Goals, from most important to least important: + ;; - Prefer a tangible position. + ;; - Preserve the overall direction of the motion. + ;; - Prefer shortening the motion over lengthening it. + (cond + ((< oldpos curpos) + (or (and prevpos (< oldpos prevpos) prevpos) ;Prefer shorter motion. + nextpos prevpos)) + ((> oldpos curpos) + (or (and nextpos (> oldpos nextpos) nextpos) ;Prefer shorter motion. + prevpos nextpos)) + (t + (or (and prevpos nextpos + (< (- nextpos curpos) (- curpos prevpos)) + nextpos) + prevpos nextpos)))))) (defun cursor-sensor-move-to-tangible (window) (let* ((curpos (window-point window)) diff --git a/lisp/emacs-lisp/debug-early.el b/lisp/emacs-lisp/debug-early.el index b6fdef00080..02dc275c02f 100644 --- a/lisp/emacs-lisp/debug-early.el +++ b/lisp/emacs-lisp/debug-early.el @@ -1,6 +1,6 @@ ;;; debug-early.el --- Dump a Lisp backtrace without frills -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Alan Mackenzie ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/debug.el b/lisp/emacs-lisp/debug.el index c1aaa1ac623..bcea708c678 100644 --- a/lisp/emacs-lisp/debug.el +++ b/lisp/emacs-lisp/debug.el @@ -1,6 +1,6 @@ ;;; debug.el --- debuggers and related commands for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1986, 1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985-1986, 1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el index 0e9898ceb2a..a59891b55aa 100644 --- a/lisp/emacs-lisp/derived.el +++ b/lisp/emacs-lisp/derived.el @@ -1,7 +1,7 @@ ;;; derived.el --- allow inheritance of major modes -*- lexical-binding: t; -*- ;; (formerly mode-clone.el) -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: David Megginson ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el index 322d295cdb2..cc14696badc 100644 --- a/lisp/emacs-lisp/disass.el +++ b/lisp/emacs-lisp/disass.el @@ -1,6 +1,6 @@ ;;; disass.el --- disassembler for compiled Emacs Lisp code -*- lexical-binding:t -*- -;; Copyright (C) 1986, 1991, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986, 1991, 2002-2026 Free Software Foundation, Inc. ;; Author: Doug Cutting ;; Jamie Zawinski diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 8e51825854a..51f0168d2fb 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -1,6 +1,6 @@ ;;; easy-mmode.el --- easy definition for major and minor modes -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2000-2026 Free Software Foundation, Inc. ;; Author: Georges Brun-Cottan ;; Maintainer: Stefan Monnier diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el index ac31b687dec..acaae698b36 100644 --- a/lisp/emacs-lisp/easymenu.el +++ b/lisp/emacs-lisp/easymenu.el @@ -1,6 +1,6 @@ ;;; easymenu.el --- support the easymenu interface for defining a menu -*- lexical-binding:t -*- -;; Copyright (C) 1994, 1996, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 1996, 1998-2026 Free Software Foundation, Inc. ;; Keywords: emulations ;; Author: Richard Stallman diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el index fc349787c93..5cb781cb39f 100644 --- a/lisp/emacs-lisp/edebug.el +++ b/lisp/emacs-lisp/edebug.el @@ -1,6 +1,6 @@ ;;; edebug.el --- a source-level debugger for Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1988-1995, 1997, 1999-2025 Free Software Foundation, +;; Copyright (C) 1988-1995, 1997, 1999-2026 Free Software Foundation, ;; Inc. ;; Author: Daniel LaLiberte diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el index e2065b65095..97ca2714537 100644 --- a/lisp/emacs-lisp/eieio-base.el +++ b/lisp/emacs-lisp/eieio-base.el @@ -1,6 +1,6 @@ ;;; eieio-base.el --- Base classes for EIEIO. -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: OO, lisp diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el index a88473ee792..019cd8ef516 100644 --- a/lisp/emacs-lisp/eieio-core.el +++ b/lisp/emacs-lisp/eieio-core.el @@ -1,6 +1,6 @@ ;;; eieio-core.el --- Core implementation for eieio -*- lexical-binding:t -*- -;; Copyright (C) 1995-1996, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1996, 1998-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Version: 1.4 diff --git a/lisp/emacs-lisp/eieio-custom.el b/lisp/emacs-lisp/eieio-custom.el index 375a1652d3d..38f70915922 100644 --- a/lisp/emacs-lisp/eieio-custom.el +++ b/lisp/emacs-lisp/eieio-custom.el @@ -1,6 +1,6 @@ ;;; eieio-custom.el --- eieio object customization -*- lexical-binding:t -*- -;; Copyright (C) 1999-2001, 2005, 2007-2025 Free Software Foundation, +;; Copyright (C) 1999-2001, 2005, 2007-2026 Free Software Foundation, ;; Inc. ;; Author: Eric M. Ludlam diff --git a/lisp/emacs-lisp/eieio-datadebug.el b/lisp/emacs-lisp/eieio-datadebug.el index 5ae665a57fb..e0984bab19f 100644 --- a/lisp/emacs-lisp/eieio-datadebug.el +++ b/lisp/emacs-lisp/eieio-datadebug.el @@ -1,6 +1,6 @@ ;;; eieio-datadebug.el --- EIEIO extensions to the data debugger. -*- lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: OO, lisp diff --git a/lisp/emacs-lisp/eieio-opt.el b/lisp/emacs-lisp/eieio-opt.el index c578ca504cd..00d6f43f602 100644 --- a/lisp/emacs-lisp/eieio-opt.el +++ b/lisp/emacs-lisp/eieio-opt.el @@ -1,6 +1,6 @@ ;;; eieio-opt.el --- eieio optional functions (debug, printing, speedbar) -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 1998-2003, 2005, 2008-2025 Free Software +;; Copyright (C) 1996, 1998-2003, 2005, 2008-2026 Free Software ;; Foundation, Inc. ;; Author: Eric M. Ludlam diff --git a/lisp/emacs-lisp/eieio-speedbar.el b/lisp/emacs-lisp/eieio-speedbar.el index eafb6bf04c2..d8dccc2f69f 100644 --- a/lisp/emacs-lisp/eieio-speedbar.el +++ b/lisp/emacs-lisp/eieio-speedbar.el @@ -1,6 +1,6 @@ ;;; eieio-speedbar.el --- Classes for managing speedbar displays. -*- lexical-binding:t -*- -;; Copyright (C) 1999-2002, 2005, 2007-2025 Free Software Foundation, +;; Copyright (C) 1999-2002, 2005, 2007-2026 Free Software Foundation, ;; Inc. ;; Author: Eric M. Ludlam diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el index 7f7b2adde45..396cb912425 100644 --- a/lisp/emacs-lisp/eieio.el +++ b/lisp/emacs-lisp/eieio.el @@ -1,7 +1,7 @@ ;;; eieio.el --- Enhanced Implementation of Emacs Interpreted Objects -*- lexical-binding:t -*- ;;; or maybe Eric's Implementation of Emacs Interpreted Objects -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Old-Version: 1.4 diff --git a/lisp/emacs-lisp/eldoc.el b/lisp/emacs-lisp/eldoc.el index b82ee981eb7..77ff567954f 100644 --- a/lisp/emacs-lisp/eldoc.el +++ b/lisp/emacs-lisp/eldoc.el @@ -1,6 +1,6 @@ ;;; eldoc.el --- Show function arglist or variable docstring in echo area -*- lexical-binding:t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Noah Friedman ;; Keywords: extensions diff --git a/lisp/emacs-lisp/elisp-scope.el b/lisp/emacs-lisp/elisp-scope.el index 81d19af983c..2003b905c85 100644 --- a/lisp/emacs-lisp/elisp-scope.el +++ b/lisp/emacs-lisp/elisp-scope.el @@ -1,6 +1,6 @@ ;;; elisp-scope.el --- Semantic analysis for Elisp symbols -*- lexical-binding: t; -*- -;; Copyright (C) 2025 Free Software Foundation, Inc. +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. ;; Author: Eshel Yaron ;; Keywords: lisp, languages @@ -2277,7 +2277,7 @@ ARGS bound to the analyzed arguments." (elisp-scope-n statements))) (elisp-scope-define-macro-analyzer go (label) - ;; TODO: Change to a local macro defintion induced by `cl-tagbody'. + ;; TODO: Change to a local macro definition induced by `cl-tagbody'. (when-let* ((bare (elisp-scope--sym-bare label)) (pos (alist-get bare elisp-scope-label-alist)) (beg (elisp-scope--sym-pos label))) @@ -2818,12 +2818,12 @@ This function recursively analyzes Lisp forms (HEAD . TAIL), usually starting with a top-level form, by inspecting HEAD at each level: - If HEAD is a symbol with a non-nil `elisp-scope-analyzer' symbol - property, then the value of that property specifies a bespoke analzyer + property, then the value of that property specifies a bespoke analyzer function, AF, that is called as (AF HEAD . TAIL) to analyze the form. See more details about writing analyzer functions below. - If HEAD satisfies `functionp', which means it is a function in the - running Emacs session, analzye the form as a function call. + running Emacs session, analyze the form as a function call. - If HEAD is a safe macro (see `elisp-scope-safe-macro-p'), expand it and analyze the resulting form. diff --git a/lisp/emacs-lisp/elp.el b/lisp/emacs-lisp/elp.el index 784baf55c7b..ab8e46cc78b 100644 --- a/lisp/emacs-lisp/elp.el +++ b/lisp/emacs-lisp/elp.el @@ -1,6 +1,6 @@ ;;; elp.el --- Emacs Lisp Profiler -*- lexical-binding: t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Barry A. Warsaw ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/ert-font-lock.el b/lisp/emacs-lisp/ert-font-lock.el index 0f8e90d747c..6339e2d7296 100644 --- a/lisp/emacs-lisp/ert-font-lock.el +++ b/lisp/emacs-lisp/ert-font-lock.el @@ -1,6 +1,6 @@ ;;; ert-font-lock.el --- ERT Font Lock -*- lexical-binding: t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Vladimir Kazanov ;; Keywords: lisp, tools diff --git a/lisp/emacs-lisp/ert-x.el b/lisp/emacs-lisp/ert-x.el index 98e6b2cb1b6..be4023c350a 100644 --- a/lisp/emacs-lisp/ert-x.el +++ b/lisp/emacs-lisp/ert-x.el @@ -1,6 +1,6 @@ ;;; ert-x.el --- Staging area for experimental extensions to ERT -*- lexical-binding: t -*- -;; Copyright (C) 2008, 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008, 2010-2026 Free Software Foundation, Inc. ;; Author: Lennart Borgman (lennart O borgman A gmail O com) ;; Christian Ohler diff --git a/lisp/emacs-lisp/ert.el b/lisp/emacs-lisp/ert.el index 1ebddf98fe4..3fd222d29b2 100644 --- a/lisp/emacs-lisp/ert.el +++ b/lisp/emacs-lisp/ert.el @@ -1,6 +1,6 @@ ;;; ert.el --- Emacs Lisp Regression Testing -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Christian Ohler ;; Keywords: lisp, tools diff --git a/lisp/emacs-lisp/ewoc.el b/lisp/emacs-lisp/ewoc.el index 54e457ab0e0..387e5d3be5e 100644 --- a/lisp/emacs-lisp/ewoc.el +++ b/lisp/emacs-lisp/ewoc.el @@ -1,6 +1,6 @@ ;;; ewoc.el --- utility to maintain a view of a list of objects in a buffer -*- lexical-binding: t -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Per Cederqvist ;; Inge Wallin diff --git a/lisp/emacs-lisp/faceup.el b/lisp/emacs-lisp/faceup.el index 656ce0c4432..3992b0b384c 100644 --- a/lisp/emacs-lisp/faceup.el +++ b/lisp/emacs-lisp/faceup.el @@ -1,6 +1,6 @@ ;;; faceup.el --- Markup language for faces and font-lock regression testing -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Anders Lindgren ;; Version: 0.0.6 diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index 8cc9455752f..2d89b0f46ec 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -1,6 +1,6 @@ ;;; find-func.el --- find the definition of the Emacs Lisp function near point -*- lexical-binding:t -*- -;; Copyright (C) 1997, 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Jens Petersen ;; Keywords: emacs-lisp, functions, variables diff --git a/lisp/emacs-lisp/float-sup.el b/lisp/emacs-lisp/float-sup.el index b5ee4e34dbb..a70e53a3f95 100644 --- a/lisp/emacs-lisp/float-sup.el +++ b/lisp/emacs-lisp/float-sup.el @@ -1,6 +1,6 @@ ;;; float-sup.el --- define some constants useful for floating point numbers. -*- lexical-binding:t -*- -;; Copyright (C) 1985-1987, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/emacs-lisp/generate-lisp-file.el b/lisp/emacs-lisp/generate-lisp-file.el index 2d63cf49169..c0a411627c0 100644 --- a/lisp/emacs-lisp/generate-lisp-file.el +++ b/lisp/emacs-lisp/generate-lisp-file.el @@ -1,6 +1,6 @@ ;;; generate-lisp-file.el --- utility functions for generated files -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Keywords: maint ;; Package: emacs diff --git a/lisp/emacs-lisp/generator.el b/lisp/emacs-lisp/generator.el index c01e559fd5c..b31a0954ff0 100644 --- a/lisp/emacs-lisp/generator.el +++ b/lisp/emacs-lisp/generator.el @@ -1,6 +1,6 @@ ;;; generator.el --- generators -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Daniel Colascione ;; Keywords: extensions, elisp diff --git a/lisp/emacs-lisp/generic.el b/lisp/emacs-lisp/generic.el index 7259cdb127d..42783047939 100644 --- a/lisp/emacs-lisp/generic.el +++ b/lisp/emacs-lisp/generic.el @@ -1,6 +1,6 @@ ;;; generic.el --- defining simple major modes with comment and font-lock -*- lexical-binding: t; -*- ;; -;; Copyright (C) 1997, 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2001-2026 Free Software Foundation, Inc. ;; ;; Author: Peter Breton ;; Created: Fri Sep 27 1996 diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el index b6c1f2c9f9f..625eaedf844 100644 --- a/lisp/emacs-lisp/gv.el +++ b/lisp/emacs-lisp/gv.el @@ -1,6 +1,6 @@ ;;; gv.el --- generalized variables -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: extensions diff --git a/lisp/emacs-lisp/helper.el b/lisp/emacs-lisp/helper.el index cdbde1c475b..8918a651c78 100644 --- a/lisp/emacs-lisp/helper.el +++ b/lisp/emacs-lisp/helper.el @@ -1,6 +1,6 @@ ;;; helper.el --- utility help package supporting help in electric modes -*- lexical-binding: t; -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: K. Shane Hartman ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/hierarchy.el b/lisp/emacs-lisp/hierarchy.el index 0351ff97256..586c0518d5b 100644 --- a/lisp/emacs-lisp/hierarchy.el +++ b/lisp/emacs-lisp/hierarchy.el @@ -1,6 +1,6 @@ ;;; hierarchy.el --- Library to create and display hierarchical structures -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Damien Cassou ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/icons.el b/lisp/emacs-lisp/icons.el index b01cc76275e..652474aa514 100644 --- a/lisp/emacs-lisp/icons.el +++ b/lisp/emacs-lisp/icons.el @@ -1,6 +1,6 @@ ;;; icons.el --- Handling icons -*- lexical-binding:t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Lars Ingebrigtsen ;; Keywords: icons buttons diff --git a/lisp/emacs-lisp/inline.el b/lisp/emacs-lisp/inline.el index 20d621d87a8..25be0dd9c40 100644 --- a/lisp/emacs-lisp/inline.el +++ b/lisp/emacs-lisp/inline.el @@ -1,6 +1,6 @@ ;;; inline.el --- Define functions by their inliner -*- lexical-binding:t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier @@ -134,7 +134,7 @@ After VARS is handled, BODY is evaluated in the new environment." This is halfway between `defmacro' and `defun'. BODY is used as a blueprint both for the body of the function and for the body of the compiler-macro used to generate the code inlined at each call site. -See Info node `(elisp)Inline Functions for more details. +See Info node `(elisp)Inline Functions' for more details. A (noinline t) in the `declare' form prevents the definition of the compiler macro. This is for the rare case in which you want to use this diff --git a/lisp/emacs-lisp/let-alist.el b/lisp/emacs-lisp/let-alist.el index b79c2e51de9..103e03c777d 100644 --- a/lisp/emacs-lisp/let-alist.el +++ b/lisp/emacs-lisp/let-alist.el @@ -1,6 +1,6 @@ ;;; let-alist.el --- Easily let-bind values of an assoc-list by their names -*- lexical-binding: t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Artur Malabarba ;; Package-Requires: ((emacs "24.1")) diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index 111d512ef59..471b29258e6 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -1,6 +1,6 @@ ;;; lisp-mnt.el --- utility functions for Emacs Lisp maintainers -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index e91587b5b23..c326c110408 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -1,6 +1,6 @@ ;;; lisp-mode.el --- Lisp mode, and its idiosyncratic commands -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1986, 1999-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: lisp, languages @@ -1203,6 +1203,29 @@ STATE is the `parse-partial-sexp' state for current position." t) (= local-definitions-starting-point (point)))))))))) +(defvar-local lisp-indent-local-overrides nil + "An alist of file-local or directory-local indent specifications. + +Each key is a symbol and each value is an indent specification, which +overrides the value of the symbol's `lisp-indent-function' property in +the current buffer. The value can take the same forms as the value of +the property, see Info node `(elisp) Indenting Macros' for details. + +This variable is used by the functions `lisp-indent-function' +and `common-lisp-indent-function'. In case of the latter, the +symbol properties `common-lisp-indent-function-for-elisp' and +`common-lisp-indent-function' take precedence not only over the +`lisp-indent-function' property but also over this variable.") + +(put 'lisp-indent-local-overrides 'safe-local-variable + (lambda (value) + (and (listp value) + (all (lambda (elt) + (and (symbolp (car elt)) + (or (eq (cdr elt) 'defun) + (integerp (cdr elt))))) + value)))) + (defun lisp-indent-function (indent-point state) "This function is the normal value of the variable `lisp-indent-function'. The function `calculate-lisp-indent' calls this to determine @@ -1252,12 +1275,14 @@ Lisp function does not specify a special indentation." ;; inside the innermost containing sexp. (backward-prefix-chars) (current-column)) - (let ((function (buffer-substring (point) - (progn (forward-sexp 1) (point)))) - method) - (setq method (or (function-get (intern-soft function) - 'lisp-indent-function 'macro) - (get (intern-soft function) 'lisp-indent-hook))) + (let* ((function (intern-soft + (buffer-substring (point) + (progn (forward-sexp 1) (point))))) + (local (assq function lisp-indent-local-overrides)) + (method (if local + (cdr local) + (or (function-get function 'lisp-indent-function 'macro) + (get function 'lisp-indent-hook))))) (cond ((or (eq method 'defun) ;; Check whether we are in flet-like form. (lisp--local-defform-body-p state)) diff --git a/lisp/emacs-lisp/lisp.el b/lisp/emacs-lisp/lisp.el index 99305a3c619..5cbd4213028 100644 --- a/lisp/emacs-lisp/lisp.el +++ b/lisp/emacs-lisp/lisp.el @@ -1,6 +1,6 @@ ;;; lisp.el --- Lisp editing commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1994, 2000-2025 Free Software Foundation, +;; Copyright (C) 1985-1986, 1994, 2000-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org @@ -50,7 +50,7 @@ This affects `insert-parentheses' and `insert-pair'." (goto-char (or (scan-sexps (point) arg) (buffer-end arg))) (if (< arg 0) (backward-prefix-chars))) -(defvar forward-sexp-function nil +(defvar forward-sexp-function #'forward-sexp-default-function ;; FIXME: ;; - for some uses, we may want a "sexp-only" version, which only ;; jumps over a well-formed sexp, rather than some dwimish thing @@ -79,9 +79,9 @@ report errors as appropriate for this kind of usage." "No next sexp" "No previous sexp")))) (or arg (setq arg 1)) - (if forward-sexp-function - (funcall forward-sexp-function arg) - (forward-sexp-default-function arg)))) + (funcall (or forward-sexp-function + #'forward-sexp-default-function) + arg))) (defun backward-sexp (&optional arg interactive) "Move backward across one balanced expression (sexp). @@ -147,7 +147,7 @@ This command assumes point is not in a string or comment." "Default function for `forward-list-function'." (goto-char (or (scan-lists (point) arg 0) (buffer-end arg)))) -(defvar forward-list-function nil +(defvar forward-list-function #'forward-list-default-function "If non-nil, `forward-list' delegates to this function. Should take the same arguments and behave similarly to `forward-list'.") @@ -169,9 +169,9 @@ report errors as appropriate for this kind of usage." "No next group" "No previous group")))) (or arg (setq arg 1)) - (if forward-list-function - (funcall forward-list-function arg) - (forward-list-default-function arg)))) + (funcall (or forward-list-function + #'forward-list-default-function) + arg))) (defun backward-list (&optional arg interactive) "Move backward across one balanced group of parentheses. @@ -250,6 +250,8 @@ defined by the current language mode. With ARG, do this that many times. A negative argument means move backward but still to a less deep spot. +Calls `up-list-function' to do the work, if that is non-nil. + If ESCAPE-STRINGS is non-nil (as it is interactively), move out of enclosing strings as well. @@ -289,7 +291,9 @@ On error, location of point is unspecified." (scan-error (point-max))) (forward-comment 1) (point))))))) - (if (null forward-sexp-function) + ;; FIXME: Comparing functions is a code smell. + (if (memq forward-sexp-function + '(nil forward-sexp-default-function)) (goto-char (or (scan-lists (point) inc 1) (buffer-end arg))) (condition-case err diff --git a/lisp/emacs-lisp/loaddefs-gen.el b/lisp/emacs-lisp/loaddefs-gen.el index f061a1dad4f..60d250b564f 100644 --- a/lisp/emacs-lisp/loaddefs-gen.el +++ b/lisp/emacs-lisp/loaddefs-gen.el @@ -1,6 +1,6 @@ ;;; loaddefs-gen.el --- generate loaddefs.el files -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: maint @@ -155,7 +155,10 @@ scanning for autoloads and will be in the `load-path'." ;; employing :autoload-end to omit unneeded forms). (defconst loaddefs--defining-macros '( transient-define-prefix transient-define-suffix transient-define-infix - transient-define-argument transient-define-group)) + transient-define-argument + ;; FIXME: How can this one make sense? It doesn't put anything + ;; into `symbol-function'! + transient-define-group)) (defvar loaddefs--load-error-files nil) (defun loaddefs-generate--make-autoload (form file &optional expansion) @@ -228,12 +231,16 @@ expand)' among their `declare' forms." (member file loaddefs--load-error-files)) (let ((load-path (cons (file-name-directory file) load-path))) (message "loaddefs-gen: loading file %s (for %s)" file car) - (condition-case e (load file) + (condition-case e + ;; Don't load the `.elc' file, in case the file wraps + ;; the macro-definition in `eval-when-compile' (bug#80180). + (let ((load-suffixes '(".el"))) + (load file)) (error (push file loaddefs--load-error-files) ; do not attempt again (warn "loaddefs-gen: load error\n\t%s" e))))) (and (macrop car) - (eq 'expand (function-get car 'autoload-macro)) + (eq 'expand (function-get car 'autoload-macro 'macro)) (setq expand (let ((load-true-file-name file) (load-file-name file)) (macroexpand-1 form))) @@ -245,12 +252,7 @@ expand)' among their `declare' forms." ;; directly. ((memq car loaddefs--defining-macros) (let* ((name (nth 1 form)) - (args (pcase car - ((or 'transient-define-prefix 'transient-define-suffix - 'transient-define-infix 'transient-define-argument - 'transient-define-group) - (nth 2 form)) - (_ t))) + (args (nth 2 form)) (body (nthcdr (or (function-get car 'doc-string-elt) 3) form)) (doc (if (stringp (car body)) (pop body)))) ;; Add the usage form at the end where describe-function-1 @@ -259,18 +261,7 @@ expand)' among their `declare' forms." ;; `define-generic-mode' quotes the name, so take care of that (loaddefs-generate--shorten-autoload `(autoload ,(if (listp name) name (list 'quote name)) - ,file ,doc - ,(or (and (memq car '( transient-define-prefix - transient-define-suffix - transient-define-infix - transient-define-argument - transient-define-group)) - t) - (and (eq (car-safe (car body)) 'interactive) - ;; List of modes or just t. - (or (if (nthcdr 2 (car body)) - (list 'quote (nthcdr 2 (car body))) - t)))))))) + ,file ,doc t)))) ;; For defclass forms, use `eieio-defclass-autoload'. ((eq car 'defclass) diff --git a/lisp/emacs-lisp/macroexp.el b/lisp/emacs-lisp/macroexp.el index e89ad4e17e4..d9ca6f0b19a 100644 --- a/lisp/emacs-lisp/macroexp.el +++ b/lisp/emacs-lisp/macroexp.el @@ -1,6 +1,6 @@ ;;; macroexp.el --- Additional macro-expansion support -*- lexical-binding: t -*- ;; -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: lisp, compiler, macros @@ -469,16 +469,23 @@ Assumes the caller has bound `macroexpand-all-environment'." (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)) - (`(function ,(and f `(lambda . ,_))) - (let ((macroexp--dynvars macroexp--dynvars)) - (macroexp--cons fn - (macroexp--cons (macroexp--all-forms f 2) - nil - (cdr form)) - form))) + (`(,(or 'defvar 'defconst) . ,args) + (if (and (car-safe args) (symbolp (car-safe args))) + (progn + (push (car args) macroexp--dynvars) + (macroexp--all-forms form 2)) + form)) + (`(function . ,rest) + (if (and (eq (car-safe (car-safe rest)) 'lambda) + (null (cdr rest))) + (let ((f (car rest))) + (let ((macroexp--dynvars macroexp--dynvars)) + (macroexp--cons fn + (macroexp--cons (macroexp--all-forms f 2) + nil + (cdr form)) + form))) + form)) (`(,(or 'function 'quote) . ,_) form) (`(,(and fun (or 'let 'let*)) . ,(or `(,bindings . ,body) pcase--dontcare)) @@ -495,82 +502,88 @@ Assumes the caller has bound `macroexpand-all-environment'." (macroexp--all-forms body)) (cdr form)) form))) - (`(while) - (macroexp-warn-and-return - (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) - ;; Fast path for the setq common case. - (let ((new-expr (macroexp--expand-all expr))) - (if (eq new-expr expr) - form - `(,fn ,var ,new-expr)))) + (`(while . ,args) + (if args + (macroexp--all-forms form 1) + (macroexp-warn-and-return + (format-message "missing `while' condition") + `(signal 'wrong-number-of-arguments '(while 0)) + nil 'compile-only form))) + (`(unwind-protect . ,args) + (if (cdr-safe args) + (macroexp--all-forms form 1) + (macroexp-warn-and-return + (format-message "`unwind-protect' without unwind forms") + (macroexp--expand-all (car-safe args)) + (list 'suspicious 'unwind-protect) t form))) (`(setq . ,args) - ;; Normalize to a sequence of (setq SYM EXPR). - ;; Malformed code is translated to code that signals an error - ;; at run time. - (let ((nargs (length args))) - (if (oddp nargs) - (macroexp-warn-and-return - (format-message "odd number of arguments in `setq' form") - `(signal 'wrong-number-of-arguments '(setq ,nargs)) - nil 'compile-only fn) - (let ((assignments nil)) - (while (consp (cdr-safe args)) - (let* ((var (car args)) - (expr (cadr args)) - (new-expr (macroexp--expand-all expr)) - (assignment - (if (and (symbolp var) - (not (booleanp var)) (not (keywordp var))) - `(,fn ,var ,new-expr) - (macroexp-warn-and-return - (format-message "attempt to set %s `%s'" - (if (symbolp var) - "constant" - "non-variable") - var) - (cond - ((keywordp var) - ;; Accept `(setq :a :a)' for compatibility. - `(if (eq ,var ,new-expr) - ,var - (signal 'setting-constant (list ',var)))) - ((symbolp var) - `(signal 'setting-constant (list ',var))) - (t - `(signal 'wrong-type-argument - (list 'symbolp ',var)))) - nil 'compile-only var)))) - (push assignment assignments)) - (setq args (cddr args))) - (cons 'progn (nreverse assignments)))))) - (`(,(and fun `(lambda . ,_)) . ,args) - (macroexp--cons (macroexp--all-forms fun 2) - (macroexp--all-forms args) - form)) + (let ((nargs (length args)) + (var (car-safe args))) + (if (and (= nargs 2) + (symbolp var) + (not (booleanp var)) (not (keywordp var))) + ;; Fast path for the common case. + (let* ((expr (nth 1 args)) + (new-expr (macroexp--expand-all expr))) + (if (eq new-expr expr) + form + `(,fn ,var ,new-expr))) + ;; Normalize to a sequence of (setq SYM EXPR). + ;; Malformed code is translated to code that signals an error + ;; at run time. + (if (oddp nargs) + (macroexp-warn-and-return + (format-message "odd number of arguments in `setq' form") + `(signal 'wrong-number-of-arguments '(setq ,nargs)) + nil 'compile-only fn) + (let ((assignments nil)) + (while (consp (cdr-safe args)) + (let* ((var (car args)) + (expr (cadr args)) + (new-expr (macroexp--expand-all expr)) + (assignment + (if (and (symbolp var) + (not (booleanp var)) + (not (keywordp var))) + `(,fn ,var ,new-expr) + (macroexp-warn-and-return + (format-message "attempt to set %s `%s'" + (if (symbolp var) + "constant" + "non-variable") + var) + (cond + ((keywordp var) + ;; Accept `(setq :a :a)' for compatibility. + ;; FIXME: Why, exactly? It's useless. + `(if (eq ,var ,new-expr) + ,var + (signal 'setting-constant (list ',var)))) + ((symbolp var) + `(signal 'setting-constant (list ',var))) + (t + `(signal 'wrong-type-argument + (list 'symbolp ',var)))) + nil 'compile-only var)))) + (push assignment assignments)) + (setq args (cddr args))) + (cons 'progn (nreverse assignments))))))) (`(funcall ,exp . ,args) (let ((eexp (macroexp--expand-all exp)) (eargs (macroexp--all-forms args))) - (pcase eexp - ;; Rewrite (funcall #'foo bar) to (foo bar), in case `foo' - ;; has a compiler-macro, or to unfold it. - ((and `#',f - (guard (and (symbolp f) - ;; bug#46636 - (not (or (special-form-p f) (macrop f)))))) - (macroexp--expand-all `(,f . ,eargs))) - (`#'(lambda . ,_) - (macroexp--unfold-lambda `(,fn ,eexp . ,eargs))) - (_ `(,fn ,eexp . ,eargs))))) + (if (eq (car-safe eexp) 'function) + (let ((f (cadr eexp))) + (cond + ;; Rewrite (funcall #'foo bar) to (foo bar), in case `foo' + ;; has a compiler-macro, or to unfold it. + ((and (symbolp f) + ;; bug#46636 + (not (or (special-form-p f) (macrop f)))) + (macroexp--expand-all `(,f . ,eargs))) + ((eq (car-safe f) 'lambda) + (macroexp--unfold-lambda `(,fn ,eexp . ,eargs))) + (t `(,fn ,eexp . ,eargs)))) + `(,fn ,eexp . ,eargs)))) (`(funcall . ,_) form) ;bug#53227 (`(,(and func (pred symbolp)) . ,_) (let ((handler (function-get func 'compiler-macro))) @@ -597,6 +610,10 @@ Assumes the caller has bound `macroexpand-all-environment'." newform (macroexp--expand-all form))) (macroexp--expand-all newform)))))) + (`(,(and fun `(lambda . ,_)) . ,args) + (macroexp--cons (macroexp--all-forms fun 2) + (macroexp--all-forms args) + form)) (_ form)))))) ;;;###autoload diff --git a/lisp/emacs-lisp/map-ynp.el b/lisp/emacs-lisp/map-ynp.el index 385bb6f752c..7522d465d61 100644 --- a/lisp/emacs-lisp/map-ynp.el +++ b/lisp/emacs-lisp/map-ynp.el @@ -1,6 +1,6 @@ ;;; map-ynp.el --- general-purpose boolean question-asker -*- lexical-binding:t -*- -;; Copyright (C) 1991-1995, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-1995, 2000-2026 Free Software Foundation, Inc. ;; Author: Roland McGrath ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/map.el b/lisp/emacs-lisp/map.el index fb43f53d5b1..43174df0160 100644 --- a/lisp/emacs-lisp/map.el +++ b/lisp/emacs-lisp/map.el @@ -1,6 +1,6 @@ ;;; map.el --- Map manipulation functions -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Nicolas Petton ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/memory-report.el b/lisp/emacs-lisp/memory-report.el index 8ca7c0e5f0a..8d474269d64 100644 --- a/lisp/emacs-lisp/memory-report.el +++ b/lisp/emacs-lisp/memory-report.el @@ -1,6 +1,6 @@ ;;; memory-report.el --- Short function summaries -*- lexical-binding: t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Keywords: lisp, help diff --git a/lisp/emacs-lisp/multisession.el b/lisp/emacs-lisp/multisession.el index 264516ad509..f3cc4b73338 100644 --- a/lisp/emacs-lisp/multisession.el +++ b/lisp/emacs-lisp/multisession.el @@ -1,6 +1,6 @@ ;;; multisession.el --- Multisession storage for variables -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/emacs-lisp/nadvice.el b/lisp/emacs-lisp/nadvice.el index 1172338e7ca..7421ce079ab 100644 --- a/lisp/emacs-lisp/nadvice.el +++ b/lisp/emacs-lisp/nadvice.el @@ -1,6 +1,6 @@ ;;; nadvice.el --- Light-weight advice primitives for Elisp functions -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: extensions, lisp, tools diff --git a/lisp/emacs-lisp/oclosure.el b/lisp/emacs-lisp/oclosure.el index 19823f44d4c..95b80afe2a6 100644 --- a/lisp/emacs-lisp/oclosure.el +++ b/lisp/emacs-lisp/oclosure.el @@ -1,6 +1,6 @@ ;;; oclosure.el --- Open Closures -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Package: emacs diff --git a/lisp/emacs-lisp/package-activate.el b/lisp/emacs-lisp/package-activate.el new file mode 100644 index 00000000000..e130304be5c --- /dev/null +++ b/lisp/emacs-lisp/package-activate.el @@ -0,0 +1,538 @@ +;;; package-activate.el --- Core of the Emacs Package Manager -*- lexical-binding:t -*- + +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. + +;; Author: Tom Tromey +;; Daniel Hackney +;; Created: 10 Mar 2007 +;; Version: 1.1.0 +;; Keywords: tools +;; Package-Requires: ((tabulated-list "1.0")) + +;; 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 . + +;;; Commentary: + +;; This file contains the core definitions of package.el used to +;; activate packages at startup, as well as other functions that are +;; useful without having to load the entirety of package.el. + +;;; Code: + +(eval-when-compile (require 'cl-lib)) + +(defcustom package-load-list '(all) + "List of packages for `package-activate-all' to make available. +Each element in this list should be a list (NAME VERSION), or the +symbol `all'. The symbol `all' says to make available the latest +installed versions of all packages not specified by other +elements. + +For an element (NAME VERSION), NAME is a package name (a symbol). +VERSION should be t, a string, or nil. +If VERSION is t, the most recent version is made available. +If VERSION is a string, only that version is ever made available. + Any other version, even if newer, is silently ignored. + Hence, the package is \"held\" at that version. +If VERSION is nil, the package is not made available (it is \"disabled\")." + :type '(repeat (choice (const all) + (list :tag "Specific package" + (symbol :tag "Package name") + (choice :tag "Version" + (const :tag "disable" nil) + (const :tag "most recent" t) + (string :tag "specific version"))))) + :risky t + :version "24.1" + :group 'package) + +(defvar package--default-summary "No description available.") + +(define-inline package-vc-p (pkg-desc) + "Return non-nil if PKG-DESC is a VC package." + (inline-letevals (pkg-desc) + (inline-quote (eq (package-desc-kind ,pkg-desc) 'vc)))) + +(cl-defstruct (package-desc + ;; Rename the default constructor from `make-package-desc'. + (:constructor package-desc-create) + ;; Has the same interface as the old `define-package', + ;; which is still used in the "foo-pkg.el" files. Extra + ;; options can be supported by adding additional keys. + (:constructor + package-desc-from-define + (name-string version-string &optional summary requirements + &rest rest-plist + &aux + (name (intern name-string)) + (version (if (eq (car-safe version-string) 'vc) + (version-to-list (cdr version-string)) + (version-to-list version-string))) + (reqs (mapcar (lambda (elt) + (list (car elt) + (version-to-list (cadr elt)))) + (if (eq 'quote (car requirements)) + (nth 1 requirements) + requirements))) + (kind (plist-get rest-plist :kind)) + (archive (plist-get rest-plist :archive)) + (extras (let (alist) + (while rest-plist + (unless (memq (car rest-plist) '(:kind :archive)) + (let ((value (cadr rest-plist))) + (when value + (push (cons (car rest-plist) + (if (eq (car-safe value) 'quote) + (cadr value) + value)) + alist)))) + (setq rest-plist (cddr rest-plist))) + alist))))) + "Structure containing information about an individual package. +Slots: + +`name' Name of the package, as a symbol. + +`version' Version of the package, as a version list. + +`summary' Short description of the package, typically taken from + the first line of the file. + +`reqs' Requirements of the package. A list of (PACKAGE + VERSION-LIST) naming the dependent package and the minimum + required version. + +`kind' The distribution format of the package. Currently, it is + either `single', `tar', or (temporarily only) `dir'. In + addition, there is distribution format `vc', which is handled + by package-vc.el. + +`archive' The name of the archive (as a string) whence this + package came. + +`dir' The directory where the package is installed (if installed), + `builtin' if it is built-in, or nil otherwise. + +`extras' Optional alist of additional keyword-value pairs. + +`signed' Flag to indicate that the package is signed by provider." + name + version + (summary package--default-summary) + reqs + kind + archive + dir + extras + signed) + +;; Pseudo fields. +(defun package-version-join (vlist) + "Return the version string corresponding to the list VLIST. +This is, approximately, the inverse of `version-to-list'. +\(Actually, it returns only one of the possible inverses, since +`version-to-list' is a many-to-one operation.)" + (if (null vlist) + "" + (let ((str-list (list "." (int-to-string (car vlist))))) + (dolist (num (cdr vlist)) + (cond + ((>= num 0) + (push (int-to-string num) str-list) + (push "." str-list)) + ((< num -4) + (error "Invalid version list `%s'" vlist)) + (t + ;; pre, or beta, or alpha + (cond ((equal "." (car str-list)) + (pop str-list)) + ((not (string-match "[0-9]+" (car str-list))) + (error "Invalid version list `%s'" vlist))) + (push (cond ((= num -1) "pre") + ((= num -2) "beta") + ((= num -3) "alpha") + ((= num -4) "snapshot")) + str-list)))) + (if (equal "." (car str-list)) + (pop str-list)) + (apply #'concat (nreverse str-list))))) + +(defun package-desc-full-name (pkg-desc) + "Return full name of package-desc object PKG-DESC. +This is the name of the package with its version appended." + (if (package-vc-p pkg-desc) + (symbol-name (package-desc-name pkg-desc)) + (format "%s-%s" + (package-desc-name pkg-desc) + (package-version-join (package-desc-version pkg-desc))))) + + +;;; Installed packages +;; The following variables store information about packages present in +;; the system. The most important of these is `package-alist'. The +;; command `package-activate-all' is also closely related to this +;; section. + +(defvar package--builtins nil + "Alist of built-in packages. +The actual value is initialized by loading the library +`finder-inf'; this is not done until it is needed, e.g. by the +function `package-built-in-p'. + +Each element has the form (PKG . PACKAGE-BI-DESC), where PKG is a package +name (a symbol) and DESC is a `package--bi-desc' structure.") +(put 'package--builtins 'risky-local-variable t) + +(defvar package-alist nil + "Alist of all packages available for activation. +Each element has the form (PKG . DESCS), where PKG is a package +name (a symbol) and DESCS is a non-empty list of `package-desc' +structures, sorted by decreasing versions. + +This variable is set automatically by `package-load-descriptor', +called via `package-activate-all'. To change which packages are +loaded and/or activated, customize `package-load-list'.") +(put 'package-alist 'risky-local-variable t) + +;;;; Public interfaces for accessing built-in package info + +;;;###autoload +(defvar package-activated-list nil + ;; FIXME: This should implicitly include all builtin packages. + "List of the names of currently activated packages.") +(put 'package-activated-list 'risky-local-variable t) + +;;;; Populating `package-alist'. + +;; The following functions are called on each installed package by +;; `package-load-all-descriptors', which ultimately populates the +;; `package-alist' variable. + +(defun package-process-define-package (exp) + "Process define-package expression EXP and push it to `package-alist'. +EXP should be a form read from a foo-pkg.el file. +Convert EXP into a `package-desc' object using the +`package-desc-from-define' constructor before pushing it to +`package-alist'. + +If there already exists a package by the same name in +`package-alist', insert this object there such that the packages +are sorted with the highest version first." + (when (eq (car-safe exp) 'define-package) + (let* ((new-pkg-desc (apply #'package-desc-from-define (cdr exp))) + (name (package-desc-name new-pkg-desc)) + (version (package-desc-version new-pkg-desc)) + (old-pkgs (assq name package-alist))) + (if (null old-pkgs) + ;; If there's no old package, just add this to `package-alist'. + (push (list name new-pkg-desc) package-alist) + ;; If there is, insert the new package at the right place in the list. + (while + (if (and (cdr old-pkgs) + (version-list-< version + (package-desc-version (cadr old-pkgs)))) + (setq old-pkgs (cdr old-pkgs)) + (push new-pkg-desc (cdr old-pkgs)) + nil))) + new-pkg-desc))) + +(defun package-load-descriptor (pkg-dir) + "Load the package description file in directory PKG-DIR. +Create a new `package-desc' object, add it to `package-alist' and +return it." + (let ((pkg-file (expand-file-name (package--description-file pkg-dir) + pkg-dir)) + (signed-file (concat pkg-dir ".signed"))) + (when (file-exists-p pkg-file) + (with-temp-buffer + (insert-file-contents pkg-file) + (goto-char (point-min)) + (let ((pkg-desc (or (package-process-define-package + (read (current-buffer))) + (error "Can't find define-package in %s" pkg-file)))) + (setf (package-desc-dir pkg-desc) pkg-dir) + (if (file-exists-p signed-file) + (setf (package-desc-signed pkg-desc) t)) + pkg-desc))))) + +(defun package-load-all-descriptors () + "Load descriptors for installed Emacs Lisp packages. +This looks for package subdirectories in `package-user-dir' and +`package-directory-list'. The variable `package-load-list' +controls which package subdirectories may be loaded. + +In each valid package subdirectory, this function loads the +description file containing a call to `define-package', which +updates `package-alist'." + (dolist (dir (cons package-user-dir package-directory-list)) + (when (file-directory-p dir) + (dolist (pkg-dir (directory-files dir t "\\`[^.]")) + (when (file-directory-p pkg-dir) + (package-load-descriptor pkg-dir)))))) + +(defun package--alist () + "Return `package-alist', after computing it if needed." + (or package-alist + (progn (package-load-all-descriptors) + package-alist))) + + +;;; Package activation +;; Section for functions used by `package-activate', which see. + +(defun package-disabled-p (pkg-name version) + "Return whether PKG-NAME at VERSION can be activated. +The decision is made according to `package-load-list'. +Return nil if the package can be activated. +Return t if the package is completely disabled. +Return the max version (as a string) if the package is held at a lower version." + (let ((force (assq pkg-name package-load-list))) + (cond ((null force) (not (memq 'all package-load-list))) + ((null (setq force (cadr force))) t) ; disabled + ((eq force t) nil) + ((stringp force) ; held + (unless (version-list-= version (version-to-list force)) + force)) + (t (error "Invalid element in `package-load-list'"))))) + +(defun package-built-in-p (package &optional min-version) + "Return non-nil if PACKAGE is built-in to Emacs. +Optional arg MIN-VERSION, if non-nil, should be a version list +specifying the minimum acceptable version." + (if (package-desc-p package) ;; was built-in and then was converted + (eq 'builtin (package-desc-dir package)) + (let ((bi (assq package package--builtin-versions))) + (cond + (bi (version-list-<= min-version (cdr bi))) + ((remove 0 min-version) nil) + (t + (require 'finder-inf nil t) ; For `package--builtins'. + (assq package package--builtins)))))) + +(defun package--autoloads-file-name (pkg-desc) + "Return the absolute name of the autoloads file, sans extension. +PKG-DESC is a `package-desc' object." + (expand-file-name + (format "%s-autoloads" (package-desc-name pkg-desc)) + (package-desc-dir pkg-desc))) + +(declare-function info-initialize "info" ()) + +(defvar package--quickstart-pkgs t + "If set to a list, we're computing the set of pkgs to activate.") + +(defun package--add-info-node (pkg-dir) + "Add info node located in PKG-DIR." + (when (file-exists-p (expand-file-name "dir" pkg-dir)) + ;; FIXME: not the friendliest, but simple. + (require 'info) + (defvar Info-directory-list) + (info-initialize) + (add-to-list 'Info-directory-list pkg-dir))) + +(defun package-activate-1 (pkg-desc &optional reload deps) + "Activate package given by PKG-DESC, even if it was already active. +If DEPS is non-nil, also activate its dependencies (unless they +are already activated). +If RELOAD is non-nil, also `load' any files inside the package which +correspond to previously loaded files." + (let* ((name (package-desc-name pkg-desc)) + (pkg-dir (package-desc-dir pkg-desc))) + (unless pkg-dir + (error "Internal error: unable to find directory for `%s'" + (package-desc-full-name pkg-desc))) + (catch 'exit + ;; Activate its dependencies recursively. + ;; FIXME: This doesn't check whether the activated version is the + ;; required version. + (when deps + (dolist (req (package-desc-reqs pkg-desc)) + (unless (package-activate (car req)) + (message "Unable to activate package `%s'.\nRequired package `%s-%s' is unavailable" + name (car req) (package-version-join (cadr req))) + (throw 'exit nil)))) + (if (listp package--quickstart-pkgs) + ;; We're only collecting the set of packages to activate! + (push pkg-desc package--quickstart-pkgs) + (when (or reload (assq name package--builtin-versions)) + (require 'package) + (declare-function package--reload-previously-loaded + "package" (pkg-desc &optional warn)) + + (package--reload-previously-loaded + pkg-desc (unless reload + "Package %S is activated too late. +The following files have already been loaded: %S"))) + (with-demoted-errors "Error loading autoloads: %s" + (load (package--autoloads-file-name pkg-desc) nil t))) + (package--add-info-node pkg-dir) + (push name package-activated-list) + ;; Don't return nil. + t))) + +;;;; `package-activate' + +(defun package--get-activatable-pkg (pkg-name) + ;; Is "activatable" a word? + (let ((pkg-descs (cdr (assq pkg-name package-alist)))) + ;; Check if PACKAGE is available in `package-alist'. + (while + (when pkg-descs + (let ((available-version (package-desc-version (car pkg-descs)))) + (or (package-disabled-p pkg-name available-version) + ;; Prefer a builtin package. + (package-built-in-p pkg-name available-version)))) + (setq pkg-descs (cdr pkg-descs))) + (car pkg-descs))) + +;; This function activates a newer version of a package if an older +;; one was already activated. It also loads a features of this +;; package which were already loaded. +(defun package-activate (package &optional force) + "Activate the package named PACKAGE. +If FORCE is true, (re-)activate it if it's already activated. +Newer versions are always activated, regardless of FORCE." + (let ((pkg-desc (package--get-activatable-pkg package))) + (cond + ;; If no such package is found, maybe it's built-in. + ((null pkg-desc) + (package-built-in-p package)) + ;; If the package is already activated, just return t. + ((and (memq package package-activated-list) (not force)) + t) + ;; Otherwise, proceed with activation. + (t (package-activate-1 pkg-desc nil 'deps))))) + + +;;; Installation -- Local operations +;; This section contains a variety of features regarding installing a +;; package to/from disk. This includes autoload generation, +;; unpacking, compiling, as well as defining a package from the +;; current buffer. + +;;;; Unpacking + +;;;###autoload +(defvar package--activated nil + "Non-nil if `package-activate-all' has been run.") + +;;;###autoload +(progn ;; Make the function usable without loading `package.el'. +(defun package-activate-all () + "Activate all installed packages. +The variable `package-load-list' controls which packages to load." + (setq package--activated t) + (let* ((elc (concat package-quickstart-file "c")) + (qs (if (file-readable-p elc) elc + (if (file-readable-p package-quickstart-file) + package-quickstart-file)))) + ;; The quickstart file presumes that it has a blank slate, + ;; so don't use it if we already activated some packages. + (or (and qs (not (bound-and-true-p package-activated-list)) + ;; Skip `load-source-file-function' which would slow us down by + ;; a factor 2 when loading the .el file (this assumes we were + ;; careful to save this file so it doesn't need any decoding). + (with-demoted-errors "Error during quickstart: %S" + (let ((load-source-file-function nil)) + (unless (boundp 'package-activated-list) + (setq package-activated-list nil)) + (load qs nil 'nomessage) + t))) + (progn + (require 'package) + ;; Silence the "unknown function" warning when this is compiled + ;; inside `loaddefs.el'. + ;; FIXME: We use `with-no-warnings' because the effect of + ;; `declare-function' is currently not scoped, so if we use + ;; it here, we end up with a redefinition warning instead :-) + (with-no-warnings + (package--activate-all))))))) + +(defun package--activate-all () + (dolist (elt (package--alist)) + (condition-case err + (package-activate (car elt)) + ;; Don't let failure of activation of a package arbitrarily stop + ;; activation of further packages. + (error (message "%s" (error-message-string err)))))) + +;;;; Inferring package from current buffer + +(declare-function lm-package-version "lisp-mnt" (&optional file)) + +;;;###autoload +(defun package-installed-p (package &optional min-version) + "Return non-nil if PACKAGE, of MIN-VERSION or newer, is installed. +If PACKAGE is a symbol, it is the package name and MIN-VERSION +should be a version list. + +If PACKAGE is a `package-desc' object, MIN-VERSION is ignored." + (cond + ((package-desc-p package) + (let ((dir (package-desc-dir package))) + (and (stringp dir) + (file-exists-p dir)))) + ((and (not (bound-and-true-p package--initialized)) + (null min-version) + package-activated-list) + ;; We used the quickstart: make it possible to use package-installed-p + ;; even before package is fully initialized. + (or + (memq package package-activated-list) + ;; Also check built-in packages. + (package-built-in-p package min-version))) + (t + (or + (let ((pkg-descs (cdr (assq package (package--alist))))) + (and pkg-descs + (version-list-<= min-version + (package-desc-version (car pkg-descs))))) + ;; Also check built-in packages. + (package-built-in-p package min-version))))) + +;;;###autoload +(defun package-get-version () + "Return the version number of the package in which this is used. +Assumes it is used from an Elisp file placed inside the top-level directory +of an installed ELPA package. +The return value is a string (or nil in case we can't find it). +It works in more cases if the call is in the file which contains +the `Version:' header." + ;; In a sense, this is a lie, but it does just what we want: precomputes + ;; the version at compile time and hardcodes it into the .elc file! + (declare (pure t)) + ;; Hack alert! + (let ((file (or (macroexp-file-name) buffer-file-name))) + (cond + ((null file) nil) + ;; Packages are normally installed into directories named "-", + ;; so get the version number from there. + ((string-match "/[^/]+-\\([0-9]\\(?:[0-9.]\\|pre\\|beta\\|alpha\\|snapshot\\)+\\)/[^/]+\\'" file) + (match-string 1 file)) + ;; For packages run straight from the an elpa.git clone, there's no + ;; "-" in the directory name, so we have to fetch the version + ;; the hard way. + (t + (let* ((pkgdir (file-name-directory file)) + (pkgname (file-name-nondirectory (directory-file-name pkgdir))) + (mainfile (expand-file-name (concat pkgname ".el") pkgdir))) + (unless (file-readable-p mainfile) (setq mainfile file)) + (when (file-readable-p mainfile) + (require 'lisp-mnt) + (lm-package-version mainfile))))))) + +(provide 'package-activate) +;;; package-activate.el ends here diff --git a/lisp/emacs-lisp/package-vc.el b/lisp/emacs-lisp/package-vc.el index 7cb4bfde51a..11ea9d2850f 100644 --- a/lisp/emacs-lisp/package-vc.el +++ b/lisp/emacs-lisp/package-vc.el @@ -1,6 +1,6 @@ ;;; package-vc.el --- Manage packages from VC checkouts -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Philip Kaludercic ;; Maintainer: Philip Kaludercic @@ -74,7 +74,7 @@ the backend nor a repository URL that's recognized via The value must be a member of `vc-handled-backends' that supports the `clone' VC function." - :type vc-cloneable-backends-custom-type + :type vc-clonable-backends-custom-type :version "29.1") (defcustom package-vc-register-as-project t @@ -352,7 +352,7 @@ asynchronously." (when-let* (((null (alist-get :maintainer extras))) (main-file) (maintainers (lm-maintainers main-file))) - ;; Like in `pakcage-buffer-info', for backward + ;; Like in `package-buffer-info', for backward ;; compatibility, use a single cons-cell if there's ;; only one maintainer. (setf (alist-get :maintainer extras) @@ -1086,13 +1086,17 @@ See also `vc-prepare-patch'." (vc-prepare-patch (package-maintainers pkg-desc t) subject revisions))) -(defun package-vc-log-incoming (pkg-desc) - "Call `vc-log-incoming' for the package PKG-DESC." +(defun package-vc-root-log-incoming (pkg-desc) + "Call `vc-root-log-incoming' for the package PKG-DESC." (interactive (list (package-vc--read-package-desc "Incoming log for package: " t))) (let ((default-directory (package-vc--checkout-dir pkg-desc)) (vc-deduce-backend-nonvc-modes t)) - (call-interactively #'vc-log-incoming))) + (call-interactively #'vc-root-log-incoming))) +(define-obsolete-function-alias + 'package-vc-log-incoming + #'package-vc-root-log-incoming + "31.1") (provide 'package-vc) ;;; package-vc.el ends here diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 993216c6881..407c4496d81 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1,6 +1,6 @@ ;;; package.el --- Simple package system for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Tom Tromey ;; Daniel Hackney @@ -143,6 +143,8 @@ ;;; Code: +(require 'package-activate) + (require 'cl-lib) (eval-when-compile (require 'subr-x)) (eval-when-compile (require 'epg)) ;For setf accessors. @@ -184,30 +186,6 @@ your `early-init-file'." :type 'boolean :version "24.1") -(defcustom package-load-list '(all) - "List of packages for `package-activate-all' to make available. -Each element in this list should be a list (NAME VERSION), or the -symbol `all'. The symbol `all' says to make available the latest -installed versions of all packages not specified by other -elements. - -For an element (NAME VERSION), NAME is a package name (a symbol). -VERSION should be t, a string, or nil. -If VERSION is t, the most recent version is made available. -If VERSION is a string, only that version is ever made available. - Any other version, even if newer, is silently ignored. - Hence, the package is \"held\" at that version. -If VERSION is nil, the package is not made available (it is \"disabled\")." - :type '(repeat (choice (const all) - (list :tag "Specific package" - (symbol :tag "Package name") - (choice :tag "Version" - (const :tag "disable" nil) - (const :tag "most recent" t) - (string :tag "specific version"))))) - :risky t - :version "24.1") - (defcustom package-archives `(("gnu" . ,(format "http%s://elpa.gnu.org/packages/" (if (gnutls-available-p) "s" ""))) @@ -459,86 +437,6 @@ synchronously." ;; but keep in mind there could be multiple `package-desc's with the ;; same name. -(defvar package--default-summary "No description available.") - -(define-inline package-vc-p (pkg-desc) - "Return non-nil if PKG-DESC is a VC package." - (inline-letevals (pkg-desc) - (inline-quote (eq (package-desc-kind ,pkg-desc) 'vc)))) - -(cl-defstruct (package-desc - ;; Rename the default constructor from `make-package-desc'. - (:constructor package-desc-create) - ;; Has the same interface as the old `define-package', - ;; which is still used in the "foo-pkg.el" files. Extra - ;; options can be supported by adding additional keys. - (:constructor - package-desc-from-define - (name-string version-string &optional summary requirements - &rest rest-plist - &aux - (name (intern name-string)) - (version (if (eq (car-safe version-string) 'vc) - (version-to-list (cdr version-string)) - (version-to-list version-string))) - (reqs (mapcar (lambda (elt) - (list (car elt) - (version-to-list (cadr elt)))) - (if (eq 'quote (car requirements)) - (nth 1 requirements) - requirements))) - (kind (plist-get rest-plist :kind)) - (archive (plist-get rest-plist :archive)) - (extras (let (alist) - (while rest-plist - (unless (memq (car rest-plist) '(:kind :archive)) - (let ((value (cadr rest-plist))) - (when value - (push (cons (car rest-plist) - (if (eq (car-safe value) 'quote) - (cadr value) - value)) - alist)))) - (setq rest-plist (cddr rest-plist))) - alist))))) - "Structure containing information about an individual package. -Slots: - -`name' Name of the package, as a symbol. - -`version' Version of the package, as a version list. - -`summary' Short description of the package, typically taken from - the first line of the file. - -`reqs' Requirements of the package. A list of (PACKAGE - VERSION-LIST) naming the dependent package and the minimum - required version. - -`kind' The distribution format of the package. Currently, it is - either `single', `tar', or (temporarily only) `dir'. In - addition, there is distribution format `vc', which is handled - by package-vc.el. - -`archive' The name of the archive (as a string) whence this - package came. - -`dir' The directory where the package is installed (if installed), - `builtin' if it is built-in, or nil otherwise. - -`extras' Optional alist of additional keyword-value pairs. - -`signed' Flag to indicate that the package is signed by provider." - name - version - (summary package--default-summary) - reqs - kind - archive - dir - extras - signed) - (defun package--from-builtin (bi-desc) "Create a `package-desc' object from BI-DESC. BI-DESC should be a `package--bi-desc' object." @@ -547,46 +445,6 @@ BI-DESC should be a `package--bi-desc' object." :summary (package--bi-desc-summary bi-desc) :dir 'builtin)) -;; Pseudo fields. -(defun package-version-join (vlist) - "Return the version string corresponding to the list VLIST. -This is, approximately, the inverse of `version-to-list'. -\(Actually, it returns only one of the possible inverses, since -`version-to-list' is a many-to-one operation.)" - (if (null vlist) - "" - (let ((str-list (list "." (int-to-string (car vlist))))) - (dolist (num (cdr vlist)) - (cond - ((>= num 0) - (push (int-to-string num) str-list) - (push "." str-list)) - ((< num -4) - (error "Invalid version list `%s'" vlist)) - (t - ;; pre, or beta, or alpha - (cond ((equal "." (car str-list)) - (pop str-list)) - ((not (string-match "[0-9]+" (car str-list))) - (error "Invalid version list `%s'" vlist))) - (push (cond ((= num -1) "pre") - ((= num -2) "beta") - ((= num -3) "alpha") - ((= num -4) "snapshot")) - str-list)))) - (if (equal "." (car str-list)) - (pop str-list)) - (apply #'concat (nreverse str-list))))) - -(defun package-desc-full-name (pkg-desc) - "Return full name of package-desc object PKG-DESC. -This is the name of the package with its version appended." - (if (package-vc-p pkg-desc) - (symbol-name (package-desc-name pkg-desc)) - (format "%s-%s" - (package-desc-name pkg-desc) - (package-version-join (package-desc-version pkg-desc))))) - (defun package-desc-suffix (pkg-desc) "Return file-name extension of package-desc object PKG-DESC. Depending on the `package-desc-kind' of PKG-DESC, this is one of: @@ -645,54 +503,6 @@ package." ;;; Installed packages -;; The following variables store information about packages present in -;; the system. The most important of these is `package-alist'. The -;; command `package-activate-all' is also closely related to this -;; section. - -(defvar package--builtins nil - "Alist of built-in packages. -The actual value is initialized by loading the library -`finder-inf'; this is not done until it is needed, e.g. by the -function `package-built-in-p'. - -Each element has the form (PKG . PACKAGE-BI-DESC), where PKG is a package -name (a symbol) and DESC is a `package--bi-desc' structure.") -(put 'package--builtins 'risky-local-variable t) - -(defvar package-alist nil - "Alist of all packages available for activation. -Each element has the form (PKG . DESCS), where PKG is a package -name (a symbol) and DESCS is a non-empty list of `package-desc' -structures, sorted by decreasing versions. - -This variable is set automatically by `package-load-descriptor', -called via `package-activate-all'. To change which packages are -loaded and/or activated, customize `package-load-list'.") -(put 'package-alist 'risky-local-variable t) - -;;;; Public interfaces for accessing built-in package info - -(defun package-versioned-builtin-packages () - "Return a list of all the versioned built-in packages. -The return value is a list of names of built-in packages represented as -symbols." - (mapcar #'car package--builtin-versions)) - -(defun package-builtin-package-version (package) - "Return the version of a built-in PACKAGE given by its symbol. -The return value is a list of integers representing the version of -PACKAGE, in the format returned by `version-to-list', or nil if the -package is built-in but has no version or is not a built-in package." - (alist-get package package--builtin-versions)) - -;;;###autoload -(defvar package-activated-list nil - ;; FIXME: This should implicitly include all builtin packages. - "List of the names of currently activated packages.") -(put 'package-activated-list 'risky-local-variable t) - -;;;; Populating `package-alist'. ;; The following functions are called on each installed package by ;; `package-load-all-descriptors', which ultimately populates the @@ -730,46 +540,6 @@ are sorted with the highest version first." (declare-function package-vc-commit "package-vc" (pkg)) -(defun package-load-descriptor (pkg-dir) - "Load the package description file in directory PKG-DIR. -Create a new `package-desc' object, add it to `package-alist' and -return it." - (let ((pkg-file (expand-file-name (package--description-file pkg-dir) - pkg-dir)) - (signed-file (concat pkg-dir ".signed"))) - (when (file-exists-p pkg-file) - (with-temp-buffer - (insert-file-contents pkg-file) - (goto-char (point-min)) - (let ((pkg-desc (or (package-process-define-package - (read (current-buffer))) - (error "Can't find define-package in %s" pkg-file)))) - (setf (package-desc-dir pkg-desc) pkg-dir) - (if (file-exists-p signed-file) - (setf (package-desc-signed pkg-desc) t)) - pkg-desc))))) - -(defun package-load-all-descriptors () - "Load descriptors for installed Emacs Lisp packages. -This looks for package subdirectories in `package-user-dir' and -`package-directory-list'. The variable `package-load-list' -controls which package subdirectories may be loaded. - -In each valid package subdirectory, this function loads the -description file containing a call to `define-package', which -updates `package-alist'." - (dolist (dir (cons package-user-dir package-directory-list)) - (when (file-directory-p dir) - (dolist (pkg-dir (directory-files dir t "\\`[^.]")) - (when (file-directory-p pkg-dir) - (package-load-descriptor pkg-dir)))))) - -(defun package--alist () - "Return `package-alist', after computing it if needed." - (or package-alist - (progn (package-load-all-descriptors) - package-alist))) - (defun define-package ( _name-string _version-string &optional _docstring _requirements &rest _extra-properties) @@ -785,39 +555,6 @@ EXTRA-PROPERTIES is currently unused." (declare (obsolete nil "29.1") (indent defun)) (error "Don't call me!")) - -;;; Package activation -;; Section for functions used by `package-activate', which see. - -(defun package-disabled-p (pkg-name version) - "Return whether PKG-NAME at VERSION can be activated. -The decision is made according to `package-load-list'. -Return nil if the package can be activated. -Return t if the package is completely disabled. -Return the max version (as a string) if the package is held at a lower version." - (let ((force (assq pkg-name package-load-list))) - (cond ((null force) (not (memq 'all package-load-list))) - ((null (setq force (cadr force))) t) ; disabled - ((eq force t) nil) - ((stringp force) ; held - (unless (version-list-= version (version-to-list force)) - force)) - (t (error "Invalid element in `package-load-list'"))))) - -(defun package-built-in-p (package &optional min-version) - "Return non-nil if PACKAGE is built-in to Emacs. -Optional arg MIN-VERSION, if non-nil, should be a version list -specifying the minimum acceptable version." - (if (package-desc-p package) ;; was built-in and then was converted - (eq 'builtin (package-desc-dir package)) - (let ((bi (assq package package--builtin-versions))) - (cond - (bi (version-list-<= min-version (cdr bi))) - ((remove 0 min-version) nil) - (t - (require 'finder-inf nil t) ; For `package--builtins'. - (assq package package--builtins)))))) - (defun package--active-built-in-p (package) "Return non-nil if the built-in version of PACKAGE is used. If the built-in version of PACKAGE is used and PACKAGE is @@ -833,19 +570,6 @@ version from the archive." (package--alist))) (package-built-in-p package))) -(defun package--autoloads-file-name (pkg-desc) - "Return the absolute name of the autoloads file, sans extension. -PKG-DESC is a `package-desc' object." - (expand-file-name - (format "%s-autoloads" (package-desc-name pkg-desc)) - (package-desc-dir pkg-desc))) - -(defvar Info-directory-list) -(declare-function info-initialize "info" ()) - -(defvar package--quickstart-pkgs t - "If set to a list, we're computing the set of pkgs to activate.") - (defsubst package--library-stem (file) (catch 'done (let (result) @@ -905,83 +629,6 @@ sexps)." (mapc (lambda (c) (load (car c) nil t)) (sort result (lambda (x y) (< (cdr x) (cdr y)))))))) -(defun package--add-info-node (pkg-dir) - "Add info node located in PKG-DIR." - (when (file-exists-p (expand-file-name "dir" pkg-dir)) - ;; FIXME: not the friendliest, but simple. - (require 'info) - (info-initialize) - (add-to-list 'Info-directory-list pkg-dir))) - -(defun package-activate-1 (pkg-desc &optional reload deps) - "Activate package given by PKG-DESC, even if it was already active. -If DEPS is non-nil, also activate its dependencies (unless they -are already activated). -If RELOAD is non-nil, also `load' any files inside the package which -correspond to previously loaded files." - (let* ((name (package-desc-name pkg-desc)) - (pkg-dir (package-desc-dir pkg-desc))) - (unless pkg-dir - (error "Internal error: unable to find directory for `%s'" - (package-desc-full-name pkg-desc))) - (catch 'exit - ;; Activate its dependencies recursively. - ;; FIXME: This doesn't check whether the activated version is the - ;; required version. - (when deps - (dolist (req (package-desc-reqs pkg-desc)) - (unless (package-activate (car req)) - (message "Unable to activate package `%s'.\nRequired package `%s-%s' is unavailable" - name (car req) (package-version-join (cadr req))) - (throw 'exit nil)))) - (if (listp package--quickstart-pkgs) - ;; We're only collecting the set of packages to activate! - (push pkg-desc package--quickstart-pkgs) - (when (or reload (assq name package--builtin-versions)) - (package--reload-previously-loaded - pkg-desc (unless reload - "Package %S is activated too late. -The following files have already been loaded: %S"))) - (with-demoted-errors "Error loading autoloads: %s" - (load (package--autoloads-file-name pkg-desc) nil t))) - (package--add-info-node pkg-dir) - (push name package-activated-list) - ;; Don't return nil. - t))) - -;;;; `package-activate' - -(defun package--get-activatable-pkg (pkg-name) - ;; Is "activatable" a word? - (let ((pkg-descs (cdr (assq pkg-name package-alist)))) - ;; Check if PACKAGE is available in `package-alist'. - (while - (when pkg-descs - (let ((available-version (package-desc-version (car pkg-descs)))) - (or (package-disabled-p pkg-name available-version) - ;; Prefer a builtin package. - (package-built-in-p pkg-name available-version)))) - (setq pkg-descs (cdr pkg-descs))) - (car pkg-descs))) - -;; This function activates a newer version of a package if an older -;; one was already activated. It also loads a features of this -;; package which were already loaded. -(defun package-activate (package &optional force) - "Activate the package named PACKAGE. -If FORCE is true, (re-)activate it if it's already activated. -Newer versions are always activated, regardless of FORCE." - (let ((pkg-desc (package--get-activatable-pkg package))) - (cond - ;; If no such package is found, maybe it's built-in. - ((null pkg-desc) - (package-built-in-p package)) - ;; If the package is already activated, just return t. - ((and (memq package package-activated-list) (not force)) - t) - ;; Otherwise, proceed with activation. - (t (package-activate-1 pkg-desc nil 'deps))))) - ;;; Installation -- Local operations ;; This section contains a variety of features regarding installing a @@ -1022,40 +669,208 @@ untar into a directory named DIR; otherwise, signal an error." (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist)))) +(defcustom package-review-policy nil + "Policy to review incoming packages before installing them. +Reviewing a package allows you to read the source code without +installing anything, compare it to previous installations of the package +and read the change log. The default value of nil will install packages +without any additional prompts, while t reviews all packages. By +setting this user option to a list you can also selectively list what +packages and archives to review. For the former, an entry of the +form (archive STRING) will review all packages from the archive +STRING (see `package-archives'), and an entry of the form (package +SYMBOL) will review packages whose names match SYMBOL. If you prefix +the list with a symbol `not', the rules are inverted." + :type + (let ((choice '(choice :tag "Review specific packages or archives" + (cons :tag "Archive name" (const archive) string) + (cons :tag "Package name" (const package) symbol)))) + `(choice + (const :tag "Review all packages" t) + (repeat :tag "Review these specific packages and archives" ,choice) + (cons :tag "Review packages and archives except these" + (const not) (repeat ,choice)))) + :risky t + :version "31.1") + +(defcustom package-review-directory temporary-file-directory + "Directory to unpack packages for review. +The value of this user option is used to rebind the variable +`temporary-file-directory'. The directory doesn't have to exist; if +it doesn't, Emacs will create the directory for you. You can +therefore set the option to + + (setopt package-review-directory + (expand-file-name \"emacs\" (xdg-cache-home))) + +if you wish to have Emacs unpack the packages in your home directory, in +case you are concerned about moving files between file systems." + :type 'directory + :version "31.1") + +(defcustom package-review-diff-command + (cons diff-command + (mapcar #'shell-quote-argument + '("-u" ;unified patch formatting + "-N" ;treat absent files as empty + "-x" "*.elc" ;ignore byte compiled files + "-x" "*-autoloads.el" ;ignore the autoloads file + "-x" "*-pkg.el" ;ignore the package description + "-x" "*.info" ;ignore compiled Info files + ))) + "Configuration of how `package-review' should generate a Diff. +The structure of the value must be (COMMAND . OPTIONS), where +`diff-command' is rebound to be COMMAND and OPTIONS are command-line +switches and arguments passed to `diff-no-select' as the SWITCHES argument +if the user selects a diff-related option during review." + :type '(cons (string :tag "Diff command name") + (repeat :tag "Diff command-line arguments" string)) + :version "31.1") + +(defun package--review-p (pkg-desc) + "Return non-nil if upgrading PKG-DESC requires a review. +This function consults `package-review-policy' to determine if the user +wants to review the package prior to installation. See `package-review'." + (let ((archive (package-desc-archive pkg-desc)) + (name (package-desc-name pkg-desc))) + (pcase-exhaustive package-review-policy + ((and (pred listp) list) + (xor (any (lambda (ent) + (pcase ent + ((or `(archive . ,(pred (equal archive))) + `(package . ,(pred (eq name)))) + t) + (_ nil))) + (if (eq (car list) 'not) (cdr list) list)) + (eq (car list) 'not))) + ('t t)))) + + +(declare-function mail-text "sendmail" ()) +(declare-function message-goto-body "message" (&optional interactive)) +(declare-function diff-no-select "diff" (old new &optional switches no-async buf)) + +(defun package-review (pkg-desc pkg-dir old-desc) + "Review the package specified PKG-DESC which is about to be installed. +PKG-DIR is the directory where the downloaded source of PKG-DESC have +been downloaded. OLD-DESC is either a `package-desc' object of the +previous installation or nil, if there was no prior installation. If the +review fails, the function throws a symbol `review-failed' with PKG-DESC +attached." + (let ((news (package-find-news-file pkg-desc)) + (enable-recursive-minibuffers t) + (diff-command (car package-review-diff-command))) + (while (pcase-exhaustive + (car (read-multiple-choice + (format "Install \"%s\"?" (package-desc-name pkg-desc)) + `((?y "yes" "Proceed with installation") + (?n "no" "Abort installation") + ,@(and old-desc '((?d "diff" "Show the installation diff") + (?m "mail" "Send an email to the maintainers"))) + ,@(and news '((?c "changelog" "Show the changelog"))) + (?b "browse" "Browse the source")))) + (?y nil) + (?n + (delete-directory pkg-dir t) + (throw 'review-failed pkg-desc)) + (?d + (display-buffer + (diff-no-select + (package-desc-dir old-desc) pkg-dir (cdr package-review-diff-command) t + (get-buffer-create (format "*Package Review Diff: %s*" + (package-desc-full-name pkg-desc))))) + t) + (?m + (require 'diff) ;for `diff-no-select' + (with-temp-buffer + (diff-no-select + (package-desc-dir old-desc) pkg-dir + (cdr package-review-diff-command) + t (current-buffer)) + ;; delete sentinel message + (goto-char (point-max)) + (forward-line -2) + (narrow-to-region (point-min) (point)) + ;; prepare mail buffer + (let ((tmp-buf (current-buffer))) + (compose-mail (with-demoted-errors "Failed to find maintainers: %S" + (package-maintainers pkg-desc)) + (concat "Emacs Package Review: " + (package-desc-full-name pkg-desc))) + (pcase mail-user-agent + ('sendmail-user-agent (mail-text)) + (_ (message-goto-body))) + (let ((start (point))) + (save-excursion + (insert-buffer-substring tmp-buf) + (comment-region start (point)))))) + t) + (?c + (view-file news) + t) + (?b + (dired pkg-dir "-R") ;FIXME: Is recursive dired portable? + t))))) + (declare-function dired-get-marked-files "dired") (defun package-unpack (pkg-desc) - "Install the contents of the current buffer as a package." + "Install the contents of the current buffer as a package. +The argument PKG-DESC contains metadata of the yet to be installed +package. The function returns a `package-desc' object of the actually +installed package." (let* ((name (package-desc-name pkg-desc)) - (dirname (package-desc-full-name pkg-desc)) - (pkg-dir (expand-file-name dirname package-user-dir))) - (pcase (package-desc-kind pkg-desc) - ('dir - (make-directory pkg-dir t) - (let ((file-list - (or (and (derived-mode-p 'dired-mode) - (dired-get-marked-files nil 'marked)) - (directory-files-recursively default-directory "" nil)))) - (dolist (source-file file-list) - (let ((target (expand-file-name - (file-relative-name source-file default-directory) - pkg-dir))) - (make-directory (file-name-directory target) t) - (copy-file source-file target t))) - ;; Now that the files have been installed, this package is - ;; indistinguishable from a `tar' or a `single'. Let's make - ;; things simple by ensuring we're one of them. - (setf (package-desc-kind pkg-desc) - (if (length> file-list 1) 'tar 'single)))) - ('tar - (make-directory package-user-dir t) - (let* ((default-directory (file-name-as-directory package-user-dir))) - (package-untar-buffer dirname))) - ('single - (let ((el-file (expand-file-name (format "%s.el" name) pkg-dir))) - (make-directory pkg-dir t) - (package--write-file-no-coding el-file))) - (kind (error "Unknown package kind: %S" kind))) + (full-name (package-desc-full-name pkg-desc)) + (pkg-dir (expand-file-name full-name package-user-dir)) + (review-p (package--review-p pkg-desc)) + (unpack-dir (if review-p + (let ((temporary-file-directory package-review-directory)) + (make-directory temporary-file-directory t) ;ensure existence + (expand-file-name + full-name + (make-temp-file "emacs-package-review-" t))) + pkg-dir)) + (old-desc (package--get-activatable-pkg name))) + (make-directory unpack-dir t) + (save-window-excursion + (pcase (package-desc-kind pkg-desc) + ('dir + (let ((file-list + (or (and (derived-mode-p 'dired-mode) + (dired-get-marked-files nil 'marked)) + (directory-files-recursively default-directory "" nil)))) + (dolist (source-file file-list) + (let ((target (expand-file-name + (file-relative-name source-file default-directory) + unpack-dir))) + (make-directory (file-name-directory target) t) + (copy-file source-file target t))) + ;; Now that the files have been installed, this package is + ;; indistinguishable from a `tar' or a `single'. Let's make + ;; things simple by ensuring we're one of them. + (setf (package-desc-kind pkg-desc) + (if (length> file-list 1) 'tar 'single)))) + ('tar + (let ((default-directory (file-name-directory unpack-dir))) + (package-untar-buffer (file-name-nondirectory unpack-dir)))) + ('single + (let ((el-file (expand-file-name (format "%s.el" name) unpack-dir))) + (package--write-file-no-coding el-file))) + (kind (error "Unknown package kind: %S" kind)))) + + ;; check if the user wants to review this package + (when review-p + (unwind-protect + (progn + (save-window-excursion + (package-review pkg-desc unpack-dir old-desc)) + (make-directory package-user-dir t) + (rename-file unpack-dir pkg-dir)) + (let ((temp-dir (file-name-directory unpack-dir))) + (when (file-directory-p temp-dir) + (delete-directory temp-dir t))))) + (cl-assert (file-directory-p pkg-dir)) + (package--make-autoloads-and-stuff pkg-desc pkg-dir) ;; Update package-alist. (let ((new-desc (package-load-descriptor pkg-dir))) @@ -1075,8 +890,9 @@ untar into a directory named DIR; otherwise, signal an error." (package--native-compile-async new-desc)) ;; After compilation, load again any files loaded by ;; `activate-1', so that we use the byte-compiled definitions. - (package--reload-previously-loaded new-desc))) - pkg-dir)) + (package--reload-previously-loaded new-desc)) + + new-desc))) (defun package-generate-description-file (pkg-desc pkg-file) "Create the foo-pkg.el file PKG-FILE for single-file package PKG-DESC." @@ -1684,10 +1500,6 @@ If successful, set or update `package-archive-contents'." (defvar package--initialized nil "Non-nil if `package-initialize' has been run.") -;;;###autoload -(defvar package--activated nil - "Non-nil if `package-activate-all' has been run.") - ;;;###autoload (defun package-initialize (&optional no-activate) "Load Emacs Lisp packages, and activate them. @@ -1718,45 +1530,6 @@ that code in the early init-file." ;; `package--initialized' is t. (package--build-compatibility-table)) -;;;###autoload -(progn ;; Make the function usable without loading `package.el'. -(defun package-activate-all () - "Activate all installed packages. -The variable `package-load-list' controls which packages to load." - (setq package--activated t) - (let* ((elc (concat package-quickstart-file "c")) - (qs (if (file-readable-p elc) elc - (if (file-readable-p package-quickstart-file) - package-quickstart-file)))) - ;; The quickstart file presumes that it has a blank slate, - ;; so don't use it if we already activated some packages. - (or (and qs (not (bound-and-true-p package-activated-list)) - ;; Skip `load-source-file-function' which would slow us down by - ;; a factor 2 when loading the .el file (this assumes we were - ;; careful to save this file so it doesn't need any decoding). - (with-demoted-errors "Error during quickstart: %S" - (let ((load-source-file-function nil)) - (unless (boundp 'package-activated-list) - (setq package-activated-list nil)) - (load qs nil 'nomessage) - t))) - (progn - (require 'package) - ;; Silence the "unknown function" warning when this is compiled - ;; inside `loaddefs.el'. - ;; FIXME: We use `with-no-warnings' because the effect of - ;; `declare-function' is currently not scoped, so if we use - ;; it here, we end up with a redefinition warning instead :-) - (with-no-warnings - (package--activate-all))))))) - -(defun package--activate-all () - (dolist (elt (package--alist)) - (condition-case err - (package-activate (car elt)) - ;; Don't let failure of activation of a package arbitrarily stop - ;; activation of further packages. - (error (message "%s" (error-message-string err)))))) ;;;; Populating `package-archive-contents' from archives ;; This subsection populates the variables listed above from the @@ -2136,13 +1909,16 @@ if all the in-between dependencies are also in PACKAGE-LIST." (cdr (assoc (package-desc-archive desc) package-archives))) (defun package-install-from-archive (pkg-desc) - "Download and install a package defined by PKG-DESC." + "Download and install a package defined by PKG-DESC. +The function returns the new `package-desc' object of the installed +package." ;; This won't happen, unless the archive is doing something wrong. (when (eq (package-desc-kind pkg-desc) 'dir) (error "Can't install directory package from archive")) (let* ((location (package-archive-base pkg-desc)) (file (concat (package-desc-full-name pkg-desc) - (package-desc-suffix pkg-desc)))) + (package-desc-suffix pkg-desc))) + new-desc) (package--with-response-buffer location :file file (if (or (not (package-check-signature)) (member (package-desc-archive pkg-desc) @@ -2150,7 +1926,7 @@ if all the in-between dependencies are also in PACKAGE-LIST." ;; If we don't care about the signature, unpack and we're ;; done. (let ((save-silently t)) - (package-unpack pkg-desc)) + (setq new-desc (package-unpack pkg-desc))) ;; If we care, check it and *then* write the file. (let ((content (buffer-string))) (package--check-signature @@ -2163,7 +1939,7 @@ if all the in-between dependencies are also in PACKAGE-LIST." (cl-assert (not (multibyte-string-p content))) (insert content) (let ((save-silently t)) - (package-unpack pkg-desc))) + (setq new-desc (package-unpack pkg-desc)))) ;; Here the package has been installed successfully, mark it as ;; signed if appropriate. (when good-sigs @@ -2194,45 +1970,27 @@ if all the in-between dependencies are also in PACKAGE-LIST." (unless (save-excursion (goto-char (point-min)) (looking-at-p "[[:space:]]*\\'")) - (write-region nil nil readme))))))) - -;;;###autoload -(defun package-installed-p (package &optional min-version) - "Return non-nil if PACKAGE, of MIN-VERSION or newer, is installed. -If PACKAGE is a symbol, it is the package name and MIN-VERSION -should be a version list. - -If PACKAGE is a `package-desc' object, MIN-VERSION is ignored." - (cond - ((package-desc-p package) - (let ((dir (package-desc-dir package))) - (and (stringp dir) - (file-exists-p dir)))) - ((and (not package--initialized) - (null min-version) - package-activated-list) - ;; We used the quickstart: make it possible to use package-installed-p - ;; even before package is fully initialized. - (or - (memq package package-activated-list) - ;; Also check built-in packages. - (package-built-in-p package min-version))) - (t - (or - (let ((pkg-descs (cdr (assq package (package--alist))))) - (and pkg-descs - (version-list-<= min-version - (package-desc-version (car pkg-descs))))) - ;; Also check built-in packages. - (package-built-in-p package min-version))))) + (write-region nil nil readme))))) + new-desc)) (defun package-download-transaction (packages) "Download and install all the packages in PACKAGES. -PACKAGES should be a list of `package-desc'. -This function assumes that all package requirements in -PACKAGES are satisfied, i.e. that PACKAGES is computed -using `package-compute-transaction'." - (mapc #'package-install-from-archive packages)) +PACKAGES should be a list of `package-desc'. This function assumes that +all package requirements in PACKAGES are satisfied, i.e. that PACKAGES +is computed using `package-compute-transaction'. The function returns a +list of `package-desc' objects that have been installed, or nil if the +transaction had no effect." + (let* ((installed '()) + (pkg-desc (catch 'review-failed + (dolist (pkg-desc packages nil) + (push (package-install-from-archive pkg-desc) + installed))))) + (if pkg-desc + (progn + (message "Rejected `%s', reverting transaction." (package-desc-name pkg-desc)) + (mapc #'package-delete installed) + nil) + installed))) (defun package--archives-initialize () "Make sure the list of installed and remote packages are initialized." @@ -2243,13 +2001,14 @@ using `package-compute-transaction'." (defcustom package-install-upgrade-built-in nil "Non-nil means that built-in packages can be upgraded via a package archive. -If disabled, then `package-install' will not suggest to replace a -built-in package with a (possibly newer) version from a package archive." +If disabled, then `package-install' will raise an error when trying to +replace a built-in package with a (possibly newer) version from a +package archive." :type 'boolean :version "29.1") ;;;###autoload -(defun package-install (pkg &optional dont-select) +(defun package-install (pkg &optional dont-select interactive) "Install the package PKG. PKG can be a `package-desc', or a symbol naming one of the available @@ -2275,39 +2034,38 @@ had been enabled." (package--archives-initialize) (list (intern (completing-read "Install package: " - (mapcan - (lambda (elt) - (and (or (and (or current-prefix-arg - package-install-upgrade-built-in) - (package--active-built-in-p (car elt))) - (not (package-installed-p (car elt)))) - (list (symbol-name (car elt))))) - package-archive-contents) + package-archive-contents nil t)) - nil))) + nil + 'interactive))) (cl-check-type pkg (or symbol package-desc)) (package--archives-initialize) (add-hook 'post-command-hook #'package-menu--post-refresh) (let ((name (if (package-desc-p pkg) (package-desc-name pkg) pkg))) - (unless (or dont-select (package--user-selected-p name)) - (package--save-selected-packages - (cons name package-selected-packages))) - (when (and (or current-prefix-arg package-install-upgrade-built-in) - (package--active-built-in-p pkg)) - (setq pkg (or (cadr (assq name package-archive-contents)) pkg))) - (if-let* ((transaction - (if (package-desc-p pkg) - (unless (package-installed-p pkg) - (package-compute-transaction (list pkg) - (package-desc-reqs pkg))) - (package-compute-transaction () (list (list pkg)))))) - (progn - (package-download-transaction transaction) - (package--quickstart-maybe-refresh) - (message "Package `%s' installed." name)) - (message "`%s' is already installed" name)))) + (if (or (and package-install-upgrade-built-in + (package--active-built-in-p pkg)) + (package-installed-p pkg)) + (funcall (if interactive #'user-error #'message) + "`%s' is already installed" name) + (unless (or dont-select (package--user-selected-p name)) + (package--save-selected-packages + (cons name package-selected-packages))) + (when (and (or current-prefix-arg package-install-upgrade-built-in) + (package--active-built-in-p pkg)) + (setq pkg (or (cadr (assq name package-archive-contents)) pkg))) + (if-let* ((transaction + (if (package-desc-p pkg) + (unless (package-installed-p pkg) + (package-compute-transaction (list pkg) + (package-desc-reqs pkg))) + (package-compute-transaction () (list (list pkg)))))) + (if (package-download-transaction transaction) + (progn + (package--quickstart-maybe-refresh) + (message "Package `%s' installed" name)) + (error "Package `%s' not installed" name)))))) (declare-function package-vc-upgrade "package-vc" (pkg)) @@ -2326,12 +2084,17 @@ NAME should be a symbol." ;; `pkg-desc' will be nil when the package is an "active built-in". (if (and pkg-desc (package-vc-p pkg-desc)) (package-vc-upgrade pkg-desc) - (when pkg-desc - (package-delete pkg-desc 'force 'dont-unselect)) - (package-install name - ;; An active built-in has never been "selected" - ;; before. Mark it as installed explicitly. - (and pkg-desc 'dont-select))))) + (let ((new-desc (cadr (assq name package-archive-contents)))) + (when (or (null new-desc) + (version-list-= (package-desc-version pkg-desc) + (package-desc-version new-desc))) + (user-error "Cannot upgrade `%s'" name)) + (package-install new-desc + ;; An active built-in has never been "selected" + ;; before. Mark it as installed explicitly. + (and pkg-desc 'dont-select)) + (when pkg-desc + (package-delete pkg-desc 'force 'dont-unselect)))))) (defun package--upgradeable-packages (&optional include-builtins) ;; Initialize the package system to get the list of package @@ -2466,10 +2229,20 @@ Downloads and installs required packages as needed." (name (package-desc-name pkg-desc))) ;; Download and install the dependencies. (let* ((requires (package-desc-reqs pkg-desc)) - (transaction (package-compute-transaction nil requires))) - (package-download-transaction transaction)) - ;; Install the package itself. - (package-unpack pkg-desc) + (transaction (package-compute-transaction nil requires)) + (installed (package-download-transaction transaction))) + (when (and (catch 'review-failed + ;; Install the package itself. + (package-unpack pkg-desc) + nil) + (or (null transaction) installed)) + (mapc #'package-delete installed) + (when installed + (message "Review uninstalled dependencies: %s" + (mapconcat #'package-desc-full-name + installed + ", "))) + (user-error "Installation aborted"))) (unless (package--user-selected-p name) (package--save-selected-packages (cons name package-selected-packages))) @@ -2554,7 +2327,7 @@ compiled, and remove the DIR from `load-path'." (delete-file (directory-file-name dir)) (delete-directory dir t))) - +;;;###autoload (defun package-delete (pkg-desc &optional force nosave) "Delete package PKG-DESC. @@ -2714,14 +2487,16 @@ argument, don't ask for confirmation to install packages." (defun package-isolate (packages &optional temp-init) "Start an uncustomized Emacs and only load a set of PACKAGES. Interactively, prompt for PACKAGES to load, which should be specified -separated by commas. -If called from Lisp, PACKAGES should be a list of packages to load. -If TEMP-INIT is non-nil, or when invoked with a prefix argument, -the Emacs user directory is set to a temporary directory. -This command is intended for testing Emacs and/or the packages -in a clean environment." +separated by commas. If called from Lisp, PACKAGES should be a list of +`package-desc' objects to load. If an element of PACKAGES is not +installed, it will be fetched, but not activated in the current session. +If TEMP-INIT is non-nil, or when invoked with a prefix argument, the +Emacs user directory is set to a temporary directory. This command is +intended for testing Emacs and/or the packages in a clean environment." (interactive - (cl-loop for p in (cl-loop for p in (package--alist) append (cdr p)) + (cl-loop for p in (append + (cl-loop for p in (package--alist) append (cdr p)) + (cl-loop for p in package-archive-contents append (cdr p))) unless (package-built-in-p p) collect (cons (package-desc-full-name p) p) into table finally return @@ -2730,21 +2505,27 @@ in a clean environment." (completing-read-multiple "Packages to isolate: " table nil t) - collect (alist-get c table nil nil #'string=)) - current-prefix-arg))) + collect (alist-get c table nil nil #'string=)) + current-prefix-arg))) (let* ((name (concat "package-isolate-" (mapconcat #'package-desc-full-name packages ","))) - (all-packages (delete-consecutive-dups - (sort (append packages (mapcan #'package--dependencies packages)) - (lambda (p0 p1) - (string< (package-desc-name p0) (package-desc-name p1)))))) - initial-scratch-message package-load-list) + (all-packages (package-compute-transaction + packages (mapcan #'package-desc-reqs packages))) + (package-alist (copy-tree package-alist t)) + (temp-install-dir nil) initial-scratch-message load-list) + (when-let* ((missing (seq-remove #'package-installed-p all-packages)) + (package-user-dir (make-temp-file "package-isolate" t))) + (setq temp-install-dir (list package-user-dir)) + ;; We bind `package-activate-1' to prevent activating the package + ;; in `package-unpack' for this session. + (cl-letf (((symbol-function #'package-activate-1) #'ignore)) + (package-download-transaction missing))) (with-temp-buffer (insert ";; This is an isolated testing environment, with these packages enabled:\n\n") (dolist (package all-packages) (push (list (package-desc-name package) (package-version-join (package-desc-version package))) - package-load-list) + load-list) (insert ";; - " (package-desc-full-name package)) (unless (memq package packages) (insert " (dependency)")) @@ -2765,7 +2546,9 @@ in a clean environment." ,@(mapcar (lambda (dir) `(add-to-list 'package-directory-list ,dir)) - (cons package-user-dir package-directory-list)) + (append (list package-user-dir) + temp-install-dir + package-directory-list)) (setq package-load-list ',package-load-list) (package-activate-all))))))) @@ -2858,6 +2641,17 @@ The description is read from the installed package files." 'help-echo "Read this file's commentary" :type 'package--finder-xref)))) +(defun package-find-news-file (pkg-desc) + "Return the file name of a news file of PKG-DESC. +If no such file exists, the function returns nil." + (and-let* ((pkg-dir (package-desc-dir pkg-desc)) + (_ (not (eq pkg-dir 'builtin))) + (default-directory pkg-dir)) + (catch 'success + (dolist (file '("NEWS-elpa" "news") nil) ;TODO: add user option? + (when (and (file-readable-p file) (file-regular-p file)) + (throw 'success (expand-file-name file))))))) + (defun describe-package-1 (pkg) "Insert the package description for PKG. Helper function for `describe-package'." @@ -2887,12 +2681,7 @@ Helper function for `describe-package'." (maintainers (or (cdr (assoc :maintainer extras)) (cdr (assoc :maintainers extras)))) (authors (cdr (assoc :authors extras))) - (news (and-let* (pkg-dir - ((not built-in)) - (file (expand-file-name "news" pkg-dir)) - ((file-regular-p file)) - ((file-readable-p file))) - file))) + (news (and desc (package-find-news-file desc)))) (when (string= status "avail-obso") (setq status "available obsolete")) (when incompatible-reason @@ -4740,40 +4529,11 @@ The list is displayed in a buffer named `*Packages*'." (interactive) (list-packages t)) -;;;###autoload -(defun package-get-version () - "Return the version number of the package in which this is used. -Assumes it is used from an Elisp file placed inside the top-level directory -of an installed ELPA package. -The return value is a string (or nil in case we can't find it). -It works in more cases if the call is in the file which contains -the `Version:' header." - ;; In a sense, this is a lie, but it does just what we want: precomputes - ;; the version at compile time and hardcodes it into the .elc file! - (declare (pure t)) - ;; Hack alert! - (let ((file (or (macroexp-file-name) buffer-file-name))) - (cond - ((null file) nil) - ;; Packages are normally installed into directories named "-", - ;; so get the version number from there. - ((string-match "/[^/]+-\\([0-9]\\(?:[0-9.]\\|pre\\|beta\\|alpha\\|snapshot\\)+\\)/[^/]+\\'" file) - (match-string 1 file)) - ;; For packages run straight from the an elpa.git clone, there's no - ;; "-" in the directory name, so we have to fetch the version - ;; the hard way. - (t - (let* ((pkgdir (file-name-directory file)) - (pkgname (file-name-nondirectory (directory-file-name pkgdir))) - (mainfile (expand-file-name (concat pkgname ".el") pkgdir))) - (unless (file-readable-p mainfile) (setq mainfile file)) - (when (file-readable-p mainfile) - (require 'lisp-mnt) - (lm-package-version mainfile))))))) - ;;;; Quickstart: precompute activation actions for faster start up. +(defvar Info-directory-list) + ;; Activating packages via `package-initialize' is costly: for N installed ;; packages, it needs to read all N -pkg.el files first to decide ;; which packages to activate, and then again N -autoloads.el files. @@ -4925,21 +4685,23 @@ form (PKG-NAME PKG-DESC). If not specified, it will default to (cadr (assoc (completing-read "Package: " alist nil t) alist #'string=))))) +;;;###autoload (defun package-browse-url (desc &optional secondary) "Open the website of the package under point in a browser. `browse-url' is used to determine the browser to be used. If SECONDARY (interactively, the prefix), use the secondary browser. DESC must be a `package-desc' object." (interactive (list (package--query-desc) - current-prefix-arg) - package-menu-mode) + current-prefix-arg)) (unless desc (user-error "No package here")) (let ((url (cdr (assoc :url (package-desc-extras desc))))) (unless url (user-error "No website for %s" (package-desc-name desc))) - (if secondary - (funcall browse-url-secondary-browser-function url) + (let ((browse-url-browser-function + (if secondary + browse-url-secondary-browser-function + browse-url-browser-function))) (browse-url url)))) (declare-function ietf-drums-parse-address "ietf-drums" @@ -4978,8 +4740,7 @@ will be signaled in that case." (defun package-report-bug (desc) "Prepare a message to send to the maintainers of a package. DESC must be a `package-desc' object." - (interactive (list (package--query-desc package-alist)) - package-menu-mode) + (interactive (list (package--query-desc package-alist))) (let ((maint (package-maintainers desc)) (name (symbol-name (package-desc-name desc))) (pkgdir (package-desc-dir desc)) diff --git a/lisp/emacs-lisp/pcase.el b/lisp/emacs-lisp/pcase.el index 07802849489..6126679e870 100644 --- a/lisp/emacs-lisp/pcase.el +++ b/lisp/emacs-lisp/pcase.el @@ -1,6 +1,6 @@ ;;; pcase.el --- ML-style pattern-matching macro for Elisp -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: extensions @@ -523,7 +523,15 @@ how many time this CODEGEN is called." (cond ((null head) (if (pcase--self-quoting-p pat) `',pat pat)) - ((memq head '(pred guard quote)) pat) + ((memq head '(guard quote)) pat) + ((eq head 'pred) + ;; Ad-hoc expansion of some predicates that are complements or aliases. + ;; Not required for correctness but results in better code. + (let ((equiv (assq (cadr pat) '((atom . (not consp)) + (nlistp . (not listp)) + (identity . (not null)) + (not . null))))) + (if equiv `(,head ,(cdr equiv)) pat))) ((memq head '(or and)) `(,head ,@(mapcar #'pcase--macroexpand (cdr pat)))) ((eq head 'app) `(app ,(nth 1 pat) ,(pcase--macroexpand (nth 2 pat)))) (t @@ -654,13 +662,22 @@ recording whether the var has been referenced by earlier parts of the match." (lambda (x y) (> (length (nth 2 x)) (length (nth 2 y)))))) + ;; We presume that the "fundamental types" (i.e. the built-in types + ;; that have no subtypes) are all mutually exclusive and give them + ;; one bit each in bitsets. + ;; The "non-abstract-supertypes" also get their own bit. + ;; All other built-in types are abstract, so they don't need their + ;; own bits (they are faithfully modeled by the set of bits + ;; corresponding to their subtypes). (let ((bitsets (make-hash-table)) (i 1)) (dolist (x built-in-types) ;; Don't dedicate any bit to those predicates which already ;; have a bitset, since it means they're already represented ;; by their subtypes. - (unless (and (nth 1 x) (gethash (nth 1 x) bitsets)) + (unless (and (nth 1 x) (gethash (nth 1 x) bitsets) + (not (built-in-class--non-abstract-supertype + (get (nth 0 x) 'cl--class)))) (dolist (parent (nth 2 x)) (let ((pred (nth 1 (assq parent built-in-types)))) (unless (or (eq parent t) (null pred)) @@ -668,24 +685,35 @@ recording whether the var has been referenced by earlier parts of the match." bitsets)))) (setq i (+ i i)))) + ;; (cl-assert (= (1- i) (apply #'logior (map-values bitsets)))) + ;; Extra predicates that don't have matching types. - (dolist (pred-types '((functionp cl-functionp consp symbolp) - (keywordp symbolp) - (characterp fixnump) - (natnump integerp) - (facep symbolp stringp) - (plistp listp) - (cl-struct-p recordp) - ;; ;; FIXME: These aren't quite in the same - ;; ;; category since they'll signal errors. - (fboundp symbolp) - )) - (puthash (car pred-types) - (apply #'logior - (mapcar (lambda (pred) - (gethash pred bitsets)) - (cdr pred-types))) - bitsets)) + ;; Beware: For these predicates, the bitsets are conservative + ;; approximations (so, e.g., it wouldn't be correct to use one of + ;; them after a `!' since the negation would be an unsound + ;; under-approximation). + (let ((all (1- i))) + (dolist (pred-types '((functionp cl-functionp consp symbolp) + (keywordp symbolp) + (nlistp ! listp) + (characterp fixnump) + (natnump integerp) + (facep symbolp stringp) + (plistp listp) + (cl-struct-p recordp) + ;; ;; FIXME: These aren't quite in the same + ;; ;; category since they'll signal errors. + (fboundp symbolp) + )) + (let* ((types (cdr pred-types)) + (neg (when (eq '! (car types)) (setq types (cdr types)))) + (bitset (apply #'logior + (mapcar (lambda (pred) + (gethash pred bitsets)) + types)))) + (puthash (car pred-types) + (if neg (- all bitset) bitset) + bitsets)))) bitsets))) (defconst pcase--subtype-bitsets diff --git a/lisp/emacs-lisp/pp.el b/lisp/emacs-lisp/pp.el index 01dc95e649b..9c790b08972 100644 --- a/lisp/emacs-lisp/pp.el +++ b/lisp/emacs-lisp/pp.el @@ -1,6 +1,6 @@ ;;; pp.el --- pretty printer for Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1989, 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Randal Schwartz ;; Keywords: lisp diff --git a/lisp/emacs-lisp/radix-tree.el b/lisp/emacs-lisp/radix-tree.el index 9c792ee285b..3dfb9f0d9ee 100644 --- a/lisp/emacs-lisp/radix-tree.el +++ b/lisp/emacs-lisp/radix-tree.el @@ -1,6 +1,6 @@ ;;; radix-tree.el --- A simple library of radix trees -*- lexical-binding: t; -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: diff --git a/lisp/emacs-lisp/range.el b/lisp/emacs-lisp/range.el index 300329124ad..485d37b12ed 100644 --- a/lisp/emacs-lisp/range.el +++ b/lisp/emacs-lisp/range.el @@ -1,6 +1,6 @@ ;;; ranges.el --- range functions -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el index 849442ff133..c3f6450ac6a 100644 --- a/lisp/emacs-lisp/re-builder.el +++ b/lisp/emacs-lisp/re-builder.el @@ -1,6 +1,6 @@ ;;; re-builder.el --- building Regexps with visual feedback -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Detlev Zundel ;; Keywords: matching, lisp, tools diff --git a/lisp/emacs-lisp/regexp-opt.el b/lisp/emacs-lisp/regexp-opt.el index 3edaca78e32..27c558ae349 100644 --- a/lisp/emacs-lisp/regexp-opt.el +++ b/lisp/emacs-lisp/regexp-opt.el @@ -1,6 +1,6 @@ ;;; regexp-opt.el --- generate efficient regexps to match strings -*- lexical-binding: t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Simon Marshall ;; Maintainer: emacs-devel@gnu.org @@ -209,10 +209,7 @@ Merges keywords to avoid backtracking in Emacs's regexp matcher." ;; ;; If there are several one-char strings, use charsets ((and (= (length (car strings)) 1) - (let ((strs (cdr strings))) - (while (and strs (/= (length (car strs)) 1)) - (pop strs)) - strs)) + (any (lambda (s) (= (length s) 1)) (cdr strings))) (let (letters rest) ;; Collect one-char strings (dolist (s strings) diff --git a/lisp/emacs-lisp/regi.el b/lisp/emacs-lisp/regi.el index 53b45296b90..08c0f656387 100644 --- a/lisp/emacs-lisp/regi.el +++ b/lisp/emacs-lisp/regi.el @@ -1,6 +1,6 @@ ;;; regi.el --- REGular expression Interpreting engine -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: 1993 Barry A. Warsaw, Century Computing, Inc. ;; Created: 24-Feb-1993 diff --git a/lisp/emacs-lisp/ring.el b/lisp/emacs-lisp/ring.el index 4f14d607d2a..381c52fef54 100644 --- a/lisp/emacs-lisp/ring.el +++ b/lisp/emacs-lisp/ring.el @@ -1,6 +1,6 @@ ;;; ring.el --- handle rings of items -*- lexical-binding: t; -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: extensions diff --git a/lisp/emacs-lisp/rmc.el b/lisp/emacs-lisp/rmc.el index f01ef7a5c43..4fcfcb4355c 100644 --- a/lisp/emacs-lisp/rmc.el +++ b/lisp/emacs-lisp/rmc.el @@ -1,6 +1,6 @@ ;;; rmc.el --- read from a multiple choice question -*- lexical-binding: t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el index 46311b5af02..7b2bbe8fb11 100644 --- a/lisp/emacs-lisp/rx.el +++ b/lisp/emacs-lisp/rx.el @@ -1,6 +1,6 @@ ;;; rx.el --- S-exp notation for regexps -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -289,23 +289,23 @@ Left-fold the list L, starting with X, by the binary function F." ;; (or "a" space (or "b" (+ nonl) word) "c") ;; -> (or (in "ab" space) (+ nonl) (in "c" word)) -;; FIXME: normalise `seq', both the construct and implicit sequences, +;; FIXME: normalize `seq', both the construct and implicit sequences, ;; so that they are flattened, adjacent strings concatenated, and ;; empty strings removed. That would give more opportunities for regexp-opt: ;; (or "a" (seq "ab" (seq "c" "d") "")) -> (or "a" "abcd") -;; FIXME: Since `rx--normalise-char-pattern' recurses through `or', `not' and +;; FIXME: Since `rx--normalize-char-pattern' recurses through `or', `not' and ;; `intersection', we may end up normalising subtrees multiple times ;; which wastes time (but should be idempotent). -;; One way to avoid this is to aggressively normalise the entire tree +;; One way to avoid this is to aggressively normalize the entire tree ;; before translating anything at all, but we must then recurse through ;; all constructs and probably copy them. -;; Such normalisation could normalise synonyms, eliminate `minimal-match' +;; Such normalization could normalize synonyms, eliminate `minimal-match' ;; and `maximal-match' and convert affected `1+' to either `+' or `+?' etc. ;; We would also consolidate the user-def lookup, both modern and legacy, ;; in one place. -(defun rx--normalise-char-pattern (form) +(defun rx--normalize-char-pattern (form) "Normalize FORM as a pattern matching a single-character. Characters become strings, `any' forms and character classes become `rx--char-alt' forms, user-definitions and `eval' forms are expanded, @@ -314,27 +314,27 @@ and `or', `not' and `intersection' forms are normalized recursively. A `rx--char-alt' form is shaped (rx--char-alt INTERVALS . CLASSES) where INTERVALS is a sorted list of disjoint nonadjacent intervals, each a cons of characters, and CLASSES an unordered list of unique -name-normalised character classes." +name-normalized character classes." (defvar rx--builtin-forms) (defvar rx--builtin-symbols) (cond ((consp form) (let ((op (car form)) (body (cdr form))) (cond ((memq op '(or |)) - ;; Normalise the constructor to `or' and the args recursively. - (cons 'or (mapcar #'rx--normalise-char-pattern body))) + ;; Normalize the constructor to `or' and the args recursively. + (cons 'or (mapcar #'rx--normalize-char-pattern body))) ;; Convert `any' forms and char classes now so that we ;; don't need to do it later on. ((memq op '(any in char)) (cons 'rx--char-alt (rx--parse-any body))) ((memq op '(not intersection)) - (cons op (mapcar #'rx--normalise-char-pattern body))) + (cons op (mapcar #'rx--normalize-char-pattern body))) ((eq op 'eval) - (rx--normalise-char-pattern (rx--expand-eval body))) + (rx--normalize-char-pattern (rx--expand-eval body))) ((memq op rx--builtin-forms) form) ((let ((expanded (rx--expand-def-form form))) (and expanded - (rx--normalise-char-pattern expanded)))) + (rx--normalize-char-pattern expanded)))) (t form)))) ;; FIXME: Should we expand legacy definitions from ;; `rx-constituents' here as well? @@ -345,7 +345,7 @@ name-normalised character classes." ((memq form rx--builtin-symbols) form) ((let ((expanded (rx--expand-def-symbol form))) (and expanded - (rx--normalise-char-pattern expanded)))) + (rx--normalize-char-pattern expanded)))) (t form))) ((characterp form) (char-to-string form)) @@ -365,7 +365,7 @@ name-normalised character classes." (cons (rx--interval-set-union (car a) (car b)) classes))) (defun rx--intersection-intervals (forms) - "Intersection of the normalised FORMS, as an interval set." + "Intersection of the normalized FORMS, as an interval set." (rx--foldl #'rx--interval-set-intersection '((0 . #x3fffff)) (mapcar (lambda (x) (let ((char (rx--reduce-to-char-alt x))) @@ -378,7 +378,7 @@ name-normalised character classes." (defun rx--reduce-to-char-alt (form) "Transform FORM into (INTERVALS . CLASSES) or nil if not possible. Process `or', `intersection' and `not'. -FORM must be normalised (from `rx--normalise-char-pattern')." +FORM must be normalized (from `rx--normalize-char-pattern')." (cond ((stringp form) (and (= (length form) 1) @@ -422,10 +422,10 @@ FORM must be normalised (from `rx--normalise-char-pattern')." '(nil)) )) -(defun rx--optimise-or-args (args) - "Optimise `or' arguments. Return a new rx form. -Each element of ARGS should have been normalised using -`rx--normalise-char-pattern'." +(defun rx--optimize-or-args (args) + "Optimize `or' arguments. Return a new rx form. +Each element of ARGS should have been normalized using +`rx--normalize-char-pattern'." (if (null args) ;; No arguments. '(rx--char-alt nil . nil) ; FIXME: not `unmatchable'? @@ -487,12 +487,12 @@ Return (REGEXP . PRECEDENCE)." ((null (cdr body)) ; Single item. (rx--translate (car body))) (t - (let ((args (mapcar #'rx--normalise-char-pattern body))) + (let ((args (mapcar #'rx--normalize-char-pattern body))) (if (rx--all-string-branches-p args) ;; All branches are strings: use `regexp-opt'. (cons (list (regexp-opt (rx--collect-or-strings args) nil)) t) - (let ((form (rx--optimise-or-args args))) + (let ((form (rx--optimize-or-args args))) (if (eq (car-safe form) 'or) (let ((branches (cdr form))) (cons (append (car (rx--translate (car branches))) @@ -716,7 +716,7 @@ If NEGATED, negate the sense." If NEGATED, negate the sense (thus making it positive)." (unless (and body (null (cdr body))) (error "rx `not' form takes exactly one argument")) - (let ((arg (rx--normalise-char-pattern (car body)))) + (let ((arg (rx--normalize-char-pattern (car body)))) (pcase arg (`(not . ,args) (rx--translate-not (not negated) args)) @@ -850,7 +850,7 @@ If NEGATED, negate the sense (thus making it positive)." "Translate an (intersection ...) construct. Return (REGEXP . PRECEDENCE). If NEGATED, negate the sense." (rx--generate-alt negated (rx--intersection-intervals - (mapcar #'rx--normalise-char-pattern body)) + (mapcar #'rx--normalize-char-pattern body)) nil)) (defun rx--atomic-regexp (item) diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el index 38aaeba7c9b..e0a41b380b5 100644 --- a/lisp/emacs-lisp/seq.el +++ b/lisp/emacs-lisp/seq.el @@ -1,6 +1,6 @@ ;;; seq.el --- Sequence manipulation functions -*- lexical-binding: t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Nicolas Petton ;; Maintainer: emacs-devel@gnu.org @@ -567,7 +567,7 @@ This does not modify SEQUENCE1 or SEQUENCE2." ;;;###autoload (cl-defgeneric seq-intersection (sequence1 sequence2 &optional testfn) - "Return copy of SEQUENCE1 with elements that appear in SEQUENCE2 removed. + "Return copy of SEQUENCE1 with elements that do not appear in SEQUENCE2 removed. \"Equality\" of elements is defined by the function TESTFN, which defaults to `equal'. This does not modify SEQUENCE1 or SEQUENCE2." @@ -579,7 +579,7 @@ This does not modify SEQUENCE1 or SEQUENCE2." '())) (cl-defgeneric seq-difference (sequence1 sequence2 &optional testfn) - "Return list of all the elements that appear in SEQUENCE1 but not in SEQUENCE2. + "Return copy of SEQUENCE1 with elements that appear in SEQUENCE2 removed. \"Equality\" of elements is defined by the function TESTFN, which defaults to `equal'. This does not modify SEQUENCE1 or SEQUENCE2." diff --git a/lisp/emacs-lisp/shadow.el b/lisp/emacs-lisp/shadow.el index ef9a33f638e..0715affb6dc 100644 --- a/lisp/emacs-lisp/shadow.el +++ b/lisp/emacs-lisp/shadow.el @@ -1,6 +1,6 @@ ;;; shadow.el --- locate Emacs Lisp file shadowings -*- lexical-binding: t; -*- -;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Terry Jones ;; Keywords: lisp diff --git a/lisp/emacs-lisp/shortdoc.el b/lisp/emacs-lisp/shortdoc.el index 7b8ecd1b260..8b382bd14dd 100644 --- a/lisp/emacs-lisp/shortdoc.el +++ b/lisp/emacs-lisp/shortdoc.el @@ -1,6 +1,6 @@ ;;; shortdoc.el --- Short function summaries -*- lexical-binding: t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Keywords: lisp, help ;; Package: emacs @@ -1556,7 +1556,7 @@ A FUNC form can have any number of `:no-eval' (or `:no-value'), :eval (text-properties-at (point))) "Changing Text Properties" (put-text-property - :eval (let ((s "abc")) (put-text-property 0 1 'foo t s) s) + :eval (let ((s (copy-sequence "abc"))) (put-text-property 0 1 'foo t s) s) :no-eval (put-text-property (point) (1+ (point)) 'face 'error)) (add-text-properties :no-eval (add-text-properties (point) (1+ (point)) '(face error))) @@ -1707,7 +1707,9 @@ function's documentation in the Info manual")) ;; Doc string. (insert " " (or (plist-get data :doc) - (car (split-string (documentation function) "\n")))) + (car (split-string (or (documentation function) + "Error: missing docstring.") + "\n")))) (insert "\n") (add-face-text-property start-section (point) 'shortdoc-section t) (let ((print-escape-newlines t) diff --git a/lisp/emacs-lisp/shorthands.el b/lisp/emacs-lisp/shorthands.el index 33a302e500c..9c668bb3720 100644 --- a/lisp/emacs-lisp/shorthands.el +++ b/lisp/emacs-lisp/shorthands.el @@ -1,6 +1,6 @@ ;;; shorthands.el --- Read code considering Elisp shorthands -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: João Távora ;; Keywords: lisp @@ -28,7 +28,6 @@ ;;; Code: (require 'files) (require 'mule) -(eval-when-compile (require 'cl-lib)) (defun hack-read-symbol-shorthands () "Compute `read-symbol-shorthands' from Local Variables section." diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index b959c6a496a..91f3332a79b 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1,6 +1,6 @@ ;;; smie.el --- Simple Minded Indentation Engine -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: languages, lisp, internal, parsing, indentation diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index d27c84ac473..b36b14b9b50 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -1,6 +1,6 @@ ;;; subr-x.el --- extra Lisp functions -*- lexical-binding:t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: convenience @@ -37,6 +37,7 @@ (eval-when-compile (require 'cl-lib)) +(require 'mule-util) (defmacro internal--thread-argument (first? &rest forms) "Internal implementation for `thread-first' and `thread-last'. @@ -357,6 +358,29 @@ buffer when possible, instead of creating a new one on each call." (progn ,@body) (work-buffer--release ,work-buffer)))))) +(defun work-buffer--prepare-pixelwise (string buffer) + "Set up the current buffer to correctly compute STRING's pixel width. +Call this with a work buffer as the current buffer. +BUFFER is the originating buffer and if non-nil, make the current +buffer's (work buffer) face remappings match it." + (when buffer + (dolist (v '(face-remapping-alist + char-property-alias-alist + default-text-properties)) + (if (local-variable-p v buffer) + (set (make-local-variable v) + (buffer-local-value v buffer))))) + ;; Avoid deactivating the region as side effect. + (let (deactivate-mark) + (insert string)) + ;; If `display-line-numbers' is enabled in internal + ;; buffers (e.g. globally), it breaks width calculation + ;; (bug#59311). Disable `line-prefix' and `wrap-prefix', + ;; for the same reason. + (add-text-properties + (point-min) (point-max) + '(display-line-numbers-disable t line-prefix "" wrap-prefix ""))) + ;;;###autoload (defun string-pixel-width (string &optional buffer) "Return the width of STRING in pixels. @@ -371,26 +395,70 @@ substring that does not include newlines." ;; Keeping a work buffer around is more efficient than creating a ;; new temporary buffer. (with-work-buffer - ;; Setup current buffer to correctly compute pixel width. - (when buffer - (dolist (v '(face-remapping-alist - char-property-alias-alist - default-text-properties)) - (if (local-variable-p v buffer) - (set (make-local-variable v) - (buffer-local-value v buffer))))) - ;; Avoid deactivating the region as side effect. - (let (deactivate-mark) - (insert string)) - ;; If `display-line-numbers' is enabled in internal - ;; buffers (e.g. globally), it breaks width calculation - ;; (bug#59311). Disable `line-prefix' and `wrap-prefix', - ;; for the same reason. - (add-text-properties - (point-min) (point-max) - '(display-line-numbers-disable t line-prefix "" wrap-prefix "")) + (work-buffer--prepare-pixelwise string buffer) (car (buffer-text-pixel-size nil nil t))))) +;;;###autoload +(defun truncate-string-pixelwise (string max-pixels &optional buffer + ellipsis ellipsis-pixels) + "Return STRING truncated to fit within MAX-PIXELS. +If BUFFER is non-nil, use the face remappings, alternative and default +properties from that buffer when determining the width. +If you call this function to measure pixel width of a string +with embedded newlines, it returns the width of the widest +substring that does not include newlines. + +If ELLIPSIS is non-nil, it should be a string which will replace the end +of STRING if it extends beyond MAX-PIXELS, unless the pixel width of +STRING is equal to or less than the pixel width of ELLIPSIS. If it is +non-nil and not a string, then ELLIPSIS defaults to +`truncate-string-ellipsis', or to three dots when it's nil. + +If ELLIPSIS-PIXELS is non-nil, it is the pixel width of ELLIPSIS, and +can be used to avoid the cost of recomputing this for multiple calls to +this function using the same ELLIPSIS." + (declare (important-return-value t)) + (if (zerop (length string)) + string + ;; Keeping a work buffer around is more efficient than creating a + ;; new temporary buffer. + (let ((original-buffer (or buffer (current-buffer)))) + (with-work-buffer + (work-buffer--prepare-pixelwise string buffer) + (set-window-buffer nil (current-buffer) 'keep-margins) + ;; Use a binary search to prune the number of calls to + ;; `window-text-pixel-size'. + ;; These are 1-based buffer indexes. + (let* ((low 1) + (high (1+ (length string))) + mid) + (when (> (car (window-text-pixel-size nil 1 high)) max-pixels) + (when (and ellipsis (not (stringp ellipsis))) + (setq ellipsis (truncate-string-ellipsis))) + (setq ellipsis-pixels (if ellipsis + (if ellipsis-pixels + ellipsis-pixels + (string-pixel-width ellipsis buffer)) + 0)) + (let ((adjusted-pixels + (if (> max-pixels ellipsis-pixels) + (- max-pixels ellipsis-pixels) + max-pixels))) + (while (<= low high) + (setq mid (floor (+ low high) 2)) + (if (<= (car (window-text-pixel-size nil 1 mid)) + adjusted-pixels) + (setq low (1+ mid)) + (setq high (1- mid)))))) + (set-window-buffer nil original-buffer 'keep-margins) + (if mid + ;; Binary search ran. + (if (and ellipsis (> max-pixels ellipsis-pixels)) + (concat (substring string 0 (1- high)) ellipsis) + (substring string 0 (1- high))) + ;; Fast path. + string)))))) + ;;;###autoload (defun string-glyph-split (string) "Split STRING into a list of strings representing separate glyphs. diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el index 99a64d701cf..7b4d0f0bf1f 100644 --- a/lisp/emacs-lisp/syntax.el +++ b/lisp/emacs-lisp/syntax.el @@ -1,6 +1,6 @@ ;;; syntax.el --- helper functions to find syntactic context -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el index f4220501b35..0dea606f042 100644 --- a/lisp/emacs-lisp/tabulated-list.el +++ b/lisp/emacs-lisp/tabulated-list.el @@ -1,6 +1,6 @@ ;;; tabulated-list.el --- generic major mode for tabulated lists -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Chong Yidong ;; Keywords: extensions, lisp diff --git a/lisp/emacs-lisp/tcover-ses.el b/lisp/emacs-lisp/tcover-ses.el index 22eedcf16c3..12322614e89 100644 --- a/lisp/emacs-lisp/tcover-ses.el +++ b/lisp/emacs-lisp/tcover-ses.el @@ -1,6 +1,6 @@ ;;; tcover-ses.el --- Example use of `testcover' to test "SES" -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Jonathan Yavner ;; Keywords: spreadsheet lisp utility diff --git a/lisp/emacs-lisp/testcover.el b/lisp/emacs-lisp/testcover.el index eb78768f0e6..a3054eb2f83 100644 --- a/lisp/emacs-lisp/testcover.el +++ b/lisp/emacs-lisp/testcover.el @@ -1,6 +1,6 @@ ;;; testcover.el --- Visual code-coverage tool -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Jonathan Yavner ;; Keywords: lisp utility diff --git a/lisp/emacs-lisp/text-property-search.el b/lisp/emacs-lisp/text-property-search.el index 78ea01859b3..f7709b27f31 100644 --- a/lisp/emacs-lisp/text-property-search.el +++ b/lisp/emacs-lisp/text-property-search.el @@ -1,6 +1,6 @@ ;;; text-property-search.el --- search for text properties -*- lexical-binding:t -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: convenience diff --git a/lisp/emacs-lisp/thunk.el b/lisp/emacs-lisp/thunk.el index f5d74b8a66a..971095503b4 100644 --- a/lisp/emacs-lisp/thunk.el +++ b/lisp/emacs-lisp/thunk.el @@ -1,6 +1,6 @@ ;;; thunk.el --- Lazy form evaluation -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Nicolas Petton ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/emacs-lisp/timeout.el b/lisp/emacs-lisp/timeout.el index 7529d4bc0a4..b5ea819a6e2 100644 --- a/lisp/emacs-lisp/timeout.el +++ b/lisp/emacs-lisp/timeout.el @@ -1,6 +1,6 @@ ;;; timeout.el --- Throttle or debounce Elisp functions -*- lexical-binding: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Karthik Chikmagalur ;; Keywords: convenience, extensions diff --git a/lisp/emacs-lisp/timer-list.el b/lisp/emacs-lisp/timer-list.el index 0c28887a20a..9416e217ba9 100644 --- a/lisp/emacs-lisp/timer-list.el +++ b/lisp/emacs-lisp/timer-list.el @@ -1,6 +1,6 @@ ;;; timer-list.el --- list active timers in a buffer -*- lexical-binding:t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/emacs-lisp/timer.el b/lisp/emacs-lisp/timer.el index fb5c2b1829f..84b9e6789da 100644 --- a/lisp/emacs-lisp/timer.el +++ b/lisp/emacs-lisp/timer.el @@ -1,6 +1,6 @@ ;;; timer.el --- run a function with args at some time in future -*- lexical-binding: t -*- -;; Copyright (C) 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/emacs-lisp/tq.el b/lisp/emacs-lisp/tq.el index 5edc0bc4c76..4963bc9b3e1 100644 --- a/lisp/emacs-lisp/tq.el +++ b/lisp/emacs-lisp/tq.el @@ -1,6 +1,6 @@ ;;; tq.el --- utility to maintain a transaction queue -*- lexical-binding:t -*- -;; Copyright (C) 1985-1987, 1992, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985-1987, 1992, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Scott Draves diff --git a/lisp/emacs-lisp/trace.el b/lisp/emacs-lisp/trace.el index 642488e6e3a..1cb755577d7 100644 --- a/lisp/emacs-lisp/trace.el +++ b/lisp/emacs-lisp/trace.el @@ -1,6 +1,6 @@ ;;; trace.el --- tracing facility for Emacs Lisp functions -*- lexical-binding: t -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: Hans Chalupsky ;; Maintainer: emacs-devel@gnu.org @@ -163,36 +163,38 @@ You can call this function to add internal values in the trace buffer." "Generate a string that describes that FUNCTION has been entered. LEVEL is the trace level, ARGS is the list of arguments passed to FUNCTION." (unless inhibit-trace - (trace--insert - (let ((ctx (funcall context)) - (print-circle t) - (print-escape-newlines t)) - (format "%s%s%d -> %s%s\n" - (mapconcat #'char-to-string - (make-string (max 0 (1- level)) ?|) " ") - (if (> level 1) " " "") - level - ;; FIXME: Make it so we can click the function name to - ;; jump to its definition and/or untrace it. - (cl-prin1-to-string (cons function args)) - ctx))))) + (let ((inhibit-trace t)) + (trace--insert + (let ((ctx (funcall context)) + (print-circle t) + (print-escape-newlines t)) + (format "%s%s%d -> %s%s\n" + (mapconcat #'char-to-string + (make-string (max 0 (1- level)) ?|) " ") + (if (> level 1) " " "") + level + ;; FIXME: Make it so we can click the function name to + ;; jump to its definition and/or untrace it. + (cl-prin1-to-string (cons function args)) + ctx)))))) (defun trace--exit-message (function level value context) "Generate a string that describes that FUNCTION has exited. LEVEL is the trace level, VALUE value returned by FUNCTION." (unless inhibit-trace - (trace--insert - (let ((ctx (funcall context)) - (print-circle t) - (print-escape-newlines t)) - (format "%s%s%d <- %s: %s%s\n" - (mapconcat 'char-to-string (make-string (1- level) ?|) " ") - (if (> level 1) " " "") - level - function - ;; Do this so we'll see strings: - (cl-prin1-to-string value) - ctx))))) + (let ((inhibit-trace t)) + (trace--insert + (let ((ctx (funcall context)) + (print-circle t) + (print-escape-newlines t)) + (format "%s%s%d <- %s: %s%s\n" + (mapconcat #'char-to-string (make-string (1- level) ?|) " ") + (if (> level 1) " " "") + level + function + ;; Do this so we'll see strings: + (cl-prin1-to-string value) + ctx)))))) (defvar trace--timer nil) @@ -261,7 +263,7 @@ If `current-prefix-arg' is non-nil, also read a buffer and a \"context\" (cons (let ((default (function-called-at-point))) (intern (completing-read (format-prompt prompt default) - obarray 'fboundp t nil nil + obarray #'fboundp t nil nil (if default (symbol-name default))))) (when current-prefix-arg (list @@ -307,7 +309,7 @@ the output buffer or changing the window configuration." (trace-function-internal function buffer t context)) ;;;###autoload -(defalias 'trace-function 'trace-function-foreground) +(defalias 'trace-function #'trace-function-foreground) (defun untrace-function (function) "Untraces FUNCTION and possibly activates all remaining advice. diff --git a/lisp/emacs-lisp/track-changes.el b/lisp/emacs-lisp/track-changes.el index bf899eebbe9..49cadc8f902 100644 --- a/lisp/emacs-lisp/track-changes.el +++ b/lisp/emacs-lisp/track-changes.el @@ -1,9 +1,9 @@ ;;; track-changes.el --- API to react to buffer modifications -*- lexical-binding: t; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier -;; Version: 1.4 +;; Version: 1.5 ;; Package-Requires: ((emacs "24")) ;; This file is part of GNU Emacs. @@ -76,6 +76,11 @@ ;;; News: +;; v1.5: +;; +;; - New variable `track-changes-undo-only' to distinguish undo changes +;; from others. +;; ;; v1.3: ;; ;; - Fix bug#73041. @@ -100,6 +105,19 @@ ;; move t-c--before-beg/end so it scales better when there are ;; many small changes. +;;;; Distinguish undo-vs-nonundo + +;; In practice, it seems that this distinction matters only for those +;; clients which make further buffer-changes in response to buffer changes, +;; (e.g. updating diff chunk headers on the fly, line-centering on the fly, +;; inserting criticmarkup to keep track of buffer edits, ...). +;; If all or none of the changes occurred during undo, then it's easy. +;; If some did and some didn't and we need to merge them into a single change, +;; there are two options: +;; - Do the disjoint thing. +;; - Merge them into a single change that's considered as "nonundo". +;; We currently don't implement "the disjoint way". + (require 'cl-lib) ;;;; Internal types and variables. @@ -130,6 +148,7 @@ state is created." (beg (point-max)) (end (point-min)) (before nil) + (undo t :type boolean) ;Non-nil until proven otherwise. (next nil)) (defvar-local track-changes--trackers () @@ -190,6 +209,9 @@ Each call is recorded as a (BUFFER-NAME . BACKTRACE).") The errors are kept in `track-changes--error-log'. If set to `trace', then we additionally keep a trace of recent calls to the API.") +(defvar track-changes-undo-only nil + "Bound to non-nil by `track-changes-fetch' if the change was an undo.") + (cl-defun track-changes-register ( signal &key nobefore disjoint immediate) "Register a new tracker whose change-tracking function is SIGNAL. Return the ID of the new tracker. @@ -281,7 +303,10 @@ This reflects a bug somewhere, so please report it when it happens. If no changes occurred since the last time, it doesn't call FUNC and returns nil, otherwise it returns the value returned by FUNC -and re-enable the TRACKER corresponding to ID." +and re-enable the TRACKER corresponding to ID. + +During the call to FUNC, `track-changes-undo-only' indicates if the changes +were the result of `undo'." (track-changes--trace) (cl-assert (memq id track-changes--trackers)) (unless (equal track-changes--buffer-size (buffer-size)) @@ -289,6 +314,7 @@ and re-enable the TRACKER corresponding to ID." `(buffer-size ,track-changes--buffer-size ,(buffer-size)))) (let ((beg nil) (end nil) + (is-undo t) (before t) (lenbefore 0) (states ())) @@ -316,6 +342,7 @@ and re-enable the TRACKER corresponding to ID." (setq states nil))) (dolist (state states) + (when is-undo (setq is-undo (track-changes--state-undo state))) (let ((prevbeg (track-changes--state-beg state)) (prevend (track-changes--state-end state)) (prevbefore (track-changes--state-before state))) @@ -384,7 +411,8 @@ and re-enable the TRACKER corresponding to ID." ;; Update the tracker's state *before* running `func' so we don't risk ;; mistakenly replaying the changes in case `func' exits non-locally. (setf (track-changes--tracker-state id) track-changes--state) - (funcall func beg end (or before lenbefore))) + (let ((track-changes-undo-only is-undo)) + (funcall func beg end (or before lenbefore)))) ;; Re-enable the tracker's signal only after running `func', so ;; as to avoid nested invocations. (cl-pushnew id track-changes--clean-trackers)))) @@ -629,6 +657,8 @@ Details logged to `track-changes--error-log'") beg end (track-changes--state-end track-changes--state) track-changes--before-end))))) + (unless undo-in-progress + (setf (track-changes--state-undo track-changes--state) nil)) (while track-changes--clean-trackers (let ((tracker (pop track-changes--clean-trackers))) (if (track-changes--tracker-immediate tracker) diff --git a/lisp/emacs-lisp/unsafep.el b/lisp/emacs-lisp/unsafep.el index e668053da22..045c35cb6ab 100644 --- a/lisp/emacs-lisp/unsafep.el +++ b/lisp/emacs-lisp/unsafep.el @@ -1,6 +1,6 @@ ;;; unsafep.el --- Determine whether a Lisp form is safe to evaluate -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Jonathan Yavner ;; Keywords: safety lisp utility diff --git a/lisp/emacs-lisp/vtable.el b/lisp/emacs-lisp/vtable.el index 29791e2aaa0..994d8aac4b9 100644 --- a/lisp/emacs-lisp/vtable.el +++ b/lisp/emacs-lisp/vtable.el @@ -1,6 +1,6 @@ ;;; vtable.el --- Displaying data in tables -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el index 62ab3f47214..ddf3b594e12 100644 --- a/lisp/emacs-lisp/warnings.el +++ b/lisp/emacs-lisp/warnings.el @@ -1,6 +1,6 @@ ;;; warnings.el --- log and display warnings -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/emacs-lock.el b/lisp/emacs-lock.el index b708e61459e..ec71fa2c713 100644 --- a/lisp/emacs-lock.el +++ b/lisp/emacs-lock.el @@ -1,6 +1,6 @@ ;;; emacs-lock.el --- protect buffers against killing or exiting -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Juanma Barranquero ;; Inspired by emacs-lock.el by Tom Wurgler diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index baee1a6965f..929e9d57db8 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el @@ -1,6 +1,6 @@ ;;; cua-base.el --- emulate CUA key bindings -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Kim F. Storm ;; Keywords: keyboard emulations convenience cua diff --git a/lisp/emulation/cua-gmrk.el b/lisp/emulation/cua-gmrk.el index 882a3a58d4a..dbfecb07863 100644 --- a/lisp/emulation/cua-gmrk.el +++ b/lisp/emulation/cua-gmrk.el @@ -1,6 +1,6 @@ ;;; cua-gmrk.el --- CUA unified global mark support -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Kim F. Storm ;; Keywords: keyboard emulations convenience cua mark diff --git a/lisp/emulation/cua-rect.el b/lisp/emulation/cua-rect.el index 218e8ea418c..ed4e58d0cfc 100644 --- a/lisp/emulation/cua-rect.el +++ b/lisp/emulation/cua-rect.el @@ -1,6 +1,6 @@ ;;; cua-rect.el --- CUA unified rectangle support -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Kim F. Storm ;; Keywords: keyboard emulations convenience CUA diff --git a/lisp/emulation/edt-lk201.el b/lisp/emulation/edt-lk201.el index d5b9869e9a6..beb4208e9f4 100644 --- a/lisp/emulation/edt-lk201.el +++ b/lisp/emulation/edt-lk201.el @@ -1,6 +1,6 @@ ;;; edt-lk201.el --- enhanced EDT keypad mode emulation for LK-201 keyboards -*- lexical-binding: t -*- -;; Copyright (C) 1986, 1992-1993, 1995, 2001-2025 Free Software +;; Copyright (C) 1986, 1992-1993, 1995, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Kevin Gallagher diff --git a/lisp/emulation/edt-mapper.el b/lisp/emulation/edt-mapper.el index 69e536f6966..762c226d995 100644 --- a/lisp/emulation/edt-mapper.el +++ b/lisp/emulation/edt-mapper.el @@ -1,6 +1,6 @@ ;;; edt-mapper.el --- create an EDT LK-201 map file for X-Windows Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1995, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 2000-2026 Free Software Foundation, Inc. ;; Author: Kevin Gallagher ;; Keywords: emulations diff --git a/lisp/emulation/edt-pc.el b/lisp/emulation/edt-pc.el index 8c7e902c928..2f81ef50dad 100644 --- a/lisp/emulation/edt-pc.el +++ b/lisp/emulation/edt-pc.el @@ -1,6 +1,6 @@ ;;; edt-pc.el --- enhanced EDT keypad mode emulation for PC 101 keyboards -*- lexical-binding: t -*- -;; Copyright (C) 1986, 1994-1995, 2001-2025 Free Software Foundation, +;; Copyright (C) 1986, 1994-1995, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Kevin Gallagher diff --git a/lisp/emulation/edt-vt100.el b/lisp/emulation/edt-vt100.el index b2c359a35e0..a33133e5917 100644 --- a/lisp/emulation/edt-vt100.el +++ b/lisp/emulation/edt-vt100.el @@ -1,6 +1,6 @@ ;;; edt-vt100.el --- enhanced EDT keypad mode emulation for VT series terminals -*- lexical-binding: t -*- -;; Copyright (C) 1986, 1992-1993, 1995, 2002-2025 Free Software +;; Copyright (C) 1986, 1992-1993, 1995, 2002-2026 Free Software ;; Foundation, Inc. ;; Author: Kevin Gallagher diff --git a/lisp/emulation/edt.el b/lisp/emulation/edt.el index 7f16adcf353..9aa1ad16577 100644 --- a/lisp/emulation/edt.el +++ b/lisp/emulation/edt.el @@ -1,6 +1,6 @@ ;;; edt.el --- enhanced EDT keypad mode emulation for GNU Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1986, 1992-1995, 2000-2025 Free Software Foundation, +;; Copyright (C) 1986, 1992-1995, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Kevin Gallagher diff --git a/lisp/emulation/keypad.el b/lisp/emulation/keypad.el index 6e1e55e66a8..1f27b1322c6 100644 --- a/lisp/emulation/keypad.el +++ b/lisp/emulation/keypad.el @@ -1,6 +1,6 @@ ;;; keypad.el --- simplified keypad bindings -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Kim F. Storm ;; Keywords: keyboard convenience diff --git a/lisp/emulation/viper-cmd.el b/lisp/emulation/viper-cmd.el index 95f5507f33a..3cbdcddac0a 100644 --- a/lisp/emulation/viper-cmd.el +++ b/lisp/emulation/viper-cmd.el @@ -1,6 +1,6 @@ ;;; viper-cmd.el --- Vi command support for Viper -*- lexical-binding:t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper-ex.el b/lisp/emulation/viper-ex.el index 03d1948824e..ca3483db48d 100644 --- a/lisp/emulation/viper-ex.el +++ b/lisp/emulation/viper-ex.el @@ -1,6 +1,6 @@ ;;; viper-ex.el --- functions implementing the Ex commands for Viper -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper-init.el b/lisp/emulation/viper-init.el index 5f5a84e6466..6336495e570 100644 --- a/lisp/emulation/viper-init.el +++ b/lisp/emulation/viper-init.el @@ -1,6 +1,6 @@ ;;; viper-init.el --- some common definitions for Viper -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper-keym.el b/lisp/emulation/viper-keym.el index 0c8aca4e5fb..f0c4129b9ab 100644 --- a/lisp/emulation/viper-keym.el +++ b/lisp/emulation/viper-keym.el @@ -1,6 +1,6 @@ ;;; viper-keym.el --- Viper keymaps -*- lexical-binding:t -*- -;; Copyright (C) 1994-1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1997, 2000-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper-macs.el b/lisp/emulation/viper-macs.el index 5a90c641d09..33bdd6fccf9 100644 --- a/lisp/emulation/viper-macs.el +++ b/lisp/emulation/viper-macs.el @@ -1,6 +1,6 @@ ;;; viper-macs.el --- functions implementing keyboard macros for Viper -*- lexical-binding:t -*- -;; Copyright (C) 1994-1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1997, 2000-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el index fbb1bbb2596..7e2899accbb 100644 --- a/lisp/emulation/viper-mous.el +++ b/lisp/emulation/viper-mous.el @@ -1,6 +1,6 @@ ;;; viper-mous.el --- mouse support for Viper -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper-util.el b/lisp/emulation/viper-util.el index 197f488f9f1..5593ae4506f 100644 --- a/lisp/emulation/viper-util.el +++ b/lisp/emulation/viper-util.el @@ -1,6 +1,6 @@ ;;; viper-util.el --- Utilities used by viper.el -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: viper diff --git a/lisp/emulation/viper.el b/lisp/emulation/viper.el index 5c13919beec..dacd26d5b5f 100644 --- a/lisp/emulation/viper.el +++ b/lisp/emulation/viper.el @@ -3,7 +3,7 @@ ;; and a venomous VI PERil. ;; Viper Is also a Package for Emacs Rebels. -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Keywords: emulations diff --git a/lisp/env.el b/lisp/env.el index 9e8b7f53a11..a81554d0682 100644 --- a/lisp/env.el +++ b/lisp/env.el @@ -1,6 +1,6 @@ ;;; env.el --- functions to manipulate environment variables -*- lexical-binding:t -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: processes, unix diff --git a/lisp/epa-dired.el b/lisp/epa-dired.el index d076da98b76..94e5bb2c979 100644 --- a/lisp/epa-dired.el +++ b/lisp/epa-dired.el @@ -1,6 +1,6 @@ ;;; epa-dired.el --- the EasyPG Assistant, dired extension -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/epa-file.el b/lisp/epa-file.el index 729360449b1..9bf6916ff7a 100644 --- a/lisp/epa-file.el +++ b/lisp/epa-file.el @@ -1,6 +1,6 @@ ;;; epa-file.el --- the EasyPG Assistant, transparent file encryption -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/epa-hook.el b/lisp/epa-hook.el index 61dba3f244d..00a40296f94 100644 --- a/lisp/epa-hook.el +++ b/lisp/epa-hook.el @@ -1,6 +1,6 @@ ;;; epa-hook.el --- preloaded code to enable epa-file.el -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/epa-ks.el b/lisp/epa-ks.el index 385690025aa..83c8bc38b26 100644 --- a/lisp/epa-ks.el +++ b/lisp/epa-ks.el @@ -1,6 +1,6 @@ ;;; epa-ks.el --- EasyPG Key Server Client -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Philip Kaludercic ;; Maintainer: Philip Kaludercic diff --git a/lisp/epa-mail.el b/lisp/epa-mail.el index 0aa1338d9f7..0ea6ca245ee 100644 --- a/lisp/epa-mail.el +++ b/lisp/epa-mail.el @@ -1,6 +1,6 @@ ;;; epa-mail.el --- the EasyPG Assistant, minor-mode for mail composer -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG, mail, message diff --git a/lisp/epa.el b/lisp/epa.el index 5c226f794c7..8d3315891b4 100644 --- a/lisp/epa.el +++ b/lisp/epa.el @@ -1,6 +1,6 @@ ;;; epa.el --- the EasyPG Assistant -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/epg-config.el b/lisp/epg-config.el index f043cecde0b..4ac405f30a5 100644 --- a/lisp/epg-config.el +++ b/lisp/epg-config.el @@ -1,6 +1,6 @@ ;;; epg-config.el --- configuration of the EasyPG Library -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/epg.el b/lisp/epg.el index c796230b12c..465f2eeb9d4 100644 --- a/lisp/epg.el +++ b/lisp/epg.el @@ -1,6 +1,6 @@ ;;; epg.el --- the EasyPG Library -*- lexical-binding: t -*- -;; Copyright (C) 1999-2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/erc/ChangeLog.1 b/lisp/erc/ChangeLog.1 index 220ea2f09e6..7bf5e5dc58a 100644 --- a/lisp/erc/ChangeLog.1 +++ b/lisp/erc/ChangeLog.1 @@ -11703,7 +11703,7 @@ * erc-speak.el, erc.el: New file. - Copyright (C) 2001-2025 Free Software Foundation, Inc. + Copyright (C) 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/erc/ChangeLog.2 b/lisp/erc/ChangeLog.2 index c3c301b9a6f..d321344fe66 100644 --- a/lisp/erc/ChangeLog.2 +++ b/lisp/erc/ChangeLog.2 @@ -757,7 +757,7 @@ See ChangeLog.1 for earlier changes. - Copyright (C) 2009-2025 Free Software Foundation, Inc. + Copyright (C) 2009-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/erc/erc-autoaway.el b/lisp/erc/erc-autoaway.el index 5ef825677d1..4186c60f92c 100644 --- a/lisp/erc/erc-autoaway.el +++ b/lisp/erc/erc-autoaway.el @@ -1,6 +1,6 @@ ;;; erc-autoaway.el --- Provides autoaway for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Jorgen Schaefer ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el index 81907ffa462..819b8ae5033 100644 --- a/lisp/erc/erc-backend.el +++ b/lisp/erc/erc-backend.el @@ -1,6 +1,6 @@ ;;; erc-backend.el --- Backend network communication for ERC -*- lexical-binding:t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Lawrence Mitchell ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el index 77aec20c40f..875ceec111a 100644 --- a/lisp/erc/erc-button.el +++ b/lisp/erc/erc-button.el @@ -1,6 +1,6 @@ ;;; erc-button.el --- A way of buttonizing certain things in ERC buffers -*- lexical-binding:t -*- -;; Copyright (C) 1996-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el index cb3ce3cab89..78bc8e0f77d 100644 --- a/lisp/erc/erc-capab.el +++ b/lisp/erc/erc-capab.el @@ -1,6 +1,6 @@ ;;; erc-capab.el --- support for dancer-ircd and hyperion's CAPAB -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-common.el b/lisp/erc/erc-common.el index e383e92c7ff..1a0b9c323d1 100644 --- a/lisp/erc/erc-common.el +++ b/lisp/erc/erc-common.el @@ -1,6 +1,6 @@ ;;; erc-common.el --- Macros and types for ERC -*- lexical-binding:t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; ;; Maintainer: Amin Bandali , F. Jason Park ;; Keywords: comm, IRC, chat, client, internet @@ -641,25 +641,6 @@ Otherwise, return LIST-OR-ATOM." (car ,list-or-atom) ,list-or-atom)))) -(defmacro erc--doarray (spec &rest body) - "Map over ARRAY, running BODY with VAR bound to iteration element. -Behave more or less like `seq-doseq', but tailor operations for -arrays. - -\(fn (VAR ARRAY [RESULT]) BODY...)" - (declare (indent 1) (debug ((symbolp form &optional form) body))) - (let ((array (make-symbol "array")) - (len (make-symbol "len")) - (i (make-symbol "i"))) - `(let* ((,array ,(nth 1 spec)) - (,len (length ,array)) - (,i 0)) - (while-let (((< ,i ,len)) - (,(car spec) (aref ,array ,i))) - ,@body - (cl-incf ,i)) - ,(nth 2 spec)))) - (provide 'erc-common) ;;; erc-common.el ends here diff --git a/lisp/erc/erc-compat.el b/lisp/erc/erc-compat.el index 4a8029d68ac..ec1136e6478 100644 --- a/lisp/erc/erc-compat.el +++ b/lisp/erc/erc-compat.el @@ -1,6 +1,6 @@ ;;; erc-compat.el --- ERC compatibility code for older Emacsen -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2003, 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2003, 2005-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el index c5fa34132d4..cfd17c9d479 100644 --- a/lisp/erc/erc-dcc.el +++ b/lisp/erc/erc-dcc.el @@ -1,6 +1,6 @@ ;;; erc-dcc.el --- CTCP DCC module for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: Ben A. Mesander ;; Noah Friedman diff --git a/lisp/erc/erc-desktop-notifications.el b/lisp/erc/erc-desktop-notifications.el index 6ef2f0d8ea1..e4a62c614a4 100644 --- a/lisp/erc/erc-desktop-notifications.el +++ b/lisp/erc/erc-desktop-notifications.el @@ -1,6 +1,6 @@ ;;; erc-desktop-notifications.el --- Send notification on PRIVMSG or mentions -*- lexical-binding:t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Julien Danjou ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-ezbounce.el b/lisp/erc/erc-ezbounce.el index a45484aa54b..0287b212a49 100644 --- a/lisp/erc/erc-ezbounce.el +++ b/lisp/erc/erc-ezbounce.el @@ -1,6 +1,6 @@ ;;; erc-ezbounce.el --- Handle EZBounce bouncer commands -*- lexical-binding: t; -*- -;; Copyright (C) 2002, 2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Andreas Fuchs ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el index cbe91861e48..7ca29f16e03 100644 --- a/lisp/erc/erc-fill.el +++ b/lisp/erc/erc-fill.el @@ -1,6 +1,6 @@ ;;; erc-fill.el --- Filling IRC messages in various ways -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Andreas Fuchs ;; Mario Lang diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el index 2a787f3e014..f1f92923ea2 100644 --- a/lisp/erc/erc-goodies.el +++ b/lisp/erc/erc-goodies.el @@ -1,6 +1,6 @@ ;;; erc-goodies.el --- Collection of ERC modules -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Jorgen Schaefer ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el index 9fddf687738..239accb4240 100644 --- a/lisp/erc/erc-ibuffer.el +++ b/lisp/erc/erc-ibuffer.el @@ -1,6 +1,6 @@ ;;; erc-ibuffer.el --- ibuffer integration with ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2002, 2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-identd.el b/lisp/erc/erc-identd.el index 572ff8f5f48..849ed52a884 100644 --- a/lisp/erc/erc-identd.el +++ b/lisp/erc/erc-identd.el @@ -1,6 +1,6 @@ ;;; erc-identd.el --- RFC1413 (identd authentication protocol) server -*- lexical-binding: t; -*- -;; Copyright (C) 2003, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2006-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el index 2e244fa157e..965e8ead14c 100644 --- a/lisp/erc/erc-imenu.el +++ b/lisp/erc/erc-imenu.el @@ -1,6 +1,6 @@ ;;; erc-imenu.el --- Imenu support for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el index 5969f85fd24..29c9e1b4d69 100644 --- a/lisp/erc/erc-join.el +++ b/lisp/erc/erc-join.el @@ -1,6 +1,6 @@ ;;; erc-join.el --- autojoin channels on connect and reconnects -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-lang.el b/lisp/erc/erc-lang.el index 8c081b333d9..78375139374 100644 --- a/lisp/erc/erc-lang.el +++ b/lisp/erc/erc-lang.el @@ -1,6 +1,6 @@ ;;; erc-lang.el --- provide the LANG command to ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2002, 2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-list.el b/lisp/erc/erc-list.el index a715a35b82b..f09c7c38587 100644 --- a/lisp/erc/erc-list.el +++ b/lisp/erc/erc-list.el @@ -1,6 +1,6 @@ ;;; erc-list.el --- /list support for ERC -*- lexical-binding:t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Tom Tromey ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el index 173e6724a8f..01ea1a3d3c8 100644 --- a/lisp/erc/erc-log.el +++ b/lisp/erc/erc-log.el @@ -1,6 +1,6 @@ ;;; erc-log.el --- Logging facilities for ERC. -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Lawrence Mitchell ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el index ffb5a2af91e..b003cb1f49e 100644 --- a/lisp/erc/erc-match.el +++ b/lisp/erc/erc-match.el @@ -1,6 +1,6 @@ ;;; erc-match.el --- Highlight messages matching certain regexps -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Andreas Fuchs ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el index 7341eb1b3b3..c107659a8fc 100644 --- a/lisp/erc/erc-menu.el +++ b/lisp/erc/erc-menu.el @@ -1,6 +1,6 @@ ;;; erc-menu.el --- Menu-bar definitions for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2002, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2002, 2004-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-netsplit.el b/lisp/erc/erc-netsplit.el index d99ec67cca0..eafde762e54 100644 --- a/lisp/erc/erc-netsplit.el +++ b/lisp/erc/erc-netsplit.el @@ -1,6 +1,6 @@ ;;; erc-netsplit.el --- Reduce JOIN/QUIT messages on netsplits -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el index 289b6f8bd8f..3e924d0b0f1 100644 --- a/lisp/erc/erc-networks.el +++ b/lisp/erc/erc-networks.el @@ -1,6 +1,6 @@ ;;; erc-networks.el --- IRC networks -*- lexical-binding: t; -*- -;; Copyright (C) 2002, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2004-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-nicks.el b/lisp/erc/erc-nicks.el index a3e9b1f7b46..0c06c7b8b35 100644 --- a/lisp/erc/erc-nicks.el +++ b/lisp/erc/erc-nicks.el @@ -1,6 +1,6 @@ ;;; erc-nicks.el -- Nick colors for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: David Leatherman ;; Andy Stewart diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el index 38ed0f8fb69..f194fbc6643 100644 --- a/lisp/erc/erc-notify.el +++ b/lisp/erc/erc-notify.el @@ -1,6 +1,6 @@ ;;; erc-notify.el --- Online status change notification -*- lexical-binding:t -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-page.el b/lisp/erc/erc-page.el index 8814bcd8228..409b8a12286 100644 --- a/lisp/erc/erc-page.el +++ b/lisp/erc/erc-page.el @@ -1,6 +1,6 @@ ;;; erc-page.el --- CTCP PAGE support for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2002, 2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2004, 2006-2026 Free Software Foundation, Inc. ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el index b91f213a723..e5c72cda796 100644 --- a/lisp/erc/erc-pcomplete.el +++ b/lisp/erc/erc-pcomplete.el @@ -1,6 +1,6 @@ ;;; erc-pcomplete.el --- Provides programmable completion for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Sacha Chua ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-replace.el b/lisp/erc/erc-replace.el index e95761e2364..188da491b75 100644 --- a/lisp/erc/erc-replace.el +++ b/lisp/erc/erc-replace.el @@ -1,6 +1,6 @@ ;;; erc-replace.el --- wash and massage messages inserted into the buffer -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Andreas Fuchs ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-ring.el b/lisp/erc/erc-ring.el index 2a914b7657b..752894d29db 100644 --- a/lisp/erc/erc-ring.el +++ b/lisp/erc/erc-ring.el @@ -1,6 +1,6 @@ ;;; erc-ring.el --- Command history handling for erc using ring.el -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-sasl.el b/lisp/erc/erc-sasl.el index 5228fc5e5aa..a198fd3930b 100644 --- a/lisp/erc/erc-sasl.el +++ b/lisp/erc/erc-sasl.el @@ -1,6 +1,6 @@ ;;; erc-sasl.el --- SASL for ERC -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; ;; This file is part of GNU Emacs. ;; diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el index 55107d17441..c45e572757f 100644 --- a/lisp/erc/erc-services.el +++ b/lisp/erc/erc-services.el @@ -1,6 +1,6 @@ ;;; erc-services.el --- Identify to NickServ -*- lexical-binding:t -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Maintainer: Amin Bandali , F. Jason Park ;; URL: https://www.emacswiki.org/emacs/ErcNickserv diff --git a/lisp/erc/erc-sound.el b/lisp/erc/erc-sound.el index 0e8aa8d10be..b824714672d 100644 --- a/lisp/erc/erc-sound.el +++ b/lisp/erc/erc-sound.el @@ -1,6 +1,6 @@ ;;; erc-sound.el --- CTCP SOUND support for ERC -*- lexical-binding: t -*- -;; Copyright (C) 2002-2003, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2003, 2006-2026 Free Software Foundation, Inc. ;; Maintainer: Amin Bandali , F. Jason Park ;; URL: https://www.emacswiki.org/emacs/ErcSound diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el index 720b5cd5d11..7ce52db25b7 100644 --- a/lisp/erc/erc-speedbar.el +++ b/lisp/erc/erc-speedbar.el @@ -1,6 +1,6 @@ ;;; erc-speedbar.el --- Speedbar support for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Contributor: Eric M. Ludlam diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el index b354349bcec..a925cbd430a 100644 --- a/lisp/erc/erc-spelling.el +++ b/lisp/erc/erc-spelling.el @@ -1,6 +1,6 @@ ;;; erc-spelling.el --- use flyspell in ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Jorgen Schaefer ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el index c3ab155cb24..7aacad3b125 100644 --- a/lisp/erc/erc-stamp.el +++ b/lisp/erc/erc-stamp.el @@ -1,6 +1,6 @@ ;;; erc-stamp.el --- Timestamping for ERC messages -*- lexical-binding:t -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-status-sidebar.el b/lisp/erc/erc-status-sidebar.el index 1e69b3d4be7..792231fb727 100644 --- a/lisp/erc/erc-status-sidebar.el +++ b/lisp/erc/erc-status-sidebar.el @@ -1,6 +1,6 @@ ;;; erc-status-sidebar.el --- HexChat-like activity overview for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2017, 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017, 2020-2026 Free Software Foundation, Inc. ;; Author: Andrew Barbarello ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el index 2897c3ede93..f5ea63ae764 100644 --- a/lisp/erc/erc-track.el +++ b/lisp/erc/erc-track.el @@ -1,6 +1,6 @@ ;;; erc-track.el --- Track modified channel buffers -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-truncate.el b/lisp/erc/erc-truncate.el index f5404a15b71..8323eb92235 100644 --- a/lisp/erc/erc-truncate.el +++ b/lisp/erc/erc-truncate.el @@ -1,6 +1,6 @@ ;;; erc-truncate.el --- Functions for truncating ERC buffers -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Andreas Fuchs ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc-xdcc.el b/lisp/erc/erc-xdcc.el index 35b2ece006b..df8c8694d51 100644 --- a/lisp/erc/erc-xdcc.el +++ b/lisp/erc/erc-xdcc.el @@ -1,6 +1,6 @@ ;;; erc-xdcc.el --- XDCC file-server support for ERC -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Mario Lang ;; Maintainer: Amin Bandali , F. Jason Park diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 271c5d5fcf8..572b73188e3 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -1,6 +1,6 @@ ;;; erc.el --- An Emacs Internet Relay Chat client -*- lexical-binding:t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Alexander L. Belikoff ;; Maintainer: Amin Bandali , F. Jason Park @@ -685,7 +685,7 @@ Also remove members from the server table if this was their only buffer." (erc-remove-channel-users))) (defvar erc-channel-user-signal-if-status-unknown nil - "If non-nil ERC signals before setting an unadvertized status prefix. + "If non-nil ERC signals before setting an unadvertised status prefix. But only in ERC buffers. Otherwise, if nil, accessors like `erc-channel-user-halfop' ignore such attempts and return nil.") @@ -7607,7 +7607,7 @@ Use the getter of the same name to retrieve the current value.") (ct (make-char-table 'erc--channel-mode-types)) (type ?a)) (dolist (cs types) - (erc--doarray (c cs) + (seq-doseq (c cs) (aset ct c type)) (cl-incf type)) (make-erc--channel-mode-types :key key @@ -7626,7 +7626,7 @@ complement relevant letters in STRING." (table (erc--channel-mode-types-table obj)) (fallbackp (erc--channel-mode-types-fallbackp obj)) (+p t)) - (erc--doarray (c string) + (seq-doseq (c string) (cond ((= ?+ c) (setq +p t)) ((= ?- c) (setq +p nil)) ((and status-letters (string-search (string c) status-letters)) @@ -7719,7 +7719,7 @@ dropped were they not already absent." (let ((addp t) ;; redundant-add redundant-drop adding dropping) - (erc--doarray (c string) + (seq-doseq (c string) (pcase c (?+ (setq addp t)) (?- (setq addp nil)) diff --git a/lisp/eshell/em-alias.el b/lisp/eshell/em-alias.el index 3ce21e8080a..b4b2d61505b 100644 --- a/lisp/eshell/em-alias.el +++ b/lisp/eshell/em-alias.el @@ -1,6 +1,6 @@ ;;; em-alias.el --- creation and management of command aliases -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-banner.el b/lisp/eshell/em-banner.el index e50c9513360..72c14a242f7 100644 --- a/lisp/eshell/em-banner.el +++ b/lisp/eshell/em-banner.el @@ -1,6 +1,6 @@ ;;; em-banner.el --- sample module that displays a login banner -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-basic.el b/lisp/eshell/em-basic.el index 4b9b7a51888..54394614711 100644 --- a/lisp/eshell/em-basic.el +++ b/lisp/eshell/em-basic.el @@ -1,6 +1,6 @@ ;;; em-basic.el --- basic shell builtin commands -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-cmpl.el b/lisp/eshell/em-cmpl.el index e6e7ad76485..7832de35449 100644 --- a/lisp/eshell/em-cmpl.el +++ b/lisp/eshell/em-cmpl.el @@ -1,6 +1,6 @@ ;;; em-cmpl.el --- completion using the TAB key -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el index a652a83c88e..ea350d46ca4 100644 --- a/lisp/eshell/em-dirs.el +++ b/lisp/eshell/em-dirs.el @@ -1,6 +1,6 @@ ;;; em-dirs.el --- directory navigation commands -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-elecslash.el b/lisp/eshell/em-elecslash.el index 92886a14b90..9332f5056d7 100644 --- a/lisp/eshell/em-elecslash.el +++ b/lisp/eshell/em-elecslash.el @@ -1,6 +1,6 @@ ;;; em-elecslash.el --- electric forward slashes -*- lexical-binding:t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Sean Whitton diff --git a/lisp/eshell/em-extpipe.el b/lisp/eshell/em-extpipe.el index c5170fed830..7312f4b2b74 100644 --- a/lisp/eshell/em-extpipe.el +++ b/lisp/eshell/em-extpipe.el @@ -1,6 +1,6 @@ ;;; em-extpipe.el --- external shell pipelines -*- lexical-binding:t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Sean Whitton diff --git a/lisp/eshell/em-glob.el b/lisp/eshell/em-glob.el index 45db8d55c0e..2f3ca5c426b 100644 --- a/lisp/eshell/em-glob.el +++ b/lisp/eshell/em-glob.el @@ -1,6 +1,6 @@ ;;; em-glob.el --- extended file name globbing -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-hist.el b/lisp/eshell/em-hist.el index b6af2ef1462..9041c149932 100644 --- a/lisp/eshell/em-hist.el +++ b/lisp/eshell/em-hist.el @@ -1,6 +1,6 @@ ;;; em-hist.el --- history list management -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-ls.el b/lisp/eshell/em-ls.el index 52a330a3353..373af9ab3bf 100644 --- a/lisp/eshell/em-ls.el +++ b/lisp/eshell/em-ls.el @@ -1,6 +1,6 @@ ;;; em-ls.el --- implementation of ls in Lisp -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-pred.el b/lisp/eshell/em-pred.el index 845fc5a3b3d..48ca033ad6b 100644 --- a/lisp/eshell/em-pred.el +++ b/lisp/eshell/em-pred.el @@ -1,6 +1,6 @@ ;;; em-pred.el --- argument predicates and modifiers (ala zsh) -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-prompt.el b/lisp/eshell/em-prompt.el index ce8835e0300..a7e7482fea8 100644 --- a/lisp/eshell/em-prompt.el +++ b/lisp/eshell/em-prompt.el @@ -1,6 +1,6 @@ ;;; em-prompt.el --- command prompts -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-rebind.el b/lisp/eshell/em-rebind.el index 82a1cd76364..aad7ce7f605 100644 --- a/lisp/eshell/em-rebind.el +++ b/lisp/eshell/em-rebind.el @@ -1,6 +1,6 @@ ;;; em-rebind.el --- rebind keys when point is at current input -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-script.el b/lisp/eshell/em-script.el index fa52c132600..4c0d0e5dd9c 100644 --- a/lisp/eshell/em-script.el +++ b/lisp/eshell/em-script.el @@ -1,6 +1,6 @@ ;;; em-script.el --- Eshell script files -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-smart.el b/lisp/eshell/em-smart.el index 4d0c4aef599..2a94d44a153 100644 --- a/lisp/eshell/em-smart.el +++ b/lisp/eshell/em-smart.el @@ -1,6 +1,6 @@ ;;; em-smart.el --- smart display of output -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-term.el b/lisp/eshell/em-term.el index caadeb26239..ec455b3c004 100644 --- a/lisp/eshell/em-term.el +++ b/lisp/eshell/em-term.el @@ -1,6 +1,6 @@ ;;; em-term.el --- running visual commands -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-tramp.el b/lisp/eshell/em-tramp.el index a5a6b288bbc..d9d28863b0a 100644 --- a/lisp/eshell/em-tramp.el +++ b/lisp/eshell/em-tramp.el @@ -1,6 +1,6 @@ ;;; em-tramp.el --- Eshell features that require Tramp -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Aidan Gauland diff --git a/lisp/eshell/em-unix.el b/lisp/eshell/em-unix.el index 9ed80bef562..b71ed4c2473 100644 --- a/lisp/eshell/em-unix.el +++ b/lisp/eshell/em-unix.el @@ -1,6 +1,6 @@ ;;; em-unix.el --- UNIX command aliases -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/em-xtra.el b/lisp/eshell/em-xtra.el index 2f6d148e250..cc98a074a16 100644 --- a/lisp/eshell/em-xtra.el +++ b/lisp/eshell/em-xtra.el @@ -1,6 +1,6 @@ ;;; em-xtra.el --- extra alias functions -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-arg.el b/lisp/eshell/esh-arg.el index ef9334fc1fe..75667d95f30 100644 --- a/lisp/eshell/esh-arg.el +++ b/lisp/eshell/esh-arg.el @@ -1,6 +1,6 @@ ;;; esh-arg.el --- argument processing -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-cmd.el b/lisp/eshell/esh-cmd.el index f07b1c19b95..0f506c7664a 100644 --- a/lisp/eshell/esh-cmd.el +++ b/lisp/eshell/esh-cmd.el @@ -1,6 +1,6 @@ ;;; esh-cmd.el --- command invocation -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-ext.el b/lisp/eshell/esh-ext.el index a1b25bc7a87..f8f50b66f56 100644 --- a/lisp/eshell/esh-ext.el +++ b/lisp/eshell/esh-ext.el @@ -1,6 +1,6 @@ ;;; esh-ext.el --- commands external to Eshell -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-io.el b/lisp/eshell/esh-io.el index def51b0c0cb..7c0b878e3cf 100644 --- a/lisp/eshell/esh-io.el +++ b/lisp/eshell/esh-io.el @@ -1,6 +1,6 @@ ;;; esh-io.el --- I/O management -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-mode.el b/lisp/eshell/esh-mode.el index b41f7aa9055..c1d29e948f4 100644 --- a/lisp/eshell/esh-mode.el +++ b/lisp/eshell/esh-mode.el @@ -1,6 +1,6 @@ ;;; esh-mode.el --- user interface -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-module.el b/lisp/eshell/esh-module.el index cdc5e1ed99d..0b675bffac9 100644 --- a/lisp/eshell/esh-module.el +++ b/lisp/eshell/esh-module.el @@ -1,6 +1,6 @@ ;;; esh-module.el --- Eshell modules -*- lexical-binding:t -*- -;; Copyright (C) 1999-2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2002-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Keywords: processes diff --git a/lisp/eshell/esh-opt.el b/lisp/eshell/esh-opt.el index d3d1d243cc4..d414f75c6cb 100644 --- a/lisp/eshell/esh-opt.el +++ b/lisp/eshell/esh-opt.el @@ -1,6 +1,6 @@ ;;; esh-opt.el --- command options processing -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index 0654ead4ee2..02408cfc234 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -1,6 +1,6 @@ ;;; esh-proc.el --- process management -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-util.el b/lisp/eshell/esh-util.el index bc2e04746b1..c9264602d0f 100644 --- a/lisp/eshell/esh-util.el +++ b/lisp/eshell/esh-util.el @@ -1,6 +1,6 @@ ;;; esh-util.el --- general utilities -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/esh-var.el b/lisp/eshell/esh-var.el index dbf1576b8f4..d79977a6dff 100644 --- a/lisp/eshell/esh-var.el +++ b/lisp/eshell/esh-var.el @@ -1,6 +1,6 @@ ;;; esh-var.el --- handling of variables -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/eshell/eshell.el b/lisp/eshell/eshell.el index 2e4b0b87a00..1b4999fdc47 100644 --- a/lisp/eshell/eshell.el +++ b/lisp/eshell/eshell.el @@ -1,6 +1,6 @@ ;;; eshell.el --- the Emacs command shell -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Version: 2.4.2 @@ -288,7 +288,7 @@ information on Eshell, see Info node `(eshell)Top'." (declare-function eshell--save-history "em-hist" ()) (defun eshell-command-mode-exit () - "Exit the `eshell-commad-mode' minibuffer and save Eshell history." + "Exit the `eshell-command-mode' minibuffer and save Eshell history." (interactive) (when (eshell-using-module 'eshell-hist) (eshell-add-input-to-history diff --git a/lisp/expand.el b/lisp/expand.el index f3e8828056d..c2b5d3e8f0d 100644 --- a/lisp/expand.el +++ b/lisp/expand.el @@ -1,6 +1,6 @@ ;;; expand.el --- make abbreviations more usable -*- lexical-binding: t -*- -;; Copyright (C) 1995-1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Frederic Lepied ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/external-completion.el b/lisp/external-completion.el index 5fd29f801fe..aa23c949241 100644 --- a/lisp/external-completion.el +++ b/lisp/external-completion.el @@ -1,6 +1,6 @@ ;;; external-completion.el --- Let external tools control completion style -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Version: 0.1 ;; Author: Stefan Monnier diff --git a/lisp/ezimage.el b/lisp/ezimage.el index 16a092e3514..25484936e3b 100644 --- a/lisp/ezimage.el +++ b/lisp/ezimage.el @@ -1,6 +1,6 @@ ;;; ezimage.el --- Generalized Image management -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: file, tags, tools diff --git a/lisp/face-remap.el b/lisp/face-remap.el index 305ae7b0f48..9cce3ca95b6 100644 --- a/lisp/face-remap.el +++ b/lisp/face-remap.el @@ -1,6 +1,6 @@ ;;; face-remap.el --- Functions for managing `face-remapping-alist' -*- lexical-binding: t -*- ;; -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: faces, face remapping, display, user commands diff --git a/lisp/facemenu.el b/lisp/facemenu.el index b6537ed1378..21da35266fc 100644 --- a/lisp/facemenu.el +++ b/lisp/facemenu.el @@ -1,6 +1,6 @@ ;;; facemenu.el --- create a face menu for interactively adding fonts to text -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Boris Goldowsky ;; Keywords: faces diff --git a/lisp/faces.el b/lisp/faces.el index cd4086a12f2..eea1773a3a2 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -1,6 +1,6 @@ ;;; faces.el --- Lisp faces -*- lexical-binding: t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal @@ -2963,30 +2963,39 @@ Note: Other faces cannot inherit from the cursor face." :group 'basic-faces) (defface tab-bar - '((((class color) (min-colors 88)) + '((((class color) (min-colors 88) (background light)) :inherit variable-pitch :background "grey85" :foreground "black") + (((class color) (min-colors 88) (background dark)) + :inherit variable-pitch + :background "grey20" + :foreground "white") (((class mono)) :background "grey") (t :inverse-video t)) "Tab bar face." - :version "27.1" + :version "31.1" :group 'basic-faces) (defface tab-line - '((((class color) (min-colors 88)) + '((((class color) (min-colors 88) (background light)) :inherit variable-pitch :height 0.9 :background "grey85" :foreground "black") + (((class color) (min-colors 88) (background dark)) + :inherit variable-pitch + :height 0.9 + :background "grey20" + :foreground "white") (((class mono)) :background "grey") (t :inverse-video t)) "Tab line face." - :version "27.1" + :version "31.1" :group 'basic-faces) (defface menu diff --git a/lisp/ffap.el b/lisp/ffap.el index 4cf2dfebc0f..4f77fd8af6e 100644 --- a/lisp/ffap.el +++ b/lisp/ffap.el @@ -1,6 +1,6 @@ ;;; ffap.el --- find file (or url) at point -*- lexical-binding: t -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Michelangelo Grigni ;; Maintainer: emacs-devel@gnu.org @@ -905,7 +905,7 @@ to extract substrings.") (append base (split-string (buffer-substring-no-properties (point-min) (point-max))))) - ;; Fallback for whedn the compiler is not available. + ;; Fallback for when the compiler is not available. (list (expand-file-name "/usr/include") (expand-file-name "/usr/local/include"))))) ;; Prefer GCC. diff --git a/lisp/filecache.el b/lisp/filecache.el index 66a03d2db11..66a1ed1cbe7 100644 --- a/lisp/filecache.el +++ b/lisp/filecache.el @@ -1,6 +1,6 @@ ;;; filecache.el --- find files using a pre-loaded cache -*- lexical-binding:t -*- -;; Copyright (C) 1996, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2000-2026 Free Software Foundation, Inc. ;; Author: Peter Breton ;; Created: Sun Nov 10 1996 diff --git a/lisp/fileloop.el b/lisp/fileloop.el index a302719bcd5..e91884f3bf3 100644 --- a/lisp/fileloop.el +++ b/lisp/fileloop.el @@ -1,6 +1,6 @@ ;;; fileloop.el --- Operations on multiple files -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier diff --git a/lisp/filenotify.el b/lisp/filenotify.el index 9e35f5413fb..d69fa91aff5 100644 --- a/lisp/filenotify.el +++ b/lisp/filenotify.el @@ -1,6 +1,6 @@ ;;; filenotify.el --- watch files for changes on disk -*- lexical-binding:t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus diff --git a/lisp/files-x.el b/lisp/files-x.el index 1b3c3e3bf42..9b7189c9fd8 100644 --- a/lisp/files-x.el +++ b/lisp/files-x.el @@ -1,6 +1,6 @@ ;;; files-x.el --- extended file handling commands -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Juri Linkov ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/files.el b/lisp/files.el index 6949544a9e4..d4b3dd490c5 100644 --- a/lisp/files.el +++ b/lisp/files.el @@ -1,6 +1,6 @@ ;;; files.el --- file input and output commands -*- lexical-binding:t -*- -;; Copyright (C) 1985-1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 1992-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs @@ -5478,7 +5478,7 @@ BACKUPNAME is the backup file name, which is the old file renamed." (defvar file-name-version-regexp "\\(?:~\\|\\.~[-[:alnum:]:#@^._]+\\(?:~[[:digit:]]+\\)?~\\)" - ;; The last ~[[:digit]]+ matches relative versions in git, + ;; The last ~[[:digit:]]+ matches relative versions in git, ;; e.g. `foo.js.~HEAD~1~'. "Regular expression matching the backup/version part of a file name. Used by `file-name-sans-versions'.") diff --git a/lisp/filesets.el b/lisp/filesets.el index c1a4499388c..d6dd791d369 100644 --- a/lisp/filesets.el +++ b/lisp/filesets.el @@ -1,6 +1,6 @@ ;;; filesets.el --- handle group of files -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Thomas Link ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/find-cmd.el b/lisp/find-cmd.el index 5d5952f54ca..8e7763fd3a6 100644 --- a/lisp/find-cmd.el +++ b/lisp/find-cmd.el @@ -1,6 +1,6 @@ ;;; find-cmd.el --- Build a valid find(1) command with sexps -*- lexical-binding: t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Philip Jackson ;; Version: 0.6 diff --git a/lisp/find-dired.el b/lisp/find-dired.el index dd61bd47d48..399a8098ae7 100644 --- a/lisp/find-dired.el +++ b/lisp/find-dired.el @@ -1,6 +1,6 @@ ;;; find-dired.el --- run a `find' command and dired the output -*- lexical-binding: t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Roland McGrath , ;; Sebastian Kremer diff --git a/lisp/find-file.el b/lisp/find-file.el index 9584a63189c..f9d37ac1498 100644 --- a/lisp/find-file.el +++ b/lisp/find-file.el @@ -4,7 +4,7 @@ ;; Maintainer: emacs-devel@gnu.org ;; Keywords: c, matching, tools -;; Copyright (C) 1994-1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 2001-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/find-lisp.el b/lisp/find-lisp.el index ddfc7e9a7b3..4f8475af004 100644 --- a/lisp/find-lisp.el +++ b/lisp/find-lisp.el @@ -4,7 +4,7 @@ ;; Created: Fri Mar 26 1999 ;; Keywords: unix -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/finder.el b/lisp/finder.el index 4bdc475fbad..c0fa5c3beef 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -1,6 +1,6 @@ ;;; finder.el --- topic & keyword-based code finder -*- lexical-binding: t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Created: 16 Jun 1992 diff --git a/lisp/flow-ctrl.el b/lisp/flow-ctrl.el index 02759fe2b15..3c6bd702457 100644 --- a/lisp/flow-ctrl.el +++ b/lisp/flow-ctrl.el @@ -1,6 +1,6 @@ ;;; flow-ctrl.el --- help for lusers on cu(1) or ttys with wired-in ^S/^Q flow control -*- lexical-binding: t -*- -;; Copyright (C) 1990-1991, 1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1990-1991, 1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Kevin Gallagher diff --git a/lisp/foldout.el b/lisp/foldout.el index 748f56c0c9c..491e706b144 100644 --- a/lisp/foldout.el +++ b/lisp/foldout.el @@ -1,6 +1,6 @@ ;;; foldout.el --- folding extensions for outline-mode and outline-minor-mode -*- lexical-binding: t -*- -;; Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Kevin Broadey ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/follow.el b/lisp/follow.el index 087d3139556..b76214263bc 100644 --- a/lisp/follow.el +++ b/lisp/follow.el @@ -1,6 +1,6 @@ ;;; follow.el --- synchronize windows showing the same buffer -*- lexical-binding: t -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Anders Lindgren ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/font-core.el b/lisp/font-core.el index 41bdb94085c..763bced4e6e 100644 --- a/lisp/font-core.el +++ b/lisp/font-core.el @@ -1,6 +1,6 @@ ;;; font-core.el --- Core interface to font-lock -*- lexical-binding: t; -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: languages, faces diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 0f3c303316b..6e688e7b7b1 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -1,6 +1,6 @@ ;;; font-lock.el --- Electric font lock mode -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Jamie Zawinski ;; Richard Stallman diff --git a/lisp/format-spec.el b/lisp/format-spec.el index 54683c95895..b08c7a1cdee 100644 --- a/lisp/format-spec.el +++ b/lisp/format-spec.el @@ -1,6 +1,6 @@ ;;; format-spec.el --- format arbitrary formatting strings -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: tools @@ -59,7 +59,7 @@ value associated with ?b in SPECIFICATION, either padding it with leading zeros or truncating leading characters until it's ten characters wide\". -the substitution for a specification character can also be a +The substitution for a specification character can also be a function, taking no arguments and returning a string to be used for the replacement. It will only be called if FORMAT uses that character. For example: @@ -73,6 +73,9 @@ like above, so that it is compiled by the byte-compiler. Any text properties of FORMAT are copied to the result, with any text properties of a %-spec itself copied to its substitution. +However, note that face properties from the two sources are not +merged; the face properties of %-spec override the face properties +of substitutions, if any, in the result. IGNORE-MISSING indicates how to handle %-spec characters not present in SPECIFICATION. If it is nil or omitted, emit an diff --git a/lisp/format.el b/lisp/format.el index 855d7a73f92..6e2c5810101 100644 --- a/lisp/format.el +++ b/lisp/format.el @@ -1,6 +1,6 @@ ;;; format.el --- read and save files in multiple formats -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1995, 1997, 1999, 2001-2025 Free Software +;; Copyright (C) 1994-1995, 1997, 1999, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Boris Goldowsky diff --git a/lisp/forms.el b/lisp/forms.el index 6987c4cb475..412e323a889 100644 --- a/lisp/forms.el +++ b/lisp/forms.el @@ -1,6 +1,6 @@ ;;; forms.el --- Forms mode: edit a file as a form to fill in -*- lexical-binding: t; -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Johan Vromans diff --git a/lisp/frame.el b/lisp/frame.el index 307312ef71a..54502837bf6 100644 --- a/lisp/frame.el +++ b/lisp/frame.el @@ -1,6 +1,6 @@ ;;; frame.el --- multi-frame management independent of window systems -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 1996-1997, 2000-2025 Free Software +;; Copyright (C) 1993-1994, 1996-1997, 2000-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -85,7 +85,7 @@ handles the corresponding kind of display.") "mouse-wheel-frame" "name" "no-accept-focus" "no-focus-on-map" "no-other-frame" "no-special-glyphs" "ns-appearance" "ns-transparent-titlebar" "outer-window-id" "override-redirect" - "parent-frame" "right-fringe" "rigth-divider-width" "screen-gamma" + "parent-frame" "right-fringe" "right-divider-width" "screen-gamma" "scroll-bar-background" "scroll-bar-foreground" "scroll-bar-height" "scroll-bar-width" "shaded" "skip-taskbar" "snap-width" "sticky" "tab-bar-lines" "title" "tool-bar-lines" "tool-bar-position" "top" @@ -951,23 +951,24 @@ and lines for the clone. FRAME defaults to the selected frame. The frame is created on the same terminal as FRAME. If the terminal is a text-only terminal then -also select the new frame." +also select the new frame. + +A cloned frame is assigned a new frame ID. See `frame-id'." (interactive (list (selected-frame) current-prefix-arg)) (let* ((frame (or frame (selected-frame))) (windows (unless no-windows (window-state-get (frame-root-window frame)))) - (default-frame-alist - (seq-remove (lambda (elem) - (memq (car elem) frame-internal-parameters)) - (frame-parameters frame))) + (parameters + (append `((cloned-from . ,frame)) + (frame--purify-parameters (frame-parameters frame)))) new-frame) (when (and frame-resize-pixelwise (display-graphic-p frame)) (push (cons 'width (cons 'text-pixels (frame-text-width frame))) - default-frame-alist) + parameters) (push (cons 'height (cons 'text-pixels (frame-text-height frame))) - default-frame-alist)) - (setq new-frame (make-frame)) + parameters)) + (setq new-frame (make-frame parameters)) (when windows (window-state-put windows (frame-root-window new-frame) 'safe)) (unless (display-graphic-p frame) @@ -994,6 +995,24 @@ frame, unless you add them to the hook in your early-init file.") (defvar x-display-name) +(defun frame--purify-parameters (parameters) + "Return PARAMETERS without internals and ignoring unset parameters. +Use this helper function so that `make-frame' does not override any +parameters. + +In the return value, assign nil to each parameter in +`default-frame-alist', `window-system-default-frame-alist', +`frame-inherited-parameters', which is not in PARAMETERS, and remove all +parameters in `frame-internal-parameters' from PARAMETERS." + (dolist (p (append default-frame-alist + window-system-default-frame-alist + frame-inherited-parameters)) + (unless (assq (car p) parameters) + (push (cons (car p) nil) parameters))) + (seq-remove (lambda (elem) + (memq (car elem) frame-internal-parameters)) + parameters)) + (defun make-frame (&optional parameters) "Return a newly created frame displaying the current buffer. Optional argument PARAMETERS is an alist of frame parameters for @@ -1093,6 +1112,12 @@ current buffer even if it is hidden." (setq params (cons '(minibuffer) (delq (assq 'minibuffer params) params)))) + ;; Let the `frame-creation-function' apparatus assign a new frame id + ;; for a new or cloned frame. For an undeleted frame, send the old + ;; id via a frame parameter. + (when-let* ((id (cdr (assq 'undeleted params)))) + (push (cons 'frame-id id) params)) + ;; Now make the frame. (run-hooks 'before-make-frame-hook) @@ -1124,7 +1149,7 @@ current buffer even if it is hidden." ;; buffers for these windows were set (Bug#79606). (let* ((root (frame-root-window frame)) (buffer (window-buffer root))) - (with-current-buffer buffer + (with-current-buffer buffer (set-window-fringes root left-fringe-width right-fringe-width fringes-outside-margins) (set-window-scroll-bars @@ -1134,7 +1159,7 @@ current buffer even if it is hidden." root left-margin-width right-margin-width))) (let* ((mini (minibuffer-window frame)) (buffer (window-buffer mini))) - (when (eq (window-frame mini) frame) + (when (eq (window-frame mini) frame) (with-current-buffer buffer (set-window-fringes mini left-fringe-width right-fringe-width fringes-outside-margins) @@ -1360,10 +1385,30 @@ defaults to the selected frame." (push (cons (frame-parameter frame 'name) frame) alist))) (nreverse alist))) +(defun frame--make-frame-ids-alist (&optional frame) + "Return alist of frame identifiers and frames starting with FRAME. +Visible or iconified frames on the same terminal as FRAME are listed +along with frames that are undeletable. Frames with a non-nil +`no-other-frame' parameter are not listed. The optional argument FRAME +must specify a live frame and defaults to the selected frame." + (let ((frames (frame-list-1 frame)) + (terminal (frame-parameter frame 'terminal)) + alist) + (dolist (frame frames) + (when (and (frame-visible-p frame) + (eq (frame-parameter frame 'terminal) terminal) + (not (frame-parameter frame 'no-other-frame))) + (push (cons (number-to-string (frame-id frame)) frame) alist))) + (dolist (elt undelete-frame--deleted-frames) + (push (cons (number-to-string (nth 3 elt)) nil) alist)) + (nreverse alist))) + (defvar frame-name-history nil) (defun select-frame-by-name (name) "Select the frame whose name is NAME and raise it. Frames on the current terminal are checked first. +Raise the frame and give it input focus. On a text terminal, the frame +will occupy the entire terminal screen after the next redisplay. If there is no frame by that name, signal an error." (interactive (let* ((frame-names-alist (make-frame-names-alist)) @@ -1371,9 +1416,7 @@ If there is no frame by that name, signal an error." (input (completing-read (format-prompt "Select Frame" default) frame-names-alist nil t nil 'frame-name-history))) - (if (= (length input) 0) - (list default) - (list input)))) + (list (if (zerop (length input)) default input)))) (select-frame-set-input-focus ;; Prefer frames on the current display. (or (cdr (assoc name (make-frame-names-alist))) @@ -1383,6 +1426,50 @@ If there is no frame by that name, signal an error." (throw 'done frame)))) (error "There is no frame named `%s'" name)))) +(defun frame-by-id (id) + "Return the live frame object associated with ID. +Return nil if ID is not found." + (seq-find + (lambda (frame) + (eq id (frame-id frame))) + (frame-list))) + +(defun frame-id-live-p (id) + "Return non-nil if ID is associated with a live frame object. +This is useful when you have a frame ID and a potentially dead frame +reference that may have been resurrected. Also see `frame-live-p'." + (frame-live-p (frame-by-id id))) + +(defun select-frame-by-id (id &optional noerror) + "Select the frame whose identifier is ID and raise it. +If the frame is undeletable, undelete it. +Frames on the current terminal are checked first. +Raise the frame and give it input focus. On a text terminal, the frame +will occupy the entire terminal screen after the next redisplay. +Return the selected frame or signal an error if no frame matching ID +was found. If NOERROR is non-nil, return nil instead." + (interactive + (let* ((frame-ids-alist (frame--make-frame-ids-alist)) + (default (car (car frame-ids-alist))) + (input (completing-read + (format-prompt "Select Frame by ID" default) + frame-ids-alist nil t))) + (list (string-to-number + (if (zerop (length input)) default input))))) + ;; `undelete-frame-by-id' returns the undeleted frame, or nil. + (unless (undelete-frame-by-id id 'noerror) + ;; Prefer frames on the current display. + (if-let* ((found (or (cdr (assq id (frame--make-frame-ids-alist))) + (catch 'done + (dolist (frame (frame-list)) + (when (eq (frame-id frame) id) + (throw 'done frame))))))) + (progn + (select-frame-set-input-focus found) + found) + (unless noerror + (error "There is no frame with identifier `%S'" id))))) + ;;;; Background mode. @@ -1534,6 +1621,201 @@ Functions on this hook are called with the theme name as a symbol: `light' or `dark'. By the time the hook is called, `toolkit-theme' will already be set to one of these values as well.") + +(defun set-frame-size-and-position (&optional frame width height left top) + "Set size and position of specified FRAME in one compound step. +WIDTH and HEIGHT stand for the new width and height of FRAME. They can +be specified as follows where \"display area\" stands for the entire +display area of FRAME's dominating monitor, \"work area\" stands for the +work area (the usable space) of FRAME's display area and \"parent area\" +stands for the area occupied by the native rectangle of FRAME's parent +provided FRAME is a child frame. + +- An integer specifies the size of FRAME's text area in characters. + +- A cons cell with the symbol `text-pixels' in its car specifies in its + cdr the size of FRAME's text area in pixels. + +- A floating-point number between 0.0 and 1.0 specifies the ratio of + FRAME's outer size to the size of its work or parent area. + +Unless you use a plain integer value, you may have to set +`frame-resize-pixelwise' to a non-nil value in order to get the exact +size in pixels. A value of nil means to leave the width or height +unaltered. Any other value will signal an error. + +LEFT and TOP stand for FRAME's outer position relative to coordinates of +its display, work or parent area. They can be specified as follows: + +- An integer where a positive value relates the left or top edge of + FRAME to the origin of its display or parent area. A negative value + relates the right or bottom edge of FRAME to the right or bottom edge + of its display or parent area. + +- The symbol `-' means to place the right or bottom edge of FRAME at the + right or bottom edge of its display or parent area. + +- A list with `+' as its first and an integer as its second element + specifies the position of the left or top edge of FRAME relative to + the left or top edge of its display or parent area. If the second + element is negative, this means a position outside FRAME's display or + parent area. + +- A list with `-' as its first and an integer as its second element + specifies the position of the right or bottom edge of FRAME relative + to the right or bottom edge of its display or parent area. If the + second element is negative, this means a position outside the area of + its display or parent area. + +- A floating-point number between 0.0 and 1.0 specifies the ratio of + FRAME's outer position to the size of its work or parent area. Thus, + a value of 0.0 flushes FRAME to the left or top, a value of 0.5 + centers it and a ratio of 1.0 flushes it to the right or bottom of its + work or parent area. + +Calculating a position relative to the right or bottom edge of FRAME's +display, work or parent area proceeds by calculating the new size of +FRAME first and then relate the new prospective outer edges of FRAME to +the respective edges of its display, work or parent area. + +A value of nil means to leave the position in this direction unchanged. +Any other value will signal an error. + +This function calls `set-frame-size-and-position-pixelwise' to actually +resize and move FRAME." + (let* ((frame (window-normalize-frame frame)) + (parent (frame-parent frame)) + (monitor-attributes + (unless parent + (frame-monitor-attributes frame))) + (geometry + (unless parent + (cdr (assq 'geometry monitor-attributes)))) + (parent-or-display-width + (if parent + (frame-native-width parent) + (nth 2 geometry))) + (parent-or-display-height + (if parent + (frame-native-height parent) + (nth 3 geometry))) + (workarea (cdr (assq 'workarea monitor-attributes))) + (parent-or-workarea-width + (if parent + parent-or-display-width + (nth 2 workarea))) + (parent-or-workarea-height + (if parent + parent-or-display-height + (nth 3 workarea))) + (outer-edges (frame-edges frame 'outer-edges)) + (outer-left (nth 0 outer-edges)) + (outer-top (nth 1 outer-edges)) + (outer-width (if outer-edges + (- (nth 2 outer-edges) outer-left) + (frame-pixel-width frame))) + (outer-minus-text-width + (- outer-width (frame-text-width frame))) + (outer-height (if outer-edges + (- (nth 3 outer-edges) outer-top) + (frame-pixel-height frame))) + (outer-minus-text-height + (- outer-height (frame-text-height frame))) + (old-text-width (frame-text-width frame)) + (old-text-height (frame-text-height frame)) + (text-width old-text-width) + (text-height old-text-height) + (char-width (frame-char-width frame)) + (char-height (frame-char-height frame)) + (gravity 1) + negative) + + (cond + ((and (integerp width) (> width 0)) + (setq text-width (* width char-width))) + ((and (consp width) (eq (car width) 'text-pixels) + (integerp (cdr width)) (> (cdr width) 0)) + (setq text-width (cdr width))) + ((and (floatp width) (> width 0.0) (<= width 1.0)) + (setq text-width + (- (round (* width parent-or-workarea-width)) + outer-minus-text-width))) + (width + (user-error "Invalid width specification"))) + + (cond + ((and (integerp height) (> height 0)) + (setq text-height (* height char-height))) + ((and (consp height) (eq (car height) 'text-pixels) + (integerp (cdr height)) (> (cdr height) 0)) + (setq text-height (cdr height))) + ((and (floatp height) (> height 0.0) (<= height 1.0)) + (setq text-height + (- (round (* height parent-or-workarea-height)) + outer-minus-text-height))) + (height + (user-error "Invalid height specification"))) + + (cond + ((eq left '-) + (setq left 0) + (setq negative t)) + ((integerp left) + (setq negative (< left 0))) + ((consp left) + (cond + ((and (eq (car left) '-) (integerp (cadr left))) + (setq left (- (cadr left))) + (setq negative t)) + ((and (eq (car left) '+) (integerp (cadr left))) + (setq left (cadr left))) + (t + (user-error "Invalid position specification")))) + ((floatp left) + (setq left (+ (round (* left parent-or-workarea-width)) + (if parent 0 (nth 0 workarea))))) + (t (setq left outer-left))) + + (when negative + (setq gravity 3) + (setq left (- parent-or-display-width (- left) + (+ text-width + (frame-scroll-bar-width frame) + (frame-fringe-width frame) + (* 2 (frame-internal-border-width frame)) + outer-minus-text-width)))) + + (setq negative nil) + (cond + ((eq top '-) + (setq top 0) + (setq negative t)) + ((integerp top) + (setq negative (< top 0))) + ((consp top) + (cond + ((and (eq (car top) '-) (integerp (cadr top))) + (setq top (- (cadr top))) + (setq negative t)) + ((and (eq (car top) '+) (integerp (cadr top))) + (setq top (cadr top))) + (t + (user-error "Invalid position specification")))) + ((floatp top) + (setq top (+ (round (* left parent-or-workarea-height)) + (if parent 0 (nth 1 workarea))))) + (t (setq top outer-top))) + + (when negative + ;; This should get us 7 or 9. + (setq gravity (+ gravity 6)) + (setq top (- parent-or-display-height (- top) + (+ text-height + (* 2 (frame-internal-border-width frame))) + outer-minus-text-height))) + + (set-frame-size-and-position-pixelwise + frame text-width text-height left top gravity))) ;;;; Frame configurations @@ -2930,7 +3212,8 @@ Only the 16 most recently deleted frames are saved." ;; to restore a graphical frame. (and (eq (car elem) 'display) (not (display-graphic-p))))) (frame-parameters frame)) - (window-state-get (frame-root-window frame))) + (window-state-get (frame-root-window frame)) + (frame-id frame)) undelete-frame--deleted-frames)) (if (> (length undelete-frame--deleted-frames) 16) (setq undelete-frame--deleted-frames @@ -2953,7 +3236,9 @@ Without a prefix argument, undelete the most recently deleted frame. With a numerical prefix argument ARG between 1 and 16, where 1 is most recently deleted frame, undelete the ARGth deleted frame. -When called from Lisp, returns the new frame." +When called from Lisp, returns the new frame. +Return the undeleted frame, or nil if a frame was not undeleted. +An undeleted frame retains its original frame ID. See `frame-id'." (interactive "P") (if (not undelete-frame-mode) (user-error "Undelete-Frame mode is disabled") @@ -2974,11 +3259,46 @@ When called from Lisp, returns the new frame." (if graphic "graphic" "non-graphic")) (setq undelete-frame--deleted-frames (delq frame-data undelete-frame--deleted-frames)) - (let* ((default-frame-alist (nth 1 frame-data)) - (frame (make-frame))) + (let* ((parameters + ;; `undeleted' signals to `make-frame' to reuse its id. + (append `((undeleted . ,(nth 3 frame-data))) + (frame--purify-parameters (nth 1 frame-data)))) + (frame (make-frame parameters))) (window-state-put (nth 2 frame-data) (frame-root-window frame) 'safe) (select-frame-set-input-focus frame) frame)))))))) + +(defun undelete-frame-id-index (id) + "Return an `undelete-frame' index, if ID is that of an undeletable frame. +Return nil if ID is not associated with an undeletable frame." + (catch :found + (seq-do-indexed + (lambda (frame-data index) + (when (eq id (nth 3 frame-data)) + (throw :found (1+ index)))) + undelete-frame--deleted-frames))) + +(defun undelete-frame-by-id (id &optional noerror) + "Undelete the frame with the matching ID. +Return the undeleted frame if the ID is that of an undeletable frame, +otherwise, signal an error. +If NOERROR is non-nil, do not signal an error, and return nil. +Also see `undelete-frame'." + (interactive + (let* ((candidates + (mapcar (lambda (elt) + (number-to-string (nth 3 elt))) + undelete-frame--deleted-frames)) + (default (car candidates)) + (input (completing-read + (format-prompt "Undelete Frame by ID" default) + candidates nil t))) + (list (string-to-number + (if (zerop (length input)) default input))))) + (if-let* ((index (undelete-frame-id-index id))) + (undelete-frame index) + (unless noerror + (error "There is no frame with identifier `%S'" id)))) ;;; Window dividers. (defgroup window-divider nil diff --git a/lisp/frameset.el b/lisp/frameset.el index ee30f77c3ba..e11a1da7e9b 100644 --- a/lisp/frameset.el +++ b/lisp/frameset.el @@ -1,6 +1,6 @@ ;;; frameset.el --- save and restore frame and window setup -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Juanma Barranquero ;; Keywords: convenience @@ -1362,9 +1362,18 @@ All keyword parameters default to nil." ;; Clean up the frame list (when cleanup-frames (let ((map nil) - (cleanup (if (eq cleanup-frames t) - (lambda (frame action) - (when (memq action '(:rejected :ignored)) + (cleanup + (if (eq cleanup-frames t) + (lambda (frame action) + (when (and (memq action '(:rejected :ignored)) + ;; Don't try deleting the daemon's initial + ;; frame, as that would only trigger + ;; warnings. + (not + (and (daemonp) + (equal (terminal-name (frame-terminal + frame)) + "initial_terminal")))) (delete-frame frame))) cleanup-frames))) (maphash (lambda (frame _action) (push frame map)) frameset--action-map) diff --git a/lisp/fringe.el b/lisp/fringe.el index b903f839047..92ac73fc0ea 100644 --- a/lisp/fringe.el +++ b/lisp/fringe.el @@ -1,6 +1,6 @@ ;;; fringe.el --- fringe setup and control -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/generic-x.el b/lisp/generic-x.el index 9b8d7f21779..be370fcebf2 100644 --- a/lisp/generic-x.el +++ b/lisp/generic-x.el @@ -1,6 +1,6 @@ ;;; generic-x.el --- A collection of generic modes -*- lexical-binding: t -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Peter Breton ;; Created: Tue Oct 08 1996 diff --git a/lisp/gnus/ChangeLog.1 b/lisp/gnus/ChangeLog.1 index 843cb5a2edc..1ed1df2fe29 100644 --- a/lisp/gnus/ChangeLog.1 +++ b/lisp/gnus/ChangeLog.1 @@ -3702,7 +3702,7 @@ * gnus.el: Quassia Gnus v0.1 is released. - Copyright (C) 1997-2025 Free Software Foundation, Inc. + Copyright (C) 1997-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/gnus/ChangeLog.2 b/lisp/gnus/ChangeLog.2 index 0e6d6387b96..fbb9ed74e5a 100644 --- a/lisp/gnus/ChangeLog.2 +++ b/lisp/gnus/ChangeLog.2 @@ -18538,7 +18538,7 @@ See ChangeLog.1 for earlier changes. - Copyright (C) 2000-2002, 2004-2025 Free Software Foundation, Inc. + Copyright (C) 2000-2002, 2004-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/gnus/ChangeLog.3 b/lisp/gnus/ChangeLog.3 index 0058331c2fc..730dee0ae8d 100644 --- a/lisp/gnus/ChangeLog.3 +++ b/lisp/gnus/ChangeLog.3 @@ -26326,7 +26326,7 @@ See ChangeLog.2 for earlier changes. - Copyright (C) 2004-2025 Free Software Foundation, Inc. + Copyright (C) 2004-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/gnus/canlock.el b/lisp/gnus/canlock.el index 6df5329085f..ce316c12819 100644 --- a/lisp/gnus/canlock.el +++ b/lisp/gnus/canlock.el @@ -1,6 +1,6 @@ ;;; canlock.el --- functions for Cancel-Lock feature -*- lexical-binding: t; -*- -;; Copyright (C) 1998-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Katsumi Yamaoka ;; Keywords: news, cancel-lock, hmac, sha1, rfc2104 diff --git a/lisp/gnus/deuglify.el b/lisp/gnus/deuglify.el index 8ba1d11d360..23d7e4ea979 100644 --- a/lisp/gnus/deuglify.el +++ b/lisp/gnus/deuglify.el @@ -1,6 +1,6 @@ ;;; deuglify.el --- deuglify broken Outlook (Express) articles -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Raymond Scholz ;; Thomas Steffen diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el index 5293cff93ed..efe0078d2d4 100644 --- a/lisp/gnus/gmm-utils.el +++ b/lisp/gnus/gmm-utils.el @@ -1,6 +1,6 @@ ;;; gmm-utils.el --- Utility functions for Gnus, Message and MML -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Reiner Steib ;; Keywords: news diff --git a/lisp/gnus/gnus-agent.el b/lisp/gnus/gnus-agent.el index 63c75a28463..00eb8f416c6 100644 --- a/lisp/gnus/gnus-agent.el +++ b/lisp/gnus/gnus-agent.el @@ -1,6 +1,6 @@ ;;; gnus-agent.el --- unplugged support for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/gnus/gnus-art.el b/lisp/gnus/gnus-art.el index 1235875b411..56473f81f06 100644 --- a/lisp/gnus/gnus-art.el +++ b/lisp/gnus/gnus-art.el @@ -1,6 +1,6 @@ ;;; gnus-art.el --- article mode commands for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-async.el b/lisp/gnus/gnus-async.el index e2d59306d47..ddb9a4dce1b 100644 --- a/lisp/gnus/gnus-async.el +++ b/lisp/gnus/gnus-async.el @@ -1,6 +1,6 @@ ;;; gnus-async.el --- asynchronous support for Gnus -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-sum) (require 'nntp) diff --git a/lisp/gnus/gnus-bcklg.el b/lisp/gnus/gnus-bcklg.el index b7a56467111..a1e9207834b 100644 --- a/lisp/gnus/gnus-bcklg.el +++ b/lisp/gnus/gnus-bcklg.el @@ -1,6 +1,6 @@ ;;; gnus-bcklg.el --- backlog functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-bookmark.el b/lisp/gnus/gnus-bookmark.el index 6c07e15fa49..810bc78073b 100644 --- a/lisp/gnus/gnus-bookmark.el +++ b/lisp/gnus/gnus-bookmark.el @@ -1,6 +1,6 @@ ;;; gnus-bookmark.el --- Bookmarks in Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Bastien Guerry ;; Keywords: news diff --git a/lisp/gnus/gnus-cache.el b/lisp/gnus/gnus-cache.el index ad86f1043b9..ba652343a40 100644 --- a/lisp/gnus/gnus-cache.el +++ b/lisp/gnus/gnus-cache.el @@ -1,6 +1,6 @@ ;;; gnus-cache.el --- cache interface for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-sum) diff --git a/lisp/gnus/gnus-cite.el b/lisp/gnus/gnus-cite.el index df69b294b5f..63acd6c61e1 100644 --- a/lisp/gnus/gnus-cite.el +++ b/lisp/gnus/gnus-cite.el @@ -1,6 +1,6 @@ ;;; gnus-cite.el --- parse citations in articles for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Per Abrahamsen diff --git a/lisp/gnus/gnus-cloud.el b/lisp/gnus/gnus-cloud.el index b52ab29e0db..9de9335bf7c 100644 --- a/lisp/gnus/gnus-cloud.el +++ b/lisp/gnus/gnus-cloud.el @@ -1,6 +1,6 @@ ;;; gnus-cloud.el --- storing and retrieving data via IMAP -*- lexical-binding: t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail diff --git a/lisp/gnus/gnus-cus.el b/lisp/gnus/gnus-cus.el index 674e2bafb93..fb57a5769b4 100644 --- a/lisp/gnus/gnus-cus.el +++ b/lisp/gnus/gnus-cus.el @@ -1,6 +1,6 @@ ;;; gnus-cus.el --- customization commands for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1999-2026 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: news diff --git a/lisp/gnus/gnus-dbus.el b/lisp/gnus/gnus-dbus.el index 5e0c55f7081..a985e44c5b8 100644 --- a/lisp/gnus/gnus-dbus.el +++ b/lisp/gnus/gnus-dbus.el @@ -1,6 +1,6 @@ ;;; gnus-dbus.el --- DBUS integration for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Eric Abrahamsen diff --git a/lisp/gnus/gnus-delay.el b/lisp/gnus/gnus-delay.el index e7372e42146..b8fefabacbb 100644 --- a/lisp/gnus/gnus-delay.el +++ b/lisp/gnus/gnus-delay.el @@ -1,6 +1,6 @@ ;;; gnus-delay.el --- Delayed posting of articles -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Kai Großjohann ;; Keywords: mail, news, extensions diff --git a/lisp/gnus/gnus-demon.el b/lisp/gnus/gnus-demon.el index ceeea4b6405..f58096c7370 100644 --- a/lisp/gnus/gnus-demon.el +++ b/lisp/gnus/gnus-demon.el @@ -1,6 +1,6 @@ ;;; gnus-demon.el --- daemonic Gnus behavior -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-diary.el b/lisp/gnus/gnus-diary.el index 2c11a1c799b..f2cb246d6d4 100644 --- a/lisp/gnus/gnus-diary.el +++ b/lisp/gnus/gnus-diary.el @@ -1,6 +1,6 @@ ;;; gnus-diary.el --- Wrapper around the NNDiary Gnus back end -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Didier Verna ;; Created: Tue Jul 20 10:42:55 1999 diff --git a/lisp/gnus/gnus-dired.el b/lisp/gnus/gnus-dired.el index 1b296cbcffc..1c955853d84 100644 --- a/lisp/gnus/gnus-dired.el +++ b/lisp/gnus/gnus-dired.el @@ -1,6 +1,6 @@ ;;; gnus-dired.el --- utility functions where gnus and dired meet -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2001-2026 Free Software Foundation, Inc. ;; Authors: Benjamin Rutt , ;; Shenghuo Zhu diff --git a/lisp/gnus/gnus-draft.el b/lisp/gnus/gnus-draft.el index d42ab6b0b5b..f7cb8bfd4ed 100644 --- a/lisp/gnus/gnus-draft.el +++ b/lisp/gnus/gnus-draft.el @@ -1,6 +1,6 @@ ;;; gnus-draft.el --- draft message support for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-dup.el b/lisp/gnus/gnus-dup.el index e60034ce277..42e10fd669d 100644 --- a/lisp/gnus/gnus-dup.el +++ b/lisp/gnus/gnus-dup.el @@ -1,6 +1,6 @@ ;;; gnus-dup.el --- suppression of duplicate articles in Gnus -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-eform.el b/lisp/gnus/gnus-eform.el index 8022c38608c..66ee1713212 100644 --- a/lisp/gnus/gnus-eform.el +++ b/lisp/gnus/gnus-eform.el @@ -1,6 +1,6 @@ ;;; gnus-eform.el --- a mode for editing forms for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-fun.el b/lisp/gnus/gnus-fun.el index b8a3baf8181..a1135e2bf3b 100644 --- a/lisp/gnus/gnus-fun.el +++ b/lisp/gnus/gnus-fun.el @@ -1,6 +1,6 @@ ;;; gnus-fun.el --- various frivolous extension functions to Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-gravatar.el b/lisp/gnus/gnus-gravatar.el index e2d5e974fad..4ce1642816d 100644 --- a/lisp/gnus/gnus-gravatar.el +++ b/lisp/gnus/gnus-gravatar.el @@ -1,6 +1,6 @@ ;;; gnus-gravatar.el --- Gnus Gravatar support -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Julien Danjou ;; Keywords: multimedia, news diff --git a/lisp/gnus/gnus-group.el b/lisp/gnus/gnus-group.el index d1536292521..7214b440732 100644 --- a/lisp/gnus/gnus-group.el +++ b/lisp/gnus/gnus-group.el @@ -1,6 +1,6 @@ ;;; gnus-group.el --- group mode commands for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-html.el b/lisp/gnus/gnus-html.el index 435ea113187..c0d931426f8 100644 --- a/lisp/gnus/gnus-html.el +++ b/lisp/gnus/gnus-html.el @@ -1,6 +1,6 @@ ;;; gnus-html.el --- Render HTML in a buffer. -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: html, web diff --git a/lisp/gnus/gnus-icalendar.el b/lisp/gnus/gnus-icalendar.el index a3ca1925109..ad1c4c2731a 100644 --- a/lisp/gnus/gnus-icalendar.el +++ b/lisp/gnus/gnus-icalendar.el @@ -1,6 +1,6 @@ ;;; gnus-icalendar.el --- reply to iCalendar meeting requests -*- lexical-binding:t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Jan Tatarik ;; Keywords: mail, icalendar, org diff --git a/lisp/gnus/gnus-int.el b/lisp/gnus/gnus-int.el index 77f2a9cfa71..782c51add08 100644 --- a/lisp/gnus/gnus-int.el +++ b/lisp/gnus/gnus-int.el @@ -1,6 +1,6 @@ ;;; gnus-int.el --- backend interface functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-kill.el b/lisp/gnus/gnus-kill.el index 63bc1c439b9..14170cb6fe7 100644 --- a/lisp/gnus/gnus-kill.el +++ b/lisp/gnus/gnus-kill.el @@ -1,6 +1,6 @@ ;;; gnus-kill.el --- kill commands for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen diff --git a/lisp/gnus/gnus-logic.el b/lisp/gnus/gnus-logic.el index 2b051c05c4c..7b95a4aaa49 100644 --- a/lisp/gnus/gnus-logic.el +++ b/lisp/gnus/gnus-logic.el @@ -1,6 +1,6 @@ ;;; gnus-logic.el --- advanced scoring code for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-score) (require 'gnus-util) diff --git a/lisp/gnus/gnus-mh.el b/lisp/gnus/gnus-mh.el index 2508267acae..c8199662d31 100644 --- a/lisp/gnus/gnus-mh.el +++ b/lisp/gnus/gnus-mh.el @@ -1,6 +1,6 @@ ;;; gnus-mh.el --- mh-e interface for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen diff --git a/lisp/gnus/gnus-ml.el b/lisp/gnus/gnus-ml.el index b71d09c26df..435b1321652 100644 --- a/lisp/gnus/gnus-ml.el +++ b/lisp/gnus/gnus-ml.el @@ -1,6 +1,6 @@ ;;; gnus-ml.el --- Mailing list minor mode for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Julien Gilles ;; Keywords: news, mail diff --git a/lisp/gnus/gnus-mlspl.el b/lisp/gnus/gnus-mlspl.el index 1d0e867cc2b..a0014ce47fd 100644 --- a/lisp/gnus/gnus-mlspl.el +++ b/lisp/gnus/gnus-mlspl.el @@ -1,6 +1,6 @@ ;;; gnus-mlspl.el --- a group params-based mail splitting mechanism -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Alexandre Oliva ;; Keywords: news, mail diff --git a/lisp/gnus/gnus-msg.el b/lisp/gnus/gnus-msg.el index 807c4e17a33..99f1735dfec 100644 --- a/lisp/gnus/gnus-msg.el +++ b/lisp/gnus/gnus-msg.el @@ -1,6 +1,6 @@ ;;; gnus-msg.el --- mail and post interface for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen @@ -467,11 +467,17 @@ Gcc: header for archiving purposes. If Gnus isn't running, a plain `message-mail' setup is used instead." (interactive) - (if (not (gnus-alive-p)) - (progn - (message "Gnus not running; using plain Message mode") - (message-mail to subject other-headers continue - switch-action yank-action send-actions return-action)) + (if (and (not (gnus-alive-p)) + (condition-case err + (progn + (message "Gnus not running. Starting Gnus...") + (save-window-excursion (gnus)) + nil) + (error + (message "Gnus failed with %s. Using plain Message mode" + (error-message-string err))))) + (message-mail to subject other-headers continue + switch-action yank-action send-actions return-action) (let ((buf (current-buffer)) ;; Don't use posting styles corresponding to any existing group. ;; (group-name gnus-newsgroup-name) diff --git a/lisp/gnus/gnus-notifications.el b/lisp/gnus/gnus-notifications.el index dd90443e33d..ff21ed170d1 100644 --- a/lisp/gnus/gnus-notifications.el +++ b/lisp/gnus/gnus-notifications.el @@ -1,6 +1,6 @@ ;;; gnus-notifications.el --- Send notification on new message in Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Julien Danjou ;; Keywords: news diff --git a/lisp/gnus/gnus-picon.el b/lisp/gnus/gnus-picon.el index 323bc5c9f99..a52209f8a63 100644 --- a/lisp/gnus/gnus-picon.el +++ b/lisp/gnus/gnus-picon.el @@ -1,6 +1,6 @@ ;;; gnus-picon.el --- displaying pretty icons in Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news xpm annotation glyph faces diff --git a/lisp/gnus/gnus-range.el b/lisp/gnus/gnus-range.el index 62bd0587b78..d7ba67e1346 100644 --- a/lisp/gnus/gnus-range.el +++ b/lisp/gnus/gnus-range.el @@ -1,6 +1,6 @@ ;;; gnus-range.el --- range and sequence functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-registry.el b/lisp/gnus/gnus-registry.el index ba604af5d12..fcaaf96afeb 100644 --- a/lisp/gnus/gnus-registry.el +++ b/lisp/gnus/gnus-registry.el @@ -1,6 +1,6 @@ ;;; gnus-registry.el --- article registry for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Ted Zlatanov ;; Keywords: news registry diff --git a/lisp/gnus/gnus-rfc1843.el b/lisp/gnus/gnus-rfc1843.el index 25398c3bd9b..86a8fe55784 100644 --- a/lisp/gnus/gnus-rfc1843.el +++ b/lisp/gnus/gnus-rfc1843.el @@ -1,6 +1,6 @@ ;;; gnus-rfc1843.el --- HZ (rfc1843) decoding interface functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news HZ HZ+ mail i18n diff --git a/lisp/gnus/gnus-rmail.el b/lisp/gnus/gnus-rmail.el index fc7c89f9c28..c59efcf9dac 100644 --- a/lisp/gnus/gnus-rmail.el +++ b/lisp/gnus/gnus-rmail.el @@ -1,6 +1,6 @@ ;;; gnus-rmail.el --- Saving to rmail/babyl files -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/gnus/gnus-salt.el b/lisp/gnus/gnus-salt.el index 021a03d4b16..d70f7f8fe5c 100644 --- a/lisp/gnus/gnus-salt.el +++ b/lisp/gnus/gnus-salt.el @@ -1,6 +1,6 @@ ;;; gnus-salt.el --- alternate summary mode interfaces for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-sum) (require 'gnus-win) diff --git a/lisp/gnus/gnus-score.el b/lisp/gnus/gnus-score.el index a4102ef0b51..8146db629ae 100644 --- a/lisp/gnus/gnus-score.el +++ b/lisp/gnus/gnus-score.el @@ -1,6 +1,6 @@ ;;; gnus-score.el --- scoring code for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Lars Magne Ingebrigtsen diff --git a/lisp/gnus/gnus-search.el b/lisp/gnus/gnus-search.el index 41915a0e3c0..58f72f002fd 100644 --- a/lisp/gnus/gnus-search.el +++ b/lisp/gnus/gnus-search.el @@ -1,6 +1,6 @@ ;;; gnus-search.el --- Search facilities for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Eric Abrahamsen diff --git a/lisp/gnus/gnus-sieve.el b/lisp/gnus/gnus-sieve.el index 431d90641d9..2a98a087c17 100644 --- a/lisp/gnus/gnus-sieve.el +++ b/lisp/gnus/gnus-sieve.el @@ -1,6 +1,6 @@ ;;; gnus-sieve.el --- Utilities to manage sieve scripts for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: NAGY Andras , ;; Simon Josefsson diff --git a/lisp/gnus/gnus-spec.el b/lisp/gnus/gnus-spec.el index 2d7f1bbbe23..6b920ed5e53 100644 --- a/lisp/gnus/gnus-spec.el +++ b/lisp/gnus/gnus-spec.el @@ -1,6 +1,6 @@ ;;; gnus-spec.el --- format spec functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,7 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) (defvar gnus-newsrc-file-version) (require 'gnus) diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el index 92a0e949bb7..312862df165 100644 --- a/lisp/gnus/gnus-srvr.el +++ b/lisp/gnus/gnus-srvr.el @@ -1,6 +1,6 @@ ;;; gnus-srvr.el --- virtual server support for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-start) (require 'gnus-spec) diff --git a/lisp/gnus/gnus-start.el b/lisp/gnus/gnus-start.el index 7133df15322..f63fc41ea5e 100644 --- a/lisp/gnus/gnus-start.el +++ b/lisp/gnus/gnus-start.el @@ -1,6 +1,6 @@ ;;; gnus-start.el --- startup functions for Gnus -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index fa909cc93f4..e09bb3a4b39 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -1,6 +1,6 @@ ;;; gnus-sum.el --- summary mode commands for Gnus -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -9410,7 +9410,7 @@ See `gnus-collect-urls'." (concat "#" target))))) (concat host (string-truncate-left rest (- max (length host))))))) -(defun gnus-summary-browse-url (&optional external) +(defun gnus-summary-browse-url (&optional secondary) "Scan the current article body for links, and offer to browse them. Links are opened using `browse-url' unless a prefix argument is @@ -9431,9 +9431,11 @@ default." (gnus-shorten-url (car urls) 40)) urls nil t nil nil (car urls)))))) (if target - (if external - (funcall browse-url-secondary-browser-function target) - (browse-url target)) + (let ((browse-url-browser-function + (if secondary + browse-url-secondary-browser-function + browse-url-browser-function))) + (browse-url target)) (message "No URLs found.")))) (defun gnus-summary-isearch-article (&optional regexp-p) diff --git a/lisp/gnus/gnus-topic.el b/lisp/gnus/gnus-topic.el index 149f3961c6c..315f1a018c9 100644 --- a/lisp/gnus/gnus-topic.el +++ b/lisp/gnus/gnus-topic.el @@ -1,6 +1,6 @@ ;;; gnus-topic.el --- a folding minor mode for Gnus group buffers -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Ilja Weis ;; Lars Magne Ingebrigtsen @@ -25,8 +25,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-group) (require 'gnus-start) diff --git a/lisp/gnus/gnus-undo.el b/lisp/gnus/gnus-undo.el index ae5f75342ca..9f6c6524c32 100644 --- a/lisp/gnus/gnus-undo.el +++ b/lisp/gnus/gnus-undo.el @@ -1,6 +1,6 @@ ;;; gnus-undo.el --- minor mode for undoing in Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-util.el b/lisp/gnus/gnus-util.el index 45cc436017a..4a61a9a18db 100644 --- a/lisp/gnus/gnus-util.el +++ b/lisp/gnus/gnus-util.el @@ -1,6 +1,6 @@ ;;; gnus-util.el --- utility functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/gnus-uu.el b/lisp/gnus/gnus-uu.el index 50739ef5efa..b32533e105e 100644 --- a/lisp/gnus/gnus-uu.el +++ b/lisp/gnus/gnus-uu.el @@ -1,6 +1,6 @@ ;;; gnus-uu.el --- extract (uu)encoded files in Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1987, 1993-1998, 2000-2025 Free Software +;; Copyright (C) 1985-1987, 1993-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen @@ -26,8 +26,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-art) (require 'message) diff --git a/lisp/gnus/gnus-vm.el b/lisp/gnus/gnus-vm.el index a29f400a41f..f0909d80544 100644 --- a/lisp/gnus/gnus-vm.el +++ b/lisp/gnus/gnus-vm.el @@ -1,6 +1,6 @@ ;;; gnus-vm.el --- vm interface for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Per Persson ;; Keywords: news, mail diff --git a/lisp/gnus/gnus-win.el b/lisp/gnus/gnus-win.el index b008475f191..d0505506ea6 100644 --- a/lisp/gnus/gnus-win.el +++ b/lisp/gnus/gnus-win.el @@ -1,6 +1,6 @@ ;;; gnus-win.el --- window configuration functions for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) (require 'gnus-util) (require 'seq) diff --git a/lisp/gnus/gnus.el b/lisp/gnus/gnus.el index cab2d594056..b6c307f9037 100644 --- a/lisp/gnus/gnus.el +++ b/lisp/gnus/gnus.el @@ -1,6 +1,6 @@ ;;; gnus.el --- a newsreader for GNU Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1987-1990, 1993-1998, 2000-2025 Free Software +;; Copyright (C) 1987-1990, 1993-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Masanobu UMEDA diff --git a/lisp/gnus/gssapi.el b/lisp/gnus/gssapi.el index b7c87d90489..5466d22798a 100644 --- a/lisp/gnus/gssapi.el +++ b/lisp/gnus/gssapi.el @@ -1,6 +1,6 @@ ;;; gssapi.el --- GSSAPI/Kerberos 5 interface for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Lars Magne Ingebrigtsen diff --git a/lisp/gnus/mail-source.el b/lisp/gnus/mail-source.el index 5bf7c7c2b94..bc1c7272283 100644 --- a/lisp/gnus/mail-source.el +++ b/lisp/gnus/mail-source.el @@ -1,6 +1,6 @@ ;;; mail-source.el --- functions for fetching mail -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el index 0f90a098a3f..06cb241959b 100644 --- a/lisp/gnus/message.el +++ b/lisp/gnus/message.el @@ -1,6 +1,6 @@ ;;; message.el --- composing mail and news messages -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news @@ -7128,16 +7128,11 @@ The function is called with one parameter, a cons cell ..." ", ")) mct (message-fetch-field "mail-copies-to") author (or (message-fetch-field "mail-reply-to") - (message-fetch-field "reply-to")) + (message-fetch-field "reply-to") + (message-fetch-field "from") + "") mft (and message-use-mail-followup-to - (message-fetch-field "mail-followup-to"))) - ;; Make sure this message goes to the author if this is a wide - ;; reply, since Reply-To address may be a list address a mailing - ;; list server added. - (when (and wide author) - (setq cc (concat author ", " cc))) - (when (or wide (not author)) - (setq author (or (message-fetch-field "from") "")))) + (message-fetch-field "mail-followup-to")))) ;; Handle special values of Mail-Copies-To. (when mct diff --git a/lisp/gnus/mm-archive.el b/lisp/gnus/mm-archive.el index 7951670c444..e67a2966e29 100644 --- a/lisp/gnus/mm-archive.el +++ b/lisp/gnus/mm-archive.el @@ -1,6 +1,6 @@ ;;; mm-archive.el --- Functions for parsing archive files as MIME -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el index 4bc60e94713..dbc8f8d82c0 100644 --- a/lisp/gnus/mm-bodies.el +++ b/lisp/gnus/mm-bodies.el @@ -1,6 +1,6 @@ ;;; mm-bodies.el --- Functions for decoding MIME things -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko diff --git a/lisp/gnus/mm-decode.el b/lisp/gnus/mm-decode.el index bfa7a048f7e..717c8a022ef 100644 --- a/lisp/gnus/mm-decode.el +++ b/lisp/gnus/mm-decode.el @@ -1,6 +1,6 @@ ;;; mm-decode.el --- Functions for decoding MIME things -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko diff --git a/lisp/gnus/mm-encode.el b/lisp/gnus/mm-encode.el index ef75b6da6e1..289192acdac 100644 --- a/lisp/gnus/mm-encode.el +++ b/lisp/gnus/mm-encode.el @@ -1,6 +1,6 @@ ;;; mm-encode.el --- Functions for encoding MIME things -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -23,7 +23,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) (require 'mail-parse) (autoload 'mailcap-extension-to-mime "mailcap") (autoload 'mm-body-7-or-8 "mm-bodies") diff --git a/lisp/gnus/mm-extern.el b/lisp/gnus/mm-extern.el index fed58818bba..657fd0729f9 100644 --- a/lisp/gnus/mm-extern.el +++ b/lisp/gnus/mm-extern.el @@ -1,6 +1,6 @@ ;;; mm-extern.el --- showing message/external-body -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: message external-body diff --git a/lisp/gnus/mm-partial.el b/lisp/gnus/mm-partial.el index 963b558e91b..8f841b24e91 100644 --- a/lisp/gnus/mm-partial.el +++ b/lisp/gnus/mm-partial.el @@ -1,6 +1,6 @@ ;;; mm-partial.el --- showing message/partial -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: message partial diff --git a/lisp/gnus/mm-url.el b/lisp/gnus/mm-url.el index 9ac0f91f33e..15ff49ab770 100644 --- a/lisp/gnus/mm-url.el +++ b/lisp/gnus/mm-url.el @@ -1,6 +1,6 @@ ;;; mm-url.el --- a wrapper of url functions/commands for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu @@ -28,8 +28,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'mm-util) (require 'gnus) diff --git a/lisp/gnus/mm-util.el b/lisp/gnus/mm-util.el index 3223fc51272..ff9e5d66192 100644 --- a/lisp/gnus/mm-util.el +++ b/lisp/gnus/mm-util.el @@ -1,6 +1,6 @@ ;;; mm-util.el --- Utility functions for Mule and low level things -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko diff --git a/lisp/gnus/mm-uu.el b/lisp/gnus/mm-uu.el index 38053840214..f5172b0851a 100644 --- a/lisp/gnus/mm-uu.el +++ b/lisp/gnus/mm-uu.el @@ -1,6 +1,6 @@ ;;; mm-uu.el --- Return uu stuff as mm handles -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: postscript uudecode binhex shar forward gnatsweb pgp diff --git a/lisp/gnus/mm-view.el b/lisp/gnus/mm-view.el index a3162d13e91..f8fd6372aae 100644 --- a/lisp/gnus/mm-view.el +++ b/lisp/gnus/mm-view.el @@ -1,6 +1,6 @@ ;;; mm-view.el --- functions for viewing MIME objects -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/gnus/mml-sec.el b/lisp/gnus/mml-sec.el index 8dffcf872f3..700a99fe5d8 100644 --- a/lisp/gnus/mml-sec.el +++ b/lisp/gnus/mml-sec.el @@ -1,6 +1,6 @@ ;;; mml-sec.el --- A package with security functions for MML documents -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson diff --git a/lisp/gnus/mml-smime.el b/lisp/gnus/mml-smime.el index a467532ec72..ebbd9b702e5 100644 --- a/lisp/gnus/mml-smime.el +++ b/lisp/gnus/mml-smime.el @@ -1,6 +1,6 @@ ;;; mml-smime.el --- S/MIME support for MML -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: Gnus, MIME, S/MIME, MML diff --git a/lisp/gnus/mml.el b/lisp/gnus/mml.el index e53d35146e8..88217b15398 100644 --- a/lisp/gnus/mml.el +++ b/lisp/gnus/mml.el @@ -1,6 +1,6 @@ ;;; mml.el --- A package for parsing and validating MML documents -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/gnus/mml1991.el b/lisp/gnus/mml1991.el index c22ff6ee5d3..769e1aad8fa 100644 --- a/lisp/gnus/mml1991.el +++ b/lisp/gnus/mml1991.el @@ -1,6 +1,6 @@ ;;; mml1991.el --- Old PGP message format (RFC 1991) support for MML -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Sascha Lüdecke , ;; Simon Josefsson (Mailcrypt interface, Gnus glue) diff --git a/lisp/gnus/mml2015.el b/lisp/gnus/mml2015.el index a46aa68f56a..345338d1c20 100644 --- a/lisp/gnus/mml2015.el +++ b/lisp/gnus/mml2015.el @@ -1,6 +1,6 @@ ;;; mml2015.el --- MIME Security with Pretty Good Privacy (PGP) -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: PGP MIME MML diff --git a/lisp/gnus/nnagent.el b/lisp/gnus/nnagent.el index 844583ac062..279be9f27f3 100644 --- a/lisp/gnus/nnagent.el +++ b/lisp/gnus/nnagent.el @@ -1,6 +1,6 @@ ;;; nnagent.el --- offline backend for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail diff --git a/lisp/gnus/nnatom.el b/lisp/gnus/nnatom.el index 8fdb62c7770..45010ca765c 100644 --- a/lisp/gnus/nnatom.el +++ b/lisp/gnus/nnatom.el @@ -1,6 +1,6 @@ ;;; nnatom.el --- Atom backend for Gnus -*- lexical-binding: t -*- -;; Copyright (C) 2023, 2025 Free Software Foundation, Inc. +;; Copyright (C) 2023, 2025-2026 Free Software Foundation, Inc. ;; Author: Daniel Semyonov ;; This file is part of GNU Emacs. @@ -26,7 +26,6 @@ ;;; Code: (eval-when-compile - (require 'cl-lib) (require 'subr-x)) (require 'nnfeed) diff --git a/lisp/gnus/nnbabyl.el b/lisp/gnus/nnbabyl.el index be58fac1a8c..38f2ac31767 100644 --- a/lisp/gnus/nnbabyl.el +++ b/lisp/gnus/nnbabyl.el @@ -1,6 +1,6 @@ ;;; nnbabyl.el --- rmail mbox access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -32,7 +32,6 @@ (require 'rmail) (require 'nnmail) (require 'nnoo) -(eval-when-compile (require 'cl-lib)) (nnoo-declare nnbabyl) diff --git a/lisp/gnus/nndiary.el b/lisp/gnus/nndiary.el index 7bc46fa88f8..eef00938453 100644 --- a/lisp/gnus/nndiary.el +++ b/lisp/gnus/nndiary.el @@ -1,6 +1,6 @@ ;;; nndiary.el --- A diary back end for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Didier Verna ;; Created: Fri Jul 16 18:55:42 1999 diff --git a/lisp/gnus/nndir.el b/lisp/gnus/nndir.el index 5fe2582487e..15d93fc1103 100644 --- a/lisp/gnus/nndir.el +++ b/lisp/gnus/nndir.el @@ -1,6 +1,6 @@ ;;; nndir.el --- single directory newsgroup access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/nndoc.el b/lisp/gnus/nndoc.el index a430d17caa2..f2769eb1012 100644 --- a/lisp/gnus/nndoc.el +++ b/lisp/gnus/nndoc.el @@ -1,6 +1,6 @@ ;;; nndoc.el --- single file access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -33,7 +33,6 @@ (require 'nnoo) (require 'gnus-util) (require 'mm-util) -(eval-when-compile (require 'cl-lib)) (nnoo-declare nndoc) diff --git a/lisp/gnus/nndraft.el b/lisp/gnus/nndraft.el index 186caf25b0e..133ebe734eb 100644 --- a/lisp/gnus/nndraft.el +++ b/lisp/gnus/nndraft.el @@ -1,6 +1,6 @@ ;;; nndraft.el --- draft article access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/gnus/nneething.el b/lisp/gnus/nneething.el index f3a320ab987..498c2b4888a 100644 --- a/lisp/gnus/nneething.el +++ b/lisp/gnus/nneething.el @@ -1,6 +1,6 @@ ;;; nneething.el --- arbitrary file access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -25,8 +25,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'mailcap) (require 'nnheader) (require 'nnmail) diff --git a/lisp/gnus/nnfeed.el b/lisp/gnus/nnfeed.el index 6a65633b7e0..dd343a50ca4 100644 --- a/lisp/gnus/nnfeed.el +++ b/lisp/gnus/nnfeed.el @@ -1,6 +1,6 @@ ;;; nnfeed.el --- Generic feed backend for Gnus -*- lexical-binding: t -*- -;; Copyright (C) 2023, 2025 Free Software Foundation, Inc. +;; Copyright (C) 2023, 2025-2026 Free Software Foundation, Inc. ;; Author: Daniel Semyonov ;; This file is part of GNU Emacs. diff --git a/lisp/gnus/nnfolder.el b/lisp/gnus/nnfolder.el index f16b0f7e15c..aa4455d1f83 100644 --- a/lisp/gnus/nnfolder.el +++ b/lisp/gnus/nnfolder.el @@ -1,6 +1,6 @@ ;;; nnfolder.el --- mail folder access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; ShengHuo Zhu (adding NOV) diff --git a/lisp/gnus/nngateway.el b/lisp/gnus/nngateway.el index 25ca620ddc1..e70e78e7447 100644 --- a/lisp/gnus/nngateway.el +++ b/lisp/gnus/nngateway.el @@ -1,6 +1,6 @@ ;;; nngateway.el --- posting news via mail gateways -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail diff --git a/lisp/gnus/nnheader.el b/lisp/gnus/nnheader.el index ffa7be8d2ad..fc6f949b297 100644 --- a/lisp/gnus/nnheader.el +++ b/lisp/gnus/nnheader.el @@ -1,6 +1,6 @@ ;;; nnheader.el --- header access macros for Gnus and its backends -*- lexical-binding: t; -*- -;; Copyright (C) 1987-1990, 1993-1998, 2000-2025 Free Software +;; Copyright (C) 1987-1990, 1993-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Masanobu UMEDA diff --git a/lisp/gnus/nnimap.el b/lisp/gnus/nnimap.el index 2eb6751a211..850061ac1d9 100644 --- a/lisp/gnus/nnimap.el +++ b/lisp/gnus/nnimap.el @@ -1,6 +1,6 @@ ;;; nnimap.el --- IMAP interface for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Simon Josefsson diff --git a/lisp/gnus/nnmail.el b/lisp/gnus/nnmail.el index 8b6dd1cc6b3..1577fb11f7f 100644 --- a/lisp/gnus/nnmail.el +++ b/lisp/gnus/nnmail.el @@ -1,6 +1,6 @@ ;;; nnmail.el --- mail support functions for the Gnus mail backends -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'gnus) ; for macro gnus-kill-buffer, at least (require 'nnheader) (require 'message) diff --git a/lisp/gnus/nnmairix.el b/lisp/gnus/nnmairix.el index 4d3cc5edf62..0ba20dd1fff 100644 --- a/lisp/gnus/nnmairix.el +++ b/lisp/gnus/nnmairix.el @@ -1,6 +1,6 @@ ;;; nnmairix.el --- Mairix back end for Gnus, the Emacs newsreader -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: David Engster ;; Keywords: mail searching diff --git a/lisp/gnus/nnmbox.el b/lisp/gnus/nnmbox.el index f8575445b65..e624bce8706 100644 --- a/lisp/gnus/nnmbox.el +++ b/lisp/gnus/nnmbox.el @@ -1,6 +1,6 @@ ;;; nnmbox.el --- mail mbox access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA diff --git a/lisp/gnus/nnmh.el b/lisp/gnus/nnmh.el index a25edebc214..c943340bf27 100644 --- a/lisp/gnus/nnmh.el +++ b/lisp/gnus/nnmh.el @@ -1,6 +1,6 @@ ;;; nnmh.el --- mhspool access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA diff --git a/lisp/gnus/nnml.el b/lisp/gnus/nnml.el index 4366391a66d..a63d233d76c 100644 --- a/lisp/gnus/nnml.el +++ b/lisp/gnus/nnml.el @@ -1,6 +1,6 @@ ;;; nnml.el --- mail spool access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Authors: Didier Verna (adding compaction) ;; Simon Josefsson diff --git a/lisp/gnus/nnoo.el b/lisp/gnus/nnoo.el index aeb8c82a1cc..5088afcd1af 100644 --- a/lisp/gnus/nnoo.el +++ b/lisp/gnus/nnoo.el @@ -1,6 +1,6 @@ ;;; nnoo.el --- OO Gnus Backends -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -25,7 +25,6 @@ ;;; Code: (require 'nnheader) -(eval-when-compile (require 'cl-lib)) (defvar nnoo-definition-alist nil) (defvar nnoo-state-alist nil) diff --git a/lisp/gnus/nnregistry.el b/lisp/gnus/nnregistry.el index 10363560ba6..905420fcc0a 100644 --- a/lisp/gnus/nnregistry.el +++ b/lisp/gnus/nnregistry.el @@ -1,6 +1,6 @@ ;;; nnregistry.el --- access to articles via Gnus' message-id registry -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Ludovic Courtès ;; Keywords: news, mail diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el index 60282167409..1e6c7940d30 100644 --- a/lisp/gnus/nnrss.el +++ b/lisp/gnus/nnrss.el @@ -1,6 +1,6 @@ ;;; nnrss.el --- interfacing with RSS -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: RSS diff --git a/lisp/gnus/nnselect.el b/lisp/gnus/nnselect.el index c2d99f8496d..b90a6c8b235 100644 --- a/lisp/gnus/nnselect.el +++ b/lisp/gnus/nnselect.el @@ -1,6 +1,6 @@ ;;; nnselect.el --- a virtual group backend -*- lexical-binding:t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Andrew Cohen ;; Keywords: news mail diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el index 4a9e1314a51..59805040e97 100644 --- a/lisp/gnus/nnspool.el +++ b/lisp/gnus/nnspool.el @@ -1,6 +1,6 @@ ;;; nnspool.el --- spool access for GNU Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1988-1990, 1993-1998, 2000-2025 Free Software +;; Copyright (C) 1988-1990, 1993-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Masanobu UMEDA @@ -29,7 +29,6 @@ (require 'nnheader) (require 'nntp) (require 'nnoo) -(eval-when-compile (require 'cl-lib)) ;; Probably this entire thing should be obsolete. ;; It's only used to init nnspool-spool-directory, so why not just diff --git a/lisp/gnus/nntp.el b/lisp/gnus/nntp.el index 2ebbe6ee5be..c4ff399022a 100644 --- a/lisp/gnus/nntp.el +++ b/lisp/gnus/nntp.el @@ -1,6 +1,6 @@ ;;; nntp.el --- nntp access for Gnus -*- lexical-binding:t -*- -;; Copyright (C) 1987-1990, 1992-1998, 2000-2025 Free Software +;; Copyright (C) 1987-1990, 1992-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/gnus/nnvirtual.el b/lisp/gnus/nnvirtual.el index c45c8d756e2..12657a698c6 100644 --- a/lisp/gnus/nnvirtual.el +++ b/lisp/gnus/nnvirtual.el @@ -1,6 +1,6 @@ ;;; nnvirtual.el --- virtual newsgroups access for Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: David Moore ;; Lars Magne Ingebrigtsen @@ -38,7 +38,6 @@ (require 'gnus-start) (require 'gnus-sum) (require 'gnus-msg) -(eval-when-compile (require 'cl-lib)) (nnoo-declare nnvirtual) diff --git a/lisp/gnus/nnweb.el b/lisp/gnus/nnweb.el index db460181d20..b906f4610d6 100644 --- a/lisp/gnus/nnweb.el +++ b/lisp/gnus/nnweb.el @@ -1,6 +1,6 @@ ;;; nnweb.el --- retrieving articles via web search engines -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'nnoo) (require 'message) (require 'gnus-util) diff --git a/lisp/gnus/score-mode.el b/lisp/gnus/score-mode.el index de81004242c..9f82de80cb7 100644 --- a/lisp/gnus/score-mode.el +++ b/lisp/gnus/score-mode.el @@ -1,6 +1,6 @@ ;;; score-mode.el --- mode for editing Gnus score files -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail diff --git a/lisp/gnus/smiley.el b/lisp/gnus/smiley.el index 8b023cd1dbb..f048ae94d2b 100644 --- a/lisp/gnus/smiley.el +++ b/lisp/gnus/smiley.el @@ -1,6 +1,6 @@ ;;; smiley.el --- displaying smiley faces -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: news mail multimedia diff --git a/lisp/gnus/smime.el b/lisp/gnus/smime.el index 7dcb95cb495..c526023b98b 100644 --- a/lisp/gnus/smime.el +++ b/lisp/gnus/smime.el @@ -1,6 +1,6 @@ ;;; smime.el --- S/MIME support library -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: SMIME X.509 PEM OpenSSL diff --git a/lisp/gnus/spam-report.el b/lisp/gnus/spam-report.el index 81108378c66..4d6372be824 100644 --- a/lisp/gnus/spam-report.el +++ b/lisp/gnus/spam-report.el @@ -1,6 +1,6 @@ ;;; spam-report.el --- Reporting spam -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Ted Zlatanov ;; Keywords: network, spam, mail, gmane, report diff --git a/lisp/gnus/spam-stat.el b/lisp/gnus/spam-stat.el index b4698e9b2b6..be295406c29 100644 --- a/lisp/gnus/spam-stat.el +++ b/lisp/gnus/spam-stat.el @@ -1,6 +1,6 @@ ;;; spam-stat.el --- detecting spam based on statistics -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Keywords: network diff --git a/lisp/gnus/spam-wash.el b/lisp/gnus/spam-wash.el index 6d2172bc242..9c9338ad782 100644 --- a/lisp/gnus/spam-wash.el +++ b/lisp/gnus/spam-wash.el @@ -1,6 +1,6 @@ ;;; spam-wash.el --- wash spam before analysis -*- lexical-binding: t; -*- -;; Copyright (C) 2004, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004, 2007-2026 Free Software Foundation, Inc. ;; Author: Andrew Cohen ;; Keywords: mail diff --git a/lisp/gnus/spam.el b/lisp/gnus/spam.el index 14abaf83ff2..5e1ee0bcf0d 100644 --- a/lisp/gnus/spam.el +++ b/lisp/gnus/spam.el @@ -1,6 +1,6 @@ ;;; spam.el --- Identifying spam -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Maintainer: Ted Zlatanov diff --git a/lisp/help-at-pt.el b/lisp/help-at-pt.el index 094f2b788fe..c49f76ebbba 100644 --- a/lisp/help-at-pt.el +++ b/lisp/help-at-pt.el @@ -1,6 +1,6 @@ ;;; help-at-pt.el --- local help through the keyboard -*- lexical-binding: t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Luc Teirlinck ;; Keywords: help diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 1c2c110262d..73066dd6f3d 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -1,6 +1,6 @@ ;;; help-fns.el --- Complex help functions -*- lexical-binding: t -*- -;; Copyright (C) 1985-1986, 1993-1994, 1998-2025 Free Software +;; Copyright (C) 1985-1986, 1993-1994, 1998-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -40,8 +40,8 @@ (defvar help-fns-describe-function-functions nil "List of functions to run in help buffer in `describe-function'. -Those functions will be run after the header line and argument -list was inserted, and before the documentation is inserted. +Those functions will be run after the header line, the argument +list, and the function's documentation are inserted. The functions will be called with one argument: the function's symbol. They can assume that a newline was output just before they were called, and they should terminate any of their own output with a newline. diff --git a/lisp/help-macro.el b/lisp/help-macro.el index 0b9bded9484..ea015fa370f 100644 --- a/lisp/help-macro.el +++ b/lisp/help-macro.el @@ -1,6 +1,6 @@ ;;; help-macro.el --- makes command line help such as help-for-help -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Lynn Slater ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/help-mode.el b/lisp/help-mode.el index a8c0b1da818..47fa3590177 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -1,6 +1,6 @@ ;;; help-mode.el --- `help-mode' used by *Help* buffers -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1986, 1993-1994, 1998-2025 Free Software +;; Copyright (C) 1985-1986, 1993-1994, 1998-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -501,9 +501,13 @@ buffer after following a reference. INTERACTIVE-P is non-nil if the calling command was invoked interactively. In this case the stack of items for help buffer \"back\" buttons is cleared. -This should be called very early, before the output buffer is cleared, -because we want to record the \"previous\" position of point so we can -restore it properly when going back." +This function also re-enables the major mode of the buffer, thus +resetting local variables to the values set by the mode and running the +mode hooks. + +So this should be called very early, before the output buffer is +cleared, also because we want to record the \"previous\" position of +point so we can restore it properly when going back." (with-current-buffer (help-buffer) ;; Re-enable major mode, killing all unrelated local vars. (funcall major-mode) diff --git a/lisp/help.el b/lisp/help.el index 8cf91faf174..76c3770fbba 100644 --- a/lisp/help.el +++ b/lisp/help.el @@ -1,6 +1,6 @@ ;;; help.el --- help commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1993-1994, 1998-2025 Free Software +;; Copyright (C) 1985-1986, 1993-1994, 1998-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -99,6 +99,7 @@ buffer.") "f" #'describe-function "g" #'describe-gnu-project "h" #'view-hello-file + "u" #'apropos-user-option "i" #'info "4 i" #'info-other-window diff --git a/lisp/hex-util.el b/lisp/hex-util.el index 956e464bb05..28eab63d3a9 100644 --- a/lisp/hex-util.el +++ b/lisp/hex-util.el @@ -1,6 +1,6 @@ ;;; hex-util.el --- Functions to encode/decode hexadecimal string -*- lexical-binding: t -*- -;; Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Shuhei KOBAYASHI ;; Keywords: data diff --git a/lisp/hexl.el b/lisp/hexl.el index f2362a355aa..d6e6b1c5190 100644 --- a/lisp/hexl.el +++ b/lisp/hexl.el @@ -1,6 +1,6 @@ ;;; hexl.el --- edit a file in a hex dump format using the hexl filter -*- lexical-binding: t -*- -;; Copyright (C) 1989, 1994, 1998, 2001-2025 Free Software Foundation, +;; Copyright (C) 1989, 1994, 1998, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Keith Gabryelski diff --git a/lisp/hfy-cmap.el b/lisp/hfy-cmap.el index f6a71d04d6a..64dee496cd9 100644 --- a/lisp/hfy-cmap.el +++ b/lisp/hfy-cmap.el @@ -1,6 +1,6 @@ ;;; hfy-cmap.el --- Fallback color name -> rgb mapping for `htmlfontify' -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Package: htmlfontify ;; Keywords: color, rgb diff --git a/lisp/hi-lock.el b/lisp/hi-lock.el index 71f302f3ebc..585f973ec86 100644 --- a/lisp/hi-lock.el +++ b/lisp/hi-lock.el @@ -1,6 +1,6 @@ ;;; hi-lock.el --- minor mode for interactive automatic highlighting -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: David M. Koppelman ;; Keywords: faces, minor-mode, matching, display diff --git a/lisp/hilit-chg.el b/lisp/hilit-chg.el index 28a4b5a6907..8b0603a5372 100644 --- a/lisp/hilit-chg.el +++ b/lisp/hilit-chg.el @@ -1,6 +1,6 @@ ;;; hilit-chg.el --- minor mode displaying buffer changes with special face -*- lexical-binding: t -*- -;; Copyright (C) 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Richard Sharman ;; Keywords: faces diff --git a/lisp/hippie-exp.el b/lisp/hippie-exp.el index a7bb6ef92e9..908f496e797 100644 --- a/lisp/hippie-exp.el +++ b/lisp/hippie-exp.el @@ -1,6 +1,6 @@ ;;; hippie-exp.el --- expand text trying various ways to find its expansion -*- lexical-binding: t; -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Author: Anders Holst ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/hl-line.el b/lisp/hl-line.el index d0ffe2a6515..57b56b51213 100644 --- a/lisp/hl-line.el +++ b/lisp/hl-line.el @@ -1,6 +1,6 @@ ;;; hl-line.el --- highlight the current line -*- lexical-binding:t -*- -;; Copyright (C) 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/htmlfontify.el b/lisp/htmlfontify.el index a647ad8f7da..e4d838d2968 100644 --- a/lisp/htmlfontify.el +++ b/lisp/htmlfontify.el @@ -1,6 +1,6 @@ ;;; htmlfontify.el --- htmlize a buffer/source tree with optional hyperlinks -*- lexical-binding: t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Package: htmlfontify ;; Old-Version: 0.21 diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index e57ac772ede..a1ea4027ff7 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1,6 +1,6 @@ ;;; ibuf-ext.el --- extensions for ibuffer -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Colin Walters ;; Maintainer: John Paul Wallington diff --git a/lisp/ibuf-macs.el b/lisp/ibuf-macs.el index 22db912be52..d9cb1e7f88f 100644 --- a/lisp/ibuf-macs.el +++ b/lisp/ibuf-macs.el @@ -1,6 +1,6 @@ ;;; ibuf-macs.el --- macros for ibuffer -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Colin Walters ;; Maintainer: John Paul Wallington @@ -72,7 +72,8 @@ During evaluation of body, bind `it' to the value returned by TEST." ;;;###autoload (cl-defmacro define-ibuffer-column (symbol (&key name inline props summarizer - header-mouse-map) &rest body) + header-mouse-map) + &rest body) "Define a column SYMBOL for use with `ibuffer-formats'. BODY will be called with `buffer' bound to the buffer object, and @@ -112,19 +113,18 @@ change its definition, you should explicitly call `(defun ,sym (buffer mark) (ignore mark) ;Silence byte-compiler if mark is unused. ,bod)) - (put (quote ,sym) 'ibuffer-column-name + (put ',sym 'ibuffer-column-name ,(if (stringp name) name (capitalize (symbol-name symbol)))) - ,(if header-mouse-map `(put (quote ,sym) 'header-mouse-map ,header-mouse-map)) + ,(if header-mouse-map `(put ',sym 'header-mouse-map ,header-mouse-map)) ,(if summarizer ;; Store the name of the summarizing function. - `(put (quote ,sym) 'ibuffer-column-summarizer - (quote ,summarizer))) + `(put ',sym 'ibuffer-column-summarizer #',summarizer)) ,(if summarizer ;; This will store the actual values of the column ;; summary. - `(put (quote ,sym) 'ibuffer-column-summary nil)) + `(put ',sym 'ibuffer-column-summary nil)) :autoload-end))) ;;;###autoload diff --git a/lisp/ibuffer.el b/lisp/ibuffer.el index a55ba26c8ec..99fe5cd2f5a 100644 --- a/lisp/ibuffer.el +++ b/lisp/ibuffer.el @@ -1,6 +1,6 @@ ;;; ibuffer.el --- operate on buffers like dired -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Colin Walters ;; Maintainer: John Paul Wallington @@ -166,9 +166,7 @@ elisp byte-compiler." buffer-file-name)) font-lock-doc-face) (20 (string-match "^\\*" (buffer-name)) font-lock-keyword-face) - (25 (and (string-match "^ " (buffer-name)) - (null buffer-file-name)) - italic) + (25 (ibuffer-hidden-buffer-p) italic) (30 (memq major-mode ibuffer-help-buffer-modes) font-lock-comment-face) (35 (derived-mode-p 'dired-mode) font-lock-function-name-face) (40 (and (boundp 'emacs-lock-mode) emacs-lock-mode) ibuffer-locked-buffer)) @@ -236,9 +234,7 @@ view of the buffers." "The string to use for eliding long columns." :type 'string) -(defcustom ibuffer-maybe-show-predicates `(,(lambda (buf) - (and (string-match "^ " (buffer-name buf)) - (null buffer-file-name)))) +(defcustom ibuffer-maybe-show-predicates '(ibuffer-hidden-buffer-p) "A list of predicates for buffers to display conditionally. A predicate can be a regexp or a function. @@ -2035,6 +2031,13 @@ the value of point at the beginning of the line for that buffer." e))) bmarklist)))) +(defun ibuffer-hidden-buffer-p (&optional buf) + "The default member of `ibuffer-maybe-show-predicates'. +Non-nil if BUF is not visiting a file and its name begins with a space. +BUF defaults to the current buffer." + (and (string-match "^ " (buffer-name buf)) + (null (buffer-file-name buf)))) + (defun ibuffer-visible-p (buf all &optional ibuffer-buf) (and (or all (not diff --git a/lisp/icomplete.el b/lisp/icomplete.el index 35842b53e6b..c1d9556e24d 100644 --- a/lisp/icomplete.el +++ b/lisp/icomplete.el @@ -1,6 +1,6 @@ ;;; icomplete.el --- minibuffer completion incremental feedback -*- lexical-binding: t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Ken Manheimer ;; Created: Mar 1993 Ken Manheimer, klm@nist.gov - first release to usenet @@ -242,6 +242,7 @@ Used to implement the option `icomplete-show-matches-on-no-input'.") :doc "Keymap used by `icomplete-mode' in the minibuffer." "C-M-i" #'icomplete-force-complete "C-j" #'icomplete-force-complete-and-exit + "M-j" #'icomplete-exit "C-." #'icomplete-forward-completions "C-," #'icomplete-backward-completions " " #'icomplete-ret) @@ -455,6 +456,8 @@ if that doesn't produce a completion match." (minibuffer-complete-and-exit) (exit-minibuffer))) +(defalias 'icomplete-exit #'icomplete-fido-exit) + (defun icomplete-fido-backward-updir () "Delete char before or go up directory, like `ido-mode'." (interactive) @@ -1025,7 +1028,9 @@ away from the bottom. Counts wrapped lines as real lines." collect (concat prefix (make-string (max 0 (- max-prefix-len (length prefix))) ? ) (completion-lazy-hilit comp) - (make-string (max 0 (- max-comp-len (length comp))) ? ) + (and suffix + (make-string (max 0 (- max-comp-len (length comp))) + ? )) suffix) into lines-aux finally (setq lines lines-aux diff --git a/lisp/ido.el b/lisp/ido.el index 4aef0f18347..95990e9bdc6 100644 --- a/lisp/ido.el +++ b/lisp/ido.el @@ -1,6 +1,6 @@ ;;; ido.el --- interactively do things with buffers and files -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Kim F. Storm ;; Based on: iswitchb by Stephen Eglen diff --git a/lisp/ielm.el b/lisp/ielm.el index 81d22ee4405..0f6ba30ec00 100644 --- a/lisp/ielm.el +++ b/lisp/ielm.el @@ -1,6 +1,6 @@ ;;; ielm.el --- interaction mode for Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: David Smith ;; Maintainer: emacs-devel@gnu.org @@ -97,9 +97,27 @@ customizes `ielm-prompt'.") (defcustom ielm-dynamic-return t "Controls whether \\\\[ielm-return] has intelligent behavior in IELM. -If non-nil, \\[ielm-return] evaluates input for complete sexps, or inserts a newline -and indents for incomplete sexps. If nil, always inserts newlines." - :type 'boolean) + +If nil, always insert newlines. + +If `point', insert newline if the point is in the middle of an sexp, +otherwise evaluate input. This is useful if you have +`electric-pair-mode', or a similar mode, enabled. + +If any other non-nil value, insert newline for incomplete sexp input and +evaluate input for complete sexps. This is similar to the behavior in +text shells." + :type + '(radio + (const :tag "Always insert newline" nil) + (const + :tag + "Insert newline if point is in middle of sexp, otherwise evaluate input" + point) + (const + :tag + "Insert newline for incomplete sexp, otherwise evaluate input" + t))) (defcustom ielm-dynamic-multiline-inputs t "Force multiline inputs to start from column zero? @@ -248,14 +266,16 @@ simply inserts a newline." (if ielm-dynamic-return (let ((state (save-excursion - (end-of-line) + (unless (eq ielm-dynamic-return 'point) + (end-of-line)) (parse-partial-sexp (ielm-pm) (point))))) (if (and (< (car state) 1) (not (nth 3 state))) (ielm-send-input for-effect) (when (and ielm-dynamic-multiline-inputs (save-excursion - (beginning-of-line) + (let ((inhibit-field-text-motion t)) + (beginning-of-line)) (looking-at-p comint-prompt-regexp))) (save-excursion (goto-char (ielm-pm)) diff --git a/lisp/iimage.el b/lisp/iimage.el index a8b45e58f08..e8d2080e806 100644 --- a/lisp/iimage.el +++ b/lisp/iimage.el @@ -1,6 +1,6 @@ ;;; iimage.el --- Inline image minor mode. -*- lexical-binding: t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: KOSEKI Yoshinori ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/image-file.el b/lisp/image-file.el index 0f61d51b0f4..ac20e3e33b0 100644 --- a/lisp/image-file.el +++ b/lisp/image-file.el @@ -1,6 +1,6 @@ ;;; image-file.el --- support for visiting image files -*- lexical-binding:t -*- ;; -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: multimedia diff --git a/lisp/image-mode.el b/lisp/image-mode.el index 39192a42b6c..2f4162660b8 100644 --- a/lisp/image-mode.el +++ b/lisp/image-mode.el @@ -1,6 +1,6 @@ ;;; image-mode.el --- support for visiting image files -*- lexical-binding: t -*- ;; -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; ;; Author: Richard Stallman ;; Keywords: multimedia @@ -1285,17 +1285,24 @@ If N is negative, go to the previous file." (cl-case (car buffer) (dired (dired-goto-file file) - (let (found) + (let ((orig-file (dired-get-filename nil t)) + found) (while (and (not found) - ;; Stop if we reach the end/start of the buffer. + orig-file + ;; Stop if we reach the end/start of the buffer + ;; (used only when 'dired-movement-style' is nil). (if (> n 0) (not (eobp)) (not (bobp)))) (dired-next-line n) (let ((candidate (dired-get-filename nil t))) - (when (and candidate - (string-match-p regexp candidate)) - (setq found candidate)))) + (if (and candidate + (string-match-p regexp candidate)) + (setq found candidate) + ;; When after wrapping with non-nil 'dired-movement-style' + ;; arrived at the original file, exit the loop. + (if (equal orig-file candidate) + (setq orig-file nil))))) (if found (setq next found) ;; If we didn't find a next/prev file, then restore diff --git a/lisp/image.el b/lisp/image.el index 06cd1543c08..dbfbc266445 100644 --- a/lisp/image.el +++ b/lisp/image.el @@ -1,6 +1,6 @@ ;;; image.el --- image API -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: multimedia @@ -33,7 +33,7 @@ (declare-function image-flush "image.c" (spec &optional frame)) (declare-function clear-image-cache "image.c" - (&optional filter animation-cache)) + (&optional filter animation-filter)) (defconst image-type-header-regexps `(("\\`/[\t\n\r ]*\\*.*XPM.\\*/" . xpm) @@ -953,9 +953,6 @@ displayed." (when position (plist-put (cdr image) :animate-position (set-marker (make-marker) position (current-buffer)))) - ;; Stash the data about the animation here so that we don't - ;; trigger image recomputation unnecessarily later. - (plist-put (cdr image) :animate-multi-frame-data animation) (run-with-timer 0.2 nil #'image-animate-timeout image (or index 0) (car animation) 0 limit (+ (float-time) 0.2))))) @@ -986,9 +983,7 @@ Frames are indexed from 0. Optional argument NOCHECK non-nil means do not check N is within the range of frames present in the image." (unless nocheck (if (< n 0) (setq n 0) - (setq n (min n (1- (car (or (plist-get (cdr image) - :animate-multi-frame-data) - (image-multi-frame-p image)))))))) + (setq n (min n (1- (car (image-multi-frame-p image))))))) (plist-put (cdr image) :index n) (force-window-update (plist-get (cdr image) :animate-buffer))) @@ -1005,10 +1000,8 @@ multiplication factor for the current value." (* value (image-animate-get-speed image)) value))) -;; FIXME? The delay may not be the same for different sub-images, -;; hence we need to call image-multi-frame-p to return it. -;; But it also returns count, so why do we bother passing that as an -;; argument? +;; FIXME: The count argument is redundant; the value is also given by +;; the call to `image-multi-frame-p'. (defun image-animate-timeout (image n count time-elapsed limit target-time) "Display animation frame N of IMAGE. N=0 refers to the initial animation frame. @@ -1053,15 +1046,20 @@ for the animation speed. A negative value means to animate in reverse." ;; keep updating it. This helps stop unbounded RAM usage when ;; doing, for instance, `g' in an eww buffer with animated ;; images. + ;; FIXME: This doesn't currently support ImageMagick. (clear-image-cache nil image) - (let* ((time (prog1 (current-time) - (image-show-frame image n t))) + (let* ((time (current-time)) + ;; Each animation frame can have its own duration, so + ;; (re)fetch its `image-metadata'. Do so before + ;; `image-show-frame' to avoid an image cache miss per + ;; animation frame (bug#47895, bug#66221). + (multi (prog1 (image-multi-frame-p image) + (image-show-frame image n t))) (speed (image-animate-get-speed image)) - (time-to-load-image (time-since time)) (stated-delay-time - (/ (or (cdr (plist-get (cdr image) :animate-multi-frame-data)) - image-default-frame-delay) + (/ (or (cdr multi) image-default-frame-delay) (float (abs speed)))) + (time-to-load-image (time-since time)) ;; Subtract off the time we took to load the image from the ;; stated delay time. (delay (max (float-time (time-subtract stated-delay-time diff --git a/lisp/image/compface.el b/lisp/image/compface.el index d4bdafe2a3a..618d5d98e0c 100644 --- a/lisp/image/compface.el +++ b/lisp/image/compface.el @@ -1,6 +1,6 @@ ;;; compface.el --- functions for converting X-Face headers -*- lexical-binding: t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: multimedia, news diff --git a/lisp/image/exif.el b/lisp/image/exif.el index 999a95993fd..a8967cd9f45 100644 --- a/lisp/image/exif.el +++ b/lisp/image/exif.el @@ -1,6 +1,6 @@ ;;; exif.el --- parsing Exif data in JPEG images -*- lexical-binding: t -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: images diff --git a/lisp/image/gravatar.el b/lisp/image/gravatar.el index fa9678d491c..875875ee6af 100644 --- a/lisp/image/gravatar.el +++ b/lisp/image/gravatar.el @@ -1,6 +1,6 @@ ;;; gravatar.el --- Get Gravatars -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Julien Danjou ;; Keywords: comm, multimedia diff --git a/lisp/image/image-converter.el b/lisp/image/image-converter.el index c067ea0524d..d1db5fdf67e 100644 --- a/lisp/image/image-converter.el +++ b/lisp/image/image-converter.el @@ -1,6 +1,6 @@ ;;; image-converter.el --- Converting images from exotic formats -*- lexical-binding: t -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: images diff --git a/lisp/image/image-crop.el b/lisp/image/image-crop.el index ea278bf8b1c..8d4171d4fc7 100644 --- a/lisp/image/image-crop.el +++ b/lisp/image/image-crop.el @@ -1,6 +1,6 @@ ;;; image-crop.el --- Image Cropping -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Keywords: multimedia diff --git a/lisp/image/image-dired-dired.el b/lisp/image/image-dired-dired.el index 42d26192927..16ac13ae53e 100644 --- a/lisp/image/image-dired-dired.el +++ b/lisp/image/image-dired-dired.el @@ -1,6 +1,6 @@ ;;; image-dired-dired.el --- Dired specific commands for Image-Dired -*- lexical-binding: t -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Mathias Dahl ;; Maintainer: Stefan Kangas diff --git a/lisp/image/image-dired-external.el b/lisp/image/image-dired-external.el index 51aa886507f..f166ee1b2b1 100644 --- a/lisp/image/image-dired-external.el +++ b/lisp/image/image-dired-external.el @@ -1,6 +1,6 @@ ;;; image-dired-external.el --- External process support for Image-Dired -*- lexical-binding: t -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Mathias Dahl ;; Maintainer: Stefan Kangas diff --git a/lisp/image/image-dired-tags.el b/lisp/image/image-dired-tags.el index eccab48e0fe..867a10d6ebd 100644 --- a/lisp/image/image-dired-tags.el +++ b/lisp/image/image-dired-tags.el @@ -1,6 +1,6 @@ ;;; image-dired-tags.el --- Tag support for Image-Dired -*- lexical-binding: t -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Mathias Dahl ;; Maintainer: Stefan Kangas diff --git a/lisp/image/image-dired-util.el b/lisp/image/image-dired-util.el index 27f4bb1a3da..44a582642f2 100644 --- a/lisp/image/image-dired-util.el +++ b/lisp/image/image-dired-util.el @@ -1,6 +1,6 @@ ;;; image-dired-util.el --- util functions for Image-Dired -*- lexical-binding: t -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Mathias Dahl ;; Maintainer: Stefan Kangas diff --git a/lisp/image/image-dired.el b/lisp/image/image-dired.el index c344949ef31..cba090e7c85 100644 --- a/lisp/image/image-dired.el +++ b/lisp/image/image-dired.el @@ -1,6 +1,6 @@ ;;; image-dired.el --- use dired to browse and manipulate your images -*- lexical-binding: t -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Mathias Dahl ;; Maintainer: Stefan Kangas @@ -1283,18 +1283,18 @@ which is based on `image-mode'." (setq file (expand-file-name file)) (when (not (file-exists-p file)) (error "No such file: %s" file)) - (let ((buf (get-buffer image-dired-display-image-buffer)) + (let ((buf (get-buffer-create image-dired-display-image-buffer)) (cur-win (selected-window))) - (when buf - (kill-buffer buf)) - (when-let* ((buf (find-file-noselect file nil t))) - (pop-to-buffer buf) - (rename-buffer image-dired-display-image-buffer) - (if (string-match (image-file-name-regexp) file) - (image-dired-image-mode) - ;; Support visiting PDF files. - (normal-mode)) - (select-window cur-win)))) + (with-current-buffer buf + (let ((inhibit-read-only t)) + (erase-buffer) + (insert-file-contents file) + (if (string-match (image-file-name-regexp) file) + (image-dired-image-mode) + ;; Support visiting PDF files. + (normal-mode)))) + (when buf (pop-to-buffer buf)) + (select-window cur-win))) (defun image-dired-display-this (&optional arg) "Display current thumbnail's original image in display buffer. diff --git a/lisp/image/wallpaper.el b/lisp/image/wallpaper.el index 821bf5c783d..54c94f98fdc 100644 --- a/lisp/image/wallpaper.el +++ b/lisp/image/wallpaper.el @@ -1,6 +1,6 @@ ;;; wallpaper.el --- Change the desktop background -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Stefan Kangas ;; Keywords: images diff --git a/lisp/imenu.el b/lisp/imenu.el index 41c4b5cee91..60b824b9293 100644 --- a/lisp/imenu.el +++ b/lisp/imenu.el @@ -1,6 +1,6 @@ ;;; imenu.el --- framework for mode-specific buffer indexes -*- lexical-binding: t -*- -;; Copyright (C) 1994-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Ake Stenhoff ;; Lars Lindberg @@ -864,7 +864,33 @@ Returns t for rescan and otherwise an element or subelement of INDEX-ALIST." (_ new-prefix)) pos))) (t - (imenu--flatten-index-alist pos concat-names new-prefix))))) + (let ((subalist (imenu--flatten-index-alist + pos concat-names new-prefix)) + (region (get-text-property 0 'imenu-region name))) + (if region + ;; Add non-leaf nodes with Eglot text properties. + (append (imenu--flatten-index-alist + (list (cons name (car region))) concat-names prefix) + subalist) + subalist)))))) + index-alist)) + +(defun imenu--parentify-index-alist (index-alist) + ;; Add separate ".." for navigating to non-leaf nodes. + ;; Used only when `index-alist' has Eglot text properties. + (mapcan + (lambda (item) + (let* ((name (car item)) + (pos (cdr item))) + (cond + ((not (imenu--subalist-p item)) + (list item)) + (t + (let ((subalist (imenu--parentify-index-alist pos)) + (region (get-text-property 0 'imenu-region name))) + (when region + (setq subalist (append (list (cons ".." (car region))) subalist))) + (list (cons name subalist))))))) index-alist)) (defun imenu-choose-buffer-index (&optional prompt alist) @@ -896,8 +922,16 @@ The returned value is of the form (INDEX-NAME . INDEX-POSITION)." ;; Create a list for this buffer only when needed. (while (eq result t) (setq index-alist (if alist alist (imenu--make-index-alist))) - (when imenu-flatten + (cond + (imenu-flatten (setq index-alist (imenu--flatten-index-alist index-alist t))) + ((when-let* ((alist (if (eq (car index-alist) imenu--rescan-item) + (cdr index-alist) index-alist)) + (name (caar alist))) + (get-text-property 0 'imenu-region name)) + ;; Change the menu structure by adding ".." to non-leaf nodes + ;; only when the first node has Eglot text properties. + (setq index-alist (imenu--parentify-index-alist index-alist)))) (setq result (if (and imenu-use-popup-menu (or (eq imenu-use-popup-menu t) mouse-triggered)) diff --git a/lisp/indent-aux.el b/lisp/indent-aux.el index 47d21f86649..27004338409 100644 --- a/lisp/indent-aux.el +++ b/lisp/indent-aux.el @@ -1,6 +1,6 @@ ;;; indent-aux.el --- Autoloaded indentation commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/indent.el b/lisp/indent.el index 25b0d115a28..3a96cc8e191 100644 --- a/lisp/indent.el +++ b/lisp/indent.el @@ -1,6 +1,6 @@ ;;; indent.el --- indentation commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985, 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1995, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/info-look.el b/lisp/info-look.el index 01cea3e0a39..6ca84000cc0 100644 --- a/lisp/info-look.el +++ b/lisp/info-look.el @@ -1,6 +1,6 @@ ;;; info-look.el --- major-mode-sensitive Info index lookup facility -*- lexical-binding: t -*- -;; Copyright (C) 1995-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Ralph Schleicher ;; Keywords: help languages diff --git a/lisp/info-xref.el b/lisp/info-xref.el index 63df259c88f..df92c77c843 100644 --- a/lisp/info-xref.el +++ b/lisp/info-xref.el @@ -1,6 +1,6 @@ ;;; info-xref.el --- check external references in an Info document -*- lexical-binding: t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Kevin Ryde ;; Keywords: docs @@ -45,7 +45,6 @@ ;;; Code: (require 'info) -(eval-when-compile (require 'cl-lib)) ; for `cl-incf' (defgroup info-xref nil "Check external cross-references in Info documents." diff --git a/lisp/info.el b/lisp/info.el index b314a7d77a7..8d1aadd34c6 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -1,6 +1,6 @@ ;;; info.el --- Info package for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1986, 1992-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: help @@ -4242,8 +4242,8 @@ If FORK is non-nil, it is passed to `Info-goto-node'." (define-key map [follow-link] 'mouse-face) (define-key map [XF86Back] 'Info-history-back) (define-key map [XF86Forward] 'Info-history-forward) - (define-key map [tool-bar C-Back\ in\ history] 'Info-history-back-menu) - (define-key map [tool-bar C-Forward\ in\ history] 'Info-history-forward-menu) + (define-key map [tool-bar C-Back\ in\ History] 'Info-history-back-menu) + (define-key map [tool-bar C-Forward\ in\ History] 'Info-history-forward-menu) map) "Keymap containing Info commands.") @@ -4386,12 +4386,12 @@ If FORK is non-nil, it is passed to `Info-goto-node'." (defun Info-history-back-menu (e) "Pop up the menu with a list of previously visited Info nodes." (interactive "e" Info-mode) - (Info-history-menu e "Back in history" Info-history 'Info-history-back)) + (Info-history-menu e "Back in History" Info-history 'Info-history-back)) (defun Info-history-forward-menu (e) "Pop up the menu with a list of Info nodes visited with `Info-history-back'." (interactive "e" Info-mode) - (Info-history-menu e "Forward in history" Info-history-forward 'Info-history-forward)) + (Info-history-menu e "Forward in History" Info-history-forward 'Info-history-forward)) (defvar Info-menu-last-node nil) ;; Last node the menu was created for. diff --git a/lisp/informat.el b/lisp/informat.el index 6da68c30ee2..a0654540ee6 100644 --- a/lisp/informat.el +++ b/lisp/informat.el @@ -1,6 +1,6 @@ ;;; informat.el --- info support functions package for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1986, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: help diff --git a/lisp/international/ccl.el b/lisp/international/ccl.el index 5f766d8bef9..8408caf10d7 100644 --- a/lisp/international/ccl.el +++ b/lisp/international/ccl.el @@ -1,6 +1,6 @@ ;;; ccl.el --- CCL (Code Conversion Language) compiler -*- lexical-binding:t -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/characters.el b/lisp/international/characters.el index 6a9f957b150..65a17717811 100644 --- a/lisp/international/characters.el +++ b/lisp/international/characters.el @@ -1,6 +1,6 @@ ;;; characters.el --- set syntax and category for multibyte characters -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -1672,7 +1672,7 @@ these characters are displayed as full-width. This setting is most important for text-mode frames, because there Emacs cannot access the metrics of the fonts used by the console or the terminal emulator. You should configure the terminal emulator to behave consistently -with the value of this option, by making sure it dispays ambiguous-width +with the value of this option, by making sure it displays ambiguous-width characters as half-width or full-width, depending on the value of this option. diff --git a/lisp/international/emoji.el b/lisp/international/emoji.el index fefce9d0bfb..d8e779f7d8d 100644 --- a/lisp/international/emoji.el +++ b/lisp/international/emoji.el @@ -1,6 +1,6 @@ ;;; emoji.el --- Inserting emojis -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Lars Ingebrigtsen ;; Keywords: fun diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index 67599daeb1a..27e89968874 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -1,6 +1,6 @@ ;;; fontset.el --- commands for handling fontset -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/isearch-x.el b/lisp/international/isearch-x.el index cbc6425603c..3b88a49b6d9 100644 --- a/lisp/international/isearch-x.el +++ b/lisp/international/isearch-x.el @@ -1,6 +1,6 @@ ;;; isearch-x.el --- extended isearch handling commands -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/iso-ascii.el b/lisp/international/iso-ascii.el index 2349790f91d..cedd3693cdd 100644 --- a/lisp/international/iso-ascii.el +++ b/lisp/international/iso-ascii.el @@ -1,6 +1,6 @@ ;;; iso-ascii.el --- set up char tables for ISO 8859/1 on ASCII terminals -*- lexical-binding: t -*- -;; Copyright (C) 1987, 1995, 1998, 2001-2025 Free Software Foundation, +;; Copyright (C) 1987, 1995, 1998, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Howard Gayle diff --git a/lisp/international/iso-cvt.el b/lisp/international/iso-cvt.el index b2f29a07e52..1c50bfeec8c 100644 --- a/lisp/international/iso-cvt.el +++ b/lisp/international/iso-cvt.el @@ -1,7 +1,7 @@ ;;; iso-cvt.el --- translate ISO 8859-1 from/to various encodings -*- lexical-binding: t; -*- ;; This file was formerly called gm-lingo.el. -;; Copyright (C) 1993-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Michael Gschwind ;; Keywords: tex, iso, latin, i18n diff --git a/lisp/international/iso-transl.el b/lisp/international/iso-transl.el index 8c406f5303c..83dcddc7829 100644 --- a/lisp/international/iso-transl.el +++ b/lisp/international/iso-transl.el @@ -1,6 +1,6 @@ ;;; iso-transl.el --- keyboard input for ISO 10646 chars -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 1987, 1993-1999, 2001-2025 Free Software Foundation, +;; Copyright (C) 1987, 1993-1999, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Howard Gayle diff --git a/lisp/international/ja-dic-cnv.el b/lisp/international/ja-dic-cnv.el index 901d1742af5..5eecf7ac128 100644 --- a/lisp/international/ja-dic-cnv.el +++ b/lisp/international/ja-dic-cnv.el @@ -1,6 +1,6 @@ ;;; ja-dic-cnv.el --- convert a Japanese dictionary (SKK-JISYO.L) to Emacs Lisp -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 diff --git a/lisp/international/kinsoku.el b/lisp/international/kinsoku.el index bb6b65da77f..006bf20fe63 100644 --- a/lisp/international/kinsoku.el +++ b/lisp/international/kinsoku.el @@ -1,6 +1,6 @@ ;;; kinsoku.el --- `Kinsoku' processing funcs -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/kkc.el b/lisp/international/kkc.el index a1789bce16f..e7c5fa10c1e 100644 --- a/lisp/international/kkc.el +++ b/lisp/international/kkc.el @@ -1,6 +1,6 @@ ;;; kkc.el --- Kana Kanji converter -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/latexenc.el b/lisp/international/latexenc.el index 9955c0fb569..57f23e6b8aa 100644 --- a/lisp/international/latexenc.el +++ b/lisp/international/latexenc.el @@ -1,6 +1,6 @@ ;;; latexenc.el --- guess correct coding system in LaTeX files -*- lexical-binding: t; -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Arne Jørgensen ;; Keywords: mule, coding system, latex diff --git a/lisp/international/latin1-disp.el b/lisp/international/latin1-disp.el index 7f542d3b87e..d9d324f7712 100644 --- a/lisp/international/latin1-disp.el +++ b/lisp/international/latin1-disp.el @@ -1,6 +1,6 @@ ;;; latin1-disp.el --- display tables for non-ASCII on Latin-1 terminals -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index d3224498a95..51803c700b1 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el @@ -1,6 +1,6 @@ ;;; mule-cmds.el --- commands for multilingual environment -*- lexical-binding:t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/mule-conf.el b/lisp/international/mule-conf.el index 5b35338bf26..818ae9728ce 100644 --- a/lisp/international/mule-conf.el +++ b/lisp/international/mule-conf.el @@ -1,6 +1,6 @@ ;;; mule-conf.el --- configure multilingual environment -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff --git a/lisp/international/mule-diag.el b/lisp/international/mule-diag.el index c12956112cd..71f76e299d5 100644 --- a/lisp/international/mule-diag.el +++ b/lisp/international/mule-diag.el @@ -1,6 +1,6 @@ ;;; mule-diag.el --- show diagnosis of multilingual environment (Mule) -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/mule-util.el b/lisp/international/mule-util.el index 57a2cbd6f58..054977dcf71 100644 --- a/lisp/international/mule-util.el +++ b/lisp/international/mule-util.el @@ -1,6 +1,6 @@ ;;; mule-util.el --- utility functions for multilingual environment (mule) -*- lexical-binding:t -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/mule.el b/lisp/international/mule.el index 78c02ee870f..465322070b6 100644 --- a/lisp/international/mule.el +++ b/lisp/international/mule.el @@ -1,6 +1,6 @@ ;;; mule.el --- basic commands for multilingual environment -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/ogonek.el b/lisp/international/ogonek.el index 0b1e478eefd..59d5cede704 100644 --- a/lisp/international/ogonek.el +++ b/lisp/international/ogonek.el @@ -1,6 +1,6 @@ ;;; ogonek.el --- change the encoding of Polish diacritics -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Włodek Bzyl ;; Ryszard Kubiak diff --git a/lisp/international/quail.el b/lisp/international/quail.el index d015b73e955..eeea4574b42 100644 --- a/lisp/international/quail.el +++ b/lisp/international/quail.el @@ -1,6 +1,6 @@ ;;; quail.el --- provides simple input method for multilingual text -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -53,7 +53,6 @@ ;;; Code: (require 'help-mode) -(eval-when-compile (require 'cl-lib)) (defgroup quail nil "Quail: multilingual input method." diff --git a/lisp/international/rfc1843.el b/lisp/international/rfc1843.el index f0bd8fb556f..261e5e02f9e 100644 --- a/lisp/international/rfc1843.el +++ b/lisp/international/rfc1843.el @@ -1,6 +1,6 @@ ;;; rfc1843.el --- HZ (RFC 1843) decoding -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: news HZ HZ+ mail i18n @@ -30,8 +30,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (defvar rfc1843-word-regexp "~\\({\\([\041-\167][\041-\176]\\| \\)+\\)\\(~}\\|$\\)") diff --git a/lisp/international/textsec-check.el b/lisp/international/textsec-check.el index f728591b209..24465799183 100644 --- a/lisp/international/textsec-check.el +++ b/lisp/international/textsec-check.el @@ -1,6 +1,6 @@ ;;; textsec-check.el --- Check for suspicious texts -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/international/textsec.el b/lisp/international/textsec.el index 25d422e6029..5157a1fef93 100644 --- a/lisp/international/textsec.el +++ b/lisp/international/textsec.el @@ -1,6 +1,6 @@ ;;; textsec.el --- Functions for handling homoglyphs and the like -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/international/titdic-cnv.el b/lisp/international/titdic-cnv.el index 478b63f5e19..41670bbbb54 100644 --- a/lisp/international/titdic-cnv.el +++ b/lisp/international/titdic-cnv.el @@ -1,6 +1,6 @@ ;;; titdic-cnv.el --- convert cxterm dictionary (TIT format) to Quail package -*- coding: utf-8-emacs; lexical-binding:t -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/international/ucs-normalize.el b/lisp/international/ucs-normalize.el index a7738f16aae..bea32c19035 100644 --- a/lisp/international/ucs-normalize.el +++ b/lisp/international/ucs-normalize.el @@ -1,6 +1,6 @@ ;;; ucs-normalize.el --- Unicode normalization NFC/NFD/NFKD/NFKC -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Taichi Kawabata ;; Keywords: unicode, normalization diff --git a/lisp/international/utf-7.el b/lisp/international/utf-7.el index 8c1716affce..abaf24e8da2 100644 --- a/lisp/international/utf-7.el +++ b/lisp/international/utf-7.el @@ -1,6 +1,6 @@ ;;; utf-7.el --- utf-7 coding system -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n, mail diff --git a/lisp/international/utf7.el b/lisp/international/utf7.el index 61d8a1cab14..e23bf866760 100644 --- a/lisp/international/utf7.el +++ b/lisp/international/utf7.el @@ -1,6 +1,6 @@ ;;; utf7.el --- UTF-7 encoding/decoding for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Jon K Hellan ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/isearch.el b/lisp/isearch.el index 28d24488e71..b677e89c7cd 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -1,6 +1,6 @@ ;;; isearch.el --- incremental search minor mode -*- lexical-binding: t -*- -;; Copyright (C) 1992-1997, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-1997, 1999-2026 Free Software Foundation, Inc. ;; Author: Daniel LaLiberte ;; Maintainer: emacs-devel@gnu.org @@ -274,8 +274,6 @@ It is nil if none yet.") Default value, nil, means edit the string instead." :type 'boolean) -(autoload 'char-fold-to-regexp "char-fold") - (defcustom search-default-mode nil "Default mode to use when starting isearch. Value is nil, t, or a function. @@ -2827,7 +2825,6 @@ With argument, add COUNT copies of the character." (mapconcat 'isearch-text-char-description string "")))))))) -(autoload 'emoji--read-emoji "emoji") (defun isearch-emoji-by-name (&optional count) "Read an Emoji name and add it to the search string COUNT times. COUNT (interactively, the prefix argument) defaults to 1. @@ -2835,6 +2832,7 @@ The command accepts Unicode names like \"smiling face\" or \"heart with arrow\", and completion is available." (interactive "p") (emoji--init) + (declare-function emoji--read-emoji "emoji" ()) (with-isearch-suspended (pcase-let* ((`(,glyph . ,derived) (emoji--read-emoji)) (emoji (if derived diff --git a/lisp/isearchb.el b/lisp/isearchb.el index 9ecd83a2b6a..87e334f96d9 100644 --- a/lisp/isearchb.el +++ b/lisp/isearchb.el @@ -1,6 +1,6 @@ ;;; isearchb.el --- a marriage between iswitchb and isearch -*- lexical-binding: t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el index 711d7ca8cac..d78c1d03deb 100644 --- a/lisp/jit-lock.el +++ b/lisp/jit-lock.el @@ -1,6 +1,6 @@ ;;; jit-lock.el --- just-in-time fontification -*- lexical-binding: t -*- -;; Copyright (C) 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Keywords: faces files diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el index e3f5eb7d998..806d42b8831 100644 --- a/lisp/jka-cmpr-hook.el +++ b/lisp/jka-cmpr-hook.el @@ -1,6 +1,6 @@ ;;; jka-cmpr-hook.el --- preloaded code to enable jka-compr.el -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 1997, 1999-2000, 2002-2025 Free Software +;; Copyright (C) 1993-1995, 1997, 1999-2000, 2002-2026 Free Software ;; Foundation, Inc. ;; Author: Jay K. Adams diff --git a/lisp/jka-compr.el b/lisp/jka-compr.el index 684db1180fa..8258ab32495 100644 --- a/lisp/jka-compr.el +++ b/lisp/jka-compr.el @@ -1,6 +1,6 @@ ;;; jka-compr.el --- reading/writing/loading compressed files -*- lexical-binding: t; -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: Jay K. Adams ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/json.el b/lisp/json.el index 098bf43cd99..f2086474a8b 100644 --- a/lisp/json.el +++ b/lisp/json.el @@ -1,6 +1,6 @@ ;;; json.el --- JavaScript Object Notation parser / generator -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Theresa O'Connor ;; Version: 1.5 diff --git a/lisp/jsonrpc.el b/lisp/jsonrpc.el index ca2647971fd..fca00dd2fc7 100644 --- a/lisp/jsonrpc.el +++ b/lisp/jsonrpc.el @@ -1,6 +1,6 @@ ;;; jsonrpc.el --- JSON-RPC library -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: João Távora ;; Keywords: processes, languages, extensions @@ -208,6 +208,34 @@ JSONRPC message." "jsonrpc-lambda-elem"))) `(lambda (,e) (apply (cl-function (lambda ,cl-lambda-list ,@body)) ,e)))) +(defun jsonrpc-events-jq-at-point () + "Find first { in line, use forward-sexp to grab JSON, pipe through jq." + (interactive) + (save-excursion + (beginning-of-line) + (when (search-forward "{" (line-end-position) t) + (backward-char) + (let ((start (point))) + (forward-sexp) + (shell-command-on-region start (point) "jq" "*jq output*"))))) + +(defun jsonrpc-events-occur-at-point () + "Run occur on thing at point." + (interactive) + (occur (thing-at-point 'symbol))) + +(defvar jsonrpc-events-mode-map + (let ((map (make-sparse-keymap))) + (define-key map (kbd "RET") 'jsonrpc-events-jq-at-point) + (define-key map (kbd "C-c C-o") 'jsonrpc-events-occur-at-point) + map) + "Keymap for `jsonrpc-events-mode'.") + +(define-derived-mode jsonrpc-events-mode special-mode "JSONRPC-Events" + "Major mode for JSONRPC events buffers." + (buffer-disable-undo) + (setq buffer-read-only t)) + (defun jsonrpc-events-buffer (connection) "Get or create JSONRPC events buffer for CONNECTION." (let ((probe (jsonrpc--events-buffer connection))) @@ -215,8 +243,7 @@ JSONRPC message." probe (with-current-buffer (get-buffer-create (format "*%s events*" (jsonrpc-name connection))) - (buffer-disable-undo) - (setq buffer-read-only t) + (jsonrpc-events-mode) (setf (jsonrpc--events-buffer connection) (current-buffer)))))) @@ -300,22 +327,29 @@ dispatcher in CONN." (and method id) (let* ((debug-on-error (and debug-on-error (not jsonrpc-inhibit-debug-on-error))) - (reply - (condition-case-unless-debug _ignore - (condition-case oops - `(:result ,(funcall rdispatcher conn (intern method) - params)) - (jsonrpc-error - `(:error - (:code - ,(or (alist-get 'jsonrpc-error-code (cdr oops)) - -32603) - :message ,(or (alist-get 'jsonrpc-error-message - (cdr oops)) - "Internal error"))))) - (error - '(:error (:code -32603 :message "Internal error")))))) - (apply #'jsonrpc--reply conn id method reply))) + reply) + (unwind-protect + (setq + reply + (condition-case oops + `(:result + ,(funcall rdispatcher conn (intern method) params)) + (jsonrpc-error + (let* ((data (cdr oops)) + (code (alist-get 'jsonrpc-error-code data)) + (msg (alist-get 'jsonrpc-error-message + (cdr oops)))) + (if (eq code 32000) ;; This means 'no error' + (when-let* ((d (alist-get 'jsonrpc-error-data + data))) + `(:result ,d)) + `(:error + (:code ,(or code -32603) + :message ,(or msg "Internal error")))))))) + (unless reply + (setq reply + `(:error (:code -32603 :message "Internal error")))) + (apply #'jsonrpc--reply conn id method reply)))) (;; A remote notification method (funcall ndispatcher conn (intern method) params)) @@ -379,93 +413,112 @@ a new request with identical DEFERRED and for the same buffer. However, in that situation, the original timeout is kept. PARAMS can also be the keyword `:jsonrpc-omit', in which case the -JSONRPC request object is formed witout a `params' entry. +JSONRPC request object is formed without a `params' entry. Returns a list whose first element is an integer identifying the request as specified in the JSONRPC 2.0 spec." (apply #'jsonrpc--async-request-1 connection method params args)) (cl-defun jsonrpc-request (connection - method params &key + method params + &rest args + &key deferred timeout + cancel-on-quit cancel-on-input cancel-on-input-retval) "Make a request to CONNECTION, synchronously wait for a reply. -CONNECTION, METHOD and PARAMS as in `jsonrpc-async-request' (which see). +CONNECTION, METHOD, PARAMS, DEFERRED and TIMEOUT are interpreted as in +`jsonrpc-async-request', which see. -Except in the case of a non-nil CANCEL-ON-INPUT (explained -below), this function doesn't exit until anything interesting -happens (success reply, error reply, or timeout). Furthermore, -it only exits locally (returning the JSONRPC result object) if -the request is successful, otherwise it exits non-locally with an -error of type `jsonrpc-error'. +This function has two exit modes: local and non-local. Except for +CANCEL-ON-INPUT, explained below, the only normal local exit occurs when +the remote endpoint succeeds, in which case a JSONRPC result object is +returned. A remote endpoint error or a local timeout cause a non-local +exit with a `jsonrpc-error' condition. -DEFERRED and TIMEOUT as in `jsonrpc-async-request', which see. +A user quit (`'C-g'/`keyboard-quit') causes a non-local exit with a +`quit' condition. A non-nil CANCEL-ON-QUIT must be a function of a +single argument, ID, which identifies the request as specified in the +JSONRPC 2.0 spec. Callers may use this function to issue a cancel +notification to the endpoint, thus preventing it from continuing to work +on the request. -If CANCEL-ON-INPUT is non-nil and the user inputs something while the -function is waiting, the function locally exits immediately returning -CANCEL-ON-INPUT-RETVAL. Any future replies to the request coming from -the remote endpoint (normal or error) are ignored. If CANCEL-ON-INPUT -is a function, it is invoked with one argument, an integer identifying -the canceled request as specified in the JSONRPC 2.0 spec. Callers may -use this function to issue a cancel notification to the endpoint, thus -preventing it from continuing to work on the now-cancelled request." +If CANCEL-ON-INPUT is non-nil and any type of user input is detected +while waiting for a response `jsonrpc-request' locally exits +immediately, returning CANCEL-ON-INPUT-RETVAL. CANCEL-ON-INPUT can also +be a function with the same semantics as CANCEL-ON-QUIT. Since the a +`C-g'/`keyboard-quit' also counts as user input, CANCEL-ON-INPUT +nullifies the effect of CANCEL-ON-QUIT. + +On either cancellation scenario, any future remote endpoint replies +to the original request (normal or error) are ignored." (let* ((tag (funcall (if (fboundp 'gensym) 'gensym 'cl-gensym) "jsonrpc-request-catch-tag")) id-and-timer canceled (throw-on-input nil) - (retval - (unwind-protect - (catch tag - (setq - id-and-timer - (apply - #'jsonrpc--async-request-1 - connection method params - :sync-request t - :success-fn (lambda (result) - (unless canceled - (throw tag `(done ,result)))) - :error-fn - (jsonrpc-lambda - (&key code message data) - (unless canceled - (throw tag `(error (jsonrpc-error-code . ,code) - (jsonrpc-error-message . ,message) - (jsonrpc-error-data . ,data))))) - :timeout-fn - (lambda () - (unless canceled - (throw tag '(error (jsonrpc-error-message . "Timed out"))))) - `(,@(when deferred `(:deferred ,deferred)) - ,@(when timeout `(:timeout ,timeout))))) - (cond (cancel-on-input - (unwind-protect - (let ((inhibit-quit t)) (while (sit-for 30))) - (setq canceled t)) - (when (functionp cancel-on-input) - (funcall cancel-on-input (car id-and-timer))) - `(canceled ,cancel-on-input-retval)) - (t (while t (accept-process-output nil 30))))) - ;; In normal operation, continuations for error/success is - ;; handled by `jsonrpc--continue'. Timeouts also remove - ;; the continuation... - (pcase-let* ((`(,id ,_) id-and-timer)) - ;; ...but we still have to guard against exist explicit - ;; user-quit (C-g) or the `cancel-on-input' case, so - ;; discard the continuation. - (jsonrpc--remove connection id (list deferred (current-buffer))) - ;; ...finally, whatever may have happened to this sync - ;; request, it might have been holding up any outer - ;; "anxious" continuations. The following ensures we - ;; call them. - (jsonrpc--continue connection id))))) - (when (eq 'error (car retval)) - (signal 'jsonrpc-error - (cons - (format "request id=%s failed:" (car id-and-timer)) - (cdr retval)))) + retval) + (unwind-protect + (catch tag + (setq + id-and-timer + (apply + #'jsonrpc--async-request-1 + connection method params + :sync-request t + :success-fn (lambda (result) + (unless canceled + (setq retval `(done ,result)) + (throw tag nil))) + :error-fn + (jsonrpc-lambda + (&key code message data) + (unless canceled + (setq retval `(error (jsonrpc-error-code . ,code) + (jsonrpc-error-message . ,message) + (jsonrpc-error-data . ,data))) + (throw tag nil))) + :timeout-fn + (lambda () + (unless canceled + (setq retval '(error (jsonrpc-error-message . "Timed out"))) + (throw tag nil))) + `(,@(when (plist-member args :deferred) `(:deferred ,deferred)) + ,@(when (plist-member args :timeout) `(:timeout ,timeout))))) + (cond (cancel-on-input + (unwind-protect + (let ((inhibit-quit t) (inhibit-redisplay t)) + (while (sit-for 30 t))) + (setq canceled t)) + (when (functionp cancel-on-input) + (funcall cancel-on-input (car id-and-timer))) + (setq retval `(canceled ,cancel-on-input-retval))) + (t (let ((inhibit-quit nil)) + (while t (accept-process-output nil 30)))))) + ;; In normal operation, continuations for error/success is + ;; handled by `jsonrpc--continue'. Timeouts also remove + ;; the continuation... + (pcase-let* ((`(,id ,_) id-and-timer)) + ;; ...but we still have to guard against exist explicit + ;; user-quit (C-g) or the `cancel-on-input' case, so + ;; discard the continuation. + (jsonrpc--remove connection id (list deferred (current-buffer))) + ;; Furthermore, assume a nil `retval' is a quit from + ;; `accept-process-output' (either "soft" or "hard," like a + ;; double C-g C-g on TTY terminals) + (unless retval + (when cancel-on-quit (funcall cancel-on-quit id))) + ;; ...finally, whatever may have happened to this sync + ;; request, it might have been holding up any outer + ;; "anxious" continuations. The following ensures we + ;; call them. + (jsonrpc--continue connection id))) + (cond ((eq 'error (car retval)) + (signal 'jsonrpc-error + (cons + (format "request id=%s failed:" (car id-and-timer)) + (cdr retval))))) (cadr retval))) (cl-defun jsonrpc-notify (connection method params) @@ -1008,7 +1061,7 @@ Do nothing if MAX-SIZE is nil." (delete-region (point-min) (save-excursion - ;; Remove 1/4, so that the cost is O(1) amortised, since each + ;; Remove 1/4, so that the cost is O(1) amortized, since each ;; call to `delete-region' will move the buffer contents twice. (goto-char (+ (point-min) (/ (buffer-size) 4))) (forward-line) diff --git a/lisp/keymap.el b/lisp/keymap.el index 95e1ebc48fb..c2e86204be4 100644 --- a/lisp/keymap.el +++ b/lisp/keymap.el @@ -1,6 +1,6 @@ ;;; keymap.el --- Keymap functions -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/kmacro.el b/lisp/kmacro.el index b82c7b28c26..982ae38f47d 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el @@ -1,6 +1,6 @@ ;;; kmacro.el --- enhanced keyboard macros -*- lexical-binding: t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Kim F. Storm ;; Keywords: keyboard convenience diff --git a/lisp/language/china-util.el b/lisp/language/china-util.el index 6c628f8d01b..a170dca79d4 100644 --- a/lisp/language/china-util.el +++ b/lisp/language/china-util.el @@ -1,6 +1,6 @@ ;;; china-util.el --- utilities for Chinese -*- lexical-binding: t; -*- -;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/chinese.el b/lisp/language/chinese.el index cacafc2d884..f2bae8ecfce 100644 --- a/lisp/language/chinese.el +++ b/lisp/language/chinese.el @@ -1,6 +1,6 @@ ;;; chinese.el --- support for Chinese -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/cyril-util.el b/lisp/language/cyril-util.el index b55649c9f5e..9abe6fa5d57 100644 --- a/lisp/language/cyril-util.el +++ b/lisp/language/cyril-util.el @@ -1,6 +1,6 @@ ;;; cyril-util.el --- utilities for Cyrillic scripts -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Keywords: mule, multilingual, Cyrillic diff --git a/lisp/language/cyrillic.el b/lisp/language/cyrillic.el index ecc33ed19de..bc1996864d2 100644 --- a/lisp/language/cyrillic.el +++ b/lisp/language/cyrillic.el @@ -1,6 +1,6 @@ ;;; cyrillic.el --- support for Cyrillic -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/czech.el b/lisp/language/czech.el index 2b5de0cb219..9a3e9d06f5d 100644 --- a/lisp/language/czech.el +++ b/lisp/language/czech.el @@ -1,6 +1,6 @@ ;;; czech.el --- support for Czech -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Milan Zamazal ;; Maintainer: Pavel Janík diff --git a/lisp/language/english.el b/lisp/language/english.el index 34549d2a567..153fe6f5316 100644 --- a/lisp/language/english.el +++ b/lisp/language/english.el @@ -1,6 +1,6 @@ ;;; english.el --- support for English -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/ethio-util.el b/lisp/language/ethio-util.el index a1c87dad9ee..39e753d416d 100644 --- a/lisp/language/ethio-util.el +++ b/lisp/language/ethio-util.el @@ -1,6 +1,6 @@ ;;; ethio-util.el --- utilities for Ethiopic -*- coding: utf-8-emacs; lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2002-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/ethiopic.el b/lisp/language/ethiopic.el index 9c254cbfc6e..ead4f4bff7f 100644 --- a/lisp/language/ethiopic.el +++ b/lisp/language/ethiopic.el @@ -1,6 +1,6 @@ ;;; ethiopic.el --- support for Ethiopic -*- coding: utf-8-emacs; lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/european.el b/lisp/language/european.el index cf027f6e67f..1df7941cb66 100644 --- a/lisp/language/european.el +++ b/lisp/language/european.el @@ -1,6 +1,6 @@ ;;; european.el --- support for European languages -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/georgian.el b/lisp/language/georgian.el index cbe8ee1688d..6cc9a51c696 100644 --- a/lisp/language/georgian.el +++ b/lisp/language/georgian.el @@ -1,6 +1,6 @@ ;;; georgian.el --- language support for Georgian -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/language/greek.el b/lisp/language/greek.el index 0c47c223607..d0adffe1957 100644 --- a/lisp/language/greek.el +++ b/lisp/language/greek.el @@ -1,6 +1,6 @@ ;;; greek.el --- support for Greek -*- lexical-binding: t -*- -;; Copyright (C) 2002, 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2013-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/hanja-util.el b/lisp/language/hanja-util.el index 96c708d2137..d51b48ad15b 100644 --- a/lisp/language/hanja-util.el +++ b/lisp/language/hanja-util.el @@ -1,6 +1,6 @@ ;;; hanja-util.el --- Korean Hanja util module -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Jihyun Cho ;; Keywords: multilingual, input method, Korean, Hanja diff --git a/lisp/language/hebrew.el b/lisp/language/hebrew.el index 1c119ace133..9bd63f85cc0 100644 --- a/lisp/language/hebrew.el +++ b/lisp/language/hebrew.el @@ -1,6 +1,6 @@ ;;; hebrew.el --- support for Hebrew -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/ind-util.el b/lisp/language/ind-util.el index 78e1273705f..2bb10ea1403 100644 --- a/lisp/language/ind-util.el +++ b/lisp/language/ind-util.el @@ -1,6 +1,6 @@ ;;; ind-util.el --- Transliteration and Misc. Tools for Indian Languages -*- coding: utf-8-emacs; lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Keywords: multilingual, Indian, Devanagari diff --git a/lisp/language/indian.el b/lisp/language/indian.el index 7a31edf7f93..59076faea69 100644 --- a/lisp/language/indian.el +++ b/lisp/language/indian.el @@ -1,6 +1,6 @@ ;;; indian.el --- Indian languages support -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 1997, 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff --git a/lisp/language/indonesian.el b/lisp/language/indonesian.el index f574f141a07..e9aac5e615f 100644 --- a/lisp/language/indonesian.el +++ b/lisp/language/indonesian.el @@ -1,6 +1,6 @@ ;;; indonesian.el --- Indonesian languages support -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: समीर सिंह Sameer Singh ;; Keywords: multilingual, input method, i18n, Indonesia diff --git a/lisp/language/japan-util.el b/lisp/language/japan-util.el index d5faf97174f..1d01fd42d4c 100644 --- a/lisp/language/japan-util.el +++ b/lisp/language/japan-util.el @@ -1,6 +1,6 @@ ;;; japan-util.el --- utilities for Japanese -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/japanese.el b/lisp/language/japanese.el index b5dc0b0764f..16979491606 100644 --- a/lisp/language/japanese.el +++ b/lisp/language/japanese.el @@ -1,6 +1,6 @@ ;;; japanese.el --- support for Japanese -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/korea-util.el b/lisp/language/korea-util.el index fda6e8b4d79..da91e692719 100644 --- a/lisp/language/korea-util.el +++ b/lisp/language/korea-util.el @@ -1,6 +1,6 @@ ;;; korea-util.el --- utilities for Korean -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, ;; 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/korean.el b/lisp/language/korean.el index 806f5df15c0..0a7c4ee50ea 100644 --- a/lisp/language/korean.el +++ b/lisp/language/korean.el @@ -1,6 +1,6 @@ ;;; korean.el --- support for Korean -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/lao-util.el b/lisp/language/lao-util.el index 628632614f3..ee22363c6ab 100644 --- a/lisp/language/lao-util.el +++ b/lisp/language/lao-util.el @@ -1,6 +1,6 @@ ;;; lao-util.el --- utilities for Lao -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, ;; 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/lao.el b/lisp/language/lao.el index aa89f12311b..099479df4d2 100644 --- a/lisp/language/lao.el +++ b/lisp/language/lao.el @@ -1,6 +1,6 @@ ;;; lao.el --- support for Lao -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, ;; 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/misc-lang.el b/lisp/language/misc-lang.el index ad5052ebb83..1f5d4ee4c02 100644 --- a/lisp/language/misc-lang.el +++ b/lisp/language/misc-lang.el @@ -1,6 +1,6 @@ ;;; misc-lang.el --- support for miscellaneous languages (characters) -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/philippine.el b/lisp/language/philippine.el index fd2fc5f7e3d..5b9c2738081 100644 --- a/lisp/language/philippine.el +++ b/lisp/language/philippine.el @@ -1,6 +1,6 @@ ;;; philippine.el --- Philippine languages support -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: समीर सिंह Sameer Singh ;; Keywords: multilingual, input method, i18n, Philippines diff --git a/lisp/language/romanian.el b/lisp/language/romanian.el index 12a7df68b40..daf9e8971f0 100644 --- a/lisp/language/romanian.el +++ b/lisp/language/romanian.el @@ -1,6 +1,6 @@ ;;; romanian.el --- support for Romanian -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Dan Nicolaescu ;; Keywords: multilingual, Romanian, i18n diff --git a/lisp/language/slovak.el b/lisp/language/slovak.el index 6862c5d7465..550e747e587 100644 --- a/lisp/language/slovak.el +++ b/lisp/language/slovak.el @@ -1,6 +1,6 @@ ;;; slovak.el --- support for Slovak -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Authors: Tibor Šimko , ;; Milan Zamazal diff --git a/lisp/language/tai-viet.el b/lisp/language/tai-viet.el index f57e00fe7f6..faf1c5490fb 100644 --- a/lisp/language/tai-viet.el +++ b/lisp/language/tai-viet.el @@ -1,6 +1,6 @@ ;;; tai-viet.el --- support for Tai Viet -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Copyright (C) 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H13PRO009 diff --git a/lisp/language/thai-util.el b/lisp/language/thai-util.el index 62f7edb79c6..6179ae6a6b5 100644 --- a/lisp/language/thai-util.el +++ b/lisp/language/thai-util.el @@ -1,6 +1,6 @@ ;;; thai-util.el --- utilities for Thai -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/thai.el b/lisp/language/thai.el index fa054877439..5d31565eb38 100644 --- a/lisp/language/thai.el +++ b/lisp/language/thai.el @@ -1,6 +1,6 @@ ;;; thai.el --- support for Thai -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/tibet-util.el b/lisp/language/tibet-util.el index 2b426740635..0e4b204c68a 100644 --- a/lisp/language/tibet-util.el +++ b/lisp/language/tibet-util.el @@ -1,6 +1,6 @@ ;;; tibet-util.el --- utilities for Tibetan -*- coding: utf-8-emacs; lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/tibetan.el b/lisp/language/tibetan.el index 76f43ade081..3569b89327a 100644 --- a/lisp/language/tibetan.el +++ b/lisp/language/tibetan.el @@ -1,6 +1,6 @@ ;;; tibetan.el --- support for Tibetan language -*- coding: utf-8-emacs; lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/language/utf-8-lang.el b/lisp/language/utf-8-lang.el index d971b5c8344..da7cdd1ad0d 100644 --- a/lisp/language/utf-8-lang.el +++ b/lisp/language/utf-8-lang.el @@ -1,6 +1,6 @@ ;;; utf-8-lang.el --- generic UTF-8 language environment -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/language/viet-util.el b/lisp/language/viet-util.el index d672f77f250..fc8b969f87b 100644 --- a/lisp/language/viet-util.el +++ b/lisp/language/viet-util.el @@ -1,6 +1,6 @@ ;;; viet-util.el --- utilities for Vietnamese -*- lexical-binding: t; -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -220,10 +220,13 @@ ) "Alist of Vietnamese characters vs corresponding `VIQR' string.") -;; Regular expression matching single Vietnamese character represented -;; by VIQR. (defconst viqr-regexp - "[aeiouyAEIOUY]\\([(^+]?['`?~.]\\|[(^+]\\)\\|[Dd][Dd]") + "[aeiouyAEIOUY]\\([(^+]?['`?~.]\\|[(^+]\\)\\|[Dd][Dd]\\|\\\\[(^+'`?~.d\\]" + "Regular expression matching VIQR representation of a single character.") + +(defconst viqr-punctuation-regexp + "[(^+]?['`?~.]" + "Regular expression matching punctuation chars that must be escaped in VIQR.") ;;;###autoload (defun viet-decode-viqr-region (from to) @@ -257,6 +260,7 @@ positions (integers or markers) specifying the stretch of the region." (save-restriction (narrow-to-region from to) (goto-char (point-min)) + (replace-regexp-in-region viqr-punctuation-regexp "\\\\\\&") (while (re-search-forward "\\cv" nil t) (let* ((ch (preceding-char)) (viqr (cdr (assq ch viet-viqr-alist)))) diff --git a/lisp/language/vietnamese.el b/lisp/language/vietnamese.el index c4cb6dd222b..d4b6befcef9 100644 --- a/lisp/language/vietnamese.el +++ b/lisp/language/vietnamese.el @@ -1,6 +1,6 @@ ;;; vietnamese.el --- support for Vietnamese -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 654e2ce7879..c5fbb5a3e22 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -2699,10 +2699,10 @@ from `browse-url-elinks-wrapper'. (fn URL &optional NEW-WINDOW)" t) (autoload 'browse-url-button-open "browse-url" "\ Follow the link under point using `browse-url'. -If EXTERNAL (the prefix if used interactively), open with the -external browser instead of the default one. +If SECONDARY (the prefix if used interactively), open with the +secondary browser instead of the default one. -(fn &optional EXTERNAL MOUSE-EVENT)" t) +(fn &optional SECONDARY MOUSE-EVENT)" t) (autoload 'browse-url-button-open-url "browse-url" "\ Open URL using `browse-url'. If `current-prefix-arg' is non-nil, use @@ -5133,7 +5133,7 @@ List of directories to search for source files named in error messages. Elements should be directory names, not file names of directories. The value nil as an element means to try the default directory.") (custom-autoload 'compilation-search-path "compile" t) -(defvar compile-command "make -k " "\ +(defvar compile-command (format "make -k -j%d " (ceiling (num-processors) 1.5)) "\ Last shell command used to do a compilation; default for next compilation. Sometimes it is useful for files to supply local values for this variable. @@ -5259,6 +5259,8 @@ evaluate the variable `compilation-shell-minor-mode'. The mode's hook is called both when the mode is enabled and when it is disabled. +\\{compilation-shell-minor-mode-map} + (fn &optional ARG)" t) (autoload 'compilation-minor-mode "compile" "\ Toggle Compilation minor mode. @@ -5281,6 +5283,8 @@ evaluate the variable `compilation-minor-mode'. The mode's hook is called both when the mode is enabled and when it is disabled. +\\{compilation-minor-mode-map} + (fn &optional ARG)" t) (autoload 'compilation-next-error-function "compile" "\ Advance to the next error message and visit the file where the error was. @@ -8143,7 +8147,11 @@ The glyphs being changed by this function are `vertical-border', `box-vertical',`box-horizontal', `box-down-right', `box-down-left', `box-up-right', `box-up-left',`box-double-vertical', `box-double-horizontal', `box-double-down-right', -`box-double-down-left', `box-double-up-right', `box-double-up-left'," t) +`box-double-down-left', `box-double-up-right', `box-double-up-left'. + +To customize the glyphs, use `make-glyph-code' to create a glyph from a +character code and a face, and then use `set-display-table-slot' to +assign the glyph to a slot." t) (autoload 'standard-display-8bit "disp-table" "\ Display characters representing raw bytes in the range L to H literally. @@ -9801,7 +9809,7 @@ Turn on EDT Emulation." t) ;;; Generated autoloads from progmodes/eglot.el -(push '(eglot 1 19) package--builtin-versions) +(push '(eglot 1 21) package--builtin-versions) (define-obsolete-function-alias 'eglot-update #'eglot-upgrade-eglot "29.1") (autoload 'eglot "eglot" "\ Start LSP server for PROJECT's buffers under MANAGED-MAJOR-MODES. @@ -9857,6 +9865,8 @@ command only needs to be invoked once per project, as all other files of a given major mode visited within the same project will automatically become managed with no further user intervention needed.") +(autoload 'eglot-manual "eglot" "\ +Read Eglot's manual." t) (autoload 'eglot-upgrade-eglot "eglot" "\ Update Eglot to latest version. @@ -10181,12 +10191,12 @@ This function recursively analyzes Lisp forms (HEAD . TAIL), usually starting with a top-level form, by inspecting HEAD at each level: - If HEAD is a symbol with a non-nil `elisp-scope-analyzer' symbol - property, then the value of that property specifies a bespoke analzyer + property, then the value of that property specifies a bespoke analyzer function, AF, that is called as (AF HEAD . TAIL) to analyze the form. See more details about writing analyzer functions below. - If HEAD satisfies `functionp', which means it is a function in the - running Emacs session, analzye the form as a function call. + running Emacs session, analyze the form as a function call. - If HEAD is a safe macro (see `elisp-scope-safe-macro-p'), expand it and analyze the resulting form. @@ -13978,7 +13988,7 @@ value associated with ?b in SPECIFICATION, either padding it with leading zeros or truncating leading characters until it's ten characters wide\". -the substitution for a specification character can also be a +The substitution for a specification character can also be a function, taking no arguments and returning a string to be used for the replacement. It will only be called if FORMAT uses that character. For example: @@ -13992,6 +14002,9 @@ like above, so that it is compiled by the byte-compiler. Any text properties of FORMAT are copied to the result, with any text properties of a %-spec itself copied to its substitution. +However, note that face properties from the two sources are not +merged; the face properties of %-spec override the face properties +of substitutions, if any, in the result. IGNORE-MISSING indicates how to handle %-spec characters not present in SPECIFICATION. If it is nil or omitted, emit an @@ -16876,19 +16889,31 @@ Populate MENU with a menu item to highlight symbol at CLICK. (autoload 'hide-ifdef-mode "hideif" "\ Toggle features to hide/show #ifdef blocks (Hide-Ifdef mode). -Hide-Ifdef mode is a buffer-local minor mode for use with C and +\\Hide-Ifdef mode is a buffer-local minor mode for use with C and C-like major modes. When enabled, code within #ifdef constructs that the C preprocessor would eliminate may be hidden from view. + +Use \\[hide-ifdefs] to hide ifdefs and \\[hide-ifdefs] to show them. +Use \\[hif-show-all] to show all ifdefs. + Several variables affect how the hiding is done: `hide-ifdef-env' An association list of defined and undefined symbols for the - current project. Initially, the global value of `hide-ifdef-env' - is used. This variable was a buffer-local variable, which limits - hideif to parse only one C/C++ file at a time. We've extended - hideif to support parsing a C/C++ project containing multiple C/C++ - source files opened simultaneously in different buffers. Therefore - `hide-ifdef-env' can no longer be buffer local but must be global. + current project. Use \\[hide-ifdef-define] and \\[hide-ifdef-undef] to update the value of + this list with defined or undefined symbols. + We've extended hideif to support parsing a C/C++ project + containing multiple C/C++ source files opened simultaneously in + different buffers. Therefore `hide-ifdef-env' can no longer be + buffer local but must be global. + +`hide-ifdef-initially' + Customize this to a non-nil value to cause ifdefs be hidden as + soon as `hide-ifdef-mode' is turned on. + +`hide-ifdef-lines' + Customize to non-nil to hide the #if, #ifdef, #ifndef, #else, + and #endif lines when hiding ifdefs. `hide-ifdef-define-alist' An association list of defined symbol lists. @@ -16896,14 +16921,6 @@ Several variables affect how the hiding is done: and `hide-ifdef-use-define-alist' to set the current `hide-ifdef-env' from one of the lists in `hide-ifdef-define-alist'. -`hide-ifdef-lines' - Set to non-nil to not show #if, #ifdef, #ifndef, #else, and - #endif lines when hiding. - -`hide-ifdef-initially' - Indicates whether `hide-ifdefs' should be called when Hide-Ifdef mode - is activated. - `hide-ifdef-read-only' Set to non-nil if you want to make buffers read only while hiding. After `show-ifdefs', read-only status is restored to previous value. @@ -19208,7 +19225,7 @@ Define an inline function NAME with arguments ARGS and body in BODY. This is halfway between `defmacro' and `defun'. BODY is used as a blueprint both for the body of the function and for the body of the compiler-macro used to generate the code inlined at each call site. -See Info node `(elisp)Inline Functions for more details. +See Info node `(elisp)Inline Functions' for more details. A (noinline t) in the `declare' form prevents the definition of the compiler macro. This is for the rare case in which you want to use this @@ -19445,6 +19462,7 @@ Selections are: \\`m' Place typed-in value in personal dictionary, then recheck current word. \\`C-l' Redraw screen. \\`C-r' Recursive edit. +\\`C-u' Toggle abbrev saving for an immediately subsequent replacement command. \\`C-z' Suspend Emacs or iconify frame.") (autoload 'ispell-kill-ispell "ispell" "\ Kill current Ispell process (so that you may start a fresh one). @@ -24619,10 +24637,6 @@ Each directory name should be absolute. These directories contain packages intended for system-wide; in contrast, `package-user-dir' contains packages for personal use." :type '(repeat directory) :initialize #'custom-initialize-delay :group 'applications :risky t :version "24.1") (custom-autoload 'package-directory-list "package" t) -(defvar package-activated-list nil "\ -List of the names of currently activated packages.") -(defvar package--activated nil "\ -Non-nil if `package-activate-all' has been run.") (autoload 'package-initialize "package" "\ Load Emacs Lisp packages, and activate them. The variable `package-load-list' controls which packages to load. @@ -24640,9 +24654,6 @@ you have code which must run before `package-initialize', put that code in the early init-file. (fn &optional NO-ACTIVATE)" t) -(defun package-activate-all nil "\ -Activate all installed packages. -The variable `package-load-list' controls which packages to load." (setq package--activated t) (let* ((elc (concat package-quickstart-file "c")) (qs (if (file-readable-p elc) elc (if (file-readable-p package-quickstart-file) package-quickstart-file)))) (or (and qs (not (bound-and-true-p package-activated-list)) (with-demoted-errors "Error during quickstart: %S" (let ((load-source-file-function nil)) (unless (boundp 'package-activated-list) (setq package-activated-list nil)) (load qs nil 'nomessage) t))) (progn (require 'package) (with-no-warnings (package--activate-all)))))) (autoload 'package-import-keyring "package" "\ Import keys from FILE. @@ -24657,14 +24668,6 @@ downloads in the background. This is always the case when the command is invoked interactively. (fn &optional ASYNC)" t) -(autoload 'package-installed-p "package" "\ -Return non-nil if PACKAGE, of MIN-VERSION or newer, is installed. -If PACKAGE is a symbol, it is the package name and MIN-VERSION -should be a version list. - -If PACKAGE is a `package-desc' object, MIN-VERSION is ignored. - -(fn PACKAGE &optional MIN-VERSION)") (autoload 'package-install "package" "\ Install the package PKG. @@ -24685,7 +24688,7 @@ If the command is invoked with a prefix argument, it will allow upgrading of built-in packages, as if `package-install-upgrade-built-in' had been enabled. -(fn PKG &optional DONT-SELECT)" t) +(fn PKG &optional DONT-SELECT INTERACTIVE)" t) (autoload 'package-upgrade "package" "\ Upgrade package NAME if a newer version exists. @@ -24730,6 +24733,21 @@ If optional argument NOCONFIRM is non-nil, or when invoked with a prefix argument, don't ask for confirmation to install packages. (fn &optional NOCONFIRM)" t) +(autoload 'package-delete "package" "\ +Delete package PKG-DESC. + +Argument PKG-DESC is the full description of the package, for example as +obtained by `package-get-descriptor'. Interactively, prompt the user +for the package name and version. + +When package is used elsewhere as dependency of another package, +refuse deleting it and return an error. +If prefix argument FORCE is non-nil, package will be deleted even +if it is used elsewhere. +If NOSAVE is non-nil, the package is not removed from +`package-selected-packages'. + +(fn PKG-DESC &optional FORCE NOSAVE)" t) (autoload 'package-reinstall "package" "\ Reinstall package PKG. PKG should be either a symbol, the package name, or a `package-desc' @@ -24771,7 +24789,43 @@ short description. (fn &optional NO-FETCH)" t) (defalias 'package-list-packages 'list-packages) -(autoload 'package-get-version "package" "\ +(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-browse-url "package" "\ +Open the website of the package under point in a browser. +`browse-url' is used to determine the browser to be used. If +SECONDARY (interactively, the prefix), use the secondary browser. +DESC must be a `package-desc' object. + +(fn DESC &optional SECONDARY)" 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)" t) +(register-definition-prefixes "package" '("bad-signature" "define-package" "describe-package-1" "package-")) + + +;;; Generated autoloads from emacs-lisp/package-activate.el + +(push '(package-activate 1 1 0) package--builtin-versions) +(defvar package-activated-list nil "\ +List of the names of currently activated packages.") +(defvar package--activated nil "\ +Non-nil if `package-activate-all' has been run.") +(defun package-activate-all nil "\ +Activate all installed packages. +The variable `package-load-list' controls which packages to load." (setq package--activated t) (let* ((elc (concat package-quickstart-file "c")) (qs (if (file-readable-p elc) elc (if (file-readable-p package-quickstart-file) package-quickstart-file)))) (or (and qs (not (bound-and-true-p package-activated-list)) (with-demoted-errors "Error during quickstart: %S" (let ((load-source-file-function nil)) (unless (boundp 'package-activated-list) (setq package-activated-list nil)) (load qs nil 'nomessage) t))) (progn (require 'package) (with-no-warnings (package--activate-all)))))) +(autoload 'package-installed-p "package-activate" "\ +Return non-nil if PACKAGE, of MIN-VERSION or newer, is installed. +If PACKAGE is a symbol, it is the package name and MIN-VERSION +should be a version list. + +If PACKAGE is a `package-desc' object, MIN-VERSION is ignored. + +(fn PACKAGE &optional MIN-VERSION)") +(autoload 'package-get-version "package-activate" "\ Return the version number of the package in which this is used. Assumes it is used from an Elisp file placed inside the top-level directory of an installed ELPA package. @@ -24779,15 +24833,7 @@ The return value is a string (or nil in case we can't find it). It works in more cases if the call is in the file which contains the `Version:' header.") (function-put 'package-get-version 'pure 't) -(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-")) +(register-definition-prefixes "package-activate" '("package-")) ;;; Generated autoloads from emacs-lisp/package-vc.el @@ -25789,6 +25835,10 @@ Note that this function doesn't work if DELTA is larger than the height of the current window. (fn DELTA)") +(autoload 'pixel-scroll-interpolate-down "pixel-scroll" "\ +Interpolate a scroll downwards by one page." t) +(autoload 'pixel-scroll-interpolate-up "pixel-scroll" "\ +Interpolate a scroll upwards by one page." t) (defvar pixel-scroll-precision-mode nil "\ Non-nil if Pixel-Scroll-Precision mode is enabled. See the `pixel-scroll-precision-mode' command @@ -26519,7 +26569,7 @@ Open profile FILENAME. ;;; Generated autoloads from progmodes/project.el -(push '(project 0 11 1) package--builtin-versions) +(push '(project 0 11 2) package--builtin-versions) (autoload 'project-current "project" "\ Return the project instance in DIRECTORY, defaulting to `default-directory'. @@ -26812,7 +26862,8 @@ would otherwise have the same name. Whether to show current project name and Project menu on the mode line. This feature requires the presence of the following item in `mode-line-format': `(project-mode-line project-mode-line-format)'; it -is part of the default mode line beginning with Emacs 30.") +is part of the default mode line beginning with Emacs 30. When the +value is `non-remote', show the project name only for local files.") (custom-autoload 'project-mode-line "project" t) (register-definition-prefixes "project" '("project-" "vc-")) @@ -30765,7 +30816,7 @@ either customize it (see the info node `Easy Customization') or call the function `global-so-long-mode'.") (custom-autoload 'global-so-long-mode "so-long" nil) (autoload 'global-so-long-mode "so-long" "\ -Toggle automated performance mitigations for files with long lines. +Toggle automated performance mitigation for files with long lines. Many Emacs modes struggle with buffers which contain excessively long lines, and may consequently cause unacceptable performance issues. @@ -32174,6 +32225,37 @@ and `sc-post-hook' is run after the guts of this function.") (register-definition-prefixes "semantic/symref" '("semantic-symref-")) + +;;; Generated autoloads from system-taskbar.el + +(defvar system-taskbar-mode nil "\ +Non-nil if System-Taskbar mode is enabled. +See the `system-taskbar-mode' command +for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `system-taskbar-mode'.") +(custom-autoload 'system-taskbar-mode "system-taskbar" nil) +(autoload 'system-taskbar-mode "system-taskbar" "\ +System GUI taskbar icon badge, progress report, alerting. + +This is a global minor mode. If called interactively, toggle the +`System-Taskbar mode' mode. If the prefix argument is positive, enable +the mode, and if it is zero or negative, disable the mode. + +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 \\='system-taskbar-mode)'. + +The mode's hook is called both when the mode is enabled and when it is +disabled. + +(fn &optional ARG)" t) +(register-definition-prefixes "system-taskbar" '("system-taskbar-")) + ;;; Generated autoloads from t-mouse.el @@ -33951,9 +34033,9 @@ of the file before running this function, by default can look like one of the following (your choice): Time-stamp: <> Time-stamp: \" \" -This function writes the current time between the brackets or quotes, -by default formatted like this: - Time-stamp: <2024-08-07 17:10:21 gildea> +This function writes the current time between the angle brackets +or quotes, by default formatted like this: + Time-stamp: <2025-08-07 17:10:21 gildea> Although you can run this function manually to update a time stamp once, usually you want automatic time stamp updating. @@ -33971,7 +34053,8 @@ If the file has no time stamp template or if `time-stamp-active' is nil, this function does nothing. You can set `time-stamp-pattern' in a file's local variables list -to customize the information in the time stamp and where it is written." t) +to customize the information in the time stamp, the surrounding +template, and where in the file it can occur." t) (autoload 'time-stamp-toggle-active "time-stamp" "\ Set `time-stamp-active' (whether \\[time-stamp] updates a buffer). If ARG is unset, toggle `time-stamp-active'. With an arg, set @@ -34520,13 +34603,13 @@ This is like `trace-function-foreground', but without popping up the output buffer or changing the window configuration. (fn FUNCTION &optional BUFFER CONTEXT)" t) -(defalias 'trace-function 'trace-function-foreground) +(defalias 'trace-function #'trace-function-foreground) (register-definition-prefixes "trace" '("inhibit-trace" "trace-" "untrace-")) ;;; Generated autoloads from emacs-lisp/track-changes.el -(push '(track-changes 1 4) package--builtin-versions) +(push '(track-changes 1 5) package--builtin-versions) (register-definition-prefixes "track-changes" '("track-changes-" "with--track-changes")) @@ -34712,13 +34795,13 @@ Interactively, with a prefix argument, prompt for a different method." t) ;;; Generated autoloads from net/trampver.el -(push '(tramp 2 8 1 -1) package--builtin-versions) +(push '(tramp 2 8 2 -1) package--builtin-versions) (register-definition-prefixes "trampver" '("tramp-")) ;;; Generated autoloads from transient.el -(push '(transient 0 11 0) package--builtin-versions) +(push '(transient 0 12 0) package--builtin-versions) (autoload 'transient-insert-suffix "transient" "\ Insert a SUFFIX into PREFIX before LOC. PREFIX is a prefix command, a symbol. @@ -34818,7 +34901,7 @@ The value can be either a list of ts-modes to enable, or t to enable all ts-modes. The value nil (the default) means not to enable any tree-sitter based modes. -Enabling a tree-stter based mode means that visiting files in the +Enabling a tree-sitter based mode means that visiting files in the corresponding programming language will automatically turn on that mode, instead of any non-tree-sitter based modes for the same language.") @@ -36476,22 +36559,31 @@ See `vc-use-incoming-outgoing-prefixes' regarding giving this command a global binding. (fn &optional UPSTREAM-LOCATION FILESET)" t) + (put 'vc-trunk-branch-regexps 'safe-local-variable + #'vc--safe-branch-regexps-p) + (put 'vc-topic-branch-regexps 'safe-local-variable + #'vc--safe-branch-regexps-p) (autoload 'vc-root-diff-outgoing-base "vc" "\ Report diff of all changes since the merge base with UPSTREAM-LOCATION. The merge base with UPSTREAM-LOCATION means the common ancestor of the working revision and UPSTREAM-LOCATION. Uncommitted changes are included in the diff. -When unspecified UPSTREAM-LOCATION is the place \\[vc-push] would push -to. This default meaning for UPSTREAM-LOCATION may change in a future -release of Emacs. +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, query the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. When called interactively with a prefix argument, prompt for UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION can be a remote branch name. -This command is like `vc-root-diff-outgoing' except that it includes -uncommitted changes. +When called interactively with a \\[universal-argument] \\[universal-argument] prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. (With a double prefix argument, this command is like +`vc-diff-outgoing' except that it includes uncommitted changes.) (fn &optional UPSTREAM-LOCATION)" t) (autoload 'vc-diff-outgoing-base "vc" "\ @@ -36501,18 +36593,69 @@ The merge base with UPSTREAM-LOCATION means the common ancestor of the working revision and UPSTREAM-LOCATION. Uncommitted changes are included in the diff. -When unspecified UPSTREAM-LOCATION is the place \\[vc-push] would push -to. This default meaning for UPSTREAM-LOCATION may change in a future -release of Emacs. +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, query the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. When called interactively with a prefix argument, prompt for UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION can be a remote branch name. -This command is like to `vc-fileset-diff-outgoing' except that it -includes uncommitted changes. +When called interactively with a \\[universal-argument] \\[universal-argument] prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. (With a double prefix argument, this command is like +`vc-diff-outgoing' except that it includes uncommitted changes.) + +When called from Lisp, optional argument FILESET overrides the fileset. (fn &optional UPSTREAM-LOCATION FILESET)" t) +(autoload 'vc-log-outgoing-base "vc" "\ +Show log for the VC fileset since the merge base with UPSTREAM-LOCATION. +The merge base with UPSTREAM-LOCATION means the common ancestor of the +working revision and UPSTREAM-LOCATION. + +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, query the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. + +When called interactively with a prefix argument, prompt for +UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION +can be a remote branch name. + +When called interactively with a \\[universal-argument] \\[universal-argument] prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. + +When called from Lisp, optional argument FILESET overrides the fileset. + +(fn &optional UPSTREAM-LOCATION FILESET)" t) +(autoload 'vc-root-log-outgoing-base "vc" "\ +Show log of revisions since the merge base with UPSTREAM-LOCATION. +The merge base with UPSTREAM-LOCATION means the common ancestor of the +working revision and UPSTREAM-LOCATION. + +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, query the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. + +When called interactively with a prefix argument, prompt for +UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION +can be a remote branch name. + +When called interactively with a \\[universal-argument] \\[universal-argument] prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. + +(fn &optional UPSTREAM-LOCATION)" t) (autoload 'vc-version-ediff "vc" "\ Show differences between REV1 and REV2 of FILES using ediff. This compares two revisions of the files in FILES. Currently, @@ -36648,7 +36791,8 @@ Show in another window the VC change history of the current fileset. If WORKING-REVISION is non-nil, it should be a revision ID; position point in the change history buffer at that revision. If LIMIT is non-nil, it should be a number specifying the maximum -number of revisions to show; the default is `vc-log-show-limit'. +number of revisions to show; the default for interactive calls is +`vc-log-show-limit'. When called interactively with a prefix argument, prompt for WORKING-REVISION and LIMIT. @@ -36660,6 +36804,16 @@ the full log message and the author. Additional control of the shown log style is available via `vc-log-short-style'. (fn &optional WORKING-REVISION LIMIT)" t) +(autoload 'vc-print-change-log "vc" "\ +Show in another window the VC change history of the current fileset. +With a \\[universal-argument] prefix argument, prompt for a branch or revision to log +instead of the working revision, and a number specifying the maximum +number of revisions to show; the default is `vc-log-show-limit'. +You can also use a numeric prefix argument to specify this. + +This is like `vc-print-log' but with an alternative prefix argument that +some users might prefer for interactive usage." t) +(function-put 'vc-print-change-log 'interactive-only 'vc-print-log) (autoload 'vc-print-root-log "vc" "\ Show in another window VC change history of the current VC controlled tree. If LIMIT is non-nil, it should be a number specifying the maximum @@ -36671,12 +36825,33 @@ the command prompts for the id of a REVISION, and shows that revision with its diffs (if the underlying VCS backend supports that). (fn &optional LIMIT REVISION)" t) -(autoload 'vc-print-branch-log "vc" "\ -Show the change log for BRANCH in another window. -The command prompts for the branch whose change log to show. +(autoload 'vc-print-root-change-log "vc" "\ +Show in another window the VC change history of the whole tree. +With a \\[universal-argument] prefix argument, prompt for a branch or revision to log +instead of the working revision, and a number specifying the maximum +number of revisions to show; the default is `vc-log-show-limit'. +You can also use a numeric prefix argument to specify this. + +This is like `vc-root-print-log' but with an alternative prefix argument +that some users might prefer for interactive usage." t) +(function-put 'vc-print-root-change-log 'interactive-only 'vc-print-root-log) +(autoload 'vc-print-fileset-branch-log "vc" "\ +Show log of VC changes on BRANCH, limited to the current fileset. +When called interactively, prompts for BRANCH. +In addition to logging branches, for VCS for which it makes sense you +can specify a revision ID instead of a branch name to produce a log +starting at that revision. Tags and remote references also work. (fn BRANCH)" t) -(autoload 'vc-log-incoming "vc" "\ +(autoload 'vc-print-root-branch-log "vc" "\ +Show root log of VC changes on BRANCH in another window. +When called interactively, prompts for BRANCH. +In addition to logging branches, for VCS for which it makes sense you +can specify a revision ID instead of a branch name to produce a log +starting at that revision. Tags and remote references also work. + +(fn BRANCH)" t) +(autoload 'vc-root-log-incoming "vc" "\ Show log of changes that will be received with pull from UPSTREAM-LOCATION. When unspecified UPSTREAM-LOCATION is the place \\[vc-update] would pull from. When called interactively with a prefix argument, prompt for @@ -36684,7 +36859,7 @@ UPSTREAM-LOCATION. In some version control systems UPSTREAM-LOCATION can be a remote branch name. (fn &optional UPSTREAM-LOCATION)" t) -(autoload 'vc-log-outgoing "vc" "\ +(autoload 'vc-root-log-outgoing "vc" "\ Show log of changes that will be sent with a push to UPSTREAM-LOCATION. When unspecified UPSTREAM-LOCATION is the place \\[vc-push] would push to. When called interactively with a prefix argument, prompt for @@ -37211,7 +37386,7 @@ step during initialization." t) ;;; Generated autoloads from progmodes/verilog-mode.el -(push '(verilog-mode 2025 11 8 248496848) package--builtin-versions) +(push '(verilog-mode 2026 1 18 88738971) package--builtin-versions) (autoload 'verilog-mode "verilog-mode" "\ Major mode for editing Verilog code. \\ @@ -37959,7 +38134,7 @@ Convert Vietnamese characters of the current buffer to `VIQR' mnemonics." t) (fn FROM TO)") -(register-definition-prefixes "viet-util" '("viet-viqr-alist" "viqr-regexp")) +(register-definition-prefixes "viet-util" '("viet-viqr-alist" "viqr-")) ;;; Generated autoloads from view.el @@ -39204,7 +39379,7 @@ it is relative to the top edge (for positive ARG) or the bottom edge If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window. @@ -39218,7 +39393,7 @@ negative ARG) of the current window. If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window. @@ -39232,7 +39407,7 @@ bottom edge (for negative ARG) of the current window. If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window. @@ -39246,7 +39421,7 @@ it is relative to the left edge (for positive ARG) or the right edge If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window. @@ -39532,6 +39707,14 @@ list. Delete FRAME2 if the merge completed successfully and return FRAME1. (fn &optional FRAME1 FRAME2 VERTICAL)" t) +(autoload 'window-get-split-combination "window-x" "\ +Return window combination suitable for `split-frame'. + +WINDOW is the main window in which the combination should be derived. +ARG is the argument passed to `split-frame'. Return a +combination of windows `split-frame' is considered to split off. + +(fn WINDOW ARG)") (autoload 'split-frame "window-x" "\ Split windows of specified FRAME into two separate frames. FRAME must be a live frame and defaults to the selected frame. ARG @@ -39866,12 +40049,9 @@ output of this command when the backend is etags. (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame) (autoload 'xref-references-in-directory "xref" "\ Find all references to SYMBOL in directory DIR. +See `xref-references-in-directory-function' for the implementation. Return a list of xref values. -This function uses the Semantic Symbol Reference API, see -`semantic-symref-tool-alist' for details on which tools are used, -and when. - (fn SYMBOL DIR)") (autoload 'xref-matches-in-directory "xref" "\ Find all matches for REGEXP in directory DIR. @@ -39879,8 +40059,9 @@ Return a list of xref values. Only files matching some of FILES and none of IGNORES are searched. FILES is a string with glob patterns separated by spaces. IGNORES is a list of glob patterns for files to ignore. +If DELIMITED is `symbol', only select matches that span full symbols. -(fn REGEXP FILES DIR IGNORES)") +(fn REGEXP FILES DIR IGNORES &optional DELIMITED)") (autoload 'xref-matches-in-files "xref" "\ Find all matches for REGEXP in FILES. Return a list of xref values. @@ -39978,7 +40159,7 @@ Enable `yaml-ts-mode' when its grammar is available. Also propose to install the grammar when `treesit-enabled-modes' is t or contains the mode name.") (when (boundp 'treesit-major-mode-remap-alist) (add-to-list 'auto-mode-alist '("\\.ya?ml\\'" . yaml-ts-mode-maybe)) (add-to-list 'treesit-major-mode-remap-alist '(yaml-mode . yaml-ts-mode))) -(register-definition-prefixes "yaml-ts-mode" '("yaml-ts-mode--")) +(register-definition-prefixes "yaml-ts-mode" '("yaml-ts-mode-")) ;;; Generated autoloads from yank-media.el diff --git a/lisp/leim/quail/arabic.el b/lisp/leim/quail/arabic.el index bf6b2e1474f..f614ab957e5 100644 --- a/lisp/leim/quail/arabic.el +++ b/lisp/leim/quail/arabic.el @@ -1,6 +1,6 @@ ;;; arabic.el --- Quail package for inputting Arabic -*- coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: James Cloos ;; Keywords: mule, input method, Arabic diff --git a/lisp/leim/quail/burmese.el b/lisp/leim/quail/burmese.el index c1a655e55f4..e4b3a8a75e5 100644 --- a/lisp/leim/quail/burmese.el +++ b/lisp/leim/quail/burmese.el @@ -1,6 +1,6 @@ ;;; burmese.el --- Quail package for inputting Burmese -*- coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Billy Lei ;; Keywords: multilingual, input method, Burmese @@ -124,7 +124,7 @@ (quail-define-package "burmese-visual" "Burmese" "MYV" nil "Burmese input method (in visual order). -A more common way to input Burmese, which allows inputing the vowel ေ in visual order. +A more common way to input Burmese, which allows inputting the vowel ေ in visual order. " nil t t t t nil nil nil nil nil t) (quail-define-rules diff --git a/lisp/leim/quail/cham.el b/lisp/leim/quail/cham.el index f8baecf8351..72ac2d64878 100644 --- a/lisp/leim/quail/cham.el +++ b/lisp/leim/quail/cham.el @@ -1,6 +1,6 @@ ;;; cham.el --- Quail package for inputting Cham characters -*- coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Eli Zaretskii ;; Keywords: i18n diff --git a/lisp/leim/quail/compose.el b/lisp/leim/quail/compose.el index bc6a5f44302..03daee5eed3 100644 --- a/lisp/leim/quail/compose.el +++ b/lisp/leim/quail/compose.el @@ -1,6 +1,6 @@ ;;; compose.el --- Quail package for Multi_key character composition -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Juri Linkov ;; Keywords: multilingual, input method, i18n diff --git a/lisp/leim/quail/croatian.el b/lisp/leim/quail/croatian.el index a464f25d227..9f7eea8bfe4 100644 --- a/lisp/leim/quail/croatian.el +++ b/lisp/leim/quail/croatian.el @@ -1,6 +1,6 @@ ;;; croatian.el --- Quail package for inputting Croatian -*-coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Hrvoje Nikšić ;; Keywords: i18n diff --git a/lisp/leim/quail/cyril-jis.el b/lisp/leim/quail/cyril-jis.el index f523397cf0b..77396cefabd 100644 --- a/lisp/leim/quail/cyril-jis.el +++ b/lisp/leim/quail/cyril-jis.el @@ -1,6 +1,6 @@ ;;; cyril-jis.el --- Quail package for inputting JISX0208 Cyrillic letters -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/cyrillic.el b/lisp/leim/quail/cyrillic.el index 39dfcd0c6c1..d4273fbf292 100644 --- a/lisp/leim/quail/cyrillic.el +++ b/lisp/leim/quail/cyrillic.el @@ -1,6 +1,6 @@ ;;; cyrillic.el --- Quail package for inputting Cyrillic characters -*- lexical-binding: t -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/czech.el b/lisp/leim/quail/czech.el index 117cf299eae..318c51e4b0a 100644 --- a/lisp/leim/quail/czech.el +++ b/lisp/leim/quail/czech.el @@ -1,6 +1,6 @@ ;;; czech.el --- Quail package for inputting Czech -*-coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Milan Zamazal ;; Maintainer: Pavel Janík diff --git a/lisp/leim/quail/emoji.el b/lisp/leim/quail/emoji.el index 3f0039b965f..30ec394b706 100644 --- a/lisp/leim/quail/emoji.el +++ b/lisp/leim/quail/emoji.el @@ -1,6 +1,6 @@ ;;; emoji.el --- Quail package for emoji character composition -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Juri Linkov ;; Keywords: multilingual, input method, i18n diff --git a/lisp/leim/quail/georgian.el b/lisp/leim/quail/georgian.el index 0b3f4625d44..e997b2e1d1d 100644 --- a/lisp/leim/quail/georgian.el +++ b/lisp/leim/quail/georgian.el @@ -1,6 +1,6 @@ ;;; georgian.el --- Quail package for inputting Georgian characters -*- coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/leim/quail/greek.el b/lisp/leim/quail/greek.el index d1300326e7e..d5b08ff80d6 100644 --- a/lisp/leim/quail/greek.el +++ b/lisp/leim/quail/greek.el @@ -1,6 +1,6 @@ ;;; greek.el --- Quail package for inputting Greek -*- coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -1454,7 +1454,7 @@ Greek letters." ("=" ?=) ("[" ?\[) ("]" ?\]) - ;; Changed punction from greek.el + ;; Changed punctuation from greek.el ("`" ?·) ("~" ?:) ;; tonoi diff --git a/lisp/leim/quail/hangul.el b/lisp/leim/quail/hangul.el index f7f04931e89..629fec35255 100644 --- a/lisp/leim/quail/hangul.el +++ b/lisp/leim/quail/hangul.el @@ -1,6 +1,6 @@ ;;; hangul.el --- Korean Hangul input method -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Jihyun Cho ;; Keywords: multilingual, input method, Korean, Hangul diff --git a/lisp/leim/quail/hanja.el b/lisp/leim/quail/hanja.el index 81752f84798..473a51bc6ed 100644 --- a/lisp/leim/quail/hanja.el +++ b/lisp/leim/quail/hanja.el @@ -1,6 +1,6 @@ ;;; hanja.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/hanja3.el b/lisp/leim/quail/hanja3.el index b243c805406..b294c345e03 100644 --- a/lisp/leim/quail/hanja3.el +++ b/lisp/leim/quail/hanja3.el @@ -1,6 +1,6 @@ ;;; hanja3.el --- Quail-package for Korean Hanja (KSC5601) -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1997, 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Koaunghi Un ;; Keywords: mule, quail, multilingual, input method, Korean, Hanja diff --git a/lisp/leim/quail/indian.el b/lisp/leim/quail/indian.el index 82b87afae5e..fdd9f216bed 100644 --- a/lisp/leim/quail/indian.el +++ b/lisp/leim/quail/indian.el @@ -1,6 +1,6 @@ ;;; indian.el --- Quail packages for inputting Indian -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: KAWABATA, Taichi diff --git a/lisp/leim/quail/indonesian.el b/lisp/leim/quail/indonesian.el index 6533adb4daa..0bdb3801e29 100644 --- a/lisp/leim/quail/indonesian.el +++ b/lisp/leim/quail/indonesian.el @@ -1,6 +1,6 @@ ;;; indonesian.el --- Quail package for inputting Indonesian characters -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: समीर सिंह Sameer Singh ;; Keywords: multilingual, input method, i18n, Indonesia diff --git a/lisp/leim/quail/ipa-praat.el b/lisp/leim/quail/ipa-praat.el index 168797325bf..c8d52194ab6 100644 --- a/lisp/leim/quail/ipa-praat.el +++ b/lisp/leim/quail/ipa-praat.el @@ -1,6 +1,6 @@ ;;; ipa-praat.el --- Inputting IPA characters with the conventions of Praat -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Oliver Scholz ;; Keywords: multilingual, input method, IPA diff --git a/lisp/leim/quail/ipa.el b/lisp/leim/quail/ipa.el index 938641a2a02..2d6c6fe5a38 100644 --- a/lisp/leim/quail/ipa.el +++ b/lisp/leim/quail/ipa.el @@ -1,6 +1,6 @@ ;;; ipa.el --- Quail package for inputting IPA characters -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/iroquoian.el b/lisp/leim/quail/iroquoian.el index 6671a1d20f1..38b53f39483 100644 --- a/lisp/leim/quail/iroquoian.el +++ b/lisp/leim/quail/iroquoian.el @@ -1,6 +1,6 @@ ;;; iroquoian.el --- Quail packages for inputting Iroquoian languages -*- lexical-binding: t; coding: utf-8; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author: Kierin Bell ;; Keywords: i18n @@ -24,7 +24,7 @@ ;; This file implements input methods for Northern Iroquoian languages. -;; Input methods are implemented for all Five Nations Iroquois +;; Input methods are implemented for the following Northern Iroquoian ;; languages: ;; - Mohawk (Kanien’kéha / Kanyen’kéha / Onkwehonwehnéha) @@ -32,6 +32,7 @@ ;; - Onondaga (Onųdaʔgegáʔ) ;; - Cayuga (Gayogo̱ho:nǫhnéha:ˀ) ;; - Seneca (Onödowá’ga:’) +;; - Tuscarora (Skarù·ręʔ) ;; A composite input method for all of the languages above is also ;; defined: `haudenosaunee-postfix'. @@ -39,7 +40,6 @@ ;; Input methods are not yet implemented for the remaining Northern ;; Iroquoian languages, including: -;; - Tuscarora (Skarù:ręʔ) ;; - Wendat (Huron) / Wyandot ;;; Code: @@ -798,6 +798,159 @@ simultaneously using the input method `haudenosaunee-postfix'." iroquoian-seneca-vowel-alist)) (quail-defrule key trans)) + +;;; Tuscarora + +;; +;; The primary community orthography used for Tuscarora follows that +;; used in Blair Rudes's dictionary (see below). +;; +;; Reference work for Tuscarora orthography: +;; +;; Blair Rudes. 1999. Tuscarora-English/English-Tuscarora +;; dictionary. Toronto: University of Toronto Press. +;; + +(defconst iroquoian-tuscarora-modifier-alist + '(("::" ?\N{MIDDLE DOT})) + "Alist of rules for modifier letters in Tuscarora input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-tuscarora-vowel-alist + '(("a'" ?á) + ("a`" ?à) + ("A'" ?Á) + ("A`" ?À) + ("e'" ?é) + ("e`" ?è) + ("E'" ?É) + ("E`" ?È) + ("i'" ?í) + ("i`" ?ì) + ("I'" ?Í) + ("I`" ?Ì) + ("u'" ?ú) + ("u`" ?ù) + ("U'" ?Ú) + ("U`" ?Ù) + ("e," ?ę) + ("e,'" ["ę́"]) + ("e,`" ["ę̀"]) + ("E," ?Ę) + ("E,'" ["Ę́"]) + ("E,`" ["Ę̀"]) + + ("a''" ["a'"]) + ("a``" ["a`"]) + ("A''" ["A'"]) + ("A``" ["A`"]) + ("e''" ["e'"]) + ("e``" ["e`"]) + ("E''" ["E'"]) + ("E``" ["E`"]) + ("i''" ["i'"]) + ("i``" ["i`"]) + ("I''" ["I'"]) + ("I``" ["I`"]) + ("u''" ["u'"]) + ("u``" ["u`"]) + ("U''" ["U'"]) + ("U``" ["U`"]) + + ("e,," ["e,"]) + ("e,''" ["ę'"]) + ("e,``" ["ę`"]) + ("E,," ["E,"]) + ("E,''" ["Ę'"]) + ("E,``" ["Ę`"])) + "Alist of rules for vowel letters in Tuscarora input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-tuscarora-consonant-alist + '((";;" ?\N{LATIN LETTER GLOTTAL STOP}) + ("c/" ?č) + ("c//" ["c/"]) + ("C/" ?Č) + ("C//" ["C/"]) + ("t/" ?θ) + ("t//" ["t/"])) + "Alist of rules for consonant letters in Tuscarora input methods. +Entries are as with rules in `quail-define-rules'.") + +(defconst iroquoian-tuscarora-exception-alist + '(("_" ?\N{COMBINING LOW LINE}) + ("__" ?_)) + "Alist of rules for phonological exception marking in Tuscarora input methods. +Entries are as with rules in `quail-define-rules'.") + +(quail-define-package + "tuscarora-postfix" "Tuscarora" "TUS<" t + "Tuscarora (Skarù·ręʔ) input method with postfix modifiers + +Modifiers: + +| Key | Translation | Description | +|-----+-------------+--------------------------| +| :: | · | Vowel length | + +Stress diacritics: + +| Key | Description | Example | +|------+--------------+---------| +| \\=' | Acute accent | a' -> á | +| \\=` | Grave accent | a` -> à | + +Doubling the postfix separates the letter and the postfix. + +Vowels: + +| Key | Translation | Description | +|-----+-------------+---------------------------------| +| e, | ę | Mid front nasal vowel | +| E, | Ę | Mid front nasal vowel (capital) | + +a, e, i, and u are bound to a single key. + +Consonants: + +| Key | Translation | Description | +|-------+-------------+------------------------------------| +| ;; | ˀ | Glottal stop | +| c/ | č | Postalveolar affricate | +| C/ | Č | Postalveolar affricate (capital) | +| t/ | θ | Voiceless dental fricative | + +h, k, n, r, s, t, w, and y are bound to a single key. + +b, l, m, and p are used rarely in loanwords. They are also each bound +to a single key. + +Stress exception markers: + +| Key | Description | Example | +|-----+--------------------+----------| +| _ | Combining low line | a_ -> a̲ | + +Note: Not all fonts can properly display a combining low line on all +letters. + +Underlining has been used by some to indicate that vowels behave +exceptionally with regard to stress placement. Alternatively, markup or +other methods can be used to create an underlining effect. + +To enter a plain underscore, type the underscore twice. + +All Haudenosaunee languages, including Tuscarora can be input +simultaneously using the input method `haudenosaunee-postfix'." + nil t nil nil nil nil nil nil nil nil t) + +(pcase-dolist (`(,key ,trans) + (append iroquoian-tuscarora-modifier-alist + iroquoian-tuscarora-consonant-alist + iroquoian-tuscarora-vowel-alist + iroquoian-tuscarora-exception-alist)) + (quail-defrule key trans)) + ;;; Haudenosaunee (composite Northern Iroquoian) @@ -857,7 +1010,8 @@ simultaneously using the input method `haudenosaunee-postfix'." iroquoian-oneida-modifier-alist iroquoian-onondaga-modifier-alist iroquoian-cayuga-modifier-alist - iroquoian-seneca-modifier-alist)) + iroquoian-seneca-modifier-alist + iroquoian-tuscarora-modifier-alist)) "Alist of rules for modifier letters in Haudenosaunee input methods. Entries are as with rules in `quail-define-rules'.") @@ -866,7 +1020,8 @@ Entries are as with rules in `quail-define-rules'.") iroquoian-oneida-vowel-alist iroquoian-onondaga-vowel-alist iroquoian-cayuga-vowel-alist - iroquoian-seneca-vowel-alist)) + iroquoian-seneca-vowel-alist + iroquoian-tuscarora-vowel-alist)) "Alist of rules for vowel letters in Haudenosaunee input methods. Entries are as with rules in `quail-define-rules'.") @@ -879,16 +1034,17 @@ Entries are as with rules in `quail-define-rules'.") iroquoian-oneida-consonant-alist iroquoian-onondaga-consonant-alist iroquoian-cayuga-consonant-alist - iroquoian-seneca-consonant-alist) + iroquoian-seneca-consonant-alist + iroquoian-tuscarora-consonant-alist) (lambda (c1 c2) (equal (car c1) (car c2)))) "Alist of rules for consonant letters in Haudenosaunee input methods. Entries are as with rules in `quail-define-rules'.") -(defconst iroquoian-haudenosaunee-devoicing-alist +(defconst iroquoian-haudenosaunee-exception-alist '(("_" ?\N{COMBINING LOW LINE}) ("__" ?_)) - "Alist of rules for devoicing characters in Haudenosaunee input methods. + "Rules alist for phonological exception markers in Haudenosaunee input methods. Entries are as with rules in `quail-define-rules'.") (defconst iroquoian-haudenosaunee-nasal-alist iroquoian-onondaga-nasal-alist @@ -906,6 +1062,7 @@ This input method can be used to enter the following languages: - Cayuga (Gayogo̱ho:nǫhnéha:ˀ) - Onondaga (Onųdaʔgegáʔ) - Seneca (Onödowá’ga:’) +- Tuscarora (Skarù·ręʔ) Modifiers: @@ -989,6 +1146,12 @@ Vowels: | a\" | ä | Low front vowel | | A\" | Ä | Low front vowel (capital) | | Single-key vowels: a e i o u | +|----------------------------------------------------------------------| +| Tuscarora | +| -------------------------------------------------------------------- | +| e, | ę | Mid front nasal vowel | +| E, | Ę | Mid front nasal vowel (capital) | +| Single-key vowels: a e i u | Consonants: @@ -1023,8 +1186,16 @@ Consonants: | s/ | š | Voiceless postalveolar fricative | | S/ | Š | Voiceless postalveolar fricative (capital) | | Single-key consonants: d g h j k n s t w y z (b m p) | +|----------------------------------------------------------------------| +| Tuscarora | +| -------------------------------------------------------------------- | +| ;: | ʔ | Glottal stop (alternate) | +| c/ | č | Postalveolar affricate | +| C/ | Č | Postalveolar affricate (capital) | +| t/ | θ | Voiceless dental fricative | +| Single-key consonants: h k n r s t w y (b l m p) | -Devoicing: +Phonological exception markers: | Key | Description | Examples | |-----+------------------------+------------------------------| @@ -1035,8 +1206,10 @@ Note: Not all fonts can properly display a combining low line on all letters and a combining macron below on all vowels. Underlining is commonly used in Oneida to indicate devoiced syllables on -pre-pausal forms (also called utterance-final forms). Alternatively, -markup or other methods can be used to create an underlining effect. +pre-pausal forms (also called utterance-final forms), and it has been +used in some Tuscarora orthographies to indicate that vowels behave +exceptionally with regard to stress placement. Alternatively, markup or +other methods can be used to create an underlining effect. To enter a plain underscore, the underscore twice. @@ -1046,7 +1219,8 @@ To enter a plain hyphen after a vowel, simply type the hyphen twice. There are individual input methods for each of the languages that can be entered with this input method: `mohawk-postfix', `oneida-postfix', -`onondaga-postfix', `cayuga-postfix', `seneca-postfix'." +`onondaga-postfix', `cayuga-postfix', `seneca-postfix', +`tuscarora-postfix'.." nil t nil nil nil nil nil nil nil nil t) (pcase-dolist (`(,key ,trans) @@ -1054,7 +1228,7 @@ entered with this input method: `mohawk-postfix', `oneida-postfix', iroquoian-haudenosaunee-consonant-alist iroquoian-haudenosaunee-nasal-alist iroquoian-haudenosaunee-vowel-alist - iroquoian-haudenosaunee-devoicing-alist)) + iroquoian-haudenosaunee-exception-alist)) (quail-defrule key trans)) (provide 'iroquoian) diff --git a/lisp/leim/quail/japanese.el b/lisp/leim/quail/japanese.el index 30a63f62626..fdc5efb2df9 100644 --- a/lisp/leim/quail/japanese.el +++ b/lisp/leim/quail/japanese.el @@ -1,6 +1,6 @@ ;;; japanese.el --- Quail package for inputting Japanese -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/latin-alt.el b/lisp/leim/quail/latin-alt.el index 57d0e96bf2b..a490147799c 100644 --- a/lisp/leim/quail/latin-alt.el +++ b/lisp/leim/quail/latin-alt.el @@ -1,6 +1,6 @@ ;;; latin-alt.el --- Quail package for inputting various European characters -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, ;; 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/latin-ltx.el b/lisp/leim/quail/latin-ltx.el index 6067a271d8e..8b2e0999f77 100644 --- a/lisp/leim/quail/latin-ltx.el +++ b/lisp/leim/quail/latin-ltx.el @@ -1,6 +1,6 @@ ;;; latin-ltx.el --- Quail package for TeX-style input -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, ;; 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) @@ -66,6 +66,22 @@ system, including many technical ones. Examples: (defun latin-ltx--ascii-p (char) (and (characterp char) (< char 128))) + ;; For mathematical alphabets + (defconst latin-ltx--math-variant-prefix-map + '(("BOLD" . "bf") + ("ITALIC" . "it") + ("BOLD ITALIC" . "bfit") + ("DOUBLE-STRUCK" . "bb") + ("SCRIPT" . "scr") + ("BOLD SCRIPT" . "bfscr") + ("FRAKTUR" . "frak") + ("BOLD FRAKTUR" . "bffrak") + ("SANS-SERIF" . "sf") + ("SANS-SERIF BOLD" . "bfsf") + ("SANS-SERIF ITALIC" . "sfit") + ("SANS-SERIF BOLD ITALIC" . "bfsfit") + ("MONOSPACE" . "tt"))) + (defmacro latin-ltx--define-rules (&rest rules) (load "uni-name" nil t) (let ((newrules ())) @@ -281,6 +297,7 @@ system, including many technical ones. Examples: ("\\Vert" ?‖) ("\\Vvdash" ?⊪) ("\\above" ?┴) + ("\\acute" ?́) ;; synonymous with \'‌ ("\\aleph" ?ℵ) ("\\amalg" ?∐) ("\\angle" ?∠) @@ -297,6 +314,7 @@ system, including many technical ones. Examples: ("\\backsim" ?∽) ("\\backsimeq" ?⋍) ("\\backslash" ?\\) + ("\\bar" ?̄) ;; synonymous with \= ("\\barwedge" ?⊼) ("\\because" ?∵) ("\\begin" ?\〖) @@ -328,11 +346,14 @@ system, including many technical ones. Examples: ("\\boxplus" ?⊞) ("\\boxtimes" ?⊠) ("\\bra" ?\⟨) + ("\\breve" ?̆) ;; synonymous with \u ("\\bullet" ?•) ("\\bumpeq" ?≏) ("\\cap" ?∩) + ("\\cbrt" ?∛) ("\\cdots" ?⋯) ("\\centerdot" ?·) + ("\\check" ?̌) ;; synonymous with \v ("\\checkmark" ?✓) ("\\chi" ?χ) ("\\circ" ?∘) @@ -370,10 +391,14 @@ system, including many technical ones. Examples: ("\\ddagger" ?‡) ("\\ddddot" ?⃜) ("\\dddot" ?⃛) + ("\\ddot" ?̈) ;; synonymous with \" ("\\ddots" ?⋱) + ("\\diagdown" ?⟍) + ("\\diagup" ?⟋) ("\\diamond" ?⋄) ("\\diamondsuit" ?♢) ("\\divideontimes" ?⋇) + ("\\dot" ?̇) ("\\doteq" ?≐) ("\\doteqdot" ?≑) ("\\dotplus" ?∔) @@ -397,13 +422,17 @@ system, including many technical ones. Examples: ("\\fallingdotseq" ?≒) ("\\flat" ?♭) ("\\forall" ?∀) + ("\\frac03" ?↉) ("\\frac1" ?⅟) + ("\\frac110" ?⅒) ("\\frac12" ?½) ("\\frac13" ?⅓) ("\\frac14" ?¼) ("\\frac15" ?⅕) ("\\frac16" ?⅙) + ("\\frac17" ?⅐) ("\\frac18" ?⅛) + ("\\frac19" ?⅑) ("\\frac23" ?⅔) ("\\frac25" ?⅖) ("\\frac34" ?¾) @@ -426,6 +455,7 @@ system, including many technical ones. Examples: ("\\gneq" ?≩) ("\\gneqq" ?≩) ("\\gnsim" ?⋧) + ("\\grave" ?̀) ;; synonymous with \` ("\\gtrapprox" ?≳) ("\\gtrdot" ?⋗) ("\\gtreqless" ?⋛) @@ -433,6 +463,7 @@ system, including many technical ones. Examples: ("\\gtrless" ?≷) ("\\gtrsim" ?≳) ("\\gvertneqq" ?≩) + ("\\hat" ?̂) ;; synonymous with \^ ("\\hbar" ?ℏ) ("\\heartsuit" ?♥) ("\\hookleftarrow" ?↩) @@ -451,10 +482,17 @@ system, including many technical ones. Examples: ("\\intercal" ?⊺) ("\\jj" ?ⅉ) ("\\jmath" ?ȷ) - ("\\langle" ?⟨) ;; Was ?〈, see bug#12948. - ("\\lbrace" ?{) + ("\\ket" ?\⟩) + ("\\land" ?∧) ;; logical and, same symbol as \wedge + ("\\langle" ?\⟨) ;; Was ?〈, see bug#12948. + ("\\lAngle" ?\⟪) + ("\\lbrace" ?\{) ("\\lbrack" ?\[) - ("\\lceil" ?⌈) + ("\\lBrack" ?\⟦) + ("\\lblkbrbrak" ?\⦗) + ("\\lbrbrak" ?\❲) + ("\\Lbrbrak" ?\⟬) + ("\\lceil" ?\⌈) ("\\ldiv" ?∕) ("\\ldots" ?…) ("\\le" ?≤) @@ -479,12 +517,14 @@ system, including many technical ones. Examples: ("\\lesseqqgtr" ?⋚) ("\\lessgtr" ?≶) ("\\lesssim" ?≲) - ("\\lfloor" ?⌊) + ("\\lfloor" ?\⌊) + ("\\lgroup" ?\⟮) ("\\lhd" ?◁) ("\\rhd" ?▷) ("\\ll" ?≪) ("\\llcorner" ?⌞) ("\\lll" ?⋘) + ("\\lmoustache" ?⎰) ("\\lnapprox" ?⋦) ("\\lneq" ?≨) ("\\lneqq" ?≨) @@ -495,6 +535,7 @@ system, including many technical ones. Examples: ("\\longrightarrow" ?⟶) ("\\looparrowleft" ?↫) ("\\looparrowright" ?↬) + ("\\lor" ?∨) ;; logical or, same symbol as \vee ("\\lozenge" ?✧) ("\\lq" ?‘) ("\\lrcorner" ?⌟) @@ -502,6 +543,7 @@ system, including many technical ones. Examples: ("\\lvertneqq" ?≨) ("\\maltese" ?✠) ("\\mapsto" ?↦) + ("\\mathring" ?̊) ("\\measuredangle" ?∡) ("\\mho" ?℧) ("\\mid" ?∣) @@ -569,8 +611,12 @@ system, including many technical ones. Examples: ("\\oplus" ?⊕) ("\\oslash" ?⊘) ("\\otimes" ?⊗) + ("\\overbar" ?̅) ("\\overbrace" ?⏞) + ("\\overleftarrow" ?⃖) ("\\overparen" ?⏜) + ("\\overrightarrow" ?⃗) ;; synonymous with \vec + ("\\owns" ?∋) ;; synonymous with \ni ("\\par" ?
) ("\\parallel" ?∥) ("\\partial" ?∂) @@ -594,13 +640,18 @@ system, including many technical ones. Examples: ("\\qed" ?∎) ("\\quad" ? ) ("\\rangle" ?\⟩) ;; Was ?〉, see bug#12948. + ("\\rAngle" ?\⟫) ("\\ratio" ?∶) - ("\\rbrace" ?}) + ("\\rbrace" ?\}) ("\\rbrack" ?\]) - ("\\rceil" ?⌉) + ("\\rBrack" ?\⟧) + ("\\rblkbrbrak" ?\⦘) + ("\\rbrbrak" ?\❳) + ("\\Rbrbrak" ?\⟭) + ("\\rceil" ?\⌉) ("\\rddots" ?⋰) ("\\rect" ?▭) - ("\\rfloor" ?⌋) + ("\\rfloor" ?\⌋) ("\\rightarrow" ?→) ("\\rightarrowtail" ?↣) ("\\rightharpoondown" ?⇁) @@ -611,6 +662,8 @@ system, including many technical ones. Examples: ("\\rightrightarrows" ?⇉) ("\\rightthreetimes" ?⋌) ("\\risingdotseq" ?≓) + ("\\rgroup" ?\⟯) + ("\\rmoustache" ?⎱) ("\\rrect" ?▢) ("\\sdiv" ?⁄) ("\\rtimes" ?⋊) @@ -662,6 +715,7 @@ system, including many technical ones. Examples: ("\\therefore" ?∴) ("\\thickapprox" ?≈) ("\\thicksim" ?∼) + ("\\tilde" ?̃) ;; synonymous with \~ ("\\to" ?→) ("\\top" ?⊤) ("\\triangle" ?▵) @@ -678,6 +732,8 @@ system, including many technical ones. Examples: ("\\updownarrow" ?↕) ("\\underbar" ?▁) ("\\underbrace" ?⏟) + ("\\underleftarrow" ?⃮) + ("\\underrightarrow" ?⃯) ("\\underparen" ?⏝) ("\\upleftharpoon" ?↿) ("\\uplus" ?⊎) @@ -686,6 +742,7 @@ system, including many technical ones. Examples: ("\\urcorner" ?⌝) ("\\u{i}" ?ĭ) ("\\vbar" ?│) + ("\\vec" ?⃗) ("\\vDash" ?⊨) ((lambda (name char) @@ -713,6 +770,77 @@ system, including many technical ones. Examples: ("\\wp" ?℘) ("\\wr" ?≀) + ;;;; Mathematical alphabets + ;; Latin letters + ((lambda (name _char) + (let* ((variant (match-string 1 name)) + (prefix (cdr (assoc variant latin-ltx--math-variant-prefix-map))) + (basename (match-string 3 name)) + (name (if (match-end 2) (capitalize basename) (downcase basename)))) + (concat "\\" prefix name))) + "\\`MATHEMATICAL \\(.+\\) \\(?:SMALL\\|CAPITA\\(L\\)\\) \\([[:ascii:]]+\\)\\'") + + ;; Digits + ((lambda (name _char) + (let* ((variant (match-string 1 name)) + (prefix (cdr (assoc variant latin-ltx--math-variant-prefix-map))) + (basename (match-string 2 name))) + (concat "\\" prefix (char-to-string (char-from-name basename))))) + "\\`MATHEMATICAL \\(.+\\) \\(DIGIT [[:ascii:]]+\\)\\'") + + ;; Some Greek variants + ;; NOTE: Check if any of these are reversed from their counterparts, like + ;; the claim above of \phi and \varphi being swapped + ((lambda (name _char) + (let* ((variant (match-string 1 name)) + (prefix (cdr (assoc variant latin-ltx--math-variant-prefix-map))) + (basename (downcase (match-string 2 name)))) + (if prefix ;; This avoids e.g. MATHEMATICAL BOLD CAPITAL SYMBOL + (concat "\\" prefix "var" basename)))) + "\\`MATHEMATICAL \\(.+\\) \\([A-Z]+\\) SYMBOL\\'") + + ((lambda (name _char) + (let* ((variant (match-string 1 name)) + (prefix (cdr (assoc variant latin-ltx--math-variant-prefix-map))) + (basename (if (match-end 2) "partial" "nabla"))) + (concat "\\" prefix basename))) + "\\`MATHEMATICAL \\(.*\\) \\(?:NABLA\\|PARTIAL DIFFERENTIA\\(L\\)\\)\\'") + + ;; Some of the math alphabet characters have other canonical names and must be + ;; added manually + ("\\scrB" ?ℬ) + ("\\scrE" ?ℰ) + ("\\scrF" ?ℱ) + ("\\scrH" ?ℋ) + ("\\scrI" ?ℐ) + ("\\scrL" ?ℒ) + ("\\scrM" ?ℳ) + ("\\scrR" ?ℛ) + ("\\frakC" ?ℭ) + ("\\frakH" ?ℌ) + ("\\frakI" ?ℑ) + ("\\frakR" ?ℜ) + ("\\frakZ" ?ℨ) + ("\\bbC" ?ℂ) + ("\\bbH" ?ℍ) + ("\\bbN" ?ℕ) + ("\\bbP" ?ℙ) + ("\\bbQ" ?ℚ) + ("\\bbR" ?ℝ) + ("\\bbZ" ?ℤ) + ("\\ith" ?ℎ) + ("\\scre" ?ℯ) + ("\\scrg" ?ℊ) + ("\\scro" ?ℴ) + + ("\\bbsum" ?⅀) + ("\\bbSigma" ?⅀) + ("\\bbgamma" ?ℽ) + ("\\bbGamma" ?ℾ) + ("\\bbprod" ?ℿ) + ("\\bbPi" ?ℿ) + ("\\bbpi" ?ℼ) + ("\\Bbb{A}" ?𝔸) ; AMS commands for blackboard bold ("\\Bbb{B}" ?𝔹) ; Also sometimes \mathbb. ("\\Bbb{C}" ?ℂ) @@ -772,6 +900,7 @@ system, including many technical ones. Examples: ;; ("\\Yinyang" ?☯) ;; ("\\Heart" ?♡) ("\\dh" ?ð) + ("\\eth" ?ð) ("\\DH" ?Ð) ("\\th" ?þ) ("\\TH" ?Þ) @@ -787,16 +916,16 @@ system, including many technical ones. Examples: ("\\sqrt" ?√) ("\\sqrt[3]" ?∛) ("\\sqrt[4]" ?∜) - ("\\llbracket" ?\〚) ; stmaryrd - ("\\rrbracket" ?\〛) + ("\\llbracket" ?\⟦) ; stmaryrd + ("\\rrbracket" ?\⟧) ;; ("\\lbag" ?\〚) ; fuzz ;; ("\\rbag" ?\〛) - ("\\ldata" ?\《) ; fuzz/zed - ("\\rdata" ?\》) + ("\\ldata" ?\⟪) ; fuzz/zed + ("\\rdata" ?\⟫) ;; From Karl Eichwalder. - ("\\glq" ?‚) + ("\\glq" ?\‚) ("\\grq" ?‘) - ("\\glqq" ?„) ("\\\"`" ?„) + ("\\glqq" ?\„) ("\\\"`" ?\„) ("\\grqq" ?“) ("\\\"'" ?“) ("\\flq" ?‹) ("\\frq" ?›) diff --git a/lisp/leim/quail/latin-post.el b/lisp/leim/quail/latin-post.el index 798df88b4aa..1d13653220c 100644 --- a/lisp/leim/quail/latin-post.el +++ b/lisp/leim/quail/latin-post.el @@ -1,6 +1,6 @@ ;;; latin-post.el --- Quail packages for inputting various European characters -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/latin-pre.el b/lisp/leim/quail/latin-pre.el index 3893c53d74e..e1c6b4fa7f7 100644 --- a/lisp/leim/quail/latin-pre.el +++ b/lisp/leim/quail/latin-pre.el @@ -1,6 +1,6 @@ ;;; latin-pre.el --- Quail packages for inputting various European characters -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/lrt.el b/lisp/leim/quail/lrt.el index 301d9fb223f..110e47510de 100644 --- a/lisp/leim/quail/lrt.el +++ b/lisp/leim/quail/lrt.el @@ -1,6 +1,6 @@ ;;; lrt.el --- Quail package for inputting Lao characters by LRT method -*- lexical-binding: t; -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/misc-lang.el b/lisp/leim/quail/misc-lang.el index d556343fe75..a5fdc1298c0 100644 --- a/lisp/leim/quail/misc-lang.el +++ b/lisp/leim/quail/misc-lang.el @@ -1,6 +1,6 @@ ;;; misc-lang.el --- Quail package for inputting Miscellaneous characters -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: समीर सिंह Sameer Singh ;; Keywords: multilingual, input method, i18n, Miscellaneous diff --git a/lisp/leim/quail/pakistan.el b/lisp/leim/quail/pakistan.el index 63a07ab3872..4dda14f3fee 100644 --- a/lisp/leim/quail/pakistan.el +++ b/lisp/leim/quail/pakistan.el @@ -1,6 +1,6 @@ ;;; pakistan.el --- Input methods for some languages from Pakistan -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Rahguzar ;; Keywords: convenience, multilingual, input method, Urdu, Balochi, Pashto, Sindhi, Hindko, Brahui diff --git a/lisp/leim/quail/persian.el b/lisp/leim/quail/persian.el index ddec7c891fb..91c3f1381b4 100644 --- a/lisp/leim/quail/persian.el +++ b/lisp/leim/quail/persian.el @@ -1,6 +1,6 @@ ;;; persian.el --- Quail package for inputting Persian/Farsi keyboard -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Mohsen BANAN ;; URL: http://mohsen.1.banan.byname.net/contact diff --git a/lisp/leim/quail/philippine.el b/lisp/leim/quail/philippine.el index 0d151d5bfae..23c39d82822 100644 --- a/lisp/leim/quail/philippine.el +++ b/lisp/leim/quail/philippine.el @@ -1,6 +1,6 @@ ;;; philippine.el --- Quail package for inputting Philippine characters -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: समीर सिंह Sameer Singh ;; Keywords: multilingual, input method, i18n, Philippines diff --git a/lisp/leim/quail/programmer-dvorak.el b/lisp/leim/quail/programmer-dvorak.el index 0be70a49b9d..601a30bd786 100644 --- a/lisp/leim/quail/programmer-dvorak.el +++ b/lisp/leim/quail/programmer-dvorak.el @@ -1,6 +1,6 @@ ;;; programmer-dvorak.el --- Quail package for the programmer Dvorak layout -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Joakim Jalap diff --git a/lisp/leim/quail/py-punct.el b/lisp/leim/quail/py-punct.el index ff7cfd09209..9209838fd4c 100644 --- a/lisp/leim/quail/py-punct.el +++ b/lisp/leim/quail/py-punct.el @@ -1,6 +1,6 @@ ;;; py-punct.el --- Quail packages for Chinese (pinyin + extra symbols) -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/rfc1345.el b/lisp/leim/quail/rfc1345.el index d022351df5d..64a14343ca9 100644 --- a/lisp/leim/quail/rfc1345.el +++ b/lisp/leim/quail/rfc1345.el @@ -1,6 +1,6 @@ ;;; rfc1345.el --- Quail method for RFC 1345 mnemonics -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/leim/quail/sami.el b/lisp/leim/quail/sami.el index 315e219b306..08250234d82 100644 --- a/lisp/leim/quail/sami.el +++ b/lisp/leim/quail/sami.el @@ -1,6 +1,6 @@ ;;; sami.el --- Quail package for inputting Sámi -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Wojciech S. Gac ;; Keywords: i18n, multilingual, input method, Sámi diff --git a/lisp/leim/quail/sgml-input.el b/lisp/leim/quail/sgml-input.el index 601a4de6892..f37481bbb15 100644 --- a/lisp/leim/quail/sgml-input.el +++ b/lisp/leim/quail/sgml-input.el @@ -1,6 +1,6 @@ ;;; sgml-input.el --- Quail method for Unicode entered as SGML entities -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/leim/quail/sisheng.el b/lisp/leim/quail/sisheng.el index b36218e0d49..e2ef0ece57e 100644 --- a/lisp/leim/quail/sisheng.el +++ b/lisp/leim/quail/sisheng.el @@ -1,6 +1,6 @@ ;;; sisheng.el --- sisheng input method for Chinese pinyin transliteration -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Werner LEMBERG diff --git a/lisp/leim/quail/slovak.el b/lisp/leim/quail/slovak.el index f9eb4005b29..2d2fed4ce56 100644 --- a/lisp/leim/quail/slovak.el +++ b/lisp/leim/quail/slovak.el @@ -1,6 +1,6 @@ ;;; slovak.el --- Quail package for inputting Slovak -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Authors: Tibor Šimko ;; Milan Zamazal diff --git a/lisp/leim/quail/symbol-ksc.el b/lisp/leim/quail/symbol-ksc.el index 83311d7f8ad..659c88edf30 100644 --- a/lisp/leim/quail/symbol-ksc.el +++ b/lisp/leim/quail/symbol-ksc.el @@ -1,6 +1,6 @@ ;;; symbol-ksc.el --- Quail-package for Korean Symbol (KSC5601) -*-coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/tamil-dvorak.el b/lisp/leim/quail/tamil-dvorak.el index 34d86da6dd4..c827423edba 100644 --- a/lisp/leim/quail/tamil-dvorak.el +++ b/lisp/leim/quail/tamil-dvorak.el @@ -1,6 +1,6 @@ ;;; tamil-dvorak.el --- Quail package for Tamil input with Dvorak keyboard -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Shakthi Kannan diff --git a/lisp/leim/quail/tibetan.el b/lisp/leim/quail/tibetan.el index 36354cfeeaa..e6ceacd5354 100644 --- a/lisp/leim/quail/tibetan.el +++ b/lisp/leim/quail/tibetan.el @@ -1,6 +1,6 @@ ;;; tibetan.el --- Quail package for inputting Tibetan characters -*-coding: utf-8-emacs; lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, ;; 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/leim/quail/tifinagh.el b/lisp/leim/quail/tifinagh.el index 1b8e88d6d5d..f529d33e3ec 100644 --- a/lisp/leim/quail/tifinagh.el +++ b/lisp/leim/quail/tifinagh.el @@ -1,6 +1,6 @@ ;;; tifinagh.el --- Quail package for inputting Tifinagh -*- coding: utf-8; lexical-binding:t -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author: Adam Oudad ;; Keywords: mule, input method, Tifinagh diff --git a/lisp/leim/quail/uni-input.el b/lisp/leim/quail/uni-input.el index 62f423289ed..535a1ef8a9a 100644 --- a/lisp/leim/quail/uni-input.el +++ b/lisp/leim/quail/uni-input.el @@ -1,6 +1,6 @@ ;;; uni-input.el --- Hex Unicode input method -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) ;; Registration Number H14PRO021 diff --git a/lisp/leim/quail/vntelex.el b/lisp/leim/quail/vntelex.el index a14b8a978dd..a460b644fb7 100644 --- a/lisp/leim/quail/vntelex.el +++ b/lisp/leim/quail/vntelex.el @@ -1,6 +1,6 @@ ;;; vntelex.el --- Quail package for Vietnamese by Telex method -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Werner Lemberg ;; Keywords: multilingual, input method, Vietnamese diff --git a/lisp/leim/quail/vnvni.el b/lisp/leim/quail/vnvni.el index 9bb99897f14..e22c98bfb55 100644 --- a/lisp/leim/quail/vnvni.el +++ b/lisp/leim/quail/vnvni.el @@ -1,6 +1,6 @@ ;;; vnvni.el --- Quail package for Vietnamese by VNI method -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Werner Lemberg ;; Nguyen Thai Ngoc Duy diff --git a/lisp/leim/quail/welsh.el b/lisp/leim/quail/welsh.el index ba3836b18ba..11fddfaed7f 100644 --- a/lisp/leim/quail/welsh.el +++ b/lisp/leim/quail/welsh.el @@ -1,6 +1,6 @@ ;;; welsh.el --- Quail package for inputting Welsh characters -*- coding: utf-8; lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: i18n diff --git a/lisp/loadhist.el b/lisp/loadhist.el index 10b61f184d6..375c64812ec 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el @@ -1,6 +1,6 @@ ;;; loadhist.el --- lisp functions for working with feature groups -*- lexical-binding: t -*- -;; Copyright (C) 1995, 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/loadup.el b/lisp/loadup.el index 7178639fb1e..665aeb4a595 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -1,6 +1,6 @@ ;;; loadup.el --- load up always-loaded Lisp files for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1986, 1992, 1994, 2001-2025 Free Software +;; Copyright (C) 1985-1986, 1992, 1994, 2001-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/locate.el b/lisp/locate.el index d6d86ded1b1..fc0d0157fdb 100644 --- a/lisp/locate.el +++ b/lisp/locate.el @@ -1,6 +1,6 @@ ;;; locate.el --- interface to the locate command -*- lexical-binding:t -*- -;; Copyright (C) 1996, 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Peter Breton ;; Keywords: unix files diff --git a/lisp/lpr.el b/lisp/lpr.el index 6c80fa9c20a..2101cf80d3c 100644 --- a/lisp/lpr.el +++ b/lisp/lpr.el @@ -1,6 +1,6 @@ ;;; lpr.el --- print Emacs buffer on line printer -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1988, 1992, 1994, 2001-2025 Free Software +;; Copyright (C) 1985, 1988, 1992, 1994, 2001-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/ls-lisp.el b/lisp/ls-lisp.el index 3a1385dffa8..99cfbf140c3 100644 --- a/lisp/ls-lisp.el +++ b/lisp/ls-lisp.el @@ -1,6 +1,6 @@ ;;; ls-lisp.el --- emulate insert-directory completely in Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1992, 1994, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1994, 2000-2026 Free Software Foundation, Inc. ;; Author: Sebastian Kremer ;; Modified by: Francis J. Wright diff --git a/lisp/macros.el b/lisp/macros.el index 59554773629..f51426abf8c 100644 --- a/lisp/macros.el +++ b/lisp/macros.el @@ -1,6 +1,6 @@ ;;; macros.el --- non-primitive commands for keyboard macros -*- lexical-binding:t -*- -;; Copyright (C) 1985-1987, 1992, 1994-1995, 2001-2025 Free Software +;; Copyright (C) 1985-1987, 1992, 1994-1995, 2001-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/binhex.el b/lisp/mail/binhex.el index 39494e9cd04..a0a5f3011a6 100644 --- a/lisp/mail/binhex.el +++ b/lisp/mail/binhex.el @@ -1,6 +1,6 @@ ;;; binhex.el --- decode BinHex-encoded text -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: binhex news diff --git a/lisp/mail/blessmail.el b/lisp/mail/blessmail.el index 777f13fcdd4..b778aad5b3c 100644 --- a/lisp/mail/blessmail.el +++ b/lisp/mail/blessmail.el @@ -1,6 +1,6 @@ ;;; blessmail.el --- decide whether movemail needs special privileges -*- no-byte-compile: t; lexical-binding: t; -*- -;; Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index 4872f721aa5..f4a032c647d 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -1,6 +1,6 @@ ;;; emacsbug.el --- command to report Emacs bugs to appropriate mailing list -*- lexical-binding: t; -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: K. Shane Hartman ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/flow-fill.el b/lisp/mail/flow-fill.el index 683aa981864..b7933b14ac2 100644 --- a/lisp/mail/flow-fill.el +++ b/lisp/mail/flow-fill.el @@ -1,6 +1,6 @@ ;;; flow-fill.el --- interpret RFC2646 "flowed" text -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail diff --git a/lisp/mail/footnote.el b/lisp/mail/footnote.el index 8ce78505d20..73f382b02f3 100644 --- a/lisp/mail/footnote.el +++ b/lisp/mail/footnote.el @@ -1,6 +1,6 @@ ;;; footnote.el --- footnote support for message mode -*- lexical-binding:t -*- -;; Copyright (C) 1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2000-2026 Free Software Foundation, Inc. ;; Author: Steven L Baur (1997-2011) ;; Boruch Baum (2017-) diff --git a/lisp/mail/ietf-drums-date.el b/lisp/mail/ietf-drums-date.el index bbb27bd1f37..2a1d0443767 100644 --- a/lisp/mail/ietf-drums-date.el +++ b/lisp/mail/ietf-drums-date.el @@ -1,6 +1,6 @@ ;;; ietf-drums-date.el --- parse time/date for ietf-drums.el -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Bob Rogers ;; Package: ietf-drums diff --git a/lisp/mail/ietf-drums.el b/lisp/mail/ietf-drums.el index 15638b24b35..5ee822e2dec 100644 --- a/lisp/mail/ietf-drums.el +++ b/lisp/mail/ietf-drums.el @@ -1,6 +1,6 @@ ;;; ietf-drums.el --- Functions for parsing RFC 2822 headers -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. @@ -27,8 +27,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (defvar ietf-drums-no-ws-ctl-token "\001-\010\013\014\016-\037\177" "US-ASCII control characters excluding CR, LF and white space.") (defvar ietf-drums-text-token "\001-\011\013\014\016-\177" diff --git a/lisp/mail/mail-extr.el b/lisp/mail/mail-extr.el index 6ab12cd5962..ae3b37ea41c 100644 --- a/lisp/mail/mail-extr.el +++ b/lisp/mail/mail-extr.el @@ -1,6 +1,6 @@ ;;; mail-extr.el --- extract full name and address from email header -*- lexical-binding: t; -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Joe Wells ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/mail-hist.el b/lisp/mail/mail-hist.el index cb69b5fed18..c5faaa71dfa 100644 --- a/lisp/mail/mail-hist.el +++ b/lisp/mail/mail-hist.el @@ -1,6 +1,6 @@ ;;; mail-hist.el --- headers and message body history for outgoing mail -*- lexical-binding: t; -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Karl Fogel ;; Created: March, 1994 diff --git a/lisp/mail/mail-parse.el b/lisp/mail/mail-parse.el index a324767585f..d87e9b89ff4 100644 --- a/lisp/mail/mail-parse.el +++ b/lisp/mail/mail-parse.el @@ -1,6 +1,6 @@ ;;; mail-parse.el --- Interface functions for parsing mail -*- lexical-binding: t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/mail/mail-prsvr.el b/lisp/mail/mail-prsvr.el index f1fae3aff4b..1145bb70196 100644 --- a/lisp/mail/mail-prsvr.el +++ b/lisp/mail/mail-prsvr.el @@ -1,6 +1,6 @@ ;;; mail-prsvr.el --- Interface variables for parsing mail -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/mail/mail-utils.el b/lisp/mail/mail-utils.el index 28cc250f6cb..f957464932a 100644 --- a/lisp/mail/mail-utils.el +++ b/lisp/mail/mail-utils.el @@ -1,6 +1,6 @@ ;;; mail-utils.el --- utility functions used both by rmail and rnews -*- lexical-binding: t -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: mail, news diff --git a/lisp/mail/mailabbrev.el b/lisp/mail/mailabbrev.el index 534f277ac57..755660d697d 100644 --- a/lisp/mail/mailabbrev.el +++ b/lisp/mail/mailabbrev.el @@ -1,6 +1,6 @@ ;;; mailabbrev.el --- abbrev-expansion of mail aliases -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1987, 1992-1993, 1996-1997, 2000-2025 Free +;; Copyright (C) 1985-1987, 1992-1993, 1996-1997, 2000-2026 Free ;; Software Foundation, Inc. ;; Author: Jamie Zawinski diff --git a/lisp/mail/mailalias.el b/lisp/mail/mailalias.el index 251080a4784..844a95ac45a 100644 --- a/lisp/mail/mailalias.el +++ b/lisp/mail/mailalias.el @@ -1,6 +1,6 @@ ;;; mailalias.el --- expand and complete mailing address aliases -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1995-1997, 2001-2025 Free Software +;; Copyright (C) 1985, 1987, 1995-1997, 2001-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/mailclient.el b/lisp/mail/mailclient.el index 42ac57d4872..c5765415053 100644 --- a/lisp/mail/mailclient.el +++ b/lisp/mail/mailclient.el @@ -1,6 +1,6 @@ ;;; mailclient.el --- mail sending via system's mail client. -*- lexical-binding: t; -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: David Reitter ;; Keywords: mail diff --git a/lisp/mail/mailheader.el b/lisp/mail/mailheader.el index d19a31cfde2..9d66be9fc33 100644 --- a/lisp/mail/mailheader.el +++ b/lisp/mail/mailheader.el @@ -1,6 +1,6 @@ ;;; mailheader.el --- mail header parsing, merging, formatting -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Erik Naggum ;; Keywords: tools, mail, news diff --git a/lisp/mail/mspools.el b/lisp/mail/mspools.el index d9f54642029..60f602275fd 100644 --- a/lisp/mail/mspools.el +++ b/lisp/mail/mspools.el @@ -1,6 +1,6 @@ ;;; mspools.el --- show mail spools waiting to be read -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Stephen Eglen ;; Created: 22 Jan 1997 diff --git a/lisp/mail/qp.el b/lisp/mail/qp.el index b34e22c44ff..66f15c50876 100644 --- a/lisp/mail/qp.el +++ b/lisp/mail/qp.el @@ -1,6 +1,6 @@ ;;; qp.el --- Quoted-Printable functions -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, extensions diff --git a/lisp/mail/reporter.el b/lisp/mail/reporter.el index 8b22eacc0e4..dc0b67ffbb4 100644 --- a/lisp/mail/reporter.el +++ b/lisp/mail/reporter.el @@ -1,6 +1,6 @@ ;;; reporter.el --- customizable bug reporting of lisp programs -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1998, 2001-2026 Free Software Foundation, Inc. ;; Author: 1993-1998 Barry A. Warsaw ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/rfc2045.el b/lisp/mail/rfc2045.el index e77131e0c9a..1ca12895479 100644 --- a/lisp/mail/rfc2045.el +++ b/lisp/mail/rfc2045.el @@ -1,6 +1,6 @@ ;;; rfc2045.el --- Functions for decoding rfc2045 headers -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/mail/rfc2047.el b/lisp/mail/rfc2047.el index db6c0423a54..a48b876443b 100644 --- a/lisp/mail/rfc2047.el +++ b/lisp/mail/rfc2047.el @@ -1,6 +1,6 @@ ;;; rfc2047.el --- functions for encoding and decoding rfc2047 messages -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -26,7 +26,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) (defvar message-posting-charset) (require 'mm-util) diff --git a/lisp/mail/rfc2231.el b/lisp/mail/rfc2231.el index 3426c909696..d096176a9b1 100644 --- a/lisp/mail/rfc2231.el +++ b/lisp/mail/rfc2231.el @@ -1,6 +1,6 @@ ;;; rfc2231.el --- Functions for decoding rfc2231 headers -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. diff --git a/lisp/mail/rfc6068.el b/lisp/mail/rfc6068.el index cfa51196000..00e05954a3f 100644 --- a/lisp/mail/rfc6068.el +++ b/lisp/mail/rfc6068.el @@ -1,6 +1,6 @@ ;;; rfc6068.el --- support for rfc6068 -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Keywords: mail diff --git a/lisp/mail/rfc822.el b/lisp/mail/rfc822.el index 655769dc922..8b619e03f87 100644 --- a/lisp/mail/rfc822.el +++ b/lisp/mail/rfc822.el @@ -1,6 +1,6 @@ ;;; rfc822.el --- hairy RFC 822 (or later) parser for mail, news, etc. -*- lexical-binding: t; -*- -;; Copyright (C) 1986-1987, 1990, 2001-2025 Free Software Foundation, +;; Copyright (C) 1986-1987, 1990, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Richard Mlynarik diff --git a/lisp/mail/rmail-spam-filter.el b/lisp/mail/rmail-spam-filter.el index b865fb96bbd..c2fa410a630 100644 --- a/lisp/mail/rmail-spam-filter.el +++ b/lisp/mail/rmail-spam-filter.el @@ -1,6 +1,6 @@ ;;; rmail-spam-filter.el --- spam filter for Rmail, the Emacs mail reader -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Keywords: email, spam, filter, rmail ;; Author: Eli Tziperman ;; Package: rmail diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index c298496d641..5f1cabaccdc 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -1,6 +1,6 @@ ;;; rmail.el --- main code of "RMAIL" mail reader for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-1988, 1993-1998, 2000-2025 Free Software +;; Copyright (C) 1985-1988, 1993-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/rmailedit.el b/lisp/mail/rmailedit.el index 60916818caf..4f979d09a2b 100644 --- a/lisp/mail/rmailedit.el +++ b/lisp/mail/rmailedit.el @@ -1,6 +1,6 @@ ;;; rmailedit.el --- "RMAIL edit mode" Edit the current message -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1994, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: mail diff --git a/lisp/mail/rmailkwd.el b/lisp/mail/rmailkwd.el index 7c4de1d6ad4..0db81ad94c6 100644 --- a/lisp/mail/rmailkwd.el +++ b/lisp/mail/rmailkwd.el @@ -1,6 +1,6 @@ ;;; rmailkwd.el --- part of the "RMAIL" mail reader for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 1988, 1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985, 1988, 1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el index a1fb715ab5e..9226976c114 100644 --- a/lisp/mail/rmailmm.el +++ b/lisp/mail/rmailmm.el @@ -1,6 +1,6 @@ ;;; rmailmm.el --- MIME decoding and display stuff for RMAIL -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Alexander Pohoyda ;; Alex Schroeder diff --git a/lisp/mail/rmailmsc.el b/lisp/mail/rmailmsc.el index 881eb98e828..210128c242a 100644 --- a/lisp/mail/rmailmsc.el +++ b/lisp/mail/rmailmsc.el @@ -1,6 +1,6 @@ ;;; rmailmsc.el --- miscellaneous support functions for the RMAIL mail reader -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: mail diff --git a/lisp/mail/rmailout.el b/lisp/mail/rmailout.el index e24949baf58..52d85d28204 100644 --- a/lisp/mail/rmailout.el +++ b/lisp/mail/rmailout.el @@ -1,6 +1,6 @@ ;;; rmailout.el --- "RMAIL" mail reader for Emacs: output message to a file -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 1987, 1993-1994, 2001-2025 Free Software +;; Copyright (C) 1985, 1987, 1993-1994, 2001-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/rmailsort.el b/lisp/mail/rmailsort.el index b0943c23a08..a540699cd96 100644 --- a/lisp/mail/rmailsort.el +++ b/lisp/mail/rmailsort.el @@ -1,6 +1,6 @@ ;;; rmailsort.el --- Rmail: sort messages -*- lexical-binding: t; -*- -;; Copyright (C) 1990, 1993-1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1990, 1993-1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Masanobu UMEDA diff --git a/lisp/mail/rmailsum.el b/lisp/mail/rmailsum.el index b27b8bada8a..79c2d04ac4f 100644 --- a/lisp/mail/rmailsum.el +++ b/lisp/mail/rmailsum.el @@ -1,6 +1,6 @@ ;;; rmailsum.el --- make summary buffers for the mail reader -*- lexical-binding:t -*- -;; Copyright (C) 1985, 1993-1996, 2000-2025 Free Software Foundation, +;; Copyright (C) 1985, 1993-1996, 2000-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org @@ -1201,6 +1201,7 @@ a negative argument means to delete and move forward." (or (eobp) (not (overlay-get rmail-summary-overlay 'face)) (let ((buffer-read-only nil)) + (beginning-of-line) (skip-chars-forward " ") (skip-chars-forward "0-9") (if undel diff --git a/lisp/mail/sendmail.el b/lisp/mail/sendmail.el index d14210a1ab8..51690013de1 100644 --- a/lisp/mail/sendmail.el +++ b/lisp/mail/sendmail.el @@ -1,6 +1,6 @@ ;;; sendmail.el --- mail sending commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1992-1996, 1998, 2000-2025 Free Software +;; Copyright (C) 1985-1986, 1992-1996, 1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/smtpmail.el b/lisp/mail/smtpmail.el index 2acb48438ec..f60eadc288d 100644 --- a/lisp/mail/smtpmail.el +++ b/lisp/mail/smtpmail.el @@ -1,6 +1,6 @@ ;;; smtpmail.el --- simple SMTP protocol (RFC 821) for sending mail -*- lexical-binding:t -*- -;; Copyright (C) 1995-1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Tomoji Kagatani ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index 1637f40b70c..1e5d2159f3a 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el @@ -1,6 +1,6 @@ ;;; supercite.el --- minor mode for citing mail and news replies -*- lexical-binding: t; -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: 1993 Barry A. Warsaw ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/undigest.el b/lisp/mail/undigest.el index 85b91ad9dba..5432a9ba3f1 100644 --- a/lisp/mail/undigest.el +++ b/lisp/mail/undigest.el @@ -1,6 +1,6 @@ ;;; undigest.el --- digest-cracking support for the RMAIL mail reader -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1994, 1996, 2001-2025 Free Software +;; Copyright (C) 1985-1986, 1994, 1996, 2001-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mail/unrmail.el b/lisp/mail/unrmail.el index d01f3d5f78c..e231849a6d9 100644 --- a/lisp/mail/unrmail.el +++ b/lisp/mail/unrmail.el @@ -1,6 +1,6 @@ ;;; unrmail.el --- convert Rmail Babyl files to mbox files -*- lexical-binding: t; -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: mail diff --git a/lisp/mail/uudecode.el b/lisp/mail/uudecode.el index 60c6625584c..35371214e81 100644 --- a/lisp/mail/uudecode.el +++ b/lisp/mail/uudecode.el @@ -1,6 +1,6 @@ ;;; uudecode.el --- elisp native uudecode -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Shenghuo Zhu ;; Keywords: uudecode news diff --git a/lisp/mail/yenc.el b/lisp/mail/yenc.el index ed7fb0fc6b2..88e56c7dc67 100644 --- a/lisp/mail/yenc.el +++ b/lisp/mail/yenc.el @@ -1,6 +1,6 @@ ;;; yenc.el --- elisp native yenc decoder -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Jesper Harder ;; Keywords: yenc news @@ -32,8 +32,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (defconst yenc-begin-line "^=ybegin.*$") diff --git a/lisp/man.el b/lisp/man.el index 49873c5a87b..3b59efa0a44 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -1,6 +1,6 @@ ;;; man.el --- browse UNIX manual pages -*- lexical-binding: t -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: Barry A. Warsaw ;; Maintainer: emacs-devel@gnu.org @@ -559,9 +559,12 @@ Otherwise, the value is whatever the function (defun Man-shell-file-name () "Return a proper shell file name, respecting remote directories." + ;; It must be a Bourne-shell. (Bug#75308, Bug#80212) (if (connection-local-p shell-file-name) (connection-local-value shell-file-name) - "/bin/sh")) + (if (memq system-type '(windows-nt ms-dos)) + shell-file-name + "/bin/sh"))) (defun Man-header-file-path () "Return the C header file search path that Man should use. @@ -1221,7 +1224,11 @@ Return the buffer in which the manpage will appear." (buffer (get-buffer bufname))) (if buffer (Man-notify-when-ready buffer) - (message "Invoking %s %s in the background" manual-program man-args) + (message "Invoking %s %s %s" + manual-program man-args + (if Man-prefer-synchronous-call + "and formatting..." + "in the background")) (setq buffer (generate-new-buffer bufname)) (Man-notify-when-ready buffer) (with-current-buffer buffer diff --git a/lisp/master.el b/lisp/master.el index e3a72e13d8b..b7e27cd8707 100644 --- a/lisp/master.el +++ b/lisp/master.el @@ -1,6 +1,6 @@ ;;; master.el --- make a buffer the master over another buffer -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Old-Version: 1.0.2 diff --git a/lisp/mb-depth.el b/lisp/mb-depth.el index 5fc66a8c8db..516eb90f8a4 100644 --- a/lisp/mb-depth.el +++ b/lisp/mb-depth.el @@ -1,6 +1,6 @@ ;;; mb-depth.el --- Indicate minibuffer-depth in prompt -*- lexical-binding: t -*- ;; -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: convenience diff --git a/lisp/md4.el b/lisp/md4.el index 5176fc2148f..549af4cc784 100644 --- a/lisp/md4.el +++ b/lisp/md4.el @@ -1,6 +1,6 @@ ;;; md4.el --- MD4 Message Digest Algorithm. -*- lexical-binding: t -*- -;; Copyright (C) 2001, 2004, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2004, 2007-2026 Free Software Foundation, Inc. ;; Author: Taro Kawagishi ;; Keywords: MD4 diff --git a/lisp/menu-bar.el b/lisp/menu-bar.el index 508046a163b..44e8665eebd 100644 --- a/lisp/menu-bar.el +++ b/lisp/menu-bar.el @@ -1,6 +1,6 @@ ;;; menu-bar.el --- define a default menu bar -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 2000-2026 Free Software Foundation, Inc. ;; Author: Richard M. Stallman ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1 index b62de6e4134..9d24456f2a0 100644 --- a/lisp/mh-e/ChangeLog.1 +++ b/lisp/mh-e/ChangeLog.1 @@ -11419,7 +11419,7 @@ (dist): Leave release in current directory. - Copyright (C) 2003-2025 Free Software Foundation, Inc. + Copyright (C) 2003-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/mh-e/ChangeLog.2 b/lisp/mh-e/ChangeLog.2 index 028624cac82..7377d598f86 100644 --- a/lisp/mh-e/ChangeLog.2 +++ b/lisp/mh-e/ChangeLog.2 @@ -3673,7 +3673,7 @@ See ChangeLog.1 for earlier changes. - Copyright (C) 2005-2025 Free Software Foundation, Inc. + Copyright (C) 2005-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/mh-e/mh-acros.el b/lisp/mh-e/mh-acros.el index a4c04c51835..aeaba75b62e 100644 --- a/lisp/mh-e/mh-acros.el +++ b/lisp/mh-e/mh-acros.el @@ -1,6 +1,6 @@ ;;; mh-acros.el --- macros used in MH-E -*- lexical-binding: t; -*- -;; Copyright (C) 2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Satyaki Das ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el index a901c009ad8..3d5782582d0 100644 --- a/lisp/mh-e/mh-alias.el +++ b/lisp/mh-e/mh-alias.el @@ -1,6 +1,6 @@ ;;; mh-alias.el --- MH-E mail alias completion and expansion -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Peter S. Galbraith ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-buffers.el b/lisp/mh-e/mh-buffers.el index 54a37b0fc83..a288f2c884f 100644 --- a/lisp/mh-e/mh-buffers.el +++ b/lisp/mh-e/mh-buffers.el @@ -1,6 +1,6 @@ ;;; mh-buffers.el --- MH-E buffer constants and utilities -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1993, 1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index 81b718ce580..a937b72db9c 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el @@ -1,6 +1,6 @@ ;;; mh-comp.el --- MH-E functions for composing and sending messages -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1993, 1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 1b85bd278e3..147bc9e31d6 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -1,6 +1,6 @@ ;;; mh-e.el --- GNU Emacs interface to the MH mail system -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1988, 1990, 1992-1995, 1997, 1999-2025 Free +;; Copyright (C) 1985-1988, 1990, 1992-1995, 1997, 1999-2026 Free ;; Software Foundation, Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-folder.el b/lisp/mh-e/mh-folder.el index e0c53724f9c..019f76254b3 100644 --- a/lisp/mh-e/mh-folder.el +++ b/lisp/mh-e/mh-folder.el @@ -1,6 +1,6 @@ ;;; mh-folder.el --- MH-Folder mode -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2003, 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2003, 2005-2026 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Keywords: mail diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el index d9bb07dbf2b..df90a10ac32 100644 --- a/lisp/mh-e/mh-funcs.el +++ b/lisp/mh-e/mh-funcs.el @@ -1,6 +1,6 @@ ;;; mh-funcs.el --- MH-E functions not everyone will use right away -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Keywords: mail diff --git a/lisp/mh-e/mh-gnus.el b/lisp/mh-e/mh-gnus.el index 0af484e8567..191f71b457e 100644 --- a/lisp/mh-e/mh-gnus.el +++ b/lisp/mh-e/mh-gnus.el @@ -1,6 +1,6 @@ ;;; mh-gnus.el --- make MH-E compatible with various versions of Gnus -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Satyaki Das ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el index 8449bc624de..fd55342ef40 100644 --- a/lisp/mh-e/mh-identity.el +++ b/lisp/mh-e/mh-identity.el @@ -1,6 +1,6 @@ ;;; mh-identity.el --- multiple identify support for MH-E -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Peter S. Galbraith ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-inc.el b/lisp/mh-e/mh-inc.el index 65649adc8f2..48b9cb8ccd3 100644 --- a/lisp/mh-e/mh-inc.el +++ b/lisp/mh-e/mh-inc.el @@ -1,6 +1,6 @@ ;;; mh-inc.el --- MH-E "inc" and separate mail spool handling -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Peter S. Galbraith ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el index 90f50e729fd..7435924cba5 100644 --- a/lisp/mh-e/mh-junk.el +++ b/lisp/mh-e/mh-junk.el @@ -1,6 +1,6 @@ ;;; mh-junk.el --- MH-E interface to anti-spam measures -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Satyaki Das , ;; Bill Wohler diff --git a/lisp/mh-e/mh-letter.el b/lisp/mh-e/mh-letter.el index 5b11d03d492..ae3eb6698a4 100644 --- a/lisp/mh-e/mh-letter.el +++ b/lisp/mh-e/mh-letter.el @@ -1,6 +1,6 @@ ;;; mh-letter.el --- MH-Letter mode -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1993, 1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-limit.el b/lisp/mh-e/mh-limit.el index 0a011b41b12..a0ec5971510 100644 --- a/lisp/mh-e/mh-limit.el +++ b/lisp/mh-e/mh-limit.el @@ -1,6 +1,6 @@ ;;; mh-limit.el --- MH-E display limits -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2003, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2003, 2006-2026 Free Software Foundation, Inc. ;; Author: Peter S. Galbraith ;; Keywords: mail diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el index fe0d3a9272f..fb4f253a2c4 100644 --- a/lisp/mh-e/mh-mime.el +++ b/lisp/mh-e/mh-mime.el @@ -1,6 +1,6 @@ ;;; mh-mime.el --- MH-E MIME support -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Keywords: mail diff --git a/lisp/mh-e/mh-print.el b/lisp/mh-e/mh-print.el index f7f33e74937..08189c900c2 100644 --- a/lisp/mh-e/mh-print.el +++ b/lisp/mh-e/mh-print.el @@ -1,6 +1,6 @@ ;;; mh-print.el --- MH-E printing support -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Jeffrey C Honig ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-scan.el b/lisp/mh-e/mh-scan.el index f8f585cfb50..059b5c45adf 100644 --- a/lisp/mh-e/mh-scan.el +++ b/lisp/mh-e/mh-scan.el @@ -1,6 +1,6 @@ ;;; mh-scan.el --- MH-E scan line constants and utilities -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1993, 1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-search.el b/lisp/mh-e/mh-search.el index 2dd50d3134a..814b53a69db 100644 --- a/lisp/mh-e/mh-search.el +++ b/lisp/mh-e/mh-search.el @@ -1,6 +1,6 @@ ;;; mh-search.el --- MH-Search mode -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Indexed search by Satyaki Das ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el index 8908b2ef4c2..f31017c1bb7 100644 --- a/lisp/mh-e/mh-seq.el +++ b/lisp/mh-e/mh-seq.el @@ -1,6 +1,6 @@ ;;; mh-seq.el --- MH-E sequences support -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Keywords: mail diff --git a/lisp/mh-e/mh-show.el b/lisp/mh-e/mh-show.el index f367eb6b130..39d56c71249 100644 --- a/lisp/mh-e/mh-show.el +++ b/lisp/mh-e/mh-show.el @@ -1,6 +1,6 @@ ;;; mh-show.el --- MH-Show mode -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1993, 1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-speed.el b/lisp/mh-e/mh-speed.el index e0fe2e329e7..c1fd2563ba7 100644 --- a/lisp/mh-e/mh-speed.el +++ b/lisp/mh-e/mh-speed.el @@ -1,6 +1,6 @@ ;;; mh-speed.el --- MH-E speedbar support -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Satyaki Das ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-thread.el b/lisp/mh-e/mh-thread.el index d7d5b1828b1..3f2f9b5958d 100644 --- a/lisp/mh-e/mh-thread.el +++ b/lisp/mh-e/mh-thread.el @@ -1,6 +1,6 @@ ;;; mh-thread.el --- MH-E threading support -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2004, 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2026 Free Software Foundation, Inc. ;; Author: Satyaki Das ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-tool-bar.el b/lisp/mh-e/mh-tool-bar.el index 6ae47f8897e..4234e6fdde7 100644 --- a/lisp/mh-e/mh-tool-bar.el +++ b/lisp/mh-e/mh-tool-bar.el @@ -1,6 +1,6 @@ ;;; mh-tool-bar.el --- MH-E tool bar support -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2003, 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2003, 2005-2026 Free Software Foundation, Inc. ;; Author: Satyaki Das ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el index b330f73f7d2..fc7fc2cccad 100644 --- a/lisp/mh-e/mh-utils.el +++ b/lisp/mh-e/mh-utils.el @@ -1,6 +1,6 @@ ;;; mh-utils.el --- MH-E general utilities -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1993, 1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Wohler diff --git a/lisp/mh-e/mh-xface.el b/lisp/mh-e/mh-xface.el index b84cbda38ff..6ffb45dd11b 100644 --- a/lisp/mh-e/mh-xface.el +++ b/lisp/mh-e/mh-xface.el @@ -1,6 +1,6 @@ ;;; mh-xface.el --- MH-E X-Face and Face header field display -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2003, 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2003, 2005-2026 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Keywords: mail diff --git a/lisp/midnight.el b/lisp/midnight.el index 1a76cc51cf4..dbd20c92878 100644 --- a/lisp/midnight.el +++ b/lisp/midnight.el @@ -1,6 +1,6 @@ ;;; midnight.el --- run something every midnight, e.g., kill old buffers -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Sam Steingold ;; Created: 1998-05-18 diff --git a/lisp/minibuf-eldef.el b/lisp/minibuf-eldef.el index 50ab2354214..159cc87aaf4 100644 --- a/lisp/minibuf-eldef.el +++ b/lisp/minibuf-eldef.el @@ -1,6 +1,6 @@ ;;; minibuf-eldef.el --- Only show defaults in prompts when applicable -*- lexical-binding: t -*- ;; -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: convenience diff --git a/lisp/minibuffer.el b/lisp/minibuffer.el index 5727cf9f479..fc193fe54f0 100644 --- a/lisp/minibuffer.el +++ b/lisp/minibuffer.el @@ -1,6 +1,6 @@ ;;; minibuffer.el --- Minibuffer and completion functions -*- lexical-binding: t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Package: emacs @@ -188,9 +188,9 @@ This function consults `completion-category-overrides' and If no value is found in these variables, then this function goes over the parent categories of CAT (specified in the definition of CAT with `define-completion-category', which see), and chooses the first value -any of them specify (directly or via inheriance), if any. +any of them specify (directly or via inheritance), if any. -If this fucntion finds a value VAL for PROP, it returns a cons cell with +If this function finds a value VAL for PROP, it returns a cons cell with VAL at the `cdr'. Otherwise, this function returns nil." (seq-some (lambda (c) (completion--category-override c prop)) (completion--all-reachable-categories cat))) @@ -797,6 +797,19 @@ for use at QPOS." (defvar minibuffer-message-properties nil "Text properties added to the text shown by `minibuffer-message'.") +(defvar minibuffer--message-overlay nil) + +(defvar minibuffer--message-timer nil) + +(defun minibuffer--delete-message-overlay () + (when (overlayp minibuffer--message-overlay) + (delete-overlay minibuffer--message-overlay) + (setq minibuffer--message-overlay nil)) + (when (timerp minibuffer--message-timer) + (cancel-timer minibuffer--message-timer) + (setq minibuffer--message-timer nil)) + (remove-hook 'pre-command-hook #'minibuffer--delete-message-overlay)) + (defun minibuffer-message (message &rest args) "Temporarily display MESSAGE at the end of minibuffer text. This function is designed to be called from the minibuffer, i.e., @@ -814,13 +827,9 @@ through `format-message'. If some of the minibuffer text has the `minibuffer-message' text property, MESSAGE is shown at that position instead of EOB." (if (not (minibufferp (current-buffer) t)) - (progn - (if args - (apply #'message message args) - (message "%s" message)) - (prog1 (sit-for (or minibuffer-message-timeout 1000000)) - (message nil))) + (apply #'message message args) ;; Clear out any old echo-area message to make way for our new thing. + (minibuffer--delete-message-overlay) (message nil) (setq message (if (and (null args) (string-match-p "\\` *\\[.+\\]\\'" message)) @@ -834,30 +843,24 @@ property, MESSAGE is shown at that position instead of EOB." (setq message (apply #'propertize message minibuffer-message-properties))) ;; Put overlay either on `minibuffer-message' property, or at EOB. (let* ((ovpos (minibuffer--message-overlay-pos)) - (ol (make-overlay ovpos ovpos nil t t)) - ;; A quit during sit-for normally only interrupts the sit-for, - ;; but since minibuffer-message is used at the end of a command, - ;; at a time when the command has virtually finished already, a C-g - ;; should really cause an abort-recursive-edit instead (i.e. as if - ;; the C-g had been typed at top-level). Binding inhibit-quit here - ;; is an attempt to get that behavior. - (inhibit-quit t)) - (unwind-protect - (progn - (unless (zerop (length message)) - ;; The current C cursor code doesn't know to use the overlay's - ;; marker's stickiness to figure out whether to place the cursor - ;; before or after the string, so let's spoon-feed it the pos. - (put-text-property 0 1 'cursor t message)) - (overlay-put ol 'after-string message) - ;; Make sure the overlay with the message is displayed before - ;; any other overlays in that position, in case they have - ;; resize-mini-windows set to nil and the other overlay strings - ;; are too long for the mini-window width. This makes sure the - ;; temporary message will always be visible. - (overlay-put ol 'priority 1100) - (sit-for (or minibuffer-message-timeout 1000000))) - (delete-overlay ol))))) + (ol (make-overlay ovpos ovpos nil t t))) + (unless (zerop (length message)) + ;; The current C cursor code doesn't know to use the overlay's + ;; marker's stickiness to figure out whether to place the cursor + ;; before or after the string, so let's spoon-feed it the pos. + (put-text-property 0 1 'cursor t message)) + (overlay-put ol 'after-string message) + ;; Make sure the overlay with the message is displayed before + ;; any other overlays in that position, in case they have + ;; resize-mini-windows set to nil and the other overlay strings + ;; are too long for the mini-window width. This makes sure the + ;; temporary message will always be visible. + (overlay-put ol 'priority 1100) + (setq minibuffer--message-overlay ol + minibuffer--message-timer + (run-at-time (or minibuffer-message-timeout 1000000) nil + #'minibuffer--delete-message-overlay)) + (add-hook 'pre-command-hook #'minibuffer--delete-message-overlay)))) (defcustom minibuffer-message-clear-timeout nil "How long to display an echo-area message when the minibuffer is active. @@ -2774,18 +2777,27 @@ so that the update is less likely to interfere with user typing." ;; If we got interrupted, try again the next time the user is idle. (completions--start-eager-display)))) -(defun completions--start-eager-display () +(defun completions--start-eager-display (&optional require-eager-update) "Maybe display the *Completions* buffer when the user is next idle. Only displays if `completion-eager-display' is t, or if eager display -has been requested by the completion table." - (when completion-eager-display - (when (or (eq completion-eager-display t) - (completion-metadata-get - (completion-metadata - (buffer-substring-no-properties (minibuffer-prompt-end) (point)) - minibuffer-completion-table minibuffer-completion-predicate) - 'eager-display)) +has been requested by the completion table. + +When REQUIRE-EAGER-UPDATE is non-nil, also require eager-display to be +requested by the completion table." + (when (and completion-eager-display + ;; If it's already displayed, don't display it again. + (not (get-buffer-window "*Completions*" 0))) + (when (let ((metadata + (completion-metadata + (buffer-substring-no-properties (minibuffer-prompt-end) (point)) + minibuffer-completion-table minibuffer-completion-predicate))) + (and + (or (eq completion-eager-display t) + (completion-metadata-get metadata 'eager-display)) + (or (not require-eager-update) + (eq completion-eager-update t) + (completion-metadata-get metadata 'eager-update)))) (setq completion-eager-display--timer (run-with-idle-timer 0 nil #'completions--eager-display))))) @@ -2797,13 +2809,16 @@ has been requested by the completion table." (defun completions--after-change (_start _end _old-len) "Update displayed *Completions* buffer after change in buffer contents." - (when (or completion-auto-deselect completion-eager-update) - (when-let* ((window (minibuffer--completions-visible))) + (if (not (or (minibufferp nil t) completion-in-region-mode)) + (remove-hook 'after-change-functions #'completions--after-change t) + (when-let* ((window (get-buffer-window "*Completions*" 0))) (when completion-auto-deselect (with-selected-window window (completions--deselect))) (when completion-eager-update - (add-hook 'post-command-hook #'completions--post-command-update))))) + (add-hook 'post-command-hook #'completions--post-command-update))) + (when (minibufferp nil t) + (completions--start-eager-display t)))) (defun minibuffer-completion-help (&optional start end) "Display a list of possible completions of the current minibuffer contents." @@ -2821,6 +2836,8 @@ has been requested by the completion table." (- (point) start) md))) (message nil) + (when (or completion-auto-deselect completion-eager-update) + (add-hook 'after-change-functions #'completions--after-change nil t)) (if (or (null completions) (and (not (consp (cdr completions))) (equal (car completions) string))) @@ -2828,7 +2845,6 @@ has been requested by the completion table." ;; If there are no completions, or if the current input is already ;; the sole completion, then hide (previous&stale) completions. (minibuffer-hide-completions) - (remove-hook 'after-change-functions #'completions--after-change t) (if completions (completion--message "Sole completion") (unless completion-fail-discreetly @@ -2894,8 +2910,6 @@ has been requested by the completion table." (body-function . ,#'(lambda (window) (with-current-buffer mainbuf - (when (or completion-auto-deselect completion-eager-update) - (add-hook 'after-change-functions #'completions--after-change nil t)) ;; Remove the base-size tail because `sort' requires a properly ;; nil-terminated list. (when last (setcdr last nil)) @@ -3181,11 +3195,7 @@ Also respects the obsolete wrapper hook `completion-in-region-functions'. (setq-local minibuffer-completion-auto-choose nil) (add-hook 'post-command-hook #'completion-in-region--postch) (let* ((keymap completion-in-region-mode-map) - (keymap (if minibuffer-visible-completions - (make-composed-keymap - (list minibuffer-visible-completions-map - keymap)) - keymap))) + (keymap (minibuffer-visible-completions--maybe-compose-map keymap))) (push `(completion-in-region-mode . ,keymap) minor-mode-overriding-map-alist)))) @@ -3450,15 +3460,25 @@ the mode hook of this mode." (setq-local minibuffer-completion-auto-choose nil))) (defcustom minibuffer-visible-completions nil - "Whether candidates shown in *Completions* can be navigated from minibuffer. + "Whether to enable navigation of candidates in *Completions* from minibuffer. When non-nil, if the *Completions* buffer is displayed in a window, -you can use the arrow keys in the minibuffer to move the cursor in +you can use the arrow keys in the minibuffer to move point in the window showing the *Completions* buffer. Typing `RET' selects the highlighted completion candidate. If the *Completions* buffer is not displayed on the screen, or this variable is nil, the arrow keys move point in the minibuffer as usual, -and `RET' accepts the input typed into the minibuffer." - :type 'boolean +and `RET' accepts the input typed into the minibuffer. +If the value is t, both up/down and right/left arrow keys move point +in *Completions*; if the value is \\+`up-down', only up/down arrow +keys move point in *Completions*, while left/right arrows move point +in the minibuffer window." + :type '(choice (const :tag + "Disable completions navigation with arrow keys" nil) + (const :tag + "Enable completions navigation with arrow keys" t) + (const :tag + "Enable completions navigation with up/down arrows" + up-down)) :version "30.1") (defvar minibuffer-visible-completions--always-bind nil @@ -3467,13 +3487,16 @@ and `RET' accepts the input typed into the minibuffer." (defun minibuffer--completions-visible () "Return the window where the current *Completions* buffer is visible, if any." (when-let* ((window (get-buffer-window "*Completions*" 0))) - (when (eq (buffer-local-value 'completion-reference-buffer - (window-buffer window)) - ;; If there's no active minibuffer, we call - ;; `window-buffer' on nil, assuming that completion is - ;; happening in the selected window. - (window-buffer (active-minibuffer-window))) - window))) + (let ((reference-buffer + (buffer-local-value 'completion-reference-buffer + (window-buffer window)))) + (when (or (null reference-buffer) + (eq reference-buffer + ;; If there's no active minibuffer, we call + ;; `window-buffer' on nil, assuming that completion is + ;; happening in the selected window. + (window-buffer (active-minibuffer-window)))) + window)))) (defun completion--selected-candidate () "Return the selected completion candidate if any." @@ -3503,6 +3526,20 @@ displaying the *Completions* buffer exists." "" (minibuffer-visible-completions--bind #'minibuffer-previous-line-completion) "" (minibuffer-visible-completions--bind #'minibuffer-next-line-completion) "C-g" (minibuffer-visible-completions--bind #'minibuffer-hide-completions)) + +(defvar-keymap minibuffer-visible-completions-up-down-map + :doc "Local keymap for minibuffer input with visible completions, only for up/down." + "" (minibuffer-visible-completions--bind #'minibuffer-previous-completion) + "" (minibuffer-visible-completions--bind #'minibuffer-next-completion)) + +(defun minibuffer-visible-completions--maybe-compose-map (map) + (cond + ((eq minibuffer-visible-completions 'up-down) + (make-composed-keymap (list minibuffer-visible-completions-up-down-map map))) + ((eq minibuffer-visible-completions t) + (make-composed-keymap (list minibuffer-visible-completions-map map))) + (t map))) + ;;; Completion tables. @@ -5158,11 +5195,7 @@ See `completing-read' for the meaning of the arguments." ;; in minibuffer-local-filename-completion-map can ;; override bindings in base-keymap. base-keymap))) - (keymap (if minibuffer-visible-completions - (make-composed-keymap - (list minibuffer-visible-completions-map - keymap)) - keymap)) + (keymap (minibuffer-visible-completions--maybe-compose-map keymap)) (buffer (current-buffer)) (c-i-c completion-ignore-case) (result diff --git a/lisp/misc.el b/lisp/misc.el index b2422648744..7d018e810f3 100644 --- a/lisp/misc.el +++ b/lisp/misc.el @@ -1,6 +1,6 @@ ;;; misc.el --- some nonstandard editing and utility commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1989, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: convenience diff --git a/lisp/misearch.el b/lisp/misearch.el index 4cf749da7ea..ecf5dac8257 100644 --- a/lisp/misearch.el +++ b/lisp/misearch.el @@ -1,6 +1,6 @@ ;;; misearch.el --- isearch extensions for multi-buffer search -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Juri Linkov ;; Keywords: matching diff --git a/lisp/mouse-copy.el b/lisp/mouse-copy.el index 1abc36d8812..bb234968bce 100644 --- a/lisp/mouse-copy.el +++ b/lisp/mouse-copy.el @@ -1,6 +1,6 @@ ;;; mouse-copy.el --- one-click text copy and move -*- lexical-binding: t -*- -;; Copyright (C) 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: John Heidemann ;; Keywords: mouse diff --git a/lisp/mouse-drag.el b/lisp/mouse-drag.el index 01f0421baf0..22cf1b28a41 100644 --- a/lisp/mouse-drag.el +++ b/lisp/mouse-drag.el @@ -1,6 +1,6 @@ ;;; mouse-drag.el --- use mouse-2 to do a new style of scrolling -*- lexical-binding: t -*- -;; Copyright (C) 1996-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: John Heidemann ;; Keywords: mouse diff --git a/lisp/mouse.el b/lisp/mouse.el index 33aef3b729f..a6d553b60a1 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1,6 +1,6 @@ ;;; mouse.el --- window system-independent mouse support -*- lexical-binding: t -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: hardware, mouse diff --git a/lisp/mpc.el b/lisp/mpc.el index 6e0428ec04e..4b2aa7ac647 100644 --- a/lisp/mpc.el +++ b/lisp/mpc.el @@ -1,6 +1,6 @@ ;;; mpc.el --- A client for the Music Player Daemon -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: multimedia diff --git a/lisp/msb.el b/lisp/msb.el index 103f6ff838f..6ce5d24bc32 100644 --- a/lisp/msb.el +++ b/lisp/msb.el @@ -1,6 +1,6 @@ ;;; msb.el --- customizable buffer-selection with multiple menus -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 1997-2026 Free Software Foundation, Inc. ;; Author: Lars Lindberg ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/mwheel.el b/lisp/mwheel.el index 42aea575ac4..f6cb4b30953 100644 --- a/lisp/mwheel.el +++ b/lisp/mwheel.el @@ -1,6 +1,6 @@ ;;; mwheel.el --- Mouse wheel support -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Keywords: mouse ;; Package: emacs diff --git a/lisp/net/ange-ftp.el b/lisp/net/ange-ftp.el index 3d7ce0add48..c39d73e0ca9 100644 --- a/lisp/net/ange-ftp.el +++ b/lisp/net/ange-ftp.el @@ -1,6 +1,6 @@ ;;; ange-ftp.el --- transparent FTP support for GNU Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1989-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989-2026 Free Software Foundation, Inc. ;; Author: Andy Norman ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/net/browse-url.el b/lisp/net/browse-url.el index 2b8964d1ece..83ec67f976c 100644 --- a/lisp/net/browse-url.el +++ b/lisp/net/browse-url.el @@ -1,6 +1,6 @@ ;;; browse-url.el --- pass a URL to a web browser -*- lexical-binding: t; -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Denis Howe ;; Maintainer: emacs-devel@gnu.org @@ -1000,7 +1000,10 @@ opposite of the browser kind of `browse-url-browser-function'." browse-url-secondary-browser-function #'browse-url-default-browser #'eww)))) - (funcall function url arg))) + (let ((browse-url-browser-function function) + (browse-url-handlers nil) + (browse-url-default-handlers nil)) + (browse-url url arg)))) ;;;###autoload (defun browse-url-at-mouse (event) @@ -1788,17 +1791,19 @@ clickable and will use `browse-url' to open the URLs in question." browse-url-data ,(match-string 0))))))) ;;;###autoload -(defun browse-url-button-open (&optional external mouse-event) +(defun browse-url-button-open (&optional secondary mouse-event) "Follow the link under point using `browse-url'. -If EXTERNAL (the prefix if used interactively), open with the -external browser instead of the default one." +If SECONDARY (the prefix if used interactively), open with the +secondary browser instead of the default one." (interactive (list current-prefix-arg last-nonmenu-event)) (mouse-set-point mouse-event) (let ((url (get-text-property (point) 'browse-url-data))) (unless url (error "No URL under point")) - (if external - (funcall browse-url-secondary-browser-function url) + (let ((browse-url-browser-function + (if secondary + browse-url-secondary-browser-function + browse-url-browser-function))) (browse-url url)))) ;;;###autoload @@ -1806,8 +1811,10 @@ external browser instead of the default one." "Open URL using `browse-url'. If `current-prefix-arg' is non-nil, use `browse-url-secondary-browser-function' instead." - (if current-prefix-arg - (funcall browse-url-secondary-browser-function url) + (let ((browse-url-browser-function + (if current-prefix-arg + browse-url-secondary-browser-function + browse-url-browser-function))) (browse-url url))) (defun browse-url-button-copy () diff --git a/lisp/net/dbus.el b/lisp/net/dbus.el index 01dfc322c52..465de028725 100644 --- a/lisp/net/dbus.el +++ b/lisp/net/dbus.el @@ -1,6 +1,6 @@ ;;; dbus.el --- Elisp bindings for D-Bus. -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, hardware @@ -319,6 +319,10 @@ If the parameter `:authorizable' is given and the following AUTH is non-nil, the invoked method may interactively prompt the user for authorization. The default is nil. +If the parameter `:keep-fd' is given, and the return message has a first +argument with a D-Bus type `:unix-fd', the returned file desriptor is +kept internally, and can be used in a later `dbus--close-fd' call. + All other arguments ARGS are passed to METHOD as arguments. They are converted into D-Bus types via the following rules: @@ -453,6 +457,10 @@ If the parameter `:authorizable' is given and the following AUTH is non-nil, the invoked method may interactively prompt the user for authorization. The default is nil. +If the parameter `:keep-fd' is given, and the return message has a first +argument with a D-Bus type `:unix-fd', the returned file desriptor is +kept internally, and can be used in a later `dbus--close-fd' call. + All other arguments ARGS are passed to METHOD as arguments. They are converted into D-Bus types via the following rules: @@ -604,6 +612,7 @@ This is an internal function, it shall not be used outside dbus.el." ;;; Hash table of registered functions. +;; Seems to be unused. Dow we want to keep it? (defun dbus-list-hash-table () "Return all registered member registrations to D-Bus. The return value is a list, with elements of kind (KEY . VALUE). @@ -613,7 +622,7 @@ hash table." (maphash (lambda (key value) (push (cons key value) result)) dbus-registered-objects-table) - result)) + (nreverse result))) (defun dbus-setenv (bus variable value) "Set the value of the BUS environment variable named VARIABLE to VALUE. @@ -2098,6 +2107,7 @@ either a method name, a signal name, or an error name." (defun dbus-monitor-goto-serial () "Goto D-Bus message with the same serial number." + (declare (completion ignore)) (interactive) (when (mouse-event-p last-input-event) (mouse-set-point last-input-event)) (when-let* ((point (get-text-property (point) 'dbus-serial))) diff --git a/lisp/net/dictionary-connection.el b/lisp/net/dictionary-connection.el index 7092bbcb94b..2323f5a5126 100644 --- a/lisp/net/dictionary-connection.el +++ b/lisp/net/dictionary-connection.el @@ -1,6 +1,6 @@ ;;; dictionary-connection.el --- TCP-based client connection for dictionary -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Torsten Hilbrich ;; Keywords: network diff --git a/lisp/net/dictionary.el b/lisp/net/dictionary.el index 2df48f9a836..602a01c3738 100644 --- a/lisp/net/dictionary.el +++ b/lisp/net/dictionary.el @@ -1,6 +1,6 @@ ;;; dictionary.el --- Client for rfc2229 dictionary servers -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Torsten Hilbrich ;; Keywords: interface, dictionary diff --git a/lisp/net/dig.el b/lisp/net/dig.el index aa3b1fa9fb0..607a5c41a6b 100644 --- a/lisp/net/dig.el +++ b/lisp/net/dig.el @@ -1,6 +1,6 @@ ;;; dig.el --- Domain Name System dig interface -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: DNS BIND dig comm diff --git a/lisp/net/dns.el b/lisp/net/dns.el index 4e993cf6cec..55b6fce83fc 100644 --- a/lisp/net/dns.el +++ b/lisp/net/dns.el @@ -1,6 +1,6 @@ ;;; dns.el --- Domain Name Service lookups -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: network comm diff --git a/lisp/net/eudc-bob.el b/lisp/net/eudc-bob.el index 58a3e02430d..14e9e729664 100644 --- a/lisp/net/eudc-bob.el +++ b/lisp/net/eudc-bob.el @@ -1,6 +1,6 @@ ;;; eudc-bob.el --- Binary Objects Support for EUDC -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudc-capf.el b/lisp/net/eudc-capf.el index d023a032829..5caf6b28a29 100644 --- a/lisp/net/eudc-capf.el +++ b/lisp/net/eudc-capf.el @@ -1,6 +1,6 @@ ;;; eudc-capf.el --- EUDC - completion-at-point bindings -*- lexical-binding:t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Alexander Adolf ;; Package: eudc diff --git a/lisp/net/eudc-export.el b/lisp/net/eudc-export.el index 8387ffddba1..aa8e52bd792 100644 --- a/lisp/net/eudc-export.el +++ b/lisp/net/eudc-export.el @@ -1,6 +1,6 @@ ;;; eudc-export.el --- functions to export EUDC query results -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudc-hotlist.el b/lisp/net/eudc-hotlist.el index f11a179a02c..675a9cd2590 100644 --- a/lisp/net/eudc-hotlist.el +++ b/lisp/net/eudc-hotlist.el @@ -1,6 +1,6 @@ ;;; eudc-hotlist.el --- hotlist management for EUDC -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudc-vars.el b/lisp/net/eudc-vars.el index 64b7e7b41a4..6745b2968a9 100644 --- a/lisp/net/eudc-vars.el +++ b/lisp/net/eudc-vars.el @@ -1,6 +1,6 @@ ;;; eudc-vars.el --- Emacs Unified Directory Client -*- lexical-binding: t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudc.el b/lisp/net/eudc.el index dd3c14f9aa7..2e9eddcd49b 100644 --- a/lisp/net/eudc.el +++ b/lisp/net/eudc.el @@ -1,6 +1,6 @@ ;;; eudc.el --- Emacs Unified Directory Client -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudcb-bbdb.el b/lisp/net/eudcb-bbdb.el index b5989579117..6e4aa9833f5 100644 --- a/lisp/net/eudcb-bbdb.el +++ b/lisp/net/eudcb-bbdb.el @@ -1,6 +1,6 @@ ;;; eudcb-bbdb.el --- Emacs Unified Directory Client - BBDB Backend -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudcb-ecomplete.el b/lisp/net/eudcb-ecomplete.el index f8cac071d7f..9e9f6518ec3 100644 --- a/lisp/net/eudcb-ecomplete.el +++ b/lisp/net/eudcb-ecomplete.el @@ -1,6 +1,6 @@ ;;; eudcb-ecomplete.el --- EUDC - ecomplete backend -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Alexander Adolf ;; Package: eudc diff --git a/lisp/net/eudcb-ldap.el b/lisp/net/eudcb-ldap.el index 437612728b6..1afc8b49476 100644 --- a/lisp/net/eudcb-ldap.el +++ b/lisp/net/eudcb-ldap.el @@ -1,6 +1,6 @@ ;;; eudcb-ldap.el --- Emacs Unified Directory Client - LDAP Backend -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/net/eudcb-mab.el b/lisp/net/eudcb-mab.el index 0e53bedd500..95bd14ead58 100644 --- a/lisp/net/eudcb-mab.el +++ b/lisp/net/eudcb-mab.el @@ -1,6 +1,6 @@ ;;; eudcb-mab.el --- Emacs Unified Directory Client - AddressBook backend -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: Thomas Fitzsimmons diff --git a/lisp/net/eudcb-macos-contacts.el b/lisp/net/eudcb-macos-contacts.el index 794a2453ed9..f15dc30ccee 100644 --- a/lisp/net/eudcb-macos-contacts.el +++ b/lisp/net/eudcb-macos-contacts.el @@ -1,6 +1,6 @@ ;;; eudcb-macos-contacts.el --- EUDC - macOS Contacts backend -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Alexander Adolf ;; Package: eudc diff --git a/lisp/net/eudcb-mailabbrev.el b/lisp/net/eudcb-mailabbrev.el index 2b9a4412056..c216eb1e56d 100644 --- a/lisp/net/eudcb-mailabbrev.el +++ b/lisp/net/eudcb-mailabbrev.el @@ -1,6 +1,6 @@ ;;; eudcb-mailabbrev.el --- EUDC - mailabbrev backend -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Alexander Adolf ;; Package: eudc diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 7d7373b275e..fb53d067e4f 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el @@ -1,6 +1,6 @@ ;;; eww.el --- Emacs Web Wowser -*- lexical-binding:t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: html @@ -2257,7 +2257,8 @@ external browser." (setq url (or url (plist-get eww-data :url))) (if (eq 'external (browse-url--browser-kind browse-url-secondary-browser-function url)) - (funcall browse-url-secondary-browser-function url) + (let ((browse-url-browser-function browse-url-secondary-browser-function)) + (browse-url url)) (browse-url-with-browser-kind 'external url))) (defun eww-remove-tracking (url) diff --git a/lisp/net/gnutls.el b/lisp/net/gnutls.el index 65382a12265..dbb7d19e9e6 100644 --- a/lisp/net/gnutls.el +++ b/lisp/net/gnutls.el @@ -1,6 +1,6 @@ ;;; gnutls.el --- Support SSL/TLS connections through GnuTLS -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Ted Zlatanov ;; Keywords: comm, tls, ssl, encryption diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el index 349d73eba0e..32324bd0d77 100644 --- a/lisp/net/goto-addr.el +++ b/lisp/net/goto-addr.el @@ -1,6 +1,6 @@ ;;; goto-addr.el --- click to browse URL or to send to e-mail address -*- lexical-binding: t; -*- -;; Copyright (C) 1995, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2000-2026 Free Software Foundation, Inc. ;; Author: Eric Ding ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/net/hmac-def.el b/lisp/net/hmac-def.el index d80df82c0e0..96dbac1302f 100644 --- a/lisp/net/hmac-def.el +++ b/lisp/net/hmac-def.el @@ -1,6 +1,6 @@ ;;; hmac-def.el --- A macro for defining HMAC functions. -*- lexical-binding: t -*- -;; Copyright (C) 1999, 2001, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2001, 2007-2026 Free Software Foundation, Inc. ;; Author: Shuhei KOBAYASHI ;; Keywords: HMAC, RFC2104 diff --git a/lisp/net/hmac-md5.el b/lisp/net/hmac-md5.el index e63e9045df4..bb480257f41 100644 --- a/lisp/net/hmac-md5.el +++ b/lisp/net/hmac-md5.el @@ -1,6 +1,6 @@ ;;; hmac-md5.el --- Compute HMAC-MD5. -*- lexical-binding:t -*- -;; Copyright (C) 1999, 2001, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2001, 2007-2026 Free Software Foundation, Inc. ;; Author: Shuhei KOBAYASHI ;; Keywords: HMAC, RFC2104, HMAC-MD5, MD5, KEYED-MD5, CRAM-MD5 diff --git a/lisp/net/imap.el b/lisp/net/imap.el index f705da317e5..22bebbb0f0c 100644 --- a/lisp/net/imap.el +++ b/lisp/net/imap.el @@ -1,6 +1,6 @@ ;;; imap.el --- imap library -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail diff --git a/lisp/net/ldap.el b/lisp/net/ldap.el index 3c81b0b5091..60f165d7c9c 100644 --- a/lisp/net/ldap.el +++ b/lisp/net/ldap.el @@ -1,6 +1,6 @@ ;;; ldap.el --- client interface to LDAP for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/net/mailcap.el b/lisp/net/mailcap.el index b80baab97d5..27b5e96933b 100644 --- a/lisp/net/mailcap.el +++ b/lisp/net/mailcap.el @@ -1,6 +1,6 @@ ;;; mailcap.el --- MIME media types configuration -*- lexical-binding: t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: William M. Perry ;; Lars Magne Ingebrigtsen diff --git a/lisp/net/mairix.el b/lisp/net/mairix.el index 9f63c289936..f9b97e29395 100644 --- a/lisp/net/mairix.el +++ b/lisp/net/mairix.el @@ -1,6 +1,6 @@ ;;; mairix.el --- Mairix interface for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: David Engster ;; Keywords: mail searching diff --git a/lisp/net/net-utils.el b/lisp/net/net-utils.el index d1576955f31..dbe065564b6 100644 --- a/lisp/net/net-utils.el +++ b/lisp/net/net-utils.el @@ -1,6 +1,6 @@ ;;; net-utils.el --- network functions -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Peter Breton ;; Created: Sun Mar 16 1997 diff --git a/lisp/net/network-stream.el b/lisp/net/network-stream.el index 93f3682883a..89043fc8398 100644 --- a/lisp/net/network-stream.el +++ b/lisp/net/network-stream.el @@ -1,6 +1,6 @@ ;;; network-stream.el --- open network processes, possibly with encryption -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: network diff --git a/lisp/net/newst-backend.el b/lisp/net/newst-backend.el index e8c50636dcb..babd55fb29d 100644 --- a/lisp/net/newst-backend.el +++ b/lisp/net/newst-backend.el @@ -1,6 +1,6 @@ ;;; newst-backend.el --- Retrieval backend for newsticker -*- lexical-binding:t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; URL: https://www.nongnu.org/newsticker diff --git a/lisp/net/newst-plainview.el b/lisp/net/newst-plainview.el index b211db8e5c8..468c81839e6 100644 --- a/lisp/net/newst-plainview.el +++ b/lisp/net/newst-plainview.el @@ -1,6 +1,6 @@ ;;; newst-plainview.el --- Single buffer frontend for newsticker. -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; URL: https://www.nongnu.org/newsticker diff --git a/lisp/net/newst-reader.el b/lisp/net/newst-reader.el index 8749ed649fb..7164c5ebdf7 100644 --- a/lisp/net/newst-reader.el +++ b/lisp/net/newst-reader.el @@ -1,6 +1,6 @@ ;;; newst-reader.el --- Generic RSS reader functions. -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; URL: https://www.nongnu.org/newsticker diff --git a/lisp/net/newst-ticker.el b/lisp/net/newst-ticker.el index 69bb0792e0c..520a5d2a6bd 100644 --- a/lisp/net/newst-ticker.el +++ b/lisp/net/newst-ticker.el @@ -1,6 +1,6 @@ ;;; newst-ticker.el --- mode line ticker for newsticker. -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; URL: https://www.nongnu.org/newsticker diff --git a/lisp/net/newst-treeview.el b/lisp/net/newst-treeview.el index ed5d97cdd82..04d796b0b90 100644 --- a/lisp/net/newst-treeview.el +++ b/lisp/net/newst-treeview.el @@ -1,6 +1,6 @@ ;;; newst-treeview.el --- Treeview frontend for newsticker. -*- lexical-binding:t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; Created: 2007 diff --git a/lisp/net/newsticker.el b/lisp/net/newsticker.el index c8b6e54db88..232cb7f1e18 100644 --- a/lisp/net/newsticker.el +++ b/lisp/net/newsticker.el @@ -1,6 +1,6 @@ ;;; newsticker.el --- A Newsticker for Emacs. -*- lexical-binding: t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; URL: https://www.nongnu.org/newsticker diff --git a/lisp/net/nsm.el b/lisp/net/nsm.el index 1f910242666..9c56bf3ac5a 100644 --- a/lisp/net/nsm.el +++ b/lisp/net/nsm.el @@ -1,6 +1,6 @@ ;;; nsm.el --- Network Security Manager -*- lexical-binding:t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: encryption, security, network @@ -353,8 +353,8 @@ method that offers perfect forward secrecy, such as ephemeral Diffie-Hellman key exchange[1]. There is a long history of attacks against static RSA key exchange in -TLS, dating back to Bleichenbacher's attack in 1998, and mitigations -that have subsequently themselves been broken. In 2017, it was +TLS, dating back to Bleichenbacher's attack in 1998, and mitigation +that has subsequently itself been broken. In 2017, it was discovered that an attacker can decrypt ciphertexts or sign messages with the server's private key[2]. The poor security of this key exchange protocol was confirmed by new attacks discovered in 2018[3]. diff --git a/lisp/net/ntlm.el b/lisp/net/ntlm.el index 43331351472..30d5c30ac8c 100644 --- a/lisp/net/ntlm.el +++ b/lisp/net/ntlm.el @@ -1,6 +1,6 @@ ;;; ntlm.el --- NTLM (NT LanManager) authentication support -*- lexical-binding:t -*- -;; Copyright (C) 2001, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2007-2026 Free Software Foundation, Inc. ;; Author: Taro Kawagishi ;; Maintainer: Thomas Fitzsimmons diff --git a/lisp/net/pop3.el b/lisp/net/pop3.el index 4d64cf153da..246528a7176 100644 --- a/lisp/net/pop3.el +++ b/lisp/net/pop3.el @@ -1,6 +1,6 @@ ;;; pop3.el --- Post Office Protocol (RFC 1460) interface -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Richard L. Pieri ;; Maintainer: emacs-devel@gnu.org @@ -34,8 +34,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'mail-utils) (defgroup pop3 nil diff --git a/lisp/net/puny.el b/lisp/net/puny.el index 456c0eefac3..01293e08fda 100644 --- a/lisp/net/puny.el +++ b/lisp/net/puny.el @@ -1,6 +1,6 @@ ;;; puny.el --- translate non-ASCII domain names to ASCII -*- lexical-binding:t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, net diff --git a/lisp/net/rcirc.el b/lisp/net/rcirc.el index 5c9e28153f7..c067c2472bb 100644 --- a/lisp/net/rcirc.el +++ b/lisp/net/rcirc.el @@ -1,6 +1,6 @@ ;;; rcirc.el --- default, simple IRC client -*- lexical-binding: t; -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Ryan Yeske ;; Maintainers: Ryan Yeske , @@ -1338,21 +1338,11 @@ The list is updated automatically by `defun-rcirc-command'.") (interactive "zCoding system for incoming messages: ") (setq-local rcirc-decode-coding-system coding-system)) -(define-obsolete-function-alias - 'rcirc-set-decode-coding-system - 'set-rcirc-decode-coding-system - "28.1") - (defun rcirc-set-encode-coding-system (coding-system) "Set the encode CODING-SYSTEM used in this channel." (interactive "zCoding system for outgoing messages: ") (setq-local rcirc-encode-coding-system coding-system)) -(define-obsolete-function-alias - 'rcirc-set-encode-coding-system - 'set-rcirc-encode-coding-system - "28.1") - (defun rcirc-format (pre &optional replace) "Insert markup formatting PRE. PRE and \"^O\" (ASCII #x0f) will either be inserted around the @@ -1577,7 +1567,8 @@ If ALL is non-nil, update prompts in all IRC buffers." (with-rcirc-process-buffer process (mapcar 'cdr rcirc-buffer-alist)))) (rcirc-process-list)) - (let ((inhibit-read-only t) + (let ((buffer-undo-list t) + (inhibit-read-only t) (prompt (or rcirc-prompt ""))) (mapc (lambda (rep) (setq prompt @@ -1729,6 +1720,8 @@ Create the buffer if it doesn't exist." rcirc-prompt-end-marker (point)))) (dolist (line (split-string input "\n")) (rcirc-process-input-line line)) + ;; reset undo data after input is sent + (setq buffer-undo-list nil) ;; add to input-ring (save-excursion (ring-insert rcirc-input-ring input) @@ -2014,6 +2007,30 @@ PROCESS is the process object for the current connection." (> last-activity-line 0)) (- rcirc-current-line last-activity-line)))) +;; Copied from lisp/erc/erc.el (erc-update-undo-list) +(defun rcirc-update-undo-list (shift) + "Translate buffer positions in buffer-undo-list by SHIFT." + (unless (or (zerop shift) (atom buffer-undo-list)) + (let ((list buffer-undo-list) elt) + (while list + (setq elt (car list)) + (cond ((integerp elt) ; POSITION + (incf (car list) shift)) + ((or (atom elt) ; nil, EXTENT + ;; (eq t (car elt)) ; (t . TIME) + (markerp (car elt))) ; (MARKER . DISTANCE) + nil) + ((integerp (car elt)) ; (BEGIN . END) + (incf (car elt) shift) + (incf (cdr elt) shift)) + ((stringp (car elt)) ; (TEXT . POSITION) + (incf (cdr elt) (* (if (natnump (cdr elt)) 1 -1) shift))) + ((null (car elt)) ; (nil PROPERTY VALUE BEG . END) + (let ((cons (nthcdr 3 elt))) + (incf (car cons) shift) + (incf (cdr cons) shift)))) + (setq list (cdr list)))))) + (defvar rcirc-markup-text-functions '(rcirc-markup-attributes rcirc-color-attributes @@ -2042,13 +2059,16 @@ connection." rcirc-ignore-list)) ;; do not ignore if we sent the message (not (string= sender (rcirc-nick process)))) - (let* ((buffer (rcirc-target-buffer process sender response target text)) + (let* (preinsert-prompt-end-position + (buffer (rcirc-target-buffer process sender response target text)) (time (if-let* ((time (rcirc-get-tag "time"))) (parse-iso8601-time-string time t) (current-time))) (inhibit-read-only t)) (with-current-buffer buffer - (let ((moving (= (point) rcirc-prompt-end-marker)) + (setq preinsert-prompt-end-position (marker-position rcirc-prompt-end-marker)) + (let ((buffer-undo-list t) + (moving (= (point) rcirc-prompt-end-marker)) (old-point (point-marker))) (setq text (decode-coding-string text rcirc-decode-coding-system)) @@ -2154,9 +2174,16 @@ connection." 0) (recenter -1))))))) - ;; flush undo (can we do something smarter here?) - (buffer-disable-undo) - (buffer-enable-undo) + ;; as text is inserted before the prompt - moving it further + ;; away - the undo data for user input beyond the prompt is + ;; invalidated + ;; + ;; attempt to fix the undo data by shifting the undo positions + ;; in the undo list by the prompt's "drift", i.e. the delta + ;; between the current and previous (pre-insertion) prompt + ;; position + (rcirc-update-undo-list (- rcirc-prompt-end-marker + preinsert-prompt-end-position)) ;; record mode line activity (when (and activity diff --git a/lisp/net/rfc2104.el b/lisp/net/rfc2104.el index bab40dc8a42..cd4c9fde9fc 100644 --- a/lisp/net/rfc2104.el +++ b/lisp/net/rfc2104.el @@ -1,6 +1,6 @@ ;;; rfc2104.el --- RFC2104 Hashed Message Authentication Codes -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: mail diff --git a/lisp/net/sasl-cram.el b/lisp/net/sasl-cram.el index d1eca1b0d01..5a6312cbb5c 100644 --- a/lisp/net/sasl-cram.el +++ b/lisp/net/sasl-cram.el @@ -1,6 +1,6 @@ ;;; sasl-cram.el --- CRAM-MD5 module for the SASL client framework -*- lexical-binding: t -*- -;; Copyright (C) 2000, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2007-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Kenichi OKADA diff --git a/lisp/net/sasl-digest.el b/lisp/net/sasl-digest.el index 3f819d1ea4e..d383a39b5bc 100644 --- a/lisp/net/sasl-digest.el +++ b/lisp/net/sasl-digest.el @@ -1,6 +1,6 @@ ;;; sasl-digest.el --- DIGEST-MD5 module for the SASL client framework -*- lexical-binding: t -*- -;; Copyright (C) 2000, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2007-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Kenichi OKADA diff --git a/lisp/net/sasl-ntlm.el b/lisp/net/sasl-ntlm.el index d1fe9d8dd37..3bffbc40529 100644 --- a/lisp/net/sasl-ntlm.el +++ b/lisp/net/sasl-ntlm.el @@ -1,6 +1,6 @@ ;;; sasl-ntlm.el --- NTLM (NT Lan Manager) module for the SASL client framework -*- lexical-binding: t -*- -;; Copyright (C) 2000, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2007-2026 Free Software Foundation, Inc. ;; Author: Taro Kawagishi ;; Keywords: SASL, NTLM diff --git a/lisp/net/sasl-scram-rfc.el b/lisp/net/sasl-scram-rfc.el index b85c3721252..cdb4b22c312 100644 --- a/lisp/net/sasl-scram-rfc.el +++ b/lisp/net/sasl-scram-rfc.el @@ -1,6 +1,6 @@ ;;; sasl-scram-rfc.el --- SCRAM-SHA-1 module for the SASL client framework -*- lexical-binding: t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Magnus Henoch ;; Package: sasl diff --git a/lisp/net/sasl-scram-sha256.el b/lisp/net/sasl-scram-sha256.el index a7fa1cfd01a..844425bdb43 100644 --- a/lisp/net/sasl-scram-sha256.el +++ b/lisp/net/sasl-scram-sha256.el @@ -1,6 +1,6 @@ ;;; sasl-scram-sha256.el --- SCRAM-SHA-256 module for the SASL client framework -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Package: sasl @@ -26,7 +26,6 @@ ;;; Code: -(require 'cl-lib) (require 'sasl) (require 'hex-util) (require 'rfc2104) diff --git a/lisp/net/sasl.el b/lisp/net/sasl.el index e63485cb9c7..289e867e672 100644 --- a/lisp/net/sasl.el +++ b/lisp/net/sasl.el @@ -1,6 +1,6 @@ ;;; sasl.el --- SASL client framework -*- lexical-binding: t -*- -;; Copyright (C) 2000, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2007-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: SASL diff --git a/lisp/net/secrets.el b/lisp/net/secrets.el index 049def1dc8d..0d585ffa261 100644 --- a/lisp/net/secrets.el +++ b/lisp/net/secrets.el @@ -1,6 +1,6 @@ ;;; secrets.el --- Client interface to gnome-keyring and kwallet. -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm password passphrase diff --git a/lisp/net/shr-color.el b/lisp/net/shr-color.el index bbb7bd6afaa..68bf2c418ec 100644 --- a/lisp/net/shr-color.el +++ b/lisp/net/shr-color.el @@ -1,6 +1,6 @@ ;;; shr-color.el --- Simple HTML Renderer color management -*- lexical-binding:t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Julien Danjou ;; Keywords: html @@ -27,7 +27,6 @@ ;;; Code: (require 'color) -(eval-when-compile (require 'cl-lib)) (defgroup shr-color nil "Simple HTML Renderer colors." diff --git a/lisp/net/shr.el b/lisp/net/shr.el index c90230c1703..bf78cce13bf 100644 --- a/lisp/net/shr.el +++ b/lisp/net/shr.el @@ -1,6 +1,6 @@ ;;; shr.el --- Simple HTML Renderer -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: html @@ -1097,9 +1097,9 @@ When `shr-fill-text' is nil, only indent." (mouse-set-point ev) (shr-browse-url nil nil t)) -(defun shr-browse-url (&optional external mouse-event new-window) +(defun shr-browse-url (&optional secondary mouse-event new-window) "Browse the URL at point using `browse-url'. -If EXTERNAL is non-nil (interactively, the prefix argument), browse +If SECONDARY is non-nil (interactively, the prefix argument), browse the URL using `browse-url-secondary-browser-function'. If this function is invoked by a mouse click, it will browse the URL at the position of the click. Optional argument MOUSE-EVENT describes @@ -1110,8 +1110,9 @@ the mouse click event." (cond ((not url) (message "No link under point")) - (external - (funcall browse-url-secondary-browser-function url) + (secondary + (let ((browse-url-browser-function browse-url-secondary-browser-function)) + (browse-url url)) (shr--blink-link)) (t (browse-url url (xor new-window browse-url-new-window-flag)))))) diff --git a/lisp/net/sieve-manage.el b/lisp/net/sieve-manage.el index 114c081419b..10b52c064f1 100644 --- a/lisp/net/sieve-manage.el +++ b/lisp/net/sieve-manage.el @@ -1,6 +1,6 @@ ;;; sieve-manage.el --- Implementation of the managesieve protocol in elisp -*- lexical-binding:t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Albert Krewinkel diff --git a/lisp/net/sieve-mode.el b/lisp/net/sieve-mode.el index e53b6e335a2..54bccc179aa 100644 --- a/lisp/net/sieve-mode.el +++ b/lisp/net/sieve-mode.el @@ -1,6 +1,6 @@ ;;; sieve-mode.el --- Sieve code editing commands for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson @@ -48,6 +48,13 @@ "Sieve." :group 'languages) +(defcustom sieve-indent-offset 2 + "Indentation offset for Sieve mode." + :type 'integer + :group 'sieve + :safe #'integerp + :version "31.1") + (defcustom sieve-mode-hook nil "Hook run in sieve mode buffers." :type 'hook) @@ -180,7 +187,7 @@ Turning on Sieve mode runs `sieve-mode-hook'." (let ((depth (car (syntax-ppss)))) (when (looking-at "[ \t]*}") (setq depth (1- depth))) - (indent-line-to (* 2 depth)))) + (indent-line-to (* sieve-indent-offset depth)))) ;; Skip to the end of the indentation if at the beginning of the ;; line. (when (save-excursion diff --git a/lisp/net/sieve.el b/lisp/net/sieve.el index 9511bc30b0d..a3f8ea3f746 100644 --- a/lisp/net/sieve.el +++ b/lisp/net/sieve.el @@ -1,6 +1,6 @@ ;;; sieve.el --- Utilities to manage sieve scripts -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson diff --git a/lisp/net/snmp-mode.el b/lisp/net/snmp-mode.el index 5e3396b8adf..ec6cd55f12f 100644 --- a/lisp/net/snmp-mode.el +++ b/lisp/net/snmp-mode.el @@ -1,6 +1,6 @@ ;;; snmp-mode.el --- SNMP & SNMPv2 MIB major mode -*- lexical-binding: t -*- -;; Copyright (C) 1995, 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Paul D. Smith ;; Keywords: data diff --git a/lisp/net/soap-client.el b/lisp/net/soap-client.el index c4d816aa60a..beebe9b4445 100644 --- a/lisp/net/soap-client.el +++ b/lisp/net/soap-client.el @@ -1,6 +1,6 @@ ;;; soap-client.el --- Access SOAP web services -*- lexical-binding: t -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Alexandru Harsanyi ;; Author: Thomas Fitzsimmons diff --git a/lisp/net/soap-inspect.el b/lisp/net/soap-inspect.el index e7928e18de4..97ccee2db6d 100644 --- a/lisp/net/soap-inspect.el +++ b/lisp/net/soap-inspect.el @@ -1,6 +1,6 @@ ;;; soap-inspect.el --- Interactive WSDL inspector -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Alexandru Harsanyi ;; Created: October 2010 diff --git a/lisp/net/socks.el b/lisp/net/socks.el index 19123332aa0..ac2b39afb8b 100644 --- a/lisp/net/socks.el +++ b/lisp/net/socks.el @@ -1,6 +1,6 @@ ;;; socks.el --- A Socks v5 Client for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1996-2000, 2002, 2007-2025 Free Software Foundation, +;; Copyright (C) 1996-2000, 2002, 2007-2026 Free Software Foundation, ;; Inc. ;; Author: William M. Perry diff --git a/lisp/net/telnet.el b/lisp/net/telnet.el index 1d2911825aa..5bfa94a7ff7 100644 --- a/lisp/net/telnet.el +++ b/lisp/net/telnet.el @@ -1,6 +1,6 @@ ;;; telnet.el --- run a telnet session from within an Emacs buffer -*- lexical-binding: t; -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: William F. Schelter ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el index 8ea559bc9b3..5bcb92536fd 100644 --- a/lisp/net/tramp-adb.el +++ b/lisp/net/tramp-adb.el @@ -1,6 +1,6 @@ ;;; tramp-adb.el --- Functions for calling Android Debug Bridge from Tramp -*- lexical-binding:t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Jürgen Hötzel ;; Maintainer: Michael Albinus @@ -266,11 +266,7 @@ arguments to pass to the OPERATION." (with-parsed-tramp-file-name filename nil (tramp-convert-file-attributes v localname id-format (and - (tramp-adb-send-command-and-check - v (format "(%s -d -l %s; echo tramp_exit_status $?) | cat" - (tramp-adb-get-ls-command v) - (tramp-shell-quote-argument localname)) - nil t) + (tramp-adb-do-ls v "-d -l" localname) (with-current-buffer (tramp-get-buffer v) (tramp-adb-sh-fix-ls-output) (cdar (tramp-do-parse-file-attributes-with-ls v))))))) @@ -320,26 +316,21 @@ arguments to pass to the OPERATION." (tramp-skeleton-directory-files-and-attributes directory full match nosort id-format count (with-current-buffer (tramp-get-buffer v) - (when (tramp-adb-send-command-and-check - v (format "(%s -a -l %s; echo tramp_exit_status $?) | cat" - (tramp-adb-get-ls-command v) - (tramp-shell-quote-argument localname)) - nil t) - ;; We insert also filename/. and filename/.., because "ls" - ;; doesn't on some file systems, like "sdcard". - (unless (search-backward-regexp (rx "." eol) nil t) - (narrow-to-region (point-max) (point-max)) - (tramp-adb-send-command - v (format "%s -d -a -l %s %s | cat" - (tramp-adb-get-ls-command v) - (tramp-shell-quote-argument - (file-name-concat localname ".")) - (tramp-shell-quote-argument - (file-name-concat localname "..")))) - (replace-regexp-in-region - (rx (literal (file-name-unquote (file-name-as-directory localname)))) - "" (point-min)) - (widen))) + (save-restriction + (when (tramp-adb-do-ls v "-a -l" localname) + ;; We insert also filename/. and filename/.., because "ls" + ;; doesn't on some file systems, like "sdcard". + (goto-char (point-max)) + (unless (search-backward-regexp (rx "." eol) nil t) + (narrow-to-region (point-max) (point-max)) + (when (tramp-adb-do-ls + v "-d -a -l" + (file-name-concat localname ".") + (file-name-concat localname "..")) + (replace-regexp-in-region + (rx + (literal (file-name-unquote (file-name-as-directory localname)))) + "" (point-min)))))) (tramp-adb-sh-fix-ls-output) (tramp-do-parse-file-attributes-with-ls v)))) @@ -366,6 +357,24 @@ arguments to pass to the OPERATION." "ls --color=never") (t "ls")))) +;; "ls" returns exit code 1 for permission problems and alike. Ignore +;; those messages. (Bug#80054) +(defun tramp-adb-do-ls (vec switches &rest filenames) + "Call \"ls\" on a remote adb device with SWITCHES. +Return non-il if the call was successful. Ignore return code 1 stderr +output." + (ignore-errors + (and-let* + ((ret (tramp-adb-send-command-and-check + vec (format + "(%s %s %s 2>%s; echo tramp_exit_status $?) | cat" + (tramp-adb-get-ls-command vec) switches + (mapconcat #'tramp-shell-quote-argument filenames " ") + (tramp-get-remote-null-device vec)) + t t)) + ((natnump ret)) + ((<= ret 1)))))) + (defun tramp-adb-sh-fix-ls-output (&optional sort-by-time) "Insert dummy 0 in empty size columns. Android's \"ls\" command doesn't insert size column for directories: @@ -446,22 +455,17 @@ Emacs dired can't find files." filename (with-parsed-tramp-file-name (expand-file-name directory) nil (with-tramp-file-property v localname "file-name-all-completions" - (unless (tramp-adb-send-command-and-check - v (format "(%s -a %s; echo tramp_exit_status $?) | cat" - (tramp-adb-get-ls-command v) - (tramp-shell-quote-argument localname)) - nil t) - (erase-buffer)) - (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) - (mapcar - (lambda (l) - (and (not (string-match-p (rx bol (* blank) eol) l)) l)) - (split-string (buffer-string) "\n" 'omit))))))))) + (when (tramp-adb-do-ls v "-a" 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) + (mapcar + (lambda (l) + (and (not (string-match-p (rx bol (* blank) eol) l)) l)) + (split-string (buffer-string) "\n" 'omit)))))))))) (defun tramp-adb-handle-file-local-copy (filename) "Like `file-local-copy' for Tramp files." @@ -878,8 +882,8 @@ will be used." ;; is deleted. The temporary file will exist ;; until the process is deleted. (when (bufferp stderr) + (tramp-taint-remote-process-buffer stderr) (ignore-errors - (tramp-taint-remote-process-buffer stderr) (with-current-buffer stderr (insert-file-contents-literally remote-tmpstderr 'visit))) @@ -1223,11 +1227,10 @@ connection if a previous connection has died for some reason." 'tramp-adb-connection-local-default-ps-profile tramp-adb-connection-local-default-ps-variables) -(with-eval-after-load 'shell - (connection-local-set-profiles - `(:application tramp :protocol ,tramp-adb-method) - 'tramp-adb-connection-local-default-shell-profile - 'tramp-adb-connection-local-default-ps-profile)) +(connection-local-set-profiles + `(:application tramp :protocol ,tramp-adb-method) + 'tramp-adb-connection-local-default-shell-profile + 'tramp-adb-connection-local-default-ps-profile) ;; `shell-mode' tries to open remote files like "/adb::~/.history". ;; This fails, because the tilde cannot be expanded. Tell diff --git a/lisp/net/tramp-androidsu.el b/lisp/net/tramp-androidsu.el index 6cc3f14381d..f15c5587651 100644 --- a/lisp/net/tramp-androidsu.el +++ b/lisp/net/tramp-androidsu.el @@ -1,6 +1,6 @@ ;;; tramp-androidsu.el --- Tramp method for Android superuser shells -*- lexical-binding:t -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author: Po Lu ;; Keywords: comm, processes @@ -529,13 +529,9 @@ arguments to pass to the OPERATION." (connection-local-set-profiles `(:application tramp :protocol ,tramp-androidsu-method) - 'tramp-androidsu-connection-local-default-profile) - -(with-eval-after-load 'shell - (connection-local-set-profiles - `(:application tramp :protocol ,tramp-androidsu-method) - 'tramp-adb-connection-local-default-shell-profile - 'tramp-adb-connection-local-default-ps-profile)) + 'tramp-androidsu-connection-local-default-profile + 'tramp-adb-connection-local-default-shell-profile + 'tramp-adb-connection-local-default-ps-profile) (add-hook 'tramp-unload-hook (lambda () diff --git a/lisp/net/tramp-archive.el b/lisp/net/tramp-archive.el index a52b8be6e09..a4323156c2a 100644 --- a/lisp/net/tramp-archive.el +++ b/lisp/net/tramp-archive.el @@ -1,6 +1,6 @@ ;;; tramp-archive.el --- Tramp archive manager -*- lexical-binding:t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-cache.el b/lisp/net/tramp-cache.el index 36fc8c3953b..1fc3fb3aeae 100644 --- a/lisp/net/tramp-cache.el +++ b/lisp/net/tramp-cache.el @@ -1,6 +1,6 @@ ;;; tramp-cache.el --- file information caching for Tramp -*- lexical-binding:t -*- -;; Copyright (C) 2000, 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2005-2026 Free Software Foundation, Inc. ;; Author: Daniel Pittman ;; Michael Albinus @@ -202,11 +202,6 @@ Return DEFAULT if not set." (set var (1+ val)))) value))) -(add-hook 'tramp-cache-unload-hook - (lambda () - (dolist (var (all-completions "tramp-cache-get-count-" obarray)) - (unintern var obarray)))) - ;;;###tramp-autoload (defun tramp-set-file-property (key file property value) "Set the PROPERTY of FILE to VALUE, in the cache context of KEY. @@ -229,8 +224,9 @@ Return VALUE." (add-hook 'tramp-cache-unload-hook (lambda () - (dolist (var (all-completions "tramp-cache-set-count-" obarray)) - (unintern var obarray)))) + (dolist (var (apropos-internal + (rx bos "tramp-cache-" (| "get" "set") "-count-"))) + (unintern var nil)))) ;;;###tramp-autoload (defun tramp-file-property-p (key file property) diff --git a/lisp/net/tramp-cmds.el b/lisp/net/tramp-cmds.el index db3737500e6..95e1c5ecad8 100644 --- a/lisp/net/tramp-cmds.el +++ b/lisp/net/tramp-cmds.el @@ -1,6 +1,6 @@ ;;; tramp-cmds.el --- Interactive commands for Tramp -*- lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -78,8 +78,7 @@ SYNTAX can be one of the symbols `default' (default), ((not (assoc method tramp-methods)))) method)) ;; All method enabling functions. - (mapcar - #'intern (all-completions "tramp-enable-" obarray #'functionp)))))) + (apropos-internal (rx bos "tramp-enable-") #'functionp))))) (when-let* (((not (assoc method tramp-methods))) (fn (intern (format "tramp-enable-%s-method" method))) @@ -839,7 +838,7 @@ This is needed if there are compatibility problems." (and x (boundp x) (not (get x 'tramp-suppress-trace)) (cons x 'tramp-reporter-dump-variable))) (append - (mapcar #'intern (all-completions "tramp-" obarray #'boundp)) + (apropos-internal (rx bos "tramp-") #'boundp) ;; Non-Tramp variables of interest. '(shell-prompt-pattern backup-by-copying diff --git a/lisp/net/tramp-compat.el b/lisp/net/tramp-compat.el index 93190fec3a7..f975457d4df 100644 --- a/lisp/net/tramp-compat.el +++ b/lisp/net/tramp-compat.el @@ -1,6 +1,6 @@ ;;; tramp-compat.el --- Tramp compatibility functions -*- lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -229,8 +229,8 @@ value is the default binding of the variable." (cdr result) ,variable))))) -(dolist (elt (all-completions "tramp-compat-" obarray #'functionp)) - (function-put (intern elt) 'tramp-suppress-trace t)) +(dolist (elt (apropos-internal (rx bos "tramp-compat-") #'functionp)) + (function-put elt 'tramp-suppress-trace t)) (add-hook 'tramp-unload-hook (lambda () diff --git a/lisp/net/tramp-container.el b/lisp/net/tramp-container.el index 897a4dcc72c..91d9b239a70 100644 --- a/lisp/net/tramp-container.el +++ b/lisp/net/tramp-container.el @@ -1,6 +1,6 @@ ;;; tramp-container.el --- Tramp integration for Docker-like containers -*- lexical-binding: t; -*- -;; Copyright © 2022-2025 Free Software Foundation, Inc. +;; Copyright © 2022-2026 Free Software Foundation, Inc. ;; Author: Brian Cully ;; Maintainer: Michael Albinus diff --git a/lisp/net/tramp-crypt.el b/lisp/net/tramp-crypt.el index 0a5bdaf6ba5..565b9f0a5aa 100644 --- a/lisp/net/tramp-crypt.el +++ b/lisp/net/tramp-crypt.el @@ -1,6 +1,6 @@ ;;; tramp-crypt.el --- Tramp crypt utilities -*- lexical-binding:t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el index 4561518de17..7e140a0e372 100644 --- a/lisp/net/tramp-ftp.el +++ b/lisp/net/tramp-ftp.el @@ -1,6 +1,6 @@ ;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-fuse.el b/lisp/net/tramp-fuse.el index 07f4ef74581..b3e59063cd8 100644 --- a/lisp/net/tramp-fuse.el +++ b/lisp/net/tramp-fuse.el @@ -1,6 +1,6 @@ ;;; tramp-fuse.el --- Tramp access functions for FUSE mounts -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-gvfs.el b/lisp/net/tramp-gvfs.el index 687cc7e1bc6..64efce227d6 100644 --- a/lisp/net/tramp-gvfs.el +++ b/lisp/net/tramp-gvfs.el @@ -1,6 +1,6 @@ ;;; tramp-gvfs.el --- Tramp access functions for GVFS daemon -*- lexical-binding:t -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-integration.el b/lisp/net/tramp-integration.el index 7b34ce08bd2..83351952c6c 100644 --- a/lisp/net/tramp-integration.el +++ b/lisp/net/tramp-integration.el @@ -1,6 +1,6 @@ ;;; tramp-integration.el --- Tramp integration into other packages -*- lexical-binding:t -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -367,10 +367,6 @@ It's value must be a Tramp user option, indexed in the Tramp manual via 'tramp-connection-local-default-system-profile tramp-connection-local-default-system-variables) -(connection-local-set-profiles - '(:application tramp) - 'tramp-connection-local-default-system-profile) - (defconst tramp-connection-local-default-shell-variables '((shell-file-name . "/bin/sh") (shell-command-switch . "-c")) @@ -380,10 +376,10 @@ It's value must be a Tramp user option, indexed in the Tramp manual via 'tramp-connection-local-default-shell-profile tramp-connection-local-default-shell-variables) -(with-eval-after-load 'shell - (connection-local-set-profiles - '(:application tramp) - 'tramp-connection-local-default-shell-profile)) +(connection-local-set-profiles + '(:application tramp) + 'tramp-connection-local-default-system-profile + 'tramp-connection-local-default-shell-profile) ;; Tested with FreeBSD 12.2. (defconst tramp-bsd-process-attributes-ps-args @@ -586,12 +582,10 @@ See `tramp-process-attributes-ps-format'.") 'tramp-connection-local-darwin-ps-profile) ;; ... Add other system types here. ))) - (connection-local-set-profiles - `(:application tramp :machine ,(system-name)) - local-profile) - (connection-local-set-profiles - '(:application tramp :machine "localhost") - local-profile)) + (dolist (local-host tramp-local-host-names) + (connection-local-set-profiles + `(:application tramp :machine ,local-host) + local-profile))) ;; Set connection-local variables for buffers visiting a file. diff --git a/lisp/net/tramp-message.el b/lisp/net/tramp-message.el index eecddc978cc..7b405061ba8 100644 --- a/lisp/net/tramp-message.el +++ b/lisp/net/tramp-message.el @@ -1,6 +1,6 @@ ;;; tramp-message.el --- Tramp messages -*- lexical-binding:t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -240,8 +240,10 @@ ARGUMENTS to actually emit the message (if applicable)." (dolist (elt (append - (mapcar - #'intern (all-completions "tramp-" obarray #'functionp)) + (apropos-internal (rx bos "tramp-") #'functionp) + (apropos-internal (rx bos "tramp-") #'macrop) + (apropos-internal + (rx bos "with-" (? "parsed-") "tramp-") #'macrop) tramp-trace-functions)) (unless (get elt 'tramp-suppress-trace) (trace-function-background elt (tramp-trace-buffer-name vec))))) diff --git a/lisp/net/tramp-rclone.el b/lisp/net/tramp-rclone.el index e4008c197fb..6b0daeba2ac 100644 --- a/lisp/net/tramp-rclone.el +++ b/lisp/net/tramp-rclone.el @@ -1,6 +1,6 @@ ;;; tramp-rclone.el --- Tramp access functions to cloud storages -*- lexical-binding:t -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el index 0f709b69323..97b72ba00ad 100644 --- a/lisp/net/tramp-sh.el +++ b/lisp/net/tramp-sh.el @@ -1,6 +1,6 @@ ;;; tramp-sh.el --- Tramp access functions for (s)sh-like connections -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; (copyright statements below in code to be updated with the above notice) @@ -2098,66 +2098,67 @@ ID-FORMAT valid values are `string' and `integer'." "Like `copy-directory' for Tramp files." (tramp-skeleton-copy-directory dirname newname keep-date parents copy-contents - (let ((t1 (tramp-tramp-file-p dirname)) - (t2 (tramp-tramp-file-p newname)) - target) - (with-parsed-tramp-file-name (if t1 dirname newname) nil - (cond - ((and copy-directory-create-symlink - (setq target (file-symlink-p dirname)) - (tramp-equal-remote dirname newname)) - (make-symbolic-link - target - (if (directory-name-p newname) - (concat newname (file-name-nondirectory dirname)) newname) - t)) + (let* ((v1 (and (tramp-tramp-file-p dirname) + (tramp-dissect-file-name dirname))) + (v2 (and (tramp-tramp-file-p newname) + (tramp-dissect-file-name newname))) + (v (or v1 v2)) + target) + (cond + ((and copy-directory-create-symlink + (setq target (file-symlink-p dirname)) + (tramp-equal-remote dirname newname)) + (make-symbolic-link + target + (if (directory-name-p newname) + (concat newname (file-name-nondirectory dirname)) newname) + t)) - ;; Shortcut: if method, host, user are the same for both - ;; files, we invoke `cp' on the remote host directly. - ((and (not copy-contents) - (tramp-equal-remote dirname newname)) - (when (and (file-directory-p newname) - (not (directory-name-p newname))) - (tramp-error v 'file-already-exists newname)) - (setq dirname (directory-file-name (expand-file-name dirname)) - newname (directory-file-name (expand-file-name newname))) - (tramp-do-copy-or-rename-file-directly - 'copy dirname newname - 'ok-if-already-exists keep-date 'preserve-uid-gid)) + ;; Shortcut: if method, host, user are the same for both files, + ;; we invoke `cp' on the remote host directly. + ((and (not copy-contents) + (tramp-equal-remote dirname newname)) + (when (and (file-directory-p newname) + (not (directory-name-p newname))) + (tramp-error v 'file-already-exists newname)) + (setq dirname (directory-file-name (expand-file-name dirname)) + newname (directory-file-name (expand-file-name newname))) + (tramp-do-copy-or-rename-file-directly + 'copy dirname newname + 'ok-if-already-exists keep-date 'preserve-uid-gid)) - ;; scp or rsync DTRT. - ((and (not copy-contents) - (tramp-get-method-parameter v 'tramp-copy-recursive) - ;; When DIRNAME and NEWNAME are remote, they must have - ;; the same method. - (or (null t1) (null t2) - (string-equal - (tramp-file-name-method (tramp-dissect-file-name dirname)) - (tramp-file-name-method (tramp-dissect-file-name newname))))) - (when (and (file-directory-p newname) - (not (directory-name-p newname))) - (tramp-error v 'file-already-exists newname)) - (setq dirname (directory-file-name (expand-file-name dirname)) - newname (directory-file-name (expand-file-name newname))) - (when (and (file-directory-p newname) - (not (string-equal (file-name-nondirectory dirname) - (file-name-nondirectory newname)))) - (setq newname - (expand-file-name (file-name-nondirectory dirname) newname))) - (unless (file-directory-p (file-name-directory newname)) - (make-directory (file-name-directory newname) parents)) - (tramp-do-copy-or-rename-file-out-of-band - 'copy dirname newname 'ok-if-already-exists keep-date)) + ;; scp or rsync DTRT. + ((and (not copy-contents) + (tramp-get-method-parameter v 'tramp-copy-recursive) + ;; When DIRNAME and NEWNAME are remote, they must have + ;; the same method. None of them must be multi-hop. + (or (and (null v1) (tramp-method-out-of-band-p v2 0)) + (and (null v2) (tramp-method-out-of-band-p v1 0)) + (and v1 v2 + (tramp-method-out-of-band-p v1 0) + (tramp-method-out-of-band-p v2 0) + (string-equal + (tramp-file-name-method v1) + (tramp-file-name-method v2))))) + (when (and (file-directory-p newname) + (not (directory-name-p newname))) + (tramp-error v 'file-already-exists newname)) + (setq dirname (directory-file-name (expand-file-name dirname)) + newname (directory-file-name (expand-file-name newname))) + (when (and (file-directory-p newname) + (not (string-equal (file-name-nondirectory dirname) + (file-name-nondirectory newname)))) + (setq newname + (expand-file-name (file-name-nondirectory dirname) newname))) + (unless (file-directory-p (file-name-directory newname)) + (make-directory (file-name-directory newname) parents)) + (tramp-do-copy-or-rename-file-out-of-band + 'copy dirname newname 'ok-if-already-exists keep-date)) - ;; We must do it file-wise. - (t (tramp-run-real-handler - #'copy-directory - (list dirname newname keep-date parents copy-contents)))) - - ;; NEWNAME has wrong cached values. - (when t2 - (with-parsed-tramp-file-name (expand-file-name newname) nil - (tramp-flush-file-properties v localname))))))) + ;; We must do it file-wise. + (t (tramp-run-real-handler + #'copy-directory + (list dirname newname keep-date parents copy-contents))))))) (defun tramp-sh-handle-rename-file (filename newname &optional ok-if-already-exists) @@ -5230,7 +5231,7 @@ If there is a modified buffer, retry it after 60 seconds." (and-let* (((or (buffer-modified-p buf) (with-current-buffer buf ;; We don't know whether autorevert.el has - ;; been loaded alreaddy. + ;; been loaded already. (tramp-compat-funcall 'auto-revert-active-p)))) (bfn (buffer-file-name buf)) (v (tramp-ensure-dissected-file-name bfn)) @@ -5679,7 +5680,11 @@ raises an error." (and ;; It shall be an out-of-band method. (tramp-get-method-parameter vec 'tramp-copy-program) - ;; There must be a size, otherwise the file doesn't exist. + ;; There shouldn't be a multi-hop. + (or (not (tramp-multi-hop-p vec)) + (null (cdr (tramp-compute-multi-hops vec)))) + ;; There must be a SIZE, otherwise the file doesn't exist. A zero + ;; SIZE is used for directories. (numberp size) ;; Either the file size is large enough, or (in rare cases) there ;; does not exist a remote encoding. @@ -5823,9 +5828,10 @@ Nonexistent directories are removed from spec." (or (catch 'ls-found (dolist (cmd - ;; Prefer GNU ls on *BSD and macOS. + ;; Prefer GNU ls on *BSD and macOS. See also + ;; Bug#80075 for Linux. (if (tramp-check-remote-uname vec tramp-bsd-unames) - '("gls" "ls" "gnuls") '("ls" "gnuls" "gls"))) + '("gls" "ls" "gnuls") '("gnuls" "ls" "gls"))) (let ((dl (tramp-get-remote-path vec)) result) (while (and dl (setq result (tramp-find-executable vec cmd dl t t))) @@ -5966,11 +5972,14 @@ Nonexistent directories are removed from spec." "Determine remote `readlink' command." (with-tramp-connection-property vec "readlink" (tramp-message vec 5 "Finding a suitable `readlink' command") - (when-let* ((result (tramp-find-executable - vec "readlink" (tramp-get-remote-path vec))) - ((tramp-send-command-and-check - vec (format "%s --canonicalize-missing /" result)))) - result))) + ;; See Bug#80075. + (catch 'readlink-found + (dolist (cmd '("gnureadlink" "readlink")) + (when-let* ((result (tramp-find-executable + vec cmd (tramp-get-remote-path vec))) + ((tramp-send-command-and-check + vec (format "%s --canonicalize-missing /" result)))) + (throw 'readlink-found result)))))) (defun tramp-get-remote-touch (vec) "Determine remote `touch' command." diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index a82eaae886d..b87eee0fcce 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -1,6 +1,6 @@ ;;; tramp-smb.el --- Tramp access functions for SMB servers -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes @@ -577,12 +577,7 @@ arguments to pass to the OPERATION." ;; Set the mode. (unless keep-date - (set-file-modes newname (tramp-default-file-modes dirname))) - - ;; When newname did exist, we have wrong cached values. - (when t2 - (with-parsed-tramp-file-name newname nil - (tramp-flush-file-properties v localname)))) + (set-file-modes newname (tramp-default-file-modes dirname)))) ;; We must do it file-wise. (t @@ -2074,7 +2069,7 @@ If ARGUMENT is non-nil, use it as argument for (let* (coding-system-for-read (process-connection-type tramp-process-connection-type) - ;; There might be some unfortune values of + ;; There might be some unfortunate values of ;; `tramp-smb-connection-local-default-system-variables'. ;(path-separator (default-value 'path-separator)) ;(null-device (default-value 'null-device)) @@ -2235,10 +2230,6 @@ SHARE will be passed to the call of `tramp-smb-get-localname'." 'tramp-smb-connection-local-default-system-profile tramp-smb-connection-local-default-system-variables) -(connection-local-set-profiles - `(:application tramp :protocol ,tramp-smb-method) - 'tramp-smb-connection-local-default-system-profile) - ;; (defconst tramp-smb-connection-local-bash-variables ;; '((explicit-shell-file-name . "bash") ;; (explicit-bash-args . ("--norc" "--noediting" "-i")) @@ -2262,12 +2253,6 @@ SHARE will be passed to the call of `tramp-smb-get-localname'." 'tramp-smb-connection-local-powershell-profile tramp-smb-connection-local-powershell-variables) -(defun tramp-smb-shell-prompt () - "Set `comint-prompt-regexp' to a proper value." - ;; Used for remote `shell-mode' buffers. - (when (tramp-smb-file-name-p default-directory) - (setq-local comint-prompt-regexp tramp-smb-prompt))) - ;; (defconst tramp-smb-connection-local-cmd-variables ;; '((explicit-shell-file-name . "cmd") ;; (explicit-cmd-args . ("/Q")) @@ -2279,10 +2264,18 @@ SHARE will be passed to the call of `tramp-smb-get-localname'." ;; 'tramp-smb-connection-local-cmd-profile ;; tramp-smb-connection-local-cmd-variables) +(connection-local-set-profiles + `(:application tramp :protocol ,tramp-smb-method) + 'tramp-smb-connection-local-default-system-profile + 'tramp-smb-connection-local-powershell-profile) + +(defun tramp-smb-shell-prompt () + "Set `comint-prompt-regexp' to a proper value." + ;; Used for remote `shell-mode' buffers. + (when (tramp-smb-file-name-p default-directory) + (setq-local comint-prompt-regexp tramp-smb-prompt))) + (with-eval-after-load 'shell - (connection-local-set-profiles - `(:application tramp :protocol ,tramp-smb-method) - 'tramp-smb-connection-local-powershell-profile) (add-hook 'shell-mode-hook #'tramp-smb-shell-prompt) (add-hook 'tramp-smb-unload-hook diff --git a/lisp/net/tramp-sshfs.el b/lisp/net/tramp-sshfs.el index 6e59a877e16..338d128cc4e 100644 --- a/lisp/net/tramp-sshfs.el +++ b/lisp/net/tramp-sshfs.el @@ -1,6 +1,6 @@ ;;; tramp-sshfs.el --- Tramp access functions via sshfs -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el index 279b7e610ba..d3bb8b8478e 100644 --- a/lisp/net/tramp-sudoedit.el +++ b/lisp/net/tramp-sudoedit.el @@ -1,6 +1,6 @@ ;;; tramp-sudoedit.el --- Functions for accessing under root permissions -*- lexical-binding:t -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-uu.el b/lisp/net/tramp-uu.el index ee6cad173e2..952445bf7b3 100644 --- a/lisp/net/tramp-uu.el +++ b/lisp/net/tramp-uu.el @@ -1,6 +1,6 @@ ;;; tramp-uu.el --- uuencode in Lisp -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Kai Großjohann ;; Maintainer: Michael Albinus diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 1c035f0ef27..f57b572532a 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1,6 +1,6 @@ ;;; tramp.el --- Transparent Remote Access, Multiple Protocol -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Kai Großjohann ;; Michael Albinus @@ -296,9 +296,8 @@ pair of the form (KEY VALUE). The following KEYs are defined: - \"%a\" adds the pseudo-terminal allocation argument \"-t\" in asynchronous processes, if the connection type is not `pipe'. - The existence of `tramp-login-args', combined with the - absence of `tramp-copy-args', is an indication that the - method is capable of multi-hops. + The existence of `tramp-login-args' is an indication that the method + is capable of multi-hops. * `tramp-async-args' When an asynchronous process is started, we know already that @@ -584,19 +583,21 @@ host runs a restricted shell, it shall be added to this list, too." :type '(repeat (regexp :tag "Host regexp")) :link '(info-link :tag "Tramp manual" "(tramp) Multi-hops")) +;;;###tramp-autoload +(defvar tramp-local-host-names + (list tramp-system-name "localhost" "127.0.0.1" "::1" + ;; Fedora. + "localhost4" "localhost6" + ;; Ubuntu. + "ip6-localhost" "ip6-loopback" + ;; OpenSUSE. + "ipv6-localhost" "ipv6-loopback") + "List of host names which are regarded as local host.") + ;;;###tramp-autoload (defcustom tramp-local-host-regexp - (rx bos - (| (literal tramp-system-name) - (| "localhost" "127.0.0.1" "::1" - ;; Fedora. - "localhost4" "localhost6" - ;; Ubuntu. - "ip6-localhost" "ip6-loopback" - ;; OpenSUSE. - "ipv6-localhost" "ipv6-loopback")) - eos) - "Host names which are regarded as local host. + (rx-to-string `(: bos (| . ,tramp-local-host-names) eos)) + "Regexp of host names which are regarded as local host. If the local host runs a chrooted environment, set this to nil." :version "30.1" :type '(choice (const :tag "Chrooted environment" nil) @@ -785,7 +786,7 @@ The regexp should match at end of buffer." "Place your finger on the reader again" "Swipe your finger again" "Swipe was too short, try again" - "Your finger was not centred, try swiping your finger again" + "Your finger was not centered, try swiping your finger again" "Remove your finger, and try swiping your finger again") (* nonl) (* (any "\r\n"))) "Regexp matching fingerprint prompts. @@ -2137,7 +2138,7 @@ of `current-buffer'." "Execute BODY and return the result. In case of an error, raise a `file-missing' error if FILENAME does not exist, otherwise propagate the error." - (declare (indent 2) (debug (tramp-file-name-p form &rest body))) + (declare (indent 2) (debug t)) (let ((err (make-symbol "err"))) `(condition-case ,err (let (signal-hook-function) ,@body) @@ -2176,7 +2177,7 @@ Remaining args are Lisp expressions to be evaluated (inside an implicit If VAR is nil, then we bind `v' to the structure and `method', `user', `domain', `host', `port', `localname', `hop' to the components." - (declare (indent 2) (debug (form symbolp &rest body))) + (declare (indent 2) (debug t)) (let ((bindings (mapcar (lambda (elem) @@ -2545,7 +2546,7 @@ Must be handled by the callers." res))) (defun tramp-add-external-operation (operation function backend) - "Add FUNTION to Tramp BACKEND as handler for OPERATION. + "Add FUNCTION to Tramp BACKEND as handler for OPERATION. OPERATION must not be one of the magic operations listed in Info node `(elisp) Magic File Names'. FUNCTION must have the same argument list as OPERATION. BACKEND, a symbol, must be one of the Tramp backend @@ -3044,14 +3045,7 @@ BODY is the backend specific code." tramp--last-hop-directory (tramp-make-tramp-file-name (tramp-dissect-hop-name hop)))) - (let (;; When `tramp-syntax' is `simplified', we need a default method. - (tramp-default-method - (and (string-empty-p tramp-postfix-method-format) - tramp-default-method)) - (tramp-default-method-alist - (and (string-empty-p tramp-postfix-method-format) - tramp-default-method-alist)) - tramp-default-user tramp-default-user-alist + (let (tramp-default-user tramp-default-user-alist tramp-default-host tramp-default-host-alist) ;; Possible completion structures. @@ -3592,7 +3586,7 @@ User is always nil." ;;; Skeleton macros for file name handler functions. (defmacro tramp-skeleton-copy-directory - (directory _newname &optional _keep-date _parents _copy-contents &rest body) + (directory newname &optional _keep-date _parents _copy-contents &rest body) "Skeleton for `tramp-*-handle-copy-directory'. BODY is the backend specific code." (declare (indent 5) (debug t)) @@ -3603,7 +3597,12 @@ BODY is the backend specific code." (unless (file-exists-p ,directory) (tramp-error (tramp-dissect-file-name ,directory) 'file-missing ,directory)) - ,@body)) + ,@body + + ;; NEWNAME has wrong cached values. + (when (tramp-tramp-file-p ,newname) + (with-parsed-tramp-file-name (expand-file-name ,newname) nil + (tramp-flush-file-properties v localname))))) (defmacro tramp-skeleton-delete-directory (directory recursive trash &rest body) "Skeleton for `tramp-*-handle-delete-directory'. @@ -3823,8 +3822,8 @@ BODY is the backend specific code." (defmacro tramp-skeleton-make-process (args null-command stderr-file &rest body) "Skeleton for `tramp-*-handle-make-process'. -NULL-COMMAND indicates a possible empty command. STDERR-FILE means, -that a stederr file is supported. BODY is the backend specific code." +NULL-COMMAND indicates a possible empty command. STDERR-FILE means +that a stderr file is supported. BODY is the backend specific code." (declare (indent 3) (debug t)) `(when ,args (with-parsed-tramp-file-name (expand-file-name default-directory) nil @@ -5155,7 +5154,7 @@ Do not set it manually, it is used buffer-local in `tramp-get-lock-pid'.") "Whether the method of VEC is capable of multi-hops." (let ((tramp-verbose 0)) (and (tramp-sh-file-name-handler-p vec) - (not (tramp-get-method-parameter vec 'tramp-copy-program))))) + (tramp-get-method-parameter vec 'tramp-login-args)))) (defun tramp-add-hops (vec) "Add ad-hoc proxy definitions to `tramp-default-proxies-alist'." diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 5a57290d2aa..b900ab377aa 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -1,13 +1,13 @@ ;;; trampver.el --- Transparent Remote Access, Multiple Protocol -*- lexical-binding:t -*- ;;; lisp/trampver.el. Generated from trampver.el.in by configure. -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Kai Großjohann ;; Maintainer: Michael Albinus ;; Keywords: comm, processes ;; Package: tramp -;; Version: 2.8.1-pre +;; Version: 2.8.2-pre ;; Package-Requires: ((emacs "28.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.8.1-pre" +(defconst tramp-version "2.8.2-pre" "This version of Tramp.") ;;;###tramp-autoload @@ -76,7 +76,7 @@ ;; Check for Emacs version. (let ((x (if (not (string-version-lessp emacs-version "28.1")) "ok" - (format "Tramp 2.8.1-pre is not fit for %s" + (format "Tramp 2.8.2-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/net/webjump.el b/lisp/net/webjump.el index 746688765a3..709f58b88a5 100644 --- a/lisp/net/webjump.el +++ b/lisp/net/webjump.el @@ -1,6 +1,6 @@ ;;; webjump.el --- programmable Web hotlist -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Neil W. Van Dyke ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/net/zeroconf.el b/lisp/net/zeroconf.el index 0734e9b94fb..cc483e89799 100644 --- a/lisp/net/zeroconf.el +++ b/lisp/net/zeroconf.el @@ -1,6 +1,6 @@ ;;; zeroconf.el --- Service browser using Avahi. -*- lexical-binding:t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, hardware diff --git a/lisp/newcomment.el b/lisp/newcomment.el index 9593d464cc7..1f8a38b586e 100644 --- a/lisp/newcomment.el +++ b/lisp/newcomment.el @@ -1,6 +1,6 @@ ;;; newcomment.el --- (un)comment regions of buffers -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: code extracted from Emacs-20's simple.el ;; Maintainer: Stefan Monnier diff --git a/lisp/notifications.el b/lisp/notifications.el index 2e8c1120f8a..4363e064ff8 100644 --- a/lisp/notifications.el +++ b/lisp/notifications.el @@ -1,6 +1,6 @@ ;;; notifications.el --- Client interface to desktop notifications. -*- lexical-binding: t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Julien Danjou ;; Keywords: comm desktop notifications diff --git a/lisp/novice.el b/lisp/novice.el index 1248156adb2..0148c5a1054 100644 --- a/lisp/novice.el +++ b/lisp/novice.el @@ -1,6 +1,6 @@ ;;; novice.el --- handling of disabled commands ("novice mode") for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985-1987, 1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/nxml/nxml-enc.el b/lisp/nxml/nxml-enc.el index 28e81e0c2d2..69545ce91c9 100644 --- a/lisp/nxml/nxml-enc.el +++ b/lisp/nxml/nxml-enc.el @@ -1,6 +1,6 @@ ;;; nxml-enc.el --- XML encoding auto-detection -*- lexical-binding:t -*- -;; Copyright (C) 2003, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2007-2026 Free Software Foundation, Inc. ;; Author: James Clark ;; Keywords: text, hypermedia, languages, XML diff --git a/lisp/nxml/nxml-maint.el b/lisp/nxml/nxml-maint.el index 7840a34ae15..ea3219e8f30 100644 --- a/lisp/nxml/nxml-maint.el +++ b/lisp/nxml/nxml-maint.el @@ -1,6 +1,6 @@ ;;; nxml-maint.el --- commands for maintainers of nxml-*.el -*- lexical-binding:t -*- -;; Copyright (C) 2003, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2007-2026 Free Software Foundation, Inc. ;; Author: James Clark ;; Keywords: text, hypermedia, languages, XML diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index b1666156ecc..64e6219e115 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -1,6 +1,6 @@ ;;; nxml-mode.el --- a new XML mode -*- lexical-binding:t -*- -;; Copyright (C) 2003-2004, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2004, 2007-2026 Free Software Foundation, Inc. ;; Author: James Clark ;; Keywords: text, hypermedia, languages, XML @@ -1451,8 +1451,7 @@ This expects the xmltok-* variables to be set up as by `xmltok-forward'." (nxml-compute-indent-in-start-tag pos)) ((eq xmltok-type 'comment) (nxml-compute-indent-in-delimited-token pos "")) - ((eq xmltok-type 'cdata-section) - (nxml-compute-indent-in-delimited-token pos "")) + ((eq xmltok-type 'cdata-section) 'noindent) ((eq xmltok-type 'processing-instruction) (nxml-compute-indent-in-delimited-token pos "")) (t @@ -1521,9 +1520,7 @@ OPEN-DELIM and CLOSE-DELIM are strings giving the opening and closing delimiters. POS is the position of the first non-whitespace character of the line. This expects the xmltok-* variables to be set up as by `xmltok-forward'." - (cond ((string= open-delim " ;; Created: 1998-09-04 diff --git a/lisp/obsolete/autoload.el b/lisp/obsolete/autoload.el index e4ebbcb01a7..0ce1b98b8dd 100644 --- a/lisp/obsolete/autoload.el +++ b/lisp/obsolete/autoload.el @@ -1,6 +1,6 @@ ;;; autoload.el --- maintain autoloads in loaddefs.el -*- lexical-binding: t -*- -;; Copyright (C) 1991-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Roland McGrath ;; Keywords: maint diff --git a/lisp/obsolete/bruce.el b/lisp/obsolete/bruce.el index 552a22af487..9518df6c033 100644 --- a/lisp/obsolete/bruce.el +++ b/lisp/obsolete/bruce.el @@ -1,7 +1,7 @@ ;;; bruce.el --- bruce phrase utility for overloading the Communications -*- lexical-binding: t; -*- ;;; Decency Act snoops, if any. -;; Copyright (C) 1988, 1993, 1997, 2001-2025 Free Software Foundation, +;; Copyright (C) 1988, 1993, 1997, 2001-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/cdl.el b/lisp/obsolete/cdl.el index d51ab9f6813..907ed6798f6 100644 --- a/lisp/obsolete/cdl.el +++ b/lisp/obsolete/cdl.el @@ -1,6 +1,6 @@ ;;; cdl.el --- Common Data Language (CDL) utility functions for GNU Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Ata Etemadi ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/cl-compat.el b/lisp/obsolete/cl-compat.el index 5ab546ec93c..5b46e1ff187 100644 --- a/lisp/obsolete/cl-compat.el +++ b/lisp/obsolete/cl-compat.el @@ -1,6 +1,6 @@ ;;; cl-compat.el --- Common Lisp extensions for GNU Emacs Lisp (compatibility) -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Gillespie ;; Version: 2.02 diff --git a/lisp/obsolete/cl.el b/lisp/obsolete/cl.el index 8a7e54a981c..3c084511ad9 100644 --- a/lisp/obsolete/cl.el +++ b/lisp/obsolete/cl.el @@ -1,6 +1,6 @@ ;;; cl.el --- Compatibility aliases for the old CL library. -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Deprecated-since: 27.1 diff --git a/lisp/obsolete/crisp.el b/lisp/obsolete/crisp.el index d0eefd3631e..dd1b6648bab 100644 --- a/lisp/obsolete/crisp.el +++ b/lisp/obsolete/crisp.el @@ -1,6 +1,6 @@ ;;; crisp.el --- CRiSP/Brief Emacs emulator -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Gary D. Foster ;; Keywords: emulations brief crisp diff --git a/lisp/obsolete/echistory.el b/lisp/obsolete/echistory.el index 5b530781188..9dddb2fb8b4 100644 --- a/lisp/obsolete/echistory.el +++ b/lisp/obsolete/echistory.el @@ -1,6 +1,6 @@ ;;; echistory.el --- Electric Command History Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Author: K. Shane Hartman ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/eieio-compat.el b/lisp/obsolete/eieio-compat.el index 75820fd8384..b769723fd39 100644 --- a/lisp/obsolete/eieio-compat.el +++ b/lisp/obsolete/eieio-compat.el @@ -1,6 +1,6 @@ ;;; eieio-compat.el --- Compatibility with Older EIEIO versions -*- lexical-binding:t -*- -;; Copyright (C) 1995-1996, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1996, 1998-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: OO, lisp diff --git a/lisp/obsolete/elint.el b/lisp/obsolete/elint.el index f3d52ba0faf..10a316746a9 100644 --- a/lisp/obsolete/elint.el +++ b/lisp/obsolete/elint.el @@ -1,6 +1,6 @@ ;;; elint.el --- Lint Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Peter Liljenberg ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/eudcb-ph.el b/lisp/obsolete/eudcb-ph.el index edb949a6253..53079d554d3 100644 --- a/lisp/obsolete/eudcb-ph.el +++ b/lisp/obsolete/eudcb-ph.el @@ -1,6 +1,6 @@ ;;; eudcb-ph.el --- Emacs Unified Directory Client - CCSO PH/QI Backend -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Oscar Figueiredo ;; Pavel Janík diff --git a/lisp/obsolete/gs.el b/lisp/obsolete/gs.el index 6751580d90a..8f7e2c6ff6c 100644 --- a/lisp/obsolete/gs.el +++ b/lisp/obsolete/gs.el @@ -1,6 +1,6 @@ ;;; gs.el --- interface to Ghostscript -*- lexical-binding: t; -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/obsolete/gulp.el b/lisp/obsolete/gulp.el index 20cfb2b4245..a8d86bda076 100644 --- a/lisp/obsolete/gulp.el +++ b/lisp/obsolete/gulp.el @@ -1,6 +1,6 @@ ;;; gulp.el --- ask for updates for Lisp packages -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Sam Shteingold ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/hashcash.el b/lisp/obsolete/hashcash.el index cd111b8d8c5..b157fe4f6b5 100644 --- a/lisp/obsolete/hashcash.el +++ b/lisp/obsolete/hashcash.el @@ -1,6 +1,6 @@ ;;; hashcash.el --- Add hashcash payments to email -*- lexical-binding:t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Written by: Paul Foley (1997-2002) ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/html2text.el b/lisp/obsolete/html2text.el index 585bff605fa..6e458995802 100644 --- a/lisp/obsolete/html2text.el +++ b/lisp/obsolete/html2text.el @@ -1,6 +1,6 @@ ;;; html2text.el --- a simple html to plain text converter -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Joakim Hove ;; Obsolete-since: 26.1 diff --git a/lisp/obsolete/idlw-complete-structtag.el b/lisp/obsolete/idlw-complete-structtag.el index 6beea9eef04..832440c9d93 100644 --- a/lisp/obsolete/idlw-complete-structtag.el +++ b/lisp/obsolete/idlw-complete-structtag.el @@ -1,6 +1,6 @@ ;;; idlw-complete-structtag.el --- Completion of structure tags. -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/idlw-help.el b/lisp/obsolete/idlw-help.el index 1fb71a480da..be0aab5ca0b 100644 --- a/lisp/obsolete/idlw-help.el +++ b/lisp/obsolete/idlw-help.el @@ -1,6 +1,6 @@ ;;; idlw-help.el --- HTML Help code for IDLWAVE -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; ;; Authors: JD Smith ;; Carsten Dominik diff --git a/lisp/obsolete/idlw-shell.el b/lisp/obsolete/idlw-shell.el index dc10e3ea9b5..925b375a694 100644 --- a/lisp/obsolete/idlw-shell.el +++ b/lisp/obsolete/idlw-shell.el @@ -1,6 +1,6 @@ ;;; idlw-shell.el --- run IDL as an inferior process of Emacs. -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Authors: JD Smith ;; Carsten Dominik diff --git a/lisp/obsolete/idlw-toolbar.el b/lisp/obsolete/idlw-toolbar.el index fe8560ab344..f29a6d8125f 100644 --- a/lisp/obsolete/idlw-toolbar.el +++ b/lisp/obsolete/idlw-toolbar.el @@ -1,6 +1,6 @@ ;;; idlw-toolbar.el --- a debugging toolbar for IDLWAVE -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/idlwave.el b/lisp/obsolete/idlwave.el index 8827058096a..e08b4541255 100644 --- a/lisp/obsolete/idlwave.el +++ b/lisp/obsolete/idlwave.el @@ -1,6 +1,6 @@ ;;; idlwave.el --- IDL editing mode for GNU Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Authors: JD Smith ;; Carsten Dominik diff --git a/lisp/obsolete/inversion.el b/lisp/obsolete/inversion.el index d78f7f6de0f..18c0e39a069 100644 --- a/lisp/obsolete/inversion.el +++ b/lisp/obsolete/inversion.el @@ -1,6 +1,6 @@ ;;; inversion.el --- When you need something in version XX.XX -*- lexical-binding: t; -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Version: 1.3 diff --git a/lisp/obsolete/iswitchb.el b/lisp/obsolete/iswitchb.el index 840af505230..18cb284d036 100644 --- a/lisp/obsolete/iswitchb.el +++ b/lisp/obsolete/iswitchb.el @@ -1,6 +1,6 @@ ;;; iswitchb.el --- switch between buffers using substrings -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 2000-2026 Free Software Foundation, Inc. ;; Author: Stephen Eglen ;; Keywords: completion convenience diff --git a/lisp/obsolete/kermit.el b/lisp/obsolete/kermit.el index 0413c57b9aa..5c2a3f32891 100644 --- a/lisp/obsolete/kermit.el +++ b/lisp/obsolete/kermit.el @@ -1,6 +1,6 @@ ;;; kermit.el --- additions to shell mode for use with kermit -*- lexical-binding: t -*- -;; Copyright (C) 1988, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988, 2001-2026 Free Software Foundation, Inc. ;; Author: Jeff Norden ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/landmark.el b/lisp/obsolete/landmark.el index b94f0dc424e..0159d6e1a8a 100644 --- a/lisp/obsolete/landmark.el +++ b/lisp/obsolete/landmark.el @@ -1,6 +1,6 @@ ;;; landmark.el --- Neural-network robot that learns landmarks -*- lexical-binding:t -*- -;; Copyright (C) 1996-1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 2000-2026 Free Software Foundation, Inc. ;; Author: Terrence Brannon ;; Created: December 16, 1996 - first release to usenet diff --git a/lisp/obsolete/linum.el b/lisp/obsolete/linum.el index 75cb1199927..5a0a67ebff0 100644 --- a/lisp/obsolete/linum.el +++ b/lisp/obsolete/linum.el @@ -1,6 +1,6 @@ ;;; linum.el --- display line numbers in the left margin -*- lexical-binding: t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Markus Triska ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/longlines.el b/lisp/obsolete/longlines.el index 0b05fe3e0a8..d58449e055a 100644 --- a/lisp/obsolete/longlines.el +++ b/lisp/obsolete/longlines.el @@ -1,6 +1,6 @@ ;;; longlines.el --- automatically wrap long lines -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2001, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2001, 2004-2026 Free Software Foundation, Inc. ;; Authors: Kai Grossjohann ;; Alex Schroeder diff --git a/lisp/obsolete/makesum.el b/lisp/obsolete/makesum.el index 4f9ca95453c..461dc33b3dc 100644 --- a/lisp/obsolete/makesum.el +++ b/lisp/obsolete/makesum.el @@ -1,6 +1,6 @@ ;;; makesum.el --- generate key binding summary for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: help diff --git a/lisp/obsolete/mantemp.el b/lisp/obsolete/mantemp.el index c085f9d8589..2689368f2ca 100644 --- a/lisp/obsolete/mantemp.el +++ b/lisp/obsolete/mantemp.el @@ -1,6 +1,6 @@ ;;; mantemp.el --- create manual template instantiations from g++ 2.7.2 output -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Tom Houlder ;; Created: 10 Dec 1996 diff --git a/lisp/obsolete/messcompat.el b/lisp/obsolete/messcompat.el index 13fd57d470a..699e8de5016 100644 --- a/lisp/obsolete/messcompat.el +++ b/lisp/obsolete/messcompat.el @@ -1,6 +1,6 @@ ;;; messcompat.el --- making message mode compatible with mail mode -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news diff --git a/lisp/obsolete/metamail.el b/lisp/obsolete/metamail.el index d5918621c13..7eee1b399f4 100644 --- a/lisp/obsolete/metamail.el +++ b/lisp/obsolete/metamail.el @@ -1,6 +1,6 @@ ;;; metamail.el --- Metamail interface for GNU Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1993, 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Masanobu UMEDA ;; Keywords: mail, news, mime, multimedia diff --git a/lisp/obsolete/mh-compat.el b/lisp/obsolete/mh-compat.el index 816788354c7..7332e895f2c 100644 --- a/lisp/obsolete/mh-compat.el +++ b/lisp/obsolete/mh-compat.el @@ -1,6 +1,6 @@ ;;; mh-compat.el --- make MH-E compatible with various versions of Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Keywords: mail diff --git a/lisp/obsolete/netrc.el b/lisp/obsolete/netrc.el index 94115f55754..347687be03b 100644 --- a/lisp/obsolete/netrc.el +++ b/lisp/obsolete/netrc.el @@ -1,6 +1,6 @@ ;;; netrc.el --- .netrc parsing functionality -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news diff --git a/lisp/obsolete/nnir.el b/lisp/obsolete/nnir.el index 4397f8ea593..c006b3b2a1c 100644 --- a/lisp/obsolete/nnir.el +++ b/lisp/obsolete/nnir.el @@ -1,6 +1,6 @@ ;;; nnir.el --- Search mail with various search engines -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Kai Großjohann ;; Swish-e and Swish++ backends by: diff --git a/lisp/obsolete/package-x.el b/lisp/obsolete/package-x.el index ff7d1022e4d..9de09fcf0f5 100644 --- a/lisp/obsolete/package-x.el +++ b/lisp/obsolete/package-x.el @@ -1,6 +1,6 @@ ;;; package-x.el --- Package extras -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Tom Tromey ;; Created: 10 Mar 2007 diff --git a/lisp/obsolete/pgg-def.el b/lisp/obsolete/pgg-def.el index 9a42577a9ef..c11a6ad178e 100644 --- a/lisp/obsolete/pgg-def.el +++ b/lisp/obsolete/pgg-def.el @@ -1,6 +1,6 @@ ;;; pgg-def.el --- functions/macros for defining PGG functions -*- lexical-binding: t; -*- -;; Copyright (C) 1999, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Created: 1999/11/02 diff --git a/lisp/obsolete/pgg-gpg.el b/lisp/obsolete/pgg-gpg.el index 2ca5ac63b15..3a6a2279747 100644 --- a/lisp/obsolete/pgg-gpg.el +++ b/lisp/obsolete/pgg-gpg.el @@ -1,6 +1,6 @@ ;;; pgg-gpg.el --- GnuPG support for PGG. -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Symmetric encryption and gpg-agent support added by: diff --git a/lisp/obsolete/pgg-parse.el b/lisp/obsolete/pgg-parse.el index a37f30bfa84..df32e10a150 100644 --- a/lisp/obsolete/pgg-parse.el +++ b/lisp/obsolete/pgg-parse.el @@ -1,6 +1,6 @@ ;;; pgg-parse.el --- OpenPGP packet parsing -*- lexical-binding: t; -*- -;; Copyright (C) 1999, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Created: 1999/10/28 diff --git a/lisp/obsolete/pgg-pgp.el b/lisp/obsolete/pgg-pgp.el index 057cee0caf8..ff8eb6eaeb7 100644 --- a/lisp/obsolete/pgg-pgp.el +++ b/lisp/obsolete/pgg-pgp.el @@ -1,6 +1,6 @@ ;;; pgg-pgp.el --- PGP 2.* and 6.* support for PGG. -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Created: 1999/11/02 diff --git a/lisp/obsolete/pgg-pgp5.el b/lisp/obsolete/pgg-pgp5.el index f2e1baa5dc5..cf131af56c7 100644 --- a/lisp/obsolete/pgg-pgp5.el +++ b/lisp/obsolete/pgg-pgp5.el @@ -1,6 +1,6 @@ ;;; pgg-pgp5.el --- PGP 5.* support for PGG. -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Created: 1999/11/02 diff --git a/lisp/obsolete/pgg.el b/lisp/obsolete/pgg.el index 703ae98cc11..e79c51972b6 100644 --- a/lisp/obsolete/pgg.el +++ b/lisp/obsolete/pgg.el @@ -1,6 +1,6 @@ ;;; pgg.el --- glue for the various PGP implementations. -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2000, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2002-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Symmetric encryption added by: Sascha Wilde diff --git a/lisp/obsolete/ps-def.el b/lisp/obsolete/ps-def.el index 6f008e83388..51f96455d8d 100644 --- a/lisp/obsolete/ps-def.el +++ b/lisp/obsolete/ps-def.el @@ -1,6 +1,6 @@ ;;; ps-def.el --- Emacs definitions for ps-print -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Kenichi Handa (multi-byte characters) diff --git a/lisp/obsolete/quickurl.el b/lisp/obsolete/quickurl.el index 5efa1c3c891..7b01cb1ec66 100644 --- a/lisp/obsolete/quickurl.el +++ b/lisp/obsolete/quickurl.el @@ -1,6 +1,6 @@ ;;; quickurl.el --- insert a URL based on text at point in buffer -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Dave Pearson ;; Created: 1999-05-28 diff --git a/lisp/obsolete/rfc2368.el b/lisp/obsolete/rfc2368.el index 42ae303f8eb..934aefbe764 100644 --- a/lisp/obsolete/rfc2368.el +++ b/lisp/obsolete/rfc2368.el @@ -1,6 +1,6 @@ ;;; rfc2368.el --- support for rfc2368 -*- lexical-binding:t -*- -;; Copyright (C) 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Sen Nagata ;; Keywords: mail diff --git a/lisp/obsolete/rlogin.el b/lisp/obsolete/rlogin.el index 5ec98716ce7..a2cb1177ead 100644 --- a/lisp/obsolete/rlogin.el +++ b/lisp/obsolete/rlogin.el @@ -1,6 +1,6 @@ ;;; rlogin.el --- remote login interface -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Noah Friedman ;; Keywords: unix, comm diff --git a/lisp/obsolete/sb-image.el b/lisp/obsolete/sb-image.el index ecaec13f278..8cc5cd3360c 100644 --- a/lisp/obsolete/sb-image.el +++ b/lisp/obsolete/sb-image.el @@ -1,6 +1,6 @@ ;;; sb-image.el --- Image management for speedbar -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2003, 2005-2019, 2021-2025 Free Software +;; Copyright (C) 1999-2003, 2005-2019, 2021-2026 Free Software ;; Foundation, Inc. ;; Author: Eric M. Ludlam diff --git a/lisp/obsolete/starttls.el b/lisp/obsolete/starttls.el index ca361bd33ba..ab57e8b8852 100644 --- a/lisp/obsolete/starttls.el +++ b/lisp/obsolete/starttls.el @@ -1,6 +1,6 @@ ;;; starttls.el --- STARTTLS functions -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Author: Simon Josefsson diff --git a/lisp/obsolete/thumbs.el b/lisp/obsolete/thumbs.el index ac8f9c5fad6..310d330aaa7 100644 --- a/lisp/obsolete/thumbs.el +++ b/lisp/obsolete/thumbs.el @@ -1,6 +1,6 @@ ;;; thumbs.el --- Thumbnails previewer for images files -*- lexical-binding: t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Jean-Philippe Theberge ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/obsolete/tls.el b/lisp/obsolete/tls.el index add884e4d26..b6a87d60eeb 100644 --- a/lisp/obsolete/tls.el +++ b/lisp/obsolete/tls.el @@ -1,6 +1,6 @@ ;;; tls.el --- TLS/SSL support via wrapper around GnuTLS -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2002-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: comm, tls, gnutls, ssl diff --git a/lisp/obsolete/tpu-edt.el b/lisp/obsolete/tpu-edt.el index f9edbd6fac3..a17fba0050a 100644 --- a/lisp/obsolete/tpu-edt.el +++ b/lisp/obsolete/tpu-edt.el @@ -1,6 +1,6 @@ ;;; tpu-edt.el --- Emacs emulating TPU emulating EDT -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 2000-2026 Free Software Foundation, Inc. ;; Author: Rob Riepel ;; Version: 4.5 diff --git a/lisp/obsolete/tpu-extras.el b/lisp/obsolete/tpu-extras.el index 41044da651e..e0a66891a1f 100644 --- a/lisp/obsolete/tpu-extras.el +++ b/lisp/obsolete/tpu-extras.el @@ -1,6 +1,6 @@ ;;; tpu-extras.el --- scroll margins and free cursor mode for TPU-edt -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 2000-2026 Free Software Foundation, Inc. ;; Author: Rob Riepel ;; Keywords: emulations diff --git a/lisp/obsolete/tpu-mapper.el b/lisp/obsolete/tpu-mapper.el index 14bdb569a5d..28828f85157 100644 --- a/lisp/obsolete/tpu-mapper.el +++ b/lisp/obsolete/tpu-mapper.el @@ -1,6 +1,6 @@ ;;; tpu-mapper.el --- create a TPU-edt X-windows keymap file -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Rob Riepel ;; Keywords: emulations diff --git a/lisp/obsolete/uce.el b/lisp/obsolete/uce.el index 8a262e61f52..f4015967c3a 100644 --- a/lisp/obsolete/uce.el +++ b/lisp/obsolete/uce.el @@ -1,6 +1,6 @@ ;;; uce.el --- facilitate reply to unsolicited commercial email -*- lexical-binding: t; -*- -;; Copyright (C) 1996, 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996, 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: stanislav shalunov ;; Created: 10 Dec 1996 diff --git a/lisp/obsolete/url-about.el b/lisp/obsolete/url-about.el index cf116727726..92ed461b886 100644 --- a/lisp/obsolete/url-about.el +++ b/lisp/obsolete/url-about.el @@ -1,6 +1,6 @@ ;;; url-about.el --- Show internal URLs -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia ;; Obsolete-since: 29.1 diff --git a/lisp/obsolete/url-dired.el b/lisp/obsolete/url-dired.el index 4befab667af..b8316bbf8da 100644 --- a/lisp/obsolete/url-dired.el +++ b/lisp/obsolete/url-dired.el @@ -1,6 +1,6 @@ ;;; url-dired.el --- URL Dired minor mode -*- lexical-binding: t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, files ;; Obsolete-since: 29.1 diff --git a/lisp/obsolete/url-ns.el b/lisp/obsolete/url-ns.el index 753d694a7a5..d3e969dfab3 100644 --- a/lisp/obsolete/url-ns.el +++ b/lisp/obsolete/url-ns.el @@ -1,6 +1,6 @@ ;;; url-ns.el --- Various netscape-ish functions for proxy definitions -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia ;; Obsolete-since: 27.1 diff --git a/lisp/obsolete/vc-arch.el b/lisp/obsolete/vc-arch.el index 3b28e307977..a50213f9e55 100644 --- a/lisp/obsolete/vc-arch.el +++ b/lisp/obsolete/vc-arch.el @@ -1,6 +1,6 @@ ;;; vc-arch.el --- VC backend for the Arch version-control system -*- lexical-binding: t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: Stefan Monnier diff --git a/lisp/obsolete/vc-dav.el b/lisp/obsolete/vc-dav.el index 29d111b7621..7936d583137 100644 --- a/lisp/obsolete/vc-dav.el +++ b/lisp/obsolete/vc-dav.el @@ -1,6 +1,6 @@ ;;; vc-dav.el --- vc.el support for WebDAV -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Bill Perry ;; Keywords: url, vc diff --git a/lisp/obsolete/vc-mtn.el b/lisp/obsolete/vc-mtn.el index 0200bf15092..c5446487f39 100644 --- a/lisp/obsolete/vc-mtn.el +++ b/lisp/obsolete/vc-mtn.el @@ -1,6 +1,6 @@ ;;; vc-mtn.el --- VC backend for Monotone -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: vc diff --git a/lisp/obsolete/vt-control.el b/lisp/obsolete/vt-control.el index d07a6054aad..54642219b51 100644 --- a/lisp/obsolete/vt-control.el +++ b/lisp/obsolete/vt-control.el @@ -1,6 +1,6 @@ ;;; vt-control.el --- Common VTxxx control functions -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Rob Riepel ;; Keywords: terminals diff --git a/lisp/obsolete/vt100-led.el b/lisp/obsolete/vt100-led.el index f743aecc2e4..26f876b21c3 100644 --- a/lisp/obsolete/vt100-led.el +++ b/lisp/obsolete/vt100-led.el @@ -1,6 +1,6 @@ ;;; vt100-led.el --- functions for LED control on VT-100 terminals & clones -*- lexical-binding:t -*- -;; Copyright (C) 1988, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988, 2001-2026 Free Software Foundation, Inc. ;; Author: Howard Gayle ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/org/ChangeLog.1 b/lisp/org/ChangeLog.1 index a2f9ff6e162..698b540022e 100644 --- a/lisp/org/ChangeLog.1 +++ b/lisp/org/ChangeLog.1 @@ -4002,7 +4002,7 @@ (org-agenda-prepare-buffers): Honor `org-agenda-ignore-drawer-properties'. - * org-clock.el (org-clock-goto): Recenter to thrd line + * org-clock.el (org-clock-goto): Recenter to third line * org-table.el (orgtbl-send-replace-tbl): Allow multiple spaces between keywords in RECEIVE ORGTBL lines. @@ -32832,7 +32832,7 @@ ;; add-log-time-zone-rule: t ;; End: - Copyright (C) 2008-2025 Free Software Foundation, Inc. + Copyright (C) 2008-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/org/ob-C.el b/lisp/org/ob-C.el index 8522cd156f8..59f5a0429a4 100644 --- a/lisp/org/ob-C.el +++ b/lisp/org/ob-C.el @@ -1,6 +1,6 @@ ;;; ob-C.el --- Babel Functions for C and Similar Languages -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Thierry Banel diff --git a/lisp/org/ob-R.el b/lisp/org/ob-R.el index 47ee08c2df1..0141b357d0a 100644 --- a/lisp/org/ob-R.el +++ b/lisp/org/ob-R.el @@ -1,6 +1,6 @@ ;;; ob-R.el --- Babel Functions for R -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-awk.el b/lisp/org/ob-awk.el index 1212e03badf..aba2f3fa620 100644 --- a/lisp/org/ob-awk.el +++ b/lisp/org/ob-awk.el @@ -1,6 +1,6 @@ ;;; ob-awk.el --- Babel Functions for Awk -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Tyler Smith diff --git a/lisp/org/ob-calc.el b/lisp/org/ob-calc.el index d696d0321da..de29f75ba46 100644 --- a/lisp/org/ob-calc.el +++ b/lisp/org/ob-calc.el @@ -1,6 +1,6 @@ ;;; ob-calc.el --- Babel Functions for Calc -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Tom Gillespie diff --git a/lisp/org/ob-clojure.el b/lisp/org/ob-clojure.el index 2339a2ddcb1..58fd4044763 100644 --- a/lisp/org/ob-clojure.el +++ b/lisp/org/ob-clojure.el @@ -1,6 +1,6 @@ ;;; ob-clojure.el --- Babel Functions for Clojure -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Joel Boehland, Eric Schulte, Oleh Krehel, Frederick Giasson ;; Maintainer: Daniel Kraus diff --git a/lisp/org/ob-comint.el b/lisp/org/ob-comint.el index 37663911428..daf2b5d54e7 100644 --- a/lisp/org/ob-comint.el +++ b/lisp/org/ob-comint.el @@ -1,6 +1,6 @@ ;;; ob-comint.el --- Babel Functions for Interaction with Comint Buffers -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research, comint diff --git a/lisp/org/ob-core.el b/lisp/org/ob-core.el index 7d5677da5da..d0809a6c3e8 100644 --- a/lisp/org/ob-core.el +++ b/lisp/org/ob-core.el @@ -1,6 +1,6 @@ ;;; ob-core.el --- Working with Code Blocks -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-css.el b/lisp/org/ob-css.el index d4baec2ef19..cf2b4efaa57 100644 --- a/lisp/org/ob-css.el +++ b/lisp/org/ob-css.el @@ -1,6 +1,6 @@ ;;; ob-css.el --- Babel Functions for CSS -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-ditaa.el b/lisp/org/ob-ditaa.el index 70e42704325..068cc1c6bbe 100644 --- a/lisp/org/ob-ditaa.el +++ b/lisp/org/ob-ditaa.el @@ -1,6 +1,6 @@ ;;; ob-ditaa.el --- Babel Functions for ditaa -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-dot.el b/lisp/org/ob-dot.el index da0183deb93..fc760ac5f7c 100644 --- a/lisp/org/ob-dot.el +++ b/lisp/org/ob-dot.el @@ -1,6 +1,6 @@ ;;; ob-dot.el --- Babel Functions for dot -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Justin Abrahms diff --git a/lisp/org/ob-emacs-lisp.el b/lisp/org/ob-emacs-lisp.el index 7a1bde15097..3d3fd43600e 100644 --- a/lisp/org/ob-emacs-lisp.el +++ b/lisp/org/ob-emacs-lisp.el @@ -1,6 +1,6 @@ ;;; ob-emacs-lisp.el --- Babel Functions for Emacs-lisp Code -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-eshell.el b/lisp/org/ob-eshell.el index d6b6faa6a1e..4540f57ef89 100644 --- a/lisp/org/ob-eshell.el +++ b/lisp/org/ob-eshell.el @@ -1,6 +1,6 @@ ;;; ob-eshell.el --- Babel Functions for Eshell -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: stardiviner ;; Maintainer: stardiviner diff --git a/lisp/org/ob-eval.el b/lisp/org/ob-eval.el index 63fdb36458e..c1bcdd709be 100644 --- a/lisp/org/ob-eval.el +++ b/lisp/org/ob-eval.el @@ -1,6 +1,6 @@ ;;; ob-eval.el --- Babel Functions for External Code Evaluation -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research, comint diff --git a/lisp/org/ob-exp.el b/lisp/org/ob-exp.el index ab99541ab94..985dab20b49 100644 --- a/lisp/org/ob-exp.el +++ b/lisp/org/ob-exp.el @@ -1,6 +1,6 @@ ;;; ob-exp.el --- Exportation of Babel Source Blocks -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-forth.el b/lisp/org/ob-forth.el index 6b03f1fe21d..bf28e6a3dbf 100644 --- a/lisp/org/ob-forth.el +++ b/lisp/org/ob-forth.el @@ -1,6 +1,6 @@ ;;; ob-forth.el --- Babel Functions for Forth -*- lexical-binding: t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research, forth diff --git a/lisp/org/ob-fortran.el b/lisp/org/ob-fortran.el index c8739814d9a..c802c248d22 100644 --- a/lisp/org/ob-fortran.el +++ b/lisp/org/ob-fortran.el @@ -1,6 +1,6 @@ ;;; ob-fortran.el --- Babel Functions for Fortran -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Authors: Sergey Litvinov ;; Eric Schulte diff --git a/lisp/org/ob-gnuplot.el b/lisp/org/ob-gnuplot.el index a05cfbf7ef1..2112dc13cd4 100644 --- a/lisp/org/ob-gnuplot.el +++ b/lisp/org/ob-gnuplot.el @@ -1,6 +1,6 @@ ;;; ob-gnuplot.el --- Babel Functions for Gnuplot -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Ihor Radchenko diff --git a/lisp/org/ob-groovy.el b/lisp/org/ob-groovy.el index b5d66e7b50d..4573fd31414 100644 --- a/lisp/org/ob-groovy.el +++ b/lisp/org/ob-groovy.el @@ -1,6 +1,6 @@ ;;; ob-groovy.el --- Babel Functions for Groovy -*- lexical-binding: t; -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Miro Bezjak ;; Maintainer: Palak Mathur diff --git a/lisp/org/ob-haskell.el b/lisp/org/ob-haskell.el index a5568a5c23b..a1246ca5804 100644 --- a/lisp/org/ob-haskell.el +++ b/lisp/org/ob-haskell.el @@ -1,6 +1,6 @@ ;;; ob-haskell.el --- Babel Functions for Haskell -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Lawrence Bottorff diff --git a/lisp/org/ob-java.el b/lisp/org/ob-java.el index 36af958f633..ec0c99b5d07 100644 --- a/lisp/org/ob-java.el +++ b/lisp/org/ob-java.el @@ -1,6 +1,6 @@ ;;; ob-java.el --- org-babel functions for java evaluation -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-js.el b/lisp/org/ob-js.el index 309f0492939..7c345ed1f9a 100644 --- a/lisp/org/ob-js.el +++ b/lisp/org/ob-js.el @@ -1,6 +1,6 @@ ;;; ob-js.el --- Babel Functions for Javascript -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research, js diff --git a/lisp/org/ob-julia.el b/lisp/org/ob-julia.el index 3e1e790b1ba..ce54774dff4 100644 --- a/lisp/org/ob-julia.el +++ b/lisp/org/ob-julia.el @@ -1,6 +1,6 @@ ;;; ob-julia.el --- org-babel functions for julia code evaluation -*- lexical-binding: t; -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Authors: G. Jay Kerns ;; Maintainer: Pedro Bruel ;; Keywords: literate programming, reproducible research, scientific computing diff --git a/lisp/org/ob-latex.el b/lisp/org/ob-latex.el index 58ca9e3853f..ebf4c7e2307 100644 --- a/lisp/org/ob-latex.el +++ b/lisp/org/ob-latex.el @@ -1,6 +1,6 @@ ;;; ob-latex.el --- Babel Functions for LaTeX -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-lilypond.el b/lisp/org/ob-lilypond.el index a406c99c236..02ccc2eead5 100644 --- a/lisp/org/ob-lilypond.el +++ b/lisp/org/ob-lilypond.el @@ -1,6 +1,6 @@ ;;; ob-lilypond.el --- Babel Functions for Lilypond -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Martyn Jago ;; Keywords: babel language, literate programming diff --git a/lisp/org/ob-lisp.el b/lisp/org/ob-lisp.el index ed5a4bb004a..308e7954efb 100644 --- a/lisp/org/ob-lisp.el +++ b/lisp/org/ob-lisp.el @@ -1,6 +1,6 @@ ;;; ob-lisp.el --- Babel Functions for Common Lisp -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Joel Boehland ;; Eric Schulte diff --git a/lisp/org/ob-lob.el b/lisp/org/ob-lob.el index 472f9eda1af..6571a912d21 100644 --- a/lisp/org/ob-lob.el +++ b/lisp/org/ob-lob.el @@ -1,6 +1,6 @@ ;;; ob-lob.el --- Functions Supporting the Library of Babel -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-lua.el b/lisp/org/ob-lua.el index 658040507f4..1d5ed687618 100644 --- a/lisp/org/ob-lua.el +++ b/lisp/org/ob-lua.el @@ -1,6 +1,6 @@ ;;; ob-lua.el --- Org Babel functions for Lua evaluation -*- lexical-binding: t; -*- -;; Copyright (C) 2014, 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014, 2016-2026 Free Software Foundation, Inc. ;; Authors: Dieter Schoen ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-makefile.el b/lisp/org/ob-makefile.el index 4c8abb35515..0cd2e70afe7 100644 --- a/lisp/org/ob-makefile.el +++ b/lisp/org/ob-makefile.el @@ -1,6 +1,6 @@ ;;; ob-makefile.el --- Babel Functions for Makefile -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Thomas S. Dye diff --git a/lisp/org/ob-matlab.el b/lisp/org/ob-matlab.el index f0fc60b2505..9faf0faa077 100644 --- a/lisp/org/ob-matlab.el +++ b/lisp/org/ob-matlab.el @@ -1,6 +1,6 @@ ;;; ob-matlab.el --- Babel support for Matlab -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Dan Davison ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-maxima.el b/lisp/org/ob-maxima.el index 4aaa456cb27..79bdeac6c36 100644 --- a/lisp/org/ob-maxima.el +++ b/lisp/org/ob-maxima.el @@ -1,6 +1,6 @@ ;;; ob-maxima.el --- Babel Functions for Maxima -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric S Fraga ;; Eric Schulte diff --git a/lisp/org/ob-ocaml.el b/lisp/org/ob-ocaml.el index 5818a9d28fe..8ba02b02a64 100644 --- a/lisp/org/ob-ocaml.el +++ b/lisp/org/ob-ocaml.el @@ -1,6 +1,6 @@ ;;; ob-ocaml.el --- Babel Functions for Ocaml -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-octave.el b/lisp/org/ob-octave.el index 7e49e805922..5fb57132962 100644 --- a/lisp/org/ob-octave.el +++ b/lisp/org/ob-octave.el @@ -1,6 +1,6 @@ ;;; ob-octave.el --- Babel Functions for Octave and Matlab -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Dan Davison ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-org.el b/lisp/org/ob-org.el index 9941666b180..bf0f9ee5fb1 100644 --- a/lisp/org/ob-org.el +++ b/lisp/org/ob-org.el @@ -1,6 +1,6 @@ ;;; ob-org.el --- Babel Functions for Org Code Blocks -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-perl.el b/lisp/org/ob-perl.el index fc7813973d9..b1245e558a8 100644 --- a/lisp/org/ob-perl.el +++ b/lisp/org/ob-perl.el @@ -1,6 +1,6 @@ ;;; ob-perl.el --- Babel Functions for Perl -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Dan Davison ;; Eric Schulte diff --git a/lisp/org/ob-plantuml.el b/lisp/org/ob-plantuml.el index 05a4f7263ca..93b183b966b 100644 --- a/lisp/org/ob-plantuml.el +++ b/lisp/org/ob-plantuml.el @@ -1,6 +1,6 @@ ;;; ob-plantuml.el --- Babel Functions for Plantuml -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Zhang Weize ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-processing.el b/lisp/org/ob-processing.el index 81b7f7ee4d0..edadaf15692 100644 --- a/lisp/org/ob-processing.el +++ b/lisp/org/ob-processing.el @@ -1,6 +1,6 @@ ;;; ob-processing.el --- Babel functions for processing -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Jarmo Hurri (adapted from ob-asymptote.el written by Eric Schulte) ;; Maintainer: Jarmo Hurri diff --git a/lisp/org/ob-python.el b/lisp/org/ob-python.el index eb85beb152e..0cf65ed0aed 100644 --- a/lisp/org/ob-python.el +++ b/lisp/org/ob-python.el @@ -1,6 +1,6 @@ ;;; ob-python.el --- Babel Functions for Python -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-ref.el b/lisp/org/ob-ref.el index 8c59c9fe715..fcb7c5c7280 100644 --- a/lisp/org/ob-ref.el +++ b/lisp/org/ob-ref.el @@ -1,6 +1,6 @@ ;;; ob-ref.el --- Babel Functions for Referencing External Data -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Dan Davison diff --git a/lisp/org/ob-ruby.el b/lisp/org/ob-ruby.el index 4bb79e2f126..76c83de5d53 100644 --- a/lisp/org/ob-ruby.el +++ b/lisp/org/ob-ruby.el @@ -1,6 +1,6 @@ ;;; ob-ruby.el --- Babel Functions for Ruby -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-sass.el b/lisp/org/ob-sass.el index babed0ca2fb..a7a29bf675e 100644 --- a/lisp/org/ob-sass.el +++ b/lisp/org/ob-sass.el @@ -1,6 +1,6 @@ ;;; ob-sass.el --- Babel Functions for the Sass CSS generation language -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-scheme.el b/lisp/org/ob-scheme.el index 1edd9611560..5534472e507 100644 --- a/lisp/org/ob-scheme.el +++ b/lisp/org/ob-scheme.el @@ -1,6 +1,6 @@ ;;; ob-scheme.el --- Babel Functions for Scheme -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Michael Gauland diff --git a/lisp/org/ob-screen.el b/lisp/org/ob-screen.el index 1867cdd6e1e..9eb477a8311 100644 --- a/lisp/org/ob-screen.el +++ b/lisp/org/ob-screen.el @@ -1,6 +1,6 @@ ;;; ob-screen.el --- Babel Support for Interactive Terminal -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Benjamin Andresen ;; Maintainer: Ken Mankoff diff --git a/lisp/org/ob-sed.el b/lisp/org/ob-sed.el index 3f98b8889d3..a44765e4328 100644 --- a/lisp/org/ob-sed.el +++ b/lisp/org/ob-sed.el @@ -1,6 +1,6 @@ ;;; ob-sed.el --- Babel Functions for Sed Scripts -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Bjarte Johansen ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-shell.el b/lisp/org/ob-shell.el index 575a886f1b3..4641935c7d5 100644 --- a/lisp/org/ob-shell.el +++ b/lisp/org/ob-shell.el @@ -1,6 +1,6 @@ ;;; ob-shell.el --- Babel Functions for Shell Evaluation -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Matthew Trzcinski diff --git a/lisp/org/ob-sql.el b/lisp/org/ob-sql.el index ca6512783d4..68867059503 100644 --- a/lisp/org/ob-sql.el +++ b/lisp/org/ob-sql.el @@ -1,6 +1,6 @@ ;;; ob-sql.el --- Babel Functions for SQL -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Daniel Kraus diff --git a/lisp/org/ob-sqlite.el b/lisp/org/ob-sqlite.el index 65903d51d11..8478edc3fb6 100644 --- a/lisp/org/ob-sqlite.el +++ b/lisp/org/ob-sqlite.el @@ -1,6 +1,6 @@ ;;; ob-sqlite.el --- Babel Functions for SQLite Databases -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Maintainer: Nick Savage diff --git a/lisp/org/ob-table.el b/lisp/org/ob-table.el index 239dc08fc8c..28daa0a256b 100644 --- a/lisp/org/ob-table.el +++ b/lisp/org/ob-table.el @@ -1,6 +1,6 @@ ;;; ob-table.el --- Support for Calling Babel Functions from Tables -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el index 75e7b560848..5094787bc41 100644 --- a/lisp/org/ob-tangle.el +++ b/lisp/org/ob-tangle.el @@ -1,6 +1,6 @@ ;;; ob-tangle.el --- Extract Source Code From Org Files -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/ob.el b/lisp/org/ob.el index db42301d69f..11de7caa369 100644 --- a/lisp/org/ob.el +++ b/lisp/org/ob.el @@ -1,6 +1,6 @@ ;;; ob.el --- Working with Code Blocks in Org -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Authors: Eric Schulte ;; Keywords: literate programming, reproducible research diff --git a/lisp/org/oc-basic.el b/lisp/org/oc-basic.el index 32a99e98709..6c757c1bc22 100644 --- a/lisp/org/oc-basic.el +++ b/lisp/org/oc-basic.el @@ -1,6 +1,6 @@ ;;; oc-basic.el --- basic backend for citations -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou @@ -370,7 +370,7 @@ Throw an error if the field value is non-string and non-nil." "Return a list of family names from a list of full NAMES. NAMES can be a string or raw string object. -To better accomomodate corporate names, this will only shorten +To better accommodate corporate names, this will only shorten personal names of the form \"family, given\"." (let (names-string raw-p) (cond diff --git a/lisp/org/oc-biblatex.el b/lisp/org/oc-biblatex.el index 2edd2311bce..c72505cd0f9 100644 --- a/lisp/org/oc-biblatex.el +++ b/lisp/org/oc-biblatex.el @@ -1,6 +1,6 @@ ;;; oc-biblatex.el --- biblatex citation processor for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou diff --git a/lisp/org/oc-bibtex.el b/lisp/org/oc-bibtex.el index e6a1e5663e3..559f118e66f 100644 --- a/lisp/org/oc-bibtex.el +++ b/lisp/org/oc-bibtex.el @@ -1,6 +1,6 @@ ;;; oc-bibtex.el --- Vanilla citation processor for LaTeX -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou diff --git a/lisp/org/oc-csl.el b/lisp/org/oc-csl.el index 7d664e0ab4b..1368cf44651 100644 --- a/lisp/org/oc-csl.el +++ b/lisp/org/oc-csl.el @@ -1,6 +1,6 @@ ;;; oc-csl.el --- csl citation processor for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Maintainer: András Simonyi diff --git a/lisp/org/oc-natbib.el b/lisp/org/oc-natbib.el index 65d5b75095e..7e42713461c 100644 --- a/lisp/org/oc-natbib.el +++ b/lisp/org/oc-natbib.el @@ -1,6 +1,6 @@ ;;; oc-natbib.el --- Citation processor using natbib LaTeX package -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou diff --git a/lisp/org/oc.el b/lisp/org/oc.el index de7ea1fe2a2..35e7674a8a6 100644 --- a/lisp/org/oc.el +++ b/lisp/org/oc.el @@ -1,6 +1,6 @@ ;;; oc.el --- Org Cite library -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou diff --git a/lisp/org/ol-bbdb.el b/lisp/org/ol-bbdb.el index 944ee1ba2be..9e876b00b74 100644 --- a/lisp/org/ol-bbdb.el +++ b/lisp/org/ol-bbdb.el @@ -1,6 +1,6 @@ ;;; ol-bbdb.el --- Links to BBDB entries -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Authors: Carsten Dominik ;; Thomas Baumann diff --git a/lisp/org/ol-bibtex.el b/lisp/org/ol-bibtex.el index 37b1cd394f0..2828c7564e2 100644 --- a/lisp/org/ol-bibtex.el +++ b/lisp/org/ol-bibtex.el @@ -1,6 +1,6 @@ ;;; ol-bibtex.el --- Links to BibTeX entries -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; ;; Authors: Bastien Guerry ;; Carsten Dominik diff --git a/lisp/org/ol-docview.el b/lisp/org/ol-docview.el index be09328dfd4..e3fcf6d0a16 100644 --- a/lisp/org/ol-docview.el +++ b/lisp/org/ol-docview.el @@ -1,6 +1,6 @@ ;;; ol-docview.el --- Links to Docview mode buffers -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Jan Böcker ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ol-doi.el b/lisp/org/ol-doi.el index fba1c635199..60b3f6c0769 100644 --- a/lisp/org/ol-doi.el +++ b/lisp/org/ol-doi.el @@ -1,6 +1,6 @@ ;;; ol-doi.el --- DOI links support in Org -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou diff --git a/lisp/org/ol-eshell.el b/lisp/org/ol-eshell.el index 6e54d0e3ca4..2d704601211 100644 --- a/lisp/org/ol-eshell.el +++ b/lisp/org/ol-eshell.el @@ -1,6 +1,6 @@ ;;; ol-eshell.el --- Links to Working Directories in Eshell -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Konrad Hinsen diff --git a/lisp/org/ol-eww.el b/lisp/org/ol-eww.el index 22ae13015f5..4183f92f227 100644 --- a/lisp/org/ol-eww.el +++ b/lisp/org/ol-eww.el @@ -1,6 +1,6 @@ ;;; ol-eww.el --- Store URL and kill from Eww mode -*- lexical-binding: t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Marco Wahl a ;; Keywords: link, eww diff --git a/lisp/org/ol-gnus.el b/lisp/org/ol-gnus.el index 15b5030500e..53598b69499 100644 --- a/lisp/org/ol-gnus.el +++ b/lisp/org/ol-gnus.el @@ -1,6 +1,6 @@ ;;; ol-gnus.el --- Links to Gnus Groups and Messages -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Tassilo Horn diff --git a/lisp/org/ol-info.el b/lisp/org/ol-info.el index c60f9c56c8c..add99e9c1ac 100644 --- a/lisp/org/ol-info.el +++ b/lisp/org/ol-info.el @@ -1,6 +1,6 @@ ;;; ol-info.el --- Links to Info Nodes -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ol-irc.el b/lisp/org/ol-irc.el index 77d23f36651..2ab51fe079a 100644 --- a/lisp/org/ol-irc.el +++ b/lisp/org/ol-irc.el @@ -1,6 +1,6 @@ ;;; ol-irc.el --- Links to IRC Sessions -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; ;; Author: Philip Jackson ;; Keywords: erc, irc, link, org diff --git a/lisp/org/ol-man.el b/lisp/org/ol-man.el index facc3e2ee1b..4bb44cc43b1 100644 --- a/lisp/org/ol-man.el +++ b/lisp/org/ol-man.el @@ -1,6 +1,6 @@ ;;; ol-man.el --- Links to man pages -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: Bastien Guerry ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ol-mhe.el b/lisp/org/ol-mhe.el index 82eb99c05d6..d147ea41837 100644 --- a/lisp/org/ol-mhe.el +++ b/lisp/org/ol-mhe.el @@ -1,6 +1,6 @@ ;;; ol-mhe.el --- Links to MH-E Messages -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Thomas Baumann ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ol-rmail.el b/lisp/org/ol-rmail.el index 9d6a4800874..703ddaeb700 100644 --- a/lisp/org/ol-rmail.el +++ b/lisp/org/ol-rmail.el @@ -1,6 +1,6 @@ ;;; ol-rmail.el --- Links to Rmail Messages -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ol-w3m.el b/lisp/org/ol-w3m.el index ab568681bfe..2acad873ea1 100644 --- a/lisp/org/ol-w3m.el +++ b/lisp/org/ol-w3m.el @@ -1,6 +1,6 @@ ;;; ol-w3m.el --- Copy and Paste From W3M -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Andy Stewart ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ol.el b/lisp/org/ol.el index 603dc26d416..4cd0ad37338 100644 --- a/lisp/org/ol.el +++ b/lisp/org/ol.el @@ -1,6 +1,6 @@ ;;; ol.el --- Org links library -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text @@ -1160,7 +1160,7 @@ Abbreviations are defined in `org-link-abbrev-alist'." ((string-match "%(\\([^)]+\\))" rpl) (let ((rpl-fun-symbol (intern-soft (match-string 1 rpl)))) ;; Using `unsafep-function' is not quite enough because - ;; Emacs considers functions like `genenv' safe, while + ;; Emacs considers functions like `getenv' safe, while ;; they can potentially be used to expose private system ;; data to attacker if abbreviated link is clicked. (if (or (eq t (get rpl-fun-symbol 'org-link-abbrev-safe)) diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 50dbb6dbed6..bfa9ca8ead0 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -1,6 +1,6 @@ ;;; org-agenda.el --- Dynamic task and appointment lists for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-archive.el b/lisp/org/org-archive.el index c66dc21682f..599391a339f 100644 --- a/lisp/org/org-archive.el +++ b/lisp/org/org-archive.el @@ -1,6 +1,6 @@ ;;; org-archive.el --- Archiving for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-attach-git.el b/lisp/org/org-attach-git.el index e268083cfb8..2f87448876c 100644 --- a/lisp/org/org-attach-git.el +++ b/lisp/org/org-attach-git.el @@ -1,6 +1,6 @@ ;;; org-attach-git.el --- Automatic git commit extension to org-attach -*- lexical-binding: t; -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Original Author: John Wiegley ;; Restructurer: Gustav Wikström diff --git a/lisp/org/org-attach.el b/lisp/org/org-attach.el index 8749541f1ef..a19c237e4f2 100644 --- a/lisp/org/org-attach.el +++ b/lisp/org/org-attach.el @@ -1,6 +1,6 @@ ;;; org-attach.el --- Manage file attachments to Org outlines -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Keywords: org data attachment diff --git a/lisp/org/org-capture.el b/lisp/org/org-capture.el index 9f737893e6a..50ecfbfd3ec 100644 --- a/lisp/org/org-capture.el +++ b/lisp/org/org-capture.el @@ -1,6 +1,6 @@ ;;; org-capture.el --- Fast note taking in Org -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-clock.el b/lisp/org/org-clock.el index 5fd0580d059..a9b7cfd7ae3 100644 --- a/lisp/org/org-clock.el +++ b/lisp/org/org-clock.el @@ -1,6 +1,6 @@ ;;; org-clock.el --- The time clocking code for Org mode -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-colview.el b/lisp/org/org-colview.el index fa82b1ae4a0..f6e72bfd52f 100644 --- a/lisp/org/org-colview.el +++ b/lisp/org/org-colview.el @@ -1,6 +1,6 @@ ;;; org-colview.el --- Column View in Org -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el index 297e8f06045..8261a48439a 100644 --- a/lisp/org/org-compat.el +++ b/lisp/org/org-compat.el @@ -1,6 +1,6 @@ ;;; org-compat.el --- Compatibility Code for Older Emacsen -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-crypt.el b/lisp/org/org-crypt.el index 56d4a0ab509..3ba1579aba9 100644 --- a/lisp/org/org-crypt.el +++ b/lisp/org/org-crypt.el @@ -1,6 +1,6 @@ ;;; org-crypt.el --- Public Key Encryption for Org Entries -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: John Wiegley diff --git a/lisp/org/org-ctags.el b/lisp/org/org-ctags.el index dd0d8d52768..3a6b08ccc42 100644 --- a/lisp/org/org-ctags.el +++ b/lisp/org/org-ctags.el @@ -1,6 +1,6 @@ ;;; org-ctags.el --- Integrate Emacs "tags" Facility with Org -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Paul Sexton ;; Keywords: org, text diff --git a/lisp/org/org-cycle.el b/lisp/org/org-cycle.el index 73144761516..def8f7f3bd2 100644 --- a/lisp/org/org-cycle.el +++ b/lisp/org/org-cycle.el @@ -1,6 +1,6 @@ ;;; org-cycle.el --- Visibility cycling of Org entries -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; ;; Maintainer: Ihor Radchenko ;; Keywords: folding, visibility cycling, invisible text diff --git a/lisp/org/org-datetree.el b/lisp/org/org-datetree.el index 9a48ee66d0f..1b396c12565 100644 --- a/lisp/org/org-datetree.el +++ b/lisp/org/org-datetree.el @@ -1,6 +1,6 @@ ;;; org-datetree.el --- Create date entries in a tree -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-duration.el b/lisp/org/org-duration.el index 4a021ff3c77..822a649329d 100644 --- a/lisp/org/org-duration.el +++ b/lisp/org/org-duration.el @@ -1,6 +1,6 @@ ;;; org-duration.el --- Library handling durations -*- lexical-binding: t; -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-element-ast.el b/lisp/org/org-element-ast.el index 60ecf34108c..1dc00d2ab2c 100644 --- a/lisp/org/org-element-ast.el +++ b/lisp/org/org-element-ast.el @@ -1,6 +1,6 @@ ;;; org-element-ast.el --- Abstract syntax tree for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Ihor Radchenko ;; Keywords: data, lisp diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el index 78b2dbc9100..7c14a4588f1 100644 --- a/lisp/org/org-element.el +++ b/lisp/org/org-element.el @@ -1,6 +1,6 @@ ;;; org-element.el --- Parser for Org Syntax -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Maintainer: Ihor Radchenko diff --git a/lisp/org/org-entities.el b/lisp/org/org-entities.el index 5ad819ae4e8..bde0d49b6d9 100644 --- a/lisp/org/org-entities.el +++ b/lisp/org/org-entities.el @@ -1,6 +1,6 @@ ;;; org-entities.el --- Support for Special Entities -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik , ;; Ulf Stegemann diff --git a/lisp/org/org-faces.el b/lisp/org/org-faces.el index 7fb04bb9fd7..d706baa6b79 100644 --- a/lisp/org/org-faces.el +++ b/lisp/org/org-faces.el @@ -1,6 +1,6 @@ ;;; org-faces.el --- Face definitions -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-feed.el b/lisp/org/org-feed.el index 88a393ae6f6..139c7f729ef 100644 --- a/lisp/org/org-feed.el +++ b/lisp/org/org-feed.el @@ -1,6 +1,6 @@ ;;; org-feed.el --- Add RSS feed items to Org files -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-fold-core.el b/lisp/org/org-fold-core.el index a2e84f73c0e..8a220db7686 100644 --- a/lisp/org/org-fold-core.el +++ b/lisp/org/org-fold-core.el @@ -1,6 +1,6 @@ ;;; org-fold-core.el --- Folding buffer text -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; ;; Author: Ihor Radchenko ;; Keywords: folding, invisible text @@ -236,12 +236,12 @@ ;; recommended to minimize the number of folding specs used in the ;; same buffer at a time. -;; Alternatively, the library provides `org-fold-core--optimise-for-huge-buffers' +;; Alternatively, the library provides `org-fold-core--optimize-for-huge-buffers' ;; for additional speedup. This can be used as a file-local variable ;; in huge buffers. The variable can be set to enable various levels ;; of extra optimization. See the docstring for detailed information. -;; It is worth noting that when using `org-fold-core--optimise-for-huge-buffers' +;; It is worth noting that when using `org-fold-core--optimize-for-huge-buffers' ;; with `grab-invisible' option, folded regions copied to other ;; buffers (including buffers that do not use this library) will ;; remain invisible. org-fold-core provides functions to work around @@ -300,7 +300,7 @@ Important: This variable must be set before loading Org." The function is called with a single argument - point where text is to be revealed.") -(defvar-local org-fold-core--optimise-for-huge-buffers nil +(defvar-local org-fold-core--optimize-for-huge-buffers nil "Non-nil turns on extra speedup on huge buffers (Mbs of folded text). This setting is risky and may cause various artifacts and degraded @@ -340,7 +340,7 @@ following symbols: - `merge-folds': Do not distinguish between different types of folding specs. This is the most aggressive optimization with unforeseen and potentially drastic effects.") -(put 'org-fold-core--optimise-for-huge-buffers 'safe-local-variable 'listp) +(put 'org-fold-core--optimize-for-huge-buffers 'safe-local-variable 'listp) ;;; Core functionality @@ -445,10 +445,10 @@ Return nil when there is no matching folding spec." "Get PROPERTY of a folding SPEC-OR-ALIAS. Possible properties can be found in `org-fold-core--specs' docstring." (org-fold-core--check-spec spec-or-alias) - (if (and (memql 'ignore-indirect org-fold-core--optimise-for-huge-buffers) + (if (and (memql 'ignore-indirect org-fold-core--optimize-for-huge-buffers) (eq property :global)) t - (if (and (memql 'merge-folds org-fold-core--optimise-for-huge-buffers) + (if (and (memql 'merge-folds org-fold-core--optimize-for-huge-buffers) (eq property :visible)) nil (cdr (assq property (assq (org-fold-core-get-folding-spec-from-alias spec-or-alias) org-fold-core--specs)))))) @@ -459,7 +459,7 @@ Possible properties can be found in `org-fold-core--specs' docstring." (defsubst org-fold-core-get-folding-property-symbol (spec &optional buffer global) "Get folding text property using to store SPEC in current buffer or BUFFER. If GLOBAL is non-nil, do not make the property unique in the BUFFER." - (if (memql 'merge-folds org-fold-core--optimise-for-huge-buffers) + (if (memql 'merge-folds org-fold-core--optimize-for-huge-buffers) (intern (format "%s-global" org-fold-core--spec-property-prefix)) (intern (format (concat org-fold-core--spec-property-prefix "%s-%S") (symbol-name spec) @@ -468,7 +468,7 @@ If GLOBAL is non-nil, do not make the property unique in the BUFFER." ;; buffer-local text property actually matters is an indirect ;; buffer, where the name cannot be same anyway. (if (or global - (memql 'ignore-indirect org-fold-core--optimise-for-huge-buffers)) + (memql 'ignore-indirect org-fold-core--optimize-for-huge-buffers)) 'global (sxhash (buffer-name (or buffer (current-buffer))))))))) @@ -538,7 +538,7 @@ hanging around." ;; This is the core function used to fold text in buffers. We use ;; text properties to hide folded text, however 'invisible property is -;; not directly used (unless risky `org-fold-core--optimise-for-huge-buffers' is +;; not directly used (unless risky `org-fold-core--optimize-for-huge-buffers' is ;; enabled). Instead, we define unique text property (folding ;; property) for every possible folding spec and add the resulting ;; text properties into `char-property-alias-alist', so that @@ -651,7 +651,7 @@ This function is mostly intended to be used in (delete-dups bufs)))))) (when (and (buffer-base-buffer) (eq org-fold-core-style 'text-properties) - (not (memql 'ignore-indirect org-fold-core--optimise-for-huge-buffers))) + (not (memql 'ignore-indirect org-fold-core--optimize-for-huge-buffers))) (org-fold-core--update-buffer-folds))) ;;; API @@ -669,7 +669,7 @@ Do not check previous value when FORCE is non-nil." (unless (org-fold-core-get-folding-spec-property spec :visible) (add-to-invisibility-spec (cons spec value))))) (:visible - (unless (or (memql 'merge-folds org-fold-core--optimise-for-huge-buffers) + (unless (or (memql 'merge-folds org-fold-core--optimize-for-huge-buffers) (and (not force) (equal value (org-fold-core-get-folding-spec-property spec :visible)))) (if value (remove-from-invisibility-spec (cons spec (org-fold-core-get-folding-spec-property spec :ellipsis))) @@ -1099,7 +1099,7 @@ If SPEC-OR-ALIAS is omitted and FLAG is nil, unfold everything in the region." (put-text-property from to (org-fold-core--property-symbol-get-create spec) spec) (put-text-property from to 'isearch-open-invisible #'org-fold-core--isearch-show) (put-text-property from to 'isearch-open-invisible-temporary #'org-fold-core--isearch-show-temporary) - (when (memql 'grab-invisible org-fold-core--optimise-for-huge-buffers) + (when (memql 'grab-invisible org-fold-core--optimize-for-huge-buffers) ;; If the SPEC has highest priority, assign it directly ;; to 'invisible property as well. This is done to speed ;; up Emacs redisplay on huge (Mbs) folded regions where @@ -1108,7 +1108,7 @@ If SPEC-OR-ALIAS is omitted and FLAG is nil, unfold everything in the region." (when (eq spec (caar org-fold-core--specs)) (put-text-property from to 'invisible spec))))) (if (not spec) (mapc (lambda (spec) (org-fold-core-region from to nil spec)) (org-fold-core-folding-spec-list)) - (when (and (memql 'grab-invisible org-fold-core--optimise-for-huge-buffers) + (when (and (memql 'grab-invisible org-fold-core--optimize-for-huge-buffers) (eq org-fold-core-style 'text-properties)) (when (eq spec (caar org-fold-core--specs)) (let ((pos from)) @@ -1394,7 +1394,7 @@ property, unfold the region if the :fragile function returns non-nil." ;; If no insertions or deletions in buffer, skip all the checks. (unless (or org-fold-core--ignore-modifications (eq org-fold-core--last-buffer-chars-modified-tick (buffer-chars-modified-tick)) - (memql 'ignore-modification-checks org-fold-core--optimise-for-huge-buffers)) + (memql 'ignore-modification-checks org-fold-core--optimize-for-huge-buffers)) ;; Store the new buffer modification state. (setq org-fold-core--last-buffer-chars-modified-tick (buffer-chars-modified-tick)) (save-match-data @@ -1454,7 +1454,7 @@ property, unfold the region if the :fragile function returns non-nil." ;; multiple times in indirect buffers that have exactly same ;; text anyway. (unless (or org-fold-core--ignore-fragility-checks - (memql 'ignore-fragility-checks org-fold-core--optimise-for-huge-buffers)) + (memql 'ignore-fragility-checks org-fold-core--optimize-for-huge-buffers)) (dolist (func org-fold-core-extend-changed-region-functions) (let ((new-region (funcall func from to))) (setq from (car new-region)) @@ -1587,7 +1587,7 @@ The arguments and return value are as specified for `filter-buffer-substring'." (let* ((prop (car plist)) (prop-name (symbol-name prop))) ;; Reveal hard-hidden text. See - ;; `org-fold-core--optimise-for-huge-buffers'. + ;; `org-fold-core--optimize-for-huge-buffers'. (when (and (eq prop 'invisible) (member (cadr plist) (org-fold-core-folding-spec-list))) (remove-text-properties start fin '(invisible t) return-string)) @@ -1602,10 +1602,10 @@ The arguments and return value are as specified for `filter-buffer-substring'." (remove-text-properties 0 (length return-string) props-list return-string)) return-string)) -(defun org-fold-core-update-optimisation (beg end) +(defun org-fold-core-update-optimization (beg end) "Update huge buffer optimization between BEG and END. -See `org-fold-core--optimise-for-huge-buffers'." - (when (and (memql 'grab-invisible org-fold-core--optimise-for-huge-buffers) +See `org-fold-core--optimize-for-huge-buffers'." + (when (and (memql 'grab-invisible org-fold-core--optimize-for-huge-buffers) (eq org-fold-core-style 'text-properties)) (let ((pos beg)) (while (< pos end) @@ -1614,11 +1614,14 @@ See `org-fold-core--optimise-for-huge-buffers'." (put-text-property pos (org-fold-core-next-folding-state-change (caar org-fold-core--specs) pos end) 'invisible (caar org-fold-core--specs))) (setq pos (org-fold-core-next-folding-state-change (caar org-fold-core--specs) pos end)))))) +(define-obsolete-function-alias + 'org-fold-core-update-optimisation + #'org-fold-core-update-optimization "9.8") -(defun org-fold-core-remove-optimisation (beg end) +(defun org-fold-core-remove-optimization (beg end) "Remove huge buffer optimization between BEG and END. -See `org-fold-core--optimise-for-huge-buffers'." - (when (and (memql 'grab-invisible org-fold-core--optimise-for-huge-buffers) +See `org-fold-core--optimize-for-huge-buffers'." + (when (and (memql 'grab-invisible org-fold-core--optimize-for-huge-buffers) (eq org-fold-core-style 'text-properties)) (let ((pos beg)) (while (< pos end) @@ -1627,6 +1630,9 @@ See `org-fold-core--optimise-for-huge-buffers'." (remove-text-properties pos (org-fold-core-next-folding-state-change (caar org-fold-core--specs) pos end) '(invisible t))) (setq pos (org-fold-core-next-folding-state-change (caar org-fold-core--specs) pos end)))))) +(define-obsolete-function-alias + 'org-fold-core-remove-optimisation + #'org-fold-core-remove-optimization "9.8") (provide 'org-fold-core) diff --git a/lisp/org/org-fold.el b/lisp/org/org-fold.el index 52cdb626ea5..aea1fe0accb 100644 --- a/lisp/org/org-fold.el +++ b/lisp/org/org-fold.el @@ -1,6 +1,6 @@ ;;; org-fold.el --- Folding of Org entries -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; ;; Author: Ihor Radchenko ;; Keywords: folding, invisible text diff --git a/lisp/org/org-footnote.el b/lisp/org/org-footnote.el index e1c42d5183f..3ace40f4d8e 100644 --- a/lisp/org/org-footnote.el +++ b/lisp/org/org-footnote.el @@ -1,6 +1,6 @@ ;;; org-footnote.el --- Footnote support in Org -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-goto.el b/lisp/org/org-goto.el index 409e00b75c9..bb8906c2303 100644 --- a/lisp/org/org-goto.el +++ b/lisp/org/org-goto.el @@ -1,6 +1,6 @@ ;;; org-goto.el --- Fast navigation in an Org buffer -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-habit.el b/lisp/org/org-habit.el index 010c9daa00e..47b453d16c8 100644 --- a/lisp/org/org-habit.el +++ b/lisp/org/org-habit.el @@ -1,6 +1,6 @@ ;;; org-habit.el --- The habit tracking code for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-id.el b/lisp/org/org-id.el index 2ec91a5b275..85b913b0a4c 100644 --- a/lisp/org/org-id.el +++ b/lisp/org/org-id.el @@ -1,6 +1,6 @@ ;;; org-id.el --- Global identifiers for Org entries -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-indent.el b/lisp/org/org-indent.el index dea2f69ce91..8e96a8cde1b 100644 --- a/lisp/org/org-indent.el +++ b/lisp/org/org-indent.el @@ -1,6 +1,6 @@ ;;; org-indent.el --- Dynamic indentation for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-inlinetask.el b/lisp/org/org-inlinetask.el index 61530c31cc9..fdc0034af3a 100644 --- a/lisp/org/org-inlinetask.el +++ b/lisp/org/org-inlinetask.el @@ -1,6 +1,6 @@ ;;; org-inlinetask.el --- Tasks Independent of Outline Hierarchy -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-keys.el b/lisp/org/org-keys.el index d00e3d33e56..eb88ec430a3 100644 --- a/lisp/org/org-keys.el +++ b/lisp/org/org-keys.el @@ -1,6 +1,6 @@ ;;; org-keys.el --- Key bindings for Org mode -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou diff --git a/lisp/org/org-lint.el b/lisp/org/org-lint.el index 7b18c408d1a..c6e16f23c6a 100644 --- a/lisp/org/org-lint.el +++ b/lisp/org/org-lint.el @@ -1,6 +1,6 @@ ;;; org-lint.el --- Linting for Org documents -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-list.el b/lisp/org/org-list.el index 2f6c1593ba1..5375c14fc56 100644 --- a/lisp/org/org-list.el +++ b/lisp/org/org-list.el @@ -1,6 +1,6 @@ ;;; org-list.el --- Plain lists for Org -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Bastien Guerry diff --git a/lisp/org/org-macro.el b/lisp/org/org-macro.el index 500dfbc545d..c68b937fa6a 100644 --- a/lisp/org/org-macro.el +++ b/lisp/org/org-macro.el @@ -1,6 +1,6 @@ ;;; org-macro.el --- Macro Replacement Code for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-macs.el b/lisp/org/org-macs.el index b8f74ec2139..eb4916dfe0b 100644 --- a/lisp/org/org-macs.el +++ b/lisp/org/org-macs.el @@ -1,6 +1,6 @@ ;;; org-macs.el --- Top-level Definitions for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-mobile.el b/lisp/org/org-mobile.el index 56779207fae..da3b42f4f5b 100644 --- a/lisp/org/org-mobile.el +++ b/lisp/org/org-mobile.el @@ -1,5 +1,5 @@ ;;; org-mobile.el --- Code for Asymmetric Sync With a Mobile Device -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el index f496be7a77c..6e258879931 100644 --- a/lisp/org/org-mouse.el +++ b/lisp/org/org-mouse.el @@ -1,6 +1,6 @@ ;;; org-mouse.el --- Better mouse support for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Piotr Zielinski ;; Maintainer: Carsten Dominik diff --git a/lisp/org/org-num.el b/lisp/org/org-num.el index a1df00ba577..002d166fe7b 100644 --- a/lisp/org/org-num.el +++ b/lisp/org/org-num.el @@ -1,6 +1,6 @@ ;;; org-num.el --- Dynamic Headlines Numbering -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-pcomplete.el b/lisp/org/org-pcomplete.el index 8fdd968264e..f2b9798f91b 100644 --- a/lisp/org/org-pcomplete.el +++ b/lisp/org/org-pcomplete.el @@ -1,6 +1,6 @@ ;;; org-pcomplete.el --- In-buffer Completion Code -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; John Wiegley diff --git a/lisp/org/org-persist.el b/lisp/org/org-persist.el index f51b0d5634d..e0e28032fb2 100644 --- a/lisp/org/org-persist.el +++ b/lisp/org/org-persist.el @@ -1,6 +1,6 @@ ;;; org-persist.el --- Persist cached data across Emacs sessions -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Ihor Radchenko ;; Keywords: cache, storage diff --git a/lisp/org/org-plot.el b/lisp/org/org-plot.el index ac608bb40e8..2e3ab00504a 100644 --- a/lisp/org/org-plot.el +++ b/lisp/org/org-plot.el @@ -1,6 +1,6 @@ ;;; org-plot.el --- Support for Plotting from Org -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; ;; Author: Eric Schulte ;; Maintainer: TEC @@ -218,13 +218,13 @@ If HARD-MIN and HARD-MAX can be used to fix the ends of the axis." (mapcar #'string-to-number (cdr row)) hard-min hard-max)) table)) - (row-normalised-ranges (mapcar (lambda (r-data) + (row-normalized-ranges (mapcar (lambda (r-data) (let ((val (round (* (plist-get r-data :range-factor) (plist-get r-data :nice-range))))) (if (= (% val 10) 0) (/ val 10) val))) row-data)) - (range-prime-decomposition (mapcar #'org--plot/prime-factors row-normalised-ranges)) + (range-prime-decomposition (mapcar #'org--plot/prime-factors row-normalized-ranges)) (weighted-factors (sort (apply #'org--plot/merge-alists #'+ 0 (mapcar (lambda (factors) (org--plot/item-frequencies factors t)) range-prime-decomposition)) @@ -278,9 +278,9 @@ argument for the FUNCTION." (defun org--plot/item-frequencies (values &optional normalize) "Return an alist indicating the frequency of values in VALUES list. When NORMALIZE is non-nil, the count is divided by the number of values." - (let ((normaliser (if normalize (float (length values)) 1))) + (let ((normalizer (if normalize (float (length values)) 1))) (cl-loop for (n . m) in (seq-group-by #'identity values) - collect (cons n (/ (length m) normaliser))))) + collect (cons n (/ (length m) normalizer))))) (defun org--plot/prime-factors (value) "Return the prime decomposition of VALUE, e.g. for 12, (3 2 2)." diff --git a/lisp/org/org-protocol.el b/lisp/org/org-protocol.el index 80be3ab3133..d02b981da09 100644 --- a/lisp/org/org-protocol.el +++ b/lisp/org/org-protocol.el @@ -1,6 +1,6 @@ ;;; org-protocol.el --- Intercept Calls from Emacsclient to Trigger Custom Actions -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; ;; Authors: Bastien Guerry ;; Daniel M German diff --git a/lisp/org/org-refile.el b/lisp/org/org-refile.el index 4b31b63d817..b4656b7a804 100644 --- a/lisp/org/org-refile.el +++ b/lisp/org/org-refile.el @@ -1,6 +1,6 @@ ;;; org-refile.el --- Refile Org Subtrees -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-src.el b/lisp/org/org-src.el index 49fc4103cc7..9318aad6a81 100644 --- a/lisp/org/org-src.el +++ b/lisp/org/org-src.el @@ -1,6 +1,6 @@ ;;; org-src.el --- Source code examples in Org -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Bastien Guerry diff --git a/lisp/org/org-table.el b/lisp/org/org-table.el index 59e1b49f92c..f0d293be227 100644 --- a/lisp/org/org-table.el +++ b/lisp/org/org-table.el @@ -1,6 +1,6 @@ ;;; org-table.el --- The Table Editor for Org -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-tempo.el b/lisp/org/org-tempo.el index 3716122723a..284f20eb98f 100644 --- a/lisp/org/org-tempo.el +++ b/lisp/org/org-tempo.el @@ -1,6 +1,6 @@ ;;; org-tempo.el --- Template expansion for Org structures -*- lexical-binding: t; -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; ;; Author: Rasmus Pank Roulund ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org-timer.el b/lisp/org/org-timer.el index 9d4e350429b..52e6ced78fb 100644 --- a/lisp/org/org-timer.el +++ b/lisp/org/org-timer.el @@ -1,6 +1,6 @@ ;;; org-timer.el --- Timer code for Org mode -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/org.el b/lisp/org/org.el index 9e220b2d3df..433733537c5 100644 --- a/lisp/org/org.el +++ b/lisp/org/org.el @@ -1,7 +1,7 @@ ;;; org.el --- Outline-based notes management and organizer -*- lexical-binding: t; -*- ;; Carstens outline-mode for keeping track of everything. -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; ;; Author: Carsten Dominik ;; Maintainer: Bastien Guerry @@ -4029,7 +4029,8 @@ Otherwise, these types are allowed: :package-version '(Org . "8.3") :group 'org-sparse-trees) -(defalias 'org-advertized-archive-subtree 'org-archive-subtree) +(define-obsolete-function-alias 'org-advertized-archive-subtree + #'org-archive-subtree "9.8") ;; Declare Column View Code @@ -5898,7 +5899,7 @@ needs to be inserted at a specific position in the font-lock sequence.") (list org-radio-target-regexp '(0 'org-target prepend)) (list org-target-regexp '(0 'org-target prepend)) ;; Macro - '(org-fontify-macros) ; `org-fontify-macro' pepends faces + '(org-fontify-macros) ; `org-fontify-macro' prepends faces ;; TODO keyword (list (format org-heading-keyword-regexp-format org-todo-regexp) @@ -6160,7 +6161,7 @@ If TAG is a number, get the corresponding match group." '(mouse-face t keymap t org-linked-text t invisible t intangible t org-emphasis t)) - (org-fold-core-update-optimisation beg end) + (org-fold-core-update-optimization beg end) (org-remove-font-lock-display-properties beg end))) (defconst org-script-display '(((raise -0.3) (height 0.7)) @@ -6567,10 +6568,10 @@ Return nil before first heading." (org-back-to-heading t) (let ((case-fold-search nil)) (looking-at org-complex-heading-regexp) - ;; When using `org-fold-core--optimise-for-huge-buffers', + ;; When using `org-fold-core--optimize-for-huge-buffers', ;; returned text will be invisible. Clear it up. (save-match-data - (org-fold-core-remove-optimisation (match-beginning 0) (match-end 0))) + (org-fold-core-remove-optimization (match-beginning 0) (match-end 0))) (let ((todo (and (not no-todo) (match-string 2))) (priority (and (not no-priority) (match-string 3))) (headline (pcase (match-string 4) @@ -6583,7 +6584,7 @@ Return nil before first heading." (h h))) (tags (and (not no-tags) (match-string 5)))) ;; Restore cleared optimization. - (org-fold-core-update-optimisation (match-beginning 0) (match-end 0)) + (org-fold-core-update-optimization (match-beginning 0) (match-end 0)) (mapconcat #'identity (delq nil (list todo priority headline tags)) " ")))))) @@ -6600,7 +6601,7 @@ This is a list with the following elements: (save-excursion (org-back-to-heading t) (when (let (case-fold-search) (looking-at org-complex-heading-regexp)) - (org-fold-core-remove-optimisation (match-beginning 0) (match-end 0)) + (org-fold-core-remove-optimization (match-beginning 0) (match-end 0)) (prog1 (list (length (match-string 1)) (org-reduced-level (length (match-string 1))) @@ -6608,7 +6609,7 @@ This is a list with the following elements: (and (match-end 3) (aref (match-string 3) 2)) (match-string-no-properties 4) (match-string-no-properties 5)) - (org-fold-core-update-optimisation (match-beginning 0) (match-end 0)))))) + (org-fold-core-update-optimization (match-beginning 0) (match-end 0)))))) (defun org-get-entry () "Get the entry text, after heading, entire subtree." @@ -10696,7 +10697,7 @@ narrowing." ;; No drawer found. Create one, if permitted. (when create ;; `org-end-of-meta-data' ended up at next heading - ;; * Heading to insert darawer + ;; * Heading to insert drawer ;; * Another heading ;; ;; Unless current heading is the last heading in buffer diff --git a/lisp/org/ox-ascii.el b/lisp/org/ox-ascii.el index a8b23a51888..229a06cc99e 100644 --- a/lisp/org/ox-ascii.el +++ b/lisp/org/ox-ascii.el @@ -1,6 +1,6 @@ ;;; ox-ascii.el --- ASCII Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ox-beamer.el b/lisp/org/ox-beamer.el index d2191a98b6b..0c4c79baeb9 100644 --- a/lisp/org/ox-beamer.el +++ b/lisp/org/ox-beamer.el @@ -1,6 +1,6 @@ ;;; ox-beamer.el --- Beamer Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Nicolas Goaziou diff --git a/lisp/org/ox-html.el b/lisp/org/ox-html.el index e8ae3a134cb..54f60b543a0 100644 --- a/lisp/org/ox-html.el +++ b/lisp/org/ox-html.el @@ -1,6 +1,6 @@ ;;; ox-html.el --- HTML Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Jambunathan K diff --git a/lisp/org/ox-icalendar.el b/lisp/org/ox-icalendar.el index 66c65dc25de..3b7dd45f873 100644 --- a/lisp/org/ox-icalendar.el +++ b/lisp/org/ox-icalendar.el @@ -1,6 +1,6 @@ ;;; ox-icalendar.el --- iCalendar Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Nicolas Goaziou diff --git a/lisp/org/ox-koma-letter.el b/lisp/org/ox-koma-letter.el index 3f9a0385c15..61b624e870d 100644 --- a/lisp/org/ox-koma-letter.el +++ b/lisp/org/ox-koma-letter.el @@ -1,6 +1,6 @@ ;;; ox-koma-letter.el --- KOMA Scrlttr2 Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Alan Schmitt diff --git a/lisp/org/ox-latex.el b/lisp/org/ox-latex.el index e1dfa8bfb20..6598f3fed65 100644 --- a/lisp/org/ox-latex.el +++ b/lisp/org/ox-latex.el @@ -1,6 +1,6 @@ ;;; ox-latex.el --- LaTeX Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Maintainer: Daniel Fleischer diff --git a/lisp/org/ox-man.el b/lisp/org/ox-man.el index f527be3e562..b573b1e59e5 100644 --- a/lisp/org/ox-man.el +++ b/lisp/org/ox-man.el @@ -1,6 +1,6 @@ ;;; ox-man.el --- Man Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Luis R Anaya diff --git a/lisp/org/ox-md.el b/lisp/org/ox-md.el index 0aa0970338a..20d41dc858a 100644 --- a/lisp/org/ox-md.el +++ b/lisp/org/ox-md.el @@ -1,6 +1,6 @@ ;;; ox-md.el --- Markdown Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: org, text, markdown diff --git a/lisp/org/ox-odt.el b/lisp/org/ox-odt.el index 04c70c5b563..be58b152670 100644 --- a/lisp/org/ox-odt.el +++ b/lisp/org/ox-odt.el @@ -1,6 +1,6 @@ ;;; ox-odt.el --- OpenDocument Text Exporter for Org Mode -*- lexical-binding: t; -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Jambunathan K ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ox-org.el b/lisp/org/ox-org.el index cf334dcdb26..61fd813841f 100644 --- a/lisp/org/ox-org.el +++ b/lisp/org/ox-org.el @@ -1,6 +1,6 @@ ;;; ox-org.el --- Org Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Keywords: org, text diff --git a/lisp/org/ox-publish.el b/lisp/org/ox-publish.el index f324f0d881f..88d0940e664 100644 --- a/lisp/org/ox-publish.el +++ b/lisp/org/ox-publish.el @@ -1,5 +1,5 @@ ;;; ox-publish.el --- Publish Related Org Mode Files as a Website -*- lexical-binding: t; -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: David O'Toole ;; Keywords: hypermedia, outlines, text diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el index d98d6b94d02..37a845b5e45 100644 --- a/lisp/org/ox-texinfo.el +++ b/lisp/org/ox-texinfo.el @@ -1,6 +1,6 @@ ;;; ox-texinfo.el --- Texinfo Backend for Org Export Engine -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Jonathan Leech-Pepin ;; Keywords: outlines, hypermedia, calendar, text diff --git a/lisp/org/ox.el b/lisp/org/ox.el index 6b62d8bae7f..8527af3f1ae 100644 --- a/lisp/org/ox.el +++ b/lisp/org/ox.el @@ -1,6 +1,6 @@ ;;; ox.el --- Export Framework for Org Mode -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Nicolas Goaziou ;; Maintainer: Ihor Radchenko @@ -6425,7 +6425,7 @@ them." ("it" :default "Riferimenti") ("nl" :default "Bronverwijzingen") ("nn" :default "Kjelder") - ("pl" :default "Odwołania") ; could be "Referencje" but I think its too englishy + ("pl" :default "Odwołania") ; could be "Referencje" but I think it's too Englishy ("pt_BR" :html "Referências" :default "Referências" :ascii "Referencias") ("ro" :default "Bibliografie") ("sl" :default "Reference") diff --git a/lisp/outline.el b/lisp/outline.el index 9b0b8d6ea92..4fb953b0f7c 100644 --- a/lisp/outline.el +++ b/lisp/outline.el @@ -1,6 +1,6 @@ ;;; outline.el --- outline mode commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1986-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: outlines diff --git a/lisp/paren.el b/lisp/paren.el index a286811b74b..0a2e47e66a6 100644 --- a/lisp/paren.el +++ b/lisp/paren.el @@ -1,6 +1,6 @@ ;;; paren.el --- highlight matching paren -*- lexical-binding:t -*- -;; Copyright (C) 1993, 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: rms@gnu.org ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/password-cache.el b/lisp/password-cache.el index 5701ac7df66..2bf6e4b10bc 100644 --- a/lisp/password-cache.el +++ b/lisp/password-cache.el @@ -1,6 +1,6 @@ ;;; password-cache.el --- Read passwords, possibly using a password cache. -*- lexical-binding: t -*- -;; Copyright (C) 1999-2000, 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2000, 2003-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Created: 2003-12-21 diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el index 0e6be7d3755..21b8da68e40 100644 --- a/lisp/pcmpl-cvs.el +++ b/lisp/pcmpl-cvs.el @@ -1,6 +1,6 @@ ;;; pcmpl-cvs.el --- functions for dealing with cvs completions -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Package: pcomplete diff --git a/lisp/pcmpl-git.el b/lisp/pcmpl-git.el index 02af87f839d..fc33b8bfa53 100644 --- a/lisp/pcmpl-git.el +++ b/lisp/pcmpl-git.el @@ -1,6 +1,6 @@ ;;; pcmpl-git.el --- Completions for Git -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Package: pcomplete diff --git a/lisp/pcmpl-gnu.el b/lisp/pcmpl-gnu.el index fe732f18bef..e25d686b9f0 100644 --- a/lisp/pcmpl-gnu.el +++ b/lisp/pcmpl-gnu.el @@ -1,6 +1,6 @@ ;;; pcmpl-gnu.el --- completions for GNU project tools -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Package: pcomplete diff --git a/lisp/pcmpl-linux.el b/lisp/pcmpl-linux.el index f10f38b217a..abf56260915 100644 --- a/lisp/pcmpl-linux.el +++ b/lisp/pcmpl-linux.el @@ -1,6 +1,6 @@ ;;; pcmpl-linux.el --- functions for dealing with GNU/Linux completions -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Package: pcomplete diff --git a/lisp/pcmpl-rpm.el b/lisp/pcmpl-rpm.el index d3992f82227..b5858e6d3d1 100644 --- a/lisp/pcmpl-rpm.el +++ b/lisp/pcmpl-rpm.el @@ -1,6 +1,6 @@ ;;; pcmpl-rpm.el --- functions for dealing with rpm completions -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Package: pcomplete diff --git a/lisp/pcmpl-unix.el b/lisp/pcmpl-unix.el index 8a10b5cd679..1c990a6b9c5 100644 --- a/lisp/pcmpl-unix.el +++ b/lisp/pcmpl-unix.el @@ -1,6 +1,6 @@ ;;; pcmpl-unix.el --- standard UNIX completions -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Package: pcomplete diff --git a/lisp/pcmpl-x.el b/lisp/pcmpl-x.el index dbd8600a2e7..7d8b9e92da2 100644 --- a/lisp/pcmpl-x.el +++ b/lisp/pcmpl-x.el @@ -1,6 +1,6 @@ ;;; pcmpl-x.el --- completion for miscellaneous tools -*- lexical-binding: t; -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Leo Liu ;; Keywords: processes, tools, convenience diff --git a/lisp/pcomplete.el b/lisp/pcomplete.el index c3b7f9d52d3..65ccfd9700c 100644 --- a/lisp/pcomplete.el +++ b/lisp/pcomplete.el @@ -1,6 +1,6 @@ ;;; pcomplete.el --- programmable completion -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Keywords: processes abbrev diff --git a/lisp/pgtk-dnd.el b/lisp/pgtk-dnd.el index 1b349595a1d..92518c234a6 100644 --- a/lisp/pgtk-dnd.el +++ b/lisp/pgtk-dnd.el @@ -1,6 +1,6 @@ ;;; pgtk-dnd.el --- drag and drop support for GDK -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: window, drag, drop diff --git a/lisp/pixel-scroll.el b/lisp/pixel-scroll.el index 94605d61dfc..23e63add994 100644 --- a/lisp/pixel-scroll.el +++ b/lisp/pixel-scroll.el @@ -1,6 +1,6 @@ ;;; pixel-scroll.el --- Scroll a line smoothly -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Author: Tak Kunihiro ;; Keywords: mouse ;; Package: emacs @@ -90,7 +90,6 @@ (require 'mwheel) (require 'subr-x) (require 'ring) -(require 'cua-base) (defvar pixel-wait 0 "Idle time on each step of pixel scroll specified in second. @@ -820,6 +819,7 @@ It is a vector of the form [ VELOCITY TIME SIGN ]." (end-of-buffer (message (error-message-string '(end-of-buffer))))))))) +;;;###autoload (defun pixel-scroll-interpolate-down () "Interpolate a scroll downwards by one page." (interactive) @@ -830,15 +830,28 @@ It is a vector of the form [ VELOCITY TIME SIGN ]." ;; since we want exactly 1 ;; page to be scrolled. nil 1) - (cua-scroll-up))) + (cond + ((eobp) + (scroll-up)) ; signal error + (t + (condition-case nil + (scroll-up) + (end-of-buffer (goto-char (point-max)))))))) +;;;###autoload (defun pixel-scroll-interpolate-up () "Interpolate a scroll upwards by one page." (interactive) (if pixel-scroll-precision-interpolate-page (pixel-scroll-precision-interpolate (window-text-height nil t) nil 1) - (cua-scroll-down))) + (cond + ((bobp) + (scroll-down)) ; signal error + (t + (condition-case nil + (scroll-down) + (beginning-of-buffer (goto-char (point-min)))))))) ;;;###autoload (define-minor-mode pixel-scroll-precision-mode @@ -850,6 +863,8 @@ precisely, according to the turning of the mouse wheel." :keymap pixel-scroll-precision-mode-map (setq mwheel-coalesce-scroll-events (not pixel-scroll-precision-mode)) + ;; This works around some issues described in bug#65214. + ;; Ideally this would not be needed because it breaks some other things. (setq-default make-cursor-line-fully-visible (not pixel-scroll-precision-mode))) diff --git a/lisp/play/5x5.el b/lisp/play/5x5.el index 159ed29adba..fd7a146fbb8 100644 --- a/lisp/play/5x5.el +++ b/lisp/play/5x5.el @@ -1,6 +1,6 @@ ;;; 5x5.el --- simple little puzzle game -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Dave Pearson ;; Created: 1998-10-03 diff --git a/lisp/play/animate.el b/lisp/play/animate.el index a3dff26d57c..29b34eee00e 100644 --- a/lisp/play/animate.el +++ b/lisp/play/animate.el @@ -1,6 +1,6 @@ ;;; animate.el --- make text dance -*- lexical-binding:t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Maintainer: Richard Stallman ;; Keywords: games diff --git a/lisp/play/blackbox.el b/lisp/play/blackbox.el index 0c75f516eb8..68f22ce596e 100644 --- a/lisp/play/blackbox.el +++ b/lisp/play/blackbox.el @@ -1,6 +1,6 @@ ;;; blackbox.el --- blackbox game in Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1992, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985-1987, 1992, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: F. Thomas May diff --git a/lisp/play/bubbles.el b/lisp/play/bubbles.el index 3f20f5c6fb2..2be2a910e9a 100644 --- a/lisp/play/bubbles.el +++ b/lisp/play/bubbles.el @@ -1,6 +1,6 @@ ;;; bubbles.el --- Puzzle game for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; URL: http://ulf.epplejasper.de/ diff --git a/lisp/play/cookie1.el b/lisp/play/cookie1.el index fa92715f99d..3d75f48fc78 100644 --- a/lisp/play/cookie1.el +++ b/lisp/play/cookie1.el @@ -1,6 +1,6 @@ ;;; cookie1.el --- retrieve random phrases from fortune cookie files -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/play/decipher.el b/lisp/play/decipher.el index a35e7592feb..59b9817f040 100644 --- a/lisp/play/decipher.el +++ b/lisp/play/decipher.el @@ -1,6 +1,6 @@ ;;; decipher.el --- cryptanalyze monoalphabetic substitution ciphers -*- lexical-binding: t; -*- ;; -;; Copyright (C) 1995-1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1996, 2001-2026 Free Software Foundation, Inc. ;; ;; Author: Christopher J. Madsen ;; Keywords: games diff --git a/lisp/play/dissociate.el b/lisp/play/dissociate.el index fd943f94269..66a74b21f1f 100644 --- a/lisp/play/dissociate.el +++ b/lisp/play/dissociate.el @@ -1,6 +1,6 @@ ;;; dissociate.el --- scramble text amusingly for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: games diff --git a/lisp/play/doctor.el b/lisp/play/doctor.el index 0e75bd108eb..54bdf799f95 100644 --- a/lisp/play/doctor.el +++ b/lisp/play/doctor.el @@ -1,6 +1,6 @@ ;;; doctor.el --- psychological help for frustrated users -*- lexical-binding: t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: games diff --git a/lisp/play/dunnet.el b/lisp/play/dunnet.el index d2c5811366a..fe9a2d0259a 100644 --- a/lisp/play/dunnet.el +++ b/lisp/play/dunnet.el @@ -1,6 +1,6 @@ ;;; dunnet.el --- text adventure for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1992-1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Ron Schnell ;; Created: 25 Jul 1992 diff --git a/lisp/play/fortune.el b/lisp/play/fortune.el index f917b3f701a..578239eaeee 100644 --- a/lisp/play/fortune.el +++ b/lisp/play/fortune.el @@ -1,6 +1,6 @@ ;;; fortune.el --- use fortune to create signatures -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Holger Schauer ;; Keywords: games utils mail diff --git a/lisp/play/gamegrid.el b/lisp/play/gamegrid.el index 1be77e2c9a9..bc2a4b27eab 100644 --- a/lisp/play/gamegrid.el +++ b/lisp/play/gamegrid.el @@ -1,6 +1,6 @@ ;;; gamegrid.el --- library for implementing grid-based games on Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Glynn Clements ;; Old-Version: 1.02 diff --git a/lisp/play/gametree.el b/lisp/play/gametree.el index 8ffddfc7275..7a574660512 100644 --- a/lisp/play/gametree.el +++ b/lisp/play/gametree.el @@ -1,6 +1,6 @@ ;;; gametree.el --- manage game analysis trees in Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1997, 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Ian T Zimmerman ;; Created: Wed Dec 10 07:41:46 PST 1997 diff --git a/lisp/play/gomoku.el b/lisp/play/gomoku.el index 0c309358631..fa2c587b4c9 100644 --- a/lisp/play/gomoku.el +++ b/lisp/play/gomoku.el @@ -1,6 +1,6 @@ ;;; gomoku.el --- Gomoku game between you and Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1988, 1994, 1996, 2001-2025 Free Software Foundation, +;; Copyright (C) 1988, 1994, 1996, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Philippe Schnoebelen diff --git a/lisp/play/handwrite.el b/lisp/play/handwrite.el index 5e893f71029..e4a5f4917f0 100644 --- a/lisp/play/handwrite.el +++ b/lisp/play/handwrite.el @@ -1,6 +1,6 @@ ;;; handwrite.el --- turns your emacs buffer into a handwritten document -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Danny Roozendaal (was: ) ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/play/life.el b/lisp/play/life.el index fa777b73dec..d988e6311ba 100644 --- a/lisp/play/life.el +++ b/lisp/play/life.el @@ -1,6 +1,6 @@ ;;; life.el --- John Horton Conway's Game of Life -*- lexical-binding:t -*- -;; Copyright (C) 1988, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988, 2001-2026 Free Software Foundation, Inc. ;; Author: Kyle Jones ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/play/morse.el b/lisp/play/morse.el index 8690f1ed5f0..721f053b204 100644 --- a/lisp/play/morse.el +++ b/lisp/play/morse.el @@ -1,6 +1,6 @@ ;;; morse.el --- convert text to morse code and back -*- lexical-binding: t -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Rick Farnbach ;; Keywords: games diff --git a/lisp/play/mpuz.el b/lisp/play/mpuz.el index 62209a56538..a5125da3dfb 100644 --- a/lisp/play/mpuz.el +++ b/lisp/play/mpuz.el @@ -1,6 +1,6 @@ ;;; mpuz.el --- multiplication puzzle for GNU Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1990, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1990, 2001-2026 Free Software Foundation, Inc. ;; Author: Philippe Schnoebelen ;; Overhauled: Daniel Pfeiffer diff --git a/lisp/play/pong.el b/lisp/play/pong.el index 53704e0fe71..89d7d107fd3 100644 --- a/lisp/play/pong.el +++ b/lisp/play/pong.el @@ -1,6 +1,6 @@ ;;; pong.el --- classical implementation of pong -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Benjamin Drieu ;; Keywords: games diff --git a/lisp/play/snake.el b/lisp/play/snake.el index 3a446db439c..723e9e77d98 100644 --- a/lisp/play/snake.el +++ b/lisp/play/snake.el @@ -1,6 +1,6 @@ ;;; snake.el --- implementation of Snake for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Glynn Clements ;; Created: 1997-09-10 diff --git a/lisp/play/solitaire.el b/lisp/play/solitaire.el index 570759235ab..f260e0df8ad 100644 --- a/lisp/play/solitaire.el +++ b/lisp/play/solitaire.el @@ -1,6 +1,6 @@ ;;; solitaire.el --- game of solitaire in Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Jan Schormann ;; Created: Fri afternoon, Jun 3, 1994 diff --git a/lisp/play/spook.el b/lisp/play/spook.el index bb7cebd8944..4faff80ca87 100644 --- a/lisp/play/spook.el +++ b/lisp/play/spook.el @@ -1,6 +1,6 @@ ;;; spook.el --- spook phrase utility for overloading the NSA line eater -*- lexical-binding:t -*- -;; Copyright (C) 1988, 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988, 1993, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: games diff --git a/lisp/play/tetris.el b/lisp/play/tetris.el index 5f4b4059d47..e6497081ee6 100644 --- a/lisp/play/tetris.el +++ b/lisp/play/tetris.el @@ -1,6 +1,6 @@ ;;; tetris.el --- implementation of Tetris for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Glynn Clements ;; Old-Version: 2.01 diff --git a/lisp/play/zone.el b/lisp/play/zone.el index 0d33a9783d6..513ae9b023e 100644 --- a/lisp/play/zone.el +++ b/lisp/play/zone.el @@ -1,6 +1,6 @@ ;;; zone.el --- idle display hacks -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Victor Zandy ;; Maintainer: emacs-devel@gnu.org @@ -295,7 +295,7 @@ if they might expose privileged or secret information." special-mode ;; Special/internal buffers image-mode ;; image buffers authinfo-mode ;; encrypted buffers - zone--buffer-encrpted-p + zone--buffer-encrypted-p "\\`\\*scratch\\*\\'" ;; zone will fallback to scratch , but ;; ignore it in the first pass ) diff --git a/lisp/plstore.el b/lisp/plstore.el index 5aa8137f619..08c9f5a423e 100644 --- a/lisp/plstore.el +++ b/lisp/plstore.el @@ -1,6 +1,6 @@ ;;; plstore.el --- secure plist store -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Daiki Ueno ;; Keywords: PGP, GnuPG diff --git a/lisp/printing.el b/lisp/printing.el index 99408eef6fe..b6be982f5cb 100644 --- a/lisp/printing.el +++ b/lisp/printing.el @@ -1,6 +1,6 @@ ;;; printing.el --- printing utilities -*- lexical-binding:t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, print, PostScript diff --git a/lisp/proced.el b/lisp/proced.el index ca2fa694665..75c657bc86d 100644 --- a/lisp/proced.el +++ b/lisp/proced.el @@ -1,6 +1,6 @@ ;;; proced.el --- operate on system processes like dired -*- lexical-binding:t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Roland Winkler ;; Keywords: Processes, Unix @@ -2311,13 +2311,13 @@ STRING is an overall summary of the failures." (describe-mode) (message (substitute-command-keys proced-help-string)))) -(defun proced-undo () +(defun proced-undo (&optional arg) "Undo in a Proced buffer. +A numeric ARG serves as a repeat count. This doesn't recover killed processes, it just undoes changes in the Proced buffer. You can use it to recover marks." - (interactive nil proced-mode) - (let (buffer-read-only) - (undo)) + (interactive "P" proced-mode) + (undo-ignore-read-only arg) (message "Change in Proced buffer undone. Killed processes cannot be recovered by Emacs.")) diff --git a/lisp/profiler.el b/lisp/profiler.el index 291bcb4a6b1..b3441e82add 100644 --- a/lisp/profiler.el +++ b/lisp/profiler.el @@ -1,6 +1,6 @@ ;;; profiler.el --- UI and helper functions for Emacs's native profiler -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Tomohiro Matsuyama ;; Keywords: lisp diff --git a/lisp/progmodes/antlr-mode.el b/lisp/progmodes/antlr-mode.el index 89da0e34148..83c028ee63d 100644 --- a/lisp/progmodes/antlr-mode.el +++ b/lisp/progmodes/antlr-mode.el @@ -1,6 +1,6 @@ ;;; antlr-mode.el --- major mode for ANTLR grammar files -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Christoph Wedler ;; Keywords: languages, ANTLR, code generator @@ -178,7 +178,7 @@ set other variables, see `antlr-tool-version-variables'." For each antlr-VAR in this list, function `antlr-set-local-variables' makes it buffer-local and uses the variable VERSION-VAR, i.e., antlr-v2-VAR, antlr-v3-VAR or antlr-v4-VAR to set its value, -dependending on the value VERSION of `antlr-tool-version'. +depending on the value VERSION of `antlr-tool-version'. If that variable VERSION-VAR does not exist, ignore antlr-VAR if it is listed after the symbol &optional, or issue an error otherwise.") @@ -250,7 +250,7 @@ The value is used to set other variables, see `antlr-language-variables'.") For each antlr-VAR in this list, function `antlr-set-local-variables' makes it buffer-local and uses the variable LANGUAGE-VAR, i.e., antlr-java-VAR, antlr-cpp-VAR, and so on to set its value, -dependending on the value LANGUAGE of `antlr-language'. +depending on the value LANGUAGE of `antlr-language'. If that variable LANGUAGE-VAR does not exist, ignore antlr-VAR if it is listed after the symbol &optional, or issue an error otherwise.") @@ -1619,7 +1619,7 @@ with value `upcase', only return alist with tokenref names." ;; --- simplified v2 grammar ------------------------------------------------- ;; file: ("header" STRING? ACTION)? OPTIONS? ACTION? class* -;; class: "class" ID // moved preable action to file rule +;; class: "class" ID // moved preamble action to file rule ;; ("extends" ("Lexer"|"Parser"|"TreeParser") ID?)? ";" ;; OPTIONS? TOKENS? ACTION? rule* ;; rule: ("protected"|"public"|"private")? ID "!"? @@ -2145,7 +2145,7 @@ is undefined." (defun antlr-try-rule-or-grammar-option (requested bor) "Try whether rule or grammar option can be applied. Called by function `antlr-option-level' with arguments REQUESTED, -and BOR poiting to the beginning of the current rule." +and BOR pointing to the beginning of the current rule." (or (and (memq requested '(nil 3)) (elt antlr-options-alists 2) (progn (goto-char bor) 3)) (and (memq requested '(nil 2)) (cadr antlr-options-alists) diff --git a/lisp/progmodes/asm-mode.el b/lisp/progmodes/asm-mode.el index 2d1c645f42c..a9d5d0d6e0e 100644 --- a/lisp/progmodes/asm-mode.el +++ b/lisp/progmodes/asm-mode.el @@ -1,6 +1,6 @@ ;;; asm-mode.el --- mode for editing assembler code -*- lexical-binding: t; -*- -;; Copyright (C) 1991, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991, 2001-2026 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/autoconf.el b/lisp/progmodes/autoconf.el index c5b076bfacc..be525005eff 100644 --- a/lisp/progmodes/autoconf.el +++ b/lisp/progmodes/autoconf.el @@ -1,6 +1,6 @@ ;;; autoconf.el --- mode for editing Autoconf configure.ac files -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: languages diff --git a/lisp/progmodes/bat-mode.el b/lisp/progmodes/bat-mode.el index 30a63071007..34e2557c819 100644 --- a/lisp/progmodes/bat-mode.el +++ b/lisp/progmodes/bat-mode.el @@ -1,6 +1,6 @@ ;;; bat-mode.el --- Major mode for editing DOS/Windows scripts -*- lexical-binding: t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Arni Magnusson ;; Keywords: languages diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el index 753718efa63..eae1eac70f7 100644 --- a/lisp/progmodes/bug-reference.el +++ b/lisp/progmodes/bug-reference.el @@ -1,6 +1,6 @@ ;;; bug-reference.el --- buttonize bug references -*- lexical-binding: t; -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Tom Tromey ;; Created: 21 Mar 2007 diff --git a/lisp/progmodes/c-ts-common.el b/lisp/progmodes/c-ts-common.el index 08857f9ab20..9d120ea4696 100644 --- a/lisp/progmodes/c-ts-common.el +++ b/lisp/progmodes/c-ts-common.el @@ -1,6 +1,6 @@ ;;; c-ts-common.el --- Utilities for C like Languages -*- lexical-binding: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Maintainer : 付禹安 (Yuan Fu) ;; Package : emacs @@ -254,7 +254,7 @@ This function should be called at BOL. Used by ;; Prefix: same. ((looking-at (rx (* (syntax whitespace)) "//" - (* "/") + (* (or "/" "!")) ; Support //! style comments in Rust. (* (syntax whitespace)))) (match-string 0)) ;; (3) @@ -691,8 +691,8 @@ This rule works for a wide range of scenarios including complex situations. Major modes should use this as the fallback rule, and add exception rules before it to cover the cases it doesn't apply. -This rule tries to be smart and ignore proprocessor node in some -situations. By default, any node that has \"proproc\" in its type are +This rule tries to be smart and ignore preprocessor node in some +situations. By default, any node that has \"preproc\" in its type are considered a preprocessor node. If that heuristic is inaccurate, define a `preproc' thing in `treesit-thing-settings', and this rule will use the thing definition instead. diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index e17f388216e..d6a482ee94c 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -1,6 +1,6 @@ ;;; c-ts-mode.el --- tree-sitter support for C and C++ -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Theodor Thornhill ;; Maintainer : Theodor Thornhill @@ -128,6 +128,7 @@ just toggles it when zero or omitted." (c-ts-mode-set-modeline)))) (defun c-ts-mode-set-modeline () + "Set major mode name to either C or C++ in mode-line." (setq mode-name (concat (if (eq major-mode 'c-ts-mode) "C" "C++") (string-trim-right comment-start))) @@ -551,7 +552,7 @@ MODE can be `c' or `cpp'. STYLE can be `gnu', `k&r', `linux', `bsd'." ('cpp `((cpp . ,rules)))))) (defun c-ts-mode--parenthesized-expression-indent-rule (_node parent &rest _) - "Indent rule that indents aprenthesized expression. + "Indent rule that indents parenthesized expression. Aligns the next line to the first sibling @@ -827,15 +828,15 @@ MODE is either `c' or `cpp'." ;; expressions, see `c-ts-mode--fontify-declarator' for ;; inspiration. '((assignment_expression - left: (identifier) @font-lock-variable-name-face) + left: (identifier) @font-lock-variable-use-face) (assignment_expression left: (field_expression field: (_) @font-lock-property-use-face)) (assignment_expression left: (pointer_expression - (identifier) @font-lock-variable-name-face)) + (identifier) @font-lock-variable-use-face)) (assignment_expression left: (subscript_expression - (identifier) @font-lock-variable-name-face)) + (identifier) @font-lock-variable-use-face)) (init_declarator declarator: (_) @c-ts-mode--fontify-declarator)) :feature 'function diff --git a/lisp/progmodes/cc-align.el b/lisp/progmodes/cc-align.el index 5766c87388f..957bdc07f60 100644 --- a/lisp/progmodes/cc-align.el +++ b/lisp/progmodes/cc-align.el @@ -1,6 +1,6 @@ ;;; cc-align.el --- custom indentation functions for CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2004- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cc-awk.el b/lisp/progmodes/cc-awk.el index 245901c6e6d..784be9df909 100644 --- a/lisp/progmodes/cc-awk.el +++ b/lisp/progmodes/cc-awk.el @@ -1,6 +1,6 @@ ;;; cc-awk.el --- AWK specific code within cc-mode. -*- lexical-binding: t -*- -;; Copyright (C) 1988, 1994, 1996, 2000-2025 Free Software Foundation, +;; Copyright (C) 1988, 1994, 1996, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Alan Mackenzie (originally based on awk-mode.el) diff --git a/lisp/progmodes/cc-bytecomp.el b/lisp/progmodes/cc-bytecomp.el index 0eb8f246492..d5092a7733c 100644 --- a/lisp/progmodes/cc-bytecomp.el +++ b/lisp/progmodes/cc-bytecomp.el @@ -1,6 +1,6 @@ ;;; cc-bytecomp.el --- compile time setup for proper compilation -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Martin Stjernholm ;; Maintainer: bug-cc-mode@gnu.org diff --git a/lisp/progmodes/cc-cmds.el b/lisp/progmodes/cc-cmds.el index d5881f808ff..94f4b8ac968 100644 --- a/lisp/progmodes/cc-cmds.el +++ b/lisp/progmodes/cc-cmds.el @@ -1,6 +1,6 @@ ;;; cc-cmds.el --- user level commands for CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2003- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cc-defs.el b/lisp/progmodes/cc-defs.el index 9af34b1b9b0..a41f7eb3622 100644 --- a/lisp/progmodes/cc-defs.el +++ b/lisp/progmodes/cc-defs.el @@ -1,6 +1,6 @@ ;;; cc-defs.el --- compile time definitions for CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2003- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cc-engine.el b/lisp/progmodes/cc-engine.el index 361b2967c5d..bc7d8372f11 100644 --- a/lisp/progmodes/cc-engine.el +++ b/lisp/progmodes/cc-engine.el @@ -1,6 +1,6 @@ ;;; cc-engine.el --- core syntax guessing engine for CC mode -*- lexical-binding:t; coding: utf-8 -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2001- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cc-fonts.el b/lisp/progmodes/cc-fonts.el index 76db492b2c7..9103787df7a 100644 --- a/lisp/progmodes/cc-fonts.el +++ b/lisp/progmodes/cc-fonts.el @@ -1,6 +1,6 @@ ;; cc-fonts.el --- font lock support for CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Authors: 2003- Alan Mackenzie ;; 2002- Martin Stjernholm diff --git a/lisp/progmodes/cc-guess.el b/lisp/progmodes/cc-guess.el index 88311c668a5..601324054a9 100644 --- a/lisp/progmodes/cc-guess.el +++ b/lisp/progmodes/cc-guess.el @@ -1,6 +1,6 @@ ;;; cc-guess.el --- guess indentation values by scanning existing code -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2006, 2011-2025 Free Software +;; Copyright (C) 1985, 1987, 1992-2006, 2011-2026 Free Software ;; Foundation, Inc. ;; Author: 1994-1995 Barry A. Warsaw diff --git a/lisp/progmodes/cc-langs.el b/lisp/progmodes/cc-langs.el index 2296cbdd7a3..c1a1ffa2c7f 100644 --- a/lisp/progmodes/cc-langs.el +++ b/lisp/progmodes/cc-langs.el @@ -1,6 +1,6 @@ ;;; cc-langs.el --- language specific settings for CC Mode -*- lexical-binding: t; coding: utf-8 -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2002- Alan Mackenzie ;; 1998- Martin Stjernholm @@ -2724,7 +2724,7 @@ will be handled." c '("auto")) (c-lang-defconst c-no-type-with-equals-key - ;; Regexp mathing an entry from `c-no-type-with-equals-kwds'. + ;; Regexp matching an entry from `c-no-type-with-equals-kwds'. t (c-make-keywords-re t (c-lang-const c-no-type-with-equals-kwds))) (c-lang-defvar c-no-type-with-equals-key (c-lang-const c-no-type-with-equals-key)) diff --git a/lisp/progmodes/cc-menus.el b/lisp/progmodes/cc-menus.el index 9881617e20f..5006ad78b54 100644 --- a/lisp/progmodes/cc-menus.el +++ b/lisp/progmodes/cc-menus.el @@ -1,6 +1,6 @@ ;;; cc-menus.el --- imenu support for CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 1998- Martin Stjernholm ;; 1992-1999 Barry A. Warsaw diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index 2fe96152b33..6eed5b53c19 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el @@ -1,6 +1,6 @@ ;;; cc-mode.el --- major mode for editing C and similar languages -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2003- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cc-styles.el b/lisp/progmodes/cc-styles.el index 275d28a1209..fb849e399cb 100644 --- a/lisp/progmodes/cc-styles.el +++ b/lisp/progmodes/cc-styles.el @@ -1,6 +1,6 @@ ;;; cc-styles.el --- support for styles in CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2004- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cc-vars.el b/lisp/progmodes/cc-vars.el index bb7f3cbe257..4ac18869400 100644 --- a/lisp/progmodes/cc-vars.el +++ b/lisp/progmodes/cc-vars.el @@ -1,6 +1,6 @@ ;;; cc-vars.el --- user customization variables for CC Mode -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1987, 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1987, 1992-2026 Free Software Foundation, Inc. ;; Authors: 2002- Alan Mackenzie ;; 1998- Martin Stjernholm diff --git a/lisp/progmodes/cfengine.el b/lisp/progmodes/cfengine.el index acdb9a10cf7..3155a343e04 100644 --- a/lisp/progmodes/cfengine.el +++ b/lisp/progmodes/cfengine.el @@ -1,6 +1,6 @@ ;;; cfengine.el --- mode for editing Cfengine files -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Maintainer: Ted Zlatanov diff --git a/lisp/progmodes/cl-font-lock.el b/lisp/progmodes/cl-font-lock.el index bb163329181..400a516c1c8 100644 --- a/lisp/progmodes/cl-font-lock.el +++ b/lisp/progmodes/cl-font-lock.el @@ -1,5 +1,5 @@ ;;; cl-font-lock.el --- Pretty Common Lisp font locking -*- lexical-binding: t; -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Yue Daian ;; Maintainer: Spenser Truex diff --git a/lisp/progmodes/cmacexp.el b/lisp/progmodes/cmacexp.el index 35ebf506dfb..060cf06d05d 100644 --- a/lisp/progmodes/cmacexp.el +++ b/lisp/progmodes/cmacexp.el @@ -1,6 +1,6 @@ ;;; cmacexp.el --- expand C macros in a region -*- lexical-binding: t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Francesco Potortì ;; Adapted-By: ESR diff --git a/lisp/progmodes/cmake-ts-mode.el b/lisp/progmodes/cmake-ts-mode.el index 8930f96a2cf..3e01b06f971 100644 --- a/lisp/progmodes/cmake-ts-mode.el +++ b/lisp/progmodes/cmake-ts-mode.el @@ -1,6 +1,6 @@ ;;; cmake-ts-mode.el --- tree-sitter support for CMake -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Randy Taylor ;; Maintainer : Randy Taylor diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 9e87434900a..d2e92d7da8b 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -1,6 +1,6 @@ ;;; compile.el --- run compiler as inferior of Emacs, parse error messages -*- lexical-binding:t -*- -;; Copyright (C) 1985-1987, 1993-1999, 2001-2025 Free Software +;; Copyright (C) 1985-1987, 1993-1999, 2001-2026 Free Software ;; Foundation, Inc. ;; Authors: Roland McGrath , @@ -954,7 +954,11 @@ The value nil as an element means to try the default directory." (string :tag "Directory")))) ;;;###autoload -(defcustom compile-command "make -k " +(defcustom compile-command + ;; Divide by less than 2 and round up to avoid using all processors on + ;; multi-core systems, but use at least one processor on a single-core + ;; system. + (format "make -k -j%d " (ceiling (num-processors) 1.5)) "Last shell command used to do a compilation; default for next compilation. Sometimes it is useful for files to supply local values for this variable. diff --git a/lisp/progmodes/cperl-mode.el b/lisp/progmodes/cperl-mode.el index 23ff955f389..d3014fee2b7 100644 --- a/lisp/progmodes/cperl-mode.el +++ b/lisp/progmodes/cperl-mode.el @@ -1,6 +1,6 @@ ;;; cperl-mode.el --- Perl code editing commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: Ilya Zakharevich ;; Bob Olson diff --git a/lisp/progmodes/cpp.el b/lisp/progmodes/cpp.el index c6b7e0c9acf..395e7a5bb3b 100644 --- a/lisp/progmodes/cpp.el +++ b/lisp/progmodes/cpp.el @@ -1,6 +1,6 @@ ;;; cpp.el --- highlight or hide text according to cpp conditionals -*- lexical-binding: t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: c, faces, tools diff --git a/lisp/progmodes/csharp-mode.el b/lisp/progmodes/csharp-mode.el index c1db5439ab5..6faf5a49da8 100644 --- a/lisp/progmodes/csharp-mode.el +++ b/lisp/progmodes/csharp-mode.el @@ -1,6 +1,6 @@ ;;; csharp-mode.el --- Support for editing C# -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Theodor Thornhill ;; Jostein Kjønigsen @@ -717,7 +717,11 @@ compilation and evaluation time conflicts." ((parent-is "arrow_function") parent-bol csharp-ts-mode-indent-offset) ((parent-is "parenthesized_expression") parent-bol csharp-ts-mode-indent-offset) ((parent-is "using_statement") parent-bol 0) - ((parent-is "lambda_expression") parent-bol 0)))) + ((parent-is "lambda_expression") parent-bol 0) + ((parent-is "try_statement") parent-bol 0) + ((parent-is "catch_filter_clause") parent-bol 0) + ((parent-is "preproc_if") parent-bol 0) + ((parent-is "preproc_region") parent-bol 0)))) (defvar csharp-ts-mode--keywords '("using" "namespace" "class" "if" "else" "throw" "new" "for" @@ -732,7 +736,7 @@ compilation and evaluation time conflicts." (defgroup csharp-ts-mode-faces nil "Font faces." - :group 'cshap) + :group 'csharp) (defface csharp-ts-mode-attribute-face '((t . (:inherit font-lock-property-use-face))) @@ -885,7 +889,7 @@ compilation and evaluation time conflicts." '((this_expression) @font-lock-keyword-face) '("this" @font-lock-keyword-face)) - ;; avoid fontifying indentifiers with a keyword-values as identifiers. + ;; Avoid fontifying identifiers with a keyword-values as identifiers. ((identifier) @font-lock-keyword-face (:match ,(concat "\\`" (regexp-opt csharp-ts-mode--keywords t) "\\'") @font-lock-keyword-face))) diff --git a/lisp/progmodes/cwarn.el b/lisp/progmodes/cwarn.el index 02f1cd38425..1d298f9e72c 100644 --- a/lisp/progmodes/cwarn.el +++ b/lisp/progmodes/cwarn.el @@ -1,6 +1,6 @@ ;;; cwarn.el --- highlight suspicious C and C++ constructions -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Anders Lindgren ;; Keywords: c, languages, faces diff --git a/lisp/progmodes/dcl-mode.el b/lisp/progmodes/dcl-mode.el index 346b3c3a13b..0bc92c4ecdb 100644 --- a/lisp/progmodes/dcl-mode.el +++ b/lisp/progmodes/dcl-mode.el @@ -1,6 +1,6 @@ ;;; dcl-mode.el --- major mode for editing DCL command files -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Odd Gripenstam ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/dockerfile-ts-mode.el b/lisp/progmodes/dockerfile-ts-mode.el index c2e8b1f3264..1d42c239b84 100644 --- a/lisp/progmodes/dockerfile-ts-mode.el +++ b/lisp/progmodes/dockerfile-ts-mode.el @@ -1,6 +1,6 @@ ;;; dockerfile-ts-mode.el --- tree-sitter support for Dockerfiles -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Randy Taylor ;; Maintainer : Randy Taylor diff --git a/lisp/progmodes/ebnf-abn.el b/lisp/progmodes/ebnf-abn.el index 7efcbd7efa0..07338dc9470 100644 --- a/lisp/progmodes/ebnf-abn.el +++ b/lisp/progmodes/ebnf-abn.el @@ -1,6 +1,6 @@ ;;; ebnf-abn.el --- parser for ABNF (Augmented BNF) -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf-bnf.el b/lisp/progmodes/ebnf-bnf.el index 03d086dc86d..b518c4bec2d 100644 --- a/lisp/progmodes/ebnf-bnf.el +++ b/lisp/progmodes/ebnf-bnf.el @@ -1,6 +1,6 @@ ;;; ebnf-bnf.el --- parser for EBNF -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el index a14e99b3fc0..0bc7e35cbbc 100644 --- a/lisp/progmodes/ebnf-dtd.el +++ b/lisp/progmodes/ebnf-dtd.el @@ -1,6 +1,6 @@ ;;; ebnf-dtd.el --- parser for DTD (Data Type Description for XML) -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf-ebx.el b/lisp/progmodes/ebnf-ebx.el index 92e257adc79..a707a0501cd 100644 --- a/lisp/progmodes/ebnf-ebx.el +++ b/lisp/progmodes/ebnf-ebx.el @@ -1,6 +1,6 @@ ;;; ebnf-ebx.el --- parser for EBNF used to specify XML (EBNFX) -*- lexical-binding: t; -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf-iso.el b/lisp/progmodes/ebnf-iso.el index 4b8544f50fd..2255695cc9f 100644 --- a/lisp/progmodes/ebnf-iso.el +++ b/lisp/progmodes/ebnf-iso.el @@ -1,6 +1,6 @@ ;;; ebnf-iso.el --- parser for ISO EBNF -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf-otz.el b/lisp/progmodes/ebnf-otz.el index ce9ff618eb3..6dbb74724cb 100644 --- a/lisp/progmodes/ebnf-otz.el +++ b/lisp/progmodes/ebnf-otz.el @@ -1,6 +1,6 @@ ;;; ebnf-otz.el --- syntactic chart OpTimiZer -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf-yac.el b/lisp/progmodes/ebnf-yac.el index 9a72c0d3d19..6306f8d83b0 100644 --- a/lisp/progmodes/ebnf-yac.el +++ b/lisp/progmodes/ebnf-yac.el @@ -1,6 +1,6 @@ ;;; ebnf-yac.el --- parser for Yacc/Bison -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebnf2ps.el b/lisp/progmodes/ebnf2ps.el index d5a10eab2a8..2795bbab2b9 100644 --- a/lisp/progmodes/ebnf2ps.el +++ b/lisp/progmodes/ebnf2ps.el @@ -1,6 +1,6 @@ ;;; ebnf2ps.el --- translate an EBNF to a syntactic chart on PostScript -*- lexical-binding:t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: text, ebnf, PostScript diff --git a/lisp/progmodes/ebrowse.el b/lisp/progmodes/ebrowse.el index 72e80811fb5..2d0ab0fdeaf 100644 --- a/lisp/progmodes/ebrowse.el +++ b/lisp/progmodes/ebrowse.el @@ -1,6 +1,6 @@ ;;; ebrowse.el --- Emacs C++ class browser & tags facility -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/eglot.el b/lisp/progmodes/eglot.el index 7d8b2fd138f..4752b0100d9 100644 --- a/lisp/progmodes/eglot.el +++ b/lisp/progmodes/eglot.el @@ -1,13 +1,13 @@ ;;; eglot.el --- The Emacs Client for LSP servers -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. -;; Version: 1.19 +;; Version: 1.21 ;; Author: João Távora ;; Maintainer: João Távora ;; URL: https://github.com/joaotavora/eglot ;; Keywords: convenience, languages -;; Package-Requires: ((emacs "26.3") (eldoc "1.14.0") (external-completion "0.1") (flymake "1.4.2") (jsonrpc "1.0.26") (project "0.9.8") (seq "2.23") (xref "1.6.2")) +;; Package-Requires: ((emacs "26.3") (eldoc "1.14.0") (external-completion "0.1") (flymake "1.4.2") (jsonrpc "1.0.26") (project "0.11.2") (seq "2.23") (xref "1.6.2")) ;; This is a GNU ELPA :core package. Avoid adding functionality ;; that is not available in the version of Emacs recorded above or any @@ -238,7 +238,7 @@ automatically)." (defvar eglot-server-programs ;; FIXME: Maybe this info should be distributed into the major modes ;; themselves where they could set a buffer-local `eglot-server-program' - ;; instead of keeping this database centralized. + ;; which would allow deprecating this database. ;; FIXME: With `derived-mode-add-parents' in Emacs≥30, some of ;; those entries can be simplified, but we keep them for when ;; `eglot.el' is installed via GNU ELPA in an older Emacs. @@ -248,7 +248,8 @@ automatically)." (vimrc-mode . ("vim-language-server" "--stdio")) ((python-mode python-ts-mode) . ,(eglot-alternatives - '("pylsp" "pyls" ("basedpyright-langserver" "--stdio") + '(("rass" "python") + "pylsp" "pyls" ("basedpyright-langserver" "--stdio") ("pyright-langserver" "--stdio") ("pyrefly" "lsp") ("ty" "server") @@ -262,7 +263,9 @@ automatically)." (tsx-ts-mode :language-id "typescriptreact") (typescript-ts-mode :language-id "typescript") (typescript-mode :language-id "typescript")) - . ("typescript-language-server" "--stdio")) + . ,(eglot-alternatives + '(("rass ts") + ("typescript-language-server" "--stdio")))) ((bash-ts-mode sh-mode) . ("bash-language-server" "start")) ((php-mode phps-mode php-ts-mode) . ,(eglot-alternatives @@ -279,7 +282,8 @@ automatically)." . ,(eglot-alternatives '(("solargraph" "socket" "--port" :autoport) "ruby-lsp"))) (haskell-mode - . ("haskell-language-server-wrapper" "--lsp")) + . ,(eglot-alternatives + '(("haskell-language-server-wrapper" "--lsp") "static-ls"))) (elm-mode . ("elm-language-server")) (mint-mode . ("mint" "ls")) ((kotlin-mode kotlin-ts-mode) . ("kotlin-language-server")) @@ -305,7 +309,8 @@ automatically)." (racket-mode . ("racket" "-l" "racket-langserver")) ((latex-mode plain-tex-mode context-mode texinfo-mode bibtex-mode tex-mode) . ,(eglot-alternatives '("digestif" "texlab"))) - (erlang-mode . ("erlang_ls" "--transport" "stdio")) + (erlang-mode . ("elp" "server")) + (wat-mode . ("wat_server")) ((yaml-ts-mode yaml-mode) . ("yaml-language-server" "--stdio")) ((toml-ts-mode conf-toml-mode) . ("tombi" "lsp")) (nix-mode . ,(eglot-alternatives '("nil" "rnix-lsp" "nixd"))) @@ -492,25 +497,26 @@ the LSP connection. That can be done by `eglot-reconnect'." (const :tag "Pretty-printed lisp" lisp))))) :package-version '(Eglot . "1.17.30")) -(defcustom eglot-confirm-server-edits '((eglot-rename . nil) - (t . maybe-summary)) +(defcustom eglot-confirm-server-edits '((t . maybe-summary)) "Control if changes proposed by LSP should be confirmed with user. -If this variable's value is the symbol `diff', a diff buffer is -pops up, allowing the user to apply each change individually. If -the symbol `summary' or any other non-nil value, the user is -prompted in the minibuffer with aa short summary of changes. The -symbols `maybe-diff' and `maybe-summary' mean that the -confirmation is offered to the user only if the changes target -files visited in buffers. Finally, a nil value means all changes -are applied directly without any confirmation. +If this variable's value is the symbol `diff', a diff buffer pops +up, allowing the user to apply each change individually. If the +symbol `summary' or any other non-nil value, the user is prompted +in the minibuffer with a short summary of changes. The symbols +`maybe-diff' and `maybe-summary' mean that the confirmation is +offered to the user only if the changes target files not visited +in buffers. Finally, a nil value means all changes are applied +directly without any confirmation. -If this variable's value can also be an alist ((COMMAND . ACTION) -...) where COMMAND is a symbol designating a command, such as -`eglot-rename', `eglot-code-actions', -`eglot-code-action-quickfix', etc. ACTION is one of the symbols -described above. The value t for COMMAND is accepted and its -ACTION is the default value for commands not in the alist." +This variable's value can also be an alist ((KEY . ACTION) ...) +where KEY is either a symbol designating the invoked Emacs command +(such as `eglot-rename', `eglot-code-actions', +`eglot-code-action-quickfix', etc.), or a list of file operation +kinds (`create', `rename', `delete') contained in the edit. +ACTION is one of the symbols described above. The value t for +KEY is accepted and its ACTION is the default value for commands +or file operation kinds not in the alist." :type (let ((basic-choices '((const :tag "Use diff" diff) (const :tag "Summarize and prompt" summary) @@ -518,8 +524,9 @@ ACTION is the default value for commands not in the alist." (const :tag "Maybe summarize and prompt" maybe-summary) (const :tag "Don't confirm" nil)))) `(choice ,@basic-choices - (alist :tag "Per-command alist" + (alist :tag "Per-command or per-kind alist" :key-type (choice (function :tag "Command") + (repeat :tag "File operation kinds" symbol) (const :tag "Default" t)) :value-type (choice . ,basic-choices)))) :package-version '(Eglot . "1.17.30")) @@ -579,7 +586,7 @@ under cursor." (const :tag "Call hierarchies" :callHierarchyProvider) (const :tag "On-demand \"pull\" diagnostics" :diagnosticProvider))) -(defcustom eglot-advertise-cancellation nil +(defcustom eglot-advertise-cancellation t "If non-nil, Eglot attempts to inform server of canceled requests. This is done by sending an additional '$/cancelRequest' notification every time Eglot decides to forget a request. The effect of this @@ -778,7 +785,10 @@ This can be useful when using docker to run a language server.") (HierarchyItem (:name :kind) (:tags :detail :uri :range :selectionRange :data)) (CallHierarchyIncomingCall (:from :fromRanges) ()) - (CallHierarchyOutgoingCall (:to :fromRanges) ())) + (CallHierarchyOutgoingCall (:to :fromRanges) ()) + (CreateFile (:kind :uri) (:options)) + (RenameFile (:kind :oldUri :newUri) (:options)) + (DeleteFile (:kind :uri) (:options))) "Alist (INTERFACE-NAME . INTERFACE) of known external LSP interfaces. INTERFACE-NAME is a symbol designated by the spec as @@ -1006,7 +1016,8 @@ treated as in `eglot--dbind'." (:method (server command arguments) (eglot--request server :workspace/executeCommand - `(:command ,(format "%s" command) :arguments ,arguments)))) + `(:command ,(format "%s" command) :arguments ,arguments) + :timeout nil))) (cl-defgeneric eglot-execute (server action) "Ask SERVER to execute ACTION. @@ -1020,7 +1031,7 @@ object." (cl-remf action :title) (eglot-execute server action)) (((ExecuteCommandParams)) - (eglot--request server :workspace/executeCommand action)) + (eglot--request server :workspace/executeCommand action :timeout nil)) (((CodeAction) edit command data) (if (and (null edit) (null command) data (eglot-server-capable :codeActionProvider :resolveProvider)) @@ -1059,7 +1070,9 @@ object." :workspace (list :applyEdit t :executeCommand `(:dynamicRegistration :json-false) - :workspaceEdit `(:documentChanges t) + :workspaceEdit `(:documentChanges t + :resourceOperations ["create" "delete" "rename"] + :failureHandling "abort") :didChangeWatchedFiles `(:dynamicRegistration ,(if (eglot--trampish-p s) :json-false t) @@ -1127,9 +1140,10 @@ object." :isPreferredSupport t) :formatting `(:dynamicRegistration :json-false) :rangeFormatting `(:dynamicRegistration :json-false) - :rename `(:dynamicRegistration :json-false) + :rename `(:dynamicRegistration :json-false + :prepareSupport t) :semanticTokens `(:dynamicRegistration :json-false - :requests '(:full (:delta t)) + :requests (:full (:delta t)) :overlappingTokenSupport t :multilineTokenSupport t :tokenTypes [,@eglot-semantic-token-types] @@ -1148,7 +1162,8 @@ object." :tagSupport `(:valueSet [,@(mapcar - #'car eglot--tag-faces)]))) + #'car eglot--tag-faces)])) + :$streamingDiagnostics `(:dynamicRegistration :json-false)) :window `(:showDocument (:support t) :showMessage (:messageActionItem (:additionalPropertiesSupport t)) @@ -1276,6 +1291,61 @@ If optional MARKERS, make markers instead." (list :start (eglot--pos-to-lsp-position from) :end (eglot--pos-to-lsp-position to))) +(defvar eglot-move-to-linepos-function) +(cl-defun eglot--call-with-ranged (objs key fn &aux (curline 0)) + (unless key + (setq key (lambda (o) (plist-get o :range)))) + (cl-flet ((moveit (line col) + (forward-line (- line curline)) + (setq curline line) + (unless (eobp) + (unless (wholenump col) (setq col 0)) + (funcall eglot-move-to-linepos-function col)) + (point))) + (eglot--widening + (goto-char (point-min)) + (cl-loop + with pairs = (if key + (mapcar (lambda (obj) (cons obj (funcall key obj))) + objs) + (mapcar (lambda (range) (cons range range)) + objs)) + with sorted = + (sort pairs + (lambda (p1 p2) + (< (plist-get (plist-get (cdr p1) :start) :line) + (plist-get (plist-get (cdr p2) :start) :line)))) + for (object . range) in sorted + for spos = (plist-get range :start) + for epos = (plist-get range :end) + for sline = (plist-get spos :line) + for scol = (plist-get spos :character) + for eline = (plist-get epos :line) + for ecol = (plist-get epos :character) + collect (funcall fn object (cons (moveit sline scol) + (moveit eline ecol))))))) + +(cl-defmacro eglot--collecting-ranged ((object-sym region-sym + objects + &optional key) + &rest body) + "Iterate over OBJECTS, binding each element and its region. +For each element in OBJECTS, bind OBJECT-SYM to the element and +REGION-SYM to its computed Emacs region (a cons of buffer positions). +Evaluate BODY and collect the result into a list. Return that list. + +KEY, if non-nil, should be a function to extract the LSP range from each +element. If nil, elements are assumed to be plists with `:range' keys. + +This macro uses optimized incremental navigation instead of repeatedly +calling `eglot-range-region', providing significant performance benefits +when processing many ranges." + (declare (indent 1) (debug t)) + `(eglot--call-with-ranged + ,objects + ,key + (lambda (,object-sym ,region-sym) ,@body))) + (defun eglot-server-capable (&rest feats) "Determine if current server is capable of FEATS." (unless (cl-some (lambda (feat) @@ -1309,7 +1379,7 @@ If optional MARKERS, make markers instead." (cl-defmethod initialize-instance :before ((_server eglot-lsp-server) &optional args) (cl-remf args :initializationOptions)) -(defvar-local eglot--docver 0 +(defvar-local eglot--docver -1 "LSP document version. Bumped on `eglot--after-change'.") (defvar eglot--servers-by-project (make-hash-table :test #'equal) @@ -1369,6 +1439,12 @@ PRESERVE-BUFFERS as in `eglot-shutdown', which see." (maphash (lambda (f s) (when (eq s server) (remhash f eglot--servers-by-xrefed-file))) eglot--servers-by-xrefed-file) + ;; Cleanup entries in 'flymake-list-only-diagnostics' + (setq flymake-list-only-diagnostics + (cl-delete-if + (lambda (x) (eq server + (get-text-property 0 'eglot--server (car x)))) + flymake-list-only-diagnostics)) (cond ((eglot--shutdown-requested server) t) ((not (eglot--inhibit-autoreconnect server)) @@ -1871,6 +1947,14 @@ in project `%s'." "Message out with FORMAT with ARGS." (message "[eglot] %s" (apply #'eglot--format format args))) +(defun eglot--format-server-message (_server type format &rest args) + "Format SERVER-originated message with FORMAT with ARGS. +TYPE is a number indicating the message severity." + (concat + (propertize "[eglot] " + 'face (if (or (not type) (<= type 1)) 'error)) + (apply #'eglot--format format args))) + (defun eglot--warn (format &rest args) "Warning message with FORMAT and ARGS." (apply #'eglot--message (concat "(warning) " format) args) @@ -1899,15 +1983,22 @@ in project `%s'." "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 - (cond ((and cancel-on-input - eglot-advertise-cancellation) - (lambda (id) - (jsonrpc-notify server '$/cancelRequest `(:id ,id)))) - (cancel-on-input)) - :cancel-on-input-retval cancel-on-input-retval)) + (cl-flet ((cancel (id) + (jsonrpc-notify server '$/cancelRequest `(:id ,id)))) + (condition-case oops + (jsonrpc-request server method params + :timeout timeout + :cancel-on-input + (if (and cancel-on-input eglot-advertise-cancellation) + #'cancel + cancel-on-input) + :cancel-on-quit + (and eglot-advertise-cancellation #'cancel) + :cancel-on-input-retval cancel-on-input-retval) + (jsonrpc-error + (let* ((data (cddr oops)) (ec (alist-get 'jsonrpc-error-code data))) + (if (zerop ec) (eglot--message (alist-get 'jsonrpc-error-message data)) + (signal 'jsonrpc-error (cdr oops)))))))) (defvar-local eglot--inflight-async-requests nil "An plist of symbols to lists of JSONRPC ids. @@ -1940,31 +2031,40 @@ according to `eglot-advertise-cancellation'.") (timeout-fn nil timeout-fn-supplied-p) (timeout nil timeout-supplied-p) hint - &aux moreargs) + &aux moreargs id + (buf (current-buffer)) + (inflight eglot--inflight-async-requests)) "Like `jsonrpc-async-request', but for Eglot LSP requests. +SUCCESS-FN, ERROR-FN and TIMEOUT-FN run in buffer of call site. HINT argument is a symbol passed as DEFERRED to `jsonrpc-async-request' and also used as a hint of the request cancellation mechanism (see `eglot-advertise-cancellation')." - (cl-labels ((clearing-fn (fn) - (lambda (&rest args) - (when fn (apply fn args)) - (cl-remf eglot--inflight-async-requests hint)))) + (cl-labels + ((wrapfn (fn) + (lambda (&rest args) + (eglot--when-live-buffer buf + (cond (eglot-advertise-cancellation + (when-let* ((tail (and fn (plist-member inflight hint)))) + (when (memq id (cadr tail)) + (apply fn args)) + (setf (cadr tail) (delete id (cadr tail))))) + (t + (apply fn args))))))) (eglot--cancel-inflight-async-requests (list hint)) (when timeout-supplied-p (setq moreargs (nconc `(:timeout ,timeout) moreargs))) (when hint (setq moreargs (nconc `(:deferred ,hint) moreargs))) - (let ((id - (car (apply #'jsonrpc-async-request - server method params - :success-fn (clearing-fn success-fn) - :error-fn (clearing-fn error-fn) - :timeout-fn (clearing-fn timeout-fn) - moreargs)))) - (when (and hint eglot-advertise-cancellation) - (push id - (plist-get eglot--inflight-async-requests hint))) - id))) + (setq id + (car (apply #'jsonrpc-async-request + server method params + :success-fn (wrapfn success-fn) + :error-fn (wrapfn error-fn) + :timeout-fn (wrapfn timeout-fn) + moreargs))) + (when (and hint eglot-advertise-cancellation) + (push id (plist-get inflight hint))) + id)) (cl-defun eglot--delete-overlays (&optional (prop 'eglot--overlays)) (eglot--widening @@ -2113,21 +2213,22 @@ MARKUP is either an LSP MarkedString or MarkupContent object." (setq-local markdown-fontify-code-blocks-natively t) (insert string) (let ((inhibit-message t) - (message-log-max nil) - match) + (message-log-max nil)) (ignore-errors (delay-mode-hooks (funcall render-mode))) (font-lock-ensure) (goto-char (point-min)) (let ((inhibit-read-only t)) - (when (fboundp 'text-property-search-forward) - ;; If `render-mode' is `gfm-view-mode', the `invisible' - ;; regions are set to `markdown-markup'. Set them to 't' - ;; instead, since this has actual meaning in the "*eldoc*" - ;; buffer where we're taking this string (#bug79552). - (while (setq match (text-property-search-forward 'invisible)) - (put-text-property (prop-match-beginning match) - (prop-match-end match) - 'invisible t)))) + ;; If `render-mode' is `gfm-view-mode', the `invisible' + ;; regions are set to `markdown-markup'. Set them to 't' + ;; instead, since this has actual meaning in the "*eldoc*" + ;; buffer where we're taking this string (#bug79552). + (cl-loop for from = (point) then to + while (< from (point-max)) + for inv = (get-text-property from 'invisible) + for to = (or (next-single-property-change from 'invisible) + (point-max)) + when inv + do (put-text-property from to 'invisible t))) (string-trim (buffer-string)))))) (defun eglot--read-server (prompt &optional dont-if-just-the-one) @@ -2175,7 +2276,7 @@ and just return it. PROMPT shouldn't end with a question mark." (define-key map [remap display-local-help] #'eldoc-doc-buffer) map)) -(defvar-local eglot--flymake-push-report-fn nil +(defvar-local eglot--flymake-report-fn nil "Current flymake report function for this buffer.") (defvar-local eglot--saved-bindings nil @@ -2223,13 +2324,25 @@ Use `eglot-managed-p' to determine if current buffer is managed.") (defvar eglot--highlights nil "Overlays for `eglot-highlight-eldoc-function'.") -(defvar-local eglot--diagnostics nil - "A list (DIAGNOSTICS VERSION RESULT-ID) for current buffer. -DIAGNOSTICS is a list of Flymake diagnostics objects. VERSION is the -LSP Document version reported for DIAGNOSTICS (comparable to -`eglot--docver') or nil if server didn't bother. RESULT-ID is an -optional string identifying this diagnostic result for pull -diagnostics, used for incremental updates.") +(defvar-local eglot--pulled-diagnostics nil + "A list (DIAGNOSTICS VERSION RESULT-ID) \"pulled\" for current buffer. +DIAGNOSTICS is a sequence of LSP or Flymake diagnostics objects. +RESULT-ID identifies this diagnostic result as is used for incremental +updates.") + +(defvar-local eglot--pushed-diagnostics nil + "A list (DIAGNOSTICS VERSION) \"pushed\" for current buffer. +DIAGNOSTICS is a sequence of LSP or Flymake diagnostics objects. +VERSION is the LSP Document version reported for DIAGNOSTICS (comparable +to `eglot--docver') or nil if server didn't bother.") + +(defvar-local eglot--streamed-diagnostics nil + "A (VERSION MAP PREV-MAP) description of \"streamed\" diagnostics. +MAP and PREV-MAP are alists of (TOKEN . DIAGS) entries. DIAGS is a +sequence of LSP/Flymake diagnostics objects. TOKEN identifies the +source of a partial report. VERSION is the LSP Document version +reported for diagnostics in MAP. PREV-MAP contains the diagnostics of +the previous reports for TOKEN.") (defvar-local eglot--suggestion-overlay (make-overlay 0 0) "Overlay for `eglot-code-action-suggestion'.") @@ -2270,8 +2383,9 @@ diagnostics, used for incremental updates.") (eglot--setq-saving company-tooltip-align-annotations t) (eglot--setq-saving eldoc-documentation-strategy #'eldoc-documentation-compose) - (unless (eglot--stay-out-of-p 'imenu) - (add-function :before-until (local 'imenu-create-index-function) + (unless (or (eglot--stay-out-of-p 'imenu) + (not (eglot-server-capable :documentSymbolProvider))) + (add-function :override (local 'imenu-create-index-function) #'eglot-imenu)) (unless (eglot--stay-out-of-p 'flymake) (flymake-mode 1)) (unless (eglot--stay-out-of-p 'eldoc) @@ -2283,6 +2397,7 @@ diagnostics, used for incremental updates.") (eldoc-mode 1)) (cl-pushnew (current-buffer) (eglot--managed-buffers (eglot-current-server)))) (t + (setq eglot--docver -1) (eglot-inlay-hints-mode -1) (eglot-semantic-tokens-mode -1) (eglot--delete-overlays 'eglot--overlay) @@ -2309,10 +2424,8 @@ diagnostics, used for incremental updates.") (cl-loop for (var . saved-binding) in eglot--saved-bindings do (set (make-local-variable var) saved-binding)) (remove-function (local 'imenu-create-index-function) #'eglot-imenu) - (when eglot--flymake-push-report-fn - (setq eglot--diagnostics nil) - (eglot--flymake-push) - (setq eglot--flymake-push-report-fn nil)) + (eglot--flymake-reset) + (setq eglot--flymake-report-fn nil) (run-hooks 'eglot-managed-mode-hook) (let ((server eglot--cached-server)) (setq eglot--cached-server nil) @@ -2322,7 +2435,7 @@ diagnostics, used for incremental updates.") (when (and eglot-autoshutdown (null (eglot--managed-buffers server)) ;; Don't shutdown if up again soon. - (with-no-warnings (not revert-buffer-in-progress-p))) + (not (eglot--revert-in-progress-p))) (eglot-shutdown server))))))) (defun eglot--managed-mode-off () @@ -2355,9 +2468,10 @@ diagnostics, used for incremental updates.") (when revert-buffer-preserve-modes (eglot--signal-textDocument/didOpen) (when eglot-semantic-tokens-mode - (trace-values "OH YEAH!?") - (eglot-semantic-tokens-mode)) - )) + (eglot-semantic-tokens-mode)))) + +(defun eglot--revert-in-progress-p () + (with-no-warnings revert-buffer-in-progress-p)) (defun eglot--maybe-activate-editing-mode () "Maybe activate `eglot--managed-mode'. @@ -2367,7 +2481,6 @@ If it is activated, also signal textDocument/didOpen." ;; Called when `revert-buffer-in-progress-p' is t but ;; `revert-buffer-preserve-modes' is nil. (when (and buffer-file-name (eglot-current-server)) - (setq eglot--diagnostics nil) (eglot--managed-mode) (eglot--signal-textDocument/didOpen) ;; Run user hook after 'textDocument/didOpen' so server knows @@ -2398,9 +2511,8 @@ If it is activated, also signal textDocument/didOpen." (when update-mode-line (force-mode-line-update t))))))) -(defun eglot-manual () "Read Eglot's manual." - (declare (obsolete info "1.10")) - (interactive) (info "(eglot)")) +;;;###autoload +(defun eglot-manual () "Read Eglot's manual." (interactive) (info "(eglot)")) ;;;###autoload (defun eglot-upgrade-eglot (&rest _) "Update Eglot to latest version." @@ -2572,12 +2684,14 @@ Uses THING, FACE, DEFS and PREPEND." (defconst eglot-mode-line-error '(:eval (when-let* ((server (eglot-current-server)) - (last-error (and server (jsonrpc-last-error server)))) - (eglot--mode-line-props - "error" 'compilation-mode-line-fail - '((mouse-3 eglot-clear-status "Clear this status")) - (format "An error occurred: %s\n" (plist-get last-error - :message))))) + (last-error (and server (jsonrpc-last-error server))) + (code (plist-get last-error :code))) + (unless (zerop code) + (eglot--mode-line-props + "error" 'compilation-mode-line-fail + '((mouse-3 eglot-clear-status "Clear this status")) + (format "An error occurred: %s\n" (plist-get last-error + :message)))))) "Eglot mode line construct for LSP errors.") (defconst eglot-mode-line-pending-requests @@ -2598,14 +2712,16 @@ 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) - collect (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))) - into reports - finally (return (mapconcat #'identity reports " /"))))) + for v = (nth 4 pr) + when v sum 1 into n and sum v into acc + collect (format "(%s) %s %s" (nth 1 pr) (nth 2 pr) (nth 3 pr)) + into blurbs finally return + (unless (zerop n) + (eglot--mode-line-props + (format "%d%%%%" (/ acc n 1.0)) + 'eglot-mode-line + nil + (mapconcat #'identity blurbs "\n")))))) "Eglot mode line construct for LSP progress reports.") (defconst eglot-mode-line-action-suggestion @@ -2637,40 +2753,6 @@ still unanswered LSP requests to the server\n")))) when rest concat (if titlep ":" "/"))))) "] "))) - -;;; Flymake customization -;;; -(put 'eglot-note 'flymake-category 'flymake-note) -(put 'eglot-warning 'flymake-category 'flymake-warning) -(put 'eglot-error 'flymake-category 'flymake-error) - -(defun eglot--flymake-diagnostics (beg &optional end) - "Like `flymake-diagnostics', but for Eglot-specific diagnostics." - (cl-loop for diag in (flymake-diagnostics beg end) - for data = (flymake-diagnostic-data diag) - for lsp-diag = (alist-get 'eglot-lsp-diag data) - for version = (alist-get 'eglot--doc-version data) - when (and lsp-diag (or (null version) - (= version eglot--docver))) - collect diag)) - -(defun eglot--diag-to-lsp-diag (diag) - (alist-get 'eglot-lsp-diag (flymake-diagnostic-data diag))) - -(defvar eglot-diagnostics-map - (let ((map (make-sparse-keymap))) - (define-key map [mouse-2] #'eglot-code-actions-at-mouse) - (define-key map [left-margin mouse-1] #'eglot-code-actions-at-mouse) - map) - "Keymap active in Eglot-backed Flymake diagnostic overlays.") - -(cl-loop for i from 1 - for type in '(eglot-note eglot-warning eglot-error) - do (put type 'flymake-overlay-control - `((mouse-face . highlight) - (priority . ,(+ 50 i)) - (keymap . ,eglot-diagnostics-map)))) - ;;; Protocol implementation (Requests, notifications, etc) ;;; @@ -2688,27 +2770,21 @@ still unanswered LSP requests to the server\n")))) (jsonrpc-error "Unknown request method `%s'" method))) (cl-defmethod eglot-handle-notification - (_server (_method (eql window/showMessage)) &key type message) + (server (_method (eql window/showMessage)) &key type message) "Handle notification window/showMessage." - (eglot--message (propertize "Server reports (type=%s): %s" - 'face (if (<= type 1) 'error)) - type message)) + (message (eglot--format-server-message server type message))) (cl-defmethod eglot-handle-request - (_server (_method (eql window/showMessageRequest)) + (server (_method (eql window/showMessageRequest)) &key type message actions &allow-other-keys) "Handle server request window/showMessageRequest. ACTIONS is a list of MessageActionItem, this has the user choose one and return it back to the server. :null is returned if the list was empty." (let* ((actions (mapcar (lambda (a) (cons (plist-get a :title) a)) actions)) (label (completing-read - (concat - (format (propertize "[eglot] Server reports (type=%s): %s" - 'face (if (or (not type) (<= type 1)) 'error)) - type message) - "\nChoose an option: ") - (or actions '("OK")) - nil t (caar actions)))) + (eglot--format-server-message server type message) + (or (mapcar #'car actions) '("OK")) + nil t))) (if (and actions label) (cdr (assoc label actions)) :null))) (cl-defmethod eglot-handle-notification @@ -2759,56 +2835,6 @@ Value is (TRUENAME . (:uri STR)), where STR is what is sent to the server on textDocument/didOpen and similar calls. TRUENAME is the expensive cached value of `file-truename'.") -(cl-defmethod eglot-handle-notification - (server (_method (eql textDocument/publishDiagnostics)) - &key uri diagnostics version - &allow-other-keys) ; FIXME: doesn't respect `eglot-strict-mode' - "Handle notification publishDiagnostics." - (cl-flet ((find-it (abspath) - ;; `find-buffer-visiting' would be natural, but calls the - ;; potentially slow `file-truename' (bug#70036). - (cl-loop for b in (eglot--managed-buffers server) - when (with-current-buffer b - (equal (car eglot--TextDocumentIdentifier-cache) - abspath)) - return b))) - (if-let* ((path (expand-file-name (eglot-uri-to-path uri))) - (buffer (find-it path))) - (with-current-buffer buffer - (cl-loop - initially - (if (and version (/= version eglot--docver)) - (cl-return)) - (setq - ;; if no explicit version received, assume it's current. - version eglot--docver - flymake-list-only-diagnostics - (assoc-delete-all path flymake-list-only-diagnostics)) - for diag-spec across diagnostics - collect (eglot--flymake-make-diag diag-spec version) - into diags - finally - (setq eglot--diagnostics (list diags version nil)) - (when (not (null flymake-no-changes-timeout )) - ;; only add to current report if Flymake - ;; starts on idle-timer (github#957) - (eglot--flymake-push)))) - (cl-loop - for diag-spec across diagnostics - collect (eglot--dbind ((Diagnostic) code range message severity source) diag-spec - (let* ((start (plist-get range :start)) - (line (1+ (plist-get start :line))) - (char (1+ (plist-get start :character)))) - (flymake-make-diagnostic - path (cons line char) nil - (eglot--flymake-diag-type severity) - (list source code message)))) - into diags - finally - (setq flymake-list-only-diagnostics - (assoc-delete-all path flymake-list-only-diagnostics)) - (push (cons path diags) flymake-list-only-diagnostics))))) - (cl-defun eglot--register-unregister (server things how) "Helper for `registerCapability'. THINGS are either registrations or unregisterations (sic)." @@ -2834,8 +2860,19 @@ THINGS are either registrations or unregisterations (sic)." (cl-defmethod eglot-handle-request (_server (_method (eql workspace/applyEdit)) &key _label edit) "Handle server request workspace/applyEdit." - (eglot--apply-workspace-edit edit last-command) - `(:applied t)) + (condition-case-unless-debug oops + (pcase-let ((`(,retval ,reason) (eglot--apply-workspace-edit edit last-command))) + `(:applied ,retval ,@(and reason `(:failureReason ,reason)))) + (quit + (jsonrpc-error + :code 32000 :data + (list :applied :json-false + :failureReason + (format "'%s'%s." (car oops) + (if (cdr oops) (format " (%s)" (cdr oops)) ""))))) + (t + ;; resignal (unfortunately like this) + (signal (car oops) (cdr oops))))) (cl-defmethod eglot-handle-request (server (_method (eql workspace/workspaceFolders))) @@ -2949,7 +2986,7 @@ buffer." (cl-defmethod jsonrpc-connection-ready-p ((_server eglot-lsp-server) _what) "Tell if SERVER is ready for WHAT in current buffer." - (and (cl-call-next-method) (not eglot--recent-changes))) + (and (cl-call-next-method) (not (cl-minusp eglot--docver)) (not eglot--recent-changes))) (defvar-local eglot--change-idle-timer nil "Idle timer for didChange signals.") @@ -3149,12 +3186,14 @@ When called interactively, use the currently active server" (setq eglot--recent-changes nil eglot--docver 0 eglot--TextDocumentIdentifier-cache nil) + (eglot--flymake-reset) (jsonrpc-notify (eglot--current-server-or-lose) :textDocument/didOpen `(:textDocument ,(eglot--TextDocumentItem)))) (defun eglot--signal-textDocument/didClose () "Send textDocument/didClose to server." + (setq eglot--docver -1) (with-demoted-errors "[eglot] error sending textDocument/didClose: %s" (jsonrpc-notify @@ -3185,6 +3224,130 @@ When called interactively, use the currently active server" :text (buffer-substring-no-properties (point-min) (point-max)) :textDocument (eglot--TextDocumentIdentifier))))) +(defun eglot--find-buffer-visiting (server abspath) + ;; `find-buffer-visiting' would be natural, but calls the + ;; potentially slow `file-truename' (bug#70036). + (cl-loop for b in (eglot--managed-buffers server) + when (with-current-buffer b + (equal (car eglot--TextDocumentIdentifier-cache) + abspath)) + return b)) + + +;;; Flymake integration + +(put 'eglot-note 'flymake-category 'flymake-note) +(put 'eglot-warning 'flymake-category 'flymake-warning) +(put 'eglot-error 'flymake-category 'flymake-error) + +(defvar eglot-diagnostics-map + (let ((map (make-sparse-keymap))) + (define-key map [mouse-2] #'eglot-code-actions-at-mouse) + (define-key map [left-margin mouse-1] #'eglot-code-actions-at-mouse) + map) + "Keymap active in Eglot-backed Flymake diagnostic overlays.") + +(cl-loop for i from 1 + for type in '(eglot-note eglot-warning eglot-error) + do (put type 'flymake-overlay-control + `((mouse-face . highlight) + (priority . ,(+ 50 i)) + (keymap . ,eglot-diagnostics-map)))) + +(defun eglot--flymake-sniff-diagnostics (beg &optional end) + "Like `flymake-diagnostics', but for Eglot-specific diagnostics." + (cl-loop for diag in (flymake-diagnostics beg end) + for data = (flymake-diagnostic-data diag) + for lsp-diag = (alist-get 'eglot-lsp-diag data) + for version = (alist-get 'eglot--doc-version data) + when (and lsp-diag (or (null version) + (= version eglot--docver))) + collect diag)) + +(cl-defmacro eglot--flymake-report-1 (diags mode &key (version 'eglot--docver) force) + "Maybe convert, report and store the diagnostics objects DIAGS. +DIAGS is either a vector of LSP diagnostics or a list of Flymake +diagnostics. MODE can be `:stay' or `:clear' depending on whether we +want to accumulate or reset diagnostics in the buffer. VERSION is the +version the diagnostics pertain to." + ;; JT@2026-01-10: criteria for "incremental" reports could be + ;; tightened to e.g. check eglot--capf-session nillness, but we'd have + ;; to schedule an after-session re-report, and that's way too complex + `(when (and (or ,force flymake-no-changes-timeout) + eglot--flymake-report-fn) + (when (and ,diags (vectorp ,diags)) + (setf ,diags + (eglot--collecting-ranged (o r ,diags) + (eglot--flymake-make-diag o ,version r)))) + (eglot--flymake-report-2 ,diags ,mode))) + +(cl-defmethod eglot-handle-notification + (server (_method (eql textDocument/publishDiagnostics)) + &key uri diagnostics version + &allow-other-keys) + "Handle notification publishDiagnostics." + (eglot--flymake-handle-push + server uri diagnostics version + (lambda (diags) + (setq eglot--pushed-diagnostics (list diags eglot--docver)) + (when (not (null flymake-no-changes-timeout )) + ;; only add to current report if Flymake + ;; starts on idle-timer (github#957) + (eglot--flymake-report-push+pulled))))) + +(cl-defmethod eglot-handle-notification + (server (_method (eql $/streamDiagnostics)) + &key uri diagnostics version token kind + &allow-other-keys) + "Handle notification $/streamDiagnostics." + (cl-macrolet ((report (what mode) + `(eglot--flymake-report-1 ,what ,mode))) + (eglot--flymake-handle-push + server uri diagnostics version + (lambda (lsp-diags) + (cl-symbol-macrolet ((map (cadr eglot--streamed-diagnostics))) + (let* ((doc-v eglot--docver) + (known-v (car eglot--streamed-diagnostics)) + (prev-map (caddr eglot--streamed-diagnostics)) + (diags (if (equal kind "unchanged") + (cdr (assoc token (if (eq known-v doc-v) + map prev-map))) + lsp-diags)) + probe) + ;; (trace-values (buffer-name) "lsp-diags" (length lsp-diags) + ;; "diags" (length diags) "kind" kind + ;; "known-v" known-v "doc-v" doc-v) + (cond ((and known-v (< doc-v known-v)) + ;; Ignore out of date (shouldn't happen) + (report nil :stay)) + ((or (null known-v) (> doc-v known-v)) + ;; `doc-v' is greater than (potentially nil) + ;; recorded `known-v'. Save old known-v and map, + ;; "inaugurate" new doc-v, report this initial subset, + ;; clearing all existing diagnostics. + (cl-loop for (tk . diags) in map + do (setf (alist-get tk prev-map nil nil #'equal) diags)) + (let ((entry (cons token diags))) + (setq eglot--streamed-diagnostics + `(,doc-v (,entry) ,prev-map)) + (report (cdr entry) :clear))) + ((setq probe (assoc token map)) + ;; `diags' are an update to an existing report for + ;; this token, for this `doc-v' Record and report + ;; all to Flymake, clearing all existing diagnostics. + (setcdr probe diags) + (cl-loop for e in map + for m = :clear then :stay + do (report (cdr e) m))) + (t + ;; It's the first time we hear about `token' for this + ;; already inaugurated `doc-v' add its diagnostics to + ;; the map, and report only this subset, not clearing + ;; any old diagnostics. + (let ((entry (cons token diags))) + (push entry map) + (report (cdr entry) :stay)))))))))) + (defun eglot--flymake-diag-type (severity) "Convert LSP diagnostic SEVERITY to Eglot/Flymake diagnostic type." (cond ((null severity) 'eglot-error) @@ -3192,13 +3355,14 @@ When called interactively, use the currently active server" ((= severity 2) 'eglot-warning) (t 'eglot-note))) -(defun eglot--flymake-make-diag (diag-spec version) +(defun eglot--flymake-make-diag (diag-spec version region) "Convert LSP diagnostic DIAG-SPEC to Flymake diagnostic. -VERSION is the document version number." +VERSION is the document version number. REGION is the (BEG . END) +pertaining to DIAG-SPEC." (eglot--dbind ((Diagnostic) range code message severity source tags) diag-spec (pcase-let - ((`(,beg . ,end) (eglot-range-region range))) + ((`(,beg . ,end) region)) ;; Fallback to `flymake-diag-region' if server botched the range (when (= beg end) (if-let* ((st (plist-get range :start)) @@ -3234,26 +3398,69 @@ publishes diagnostics. Between calls to this function, REPORT-FN may be called multiple times (respecting the protocol of `flymake-diagnostic-functions')." (cond (eglot--managed-mode - (setq eglot--flymake-push-report-fn report-fn) + (setq eglot--flymake-report-fn report-fn) (cond ;; Use pull diagnostics if server supports it ((eglot-server-capable :diagnosticProvider) (eglot--flymake-pull)) + ((eglot-server-capable :$streamingDiagnosticsProvider) + (let ((v (car eglot--streamed-diagnostics)) + (map (cadr eglot--streamed-diagnostics))) + (if (and v (< v eglot--docver)) + (eglot--flymake-report-2 nil :stay) + (cl-loop for e in map + for m = :clear then :stay + do (eglot--flymake-report-1 (cdr e) m))))) ;; Otherwise push whatever we might have, and wait for - ;; `textDocument/publishDiagnostics'. - (t (eglot--flymake-push)))) + ;; further `textDocument/publishDiagnostics'. + (t (eglot--flymake-report-push+pulled :force t)))) (t (funcall report-fn nil)))) +(cl-defun eglot--flymake-handle-push (server uri diagnostics version then) + "Handle a diagnostics \"push\" from SERVER for document URI. +DIAGNOSTICS is a list of LSP diagnostic objects. VERSION is the +LSP-reported version comparable to `eglot--docver' for which these +objects presumably pertain. If diagnostics are thought to belong to +`eglot--docver' THEN is a unary function taking DIAGNOSTICS and tasked +to eventually report the corresponding Flymake conversions of each +object. The originator of this \"push\" is usually either regular +`textDocument/publishDiagnostics' or an experimental +`$/streamDiagnostics' notification." + (if-let* ((path (expand-file-name (eglot-uri-to-path uri))) + (buffer (eglot--find-buffer-visiting server path))) + (with-current-buffer buffer + (if (and version (/= version eglot--docver)) + (cl-return-from eglot--flymake-handle-push)) + ;; if no explicit version received, assume it's current. + (setq version eglot--docver) + (funcall then diagnostics)) + (cl-loop + for diag-spec across diagnostics + collect (eglot--dbind ((Diagnostic) code range message severity source) diag-spec + (let* ((start (plist-get range :start)) + (line (1+ (plist-get start :line))) + (char (1+ (plist-get start :character)))) + (flymake-make-diagnostic + path (cons line char) nil + (eglot--flymake-diag-type severity) + (list source code message) + `((eglot-lsp-diag . ,diag-spec))))) + into diags + finally + (setf (alist-get (propertize path 'eglot--server server) + flymake-list-only-diagnostics nil nil #'equal) + diags)))) + (cl-defun eglot--flymake-pull (&aux (server (eglot--current-server-or-lose)) (origin (current-buffer))) "Pull diagnostics from server, for all managed buffers. -When response arrives call registered `eglot--flymake-push-report-fn'." +When response arrives call registered `eglot--flymake-report-fn'." (cl-flet ((pull-for (buf &optional then) (with-current-buffer buf (let ((version eglot--docver) - (prev-result-id (nth 2 eglot--diagnostics))) + (prev-result-id (caddr eglot--pulled-diagnostics))) (eglot--async-request server :textDocument/diagnostic @@ -3263,19 +3470,14 @@ When response arrives call registered `eglot--flymake-push-report-fn'." `(:previousResultId ,prev-result-id)))) :success-fn (eglot--lambda ((DocumentDiagnosticReport) kind items resultId) - (eglot--when-live-buffer buf - (pcase kind - ("full" - (setq eglot--diagnostics - (list - (cl-loop - for spec across items - collect (eglot--flymake-make-diag spec version)) - version - resultId)) - (eglot--flymake-push)) - ("unchanged" - (when (eq buf origin) (eglot--flymake-push 'void))))) + (pcase kind + ("full" + (setq eglot--pulled-diagnostics + (list items version resultId)) + (eglot--flymake-report-push+pulled :force t)) + ("unchanged" + (when (eq buf origin) + (eglot--flymake-report-1 nil :stay :force t)))) (when then (funcall then))) :hint :textDocument/diagnostic))))) ;; JT@2025-12-15: No known server yet supports "relatedDocuments" so @@ -3288,33 +3490,59 @@ When response arrives call registered `eglot--flymake-push-report-fn'." (mapc #'pull-for (remove origin (eglot--managed-buffers server)))))))) -(cl-defun eglot--flymake-push - (&optional void &aux (diags (nth 0 eglot--diagnostics)) - (version (nth 1 eglot--diagnostics))) - "Push previously collected diagnostics to `eglot--flymake-push-report-fn'. -If VOID, knowingly push a dummy do-nothing update." - (unless eglot--flymake-push-report-fn - ;; Occasionally called from contexts where report-fn not setup, such - ;; as a `didOpen''ed but yet undisplayed buffer. - (cl-return-from eglot--flymake-push)) - (eglot--widening - (if (or void (and version (< version eglot--docver))) - ;; Here, we don't have anything interesting to give to Flymake: we - ;; just want to keep whatever diagnostics it has annotated in the - ;; buffer. However, as a nice-to-have, we still want to signal - ;; we're alive and clear a possible "Wait" state. We hackingly - ;; achieve this by reporting an empty list and making sure it - ;; pertains to a 0-length region. - (funcall eglot--flymake-push-report-fn nil - :region (cons (point-min) (point-min))) - (funcall eglot--flymake-push-report-fn diags - ;; If the buffer hasn't changed since last - ;; call to the report function, flymake won't - ;; delete old diagnostics. Using :region - ;; keyword forces flymake to delete - ;; them (github#159). - :region (cons (point-min) (point-max)))))) +(defun eglot--flymake-reset () + (setq eglot--pulled-diagnostics nil + eglot--pushed-diagnostics nil + eglot--streamed-diagnostics nil) + (when eglot--flymake-report-fn + (eglot--flymake-report-1 nil :clear :force t))) +(cl-defun eglot--flymake-report-2 (diags mode) + "Really report the Flymake diagnostics objects DIAGS. +MODE is like `eglot--flymake-report-1'." + (apply eglot--flymake-report-fn + diags + (cond ((eq mode :clear) + `(:region ,(cons (point-min) (point-max)))) + ((eq mode :stay) + `(:region ,(cons (point-min) (point-min))))))) + +(cl-defun eglot--flymake-report-push+pulled + (&key force + &aux + (pushed-docver (cadr eglot--pushed-diagnostics)) + (pushed-outdated-p (and pushed-docver (< pushed-docver eglot--docver)))) + "Push previously collected diagnostics to `eglot--flymake-report-fn'. +If KEEP, knowingly push a dummy do-nothing update." + ;; Maybe hack in diagnostics we previously may have saved in + ;; `flymake-list-only-diagnostics', pushed for this file before it was + ;; visited (github#1531). + (when-let* ((hack (and (<= eglot--docver 0) + (null eglot--pushed-diagnostics) + (cdr (assoc (buffer-file-name) + flymake-list-only-diagnostics))))) + (cl-loop + for x in hack + collect (alist-get 'eglot-lsp-diag (flymake-diagnostic-data x)) into res + finally (setq eglot--pushed-diagnostics `(,(vconcat res) ,eglot--docver)))) + (eglot--widening + (if (and (null eglot--pulled-diagnostics) pushed-outdated-p) + ;; Here, we don't have anything interesting to give to Flymake. + ;; Either a textDocument/diagnostics response specifically told + ;; use that nothing changed, or `flymake-start' kicked in before + ;; server had a chance to push something. We just want to keep + ;; whatever diagnostics it has annotated in the buffer and and + ;; clear a possible "Wait" state. + (eglot--flymake-report-2 nil :stay) + (cl-macrolet ((report (x m) + `(eglot--flymake-report-1 + (car ,x) ,m :force force))) + (report eglot--pulled-diagnostics :clear) + (unless pushed-outdated-p + (report eglot--pushed-diagnostics :stay)))))) + + +;;; Xref integration (defun eglot-xref-backend () "Eglot xref backend." 'eglot) (defvar eglot--temp-location-buffers (make-hash-table :test #'equal) @@ -3512,6 +3740,8 @@ If BUFFER, switch to it before." :workspace/symbol `(:query ,pattern)))))) + +;;; Eglot interactive commands and helpers (defun eglot-format-buffer () "Format contents of current buffer." (interactive) @@ -3554,12 +3784,15 @@ for which LSP on-type-formatting should be requested." nil on-type-format))) + + +;;; Completion (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--capf-session-flush (&optional _) (setq eglot--capf-session nil)) (defun eglot--dumb-flex (pat comp ignorecase) "Return destructively fontified COMP iff PAT matches it." @@ -3815,6 +4048,8 @@ for which LSP on-type-formatting should be requested." (eglot--apply-text-edits additionalTextEdits))) (eglot--signal-textDocument/didChange))))))))) + +;;; Eldoc integration (defun eglot--hover-info (contents &optional _range) (mapconcat #'eglot--format-markup (if (vectorp contents) contents (list contents)) "\n")) @@ -3936,22 +4171,32 @@ for which LSP on-type-formatting should be requested." :success-fn (lambda (highlights) (mapc #'delete-overlay eglot--highlights) - (setq eglot--highlights - (eglot--when-buffer-window buf - (mapcar - (eglot--lambda ((DocumentHighlight) range) - (pcase-let ((`(,beg . ,end) - (eglot-range-region range))) - (let ((ov (make-overlay beg end))) - (overlay-put ov 'face 'eglot-highlight-symbol-face) - (overlay-put ov 'eglot--overlay t) - (overlay-put ov 'modification-hooks - `(,(lambda (o &rest _) (delete-overlay o)))) - ov))) - highlights)))) + (setq eglot--highlights nil) + (eglot--when-buffer-window buf + ;; Don't highlight occurrences that aren't + ;; visible. (bug#80072). + (let* ((w (car (get-buffer-window-list))) + (ws (window-start w)) (we (window-end w)) + (ls (1- (line-number-at-pos ws t))) + (le (1- (line-number-at-pos we t)))) + (mapc + (eglot--lambda ((DocumentHighlight) range) + (when-let* ((l (cl-getf (cl-getf range :start) :line)) + (_ (and (>= l ls) (<= l le)))) + (pcase-let ((`(,beg . ,end) + (eglot-range-region range))) + (let ((ov (make-overlay beg end))) + (overlay-put ov 'face 'eglot-highlight-symbol-face) + (overlay-put ov 'eglot--overlay t) + (overlay-put ov 'modification-hooks + `(,(lambda (o &rest _) (delete-overlay o)))) + (push ov eglot--highlights))))) + highlights)))) :hint :textDocument/documentHighlight) nil))) + +;;; Imenu integration (defun eglot--imenu-SymbolInformation (res) "Compute `imenu--index-alist' for RES vector of SymbolInformation." (mapcar @@ -3960,16 +4205,20 @@ for which LSP on-type-formatting should be requested." (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))) + (let ((elems + (eglot--collecting-ranged + (s reg objs (lambda (o) + (plist-get :range (plist-get o :location)))) + (eglot--dbind ((SymbolInformation) kind name) s + (let ((kind (alist-get kind eglot--symbol-kind-names))) + (cons (propertize name + 'imenu-region reg + 'imenu-kind kind + ;; Backward-compatible props + ;; to be removed later: + 'breadcrumb-region reg + 'breadcrumb-kind kind) + (car reg))))))) (if container (list (cons container elems)) elems))) (seq-group-by (eglot--lambda ((SymbolInformation) containerName) containerName) objs)))) @@ -3981,10 +4230,15 @@ for which LSP on-type-formatting should be requested." (let* ((reg (eglot-range-region range)) (kind (alist-get kind eglot--symbol-kind-names)) (name (propertize name + 'imenu-region reg + 'imenu-kind kind + ;; Backward-compatible props + ;; to be removed later: 'breadcrumb-region reg 'breadcrumb-kind kind))) (if (seq-empty-p children) (cons name (car reg)) + ;; FIXME: leverage eglot--collecting-ranged (cons name (mapcar (lambda (c) (apply #'dfs c)) children)))))) (mapcar (lambda (s) (apply #'dfs s)) res))) @@ -3992,8 +4246,6 @@ for which LSP on-type-formatting should be requested." (cl-defun eglot-imenu () "Eglot's `imenu-create-index-function'. Returns a list as described in docstring of `imenu--index-alist'." - (unless (eglot-server-capable :documentSymbolProvider) - (cl-return-from eglot-imenu)) (let* ((res (eglot--request (eglot--current-server-or-lose) :textDocument/documentSymbol `(:textDocument @@ -4005,12 +4257,14 @@ Returns a list as described in docstring of `imenu--index-alist'." (((SymbolInformation)) (eglot--imenu-SymbolInformation res)) (((DocumentSymbol)) (eglot--imenu-DocumentSymbol res)))))) + +;;; Code actions and rename (cl-defun eglot--apply-text-edits (edits &optional version silent) "Apply EDITS for current buffer if at VERSION, or if it's nil. If SILENT, don't echo progress in mode-line." (unless edits (cl-return-from eglot--apply-text-edits)) (unless (or (not version) (equal version eglot--docver)) - (jsonrpc-error "Edits on `%s' require version %d, you have %d" + (jsonrpc-error "Edits on `%s' require version %d, have %d" (current-buffer) version eglot--docver)) (atomic-change-group (let* ((change-group (prepare-change-group)) @@ -4047,14 +4301,25 @@ If SILENT, don't echo progress in mode-line." (when reporter (progress-reporter-done reporter))))) -(defun eglot--confirm-server-edits (origin _prepared) +(defun eglot--confirm-server-edits (origin prepared) "Helper for `eglot--apply-workspace-edit. -ORIGIN is a symbol designating a command. Reads the -`eglot-confirm-server-edits' user option and returns a symbol -like `diff', `summary' or nil." - (let (v) +ORIGIN is a symbol designating a command. PREPARED is a list of +operations to apply. Reads the `eglot-confirm-server-edits' user +option and returns a symbol like `diff', `summary' or nil." + (let (v op-kinds) (cond ((symbolp eglot-confirm-server-edits) eglot-confirm-server-edits) + ;; Check for command-based entry ((setq v (assoc origin eglot-confirm-server-edits)) (cdr v)) + ;; Check for operation-kind-based entry + ((and (setq op-kinds (mapcar #'car prepared)) + (setq v (cl-find-if (lambda (entry) + (and (listp (car entry)) + (cl-some (lambda (kind) + (memq kind (car entry))) + op-kinds))) + eglot-confirm-server-edits))) + (cdr v)) + ;; Default entry ((setq v (assoc t eglot-confirm-server-edits)) (cdr v))))) (defun eglot--propose-changes-as-diff (prepared) @@ -4068,7 +4333,7 @@ list ((FILENAME EDITS VERSION)...)." (target (current-buffer))) (diff-mode) (erase-buffer) - (pcase-dolist (`(,path ,edits ,_) prepared) + (pcase-dolist (`(_ _ _ ,path ,edits ,_) prepared) (with-temp-buffer (let* ((diff (current-buffer)) (existing-buf (find-buffer-visiting path)) @@ -4094,62 +4359,185 @@ list ((FILENAME EDITS VERSION)...)." (buffer-enable-undo (current-buffer)) (goto-char (point-min)) (pop-to-buffer (current-buffer)) - (font-lock-ensure))) + (font-lock-ensure) + (current-buffer))) -(defun eglot--apply-workspace-edit (wedit origin) +(cl-defun eglot--apply-workspace-edit (wedit origin &aux prepared) "Apply (or offer to apply) the workspace edit WEDIT. -ORIGIN is a symbol designating the command that originated this -edit proposed by the server." - (eglot--dbind ((WorkspaceEdit) changes documentChanges) wedit - (let ((prepared - (mapcar (eglot--lambda ((TextDocumentEdit) textDocument edits) - (eglot--dbind ((VersionedTextDocumentIdentifier) uri version) - textDocument - (list (eglot-uri-to-path uri) edits version))) - documentChanges))) +ORIGIN is a symbol designating the command that originated this edit +proposed by the server. Returns a list (APPLIED REASON) indicating if +the edit was attempted and optionally why not." + ;; JT@2026-01-11: Note to future (self?). Most if this big function + ;; is preparing with the `prepared' (OP ...) list , where each OP is + ;; (KIND DESC APPLY-FN . MORE). KIND is a symbol, DESC is a string. + ;; APPLY-FN is a unary function of OP that applies the change. + ;; Sometimes there is MORE data, such as when KIND is eg. 'text-edit' + ;; and needs extra info for the diff rendering. + (cl-labels + ((pathify (x) (eglot-uri-to-path x)) + (do-create (path &key overwrite ignoreIfExists + &allow-other-keys) + (let ((exists (file-exists-p path))) + (when (and exists (not ignoreIfExists) (not overwrite)) + (eglot--error "File %s already exists" path)) + (when (or (not exists) overwrite) + (let ((dir (file-name-directory path))) + (unless (file-directory-p dir) + (make-directory dir t))) + (write-region "" nil path nil 'nomessage)))) + (do-rename (old-path new-path &key overwrite ignoreIfExists + &allow-other-keys) + (let ((new-exists (file-exists-p new-path))) + (when (and new-exists (not ignoreIfExists) (not overwrite)) + (eglot--error "File %s already exists" new-path)) + (let ((dir (file-name-directory new-path))) + (unless (file-directory-p dir) + (make-directory dir t))) + ;; If the old file is visited, rename the buffer too + (let ((buf (find-buffer-visiting old-path))) + (when buf + (with-current-buffer buf + (set-visited-file-name new-path t t)))) + (rename-file old-path new-path overwrite))) + (do-delete (path &key recursive ignoreIfNotExists &allow-other-keys) + (let ((exists (file-exists-p path))) + (when (and (not exists) (not ignoreIfNotExists)) + (eglot--error "File %s does not exist" path)) + (when exists + ;; Kill buffer if the file is visited + (let ((buf (find-buffer-visiting path))) + (when buf (kill-buffer buf))) + (delete-file path recursive)))) + (text-edit-op (path edits version) + `(text-edit + ,(format "Change %s (%d change%s)" path (length edits) + (if (> (length edits) 1) "s" "")) + ,(lambda (_op) + (with-current-buffer (find-file-noselect path) + (eglot--apply-text-edits edits version))) + ,path ,edits ,version)) + (mkfn (doit-fn &rest things) + (lambda (op) + (apply doit-fn things) + (eglot--message + "%s" (replace-regexp-in-string "^\\([^ ]+\\) " "\\1d " (cadr op))))) + (prepare (ch) + (pcase (plist-get ch :kind) + ("create" + (eglot--dbind ((CreateFile) uri ((:options o))) ch + (let ((p (pathify uri))) + `(create ,(format "Create `%s'" p) ,(mkfn #'do-create p o))))) + ("rename" + (eglot--dbind ((RenameFile) oldUri newUri ((:options o))) ch + (let ((ol (pathify oldUri)) (nw (pathify newUri))) + `(rename ,(format "Rename `%s' to `%s'" ol nw) + ,(mkfn #'do-rename ol nw o))))) + ("delete" + (eglot--dbind ((DeleteFile) uri ((:options o))) ch + (let ((p (pathify uri))) + `(delete ,(format "Delete `%s'" p) ,(mkfn #'do-delete p o))))) + (_ + ;; It's a TextDocumentEdit (no kind field) + (eglot--dbind ((TextDocumentEdit) textDocument edits) ch + (eglot--dbind ((VersionedTextDocumentIdentifier) uri version) + textDocument (text-edit-op (pathify uri) edits version)))))) + (user-accepts-p () + (y-or-n-p + (format "[eglot] Server wants to:\n%s\nProceed? " + (mapconcat (lambda (op) (concat " " (cadr op))) + prepared "\n")))) + (apply-all () + (cl-loop + for op in prepared + for (_kind _desc fn) = op + do (funcall fn op) + finally (eldoc) (eglot--message "Workspace edit successful")) + `(t nil))) + (eglot--dbind ((WorkspaceEdit) changes documentChanges) wedit + (setq prepared (mapcar #'prepare documentChanges)) (unless (and changes documentChanges) - ;; We don't want double edits, and some servers send both - ;; changes and documentChanges. This unless ensures that we - ;; prefer documentChanges over changes. + ;; Prefer `documentChanges' over sort-of-deprecated `changes'. (cl-loop for (uri edits) on changes by #'cddr - do (push (list (eglot-uri-to-path uri) edits) prepared))) - (cl-flet ((notevery-visited-p () - (cl-notevery #'find-buffer-visiting - (mapcar #'car prepared))) - (accept-p () - (y-or-n-p - (format "[eglot] Server wants to edit:\n%sProceed? " - (cl-loop - for (f eds _) in prepared - concat (format - " %s (%d change%s)\n" - f (length eds) - (if (> (length eds) 1) "s" "")))))) - (apply () - (cl-loop for edit in prepared - for (path edits version) = edit - do (with-current-buffer (find-file-noselect path) - (eglot--apply-text-edits edits version)) - finally (eldoc) (eglot--message "Edit successful!")))) - (let ((decision (eglot--confirm-server-edits origin prepared))) - (cond - ((or (eq decision 'diff) - (and (eq decision 'maybe-diff) (notevery-visited-p))) - (eglot--propose-changes-as-diff prepared)) - ((or (memq decision '(t summary)) - (and (eq decision 'maybe-summary) (notevery-visited-p))) - (when (accept-p) (apply))) - (t - (apply)))))))) + do (push (text-edit-op (pathify uri) edits nil) prepared))) + (let* ((decision (eglot--confirm-server-edits origin prepared)) + (all-text-edits (cl-loop for (kind . _) in prepared + always (eq kind 'text-edit))) + (peaceful + (and + all-text-edits + (cl-loop for op in prepared + always (find-buffer-visiting (cadddr op)))))) + (cond + ((and (and (memq decision '(maybe-diff maybe-summary)) peaceful)) + (apply-all)) + ((memq decision '(diff maybe-diff)) + (cond (all-text-edits + (pop-to-buffer + (eglot--propose-changes-as-diff prepared)) + `(nil "decision to apply manually")) + (t + ;; `map-y-or-n-p' heroics. Iterate over prepared + ;; operations with individual prompts, showing diffs + ;; for text-edit operations. + (let* ((wconf (current-window-configuration)) + (applied 0) + (total (length prepared))) + (unwind-protect + (progn + (map-y-or-n-p + (lambda (op) + (when (eq (car op) 'text-edit) + (display-buffer + (eglot--propose-changes-as-diff (list op)))) + (format "[eglot] %s? " (cadr op))) + (lambda (op) + (set-window-configuration wconf) + (funcall (caddr op) op) + (cl-incf applied)) + (lambda () + ;; Skip text-edits for files that don't exist + ;; (e.g. user skipped the create operation). + (cl-loop for op = (pop prepared) while op + when (or (not (eq (car op) 'text-edit)) + (file-exists-p (cadddr op))) + return op)) + '("change" "changes" "apply")) + (if (= applied total) + (progn + (eldoc) + (eglot--message "Workspace edit successful") + `(t nil)) + `(nil "decision to abort"))) + (set-window-configuration wconf)))))) + ((memq decision '(t summary maybe-summary)) + (if (user-accepts-p) (apply-all) `(nil "decision to decline"))) + ((apply-all))))))) + +(cl-defun eglot--rename-interactive + (&aux + def region + (rename-support (eglot-server-capable-or-lose :renameProvider)) + (prepare-support (and (listp rename-support) + (plist-get rename-support :prepareProvider)))) + (setq + def + (cond (prepare-support + (let ((x (eglot--request (eglot--current-server-or-lose) + :textDocument/prepareRename + (eglot--TextDocumentPositionParams)))) + (cond ((null x) (user-error "[eglot] Can't rename here")) + ((plist-get x :placeholder)) + ((plist-get x :defaultBehavior) (thing-at-point 'symbol t)) + ((setq region (eglot-range-region x)) + (buffer-substring-no-properties (car region) (cdr region)))))) + (t (thing-at-point 'symbol t)))) + (list (read-from-minibuffer + (format "Rename `%s' to: " (or def "unknown symbol")) + nil nil nil nil def))) (defun eglot-rename (newname) "Rename the current symbol to NEWNAME." - (interactive - (let ((tap (thing-at-point 'symbol t))) - (list (read-from-minibuffer - (format "Rename `%s' to: " (or tap "unknown symbol")) - nil nil nil nil tap)))) - (eglot-server-capable-or-lose :renameProvider) + (interactive (eglot--rename-interactive)) (eglot--apply-workspace-edit (eglot--request (eglot--current-server-or-lose) :textDocument/rename `(,@(eglot--TextDocumentPositionParams) @@ -4160,7 +4548,7 @@ edit proposed by the server." "Calculate appropriate bounds depending on region and point." (let (diags boftap) (cond ((use-region-p) `(,(region-beginning) ,(region-end))) - ((setq diags (eglot--flymake-diagnostics (point))) + ((setq diags (eglot--flymake-sniff-diagnostics (point))) (cl-loop for d in diags minimizing (flymake-diagnostic-beg d) into beg maximizing (flymake-diagnostic-end d) into end @@ -4176,8 +4564,9 @@ edit proposed by the server." :range (eglot-region-range beg end) :context `(:diagnostics - [,@(mapcar #'eglot--diag-to-lsp-diag - (eglot--flymake-diagnostics beg end))] + [,@(mapcar (lambda (x) + (alist-get 'eglot-lsp-diag (flymake-diagnostic-data x))) + (eglot--flymake-sniff-diagnostics beg end))] ,@(when only `(:only [,only])) ,@(when triggerKind `(:triggerKind ,triggerKind))))) @@ -4320,16 +4709,33 @@ at point. With prefix argument, prompt for ACTION-KIND." ;;; File watchers (aka didChangeWatchedFiles) ;;; (defvar eglot-watch-files-outside-project-root t - "If non-nil, allow watching files outside project root") + "If non-nil, allow watching files outside project root.") + +(defvar eglot-max-file-watches 10000 + "Maximum number of file watches across all Eglot servers. +If this limit is reached, a warning is issued and further watches +are not added. Set to nil for unlimited watches.") + +(defun eglot--count-file-watches () + "Count total file watches across all Eglot servers." + (let ((count 0)) + (maphash (lambda (_proj servers) + (dolist (server servers) + (maphash (lambda (_id descs) + (cl-incf count (length descs))) + (eglot--file-watches server)))) + eglot--servers-by-project) + count)) (cl-defun eglot--watch-globs (server id globs dir in-root &aux (project (eglot--project server)) - success) + success + (watch-count (eglot--count-file-watches))) "Set up file watching for relative file names matching GLOBS under DIR. GLOBS is a list of (COMPILED-GLOB . KIND) pairs, where COMPILED-GLOB is a compiled glob predicate and KIND is a bitmask of change types. DIR is the directory to watch (nil means entire project). IN-ROOT says if DIR -happens to be inside or maching the project root." +happens to be inside or matching the project root." (cl-labels ((subdirs-using-project () (delete-dups @@ -4352,6 +4758,7 @@ happens to be inside or maching the project root." (candidate (if dir (file-relative-name file dir) file))) (cond ((and (memq action '(created changed deleted)) + (not (eglot--find-buffer-visiting server file)) (cl-loop for (compiled . kind) in globs thereis (and (> (logand kind action-bit) 0) (funcall compiled candidate)))) @@ -4366,9 +4773,18 @@ happens to be inside or maching the project root." (handle-event `(,desc deleted ,file)) (handle-event `(,desc created ,file1)))))) (add-watch (subdir) - (when (file-readable-p subdir) - (push (file-notify-add-watch subdir '(change) #'handle-event) - (gethash id (eglot--file-watches server)))))) + (cond ((not (file-readable-p subdir))) + ((and eglot-max-file-watches + (>= watch-count eglot-max-file-watches)) + (eglot--warn "Reached `eglot-max-file-watches' limit of %d, \ +not watching some directories" eglot-max-file-watches) + ;; Could `(setq success t)' here to keep partial watches. + (jsonrpc-error "Reached `eglot-max-file-watches' limit of %d" + eglot-max-file-watches)) + (t + (push (file-notify-add-watch subdir '(change) #'handle-event) + (gethash id (eglot--file-watches server))) + (cl-incf watch-count))))) (let ((subdirs (if (or (null dir) in-root) (subdirs-using-project) (condition-case _ (subdirs-using-find) @@ -4510,7 +4926,8 @@ If NOERROR, return predicate, else erroring function." \\{eglot-list-connections-mode-map}" :interactive nil (setq-local tabulated-list-format - `[("Language server" 16) ("Project name" 16) ("Modes handled" 16)]) + `[("Language server" 16) ("Project name" 20) ("Buffers" 7) + ("Modes" 20) ("Invocation" 32)]) (tabulated-list-init-header)) (defun eglot-list-connections () @@ -4528,9 +4945,14 @@ If NOERROR, return predicate, else erroring function." `[,(or (plist-get (eglot--server-info server) :name) (jsonrpc-name server)) ,(eglot-project-nickname server) + ,(format "%s" (length (eglot--managed-buffers server))) ,(mapconcat #'symbol-name (eglot--major-modes server) - ", ")])) + ", ") + ,(let ((c (process-command + (jsonrpc--process server)))) + (if (consp c) (mapconcat #'identity c " ") + "network"))])) (cl-reduce #'append (hash-table-values eglot--servers-by-project)))) (revert-buffer) @@ -4676,6 +5098,45 @@ If NOERROR, return predicate, else erroring function." (jit-lock-unregister #'eglot--update-hints) (eglot--delete-overlays 'eglot--inlay-hint)))) +(defvar eglot--momentary-hints-data (list nil nil nil 0 nil)) + +(defun eglot-momentary-inlay-hints () + "Display inlay hints while holding down a key. +Emacs doesn't support binding to \"key up\" events, but this function +offers an approximation. When bound to a key it will arrange for inlay +hints to be displayed as long as the key is held down, and then hidden +shortly after it is released. This relies on measuring your keyboard +initial delay and repeat rate, and may not be 100% accurate." + (interactive) + (when eglot-inlay-hints-mode + (eglot-inlay-hints-mode -1)) + (cl-symbol-macrolet + ((timer (nth 0 eglot--momentary-hints-data)) + (initial-delay (nth 1 eglot--momentary-hints-data)) + (repeat-delay (nth 2 eglot--momentary-hints-data)) + (calls (nth 3 eglot--momentary-hints-data)) + (last-call-time (nth 4 eglot--momentary-hints-data))) + (cl-incf calls) + (cl-flet ((runit (delay) + (setf timer + (run-at-time (+ 0.1 delay) + nil (lambda () + (dolist (o (overlays-in (point-min) (point-max))) + (when (overlay-get o 'eglot--inlay-hint) + (delete-overlay o))) + (setf timer nil calls 0))) + last-call-time (float-time)))) + (cond ((timerp timer) + (when (and (not initial-delay) (= calls 2)) + (setf initial-delay (- (float-time) last-call-time))) + (when (and (not repeat-delay) (= calls 3)) + (setf repeat-delay (- (float-time) last-call-time))) + (cancel-timer timer) + (runit (or repeat-delay 0.5))) + (t + (eglot--update-hints-1 (window-start) (window-end)) + (runit (or initial-delay 1.0))))))) + ;;; Semantic tokens (defmacro eglot--semtok-define-things () @@ -4772,14 +5233,13 @@ See `eglot--semtok-request' implementation for details.") (defun eglot--semtok-after-send-changes () ;; (trace-values "Dispatching") - (setf (plist-get eglot--semtok-state :dispatched) t)) + (setf (cl-getf eglot--semtok-state :dispatched) t)) (cl-defun eglot--semtok-request (beg end &aux (docver eglot--docver)) "Ask for tokens. Arrange for BEG..END to be font-lock flushed." - (cl-macrolet ((c (tag) `(plist-get eglot--semtok-state ,tag))) + (cl-macrolet ((c (tag) `(cl-getf eglot--semtok-state ,tag))) (cl-labels - ((req (method &optional params cont - &aux (buf (current-buffer))) + ((req (method &optional params cont) (setf (c :req-docver) docver (c :orig-docver) docver (c :dispatched) (not eglot--recent-changes) @@ -4790,22 +5250,21 @@ See `eglot--semtok-request' implementation for details.") (append (nconc params `(:textDocument ,(eglot--TextDocumentIdentifier)))) :success-fn (lambda (response) - (eglot--when-live-buffer buf - ;; (trace-values "Response" - ;; eglot--docver docver (c :orig-docver) (c :req-docver)) - ;; This skip is different from the one below. Comparing - ;; the lexical `docver' to the original request's - ;; `:orig-docver' allows skipping the outdated reponse - ;; of a dispatched request that has been overriden by - ;; another (perhaps not dispatched yet) request. - (when (eq docver (c :orig-docver)) - (setf (c :docver) (c :req-docver) - (c :data) (if cont (funcall cont response) - (plist-get response :data)) - (c :resultId) (plist-get response :resultId)) - ;; (trace-values "Flushing" (length (c :regions)) "regions") - (cl-loop for (a . b) in (c :regions) do (font-lock-flush a b)) - (setf (c :regions) nil)))) + ;; (trace-values "Response" + ;; eglot--docver docver (c :orig-docver) (c :req-docver)) + ;; This skip is different from the one below. Comparing + ;; the lexical `docver' to the original request's + ;; `:orig-docver' allows skipping the outdated response + ;; of a dispatched request that has been overridden by + ;; another (perhaps not dispatched yet) request. + (when (eq docver (c :orig-docver)) + (setf (c :docver) (c :req-docver) + (c :data) (if cont (funcall cont response) + (plist-get response :data)) + (c :resultId) (plist-get response :resultId)) + ;; (trace-values "Flushing" (length (c :regions)) "regions") + (cl-loop for (a . b) in (c :regions) do (font-lock-flush a b)) + (setf (c :regions) nil))) :hint 'semtok))) ;; Skip actually making the request if there's an undispatched ;; waiting for a eglot--send-changes-hook flush. Just update the @@ -4880,12 +5339,12 @@ lock machinery calls us again." (with-silent-modifications (save-excursion (cl-loop - initially (goto-char beg) - for match = (text-property-search-forward 'eglot--semtok-faces) - while (and match (< (point) end)) - do (dolist (f (prop-match-value match)) - (add-face-text-property - (prop-match-beginning match) (prop-match-end match) f))))))) + for from = beg then to + while (< from end) + for faces = (get-text-property from 'eglot--semtok-faces) + for to = (or (next-single-property-change from 'eglot--semtok-faces nil end) end) + when faces + do (dolist (f faces) (add-face-text-property from to f))))))) ;;; Call and type hierarchies diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index da8302953d1..f5c3dc3fbb2 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -1,6 +1,6 @@ ;;; elisp-mode.el --- Emacs Lisp mode -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1986, 1999-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: lisp, languages @@ -1249,17 +1249,13 @@ functions are annotated with \"\" via the (defun elisp--xref-backend () 'elisp) -;; WORKAROUND: This is nominally a constant, but the text properties -;; are not preserved thru dump if use defconst. See bug#21237. -(defvar elisp--xref-format - #("(%s %s)" +(defconst elisp--xref-format + #("(%S %S)" 1 3 (face font-lock-keyword-face) 4 6 (face font-lock-function-name-face))) -;; WORKAROUND: This is nominally a constant, but the text properties -;; are not preserved thru dump if use defconst. See bug#21237. -(defvar elisp--xref-format-extra - #("(%s %s %s)" +(defconst elisp--xref-format-extra + #("(%S %S %S)" 1 3 (face font-lock-keyword-face) 4 6 (face font-lock-function-name-face))) @@ -1539,22 +1535,28 @@ namespace but with lower confidence." ;; defined in C; the doc strings from the C source have ;; not been loaded yet. Second call will return "src/*.c" ;; in file; handled by t case below. - (push (elisp--xref-make-xref nil symbol (help-C-file-name (symbol-function symbol) 'subr)) xrefs)) + (push (elisp--xref-make-xref + nil symbol (help-C-file-name (symbol-function symbol) + 'subr)) + xrefs)) ((and (setq doc (documentation symbol t)) ;; This doc string is defined in cl-macs.el cl-defstruct - (string-match "Constructor for objects of type `\\(.*\\)'" doc)) + ;; FIXME: This is hideously brittle! + (string-match "Constructor for objects of type `\\(.*\\)'" + doc)) ;; `symbol' is a name for the default constructor created by ;; cl-defstruct, so return the location of the cl-defstruct. (let* ((type-name (match-string 1 doc)) (type-symbol (intern type-name)) - (file (find-lisp-object-file-name type-symbol 'define-type)) + (file (find-lisp-object-file-name + type-symbol 'define-type)) (summary (format elisp--xref-format-extra - 'cl-defstruct - (concat "(" type-name) - (concat "(:constructor " (symbol-name symbol) "))")))) - (push (elisp--xref-make-xref 'define-type type-symbol file summary) xrefs) - )) + 'cl-defstruct type-symbol + `(:constructor ,symbol)))) + (push (elisp--xref-make-xref 'define-type type-symbol + file summary) + xrefs))) ((setq generic (cl--generic symbol)) ;; FIXME: move this to elisp-xref-find-def-functions, in cl-generic.el @@ -1585,22 +1587,28 @@ namespace but with lower confidence." ;; Default method has all t in specializers. (setq non-default (or non-default (not (equal t item))))) - (when (and file - (or non-default - (nth 2 info))) ;; assuming only co-located default has null doc string + ;; Assuming only co-located default has null doc string + (when (and file (or non-default (nth 2 info))) (if specializers - (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol (nth 1 info)))) - (push (elisp--xref-make-xref 'cl-defmethod met-name file summary) xrefs)) + (let ((summary (format elisp--xref-format-extra + 'cl-defmethod symbol + (nth 1 info)))) + (push (elisp--xref-make-xref 'cl-defmethod met-name + file summary) + xrefs)) - (let ((summary (format elisp--xref-format-extra 'cl-defmethod symbol "()"))) - (push (elisp--xref-make-xref 'cl-defmethod met-name file summary) xrefs)))) + (let ((summary (format elisp--xref-format-extra + 'cl-defmethod symbol ()))) + (push (elisp--xref-make-xref 'cl-defmethod met-name + file summary) + xrefs)))) )) - (if (and (setq doc (documentation symbol t)) - ;; This doc string is created somewhere in - ;; cl--generic-make-function for an implicit - ;; defgeneric. - (string-match "\n\n(fn ARG &rest ARGS)" doc)) + ;; FIXME: We rely on the fact that `cl-defgeneric' sets + ;; a `function-documentation' property (via the third arg of + ;; `defalias'), whereas implicit declaration of a generic via + ;; `cl-defmethod' doesn't. + (if (null (get symbol 'function-documentation)) ;; This symbol is an implicitly defined defgeneric, so ;; don't return it. nil @@ -1775,7 +1783,9 @@ and `eval-expression-print-level'. (funcall (syntax-propertize-rules (emacs-lisp-byte-code-comment-re - (1 (prog1 "< b" (elisp--byte-code-comment end (point)))))) + (1 (prog1 "< b" + (goto-char (match-end 2)) + (elisp--byte-code-comment end (point)))))) start end)) ;;;###autoload @@ -2238,7 +2248,6 @@ Intended for `eldoc-documentation-functions' (which see)." (defcustom elisp-eldoc-docstring-length-limit 1000 "Maximum length of doc strings displayed by elisp ElDoc functions." :type 'natnum - :group 'elisp :version "31.1") (defcustom elisp-eldoc-funcall-with-docstring-length 'short @@ -2248,7 +2257,6 @@ Otherwise if set to `full', display full doc string." :type '(choice (const :tag "Short" short) (const :tag "Full" full)) - :group 'elisp :version "31.1") (defun elisp-eldoc-funcall-with-docstring (callback &rest _ignored) @@ -2691,7 +2699,7 @@ current buffer state and calls REPORT-FN when done." (unless (trusted-content-p) ;; FIXME: Use `bwrap' and friends to compile untrusted content. ;; FIXME: We emit a message *and* signal an error, because by default - ;; Flymake doesn't display the warning it puts into "*flmake log*". + ;; Flymake doesn't display the warning it puts into "*flymake log*". (message "Disabling elisp-flymake-byte-compile in %s (untrusted content)" (buffer-name)) (user-error "Disabling elisp-flymake-byte-compile in %s (untrusted content)" diff --git a/lisp/progmodes/elixir-ts-mode.el b/lisp/progmodes/elixir-ts-mode.el index fda76967335..9514d6bdc91 100644 --- a/lisp/progmodes/elixir-ts-mode.el +++ b/lisp/progmodes/elixir-ts-mode.el @@ -1,6 +1,6 @@ ;;; elixir-ts-mode.el --- Major mode for Elixir with tree-sitter support -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Wilhelm H Kirschbaum ;; Created: November 2022 diff --git a/lisp/progmodes/erts-mode.el b/lisp/progmodes/erts-mode.el index 8d4b20b668f..8ee77d7fbea 100644 --- a/lisp/progmodes/erts-mode.el +++ b/lisp/progmodes/erts-mode.el @@ -1,6 +1,6 @@ ;;; erts-mode.el --- major mode to edit erts files -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Keywords: tools diff --git a/lisp/progmodes/etags-regen.el b/lisp/progmodes/etags-regen.el index ed18eb5a564..3d3ddc0521f 100644 --- a/lisp/progmodes/etags-regen.el +++ b/lisp/progmodes/etags-regen.el @@ -1,6 +1,6 @@ ;;; etags-regen.el --- Auto-(re)regenerating tags -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Dmitry Gutov ;; Keywords: tools @@ -348,7 +348,7 @@ File extensions to generate the tags for." (defun etags-regen--build-program-options (ctags-p) (when (and etags-regen-regexp-alist ctags-p) - (user-error "etags-regen-regexp-alist is not supported with Ctags")) + (user-error "etags-regen-regexp-alist not supported with Ctags; to use this option, customize `etags-regen-program'")) (nconc (mapcan (lambda (group) diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index f14d91504af..f7532fce6b1 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1,6 +1,6 @@ ;;; etags.el --- etags facility for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: Roland McGrath ;; Maintainer: emacs-devel@gnu.org @@ -2114,8 +2114,14 @@ file name, add `tag-partial-file-name-match-p' to the list value.") :type 'boolean :version "28.1") -;;;###autoload -(defun etags--xref-backend () 'etags) +;;;###autoload (defun etags--xref-backend () +;;;###autoload (when (or tags-table-list tags-file-name) +;;;###autoload (load "etags") +;;;###autoload 'etags)) + +(defun etags--xref-backend () + (when (or tags-table-list tags-file-name) + 'etags)) (cl-defmethod xref-backend-identifier-at-point ((_backend (eql 'etags))) (find-tag--default)) diff --git a/lisp/progmodes/executable.el b/lisp/progmodes/executable.el index aa3a74d30fa..e318b7a7cd8 100644 --- a/lisp/progmodes/executable.el +++ b/lisp/progmodes/executable.el @@ -1,6 +1,6 @@ ;;; executable.el --- base functionality for executable interpreter scripts -*- lexical-binding: t -*- -;; Copyright (C) 1994-1996, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1996, 2000-2026 Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Keywords: languages, unix diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index be9da4108a4..ab9e6e76919 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el @@ -1,6 +1,6 @@ ;;; f90.el --- Fortran-90 mode (free format) -*- lexical-binding: t -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Torbjörn Einarsson ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/flymake-cc.el b/lisp/progmodes/flymake-cc.el index c8deabac72f..76c866deab0 100644 --- a/lisp/progmodes/flymake-cc.el +++ b/lisp/progmodes/flymake-cc.el @@ -1,6 +1,6 @@ ;;; flymake-cc.el --- Flymake support for GNU tools for C/C++ -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: João Távora ;; Keywords: languages, c diff --git a/lisp/progmodes/flymake-proc.el b/lisp/progmodes/flymake-proc.el index 0418d9fd07c..7845fabb9b1 100644 --- a/lisp/progmodes/flymake-proc.el +++ b/lisp/progmodes/flymake-proc.el @@ -1,6 +1,6 @@ ;;; flymake-proc.el --- Flymake backend for external tools -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Pavel Kobyakov ;; Maintainer: João Távora diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 07a3e7785a3..f73bdadef72 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -1,6 +1,6 @@ ;;; flymake.el --- A universal on-the-fly syntax checker -*- lexical-binding: t; -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Pavel Kobyakov ;; Maintainer: Spencer Baugh @@ -322,11 +322,6 @@ If set to nil, don't suppress any zero counters." (defvar-local flymake-check-start-time nil "Time at which syntax check was started.") -(defvar-local flymake--original-margin-width nil - "Store original margin width. -Used by `flymake--resize-margins' for restoring original margin width -when flymake is turned off.") - (defun flymake--log-1 (level sublog msg &rest args) "Do actual work for `flymake-log'." (let (;; never popup the log buffer @@ -700,12 +695,12 @@ region is invalid. This function saves match data." (defvar flymake-diagnostic-functions nil "Special hook of Flymake backends that check a buffer. -The functions in this hook diagnose problems in a buffer's -contents and provide information to the Flymake user interface -about where and how to annotate problems diagnosed in a buffer. +The functions in this hook diagnose problems in a buffer's contents and +provide information to the Flymake user interface about where and how to +annotate problems diagnosed in a buffer. -Each backend function must be prepared to accept an arbitrary -number of arguments: +Each backend function must be prepared to accept an arbitrary number of +arguments: * the first argument is always REPORT-FN, a callback function detailed below; @@ -715,74 +710,72 @@ number of arguments: Currently, Flymake may provide these keyword-value pairs: -* `:recent-changes', a list of recent changes since the last time - the backend function was called for the buffer. An empty list - indicates that no changes have been recorded. If it is the - first time that this backend function is called for this - activation of `flymake-mode', then this argument isn't provided - at all (i.e. it's not merely nil). +* `:recent-changes', a list of recent changes since the last time the + backend function was called for the buffer. An empty list indicates + that no changes have been recorded. If it is the first time that this + backend function is called for this activation of `flymake-mode', then + this argument isn't provided at all (i.e. it's not merely nil). - Each element is in the form (BEG END TEXT) where BEG and END - are buffer positions, and TEXT is a string containing the text - contained between those positions (if any) after the change was - performed. + Each element is in the form (BEG END TEXT) where BEG and END are + buffer positions, and TEXT is a string containing the text contained + between those positions (if any) after the change was performed. -* `:changes-start' and `:changes-end', the minimum and maximum - buffer positions touched by the recent changes. These are only - provided if `:recent-changes' is also provided. +* `:changes-start' and `:changes-end', the minimum and maximum buffer + positions touched by the recent changes. These are only provided if + `:recent-changes' is also provided. -Whenever Flymake or the user decides to re-check the buffer, -backend functions are called as detailed above and are expected -to initiate this check, but aren't required to complete it before -exiting: if the computation involved is expensive, especially for -large buffers, that task can be scheduled for the future using -asynchronous processes or other asynchronous mechanisms. +Whenever Flymake or the user decides to re-check the buffer, backend +functions are called as detailed above and are expected to initiate this +check, but aren't required to complete it before exiting: if the +computation involved is expensive, especially for large buffers, that +task can be scheduled for the future using asynchronous processes or +other asynchronous mechanisms. -In any case, backend functions are expected to return quickly or -signal an error, in which case the backend is disabled. Flymake -will not try disabled backends again for any future checks of -this buffer. To reset the list of disabled backends, turn -`flymake-mode' off and on again, or interactively call -`flymake-start' with a prefix argument. +In any case, backend functions are expected to return quickly or signal +an error, in which case the backend is disabled. Flymake will not try +disabled backends again for any future checks of this buffer. To reset +the list of disabled backends, turn `flymake-mode' off and on again, or +interactively call `flymake-start' with a prefix argument. If the function returns, Flymake considers the backend to be -\"running\". If it has not done so already, the backend is -expected to call the function REPORT-FN with a single argument -REPORT-ACTION also followed by an optional list of keyword-value -pairs in the form (:REPORT-KEY VALUE :REPORT-KEY2 VALUE2...). +\"running\". If it has not done so already, the backend is expected to +call the function REPORT-FN with a single argument REPORT-ACTION also +followed by an optional list of keyword-value pairs in the +form (:REPORT-KEY VALUE :REPORT-KEY2 VALUE2...). Currently accepted values for REPORT-ACTION are: * A (possibly empty) list of diagnostic objects created with - `flymake-make-diagnostic', causing Flymake to delete all - previous diagnostic annotations in the buffer and create new - ones from this list. + `flymake-make-diagnostic', causing Flymake to delete all previous + diagnostic annotations in the buffer and create new ones from this + list. - A backend may call REPORT-FN repeatedly in this manner, but - only until Flymake considers that the most recently requested - buffer check is now obsolete because, say, buffer contents have - changed in the meantime. The backend is only given notice of - this via a renewed call to the backend function. Thus, to - prevent making obsolete reports and wasting resources, backend - functions should first cancel any ongoing processing from - previous calls. + A backend may call REPORT-FN repeatedly in this manner, but only until + Flymake considers that the most recently requested buffer check is now + obsolete because, say, buffer contents have changed in the meantime. + The backend is only given notice of this via a renewed call to the + backend function. Thus, to prevent making obsolete reports and + wasting resources, backend functions should first cancel any ongoing + processing from previous calls. -* The symbol `:panic', signaling that the backend has encountered - an exceptional situation and should be disabled. +* The symbol `:panic', signaling that the backend has encountered an + exceptional situation and should be disabled. Currently accepted REPORT-KEY arguments are: -* `:explanation' value should give user-readable details of - the situation encountered, if any. +* `:explanation' value should give user-readable details of the + situation encountered, if any. -* `:force': value should be a boolean suggesting that Flymake - consider the report even if it was somehow unexpected. +* `:force': value should be a boolean suggesting that Flymake consider + the report even if it was somehow unexpected. -* `:region': a cons (BEG . END) of buffer positions indicating - that the report applies to that region only. Specifically, - this means that Flymake will only delete diagnostic annotations - of past reports if they intersect the region by at least one - character.") +* `:region': a cons (BEG . END) of buffer positions specifying that + Flymake should only delete diagnostic annotations of past reports if + they intersect the region by at least one character. The list of + diagnostics objects in the report need not be contained in the region. + This makes it allows backends to choose between accumulating or + completely replacing diagnostics across different invocations of + REPORT-FN, by specifying a either 0-length region or the full buffer.") (put 'flymake-diagnostic-functions 'safe-local-variable #'null) @@ -854,73 +847,6 @@ associated `flymake-category' return DEFAULT." (flymake--lookup-type-property type 'severity (warning-numeric-level :error))) -(defun flymake--suitably-fringed-p (&optional window) - "Tell if WINDOW is suitably fringed-up fro Flymake." - (cl-case flymake-fringe-indicator-position - (left-fringe (< 0 (nth 0 (window-fringes window)))) - (right-fringe (< 0 (nth 1 (window-fringes window)))))) - -(defun flymake--bs-display (type where) - "Return a `display' spec for an overlay's `before-string'. -The overlay will represent a diagnostic of type TYPE. WHERE is the -symbol `fringes' or the symbol `margins'." - (let* ((indicator (flymake--lookup-type-property - type - (cl-case where - (fringes 'flymake-bitmap) - (margins 'flymake-margin-string)) - (alist-get 'bitmap (alist-get type ; backward compat - flymake-diagnostic-types-alist)))) - (value (if (symbolp indicator) - (symbol-value indicator) - indicator)) - (valuelist (if (listp value) - value - (list value))) - (indicator-car (car valuelist))) - (cond ((and (symbolp indicator-car) - flymake-fringe-indicator-position) - (cons flymake-fringe-indicator-position valuelist)) - ((and (stringp indicator-car) - flymake-margin-indicator-position) - `((margin ,flymake-margin-indicator-position) - ,(propertize - indicator-car - 'face `(:inherit (,(cdr valuelist) default)) - 'mouse-face 'highlight - 'help-echo "Open Flymake diagnostics" - 'keymap (let ((map (make-sparse-keymap))) - (define-key - map `[,flymake-margin-indicator-position mouse-1] - #'flymake-show-buffer-diagnostics) - map))))))) - -(defun flymake--restore-margins () - (when flymake--original-margin-width - (if (eq flymake-margin-indicator-position 'left-margin) - (setq left-margin-width flymake--original-margin-width) - (setq right-margin-width flymake--original-margin-width)))) - -(defun flymake--resize-margins () - (let* ((indicators - (mapcar (lambda (sym) - (let ((ind (get sym 'flymake-margin-string))) - (when (and (equal (car ind) "‼") - (not (char-displayable-p ?‼))) - (setq ind (cons "!!" (cdr ind))) - (put sym 'flymake-margin-string ind)) - (car ind))) - '(flymake-error flymake-warning flymake-note))) - (width (apply #'max (mapcar #'string-width indicators)))) - (if (eq flymake-margin-indicator-position 'left-margin) - (setq flymake--original-margin-width left-margin-width - left-margin-width width) - (setq flymake--original-margin-width right-margin-width - right-margin-width width))) - (mapc (lambda (x) - (set-window-buffer x (window-buffer x))) - (get-buffer-window-list nil nil 'visible))) - (defun flymake--equal-diagnostic-p (a b) "Tell if A and B are equivalent `flymake--diag' objects." (or (eq a b) @@ -2008,8 +1934,8 @@ POS can be a buffer position or a button" (defun flymake--tabulated-setup-1 (diags project-root) "Helper for `flymake--tabulated-setup'. -Sets `tabulated-list-format' and `tabulated-list-entries', dinamically -resizing columns and ommiting redudant columns." +Sets `tabulated-list-format' and `tabulated-list-entries', dynamically +resizing columns and omitting redundant columns." (cl-loop with fields = (copy-tree flymake--tabulated-list-format-base t) initially (cl-loop for y across fields do (setf (cadr y) nil)) @@ -2455,6 +2381,91 @@ some of this variable's contents the diagnostic listings.") text-end-col)) (concat " \n" (buffer-string)))) + +;;; Margins and fringes + +(defvar-local flymake--original-margin-width nil + "Store original margin width. +Used by `flymake--resize-margins' for restoring original margin width +when flymake is turned off.") + +(defun flymake--suitably-fringed-p (&optional window) + "Tell if WINDOW is suitably fringed-up fro Flymake." + (cl-case flymake-fringe-indicator-position + (left-fringe (< 0 (nth 0 (window-fringes window)))) + (right-fringe (< 0 (nth 1 (window-fringes window)))))) + +(defun flymake--bs-display (type where) + "Return a `display' spec for an overlay's `before-string'. +The overlay will represent a diagnostic of type TYPE. WHERE is the +symbol `fringes' or the symbol `margins'." + (let* ((indicator (flymake--lookup-type-property + type + (cl-case where + (fringes 'flymake-bitmap) + (margins 'flymake-margin-string)) + (alist-get 'bitmap (alist-get type ; backward compat + flymake-diagnostic-types-alist)))) + (value (if (symbolp indicator) + (symbol-value indicator) + indicator)) + (valuelist (if (listp value) + value + (list value))) + (indicator-car (car valuelist))) + (cond ((and (symbolp indicator-car) + flymake-fringe-indicator-position) + (cons flymake-fringe-indicator-position valuelist)) + ((and (stringp indicator-car) + flymake-margin-indicator-position) + `((margin ,flymake-margin-indicator-position) + ,(propertize + indicator-car + 'face `(:inherit (,(cdr valuelist) default)) + 'mouse-face 'highlight + 'help-echo "Open Flymake diagnostics" + 'keymap (let ((map (make-sparse-keymap))) + (define-key + map `[,flymake-margin-indicator-position mouse-1] + #'flymake-show-buffer-diagnostics) + map))))))) + +(defun flymake--appropriate-margin () + (if (eq flymake-margin-indicator-position 'left-margin) + 'left-margin-width 'right-margin-width)) + +(defun flymake--restore-margins () + (when flymake--original-margin-width + (set (flymake--appropriate-margin) flymake--original-margin-width)) + (flymake--apply-margins)) + +(defun flymake--suitable-margin-width () + (let* ((indicators + (mapcar (lambda (sym) + (let ((ind (get sym 'flymake-margin-string))) + (when (and (equal (car ind) "‼") + (not (char-displayable-p ?‼))) + (setq ind (cons "!!" (cdr ind))) + (put sym 'flymake-margin-string ind)) + (car ind))) + '(flymake-error flymake-warning flymake-note)))) + (apply #'max (mapcar #'string-width indicators)))) + +(defun flymake--resize-margins () + (let* ((sym (flymake--appropriate-margin)) + (width (flymake--suitable-margin-width)) + (curr (symbol-value sym))) + (unless (eq curr width) + (setq flymake--original-margin-width (symbol-value sym)) + (set sym width) + (flymake--apply-margins)))) + +(defun flymake--apply-margins () + ;; FIXME: this destroys any scroll an inactive window showing + (mapc (lambda (w) + (set-window-buffer w (window-buffer w))) + (get-buffer-window-list nil nil 'visible))) + (provide 'flymake) ;;; flymake.el ends here diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index a232e1bb320..6532b0a1861 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el @@ -1,6 +1,6 @@ ;;; fortran.el --- Fortran mode for GNU Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1986-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986-2026 Free Software Foundation, Inc. ;; Author: Michael D. Prange ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el index 52cb301da84..2174c8d7908 100644 --- a/lisp/progmodes/gdb-mi.el +++ b/lisp/progmodes/gdb-mi.el @@ -1,6 +1,6 @@ ;;; gdb-mi.el --- User Interface for running GDB -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Nick Roberts ;; Maintainer: emacs-devel@gnu.org @@ -403,6 +403,20 @@ triggers in `gdb-handler-list'." (gdb-wait-for-pending func) (funcall func))))) +(defun gdb-start-wait-for-pending (var func) + "Start waiting for pending GDB commands with VAR and FUNC. +This calls `gdb-wait-for-pending' if there isn't already a timer waiting +for running the same FUNC, as indicated by a non-nil value of VAR. +VAR should be a symbol of a boolean variable. +The assumption is that when FUNC will be called, it will do the job for +all the events that need to run FUNC after the pending GDB commands are +finished. +FUNC should reset VAR to nil, so further events of the same kind will +be handled after FUNC exits." + (when (null (symbol-value var)) + (set var t) + (gdb-wait-for-pending func))) + ;; Publish-subscribe (defmacro gdb-add-subscriber (publisher subscriber) @@ -2638,6 +2652,9 @@ means to decode using the coding-system set for the GDB process." (defun gdb-ignored-notification (_token _output-field)) +(defvar gdb--update-threads-queued-p nil + "If non-nil, we already queued the `update-threads' signal.") + ;; gdb-invalidate-threads is defined to accept 'update-threads signal (defun gdb-thread-created (_token _output-field)) (defun gdb-thread-exited (_token output-field) @@ -2649,9 +2666,17 @@ Unset `gdb-thread-number' if current thread exited and update threads list." ;; When we continue current thread and it quickly exits, ;; the pending triggers in gdb-handler-list left after gdb-running ;; disallow us to properly call -thread-info without --thread option. - ;; Thus we need to use gdb-wait-for-pending. - (gdb-wait-for-pending - (lambda () (gdb-emit-signal gdb-buf-publisher 'update-threads))))) + ;; Thus we need to use gdb-wait-for-pending. But we should start + ;; waiting only once if we get a long series of =thread-exited + ;; notifications during the wait period, because otherwise we will + ;; flood the Emacs main loop with many timers. When the time + ;; expires, it will process all the threads that exited meanwhile, + ;; and the next =thread-exited notification will start a new wait. + (gdb-start-wait-for-pending + 'gdb--update-threads-queued-p + (lambda () + (setq gdb--update-threads-queued-p nil) + (gdb-emit-signal gdb-buf-publisher 'update-threads))))) (defun gdb-thread-selected (_token output-field) "Handler for =thread-selected MI output record. @@ -5359,7 +5384,7 @@ BUFFER nil or omitted means use the current buffer." (let* ((posns (gdb-line-posns (or line (line-number-at-pos)))) (start (- (car posns) 1)) (end (+ (cdr posns) 1)) - (putstring (if enabled "B" "b")) + (putstring (make-string 1 (if enabled ?B ?b))) (source-window (get-buffer-window (current-buffer) 0))) (add-text-properties 0 1 '(help-echo "mouse-1: clear bkpt, mouse-3: enable/disable bkpt") diff --git a/lisp/progmodes/glasses.el b/lisp/progmodes/glasses.el index fefccb90b3f..adda28cd360 100644 --- a/lisp/progmodes/glasses.el +++ b/lisp/progmodes/glasses.el @@ -1,6 +1,6 @@ ;;; glasses.el --- make cantReadThis readable -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Milan Zamazal ;; Keywords: tools diff --git a/lisp/progmodes/go-ts-mode.el b/lisp/progmodes/go-ts-mode.el index f29615f72b0..b0b12bb7b78 100644 --- a/lisp/progmodes/go-ts-mode.el +++ b/lisp/progmodes/go-ts-mode.el @@ -1,6 +1,6 @@ ;;; go-ts-mode.el --- tree-sitter support for Go -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Randy Taylor ;; Maintainer : Randy Taylor diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index ab131fddf9d..e0552b3a7b2 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -1,6 +1,6 @@ ;;; grep.el --- run `grep' and display the results -*- lexical-binding:t -*- -;; Copyright (C) 1985-1987, 1993-1999, 2001-2025 Free Software +;; Copyright (C) 1985-1987, 1993-1999, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Roland McGrath @@ -29,7 +29,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) (require 'compile) (defgroup grep nil diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 5980bc2f3c6..e0e6ba7c88c 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -1,6 +1,6 @@ ;;; gud.el --- Grand Unified Debugger mode for running GDB and other debuggers -*- lexical-binding:t -*- -;; Copyright (C) 1992-1996, 1998, 2000-2025 Free Software Foundation, +;; Copyright (C) 1992-1996, 1998, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Eric S. Raymond @@ -584,7 +584,7 @@ required by the caller." (while var-list (let* (char (depth 0) (start 0) (var (car var-list)) (varnum (car var)) (expr (nth 1 var)) - (type (if (nth 3 var) (nth 3 var) " ")) + (type (copy-sequence (or (nth 3 var) " "))) (value (nth 4 var)) (status (nth 5 var)) (has-more (nth 6 var))) (put-text-property diff --git a/lisp/progmodes/heex-ts-mode.el b/lisp/progmodes/heex-ts-mode.el index dc2b9c8f528..d756224f371 100644 --- a/lisp/progmodes/heex-ts-mode.el +++ b/lisp/progmodes/heex-ts-mode.el @@ -1,6 +1,6 @@ ;;; heex-ts-mode.el --- Major mode for Heex with tree-sitter support -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Wilhelm H Kirschbaum ;; Created: November 2022 diff --git a/lisp/progmodes/hideif.el b/lisp/progmodes/hideif.el index 0ddaf513a02..65c91d14e9f 100644 --- a/lisp/progmodes/hideif.el +++ b/lisp/progmodes/hideif.el @@ -1,6 +1,6 @@ ;;; hideif.el --- hides selected code within ifdef -*- lexical-binding:t -*- -;; Copyright (C) 1988, 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988, 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Brian Marick ;; Daniel LaLiberte @@ -284,19 +284,31 @@ This backup prevents any accidental clearance of `hide-ifdef-env' by (define-minor-mode hide-ifdef-mode "Toggle features to hide/show #ifdef blocks (Hide-Ifdef mode). -Hide-Ifdef mode is a buffer-local minor mode for use with C and +\\Hide-Ifdef mode is a buffer-local minor mode for use with C and C-like major modes. When enabled, code within #ifdef constructs that the C preprocessor would eliminate may be hidden from view. + +Use \\[hide-ifdefs] to hide ifdefs and \\[hide-ifdefs] to show them. +Use \\[hif-show-all] to show all ifdefs. + Several variables affect how the hiding is done: `hide-ifdef-env' An association list of defined and undefined symbols for the - current project. Initially, the global value of `hide-ifdef-env' - is used. This variable was a buffer-local variable, which limits - hideif to parse only one C/C++ file at a time. We've extended - hideif to support parsing a C/C++ project containing multiple C/C++ - source files opened simultaneously in different buffers. Therefore - `hide-ifdef-env' can no longer be buffer local but must be global. + current project. Use \\[hide-ifdef-define] and \\[hide-ifdef-undef] to update the value of + this list with defined or undefined symbols. + We've extended hideif to support parsing a C/C++ project + containing multiple C/C++ source files opened simultaneously in + different buffers. Therefore `hide-ifdef-env' can no longer be + buffer local but must be global. + +`hide-ifdef-initially' + Customize this to a non-nil value to cause ifdefs be hidden as + soon as `hide-ifdef-mode' is turned on. + +`hide-ifdef-lines' + Customize to non-nil to hide the #if, #ifdef, #ifndef, #else, + and #endif lines when hiding ifdefs. `hide-ifdef-define-alist' An association list of defined symbol lists. @@ -304,14 +316,6 @@ Several variables affect how the hiding is done: and `hide-ifdef-use-define-alist' to set the current `hide-ifdef-env' from one of the lists in `hide-ifdef-define-alist'. -`hide-ifdef-lines' - Set to non-nil to not show #if, #ifdef, #ifndef, #else, and - #endif lines when hiding. - -`hide-ifdef-initially' - Indicates whether `hide-ifdefs' should be called when Hide-Ifdef mode - is activated. - `hide-ifdef-read-only' Set to non-nil if you want to make buffers read only while hiding. After `show-ifdefs', read-only status is restored to previous value. @@ -353,9 +357,10 @@ Several variables affect how the hiding is done: (defun hif-clear-all-ifdef-defined () "Clears all symbols defined in `hide-ifdef-env'. -It will backup this variable to `hide-ifdef-env-backup' before clearing to -prevent accidental clearance. -When prefixed, it swaps current symbols with the backup ones." +This command will backup this variable to `hide-ifdef-env-backup' before +clearing, to prevent accidental clearance. +With prefix argument, swap the current list of defined symbols with the +backup one." (interactive) (if current-prefix-arg (if hide-ifdef-env-backup @@ -375,8 +380,9 @@ When prefixed, it swaps current symbols with the backup ones." (message "All defined symbols cleared." )))) (defun hif-show-all (&optional start end) - "Show all of the text in the current buffer. -If there is a marked region from START to END it only shows the symbols within." + "Show all of the text in the current buffer, unhiding ifdefs. +If there is a marked region from START to END, only show the symbols in +that region." (interactive (if (use-region-p) (list (region-beginning) (region-end)) @@ -1958,7 +1964,7 @@ Do this when cursor is at the beginning of `regexp' (i.e. #ifX)." (defun forward-ifdef (&optional arg) "Move point to beginning of line of the next ifdef-endif. -With argument, do this that many times." +With prefix argument N, do this that many times." (interactive "p") (or arg (setq arg 1)) (if (< arg 0) (backward-ifdef (- arg)) @@ -1975,7 +1981,7 @@ With argument, do this that many times." (defun backward-ifdef (&optional arg) "Move point to beginning of the previous ifdef-endif. -With argument, do this that many times." +With prefix argument N, do this that many times." (interactive "p") (or arg (setq arg 1)) (if (< arg 0) (forward-ifdef (- arg)) @@ -2016,7 +2022,7 @@ With argument, do this that many times." (defun next-ifdef (&optional arg) "Move to the beginning of the next #ifX, #else, or #endif. -With argument, do this that many times." +With prefix argument N, do this that many times." (interactive "p") (or arg (setq arg 1)) (if (< arg 0) (previous-ifdef (- arg)) @@ -2029,7 +2035,7 @@ With argument, do this that many times." (defun previous-ifdef (&optional arg) "Move to the beginning of the previous #ifX, #else, or #endif. -With argument, do this that many times." +With prefix argument N, do this that many times." (interactive "p") (or arg (setq arg 1)) (if (< arg 0) (next-ifdef (- arg)) @@ -2294,12 +2300,13 @@ Refer to `hide-ifdef-expand-reinclusion-guard' for more details." (defun hif-evaluate-macro (rstart rend) "Evaluate the macro expansion result for the active region. If no region is currently active, find the current #ifdef/#define and evaluate -the result; otherwise it looks for current word at point. -Currently it supports only math calculations, strings or argumented macros can +the result; otherwise look for current word at point. +Currently it supports only math calculations; strings or argumented macros can not be expanded. -This function by default ignores parsing error and return `false' on evaluating -runtime C(++) statements or tokens that normal C(++) preprocessor can't perform; -however, when this command is prefixed, it will display the error instead." +This function by default ignores parsing error and returns `false' on +evaluating runtime C(++) statements or tokens that normal C(++) preprocessor +can't perform; however, when invoked with prefix argument, it will display +the error instead." (interactive (if (not (use-region-p)) '(nil nil) @@ -2450,7 +2457,8 @@ first arg will be `hif-etc'." (defvar hif-verbose-define-count 0) (defun hif-find-define (&optional min max) - "Parse texts and retrieve all defines within the region MIN and MAX." + "Parse texts and retrieve all defines within the region MIN and MAX. +Interactively, MIN is position of point and MAX is the end of the buffer." (interactive) (and min (goto-char min)) (and (re-search-forward hif-define-regexp max t) @@ -2530,7 +2538,8 @@ first arg will be `hif-etc'." (defun hif-add-new-defines (&optional min max) - "Scan and add all #define macros between MIN and MAX." + "Scan and add all #define macros between MIN and MAX. +Interactively, MIN is position of point and MAX is the end of the buffer." (interactive) (save-excursion (save-restriction @@ -2628,7 +2637,7 @@ It does not do the work that's pointless to redo on a recursive entry." (defun hide-ifdef-define (var &optional val) "Define a VAR to VAL (default 1) in `hide-ifdef-env'. -This allows #ifdef VAR to be hidden." +This allows #ifndef VAR to be hidden." (interactive (let* ((default (save-excursion (beginning-of-line) @@ -2678,7 +2687,7 @@ This allows #ifdef VAR to be hidden." Assume that defined symbols have been added to `hide-ifdef-env'. The text hidden is the text that would not be included by the C preprocessor if it were given the file with those symbols defined. -With prefix command presents it will also hide the #ifdefs themselves. +With prefix argument, also hide the #ifdefs themselves. Hiding will only be performed within the marked region if there is one. diff --git a/lisp/progmodes/hideshow.el b/lisp/progmodes/hideshow.el index 688f2e7cdff..3043b04c5ad 100644 --- a/lisp/progmodes/hideshow.el +++ b/lisp/progmodes/hideshow.el @@ -1,6 +1,6 @@ ;;; hideshow.el --- Minor mode to hide/show comment or code blocks -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Thien-Thi Nguyen ;; Dan Nicolaescu @@ -169,16 +169,28 @@ ;; These variables help hideshow know what is considered a block, which ;; function to use to get the block positions, etc. ;; -;; A block is defined as text surrounded by `hs-block-start-regexp' and -;; `hs-block-end-regexp'. +;; A (code) block is defined as text surrounded by +;; `hs-block-start-regexp' and `hs-block-end-regexp'. ;; ;; For some major modes, forward-sexp does not work properly. In those ;; cases, `hs-forward-sexp-function' specifies another function to use ;; instead. +;; *** Non-regexp matching +;; +;; By default, Hideshow uses regular expressions to match blocks. For +;; something more advanced than regexp is necessary to modify these +;; variables (see their docstring): +;; - `hs-forward-sexp-function' +;; - `hs-find-block-beginning-function' +;; - `hs-find-next-block-function' +;; - `hs-looking-at-block-start-predicate' +;; - `hs-inside-comment-predicate' (For comments) +;; - `hs-block-end-regexp' (Preferably, this should be set to nil) +;; ;; *** Tree-sitter support ;; -;; All the treesit based modes already have support for hidding/showing +;; All the treesit based modes already have support for hiding/showing ;; using the treesit thing `list' (see `treesit-major-mode-setup'). ;; ;; However, for some modes the `list' thing is not enough for detecting @@ -616,24 +628,26 @@ Note that `mode-line-format' is buffer-local.") (defvar-local hs-block-start-regexp "\\s(" "Regexp for beginning of block.") -;; This is useless, so probably should be deprecated. (defvar-local hs-block-start-mdata-select 0 "Element in `hs-block-start-regexp' match data to consider as block start. -The internal function `hs-forward-sexp' moves point to the beginning of this -element (using `match-beginning') before calling `hs-forward-sexp-function'.") +This is used by `hs-block-positions' to move point to the beginning of +this element (using `match-beginning') before calling +`hs-forward-sexp-function'. + +This is used for regexp matching.") (defvar-local hs-block-end-regexp "\\s)" "Regexp for end of block. -As a special case, the value can be also a function without arguments to -determine if point is looking at the end of the block, and return -non-nil and set `match-data' to that block end positions.") +This is mostly used to determine if point is at the end of the block. + +As a special case, it can be nil (to use the position from +`hs-forward-sexp-function'), or a function without arguments. If it's a +function, it should return non-nil if point is at end of a block, and +set `match-data' to that position.") (defvar-local hs-c-start-regexp nil "Regexp for beginning of comments. -Differs from mode-specific comment regexps in that surrounding -whitespace is stripped. - -If not bound, hideshow will use current `comment-start' value without +If not bound, Hideshow will use current `comment-start' value without any trailing whitespace.") (define-obsolete-variable-alias @@ -641,13 +655,13 @@ any trailing whitespace.") 'hs-forward-sexp-function "31.1") (defvar-local hs-forward-sexp-function #'forward-sexp - "Function used to do a `forward-sexp'. -It is called with 1 argument (like `forward-sexp'). + "Function used to reposition point to the end of the region to hide. +For backward compatibility, the function is called with one argument, +which can be ignored. -Should change for Algol-ish modes. For single-character block -delimiters such as `(' and `)' `hs-forward-sexp-function' would just be -`forward-sexp'. For other modes such as simula, a more specialized -function is necessary.") +The function is called in front of the beginning of the block (usually the +current value of `hs-block-start-regexp' in the buffer) and should +reposition point to the end of the block.") (define-obsolete-variable-alias 'hs-adjust-block-beginning @@ -655,22 +669,23 @@ function is necessary.") (defvar-local hs-adjust-block-beginning-function nil "Function used to tweak the block beginning. -It should return the position from where we should start hiding, as -opposed to hiding it from the position returned when searching for -`hs-block-start-regexp'. +It is called at the beginning of the block (usually the current value of +`hs-block-start-regexp' in the buffer) and should return the start +position of the region in the buffer that will be hidden. It is called with a single argument ARG which is the position in buffer after the block beginning.") (defvar-local hs-adjust-block-end-function nil "Function used to tweak the block end. +It is called at the end of the block with one argument, the start +position of the region in the buffer that will be hidden. It should +return either the last position to hide or nil. If it returns nil, +Hideshow will guess the end position. + This is useful to ensure some characters such as parenthesis or curly braces get properly hidden in modes without parenthesis pairs -delimiters (such as python). - -It is called with one argument, which is the start position where the -overlay will be created, and should return either the last position to -hide or nil. If it returns nil, hideshow will guess the end position.") +delimiters (such as python).") (define-obsolete-variable-alias 'hs-find-block-beginning-func @@ -679,13 +694,9 @@ hide or nil. If it returns nil, hideshow will guess the end position.") (defvar-local hs-find-block-beginning-function #'hs-find-block-beg-fn--default - "Function used to do `hs-find-block-beginning'. -It should reposition point at the beginning of the current block -and return point, or nil if original point was not in a block. - -Specifying this function is necessary for languages such as -Python, where regexp search and `syntax-ppss' check is not enough -to find the beginning of the current block.") + "Function used to reposition point at the beginning of current block. +If it finds the block beginning, it should reposition point there and +return non-nil, otherwise it should return nil.") (define-obsolete-variable-alias 'hs-find-next-block-func @@ -694,20 +705,20 @@ to find the beginning of the current block.") (defvar-local hs-find-next-block-function #'hs-find-next-block-fn--default - "Function used to do `hs-find-next-block'. + "Function to find the start of the next block. It should reposition point at next block start. -It is called with three arguments REGEXP, BOUND, and COMMENTS. REGEXP -is a regexp representing block start. When block start is found, -`match-data' should be set using REGEXP. BOUND is a buffer position -that limits the search. When COMMENTS is non-nil, REGEXP matches not -only beginning of a block but also beginning of a comment. In this -case, the function should find nearest block or comment and return -non-nil. +It is called with three arguments REGEXP, BOUND, and COMMENTS. -Specifying this function is necessary for languages such as Python, -where regexp search is not enough to find the beginning of the next -block.") +REGEXP is a regexp representing block start. When block start is found, +should set the match data according to the beginning position of the +matched REGEXP or block start position. + +BOUND is a buffer position that limits the search. + +When COMMENTS is non-nil, REGEXP matches not only beginning of a block +but also beginning of a comment. In this case, the function should find +the nearest block or comment and return non-nil.") (define-obsolete-variable-alias 'hs-looking-at-block-start-p-func @@ -716,16 +727,13 @@ block.") (defvar-local hs-looking-at-block-start-predicate #'hs-looking-at-block-start-p--default - "Function used to do `hs-looking-at-block-start-p'. -It should return non-nil if the point is at the block start and set -match data with the beginning and end of that position. - -Specifying this function is necessary for languages such as -Python, where `looking-at' and `syntax-ppss' check is not enough -to check if the point is at the block start.") + "Function used to check if point is at the block start. +It should return non-nil if point is at the block start and modify the +match data to the block beginning start and end positions (specifically, +for `match-end').") (defvar-local hs-inside-comment-predicate #'hs-inside-comment-p--default - "Function used to check if point is inside a comment. + "Function used to get comment positions. If point is inside a comment, the function should return a list containing the buffer position of the start and the end of the comment, otherwise it should return nil.") @@ -802,21 +810,24 @@ point. If either ADJUST-BEG or ADJUST-END are non-nil, adjust block positions according to `hs-adjust-block-beginning', `hs-adjust-block-end-function' -and `hs-block-end-regexp'." +and `hs-block-end-regexp'. + +This is for code block positions only, for comments use +`hs-inside-comment-predicate'." ;; `catch' is used here if the search fails due unbalanced parentheses ;; or any other unknown error caused in `hs-forward-sexp-function'. (catch 'hs--block-exit (save-match-data (save-excursion (when (funcall hs-looking-at-block-start-predicate) - (let ((beg (match-end 0)) end) - ;; `beg' is the point at the end of the block - ;; beginning, which may need to be adjusted + (let* ((beg (match-end 0)) end) + ;; `beg' is the point at the block beginning, which may need + ;; to be adjusted (when adjust-beg + (setq beg (pos-eol)) (save-excursion (when hs-adjust-block-beginning-function - (goto-char (funcall hs-adjust-block-beginning-function beg))) - (setq beg (pos-eol)))) + (goto-char (funcall hs-adjust-block-beginning-function beg))))) (goto-char (match-beginning hs-block-start-mdata-select)) (condition-case _ @@ -1146,7 +1157,7 @@ property of an overlay." (overlay-put ov 'invisible (and hide-p 'hs))) (defun hs-looking-at-block-start-p--default () - "Return non-nil if the point is at the block start." + "Return non-nil if point is at the block start." (and (looking-at hs-block-start-regexp) (save-match-data (not (nth 8 (syntax-ppss)))))) @@ -1262,7 +1273,7 @@ Return point, or nil if original point was not in a block." ;; look backward for the start of a block that contains the cursor (save-excursion (while (and (re-search-backward hs-block-start-regexp nil t) - (goto-char (match-beginning hs-block-start-mdata-select)) + (goto-char (match-beginning 0)) ;; go again if in a comment or a string (or (save-match-data (nth 8 (syntax-ppss))) (not (setq done (and (<= here (cadr (hs-block-positions))) @@ -1487,36 +1498,38 @@ Key bindings: :keymap hs-minor-mode-map (setq hs-headline nil) - (if hs-minor-mode - (progn - (unless (and comment-start comment-end) - (setq hs-minor-mode nil) - (user-error "%S doesn't support the Hideshow minor mode" - major-mode)) + (cond + ((and hs-minor-mode + (not (and comment-start comment-end))) + (setq hs-minor-mode nil) + (message "%S doesn't support the Hideshow minor mode" + major-mode)) - ;; Set the old variables - (hs-grok-mode-type) - ;; Turn off this mode if we change major modes. - (add-hook 'change-major-mode-hook - #'turn-off-hideshow nil t) - (setq-local line-move-ignore-invisible t) - (add-to-invisibility-spec '(hs . t)) - ;; Add block indicators - (when (and hs-show-indicators - (or (and (integerp hs-indicator-maximum-buffer-size) - (< (buffer-size) hs-indicator-maximum-buffer-size)) - (not hs-indicator-maximum-buffer-size))) - (when (and (not (display-graphic-p)) - (eq hs-indicator-type 'fringe)) - (setq-local hs-indicator-type 'margin)) - (when (eq hs-indicator-type 'margin) - (setq-local left-margin-width (1+ left-margin-width)) - (setq-local fringes-outside-margins t) - ;; Force display of margins - (when (eq (current-buffer) (window-buffer)) - (set-window-buffer nil (window-buffer)))) - (jit-lock-register #'hs--add-indicators))) + (hs-minor-mode + ;; Set the old variables + (hs-grok-mode-type) + ;; Turn off this mode if we change major modes. + (add-hook 'change-major-mode-hook + #'turn-off-hideshow nil t) + (setq-local line-move-ignore-invisible t) + (add-to-invisibility-spec '(hs . t)) + ;; Add block indicators + (when (and hs-show-indicators + (or (and (integerp hs-indicator-maximum-buffer-size) + (< (buffer-size) hs-indicator-maximum-buffer-size)) + (not hs-indicator-maximum-buffer-size))) + (when (and (not (display-graphic-p)) + (eq hs-indicator-type 'fringe)) + (setq-local hs-indicator-type 'margin)) + (when (eq hs-indicator-type 'margin) + (setq-local left-margin-width (1+ left-margin-width)) + (setq-local fringes-outside-margins t) + ;; Force display of margins + (when (eq (current-buffer) (window-buffer)) + (set-window-buffer nil (window-buffer)))) + (jit-lock-register #'hs--add-indicators))) + (t (remove-from-invisibility-spec '(hs . t)) (remove-overlays nil nil 'hs-indicator t) (remove-overlays nil nil 'invisible 'hs) @@ -1528,7 +1541,7 @@ Key bindings: (kill-local-variable 'fringes-outside-margins) ;; Force removal of margins (when (eq (current-buffer) (window-buffer)) - (set-window-buffer nil (window-buffer))))))) + (set-window-buffer nil (window-buffer)))))))) ;;;; that's it diff --git a/lisp/progmodes/icon.el b/lisp/progmodes/icon.el index ebd27bc54b6..9dffc916175 100644 --- a/lisp/progmodes/icon.el +++ b/lisp/progmodes/icon.el @@ -1,6 +1,6 @@ ;;; icon.el --- mode for editing Icon code -*- lexical-binding: t -*- -;; Copyright (C) 1989, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 2001-2026 Free Software Foundation, Inc. ;; Author: Chris Smith ;; Created: 15 Feb 89 diff --git a/lisp/progmodes/inf-lisp.el b/lisp/progmodes/inf-lisp.el index 7b9a3ef3310..38ac08d97c6 100644 --- a/lisp/progmodes/inf-lisp.el +++ b/lisp/progmodes/inf-lisp.el @@ -1,6 +1,6 @@ ;;; inf-lisp.el --- an inferior-lisp mode -*- lexical-binding: t -*- -;; Copyright (C) 1988-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988-2026 Free Software Foundation, Inc. ;; Author: Olin Shivers ;; Keywords: processes, lisp diff --git a/lisp/progmodes/java-ts-mode.el b/lisp/progmodes/java-ts-mode.el index cd97472a3cd..79c5a9d1f98 100644 --- a/lisp/progmodes/java-ts-mode.el +++ b/lisp/progmodes/java-ts-mode.el @@ -1,6 +1,6 @@ ;;; java-ts-mode.el --- tree-sitter support for Java -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Theodor Thornhill ;; Maintainer : Theodor Thornhill diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 8d37bb53988..44c54a60757 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -1,6 +1,6 @@ ;;; js.el --- Major mode for editing JavaScript -*- lexical-binding: t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: Karl Landstrom ;; Daniel Colascione diff --git a/lisp/progmodes/json-ts-mode.el b/lisp/progmodes/json-ts-mode.el index 2e823c11cee..cd4cb468095 100644 --- a/lisp/progmodes/json-ts-mode.el +++ b/lisp/progmodes/json-ts-mode.el @@ -1,6 +1,6 @@ ;;; json-ts-mode.el --- tree-sitter support for JSON -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Theodor Thornhill ;; Maintainer : Theodor Thornhill @@ -128,6 +128,60 @@ Return nil if there is no name or if NODE is not a defun node." t) "\"" "\"")))) +(defun json-ts--get-path-at-node (node) + "Get the path from the root of the JSON tree to NODE. +Return a list of keys (strings) and indices (numbers). +NODE is a tree-sitter node." + (let ((path nil) + (parent nil)) + (while (setq parent (treesit-node-parent node)) + (let ((type (treesit-node-type parent))) + (cond + ((equal type "array") + (push (treesit-node-index node t) path)) + ((equal type "pair") + (let ((key (treesit-node-child-by-field-name parent "key"))) + (push (treesit-node-text key t) path))))) + (setq node parent)) + path)) + +(defun json-ts--path-to-jq (path) + "Convert PATH list to a jq-style path string. +PATH is a list of keys (strings) and indices (numbers)." + (mapconcat + (lambda (x) + (cond + ((numberp x) (format "[%d]" x)) + ((stringp x) + (let ((key (string-trim x "\"" "\""))) + (if (string-match-p (rx bos (any alpha "_") (* (any alnum "_")) eos) key) + (format ".%s" key) + (format "[%S]" key)))) + (t ""))) + path + "")) + +(defun json-ts--path-to-python (path) + "Convert PATH list to a Python-style path string. +PATH is a list of keys (strings) and indices (numbers)." + (mapconcat + (lambda (x) + (cond + ((numberp x) (format "[%d]" x)) + ((stringp x) (format "[\"%s\"]" x)) + (t ""))) + path + "")) + +(defun json-ts-jq-path-at-point () + "Show the JSON path at point in jq format." + (interactive) + (if-let* ((node (treesit-node-at (point)))) + (let ((path (json-ts--path-to-jq (json-ts--get-path-at-node node)))) + (kill-new path) + (message "%s" path)) + (user-error "No JSON node at point"))) + ;;;###autoload (define-derived-mode json-ts-mode prog-mode "JSON" "Major mode for editing JSON, powered by tree-sitter." diff --git a/lisp/progmodes/ld-script.el b/lisp/progmodes/ld-script.el index 396c2bc6a59..4819e02e6c5 100644 --- a/lisp/progmodes/ld-script.el +++ b/lisp/progmodes/ld-script.el @@ -1,6 +1,6 @@ ;;; ld-script.el --- GNU linker script editing mode for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: Masatake YAMATO ;; Keywords: languages, faces diff --git a/lisp/progmodes/lua-mode.el b/lisp/progmodes/lua-mode.el index faeadf212de..bc042599759 100644 --- a/lisp/progmodes/lua-mode.el +++ b/lisp/progmodes/lua-mode.el @@ -1,6 +1,6 @@ ;;; lua-mode.el --- Major-mode for editing Lua files -*- lexical-binding: t -*- -;; Copyright (C) 2025 Free Software Foundation, Inc. +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. ;; Author: 2011-2013 immerrr ;; 2010-2011 Reuben Thomas @@ -354,8 +354,8 @@ traceback location." ("string" . ("byte" "char" "dump" "find" "format" "gmatch" "gsub" "len" "lower" "match" "pack" "packsize" "rep" "reverse" "sub" "unpack" "upper")) - ("table" . ("concat" "insert" "maxn" "move" "pack" "remove" "sort" - "unpack")) + ("table" . ("concat" "create" "insert" "maxn" "move" "pack" "remove" + "sort" "unpack")) ("utf8" . ("char" "charpattern" "codepoint" "codes" "len" "offset"))))) @@ -748,7 +748,7 @@ Return the amount the indentation changed by." (pos (- (point-max) (point)))) (back-to-indentation) (setq indent (if (lua-comment-or-string-p) - ;; Just restore point posistion. + ;; Just restore point position. (lua-calculate-string-or-comment-indentation) (max 0 (lua-calculate-indentation)))) @@ -1011,7 +1011,7 @@ DIRECTION has to be either \\='forward or \\='backward." maybe-found-pos))) (defun lua-goto-matching-block-token (&optional parse-start direction) - "Find block begion/end token matching the one at the point. + "Find block begin/end token matching the one at the point. This function moves the point to the token that matches the one at the current point. Returns the point position of the first character of the matching token if successful, nil otherwise. @@ -1525,7 +1525,7 @@ The argument REVERSED-INDENTATION-INFO is an indentation INFO-LIST." (let (indentation-info (type 'relative) (accu 0)) - ;; Aggregate all neighbouring relative offsets, reversing the INFO list. + ;; Aggregate all neighboring relative offsets, reversing the INFO list. (dolist (elt reversed-indentation-info) (if (and (eq (car elt) 'relative) (eq (caar indentation-info) 'relative)) diff --git a/lisp/progmodes/lua-ts-mode.el b/lisp/progmodes/lua-ts-mode.el index 8cbd2efda70..8d726b9b15b 100644 --- a/lisp/progmodes/lua-ts-mode.el +++ b/lisp/progmodes/lua-ts-mode.el @@ -1,6 +1,6 @@ ;;; lua-ts-mode.el --- Major mode for editing Lua files -*- lexical-binding: t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: John Muhl ;; Created: June 27, 2023 diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el index b2c8eb1a017..eff74530c3b 100644 --- a/lisp/progmodes/m4-mode.el +++ b/lisp/progmodes/m4-mode.el @@ -1,6 +1,6 @@ ;;; m4-mode.el --- m4 code editing commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1996-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Andrew Csillag ;; Keywords: languages, faces diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index d5fdd063825..8856856100e 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el @@ -1,6 +1,6 @@ ;;; make-mode.el --- makefile editing commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Thomas Neumann ;; Eric S. Raymond diff --git a/lisp/progmodes/meta-mode.el b/lisp/progmodes/meta-mode.el index b34edd0dfec..80e586d225c 100644 --- a/lisp/progmodes/meta-mode.el +++ b/lisp/progmodes/meta-mode.el @@ -1,6 +1,6 @@ ;;; meta-mode.el --- major mode for editing Metafont or MetaPost sources -*- lexical-binding:t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Ulrik Vieth ;; Version: 1.0 diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el index 91c6a3f038b..85f4ca2aff5 100644 --- a/lisp/progmodes/mixal-mode.el +++ b/lisp/progmodes/mixal-mode.el @@ -1,6 +1,6 @@ ;;; mixal-mode.el --- Major mode for the mix asm language. -*- lexical-binding:t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Pieter E.J. Pareit ;; Maintainer: Jose A Ortega Ruiz diff --git a/lisp/progmodes/octave.el b/lisp/progmodes/octave.el index ee9c30d5080..d5e1dc39790 100644 --- a/lisp/progmodes/octave.el +++ b/lisp/progmodes/octave.el @@ -1,6 +1,6 @@ ;;; octave.el --- editing octave source files under emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Kurt Hornik ;; John Eaton diff --git a/lisp/progmodes/opascal.el b/lisp/progmodes/opascal.el index bd6bc3b28ac..24ebd744c76 100644 --- a/lisp/progmodes/opascal.el +++ b/lisp/progmodes/opascal.el @@ -1,6 +1,6 @@ ;;; opascal.el --- major mode for editing Object Pascal source in Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1998-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-1999, 2001-2026 Free Software Foundation, Inc. ;; Authors: Ray Blaak , ;; Simon South diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el index b6316d4dfe1..874588ce70f 100644 --- a/lisp/progmodes/pascal.el +++ b/lisp/progmodes/pascal.el @@ -1,6 +1,6 @@ ;;; pascal.el --- major mode for editing pascal source in Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: Espen Skoglund ;; Keywords: languages diff --git a/lisp/progmodes/peg.el b/lisp/progmodes/peg.el index 9fb46cb05e4..73029d7a223 100644 --- a/lisp/progmodes/peg.el +++ b/lisp/progmodes/peg.el @@ -1,6 +1,6 @@ ;;; peg.el --- Parsing Expression Grammars in Emacs Lisp -*- lexical-binding:t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; ;; Author: Helmut Eller ;; Maintainer: Stefan Monnier diff --git a/lisp/progmodes/perl-mode.el b/lisp/progmodes/perl-mode.el index 7820a599301..61988d85027 100644 --- a/lisp/progmodes/perl-mode.el +++ b/lisp/progmodes/perl-mode.el @@ -1,6 +1,6 @@ ;;; perl-mode.el --- Perl code editing commands for GNU Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1990, 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1990, 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: William F. Mann ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/php-ts-mode.el b/lisp/progmodes/php-ts-mode.el index 953c115e69e..a780aa538e3 100644 --- a/lisp/progmodes/php-ts-mode.el +++ b/lisp/progmodes/php-ts-mode.el @@ -1,6 +1,6 @@ ;;; php-ts-mode.el --- Major mode for editing PHP files using tree-sitter -*- lexical-binding: t; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author: Vincenzo Pupillo ;; Maintainer: Vincenzo Pupillo diff --git a/lisp/progmodes/prog-mode.el b/lisp/progmodes/prog-mode.el index 50aac95dbc6..afa18d9958b 100644 --- a/lisp/progmodes/prog-mode.el +++ b/lisp/progmodes/prog-mode.el @@ -1,6 +1,6 @@ ;;; prog-mode.el --- Generic major mode for programming -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/progmodes/project.el b/lisp/progmodes/project.el index 6ee52f5f931..997c876b1fa 100644 --- a/lisp/progmodes/project.el +++ b/lisp/progmodes/project.el @@ -1,7 +1,7 @@ ;;; project.el --- Operations on the current project -*- lexical-binding: t; -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. -;; Version: 0.11.1 +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. +;; Version: 0.11.2 ;; Package-Requires: ((emacs "26.1") (xref "1.7.0")) ;; This is a GNU ELPA :core package. Avoid functionality that is not @@ -177,6 +177,7 @@ (require 'cl-generic) (require 'cl-lib) (require 'seq) +(require 'generator) (eval-when-compile (require 'subr-x)) (defgroup project nil @@ -466,7 +467,10 @@ the buffer's value of `default-directory'." :group 'project) (defcustom project-vc-ignores nil - "List of patterns to add to `project-ignores'." + "List of patterns to add to `project-ignores'. + +Only global or directory-local values are supported. And directory-local +values will be applied to the corresponding directory subtrees." :type '(repeat string)) ;; Change to `list-of-strings-p' when support for Emacs 28 is dropped. ;;;###autoload(put 'project-vc-ignores 'safe-local-variable (lambda (val) (and (listp val) (not (memq nil (mapcar #'stringp val)))))) @@ -588,7 +592,7 @@ See `project-vc-extra-root-markers' for the marker value format.") ;; FIXME: Learn to invalidate when the value changes: ;; `project-vc-merge-submodules' or `project-vc-extra-root-markers'. (or (vc-file-getprop dir 'project-vc) - ;; FIXME: Cache for a shorter time. + ;; FIXME: Cache for a shorter time (bug#78545). (let ((res (project-try-vc--search dir))) (and res (vc-file-setprop dir 'project-vc res)) res))) @@ -635,6 +639,8 @@ See `project-vc-extra-root-markers' for the marker value format.") (let* ((parent (file-name-directory (directory-file-name root)))) (setq root (vc-call-backend 'Git 'root parent)))) (when root + (when backend + (require (intern (concat "vc-" (downcase (symbol-name backend)))))) (when (not backend) (let* ((project-vc-extra-root-markers nil) ;; Avoid submodules scan. @@ -678,24 +684,22 @@ See `project-vc-extra-root-markers' for the marker value format.") (funcall project-vc-external-roots-function))) (list (project-root project)))) +(defun project-vc--backend (project dir) + (if (file-in-directory-p dir (nth 2 project)) + (cadr project) + ;; Don't presume other DIRs are under the same VCS as + ;; the project's root. + (vc-responsible-backend dir 'no-error))) + (cl-defmethod project-files ((project (head vc)) &optional dirs) (mapcan (lambda (dir) - (let ((ignores (project--value-in-dir 'project-vc-ignores (nth 2 project))) - (backend (cadr project))) - (when backend - (require (intern (concat "vc-" (downcase (symbol-name backend)))))) - (if (and backend - (file-in-directory-p dir (nth 2 project))) - (condition-case nil - (project--vc-list-files dir backend ignores) - (vc-not-supported - (project--files-in-directory - dir - (project--dir-ignores project dir)))) + (let ((ignores (project--value-in-dir 'project-vc-ignores dir)) + (backend (project-vc--backend project dir))) + (if backend + (vc-call-backend backend 'project-list-files dir ignores) (project--files-in-directory - dir - (project--dir-ignores project dir))))) + dir (append ignores (project-ignores nil nil)))))) (or dirs (list (project-root project))))) @@ -703,90 +707,92 @@ See `project-vc-extra-root-markers' for the marker value format.") (declare-function vc-git-command "vc-git") (declare-function vc-hg-command "vc-hg") -(defun project--vc-list-files (dir backend extra-ignores) - (vc-call-backend backend 'project-list-files dir extra-ignores)) +(defun vc-default-project-list-files (backend dir extra-ignores) + (project--files-in-directory + dir + (project--vc-ignores dir backend extra-ignores))) (defun vc-git-project-list-files (dir extra-ignores) (defvar vc-git-use-literal-pathspecs) - (or - (not extra-ignores) - (version<= "2.13" (vc-git--program-version)) - (signal 'vc-not-supported "Need newer Git to use negative pathspec like we do")) - (let* ((default-directory (expand-file-name (file-name-as-directory dir))) - (args '("-z" "-c" "--exclude-standard")) - (vc-git-use-literal-pathspecs nil) - (include-untracked (project--value-in-dir - 'project-vc-include-untracked - dir)) - (submodules (project--git-submodules)) - files) - (setq args (append args - (and (<= 31 emacs-major-version) - (version<= "2.35" (vc-git--program-version)) - '("--sparse")) - (and include-untracked '("-o")))) - (when extra-ignores + (if (not (or (not extra-ignores) + (version<= "2.13" (vc-git--program-version)))) + ;; Need newer Git to use negative pathspec like we do". + (vc-default-project-list-files 'Git dir extra-ignores) + (let* ((default-directory (expand-file-name (file-name-as-directory dir))) + (args '("-z" "-c" "--exclude-standard")) + (vc-git-use-literal-pathspecs nil) + (include-untracked (project--value-in-dir + 'project-vc-include-untracked + dir)) + (submodules (project--git-submodules)) + files) (setq args (append args - (cons "--" - (mapcar - (lambda (i) - (format - ":(exclude,glob,top)%s" - (if (string-match "\\*\\*" i) - ;; Looks like pathspec glob - ;; format already. - i - (if (string-match "\\./" i) - ;; ./abc -> abc - (setq i (substring i 2)) - ;; abc -> **/abc - (setq i (concat "**/" i)) - ;; FIXME: '**/abc' should also - ;; match a directory with that - ;; name, but doesn't (git 2.25.1). - ;; Maybe we should replace - ;; such entries with two. - (if (string-match "/\\'" i) - ;; abc/ -> abc/** - (setq i (concat i "**")))) - i))) - extra-ignores))))) - (setq files - (delq nil - (mapcar - (lambda (file) - (unless (or (member file submodules) - ;; Should occur for sparse directories - ;; only, when sparse index is enabled. - (directory-name-p file)) - (if project-files-relative-names - file - (concat default-directory file)))) - (split-string - (with-output-to-string - (apply #'vc-git-command standard-output 0 nil "ls-files" args)) - "\0" t)))) - (when (project--vc-merge-submodules-p default-directory) - ;; Unfortunately, 'ls-files --recurse-submodules' conflicts with '-o'. - (let ((sub-files - (mapcar - (lambda (module) - (when (file-directory-p module) - (let ((sub-files - (vc-git-project-list-files - (concat default-directory module) - extra-ignores))) - (if project-files-relative-names - (mapcar (lambda (file) - (concat (file-name-as-directory module) file)) - sub-files) - sub-files)))) - submodules))) - (setq files - (apply #'nconc files sub-files)))) - ;; 'git ls-files' returns duplicate entries for merge conflicts. - ;; XXX: Better solutions welcome, but this seems cheap enough. - (delete-consecutive-dups files))) + (and (<= 31 emacs-major-version) + (version<= "2.35" (vc-git--program-version)) + '("--sparse")) + (and include-untracked '("-o")))) + (when extra-ignores + (setq args (append args + (cons "--" + (mapcar + (lambda (i) + (format + ":(exclude,glob,top)%s" + (if (string-match "\\*\\*" i) + ;; Looks like pathspec glob + ;; format already. + i + (if (string-match "\\./" i) + ;; ./abc -> abc + (setq i (substring i 2)) + ;; abc -> **/abc + (setq i (concat "**/" i)) + ;; FIXME: '**/abc' should also + ;; match a directory with that + ;; name, but doesn't (git 2.25.1). + ;; Maybe we should replace + ;; such entries with two. + (if (string-match "/\\'" i) + ;; abc/ -> abc/** + (setq i (concat i "**")))) + i))) + extra-ignores))))) + (setq files + (delq nil + (mapcar + (lambda (file) + (unless (or (member file submodules) + ;; Should occur for sparse directories + ;; only, when sparse index is enabled. + (directory-name-p file)) + (if project-files-relative-names + file + (concat default-directory file)))) + (split-string + (with-output-to-string + (apply #'vc-git-command standard-output 0 nil "ls-files" args)) + "\0" t)))) + (when (project--vc-merge-submodules-p default-directory) + ;; Unfortunately, 'ls-files --recurse-submodules' conflicts with '-o'. + (let ((sub-files + (mapcar + (lambda (module) + (when (file-directory-p module) + (let ((sub-files + (vc-git-project-list-files + (concat default-directory module) + extra-ignores))) + (if project-files-relative-names + (mapcar (lambda (file) + (concat (file-name-as-directory module) file)) + sub-files) + sub-files)))) + submodules))) + (setq files + (apply #'nconc files sub-files)))) + ;; 'git ls-files' returns duplicate entries for merge conflicts. + ;; XXX: Better solutions welcome, but this seems cheap enough. + (delete-consecutive-dups files)))) (defun vc-hg-project-list-files (dir extra-ignores) (let* ((default-directory (expand-file-name (file-name-as-directory dir))) @@ -830,38 +836,39 @@ See `project-vc-extra-root-markers' for the marker value format.") (file-missing nil))) (cl-defmethod project-ignores ((project (head vc)) dir) - (let* ((root (nth 2 project)) - (backend (cadr project))) - (append - (when (and backend - (file-equal-p dir root)) - (delq - nil - (mapcar - (lambda (entry) - (cond - ((eq ?! (aref entry 0)) - ;; No support for whitelisting (yet). - nil) - ((string-match "\\(/\\)[^/]" entry) - ;; FIXME: This seems to be Git-specific. - ;; And / in the entry (start or even the middle) means - ;; the pattern is "rooted". Or actually it is then - ;; relative to its respective .gitignore (of which there - ;; could be several), but we only support .gitignore at - ;; the root. - (if (= (match-beginning 0) 0) - (replace-match "./" t t entry 1) - (concat "./" entry))) - (t entry))) - (condition-case nil - (vc-call-backend backend 'ignore-completion-table root) - (vc-not-supported () nil))))) - (project--value-in-dir 'project-vc-ignores root) - (mapcar - (lambda (dir) - (concat dir "/")) - vc-directory-exclusion-list)))) + (project--vc-ignores dir + (project-vc--backend project dir) + (project--value-in-dir 'project-vc-ignores dir))) + +(defun project--vc-ignores (dir backend extra-ignores) + (require 'vc) + (append + (when backend + (delq + nil + (mapcar + (lambda (entry) + (cond + ((eq ?! (aref entry 0)) + ;; No support for whitelisting (yet). + nil) + ((string-match "\\(/\\)[^/]" entry) + ;; FIXME: This seems to be Git-specific. + ;; And / in the entry (start or even the middle) means + ;; the pattern is "rooted". Or actually it is then + ;; relative to its respective .gitignore (of which there + ;; could be several), but we only support .gitignore at + ;; the root. + (if (= (match-beginning 0) 0) + (replace-match "./" t t entry 1) + (concat "./" entry))) + (t entry))) + (vc-call-backend backend 'ignore-completion-table dir)))) + extra-ignores + (mapcar + (lambda (dir) + (concat dir "/")) + vc-directory-exclusion-list))) (defun project-combine-directories (&rest lists-of-dirs) "Return a sorted and culled list of directory names. @@ -890,7 +897,7 @@ DIRS must contain directory names." (defun project--value-in-dir (var dir) (with-temp-buffer - (setq default-directory dir) + (setq default-directory (file-name-as-directory dir)) (let ((enable-local-variables :all)) (hack-dir-local-variables)) ;; Don't use `hack-local-variables-apply' to avoid setting modes. @@ -1588,6 +1595,11 @@ create it if it doesn't already exist." (declare-function fileloop-continue "fileloop" ()) +(iter-defun project--files-safe () + (dolist (file (project-files (project-current t))) + (when (file-regular-p file) + (iter-yield file)))) + ;;;###autoload (defun project-search (regexp) "Search for REGEXP in all the files of the project. @@ -1597,7 +1609,7 @@ command \\[fileloop-continue]." (interactive "sSearch (regexp): ") (fileloop-initialize-search regexp - (project-files (project-current t)) + (project--files-safe) 'default) (fileloop-continue)) @@ -1618,7 +1630,7 @@ If you exit the `query-replace', you can later continue the (list from to)))) (fileloop-initialize-replace from to - (project-files (project-current t)) + (project--files-safe) 'default) (fileloop-continue)) @@ -2236,17 +2248,17 @@ If ALLOW-EMPTY is non-nil, it is possible to exit with no input." pr-dir) (cl-loop do (setq pr-dir - (let (history-add-new-input) - (completing-read (if prompt - ;; TODO: Use `format-prompt' (Emacs 28.1+) - (format "%s: " (substitute-command-keys prompt)) - "Select project: ") - choices - (and predicate - (lambda (choice) - (or (equal choice dir-choice) - (funcall predicate choice)))) - t nil 'project--dir-history))) + (let (history-add-new-input) + (completing-read (if prompt + ;; TODO: Use `format-prompt' (Emacs 28.1+) + (format "%s: " (substitute-command-keys prompt)) + "Select project: ") + choices + (and predicate + (lambda (choice) + (or (equal choice dir-choice) + (funcall predicate choice)))) + t nil 'project--dir-history))) ;; If the user simply pressed RET, do this again until they don't. while (and (not allow-empty) (equal pr-dir ""))) (if (equal pr-dir dir-choice) @@ -2622,13 +2634,37 @@ would otherwise have the same name." ;;; Project mode-line +(defvar project-name-cache-timeout 300 + "Number of seconds to cache the project name. +Used by `project-name-cached'.") + +(defun project-name-cached (dir) + "Return the cached project name for the directory DIR. +Until it's cached, retrieve the project name using `project-current' +and `project-name', then put the name to the cache for the time defined +by the variable `project-name-cache-timeout'. This function is useful +for project indicators such as on the mode line." + (let ((cached (vc-file-getprop dir 'project-name)) + (current-time (float-time))) + (if (and cached (< (- current-time (cdr cached)) + project-name-cache-timeout)) + (let ((value (car cached))) + (if (eq value 'none) nil value)) + (let ((res (when-let* ((project (project-current nil dir))) + (project-name project)))) + (vc-file-setprop dir 'project-name (cons (or res 'none) current-time)) + res)))) + ;;;###autoload (defcustom project-mode-line nil "Whether to show current project name and Project menu on the mode line. This feature requires the presence of the following item in `mode-line-format': `(project-mode-line project-mode-line-format)'; it -is part of the default mode line beginning with Emacs 30." - :type 'boolean +is part of the default mode line beginning with Emacs 30. When the +value is `non-remote', show the project name only for local files." + :type '(choice (const :tag "Don't show project on mode line" nil) + (const :tag "Show project only for local files" non-remote) + (const :tag "Always show project on mode line" t)) :group 'project :version "30.1") @@ -2646,18 +2682,20 @@ is part of the default mode line beginning with Emacs 30." (defun project-mode-line-format () "Compose the project mode-line." - (when-let* ((project (project-current))) + (unless (and (eq project-mode-line 'non-remote) + (file-remote-p default-directory)) ;; Preserve the global value of 'last-coding-system-used' ;; that 'write-region' needs to set for 'basic-save-buffer', ;; but updating the mode line might occur at the same time ;; during saving the buffer and 'project-name' can change ;; 'last-coding-system-used' when reading the project name ;; from .dir-locals.el also enables flyspell-mode (bug#66825). - (let ((last-coding-system-used last-coding-system-used)) + (when-let* ((last-coding-system-used last-coding-system-used) + (project-name (project-name-cached default-directory))) (concat " " (propertize - (project-name project) + project-name 'face project-mode-line-face 'mouse-face 'mode-line-highlight 'help-echo "mouse-1: Project menu" diff --git a/lisp/progmodes/prolog.el b/lisp/progmodes/prolog.el index 321aaa77693..6b7fea6c521 100644 --- a/lisp/progmodes/prolog.el +++ b/lisp/progmodes/prolog.el @@ -1,6 +1,6 @@ ;;; prolog.el --- major mode for Prolog (and Mercury) -*- lexical-binding:t -*- -;; Copyright (C) 1986-1987, 1997-1999, 2002-2003, 2011-2025 Free +;; Copyright (C) 1986-1987, 1997-1999, 2002-2003, 2011-2026 Free ;; Software Foundation, Inc. ;; Authors: Emil Åström diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el index 4b360e84882..fe8b5ada8e0 100644 --- a/lisp/progmodes/ps-mode.el +++ b/lisp/progmodes/ps-mode.el @@ -1,6 +1,6 @@ ;;; ps-mode.el --- PostScript mode for GNU Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Peter Kleiweg ;; Created: 20 Aug 1997 diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index c4cf7ec46cf..2a3035c95c5 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -1,6 +1,6 @@ ;;; python.el --- Python's flying circus support for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: Fabián E. Gallina ;; Maintainer: emacs-devel@gnu.org @@ -1463,7 +1463,7 @@ For NODE, OVERRIDE, START, END, and ARGS, see "Non-nil means to emit a warning when indentation guessing fails." :version "25.1" :type 'boolean - :safe' booleanp) + :safe 'booleanp) (defcustom python-indent-trigger-commands '(indent-for-tab-command yas-expand yas/expand) @@ -3366,6 +3366,16 @@ from `python-shell-prompt-regexp', python-shell--prompt-calculated-output-regexp (funcall build-regexp output-prompts))))) +(defun python-shell-get-project-name () + "Return the project name for the current buffer. +Use `project-name-cached' if available." + (when (featurep 'project) + (if (fboundp 'project-name-cached) + (project-name-cached default-directory) + (when-let* ((proj (project-current))) + (file-name-nondirectory + (directory-file-name (project-root proj))))))) + (defun python-shell-get-process-name (dedicated) "Calculate the appropriate process name for inferior Python process. If DEDICATED is nil, this is simply `python-shell-buffer-name'. @@ -3374,11 +3384,8 @@ name respectively the current project name." (pcase dedicated ('nil python-shell-buffer-name) ('project - (if-let* ((proj (and (featurep 'project) - (project-current)))) - (format "%s[%s]" python-shell-buffer-name (file-name-nondirectory - (directory-file-name - (project-root proj)))) + (if-let* ((proj-name (python-shell-get-project-name))) + (format "%s[%s]" python-shell-buffer-name proj-name) python-shell-buffer-name)) (_ (format "%s[%s]" python-shell-buffer-name (buffer-name))))) @@ -3694,13 +3701,18 @@ def __PYTHON_EL_eval(source, filename): (defconst python-shell-eval-file-setup-code "\ def __PYTHON_EL_eval_file(filename, tempname, delete): - import codecs, os, re + import os, re, sys + if sys.version_info.major < 3: + import codecs + _open = codecs.open + else: + _open = open pattern = r'^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)' - with codecs.open(tempname or filename, encoding='latin-1') as file: + with _open(tempname or filename, encoding='latin-1') as file: match = re.match(pattern, file.readline()) match = match or re.match(pattern, file.readline()) encoding = match.group(1) if match else 'utf-8' - with codecs.open(tempname or filename, encoding=encoding) as file: + with _open(tempname or filename, encoding=encoding) as file: source = file.read().encode(encoding) if delete and tempname: os.remove(tempname) @@ -4509,6 +4521,13 @@ def __PYTHON_EL_get_completions(text): "Code used to setup completion in inferior Python processes." :type 'string) +(defun python-shell-completion-send-setup-code () + "Send `python-shell-completion-setup-code' to inferior Python process." + (python-shell-send-string-no-output python-shell-completion-setup-code)) + +(add-hook 'python-shell-first-prompt-hook + #'python-shell-completion-send-setup-code) + (define-obsolete-variable-alias 'python-shell-completion-module-string-code 'python-shell-completion-string-code @@ -4837,12 +4856,16 @@ With argument MSG show activation/deactivation message." (defun python-shell-completion-get-completions (process input) "Get completions of INPUT using PROCESS." (with-current-buffer (process-buffer process) - (python--parse-json-array - (python-shell-send-string-no-output - (format "%s\nprint(__PYTHON_EL_get_completions(%s))" - python-shell-completion-setup-code - (python-shell--encode-string input)) - process)))) + (let ((completions + (python-shell-send-string-no-output + (format "print(__PYTHON_EL_get_completions(%s))" + (python-shell--encode-string input)) + process))) + (condition-case nil + (python--parse-json-array completions) + (json-parse-error + (python--parse-json-array + (car (last (split-string completions "[\n\r]+" t))))))))) (defun python-shell--get-multiline-input () "Return lines at a multi-line input in Python shell." @@ -5819,7 +5842,7 @@ Set to nil by `python-eldoc-function' if (defcustom python-eldoc-function-timeout 1 "Timeout for `python-eldoc-function' in seconds." - :type 'integer + :type 'number :version "25.1") (defcustom python-eldoc-function-timeout-permanent t @@ -7450,7 +7473,8 @@ implementations: `python-mode' and `python-ts-mode'." (treesit-major-mode-setup) ;; Enable the `sexp' navigation by default (setq-local forward-sexp-function #'treesit-forward-sexp - treesit-sexp-thing 'sexp) + treesit-sexp-thing 'sexp + treesit-sexp-thing-down-list 'list) (when (>= emacs-major-version 31) (setq-local hs-treesit-things '(or defun sexp)) diff --git a/lisp/progmodes/ruby-mode.el b/lisp/progmodes/ruby-mode.el index 67ed863235b..f2e38e0af46 100644 --- a/lisp/progmodes/ruby-mode.el +++ b/lisp/progmodes/ruby-mode.el @@ -1,6 +1,6 @@ ;;; ruby-mode.el --- Major mode for editing Ruby files -*- lexical-binding: t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Authors: Yukihiro Matsumoto ;; Nobuyoshi Nakada diff --git a/lisp/progmodes/ruby-ts-mode.el b/lisp/progmodes/ruby-ts-mode.el index 8d4499fb4ad..2c561f09e93 100644 --- a/lisp/progmodes/ruby-ts-mode.el +++ b/lisp/progmodes/ruby-ts-mode.el @@ -1,6 +1,6 @@ ;;; ruby-ts-mode.el --- Major mode for editing Ruby files using tree-sitter -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Perry Smith ;; Created: December 2022 diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el index cbd489c5e2c..e3b1213bd62 100644 --- a/lisp/progmodes/rust-ts-mode.el +++ b/lisp/progmodes/rust-ts-mode.el @@ -1,6 +1,6 @@ ;;; rust-ts-mode.el --- tree-sitter support for Rust -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Randy Taylor ;; Maintainer : Randy Taylor diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el index 0aea4c20cdd..1756f11fb2c 100644 --- a/lisp/progmodes/scheme.el +++ b/lisp/progmodes/scheme.el @@ -1,6 +1,6 @@ ;;; scheme.el --- Scheme (and DSSSL) editing mode -*- lexical-binding: t; -*- -;; Copyright (C) 1986-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986-2026 Free Software Foundation, Inc. ;; Author: Bill Rozas ;; Adapted-by: Dave Love diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 20e4f78001d..8479c3cfd9a 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1,6 +1,6 @@ ;;; sh-script.el --- shell-script editing commands for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1993-1997, 1999, 2001-2025 Free Software Foundation, +;; Copyright (C) 1993-1997, 1999, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Daniel Pfeiffer diff --git a/lisp/progmodes/simula.el b/lisp/progmodes/simula.el index ab7685a1478..a8fd2d4da92 100644 --- a/lisp/progmodes/simula.el +++ b/lisp/progmodes/simula.el @@ -1,6 +1,6 @@ ;;; simula.el --- SIMULA 87 code editing commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Hans Henrik Eriksen ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/sql.el b/lisp/progmodes/sql.el index 58fbf3c51e7..a82a7884e40 100644 --- a/lisp/progmodes/sql.el +++ b/lisp/progmodes/sql.el @@ -1,6 +1,6 @@ ;;; sql.el --- specialized comint.el for SQL interpreters -*- lexical-binding: t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Alex Schroeder ;; Maintainer: Michael Mauger @@ -2599,45 +2599,80 @@ you define your own `sql-mode-mysql-font-lock-keywords'.") '("^[.].*$" . font-lock-doc-face) ;; SQLite Keyword + ;; https://sqlite.org/lang_keywords.html (sql-font-lock-keywords-builder 'font-lock-keyword-face nil -"abort" "action" "add" "after" "all" "alter" "analyze" "and" "as" -"asc" "attach" "autoincrement" "before" "begin" "between" "by" -"cascade" "case" "cast" "check" "collate" "column" "commit" "conflict" -"constraint" "create" "cross" "database" "default" "deferrable" -"deferred" "delete" "desc" "detach" "distinct" "drop" "each" "else" -"end" "escape" "except" "exclusive" "exists" "explain" "fail" "for" -"foreign" "from" "full" "glob" "group" "having" "if" "ignore" -"immediate" "in" "index" "indexed" "initially" "inner" "insert" -"instead" "intersect" "into" "is" "isnull" "join" "key" "left" "like" -"limit" "match" "natural" "no" "not" "notnull" "null" "of" "offset" -"on" "or" "order" "outer" "plan" "pragma" "primary" "query" "raise" -"references" "regexp" "reindex" "release" "rename" "replace" -"restrict" "right" "rollback" "row" "savepoint" "select" "set" "table" -"temp" "temporary" "then" "to" "transaction" "trigger" "union" -"unique" "update" "using" "vacuum" "values" "view" "virtual" "when" -"where" +"abort" "action" "add" "after" "all" "alter" "always" "analyze" "and" "as" +"asc" "attach" "autoincrement" "before" "begin" "between" "by" "cascade" "case" +"cast" "check" "collate" "column" "commit" "conflict" "constraint" "create" +"cross" "current" "current_date" "current_time" "current_timestamp" "database" +"default" "deferrable" "deferred" "delete" "desc" "detach" "distinct" "do" +"drop" "each" "else" "end" "escape" "except" "exclude" "exclusive" "exists" +"explain" "fail" "filter" "first" "following" "for" "foreign" "from" "full" +"generated" "glob" "group" "groups" "having" "if" "ignore" "immediate" "in" +"index" "indexed" "initially" "inner" "insert" "instead" "intersect" "into" +"is" "isnull" "join" "key" "last" "left" "like" "limit" "match" "materialized" +"natural" "no" "not" "nothing" "notnull" "null" "nulls" "of" "offset" "on" "or" +"order" "others" "outer" "over" "partition" "plan" "pragma" "preceding" +"primary" "query" "raise" "range" "recursive" "references" "regexp" "reindex" +"release" "rename" "replace" "restrict" "returning" "right" "rollback" "row" +"rows" "savepoint" "select" "set" "table" "temp" "temporary" "then" "ties" "to" +"transaction" "trigger" "unbounded" "union" "unique" "update" "using" "vacuum" +"values" "view" "virtual" "when" "where" "window" "with" "without" ) ;; SQLite Data types + ;; https://sqlite.org/datatype3.html (sql-font-lock-keywords-builder 'font-lock-type-face nil -"int" "integer" "tinyint" "smallint" "mediumint" "bigint" "unsigned" -"big" "int2" "int8" "character" "varchar" "varying" "nchar" "native" -"nvarchar" "text" "clob" "blob" "real" "double" "precision" "float" -"numeric" "number" "decimal" "boolean" "date" "datetime" +"int" "integer" "tinyint" "smallint" "mediumint" "bigint" "unsigned big int" +"int2" "int8" "character" "varchar" "varying character" "nchar" +"native character" "nvarchar" "text" "clob" "blob" "real" "double" +"double precision" "float" "umeric" "decimal" "boolean" "date" "datetime" + ) ;; SQLite Functions (sql-font-lock-keywords-builder 'font-lock-builtin-face nil + ;; Core functions -"abs" "changes" "coalesce" "glob" "ifnull" "hex" "last_insert_rowid" -"length" "like" "load_extension" "lower" "ltrim" "max" "min" "nullif" -"quote" "random" "randomblob" "replace" "round" "rtrim" "soundex" -"sqlite_compileoption_get" "sqlite_compileoption_used" -"sqlite_source_id" "sqlite_version" "substr" "total_changes" "trim" -"typeof" "upper" "zeroblob" +;; https://sqlite.org/lang_corefunc.html +"abs" "changes" "char" "coalesce" "concat" "concat_ws" "format" "glob" "hex" +"if" "ifnull" "iif" "instr" "last_insert_rowid" "length" "like" "like" +"likelihood" "likely" "load_extension" "load_extension" "lower" "ltrim" "ltrim" +"max" "min" "nullif" "octet_length" "printf" "quote" "random" "randomblob" +"replace" "round" "round" "rtrim" "rtrim" "sign" "soundex" +"sqlite_compileoption_get" "sqlite_compileoption_used" "sqlite_offset" +"sqlite_source_id" "sqlite_version" "substr" "substr" "substring" "substring" +"total_changes" "trim" "trim" "typeof" "unhex" "unhex" "unicode" "unistr" +"unistr_quote" "unlikely" "upper" "zeroblob" + ;; Date/time functions -"time" "julianday" "strftime" -"current_date" "current_time" "current_timestamp" +;; https://sqlite.org/lang_datefunc.html +"date" "time" "datetime" "julianday" "unixepoch" "strftime" "timediff" + ;; Aggregate functions -"avg" "count" "group_concat" "max" "min" "sum" "total" +;; https://sqlite.org/lang_aggfunc.html +"avg" "count" "count" "group_concat" "group_concat" "max" "median" "min" +"percentile" "percentile_cont" "percentile_disc" "string_agg" "sum" "total" + +;; Window functions +;; https://sqlite.org/windowfunctions.html +"row_number" "rank" "dense_rank" "percent_rank" "cume_dist" "ntile" "lag" +"lead" "first_value" "last_value" "nth_value" + +;; Math functions +;; https://sqlite.org/lang_mathfunc.html +"acos" "acosh" "asin" "asinh" "atan" "atan2" "atanh" "ceil" "ceiling" "cos" +"cosh" "degrees" "exp" "floor" "ln" "log" "log" "log10" "log2" "mod" "pi" "pow" +"power" "radians" "sin" "sinh" "sqrt" "tan" "tanh" "trunc" + +;; JSON functions +;; https://sqlite.org/json1.html +"json" "jsonb" "json_array" "jsonb_array" "json_array_length" +"json_error_position" "json_extract" "jsonb_extract" "->" "->>" "json_insert" +"jsonb_insert" "json_object" "jsonb_object" "json_patch" "jsonb_patch" +"json_pretty" "json_remove" "jsonb_remove" "json_replace" "jsonb_replace" +"json_set" "jsonb_set" "json_type" "json_valid" "json_quote" "json_group_array" +"jsonb_group_array" "json_group_object" "jsonb_group_object" "json_each" +"json_tree" "jsonb_each" "jsonb_tree" + ))) "SQLite SQL keywords used by font-lock. diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el index 4305e36c33f..7aa3895acec 100644 --- a/lisp/progmodes/subword.el +++ b/lisp/progmodes/subword.el @@ -1,6 +1,6 @@ ;;; subword.el --- Handling capitalized subwords in a nomenclature -*- lexical-binding: t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Masatake YAMATO diff --git a/lisp/progmodes/tcl.el b/lisp/progmodes/tcl.el index e1efade517d..8ef717967bd 100644 --- a/lisp/progmodes/tcl.el +++ b/lisp/progmodes/tcl.el @@ -1,6 +1,6 @@ ;;; tcl.el --- Tcl code editing commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1994, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 1998-2026 Free Software Foundation, Inc. ;; Author: Tom Tromey ;; Chris Lindblad diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el index 2925f192463..1f7cc00327f 100644 --- a/lisp/progmodes/typescript-ts-mode.el +++ b/lisp/progmodes/typescript-ts-mode.el @@ -1,6 +1,6 @@ ;;; typescript-ts-mode.el --- tree sitter support for TypeScript -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Theodor Thornhill ;; Maintainer : Theodor Thornhill diff --git a/lisp/progmodes/vera-mode.el b/lisp/progmodes/vera-mode.el index 201ac7bd40e..7b039291ab5 100644 --- a/lisp/progmodes/vera-mode.el +++ b/lisp/progmodes/vera-mode.el @@ -1,6 +1,6 @@ ;;; vera-mode.el --- major mode for editing Vera files -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Reto Zimmermann ;; Version: 2.28 diff --git a/lisp/progmodes/verilog-mode.el b/lisp/progmodes/verilog-mode.el index 51e3270a58c..961d7b57fa4 100644 --- a/lisp/progmodes/verilog-mode.el +++ b/lisp/progmodes/verilog-mode.el @@ -1,6 +1,6 @@ ;;; verilog-mode.el --- major mode for editing verilog source in Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Michael McNamara ;; Wilson Snyder @@ -9,7 +9,7 @@ ;; Keywords: languages ;; The "Version" is the date followed by the decimal rendition of the Git ;; commit hex. -;; Version: 2025.11.08.248496848 +;; Version: 2026.01.18.088738971 ;; Yoni Rabkin 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 "2025-11-08-ecfc2d0-vpo-GNU" +(defconst verilog-mode-version "2026-01-18-54a0c9b-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.") @@ -12283,9 +12283,10 @@ If PAR-VALUES replace final strings with these parameter values." auto-inst-vector auto-inst-vector-tpl tpl-net dflt-bits) - ;; Replace parameters in bit-width + ;; Replace parameters in vl-bits & vl-widths (when (and check-values - (not (equal vl-bits ""))) + (or (not (equal vl-bits "")) + (not (equal vl-width "")))) (while check-values (setq vl-bits (verilog-string-replace-matches (concat "\\<" (nth 0 (car check-values)) "\\>") diff --git a/lisp/progmodes/vhdl-mode.el b/lisp/progmodes/vhdl-mode.el index 9b12e084726..65bad2435b9 100644 --- a/lisp/progmodes/vhdl-mode.el +++ b/lisp/progmodes/vhdl-mode.el @@ -1,6 +1,6 @@ ;;; vhdl-mode.el --- major mode for editing VHDL code -*- lexical-binding: t; -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Authors: Reto Zimmermann ;; Rodney J. Whitby diff --git a/lisp/progmodes/which-func.el b/lisp/progmodes/which-func.el index dab1fc2da14..d87706f39c4 100644 --- a/lisp/progmodes/which-func.el +++ b/lisp/progmodes/which-func.el @@ -1,6 +1,6 @@ ;;; which-func.el --- print current function in mode line -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Alex Rezinsky ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/progmodes/xref.el b/lisp/progmodes/xref.el index 96950432f4a..1e51b23eaff 100644 --- a/lisp/progmodes/xref.el +++ b/lisp/progmodes/xref.el @@ -1,6 +1,6 @@ ;;; xref.el --- Cross-referencing commands -*-lexical-binding:t-*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Version: 1.7.0 ;; Package-Requires: ((emacs "26.1")) @@ -249,7 +249,7 @@ generic functions.") (defun xref-find-backend () (run-hook-with-args-until-success 'xref-backend-functions)) -(cl-defgeneric xref-backend-definitions (backend identifier) +(cl-defgeneric xref-backend-definitions (_backend _identifier) "Find definitions of IDENTIFIER. The result must be a list of xref objects. If IDENTIFIER @@ -262,16 +262,15 @@ IDENTIFIER can be any string returned by `xref-backend-identifier-at-point', or from the table returned by `xref-backend-identifier-completion-table'. -To create an xref object, call `xref-make'.") +To create an xref object, call `xref-make'." + (xref--no-backend-available)) (cl-defgeneric xref-backend-references (_backend identifier) "Find references of IDENTIFIER. The result must be a list of xref objects. If no references can be found, return nil. -The default implementation uses `semantic-symref-tool-alist' to -find a search tool; by default, this uses \"find | grep\" in the -current project's main and external roots." +The default implementation uses `xref-references-in-directory'." (mapcan (lambda (dir) (message "Searching %s..." dir) @@ -285,12 +284,13 @@ current project's main and external roots." (xref--project-root pr) (project-external-roots pr)))))) -(cl-defgeneric xref-backend-apropos (backend pattern) +(cl-defgeneric xref-backend-apropos (_backend _pattern) "Find all symbols that match PATTERN string. The second argument has the same meaning as in `apropos'. If BACKEND is implemented in Lisp, it can use -`xref-apropos-regexp' to convert the pattern to regexp.") +`xref-apropos-regexp' to convert the pattern to regexp." + (xref--no-backend-available)) (cl-defgeneric xref-backend-identifier-at-point (_backend) "Return the relevant identifier at point. @@ -306,8 +306,9 @@ recognize and then delegate the work to an external process." (let ((thing (thing-at-point 'symbol))) (and thing (substring-no-properties thing)))) -(cl-defgeneric xref-backend-identifier-completion-table (backend) - "Return the completion table for identifiers.") +(cl-defgeneric xref-backend-identifier-completion-table (_backend) + "Return the completion table for identifiers." + nil) (cl-defgeneric xref-backend-identifier-completion-ignore-case (_backend) "Return t if case is not significant in identifier completion." @@ -329,6 +330,10 @@ KEY extracts the key from an element." (cl-loop for key being hash-keys of table using (hash-values value) collect (cons key (nreverse value))))) +(defun xref--no-backend-available () + (user-error + "No Xref backend. Try `M-x eglot', `M-x visit-tags-table', or `M-x etags-regen-mode'.")) + (defun xref--insert-propertized (props &rest strings) "Insert STRINGS with text properties PROPS." (let ((start (point))) @@ -1793,15 +1798,43 @@ and just use etags." (declare-function grep-expand-template "grep") (defvar ede-minor-mode) ;; ede.el +(defcustom xref-references-in-directory-function + #'xref-references-in-directory-semantic + "Function to find all references to a symbol in a directory. +It should take two string arguments: SYMBOL and DIR. +And return a list of xref values representing all code references to +SYMBOL in files under DIR." + :type '(choice + (const :tag "Using Grep via Find" xref-references-in-directory-grep) + (const :tag "Using Semantic Symbol Reference API" + xref-references-in-directory-semantic) + function) + :version "31.1") + ;;;###autoload (defun xref-references-in-directory (symbol dir) "Find all references to SYMBOL in directory DIR. +See `xref-references-in-directory-function' for the implementation. +Return a list of xref values." + (cl-assert (directory-name-p dir)) + (funcall xref-references-in-directory-function symbol dir)) + +(defun xref-references-in-directory-grep (symbol dir) + "Find all references to SYMBOL in directory DIR using find and grep. +Return a list of xref values. The files in DIR are filtered according +to its project's list of ignore patterns (as returned by +`project-ignores'), or the default ignores if there is no project." + (let ((ignores (project-ignores (project-current nil dir) dir))) + (xref-matches-in-directory (regexp-quote symbol) "*" dir ignores + 'symbol))) + +(defun xref-references-in-directory-semantic (symbol dir) + "Find all references to SYMBOL in directory DIR. Return a list of xref values. This function uses the Semantic Symbol Reference API, see `semantic-symref-tool-alist' for details on which tools are used, and when." - (cl-assert (directory-name-p dir)) (require 'semantic/symref) (defvar semantic-symref-tool) @@ -1831,12 +1864,13 @@ and when." "27.1") ;;;###autoload -(defun xref-matches-in-directory (regexp files dir ignores) +(defun xref-matches-in-directory (regexp files dir ignores &optional delimited) "Find all matches for REGEXP in directory DIR. Return a list of xref values. Only files matching some of FILES and none of IGNORES are searched. FILES is a string with glob patterns separated by spaces. -IGNORES is a list of glob patterns for files to ignore." +IGNORES is a list of glob patterns for files to ignore. +If DELIMITED is `symbol', only select matches that span full symbols." ;; DIR can also be a regular file for now; let's not advertise that. (grep-compute-defaults) (defvar grep-find-template) @@ -1855,6 +1889,9 @@ IGNORES is a list of glob patterns for files to ignore." (local-dir (directory-file-name (file-name-unquote (file-local-name (expand-file-name dir))))) + (hits-regexp (if (eq delimited 'symbol) + (format "\\_<%s\\_>" regexp) + regexp)) (buf (get-buffer-create " *xref-grep*")) (`(,grep-re ,file-group ,line-group . ,_) (car grep-regexp-alist)) (status nil) @@ -1864,20 +1901,9 @@ IGNORES is a list of glob patterns for files to ignore." (setq default-directory dir) (setq status (process-file-shell-command command nil t)) - (goto-char (point-min)) - ;; Can't use the exit status: Grep exits with 1 to mean "no - ;; matches found". Find exits with 1 if any of the invocations - ;; exit with non-zero. "No matches" and "Grep program not found" - ;; are all the same to it. - (when (and (/= (point-min) (point-max)) - (not (looking-at grep-re))) - (user-error "Search failed with status %d: %s" status (buffer-string))) - (while (re-search-forward grep-re nil t) - (push (list (string-to-number (match-string line-group)) - (concat local-dir (substring (match-string file-group) 1)) - (buffer-substring-no-properties (point) (line-end-position))) - hits))) - (xref--convert-hits (nreverse hits) regexp))) + (setq hits (xref--parse-hits grep-re line-group file-group status + local-dir))) + (xref--convert-hits (xref--sort-hits hits) hits-regexp))) (define-obsolete-function-alias 'xref-collect-matches @@ -2003,29 +2029,42 @@ to control which program to use when looking for matches." nil shell-command-switch command)))) - (goto-char (point-min)) - (when (and (/= (point-min) (point-max)) - (not (looking-at grep-re)) - ;; TODO: Show these matches as well somehow? - ;; Matching both Grep's and Ripgrep 13's messages. - (not (looking-at ".*[bB]inary file.* matches"))) - (user-error "Search failed with status %d: %s" status - (buffer-substring (point-min) (line-end-position)))) - (while (re-search-forward grep-re nil t) - (push (list (string-to-number (match-string line-group)) - (match-string file-group) - (buffer-substring-no-properties (point) (line-end-position))) - hits))) - ;; By default, ripgrep's output order is non-deterministic - ;; (https://github.com/BurntSushi/ripgrep/issues/152) - ;; because it does the search in parallel. - ;; Grep's output also comes out in seemingly arbitrary order, - ;; though stable one. Let's sort both for better UI. - (setq hits - (sort (nreverse hits) - (lambda (h1 h2) - (string< (cadr h1) (cadr h2))))) - (xref--convert-hits hits regexp))) + (setq hits (xref--parse-hits grep-re line-group file-group status))) + (xref--convert-hits (xref--sort-hits hits) regexp))) + +(defun xref--parse-hits ( grep-re line-group file-group status + &optional parent-dir) + (let (hits) + (goto-char (point-min)) + ;; Can't use the exit status: Grep exits with 1 to mean "no + ;; matches found". Find exits with 1 if any of the invocations + ;; exit with non-zero. "No matches" and "Grep program not found" + ;; are all the same to it. + (when (and (/= (point-min) (point-max)) + (not (looking-at grep-re)) + ;; TODO: Show these matches as well somehow? + ;; Matching both Grep's and Ripgrep 13's messages. + (not (looking-at ".*[bB]inary file.* matches"))) + (user-error "Search failed with status %d: %s" status + (buffer-substring (point-min) (line-end-position)))) + (while (re-search-forward grep-re nil t) + (push (list (string-to-number (match-string line-group)) + (if parent-dir + (concat parent-dir (substring (match-string file-group) 1)) + (match-string file-group)) + (buffer-substring-no-properties (point) (line-end-position))) + hits)) + (nreverse hits))) + +(defun xref--sort-hits (hits) + ;; By default, ripgrep's output order is non-deterministic + ;; (https://github.com/BurntSushi/ripgrep/issues/152) + ;; because it does the search in parallel. + ;; Grep's output also comes out in seemingly arbitrary order, + ;; though stable one. Let's sort both for better UI. + (sort hits + (lambda (h1 h2) + (string< (cadr h1) (cadr h2))))) (defun xref--process-file-region ( start end program &optional buffer display diff --git a/lisp/progmodes/xscheme.el b/lisp/progmodes/xscheme.el index 76e20a286d1..f1c2418683d 100644 --- a/lisp/progmodes/xscheme.el +++ b/lisp/progmodes/xscheme.el @@ -1,6 +1,6 @@ ;;; xscheme.el --- run MIT Scheme under Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1986-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: languages, lisp diff --git a/lisp/ps-bdf.el b/lisp/ps-bdf.el index 3174cbc0a71..884fba096c1 100644 --- a/lisp/ps-bdf.el +++ b/lisp/ps-bdf.el @@ -1,6 +1,6 @@ ;;; ps-bdf.el --- BDF font file handler for ps-print -*- lexical-binding: t; -*- -;; Copyright (C) 1998-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-1999, 2001-2026 Free Software Foundation, Inc. ;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, ;; 2008, 2009, 2010, 2011 ;; National Institute of Advanced Industrial Science and Technology (AIST) diff --git a/lisp/ps-mule.el b/lisp/ps-mule.el index b5a5899b740..f7df2201076 100644 --- a/lisp/ps-mule.el +++ b/lisp/ps-mule.el @@ -1,6 +1,6 @@ ;;; ps-mule.el --- provide multi-byte character facility to ps-print -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Kenichi Handa (multi-byte characters) diff --git a/lisp/ps-print.el b/lisp/ps-print.el index 53302a71efb..ae88786e7d3 100644 --- a/lisp/ps-print.el +++ b/lisp/ps-print.el @@ -1,6 +1,6 @@ ;;; ps-print.el --- print text from the buffer as PostScript -*- lexical-binding: t -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Author: Jim Thompson (was ) ;; Jacques Duthen (was ) diff --git a/lisp/ps-samp.el b/lisp/ps-samp.el index 03ec9497e36..06ef31bd760 100644 --- a/lisp/ps-samp.el +++ b/lisp/ps-samp.el @@ -1,6 +1,6 @@ ;;; ps-samp.el --- ps-print sample setup code -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Jim Thompson (was ) ;; Jacques Duthen (was ) diff --git a/lisp/pulse.el b/lisp/pulse.el index 3f0fbbab3bb..16045aba7ad 100644 --- a/lisp/pulse.el +++ b/lisp/pulse.el @@ -1,6 +1,6 @@ ;;; pulse.el --- Pulsing Overlays -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Version: 1.0 @@ -238,7 +238,7 @@ Only pulses the line if `pulse-command-advice-flag' is non-nil." :version "31.1") ;; FIXME: The pulse's smooth effect cannot be achieved here because -;; the face-remaping will not work well for that. +;; the face-remapping will not work well for that. (defun pulse-faces (faces &optional with-face) "Briefly pulse FACES by using attributes of face WITH-FACE (if defined). FACES should be a list of faces to pulse. @@ -259,7 +259,7 @@ to `pulse-highlight-face'." (if (> pulse-face-duration 0.1) (run-with-timer pulse-face-duration 0 (lambda () - ;; Remove the face remaping in the buffer + ;; Remove the face remapping in the buffer ;; where `pulse-faces' was called. (if (buffer-live-p in-buffer) (with-current-buffer in-buffer diff --git a/lisp/recentf.el b/lisp/recentf.el index 4b9c1d3d270..1ae2dd662b9 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -1,6 +1,6 @@ ;;; recentf.el --- keep track of recently opened files -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: David Ponce ;; Created: July 19 1999 diff --git a/lisp/rect.el b/lisp/rect.el index e630f801558..a603c2143e6 100644 --- a/lisp/rect.el +++ b/lisp/rect.el @@ -1,6 +1,6 @@ ;;; rect.el --- rectangle functions for GNU Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1999-2026 Free Software Foundation, Inc. ;; Maintainer: Didier Verna ;; Keywords: internal diff --git a/lisp/register.el b/lisp/register.el index 7dbda04d176..51f6aa5bf4e 100644 --- a/lisp/register.el +++ b/lisp/register.el @@ -1,6 +1,6 @@ ;;; register.el --- register commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 1993-1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985, 1993-1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/registry.el b/lisp/registry.el index 07bbe179959..ad8cc255ccb 100644 --- a/lisp/registry.el +++ b/lisp/registry.el @@ -1,6 +1,6 @@ ;;; registry.el --- Track and remember data items by various fields -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Teodor Zlatanov ;; Keywords: data diff --git a/lisp/repeat.el b/lisp/repeat.el index e472f48e6d1..1b32558f426 100644 --- a/lisp/repeat.el +++ b/lisp/repeat.el @@ -1,6 +1,6 @@ ;;; repeat.el --- convenient way to repeat the previous command -*- lexical-binding: t -*- -;; Copyright (C) 1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Will Mengarini ;; Created: Mo 02 Mar 98 @@ -591,14 +591,17 @@ This function can be used to force exit of repetition while it's active." (if-let* ((hint (and (symbolp cmd) (get cmd 'repeat-hint))) (last (aref key (1- (length key))))) - ;; Reuse `read-multiple-choice' formatting. - (if (= (length key) 1) + ;; Possibly reuse `read-multiple-choice' formatting. + (if (and (= (length key) 1) (characterp last)) (cdr (rmc--add-key-description (list last hint))) (format "%s (%s)" (propertize (key-description key) 'face 'read-multiple-choice-face) - (cdr (rmc--add-key-description - (list (event-basic-type last) hint))))) + (if (characterp (event-basic-type last)) + (cdr (rmc--add-key-description + (list (event-basic-type last) hint))) + hint))) + ;; No hint (propertize (key-description key) 'face 'read-multiple-choice-face)))) keys ", ") diff --git a/lisp/replace.el b/lisp/replace.el index e4709040dff..d8b27544128 100644 --- a/lisp/replace.el +++ b/lisp/replace.el @@ -1,6 +1,6 @@ ;;; replace.el --- replace commands for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1992, 1994, 1996-1997, 2000-2025 Free +;; Copyright (C) 1985-1987, 1992, 1994, 1996-1997, 2000-2026 Free ;; Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -201,7 +201,7 @@ by this function to the end of values available via (car (symbol-value query-replace-from-history-variable))))) (defun query-replace-read-from (prompt regexp-flag) - "Query and return the `from' argument of a `query-replace' operation. + "Query and return the FROM argument of a `query-replace' operation. Prompt with PROMPT. REGEXP-FLAG non-nil means the response should be a regexp. The return value can also be a pair (FROM . TO) indicating that the user wants to replace FROM with TO." @@ -263,7 +263,7 @@ wants to replace FROM with TO." query-replace-read-from-regexp-default 'minibuffer-history) (read-from-minibuffer - prompt nil nil nil nil + prompt nil query-replace-read-map nil nil (if default (delete-dups (cons default (query-replace-read-from-suggestions))) @@ -337,7 +337,7 @@ the original string if not." (defun query-replace-read-to (from prompt regexp-flag) - "Query and return the `to' argument of a `query-replace' operation. + "Query and return the TO argument of a `query-replace' operation. Prompt with PROMPT. REGEXP-FLAG non-nil means the response should a regexp." (query-replace-compile-replacement @@ -387,6 +387,35 @@ should a regexp." (get-text-property 0 'isearch-regexp-function from))) (and current-prefix-arg (eq current-prefix-arg '-)))))) +(defun query-replace-read-transpose-from-to () + "Transpose the FROM and TO arguments of a `query-replace' operation. +If there is an active region in the minibuffer, transpose only those +parts of FROM and TO that intersect with the active region, or complete +TO or FROM if the active region only intersects with FROM or TO, +respectively. +For example, if '[...]' denotes the active region, this function would +transpose '\\=\\<[foo]\\> -> bar' to '\\=\\ -> foo'." + (interactive) + (let* ((from-beg (minibuffer-prompt-end)) + (from-end (next-single-property-change from-beg 'separator)) + (to-beg (and from-end + (next-single-property-change from-end 'separator))) + (to-end (point-max)) + (beg (use-region-beginning)) + (end (use-region-end))) + (cond + ((or (not from-end) (not to-beg)) + (user-error "No query-replace separator to transpose around")) + ((or (not beg) (not end)) + (transpose-regions from-beg from-end to-beg to-end)) + (t + ;; Calculate intersection of FROM and TO with active region. + (when (< from-beg beg from-end) (setq from-beg beg)) + (when (< from-beg end from-end) (setq from-end end)) + (when (< to-beg beg to-end) (setq to-beg beg)) + (when (< to-beg end to-end) (setq to-end end)) + (transpose-regions from-beg from-end to-beg to-end))))) + (defun query-replace (from-string to-string &optional delimited start end backward region-noncontiguous-p) "Replace some occurrences of FROM-STRING with TO-STRING. As each match is found, the user must type a character saying @@ -829,8 +858,17 @@ by this function to the end of values available via (regexp-quote (or (car search-ring) "")) (car (symbol-value query-replace-from-history-variable)))) -(defvar-keymap read-regexp-map +(defvar-keymap query-replace-read-map :parent minibuffer-local-map + ;; Defining M-s as a prefix here has the side effect of hiding + ;; regular M-s, bound to `next-matching-history-element' in the + ;; default minibuffer map. Try to mitigate that loss. + "M-s s" #'next-matching-history-element + "M-s M-s" #'next-matching-history-element + "M-s t" #'query-replace-read-transpose-from-to) + +(defvar-keymap read-regexp-map + :parent query-replace-read-map "M-s c" #'read-regexp-toggle-case-fold) (defvar read-regexp--case-fold nil) @@ -1840,6 +1878,9 @@ is not modified." (bound-and-true-p ido-everywhere)) (substitute-command-keys "(\\\\[ido-select-text] to end): ")) + ((bound-and-true-p icomplete-mode) + (substitute-command-keys + "(\\\\[icomplete-exit] to end): ")) ((bound-and-true-p fido-mode) (substitute-command-keys "(\\\\[icomplete-fido-exit] to end): ")) diff --git a/lisp/reposition.el b/lisp/reposition.el index cb6be05065a..f3ca6a8d38f 100644 --- a/lisp/reposition.el +++ b/lisp/reposition.el @@ -1,6 +1,6 @@ ;;; reposition.el --- center a Lisp function or comment on the screen -*- lexical-binding: t -*- -;; Copyright (C) 1991, 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Michael D. Ernst ;; Created: Jan 1991 diff --git a/lisp/reveal.el b/lisp/reveal.el index 46d5c94fd58..0ae1b01dd86 100644 --- a/lisp/reveal.el +++ b/lisp/reveal.el @@ -1,6 +1,6 @@ ;;; reveal.el --- Automatically reveal hidden text at point -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: outlines diff --git a/lisp/rfn-eshadow.el b/lisp/rfn-eshadow.el index 6db466b72c6..5d4e38a26ab 100644 --- a/lisp/rfn-eshadow.el +++ b/lisp/rfn-eshadow.el @@ -1,6 +1,6 @@ ;;; rfn-eshadow.el --- Highlight `shadowed' part of read-file-name input text -*- lexical-binding: t; -*- ;; -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; ;; Author: Miles Bader ;; Keywords: convenience minibuffer diff --git a/lisp/ring-bell-fns.el b/lisp/ring-bell-fns.el index 1a985225bf3..b35725e192b 100644 --- a/lisp/ring-bell-fns.el +++ b/lisp/ring-bell-fns.el @@ -1,6 +1,6 @@ ;;; ring-bell-fns.el --- Collection of functions for ring-bell -*- lexical-binding: t; -*- -;; Copyright (C) 2025 Free Software Foundation, Inc. +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. ;; Author: Elijah Gabe Pérez ;; Keywords: faces diff --git a/lisp/rot13.el b/lisp/rot13.el index eff6d3997db..74ba929e230 100644 --- a/lisp/rot13.el +++ b/lisp/rot13.el @@ -1,6 +1,6 @@ ;;; rot13.el --- display a buffer in ROT13 -*- lexical-binding: t -*- -;; Copyright (C) 1988, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1988, 2001-2026 Free Software Foundation, Inc. ;; Author: Howard Gayle ;; Simon Josefsson diff --git a/lisp/rtree.el b/lisp/rtree.el index 2db7dbece09..5c33586a663 100644 --- a/lisp/rtree.el +++ b/lisp/rtree.el @@ -1,6 +1,6 @@ ;;; rtree.el --- functions for manipulating range trees -*- lexical-binding:t -*- -;; Copyright (C) 2010-2025 Free Software Foundation, Inc. +;; Copyright (C) 2010-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/ruler-mode.el b/lisp/ruler-mode.el index e196722a413..e5e9ae9dd21 100644 --- a/lisp/ruler-mode.el +++ b/lisp/ruler-mode.el @@ -1,6 +1,6 @@ ;;; ruler-mode.el --- display a ruler in the header line -*- lexical-binding: t -*- -;; Copyright (C) 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001-2026 Free Software Foundation, Inc. ;; Author: David Ponce ;; Created: 24 Mar 2001 diff --git a/lisp/savehist.el b/lisp/savehist.el index 234a3218a55..03f0889ef58 100644 --- a/lisp/savehist.el +++ b/lisp/savehist.el @@ -1,6 +1,6 @@ ;;; savehist.el --- Save minibuffer history -*- lexical-binding:t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Hrvoje Nikšić ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/saveplace.el b/lisp/saveplace.el index d3119fd6af2..8297ab76443 100644 --- a/lisp/saveplace.el +++ b/lisp/saveplace.el @@ -1,6 +1,6 @@ ;;; saveplace.el --- automatically save place in files -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Karl Fogel ;; Maintainer: emacs-devel@gnu.org @@ -391,7 +391,7 @@ may have changed) back to `save-place-alist'." coding-system-for-write)) (let ((print-length nil) (print-level nil)) - (pp save-place-alist (current-buffer))) + (prin1 save-place-alist (current-buffer))) (let ((version-control (cond ((null save-place-version-control) nil) diff --git a/lisp/scroll-all.el b/lisp/scroll-all.el index bdbce161929..684bc7c0468 100644 --- a/lisp/scroll-all.el +++ b/lisp/scroll-all.el @@ -1,6 +1,6 @@ ;;; scroll-all.el --- scroll all buffers together minor mode -*- lexical-binding: t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Gary D. Foster ;; Keywords: convenience scroll lock diff --git a/lisp/scroll-bar.el b/lisp/scroll-bar.el index 7bf68ddb1af..b9d1d3a441e 100644 --- a/lisp/scroll-bar.el +++ b/lisp/scroll-bar.el @@ -1,6 +1,6 @@ ;;; scroll-bar.el --- window system-independent scroll bar support -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1995, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1995, 1999-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: hardware @@ -29,7 +29,6 @@ ;;; Code: (require 'mouse) -(eval-when-compile (require 'cl-lib)) ;;;; Utilities. diff --git a/lisp/scroll-lock.el b/lisp/scroll-lock.el index 7689ca8bafe..ab4de3ad3d2 100644 --- a/lisp/scroll-lock.el +++ b/lisp/scroll-lock.el @@ -1,6 +1,6 @@ ;;; scroll-lock.el --- Scroll lock scrolling. -*- lexical-binding:t -*- -;; Copyright (C) 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005-2026 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/select.el b/lisp/select.el index 59eedc79263..040a9c878d2 100644 --- a/lisp/select.el +++ b/lisp/select.el @@ -1,6 +1,6 @@ ;;; select.el --- lisp portion of standard selection support -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/send-to.el b/lisp/send-to.el index 431ccfc4bb4..b4c3c339029 100644 --- a/lisp/send-to.el +++ b/lisp/send-to.el @@ -1,6 +1,6 @@ ;;; send-to.el --- send files to applications or services -*- lexical-binding: t -*- -;; Copyright (C) 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: send, applications diff --git a/lisp/server.el b/lisp/server.el index cb9d20bcadb..fcfc6c01972 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -1,6 +1,6 @@ ;;; server.el --- Lisp code for GNU Emacs running as server process -*- lexical-binding: t -*- -;; Copyright (C) 1986-1987, 1992, 1994-2025 Free Software Foundation, +;; Copyright (C) 1986-1987, 1992, 1994-2026 Free Software Foundation, ;; Inc. ;; Author: William Sommerfeld diff --git a/lisp/ses.el b/lisp/ses.el index 01d6e755eb3..6f11b8c7f29 100644 --- a/lisp/ses.el +++ b/lisp/ses.el @@ -1,6 +1,6 @@ ;;; ses.el --- Simple Emacs Spreadsheet -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Jonathan Yavner ;; Maintainer: Vincent Belaïche diff --git a/lisp/shadowfile.el b/lisp/shadowfile.el index 15a1ca7d709..7f4f5b56a1f 100644 --- a/lisp/shadowfile.el +++ b/lisp/shadowfile.el @@ -1,6 +1,6 @@ ;;; shadowfile.el --- automatic file copying -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Boris Goldowsky ;; Keywords: comm files @@ -667,6 +667,12 @@ PAIR must be `eq' to one of the elements of that list." (setq shadow-files-to-copy (cl-remove-if (lambda (s) (eq s pair)) shadow-files-to-copy))) +(defun shadow-find-file-noselect (filename &optional nowarn) + "Like `find-file-noselect', but make buffer name ephemeral." + (with-current-buffer (find-file-noselect filename nowarn) + (rename-buffer (format " *%s*" (buffer-name))) + (current-buffer))) + (defun shadow-read-files () "Visit and load `shadow-info-file' and `shadow-todo-file'. Thus restores shadowfile's state from your last Emacs session. @@ -682,7 +688,9 @@ Return t unless files were locked; then return nil." (save-current-buffer (when shadow-info-file (set-buffer (setq shadow-info-buffer - (find-file-noselect shadow-info-file 'nowarn))) + (shadow-find-file-noselect shadow-info-file 'nowarn))) + (lisp-data-mode) + (setq-local lexical-binding t) (when (and (not (buffer-modified-p)) (file-newer-than-file-p (make-auto-save-file-name) shadow-info-file)) @@ -693,7 +701,9 @@ Return t unless files were locked; then return nil." (eval-buffer)) (when shadow-todo-file (set-buffer (setq shadow-todo-buffer - (find-file-noselect shadow-todo-file 'nowarn))) + (shadow-find-file-noselect shadow-todo-file 'nowarn))) + (lisp-data-mode) + (setq-local lexical-binding t) (when (and (not (buffer-modified-p)) (file-newer-than-file-p (make-auto-save-file-name) shadow-todo-file)) @@ -713,7 +723,8 @@ defined, the old hashtable info is invalid." (if shadow-info-file (save-current-buffer (if (not shadow-info-buffer) - (setq shadow-info-buffer (find-file-noselect shadow-info-file))) + (setq shadow-info-buffer + (shadow-find-file-noselect shadow-info-file))) (set-buffer shadow-info-buffer) (setq buffer-read-only nil) (delete-region (point-min) (point-max)) @@ -726,7 +737,8 @@ defined, the old hashtable info is invalid." With non-nil argument also saves the buffer." (save-excursion (if (not shadow-todo-buffer) - (setq shadow-todo-buffer (find-file-noselect shadow-todo-file))) + (setq shadow-todo-buffer + (shadow-find-file-noselect shadow-todo-file))) (set-buffer shadow-todo-buffer) (setq buffer-read-only nil) (delete-region (point-min) (point-max)) diff --git a/lisp/shell.el b/lisp/shell.el index a9c71488f2d..2730c417b49 100644 --- a/lisp/shell.el +++ b/lisp/shell.el @@ -1,6 +1,6 @@ ;;; shell.el --- specialized comint.el for running the shell -*- lexical-binding: t -*- -;; Copyright (C) 1988, 1993-1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1988, 1993-1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Olin Shivers diff --git a/lisp/simple.el b/lisp/simple.el index c1d876de63e..99930c3090c 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -1,6 +1,6 @@ ;;; simple.el --- basic editing commands for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1987, 1993-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal @@ -1638,15 +1638,14 @@ Note that on changing from non-nil to nil, the former contents of 'goto-line-history) buffer)))) -(defun goto-line (line &optional buffer relative) +(defun goto-line (line &optional buffer relative interactive) "Go to LINE, counting from line 1 at beginning of buffer. If called interactively, a numeric prefix argument specifies LINE; without a numeric prefix argument, read LINE from the minibuffer. -If optional argument BUFFER is non-nil, switch to that buffer and -move to line LINE there. If called interactively with \\[universal-argument] -as argument, BUFFER is the most recently selected other buffer. +If called interactively with \\[universal-argument], switch to the +most recently selected other buffer and move to line LINE there. If optional argument RELATIVE is non-nil, counting starts at the beginning of the accessible portion of the (potentially narrowed) buffer. @@ -1659,21 +1658,24 @@ Prior to moving point, this function sets the mark (without activating it), unless Transient Mark mode is enabled and the mark is already active. +A non-nil INTERACTIVE argument pushes the mark and switches the buffer +if optional argument BUFFER is non-nil. + This function is usually the wrong thing to use in a Lisp program. What you probably want instead is something like: (goto-char (point-min)) (forward-line (1- N)) If at all possible, an even better solution is to use char counts rather than line counts." - (declare (interactive-only forward-line)) - (interactive (goto-line-read-args)) + (interactive (append (goto-line-read-args) '(nil t))) ;; Switch to the desired buffer, one way or another. - (if buffer + (when interactive + (when buffer (let ((window (get-buffer-window buffer))) (if window (select-window window) (switch-to-buffer-other-window buffer)))) - ;; Leave mark at previous position - (or (region-active-p) (push-mark)) + ;; Leave mark at previous position + (or (region-active-p) (push-mark))) ;; Move to the specified line number in that buffer. (let ((pos (save-restriction (unless relative (widen)) @@ -1690,14 +1692,13 @@ rather than line counts." (widen)) (goto-char pos))) -(defun goto-line-relative (line &optional buffer) +(defun goto-line-relative (line &optional buffer interactive) "Go to LINE, counting from line at (point-min). The line number is relative to the accessible portion of the narrowed -buffer. The argument BUFFER is the same as in the function `goto-line'." - (declare (interactive-only forward-line)) - (interactive (goto-line-read-args t)) - (with-suppressed-warnings ((interactive-only goto-line)) - (goto-line line buffer t))) +buffer. The arguments BUFFER and INTERACTIVE are the same as in the +function `goto-line'." + (interactive (append (goto-line-read-args t) t)) + (goto-line line buffer t interactive)) (defun count-words-region (start end &optional arg) "Count the number of words in the region. @@ -3577,6 +3578,13 @@ as an argument limits undo to changes within the current region." (if message (message "%s" message)))) +(defun undo-ignore-read-only (&optional arg) + "Perform `undo', ignoring the buffer's read-only status. +A numeric ARG serves as a repeat count." + (interactive "P") + (let ((inhibit-read-only t)) + (undo arg))) + (defun buffer-disable-undo (&optional buffer) "Make BUFFER stop keeping undo information. No argument or nil as argument means do this for the current buffer." @@ -7867,10 +7875,10 @@ This function uses the definition of the default face for the currently selected frame." (let ((dfh (default-font-height)) (lsp (if (display-graphic-p) - (or line-spacing - (default-value 'line-spacing) - (frame-parameter nil 'line-spacing) - 0) + (total-line-spacing (or line-spacing + (default-value 'line-spacing) + (frame-parameter nil 'line-spacing) + 0)) 0))) (if (floatp lsp) (setq lsp (truncate (* (frame-char-height) lsp)))) @@ -9033,7 +9041,7 @@ A negative ARG means to kill forwards. Unix-words differ from Emacs words in that they are always delimited by whitespace, regardless of the buffer's syntax table. Thus, this command emulates C-w at the Unix terminal or shell. -See also this command's nakesake in Info node +See also this command's namesake in Info node `(readline)Commands For Killing'." (interactive "^p") (let ((start (point))) @@ -10723,7 +10731,7 @@ Called from `temp-buffer-show-hook'." (if (display-mouse-p) "Click or type \\[minibuffer-choose-completion] on a completion to select it.\n" "Type \\[minibuffer-choose-completion] on a completion to select it.\n")) - (if minibuffer-visible-completions + (if (eq minibuffer-visible-completions t) (substitute-command-keys "Type \\[minibuffer-next-completion], \\[minibuffer-previous-completion], \ \\[minibuffer-next-line-completion], \\[minibuffer-previous-line-completion] \ diff --git a/lisp/skeleton.el b/lisp/skeleton.el index 3bf1de6419f..81f19c22ce2 100644 --- a/lisp/skeleton.el +++ b/lisp/skeleton.el @@ -1,6 +1,6 @@ ;;; skeleton.el --- Lisp language extension for writing statement skeletons -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/so-long.el b/lisp/so-long.el index 59a833d2c32..a29317cfee7 100644 --- a/lisp/so-long.el +++ b/lisp/so-long.el @@ -1,6 +1,6 @@ ;;; so-long.el --- Say farewell to performance problems with minified code. -*- lexical-binding:t -*- ;; -;; Copyright (C) 2015-2016, 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2016, 2018-2026 Free Software Foundation, Inc. ;; Author: Phil Sainty ;; Maintainer: Phil Sainty @@ -69,7 +69,7 @@ ;; the long lines. In such circumstances you may find that `longlines-mode' is ;; the most helpful facility. ;; -;; Note also that the mitigations are automatically triggered when visiting a +;; Note also that the mitigation is automatically triggered when visiting a ;; file. The library does not automatically detect if long lines are inserted ;; into an existing buffer (although the `so-long' command can be invoked ;; manually in such situations). @@ -392,7 +392,7 @@ ;; by the global mode (although the `so-long' command can be invoked manually). ;; To handle such buffers additional glue code will be required, and that code ;; should likely be specific to the particular use-case to avoid unintended -;; behaviours. +;; behaviors. ;; ;; An example to handle `compilation-mode' (and derivative) buffers follows: ;; @@ -532,7 +532,7 @@ "Internal use. Non-nil when any `so-long' functionality has been used.") (defvar-local so-long--active nil ; internal use - "Non-nil when `so-long' mitigations are in effect.") + "Non-nil when `so-long' mitigation is in effect.") (defvar so-long--set-auto-mode nil ; internal use "Non-nil while `set-auto-mode' is executing.") @@ -1006,7 +1006,7 @@ If nil, no mode line indicator will be displayed." (defface so-long-mode-line-active '((t :inherit mode-line-emphasis)) - "Face for the mode line construct when mitigations are active. + "Face for the mode line construct when mitigation is active. Applied to `mode-name' in the `so-long-mode' major mode, and to `so-long-mode-line-label' otherwise (for non-major-mode actions). @@ -1016,7 +1016,7 @@ See also `so-long-mode-line-info'." (defface so-long-mode-line-inactive '((t :inherit mode-line-inactive)) - "Face for `so-long-mode-line-info' when mitigations have been reverted." + "Face for `so-long-mode-line-info' when mitigation has been reverted." :package-version '(so-long . "1.0")) ;; Modes that go slowly and line lengths excessive @@ -1187,7 +1187,7 @@ Displayed as part of `mode-line-misc-info'. `so-long-mode-line-label' defines the text to be displayed (if any). -Face `so-long-mode-line-active' is used while mitigations are active, and +Face `so-long-mode-line-active' is used while mitigation is active, and `so-long-mode-line-inactive' is used if `so-long-revert' is called. Not displayed when `so-long-mode' is enabled, as the major mode construct @@ -1917,7 +1917,7 @@ Equivalent to calling (global-so-long-mode 0)" ;;;###autoload (define-minor-mode global-so-long-mode - "Toggle automated performance mitigations for files with long lines. + "Toggle automated performance mitigation for files with long lines. Many Emacs modes struggle with buffers which contain excessively long lines, and may consequently cause unacceptable performance issues. @@ -2124,7 +2124,7 @@ If it appears in `%s', you should remove it." ; LocalWords: noerror selectable mapc sgml nxml hl flydiff defs arg Phil Sainty ; LocalWords: defadvice nadvice whitespace ie bos eos eobp origmode un Un setq ; LocalWords: docstring auf Wiedersehen longlines alist autoload Refactored Inc -; LocalWords: MERCHANTABILITY RET REGEXP VAR ELPA WS mitigations EmacsWiki eval +; LocalWords: MERCHANTABILITY RET REGEXP VAR ELPA WS EmacsWiki eval ; LocalWords: rx filename filenames js defun bidi bpa FIXME globalized amongst ;; So long, farewell, auf Wiedersehen, goodbye diff --git a/lisp/sort.el b/lisp/sort.el index 26aa7a893db..0e6c5843c41 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -1,6 +1,6 @@ ;;; sort.el --- commands to sort text in an Emacs buffer -*- lexical-binding: t -*- -;; Copyright (C) 1986-1987, 1994-1995, 2001-2025 Free Software +;; Copyright (C) 1986-1987, 1994-1995, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Howie Kaye diff --git a/lisp/soundex.el b/lisp/soundex.el index 6efc7f1f40f..bf1fe378e81 100644 --- a/lisp/soundex.el +++ b/lisp/soundex.el @@ -1,6 +1,6 @@ ;;; soundex.el --- implement Soundex algorithm -*- lexical-binding: t -*- -;; Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Christian Plaunt ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/speedbar.el b/lisp/speedbar.el index b1fd141321c..108f2743c57 100644 --- a/lisp/speedbar.el +++ b/lisp/speedbar.el @@ -1,6 +1,6 @@ ;;; speedbar.el --- quick access to files and tags in a frame -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Eric M. Ludlam ;; Keywords: file, tags, tools diff --git a/lisp/sqlite-mode.el b/lisp/sqlite-mode.el index 82d5cc80a2c..7ea217501be 100644 --- a/lisp/sqlite-mode.el +++ b/lisp/sqlite-mode.el @@ -1,6 +1,6 @@ ;;; sqlite-mode.el --- Mode for examining sqlite3 database files -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/sqlite.el b/lisp/sqlite.el index f4840d46f07..944c5c4116a 100644 --- a/lisp/sqlite.el +++ b/lisp/sqlite.el @@ -1,6 +1,6 @@ ;;; sqlite.el --- Functions for interacting with sqlite3 databases -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/startup.el b/lisp/startup.el index 7804ab42c8c..6fa42026ca0 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1,6 +1,6 @@ ;;; startup.el --- process Emacs shell arguments -*- lexical-binding: t -*- -;; Copyright (C) 1985-1986, 1992, 1994-2025 Free Software Foundation, +;; Copyright (C) 1985-1986, 1992, 1994-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/strokes.el b/lisp/strokes.el index 10c88845fed..cd70893bf99 100644 --- a/lisp/strokes.el +++ b/lisp/strokes.el @@ -1,6 +1,6 @@ ;;; strokes.el --- control Emacs through mouse strokes -*- lexical-binding: t; -*- -;; Copyright (C) 1997, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2000-2026 Free Software Foundation, Inc. ;; Author: David Bakhash ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/subr.el b/lisp/subr.el index fcf931b64e9..6f2dcb8c16d 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1,6 +1,6 @@ ;;; subr.el --- basic lisp subroutines for Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal @@ -1148,8 +1148,8 @@ side-effects, and the argument LIST is not modified." (make-symbol "f"))) (r (make-symbol "r"))) `(let (,@(and f `((,f ,pred))) - (,tail ,list) - (,r nil)) + (,r nil) + (,tail ,list)) (while (and ,tail (funcall ,(or f pred) (car ,tail))) (push (car ,tail) ,r) (setq ,tail (cdr ,tail))) @@ -2027,8 +2027,9 @@ and `event-end' functions." (let* ((spacing (when (display-graphic-p frame) (or (with-current-buffer (window-buffer (frame-selected-window frame)) - line-spacing) - (frame-parameter frame 'line-spacing))))) + (total-line-spacing)) + (total-line-spacing + (frame-parameter frame 'line-spacing)))))) (cond ((floatp spacing) (setq spacing (truncate (* spacing (frame-char-height frame))))) @@ -4836,7 +4837,6 @@ It also runs the string through `yank-transform-functions'." (get-text-property 0 'yank-handler string))) (param (or (nth 1 handler) string)) (opoint (point)) - (inhibit-read-only inhibit-read-only) end) ;; FIXME: This throws away any yank-undo-function set by previous calls @@ -4847,17 +4847,14 @@ It also runs the string through `yank-transform-functions'." (insert param)) (setq end (point)) - ;; Prevent read-only properties from interfering with the - ;; following text property changes. - (setq inhibit-read-only t) + (with-silent-modifications + (unless (nth 2 handler) ; NOEXCLUDE + (remove-yank-excluded-properties opoint end)) - (unless (nth 2 handler) ; NOEXCLUDE - (remove-yank-excluded-properties opoint end)) - - ;; If last inserted char has properties, mark them as rear-nonsticky. - (if (and (> end opoint) - (text-properties-at (1- end))) - (put-text-property (1- end) end 'rear-nonsticky t)) + ;; If last inserted char has properties, mark them as rear-nonsticky. + (if (and (> end opoint) + (text-properties-at (1- end))) + (put-text-property (1- end) end 'rear-nonsticky t))) (if (eq yank-undo-function t) ; not set by FUNCTION (setq yank-undo-function (nth 3 handler))) ; UNDO @@ -5448,9 +5445,11 @@ If BODY finishes, `while-no-input' returns whatever value BODY produced." (t val))))))) (defmacro condition-case-unless-debug (var bodyform &rest handlers) - "Like `condition-case' except that it does not prevent debugging. -More specifically if `debug-on-error' is set then the debugger will be invoked -even if this catches the signal." + "Like `condition-case', except that it does not prevent debugging. +More specifically, if `debug-on-error' is set, then the debugger will +be invoked even if some handler catches the signal. +Note that this doesn't prevent the handler from executing, it just +causes the debugger to be called before running the handler." (declare (debug condition-case) (indent 2)) `(condition-case ,var ,bodyform @@ -5867,11 +5866,7 @@ A regexp matching strings of whitespace. May be locale-dependent Warning: binding this to a different value and using it as default is likely to have undesired semantics.") -;; The specification says that if both SEPARATORS and OMIT-NULLS are -;; defaulted, OMIT-NULLS should be treated as t. Simplifying the logical -;; expression leads to the equivalent implementation that if SEPARATORS -;; is defaulted, OMIT-NULLS is treated as t. -(defun split-string (string &optional separators omit-nulls trim) +(defun split-string (string &optional separators omit-empty trim) "Split STRING into substrings bounded by matches for SEPARATORS. The beginning and end of STRING, and each match for SEPARATORS, are @@ -5882,16 +5877,17 @@ which is returned. If SEPARATORS is non-nil, it should be a regular expression matching text that separates, but is not part of, the substrings. If omitted or nil, it defaults to `split-string-default-separators', whose value is -normally \"[ \\f\\t\\n\\r\\v]+\", and OMIT-NULLS is then forced to t. +normally \"[ \\f\\t\\n\\r\\v]+\", and OMIT-EMPTY is then forced to t. +SEPARATORS should never be a regexp that matches the empty string. -If OMIT-NULLS is t, zero-length substrings are omitted from the list (so +If OMIT-EMPTY is t, zero-length substrings are omitted from the list (so that for the default value of SEPARATORS leading and trailing whitespace are effectively trimmed). If nil, all zero-length substrings are retained, which correctly parses CSV format, for example. If TRIM is non-nil, it should be a regular expression to match text to trim from the beginning and end of each substring. If trimming -makes the substring empty, it is treated as null. +makes the substring empty and OMIT-EMPTY is t, it is dropped from the result. Note that the effect of `(split-string STRING)' is the same as `(split-string STRING split-string-default-separators t)'. In the rare @@ -5900,62 +5896,66 @@ whitespace, use `(split-string STRING split-string-default-separators)'. Modifies the match data; use `save-match-data' if necessary." (declare (important-return-value t)) - (let* ((keep-nulls (not (if separators omit-nulls t))) - (rexp (or separators split-string-default-separators)) - (start 0) - this-start this-end - notfirst - match-beg - (list nil) - (strlen (length string)) - (push-one - ;; Push the substring in range THIS-START to THIS-END - ;; onto LIST, trimming it and perhaps discarding it. - (lambda () - (when trim - ;; Discard the trim from start of this substring. - (let ((tem (string-match trim string this-start))) - (and (eq tem this-start) - (<= (match-end 0) this-end) - (setq this-start (match-end 0))))) - - (when (or keep-nulls (< this-start this-end)) - (let ((this (substring string this-start this-end))) - - ;; Discard the trim from end of this substring. - (when trim - (let ((tem (string-match (concat trim "\\'") this 0))) - (and tem (< tem (length this)) - (setq this (substring this 0 tem))))) - - ;; Trimming could make it empty; check again. - (when (or keep-nulls (plusp (length this))) - (push this list))))))) - - (while (and (string-match rexp string - (if (and notfirst - (= start match-beg) ; empty match - (< start strlen)) - (1+ start) start)) - (< start strlen)) - (setq notfirst t - match-beg (match-beginning 0)) - ;; If the separator is right at the beginning, produce an empty - ;; substring in the result list. - (if (= start match-beg) - (setq this-start (match-end 0) - this-end this-start) - ;; Otherwise produce a substring from start to the separator. - (setq this-start start this-end match-beg)) - (setq start (match-end 0)) - - (funcall push-one)) - - ;; Handle the substring at the end of STRING. - (setq this-start start this-end strlen) - (funcall push-one) - - (nreverse list))) + (let* ((keep-empty (and separators (not omit-empty))) + (len (length string)) + (trim-left-re (and trim (concat "\\`\\(?:" trim "\\)"))) + (trim-right-re (and trim (concat "\\(?:" trim "\\)\\'"))) + (sep-re (or separators split-string-default-separators)) + (acc nil) + (next 0) + (start 0)) + (while + ;; TODO: The semantics for empty matches are just a copy of + ;; the original code and make no sense at all. It's just a + ;; consequence of the original implementation, no thought behind it. + ;; We should probably error on empty matches, except when + ;; sep is "" (which is in use by some code) but in that case + ;; we could provide a faster implementation. + (let ((sep (string-match sep-re string next))) + (and sep + (let ((sep-end (match-end 0))) + (when (or keep-empty (< start sep)) + ;; TODO: Ideally we'd be able to trim in the + ;; original string and only make a substring after + ;; doing so, but there is no way to bound a regexp + ;; search before a certain offset, nor to anchor it + ;; at the search boundaries. + (let ((item (substring string start sep))) + (if trim + (let* ((item-beg + (if (string-match trim-left-re item 0) + (match-end 0) + 0)) + (item-len (length item)) + (item-end + (or (string-match-p trim-right-re + item item-beg) + item-len))) + (when (or (> item-beg 0) (< item-end item-len)) + (setq item (substring item item-beg item-end))) + (when (or keep-empty (< item-beg item-end)) + (push item acc))) + (push item acc)))) + ;; This ensures progress in case the match was empty. + (setq next (max (1+ next) sep-end)) + (setq start sep-end) + (< start len))))) + ;; field after last separator, if any + (let ((item (if (= start 0) + string ; optimisation when there is no separator + (substring string start)))) + (when trim + (let* ((item-beg (if (string-match trim-left-re item 0) + (match-end 0) + 0)) + (item-len (length item)) + (item-end (or (string-match-p trim-right-re item item-beg) + item-len))) + (when (or (> item-beg 0) (< item-end item-len)) + (setq item (substring item item-beg item-end))))) + (when (or keep-empty (not (equal item ""))) + (push item acc))) + (nreverse acc))) (defalias 'string-split #'split-string) @@ -6974,19 +6974,33 @@ to deactivate this transient map, regardless of KEEP-PRED." ;; digits of precision, it doesn't really matter here. On the other ;; hand, it greatly simplifies the code. +(defvar progress-reporter-update-functions (list #'progress-reporter-echo-area) + "Special hook run on progress-reporter updates. +Each function is called with two arguments: +REPORTER is the result of a call to `make-progress-reporter'. +STATE can be one of: +- A float representing the percentage complete in the range 0.0-1.0 +for a numeric reporter. +- An integer representing the index which cycles through the range 0-3 +for a pulsing reporter. +- The symbol `done' to indicate that the progress reporter is complete.") + (defsubst progress-reporter-update (reporter &optional value suffix) - "Report progress of an operation in the echo area. + "Report progress of an operation, by default, in the echo area. REPORTER should be the result of a call to `make-progress-reporter'. If REPORTER is a numerical progress reporter---i.e. if it was - made using non-nil MIN-VALUE and MAX-VALUE arguments to - `make-progress-reporter'---then VALUE should be a number between - MIN-VALUE and MAX-VALUE. +made using non-nil MIN-VALUE and MAX-VALUE arguments to +`make-progress-reporter'---then VALUE should be a number between +MIN-VALUE and MAX-VALUE. -Optional argument SUFFIX is a string to be displayed after -REPORTER's main message and progress text. If REPORTER is a -non-numerical reporter, then VALUE should be nil, or a string to -use instead of SUFFIX. +Optional argument SUFFIX is a string to be displayed after REPORTER's +main message and progress text. If REPORTER is a non-numerical +reporter, then VALUE should be nil, or a string to use instead of +SUFFIX. SUFFIX is considered obsolete and may be removed in the future. + +See `progress-reporter-update-functions' for the list of functions +called on each update. This function is relatively inexpensive. If the change since last update is too small or insufficient time has passed, it does @@ -6996,7 +7010,8 @@ nothing." (progress-reporter-do-update reporter value suffix))) (defun make-progress-reporter (message &optional min-value max-value - current-value min-change min-time) + current-value min-change min-time + context) "Return progress reporter object for use with `progress-reporter-update'. MESSAGE is shown in the echo area, with a status indicator @@ -7023,13 +7038,18 @@ and/or MAX-VALUE are nil. Optional MIN-TIME specifies the minimum interval time between echo area updates (default is 0.2 seconds.) If the OS is not capable of measuring fractions of seconds, this parameter is -effectively rounded up." +effectively rounded up. + +Optional CONTEXT can be nil or `async'. It is consulted by back ends before +showing progress updates. For example, when CONTEXT is `async', +the echo area progress reports may be muted if the echo area is busy." (when (string-match "[[:alnum:]]\\'" message) (setq message (concat message "..."))) (unless min-time (setq min-time 0.2)) (let ((reporter (cons (or min-value 0) + ;; FIXME: Use defstruct. (vector (if (>= min-time 0.02) (float-time) nil) min-value @@ -7038,13 +7058,23 @@ effectively rounded up." (if min-change (max (min min-change 50) 1) 1) min-time ;; SUFFIX - nil)))) + nil + ;; + context)))) ;; Force a call to `message' now. (progress-reporter-update reporter (or current-value min-value)) reporter)) (defalias 'progress-reporter-make #'make-progress-reporter) +(defun progress-reporter-text (reporter) + "Return REPORTER's text." + (aref (cdr reporter) 3)) + +(defun progress-reporter-context (reporter) + "Return REPORTER's context." + (aref (cdr reporter) 7)) + (defun progress-reporter-force-update (reporter &optional value new-message suffix) "Report progress of an operation in the echo area unconditionally. @@ -7060,12 +7090,35 @@ NEW-MESSAGE, if non-nil, sets a new message for the reporter." (defvar progress-reporter--pulse-characters ["-" "\\" "|" "/"] "Characters to use for pulsing progress reporters.") +(defun progress-reporter-echo-area (reporter state) + "Progress reporter echo area update function. +REPORTER and STATE are the same as in +`progress-reporter-update-functions'. + +Do not emit a message if the reporter context is `async' and the echo +area is busy with something else." + (let ((text (progress-reporter-text reporter))) + (unless (and (eq (progress-reporter-context reporter) 'async) + (current-message) + (not (string-prefix-p text (current-message)))) + (pcase state + ((pred floatp) + (if (plusp state) + (message "%s%d%%" text (* state 100.0)) + (message "%s" text))) + ((pred integerp) + (let ((message-log-max nil) + (pulse-char (aref progress-reporter--pulse-characters + state))) + (message "%s %s" text pulse-char))) + ('done + (message "%sdone" text)))))) + (defun progress-reporter-do-update (reporter value &optional suffix) - (let* ((parameters (cdr reporter)) - (update-time (aref parameters 0)) - (min-value (aref parameters 1)) - (max-value (aref parameters 2)) - (text (aref parameters 3)) + (let* ((parameters (cdr reporter)) + (update-time (aref parameters 0)) + (min-value (aref parameters 1)) + (max-value (aref parameters 2)) (enough-time-passed ;; See if enough time has passed since the last update. (or (not update-time) @@ -7098,9 +7151,9 @@ NEW-MESSAGE, if non-nil, sets a new message for the reporter." (if suffix (aset parameters 6 suffix) (setq suffix (or (aref parameters 6) ""))) - (if (plusp percentage) - (message "%s%d%% %s" text percentage suffix) - (message "%s %s" text suffix))))) + (run-hook-with-args 'progress-reporter-update-functions + reporter + (/ percentage 100.0))))) ;; Pulsing indicator (enough-time-passed (when (and value (not suffix)) @@ -7108,16 +7161,18 @@ NEW-MESSAGE, if non-nil, sets a new message for the reporter." (if suffix (aset parameters 6 suffix) (setq suffix (or (aref parameters 6) ""))) - (let* ((index (mod (1+ (car reporter)) 4)) - (message-log-max nil) - (pulse-char (aref progress-reporter--pulse-characters - index))) + (let ((index (mod (1+ (car reporter)) 4))) (setcar reporter index) - (message "%s %s %s" text pulse-char suffix)))))) + (run-hook-with-args 'progress-reporter-update-functions + reporter + index)))))) (defun progress-reporter-done (reporter) - "Print reporter's message followed by word \"done\" in echo area." - (message "%sdone" (aref (cdr reporter) 3))) + "Print reporter's message followed by word \"done\" in echo area. +Call the functions on `progress-reporter-update-functions`." + (run-hook-with-args 'progress-reporter-update-functions + reporter + 'done)) (defmacro dotimes-with-progress-reporter (spec reporter-or-message &rest body) "Loop a certain number of times and report progress in the echo area. @@ -7569,7 +7624,18 @@ REGEXP defaults to \"[ \\t\\n\\r]+\"." TRIM-LEFT and TRIM-RIGHT default to \"[ \\t\\n\\r]+\"." (declare (important-return-value t)) - (string-trim-left (string-trim-right string trim-right) trim-left)) + (let* ((beg (and (string-match (if trim-left + (concat "\\`\\(?:" trim-left "\\)") + "\\`[ \t\n\r]+") + string) + (match-end 0))) + (end (string-match-p (if trim-right + (concat "\\(?:" trim-right "\\)\\'") + "[ \t\n\r]+\\'") + string beg))) + (if (or beg end) + (substring string beg end) + string))) (let ((missing (make-symbol "missing"))) (defsubst hash-table-contains-p (key table) @@ -7709,14 +7775,14 @@ is inserted before adjusting the number of empty lines." ((< (- (point) start) lines) (insert (make-string (- lines (- (point) start)) ?\n)))))) -(defun string-lines (string &optional omit-nulls keep-newlines) +(defun string-lines (string &optional omit-empty keep-newlines) "Split STRING into a list of lines. -If OMIT-NULLS, empty lines will be removed from the results. +If OMIT-EMPTY, 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 + (if omit-empty nil (list "")) (let ((lines nil) @@ -7725,13 +7791,13 @@ lines." (let ((newline (string-search "\n" string start))) (if newline (progn - (when (or (not omit-nulls) + (when (or (not omit-empty) (not (= start newline))) (let ((line (substring string start (if keep-newlines (1+ newline) newline)))) - (when (not (and keep-newlines omit-nulls + (when (not (and keep-newlines omit-empty (equal line "\n"))) (push line lines)))) (setq start (1+ newline))) @@ -7873,4 +7939,12 @@ and return the value found in PLACE instead." ,(funcall setter val) ,val))))) +(defun total-line-spacing (&optional line-spacing-param) + "Return numeric value of line-spacing, summing it if it's a cons. + When LINE-SPACING-PARAM is provided, calculate from it instead." + (let ((v (or line-spacing-param line-spacing))) + (pcase v + ((pred numberp) v) + (`(,above . ,below) (+ above below))))) + ;;; subr.el ends here diff --git a/lisp/svg.el b/lisp/svg.el index 531a8beabb1..a4aada5e620 100644 --- a/lisp/svg.el +++ b/lisp/svg.el @@ -1,6 +1,6 @@ ;;; svg.el --- SVG image creation functions -*- lexical-binding: t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Felix E. Klee diff --git a/lisp/system-taskbar.el b/lisp/system-taskbar.el new file mode 100644 index 00000000000..44e3d5f58cf --- /dev/null +++ b/lisp/system-taskbar.el @@ -0,0 +1,544 @@ +;;; system-taskbar.el --- System GUI taskbar/dock/launcher status display -*- lexical-binding: t -*- + +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. + +;; Author: Stephane Marks +;; Maintainer: emacs-devel@gnu.org +;; Keywords: convenience +;; Package-Requires: ((emacs "31.1")) + +;; 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 . + +;;; Commentary: + +;; Use this package to display a taskbar icon "badge" overlay, a +;; progress bar report overlay, or alert the user that an Emacs session +;; needs attention, often by flashing or bouncing the Emacs application +;; icon. +;; +;; Note: The term taskbar is inclusive of dock or launcher or some other +;; terminology as may be used for your system. +;; +;; On GNU/Linux, the visible effects will appear on the destinations +;; determined by your shell extension, most often the application +;; launcher or dock panel, or the top panel. Effects are global for an +;; Emacs instance. +;; +;; On macOS/GNUstep, the effects will appear on the Dock and in the App +;; Switcher. Effects are global for an Emacs instance. +;; +;; On MS-Windows, the effects appear on the taskbar. Effects are +;; associated with the frame from which they are initiated. + +;;; Usage: + +;; The global minor mode `system-taskbar-mode' initializes the GUI +;; platform back-end and must be enabled before using the functions +;; below. +;; +;; `system-taskbar-badge' overlays a count, which is an integer, on the +;; Emacs taskbar icon. You can use this, for example, to indicate the +;; number of unread email messages. On GNU/Linux, the count must be an +;; integer or nil. On macOS/GNUstep, the count may be an integer or a +;; string, which the operating system will abbreviate if too long. On +;; MS-Windows, the taskbar badge will be abbreviated to three +;; characters; if the count is an integer outside the range -99 to 99, +;; it is shown as "-99" or "99+", if count is a string longer than 3 +;; characters it is truncated. +;; +;; `system-taskbar-attention' flashes or bounces the Emacs taskbar icon +;; to indicate that your Emacs session wants attention. Its behaviors +;; are back-end specific. +;; +;; `system-taskbar-progress' overlays a graphical progress bar on the +;; Emacs taskbar icon to illustrate progress of a potentially +;; long-running operation. +;; +;; When `system-taskbar-mode' is enabled, Emacs progress reporters will +;; be enhanced to display taskbar GUI progress bars. Customize +;; `system-taskbar-use-progress-reporter' if you want to disable this +;; before enabling `system-taskbar-mode'. +;; +;; On GNU/Linux systems, taskbar effects will appear on the GUI +;; window-system destinations determined by your shell extension, most +;; often the application launcher or dock panel, or the top panel. +;; Taskbar effects are global for an Emacs instance. The GNU/Linux +;; implementation sends taskbar messages to the system GUI using D-Bus. +;; You may need to install or configure shell extensions such as +;; https://extensions.gnome.org/extension/307/dash-to-dock/ that +;; implement Ubuntu's Unity D-Bus launcher spec which you can read more +;; about here https://wiki.ubuntu.com/Unity/LauncherAPI. +;; +;; Your Linux Emacs instance should be launched via an appropriate shell +;; "desktop" file such as those distributed with Emacs; e.g., +;; "etc/emacsclient.desktop" as documented here +;; https://specifications.freedesktop.org/desktop-entry/latest/ and +;; which your GUI system should implement. +;; +;; On macOS/GNUstep 10.5+, taskbar effects appear on the Dock and in the +;; App Switcher. Effects are global for an Emacs instance. +;; macOS/GNUstep is implemented via its native API and needs no special +;; configuration. +;; +;; On MS-Windows 7+, taskbar effects appear on the Windows taskbar. +;; Effects are associated with the frame from which they are initiated. +;; MS-Windows is implemented via its native API and needs no special +;; configuration. +;; +;; To add support for additional systems, provide a back end that +;; implements the cl-generic functions below. + +;;; Code: + +(require 'dbus) + +(defgroup system-taskbar nil + "System GUI taskbar icon badge, progress report, alerting." + :group 'convenience + :version "31.1") + +(defcustom system-taskbar-use-progress-reporter t + "Supplement progress-reporters with GUI taskbar icon progress bars. +Set this before enabling `system-taskbar-mode'." + :type 'boolean + :version "31.1") + +(defcustom system-taskbar-clear-attention-on-frame-focus t + "Clear the icon attention indicator when any GUI frame is focused. +Back ends that automatically clear the attention indicator, such as +macOS/GNUstep and MS-Windows, ignore this option." + :type 'boolean + :version "31.1") + +(defcustom system-taskbar-dbus-desktop-file-name "emacsclient" + "D-Bus desktop file base name for the system taskbar destination. +This should be the base name of the desktop file used to launch an Emacs +instance. For example, if your launcher desktop file is called +\"emacs.desktop\", this option should be \"emacs\"." + :type 'string + :version "31.1") + +(defcustom system-taskbar-dbus-timeout nil + "Number of milliseconds to wait for D-Bus responses. +If nil, use the D-Bus default timeout which is 25,000 (i.e., 25s). + +If your D-Bus desktop extension needs extra time to respond, in which +case `system-taskbar-mode' might not initialize or related functions +might not take visible effect, bind this to a value higher than 25,000 +to find what works for your system." + :type '(choice (const :tag "Default" nil) natnum) + :version "31.1") + +(defun system-taskbar-progress-reporter-install () + "Install system taskbar progress reporter." + (add-hook 'progress-reporter-update-functions + #'system-taskbar--progress-reporter-update)) + +(defun system-taskbar-progress-reporter-remove () + "Remove system taskbar progress reporter." + (remove-hook 'progress-reporter-update-functions + #'system-taskbar--progress-reporter-update)) + +(defvar system-taskbar--back-end nil + "Generic taskbar method system dispatcher.") + +;;;###autoload +(define-minor-mode system-taskbar-mode + "System GUI taskbar icon badge, progress report, alerting." + :global t + (when noninteractive + (warn "Batch mode does not support `system-taskbar'")) + (cond (system-taskbar-mode + (if (and (system-taskbar--set-back-end) + (system-taskbar--enable)) + (when system-taskbar-use-progress-reporter + (system-taskbar-progress-reporter-install)) + (setq system-taskbar-mode nil) + (warn "`system-taskbar' could not be initialized"))) + (t + (system-taskbar-progress-reporter-remove) + (when system-taskbar--back-end + (system-taskbar--badge nil) + (system-taskbar--attention nil) + (system-taskbar--progress nil) + (system-taskbar--disable) + (setq system-taskbar--back-end nil))))) + +(defun system-taskbar-badge (&optional count) + "Display COUNT as an overlay on the system taskbar Emacs icon. +If COUNT is an integer, display that. +If COUNT is a string on back ends that support strings, display that. +The string should be short. +On back ends which do not support strings, convert COUNT to an integer +using `string-to-number' and testing `integerp', or nil if that fails. +If COUNT is nil or an empty string, remove the counter." + (when system-taskbar-mode + (system-taskbar--badge count))) + +(defun system-taskbar-attention (&optional urgency timeout) + "Flash the system taskbar icon and/or frame to alert the user. +URGENCY can be one of the symbols `informational', or `critical'. +If URGENCY is nil, clear the attention indicator. + +The attention indicator is cleared by the earliest of bringing the Emacs +GUI into focus, or after TIMEOUT seconds. If TIMEOUT is nil, the system +GUI behavior has priority. + +On some back ends, `critical' has the same effect as `informational'." + (when system-taskbar-mode + (system-taskbar--attention urgency timeout))) + +(defun system-taskbar-progress (&optional progress) + "Display a progress indicator overlay on the system taskbar icon. +PROGRESS is a float in the range 0.0 to 1.0. +If PROGRESS is nil, remove the progress indicator." + (when system-taskbar-mode + (system-taskbar--progress progress))) + + +;; Internal implementation. + +(defun system-taskbar--set-back-end () + "Determine taskbar host system type." + ;; Order matters to accommodate the cases where an NS or MS-Windows + ;; build have the dbus feature. + (setq system-taskbar--back-end + (cond ((boundp 'ns-version-string) 'ns) + ((bound-and-true-p w32-initialized) 'w32) + ((and (featurep 'dbusbind) + (member "org.freedesktop.login1" + (dbus-list-activatable-names :system))) + 'dbus) + (t nil)))) + +(cl-defgeneric system-taskbar--enable () + "Enable the system taskbar back end. +Return t if the back end is initialized, or nil.") + +(cl-defgeneric system-taskbar--disable () + "Disable the system taskbar back end.") + +(cl-defgeneric system-taskbar--badge (&optional count) + "Display COUNT as an overlay on the system taskbar Emacs icon. +If COUNT is an integer, display that. +If COUNT is a string on back ends that support strings, display that. +The string should be short. +On back ends which do not support strings, convert COUNT to an integer +using `string-to-number' and testing `integerp', or nil if that fails. +If COUNT is nil or an empty string, remove the counter.") + +(cl-defgeneric system-taskbar--attention (&optional urgency timeout) + "Flash the system taskbar icon and/or frame to alert the user. +URGENCY can be one of the symbols `informational', or `critical'. +If URGENCY is nil, clear the attention indicator. + +The attention indicator is cleared by the earliest of bringing the Emacs +GUI into focus, or after TIMEOUT seconds. If TIMEOUT is nil, the system +GUI behavior has priority. + +On some back ends, `critical' has the same effect as `informational'. + +On some back ends, attention will be displayed only if Emacs is not the +currently focused application.") + +(cl-defgeneric system-taskbar--progress (&optional progress) + "Display a progress indicator overlay on the system taskbar icon. +PROGRESS is a float in the range 0.0 to 1.0. +If PROGRESS is nil, remove the progress indicator.") + +(defun system-taskbar--validate-progress (progress) + "Return PROGRESS as a float in the range 0.0 to 1.0, or nil." + (when (natnump progress) + (setq progress (float progress))) + (when (and progress (>= progress 0.0) (<= progress 1.0)) + progress)) + + +;; `progress-reporter' support. + +(defun system-taskbar--progress-reporter-update (_reporter state) + "Progress reporter system taskbar update function. +REPORTER and STATE are the same as in +`progress-reporter-update-functions'." + (when system-taskbar-mode + (pcase state + ((pred floatp) + (system-taskbar--progress state)) + ((pred integerp) + (system-taskbar--progress (/ (1+ state) 4.0))) + ('done + (system-taskbar--progress nil))))) + + +;; D-Bus support. + +(defconst system-taskbar--dbus-service "com.canonical.Unity") +(defconst system-taskbar--dbus-interface "com.canonical.Unity.LauncherEntry") + +(defvar system-taskbar--dbus-attention nil + "Non-nil when attention is requested.") + +(defun system-taskbar--dbus-send-signal (message) + "Send MESSAGE to the D-Bus system taskbar service." + (let ((app-uri + (format "application://%s.desktop" + system-taskbar-dbus-desktop-file-name))) + (dbus-send-signal + :session + system-taskbar--dbus-service + "/" + system-taskbar--dbus-interface + "Update" + app-uri + message))) + +(defun system-taskbar--dbus-clear-attention-on-frame-focus () + "Clear an active D-Bus attention request if any frame is focused." + (when (and system-taskbar--dbus-attention + (catch :clear + (dolist (frame (frame-list)) + (when (eq (frame-focus-state frame) t) + (throw :clear t))))) + (system-taskbar-attention nil))) + +(defun system-taskbar-dbus-ping-service () + "Return non-nil if `system-taskbar--dbus-service' responds. +Return nil if no response within `system-taskbar-dbus-timeout'." + (dbus-ping + :session + system-taskbar--dbus-service + system-taskbar-dbus-timeout)) + +(cl-defmethod system-taskbar--enable (&context + (system-taskbar--back-end (eql 'dbus))) + (if (system-taskbar-dbus-ping-service) + (progn + (when system-taskbar-clear-attention-on-frame-focus + (add-function :after after-focus-change-function + #'system-taskbar--dbus-clear-attention-on-frame-focus)) + t) + (display-warning 'system-taskbar-dbus + (format-message "D-Bus service `%s' unavailable" + system-taskbar--dbus-service)) + nil)) + +(cl-defmethod system-taskbar--disable (&context + (system-taskbar--back-end (eql 'dbus))) + (remove-function after-focus-change-function + #'system-taskbar--dbus-clear-attention-on-frame-focus)) + +(cl-defmethod system-taskbar--badge (&context + (system-taskbar--back-end (eql 'dbus)) + &optional count) + "Display COUNT as an overlay on the system taskbar Emacs icon. +If COUNT is an integer, display that. If COUNT is a string, convert it +to an integer, or nil if that fails. If COUNT is any other type, use +nil. If COUNT is nil or an empty string, remove the badge. +Note: The Unity D-Bus protocol supports only integer badges." + (cond ((stringp count) + (if (string-empty-p count) + (setq count nil) + (let ((count-1 (string-to-number count))) + (setq count (if (integerp count-1) count-1 nil))))) + ((not (integerp count)) + (setq count nil))) + (system-taskbar--dbus-send-signal + `((:dict-entry "count-visible" + (:variant :boolean ,(not (null count)))) + (:dict-entry "count" + (:variant :uint32 ,(if (null count) 0 + count)))))) + +(cl-defmethod system-taskbar--attention (&context + (system-taskbar--back-end (eql 'dbus)) + &optional urgency timeout) + "Request URGENCY user attention on the system taskbar Emacs icon. +The request will time out within the TIMEOUT seconds interval. +The Unity D-Bus protocol does not support differentiated urgency levels." + (setq system-taskbar--dbus-attention urgency) + (system-taskbar--dbus-send-signal + `((:dict-entry "urgent" + (:variant :boolean ,(not (null urgency)))))) + (when (and urgency timeout) + (run-with-timer + timeout + nil + #'system-taskbar-attention nil))) + +(cl-defmethod system-taskbar--progress (&context + (system-taskbar--back-end (eql 'dbus)) + &optional progress) + "Display a progress bar overlay on the system taskbar icon. +PROGRESS is a float in the range 0.0 to 1.0. +If PROGRESS is nil, remove the progress bar." + (setq progress (system-taskbar--validate-progress progress)) + (system-taskbar--dbus-send-signal + `((:dict-entry "progress-visible" + (:variant :boolean ,(not (null progress)))) + (:dict-entry "progress" + (:variant :double ,(if (null progress) 0 progress)))))) + + +;; macOS/GNUstep NS support. + +(declare-function ns-badge "nsfns.m") +(declare-function ns-request-user-attention "nsfns.m") +(declare-function ns-progress-indicator "nsfns.m") + +(cl-defmethod system-taskbar--enable (&context + (system-taskbar--back-end (eql 'ns))) + t) + +(cl-defmethod system-taskbar--disable (&context + (system-taskbar--back-end (eql 'ns))) + (ignore)) + +(cl-defmethod system-taskbar--badge (&context + (system-taskbar--back-end (eql 'ns)) + &optional count) + "Display COUNT as an overlay on the Dock badge. +If COUNT is an integer or a non-empty string, display that. If COUNT is +nil or an empty string, clear the badge overlay. +Note: NS will abbreviate long strings to fit the badge's allocated +space." + (cond ((stringp count) + (when (string-empty-p count) + (setq count nil))) + ((integerp count) + (setq count (number-to-string count))) + (t (setq count nil))) + (ns-badge count)) + +(cl-defmethod system-taskbar--attention (&context + (system-taskbar--back-end (eql 'ns)) + &optional urgency timeout) + "Request URGENCY user attention on the Dock. +The attention indicator will be cleared after TIMEOUT seconds." + (ns-request-user-attention urgency) + (when (and urgency timeout) + (run-with-timer + timeout + nil + #'system-taskbar-attention nil))) + +(cl-defmethod system-taskbar--progress (&context + (system-taskbar--back-end (eql 'ns)) + &optional progress) + "Display a progress bar overlay on the Dock and App Switcher. +PROGRESS is a float in the range 0.0 to 1.0. +If PROGRESS is nil, remove the progress bar." + (ns-progress-indicator (system-taskbar--validate-progress progress))) + + +;; MS-Windows support. + +(declare-function w32-badge "w32fns.c") +(declare-function w32-request-user-attention "w32fns.c") +(declare-function w32-progress-indicator "w32fns.c") + +;; The background color should be similar to the color of the Emacs icon +;; shown on the taskbar, as that seems to be the convention on +;; MS-Windows. +(defvar system-taskbar-w32-badge-background "#ab82ff" ; MediumPurple1 + "w32 badge background RGB triple string.") + +;; It looks like the convention is to use the black foreground. +(defvar system-taskbar-w32-badge-foreground "#000000" ; black + "w32 badge foreground RGB triple string.") + +(defun system-taskbar--w32-clear-frame-indicators (frame) + ;; NOTE: Update the below if adding new w32 system taskbar functions. + (with-selected-frame frame + (system-taskbar-badge nil) + (system-taskbar-attention nil) + (system-taskbar-progress nil))) + +(cl-defmethod system-taskbar--enable (&context + (system-taskbar--back-end (eql 'w32))) + ;; Clear system taskbar indicators for a frame when it is deleted. + (add-hook 'delete-frame-functions + #'system-taskbar--w32-clear-frame-indicators) + t) + +(cl-defmethod system-taskbar--disable (&context + (system-taskbar--back-end (eql 'w32))) + (remove-hook 'delete-frame-functions + #'system-taskbar--w32-clear-frame-indicators)) + +(cl-defmethod system-taskbar--badge (&context + (system-taskbar--back-end (eql 'w32)) + &optional count) + "Display a COUNT overlay on the system taskbar icon. +The taskbar icon target is associated with the selected frame. + +If COUNT is an integer or a non-empty string, display that. If COUNT is +nil or an empty string, clear the badge. + +Due to MS-Windows icon overlay size limitations, if COUNT is an integer +and is outside the range -99 to 99, display \"-99\" and \"99+\", +respectively, if COUNT is a string longer than 2 characters truncate it +using `truncate-string-to-width'. + +Consult `system-taskbar-w32-badge-background' and +`system-taskbar-w32-badge-foreground' for the background and foreground +colors for the painted overlay." + (cond ((stringp count) + (if (string-empty-p count) + (setq count nil) + (when (length> count 2) + (setq count (truncate-string-to-width count 3 0 nil t))))) + ((integerp count) + (if (and (> count -100) + (< count 100)) + (setq count (number-to-string count)) + (if (< count 0) + (setq count "-99") + (setq count "99+")))) + (t (setq count nil))) + (w32-badge count + system-taskbar-w32-badge-background + system-taskbar-w32-badge-foreground)) + +(cl-defmethod system-taskbar--attention (&context + (system-taskbar--back-end (eql 'w32)) + &optional urgency timeout) + "Request URGENCY user attention on the system taskbar icon. +Indicate the icon associated with the selected frame. +If URGENCY is the symbol `informational', flash the taskbar icon. +If URGENCY is the symbol `critical', flash the taskbar icon and the +MS-Windows window frame. +Clear attention indicator after TIMEOUT seconds. If TIMEOUT is nil, +default to MS-Windows default behavior." + (w32-request-user-attention urgency) + (when (and urgency timeout) + (run-with-timer + timeout + nil + #'system-taskbar-attention nil))) + +(cl-defmethod system-taskbar--progress (&context + (system-taskbar--back-end (eql 'w32)) + &optional progress) + "Display a progress bar on the system taskbar icon. +PROGRESS is a float in the range 0.0 to 1.0. +If PROGRESS is nil, remove the progress bar." + (w32-progress-indicator (system-taskbar--validate-progress progress))) + + + +(provide 'system-taskbar) + +;;; system-taskbar.el ends here diff --git a/lisp/t-mouse.el b/lisp/t-mouse.el index bb263d552d4..d02ffda486f 100644 --- a/lisp/t-mouse.el +++ b/lisp/t-mouse.el @@ -4,7 +4,7 @@ ;; Maintainer: emacs-devel@gnu.org ;; Keywords: mouse gpm linux -;; Copyright (C) 1994-1995, 1998, 2006-2025 Free Software Foundation, +;; Copyright (C) 1994-1995, 1998, 2006-2026 Free Software Foundation, ;; Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index 6653d12f634..4cc090bca94 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el @@ -1,6 +1,6 @@ ;;; tab-bar.el --- frame-local tabs with named persistent window configurations -*- lexical-binding: t; -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Juri Linkov ;; Keywords: frames tabs @@ -48,23 +48,29 @@ (defface tab-bar-tab '((default :inherit tab-bar) - (((class color) (min-colors 88)) + (((class color) (min-colors 88) (background light)) :box (:line-width 1 :style released-button)) + (((class color) (min-colors 88) (background dark)) + :box (:line-width 1 :style released-button) + :background "grey40" + :foreground "white") (t :inverse-video nil)) "Tab bar face for selected tab." - :version "27.1" + :version "31.1" :group 'tab-bar-faces) (defface tab-bar-tab-inactive '((default :inherit tab-bar-tab) - (((class color) (min-colors 88)) + (((class color) (min-colors 88) (background light)) :background "grey75") + (((class color) (min-colors 88) (background dark)) + :background "grey20") (t :inverse-video t)) "Tab bar face for non-selected tab." - :version "27.1" + :version "31.1" :group 'tab-bar-faces) (defface tab-bar-tab-group-current @@ -86,10 +92,14 @@ :group 'tab-bar-faces) (defface tab-bar-tab-highlight - '((((class color) (min-colors 88)) + '((((class color) (min-colors 88) (background light)) :box (:line-width 1 :style released-button) :background "grey85" :foreground "black") + (((class color) (min-colors 88) (background dark)) + :box (:line-width 1 :style released-button) + :background "grey40" + :foreground "white") (t :inverse-video nil)) "Tab bar face for highlighting." :version "31.1" @@ -1470,8 +1480,7 @@ be scaled for display on the current frame." (push '(tabs . frameset-filter-tabs) frameset-filter-alist) ;; Session filter used within same session by `frameset-to-register' -;; should make a deep copy of tabs to prevent modification -;; of saved data. +;; should make a deep copy of tabs to prevent modification of saved data. (defun frameset-session-filter-tabs (current _filtered _parameters _saving) (copy-tree current)) @@ -1911,6 +1920,8 @@ to which to move the tab; ARG defaults to 1." (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)))))) + ;; Delete the window configuration (wc) that has frame references, + ;; and leave only the window state (ws) to restore it on another frame. (cl-pushnew (assq-delete-all 'wc (if (eq (car from-tab) 'current-tab) (tab-bar--tab from-frame) @@ -1953,6 +1964,72 @@ configuration." (delete-window)) (tab-bar-switch-to-recent-tab)) +(defun tab-bar-split-tab (&optional tab arg) + "Split windows of specified TAB into two separate tabs. +TAB defaults to the selected tab. ARG specifies the number +of windows to consider for splitting and defaults to 1. +Interactively, ARG is the prefix argument. + +First divide the child windows of TAB's main window into two parts. +The first part includes the first ARG child windows if ARG is positive, +or -ARG last windows if it's negative. The second part includes the +remaining child windows of TAB's main window. Then clone into a +newly-created tab each of the windows of the part which does not +include TAB's selected window and delete those windows from TAB." + (interactive "i\nP") + (let* ((tab (or tab (1+ (tab-bar--current-tab-index)))) + (_ (unless (eq tab (1+ (tab-bar--current-tab-index))) + (tab-bar-select-tab tab))) + (main (window-main-window)) + (total-window-count (window-child-count main)) + (arg (or arg 1))) + (cond + ((window-live-p main) + (user-error "Cannot split tab with only one window")) + ((or (not (numberp arg)) (zerop arg)) + (user-error "Invalid ARG %s for splitting tab" arg)) + ((>= (abs arg) total-window-count) + (user-error "ARG %s exceeds number of windows %s that can be split off" + (abs arg) (1- total-window-count))) + (t + (let* ((comb (window-get-split-combination main arg)) + (ws (window-state-get comb))) + (delete-window comb) + (tab-bar-new-tab) + (window-state-put ws (window-main-window))))))) + +(defalias 'split-tab #'tab-bar-split-tab) + +(defun tab-bar-merge-tabs (&optional tab1 tab2 vertical) + "Merge the main window of TAB2 into TAB1. +Split the main window of TAB1 and make the new window display +the main window of TAB2. Both TAB1 and TAB2 must be tab numbers. +If VERTICAL is non-nil, make the new window below the old main window +of TAB1. Otherwise, make the new window on the right of TAB1's main +window. Interactively, VERTICAL is the prefix argument, TAB1 is the +selected tab and TAB2 is the recent tab. Close TAB2 if the merge +completed successfully and return TAB1." + (interactive "i\ni\nP") + (let ((tab1 (or tab1 (1+ (tab-bar--current-tab-index)))) + (tab2 (or tab2 (1+ (or (tab-bar--tab-index-recent 1) 0)))) + ws2) + (when (eq tab1 tab2) + (user-error "Cannot find tab to merge")) + (tab-bar-select-tab tab2) + (setq ws2 (window-state-get (window-main-window))) + (let ((tab-bar-close-tab-select 'recent) + (tab-bar-closed-tabs nil)) + (tab-bar-close-tab)) + (unless (eq tab1 (1+ (tab-bar--current-tab-index))) + (tab-bar-select-tab tab1)) + (window-state-put + ws2 + ;; Make new window on tab1. + (split-window (window-main-window) nil (not vertical))) + tab1)) + +(defalias 'merge-tabs #'tab-bar-merge-tabs) + (defcustom tab-bar-new-tab-to 'right "Where to create a new tab. @@ -2834,9 +2911,20 @@ with those specified by the selected window configuration." (defun tab-bar--reusable-frames (all-frames) + "Process the `reusable-frames' buffer display action alist entry. +Return a frame list. Used with the `display-buffer-in-tab' action." (cond ((eq all-frames t) (frame-list)) ((eq all-frames 'visible) (visible-frame-list)) + ;; The standard behavior for a `reusable-frames' value of 0 is implemented in + ;; candidate_window_p() in window.c, and we have to go via `window-list-1' to + ;; utilize this. We list the selected frame first. + ((eq all-frames 0) (let (frames) + (dolist (w (window-list-1 nil nil 0)) + (let ((f (window-frame w))) + (unless (memq f frames) + (push f frames)))) + (nreverse frames))) ((framep all-frames) (list all-frames)) (t (list (selected-frame))))) @@ -2852,6 +2940,9 @@ The optional argument ALL-FRAMES specifies the frames to consider: - `visible' means consider all tabs on all visible frames. +- 0 (the number zero) means consider all tabs on all visible and + iconified frames. + - A frame means consider all tabs on that frame only. - Any other value of ALL-FRAMES means consider all tabs on the @@ -2904,27 +2995,40 @@ ALIST is an association list of action symbols and values. See Info node `(elisp) Buffer Display Action Alists' for details of such alists. -If ALIST contains a `tab-name' entry, it creates a new tab with that name and -displays BUFFER in a new tab. If a tab with this name already exists, it -switches to that tab before displaying BUFFER. The `tab-name' entry can be -a function, in which case it is called with two arguments: BUFFER and ALIST, -and should return the tab name. When a `tab-name' entry is omitted, create -a new tab without an explicit name. +If ALIST contains a non-nil `reusable-frames' entry then the frames +indicated by its value are searched for an existing tab which already +displays BUFFER. The possible values of `reusable-frames' are: -The ALIST entry `tab-group' (string or function) defines the tab group. - -If ALIST contains a `reusable-frames' entry, its value determines -which frames to search for a reusable tab: - nil -- do not reuse any frames; - a frame -- just that frame; + t -- all existing frames; `visible' -- all visible frames; 0 -- all frames on the current terminal; - t -- all frames; - other non-nil values -- use the selected frame. + A frame -- that frame only; + Any other non-nil value -- the selected frame; + nil -- do not search any frames (equivalent to omitting the entry). -If ALIST contains a non-nil `ignore-current-tab' entry, then the buffers -of the current tab are skipped when searching for a reusable tab. -Otherwise, prefer buffers of the current tab. +\(Note that the meaning of nil is different to the typical meaning of +nil for a `reusable-frames' entry in a buffer display action alist.) + +If ALIST contains a non-nil `ignore-current-tab' entry then skip the +current tab when searching for a reusable tab, otherwise prefer the +current tab if it already displays BUFFER. + +If a window displaying BUFFER is located in any reusable tab, select +that tab and window. + +If no such window is located, display BUFFER in a new or existing tab +based on the ALIST entry `tab-name' (string or function). If a tab with +this name already exists then select that tab, otherwise create a new +tab with this name. If `tab-name' is a function it is called with two +arguments (BUFFER and ALIST) and should return the tab name. If +`tab-name' is omitted or nil, create a new tab without an explicit name. + +If a new tab is created and ALIST contains a non-nil `tab-group' entry +\(string or function), this defines the tab group, overriding user +option `tab-bar-new-tab-group'. + +To create a new tab unconditionally, use `display-buffer-in-new-tab' +instead. This is an action function for buffer display, see Info node `(elisp) Buffer Display Action Functions'. It should be @@ -2963,16 +3067,17 @@ ALIST is an association list of action symbols and values. See Info node `(elisp) Buffer Display Action Alists' for details of such alists. -Like `display-buffer-in-tab', but always creates a new tab unconditionally, -without checking if a suitable tab already exists. +If ALIST contains a non-nil `tab-name' entry (string or function) then +display BUFFER in a new tab with this name. If `tab-name' is a function +it is called with two arguments (BUFFER and ALIST) and should return the +tab name. If `tab-name' is omitted or nil, create a new tab without an +explicit name. -If ALIST contains a `tab-name' entry, it creates a new tab with that name -and displays BUFFER in a new tab. The `tab-name' entry can be a function, -in which case it is called with two arguments: BUFFER and ALIST, and should -return the tab name. When a `tab-name' entry is omitted, create a new tab -without an explicit name. +If ALIST contains a non-nil `tab-group' entry (string or function), this +defines the tab group, overriding user option `tab-bar-new-tab-group'. -The ALIST entry `tab-group' (string or function) defines the tab group. +To check for a suitable existing tab to reuse before creating a new tab, +use `display-buffer-in-tab' instead. This is an action function for buffer display, see Info node `(elisp) Buffer Display Action Functions'. It should be diff --git a/lisp/tab-line.el b/lisp/tab-line.el index fbf7f79eda8..832b2b74437 100644 --- a/lisp/tab-line.el +++ b/lisp/tab-line.el @@ -1,6 +1,6 @@ ;;; tab-line.el --- window-local tabs with window buffers -*- lexical-binding: t; -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Juri Linkov ;; Keywords: windows tabs @@ -62,20 +62,26 @@ is selected." (defface tab-line-tab '((default :inherit tab-line) - (((class color) (min-colors 88)) + (((class color) (min-colors 88) (background light)) :box (:line-width 1 :style released-button)) + (((class color) (min-colors 88) (background dark)) + :box (:line-width 1 :style released-button) + :background "grey40" + :foreground "white") (t :inverse-video nil)) "Tab line face for selected tab." - :version "27.1" + :version "31.1" :group 'tab-line-faces) (defface tab-line-tab-inactive '((default :inherit tab-line-tab) - (((class color) (min-colors 88)) + (((class color) (min-colors 88) (background light)) :background "grey75") + (((class color) (min-colors 88) (background dark)) + :background "grey20") (t :inverse-video t)) "Tab line face for non-selected tab." - :version "27.1" + :version "31.1" :group 'tab-line-faces) (defface tab-line-tab-inactive-alternate @@ -115,20 +121,26 @@ function `tab-line-tab-face-group'." (defface tab-line-tab-current '((default :inherit tab-line-tab) - (((class color) (min-colors 88)) - :background "grey85")) + (((class color) (min-colors 88) (background light)) + :background "grey85") + (((class color) (min-colors 88) (background dark)) + :background "grey40")) "Tab line face for tab with current buffer in selected window." - :version "27.1" + :version "31.1" :group 'tab-line-faces) (defface tab-line-highlight - '((((class color) (min-colors 88)) + '((((class color) (min-colors 88) (background light)) :box (:line-width 1 :style released-button) :background "grey85" :foreground "black") + (((class color) (min-colors 88) (background dark)) + :box (:line-width 1 :style released-button) + :background "grey40" + :foreground "white") (t :inverse-video nil)) "Tab line face for highlighting." - :version "27.1" + :version "31.1" :group 'tab-line-faces) (defface tab-line-close-highlight diff --git a/lisp/tabify.el b/lisp/tabify.el index cfac05cd4e3..b38afda46cc 100644 --- a/lisp/tabify.el +++ b/lisp/tabify.el @@ -1,6 +1,6 @@ ;;; tabify.el --- tab conversion commands for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1994, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/talk.el b/lisp/talk.el index 2dc82e27a53..43b6eda562b 100644 --- a/lisp/talk.el +++ b/lisp/talk.el @@ -1,6 +1,6 @@ ;;; talk.el --- allow several users to talk to each other through Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: comm, frames diff --git a/lisp/tar-mode.el b/lisp/tar-mode.el index 3b9898bd2f4..8cad7472089 100644 --- a/lisp/tar-mode.el +++ b/lisp/tar-mode.el @@ -1,6 +1,6 @@ ;;; tar-mode.el --- simple editing of tar files from GNU Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1990-1991, 1993-2025 Free Software Foundation, Inc. +;; Copyright (C) 1990-1991, 1993-2026 Free Software Foundation, Inc. ;; Author: Jamie Zawinski ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/tempo.el b/lisp/tempo.el index 9849fe12711..4ec0a6957a2 100644 --- a/lisp/tempo.el +++ b/lisp/tempo.el @@ -1,6 +1,6 @@ ;;; tempo.el --- Flexible template insertion -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1995, 2001-2026 Free Software Foundation, Inc. ;; Author: David Kågedal ;; Created: 16 Feb 1994 diff --git a/lisp/term.el b/lisp/term.el index 98c136ce8a4..9ac77730350 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -1,6 +1,6 @@ ;;; term.el --- general command interpreter in a window stuff -*- lexical-binding: t -*- -;; Copyright (C) 1988, 1990, 1992, 1994-1995, 2001-2025 Free Software +;; Copyright (C) 1988, 1990, 1992, 1994-1995, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Per Bothner @@ -1009,9 +1009,11 @@ For custom keybindings purposes please note there is also ["Paging" term-pager-toggle :style toggle :selected term-pager-count :help "Toggle paging feature"])) +(defvar term--buffers-changed nil) + (defun term--update-term-menu (&optional force) (when (and (lookup-key term-mode-map [menu-bar terminal]) - (or force (frame-or-buffer-changed-p))) + (or force (frame-or-buffer-changed-p 'term--buffers-changed))) (let ((buffer-list (match-buffers '(derived-mode . term-mode)))) (easy-menu-change nil diff --git a/lisp/term/AT386.el b/lisp/term/AT386.el index d7af9bad68a..e3498a9d055 100644 --- a/lisp/term/AT386.el +++ b/lisp/term/AT386.el @@ -1,6 +1,6 @@ ;;; AT386.el --- terminal support package for IBM AT keyboards -*- lexical-binding: t -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Author: Eric S. Raymond ;; Keywords: terminals diff --git a/lisp/term/README b/lisp/term/README index aae1b9a9e6d..9d44fa9d52f 100644 --- a/lisp/term/README +++ b/lisp/term/README @@ -1,4 +1,4 @@ -Copyright (C) 1993, 2001-2025 Free Software Foundation, Inc. +Copyright (C) 1993, 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/lisp/term/android-win.el b/lisp/term/android-win.el index 8e58f8911a0..6d06ef796db 100644 --- a/lisp/term/android-win.el +++ b/lisp/term/android-win.el @@ -1,6 +1,6 @@ ;;; android-win.el --- terminal set up for Android -*- lexical-binding:t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals, i18n, android diff --git a/lisp/term/common-win.el b/lisp/term/common-win.el index 40cd4bc6a7b..a806a98b6ed 100644 --- a/lisp/term/common-win.el +++ b/lisp/term/common-win.el @@ -1,6 +1,6 @@ ;;; common-win.el --- common part of handling window systems -*- lexical-binding: t; -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: terminals diff --git a/lisp/term/fbterm.el b/lisp/term/fbterm.el index ae48be96aa3..817ef71353f 100644 --- a/lisp/term/fbterm.el +++ b/lisp/term/fbterm.el @@ -1,6 +1,6 @@ ;;; fbterm.el -*- lexical-binding:t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Note that, in some versions of fbterm, the TERM environment ;; variable is set to "linux". When that's the case, the code below diff --git a/lisp/term/haiku-win.el b/lisp/term/haiku-win.el index 047759592b7..b4e3e931057 100644 --- a/lisp/term/haiku-win.el +++ b/lisp/term/haiku-win.el @@ -1,6 +1,6 @@ ;;; haiku-win.el --- set up windowing on Haiku -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/term/internal.el b/lisp/term/internal.el index 16bd8252ed9..58c179ed1b5 100644 --- a/lisp/term/internal.el +++ b/lisp/term/internal.el @@ -1,6 +1,6 @@ ;;; internal.el --- support for PC internal terminal -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 1998-1999, 2001-2025 Free Software +;; Copyright (C) 1993-1994, 1998-1999, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Morten Welinder diff --git a/lisp/term/iris-ansi.el b/lisp/term/iris-ansi.el index 15257f7e0c3..9a3b35b1a34 100644 --- a/lisp/term/iris-ansi.el +++ b/lisp/term/iris-ansi.el @@ -1,6 +1,6 @@ ;;; iris-ansi.el --- configure Emacs for SGI xwsh and winterm apps -*- lexical-binding: t -*- -;; Copyright (C) 1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Dan Nicolaescu diff --git a/lisp/term/konsole.el b/lisp/term/konsole.el index 2707047ffa3..fada9663bc4 100644 --- a/lisp/term/konsole.el +++ b/lisp/term/konsole.el @@ -1,5 +1,5 @@ ;;; konsole.el --- terminal initialization for konsole -*- lexical-binding:t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. (require 'term/xterm) diff --git a/lisp/term/news.el b/lisp/term/news.el index 9019cbbe0d6..906b957ac98 100644 --- a/lisp/term/news.el +++ b/lisp/term/news.el @@ -1,6 +1,6 @@ ;;; news.el --- keypad and function key bindings for the Sony NEWS keyboard -*- lexical-binding: t -*- -;; Copyright (C) 1989, 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index e5f239b94e3..f78e75b743e 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -1,6 +1,6 @@ ;;; ns-win.el --- lisp side of interface with NeXT/Open/GNUstep/macOS window system -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 2005-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2005-2026 Free Software Foundation, Inc. ;; Authors: Carl Edman ;; Christian Limpach diff --git a/lisp/term/pc-win.el b/lisp/term/pc-win.el index c42a259d6bf..d3cbd060a7e 100644 --- a/lisp/term/pc-win.el +++ b/lisp/term/pc-win.el @@ -1,6 +1,6 @@ ;;; pc-win.el --- setup support for `PC windows' (whatever that is) -*- lexical-binding:t -*- -;; Copyright (C) 1994, 1996-1997, 1999, 2001-2025 Free Software +;; Copyright (C) 1994, 1996-1997, 1999, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Morten Welinder diff --git a/lisp/term/pgtk-win.el b/lisp/term/pgtk-win.el index b445eaf96b6..abf3ab0951e 100644 --- a/lisp/term/pgtk-win.el +++ b/lisp/term/pgtk-win.el @@ -1,6 +1,6 @@ ;;; pgtk-win.el --- parse relevant switches and set up for Pure-GTK -*- lexical-binding: t -*- -;; Copyright (C) 1995, 2001-2020, 2022-2025 Free Software Foundation, +;; Copyright (C) 1995, 2001-2020, 2022-2026 Free Software Foundation, ;; Inc. ;; Author: FSF diff --git a/lisp/term/rxvt.el b/lisp/term/rxvt.el index 5be8913156e..4bf845e86bd 100644 --- a/lisp/term/rxvt.el +++ b/lisp/term/rxvt.el @@ -1,6 +1,6 @@ ;;; rxvt.el --- define function key sequences and standard colors for rxvt -*- lexical-binding: t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Eli Zaretskii ;; Keywords: terminals diff --git a/lisp/term/screen.el b/lisp/term/screen.el index d9462b9969b..cf4d71d890e 100644 --- a/lisp/term/screen.el +++ b/lisp/term/screen.el @@ -1,5 +1,5 @@ ;;; screen.el --- terminal initialization for screen and tmux -*- lexical-binding: t -*- -;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc. (require 'term/xterm) diff --git a/lisp/term/st.el b/lisp/term/st.el index d547d135b50..fde41de4a2b 100644 --- a/lisp/term/st.el +++ b/lisp/term/st.el @@ -1,6 +1,6 @@ ;;; st.el --- terminal initialization for st -*- lexical-binding:t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;;; Commentary: diff --git a/lisp/term/sun.el b/lisp/term/sun.el index 6b8857be3d7..ce4ffbead2d 100644 --- a/lisp/term/sun.el +++ b/lisp/term/sun.el @@ -1,6 +1,6 @@ ;;; sun.el --- keybinding for standard default sunterm keys -*- lexical-binding: t -*- -;; Copyright (C) 1987, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1987, 2001-2026 Free Software Foundation, Inc. ;; Author: Jeff Peck ;; Keywords: terminals diff --git a/lisp/term/tmux.el b/lisp/term/tmux.el index f80a6898232..43d64311d4e 100644 --- a/lisp/term/tmux.el +++ b/lisp/term/tmux.el @@ -1,5 +1,5 @@ ;;; tmux.el --- terminal initialization for tmux -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. (require 'term/xterm) diff --git a/lisp/term/tty-colors.el b/lisp/term/tty-colors.el index dfd207d71c1..183464befa5 100644 --- a/lisp/term/tty-colors.el +++ b/lisp/term/tty-colors.el @@ -1,6 +1,6 @@ ;;; tty-colors.el --- color support for character terminals -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Eli Zaretskii ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/term/tvi970.el b/lisp/term/tvi970.el index 148299b6c5e..e3218182b57 100644 --- a/lisp/term/tvi970.el +++ b/lisp/term/tvi970.el @@ -1,6 +1,6 @@ ;;; tvi970.el --- terminal support for the Televideo 970 -*- lexical-binding: t -*- -;; Copyright (C) 1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 2001-2026 Free Software Foundation, Inc. ;; Author: Jim Blandy ;; Keywords: terminals diff --git a/lisp/term/vt100.el b/lisp/term/vt100.el index b87d008edb9..1fb39f1e468 100644 --- a/lisp/term/vt100.el +++ b/lisp/term/vt100.el @@ -1,6 +1,6 @@ ;;; vt100.el --- define VT100 function key sequences in function-key-map -*- lexical-binding:t -*- -;; Copyright (C) 1989, 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/w32-nt.el b/lisp/term/w32-nt.el index 83116419774..7a5ae5ed2b5 100644 --- a/lisp/term/w32-nt.el +++ b/lisp/term/w32-nt.el @@ -1,6 +1,6 @@ ;;; w32-nt.el --- MS-Windows native build specific definitions -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index a1959cd11be..385f488393d 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -1,6 +1,6 @@ ;;; w32-win.el --- parse switches controlling interface with W32 window system -*- lexical-binding: t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Kevin Gallo ;; Keywords: terminals diff --git a/lisp/term/w32console.el b/lisp/term/w32console.el index 1b44da48bf7..79b84a9f752 100644 --- a/lisp/term/w32console.el +++ b/lisp/term/w32console.el @@ -1,6 +1,6 @@ ;;; w32console.el --- Setup w32 console keys and colors. -*- lexical-binding: t; -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals diff --git a/lisp/term/wyse50.el b/lisp/term/wyse50.el index 875218d7269..9e2e093e89c 100644 --- a/lisp/term/wyse50.el +++ b/lisp/term/wyse50.el @@ -1,6 +1,6 @@ ;;; wyse50.el --- terminal support code for Wyse 50 -*- lexical-binding: t -*- -;; Copyright (C) 1989, 1993-1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1989, 1993-1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Daniel Pfeiffer , diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index afe02f4e2d3..7f03e9be585 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -1,6 +1,6 @@ ;;; x-win.el --- parse relevant switches and set up for X -*- lexical-binding:t -*- -;; Copyright (C) 1993-1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1993-1994, 2001-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals, i18n diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index 4f23a909b69..50135b104a0 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el @@ -1,6 +1,6 @@ ;;; xterm.el --- define function key sequences and standard colors for xterm -*- lexical-binding: t -*- -;; Copyright (C) 1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2001-2026 Free Software Foundation, Inc. ;; Author: FSF ;; Keywords: terminals @@ -80,6 +80,26 @@ capabilities, and only when that terminal understands bracketed paste." :version "28.1" :type 'boolean) +(defcustom xterm-update-cursor nil + "Whether to try to update cursor appearance on text terminals. +This works only for Xterm-compatible text terminals. + +If set to t all supported attributes of the cursor are updated. +If set to `type' only the cursor type is updated. This uses the CSI +DECSCUSR escape sequence. +If set to `color' only the cursor color is updated. This uses the OSC +12 and OSC 112 escape sequences." + :version "31.1" + :type '(radio (const :tag "Do not update" nil) + (const :tag "Update" t) + (const :tag "Update type only" type) + (const :tag "Update color only" color))) + +;; MacOS Terminal.app does not handle OSC 112 if it is terminated with +;; \e\\. It only handles OSC 112 if it is terminated by \a. +(defconst xterm--reset-cursor-color-escape-sequence "\e]112\a" + "OSC 112 escape sequence to reset cursor color to terminal default.") + (defconst xterm-paste-ending-sequence "\e[201~" "Characters sent by the terminal to end a bracketed paste.") @@ -89,7 +109,8 @@ capabilities, and only when that terminal understands bracketed paste." "WezTerm" ;; "XTerm" ;Disabled because OSC52 support is opt-in only. "iTerm2" ;OSC52 support has opt-in/out UI on first usage - "kitty") + "kitty" + "foot") word-end) "Regexp for terminals that automatically enable `xterm-mouse-mode' at startup. This will get matched against the terminal's XTVERSION string. @@ -746,20 +767,22 @@ Return the pasted text as a string." (let ((str (xterm--read-string ?\e ?\\))) (when (string-match "rgb:\\([a-f0-9]+\\)/\\([a-f0-9]+\\)/\\([a-f0-9]+\\)" str) - (let ((recompute-faces - (xterm-maybe-set-dark-background-mode - (string-to-number (match-string 1 str) 16) - (string-to-number (match-string 2 str) 16) - (string-to-number (match-string 3 str) 16)))) + (set-terminal-parameter + nil 'xterm--background-color + (list (string-to-number (match-string 1 str) 16) + (string-to-number (match-string 2 str) 16) + (string-to-number (match-string 3 str) 16)))))) - ;; Recompute faces here in case the background mode was - ;; set to dark. We used to call - ;; `tty-set-up-initial-frame-faces' only once, but that - ;; caused the light background faces to be computed - ;; incorrectly. See: - ;; https://lists.gnu.org/r/emacs-devel/2010-01/msg00439.html - (when recompute-faces - (tty-set-up-initial-frame-faces)))))) +(defun xterm--report-foreground-handler () + ;; The reply is similar to in `xterm--report-background-handler'. + (let ((str (xterm--read-string ?\e ?\\))) + (when (string-match + "rgb:\\([a-f0-9]+\\)/\\([a-f0-9]+\\)/\\([a-f0-9]+\\)" str) + (set-terminal-parameter + nil 'xterm--foreground-color + (list (string-to-number (match-string 1 str) 16) + (string-to-number (match-string 2 str) 16) + (string-to-number (match-string 3 str) 16)))))) (defun xterm--version-handler () ;; The reply should be: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c @@ -784,7 +807,9 @@ Return the pasted text as a string." ;; Gnome terminal 3.38.0 reports 65;6200;1. (when (> version 4000) (xterm--query "\e]11;?\e\\" - '(("\e]11;" . xterm--report-background-handler)))) + '(("\e]11;" . xterm--report-background-handler))) + (xterm--query "\e]10;?\e\\" + '(("\e]10;" . xterm--report-foreground-handler)))) (setq version 200)) (when (equal (match-string 1 str) "83") ;; `screen' (which returns 83;40003;0) seems to also lack support for @@ -798,7 +823,9 @@ Return the pasted text as a string." ;; versions do too...) (when (>= version 242) (xterm--query "\e]11;?\e\\" - '(("\e]11;" . xterm--report-background-handler)))) + '(("\e]11;" . xterm--report-background-handler))) + (xterm--query "\e]10;?\e\\" + '(("\e]10;" . xterm--report-foreground-handler)))) ;; If version is 216 (the version when modifyOtherKeys was ;; introduced) or higher, initialize the @@ -816,6 +843,16 @@ Return the pasted text as a string." ;;(xterm--init-activate-get-selection) (xterm--init-activate-set-selection)))))) +(defun xterm--primary-da-handler () + ;; The reply should be: \e [ ? NUMBER1 ; ... ; NUMBER_N c + (let ((str (xterm--read-string ?c))) + (when (member "52" (split-string str ";" t)) + ;; Many modern terminals include 52 in their primary DA response, + ;; to indicate support for *writing* to the OS clipboard. The + ;; specification does not guarantee the clipboard can be read. See + ;; https://github.com/contour-terminal/vt-extensions/blob/master/clipboard-extension.md + (xterm--init-activate-set-selection)))) + (defvar xterm-query-timeout 2 "Seconds to wait for an answer from the terminal. Can be nil to mean \"no timeout\".") @@ -942,18 +979,20 @@ We run the first FUNCTION whose STRING matches the input events." (tty-set-up-initial-frame-faces) (if (eq xterm-extra-capabilities 'check) - ;; Try to find out the type of terminal by sending a "Secondary - ;; Device Attributes (DA)" query. - (xterm--query "\e[>0c" - ;; Some terminals (like macOS's Terminal.app) respond to - ;; this query as if it were a "Primary Device Attributes" - ;; query instead, so we should handle that too. - '(("\e[?" . xterm--version-handler) - ("\e[>" . xterm--version-handler))) + (progn + ;; Try to find out the type of terminal by sending a "Secondary + ;; Device Attributes (DA)" query. + (xterm--query "\e[>0c" + '(("\e[>" . xterm--version-handler))) + ;; Check primary DA for OSC-52 support + (xterm--query "\e[c" + '(("\e[?" . xterm--primary-da-handler)))) (when (memq 'reportBackground xterm-extra-capabilities) (xterm--query "\e]11;?\e\\" - '(("\e]11;" . xterm--report-background-handler)))) + '(("\e]11;" . xterm--report-background-handler))) + (xterm--query "\e]10;?\e\\" + '(("\e]10;" . xterm--report-foreground-handler)))) (when (memq 'modifyOtherKeys xterm-extra-capabilities) (xterm--init-modify-other-keys)) @@ -965,6 +1004,29 @@ We run the first FUNCTION whose STRING matches the input events." (when xterm-set-window-title (xterm--init-frame-title)) + (when xterm-update-cursor + (xterm--init-update-cursor)) + + (let ((bg-color (terminal-parameter nil 'xterm--background-color)) + (fg-color (terminal-parameter nil 'xterm--foreground-color))) + (when bg-color + (let ((recompute-faces + (apply #'xterm--set-background-mode bg-color))) + + ;; Recompute faces here in case the background mode was + ;; set to dark. We used to call + ;; `tty-set-up-initial-frame-faces' only once, but that + ;; caused the light background faces to be computed + ;; incorrectly. See: + ;; https://lists.gnu.org/r/emacs-devel/2010-01/msg00439.html + (when recompute-faces + (tty-set-up-initial-frame-faces)))) + (when (or bg-color fg-color) + (add-hook 'after-make-frame-functions 'xterm--maybe-update-default-face) + ;; Manually update, after-make-frame-functions was already called + ;; for initial frame. + (xterm--maybe-update-default-face (selected-frame)))) + (when (and (not xterm-mouse-mode-called) ;; Only automatically enable xterm mouse on terminals ;; confirmed to still support all critical editing @@ -981,6 +1043,16 @@ We run the first FUNCTION whose STRING matches the input events." ;; We likewise unconditionally enable support for focus tracking. (xterm--init-focus-tracking)) +(defun xterm--post-command-hook () + "Hook for xterm features that need to be frequently updated." + (unless (display-graphic-p) + (when xterm-set-window-title + (xterm-set-window-title)) + (when (memq xterm-update-cursor '(t type)) + (xterm--update-cursor-type)) + (when (memq xterm-update-cursor '(t color)) + (xterm--update-cursor-color)))) + (defun terminal-init-xterm () "Terminal initialization function for xterm." (unwind-protect @@ -1023,7 +1095,7 @@ We run the first FUNCTION whose STRING matches the input events." (xterm-set-window-title) (add-hook 'after-make-frame-functions 'xterm-set-window-title-flag) (add-hook 'window-configuration-change-hook 'xterm-unset-window-title-flag) - (add-hook 'post-command-hook 'xterm-set-window-title) + (add-hook 'post-command-hook 'xterm--post-command-hook) (add-hook 'minibuffer-exit-hook 'xterm-set-window-title)) (defvar xterm-window-title-flag nil @@ -1229,12 +1301,103 @@ versions of xterm." ;; right colors, so clear them. (clear-face-cache))) -(defun xterm-maybe-set-dark-background-mode (redc greenc bluec) +(defun xterm--set-background-mode (redc greenc bluec) ;; Use the heuristic in `frame-set-background-mode' to decide if a ;; frame is dark. - (when (< (+ redc greenc bluec) (* .6 (+ 65535 65535 65535))) - (set-terminal-parameter nil 'background-mode 'dark) - t)) + (set-terminal-parameter + nil 'background-mode + (if (< (+ redc greenc bluec) (* .6 (+ 65535 65535 65535))) + 'dark + 'light))) + +(defun xterm--maybe-update-default-face (frame) + (let ((bg-color (terminal-parameter (frame-terminal frame) + 'xterm--background-color)) + (fg-color (terminal-parameter (frame-terminal frame) + 'xterm--foreground-color)) + (default-bg (face-attribute 'default :background frame)) + (default-fg (face-attribute 'default :foreground frame))) + (when (and bg-color (string-equal default-bg "unspecified-bg")) + (let ((r (car bg-color)) + (g (cadr bg-color)) + (b (caddr bg-color))) + (set-face-background 'default (format "#%04x%04x%04x" r g b) frame))) + (when (and fg-color (string-equal default-fg "unspecified-fg")) + (let ((r (car fg-color)) + (g (cadr fg-color)) + (b (caddr fg-color))) + (set-face-foreground 'default (format "#%04x%04x%04x" r g b) frame))))) + +(defun xterm--init-update-cursor () + "Register hooks to run `xterm--update-cursor-type' appropriately." + (when (memq xterm-update-cursor '(color t)) + (push xterm--reset-cursor-color-escape-sequence + (terminal-parameter nil 'tty-mode-reset-strings)) + ;; No need to set `tty-mode-set-strings' because + ;; `xterm--post-command-hook' handles restoring the cursor color. + + (xterm--update-cursor-color)) + (when (memq xterm-update-cursor '(type t)) + (xterm--update-cursor-type)) + (add-hook 'post-command-hook 'xterm--post-command-hook)) + +(defconst xterm--cursor-type-to-int + '(nil 0 + box 1 + hollow 1 + bar 5 + hbar 3) + "Mapping of cursor type symbols to control sequence integers. +Cursor type symbols are the same as for `cursor-type'.") + +(defun xterm--set-cursor-type (terminal type) + (let ((type-int (or (plist-get xterm--cursor-type-to-int type) 1)) + (old (terminal-parameter terminal 'xterm--cursor-style))) + (when old + (set-terminal-parameter + terminal + 'tty-mode-set-strings + (delete (format "\e[%d q" old) + (terminal-parameter terminal 'tty-mode-set-strings)))) + (let ((set-string (format "\e[%d q" type-int))) + (push set-string (terminal-parameter terminal 'tty-mode-set-strings)) + (send-string-to-terminal set-string terminal)) + (unless old + ;; Assume that the default cursor is appropriate when exiting Emacs. + (push "\e[0 q" (terminal-parameter terminal 'tty-mode-reset-strings))) + (set-terminal-parameter terminal 'xterm--cursor-type type-int))) + +(defun xterm--update-cursor-type () + "Update the cursor type for Xterm-compatible terminals. +This updates the selected frame's terminal based on `cursor-type'." + (let ((buffer-cursor cursor-type) + (window-cursor (window-cursor-type)) + (frame-cursor (frame-parameter nil 'cursor-type)) + type) + ;; All of them can be conses, in which case the type symbol is the car. + (when (consp buffer-cursor) (setf buffer-cursor (car buffer-cursor))) + (when (consp window-cursor) (setf window-cursor (car window-cursor))) + (when (consp frame-cursor) (setf frame-cursor (car frame-cursor))) + (cond ((not (eq window-cursor t)) + (setf type window-cursor)) + ((not (eq buffer-cursor t)) + (setf type buffer-cursor)) + (t + (setf type frame-cursor))) + (xterm--set-cursor-type nil type))) + +(defun xterm--update-cursor-color () + "Update the cursor color for Xterm-compatible terminals. +This updates the selected frame's terminal based on the face `cursor'." + (if-let* ((color (color-values (face-background 'cursor))) + (r (nth 0 color)) + (g (nth 1 color)) + (b (nth 2 color))) + (send-string-to-terminal (format "\e]12;rgb:%04x/%04x/%04x\e\\" r g b)) + ;; The background is `unspecified' or one of its variants. We don't + ;; know the right cursor color to use, so fall back to the terminal + ;; default. + (send-string-to-terminal xterm--reset-cursor-color-escape-sequence))) (provide 'xterm) ;Backward compatibility. (provide 'term/xterm) diff --git a/lisp/textmodes/artist.el b/lisp/textmodes/artist.el index 3184407c7f0..f01e636e981 100644 --- a/lisp/textmodes/artist.el +++ b/lisp/textmodes/artist.el @@ -1,6 +1,6 @@ ;;; artist.el --- draw ascii graphics with your mouse -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Tomas Abrahamsson ;; Keywords: mouse diff --git a/lisp/textmodes/bib-mode.el b/lisp/textmodes/bib-mode.el index ac1895ee314..9d0d02f7df2 100644 --- a/lisp/textmodes/bib-mode.el +++ b/lisp/textmodes/bib-mode.el @@ -1,6 +1,6 @@ ;;; bib-mode.el --- major mode for editing bib files -*- lexical-binding: t -*- -;; Copyright (C) 1989, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 2001-2026 Free Software Foundation, Inc. ;; Author: Henry Kautz ;; (according to authors.el) diff --git a/lisp/textmodes/bibtex-style.el b/lisp/textmodes/bibtex-style.el index 4b9b4ba8cd9..8830ecd5369 100644 --- a/lisp/textmodes/bibtex-style.el +++ b/lisp/textmodes/bibtex-style.el @@ -1,6 +1,6 @@ ;;; bibtex-style.el --- Major mode for BibTeX Style files -*- lexical-binding: t -*- -;; Copyright (C) 2005, 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2005, 2007-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: tex diff --git a/lisp/textmodes/bibtex.el b/lisp/textmodes/bibtex.el index cd18a54103f..e5da01b38e6 100644 --- a/lisp/textmodes/bibtex.el +++ b/lisp/textmodes/bibtex.el @@ -1,6 +1,6 @@ ;;; bibtex.el --- BibTeX mode for GNU Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: Stefan Schoef ;; Bengt Martensson diff --git a/lisp/textmodes/conf-mode.el b/lisp/textmodes/conf-mode.el index 246761c332e..da02ab8ff92 100644 --- a/lisp/textmodes/conf-mode.el +++ b/lisp/textmodes/conf-mode.el @@ -1,6 +1,6 @@ ;;; conf-mode.el --- Simple major mode for editing conf/ini/properties files -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Keywords: conf ini windows java diff --git a/lisp/textmodes/css-mode.el b/lisp/textmodes/css-mode.el index a83dc28dc15..a56fc018e18 100644 --- a/lisp/textmodes/css-mode.el +++ b/lisp/textmodes/css-mode.el @@ -1,6 +1,6 @@ ;;; css-mode.el --- Major mode to edit CSS files -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Maintainer: Simen Heggestøyl diff --git a/lisp/textmodes/dns-mode.el b/lisp/textmodes/dns-mode.el index 5e0d47120d8..6fb3106b375 100644 --- a/lisp/textmodes/dns-mode.el +++ b/lisp/textmodes/dns-mode.el @@ -1,6 +1,6 @@ ;;; dns-mode.el --- a mode for viewing/editing Domain Name System master files -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: DNS master zone file SOA comm diff --git a/lisp/textmodes/emacs-authors-mode.el b/lisp/textmodes/emacs-authors-mode.el index 7ddbcae6d5a..6beecd89ec9 100644 --- a/lisp/textmodes/emacs-authors-mode.el +++ b/lisp/textmodes/emacs-authors-mode.el @@ -1,6 +1,6 @@ ;;; emacs-authors-mode.el --- font-locking for etc/AUTHORS -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Stefan Kangas ;; Keywords: internal diff --git a/lisp/textmodes/emacs-news-mode.el b/lisp/textmodes/emacs-news-mode.el index 32a8a224df7..511e6f4a669 100644 --- a/lisp/textmodes/emacs-news-mode.el +++ b/lisp/textmodes/emacs-news-mode.el @@ -1,6 +1,6 @@ ;;; emacs-news-mode.el --- major mode to edit and view the NEWS file -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Keywords: tools @@ -23,7 +23,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) (require 'outline) (require 'subr-x) ; `emacs-etc--hide-local-variables' diff --git a/lisp/textmodes/enriched.el b/lisp/textmodes/enriched.el index 3e3cb1dcf9c..a269cae0c9b 100644 --- a/lisp/textmodes/enriched.el +++ b/lisp/textmodes/enriched.el @@ -1,6 +1,6 @@ ;;; enriched.el --- read and save files in text/enriched format -*- lexical-binding: t; -*- -;; Copyright (C) 1994-1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Boris Goldowsky ;; Keywords: text, faces diff --git a/lisp/textmodes/fill.el b/lisp/textmodes/fill.el index 59b26068278..25a3ff54792 100644 --- a/lisp/textmodes/fill.el +++ b/lisp/textmodes/fill.el @@ -1,6 +1,6 @@ ;;; fill.el --- fill commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1986, 1992, 1994-1997, 1999, 2001-2025 Free +;; Copyright (C) 1985-1986, 1992, 1994-1997, 1999, 2001-2026 Free ;; Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index ac8061e65dd..734eeaedaa2 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -1,6 +1,6 @@ ;;; flyspell.el --- On-the-fly spell checker -*- lexical-binding:t -*- -;; Copyright (C) 1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Manuel Serrano ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/glyphless-mode.el b/lisp/textmodes/glyphless-mode.el index 774ee1a7b08..eed6ea997f4 100644 --- a/lisp/textmodes/glyphless-mode.el +++ b/lisp/textmodes/glyphless-mode.el @@ -1,6 +1,6 @@ ;;; glyphless-mode.el --- minor mode for displaying glyphless characters -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/html-ts-mode.el b/lisp/textmodes/html-ts-mode.el index 12ab735171d..7061609fb83 100644 --- a/lisp/textmodes/html-ts-mode.el +++ b/lisp/textmodes/html-ts-mode.el @@ -1,6 +1,6 @@ ;;; html-ts-mode.el --- tree-sitter support for HTML -*- lexical-binding: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author : Theodor Thornhill ;; Maintainer : Theodor Thornhill @@ -145,6 +145,21 @@ Return nil if there is no name or if NODE is not a defun node." (skip-chars-backward " \t\n") (pos-bol))))) +(defun html-ts-mode--show-paren-data () + ;; Exclude unbalanced tags when the closing tag is missing. + (let ((default (treesit-show-paren-data))) + (when (= (length default) 4) + (let ((pos1 (min (nth 0 default) (nth 2 default))) + (pos2 (max (nth 0 default) (nth 2 default)))) + (when (and (equal (treesit-node-type + (treesit-node-at pos1)) + "<") + (not (equal (treesit-node-type + (treesit-node-at pos2)) + " @@ -164,6 +164,16 @@ may produce undesired results." Uses `query-replace' (\\[query-replace]) for corrections." :type 'boolean) +(defcustom ispell-save-corrections-as-abbrevs nil + "Whether to save spelling corrections as abbrevs by default. +Determines the default behavior of Ispell after correcting a misspelled +word. Non-nil means to save a global abbrev that expands the misspelled +word to its correction. This behavior may be toggled on a per-word +basis by typing \\`C-u' immediately before selecting a replacement in +the Ispell command loop." + :type 'boolean + :version "31.1") + (defcustom ispell-skip-tib nil "Does not spell check `tib' bibliography references when non-nil. Skips any text between strings matching regular expressions @@ -1821,6 +1831,28 @@ Only works for Aspell and Enchant." (and (or ispell-really-aspell ispell-really-enchant) (ispell-send-string (concat "$$ra " misspelled "," replacement "\n")))) +(defvar ispell--abbrev-saving-allowed nil + "Non-nil means the current `ispell-command-loop' supports abbrev saving. +Dynamically bound around calls to `ispell-command-loop' for which it +makes sense to allow abbrev saving. This includes calls from functions +like `ispell-word' and `ispell-region', but excludes calls from +functions like `ispell-complete-word'.") + +(defvar ispell--save-correction-as-abbrev nil + "Non-nil means save the current correction as an abbrev. +Dynamically bound to the value of `ispell-save-corrections-as-abbrevs' +around calls to `ispell-command-loop'. The command loop can toggle +this, via `C-u', to control abbrev saving for an immediately subsequent +replacement command (a selection from the suggestion list, or +\\`r'/\\`R').") + +(defun ispell--maybe-save-correction-abbrev (misspelled replacement) + "Save MISSPELLED -> REPLACEMENT as an abbrev, if enabled. +This is controlled by the variable `ispell--save-correction-as-abbrev'." + (require 'abbrev) + (when ispell--save-correction-as-abbrev + (define-abbrev global-abbrev-table misspelled replacement) + (message "\"%s\" now expands to \"%s\" globally" misspelled replacement))) (defun ispell-send-string (string) "Send the string STRING to the Ispell process." @@ -1971,38 +2003,42 @@ quit spell session exited." (message "%s is incorrect" (funcall ispell-format-word-function word)))) (t ; prompt for correct word. - (save-window-excursion - (setq replace (ispell-command-loop - (car (cdr (cdr poss))) - (car (cdr (cdr (cdr poss)))) - (car poss) start end))) - (cond ((equal 0 replace) - (ispell-add-per-file-word-list (car poss))) - (replace - (setq new-word (if (atom replace) replace (car replace)) - cursor-location (+ (- (length word) (- end start)) - cursor-location)) - (if (not (equal new-word (car poss))) - (progn - (goto-char start) - ;; Insert first and then delete, - ;; to avoid collapsing markers before and after - ;; into a single place. - (insert new-word) - (delete-region (point) end) - ;; It is meaningless to preserve the cursor position - ;; inside a word that has changed. - (setq cursor-location (point)) - (setq end (point)))) - (if (not (atom replace)) ;recheck spelling of replacement - (progn - (if (car (cdr replace)) ; query replace requested - (save-window-excursion - (query-replace word new-word t))) - (goto-char start) - ;; single word could be split into multiple words - (setq ispell-quit (not (ispell-region start end))) - )))) + (let ((ispell--abbrev-saving-allowed t) + (ispell--save-correction-as-abbrev + ispell-save-corrections-as-abbrevs)) + (save-window-excursion + (setq replace (ispell-command-loop + (car (cdr (cdr poss))) + (car (cdr (cdr (cdr poss)))) + (car poss) start end))) + (cond ((equal 0 replace) + (ispell-add-per-file-word-list (car poss))) + (replace + (setq new-word (if (atom replace) replace (car replace)) + cursor-location (+ (- (length word) (- end start)) + cursor-location)) + (ispell--maybe-save-correction-abbrev (car poss) new-word) + (if (not (equal new-word (car poss))) + (progn + (goto-char start) + ;; Insert first and then delete, + ;; to avoid collapsing markers before and after + ;; into a single place. + (insert new-word) + (delete-region (point) end) + ;; It is meaningless to preserve the cursor position + ;; inside a word that has changed. + (setq cursor-location (point)) + (setq end (point)))) + (if (not (atom replace)) ;recheck spelling of replacement + (progn + (if (car (cdr replace)) ; query replace requested + (save-window-excursion + (query-replace word new-word t))) + (goto-char start) + ;; single word could be split into multiple words + (setq ispell-quit (not (ispell-region start end))) + ))))) ;; keep if rechecking word and we keep choices win. (if (get-buffer ispell-choices-buffer) (kill-buffer ispell-choices-buffer)))) @@ -2167,9 +2203,12 @@ Global `ispell-quit' is set to start location to continue spell session." (choices miss) (window-min-height (min window-min-height ispell-choices-win-default-height)) - (command-characters '( ? ?i ?a ?A ?r ?R ?? ?x ?X ?q ?l ?u ?m )) + (command-characters + (append '( ? ?i ?a ?A ?r ?R ?? ?x ?X ?q ?l ?u ?m ) + (and ispell--abbrev-saving-allowed + '(?\C-u)))) (skipped 0) - char num result textwin) + char num result textwin abbrev-prefix) ;; setup the *Choices* buffer with valid data. (with-current-buffer (get-buffer-create ispell-choices-buffer) @@ -2235,8 +2274,14 @@ Global `ispell-quit' is set to start location to continue spell session." (progn (undo-boundary) (let (message-log-max) - (message (concat "C-h or ? for more options; SPC to leave " - "unchanged, Character to replace word"))) + (message + (concat + "C-h or ? for more options; SPC to leave " + "unchanged, Character to replace word" + (and ispell--abbrev-saving-allowed abbrev-prefix + (if ispell--save-correction-as-abbrev + " [won't save as abbrev]" + " [will save as abbrev]"))))) (let ((inhibit-quit t) (input-valid t)) (setq char nil skipped 0) @@ -2262,6 +2307,22 @@ Global `ispell-quit' is set to start location to continue spell session." (setq com-chars (cdr com-chars))) (setq num (- char ?0 skipped))) + (if (and abbrev-prefix + (or (memq char '(?r ?R)) + (and (>= num 0) (< num count)))) + ;; If the user typed `C-u' before this replacement + ;; command, then toggle abbrev saving for this + ;; correction. + (setq ispell--save-correction-as-abbrev + (not ispell--save-correction-as-abbrev) + abbrev-prefix nil) + ;; If the user typed `C-u' but not before a + ;; replacement command, then nullify the effect of + ;; `C-u' for subsequent commands. + (when (and abbrev-prefix + (not (= char ?\C-u))) + (setq abbrev-prefix nil))) + (cond ((= char ? ) nil) ; accept word this time only ((= char ?i) ; accept and insert word into pers dict @@ -2419,6 +2480,9 @@ Global `ispell-quit' is set to start location to continue spell session." ((= char ?\C-z) (funcall (key-binding "\C-z")) t) + ((and (= char ?\C-u) ispell--abbrev-saving-allowed) + (setq abbrev-prefix (not abbrev-prefix)) + t) (t (ding) t)))))) result) ;; protected @@ -2463,6 +2527,7 @@ Selections are: \\`m' Place typed-in value in personal dictionary, then recheck current word. \\`C-l' Redraw screen. \\`C-r' Recursive edit. +\\`C-u' Toggle abbrev saving for an immediately subsequent replacement command. \\`C-z' Suspend Emacs or iconify frame." (if (equal ispell-help-in-bufferp 'electric) @@ -2497,6 +2562,7 @@ Selections are: \\`m' Place typed-in value in personal dictionary, then recheck current word. \\`C-l' Redraw screen. \\`C-r' Recursive edit. +\\`C-u' Toggle abbrev saving for an immediately subsequent replacement command. \\`C-z' Suspend Emacs or iconify frame.")) nil))) @@ -2506,12 +2572,14 @@ Selections are: (help-2 (concat "[l]ook a word up in alternate dictionary; " "e[x/X]it; [q]uit session")) (help-3 (concat "[u]ncapitalized insert into dict. " - "Type `x C-h f ispell-help' for more help"))) + (and ispell--abbrev-saving-allowed + "C-u toggles abbrev saving (next replacement)."))) + (help-4 (concat "Type `x C-h f ispell-help' for more help"))) (save-window-excursion (if ispell-help-in-bufferp (let ((buffer (get-buffer-create "*Ispell Help*"))) (with-current-buffer buffer - (insert (concat help-1 "\n" help-2 "\n" help-3))) + (insert (concat help-1 "\n" help-2 "\n" help-3 "\n" help-4))) (ispell-display-buffer buffer) (sit-for (max 0.5 ispell-help-timeout)) (kill-buffer "*Ispell Help*")) @@ -2522,7 +2590,7 @@ Selections are: (message nil) ;;(set-minibuffer-window (selected-window)) (enlarge-window 2) - (insert (concat help-1 "\n" help-2 "\n" help-3)) + (insert (concat help-1 "\n" help-2 "\n" help-3 "\n" help-4)) (sit-for (max 0.5 ispell-help-timeout))) (erase-buffer))))))) @@ -3505,7 +3573,9 @@ word that was queried about." (word-len (length (car poss))) (line-end (copy-marker ispell-end)) (line-start (copy-marker ispell-start)) - recheck-region replace) + recheck-region replace + (ispell--abbrev-saving-allowed t) + (ispell--save-correction-as-abbrev ispell-save-corrections-as-abbrevs)) (goto-char word-start) ;; Adjust the horizontal scroll & point (ispell-horiz-scroll) @@ -3573,11 +3643,13 @@ word that was queried about." (progn (insert replace) ; Insert dictionary word. (ispell-send-replacement (car poss) replace) + (ispell--maybe-save-correction-abbrev (car poss) replace) (setq accept-list (cons replace accept-list))) (let ((replace-word (car replace))) ;; Recheck hand entered replacement word. (insert replace-word) (ispell-send-replacement (car poss) replace-word) + (ispell--maybe-save-correction-abbrev (car poss) replace-word) (if (car (cdr replace)) (save-window-excursion (delete-other-windows) ; to correctly show help. diff --git a/lisp/textmodes/less-css-mode.el b/lisp/textmodes/less-css-mode.el index e8a1d6115a5..a1ea795df1a 100644 --- a/lisp/textmodes/less-css-mode.el +++ b/lisp/textmodes/less-css-mode.el @@ -1,6 +1,6 @@ ;;; less-css-mode.el --- Major mode for editing Less CSS files -*- lexical-binding: t; -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Steve Purcell ;; Maintainer: Simen Heggestøyl diff --git a/lisp/textmodes/makeinfo.el b/lisp/textmodes/makeinfo.el index 9c1d0c5223a..8b0d7f2a5c7 100644 --- a/lisp/textmodes/makeinfo.el +++ b/lisp/textmodes/makeinfo.el @@ -1,6 +1,6 @@ ;;; makeinfo.el --- run makeinfo conveniently -*- lexical-binding: t; -*- -;; Copyright (C) 1991, 1993, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1993, 2001-2026 Free Software Foundation, Inc. ;; Author: Robert J. Chassell ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/markdown-ts-mode.el b/lisp/textmodes/markdown-ts-mode.el index f2f82adfc0c..b8244a44801 100644 --- a/lisp/textmodes/markdown-ts-mode.el +++ b/lisp/textmodes/markdown-ts-mode.el @@ -1,6 +1,6 @@ ;;; markdown-ts-mode.el --- tree sitter support for Markdown -*- lexical-binding: t; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author : Rahul Martim Juliato ;; Maintainer : Rahul Martim Juliato @@ -293,7 +293,7 @@ the same features enabled in MODE." ;; FIXME: Kind of a hack here: we use this function as a hook for ;; loading up configs for the language for the code block on-demand. (let ((mode (alist-get lang markdown-ts-code-block-source-mode-map))) - ;; If there's no supported mode for the langauge, return nil, + ;; If there's no supported mode for the language, return nil, ;; which makes Emacs skip the code block. (if (not (and mode (fboundp mode))) nil diff --git a/lisp/textmodes/mhtml-mode.el b/lisp/textmodes/mhtml-mode.el index 6fc1c7c49fd..32ecf54a308 100644 --- a/lisp/textmodes/mhtml-mode.el +++ b/lisp/textmodes/mhtml-mode.el @@ -1,6 +1,6 @@ ;;; mhtml-mode.el --- HTML editing mode that handles CSS and JS -*- lexical-binding:t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Keywords: text, hypermedia, comm, languages diff --git a/lisp/textmodes/mhtml-ts-mode.el b/lisp/textmodes/mhtml-ts-mode.el index fe68f17a6da..08b93201690 100644 --- a/lisp/textmodes/mhtml-ts-mode.el +++ b/lisp/textmodes/mhtml-ts-mode.el @@ -1,6 +1,6 @@ ;;; mhtml-ts-mode.el --- Major mode for HTML using tree-sitter -*- lexical-binding: t; -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; Author: Vincenzo Pupillo ;; Maintainer: Vincenzo Pupillo diff --git a/lisp/textmodes/nroff-mode.el b/lisp/textmodes/nroff-mode.el index 11f58fd3aa3..ea857f3abfb 100644 --- a/lisp/textmodes/nroff-mode.el +++ b/lisp/textmodes/nroff-mode.el @@ -1,6 +1,6 @@ ;;; nroff-mode.el --- GNU Emacs major mode for editing nroff source -*- lexical-binding: t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: text diff --git a/lisp/textmodes/page-ext.el b/lisp/textmodes/page-ext.el index 002e50da5bd..be9381a893a 100644 --- a/lisp/textmodes/page-ext.el +++ b/lisp/textmodes/page-ext.el @@ -1,6 +1,6 @@ ;;; page-ext.el --- extended page handling commands -*- lexical-binding:t -*- -;; Copyright (C) 1990-2025 Free Software Foundation, Inc. +;; Copyright (C) 1990-2026 Free Software Foundation, Inc. ;; Author: Robert J. Chassell ;; (according to ack.texi) diff --git a/lisp/textmodes/page.el b/lisp/textmodes/page.el index 355199d76ec..3b309d10b53 100644 --- a/lisp/textmodes/page.el +++ b/lisp/textmodes/page.el @@ -1,6 +1,6 @@ ;;; page.el --- page motion commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: text convenience diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el index 78d9a6e3573..e2bcec675ff 100644 --- a/lisp/textmodes/paragraphs.el +++ b/lisp/textmodes/paragraphs.el @@ -1,6 +1,6 @@ ;;; paragraphs.el --- paragraph and sentence parsing -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1991, 1994-1997, 1999-2025 Free Software +;; Copyright (C) 1985-1987, 1991, 1994-1997, 1999-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/picture.el b/lisp/textmodes/picture.el index 9c2c56124c9..b23b1a1d0ed 100644 --- a/lisp/textmodes/picture.el +++ b/lisp/textmodes/picture.el @@ -1,6 +1,6 @@ ;;; picture.el --- "Picture mode" -- editing using quarter-plane screen model -*- lexical-binding: t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: K. Shane Hartman ;; Maintainer: emacs-devel@gnu.org @@ -235,8 +235,8 @@ Use \"\\[command-apropos] picture-movement\" to see commands which control motio (char-ht (frame-char-height frame)) (spacing (when (display-graphic-p frame) (or (with-current-buffer (window-buffer window) - line-spacing) - (frame-parameter frame 'line-spacing))))) + (total-line-spacing)) + (total-line-spacing (frame-parameter frame 'line-spacing)))))) (cond ((floatp spacing) (setq spacing (truncate (* spacing char-ht)))) ((null spacing) diff --git a/lisp/textmodes/pixel-fill.el b/lisp/textmodes/pixel-fill.el index 2ac0bf78774..433a89a2b7c 100644 --- a/lisp/textmodes/pixel-fill.el +++ b/lisp/textmodes/pixel-fill.el @@ -1,6 +1,6 @@ ;;; pixel-fill.el --- variable pitch filling functions -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: filling diff --git a/lisp/textmodes/po.el b/lisp/textmodes/po.el index bfcd6a63840..b07c3cf661a 100644 --- a/lisp/textmodes/po.el +++ b/lisp/textmodes/po.el @@ -1,6 +1,6 @@ ;;; po.el --- basic support of PO translation files -*- lexical-binding:t -*- -;; Copyright (C) 1995-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1998, 2000-2026 Free Software Foundation, Inc. ;; Authors: François Pinard , ;; Greg McGary , diff --git a/lisp/textmodes/refbib.el b/lisp/textmodes/refbib.el index 7e006113e7b..df35d0ceeb8 100644 --- a/lisp/textmodes/refbib.el +++ b/lisp/textmodes/refbib.el @@ -1,6 +1,6 @@ ;;; refbib.el --- convert refer-style references to ones usable by Latex bib -*- lexical-binding: t; -*- -;; Copyright (C) 1989, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989, 2001-2026 Free Software Foundation, Inc. ;; Author: Henry Kautz ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/refer.el b/lisp/textmodes/refer.el index c7569ea8f35..c2a279ca236 100644 --- a/lisp/textmodes/refer.el +++ b/lisp/textmodes/refer.el @@ -1,6 +1,6 @@ ;;; refer.el --- look up references in bibliography files -*- lexical-binding: t; -*- -;; Copyright (C) 1992, 1996, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992, 1996, 2001-2026 Free Software Foundation, Inc. ;; Author: Ashwin Ram ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/refill.el b/lisp/textmodes/refill.el index 41839321d90..749d76eea5d 100644 --- a/lisp/textmodes/refill.el +++ b/lisp/textmodes/refill.el @@ -1,6 +1,6 @@ ;;; refill.el --- `auto-fill' by refilling paragraphs on changes -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Maintainer: Miles Bader diff --git a/lisp/textmodes/reftex-auc.el b/lisp/textmodes/reftex-auc.el index 88cf1b1a3cf..0396c3bcd8f 100644 --- a/lisp/textmodes/reftex-auc.el +++ b/lisp/textmodes/reftex-auc.el @@ -1,6 +1,6 @@ ;;; reftex-auc.el --- RefTeX's interface to AUCTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'reftex) (declare-function TeX-argument-prompt "ext:tex" diff --git a/lisp/textmodes/reftex-cite.el b/lisp/textmodes/reftex-cite.el index 6c6d551063f..820cc61e947 100644 --- a/lisp/textmodes/reftex-cite.el +++ b/lisp/textmodes/reftex-cite.el @@ -1,6 +1,6 @@ ;;; reftex-cite.el --- creating citations with RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org diff --git a/lisp/textmodes/reftex-dcr.el b/lisp/textmodes/reftex-dcr.el index 65d0670bc35..b2e1bb61ddb 100644 --- a/lisp/textmodes/reftex-dcr.el +++ b/lisp/textmodes/reftex-dcr.el @@ -1,6 +1,6 @@ ;;; reftex-dcr.el --- viewing cross references and citations with RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (declare-function bibtex-beginning-of-entry "bibtex" ()) (require 'reftex) diff --git a/lisp/textmodes/reftex-global.el b/lisp/textmodes/reftex-global.el index 2463b231904..e9acf91c824 100644 --- a/lisp/textmodes/reftex-global.el +++ b/lisp/textmodes/reftex-global.el @@ -1,6 +1,6 @@ ;;; reftex-global.el --- operations on entire documents with RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -24,7 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) (provide 'reftex-global) (require 'reftex) diff --git a/lisp/textmodes/reftex-index.el b/lisp/textmodes/reftex-index.el index 17f4cd66dcf..9f9d6253d0a 100644 --- a/lisp/textmodes/reftex-index.el +++ b/lisp/textmodes/reftex-index.el @@ -1,6 +1,6 @@ ;;; reftex-index.el --- index support with RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org diff --git a/lisp/textmodes/reftex-parse.el b/lisp/textmodes/reftex-parse.el index a7ff07eff8e..b8f43375e7d 100644 --- a/lisp/textmodes/reftex-parse.el +++ b/lisp/textmodes/reftex-parse.el @@ -1,6 +1,6 @@ ;;; reftex-parse.el --- parser functions for RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org diff --git a/lisp/textmodes/reftex-ref.el b/lisp/textmodes/reftex-ref.el index 7464268d1a7..cf53fa89014 100644 --- a/lisp/textmodes/reftex-ref.el +++ b/lisp/textmodes/reftex-ref.el @@ -1,6 +1,6 @@ ;;; reftex-ref.el --- code to create labels and references with RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org diff --git a/lisp/textmodes/reftex-sel.el b/lisp/textmodes/reftex-sel.el index 84170f710e0..f75b15c6eb9 100644 --- a/lisp/textmodes/reftex-sel.el +++ b/lisp/textmodes/reftex-sel.el @@ -1,6 +1,6 @@ ;;; reftex-sel.el --- the selection modes for RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -24,8 +24,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'reftex) ;; Common bindings in reftex-select-label-mode-map diff --git a/lisp/textmodes/reftex-toc.el b/lisp/textmodes/reftex-toc.el index 3c780bddd20..3f20e686c51 100644 --- a/lisp/textmodes/reftex-toc.el +++ b/lisp/textmodes/reftex-toc.el @@ -1,6 +1,6 @@ ;;; reftex-toc.el --- RefTeX's table of contents mode -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org diff --git a/lisp/textmodes/reftex-vars.el b/lisp/textmodes/reftex-vars.el index e75267cc01d..e9793c86398 100644 --- a/lisp/textmodes/reftex-vars.el +++ b/lisp/textmodes/reftex-vars.el @@ -1,6 +1,6 @@ ;;; reftex-vars.el --- configuration variables for RefTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1999, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1999, 2001-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org @@ -360,11 +360,11 @@ more than `reftex-idle-time' seconds. Value t means, turn on immediately when RefTeX gets started. Then, recentering will work for any TOC window created during the session. -Value `frame' (the default) means, turn automatic recentering on only while the -dedicated TOC frame does exist, and do the recentering only in that frame. So -when creating that frame (with `d' key in an ordinary TOC window), the -automatic recentering is turned on. When the frame gets destroyed, automatic -recentering is turned off again. +Value \\+`frame' (the default) means, turn automatic recentering on only +while the dedicated TOC frame does exist, and do the recentering only in +that frame. So when creating that frame (with `d' key in an ordinary +TOC window), the automatic recentering is turned on. When the frame +gets destroyed, automatic recentering is turned off again. This feature can be turned on and off from the menu \(Ref->Options)." @@ -489,7 +489,7 @@ examples in the manual. Looking at the builtin defaults in the constant Set this variable to define additions and changes to the default. The only things you MUST NOT change is that `?s' is the type indicator for section -labels, and SPC for the `any' label type. These are hard-coded at other +labels, and SPC for the \\+`any' label type. These are hard-coded at other places in the code. The value of the variable must be a list of items. Each item is a list @@ -509,7 +509,7 @@ ENV-OR-MACRO a star to mark the label argument, if any. The macro does not have to have a label argument - you could also use \\label{..} inside one of its arguments. - Special names: `section' for section labels, `any' to define a group + Special names: `section' for section labels, \\+`any' to define a group which contains all labels. This may also be a function to do local parsing and identify point to @@ -535,7 +535,7 @@ TYPE-KEY LABEL-PREFIX Label prefix string, like \"tab:\". The prefix is a short string used as the start of a label. It may be the - empty string. The prefix may contain the following `%' escapes: + empty string. The prefix may contain the following \\+`%' escapes: %f Current file name with directory and extension stripped. %F Current file name relative to directory of master file. %m Master file name, directory and extension stripped. @@ -1534,27 +1534,27 @@ This extension will be added to the base name of the master file." :type 'string) (defcustom reftex-index-phrases-logical-and-regexp " *&& *" - "Regexp matching the `and' operator for index arguments in phrases file. + "Regexp matching the \\+`and' operator for index arguments in phrases file. When several index arguments in a phrase line are separated by this operator, each part will generate an index macro. So each match of the search phrase will produce *several* different index entries. Note: make sure this does no match things which are not separators. -This logical `and' has higher priority than the logical `or' specified in +This logical \\+`and' has higher priority than the logical \\+`or' specified in `reftex-index-phrases-logical-or-regexp'." :group 'reftex-index-support :type 'regexp) (defcustom reftex-index-phrases-logical-or-regexp " *|| *" - "Regexp matching the `or' operator for index arguments in phrases file. + "Regexp matching the \\+`or' operator for index arguments in phrases file. When several index arguments in a phrase line are separated by this operator, the user will be asked to select one of them at each match of the search phrase. The first index arg will be the default - a number key 1-9 must be pressed to switch to another. Note: make sure this does no match things which are not separators. -The logical `and' specified in `reftex-index-phrases-logical-or-regexp' -has higher priority than this logical `or'." +The logical \\+`and' specified in `reftex-index-phrases-logical-or-regexp' +has higher priority than this logical \\+`or'." :group 'reftex-index-support :type 'regexp) diff --git a/lisp/textmodes/reftex.el b/lisp/textmodes/reftex.el index ee587ab3597..4e2c89e87dc 100644 --- a/lisp/textmodes/reftex.el +++ b/lisp/textmodes/reftex.el @@ -1,6 +1,6 @@ ;;; reftex.el --- minor mode for doing \label, \ref, \cite, \index in LaTeX -*- lexical-binding: t; -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Carsten Dominik ;; Maintainer: auctex-devel@gnu.org diff --git a/lisp/textmodes/remember.el b/lisp/textmodes/remember.el index ee2bf5c5631..4f99b367216 100644 --- a/lisp/textmodes/remember.el +++ b/lisp/textmodes/remember.el @@ -1,6 +1,6 @@ ;;; remember.el --- a mode for quickly jotting down things to remember -*- lexical-binding: t; -*- -;; Copyright (C) 1999-2001, 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2001, 2003-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/rst.el b/lisp/textmodes/rst.el index fea4f98a8ec..22688f9b992 100644 --- a/lisp/textmodes/rst.el +++ b/lisp/textmodes/rst.el @@ -1,6 +1,6 @@ ;;; rst.el --- Mode for viewing and editing reStructuredText-documents -*- lexical-binding: t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Maintainer: Stefan Merten ;; Author: Stefan Merten , diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index aec49d83a73..2170fcea6e9 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -1,6 +1,6 @@ ;;; sgml-mode.el --- SGML- and HTML-editing modes -*- lexical-binding:t -*- -;; Copyright (C) 1992, 1995-1996, 1998, 2001-2025 Free Software +;; Copyright (C) 1992, 1995-1996, 1998, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: James Clark @@ -452,9 +452,6 @@ When more these are fontified together with `sgml-font-lock-keywords'.") (defvar sgml-display-text () "Tag names as lowercase symbols, and display string when invisible.") -;; internal -(defvar sgml-tags-invisible nil) - (defcustom sgml-tag-alist '(("![" ("ignore" t) ("include" t)) ("!attlist") @@ -1059,7 +1056,7 @@ Return t if after a closing tag." ;; Ignore empty tags like . "\\([^>]*[^/>]\\)?>")) point close) - (forward-list 1) + (forward-sexp 1) (setq point (point)) ;; FIXME: This re-search-forward will mistakenly match ;; tag-like text inside attributes. @@ -1072,7 +1069,7 @@ Return t if after a closing tag." (unless close (goto-char point) (setq return nil))) - (forward-list 1)) + (forward-sexp 1)) (setq arg (1- arg))) return))) @@ -1089,7 +1086,8 @@ With prefix argument ARG, repeat this ARG times." (interactive "p") (while (>= arg 1) (save-excursion - (let* (close open) + (let* ((forward-sexp-function nil) + close open) (if (looking-at "[ \t\n]*<") ;; just before tag (if (eq (char-after (match-end 0)) ?/) @@ -1107,7 +1105,7 @@ With prefix argument ARG, repeat this ARG times." (sgml-skip-tag-backward 1) (if (or (not (eq (following-char) ?<)) (save-excursion - (forward-list 1) + (forward-sexp 1) (<= (point) point))) (error "Not on or before tag"))))) (if close @@ -1140,22 +1138,17 @@ With prefix argument ARG, repeat this ARG times." read-only t) (symbol-plist 'sgml-tag)))) -(defun sgml-tags-invisible (arg) +(define-minor-mode sgml-tags-invisible "Toggle visibility of existing tags." - (interactive "P") - (let ((inhibit-read-only t) - string) - (with-silent-modifications - (save-excursion - (goto-char (point-min)) - (if (setq-local sgml-tags-invisible - (if arg - (>= (prefix-numeric-value arg) 0) - (not sgml-tags-invisible))) - (while (re-search-forward sgml-tag-name-re nil t) - (setq string - (cdr (assq (intern-soft (downcase (match-string 1))) - sgml-display-text))) + :global nil + (with-silent-modifications + (save-excursion + (goto-char (point-min)) + (if sgml-tags-invisible + (while (re-search-forward sgml-tag-name-re nil t) + (let ((string + (cdr (assq (intern-soft (downcase (match-string 1))) + sgml-display-text)))) (goto-char (match-beginning 0)) (and (stringp string) (not (overlays-at (point))) @@ -1163,17 +1156,18 @@ With prefix argument ARG, repeat this ARG times." (overlay-put ol 'before-string string) (overlay-put ol 'sgml-tag t))) (put-text-property (point) - (progn (forward-list) (point)) - 'category 'sgml-tag)) - (let ((pos (point-min))) - (while (< (setq pos (next-overlay-change pos)) (point-max)) - (dolist (ol (overlays-at pos)) - (if (overlay-get ol 'sgml-tag) - (delete-overlay ol))))) - (remove-text-properties (point-min) (point-max) '(category nil))))) - (cursor-sensor-mode (if sgml-tags-invisible 1 -1)) - (run-hooks 'sgml-tags-invisible-hook) - (message ""))) + (let ((forward-sexp-function nil)) + (forward-sexp 1) + (point)) + 'category 'sgml-tag))) + (let ((pos (point-min))) + (while (< (setq pos (next-overlay-change pos)) (point-max)) + (dolist (ol (overlays-at pos)) + (if (overlay-get ol 'sgml-tag) + (delete-overlay ol))))) + (remove-text-properties (point-min) (point-max) '(category nil))))) + (when sgml-tags-invisible + (cursor-sensor-mode 1))) (defun sgml-cursor-sensor (window x dir) ;; Show preceding or following hidden tag, depending of cursor direction (and diff --git a/lisp/textmodes/string-edit.el b/lisp/textmodes/string-edit.el index 857d7c3f969..a234a325643 100644 --- a/lisp/textmodes/string-edit.el +++ b/lisp/textmodes/string-edit.el @@ -1,6 +1,6 @@ ;;; string-edit.el --- editing long strings -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/table.el b/lisp/textmodes/table.el index 0e024f9261e..04499f8d2b6 100644 --- a/lisp/textmodes/table.el +++ b/lisp/textmodes/table.el @@ -1,6 +1,6 @@ ;;; table.el --- create and edit WYSIWYG text based embedded tables -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Keywords: text, convenience ;; Author: Takaaki Ota diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index d4885e4e009..9385207f767 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -1,6 +1,6 @@ ;;; tex-mode.el --- TeX, LaTeX, and SliTeX mode commands -*- lexical-binding:t -*- -;; Copyright (C) 1985-1986, 1989, 1992, 1994-1999, 2001-2025 Free +;; Copyright (C) 1985-1986, 1989, 1992, 1994-1999, 2001-2026 Free ;; Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/texinfmt.el b/lisp/textmodes/texinfmt.el index 1f32755b64f..5635e3da867 100644 --- a/lisp/textmodes/texinfmt.el +++ b/lisp/textmodes/texinfmt.el @@ -1,6 +1,6 @@ ;;; texinfmt.el --- format Texinfo files into Info files -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1986, 1988, 1990-1998, 2000-2025 Free Software +;; Copyright (C) 1985-1986, 1988, 1990-1998, 2000-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/texinfo.el b/lisp/textmodes/texinfo.el index e14c1669ae7..c7b5e60f0c2 100644 --- a/lisp/textmodes/texinfo.el +++ b/lisp/textmodes/texinfo.el @@ -1,6 +1,6 @@ ;;; texinfo.el --- major mode for editing Texinfo files -*- lexical-binding: t; -*- -;; Copyright (C) 1985, 1988-1993, 1996-1997, 2000-2025 Free Software +;; Copyright (C) 1985, 1988-1993, 1996-1997, 2000-2026 Free Software ;; Foundation, Inc. ;; Author: Robert J. Chassell diff --git a/lisp/textmodes/texnfo-upd.el b/lisp/textmodes/texnfo-upd.el index 51505faa03d..383855b1d6f 100644 --- a/lisp/textmodes/texnfo-upd.el +++ b/lisp/textmodes/texnfo-upd.el @@ -1,6 +1,6 @@ ;;; texnfo-upd.el --- utilities for updating nodes and menus in Texinfo files -*- lexical-binding: t; -*- -;; Copyright (C) 1989-1992, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1989-1992, 2001-2026 Free Software Foundation, Inc. ;; Author: Robert J. Chassell ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/text-mode.el b/lisp/textmodes/text-mode.el index 65372af9e24..b5b496a30dc 100644 --- a/lisp/textmodes/text-mode.el +++ b/lisp/textmodes/text-mode.el @@ -1,6 +1,6 @@ ;;; text-mode.el --- text mode, and its idiosyncratic commands -*- lexical-binding: t -*- -;; Copyright (C) 1985, 1992, 1994, 2001-2025 Free Software Foundation, +;; Copyright (C) 1985, 1992, 1994, 2001-2026 Free Software Foundation, ;; Inc. ;; Maintainer: emacs-devel@gnu.org @@ -269,6 +269,56 @@ The argument NLINES says how many lines to center." (setq nlines (1+ nlines)) (forward-line -1))))) +;; Actually defined in track-changes.el. +(defvar track-changes-undo-only) +(declare-function track-changes-register "track-changes" + ( signal &optional &key nobefore disjoint immediate)) +(declare-function track-changes-unregister "track-changes" (id)) +(declare-function track-changes-fetch "track-changes" (id func)) + +(defvar-local center-line-mode--track-changes nil) + +(defun center-line-mode--track-changes-signal (tracker) + (track-changes-fetch + tracker + #'center-line-mode--track-changes-function)) + +(defun center-line-mode--track-changes-function (beg end _before) + (unless track-changes-undo-only + (save-excursion + (let ((beg-line (line-number-at-pos beg)) + (end-line (line-number-at-pos end)) + (should-center-last-line-p + (progn + (goto-char end) + (null + (or (bolp) + (and (eolp) + (looking-back "[\r\n\t ]" (1- (point))))))))) + (goto-char beg) + (dotimes (_ (- end-line beg-line)) ; all but last line + (unless (and (bolp) (eolp)) + (center-line)) + (forward-line 1)) + (when should-center-last-line-p + (center-line))))) + ;; Disregard our own changes. + (track-changes-fetch center-line-mode--track-changes #'ignore)) + +(define-minor-mode center-line-mode + "Minor mode for keeping modified lines centered horizontally. +Calls `center-line' on each line of the modified region to center the +text within the width specified by `fill-column'." + :lighter " Center-Line" + (require 'track-changes) + (if center-line-mode + (setq center-line-mode--track-changes + (track-changes-register + #'center-line-mode--track-changes-signal + :nobefore t)) + (when center-line-mode--track-changes + (track-changes-unregister center-line-mode--track-changes)))) + (define-obsolete-function-alias 'indented-text-mode #'text-mode "29.1") diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index b1a24d8c30c..922208ba4ad 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el @@ -1,6 +1,6 @@ ;;; tildify.el --- adding hard spaces into texts -*- lexical-binding: t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Milan Zamazal ;; Michal Nazarewicz diff --git a/lisp/textmodes/toml-ts-mode.el b/lisp/textmodes/toml-ts-mode.el index f52f7de7b42..107f92c6794 100644 --- a/lisp/textmodes/toml-ts-mode.el +++ b/lisp/textmodes/toml-ts-mode.el @@ -1,6 +1,6 @@ ;;; toml-ts-mode.el --- tree-sitter support for TOML -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Jostein Kjønigsen ;; Maintainer : Jostein Kjønigsen diff --git a/lisp/textmodes/two-column.el b/lisp/textmodes/two-column.el index b69ab17d2b8..d0a920af0a8 100644 --- a/lisp/textmodes/two-column.el +++ b/lisp/textmodes/two-column.el @@ -1,6 +1,6 @@ ;;; two-column.el --- minor mode for editing of two-column text -*- lexical-binding: t; -*- -;; Copyright (C) 1992-1995, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-1995, 2001-2026 Free Software Foundation, Inc. ;; Author: Daniel Pfeiffer ;; Adapted-By: ESR, Daniel Pfeiffer diff --git a/lisp/textmodes/underline.el b/lisp/textmodes/underline.el index 367e30eb3ee..0198af6c6c8 100644 --- a/lisp/textmodes/underline.el +++ b/lisp/textmodes/underline.el @@ -1,6 +1,6 @@ ;;; underline.el --- insert/remove underlining (done by overstriking) in Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985, 2001-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: text diff --git a/lisp/textmodes/word-wrap-mode.el b/lisp/textmodes/word-wrap-mode.el index 2a0c7935ad0..be438923bd2 100644 --- a/lisp/textmodes/word-wrap-mode.el +++ b/lisp/textmodes/word-wrap-mode.el @@ -1,6 +1,6 @@ ;;; word-wrap-mode.el --- minor mode for `word-wrap' tweaks -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/textmodes/yaml-ts-mode.el b/lisp/textmodes/yaml-ts-mode.el index 0f38887a758..c1521c82c22 100644 --- a/lisp/textmodes/yaml-ts-mode.el +++ b/lisp/textmodes/yaml-ts-mode.el @@ -1,6 +1,6 @@ ;;; yaml-ts-mode.el --- tree-sitter support for YAML -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author : Randy Taylor ;; Maintainer : Randy Taylor @@ -41,6 +41,19 @@ :commit "b733d3f5f5005890f324333dd57e1f0badec5c87") t) +(defgroup yaml-ts-mode nil + "Major mode for editing YAML files." + :prefix "yaml-ts-mode-" + :group 'languages) + +(defcustom yaml-ts-mode-yamllint-options nil + "Additional options to pass to yamllint command used for Flymake support. +This should be a list of strings, each one passed as a separate argument +to the yamllint command." + :group 'yaml-ts-mode + :version "31.1" + :type '(repeat string)) + (defvar yaml-ts-mode--syntax-table (let ((table (make-syntax-table))) (modify-syntax-entry ?# "<" table) @@ -175,6 +188,74 @@ Return nil if there is no name or if NODE is not a defun node." (when (string-match-p yaml-ts-mode--outline-nodes (treesit-node-type node)) (not (treesit-node-top-level node yaml-ts-mode--outline-nodes)))) +;;; Flymake integration +(defvar-local yaml-ts-mode--flymake-process nil + "Store the Flymake process.") + +(defun yaml-ts-mode-flymake (report-fn &rest _args) + "YAML backend for Flymake. +Calls REPORT-FN directly." + (when (process-live-p yaml-ts-mode--flymake-process) + (kill-process yaml-ts-mode--flymake-process)) + (let ((yamllint (executable-find "yamllint")) + (params (append yaml-ts-mode-yamllint-options '("-f" "parsable" "-"))) + (source (current-buffer)) + (diagnostics-pattern (eval-when-compile + (rx bol (+? nonl) ":" ; every diagnostic line start with the filename + (group (1+ digit)) ":" ; 1: line + (group (1+ digit)) ":" ; 2: column + (+ (syntax whitespace)) + (group (or "[error]" "[warning]")) ; 3: type + (+ (syntax whitespace)) + (group (+? nonl)) ;; 4: message + eol)))) + + (if (not yamllint) + (error "Unable to find yamllint command") + (save-restriction + (widen) + (setq yaml-ts-mode--flymake-process + (make-process + :name "yaml-ts-mode-flymake" + :noquery t + :connection-type 'pipe + :buffer (generate-new-buffer " *yaml-ts-mode-flymake*") + :command `(,yamllint ,@params) + :sentinel + (lambda (proc _event) + (when (eq 'exit (process-status proc)) + (unwind-protect + (if (with-current-buffer source + (eq proc yaml-ts-mode--flymake-process)) + (with-current-buffer (process-buffer proc) + (goto-char (point-min)) + (let (diags) + (while (search-forward-regexp + diagnostics-pattern + nil t) + (let* ((beg + (car (flymake-diag-region + source + (string-to-number (match-string 1)) + (string-to-number (match-string 2))))) + (end + (cdr (flymake-diag-region + source + (string-to-number (match-string 1)) + (string-to-number (match-string 2))))) + (msg (match-string 4)) + (type (if (string= "[warning]" (match-string 3)) + :warning + :error))) + (push (flymake-make-diagnostic + source beg end type msg) + diags)) + (funcall report-fn diags)))) + (flymake-log :warning "Canceling obsolete check %s" proc)) + (kill-buffer (process-buffer proc))))))) + (process-send-region yaml-ts-mode--flymake-process (point-min) (point-max)) + (process-send-eof yaml-ts-mode--flymake-process))))) + ;;;###autoload (define-derived-mode yaml-ts-mode text-mode "YAML" "Major mode for editing YAML, powered by tree-sitter." @@ -215,6 +296,9 @@ Return nil if there is no name or if NODE is not a defun node." ;; Outline minor mode. (setq-local treesit-outline-predicate #'yaml-ts-mode--outline-predicate) + ;; Flymake + (add-hook 'flymake-diagnostic-functions #'yaml-ts-mode-flymake nil 'local) + (treesit-major-mode-setup) (setq-local hs-treesit-things "block_mapping_pair") diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index f2d917c6fc0..578f4ab9819 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -1,6 +1,6 @@ ;;; thingatpt.el --- get the `thing' at point -*- lexical-binding:t -*- -;; Copyright (C) 1991-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Mike Williams ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/thread.el b/lisp/thread.el index 04fbd1ee8a5..bf7e8abe2e0 100644 --- a/lisp/thread.el +++ b/lisp/thread.el @@ -1,6 +1,6 @@ ;;; thread.el --- Thread support in Emacs Lisp -*- lexical-binding: t -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Gemini Lasswell ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/time-stamp.el b/lisp/time-stamp.el index 1e018e0df68..dc7c918816b 100644 --- a/lisp/time-stamp.el +++ b/lisp/time-stamp.el @@ -1,6 +1,6 @@ ;;; time-stamp.el --- Maintain last change time stamps in files edited by Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1989, 1993-1995, 1997, 2000-2025 Free Software +;; Copyright (C) 1989, 1993-1995, 1997, 2000-2026 Free Software ;; Foundation, Inc. ;; This file is part of GNU Emacs. @@ -236,27 +236,43 @@ your init file, you would be incompatible with other people's files.") (defvar time-stamp-inserts-lines nil ;Do not change! "Whether \\[time-stamp] can change the number of lines in a file. -If nil, \\[time-stamp] skips as many lines as there are newlines in -`time-stamp-format' before looking for the `time-stamp-end' pattern, -thus it tries not to change the number of lines in the buffer. -If non-nil, \\[time-stamp] starts looking for the end pattern -immediately after the start pattern. This behavior can cause -unexpected changes in the buffer if used carelessly, but it is useful -for generating repeated time stamps. +When `time-stamp-format' contains newline characters, the intent +is ambiguous: does the author want to update a single multi-line +time stamp, or create a repeated time stamp by inserting new lines? +This variable controls the interpretation. + +If nil, `time-stamp' tries not to change the number of lines in the +buffer and treats the format as one single, multi-line time stamp. +The `time-stamp-end' must start N lines after the end of +`time-stamp-start', where N is the number of newlines in +`time-stamp-format'. + +If this variable is non-nil, `time-stamp' is willing to add lines +to the buffer. The end pattern must start somewhere in the +remainder of the same line where the start pattern ends. +This behavior lets a file accumulate repeated time stamps. + +In the most common case that `time-stamp-format' contains no +newlines, this variable has no effect; the end of the start +and the start of the end are always on the same line. These variables are best changed with file-local variables. -If you were to change `time-stamp-end' or `time-stamp-inserts-lines' in -your init file, you would be incompatible with other people's files.") +If you were to change `time-stamp-start', `time-stamp-end' or +`time-stamp-inserts-lines' in your init file, you would be +incompatible with other people's files.") ;;;###autoload(put 'time-stamp-inserts-lines 'safe-local-variable #'booleanp) (defvar time-stamp-count 1 ;Do not change! "How many templates \\[time-stamp] will look for in a buffer. -If the value is greater than 1, the same time stamp will be written in -each case. If you want to insert different text on different lines, +If the value is greater than 1, the same time stamp will be +written in each case. + +If you want to insert different text on different lines, then instead of changing this variable, include a newline (written as \"\\n\") in `time-stamp-format' or the format part of `time-stamp-pattern'. +See the variable `time-stamp-inserts-lines'. `time-stamp-count' is best changed with a file-local variable. If you were to change it in your init file, you would be incompatible @@ -279,8 +295,8 @@ value of `time-stamp-line-limit' as the number. The second part is a regexp identifying the pattern preceding the time stamp. This part may be omitted to use the value of `time-stamp-start'. -The third part specifies the format of the time stamp inserted. Specify -this part as \"%%\" to use the value of `time-stamp-format'. +The third part specifies the format of the time stamp inserted. +This part may be \"%%\" to use the value of `time-stamp-format'. The fourth part is a regexp identifying the pattern following the time stamp. This part may be omitted to use the value of `time-stamp-end'. @@ -331,9 +347,9 @@ of the file before running this function, by default can look like one of the following (your choice): Time-stamp: <> Time-stamp: \" \" -This function writes the current time between the brackets or quotes, -by default formatted like this: - Time-stamp: <2024-08-07 17:10:21 gildea> +This function writes the current time between the angle brackets +or quotes, by default formatted like this: + Time-stamp: <2025-08-07 17:10:21 gildea> Although you can run this function manually to update a time stamp once, usually you want automatic time stamp updating. @@ -351,7 +367,8 @@ If the file has no time stamp template or if `time-stamp-active' is nil, this function does nothing. You can set `time-stamp-pattern' in a file's local variables list -to customize the information in the time stamp and where it is written." +to customize the information in the time stamp, the surrounding +template, and where in the file it can occur." (interactive) (let ((line-limit time-stamp-line-limit) (ts-start time-stamp-start) @@ -528,7 +545,7 @@ time is used. The time zone is determined by `time-stamp-time-zone'." ;;; ambiguous formats--formats that are changing (over time) incompatibly. (defun time-stamp-string-preprocess (format &optional time) - "Use a FORMAT to format date, time, file, and user information. + "Use FORMAT to format date, time, and user information. Optional second argument TIME is only for testing. This is an internal routine implementing extensions to `format-time-string' and all `time-stamp-format' compatibility." @@ -879,7 +896,7 @@ TYPE is :short for the unqualified name, :full for the full name." When non-nil, `time-stamp' warns about unstable and soon-to-be-changing conversions found in that buffer's `time-stamp-format' value. The warning is displayed only -when a buffer's time-stamp is updated; merely viewing a file +when a buffer's time stamp is updated; merely viewing a file does not warn. If nil, these warnings are disabled, which would be a bad idea. diff --git a/lisp/time.el b/lisp/time.el index ecacaf08aa4..f553ebab413 100644 --- a/lisp/time.el +++ b/lisp/time.el @@ -1,6 +1,6 @@ ;;; time.el --- display time, load and mail indicator in mode line of Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1987, 1993-1994, 1996, 2000-2025 Free Software +;; Copyright (C) 1985-1987, 1993-1994, 1996, 2000-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org @@ -177,6 +177,18 @@ depend on `display-time-day-and-date' and `display-time-24hr-format'." :type '(choice (const :tag "Default" nil) string)) +(defcustom display-time-help-echo-format "%a %b %e, %Y" + "Format for the help echo when hovering over the time in the mode line. +Use the function `customize-variable' to choose a common format, and/or +see the function `format-time-string' for an explanation of the syntax." + :version "31.1" + :type `(choice + ,@(mapcar #'(lambda (fmt) + (list 'const + ':tag (format-time-string fmt 0 "UTC") fmt)) + '("%a %b %e, %Y" "%F (%a)" "%a %D")) + (string :tag "Format string"))) + (defcustom display-time-string-forms '((if (and (not display-time-format) display-time-day-and-date) (format-time-string "%a %b %e " now) @@ -186,7 +198,9 @@ depend on `display-time-day-and-date' and `display-time-24hr-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)) + 'help-echo (format-time-string (if (stringp display-time-help-echo-format) + display-time-help-echo-format + "%a %b %e, %Y") now)) load (if mail ;; Build the string every time to act on customization. diff --git a/lisp/timezone.el b/lisp/timezone.el index d8cec435249..63f58a477b0 100644 --- a/lisp/timezone.el +++ b/lisp/timezone.el @@ -1,6 +1,6 @@ ;;; timezone.el --- time zone package for GNU Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1990-1993, 1996, 1999, 2001-2025 Free Software +;; Copyright (C) 1990-1993, 1996, 1999, 2001-2026 Free Software ;; Foundation, Inc. ;; Author: Masanobu Umeda diff --git a/lisp/tmm.el b/lisp/tmm.el index c86aafc200d..ac0c5ff8ce7 100644 --- a/lisp/tmm.el +++ b/lisp/tmm.el @@ -1,6 +1,6 @@ ;;; tmm.el --- text mode access to menu-bar -*- lexical-binding: t -*- -;; Copyright (C) 1994-1996, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-1996, 2000-2026 Free Software Foundation, Inc. ;; Author: Ilya Zakharevich ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/tool-bar.el b/lisp/tool-bar.el index 23e3dc0dfd3..73df2e0bca8 100644 --- a/lisp/tool-bar.el +++ b/lisp/tool-bar.el @@ -1,6 +1,6 @@ ;;; tool-bar.el --- setting up the tool bar -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Keywords: mouse frames diff --git a/lisp/tooltip.el b/lisp/tooltip.el index cbea89906fd..8b504012e5c 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el @@ -1,6 +1,6 @@ ;;; tooltip.el --- show tooltip windows -*- lexical-binding:t -*- -;; Copyright (C) 1997, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997, 1999-2026 Free Software Foundation, Inc. ;; Author: Gerd Moellmann ;; Keywords: help c mouse tools diff --git a/lisp/touch-screen.el b/lisp/touch-screen.el index 4109bd96ca2..dbb252b0f99 100644 --- a/lisp/touch-screen.el +++ b/lisp/touch-screen.el @@ -1,6 +1,6 @@ ;;; touch-screen.el --- touch screen support for X and Android -*- lexical-binding: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Package: emacs diff --git a/lisp/transient.el b/lisp/transient.el index 0ca60c4ceea..a7e2e5daa23 100644 --- a/lisp/transient.el +++ b/lisp/transient.el @@ -1,11 +1,11 @@ ;;; transient.el --- Transient commands -*- lexical-binding:t -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Jonas Bernoulli ;; URL: https://github.com/magit/transient ;; Keywords: extensions -;; Version: 0.11.0 +;; Version: 0.12.0 ;; SPDX-License-Identifier: GPL-3.0-or-later @@ -33,7 +33,7 @@ ;;; Code: ;;;; Frontmatter -(defconst transient-version "v0.11.0-10-g6637364e-builtin") +(defconst transient-version "v0.12.0-15-gfe5214e6-builtin") (require 'cl-lib) (require 'eieio) @@ -669,15 +669,16 @@ See also option `transient-highlight-mismatched-keys'." (insert-file-contents file) (read (current-buffer)))))) -(defun transient--pp-to-file (list file) - (make-directory (file-name-directory file) t) - (setq list (cl-sort (copy-sequence list) #'string< :key #'car)) - (with-temp-file file - (let ((print-level nil) - (print-length nil) - (pp-default-function 'pp-28) - (fill-column 999)) - (pp list (current-buffer))))) +(defun transient--pp-to-file (value file) + (when (or value (file-exists-p file)) + (make-directory (file-name-directory file) t) + (setq value (cl-sort (copy-sequence value) #'string< :key #'car)) + (with-temp-file file + (let ((print-level nil) + (print-length nil) + (pp-default-function 'pp-28) + (fill-column 999)) + (pp value (current-buffer)))))) (defvar transient-values (transient--read-file-contents transient-values-file) @@ -1215,15 +1216,15 @@ commands are aliases for." (while-let ((arg (car args)) (arg (cond - ;; Inline group definition. - ((vectorp arg) - (pop args)) - ;; Quoted include, as one would expect. - ((eq (car-safe arg) 'quote) - (cadr (pop args))) - ;; Unquoted include, for compatibility. - ((and arg (symbolp arg)) - (pop args))))) + ;; Inline group definition. + ((vectorp arg) + (pop args)) + ;; Quoted include, as one would expect. + ((eq (car-safe arg) 'quote) + (cadr (pop args))) + ;; Unquoted include, for compatibility. + ((and arg (symbolp arg)) + (pop args))))) (push arg suffixes)) (when (eq (car-safe (car args)) 'declare) (setq declare (car args)) @@ -1234,11 +1235,11 @@ commands are aliases for." (unless (cdr declare) (setq declare nil))) (cond - ((not args)) - (nobody - (error "%s: No function body allowed" form)) - ((not (eq (car-safe (nth (if declare 1 0) args)) 'interactive)) - (error "%s: Interactive form missing" form))) + ((not args)) + (nobody + (error "%s: No function body allowed" form)) + ((not (eq (car-safe (nth (if declare 1 0) args)) 'interactive)) + (error "%s: Interactive form missing" form))) (list (if (eq (car-safe class) 'quote) (cadr class) class) @@ -1502,40 +1503,40 @@ Intended for use in a group's `:setup-children' function." (symbol suffix))) (`(,elt ,group) (transient--locate-child prefix loc))) (cond - ((not elt) - (funcall (if transient-error-on-insert-failure #'error #'message) - "Cannot insert %S into %s; %s not found" - suffix prefix loc)) - ((or (and (vectorp suffix) (not (vectorp elt))) - (and (listp suffix) (vectorp elt)) - (and (stringp suffix) (vectorp elt))) - (funcall (if transient-error-on-insert-failure #'error #'message) - "Cannot place %S into %s at %s; %s" - suffix prefix loc - "suffixes and groups cannot be siblings")) - (t - (when-let* ((_(not (eq keep-other 'always))) - (bindingp (listp suf)) - (key (transient--suffix-key suf)) - (conflict (car (transient--locate-child prefix key))) - (conflictp - (and (not (and (eq action 'replace) - (eq conflict elt))) - (or (not keep-other) - (eq (plist-get (transient--suffix-props suf) - :command) - (plist-get (transient--suffix-props conflict) - :command))) - (equal (transient--suffix-predicate suf) - (transient--suffix-predicate conflict))))) - (transient-remove-suffix prefix key) - (pcase-setq `(,elt ,group) (transient--locate-child prefix loc))) - (let ((mem (memq elt (aref group 2)))) - (pcase-exhaustive action - ('insert (setcdr mem (cons elt (cdr mem))) - (setcar mem suf)) - ('append (setcdr mem (cons suf (cdr mem)))) - ('replace (setcar mem suf)))))))) + ((not elt) + (funcall (if transient-error-on-insert-failure #'error #'message) + "Cannot insert %S into %s; %s not found" + suffix prefix loc)) + ((or (and (vectorp suffix) (not (vectorp elt))) + (and (listp suffix) (vectorp elt)) + (and (stringp suffix) (vectorp elt))) + (funcall (if transient-error-on-insert-failure #'error #'message) + "Cannot place %S into %s at %s; %s" + suffix prefix loc + "suffixes and groups cannot be siblings")) + (t + (when-let* ((_(not (eq keep-other 'always))) + (bindingp (listp suf)) + (key (transient--suffix-key suf)) + (conflict (car (transient--locate-child prefix key))) + (conflictp + (and (not (and (eq action 'replace) + (eq conflict elt))) + (or (not keep-other) + (eq (plist-get (transient--suffix-props suf) + :command) + (plist-get (transient--suffix-props conflict) + :command))) + (equal (transient--suffix-predicate suf) + (transient--suffix-predicate conflict))))) + (transient-remove-suffix prefix key) + (pcase-setq `(,elt ,group) (transient--locate-child prefix loc))) + (let ((mem (memq elt (aref group 2)))) + (pcase-exhaustive action + ('insert (setcdr mem (cons elt (cdr mem))) + (setcar mem suf)) + ('append (setcdr mem (cons suf (cdr mem)))) + ('replace (setcar mem suf)))))))) ;;;###autoload (defun transient-insert-suffix (prefix loc suffix &optional keep-other) @@ -1644,20 +1645,20 @@ See info node `(transient)Modifying Existing Transients'." (setq group (transient--get-layout group))) (when (vectorp loc) (setq loc (append loc nil))) - (if (listp loc) - (and-let* ((match (transient--nth (pop loc) (aref group 2)))) - (if loc - (transient--locate-child - match (cond ((or (stringp (car loc)) - (symbolp (car loc))) - (car loc)) - ((symbolp match) - (vconcat (cons 0 loc))) - ((vconcat loc)))) - (list match group))) - (seq-some (lambda (child) - (transient--match-child group loc child)) - (aref group 2)))) + (cond* + ((atom loc) + (seq-some (lambda (child) + (transient--match-child group loc child)) + (aref group 2))) + ((bind-and* (match (transient--nth (pop loc) (aref group 2)))) + (cond (loc (transient--locate-child + match (cond ((or (stringp (car loc)) + (symbolp (car loc))) + (car loc)) + ((symbolp match) + (vconcat (cons 0 loc))) + ((vconcat loc))))) + ((list match group)))))) (defun transient--match-child (group loc child) (cl-etypecase child @@ -1931,23 +1932,23 @@ probably use this instead: (or transient--suffixes transient-current-suffixes)))) (cond - ((length= suffixes 1) - (car suffixes)) - ((cl-find-if (lambda (obj) - (equal (listify-key-sequence (kbd (oref obj key))) - (listify-key-sequence (this-command-keys)))) - suffixes)) - ;; COMMAND is only provided if `this-command' is meaningless, in - ;; which case `this-command-keys' is also meaningless, making it - ;; impossible to disambiguate bindings for the same command. - (command (car suffixes)) - ;; If COMMAND is nil, then failure to disambiguate likely means - ;; that there is a bug somewhere. - ((length> suffixes 1) - (error "BUG: Cannot unambiguously determine suffix object")) - ;; It is legimate to use this function as a predicate of sorts. - ;; `transient--pre-command' and `transient-help' are examples. - (t nil)))) + ((length= suffixes 1) + (car suffixes)) + ((cl-find-if (lambda (obj) + (equal (listify-key-sequence (kbd (oref obj key))) + (listify-key-sequence (this-command-keys)))) + suffixes)) + ;; COMMAND is only provided if `this-command' is meaningless, in + ;; which case `this-command-keys' is also meaningless, making it + ;; impossible to disambiguate bindings for the same command. + (command (car suffixes)) + ;; If COMMAND is nil, then failure to disambiguate likely means + ;; that there is a bug somewhere. + ((length> suffixes 1) + (error "BUG: Cannot unambiguously determine suffix object")) + ;; It is legitimate to use this function as a predicate of sorts. + ;; `transient--pre-command' and `transient-help' are examples. + (t nil)))) ((bind-and* (obj (transient--suffix-prototype (or command this-command))) (obj (clone obj))) (transient-init-scope obj) @@ -2254,31 +2255,31 @@ of the corresponding object." ((cl-typep obj 'transient-infix) 'infix) (t 'suffix))) (pre (cond - ((oref obj inactive) nil) - ((oref obj inapt) #'transient--do-warn-inapt) - ((slot-boundp obj 'transient) - (pcase (list kind - (transient--resolve-pre-command - (oref obj transient) nil t) - return) - (`(prefix t ,_) #'transient--do-recurse) - (`(prefix nil ,_) #'transient--do-stack) - (`(infix t ,_) #'transient--do-stay) - (`(suffix t ,_) #'transient--do-call) - ('(suffix nil t) #'transient--do-return) - (`(,_ nil ,_) #'transient--do-exit) - (`(,_ ,do ,_) do))) - ((not (lookup-key transient-predicate-map id)) - (pcase (list kind default return) - (`(prefix ,(or 'transient--do-stay 'transient--do-call) ,_) - #'transient--do-recurse) - (`(prefix t ,_) #'transient--do-recurse) - (`(prefix ,_ ,_) #'transient--do-stack) - (`(infix ,_ ,_) #'transient--do-stay) - (`(suffix t ,_) #'transient--do-call) - ('(suffix nil t) #'transient--do-return) - (`(suffix nil nil) #'transient--do-exit) - (`(suffix ,do ,_) do)))))) + ((oref obj inactive) nil) + ((oref obj inapt) #'transient--do-warn-inapt) + ((slot-boundp obj 'transient) + (pcase (list kind + (transient--resolve-pre-command + (oref obj transient) nil t) + return) + (`(prefix t ,_) #'transient--do-recurse) + (`(prefix nil ,_) #'transient--do-stack) + (`(infix t ,_) #'transient--do-stay) + (`(suffix t ,_) #'transient--do-call) + ('(suffix nil t) #'transient--do-return) + (`(,_ nil ,_) #'transient--do-exit) + (`(,_ ,do ,_) do))) + ((not (lookup-key transient-predicate-map id)) + (pcase (list kind default return) + (`(prefix ,(or 'transient--do-stay 'transient--do-call) ,_) + #'transient--do-recurse) + (`(prefix t ,_) #'transient--do-recurse) + (`(prefix ,_ ,_) #'transient--do-stack) + (`(infix ,_ ,_) #'transient--do-stay) + (`(suffix t ,_) #'transient--do-call) + ('(suffix nil t) #'transient--do-return) + (`(suffix nil nil) #'transient--do-exit) + (`(suffix ,do ,_) do)))))) (when pre (if-let* ((alt (lookup-key map id))) (unless (eq alt pre) @@ -2336,24 +2337,24 @@ EDIT may be non-nil." (transient--debug 'setup) (transient--with-emergency-exit :setup (cond - ((not name) - ;; Switching between regular and edit mode. - (transient--pop-keymap 'transient--transient-map) - (transient--pop-keymap 'transient--redisplay-map) - (setq name (oref transient--prefix command)) - (setq params (list :scope (oref transient--prefix scope)))) - (transient--prefix - ;; Invoked as a ":transient-non-suffix 'transient--do-{stay,call}" - ;; of an outer prefix. Unlike the usual `transient--do-stack', - ;; these predicates fail to clean up after the outer prefix. - (transient--pop-keymap 'transient--transient-map) - (transient--pop-keymap 'transient--redisplay-map)) - ((not (or layout ; resuming parent/suspended prefix - transient-current-command)) ; entering child prefix - (transient--stack-zap)) ; replace suspended prefix, if any - (edit - ;; Returning from help to edit. - (setq transient--editp t))) + ((not name) + ;; Switching between regular and edit mode. + (transient--pop-keymap 'transient--transient-map) + (transient--pop-keymap 'transient--redisplay-map) + (setq name (oref transient--prefix command)) + (setq params (list :scope (oref transient--prefix scope)))) + (transient--prefix + ;; Invoked as a ":transient-non-suffix 'transient--do-{stay,call}" + ;; of an outer prefix. Unlike the usual `transient--do-stack', + ;; these predicates fail to clean up after the outer prefix. + (transient--pop-keymap 'transient--transient-map) + (transient--pop-keymap 'transient--redisplay-map)) + ((not (or layout ; resuming parent/suspended prefix + transient-current-command)) ; entering child prefix + (transient--stack-zap)) ; replace suspended prefix, if any + (edit + ;; Returning from help to edit. + (setq transient--editp t))) (transient--env-apply (lambda () (transient--init-transient name layout params) @@ -2570,25 +2571,25 @@ value. Otherwise return CHILDREN as is.") (if if-not if-nil if-non-nil if-mode if-not-mode if-derived if-not-derived default) (cond - (if (funcall if)) - (if-not (not (funcall if-not))) - (if-non-nil (symbol-value if-non-nil)) - (if-nil (not (symbol-value if-nil))) - (if-mode (if (atom if-mode) - (eq major-mode if-mode) - (memq major-mode if-mode))) - (if-not-mode (not (if (atom if-not-mode) - (eq major-mode if-not-mode) - (memq major-mode if-not-mode)))) - (if-derived (if (or (atom if-derived) - (>= emacs-major-version 30)) - (derived-mode-p if-derived) - (apply #'derived-mode-p if-derived))) - (if-not-derived (not (if (or (atom if-not-derived) - (>= emacs-major-version 30)) - (derived-mode-p if-not-derived) - (apply #'derived-mode-p if-not-derived)))) - (default))) + (if (funcall if)) + (if-not (not (funcall if-not))) + (if-non-nil (symbol-value if-non-nil)) + (if-nil (not (symbol-value if-nil))) + (if-mode (if (atom if-mode) + (eq major-mode if-mode) + (memq major-mode if-mode))) + (if-not-mode (not (if (atom if-not-mode) + (eq major-mode if-not-mode) + (memq major-mode if-not-mode)))) + (if-derived (if (or (atom if-derived) + (>= emacs-major-version 30)) + (derived-mode-p if-derived) + (apply #'derived-mode-p if-derived))) + (if-not-derived (not (if (or (atom if-not-derived) + (>= emacs-major-version 30)) + (derived-mode-p if-not-derived) + (apply #'derived-mode-p if-not-derived)))) + (default))) (defun transient--suffix-predicate (spec) (let ((props (transient--suffix-props spec))) @@ -2649,30 +2650,30 @@ value. Otherwise return CHILDREN as is.") (not (transient--get-pre-command this-command nil 'suffix))) (setq this-command this-original-command)) (cond - ((memq this-command '(transient-update transient-quit-seq)) - (transient--pop-keymap 'transient--redisplay-map)) - ((and transient--helpp - (not (memq this-command transient--quit-commands))) - (cond - ((transient-help) - (transient--do-suspend) - (setq this-command 'transient-suspend) - (transient--pre-exit)) - ((not (transient--edebug-command-p)) - (setq this-command 'transient-undefined)))) - ((and transient--editp - (transient-suffix-object) - (not (memq this-command - (cons 'transient-help transient--quit-commands)))) - (setq this-command 'transient-set-level) - (transient--wrap-command)) - (t - (setq transient--exitp nil) - (let ((exitp (eq (transient--call-pre-command) transient--exit))) - (transient--wrap-command) - (when exitp - (transient--maybe-set-value 'exit) - (transient--pre-exit))))))) + ((memq this-command '(transient-update transient-quit-seq)) + (transient--pop-keymap 'transient--redisplay-map)) + ((and transient--helpp + (not (memq this-command transient--quit-commands))) + (cond + ((transient-help) + (transient--do-suspend) + (setq this-command 'transient-suspend) + (transient--pre-exit)) + ((not (transient--edebug-command-p)) + (setq this-command 'transient-undefined)))) + ((and transient--editp + (transient-suffix-object) + (not (memq this-command + (cons 'transient-help transient--quit-commands)))) + (setq this-command 'transient-set-level) + (transient--wrap-command)) + (t + (setq transient--exitp nil) + (let ((exitp (eq (transient--call-pre-command) transient--exit))) + (transient--wrap-command) + (when exitp + (transient--maybe-set-value 'exit) + (transient--pre-exit))))))) (defun transient--pre-exit () (transient--debug 'pre-exit) @@ -2787,25 +2788,25 @@ value. Otherwise return CHILDREN as is.") (advice (lambda (fn &rest args) (interactive - (lambda (spec) - (let ((abort t)) - (unwind-protect - (prog1 (let ((debugger #'transient--exit-and-debug)) - (if-let* ((obj suffix) - (grp (oref obj parent)) - (adv (or (oref obj advice*) - (oref grp advice*)))) - (funcall - adv #'advice-eval-interactive-spec spec) - (advice-eval-interactive-spec spec))) - (setq abort nil)) - (when abort - (when-let* ((unwind (oref prefix unwind-suffix))) - (transient--debug 'unwind-interactive) - (funcall unwind command)) - (when (symbolp command) - (remove-function (symbol-function command) advice)) - (oset prefix unwind-suffix nil)))))) + (lambda (spec) + (let ((abort t)) + (unwind-protect + (prog1 (let ((debugger #'transient--exit-and-debug)) + (if-let* ((obj suffix) + (grp (oref obj parent)) + (adv (or (oref obj advice*) + (oref grp advice*)))) + (funcall + adv #'advice-eval-interactive-spec spec) + (advice-eval-interactive-spec spec))) + (setq abort nil)) + (when abort + (when-let* ((unwind (oref prefix unwind-suffix))) + (transient--debug 'unwind-interactive) + (funcall unwind command)) + (when (symbolp command) + (remove-function (symbol-function command) advice)) + (oset prefix unwind-suffix nil)))))) (unwind-protect (let ((debugger #'transient--exit-and-debug)) (if-let* ((obj suffix) @@ -3316,21 +3317,22 @@ transient is active." ;;;; Help -(defun transient-help (&optional interactive) +(defun transient-help (&optional interactivep) "Show help for the active transient or one of its suffixes. \n(fn)" (interactive (list t)) - (if interactive - (setq transient--helpp t) - (with-demoted-errors "transient-help: %S" - (when (lookup-key transient--transient-map - (this-single-command-raw-keys)) - (setq transient--helpp nil) - (transient--display-help #'transient-show-help - (if (eq this-original-command 'transient-help) - transient--prefix - (or (transient-suffix-object) - this-original-command))))))) + (cond + (interactivep + (setq transient--helpp t)) + ((lookup-key transient--transient-map + (this-single-command-raw-keys)) + (setq transient--helpp nil) + (with-demoted-errors "transient-help: %S" + (transient--display-help #'transient-show-help + (if (eq this-original-command 'transient-help) + transient--prefix + (or (transient-suffix-object) + this-original-command))))))) (transient-define-suffix transient-describe () "From a transient menu, describe something in another buffer. @@ -3358,55 +3360,55 @@ For example: (defun transient-set-level (&optional command level) "Set the level of the transient or one of its suffix commands." (interactive - (let ((command this-original-command) - (prefix (oref transient--prefix command))) - (and (or (not (eq command 'transient-set-level)) - (and transient--editp - (setq command prefix))) - (list command - (let ((keys (this-single-command-raw-keys))) - (and (lookup-key transient--transient-map keys) - (progn - (transient--show) - (string-to-number - (transient--read-number-N - (format "Set level for `%s': " command) - nil nil (not (eq command prefix))))))))))) + (let ((command this-original-command) + (prefix (oref transient--prefix command))) + (and (or (not (eq command 'transient-set-level)) + (and transient--editp + (setq command prefix))) + (list command + (let ((keys (this-single-command-raw-keys))) + (and (lookup-key transient--transient-map keys) + (progn + (transient--show) + (string-to-number + (transient--read-number-N + (format "Set level for `%s': " command) + nil nil (not (eq command prefix))))))))))) (cond - ((not command) - (setq transient--editp t) - (transient-setup)) - (level - (let* ((prefix (oref transient--prefix command)) - (alist (alist-get prefix transient-levels)) - (akey command)) - (cond ((eq command prefix) - (oset transient--prefix level level) - (setq akey t)) - (t - (oset (transient-suffix-object command) level level) - (when (cdr (cl-remove-if-not (lambda (obj) - (eq (oref obj command) command)) - transient--suffixes)) - (setq akey (cons command (this-command-keys)))))) - (setf (alist-get akey alist) level) - (setf (alist-get prefix transient-levels) alist)) - (transient-save-levels) - (transient--show)) - (t - (transient-undefined)))) + ((not command) + (setq transient--editp t) + (transient-setup)) + (level + (let* ((prefix (oref transient--prefix command)) + (alist (alist-get prefix transient-levels)) + (akey command)) + (cond ((eq command prefix) + (oset transient--prefix level level) + (setq akey t)) + (t + (oset (transient-suffix-object command) level level) + (when (cdr (cl-remove-if-not (lambda (obj) + (eq (oref obj command) command)) + transient--suffixes)) + (setq akey (cons command (this-command-keys)))))) + (setf (alist-get akey alist) level) + (setf (alist-get prefix transient-levels) alist)) + (transient-save-levels) + (transient--show)) + (t + (transient-undefined)))) (transient-define-suffix transient-toggle-level-limit () "Toggle whether to temporarily display suffixes on all levels." :description (lambda () (cond - (transient--all-levels-p - (format "Hide suffix %s" - (propertize - (format "levels > %s" (oref (transient-prefix-object) level)) - 'face 'transient-higher-level))) - ("Show all suffix levels"))) + (transient--all-levels-p + (format "Hide suffix %s" + (propertize + (format "levels > %s" (oref (transient-prefix-object) level)) + 'face 'transient-higher-level))) + ("Show all suffix levels"))) :transient t (interactive) (setq transient--all-levels-p (not transient--all-levels-p)) @@ -3695,13 +3697,13 @@ it\", in which case it is pointless to preserve history.)" 'transient--history)) (value (cond - (reader (funcall reader prompt initial-input history)) - (multi-value - (completing-read-multiple prompt choices nil nil - initial-input history)) - (choices - (completing-read prompt choices nil t initial-input history)) - ((read-string prompt initial-input history))))) + (reader (funcall reader prompt initial-input history)) + (multi-value + (completing-read-multiple prompt choices nil nil + initial-input history)) + (choices + (completing-read prompt choices nil t initial-input history)) + ((read-string prompt initial-input history))))) (cond ((and (equal value "") (not allow-empty)) (setq value nil)) ((and (equal value "\"\"") allow-empty) @@ -4097,17 +4099,19 @@ a string, using the empty string for the empty value, or nil if the option does not appear in ARGS. Append \"=\ to ARG to indicate that it is an option." - (if (string-suffix-p "=" arg) - (save-match-data - (and-let* ((match (let ((case-fold-search nil) - (re (format "\\`%s\\(?:=\\(.+\\)\\)?\\'" - (substring arg 0 -1)))) - (cl-find-if (lambda (a) - (and (stringp a) - (string-match re a))) - args)))) - (or (match-string 1 match) ""))) - (and (member arg args) t))) + (save-match-data + (cond* + ((member arg args) t) + ((bind-and* + (_(string-suffix-p "=" arg)) + (match (let ((case-fold-search nil) + (re (format "\\`%s\\(?:=\\(.+\\)\\)?\\'" + (substring arg 0 -1)))) + (cl-find-if (lambda (a) + (and (stringp a) + (string-match re a))) + args)))) + (match-string 1 match))))) ;;;; Return @@ -4177,21 +4181,23 @@ be non-nil. If either is non-nil, try the following in order: class definition or using its `transient-init-scope' method. If no prefix matches, return nil." - (if (or prefixes classes) - (let ((prefixes (ensure-list prefixes)) - (type (if (symbolp classes) classes (cons 'or classes)))) - (if-let* ((obj (cl-flet ((match (obj) - (and obj - (or (memq (oref obj command) prefixes) - (cl-typep obj type)) - obj))) - (or (match transient-current-prefix) - (match transient--prefix))))) - (oref obj scope) - (and (get (car prefixes) 'transient--prefix) - (oref (transient--init-prefix (car prefixes)) scope)))) - (and-let* ((obj (transient-prefix-object))) - (oref obj scope)))) + (cond* + ((or prefixes classes) + (let* ((prefixes (ensure-list prefixes)) + (type (if (symbolp classes) classes (cons 'or classes))) + (match (lambda (obj) + (and obj + (or (memq (oref obj command) prefixes) + (cl-typep obj type)) + obj)))) + (cond* + ((bind-and* (obj (or (funcall match transient-current-prefix) + (funcall match transient--prefix)))) + (oref obj scope)) + ((get (car prefixes) 'transient--prefix) + (oref (transient--init-prefix (car prefixes)) scope))))) + ((bind-and* (obj (transient-prefix-object))) + (oref obj scope)))) ;;;; History @@ -4309,15 +4315,15 @@ have a history of their own.") (and (minibuffer-selected-window) (selected-window)))) (cond - ((eq (car (window-parameter win 'quit-restore)) 'other) - ;; Window used to display another buffer. - (set-window-parameter win 'no-other-window - (window-parameter win 'prev--no-other-window)) - (set-window-parameter win 'prev--no-other-window nil)) - ((with-demoted-errors "Error while exiting transient: %S" - (if (window-parent win) - (delete-window win) - (delete-frame (window-frame win) t))))) + ((eq (car (window-parameter win 'quit-restore)) 'other) + ;; Window used to display another buffer. + (set-window-parameter win 'no-other-window + (window-parameter win 'prev--no-other-window)) + (set-window-parameter win 'prev--no-other-window nil)) + ((with-demoted-errors "Error while exiting transient: %S" + (if (window-parent win) + (delete-window win) + (delete-frame (window-frame win) t))))) (when remain-in-minibuffer-window (select-window remain-in-minibuffer-window)))) (when (buffer-live-p transient--buffer) @@ -4576,49 +4582,49 @@ as a button." (let ((len (length transient--redisplay-key)) (seq (cl-coerce (edmacro-parse-keys key t) 'list))) (cond - ((member (seq-take seq len) - (list transient--redisplay-key - (thread-last transient--redisplay-key - (cl-substitute ?- 'kp-subtract) - (cl-substitute ?= 'kp-equal) - (cl-substitute ?+ 'kp-add)))) - (let ((pre (key-description (vconcat (seq-take seq len)))) - (suf (key-description (vconcat (seq-drop seq len))))) - (setq pre (string-replace "RET" "C-m" pre)) - (setq pre (string-replace "TAB" "C-i" pre)) - (setq suf (string-replace "RET" "C-m" suf)) - (setq suf (string-replace "TAB" "C-i" suf)) - ;; We use e.g., "-k" instead of the more correct "- k", - ;; because the former is prettier. If we did that in - ;; the definition, then we want to drop the space that - ;; is reinserted above. False-positives are possible - ;; for silly bindings like "-C-c C-c". - (unless (string-search " " key) - (setq pre (string-replace " " "" pre)) - (setq suf (string-replace " " "" suf))) - (concat (propertize pre 'face 'transient-unreachable-key) - (and (string-prefix-p (concat pre " ") key) " ") - (propertize suf 'face (transient--key-face cmd key)) - (save-excursion - (and (string-match " +\\'" key) - (propertize (match-string 0 key) - 'face 'fixed-pitch)))))) - ((transient--lookup-key transient-sticky-map (kbd key)) - (propertize key 'face (transient--key-face cmd key))) - (t - (propertize key 'face 'transient-unreachable-key)))) + ((member (seq-take seq len) + (list transient--redisplay-key + (thread-last transient--redisplay-key + (cl-substitute ?- 'kp-subtract) + (cl-substitute ?= 'kp-equal) + (cl-substitute ?+ 'kp-add)))) + (let ((pre (key-description (vconcat (seq-take seq len)))) + (suf (key-description (vconcat (seq-drop seq len))))) + (setq pre (string-replace "RET" "C-m" pre)) + (setq pre (string-replace "TAB" "C-i" pre)) + (setq suf (string-replace "RET" "C-m" suf)) + (setq suf (string-replace "TAB" "C-i" suf)) + ;; We use e.g., "-k" instead of the more correct "- k", + ;; because the former is prettier. If we did that in + ;; the definition, then we want to drop the space that + ;; is reinserted above. False-positives are possible + ;; for silly bindings like "-C-c C-c". + (unless (string-search " " key) + (setq pre (string-replace " " "" pre)) + (setq suf (string-replace " " "" suf))) + (concat (propertize pre 'face 'transient-unreachable-key) + (and (string-prefix-p (concat pre " ") key) " ") + (propertize suf 'face (transient--key-face cmd key)) + (save-excursion + (and (string-match " +\\'" key) + (propertize (match-string 0 key) + 'face 'fixed-pitch)))))) + ((transient--lookup-key transient-sticky-map (kbd key)) + (propertize key 'face (transient--key-face cmd key))) + (t + (propertize key 'face 'transient-unreachable-key)))) (propertize key 'face (transient--key-face cmd key))))) (cl-defmethod transient-format-key :around ((obj transient-argument)) "Handle `transient-highlight-mismatched-keys'." (let ((key (cl-call-next-method obj))) (cond - ((not transient-highlight-mismatched-keys) key) - ((not (slot-boundp obj 'shortarg)) - (transient--add-face key 'transient-nonstandard-key)) - ((not (string-equal key (oref obj shortarg))) - (transient--add-face key 'transient-mismatched-key)) - (key)))) + ((not transient-highlight-mismatched-keys) key) + ((not (slot-boundp obj 'shortarg)) + (transient--add-face key 'transient-nonstandard-key)) + ((not (string-equal key (oref obj shortarg))) + (transient--add-face key 'transient-mismatched-key)) + (key)))) (cl-defgeneric transient-format-description (obj) "Format OBJ's `description' for display and return the result.") @@ -4631,7 +4637,7 @@ and its value is returned to the caller." (cl-defmethod transient-format-description ((obj transient-value-preset)) (pcase-let* (((eieio description key set) obj) - ((eieio value) transient--prefix) + (value (transient--get-extended-value)) (active (seq-set-equal-p set value))) (format "%s %s" @@ -4752,23 +4758,24 @@ apply the face `transient-unreachable' to the complete string." (propertize "|" 'face 'transient-delimiter)))))) (cl-defmethod transient--get-description ((obj transient-child)) - (and-let* ((desc (oref obj description))) - (if (functionp desc) - (if (= (car (transient--func-arity desc)) 1) - (funcall desc obj) - (funcall desc)) - desc))) + (cond* + ((bind* (desc (oref obj description)))) + ((functionp desc) + (condition-case nil + (funcall desc obj) + (wrong-number-of-arguments (funcall desc)))) + (desc))) (cl-defmethod transient--get-face ((obj transient-suffix) slot) - (and-let* ((_(slot-boundp obj slot)) - (face (slot-value obj slot))) - (if (and (not (facep face)) - (functionp face)) - (let ((transient--pending-suffix obj)) - (if (= (car (transient--func-arity face)) 1) - (funcall face obj) - (funcall face))) - face))) + (cond* + ((not (slot-boundp obj slot)) nil) + ((bind* (face (slot-value obj slot)))) + ((facep face) face) + ((functionp face) + (let ((transient--pending-suffix obj)) + (condition-case nil + (funcall face obj) + (wrong-number-of-arguments (funcall face))))))) (defun transient--add-face (string face &optional append beg end) (let ((str (copy-sequence string))) @@ -4875,7 +4882,7 @@ prefix method." ((eq this-command 'transient-help) (transient-show-help transient--prefix)) ((bind-and* (prefix (get (oref obj command) 'transient--prefix)) - (n/a (not (eq (oref transient--prefix command) this-command)))) + (_(not (eq (oref transient--prefix command) this-command)))) (transient-show-help prefix)) ((bind-and* (show-help (oref obj show-help))) (funcall show-help obj)) @@ -5116,20 +5123,20 @@ See `forward-button' for information about N." (defun transient--goto-button (command) (cond - ((stringp command) - (when (re-search-forward (concat "^" (regexp-quote command)) nil t) - (goto-char (match-beginning 0)))) - (command - (cl-flet ((found () - (and-let* ((button (button-at (point)))) - (eq (button-get button 'command) command)))) - (while (and (ignore-errors (forward-button 1)) - (not (found)))) - (unless (found) - (goto-char (point-min)) - (ignore-errors (forward-button 1)) - (unless (found) - (goto-char (point-min)))))))) + ((stringp command) + (when (re-search-forward (concat "^" (regexp-quote command)) nil t) + (goto-char (match-beginning 0)))) + (command + (cl-flet ((found () + (and-let* ((button (button-at (point)))) + (eq (button-get button 'command) command)))) + (while (and (ignore-errors (forward-button 1)) + (not (found)))) + (unless (found) + (goto-char (point-min)) + (ignore-errors (forward-button 1)) + (unless (found) + (goto-char (point-min)))))))) (defun transient--heading-at-point () (and (eq (get-text-property (point) 'face) 'transient-heading) @@ -5253,7 +5260,7 @@ that binding back, then call this function in your init file like so: Individual transients may already bind \\`q' to something else and such a binding would shadow the quit binding. If that is the case then \\`Q' is bound to whatever \\`q' would have been bound -to by setting `transient-substitute-key-function' to a function +to, by setting `transient-substitute-key-function' to a function that does that. Of course \\`Q' may already be bound to something else, so that function binds \\`M-q' to that command instead. Of course \\`M-q' may already be bound to something else, but @@ -5275,9 +5282,6 @@ we stop there." (face-remap-reset-base 'default) (face-remap-add-relative 'default 'fixed-pitch)) -(defun transient--func-arity (fn) - (func-arity (advice--cd*r (if (symbolp fn) (symbol-function fn) fn)))) - (defun transient--seq-reductions-from (function sequence initial-value) (let ((acc (list initial-value))) (seq-doseq (elt sequence) @@ -5373,7 +5377,11 @@ as stand-in for elements of exhausted lists." ;;;; _ (provide 'transient) ;; Local Variables: -;; indent-tabs-mode: nil ;; checkdoc-symbol-words: ("command-line" "edit-mode" "help-mode") +;; indent-tabs-mode: nil +;; lisp-indent-local-overrides: ( +;; (cond . 0) +;; (cond* . 0) +;; (interactive . 0)) ;; End: ;;; transient.el ends here diff --git a/lisp/tree-widget.el b/lisp/tree-widget.el index d958bd0e96d..e4e62f10b39 100644 --- a/lisp/tree-widget.el +++ b/lisp/tree-widget.el @@ -1,6 +1,6 @@ ;;; tree-widget.el --- Tree widget -*- lexical-binding:t -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: David Ponce ;; Created: 16 Feb 2001 diff --git a/lisp/treesit-x.el b/lisp/treesit-x.el index 308e2c23f8c..15c45d1c15c 100644 --- a/lisp/treesit-x.el +++ b/lisp/treesit-x.el @@ -1,6 +1,6 @@ ;;; treesit-x.el --- tree-sitter extensions -*- lexical-binding: t; -*- -;; Copyright (C) 2025 Free Software Foundation, Inc. +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: treesit, tree-sitter, languages, generic, font-lock diff --git a/lisp/treesit.el b/lisp/treesit.el index 752ab73a473..3feaa51c0a6 100644 --- a/lisp/treesit.el +++ b/lisp/treesit.el @@ -1,6 +1,6 @@ ;;; treesit.el --- tree-sitter utilities -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Maintainer: 付禹安 (Yuan Fu) ;; Keywords: treesit, tree-sitter, languages @@ -78,7 +78,9 @@ in a Emacs not built with tree-sitter library." (declare-function treesit-node-p "treesit.c") (declare-function treesit-compiled-query-p "treesit.c") (declare-function treesit-query-p "treesit.c") + (declare-function treesit-query-eagerly-compiled-p "treesit.c") (declare-function treesit-query-language "treesit.c") + (declare-function treesit-query-source "treesit.c") (declare-function treesit-node-parser "treesit.c") @@ -88,8 +90,12 @@ in a Emacs not built with tree-sitter library." (declare-function treesit-parser-buffer "treesit.c") (declare-function treesit-parser-language "treesit.c") (declare-function treesit-parser-tag "treesit.c") + (declare-function treesit-parser-embed-level "treesit.c") + (declare-function treesit-parser-set-embed-level "treesit.c") + (declare-function treesit-parser-changed-regions "treesit.c") (declare-function treesit-parser-root-node "treesit.c") + (declare-function treesit-parse-string "treesit.c") (declare-function treesit-parser-set-included-ranges "treesit.c") (declare-function treesit-parser-included-ranges "treesit.c") @@ -994,9 +1000,6 @@ is nil." (null (treesit-parser-embed-level parser))))) parsers)) -(declare-function treesit-parser-set-embed-level "treesit.c") -(declare-function treesit-parser-embed-level "treesit.c") - (defun treesit--update-ranges-non-local ( host-parser query embed-lang modified-tick embed-level &optional beg end offset range-fn) @@ -1260,7 +1263,7 @@ omitted, default END to BEG." ;;; Language -;; Defined in tressit.c. This is just to add some default values. +;; Defined in treesit.c. This is just to add some default values. (defvar treesit-languages-need-line-column-tracking '(haskell)) @@ -1279,7 +1282,7 @@ omitted, default END to BEG." "An alist mapping language symbols to their display names. Used by `treesit-language-display-name'. If there's no mapping for a -lamguage in this alist, `treesit-language-display-name' converts the +language in this alist, `treesit-language-display-name' converts the symbol to the display name by capitalizing the first letter of the symbol's name. Thus, languages like Java, Javascript, Rust don't need an entry in this variable.") @@ -1317,7 +1320,14 @@ compiled query objects are compiled lazily upon first use.)") (defun treesit--compile-query-with-cache (lang query) "Return the cached compiled QUERY for LANG. -If QUERY isn't cached, compile it and save to cache. +If QUERY is eagerly compiled, return it as-is. + +If QUERY is lazily compiled (i.e., not actually compiled) or not +compiled, return the cached compiled version of QUERY (either by finding +the cached version or compile and cache QUERY and return it). Note that +if QUERY is lazily compiled and there is a cache hit, the cached +compiled query will be returned and QUERY is simply discarded (rather +than eagerly compiled and returned). If QUERY is invalid, signals `treesit-query-error'. The fact that QUERY is invalid is also stored in cache, and the next call to this function @@ -1326,18 +1336,27 @@ with the same QUERY will signal too. QUERY is compared with `equal', so string form vs sexp form of a query, and the same query written differently are all considered separate queries." - (let ((value (gethash (cons lang query) treesit--query-cache))) - (if value - (if (treesit-compiled-query-p value) - value - (signal 'treesit-query-error value)) - (condition-case err - (let ((compiled (treesit-query-compile lang query 'eager))) - (puthash (cons lang query) compiled treesit--query-cache) - compiled) - (treesit-query-error - (puthash (cons lang query) (cdr err) treesit--query-cache) - (signal 'treesit-query-error (cdr err))))))) + (cl-assert (treesit-query-p query)) + ;; No need to asset LANG matches the language of QUERY if QUERY is + ;; compiled, if LANG is wrong, compilation will error anyway. + (if (and (treesit-compiled-query-p query) + (treesit-query-eagerly-compiled-p query)) + query + (let* ((query-source (if (treesit-compiled-query-p query) + (treesit-query-source query) + query)) + (value (gethash (cons lang query-source) treesit--query-cache))) + (if value + (if (treesit-compiled-query-p value) + value + (signal 'treesit-query-error value)) + (condition-case err + (let ((compiled (treesit-query-compile lang query 'eager))) + (puthash (cons lang query) compiled treesit--query-cache) + compiled) + (treesit-query-error + (puthash (cons lang query) (cdr err) treesit--query-cache) + (signal 'treesit-query-error (cdr err)))))))) (defvar-local treesit-font-lock-settings nil "A list of SETTINGs for treesit-based fontification. @@ -1453,7 +1472,10 @@ done via `customize-variable'. To see which syntactical categories are fontified by each level in a particular major mode, examine the buffer-local value of the -variable `treesit-font-lock-feature-list'." +variable `treesit-font-lock-feature-list'. + +Setting this variable directly with `setq' or `let' doesn't work; +use `setopt' or \\[customize-option] instead." :type 'integer :set #'treesit--font-lock-level-setter :version "29.1") @@ -1620,7 +1642,7 @@ name, it is ignored." (when (null current-feature) (signal 'treesit-font-lock-error `("Feature unspecified, use :feature keyword to specify the feature name for this query" ,token))) - (push (list token + (push (list (treesit-query-compile lang token) t current-feature current-override @@ -1678,17 +1700,18 @@ no match, return 3." (defun treesit-font-lock-recompute-features (&optional add-list remove-list language) - "Enable/disable font-lock features. + "Enable/disable font-lock features and validate and compile queries. -Enable each feature in ADD-LIST, disable each feature in -REMOVE-LIST. +When either ADD-LIST or REMOVE-LIST is non-nil, enable/disable features +according to ADD-LIST and REMOVE-LIST, on top of the currently enabled +features in the buffer. -If both ADD-LIST and REMOVE-LIST are omitted, recompute each -feature according to `treesit-font-lock-feature-list' and +If (and only if) both ADD-LIST and REMOVE-LIST are omitted, recompute +each feature according to `treesit-font-lock-feature-list' and `treesit-font-lock-level'. If the value of `treesit-font-lock-level', is N, then the features in the first N sublists of -`treesit-font-lock-feature-list' are enabled, and the rest of -the features are disabled. +`treesit-font-lock-feature-list' are enabled, and the rest of the +features are disabled. ADD-LIST and REMOVE-LIST are lists of feature symbols. The same feature symbol cannot appear in both lists; the function @@ -1732,7 +1755,9 @@ and leave settings for other languages unchanged." (if (memq feature features) nil t))) ((memq feature add-list) t) ((memq feature remove-list) nil) - (t current-value)))))) + (t current-value)))) + ;; Validate and compile newly enabled queries. + (treesit-validate-and-compile-font-lock-rules treesit-font-lock-settings))) (defun treesit-merge-font-lock-feature-list (features-list-1 features-list-2) "Merge two tree-sitter font lock feature lists. @@ -2156,8 +2181,6 @@ parser." (signal 'treesit-no-parser nil)))) (car (treesit-parser-list)))) -(declare-function treesit-parser-changed-regions "treesit.c") - (defun treesit--pre-redisplay (&rest _) "Force a reparse on primary parser and mark regions to be fontified." (unless (eq treesit--pre-redisplay-tick (buffer-chars-modified-tick)) @@ -3326,7 +3349,7 @@ The `sexp' type uses the `sexp' thing defined in `treesit-thing-settings'. With this type commands use only the treesit definitions of parser nodes, without distinction between symbols and lists. Since tree-sitter grammars could group node types in arbitrary ways, navigation by `sexp' might not -match your expectations, and might produce different results in differnt +match your expectations, and might produce different results in different treesit-based modes." (interactive "p") (if (not (treesit-thing-defined-p 'list (treesit-language-at (point)))) @@ -4264,11 +4287,9 @@ For BOUND, MOVE, BACKWARD, LOOKING-AT, see the descriptions in "Tree-sitter implementation of `hs-find-block-beginning-function'." (let* ((pred (bound-and-true-p hs-treesit-things)) (thing (treesit-thing-at (point) pred)) - (beg (when thing (treesit-node-start thing))) - (end (when beg (min (1+ beg) (point-max))))) + (beg (when thing (treesit-node-start thing)))) (when thing (goto-char beg) - (set-match-data (list beg end)) t))) (defun treesit-hs-find-next-block (_regexp maxp comments) @@ -4476,7 +4497,6 @@ before calling this function." (font-lock-fontify-syntactically-function . treesit-font-lock-fontify-region))) (treesit-font-lock-recompute-features) - (treesit-validate-and-compile-font-lock-rules treesit-font-lock-settings) (add-hook 'pre-redisplay-functions #'treesit--pre-redisplay 0 t)) ;; Syntax (add-hook 'syntax-propertize-extend-region-functions @@ -5538,7 +5558,7 @@ The value can be either a list of ts-modes to enable, or t to enable all ts-modes. The value nil (the default) means not to enable any tree-sitter based modes. -Enabling a tree-stter based mode means that visiting files in the +Enabling a tree-sitter based mode means that visiting files in the corresponding programming language will automatically turn on that mode, instead of any non-tree-sitter based modes for the same language." @@ -5596,7 +5616,7 @@ language." :eg-result c) (treesit-parser-tag :no-eval (treesit-parser-tag parser) - :eg-result 'embeded) + :eg-result 'embedded) (treesit-parser-changed-regions :no-eval (treesit-parser-changed-regions parser) :eg-result '((1 . 10) (24 . 58))) @@ -5759,7 +5779,11 @@ language." (treesit-query-language :no-eval (treesit-query-language compiled-query) :eg-result c) + (treesit-query-source + :no-eval (treesit-query-source compiled-query) + :eg-result "(function_definition) @defun") (treesit-query-valid-p) + (treesit-query-eagerly-compiled-p) (treesit-query-first-valid) (treesit-query-expand :eval (treesit-query-expand '((identifier) @id "return" @ret))) diff --git a/lisp/tty-tip.el b/lisp/tty-tip.el index 254591f6b7c..4db64126005 100644 --- a/lisp/tty-tip.el +++ b/lisp/tty-tip.el @@ -1,6 +1,6 @@ ;;; tty-tip.el --- Display help in kind of tooltips on ttys -*- lexical-binding: t -*- -;; Copyright (C) 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2024-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/lisp/tutorial.el b/lisp/tutorial.el index 4c9979ad461..6ade473c975 100644 --- a/lisp/tutorial.el +++ b/lisp/tutorial.el @@ -1,6 +1,6 @@ ;;; tutorial.el --- tutorial for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: help, internal @@ -69,18 +69,17 @@ Where WHERE is a text describing the key sequences to which DEF-FUN is bound now (or, if it is remapped, a key sequence for the function it is remapped to)" - (with-output-to-temp-buffer (help-buffer) - (help-setup-xref (list #'tutorial--describe-nonstandard-key value) - (called-interactively-p 'interactive)) - (with-current-buffer (help-buffer) - (insert - "Your Emacs customizations override the default binding for this key:" - "\n\n") - (let ((inhibit-read-only t)) - (cond - ((eq (car value) 'cua-mode) - (insert - "CUA mode is enabled. + (help-setup-xref (list #'tutorial--describe-nonstandard-key value) + (called-interactively-p 'interactive)) + (with-help-window (help-buffer) + (insert + "Your Emacs customizations override the default binding for this key:" + "\n\n") + (let ((inhibit-read-only t)) + (cond + ((eq (car value) 'cua-mode) + (insert + "CUA mode is enabled. When CUA mode is enabled, you can use C-z, C-x, C-c, and C-v to undo, cut, copy, and paste in addition to the normal Emacs @@ -94,119 +93,76 @@ options: - press the prefix key twice very quickly (within 0.2 seconds), - press the prefix key and the following key within 0.2 seconds, or - use the SHIFT key with the prefix key, i.e. C-S-x or C-S-c.")) - ((eq (car value) 'current-binding) - (let ((cb (nth 1 value)) - (db (nth 2 value)) - (key (nth 3 value)) - (where (nth 4 value)) - map - (maps (current-active-maps)) - mapsym) - ;; Look at the currently active keymaps and try to find - ;; first the keymap where the current binding occurs: - (while maps - (let* ((m (car maps)) - (mb (lookup-key m key t))) - (setq maps (cdr maps)) - (when (eq mb cb) - (setq map m) - (setq maps nil)))) - ;; Now, if a keymap was found we must found the symbol - ;; name for it to display to the user. This can not - ;; always be found since all keymaps does not have a - ;; symbol pointing to them, but here they should have - ;; that: - (when map - (mapatoms (lambda (s) - (and - ;; If not already found - (not mapsym) - ;; and if s is a keymap - (and (boundp s) - (keymapp (symbol-value s))) - ;; and not the local symbol map - (not (eq s 'map)) - ;; and the value of s is map - (eq map (symbol-value s)) - ;; then save this value in mapsym - (setq mapsym s))))) - (insert - (format-message - "The default Emacs binding for the key %s is the command `%s'. " - (key-description key) - db)) - (insert "However, your customizations have " - (if cb - (format-message "rebound it to the command `%s'" cb) - "unbound it")) - (insert ".") - (when mapsym - (insert " (For the more advanced user:" - (format-message - " This binding is in the keymap `%s'.)" mapsym))) - (if (string= where "") - (unless (keymapp db) - (insert "\n\nYou can use M-x " - (format "%s" db) - " RET instead.")) - (insert "\n\nWith your current key bindings" - " you can use " - (if (string-match-p "^the .*menus?$" where) - "" - "the key") - where - (format-message " to get the function `%s'." db)))) - (fill-region (point-min) (point))))) - (help-print-return-message)))) - -(defun tutorial--sort-keys (left right) - "Sort predicate for use with `tutorial--default-keys'. -This is a predicate function to `sort'. - -The sorting is for presentation purpose only and is done on the -key sequence. - -LEFT and RIGHT are the elements to compare." - (let ((x (append (cadr left) nil)) - (y (append (cadr right) nil))) - ;; Skip the front part of the key sequences if they are equal: - (while (and x y - (listp x) (listp y) - (equal (car x) (car y))) - (setq x (cdr x)) - (setq y (cdr y))) - ;; Try to make a comparison that is useful for presentation (this - ;; could be made nicer perhaps): - (let ((cx (car x)) - (cy (car y))) - ;;(message "x=%s, y=%s;;;; cx=%s, cy=%s" x y cx cy) - (cond - ;; Lists? Then call this again - ((and cx cy - (listp cx) - (listp cy)) - (tutorial--sort-keys cx cy)) - ;; Are both numbers? Then just compare them - ((and (wholenump cx) - (wholenump cy)) - (> cx cy)) - ;; Is one of them a number? Let that be bigger then. - ((wholenump cx) - t) - ((wholenump cy) - nil) - ;; Are both symbols? Compare the names then. - ((and (symbolp cx) - (symbolp cy)) - (string< (symbol-name cy) - (symbol-name cx))))))) + ((eq (car value) 'current-binding) + (let ((cb (nth 1 value)) + (db (nth 2 value)) + (key (nth 3 value)) + (where (nth 4 value)) + map + (maps (current-active-maps)) + mapsym) + ;; Look at the currently active keymaps and try to find + ;; first the keymap where the current binding occurs: + (while maps + (let* ((m (car maps)) + (mb (lookup-key m key t))) + (setq maps (cdr maps)) + (when (eq mb cb) + (setq map m) + (setq maps nil)))) + ;; Now, if a keymap was found we must found the symbol + ;; name for it to display to the user. This can not + ;; always be found since all keymaps does not have a + ;; symbol pointing to them, but here they should have + ;; that: + (when map + (mapatoms (lambda (s) + (and + ;; If not already found + (not mapsym) + ;; and if s is a keymap + (and (boundp s) + (keymapp (symbol-value s))) + ;; and not the local symbol map + (not (eq s 'map)) + ;; and the value of s is map + (eq map (symbol-value s)) + ;; then save this value in mapsym + (setq mapsym s))))) + (insert + (format-message + "The default Emacs binding for the key %s is the command `%s'. " + (key-description key) + db)) + (insert "However, your customizations have " + (if cb + (format-message "rebound it to the command `%s'" cb) + "unbound it")) + (insert ".") + (when mapsym + (insert " (For the more advanced user:" + (format-message + " This binding is in the keymap `%s'.)" mapsym))) + (if (string= where "") + (unless (keymapp db) + (insert "\n\nYou can use M-x " + (format "%s" db) + " RET instead.")) + (insert "\n\nWith your current key bindings" + " you can use " + (if (string-match-p "^the .*menus?$" where) + "" + "the key ") + where + (format-message " to get the function `%s'." db)))) + (fill-region (point-min) (point))))) + (help-print-return-message))) (defconst tutorial--default-keys - ;; On window system, `suspend-emacs' is replaced in the default keymap. - (let* ((suspend-emacs 'suspend-frame) - (default-keys + (eval-when-compile + (let ((default-keys ;; The first few are not mentioned but are basic: - `((ESC-prefix [27]) + '((ESC-prefix [27]) (Control-X-prefix [?\C-x]) (mode-specific-command-prefix [?\C-c]) (save-buffers-kill-terminal [?\C-x ?\C-c]) @@ -227,7 +183,7 @@ LEFT and RIGHT are the elements to compare." (move-end-of-line [?\C-e]) (backward-sentence [?\M-a]) (forward-sentence [?\M-e]) - (newline "\r") + (newline [?\C-m]) (beginning-of-buffer [?\M-<]) (end-of-buffer [?\M->]) (universal-argument [?\C-u]) @@ -245,7 +201,7 @@ LEFT and RIGHT are the elements to compare." ;; * INSERTING AND DELETING ;; C-u 8 * to insert ********. - (delete-backward-char "\d") + (delete-backward-char [?\C-?]) (delete-char [?\C-d]) (backward-kill-word [?\M-\d]) (kill-word [?\M-d]) @@ -309,77 +265,76 @@ LEFT and RIGHT are the elements to compare." ;; * CONCLUSION ;;(iconify-or-deiconify-frame [?\C-z]) - (,suspend-emacs [?\C-z])))) - (sort default-keys 'tutorial--sort-keys)) + (suspend-frame [?\C-z])))) + (sort default-keys :key #'cadr))) "Default Emacs key bindings that the tutorial depends on.") (defun tutorial--detailed-help (button) "Give detailed help about changed keys." - (with-output-to-temp-buffer (help-buffer) - (help-setup-xref (list #'tutorial--detailed-help button) - (called-interactively-p 'interactive)) - (with-current-buffer (help-buffer) - (let* ((tutorial-buffer (button-get button 'tutorial-buffer)) - (explain-key-desc (button-get button 'explain-key-desc)) - (changed-keys (with-current-buffer tutorial-buffer - (save-excursion - (goto-char (point-min)) - (tutorial--find-changed-keys - tutorial--default-keys))))) - (when changed-keys - (insert - "The following key bindings used in the tutorial have been changed + (help-setup-xref (list #'tutorial--detailed-help button) + (called-interactively-p 'interactive)) + (with-help-window (help-buffer) + (let* ((tutorial-buffer (button-get button 'tutorial-buffer)) + (explain-key-desc (button-get button 'explain-key-desc)) + (changed-keys (with-current-buffer tutorial-buffer + (save-excursion + (goto-char (point-min)) + (tutorial--find-changed-keys + tutorial--default-keys))))) + (when changed-keys + (insert + "The following key bindings used in the tutorial have been changed from the Emacs default:\n\n" ) - (let ((frm " %-14s %-27s %-16s\n")) - (insert (format frm - "Standard Key" "Command" "In Your Emacs"))) - (dolist (tk changed-keys) - (let* ((def-fun (nth 1 tk)) - (key (nth 0 tk)) - (def-fun-txt (nth 2 tk)) - (where (nth 3 tk)) - (remark (nth 4 tk)) - (key-txt (key-description key)) - (key-fun (with-current-buffer tutorial-buffer (key-binding key)))) - (unless (eq def-fun key-fun) - ;; Insert key binding description: - (when (string= key-txt explain-key-desc) - (put-text-property 0 (length key-txt) - 'face 'tutorial-warning-face key-txt)) - (insert " " key-txt " ") - (indent-to 18) - ;; Insert a link describing the old binding: - (insert-button def-fun-txt - 'value def-fun - 'action - (lambda (button) (interactive) - (describe-function - (button-get button 'value))) - 'follow-link t) - (indent-to 45) - (when (listp where) - (setq where "list")) - ;; Tell where the old binding is now: - (insert (format " %-16s " - (if (string= "" where) - (format "M-x %s" def-fun-txt) - where))) - ;; Insert a link with more information, for example - ;; current binding and keymap or information about - ;; cua-mode replacements: - (insert-button (car remark) - 'action - (lambda (b) (interactive) - (let ((value (button-get b 'value))) - (tutorial--describe-nonstandard-key value))) - 'value (cdr remark) - 'follow-link t) - (insert "\n"))))) + (let ((frm " %-14s %-27s %-16s\n")) + (insert (format frm + "Standard Key" "Command" "In Your Emacs"))) + (dolist (tk changed-keys) + (let* ((def-fun (nth 1 tk)) + (key (nth 0 tk)) + (def-fun-txt (nth 2 tk)) + (where (nth 3 tk)) + (remark (nth 4 tk)) + (key-txt (key-description key)) + (key-fun (with-current-buffer tutorial-buffer (key-binding key)))) + (unless (eq def-fun key-fun) + ;; Insert key binding description: + (when (string= key-txt explain-key-desc) + (put-text-property 0 (length key-txt) + 'face 'tutorial-warning-face key-txt)) + (insert " " key-txt " ") + (indent-to 18) + ;; Insert a link describing the old binding: + (insert-button def-fun-txt + 'value def-fun + 'action + (lambda (button) (interactive) + (describe-function + (button-get button 'value))) + 'follow-link t) + (indent-to 45) + (when (listp where) + (setq where "list")) + ;; Tell where the old binding is now: + (insert (format " %-16s " + (if (string= "" where) + (format "M-x %s" def-fun-txt) + where))) + ;; Insert a link with more information, for example + ;; current binding and keymap or information about + ;; cua-mode replacements: + (insert-button (car remark) + 'action + (lambda (b) (interactive) + (let ((value (button-get b 'value))) + (tutorial--describe-nonstandard-key value))) + 'value (cdr remark) + 'follow-link t) + (insert "\n"))))) - (insert " + (insert " It is OK to change key bindings, but changed bindings do not correspond to what the tutorial says.\n\n") - (help-print-return-message))))) + (help-print-return-message)))) (defun tutorial--find-changed-keys (default-keys) "Find the key bindings used in the tutorial that have changed. diff --git a/lisp/type-break.el b/lisp/type-break.el index 551af70a484..440a7136f1d 100644 --- a/lisp/type-break.el +++ b/lisp/type-break.el @@ -1,6 +1,6 @@ ;;; type-break.el --- encourage rests from typing at appropriate intervals -*- lexical-binding: t -*- -;; Copyright (C) 1994-1995, 1997, 2000-2025 Free Software Foundation, +;; Copyright (C) 1994-1995, 1997, 2000-2026 Free Software Foundation, ;; Inc. ;; Author: Noah Friedman diff --git a/lisp/uniquify.el b/lisp/uniquify.el index 4284d6a4feb..d6c56881ad3 100644 --- a/lisp/uniquify.el +++ b/lisp/uniquify.el @@ -1,6 +1,6 @@ ;;; uniquify.el --- unique buffer names dependent on file name -*- lexical-binding: t -*- -;; Copyright (C) 1989, 1995-1997, 2001-2025 Free Software Foundation, +;; Copyright (C) 1989, 1995-1997, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Dick King diff --git a/lisp/url/ChangeLog.1 b/lisp/url/ChangeLog.1 index 797dd977ab0..3b510b84814 100644 --- a/lisp/url/ChangeLog.1 +++ b/lisp/url/ChangeLog.1 @@ -3068,7 +3068,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1999, 2001-2002, 2004-2025 Free Software Foundation, + Copyright (C) 1999, 2001-2002, 2004-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lisp/url/url-auth.el b/lisp/url/url-auth.el index bd805413639..47be29d3a12 100644 --- a/lisp/url/url-auth.el +++ b/lisp/url/url-auth.el @@ -1,6 +1,6 @@ ;;; url-auth.el --- Uniform Resource Locator authorization modules -*- lexical-binding: t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-cache.el b/lisp/url/url-cache.el index e64a48c04f3..d25c666e830 100644 --- a/lisp/url/url-cache.el +++ b/lisp/url/url-cache.el @@ -1,6 +1,6 @@ ;;; url-cache.el --- Uniform Resource Locator retrieval tool -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-cid.el b/lisp/url/url-cid.el index 0848ad2ff68..cb809cbdbb0 100644 --- a/lisp/url/url-cid.el +++ b/lisp/url/url-cid.el @@ -1,6 +1,6 @@ ;;; url-cid.el --- Content-ID URL loader -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-cookie.el b/lisp/url/url-cookie.el index 42f81b2b5f6..153d39213b4 100644 --- a/lisp/url/url-cookie.el +++ b/lisp/url/url-cookie.el @@ -1,6 +1,6 @@ ;;; url-cookie.el --- URL cookie support -*- lexical-binding:t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-dav.el b/lisp/url/url-dav.el index 1d617ceb874..275555b4838 100644 --- a/lisp/url/url-dav.el +++ b/lisp/url/url-dav.el @@ -1,6 +1,6 @@ ;;; url-dav.el --- WebDAV support -*- lexical-binding: t; -*- -;; Copyright (C) 2001, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2004-2026 Free Software Foundation, Inc. ;; Author: Bill Perry ;; Maintainer: emacs-devel@gnu.org @@ -27,8 +27,6 @@ ;;; Code: -(eval-when-compile (require 'cl-lib)) - (require 'xml) (require 'url-util) (require 'url-handlers) diff --git a/lisp/url/url-domsuf.el b/lisp/url/url-domsuf.el index b13c3d47332..8871c8004e4 100644 --- a/lisp/url/url-domsuf.el +++ b/lisp/url/url-domsuf.el @@ -1,6 +1,6 @@ ;;; url-domsuf.el --- Say what domain names can have cookies set. -*- lexical-binding:t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen diff --git a/lisp/url/url-expand.el b/lisp/url/url-expand.el index c984e2ad4d7..4ac9e206a6f 100644 --- a/lisp/url/url-expand.el +++ b/lisp/url/url-expand.el @@ -1,6 +1,6 @@ ;;; url-expand.el --- expand-file-name for URLs -*- lexical-binding: t -*- -;; Copyright (C) 1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-file.el b/lisp/url/url-file.el index 8eac522eb19..27daf6141b9 100644 --- a/lisp/url/url-file.el +++ b/lisp/url/url-file.el @@ -1,6 +1,6 @@ ;;; url-file.el --- File retrieval code -*- lexical-binding:t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-ftp.el b/lisp/url/url-ftp.el index ea74bcb4552..535112764b6 100644 --- a/lisp/url/url-ftp.el +++ b/lisp/url/url-ftp.el @@ -1,6 +1,6 @@ ;;; url-ftp.el --- FTP wrapper -*- lexical-binding: t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-future.el b/lisp/url/url-future.el index 34dc2374884..12dd60434cd 100644 --- a/lisp/url/url-future.el +++ b/lisp/url/url-future.el @@ -1,6 +1,6 @@ ;;; url-future.el --- general futures facility for url.el -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Teodor Zlatanov ;; Keywords: data diff --git a/lisp/url/url-gw.el b/lisp/url/url-gw.el index c10db2d9f48..cbf2197c2ad 100644 --- a/lisp/url/url-gw.el +++ b/lisp/url/url-gw.el @@ -1,6 +1,6 @@ ;;; url-gw.el --- Gateway munging for URL loading -*- lexical-binding: t; -*- -;; Copyright (C) 1997-1998, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2004-2026 Free Software Foundation, Inc. ;; Author: Bill Perry ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/url/url-handlers.el b/lisp/url/url-handlers.el index 3c844358964..7199eeb01ff 100644 --- a/lisp/url/url-handlers.el +++ b/lisp/url/url-handlers.el @@ -1,6 +1,6 @@ ;;; url-handlers.el --- file-name-handler stuff for URL loading -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-history.el b/lisp/url/url-history.el index 825e259d330..95574ad03fa 100644 --- a/lisp/url/url-history.el +++ b/lisp/url/url-history.el @@ -1,6 +1,6 @@ ;;; url-history.el --- Global history tracking for URL package -*- lexical-binding:t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el index 04fee189cfa..ce512c6db33 100644 --- a/lisp/url/url-http.el +++ b/lisp/url/url-http.el @@ -1,6 +1,6 @@ ;;; url-http.el --- HTTP retrieval routines -*- lexical-binding:t -*- -;; Copyright (C) 1999, 2001, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2001, 2004-2026 Free Software Foundation, Inc. ;; Author: Bill Perry ;; Maintainer: emacs-devel@gnu.org @@ -1349,7 +1349,7 @@ The return value of this function is the retrieval buffer." ;; The async processes operate on a buffer created in this function, ;; so the way to accomplish this goal is to set buffer local copies of ;; the relevant variables to the dynamic values in scope as we create - ;; the buffer. When new variables are added that influence behaviour + ;; the buffer. When new variables are added that influence behavior ;; of requests, they should be added to the handling in this function ;; to make them work reliably without changing their global values. (let* (;; (host (url-host (or url-using-proxy url))) diff --git a/lisp/url/url-imap.el b/lisp/url/url-imap.el index b1a2bb94eb8..55edd1de2b5 100644 --- a/lisp/url/url-imap.el +++ b/lisp/url/url-imap.el @@ -1,6 +1,6 @@ ;;; url-imap.el --- IMAP retrieval routines -*- lexical-binding: t; -*- -;; Copyright (C) 1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2004-2026 Free Software Foundation, Inc. ;; Author: Simon Josefsson ;; Keywords: comm, data, processes diff --git a/lisp/url/url-irc.el b/lisp/url/url-irc.el index d81633b13b5..7c89130c75f 100644 --- a/lisp/url/url-irc.el +++ b/lisp/url/url-irc.el @@ -1,6 +1,6 @@ ;;; url-irc.el --- IRC URL interface -*- lexical-binding: t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-ldap.el b/lisp/url/url-ldap.el index e9f587c5f91..9298656a2d8 100644 --- a/lisp/url/url-ldap.el +++ b/lisp/url/url-ldap.el @@ -1,6 +1,6 @@ ;;; url-ldap.el --- LDAP Uniform Resource Locator retrieval code -*- lexical-binding: t; -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-mailto.el b/lisp/url/url-mailto.el index 0e6ad852928..902fa12d3cb 100644 --- a/lisp/url/url-mailto.el +++ b/lisp/url/url-mailto.el @@ -1,6 +1,6 @@ ;;; url-mailto.el --- Mail Uniform Resource Locator retrieval code -*- lexical-binding: t; -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-methods.el b/lisp/url/url-methods.el index d37537f3cdc..77b2e33b298 100644 --- a/lisp/url/url-methods.el +++ b/lisp/url/url-methods.el @@ -1,6 +1,6 @@ ;;; url-methods.el --- Load URL schemes as needed -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-misc.el b/lisp/url/url-misc.el index ef3e6284656..7c026ef1733 100644 --- a/lisp/url/url-misc.el +++ b/lisp/url/url-misc.el @@ -1,6 +1,6 @@ ;;; url-misc.el --- Misc Uniform Resource Locator retrieval code -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2002, 2004-2025 Free Software Foundation, +;; Copyright (C) 1996-1999, 2002, 2004-2026 Free Software Foundation, ;; Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-news.el b/lisp/url/url-news.el index 3ab1b63b7e6..c51f51f64b8 100644 --- a/lisp/url/url-news.el +++ b/lisp/url/url-news.el @@ -1,6 +1,6 @@ ;;; url-news.el --- News Uniform Resource Locator retrieval code -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-nfs.el b/lisp/url/url-nfs.el index f5eb269a943..63cbfe81e26 100644 --- a/lisp/url/url-nfs.el +++ b/lisp/url/url-nfs.el @@ -1,6 +1,6 @@ ;;; url-nfs.el --- NFS URL interface -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-parse.el b/lisp/url/url-parse.el index 195cc957668..2be45668aca 100644 --- a/lisp/url/url-parse.el +++ b/lisp/url/url-parse.el @@ -1,6 +1,6 @@ ;;; url-parse.el --- Uniform Resource Locator parser -*- lexical-binding: t -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes diff --git a/lisp/url/url-privacy.el b/lisp/url/url-privacy.el index dcf93bed35c..987fe0afa76 100644 --- a/lisp/url/url-privacy.el +++ b/lisp/url/url-privacy.el @@ -1,6 +1,6 @@ ;;; url-privacy.el --- Global history tracking for URL package -*- lexical-binding: t; -*- -;; Copyright (C) 1996-1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-proxy.el b/lisp/url/url-proxy.el index ed5c157aa49..ab3d0d89dda 100644 --- a/lisp/url/url-proxy.el +++ b/lisp/url/url-proxy.el @@ -1,6 +1,6 @@ ;;; url-proxy.el --- Proxy server support -*- lexical-binding: t; -*- -;; Copyright (C) 1999, 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2004-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index d528dc7631e..06d30e0fe3f 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el @@ -1,6 +1,6 @@ ;;; url-queue.el --- Fetching web pages in parallel -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen ;; Keywords: comm diff --git a/lisp/url/url-tramp.el b/lisp/url/url-tramp.el index 690159b8d44..5c92e8995e0 100644 --- a/lisp/url/url-tramp.el +++ b/lisp/url/url-tramp.el @@ -1,6 +1,6 @@ ;;; url-tramp.el --- file-name-handler magic invoking Tramp for some protocols -*- lexical-binding: t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url-util.el b/lisp/url/url-util.el index 47ef8811c5e..d091092783c 100644 --- a/lisp/url/url-util.el +++ b/lisp/url/url-util.el @@ -1,6 +1,6 @@ ;;; url-util.el --- Miscellaneous helper routines for URL library -*- lexical-binding: t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Bill Perry ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/url/url-vars.el b/lisp/url/url-vars.el index 6e4aba081fb..f1bb05ae3c1 100644 --- a/lisp/url/url-vars.el +++ b/lisp/url/url-vars.el @@ -1,6 +1,6 @@ ;;; url-vars.el --- Variables for Uniform Resource Locator tool -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Keywords: comm, data, processes, hypermedia diff --git a/lisp/url/url.el b/lisp/url/url.el index 090a952cf4c..c8ee686a410 100644 --- a/lisp/url/url.el +++ b/lisp/url/url.el @@ -1,6 +1,6 @@ ;;; url.el --- Uniform Resource Locator retrieval tool -*- lexical-binding: t -*- -;; Copyright (C) 1996-1999, 2001, 2004-2025 Free Software Foundation, +;; Copyright (C) 1996-1999, 2001, 2004-2026 Free Software Foundation, ;; Inc. ;; Author: Bill Perry diff --git a/lisp/use-package/use-package-bind-key.el b/lisp/use-package/use-package-bind-key.el index 19dc7e71f7a..445cd49ecbd 100644 --- a/lisp/use-package/use-package-bind-key.el +++ b/lisp/use-package/use-package-bind-key.el @@ -1,6 +1,6 @@ ;;; use-package-bind-key.el --- Support for the :bind/:bind-keymap keywords -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package-core.el b/lisp/use-package/use-package-core.el index 0f049a6f86b..39b8f6969f4 100644 --- a/lisp/use-package/use-package-core.el +++ b/lisp/use-package/use-package-core.el @@ -1,6 +1,6 @@ ;;; use-package-core.el --- A configuration macro for simplifying your .emacs -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package-delight.el b/lisp/use-package/use-package-delight.el index c3796da3217..4c6cef75392 100644 --- a/lisp/use-package/use-package-delight.el +++ b/lisp/use-package/use-package-delight.el @@ -1,6 +1,6 @@ ;;; use-package-delight.el --- Support for the :delight keyword -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package-diminish.el b/lisp/use-package/use-package-diminish.el index 20efa498cd9..f0ec59b1f2e 100644 --- a/lisp/use-package/use-package-diminish.el +++ b/lisp/use-package/use-package-diminish.el @@ -1,6 +1,6 @@ ;;; use-package-diminish.el --- Support for the :diminish keyword -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package-ensure-system-package.el b/lisp/use-package/use-package-ensure-system-package.el index 05f6992f995..023165f5c17 100644 --- a/lisp/use-package/use-package-ensure-system-package.el +++ b/lisp/use-package/use-package-ensure-system-package.el @@ -1,6 +1,6 @@ ;;; use-package-ensure-system-package.el --- auto install system packages -*- lexical-binding: t; -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; Author: Justin Talbott ;; Keywords: convenience, tools, extensions diff --git a/lisp/use-package/use-package-ensure.el b/lisp/use-package/use-package-ensure.el index 6e698218c7c..5980093bca0 100644 --- a/lisp/use-package/use-package-ensure.el +++ b/lisp/use-package/use-package-ensure.el @@ -1,6 +1,6 @@ ;;; use-package-ensure.el --- Support for the :ensure and :pin keywords -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package-jump.el b/lisp/use-package/use-package-jump.el index f82d1629281..8f1928e400b 100644 --- a/lisp/use-package/use-package-jump.el +++ b/lisp/use-package/use-package-jump.el @@ -1,6 +1,6 @@ ;;; use-package-jump.el --- Attempt to jump to a use-package declaration -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package-lint.el b/lisp/use-package/use-package-lint.el index 8494440474c..a30e0c03614 100644 --- a/lisp/use-package/use-package-lint.el +++ b/lisp/use-package/use-package-lint.el @@ -1,6 +1,6 @@ ;;; use-package-lint.el --- Attempt to find errors in use-package declarations -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/use-package/use-package.el b/lisp/use-package/use-package.el index 439ca814f0a..b9c46709a9f 100644 --- a/lisp/use-package/use-package.el +++ b/lisp/use-package/use-package.el @@ -1,6 +1,6 @@ ;;; use-package.el --- A configuration macro for simplifying your .emacs -*- lexical-binding: t; -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: John Wiegley ;; Maintainer: John Wiegley diff --git a/lisp/userlock.el b/lisp/userlock.el index 9c1c73cbc8c..a8da729e239 100644 --- a/lisp/userlock.el +++ b/lisp/userlock.el @@ -1,6 +1,6 @@ ;;; userlock.el --- handle file access contention between multiple users -*- lexical-binding: t -*- -;; Copyright (C) 1985-1986, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-1986, 2001-2026 Free Software Foundation, Inc. ;; Author: Richard King ;; (according to authors.el) diff --git a/lisp/vc/add-log.el b/lisp/vc/add-log.el index c7d0051fe4b..762f07ff5ea 100644 --- a/lisp/vc/add-log.el +++ b/lisp/vc/add-log.el @@ -1,6 +1,6 @@ ;;; add-log.el --- change log maintenance commands for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1985-1986, 1988, 1993-1994, 1997-1998, 2000-2025 Free +;; Copyright (C) 1985-1986, 1988, 1993-1994, 1997-1998, 2000-2026 Free ;; Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/vc/compare-w.el b/lisp/vc/compare-w.el index c05e06c24cb..4b114867af1 100644 --- a/lisp/vc/compare-w.el +++ b/lisp/vc/compare-w.el @@ -1,6 +1,6 @@ ;;; compare-w.el --- compare text between windows for Emacs -*- lexical-binding: t; -*- -;; Copyright (C) 1986-2025 Free Software Foundation, Inc. +;; Copyright (C) 1986-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: convenience files vc diff --git a/lisp/vc/cvs-status.el b/lisp/vc/cvs-status.el index 97d19132e39..b1de917075d 100644 --- a/lisp/vc/cvs-status.el +++ b/lisp/vc/cvs-status.el @@ -1,6 +1,6 @@ ;;; cvs-status.el --- major mode for browsing `cvs status' output -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs cvs status tree vc tools diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index a7d92039889..559310ff770 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -1,6 +1,6 @@ ;;; diff-mode.el --- a mode for viewing/editing context diffs -*- lexical-binding: t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: convenience patch diff vc @@ -199,10 +199,12 @@ The default \"-b\" means to ignore whitespace-only changes, ;; practical uses for `diff-minor-mode': bug#34080). (defvar-keymap diff-mode-shared-map - :doc "Additional bindings for read-only `diff-mode' buffers. + :doc "Bindings for read-only `diff-mode' buffers. These bindings are also available with an ESC prefix -(i.e. a \\=`M-' prefix) in read-write `diff-mode' buffers, -and with a `diff-minor-mode-prefix' prefix in `diff-minor-mode'." +(i.e. a \\=`M-' prefix) in all `diff-mode' buffers, including in +particular read-write `diff-mode' buffers, and with a +`diff-minor-mode-prefix' prefix in `diff-minor-mode'. +See also `diff-mode-read-only-map'." "n" #'diff-hunk-next "N" #'diff-file-next "p" #'diff-hunk-prev @@ -215,30 +217,42 @@ and with a `diff-minor-mode-prefix' prefix in `diff-minor-mode'." "{" #'diff-file-prev "RET" #'diff-goto-source "" #'diff-goto-source + "o" #'diff-goto-source ; other-window + " " #'undo-ignore-read-only) + +;; Not `diff-read-only-mode-map' because there is no such mode +;; `diff-read-only-mode'; see comment above. +(defvar-keymap diff-mode-read-only-map + :parent diff-mode-shared-map + :doc "Additional bindings for read-only `diff-mode' buffers. +Most of the bindings for read-only `diff-mode' buffers are in +`diff-mode-shared-map'. This map contains additional bindings for +read-only `diff-mode' buffers that are *not* also available with an ESC +prefix (i.e. a \\=`M-' prefix) in read-write (nor read-only) `diff-mode' +buffers." + ;; We don't want the following in read-write `diff-mode' buffers + ;; because they hide useful `M-' global bindings when editing. "W" #'widen "w" #'diff-kill-ring-save - "o" #'diff-goto-source ; other-window "A" #'diff-ediff-patch "r" #'diff-restrict-view "R" #'diff-reverse-direction - " " #'diff-undo + "s" #'diff-split-hunk - ;; The foregoing commands don't affect buffers beyond this one. - ;; The following command is the only one that has a single-letter - ;; binding and which affects buffers beyond this one. - ;; However, the following command asks for confirmation by default, - ;; so that seems okay. --spwhitton - "u" #'diff-revert-and-kill-hunk) + ;; The foregoing commands in `diff-mode-shared-map' and + ;; `diff-mode-read-only-map' don't affect buffers beyond this one. + ;; The following command is the only one that has a single-character + ;; binding and which affects buffers beyond this one. However, the + ;; following command asks for confirmation by default, so that seems + ;; okay. --spwhitton + "u" #'diff-revert-and-kill-hunk + ;; `diff-revert-and-kill-hunk' is the `diff-mode' analogue of what '@' + ;; does in VC-Dir, so give it the same short binding. + "@" #'diff-revert-and-kill-hunk) (defvar-keymap diff-mode-map :doc "Keymap for `diff-mode'. See also `diff-mode-shared-map'." - "ESC" (let ((map (define-keymap :parent diff-mode-shared-map))) - ;; We want to inherit most bindings from - ;; `diff-mode-shared-map', but not all since they may hide - ;; useful `M-' global bindings when editing. - (dolist (key '("A" "r" "R" "W" "w")) - (keymap-set map key nil)) - map) + "ESC" diff-mode-shared-map ;; From compilation-minor-mode. "C-c C-c" #'diff-goto-source ;; By analogy with the global C-x 4 a binding. @@ -868,37 +882,26 @@ If the prefix ARG is given, restrict the view to the current file instead." (apply #'narrow-to-region (if arg (diff-bounds-of-file) (diff-bounds-of-hunk))) (setq-local diff-narrowed-to (if arg 'file 'hunk))) +(put 'diff-restrict-view 'disabled t) (defun diff--some-hunks-p () (save-excursion (goto-char (point-min)) (re-search-forward diff-hunk-header-re nil t))) -(defun diff-hunk-kill () - "Kill the hunk at point." - (interactive) - (if (not (diff--some-hunks-p)) - (error "No hunks") - (diff-beginning-of-hunk t) - (let* ((hunk-bounds (diff-bounds-of-hunk)) - (file-bounds (ignore-errors (diff-bounds-of-file))) - ;; If the current hunk is the only one for its file, kill the - ;; file header too. - (bounds (if (and file-bounds - (progn (goto-char (car file-bounds)) - (= (progn (diff-hunk-next) (point)) - (car hunk-bounds))) - (progn (goto-char (cadr hunk-bounds)) - ;; bzr puts a newline after the last hunk. - (while (looking-at "^\n") - (forward-char 1)) - (= (point) (cadr file-bounds)))) - file-bounds - hunk-bounds)) - (inhibit-read-only t)) - (apply #'kill-region bounds) - (goto-char (car bounds)) - (ignore-errors (diff-beginning-of-hunk t))))) +(defun diff-hunk-kill (&optional beg end) + "Kill the hunk at point. +When killing the last hunk left for a file, kill the file header too. +Interactively, if the region is active, kill all hunks that the region +overlaps. + +When called from Lisp with optional arguments BEG and END non-nil, kill +all hunks overlapped by the region from BEG to END as though called +interactively with an active region delimited by BEG and END." + (interactive "R") + (when (xor beg end) + (error "Invalid call to `diff-hunk-kill'")) + (diff--revert-kill-hunks beg end nil)) ;; This is not `diff-kill-other-hunks' because we might need to make ;; copies of file headers in order to ensure the new kill ring entry @@ -1615,7 +1618,8 @@ else cover the whole buffer." ;; it's safer not to do it on big changes, e.g. when yanking a big ;; diff, or when the user edits the header, since we might then ;; screw up perfectly correct values. --Stef - (when (ignore-errors (diff-beginning-of-hunk t)) + (when (and (not track-changes-undo-only) + (ignore-errors (diff-beginning-of-hunk t))) (let* ((style (if (looking-at "\\*\\*\\*") 'context)) (start (line-beginning-position (if (eq style 'context) 3 2))) (mid (if (eq style 'context) @@ -1660,7 +1664,7 @@ else cover the whole buffer." (defvar-keymap diff-read-only-map :doc "Additional bindings for read-only `diff-mode' buffers." - :keymap (make-composed-keymap diff-mode-shared-map special-mode-map)) + :keymap (make-composed-keymap diff-mode-read-only-map special-mode-map)) ;; It should be lower than `outline-minor-mode' and `view-mode'. (or (assq 'diff-mode-read-only minor-mode-map-alist) @@ -1913,6 +1917,7 @@ Only works for unified diffs." (eq (char-after) ?\n) (> before 0) (> after 0)) (decf before) (decf after) t) + ((looking-at "\\\\ ") t) ; See `(diffutils)Incomplete Lines'. ((and (zerop before) (zerop after)) nil) ((or (< before 0) (< after 0)) (error (if (or (zerop before) (zerop after)) @@ -2272,6 +2277,83 @@ With a prefix argument, try to REVERSE the hunk." :type 'boolean :version "31.1") +(defun diff--revert-kill-hunks (beg end revertp) + "Workhorse routine for killing hunks, after possibly reverting them. +If BEG and END are nil, kill the hunk at point. +Otherwise kill all hunks overlapped by region delimited by BEG and END. +When killing a hunk that's the only one remaining for its file, kill the +file header too. +If REVERTP is non-nil, reverse-apply hunks before killing them." + ;; With BEG and END non-nil, we push each hunk to the kill ring + ;; separately. If we want to push to the kill ring just once, we have + ;; to decide how to handle file headers such that the meanings of the + ;; hunks in the kill ring entry, considered as a whole patch, do not + ;; deviate too far from the meanings the hunks had in this buffer. + ;; + ;; For example, if we have a single hunk for one file followed by + ;; multiple hunks for another file, and we naïvely kill the single + ;; hunk and the first of the multiple hunks, our kill ring entry will + ;; be a patch applying those two hunks to the first file. This is + ;; because killing the single hunk will have brought its file header + ;; with it, but not so killing the second hunk. So we will have put + ;; together hunks that were previously for two different files. + ;; + ;; One option is to *copy* every file header that the region overlaps + ;; (and that we will not kill, because we are leaving other hunks for + ;; that file behind). But then the text this command pushes to the + ;; kill ring would be different from the text it removes from the + ;; buffer, which would be unintuitive for an Emacs kill command. + ;; + ;; An alternative might be to have restrictions as follows: + ;; + ;; Interactively, if the region is active, try to kill all hunks that the + ;; region overlaps. This works when either + ;; - all the hunks the region overlaps are for the same file; or + ;; - the last hunk the region overlaps is the last hunk for its file. + ;; These restrictions are so that the text added to the kill ring does not + ;; merge together hunks for different files under a single file header. + ;; + ;; We would error out if neither property is met. When either holds, + ;; any file headers the region overlaps are ones we should kill. + (unless (diff--some-hunks-p) + (error "No hunks")) + (if beg + (save-excursion + (goto-char beg) + (setq beg (car (diff-bounds-of-hunk))) + (goto-char end) + (unless (looking-at diff-hunk-header-re) + (setq end (cadr (diff-bounds-of-hunk))))) + (pcase-setq `(,beg ,end) (diff-bounds-of-hunk))) + (when (or (not revertp) (null (diff-apply-buffer beg end t))) + (goto-char end) + (when-let* ((pos (diff--at-diff-header-p))) + (goto-char pos)) + (setq beg (copy-marker beg) end (point-marker)) + (unwind-protect + (cl-loop initially (goto-char beg) + with inhibit-read-only = t + for (hunk-beg hunk-end) = (diff-bounds-of-hunk) + for file-bounds = (ignore-errors (diff-bounds-of-file)) + for (file-beg file-end) = file-bounds + if (and file-bounds + (progn + (goto-char file-beg) + (diff-hunk-next) + (eq (point) hunk-beg)) + (progn + (goto-char hunk-end) + ;; bzr puts a newline after the last hunk. + (while (looking-at "^\n") (forward-char 1)) + (eq (point) file-end))) + do (kill-region file-beg file-end) (goto-char file-beg) + else do (kill-region hunk-beg hunk-end) (goto-char hunk-beg) + do (ignore-errors (diff-beginning-of-hunk t)) + until (or (< (point) (marker-position beg)) + (eql (point) (marker-position end)))) + (set-marker beg nil) + (set-marker end nil)))) + (defun diff-revert-and-kill-hunk (&optional beg end) "Reverse-apply and then kill the hunk at point. Save changed buffer. Interactively, if the region is active, reverse-apply and kill all @@ -2297,27 +2379,7 @@ BEG and END." (error "Invalid call to `diff-revert-and-kill-hunk'")) (when (or (not diff-ask-before-revert-and-kill-hunk) (y-or-n-p "Really reverse-apply and kill hunk(s)?")) - (if beg - (save-excursion - (goto-char beg) - (setq beg (car (diff-bounds-of-hunk))) - (goto-char end) - (unless (looking-at diff-hunk-header-re) - (setq end (cadr (diff-bounds-of-hunk))))) - (pcase-setq `(,beg ,end) (diff-bounds-of-hunk))) - (when (null (diff-apply-buffer beg end t)) - ;; Use `diff-hunk-kill' because it properly handles file headers. - (goto-char end) - (when-let* ((pos (diff--at-diff-header-p))) - (goto-char pos)) - (setq beg (copy-marker beg) end (point-marker)) - (unwind-protect - (cl-loop initially (goto-char beg) - do (diff-hunk-kill) - until (or (< (point) (marker-position beg)) - (eql (point) (marker-position end)))) - (set-marker beg nil) - (set-marker end nil))))) + (diff--revert-kill-hunks beg end t))) (defun diff-apply-buffer (&optional beg end reverse test-or-no-save) "Apply the diff in the entire diff buffer. @@ -2349,7 +2411,7 @@ applied. Other non-nil values are reserved." (while (pcase-let ((`(,buf ,line-offset ,pos ,_src ,dst ,switched) (diff-find-source-location nil reverse test))) ;; FIXME: Should respect `diff-apply-hunk-to-backup-file' - ;; similarly to how `diff-apply-buffer' does. + ;; similarly to how `diff-apply-hunk' does. ;; Prompt for each relevant file. (cond ((and line-offset (not switched)) (push (cons pos dst) @@ -2806,11 +2868,7 @@ Call FUN with two args (BEG and END) for each hunk." (defun diff--overlay-auto-delete (ol _after _beg _end &optional _len) (delete-overlay ol)) -(defun diff-undo (&optional arg) - "Perform `undo', ignoring the buffer's read-only status." - (interactive "P") - (let ((inhibit-read-only t)) - (undo arg))) +(define-obsolete-function-alias 'diff-undo #'undo-ignore-read-only "31.1") ;;;###autoload (defcustom diff-add-log-use-relative-names nil @@ -3101,7 +3159,7 @@ fixed, visit it in a buffer." (defun diff--font-lock-prettify (limit) (when diff-font-lock-prettify ;; FIXME: `window-fringes` uselessly allocates 4 cons cells, - ;; but the previous use of `frame-paramter' ended up internally + ;; but the previous use of `frame-parameter' ended up internally ;; calling `frame-parameters' making it even worse! (when (> (car (window-fringes)) 0) (save-excursion diff --git a/lisp/vc/diff.el b/lisp/vc/diff.el index d85b4487508..2ae42aea358 100644 --- a/lisp/vc/diff.el +++ b/lisp/vc/diff.el @@ -1,6 +1,6 @@ ;;; diff.el --- run `diff' -*- lexical-binding: t -*- -;; Copyright (C) 1992, 1994, 1996, 2001-2025 Free Software Foundation, +;; Copyright (C) 1992, 1994, 1996, 2001-2026 Free Software Foundation, ;; Inc. ;; Author: Frank Bresz diff --git a/lisp/vc/ediff-diff.el b/lisp/vc/ediff-diff.el index 336e3cebfc7..59208bdd508 100644 --- a/lisp/vc/ediff-diff.el +++ b/lisp/vc/ediff-diff.el @@ -1,6 +1,6 @@ ;;; ediff-diff.el --- diff-related utilities -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-help.el b/lisp/vc/ediff-help.el index 707672b56f2..cd9396f1b10 100644 --- a/lisp/vc/ediff-help.el +++ b/lisp/vc/ediff-help.el @@ -1,6 +1,6 @@ ;;; ediff-help.el --- Code related to the contents of Ediff help buffers -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-hook.el b/lisp/vc/ediff-hook.el index 87fd8e4f066..c728a701be4 100644 --- a/lisp/vc/ediff-hook.el +++ b/lisp/vc/ediff-hook.el @@ -1,6 +1,6 @@ ;;; ediff-hook.el --- setup for Ediff's menus and autoloads -*- lexical-binding:t -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-init.el b/lisp/vc/ediff-init.el index 7254b32e41e..c24cdd6ecd3 100644 --- a/lisp/vc/ediff-init.el +++ b/lisp/vc/ediff-init.el @@ -1,6 +1,6 @@ ;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-merg.el b/lisp/vc/ediff-merg.el index f8a134a34a5..cbdb1d155b5 100644 --- a/lisp/vc/ediff-merg.el +++ b/lisp/vc/ediff-merg.el @@ -1,6 +1,6 @@ ;;; ediff-merg.el --- merging utilities -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-mult.el b/lisp/vc/ediff-mult.el index ade20a4a299..aacb99e24a6 100644 --- a/lisp/vc/ediff-mult.el +++ b/lisp/vc/ediff-mult.el @@ -1,6 +1,6 @@ ;;; ediff-mult.el --- support for multi-file/multi-buffer processing in Ediff -*- lexical-binding:t -*- -;; Copyright (C) 1995-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-ptch.el b/lisp/vc/ediff-ptch.el index 1e66a016375..11833cad984 100644 --- a/lisp/vc/ediff-ptch.el +++ b/lisp/vc/ediff-ptch.el @@ -1,6 +1,6 @@ ;;; ediff-ptch.el --- Ediff's patch support -*- lexical-binding:t -*- -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-util.el b/lisp/vc/ediff-util.el index ca971a86c84..6974745db1f 100644 --- a/lisp/vc/ediff-util.el +++ b/lisp/vc/ediff-util.el @@ -1,6 +1,6 @@ ;;; ediff-util.el --- the core commands and utilities of ediff -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-vers.el b/lisp/vc/ediff-vers.el index f50c28be586..b11c700ece8 100644 --- a/lisp/vc/ediff-vers.el +++ b/lisp/vc/ediff-vers.el @@ -1,6 +1,6 @@ ;;; ediff-vers.el --- version control interface to Ediff -*- lexical-binding:t -*- -;; Copyright (C) 1995-1997, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995-1997, 2001-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff-wind.el b/lisp/vc/ediff-wind.el index 076c742ef58..65883373ca7 100644 --- a/lisp/vc/ediff-wind.el +++ b/lisp/vc/ediff-wind.el @@ -1,6 +1,6 @@ ;;; ediff-wind.el --- window manipulation utilities -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Package: ediff diff --git a/lisp/vc/ediff.el b/lisp/vc/ediff.el index bc89b2025ff..2f472435105 100644 --- a/lisp/vc/ediff.el +++ b/lisp/vc/ediff.el @@ -1,6 +1,6 @@ ;;; ediff.el --- a comprehensive visual interface to diff & patch -*- lexical-binding:t -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Michael Kifer ;; Created: February 2, 1994 diff --git a/lisp/vc/log-edit.el b/lisp/vc/log-edit.el index 66d94cc3de1..e3c92bd4d28 100644 --- a/lisp/vc/log-edit.el +++ b/lisp/vc/log-edit.el @@ -1,6 +1,6 @@ ;;; log-edit.el --- Major mode for editing CVS commit messages -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs cvs commit log vc diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el index c8140c1c41b..27c62847b50 100644 --- a/lisp/vc/log-view.el +++ b/lisp/vc/log-view.el @@ -1,6 +1,6 @@ ;;; log-view.el --- Major mode for browsing revision log histories -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: tools, vc @@ -130,7 +130,7 @@ (defvar-keymap log-view-mode-map "RET" #'log-view-toggle-entry-display - "M-" #'log-view-display-entry-and-diff + "M-RET" #'log-view-display-entry-and-diff "m" #'log-view-mark-entry "u" #'log-view-unmark-entry "U" #'log-view-unmark-all-entries diff --git a/lisp/vc/pcvs-defs.el b/lisp/vc/pcvs-defs.el index d32b6633bda..c386fc533c2 100644 --- a/lisp/vc/pcvs-defs.el +++ b/lisp/vc/pcvs-defs.el @@ -1,6 +1,6 @@ ;;; pcvs-defs.el --- variable definitions for PCL-CVS -*- lexical-binding: t; -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs diff --git a/lisp/vc/pcvs-info.el b/lisp/vc/pcvs-info.el index d47c5ed537a..e0ddbe1a0a3 100644 --- a/lisp/vc/pcvs-info.el +++ b/lisp/vc/pcvs-info.el @@ -1,6 +1,6 @@ ;;; pcvs-info.el --- internal representation of a fileinfo entry -*- lexical-binding: t; -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs diff --git a/lisp/vc/pcvs-parse.el b/lisp/vc/pcvs-parse.el index 8b75779da96..8a0dc0d96ce 100644 --- a/lisp/vc/pcvs-parse.el +++ b/lisp/vc/pcvs-parse.el @@ -1,6 +1,6 @@ ;;; pcvs-parse.el --- the CVS output parser -*- lexical-binding: t; -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs diff --git a/lisp/vc/pcvs-util.el b/lisp/vc/pcvs-util.el index dabf753dd82..50ee6096b10 100644 --- a/lisp/vc/pcvs-util.el +++ b/lisp/vc/pcvs-util.el @@ -1,6 +1,6 @@ ;;; pcvs-util.el --- utility functions for PCL-CVS -*- lexical-binding: t; -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs diff --git a/lisp/vc/pcvs.el b/lisp/vc/pcvs.el index 7f275c141ae..6c11a0351dc 100644 --- a/lisp/vc/pcvs.el +++ b/lisp/vc/pcvs.el @@ -1,6 +1,6 @@ ;;; pcvs.el --- a front-end to CVS -*- lexical-binding:t -*- -;; Copyright (C) 1991-2025 Free Software Foundation, Inc. +;; Copyright (C) 1991-2026 Free Software Foundation, Inc. ;; Author: The PCL-CVS Trust ;; Per Cederqvist diff --git a/lisp/vc/smerge-mode.el b/lisp/vc/smerge-mode.el index 173b67e1983..8bca90c09ac 100644 --- a/lisp/vc/smerge-mode.el +++ b/lisp/vc/smerge-mode.el @@ -1,6 +1,6 @@ ;;; smerge-mode.el --- Minor mode to resolve diff3 conflicts -*- lexical-binding: t -*- -;; Copyright (C) 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1999-2026 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: vc, tools, revision control, merge, diff3, cvs, conflict diff --git a/lisp/vc/vc-annotate.el b/lisp/vc/vc-annotate.el index 6bed36c99dc..83b5185a4b4 100644 --- a/lisp/vc/vc-annotate.el +++ b/lisp/vc/vc-annotate.el @@ -1,6 +1,6 @@ ;;; vc-annotate.el --- VC Annotate Support -*- lexical-binding: t -*- -;; Copyright (C) 1997-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2000-2026 Free Software Foundation, Inc. ;; Author: Martin Lorentzson ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/vc/vc-bzr.el b/lisp/vc/vc-bzr.el index 86e9aac21f6..1be1f6db7f4 100644 --- a/lisp/vc/vc-bzr.el +++ b/lisp/vc/vc-bzr.el @@ -1,6 +1,6 @@ ;;; vc-bzr.el --- VC backend for the bzr revision control system -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Dave Love ;; Riccardo Murri diff --git a/lisp/vc/vc-cvs.el b/lisp/vc/vc-cvs.el index 135fe06032b..eb971754c1c 100644 --- a/lisp/vc/vc-cvs.el +++ b/lisp/vc/vc-cvs.el @@ -1,6 +1,6 @@ ;;; vc-cvs.el --- non-resident support for CVS version-control -*- lexical-binding: t -*- -;; Copyright (C) 1995, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1995, 1998-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Package: vc diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el index 11083878025..5781ddc45d9 100644 --- a/lisp/vc/vc-dir.el +++ b/lisp/vc/vc-dir.el @@ -1,6 +1,6 @@ ;;; vc-dir.el --- Directory status display under VC -*- lexical-binding: t -*- -;; Copyright (C) 2007-2025 Free Software Foundation, Inc. +;; Copyright (C) 2007-2026 Free Software Foundation, Inc. ;; Author: Dan Nicolaescu ;; Keywords: vc tools @@ -294,10 +294,10 @@ That is, refreshing the VC-Dir buffer also hides `up-to-date' and '(menu-item "Compare with Base Version" vc-diff :help "Compare file set with the base version")) (define-key map [logo] - '(menu-item "Show Outgoing Log" vc-log-outgoing + '(menu-item "Show Outgoing Log" vc-root-log-outgoing :help "Show a log of changes that will be sent with a push operation")) (define-key map [logi] - '(menu-item "Show Incoming Log" vc-log-incoming + '(menu-item "Show Incoming Log" vc-root-log-incoming :help "Show a log of changes that will be received with a pull operation")) (define-key map [log] '(menu-item "Show History" vc-print-log @@ -354,8 +354,8 @@ That is, refreshing the VC-Dir buffer also hides `up-to-date' and (define-key map "P" #'vc-push) ;; C-x v P (define-key map "l" #'vc-print-log) ;; C-x v l (define-key map "L" #'vc-print-root-log) ;; C-x v L - (define-key map "I" #'vc-log-incoming) ;; C-x v I - (define-key map "O" #'vc-log-outgoing) ;; C-x v O + (define-key map "I" #'vc-root-log-incoming) ;; C-x v I + (define-key map "O" #'vc-root-log-outgoing) ;; C-x v O ;; More confusing than helpful, probably ;;(define-key map "R" #'vc-revert) ;; u is taken by vc-dir-unmark. ;;(define-key map "A" #'vc-annotate) ;; g is taken by revert-buffer @@ -396,11 +396,17 @@ That is, refreshing the VC-Dir buffer also hides `up-to-date' and (define-key map (kbd "M-s a C-s") #'vc-dir-isearch) (define-key map (kbd "M-s a M-C-s") #'vc-dir-isearch-regexp) (define-key map "G" #'vc-dir-ignore) + (define-key map "@" #'vc-revert) + (define-key map "Tl" #'vc-log-outgoing-base) + (define-key map "TL" #'vc-root-log-outgoing-base) + (define-key map "T=" #'vc-diff-outgoing-base) + (define-key map "TD" #'vc-root-diff-outgoing-base) (let ((branch-map (make-sparse-keymap))) (define-key map "b" branch-map) (define-key branch-map "c" #'vc-create-branch) - (define-key branch-map "l" #'vc-print-branch-log) + (define-key branch-map "l" #'vc-print-fileset-branch-log) + (define-key branch-map "L" #'vc-print-root-branch-log) (define-key branch-map "s" #'vc-switch-branch)) (let ((regexp-map (make-sparse-keymap))) @@ -1334,7 +1340,7 @@ the *vc-dir* buffer. (defvar-keymap vc-dir-outgoing-revisions-map :doc "Local keymap for viewing outgoing revisions." - "" #'vc-log-outgoing) + "" #'vc-root-log-outgoing) (defcustom vc-dir-show-outgoing-count t "Whether to display the number of unpushed revisions in VC-Dir. @@ -1385,7 +1391,7 @@ specific headers." 'mouse-face 'highlight 'keymap vc-dir-outgoing-revisions-map 'help-echo "\\\ -\\[vc-log-outgoing]: List outgoing revisions") +\\[vc-root-log-outgoing]: List outgoing revisions") "\n")))) (defun vc-dir-refresh-files (files) diff --git a/lisp/vc/vc-dispatcher.el b/lisp/vc/vc-dispatcher.el index df07972c6cc..2015e7540ae 100644 --- a/lisp/vc/vc-dispatcher.el +++ b/lisp/vc/vc-dispatcher.el @@ -1,6 +1,6 @@ ;;; vc-dispatcher.el --- generic command-dispatcher facility. -*- lexical-binding: t -*- -;; Copyright (C) 2008-2025 Free Software Foundation, Inc. +;; Copyright (C) 2008-2026 Free Software Foundation, Inc. ;; Author: FSF (see below for full credits) ;; Keywords: vc tools @@ -122,7 +122,7 @@ dispatcher client mode imposes itself." ;; This hook was undeclared and undocumented until declared obsolete. ;; I believe it can be replaced with `vc-log-after-operation-hook'; if ;; someone can demonstrate a case where this is wanted too, we can -;; unobsolete it. --spwhitton +;; bring it back. --spwhitton (defvar vc-finish-logentry-hook nil "Additional hook run at the end of `vc-finish-logentry'.") (make-obsolete-variable 'vc-finish-logentry-hook 'vc-log-after-operation-hook @@ -384,6 +384,9 @@ the man pages for \"torsocks\" for more details about Tor." :version "27.1" :group 'vc) +(defvar vc-user-edit-command-history nil + "Name of minibuffer history variable for `vc-user-edit-command'.") + (defun vc-user-edit-command (command file-or-list flags) "Prompt the user to edit VC command COMMAND and FLAGS. Intended to be used as the value of `vc-filter-command-function'." @@ -398,7 +401,8 @@ Intended to be used as the value of `vc-filter-command-function'." (cons command (remq nil (if files-separator-p (butlast flags) flags)))) - " "))))) + " ") + vc-user-edit-command-history)))) (list (car edited) file-or-list (nconc (cdr edited) (and files-separator-p '("--")))))) diff --git a/lisp/vc/vc-filewise.el b/lisp/vc/vc-filewise.el index c719d5c7a3b..387f8dd6d77 100644 --- a/lisp/vc/vc-filewise.el +++ b/lisp/vc/vc-filewise.el @@ -1,6 +1,6 @@ ;;; vc-filewise.el --- common functions for file-oriented back ends. -*- lexical-binding: t; -*- -;; Copyright (C) 1992-1996, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-1996, 1998-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el index 18ba7427b1d..85e90bfc25a 100644 --- a/lisp/vc/vc-git.el +++ b/lisp/vc/vc-git.el @@ -1,6 +1,6 @@ ;;; vc-git.el --- VC backend for the git version control system -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Alexandre Julliard ;; Keywords: vc tools @@ -767,13 +767,100 @@ or an empty string if none." :files files :update-function update-function))) -(defun vc-git--current-branch () +(defun vc-git-working-branch () + "Return the name of the current branch, or nil if HEAD is detached." (vc-git--out-match '("symbolic-ref" "HEAD") "^\\(refs/heads/\\)?\\(.+\\)$" 2)) +(defun vc-git--branch-remotes () + "Return alist of configured remote branches for current branch. +If there is a configured upstream, return the remote-tracking branch +with key `upstream'. If there is a distinct configured push remote, +return the remote-tracking branch there with key `push'. +A configured push remote that's just the same as the upstream remote is +ignored because that means we're not actually in a triangular workflow." + ;; Possibly we could simplify this using @{push}, but that may involve + ;; an unwanted dependency on the setting of push.default. + (cl-flet ((get (key) + (string-trim-right (vc-git--out-str "config" key)))) + (let* ((branch (vc-git-working-branch)) + (pull (get (format "branch.%s.remote" branch))) + (merge (string-remove-prefix "refs/heads/" + (get (format "branch.%s.merge" + branch)))) + (push (get (format "branch.%s.pushRemote" branch))) + (push (if (string-empty-p push) + (get "remote.pushDefault") + push)) + (alist (and (not (string-empty-p pull)) + (not (string-empty-p merge)) + `((upstream . ,(format "%s/%s" pull merge)))))) + (if (or (string-empty-p push) (equal push pull)) + alist + (cl-acons 'push (format "%s/%s" push branch) alist))))) + +(defun vc-git-trunk-or-topic-p () + "Return `topic' if branch has distinct pull and push remotes, else nil. +This is able to identify topic branches for certain forge workflows." + (let ((remotes (vc-git--branch-remotes))) + (and (assq 'upstream remotes) (assq 'push remotes) 'topic))) + +(defun vc-git-topic-outgoing-base () + "Return the outgoing base for the current branch as a string. +This works by considering the current branch as a topic branch +(whether or not it actually is). + +If there is a distinct push remote for this branch, assume the target +for outstanding changes is the tracking branch, and return that. + +Otherwise, fall back to the following algorithm, which requires that the +corresponding trunk exists as a local branch. Find all merge bases +between the current branch and other local branches. Each of these is a +commit on the current branch. Use `git merge-base --independent' on +them all to find the topologically most recent. Take the branch for +which that commit is a merge base with the current branch to be the +branch into which the current branch will eventually be merged. Find +its upstream. (If there is more than one branch whose merge base with +the current branch is that same topologically most recent commit, try +them one-by-one, accepting the first that has an upstream.)" + (if-let* ((remotes (vc-git--branch-remotes)) + (_ (assq 'push remotes)) + (upstream (assq 'upstream remotes))) + (cdr upstream) + (cl-flet ((get-line () (buffer-substring (point) (pos-eol)))) + (let* ((branches (vc-git-branches)) + (current (pop branches)) + merge-bases) + (with-temp-buffer + (dolist (branch branches) + (erase-buffer) + (when (vc-git--out-ok "merge-base" "--all" branch current) + (goto-char (point-min)) + (while (not (eobp)) + (push branch (alist-get (get-line) merge-bases + nil nil #'equal)) + (forward-line 1)))) + (erase-buffer) + (unless (apply #'vc-git--out-ok "merge-base" "--independent" + (mapcar #'car merge-bases)) + (error "`git merge-base --independent' failed")) + ;; If 'git merge-base --independent' printed more than one + ;; line, just pick the first. + (goto-char (point-min)) + (catch 'ret + (dolist (target (cdr (assoc (get-line) merge-bases))) + (erase-buffer) + (when (vc-git--out-ok "for-each-ref" + "--format=%(upstream:short)" + (concat "refs/heads/" target)) + (goto-char (point-min)) + (let ((outgoing-base (get-line))) + (unless (string-empty-p outgoing-base) + (throw 'ret outgoing-base))))))))))) + (defun vc-git-dir--branch-headers () "Return headers for branch-related information." - (let ((branch (vc-git--current-branch)) + (let ((branch (vc-git-working-branch)) tracking remote-url) (if branch (when-let* ((branch-merge @@ -1385,7 +1472,9 @@ line of the commit message in an entry with key \"Subject\"." (if (eq system-type 'windows-nt) locale-coding-system coding-system-for-write))) - (vc-git--call input-file t "mailinfo" msg-file patch-file)) + (vc-git--call input-file t "mailinfo" + (file-local-name msg-file) + (file-local-name patch-file))) (goto-char (point-min)) ;; git-mailinfo joins up any header continuation lines for us. (while (re-search-forward "^\\([^\t\n\s:]+\\):\\(.*\\)$" nil t) @@ -1525,7 +1614,9 @@ If PROMPT is non-nil, prompt for the Git command to run." (vc-filter-command-function (if prompt (lambda (&rest args) - (cl-destructuring-bind (&whole args git _ flags) + (cl-destructuring-bind + (&whole args git _ flags + &aux (vc-user-edit-command-history 'vc-git-history)) (apply #'vc-user-edit-command args) (setq git-program git command (car flags) @@ -1758,7 +1849,7 @@ If LIMIT is a non-empty string, use it as a base revision." ;; If the branch has no upstream, and we weren't supplied ;; with one, then fetching is always useless (bug#79952). (or upstream-location - (and-let* ((branch (vc-git--current-branch))) + (and-let* ((branch (vc-git-working-branch))) (with-temp-buffer (vc-git--out-ok "config" "--get" (format "branch.%s.remote" @@ -2235,7 +2326,7 @@ This requires git 1.8.4 or later, for the \"-L\" option of \"git log\"." (defun vc-git-revision-published-p (rev) "Whether we think REV has been pushed such that it is public history. Considers only the current branch. Does not fetch." - (let ((branch (vc-git--current-branch)) + (let ((branch (vc-git-working-branch)) (rev (vc-git--rev-parse rev))) (vc-git--assert-revision-on-branch rev branch) (and @@ -2334,7 +2425,7 @@ Rebase may --autosquash your other squash!/fixup!/amend!; proceed?"))) (defun vc-git-delete-revision (rev) "Rebase current branch to remove REV." - (vc-git--assert-revision-on-branch rev (vc-git--current-branch)) + (vc-git--assert-revision-on-branch rev (vc-git-working-branch)) (with-temp-buffer (vc-git-command t 0 nil "log" "--merges" (format "%s~1.." rev)) (unless (bobp) @@ -2352,13 +2443,13 @@ Rebase may --autosquash your other squash!/fixup!/amend!; proceed?"))) (defun vc-git-delete-revisions-from-end (rev) "Hard reset back to REV. It is an error if REV is not on the current branch." - (vc-git--assert-revision-on-branch rev (vc-git--current-branch)) + (vc-git--assert-revision-on-branch rev (vc-git-working-branch)) (vc-git-command nil 0 nil "reset" "--hard" rev)) (defun vc-git-uncommit-revisions-from-end (rev) "Mixed reset back to REV. It is an error if REV is not on the current branch." - (vc-git--assert-revision-on-branch rev (vc-git--current-branch)) + (vc-git--assert-revision-on-branch rev (vc-git-working-branch)) (vc-git-command nil 0 nil "reset" "--mixed" rev)) (defvar vc-git-extra-menu-map diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el index 1bb87f2dff3..90e25ba43f4 100644 --- a/lisp/vc/vc-hg.el +++ b/lisp/vc/vc-hg.el @@ -1,6 +1,6 @@ ;;; vc-hg.el --- VC backend for the mercurial version control system -*- lexical-binding: t -*- -;; Copyright (C) 2006-2025 Free Software Foundation, Inc. +;; Copyright (C) 2006-2026 Free Software Foundation, Inc. ;; Author: Ivan Kanis ;; Maintainer: emacs-devel@gnu.org @@ -1941,6 +1941,42 @@ It is an error if REV is not on the current branch." (vc-hg--assert-rev-on-current-branch rev) (vc-hg--reset-back-to rev t)) +(defun vc-hg--working-branch () + "Return alist with currently active bookmark, if any, and current branch. +Keys into the alist are `branch' and `bookmark', values are the name of +the currently active bookmark (or nil) and the name of the current +branch, as strings." + (with-temp-buffer + (vc-hg-command t nil nil "summary") + (goto-char (point-min)) + (re-search-forward "^branch: \\(.+\\)$") + (let ((alist `((branch . ,(match-string 1))))) + (goto-char (point-min)) + (if (re-search-forward "^bookmarks: \\*\\(\\S-+\\)" nil t) + (cl-acons 'bookmark (match-string 1) alist) + alist)))) + +(defun vc-hg-working-branch () + "Return currently active bookmark if one exists, else current branch. +The return value is always a string." + (let ((alist (vc-hg--working-branch))) + (cdr (or (assq 'bookmark alist) (assq 'branch alist))))) + +(defun vc-hg-trunk-or-topic-p () + "Return `topic' if there is a currently active bookmark, else nil." + (and (assq 'bookmark (vc-hg--working-branch)) 'topic)) + +(defun vc-hg-topic-outgoing-base () + "Return outgoing base for current commit considered as a topic branch. +The current implementation always returns the name of the current +branch, meaning to query the remote head for the current branch +(and not any active bookmark if it also exists remotely). +This is based on the following assumptions: +(i) if there is an active bookmark, it will eventually be merged into + whatever the remote head is +(ii) there is only one remote head for the current branch." + (assq 'branch (vc-hg--working-branch))) + (provide 'vc-hg) ;;; vc-hg.el ends here diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el index ddc5af317bb..f3519465c07 100644 --- a/lisp/vc/vc-hooks.el +++ b/lisp/vc/vc-hooks.el @@ -1,6 +1,6 @@ ;;; vc-hooks.el --- Preloaded support for version control -*- lexical-binding:t -*- -;; Copyright (C) 1992-1996, 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-1996, 1998-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: emacs-devel@gnu.org @@ -235,7 +235,7 @@ VC commands are globally reachable under the prefix \\[vc-prefix-map]: ;; ;; In addition we store some whole-repository properties keyed to the ;; repository root. We invalidate/update these during VC operations, -;; but there isn't a point analagous to the killing of a buffer at which +;; but there isn't a point analogous to the killing of a buffer at which ;; we clear them all out, like there is for per-file properties. (defvar vc-file-prop-obarray (obarray-make 17) @@ -1004,7 +1004,8 @@ In the latter case, VC mode is deactivated for this buffer." :prefix t "a" #'vc-update-change-log "b c" #'vc-create-branch - "b l" #'vc-print-branch-log + "b l" #'vc-print-fileset-branch-log + "b L" #'vc-print-root-branch-log "b s" #'vc-switch-branch "d" #'vc-dir "g" #'vc-annotate @@ -1013,16 +1014,19 @@ In the latter case, VC mode is deactivated for this buffer." "i" #'vc-register "l" #'vc-print-log "L" #'vc-print-root-log - "I" #'vc-log-incoming - "O" #'vc-log-outgoing + "I" #'vc-root-log-incoming + "O" #'vc-root-log-outgoing "M L" #'vc-log-mergebase "M D" #'vc-diff-mergebase - "B =" #'vc-diff-outgoing-base - "B D" #'vc-root-diff-outgoing-base + "T l" #'vc-log-outgoing-base + "T L" #'vc-root-log-outgoing-base + "T =" #'vc-diff-outgoing-base + "T D" #'vc-root-diff-outgoing-base "m" #'vc-merge "r" #'vc-retrieve-tag "s" #'vc-create-tag - "u" #'vc-revert + "u" #'vc-revert ; The traditional binding. + "@" #'vc-revert ; Following VC-Dir's binding. "v" #'vc-next-action "+" #'vc-update "P" #'vc-push @@ -1043,11 +1047,11 @@ In the latter case, VC mode is deactivated for this buffer." (define-key ctl-x-map "v" 'vc-prefix-map) (defvar-keymap vc-incoming-prefix-map - "L" #'vc-log-incoming + "L" #'vc-root-log-incoming "=" #'vc-diff-incoming "D" #'vc-root-diff-incoming) (defvar-keymap vc-outgoing-prefix-map - "L" #'vc-log-outgoing + "L" #'vc-root-log-outgoing "=" #'vc-diff-outgoing "D" #'vc-root-diff-outgoing) @@ -1055,9 +1059,10 @@ In the latter case, VC mode is deactivated for this buffer." "Whether \\`C-x v I' and \\`C-x v O' are prefix commands. Historically Emacs bound \\`C-x v I' and \\`C-x v O' directly to commands. That is still the default. If this option is customized to -non-nil, these key sequences becomes prefix commands. `vc-log-incoming' -moves to \\`C-x v I L', `vc-log-outgoing' moves to \\`C-x v O L', and -other commands receive global bindings where they had none before." +non-nil, these key sequences becomes prefix commands. +`vc-root-log-incoming' moves to \\`C-x v I L', `vc-root-log-outgoing' +moves to \\`C-x v O L', and other commands receive global bindings where +they had none before." :type 'boolean :version "31.1" :set (lambda (symbol value) @@ -1069,8 +1074,8 @@ other commands receive global bindings where they had none before." (keymap-set map "I" vc-incoming-prefix-map) (keymap-set map "O" vc-outgoing-prefix-map)) (dolist (map maps) - (keymap-set map "I" #'vc-log-incoming) - (keymap-set map "O" #'vc-log-outgoing)))) + (keymap-set map "I" #'vc-root-log-incoming) + (keymap-set map "O" #'vc-root-log-outgoing)))) (set-default symbol value))) (defvar vc-menu-map @@ -1088,9 +1093,13 @@ other commands receive global bindings where they had none before." (define-key map [vc-create-tag] '(menu-item "Create Tag" vc-create-tag :help "Create version tag")) - (define-key map [vc-print-branch-log] - '(menu-item "Show Branch History..." vc-print-branch-log + (define-key map [vc-print-fileset-branch-log] + '(menu-item "Show Branch History..." vc-print-fileset-branch-log :help "List the change log for another branch")) + (define-key map [vc-print-root-branch-log] + '(menu-item "Show Top of the Tree Branch History..." + vc-print-root-branch-log + :help "List the change log for another branch")) (define-key map [vc-switch-branch] '(menu-item "Switch Branch..." vc-switch-branch :help "Switch to another branch")) @@ -1117,10 +1126,10 @@ other commands receive global bindings where they had none before." '(menu-item "Update ChangeLog" vc-update-change-log :help "Find change log file and add entries from recent version control logs")) (define-key map [vc-log-out] - '(menu-item "Show Outgoing Log" vc-log-outgoing + '(menu-item "Show Outgoing Log" vc-root-log-outgoing :help "Show a log of changes that will be sent with a push operation")) (define-key map [vc-log-in] - '(menu-item "Show Incoming Log" vc-log-incoming + '(menu-item "Show Incoming Log" vc-root-log-incoming :help "Show a log of changes that will be received with a pull operation")) (define-key map [vc-print-log] '(menu-item "Show History" vc-print-log @@ -1181,6 +1190,14 @@ other commands receive global bindings where they had none before." (defun vc-default-extra-menu (_backend) nil) +(defun vc--safe-branch-regexps-p (val) + "Return non-nil if VAL is a safe local value for \\+`vc-*-branch-regexps'." + (or (eq val t) + (and (listp val) + (all (lambda (elt) + (or (symbolp elt) (stringp elt))) + val)))) + (provide 'vc-hooks) ;;; vc-hooks.el ends here diff --git a/lisp/vc/vc-rcs.el b/lisp/vc/vc-rcs.el index 081f6917ddc..7b9af355c6a 100644 --- a/lisp/vc/vc-rcs.el +++ b/lisp/vc/vc-rcs.el @@ -1,6 +1,6 @@ ;;; vc-rcs.el --- support for RCS version-control -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/vc/vc-sccs.el b/lisp/vc/vc-sccs.el index 40feafd9c48..9aeb4eb6948 100644 --- a/lisp/vc/vc-sccs.el +++ b/lisp/vc/vc-sccs.el @@ -1,6 +1,6 @@ ;;; vc-sccs.el --- support for SCCS version-control -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/vc/vc-src.el b/lisp/vc/vc-src.el index f9551165363..c43b37627fb 100644 --- a/lisp/vc/vc-src.el +++ b/lisp/vc/vc-src.el @@ -1,6 +1,6 @@ ;;; vc-src.el --- support for SRC version-control -*- lexical-binding:t -*- -;; Copyright (C) 1992-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: emacs-devel@gnu.org @@ -82,7 +82,6 @@ ;;; (eval-when-compile - (require 'cl-lib) (require 'vc)) (declare-function vc-setup-buffer "vc-dispatcher" (buf)) diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el index 6ef0e079802..12704361430 100644 --- a/lisp/vc/vc-svn.el +++ b/lisp/vc/vc-svn.el @@ -1,6 +1,6 @@ ;;; vc-svn.el --- non-resident support for Subversion version-control -*- lexical-binding:t -*- -;; Copyright (C) 2003-2025 Free Software Foundation, Inc. +;; Copyright (C) 2003-2026 Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) ;; Maintainer: Stefan Monnier diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 4887df63141..88324a2a444 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el @@ -1,6 +1,6 @@ ;;; vc.el --- drive a version-control system from within Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1992-1998, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1992-1998, 2000-2026 Free Software Foundation, Inc. ;; Author: FSF (see below for full credits) ;; Maintainer: emacs-devel@gnu.org @@ -181,6 +181,13 @@ ;; the following functions might be needed: `dir-extra-headers', ;; `dir-printer', and `extra-dir-menu'. ;; +;; NOTE: project.el includes a similar method `project-list-files' +;; that has a slightly different return value and performance +;; trade-offs. If you want to use it in your code and it suits your +;; needs better than `dir-status-files', consider contacting the +;; development list about changes or having it promoted to the core +;; VC. See also `vc-dir-status-files'. +;; ;; - dir-extra-headers (dir) ;; ;; Return a string that will be added to the *vc-dir* buffer header. @@ -603,6 +610,36 @@ ;; does a sanity check whether there aren't any uncommitted changes at ;; or below DIR, and then performs a tree walk, using the `checkout' ;; function to retrieve the corresponding revisions. +;; +;; - working-branch () +;; +;; Return the name of the current branch, if there is one, else nil. +;; +;; - trunk-or-topic-p () +;; +;; For the current branch, or the closest equivalent for a VCS without +;; named branches, return `trunk' if it is definitely a longer-lived +;; trunk branch, `topic' if it is definitely a shorter-lived topic +;; branch, or nil if no general determination can be made. +;; +;; What counts as a longer-lived or shorter-lived branch for VC is +;; explained in Info node `(emacs)Outstanding Changes' and in the +;; docstrings for the `vc-trunk-branch-regexps' and +;; `vc-topic-branch-regexps' user options. +;; +;; - topic-outgoing-base () +;; +;; Return an outgoing base for the current branch (or the closest +;; equivalent for a VCS without named branches) considered as a topic +;; branch. That is, on the assumption that the current branch is a +;; shorter-lived branch which will later be merged into a longer-lived +;; branch, return, if possible, the upstream location to which those +;; changes will be merged. See Info node `(emacs) Outstanding +;; Changes'. The return value should be suitable for passing to the +;; incoming-revision backend function as its UPSTREAM-LOCATION +;; argument. For example, for Git the value will typically be of the +;; form 'origin/foo' whereas Mercurial uses the unmodified name of the +;; longer-lived branch. ;; MISCELLANEOUS ;; @@ -630,11 +667,14 @@ ;; ;; - ignore-completion-table (directory) ;; -;; Return the completion table for files ignored by the current +;; Return the list of patterns for files ignored by the current ;; version control system, e.g., the entries in `.gitignore' and ;; `.bzrignore'. The default behavior is to read the contents of ;; the file returned by the `find-ignore-file' function. ;; +;; NOTE: The return value should be a list of strings, not a general +;; completion table value, despite what the name implies. +;; ;; - find-ignore-file (file) ;; ;; Return the ignore file that controls FILE, e.g. `.gitignore' or @@ -647,6 +687,7 @@ ;; function is defined for this backend and that symbol, or a symbolic ;; name involving that symbol, is passed to this function as REV, this ;; function may return a symbolic name. +;; The implementation should respect the value of vc-use-short-revision. ;; ;; Possible future extension: make REV an optional argument, and if ;; nil, default it to FILE's working revision. @@ -662,6 +703,7 @@ ;; ;; Return the revision number that follows REV for FILE, or nil if no such ;; revision exists. +;; The implementation should respect the value of vc-use-short-revision. ;; ;; - log-edit-mode () ;; @@ -1093,7 +1135,10 @@ value other than `ask' if you have a strong grasp of the VCS in use." (const :tag "Allow without prompting" t)) :version "31.1") -(defconst vc-cloneable-backends-custom-type +(define-obsolete-variable-alias + 'vc-cloneable-backends-custom-type + 'vc-clonable-backends-custom-type "31.1") +(defconst vc-clonable-backends-custom-type `(choice :convert-widget ,(lambda (widget) (let (opts) @@ -1145,7 +1190,7 @@ specifying a backend. Each element of the alist has the form the first association for which the URL of the repository matches the URL-REGEXP of the association." :type `(alist :key-type (regexp :tag "Regular expression matching URLs") - :value-type ,vc-cloneable-backends-custom-type) + :value-type ,vc-clonable-backends-custom-type) :version "31.1") (defcustom vc-async-checkin nil @@ -1459,7 +1504,7 @@ BEWARE: this function may change the current buffer." (vc-deduce-fileset not-state-changing allow-unregistered state-model-only-files))) ((and (not buffer-file-name) (setq backend (vc-responsible-backend default-directory))) - (list backend nil)) + (list backend (list default-directory))) ((and allow-unregistered (not (vc-registered buffer-file-name))) (if state-model-only-files (list (vc-backend-for-registration (buffer-file-name)) @@ -3111,21 +3156,187 @@ global binding." (vc-symbolic-working-revision (caadr fileset) backend) (called-interactively-p 'interactive)))) -;; For the following two commands, the default meaning for -;; UPSTREAM-LOCATION may become dependent on whether we are on a -;; shorter-lived or longer-lived ("trunk") branch. If we are on the -;; trunk then it will always be the place `vc-push' would push to. If -;; we are on a shorter-lived branch, it may instead become the remote -;; trunk branch from which the shorter-lived branch was branched. That -;; way you can use these commands to get a summary of all unmerged work -;; outstanding on the short-lived branch. -;; -;; The obstacle to doing this is that VC lacks any distinction between -;; shorter-lived and trunk branches. But we all work with both of -;; these, for almost any VCS workflow. E.g. modern workflows which -;; eschew traditional feature branches still have a long-lived trunk -;; plus shorter-lived local branches for merge requests or patch series. -;; --spwhitton +;; This is used in .dir-locals.el in the Emacs source tree. +;;;###autoload (put 'vc-trunk-branch-regexps 'safe-local-variable +;;;###autoload #'vc--safe-branch-regexps-p) +(defcustom vc-trunk-branch-regexps '("trunk" "master" "main" "default") + "Regular expressions matching the names of longer-lived VCS branches. +There value can be of one of the following forms: +- A list of regular expressions. A trunk branch is one whose name + matches any of the regular expressions. If an element of the list + contains no characters that are special in regular expressions, then + the regexp is implicitly anchored at both ends, i.e., it is the full + name of a branch. +- A list whose first element is `not' and whose remaining elements are + regular expressions. This is the same as the previous case except + that a trunk branch is one whose name does *not* match any of the + regular expressions. +- The symbol t. A trunk branch is any branch that + `vc-topic-branch-regexps' does not positively identify as a topic + branch. +- An empty list (or, the symbol nil). The branch name does not indicate + whether a branch is a trunk. Emacs will ask the backend whether it + thinks the current branch is a trunk. + +In VC, trunk branches are those where you've finished sharing the work +on the branch with your collaborators just as soon as you've checked it +in, and in the case of a decentralized VCS, pushed it. In addition, +typically you never delete trunk branches. + +The specific VCS workflow you are using may only acknowledge a single +trunk, and give other names to kinds of branches which VC would consider +to be just further trunks. + +If trunk branches in your project can be identified by name, include +regexps matching their names in the value of this variable. This is +more reliable than letting Emacs ask the backend. + +See also `vc-topic-branch-regexps'." + :type '(choice (repeat :tag "Regexps" string) + (cons :tag "Negated regexps" + (const not) (repeat :tag "Regexps" string)) + (const :tag "Inverse of `vc-branch-trunk-regexps'" t)) + :safe #'vc--safe-branch-regexps-p + :version "31.1") + +;; This is used in .dir-locals.el in the Emacs source tree. +;;;###autoload (put 'vc-topic-branch-regexps 'safe-local-variable +;;;###autoload #'vc--safe-branch-regexps-p) +(defcustom vc-topic-branch-regexps nil + "Regular expressions matching the names of shorter-lived VCS branches. +There value can be of one of the following forms: +- A list of regular expressions. A topic branch is one whose name + matches any of the regular expressions. If an element of the list + contains no characters that are special in regular expressions, then + the regexp is implicitly anchored at both ends, i.e., it is the full + name of a branch. +- A list whose first element is `not' and whose remaining elements are + regular expressions. This is the same as the previous case except + that a topic branch is one whose name does *not* match any of the + regular expressions. +- The symbol t. A topic branch is any branch that + `vc-trunk-branch-regexps' does not positively identify as a trunk + branch. +- An empty list (or, the symbol nil). The branch name does not indicate + whether a branch is a topic branch. Emacs will ask the backend + whether it thinks the current branch is a topic branch. + +In VC, topic branches are those where checking in work, and pushing it +in the case of a decentralized VCS, is not enough to complete the +process of sharing the changes with your collaborators. In addition, +it's required that you merge the topic branch into another branch. +After this is done, typically you delete the topic branch. + +Topic branches are sometimes called \"feature branches\", though it is +also common for that term to be reserved for only a certain kind of +topic branch. + +If topic branches in your project can be identified by name, include +regexps matching their names in the value of this variable. This is +more reliable than letting Emacs ask the backend. + +See also `vc-trunk-branch-regexps'." + :type '(choice (repeat :tag "Regexps" string) + (cons :tag "Negated regexps" + (const not) (repeat :tag "Regexps" string)) + (const :tag "Inverse of `vc-trunk-branch-regexps'" t)) + :safe #'vc--safe-branch-regexps-p + :version "31.1") + +(defun vc--match-branch-name-regexps (branch) + "Match against `vc-trunk-branch-regexps' and `vc-topic-branch-regexps'. +See the docstrings for those two variables for how this matching works. + +If BRANCH matches both sets of regexps we signal an error; this is to +allow for future extension. +If BRANCH matches neither set of regexps return nil to mean that the +defcustoms don't decide the matter of which kind of branch this is." + (when (and (eq vc-trunk-branch-regexps t) + (eq vc-topic-branch-regexps t)) + (user-error "\ +`vc-trunk-branch-regexps' and `vc-topic-branch-regexps' cannot both be `t'")) + (cl-labels ((join-regexps (regexps) + (mapconcat (lambda (elt) + (format (if (equal (regexp-quote elt) elt) + "\\`%s\\'" + "\\(?:%s\\)") + elt)) + regexps "\\|")) + (compile-regexps (regexps) + (if regexps + (let* ((negated (eq (car regexps) 'not)) + (joined (join-regexps (if negated + (cdr regexps) + regexps)))) + (if negated + (lambda (s) (not (string-match-p joined s))) + (lambda (s) (string-match-p joined s)))) + #'ignore)) + (match-trunk (if (eq vc-trunk-branch-regexps t) + (lambda (s) (not (match-topic s))) + (compile-regexps vc-trunk-branch-regexps))) + (match-topic (if (eq vc-topic-branch-regexps t) + (lambda (s) (not (match-trunk s))) + (compile-regexps vc-topic-branch-regexps)))) + (let ((trunk (match-trunk branch)) + (topic (match-topic branch))) + (cond ((and trunk topic) + (error "Branch name `%s' matches both \ +`vc-trunk-branch-regexps' and `vc-topic-branch-regexps'" + branch)) + (trunk 'trunk) + (topic 'topic))))) + +(defun vc--outgoing-base (backend) + "Return an outgoing base for the current branch under VC backend BACKEND. +The outgoing base is the upstream location for which outstanding changes +on this branch are destined once they are no longer outstanding. + +There are two stages to determining the outgoing base. +First we decide whether we think this is a shorter-lived or a +longer-lived (\"trunk\") branch (see `vc-trunk-branch-regexps' and +`vc-topic-branch-regexps' regarding this distinction), as follows: +1. Ask the backend for the name of the current branch. + If it returns non-nil, compare that name against + `vc-trunk-branch-regexps' and `vc-topic-branch-regexps'. +2. If that doesn't settle it, either because the backend returns nil for + the name of the current branch, or because comparing the name against + the two regexp defcustoms yields no decisive answer, call BACKEND's + `trunk-or-topic-p' VC API function. +3. If that doesn't settle it either, assume this is a shorter-lived + branch. This is based on how it's commands primarily intended for + working with shorter-lived branches that call this function. +Second, if we have determined that this is a trunk, return nil, meaning +that the outgoing base is the place to which `vc-push' would push. +Otherwise, we have determined that this is a shorter-lived branch, and +we return the value of calling BACKEND's `topic-outgoing-base' VC API +function." + ;; For further discussion see bug#80006. + (let* ((branch (vc-call-backend backend 'working-branch)) + (type (or (and branch (vc--match-branch-name-regexps branch)) + (vc-call-backend backend 'trunk-or-topic-p) + 'topic))) + (and (eq type 'topic) + (vc-call-backend backend 'topic-outgoing-base)))) + +(defun vc--outgoing-base-mergebase (backend &optional upstream-location refresh) + "Return, under VC backend BACKEND, the merge base with UPSTREAM-LOCATION. +Normally UPSTREAM-LOCATION, if non-nil, is a string. +If UPSTREAM-LOCATION is nil, it means to call `vc--outgoing-base' and +use its return value as UPSTREAM-LOCATION. If `vc--outgoing-base' +returns nil, that means to use the place to which `vc-push' would push. +If UPSTREAM-LOCATION is the special value t, it means to use the place +to which `vc-push' would push as UPSTREAM-LOCATION, unconditionally. +(This is passed when the user invokes an outgoing base command with a + \\`C-u C-u' prefix argument; see `vc--maybe-read-outgoing-base'.) +REFRESH is passed on to `vc--incoming-revision'." + (vc-call-backend backend 'mergebase + (vc--incoming-revision backend + (pcase upstream-location + ('t nil) + ('nil (vc--outgoing-base backend)) + (_ upstream-location)) + refresh))) ;;;###autoload (defun vc-root-diff-outgoing-base (&optional upstream-location) @@ -3134,17 +3345,25 @@ The merge base with UPSTREAM-LOCATION means the common ancestor of the working revision and UPSTREAM-LOCATION. Uncommitted changes are included in the diff. -When unspecified UPSTREAM-LOCATION is the place \\[vc-push] would push -to. This default meaning for UPSTREAM-LOCATION may change in a future -release of Emacs. +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, see whether the branch matches one of +`vc-trunk-branch-regexps' or `vc-topic-branch-regexps', or else query +the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. When called interactively with a prefix argument, prompt for UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION can be a remote branch name. -This command is like `vc-root-diff-outgoing' except that it includes -uncommitted changes." - (interactive (list (vc--maybe-read-upstream-location))) +When called interactively with a \\[universal-argument] \\[universal-argument] \ +prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. (With a double prefix argument, this command is like +`vc-diff-outgoing' except that it includes uncommitted changes.)" + (interactive (list (vc--maybe-read-outgoing-base))) (vc--with-backend-in-rootdir "VC root-diff" (vc-diff-outgoing-base upstream-location `(,backend (,rootdir))))) @@ -3156,25 +3375,97 @@ The merge base with UPSTREAM-LOCATION means the common ancestor of the working revision and UPSTREAM-LOCATION. Uncommitted changes are included in the diff. -When unspecified UPSTREAM-LOCATION is the place \\[vc-push] would push -to. This default meaning for UPSTREAM-LOCATION may change in a future -release of Emacs. +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, see whether the branch matches one of +`vc-trunk-branch-regexps' or `vc-topic-branch-regexps', or else query +the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. When called interactively with a prefix argument, prompt for UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION can be a remote branch name. -This command is like to `vc-fileset-diff-outgoing' except that it -includes uncommitted changes." - (interactive (list (vc--maybe-read-upstream-location) nil)) - (let* ((fileset (or fileset (vc-deduce-fileset t))) - (backend (car fileset)) - (incoming (vc--incoming-revision backend upstream-location))) +When called interactively with a \\[universal-argument] \\[universal-argument] \ +prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. (With a double prefix argument, this command is like +`vc-diff-outgoing' except that it includes uncommitted changes.) + +When called from Lisp, optional argument FILESET overrides the fileset." + (interactive (let ((fileset (vc-deduce-fileset t))) + (list (vc--maybe-read-outgoing-base (car fileset)) + fileset))) + (let ((fileset (or fileset (vc-deduce-fileset t)))) (vc-diff-internal vc-allow-async-diff fileset - (vc-call-backend backend 'mergebase incoming) + (vc--outgoing-base-mergebase (car fileset) + upstream-location) nil (called-interactively-p 'interactive)))) +;;;###autoload +(defun vc-log-outgoing-base (&optional upstream-location fileset) + "Show log for the VC fileset since the merge base with UPSTREAM-LOCATION. +The merge base with UPSTREAM-LOCATION means the common ancestor of the +working revision and UPSTREAM-LOCATION. + +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, see whether the branch matches one of +`vc-trunk-branch-regexps' or `vc-topic-branch-regexps', or else query +the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. + +When called interactively with a prefix argument, prompt for +UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION +can be a remote branch name. + +When called interactively with a \\[universal-argument] \\[universal-argument] \ +prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch. + +When called from Lisp, optional argument FILESET overrides the fileset." + (interactive (let ((fileset (vc-deduce-fileset t))) + (list (vc--maybe-read-outgoing-base (car fileset)) + fileset))) + (let* ((fileset (or fileset (vc-deduce-fileset t))) + (backend (car fileset))) + (vc-print-log-internal backend (cadr fileset) nil nil + (vc--outgoing-base-mergebase backend + upstream-location)))) + +;;;###autoload +(defun vc-root-log-outgoing-base (&optional upstream-location) + "Show log of revisions since the merge base with UPSTREAM-LOCATION. +The merge base with UPSTREAM-LOCATION means the common ancestor of the +working revision and UPSTREAM-LOCATION. + +When unspecified, UPSTREAM-LOCATION is the outgoing base. +For a trunk branch this is always the place \\[vc-push] would push to. +For a topic branch, see whether the branch matches one of +`vc-trunk-branch-regexps' or `vc-topic-branch-regexps', or else query +the backend for an appropriate outgoing base. +See `vc-trunk-branch-regexps' and `vc-topic-branch-regexps' regarding +the difference between trunk and topic branches. + +When called interactively with a prefix argument, prompt for +UPSTREAM-LOCATION. In some version control systems, UPSTREAM-LOCATION +can be a remote branch name. + +When called interactively with a \\[universal-argument] \\[universal-argument] \ +prefix argument, always +use the place to which \\[vc-push] would push to as the outgoing base, +i.e., treat this branch as a trunk branch even if Emacs thinks it is a +topic branch." + (interactive (list (vc--maybe-read-outgoing-base))) + (vc--with-backend-in-rootdir "VC revision log" + (vc-log-outgoing-base upstream-location `(,backend (,rootdir))))) + (declare-function ediff-load-version-control "ediff" (&optional silent)) (declare-function ediff-vc-internal "ediff-vers" (rev1 rev2 &optional startup-hooks)) @@ -3927,13 +4218,20 @@ Each function runs in the log output buffer without args.") (lambda (_ignore-auto _noconfirm) (vc-incoming-outgoing-internal backend upstream-location buffer-name type)))) +(defun vc--read-limit () + "Read a LIMIT argument for a VC log command." + (string-to-number + (read-from-minibuffer "Limit display (0 for unlimited): " + (format "%s" vc-log-show-limit)))) + ;;;###autoload (defun vc-print-log (&optional working-revision limit) "Show in another window the VC change history of the current fileset. If WORKING-REVISION is non-nil, it should be a revision ID; position point in the change history buffer at that revision. If LIMIT is non-nil, it should be a number specifying the maximum -number of revisions to show; the default is `vc-log-show-limit'. +number of revisions to show; the default for interactive calls is +`vc-log-show-limit'. When called interactively with a prefix argument, prompt for WORKING-REVISION and LIMIT. @@ -3946,23 +4244,39 @@ shown log style is available via `vc-log-short-style'." (interactive (cond (current-prefix-arg - (let ((rev (read-from-minibuffer "Leave point at revision (default: last revision): " nil - nil nil nil)) - (lim (string-to-number - (read-from-minibuffer - "Limit display (unlimited: 0): " - (format "%s" vc-log-show-limit) - nil nil nil)))) - (when (string= rev "") (setq rev nil)) - (when (<= lim 0) (setq lim nil)) - (list rev lim))) + (let ((rev (read-from-minibuffer (format-prompt "Leave point at revision" + "last revision"))) + (lim (vc--read-limit))) + (list (and (not (string-empty-p rev)) rev) (and (plusp lim) lim)))) (t - (list nil (when (> vc-log-show-limit 0) vc-log-show-limit))))) - (let* ((vc-fileset (vc-deduce-fileset t)) - (backend (car vc-fileset)) - (files (cadr vc-fileset)) - (working-revision (or working-revision vc-buffer-revision))) - (vc-print-log-internal backend files working-revision nil limit))) + (list nil (and (plusp vc-log-show-limit) vc-log-show-limit))))) + (let ((fileset (vc-deduce-fileset t)) + (working-revision (or working-revision vc-buffer-revision))) + (vc-print-log-internal (car fileset) (cadr fileset) + working-revision nil limit))) + +;;;###autoload +(defun vc-print-change-log () + "Show in another window the VC change history of the current fileset. +With a \\[universal-argument] prefix argument, prompt for a branch \ +or revision to log +instead of the working revision, and a number specifying the maximum +number of revisions to show; the default is `vc-log-show-limit'. +You can also use a numeric prefix argument to specify this. + +This is like `vc-print-log' but with an alternative prefix argument that +some users might prefer for interactive usage." + (declare (interactive-only vc-print-log)) + (interactive) + (if current-prefix-arg + (let ((branch + (vc--read-branch-to-log t)) + (vc-log-show-limit + (if (equal current-prefix-arg '(4)) + (vc--read-limit) + (prefix-numeric-value current-prefix-arg)))) + (vc-print-fileset-branch-log branch)) + (vc-print-log))) ;;;###autoload (defun vc-print-root-log (&optional limit revision) @@ -3984,11 +4298,7 @@ with its diffs (if the underlying VCS backend supports that)." ((numberp current-prefix-arg) (list current-prefix-arg)) (current-prefix-arg - (let ((lim (string-to-number - (read-from-minibuffer - "Limit display (unlimited: 0): " - (format "%s" vc-log-show-limit) - nil nil nil)))) + (let ((lim (vc--read-limit))) (list (and (plusp lim) lim)))) (t (list (and (plusp vc-log-show-limit) vc-log-show-limit))))) @@ -4002,30 +4312,118 @@ with its diffs (if the underlying VCS backend supports that)." (setq vc-parent-buffer-name nil)))) ;;;###autoload -(defun vc-print-branch-log (branch) - "Show the change log for BRANCH in another window. -The command prompts for the branch whose change log to show." - (interactive - (let* ((backend (vc-responsible-backend default-directory)) - (rootdir (vc-call-backend backend 'root default-directory))) - (list - (vc-read-revision "Branch to log: " (list rootdir) backend)))) - (when (equal branch "") - (error "No branch specified")) - (let* ((backend (vc-responsible-backend default-directory)) - (rootdir (vc-call-backend backend 'root default-directory))) - (vc-print-log-internal backend - (list rootdir) branch t - (when (> vc-log-show-limit 0) vc-log-show-limit)))) +(defun vc-print-root-change-log () + "Show in another window the VC change history of the whole tree. +With a \\[universal-argument] prefix argument, prompt for a branch \ +or revision to log +instead of the working revision, and a number specifying the maximum +number of revisions to show; the default is `vc-log-show-limit'. +You can also use a numeric prefix argument to specify this. + +This is like `vc-root-print-log' but with an alternative prefix argument +that some users might prefer for interactive usage." + (declare (interactive-only vc-print-root-log)) + (interactive) + (if current-prefix-arg + (let ((branch + (vc--read-branch-to-log)) + (vc-log-show-limit + (if (equal current-prefix-arg '(4)) + (vc--read-limit) + (prefix-numeric-value current-prefix-arg)))) + (vc-print-root-branch-log branch)) + (vc-print-root-log))) + +(defun vc--read-branch-to-log (&optional fileset) + "Read the name of a branch to log. +FILESET, if non-nil, means to pass the current VC fileset to +`vc-read-revision'." + (let* ((fileset (and fileset (vc-deduce-fileset t))) + (branch (vc-read-revision "Branch to log: " + (cadr fileset) (car fileset)))) + (when (string-empty-p branch) + (user-error "No branch specified")) + branch)) + +;;;###autoload +(defun vc-print-fileset-branch-log (branch) + "Show log of VC changes on BRANCH, limited to the current fileset. +When called interactively, prompts for BRANCH. +In addition to logging branches, for VCS for which it makes sense you +can specify a revision ID instead of a branch name to produce a log +starting at that revision. Tags and remote references also work." + ;; Currently the prefix argument is conserved. Possibly it could be + ;; used to prompt for a LIMIT argument like \\`C-x v l' has. Though + ;; now we have "Show 2X entries" and "Show unlimited entries" that + ;; might be a waste of the prefix argument to this command. --spwhitton + (interactive (list (vc--read-branch-to-log t))) + (let ((fileset (vc-deduce-fileset t))) + (vc-print-log-internal (car fileset) (cadr fileset) branch t + (and (plusp vc-log-show-limit) + vc-log-show-limit)))) + +;;;###autoload +(defun vc-print-root-branch-log (branch) + "Show root log of VC changes on BRANCH in another window. +When called interactively, prompts for BRANCH. +In addition to logging branches, for VCS for which it makes sense you +can specify a revision ID instead of a branch name to produce a log +starting at that revision. Tags and remote references also work." + ;; Prefix argument conserved; see previous command. --spwhitton + (interactive (list (vc--read-branch-to-log))) + (vc--with-backend-in-rootdir "VC branch log" + (vc-print-log-internal backend (list rootdir) branch t + (and (plusp vc-log-show-limit) + vc-log-show-limit)))) +;; We plan to reuse the name `vc-print-branch-log' for the +;; fileset-specific command in Emacs 32.1. --spwhitton +(define-obsolete-function-alias + 'vc-print-branch-log + #'vc-print-root-branch-log + "31.1") ;; FIXME: Consider renaming to `vc-upstream-location-history'. (defvar vc-remote-location-history nil "History of upstream locations for VC incoming and outgoing commands.") (defun vc--maybe-read-upstream-location () + "Read upstream location if there is a prefix argument, else return nil." (and current-prefix-arg - (read-string "Upstream location/branch (empty for default): " nil - 'vc-remote-location-history))) + (let ((res (read-string "Upstream location/branch (empty for default): " + nil 'vc-remote-location-history))) + (and (not (string-empty-p res)) res)))) + +(defun vc--maybe-read-outgoing-base (&optional backend) + "Return upstream location for interactive uses of outgoing base commands. +If there is no prefix argument, return nil. +If the current prefix argument is \\`C-u C-u', return t. +Otherwise prompt for an upstream location. +BACKEND is the VC backend." + (cond + ((equal current-prefix-arg '(16)) t) + (current-prefix-arg + (let* ((outgoing-base (vc-call-backend (or backend + (vc-deduce-backend)) + 'topic-outgoing-base)) + ;; If OUTGOING-BASE is non-nil then 'C-u C-x v T ... RET' is + ;; how the user can force Emacs to treat the current branch + ;; as a topic while having Emacs automatically determine the + ;; outgoing base with which to do so (otherwise, forcing + ;; Emacs to treat the current branch as a topic if it thinks + ;; it's a trunk requires specifying an outgoing base which + ;; will have that effect). + ;; + ;; In this case that OUTGOING-BASE is non-nil, it isn't + ;; possible to specify an empty string as the outgoing base, + ;; which normally means that Emacs should treat the current + ;; branch as a trunk. That's okay because you can use a + ;; double prefix argument to achieve that. + (res (read-string (if outgoing-base + (format-prompt "Upstream location/branch" + outgoing-base) + "Upstream location/branch (empty to treat as trunk): ") + nil 'vc-remote-location-history outgoing-base))) + (and (not (string-empty-p res)) res))))) (defun vc--incoming-revision (backend &optional upstream-location refresh) ;; Some backends don't support REFRESH and so always behave as though @@ -4040,26 +4438,29 @@ The command prompts for the branch whose change log to show." ;; else cherry-picks the very same commits that you have outstanding, ;; and pushes them. Given this, we implement our own caching. ;; - ;; Do store `nil', before signalling an error, if there is no incoming + ;; Do store `nil', before signaling an error, if there is no incoming ;; revision, because that's also something that can be slow to ;; determine and so should be remembered. - (if-let* ((_ (not refresh)) - (record (assoc upstream-location - (vc--repo-getprop backend 'vc-incoming-revision)))) - (cdr record) - (let ((res (vc-call-backend backend 'incoming-revision - upstream-location refresh))) - (if-let* ((alist (vc--repo-getprop backend 'vc-incoming-revision))) - (setf (alist-get upstream-location alist nil nil #'equal) - res) - (vc--repo-setprop backend - 'vc-incoming-revision - `((,upstream-location . ,res)))) - (or res - (user-error "No incoming revision -- local-only branch?"))))) + (or (if-let* ((_ (not refresh)) + (record (assoc upstream-location + (vc--repo-getprop backend + 'vc-incoming-revision)))) + (cdr record) + (let ((res (vc-call-backend backend 'incoming-revision + upstream-location refresh))) + (if-let* ((alist (vc--repo-getprop backend + 'vc-incoming-revision))) + (setf (alist-get upstream-location alist + nil nil #'equal) + res) + (vc--repo-setprop backend + 'vc-incoming-revision + `((,upstream-location . ,res)))) + res)) + (user-error "No incoming revision -- local-only branch?"))) ;;;###autoload -(defun vc-log-incoming (&optional upstream-location) +(defun vc-root-log-incoming (&optional upstream-location) "Show log of changes that will be received with pull from UPSTREAM-LOCATION. When unspecified UPSTREAM-LOCATION is the place \\[vc-update] would pull from. When called interactively with a prefix argument, prompt for @@ -4069,6 +4470,10 @@ can be a remote branch name." (vc--with-backend-in-rootdir "VC root-log" (vc-incoming-outgoing-internal backend upstream-location "*vc-incoming*" 'log-incoming))) +;; We plan to reuse the name `vc-log-incoming' for the fileset-specific +;; command in Emacs 32.1. --spwhitton +(define-obsolete-function-alias 'vc-log-incoming #'vc-root-log-incoming + "31.1") (defun vc-default-log-incoming (backend buffer upstream-location) (let ((incoming (vc--incoming-revision backend upstream-location @@ -4079,7 +4484,7 @@ can be a remote branch name." (vc-call-backend backend 'mergebase incoming)))) ;;;###autoload -(defun vc-log-outgoing (&optional upstream-location) +(defun vc-root-log-outgoing (&optional upstream-location) "Show log of changes that will be sent with a push to UPSTREAM-LOCATION. When unspecified UPSTREAM-LOCATION is the place \\[vc-push] would push to. When called interactively with a prefix argument, prompt for @@ -4089,6 +4494,10 @@ can be a remote branch name." (vc--with-backend-in-rootdir "VC root-log" (vc-incoming-outgoing-internal backend upstream-location "*vc-outgoing*" 'log-outgoing))) +;; We plan to reuse the name `vc-log-outgoing' for the fileset-specific +;; command in Emacs 32.1. --spwhitton +(define-obsolete-function-alias 'vc-log-outgoing #'vc-root-log-outgoing + "31.1") (defun vc-default-log-outgoing (backend buffer upstream-location) (let ((incoming (vc--incoming-revision backend upstream-location)) @@ -4617,6 +5026,9 @@ log entries should be gathered." (defvar vc-filter-command-function) +(defvar vc-edit-next-command-history nil + "Minibuffer history for `vc-edit-next-command'.") + ;;;###autoload (defun vc-edit-next-command () "Request editing the next VC shell command before execution. @@ -4640,7 +5052,8 @@ immediately after this one." (add-hook 'prefix-command-echo-keystrokes-functions echofun) (setq vc-filter-command-function (lambda (&rest args) - (apply #'vc-user-edit-command (apply old args)))))) + (let ((vc-user-edit-command-history 'vc-edit-next-command-history)) + (apply #'vc-user-edit-command (apply old args))))))) ;; This is used in .dir-locals.el in the Emacs source tree. ;;;###autoload (put 'vc-prepare-patches-separately 'safe-local-variable 'booleanp) @@ -5382,7 +5795,8 @@ MOVE non-nil means to move instead of copy." (with-temp-buffer (cond* (patch-string (diff-mode) - (insert patch-string)) + (let ((inhibit-read-only t)) ; `diff-default-read-only'. + (insert patch-string))) ;; Some backends don't tolerate unregistered files ;; appearing in the fileset for a diff operation. ((bind* (diff-fileset @@ -5524,6 +5938,9 @@ except that this command works only in file-visiting buffers." 'get-change-comment))) (format "Summary: %s\n" (string-trim (funcall fn files rev)))))) +(defalias 'vc-default-working-branch #'ignore) +(defalias 'vc-default-trunk-or-topic-p #'ignore) + ;; These things should probably be generally available diff --git a/lisp/vcursor.el b/lisp/vcursor.el index 958e2d17732..c8054e70da2 100644 --- a/lisp/vcursor.el +++ b/lisp/vcursor.el @@ -1,6 +1,6 @@ ;;; vcursor.el --- manipulate an alternative ("virtual") cursor -*- lexical-binding: t; -*- -;; Copyright (C) 1994-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994-2026 Free Software Foundation, Inc. ;; Author: Peter Stephenson ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/version.el b/lisp/version.el index d33fd3509e2..95cd4faaa5b 100644 --- a/lisp/version.el +++ b/lisp/version.el @@ -1,6 +1,6 @@ ;;; version.el --- record version number of Emacs -*- lexical-binding:t -*- -;; Copyright (C) 1985, 1992, 1994-1995, 1999-2025 Free Software +;; Copyright (C) 1985, 1992, 1994-1995, 1999-2026 Free Software ;; Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/view.el b/lisp/view.el index da856602a9d..ec69699108a 100644 --- a/lisp/view.el +++ b/lisp/view.el @@ -1,6 +1,6 @@ ;;; view.el --- peruse file or buffer without editing -*- lexical-binding: t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Author: K. Shane Hartman ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/visual-wrap.el b/lisp/visual-wrap.el index 24ca8ae7cf4..dd2df9a40b3 100644 --- a/lisp/visual-wrap.el +++ b/lisp/visual-wrap.el @@ -1,6 +1,6 @@ ;;; visual-wrap.el --- Smart line-wrapping with wrap-prefix -*- lexical-binding: t -*- -;; Copyright (C) 2011-2021, 2024-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2021, 2024-2026 Free Software Foundation, Inc. ;; Author: Stephen Berman ;; Stefan Monnier diff --git a/lisp/w32-fns.el b/lisp/w32-fns.el index 5a4c5f52ab4..1a4453c4442 100644 --- a/lisp/w32-fns.el +++ b/lisp/w32-fns.el @@ -1,6 +1,6 @@ ;;; w32-fns.el --- Lisp routines for 32-bit Windows -*- lexical-binding: t; -*- -;; Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. ;; Author: Geoff Voelker ;; Keywords: internal diff --git a/lisp/w32-vars.el b/lisp/w32-vars.el index 83edd966baa..7664c9ec106 100644 --- a/lisp/w32-vars.el +++ b/lisp/w32-vars.el @@ -1,6 +1,6 @@ ;;; w32-vars.el --- MS-Windows specific user options -*- lexical-binding:t -*- -;; Copyright (C) 2002-2025 Free Software Foundation, Inc. +;; Copyright (C) 2002-2026 Free Software Foundation, Inc. ;; Author: Jason Rumney ;; Keywords: internal diff --git a/lisp/wdired.el b/lisp/wdired.el index c3773b358cc..d633ea931bc 100644 --- a/lisp/wdired.el +++ b/lisp/wdired.el @@ -1,6 +1,6 @@ ;;; wdired.el --- Rename files editing their names in dired buffers -*- coding: utf-8; lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Juan León Lahoz García ;; Old-Version: 2.0 diff --git a/lisp/which-key.el b/lisp/which-key.el index 0be0feb542e..7d5b169e7eb 100644 --- a/lisp/which-key.el +++ b/lisp/which-key.el @@ -1,6 +1,6 @@ ;;; which-key.el --- Display available keybindings in popup -*- lexical-binding: t; -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Author: Justin Burkett ;; Maintainer: Justin Burkett diff --git a/lisp/whitespace.el b/lisp/whitespace.el index de2551d42b0..2e89d2ae977 100644 --- a/lisp/whitespace.el +++ b/lisp/whitespace.el @@ -1,6 +1,6 @@ ;;; whitespace.el --- minor mode to visualize TAB, (HARD) SPACE, NEWLINE -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Vinicius Jose Latorre ;; Keywords: data, text @@ -887,7 +887,7 @@ This variable is used when `whitespace-style' includes `tab-mark', (defcustom whitespace-global-modes t - "Modes for which global `whitespace-mode' is automagically turned on. + "Modes for which global `whitespace-mode' is automatically turned on. Global `whitespace-mode' is controlled by the command `global-whitespace-mode'. diff --git a/lisp/wid-browse.el b/lisp/wid-browse.el index 39d29f4a75d..36ee83bffbc 100644 --- a/lisp/wid-browse.el +++ b/lisp/wid-browse.el @@ -1,6 +1,6 @@ ;;; wid-browse.el --- functions for browsing widgets -*- lexical-binding: t -*- -;; Copyright (C) 1997-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-2026 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: extensions diff --git a/lisp/wid-edit.el b/lisp/wid-edit.el index da07231a4da..353d546fce4 100644 --- a/lisp/wid-edit.el +++ b/lisp/wid-edit.el @@ -1,6 +1,6 @@ ;; wid-edit.el --- Functions for creating and using widgets -*- lexical-binding:t -*- ;; -;; Copyright (C) 1996-1997, 1999-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-1997, 1999-2026 Free Software Foundation, Inc. ;; ;; Author: Per Abrahamsen ;; Maintainer: emacs-devel@gnu.org @@ -1334,10 +1334,10 @@ POS defaults to the value of (point). If user option This is much faster.") (defun widget-move (arg &optional suppress-echo) - "Move point to the ARG next field or button. + "Move point to the ARGth next field or button. ARG may be negative to move backward. -When the second optional argument is non-nil, -nothing is shown in the echo area." +If the optional argument SUPPRESS-ECHO is non-nil, suppress showing +in the echo area the help-echo, if any, for the final position." (let* ((wrapped 0) (number arg) (fwd (> arg 0)) ; widget-forward is caller. @@ -1384,19 +1384,19 @@ nothing is shown in the echo area." (run-hooks 'widget-move-hook)) (defun widget-forward (arg &optional suppress-echo) - "Move point to the next field or button. -With optional ARG, move across that many fields. -When the second optional argument is non-nil, -nothing is shown in the echo area." + "Move point forward across ARG fields or buttons. +Interactively, ARG is the prefix numeric argument and defaults to 1. +If the optional argument SUPPRESS-ECHO is non-nil, suppress showing +in the echo area the help-echo, if any, for the final position." (interactive "p") (run-hooks 'widget-forward-hook) (widget-move arg suppress-echo)) (defun widget-backward (arg &optional suppress-echo) - "Move point to the previous field or button. -With optional ARG, move across that many fields. -When the second optional argument is non-nil, -nothing is shown in the echo area." + "Move point back across ARG fields or buttons. +Interactively, ARG is the prefix numeric argument and defaults to 1. +If the optional argument SUPPRESS-ECHO is non-nil, suppress showing +in the echo area the help-echo, if any, for the final position." (interactive "p") (run-hooks 'widget-backward-hook) (widget-move (- arg) suppress-echo)) @@ -4362,7 +4362,10 @@ is inline." "Non-nil if VALUE is a defined color or a RGB hex string." (and (stringp value) (or (color-defined-p value) - (string-match-p "^#\\(?:[[:xdigit:]]\\{3\\}\\)\\{1,4\\}$" value)))) + (string-match-p "^#\\(?:[[:xdigit:]]\\{3\\}\\)\\{1,4\\}$" value) + ;; TTYs also allow unspecified-fg / unspecified-bg as color + ;; values even though they are technically not colors. + (string-match-p "^unspecified-\\(?:fg\\|bg\\)$" value)))) (defun widget-color-validate (widget) "Check that WIDGET's value is a valid color." diff --git a/lisp/widget.el b/lisp/widget.el index 2d706b64e62..18466c7d5c7 100644 --- a/lisp/widget.el +++ b/lisp/widget.el @@ -1,6 +1,6 @@ ;;; widget.el --- a library of user interface components -*- lexical-binding: t; -*- ;; -;; Copyright (C) 1996-2025 Free Software Foundation, Inc. +;; Copyright (C) 1996-2026 Free Software Foundation, Inc. ;; ;; Author: Per Abrahamsen ;; Keywords: help, extensions, faces, hypermedia diff --git a/lisp/windmove.el b/lisp/windmove.el index ed76c67ac46..6b9f64c97d5 100644 --- a/lisp/windmove.el +++ b/lisp/windmove.el @@ -1,6 +1,6 @@ ;;; windmove.el --- directional window-selection routines -*- lexical-binding:t -*- -;; Copyright (C) 1998-2025 Free Software Foundation, Inc. +;; Copyright (C) 1998-2026 Free Software Foundation, Inc. ;; Author: Hovav Shacham ;; Created: 17 October 1998 @@ -444,7 +444,7 @@ it is relative to the top edge (for positive ARG) or the bottom edge If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window." (interactive "P\np") @@ -462,7 +462,7 @@ negative ARG) of the current window. If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window." (interactive "P\np") @@ -480,7 +480,7 @@ bottom edge (for negative ARG) of the current window. If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window." (interactive "P\np") @@ -498,7 +498,7 @@ it is relative to the left edge (for positive ARG) or the right edge If no window is at the desired location, an error is signaled unless `windmove-create-window' is non-nil and a new window is created. -If `windmove-allow-repeated-command-override' is true and this commnad +If `windmove-allow-repeated-command-override' is true and this command stopped because it wouldn't move into a window marked with `no-other-window', repeating the command will move into that window." (interactive "P\np") diff --git a/lisp/window-tool-bar.el b/lisp/window-tool-bar.el index ace01885134..6a39a18b2bb 100644 --- a/lisp/window-tool-bar.el +++ b/lisp/window-tool-bar.el @@ -1,6 +1,6 @@ ;;; window-tool-bar.el --- Add tool bars inside windows -*- lexical-binding: t -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Jared Finder ;; Created: Nov 21, 2023 diff --git a/lisp/window-x.el b/lisp/window-x.el index d35973e1465..4197d5a0a26 100644 --- a/lisp/window-x.el +++ b/lisp/window-x.el @@ -1,6 +1,6 @@ ;;; window-x.el --- Extra window related commands -*- lexical-binding: t; -*- -;; Copyright (C) 2025 Free Software Foundation, Inc. +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. ;; Author: Pranshu Sharma ;; Martin Rudalics @@ -340,6 +340,51 @@ FRAME1." (delete-frame frame2) frame1)) +;;;###autoload +(defun window-get-split-combination (window arg) + "Return window combination suitable for `split-frame'. + +WINDOW is the main window in which the combination should be derived. +ARG is the argument passed to `split-frame'. Return a +combination of windows `split-frame' is considered to split off." + (let* ((reverse (< arg 0)) + ;; This is where the pivot window is. + (total-window-count (window-child-count window)) + (pivot-window-pos (- (if reverse + (+ total-window-count arg) + arg) + 1)) + (pivot-window (window-child window)) + (active-window (frame-selected-window window)) + ;; If FRAME's selected window is on the left side of the + ;; pivot window. + (active-window-on-left (eq pivot-window active-window))) + ;; We want the 2nd level window that the active window is a + ;; part of. + (while (not (eq (window-parent active-window) window)) + (setq active-window (window-parent active-window))) + + ;; Now we need to find the pivot window + (dotimes (_ pivot-window-pos) + (setq pivot-window (window-next-sibling pivot-window)) + (when (eq active-window pivot-window) + (setq active-window-on-left t))) + + ;; Now we have pivot-window set, and we just need to + ;; combine. We want to split away all windows from the + ;; side of the pivot that doesn't contain the active + ;; window. + (let* ((first (window-child window)) + (last (window-last-child window)) + (next-pivot-sib (window-next-sibling pivot-window)) + (right-comb (if (eq next-pivot-sib last) + last + (combine-windows next-pivot-sib last))) + (left-comb (if (eq first pivot-window) + first + (combine-windows first pivot-window)))) + (if active-window-on-left right-comb left-comb)))) + ;;;###autoload (defun split-frame (&optional frame arg) "Split windows of specified FRAME into two separate frames. @@ -371,47 +416,12 @@ absolute value of ARG. Return the new frame." ((>= (abs arg) total-window-count) (user-error "ARG %s exceeds number of windows %s that can be split off" (abs arg) (1- total-window-count))) - (t (let* ((reverse (< arg 0)) - ;; This is where the pivot window is. - (pivot-window-pos (- (if reverse - (+ total-window-count arg) - arg) - 1)) - (pivot-window (window-child main)) - (active-window (frame-selected-window frame)) - ;; If FRAME's selected window is on the left side of the - ;; pivot window. - (active-window-on-left (eq pivot-window active-window))) - ;; We want the 2nd level window that the active window is a - ;; part of. - (while (not (eq (window-parent active-window) main)) - (setq active-window (window-parent active-window))) - - ;; Now we need to find the pivot window - (dotimes (_ pivot-window-pos) - (setq pivot-window (window-next-sibling pivot-window)) - (when (eq active-window pivot-window) - (setq active-window-on-left t))) - - ;; Now we have pivot-window set, and we just need to - ;; combine. We want to split away all windows from the - ;; side of the pivot that doesn't contain the active - ;; window. - (let* ((first (window-child main)) - (last (window-last-child main)) - (next-pivot-sib (window-next-sibling pivot-window)) - (right-comb (if (eq next-pivot-sib last) - last - (combine-windows next-pivot-sib last))) - (left-comb (if (eq first pivot-window) - first - (combine-windows first pivot-window))) - ;; comb-win is the combination that will be - ;; split off. - (comb-win (if active-window-on-left right-comb left-comb))) - (window-state-put (window-state-get comb-win) - (window-main-window (make-frame))) - (delete-window comb-win))))))) + (t + (let ((comb (window-get-split-combination main arg))) + (window-state-put (window-state-get comb) + (window-main-window (make-frame))) + (delete-window comb)) + )))) (provide 'window-x) ;;; window-x.el ends here diff --git a/lisp/window.el b/lisp/window.el index f4386670d97..2327ffcd5f2 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -1,6 +1,6 @@ ;;; window.el --- GNU Emacs window commands aside from those written in C -*- lexical-binding:t -*- -;; Copyright (C) 1985-2025 Free Software Foundation, Inc. +;; Copyright (C) 1985-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal @@ -2850,9 +2850,15 @@ as small) as possible, but don't signal an error." (let* ((frame (window-frame window)) (root (frame-root-window frame)) (height (window-pixel-height window)) - (min-height (+ (frame-char-height frame) - (- (window-pixel-height window) - (window-body-height window t)))) + ;; Take line-spacing into account if the line-spacing is + ;; configured as a cons cell with above > 0 to prevent + ;; mini-window jiggling. + (ls (or (buffer-local-value 'line-spacing (window-buffer window)) + (frame-parameter frame 'line-spacing))) + (min-height (+ (if (and (consp ls) (> (car ls) 0)) + (window-default-line-height window) + (frame-char-height frame)) + (- height (window-body-height window t)))) (max-delta (- (window-pixel-height root) (window-min-size root nil nil t)))) ;; Don't make mini window too small. @@ -5502,8 +5508,13 @@ elsewhere. This value is used by `quit-windows-on'." ;; If quit-restore-prev was not used, reset the quit-restore ;; parameter (set-window-parameter window 'quit-restore nil)) - ;; If the previously selected window is still alive, select it. - (window--quit-restore-select-window quit-restore-2)) + ;; If WINDOW is the selected window and the previously selected + ;; window is still alive, try to select that window. But do that + ;; only if WINDOW is either the selected window or we are neither + ;; "burying" nor "killing". + (unless (and (not (eq window (selected-window))) + (memq bury-or-kill '(killing burying))) + (window--quit-restore-select-window quit-restore-2))) (t ;; Show some other buffer in WINDOW and leave the ;; quit-restore(-prev) parameters alone (Juri's idea). @@ -7573,6 +7584,17 @@ strategy." (with-selected-window window (split-window-right)))) +(defun window--frame-landscape-p (&optional frame) + "Non-nil if FRAME is wider than it is tall. +This means actually wider on the screen, not wider character-wise. +On text frames, use the heuristic that characters are roughtly twice as +tall as they are wide." + (if (display-graphic-p frame) + (> (frame-pixel-width frame) (frame-pixel-height frame)) + ;; On a terminal, displayed characters are usually roughly twice as + ;; tall as they are wide. + (> (frame-width frame) (* 2 (frame-height frame))))) + (defun split-window-sensibly (&optional window) "Split WINDOW in a way suitable for `display-buffer'. The variable `split-window-preferred-direction' prescribes an order of @@ -7613,7 +7635,7 @@ split." (or (if (or (eql split-window-preferred-direction 'horizontal) (and (eql split-window-preferred-direction 'longest) - (> (frame-width) (frame-height)))) + (window--frame-landscape-p (window-frame window)))) (or (window--try-horizontal-split window) (window--try-vertical-split window)) (or (window--try-vertical-split window) @@ -7987,18 +8009,25 @@ See the info node `(elisp)Dedicated Windows' for more details." (defconst display-buffer--action-function-custom-type '(choice :tag "Function" (const :tag "--" ignore) ; default for insertion - (const display-buffer-reuse-window) - (const display-buffer-pop-up-window) (const display-buffer-same-window) + (const display-buffer-reuse-window) + (const display-buffer-in-previous-window) + (const display-buffer-reuse-mode-window) + (const display-buffer-use-some-window) + (const display-buffer-use-least-recent-window) + (const display-buffer-pop-up-window) (const display-buffer-pop-up-frame) (const display-buffer-full-frame) + (const display-buffer-use-some-frame) (const display-buffer-in-child-frame) + (const display-buffer-in-side-window) + (const display-buffer-in-atom-window) (const display-buffer-below-selected) (const display-buffer-at-bottom) - (const display-buffer-in-previous-window) - (const display-buffer-use-least-recent-window) - (const display-buffer-use-some-window) - (const display-buffer-use-some-frame) + (const display-buffer-in-direction) + (const display-buffer-in-tab) + (const display-buffer-in-new-tab) + (const display-buffer-no-window) (function :tag "Other function")) "Custom type for `display-buffer' action functions.") @@ -8131,22 +8160,28 @@ To change which window is used, set `display-buffer-alist' to an expression containing one of these \"action\" functions: `display-buffer-same-window' -- Use the selected window. - `display-buffer-reuse-window' -- Use a window already showing - the buffer. - `display-buffer-in-previous-window' -- Use a window that did - show the buffer before. + `display-buffer-reuse-window' -- Use a window already showing the buffer. + `display-buffer-in-previous-window' -- Use a window that has previously + displayed the buffer. + `display-buffer-reuse-mode-window' -- Use a window currently showing a + buffer with the required major mode. `display-buffer-use-some-window' -- Use some existing window. - `display-buffer-use-least-recent-window' -- Try to avoid reusing - windows that have recently been switched to. + `display-buffer-use-least-recent-window' -- Try to avoid reusing windows + that have recently been switched to. `display-buffer-pop-up-window' -- Pop up a new window. + `display-buffer-pop-up-frame' -- Use a new frame. `display-buffer-full-frame' -- Delete other windows and use the full frame. - `display-buffer-below-selected' -- Use or pop up a window below - the selected one. - `display-buffer-at-bottom' -- Use or pop up a window at the - bottom of the selected frame. - `display-buffer-pop-up-frame' -- Show the buffer on a new frame. - `display-buffer-in-child-frame' -- Show the buffer in a - child frame. + `display-buffer-use-some-frame' -- Use a frame meeting a predicate. + `display-buffer-in-child-frame' -- Use a child frame of the selected frame. + `display-buffer-in-side-window' -- Use a side window of the selected frame. + `display-buffer-in-atom-window' -- Use an atomic window. + `display-buffer-below-selected' -- Use or pop up a window below the + selected one. + `display-buffer-at-bottom' -- Use or pop up a window at the bottom of the + selected frame. + `display-buffer-in-direction' -- Use a window in a specified direction. + `display-buffer-in-tab' -- Use an appropriate existing tab or a new tab. + `display-buffer-in-new-tab' -- Use a new tab. `display-buffer-no-window' -- Do not display the buffer and have `display-buffer' return nil immediately. @@ -8208,7 +8243,7 @@ Action alist entries are: Possible values are nil (the selected frame), t (any live frame), visible (any visible frame), 0 (any visible or iconified frame) or an existing live frame. - `pop-up-frames' -- Same effect as the eponymous variable. + \\+`pop-up-frames' -- Same effect as the eponymous variable. Takes precedence over the variable. `pop-up-frame-parameters' -- The value specifies an alist of frame parameters to give a new frame, if one is created. @@ -8307,9 +8342,13 @@ Action alist entries are: selected regardless of which windows were selected afterwards within this command. `category' -- If the caller of `display-buffer' passes an alist entry - `(category . symbol)' in its action argument, then you can match - the displayed buffer by using the same category in the condition - part of `display-buffer-alist' entries. + `(category . symbol)' in its action argument, then you can match + the displayed buffer by using the same category in the condition + part of `display-buffer-alist' entries. + `tab-name' -- If non-nil, specifies the name of the tab in which to + display the buffer; see `display-buffer-in-new-tab'. + \\+`tab-group' -- If non-nil, specifies the tab group to use when creating + a new tab; see `display-buffer-in-new-tab'. The entries `window-height', `window-width', `window-size' and `preserve-size' are applied only when the window used for @@ -8561,7 +8600,9 @@ indirectly called by the latter." (window--maybe-raise-frame (window-frame window))))))) (defun display-buffer-reuse-mode-window (buffer alist) - "Return a window based on the mode of the buffer it displays. + "Display BUFFER in a window with a buffer of the required major mode. + +Return a window based on the major mode of the buffer it displays. Display BUFFER in the returned window. Return nil if no usable window is found. @@ -9882,8 +9923,8 @@ face on WINDOW's frame." (buffer (window-buffer window)) (space-height (or (and (display-graphic-p frame) - (or (buffer-local-value 'line-spacing buffer) - (frame-parameter frame 'line-spacing))) + (total-line-spacing (or (buffer-local-value 'line-spacing buffer) + (frame-parameter frame 'line-spacing)))) 0))) (+ font-height (if (floatp space-height) diff --git a/lisp/winner.el b/lisp/winner.el index a052ef00945..e888de2ae35 100644 --- a/lisp/winner.el +++ b/lisp/winner.el @@ -1,6 +1,6 @@ ;;; winner.el --- Restore old window configurations -*- lexical-binding: t -*- -;; Copyright (C) 1997-1998, 2001-2025 Free Software Foundation, Inc. +;; Copyright (C) 1997-1998, 2001-2026 Free Software Foundation, Inc. ;; Author: Ivar Rummelhoff ;; Created: 27 Feb 1997 diff --git a/lisp/woman.el b/lisp/woman.el index 67f2b5cf9d7..dc100c6fbf2 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -1,6 +1,6 @@ ;;; woman.el --- browse UN*X manual pages `wo (without) man' -*- lexical-binding: t; -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Francis J. Wright ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/x-dnd.el b/lisp/x-dnd.el index 13fe3842f18..b70faff40d4 100644 --- a/lisp/x-dnd.el +++ b/lisp/x-dnd.el @@ -1,6 +1,6 @@ ;;; x-dnd.el --- drag and drop support for X -*- lexical-binding: t; -*- -;; Copyright (C) 2004-2025 Free Software Foundation, Inc. +;; Copyright (C) 2004-2026 Free Software Foundation, Inc. ;; Author: Jan Djärv ;; Maintainer: emacs-devel@gnu.org diff --git a/lisp/xdg.el b/lisp/xdg.el index 56a5efa7720..ccdaa50477a 100644 --- a/lisp/xdg.el +++ b/lisp/xdg.el @@ -1,6 +1,6 @@ ;;; xdg.el --- XDG specification and standard support -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Author: Mark Oteiza ;; Created: 27 January 2017 diff --git a/lisp/xml.el b/lisp/xml.el index 8f50d3c66fc..43fdb60acd3 100644 --- a/lisp/xml.el +++ b/lisp/xml.el @@ -1,6 +1,6 @@ ;;; xml.el --- XML parser -*- lexical-binding: t -*- -;; Copyright (C) 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 2000-2026 Free Software Foundation, Inc. ;; Author: Emmanuel Briot ;; Maintainer: Mark A. Hershberger diff --git a/lisp/xt-mouse.el b/lisp/xt-mouse.el index 6e19e9c2a09..2930cc195ef 100644 --- a/lisp/xt-mouse.el +++ b/lisp/xt-mouse.el @@ -1,6 +1,6 @@ ;;; xt-mouse.el --- support the mouse when emacs run in an xterm -*- lexical-binding: t -*- -;; Copyright (C) 1994, 2000-2025 Free Software Foundation, Inc. +;; Copyright (C) 1994, 2000-2026 Free Software Foundation, Inc. ;; Author: Per Abrahamsen ;; Keywords: mouse, terminals diff --git a/lisp/xwidget.el b/lisp/xwidget.el index 01f287c08ee..c75cd047495 100644 --- a/lisp/xwidget.el +++ b/lisp/xwidget.el @@ -1,6 +1,6 @@ ;;; xwidget.el --- api functions for xwidgets -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Joakim Verona @@ -31,7 +31,6 @@ ;; And is pointless when we do, since it's in C and so preloaded. ;;(require 'xwidget-internal) -(require 'cl-lib) (require 'bookmark) (require 'format-spec) diff --git a/lisp/yank-media.el b/lisp/yank-media.el index 31166b8e634..f01d5ba7d59 100644 --- a/lisp/yank-media.el +++ b/lisp/yank-media.el @@ -1,6 +1,6 @@ ;;; yank-media.el --- Yanking images and HTML -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Lars Ingebrigtsen ;; Keywords: utility @@ -24,7 +24,6 @@ ;;; Code: -(require 'cl-lib) (require 'seq) (defvar yank-media--registered-handlers nil) diff --git a/lwlib/ChangeLog.1 b/lwlib/ChangeLog.1 index 4e10adca38f..1e924ac40af 100644 --- a/lwlib/ChangeLog.1 +++ b/lwlib/ChangeLog.1 @@ -1968,7 +1968,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1995-1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1995-1999, 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/lwlib/Makefile.in b/lwlib/Makefile.in index d0c2d3c5ab1..e9cd9619972 100644 --- a/lwlib/Makefile.in +++ b/lwlib/Makefile.in @@ -1,7 +1,7 @@ ### @configure_input@ # Copyright (C) 1992, 1993 Lucid, Inc. -# Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. # # This file is part of the Lucid Widget Library. # diff --git a/lwlib/deps.mk b/lwlib/deps.mk index d203fe488b6..c93b5041c2f 100644 --- a/lwlib/deps.mk +++ b/lwlib/deps.mk @@ -1,7 +1,7 @@ ### deps.mk --- lwlib/Makefile fragment for GNU Emacs # Copyright (C) 1992, 1993 Lucid, Inc. -# Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. # # This file is part of the Lucid Widget Library. # diff --git a/lwlib/lwlib-Xaw.c b/lwlib/lwlib-Xaw.c index 4970fbca14e..76b313e8402 100644 --- a/lwlib/lwlib-Xaw.c +++ b/lwlib/lwlib-Xaw.c @@ -1,7 +1,7 @@ /* The lwlib interface to Athena widgets. Copyright (C) 1993 Chuck Thompson -Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib-Xlw.c b/lwlib/lwlib-Xlw.c index 0c723f8dcf7..0a9cf7ead5e 100644 --- a/lwlib/lwlib-Xlw.c +++ b/lwlib/lwlib-Xlw.c @@ -1,7 +1,7 @@ /* The lwlib interface to "xlwmenu" menus. Copyright (C) 1992 Lucid, Inc. -Copyright (C) 1994, 2000-2025 Free Software Foundation, Inc. +Copyright (C) 1994, 2000-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib-Xm.c b/lwlib/lwlib-Xm.c index 6c60e76b999..0eedaac3d12 100644 --- a/lwlib/lwlib-Xm.c +++ b/lwlib/lwlib-Xm.c @@ -1,6 +1,6 @@ /* The lwlib interface to Motif widgets. -Copyright (C) 1994-1997, 1999-2025 Free Software Foundation, Inc. +Copyright (C) 1994-1997, 1999-2026 Free Software Foundation, Inc. Copyright (C) 1992 Lucid, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib-int.h b/lwlib/lwlib-int.h index 7d0cb6d9157..97aca6bd659 100644 --- a/lwlib/lwlib-int.h +++ b/lwlib/lwlib-int.h @@ -1,6 +1,6 @@ /* Copyright (C) 1992 Lucid, Inc. -Copyright (C) 2000-2025 Free Software Foundation, Inc. +Copyright (C) 2000-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib-utils.c b/lwlib/lwlib-utils.c index f093ed8320f..da851c7ab6a 100644 --- a/lwlib/lwlib-utils.c +++ b/lwlib/lwlib-utils.c @@ -1,7 +1,7 @@ /* Defines some widget utility functions. Copyright (C) 1992 Lucid, Inc. -Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib-widget.h b/lwlib/lwlib-widget.h index 72bb25f1aea..cd9b579436f 100644 --- a/lwlib/lwlib-widget.h +++ b/lwlib/lwlib-widget.h @@ -1,6 +1,6 @@ /* Copyright (C) 1992, 1993 Lucid, Inc. -Copyright (C) 1994, 1999-2025 Free Software Foundation, Inc. +Copyright (C) 1994, 1999-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib.c b/lwlib/lwlib.c index ccc267b347f..c7b80a83338 100644 --- a/lwlib/lwlib.c +++ b/lwlib/lwlib.c @@ -1,7 +1,7 @@ /* A general interface to the widgets of different toolkits. Copyright (C) 1992, 1993 Lucid, Inc. -Copyright (C) 1994-1996, 1999-2025 Free Software Foundation, Inc. +Copyright (C) 1994-1996, 1999-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/lwlib.h b/lwlib/lwlib.h index d19f46bb1ad..bcbb1207478 100644 --- a/lwlib/lwlib.h +++ b/lwlib/lwlib.h @@ -1,6 +1,6 @@ /* Copyright (C) 1992, 1993 Lucid, Inc. -Copyright (C) 1994, 1999-2025 Free Software Foundation, Inc. +Copyright (C) 1994, 1999-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/xlwmenu.c b/lwlib/xlwmenu.c index 9e11e18b63e..12aeac8b16f 100644 --- a/lwlib/xlwmenu.c +++ b/lwlib/xlwmenu.c @@ -1,7 +1,7 @@ /* Implements a lightweight menubar widget. Copyright (C) 1992 Lucid, Inc. -Copyright (C) 1994-1995, 1997, 1999-2025 Free Software Foundation, Inc. +Copyright (C) 1994-1995, 1997, 1999-2026 Free Software Foundation, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/xlwmenu.h b/lwlib/xlwmenu.h index 85c8b1d9426..3525c8d18d3 100644 --- a/lwlib/xlwmenu.h +++ b/lwlib/xlwmenu.h @@ -1,6 +1,6 @@ /* Interface of a lightweight menubar widget. -Copyright (C) 2002-2025 Free Software Foundation, Inc. +Copyright (C) 2002-2026 Free Software Foundation, Inc. Copyright (C) 1992 Lucid, Inc. This file is part of the Lucid Widget Library. diff --git a/lwlib/xlwmenuP.h b/lwlib/xlwmenuP.h index 15feb05447b..715a9f8820e 100644 --- a/lwlib/xlwmenuP.h +++ b/lwlib/xlwmenuP.h @@ -1,6 +1,6 @@ /* Internals of a lightweight menubar widget. -Copyright (C) 2002-2025 Free Software Foundation, Inc. +Copyright (C) 2002-2026 Free Software Foundation, Inc. Copyright (C) 1992 Lucid, Inc. This file is part of the Lucid Widget Library. diff --git a/m4/00gnulib.m4 b/m4/00gnulib.m4 index 2b205b35d92..a4b32403007 100644 --- a/m4/00gnulib.m4 +++ b/m4/00gnulib.m4 @@ -1,6 +1,6 @@ # 00gnulib.m4 # serial 9 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/__inline.m4 b/m4/__inline.m4 index d1b8257b00d..4dedc0d412e 100644 --- a/m4/__inline.m4 +++ b/m4/__inline.m4 @@ -1,6 +1,6 @@ # __inline.m4 # serial 1 -dnl Copyright 2017-2025 Free Software Foundation, Inc. +dnl Copyright 2017-2026 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/absolute-header.m4 b/m4/absolute-header.m4 index 5501b07b81a..94ecc51089d 100644 --- a/m4/absolute-header.m4 +++ b/m4/absolute-header.m4 @@ -1,6 +1,6 @@ # absolute-header.m4 # serial 18 -dnl Copyright (C) 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2026 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/acl.m4 b/m4/acl.m4 index e68ed377ba9..b0652c4463c 100644 --- a/m4/acl.m4 +++ b/m4/acl.m4 @@ -1,6 +1,6 @@ # acl.m4 # serial 40 -dnl Copyright (C) 2002, 2004-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2004-2026 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/alloca.m4 b/m4/alloca.m4 index 68fc6211def..ff0c59dd415 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-2025 Free Software Foundation, +dnl Copyright (C) 2002-2004, 2006-2007, 2009-2026 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, diff --git a/m4/assert_h.m4 b/m4/assert_h.m4 index b02cbd6810c..d9433ef7dfa 100644 --- a/m4/assert_h.m4 +++ b/m4/assert_h.m4 @@ -1,6 +1,6 @@ # assert_h.m4 # serial 6 -dnl Copyright (C) 2011-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2026 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/builtin-expect.m4 b/m4/builtin-expect.m4 index 76d3286788a..cf96977e7ac 100644 --- a/m4/builtin-expect.m4 +++ b/m4/builtin-expect.m4 @@ -1,6 +1,6 @@ # builtin-expect.m4 # serial 3 -dnl Copyright 2016-2025 Free Software Foundation, Inc. +dnl Copyright 2016-2026 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/byteswap.m4 b/m4/byteswap.m4 index b53cb4d00d6..a0287062ac2 100644 --- a/m4/byteswap.m4 +++ b/m4/byteswap.m4 @@ -1,6 +1,6 @@ # byteswap.m4 # serial 7 -dnl Copyright (C) 2005, 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2007, 2009-2026 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/c-bool.m4 b/m4/c-bool.m4 index 8fa8bfc88b9..f04041a44ee 100644 --- a/m4/c-bool.m4 +++ b/m4/c-bool.m4 @@ -1,6 +1,6 @@ # c-bool.m4 # serial 3 -dnl Copyright 2022-2025 Free Software Foundation, Inc. +dnl Copyright 2022-2026 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/canonicalize.m4 b/m4/canonicalize.m4 index c71603c5f97..3b247226af8 100644 --- a/m4/canonicalize.m4 +++ b/m4/canonicalize.m4 @@ -1,7 +1,7 @@ # canonicalize.m4 # serial 40 -dnl Copyright (C) 2003-2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2007, 2009-2026 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/m4/clock_time.m4 b/m4/clock_time.m4 index bb2d51fccbb..53cf961f671 100644 --- a/m4/clock_time.m4 +++ b/m4/clock_time.m4 @@ -1,6 +1,6 @@ # clock_time.m4 # serial 14 -dnl Copyright (C) 2002-2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2006, 2009-2026 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/codeset.m4 b/m4/codeset.m4 index 6bed9deeccc..4ab542f4291 100644 --- a/m4/codeset.m4 +++ b/m4/codeset.m4 @@ -1,6 +1,6 @@ # codeset.m4 # serial 5 (gettext-0.18.2) -dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2025 Free Software +dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019-2026 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/m4/copy-file-range.m4 b/m4/copy-file-range.m4 index 85cfef71f44..17604a400b5 100644 --- a/m4/copy-file-range.m4 +++ b/m4/copy-file-range.m4 @@ -1,6 +1,6 @@ # copy-file-range.m4 # serial 5 -dnl Copyright 2019-2025 Free Software Foundation, Inc. +dnl Copyright 2019-2026 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/d-type.m4 b/m4/d-type.m4 index d52ac301310..0c335f8b1df 100644 --- a/m4/d-type.m4 +++ b/m4/d-type.m4 @@ -1,6 +1,6 @@ # d-type.m4 # serial 12 -dnl Copyright (C) 1997, 1999-2004, 2006, 2009-2025 Free Software Foundation, +dnl Copyright (C) 1997, 1999-2004, 2006, 2009-2026 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, diff --git a/m4/dirent_h.m4 b/m4/dirent_h.m4 index bd573a935fd..9e0c979d4d7 100644 --- a/m4/dirent_h.m4 +++ b/m4/dirent_h.m4 @@ -1,6 +1,6 @@ # dirent_h.m4 # serial 22 -dnl Copyright (C) 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2026 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/dirfd.m4 b/m4/dirfd.m4 index 1d54b588afd..954ea0e9fb5 100644 --- a/m4/dirfd.m4 +++ b/m4/dirfd.m4 @@ -1,6 +1,6 @@ # dirfd.m4 # serial 30 -*- Autoconf -*- -dnl Copyright (C) 2001-2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2006, 2008-2026 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/double-slash-root.m4 b/m4/double-slash-root.m4 index 5c40b73c9f0..957adca6698 100644 --- a/m4/double-slash-root.m4 +++ b/m4/double-slash-root.m4 @@ -1,6 +1,6 @@ # double-slash-root.m4 # serial 4 -*- Autoconf -*- -dnl Copyright (C) 2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2008-2026 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/dup2.m4 b/m4/dup2.m4 index 5da3a0b9f61..e1d518983b5 100644 --- a/m4/dup2.m4 +++ b/m4/dup2.m4 @@ -1,6 +1,6 @@ # dup2.m4 # serial 28 -dnl Copyright (C) 2002, 2005, 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2005, 2007, 2009-2026 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/endian_h.m4 b/m4/endian_h.m4 index f34402fd374..dfcfe7955b9 100644 --- a/m4/endian_h.m4 +++ b/m4/endian_h.m4 @@ -1,6 +1,6 @@ # endian_h.m4 # serial 6 -dnl Copyright 2024-2025 Free Software Foundation, Inc. +dnl Copyright 2024-2026 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/environ.m4 b/m4/environ.m4 index e0690e541fa..5c0644ab92d 100644 --- a/m4/environ.m4 +++ b/m4/environ.m4 @@ -1,6 +1,6 @@ # environ.m4 # serial 8 -dnl Copyright (C) 2001-2004, 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2004, 2006-2026 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/errno_h.m4 b/m4/errno_h.m4 index 623cb7b2360..ade19b6fd83 100644 --- a/m4/errno_h.m4 +++ b/m4/errno_h.m4 @@ -1,6 +1,6 @@ # errno_h.m4 # serial 19 -dnl Copyright (C) 2004, 2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2004, 2006, 2008-2026 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 099c7b85abe..85833d3f44a 100644 --- a/m4/euidaccess.m4 +++ b/m4/euidaccess.m4 @@ -1,6 +1,6 @@ # euidaccess.m4 # serial 17 -dnl Copyright (C) 2002-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2026 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/execinfo.m4 b/m4/execinfo.m4 index 558d66c5125..19d4fccf746 100644 --- a/m4/execinfo.m4 +++ b/m4/execinfo.m4 @@ -1,6 +1,6 @@ # execinfo.m4 # serial 1 -dnl Copyright 2012-2025 Free Software Foundation, Inc. +dnl Copyright 2012-2026 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/extensions-aix.m4 b/m4/extensions-aix.m4 index 08b703b44b2..9036d7bb047 100644 --- a/m4/extensions-aix.m4 +++ b/m4/extensions-aix.m4 @@ -1,6 +1,6 @@ # extensions-aix.m4 # serial 1 -dnl Copyright (C) 2024-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2024-2026 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/extensions.m4 b/m4/extensions.m4 index 76516bceb33..01a8e5f9518 100644 --- a/m4/extensions.m4 +++ b/m4/extensions.m4 @@ -1,6 +1,6 @@ # extensions.m4 # serial 25 -*- Autoconf -*- -dnl Copyright (C) 2003, 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2006-2026 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/extern-inline.m4 b/m4/extern-inline.m4 index 7a63df0340e..4ccc4a9530b 100644 --- a/m4/extern-inline.m4 +++ b/m4/extern-inline.m4 @@ -1,6 +1,6 @@ # extern-inline.m4 # serial 2 -dnl Copyright 2012-2025 Free Software Foundation, Inc. +dnl Copyright 2012-2026 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/faccessat.m4 b/m4/faccessat.m4 index 73c701660ee..77187450b15 100644 --- a/m4/faccessat.m4 +++ b/m4/faccessat.m4 @@ -1,6 +1,6 @@ # faccessat.m4 # serial 12 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/fchmodat.m4 b/m4/fchmodat.m4 index fa30908a015..e4688708063 100644 --- a/m4/fchmodat.m4 +++ b/m4/fchmodat.m4 @@ -1,6 +1,6 @@ # fchmodat.m4 # serial 9 -dnl Copyright (C) 2004-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2004-2026 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/fcntl.m4 b/m4/fcntl.m4 index 08ab936f4a3..69ac76f94c3 100644 --- a/m4/fcntl.m4 +++ b/m4/fcntl.m4 @@ -1,6 +1,6 @@ # fcntl.m4 # serial 12 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/fcntl_h.m4 b/m4/fcntl_h.m4 index 6d6c8ff4de5..946a0bd6320 100644 --- a/m4/fcntl_h.m4 +++ b/m4/fcntl_h.m4 @@ -1,6 +1,6 @@ # fcntl_h.m4 # serial 21 -dnl Copyright (C) 2006-2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2007, 2009-2026 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/fdopendir.m4 b/m4/fdopendir.m4 index d45ce468b35..d7334b2da4c 100644 --- a/m4/fdopendir.m4 +++ b/m4/fdopendir.m4 @@ -1,6 +1,6 @@ # fdopendir.m4 # serial 15 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/filemode.m4 b/m4/filemode.m4 index 7a66a21124b..9bf319abf54 100644 --- a/m4/filemode.m4 +++ b/m4/filemode.m4 @@ -1,6 +1,6 @@ # filemode.m4 # serial 9 -dnl Copyright (C) 2002, 2005-2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2005-2006, 2009-2026 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/flexmember.m4 b/m4/flexmember.m4 index 3e097a667f5..b2d9994c5ea 100644 --- a/m4/flexmember.m4 +++ b/m4/flexmember.m4 @@ -1,6 +1,6 @@ # flexmember.m4 # serial 5 -dnl Copyright (C) 2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006, 2009-2026 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/fpending.m4 b/m4/fpending.m4 index 73be7273a30..dd665168857 100644 --- a/m4/fpending.m4 +++ b/m4/fpending.m4 @@ -1,6 +1,6 @@ # fpending.m4 # serial 23 -dnl Copyright (C) 2000-2001, 2004-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2000-2001, 2004-2026 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/fpieee.m4 b/m4/fpieee.m4 index ccece00582a..3fe970425c9 100644 --- a/m4/fpieee.m4 +++ b/m4/fpieee.m4 @@ -1,6 +1,6 @@ # fpieee.m4 # serial 2 -dnl Copyright (C) 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2026 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/free.m4 b/m4/free.m4 index bf03a7d1902..c7a134bab8a 100644 --- a/m4/free.m4 +++ b/m4/free.m4 @@ -1,6 +1,6 @@ # free.m4 # serial 6 -dnl Copyright (C) 2003-2005, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2005, 2009-2026 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/fseterr.m4 b/m4/fseterr.m4 index 3a94c28824f..e5ad635bacb 100644 --- a/m4/fseterr.m4 +++ b/m4/fseterr.m4 @@ -1,6 +1,6 @@ # fseterr.m4 # serial 2 -dnl Copyright (C) 2012-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2012-2026 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/fstatat.m4 b/m4/fstatat.m4 index 11b2b688e25..d53e8d91966 100644 --- a/m4/fstatat.m4 +++ b/m4/fstatat.m4 @@ -1,6 +1,6 @@ # fstatat.m4 # serial 5 -dnl Copyright (C) 2004-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2004-2026 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 546c42d292b..db6e0e3b636 100644 --- a/m4/fsusage.m4 +++ b/m4/fsusage.m4 @@ -1,6 +1,6 @@ # fsusage.m4 # serial 37 -dnl Copyright (C) 1997-1998, 2000-2001, 2003-2025 Free Software Foundation, +dnl Copyright (C) 1997-1998, 2000-2001, 2003-2026 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, diff --git a/m4/fsync.m4 b/m4/fsync.m4 index 3b951eb0ae0..18b9a24ff7b 100644 --- a/m4/fsync.m4 +++ b/m4/fsync.m4 @@ -1,6 +1,6 @@ # fsync.m4 # serial 2 -dnl Copyright (C) 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2026 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/futimens.m4 b/m4/futimens.m4 index 7252dd66d1a..9c8f5c649b2 100644 --- a/m4/futimens.m4 +++ b/m4/futimens.m4 @@ -1,6 +1,6 @@ # futimens.m4 # serial 12 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/getdelim.m4 b/m4/getdelim.m4 index d1217ab8d95..8b6eff47aa2 100644 --- a/m4/getdelim.m4 +++ b/m4/getdelim.m4 @@ -1,7 +1,7 @@ # getdelim.m4 # serial 21 -dnl Copyright (C) 2005-2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2007, 2009-2026 Free Software Foundation, Inc. dnl dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/m4/getdtablesize.m4 b/m4/getdtablesize.m4 index 112c1c4d484..0b780110e59 100644 --- a/m4/getdtablesize.m4 +++ b/m4/getdtablesize.m4 @@ -1,6 +1,6 @@ # getdtablesize.m4 # serial 8 -dnl Copyright (C) 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2026 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/getgroups.m4 b/m4/getgroups.m4 index 325ea7fd1dd..34ac3a6300e 100644 --- a/m4/getgroups.m4 +++ b/m4/getgroups.m4 @@ -1,6 +1,6 @@ # getgroups.m4 # serial 25 -dnl Copyright (C) 1996-1997, 1999-2004, 2008-2025 Free Software Foundation, +dnl Copyright (C) 1996-1997, 1999-2004, 2008-2026 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, diff --git a/m4/getline.m4 b/m4/getline.m4 index e07d6533ddc..ed32fa10bfb 100644 --- a/m4/getline.m4 +++ b/m4/getline.m4 @@ -1,7 +1,7 @@ # getline.m4 # serial 35 -dnl Copyright (C) 1998-2003, 2005-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 1998-2003, 2005-2007, 2009-2026 Free Software Foundation, dnl Inc. dnl dnl This file is free software; the Free Software Foundation diff --git a/m4/getloadavg.m4 b/m4/getloadavg.m4 index 0d80b64acd5..dc226168b1f 100644 --- a/m4/getloadavg.m4 +++ b/m4/getloadavg.m4 @@ -1,6 +1,6 @@ # getloadavg.m4 # serial 14 -dnl Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2025 Free +dnl Copyright (C) 1992-1996, 1999-2000, 2002-2003, 2006, 2008-2026 Free dnl Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/m4/getopt.m4 b/m4/getopt.m4 index f219ed522ca..c620b2b77f0 100644 --- a/m4/getopt.m4 +++ b/m4/getopt.m4 @@ -1,6 +1,6 @@ # getopt.m4 # serial 52 -dnl Copyright (C) 2002-2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2006, 2008-2026 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/getrandom.m4 b/m4/getrandom.m4 index b0683bc0ce2..9443750cfc5 100644 --- a/m4/getrandom.m4 +++ b/m4/getrandom.m4 @@ -1,6 +1,6 @@ # getrandom.m4 # serial 13 -dnl Copyright 2020-2025 Free Software Foundation, Inc. +dnl Copyright 2020-2026 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/gettext_h.m4 b/m4/gettext_h.m4 index b4b1995c762..7ef89541b9f 100644 --- a/m4/gettext_h.m4 +++ b/m4/gettext_h.m4 @@ -1,6 +1,6 @@ # gettext_h.m4 # serial 1 -dnl Copyright (C) 2025 Free Software Foundation, Inc. +dnl Copyright (C) 2025-2026 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/gettime.m4 b/m4/gettime.m4 index 87f81cdee3c..0afe2aab169 100644 --- a/m4/gettime.m4 +++ b/m4/gettime.m4 @@ -1,6 +1,6 @@ # gettime.m4 # serial 15 -dnl Copyright (C) 2002, 2004-2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2004-2006, 2009-2026 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/gettimeofday.m4 b/m4/gettimeofday.m4 index 5cd84cc997c..3728c13e999 100644 --- a/m4/gettimeofday.m4 +++ b/m4/gettimeofday.m4 @@ -1,6 +1,6 @@ # gettimeofday.m4 # serial 30 -dnl Copyright (C) 2001-2003, 2005, 2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 2001-2003, 2005, 2007, 2009-2026 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, diff --git a/m4/gnulib-common.m4 b/m4/gnulib-common.m4 index 7ec965c0e45..26eef771db1 100644 --- a/m4/gnulib-common.m4 +++ b/m4/gnulib-common.m4 @@ -1,6 +1,6 @@ # gnulib-common.m4 # serial 115 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2026 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. @@ -422,15 +422,17 @@ AC_DEFUN([gl_COMMON_BODY], [ without examining state, and always returns exactly once - e.g., does not raise an exception, call longjmp, or loop forever. (This attribute is stricter than _GL_ATTRIBUTE_PURE because the - function cannot observe state. It is stricter than - _GL_ATTRIBUTE_UNSEQUENCED because the function must return exactly - once and cannot access state addressed by its arguments.) */ + function cannot observe state. Unlike _GL_ATTRIBUTE_UNSEQUENCED + the function must return exactly once and cannot access state + addressed by its pointer arguments or that happens to have the same + value for all calls to the function, but the function is allowed to + return a pointer to storage that can be modified later. */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_CONST # if _GL_HAS_ATTRIBUTE (const) # define _GL_ATTRIBUTE_CONST __attribute__ ((__const__)) # else -# define _GL_ATTRIBUTE_CONST _GL_ATTRIBUTE_UNSEQUENCED +# define _GL_ATTRIBUTE_CONST # endif #endif @@ -591,7 +593,9 @@ AC_DEFUN([gl_COMMON_BODY], [ /* _GL_ATTRIBUTE_MAYBE_UNUSED declares that it is not a programming mistake if the entity is not used. The compiler should not warn if the entity is not - used. */ + used. However, 'int _GL_UNNAMED (i)' is preferable to + '_GL_ATTRIBUTE_MAYBE_UNUSED int i' when parameter I is unused + regardless of preprocessor macro settings. */ /* Applies to: - function, variable, - struct, union, struct/union member, @@ -752,34 +756,33 @@ AC_DEFUN([gl_COMMON_BODY], [ returns a value determined solely by its arguments's values together with observable state, and always returns exactly once. (This attribute is looser than _GL_ATTRIBUTE_CONST because the function - can depend on observable state. It is stricter than - _GL_ATTRIBUTE_REPRODUCIBLE because the function must return exactly - once and cannot change state addressed by its arguments.) */ + can depend on observable state. + Unlike _GL_ATTRIBUTE_REPRODUCIBLE the function must return exactly + once and cannot change state addressed by its arguments, but the + function can return a pointer to storage whose contents change later.) */ /* Applies to: functions. */ #ifndef _GL_ATTRIBUTE_PURE # if _GL_HAS_ATTRIBUTE (pure) # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define _GL_ATTRIBUTE_PURE _GL_ATTRIBUTE_REPRODUCIBLE +# define _GL_ATTRIBUTE_PURE # endif #endif /* _GL_ATTRIBUTE_REPRODUCIBLE declares: It is OK for a compiler to move a call, or omit a duplicate call - and reuse a cached value returned either directly or indirectly - via a pointer argument, if other observable state is the same; - however, these pointer arguments cannot alias. + and reuse a cached value returned either directly or indirectly via + a pointer, if other observable state is the same; + however, pointer arguments cannot alias. This attribute is safe for a function that is effectless and idempotent; see ISO C 23 § 6.7.13.8 for a definition of these terms. (This attribute is looser than _GL_ATTRIBUTE_UNSEQUENCED because - the function need not be stateless or independent. It is looser - from _GL_ATTRIBUTE_PURE because the function need not return - exactly once, and it can change state addressed by its pointer arguments - that do not alias.) + the function need not be stateless or independent. + Unlike _GL_ATTRIBUTE_PURE the function need not return exactly once + and can change state addressed by its pointer arguments, but the + function cannot return a pointer to storage whose contents change later.) See also and - . - ATTENTION! Efforts are underway to change the meaning of this attribute. - See . */ + . */ /* Applies to: functions, pointer to functions, function types. */ #ifndef _GL_ATTRIBUTE_REPRODUCIBLE /* This may be revisited when gcc and clang support [[reproducible]] or possibly @@ -820,20 +823,21 @@ AC_DEFUN([gl_COMMON_BODY], [ /* _GL_ATTRIBUTE_UNSEQUENCED declares: It is OK for a compiler to move a call, or omit a duplicate call - and reuse a cached return value, addressed by its arguments is the same. + and reuse a cached value returned either directly or indirectly via + a pointer, if the state addressed by its pointer arguments is the same; + however, pointer arguments cannot alias. This attribute is safe for a function that is effectless, idempotent, stateless, and independent; see ISO C 23 § 6.7.13.8 for a definition of these terms. (This attribute is stricter than _GL_ATTRIBUTE_REPRODUCIBLE because - the function must be stateless and independent. It differs from - _GL_ATTRIBUTE_CONST because the function need not return exactly - once and can depend on state accessed via its pointer arguments - that do not alias, or on other state that happens to have the - same value for all calls to the function.) + the function must be stateless and independent. Unlike + _GL_ATTRIBUTE_CONST the function need not return exactly once, and + can depend on state accessed via its pointer arguments or that + happens to have the same value for all calls to the function, but + the function cannot return a pointer to storage whose contents + change later.) See also and - . - ATTENTION! Efforts are underway to change the meaning of this attribute. - See . */ + . */ /* Applies to: functions, pointer to functions, function types. */ #ifndef _GL_ATTRIBUTE_UNSEQUENCED /* This may be revisited when gcc and clang support [[unsequenced]] or possibly @@ -873,6 +877,21 @@ AC_DEFUN([gl_COMMON_BODY], [ # endif #endif +/* _GL_UNNAMED (ID) is the "name" of an unnamed function parameter. + Each of the function's unnamed parameters should have a unique "name". + The "name" cannot be used. This ports both to C17 and earlier, which + lack unnamed parameters, and to C++ and later C, which have them. */ +/* Applies to: + - function parameters. */ +#ifndef _GL_UNNAMED +# if ((defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 202311 \ + && !defined __cplusplus) +# define _GL_UNNAMED(id) unnamed_##id _GL_ATTRIBUTE_UNUSED +# else +# define _GL_UNNAMED(id) +# endif +#endif + /* The following attributes enable detection of multithread-safety problems and resource leaks at compile-time, by clang ≥ 15, when the warning option -Wthread-safety is enabled. For usage, see diff --git a/m4/gnulib-comp.m4 b/m4/gnulib-comp.m4 index 47391071a7c..f2e09dd0d27 100644 --- a/m4/gnulib-comp.m4 +++ b/m4/gnulib-comp.m4 @@ -1,5 +1,5 @@ # DO NOT EDIT! GENERATED AUTOMATICALLY! -# Copyright (C) 2002-2025 Free Software Foundation, Inc. +# Copyright (C) 2002-2026 Free Software Foundation, Inc. # # 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 diff --git a/m4/group-member.m4 b/m4/group-member.m4 index 9a04aaeefee..5e5c3709c39 100644 --- a/m4/group-member.m4 +++ b/m4/group-member.m4 @@ -1,6 +1,6 @@ # group-member.m4 # serial 14 -dnl Copyright (C) 1999-2001, 2003-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 1999-2001, 2003-2007, 2009-2026 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, diff --git a/m4/ieee754-h.m4 b/m4/ieee754-h.m4 index 226f8d929e5..7fc6410832c 100644 --- a/m4/ieee754-h.m4 +++ b/m4/ieee754-h.m4 @@ -1,6 +1,6 @@ # ieee754-h.m4 # serial 1 -dnl Copyright 2018-2025 Free Software Foundation, Inc. +dnl Copyright 2018-2026 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/include_next.m4 b/m4/include_next.m4 index 80de991e249..a19f2dfdd30 100644 --- a/m4/include_next.m4 +++ b/m4/include_next.m4 @@ -1,6 +1,6 @@ # include_next.m4 # serial 27 -dnl Copyright (C) 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2026 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/inttypes.m4 b/m4/inttypes.m4 index 63c82c619db..ec17c2377dc 100644 --- a/m4/inttypes.m4 +++ b/m4/inttypes.m4 @@ -1,6 +1,6 @@ # inttypes.m4 # serial 37 -dnl Copyright (C) 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2026 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/largefile.m4 b/m4/largefile.m4 index 6aa07078297..3134f336135 100644 --- a/m4/largefile.m4 +++ b/m4/largefile.m4 @@ -1,6 +1,6 @@ # largefile.m4 # serial 4 -dnl Copyright 1992-1996, 1998-2025 Free Software Foundation, Inc. +dnl Copyright 1992-1996, 1998-2026 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/lchmod.m4 b/m4/lchmod.m4 index 601d1d3da4f..c6112c8fbc7 100644 --- a/m4/lchmod.m4 +++ b/m4/lchmod.m4 @@ -1,6 +1,6 @@ # lchmod.m4 # serial 11 -dnl Copyright (C) 2005-2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2006, 2008-2026 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/libgmp.m4 b/m4/libgmp.m4 index abf677949dd..e74e107e440 100644 --- a/m4/libgmp.m4 +++ b/m4/libgmp.m4 @@ -1,7 +1,7 @@ # libgmp.m4 # serial 9 # Configure the GMP library or a replacement. -dnl Copyright 2020-2025 Free Software Foundation, Inc. +dnl Copyright 2020-2026 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/limits-h.m4 b/m4/limits-h.m4 index 202df492fe6..048c8faba3d 100644 --- a/m4/limits-h.m4 +++ b/m4/limits-h.m4 @@ -1,6 +1,6 @@ # limits-h.m4 # serial 1 -dnl Copyright 2016-2025 Free Software Foundation, Inc. +dnl Copyright 2016-2026 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/locale-en.m4 b/m4/locale-en.m4 index 4151428af7b..f5e035f3675 100644 --- a/m4/locale-en.m4 +++ b/m4/locale-en.m4 @@ -1,6 +1,6 @@ # locale-en.m4 # serial 1 -dnl Copyright (C) 2003-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2026 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,7 +19,7 @@ AC_DEFUN_ONCE([gt_LOCALE_EN_UTF8], *-musl* | midipix*) dnl On musl libc, all kinds of ll_CC.UTF-8 locales exist, even without dnl any locale file on disk. But they are effectively equivalent to the - dnl C.UTF-8 locale, except for locale categories (such as LC_MESSSAGES) + dnl C.UTF-8 locale, except for locale categories (such as LC_MESSAGES) dnl for which localizations (.mo files) have been installed. gt_cv_locale_en_utf8=en_US.UTF-8 ;; diff --git a/m4/lstat.m4 b/m4/lstat.m4 index efae2485f19..57df6fd90ab 100644 --- a/m4/lstat.m4 +++ b/m4/lstat.m4 @@ -1,6 +1,6 @@ # lstat.m4 # serial 36 -dnl Copyright (C) 1997-2001, 2003-2025 Free Software Foundation, Inc. +dnl Copyright (C) 1997-2001, 2003-2026 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/malloc.m4 b/m4/malloc.m4 index c49c91e0404..a95e33db86c 100644 --- a/m4/malloc.m4 +++ b/m4/malloc.m4 @@ -1,6 +1,6 @@ # malloc.m4 # serial 46 -dnl Copyright (C) 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2026 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/manywarnings.m4 b/m4/manywarnings.m4 index bb5b4e10cd9..0824226fa71 100644 --- a/m4/manywarnings.m4 +++ b/m4/manywarnings.m4 @@ -1,6 +1,6 @@ # manywarnings.m4 -# serial 29 -dnl Copyright (C) 2008-2025 Free Software Foundation, Inc. +# serial 32 +dnl Copyright (C) 2008-2026 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. @@ -110,8 +110,8 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)], -Wduplicated-branches \ -Wduplicated-cond \ -Wextra \ - -Wformat-signedness \ -Wflex-array-member-not-at-end \ + -Wformat-signedness \ -Winit-self \ -Winline \ -Winvalid-pch \ @@ -138,8 +138,6 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)], -Wsuggest-attribute=malloc \ -Wsuggest-attribute=noreturn \ -Wsuggest-attribute=pure \ - -Wsuggest-final-methods \ - -Wsuggest-final-types \ -Wsync-nand \ -Wtrampolines \ -Wuninitialized \ @@ -150,7 +148,6 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)], -Wvector-operation-performance \ -Wvla \ -Wwrite-strings \ - \ ; do AS_VAR_APPEND([$1], [" $gl_manywarn_item"]) done @@ -169,20 +166,29 @@ AC_DEFUN([gl_MANYWARN_ALL_GCC(C)], AS_VAR_APPEND([$1], [' -Wunused-const-variable=2']) AS_VAR_APPEND([$1], [' -Wvla-larger-than=4031']) - # These are needed for older GCC versions. + # These depend on the GCC version. if test -n "$GCC" && gl_gcc_version=`($CC --version) 2>/dev/null`; then case $gl_gcc_version in - 'gcc (GCC) '[[0-3]].* | \ - 'gcc (GCC) '4.[[0-7]].*) + gcc*' ('*') '[[0-3]].* | \ + gcc*' ('*') '4.[[0-7]].*) AS_VAR_APPEND([$1], [' -fdiagnostics-show-option']) AS_VAR_APPEND([$1], [' -funit-at-a-time']) ;; esac case $gl_gcc_version in - 'gcc (GCC) '[[0-9]].*) + gcc*' ('*') '[[0-9]].*) AS_VAR_APPEND([$1], [' -fno-common']) ;; esac + case $gl_gcc_version in + gcc*' ('*') '?.* | gcc*' ('*') '1[[0-4]].*) + # In GCC < 15 the option either does not exist, + # or is accepted but always warns. + ;; + *) + AS_VAR_APPEND([$1], [' -Wzero-as-null-pointer-constant']) + ;; + esac fi # These options are not supported by gcc, but are useful with clang. diff --git a/m4/mbstate_t.m4 b/m4/mbstate_t.m4 index 59df1e2e634..88307d7a8a3 100644 --- a/m4/mbstate_t.m4 +++ b/m4/mbstate_t.m4 @@ -1,6 +1,6 @@ # mbstate_t.m4 # serial 14 -dnl Copyright (C) 2000-2002, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2000-2002, 2008-2026 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/md5.m4 b/m4/md5.m4 index 702b251792c..80bc47333ef 100644 --- a/m4/md5.m4 +++ b/m4/md5.m4 @@ -1,6 +1,6 @@ # md5.m4 # serial 14 -dnl Copyright (C) 2002-2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2006, 2008-2026 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/memmem.m4 b/m4/memmem.m4 index e940f8273f0..4c7b484930a 100644 --- a/m4/memmem.m4 +++ b/m4/memmem.m4 @@ -1,6 +1,6 @@ # memmem.m4 # serial 30 -dnl Copyright (C) 2002-2004, 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2004, 2007-2026 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/mempcpy.m4 b/m4/mempcpy.m4 index 4436adaa683..eda1b31c44d 100644 --- a/m4/mempcpy.m4 +++ b/m4/mempcpy.m4 @@ -1,6 +1,6 @@ # mempcpy.m4 # serial 14 -dnl Copyright (C) 2003-2004, 2006-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 2003-2004, 2006-2007, 2009-2026 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, diff --git a/m4/memrchr.m4 b/m4/memrchr.m4 index 8ebc2dd6ead..7e4e39f2ec1 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-2025 Free Software Foundation, +dnl Copyright (C) 2002-2003, 2005-2007, 2009-2026 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, diff --git a/m4/memset_explicit.m4 b/m4/memset_explicit.m4 index 8edc161f4ab..12dc833e86e 100644 --- a/m4/memset_explicit.m4 +++ b/m4/memset_explicit.m4 @@ -1,6 +1,6 @@ # memset_explicit.m4 # serial 4 -dnl Copyright 2022-2025 Free Software Foundation, Inc. +dnl Copyright 2022-2026 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/minmax.m4 b/m4/minmax.m4 index 69c8a89f996..3344e3f7985 100644 --- a/m4/minmax.m4 +++ b/m4/minmax.m4 @@ -1,6 +1,6 @@ # minmax.m4 # serial 4 -dnl Copyright (C) 2005, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2009-2026 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/mkostemp.m4 b/m4/mkostemp.m4 index 1bd9a6ae07e..93c993dc233 100644 --- a/m4/mkostemp.m4 +++ b/m4/mkostemp.m4 @@ -1,6 +1,6 @@ # mkostemp.m4 # serial 4 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/mktime.m4 b/m4/mktime.m4 index 6d7243e3306..fa32d138402 100644 --- a/m4/mktime.m4 +++ b/m4/mktime.m4 @@ -1,6 +1,6 @@ # mktime.m4 # serial 43 -dnl Copyright (C) 2002-2003, 2005-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 2002-2003, 2005-2007, 2009-2026 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, diff --git a/m4/mode_t.m4 b/m4/mode_t.m4 index 7dae201b5b5..4621813dba8 100644 --- a/m4/mode_t.m4 +++ b/m4/mode_t.m4 @@ -1,6 +1,6 @@ # mode_t.m4 # serial 2 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/multiarch.m4 b/m4/multiarch.m4 index 817f01f1dc3..4fb642b7ff4 100644 --- a/m4/multiarch.m4 +++ b/m4/multiarch.m4 @@ -1,6 +1,6 @@ # multiarch.m4 # serial 9 -dnl Copyright (C) 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2026 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/musl.m4 b/m4/musl.m4 index 6ff778cbf9d..15b3446685f 100644 --- a/m4/musl.m4 +++ b/m4/musl.m4 @@ -1,6 +1,6 @@ # musl.m4 # serial 4 -dnl Copyright (C) 2019-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2019-2026 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/nanosleep.m4 b/m4/nanosleep.m4 index 81c45d8a31a..3a9967c813d 100644 --- a/m4/nanosleep.m4 +++ b/m4/nanosleep.m4 @@ -1,6 +1,6 @@ # nanosleep.m4 -# serial 47 -dnl Copyright (C) 1999-2001, 2003-2025 Free Software Foundation, Inc. +# serial 48 +dnl Copyright (C) 1999-2001, 2003-2026 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. @@ -144,6 +144,25 @@ AC_DEFUN([gl_FUNC_NANOSLEEP], ;; esac else + # Replace the static inline function on mingw which requires linking to + # libwinpthreads. + AC_CACHE_CHECK([for static inline nanosleep], + [gl_cv_static_inline_nanosleep], + [AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[ + static struct timespec ts1; + static struct timespec ts2; + return nanosleep (&ts1, &ts2); + ]]) + ], + [gl_cv_static_inline_nanosleep=yes], + [gl_cv_static_inline_nanosleep=no]) + ]) + if test $gl_cv_static_inline_nanosleep = yes; then + REPLACE_NANOSLEEP=1 + fi HAVE_NANOSLEEP=0 fi LIBS=$gl_saved_LIBS diff --git a/m4/ndk-build.m4 b/m4/ndk-build.m4 index 45b111b238d..12135a0d501 100644 --- a/m4/ndk-build.m4 +++ b/m4/ndk-build.m4 @@ -1,4 +1,4 @@ -dnl Copyright (C) 2023-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2023-2026 Free Software Foundation, Inc. dnl This file is part of GNU Emacs. dnl GNU Emacs is free software: you can redistribute it and/or modify @@ -77,7 +77,7 @@ AS_CASE(["$ndk_ABI"], # This is a map between pkg-config style package names and Android # ones. -ndk_package_map="libwebpdemux:webpdemux libxml-2.0:libxml2" +ndk_package_map="libwebpdemux:webpdemux libwebp:webp libxml-2.0:libxml2" ndk_package_map="$ndk_package_map sqlite3:libsqlite_static_minimal" ndk_package_map="$ndk_package_map MagickWand:libmagickwand-7 lcms2:liblcms2" diff --git a/m4/nocrash.m4 b/m4/nocrash.m4 index 662fb0496f2..5c1af8c78a4 100644 --- a/m4/nocrash.m4 +++ b/m4/nocrash.m4 @@ -1,6 +1,6 @@ # nocrash.m4 # serial 5 -dnl Copyright (C) 2005, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2009-2026 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/nproc.m4 b/m4/nproc.m4 index e9fba1533ca..bdfa2246863 100644 --- a/m4/nproc.m4 +++ b/m4/nproc.m4 @@ -1,6 +1,6 @@ # nproc.m4 # serial 8 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/nstrftime.m4 b/m4/nstrftime.m4 index bdb139bfc44..f9d699174e4 100644 --- a/m4/nstrftime.m4 +++ b/m4/nstrftime.m4 @@ -1,6 +1,6 @@ # nstrftime.m4 # serial 40 -dnl Copyright (C) 1996-1997, 1999-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 1996-1997, 1999-2007, 2009-2026 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, diff --git a/m4/off_t.m4 b/m4/off_t.m4 index f4f4bbf6c21..d7d6aa0c0c7 100644 --- a/m4/off_t.m4 +++ b/m4/off_t.m4 @@ -1,6 +1,6 @@ # off_t.m4 # serial 1 -dnl Copyright (C) 2012-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2012-2026 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/open-cloexec.m4 b/m4/open-cloexec.m4 index 860541b0f74..9c9aef23112 100644 --- a/m4/open-cloexec.m4 +++ b/m4/open-cloexec.m4 @@ -1,6 +1,6 @@ # open-cloexec.m4 # serial 1 -dnl Copyright 2017-2025 Free Software Foundation, Inc. +dnl Copyright 2017-2026 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/open-slash.m4 b/m4/open-slash.m4 index 2cba48fec4b..c36bdced415 100644 --- a/m4/open-slash.m4 +++ b/m4/open-slash.m4 @@ -1,6 +1,6 @@ # open-slash.m4 # serial 2 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2026 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/open.m4 b/m4/open.m4 index dd3a805f5e9..f5b2a91c68d 100644 --- a/m4/open.m4 +++ b/m4/open.m4 @@ -1,6 +1,6 @@ # open.m4 # serial 17 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2026 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/pathmax.m4 b/m4/pathmax.m4 index 0c3925df9dd..d6bdf43e9ef 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-2025 Free Software Foundation, +dnl Copyright (C) 2002-2003, 2005-2006, 2009-2026 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, diff --git a/m4/pid_t.m4 b/m4/pid_t.m4 index a8bdabc266c..314792ed0a6 100644 --- a/m4/pid_t.m4 +++ b/m4/pid_t.m4 @@ -1,6 +1,6 @@ # pid_t.m4 # serial 4 -dnl Copyright (C) 2020-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2020-2026 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/pipe2.m4 b/m4/pipe2.m4 index eedab83693c..340020f56e6 100644 --- a/m4/pipe2.m4 +++ b/m4/pipe2.m4 @@ -1,6 +1,6 @@ # pipe2.m4 # serial 4 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/pselect.m4 b/m4/pselect.m4 index 06df1b9a4d8..829910b879a 100644 --- a/m4/pselect.m4 +++ b/m4/pselect.m4 @@ -1,6 +1,6 @@ # pselect.m4 # serial 11 -dnl Copyright (C) 2011-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2026 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/pthread_sigmask.m4 b/m4/pthread_sigmask.m4 index 77991d4f334..2984dcdcb45 100644 --- a/m4/pthread_sigmask.m4 +++ b/m4/pthread_sigmask.m4 @@ -1,6 +1,6 @@ # pthread_sigmask.m4 # serial 24 -dnl Copyright (C) 2011-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2026 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/rawmemchr.m4 b/m4/rawmemchr.m4 index 9fbb39b6476..96245bf2e67 100644 --- a/m4/rawmemchr.m4 +++ b/m4/rawmemchr.m4 @@ -1,6 +1,6 @@ # rawmemchr.m4 # serial 3 -dnl Copyright (C) 2003, 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2007-2026 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/readlink.m4 b/m4/readlink.m4 index 5ceaa3b4c5b..a8e560549a6 100644 --- a/m4/readlink.m4 +++ b/m4/readlink.m4 @@ -1,6 +1,6 @@ # readlink.m4 # serial 18 -dnl Copyright (C) 2003, 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2007, 2009-2026 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/readlinkat.m4 b/m4/readlinkat.m4 index 44b803c4279..6087fca98d7 100644 --- a/m4/readlinkat.m4 +++ b/m4/readlinkat.m4 @@ -1,6 +1,6 @@ # readlinkat.m4 # serial 10 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/readutmp.m4 b/m4/readutmp.m4 index 418c398b249..3eeec0d0818 100644 --- a/m4/readutmp.m4 +++ b/m4/readutmp.m4 @@ -1,6 +1,6 @@ # readutmp.m4 # serial 32 -dnl Copyright (C) 2002-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2026 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/realloc.m4 b/m4/realloc.m4 index a6c2ec4c33b..8938db9278f 100644 --- a/m4/realloc.m4 +++ b/m4/realloc.m4 @@ -1,6 +1,6 @@ # realloc.m4 # serial 40 -dnl Copyright (C) 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2026 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/regex.m4 b/m4/regex.m4 index 49a8059f618..45a10490673 100644 --- a/m4/regex.m4 +++ b/m4/regex.m4 @@ -1,6 +1,6 @@ # regex.m4 # serial 81 -dnl Copyright (C) 1996-2001, 2003-2025 Free Software Foundation, Inc. +dnl Copyright (C) 1996-2001, 2003-2026 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/selinux-selinux-h.m4 b/m4/selinux-selinux-h.m4 index e2613fa3865..b3fcd2102e2 100644 --- a/m4/selinux-selinux-h.m4 +++ b/m4/selinux-selinux-h.m4 @@ -1,6 +1,6 @@ # selinux-selinux-h.m4 # serial 10 -*- Autoconf -*- -dnl Copyright (C) 2006-2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2007, 2009-2026 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. @@ -88,10 +88,13 @@ AC_DEFUN([gl_LIBSELINUX], # Warn if SELinux is found but libselinux is absent; if test "$ac_cv_search_setfilecon" = no; then - if test "$host" = "$build" && test -d /selinux; then + if test "$host" = "$build" \ + && { test -d /sys/fs/selinux || test -d /selinux; }; then AC_MSG_WARN([This system supports SELinux but libselinux is missing.]) AC_MSG_WARN([AC_PACKAGE_NAME will be compiled without SELinux support.]) fi - with_selinux=no + if test "$with_selinux" = maybe; then + with_selinux=no + fi fi ]) diff --git a/m4/sha1.m4 b/m4/sha1.m4 index 03d696bbf60..c77c63e1f3f 100644 --- a/m4/sha1.m4 +++ b/m4/sha1.m4 @@ -1,6 +1,6 @@ # sha1.m4 # serial 12 -dnl Copyright (C) 2002-2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2006, 2008-2026 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/sha256.m4 b/m4/sha256.m4 index 30e8deebf8c..a9bd7857bb6 100644 --- a/m4/sha256.m4 +++ b/m4/sha256.m4 @@ -1,6 +1,6 @@ # sha256.m4 # serial 8 -dnl Copyright (C) 2005, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005, 2008-2026 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/sha512.m4 b/m4/sha512.m4 index f0da831b388..61b887565c5 100644 --- a/m4/sha512.m4 +++ b/m4/sha512.m4 @@ -1,6 +1,6 @@ # sha512.m4 # serial 9 -dnl Copyright (C) 2005-2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2006, 2008-2026 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/sig2str.m4 b/m4/sig2str.m4 index 4f713724bb6..d2e37ad9e6c 100644 --- a/m4/sig2str.m4 +++ b/m4/sig2str.m4 @@ -1,6 +1,6 @@ # sig2str.m4 # serial 9 -dnl Copyright (C) 2002, 2005-2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2005-2006, 2009-2026 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/sigdescr_np.m4 b/m4/sigdescr_np.m4 index 009fdceed62..2aa44666fac 100644 --- a/m4/sigdescr_np.m4 +++ b/m4/sigdescr_np.m4 @@ -1,6 +1,6 @@ # sigdescr_np.m4 # serial 2 -dnl Copyright (C) 2020-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2020-2026 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/signal_h.m4 b/m4/signal_h.m4 index 10343bbfec6..7c12652b4e5 100644 --- a/m4/signal_h.m4 +++ b/m4/signal_h.m4 @@ -1,6 +1,6 @@ # signal_h.m4 # serial 23 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2026 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/socklen.m4 b/m4/socklen.m4 index a4d49bfdc06..e5156511754 100644 --- a/m4/socklen.m4 +++ b/m4/socklen.m4 @@ -1,6 +1,6 @@ # socklen.m4 # serial 13 -dnl Copyright (C) 2005-2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2007, 2009-2026 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 a2ffd6fc4a1..8710cb7233e 100644 --- a/m4/ssize_t.m4 +++ b/m4/ssize_t.m4 @@ -1,6 +1,6 @@ # ssize_t.m4 # serial 6 -dnl Copyright (C) 2001-2003, 2006, 2010-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2003, 2006, 2010-2026 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 4aa24e7f8da..10eb1dfa2d4 100644 --- a/m4/stat-time.m4 +++ b/m4/stat-time.m4 @@ -1,6 +1,6 @@ # stat-time.m4 # serial 1 -dnl Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2025 Free Software +dnl Copyright (C) 1998-1999, 2001, 2003, 2005-2007, 2009-2026 Free Software dnl Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, diff --git a/m4/std-gnu23.m4 b/m4/std-gnu23.m4 index 9d2ac24bc77..ea549396880 100644 --- a/m4/std-gnu23.m4 +++ b/m4/std-gnu23.m4 @@ -12,7 +12,7 @@ m4_version_prereq([2.73], [], [ -# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 2001-2026 Free Software Foundation, Inc. # This file is part of Autoconf. This program is free # software; you can redistribute it and/or modify it under the diff --git a/m4/stdalign.m4 b/m4/stdalign.m4 index d4a7d92961c..7177d034131 100644 --- a/m4/stdalign.m4 +++ b/m4/stdalign.m4 @@ -1,6 +1,6 @@ # stdalign.m4 # serial 3 -dnl Copyright 2011-2025 Free Software Foundation, Inc. +dnl Copyright 2011-2026 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/stdbit_h.m4 b/m4/stdbit_h.m4 index 2652975a194..517a0a8cc72 100644 --- a/m4/stdbit_h.m4 +++ b/m4/stdbit_h.m4 @@ -1,6 +1,6 @@ # stdbit_h.m4 # serial 2 -dnl Copyright 2024-2025 Free Software Foundation, Inc. +dnl Copyright 2024-2026 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/stdckdint_h.m4 b/m4/stdckdint_h.m4 index d269faa5c92..eb8c858a2dc 100644 --- a/m4/stdckdint_h.m4 +++ b/m4/stdckdint_h.m4 @@ -1,6 +1,6 @@ # stdckdint_h.m4 # serial 1 -dnl Copyright 2025 Free Software Foundation, Inc. +dnl Copyright 2025-2026 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/stddef_h.m4 b/m4/stddef_h.m4 index d52d549489f..299472b1e55 100644 --- a/m4/stddef_h.m4 +++ b/m4/stddef_h.m4 @@ -1,6 +1,6 @@ # stddef_h.m4 # serial 23 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/stdint.m4 b/m4/stdint.m4 index 5a289e6df4d..410da1530de 100644 --- a/m4/stdint.m4 +++ b/m4/stdint.m4 @@ -1,6 +1,6 @@ # stdint.m4 # serial 65 -dnl Copyright (C) 2001-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2001-2026 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/stdio_h.m4 b/m4/stdio_h.m4 index 71d86180b97..9d4126f586f 100644 --- a/m4/stdio_h.m4 +++ b/m4/stdio_h.m4 @@ -1,6 +1,6 @@ # stdio_h.m4 # serial 75 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2026 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/stdlib_h.m4 b/m4/stdlib_h.m4 index ab2e87019bb..f35d661125d 100644 --- a/m4/stdlib_h.m4 +++ b/m4/stdlib_h.m4 @@ -1,6 +1,6 @@ # stdlib_h.m4 -# serial 85 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +# serial 86 +dnl Copyright (C) 2007-2026 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. @@ -223,6 +223,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS], HAVE_STRTOULL=1; AC_SUBST([HAVE_STRTOULL]) HAVE_STRUCT_RANDOM_DATA=1; AC_SUBST([HAVE_STRUCT_RANDOM_DATA]) HAVE_SYS_LOADAVG_H=0; AC_SUBST([HAVE_SYS_LOADAVG_H]) + HAVE_SYS_PROCESS_H=0; AC_SUBST([HAVE_SYS_PROCESS_H]) HAVE_UNLOCKPT=1; AC_SUBST([HAVE_UNLOCKPT]) HAVE_DECL_UNSETENV=1; AC_SUBST([HAVE_DECL_UNSETENV]) REPLACE__EXIT=0; AC_SUBST([REPLACE__EXIT]) diff --git a/m4/stpcpy.m4 b/m4/stpcpy.m4 index 0c84d6d608c..4b9e774b9f7 100644 --- a/m4/stpcpy.m4 +++ b/m4/stpcpy.m4 @@ -1,6 +1,6 @@ # stpcpy.m4 # serial 11 -dnl Copyright (C) 2002, 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2007, 2009-2026 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/string_h.m4 b/m4/string_h.m4 index 860440123ae..2a6e4db46dd 100644 --- a/m4/string_h.m4 +++ b/m4/string_h.m4 @@ -1,6 +1,6 @@ # string_h.m4 # serial 46 -dnl Copyright (C) 2007-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007-2026 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/stringeq.m4 b/m4/stringeq.m4 index de6d66c12d0..ffea8afc7ee 100644 --- a/m4/stringeq.m4 +++ b/m4/stringeq.m4 @@ -1,6 +1,6 @@ # stringeq.m4 # serial 1 -dnl Copyright (C) 2025 Free Software Foundation, Inc. +dnl Copyright (C) 2025-2026 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/strnlen.m4 b/m4/strnlen.m4 index afc15cf4816..a712df9deaa 100644 --- a/m4/strnlen.m4 +++ b/m4/strnlen.m4 @@ -1,6 +1,6 @@ # strnlen.m4 # serial 15 -dnl Copyright (C) 2002-2003, 2005-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 2002-2003, 2005-2007, 2009-2026 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, diff --git a/m4/strtoimax.m4 b/m4/strtoimax.m4 index 5f5e5178e97..c6280d02ff8 100644 --- a/m4/strtoimax.m4 +++ b/m4/strtoimax.m4 @@ -1,6 +1,6 @@ # strtoimax.m4 # serial 17 -dnl Copyright (C) 2002-2004, 2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002-2004, 2006, 2009-2026 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 9ba4768e932..4ee81fbcc4a 100644 --- a/m4/strtoll.m4 +++ b/m4/strtoll.m4 @@ -1,6 +1,6 @@ # strtoll.m4 # serial 12 -dnl Copyright (C) 2002, 2004, 2006, 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2004, 2006, 2008-2026 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 74e46936e6f..f6b59f251b7 100644 --- a/m4/symlink.m4 +++ b/m4/symlink.m4 @@ -1,6 +1,6 @@ # symlink.m4 # serial 10 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/sys_cdefs_h.m4 b/m4/sys_cdefs_h.m4 index d72796ca70e..a1398a29933 100644 --- a/m4/sys_cdefs_h.m4 +++ b/m4/sys_cdefs_h.m4 @@ -1,6 +1,6 @@ # sys_cdefs_h.m4 - Is compatible enough with glibc? # serial 2 -dnl Copyright 2024-2025 Free Software Foundation, Inc. +dnl Copyright 2024-2026 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/sys_random_h.m4 b/m4/sys_random_h.m4 index dd3b226fc96..85e25bca829 100644 --- a/m4/sys_random_h.m4 +++ b/m4/sys_random_h.m4 @@ -1,6 +1,6 @@ # sys_random_h.m4 # serial 8 -dnl Copyright (C) 2020-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2020-2026 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/sys_select_h.m4 b/m4/sys_select_h.m4 index f154bc5f1e6..ac9fc535b0c 100644 --- a/m4/sys_select_h.m4 +++ b/m4/sys_select_h.m4 @@ -1,6 +1,6 @@ # sys_select_h.m4 # serial 24 -dnl Copyright (C) 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2026 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/sys_socket_h.m4 b/m4/sys_socket_h.m4 index da3c6804c6f..cdc374e4077 100644 --- a/m4/sys_socket_h.m4 +++ b/m4/sys_socket_h.m4 @@ -1,6 +1,6 @@ # sys_socket_h.m4 # serial 32 -dnl Copyright (C) 2005-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2005-2026 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/sys_stat_h.m4 b/m4/sys_stat_h.m4 index 10636923b17..04dfce7ec4f 100644 --- a/m4/sys_stat_h.m4 +++ b/m4/sys_stat_h.m4 @@ -1,6 +1,6 @@ # sys_stat_h.m4 # serial 44 -*- Autoconf -*- -dnl Copyright (C) 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2026 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/sys_time_h.m4 b/m4/sys_time_h.m4 index a33b97d8a30..6e48cddb71e 100644 --- a/m4/sys_time_h.m4 +++ b/m4/sys_time_h.m4 @@ -1,6 +1,6 @@ # sys_time_h.m4 # serial 12 -dnl Copyright (C) 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2007, 2009-2026 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/sys_types_h.m4 b/m4/sys_types_h.m4 index e99fdcc6c2f..b284e08e660 100644 --- a/m4/sys_types_h.m4 +++ b/m4/sys_types_h.m4 @@ -1,6 +1,6 @@ # sys_types_h.m4 # serial 15 -dnl Copyright (C) 2011-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2026 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/tempname.m4 b/m4/tempname.m4 index 63ec6cb86d6..b34ddc585f3 100644 --- a/m4/tempname.m4 +++ b/m4/tempname.m4 @@ -1,6 +1,6 @@ # tempname.m4 # serial 5 -dnl Copyright (C) 2006-2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2007, 2009-2026 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/time_h.m4 b/m4/time_h.m4 index f4d8e20f5ba..8d896ea526d 100644 --- a/m4/time_h.m4 +++ b/m4/time_h.m4 @@ -1,6 +1,6 @@ # time_h.m4 # serial 27 -dnl Copyright (C) 2000-2001, 2003-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 2000-2001, 2003-2007, 2009-2026 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, diff --git a/m4/time_r.m4 b/m4/time_r.m4 index 96f5c5b5497..59477e3bec6 100644 --- a/m4/time_r.m4 +++ b/m4/time_r.m4 @@ -1,6 +1,6 @@ # time_r.m4 # serial 1 -dnl Copyright (C) 2003, 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2006-2026 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/time_rz.m4 b/m4/time_rz.m4 index 885463a03b9..04a0d5e4704 100644 --- a/m4/time_rz.m4 +++ b/m4/time_rz.m4 @@ -1,6 +1,6 @@ # time_rz.m4 # serial 4 -dnl Copyright (C) 2015-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2015-2026 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/timegm.m4 b/m4/timegm.m4 index cb6da6da7c0..50a98b25ff5 100644 --- a/m4/timegm.m4 +++ b/m4/timegm.m4 @@ -1,6 +1,6 @@ # timegm.m4 # serial 16 -dnl Copyright (C) 2003, 2007, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003, 2007, 2009-2026 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/timer_time.m4 b/m4/timer_time.m4 index 710a498a421..3a7092ab4d9 100644 --- a/m4/timer_time.m4 +++ b/m4/timer_time.m4 @@ -1,6 +1,6 @@ # timer_time.m4 # serial 6 -dnl Copyright (C) 2011-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2011-2026 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/timespec.m4 b/m4/timespec.m4 index 38be9914358..101f94a371d 100644 --- a/m4/timespec.m4 +++ b/m4/timespec.m4 @@ -1,6 +1,6 @@ # timespec.m4 # serial 15 -dnl Copyright (C) 2000-2001, 2003-2007, 2009-2025 Free Software Foundation, +dnl Copyright (C) 2000-2001, 2003-2007, 2009-2026 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, diff --git a/m4/tm_gmtoff.m4 b/m4/tm_gmtoff.m4 index 4846d803973..3211c66a1cc 100644 --- a/m4/tm_gmtoff.m4 +++ b/m4/tm_gmtoff.m4 @@ -1,6 +1,6 @@ # tm_gmtoff.m4 # serial 5 -dnl Copyright (C) 2002, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2002, 2009-2026 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/unistd_h.m4 b/m4/unistd_h.m4 index 6ec16286ef8..8000e8887e9 100644 --- a/m4/unistd_h.m4 +++ b/m4/unistd_h.m4 @@ -1,6 +1,6 @@ # unistd_h.m4 # serial 97 -dnl Copyright (C) 2006-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2006-2026 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/unlocked-io.m4 b/m4/unlocked-io.m4 index a5eacecc61c..16ab6e9a5af 100644 --- a/m4/unlocked-io.m4 +++ b/m4/unlocked-io.m4 @@ -1,6 +1,6 @@ # unlocked-io.m4 # serial 17 -dnl Copyright (C) 1998-2006, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 1998-2006, 2009-2026 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/utimens.m4 b/m4/utimens.m4 index 096b099a9b6..8a78cc07722 100644 --- a/m4/utimens.m4 +++ b/m4/utimens.m4 @@ -1,6 +1,6 @@ # utimens.m4 # serial 17 -dnl Copyright (C) 2003-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2026 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/utimensat.m4 b/m4/utimensat.m4 index d017af37b25..cd339fed9a7 100644 --- a/m4/utimensat.m4 +++ b/m4/utimensat.m4 @@ -1,6 +1,6 @@ # utimensat.m4 # serial 14 -dnl Copyright (C) 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2009-2026 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/utimes.m4 b/m4/utimes.m4 index 90b771f8658..7fc51b43549 100644 --- a/m4/utimes.m4 +++ b/m4/utimes.m4 @@ -1,7 +1,7 @@ # Detect some bugs in glibc's implementation of utimes. # serial 9 -dnl Copyright (C) 2003-2005, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2005, 2009-2026 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/vararrays.m4 b/m4/vararrays.m4 index 086e409fd6c..3dd8e68fd26 100644 --- a/m4/vararrays.m4 +++ b/m4/vararrays.m4 @@ -1,6 +1,6 @@ # vararrays.m4 # serial 6 -dnl Copyright (C) 2001, 2009-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2001, 2009-2026 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/warnings.m4 b/m4/warnings.m4 index c616d7751fc..b8aa9cdf16a 100644 --- a/m4/warnings.m4 +++ b/m4/warnings.m4 @@ -1,6 +1,6 @@ # warnings.m4 # serial 21 -dnl Copyright (C) 2008-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2008-2026 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/xattr.m4 b/m4/xattr.m4 index 800e8702dcd..dbcf96e5585 100644 --- a/m4/xattr.m4 +++ b/m4/xattr.m4 @@ -1,6 +1,6 @@ # xattr.m4 # serial 7 -dnl Copyright (C) 2003-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2003-2026 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/zzgnulib.m4 b/m4/zzgnulib.m4 index 343bda5c1d5..fed091cabd7 100644 --- a/m4/zzgnulib.m4 +++ b/m4/zzgnulib.m4 @@ -1,6 +1,6 @@ # zzgnulib.m4 # serial 1 -dnl Copyright (C) 2020-2025 Free Software Foundation, Inc. +dnl Copyright (C) 2020-2026 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/make-dist b/make-dist index 93eeb056d39..427274cf249 100755 --- a/make-dist +++ b/make-dist @@ -1,7 +1,7 @@ #!/bin/sh ### make-dist: create an Emacs distribution tar file from current srcdir -## Copyright (C) 1995, 1997-1998, 2000-2025 Free Software Foundation, +## Copyright (C) 1995, 1997-1998, 2000-2026 Free Software Foundation, ## Inc. ## This file is part of GNU Emacs. diff --git a/modules/modhelp.py b/modules/modhelp.py index aeeb3b737db..ed40201b66f 100755 --- a/modules/modhelp.py +++ b/modules/modhelp.py @@ -2,7 +2,7 @@ # Module helper script. -# Copyright 2015-2025 Free Software Foundation, Inc. +# Copyright 2015-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/msdos/ChangeLog.1 b/msdos/ChangeLog.1 index 00eaa250648..4210ade2523 100644 --- a/msdos/ChangeLog.1 +++ b/msdos/ChangeLog.1 @@ -1550,7 +1550,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 1994-1999, 2001-2025 Free Software Foundation, Inc. + Copyright (C) 1994-1999, 2001-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/msdos/INSTALL b/msdos/INSTALL index c5fd16aa9ac..2c471b6d41e 100644 --- a/msdos/INSTALL +++ b/msdos/INSTALL @@ -1,6 +1,6 @@ GNU Emacs Installation Guide for the DJGPP (a.k.a. MS-DOS) port -Copyright (C) 1992, 1994, 1996-1997, 2000-2025 Free Software Foundation, +Copyright (C) 1992, 1994, 1996-1997, 2000-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/msdos/README b/msdos/README index 0caa34ca7ec..93ae4cc0d87 100644 --- a/msdos/README +++ b/msdos/README @@ -1,4 +1,4 @@ -Copyright (C) 2001-2025 Free Software Foundation, Inc. +Copyright (C) 2001-2026 Free Software Foundation, Inc. See the end of the file for license conditions. @@ -10,7 +10,7 @@ The files emacs.ico and emacs.pif are for using the DJGPP version on Windows 3.X. Since these are binary files, their copyright notice is reproduced here: -# Copyright (C) 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 2001-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/autogen/Makefile.in b/msdos/autogen/Makefile.in index e1c42ad9609..1fb657907f7 100644 --- a/msdos/autogen/Makefile.in +++ b/msdos/autogen/Makefile.in @@ -1,7 +1,7 @@ # Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ -# Copyright (C) 1994-2009, 2013-2025 Free Software Foundation, Inc. +# Copyright (C) 1994-2009, 2013-2026 Free Software Foundation, Inc. # This Makefile.in 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. @@ -13,7 +13,7 @@ @SET_MAKE@ -# Copyright (C) 1994-2009, 2013-2025 Free Software Foundation, Inc. +# Copyright (C) 1994-2009, 2013-2026 Free Software Foundation, Inc. # # 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 @@ -36,7 +36,7 @@ # Generated by gnulib-tool. # Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=sys_types --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdarg stdbool stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv utimens warnings -# Copyright (C) 1994-2009, 2013-2025 Free Software Foundation, Inc. +# Copyright (C) 1994-2009, 2013-2026 Free Software Foundation, Inc. # # 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 diff --git a/msdos/autogen/config.in b/msdos/autogen/config.in index 493a3d65215..11f5c4c5964 100644 --- a/msdos/autogen/config.in +++ b/msdos/autogen/config.in @@ -2,7 +2,7 @@ /* GNU Emacs site configuration template file. -Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2025 Free Software +Copyright (C) 1988, 1993-1994, 1999-2002, 2004-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/msdos/depfiles.bat b/msdos/depfiles.bat index 38a0a69df9d..d226891051a 100644 --- a/msdos/depfiles.bat +++ b/msdos/depfiles.bat @@ -1,7 +1,7 @@ @echo off rem ---------------------------------------------------------------------- rem Auxiliary script for MSDOS, run by ../config.bat -rem Copyright (C) 2011-2025 Free Software Foundation, Inc. +rem Copyright (C) 2011-2026 Free Software Foundation, Inc. rem This file is part of GNU Emacs. diff --git a/msdos/emacs.djl b/msdos/emacs.djl index e8791cd6831..d2f0ff948a5 100644 --- a/msdos/emacs.djl +++ b/msdos/emacs.djl @@ -2,7 +2,7 @@ Emacs. */ /* Default linker script, for normal executables */ -/* Copyright (C) 2014 Free Software Foundation, Inc. +/* Copyright (C) 2014-2026 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ diff --git a/msdos/inttypes.h b/msdos/inttypes.h index 636e313b4a7..54731f1ed52 100644 --- a/msdos/inttypes.h +++ b/msdos/inttypes.h @@ -1,6 +1,6 @@ /* Replacement inttypes.h file for building GNU Emacs on MS-DOS with DJGPP. -Copyright (C) 2011-2025 Free Software Foundation, Inc. +Copyright (C) 2011-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/msdos/langinfo.h b/msdos/langinfo.h index effa116759b..ae63f1de9f2 100644 --- a/msdos/langinfo.h +++ b/msdos/langinfo.h @@ -1,6 +1,6 @@ /* Replacement langinfo.h file for building GNU Emacs on MS-DOS with DJGPP. -Copyright (C) 2021-2025 Free Software Foundation, Inc. +Copyright (C) 2021-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/msdos/mainmake.v2 b/msdos/mainmake.v2 index 46c650c7fe7..bddb29c01fc 100644 --- a/msdos/mainmake.v2 +++ b/msdos/mainmake.v2 @@ -1,6 +1,6 @@ # Top-level Makefile for Emacs under MS-DOS/DJGPP v2.0 or higher. -*-makefile-*- -# Copyright (C) 1996-2025 Free Software Foundation, Inc. +# Copyright (C) 1996-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/msdos/sed1v2.inp b/msdos/sed1v2.inp index 1de2c11a0c4..e9a87733bc7 100644 --- a/msdos/sed1v2.inp +++ b/msdos/sed1v2.inp @@ -2,7 +2,7 @@ # Configuration script for src/Makefile under DJGPP v2.x # ---------------------------------------------------------------------- # -# Copyright (C) 1996-1997, 1999-2025 Free Software Foundation, Inc. +# Copyright (C) 1996-1997, 1999-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sed1x.inp b/msdos/sed1x.inp index a29a059aeaf..6093551d4f3 100644 --- a/msdos/sed1x.inp +++ b/msdos/sed1x.inp @@ -2,7 +2,7 @@ # Extra configuration script for src/makefile for DesqView/X # ---------------------------------------------------------------------- # -# Copyright (C) 1994-1997, 1999-2025 Free Software Foundation, Inc. +# Copyright (C) 1994-1997, 1999-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sed2v2.inp b/msdos/sed2v2.inp index 56ed9b50516..d7441f1e34d 100644 --- a/msdos/sed2v2.inp +++ b/msdos/sed2v2.inp @@ -2,7 +2,7 @@ # Configuration script for src/config.h under DJGPP v2.x # ---------------------------------------------------------------------- # -# Copyright (C) 1993-1997, 1999-2000, 2002-2025 Free Software +# Copyright (C) 1993-1997, 1999-2000, 2002-2026 Free Software # Foundation, Inc. # # This file is part of GNU Emacs. @@ -27,7 +27,7 @@ #ifndef MSDOS\ #define MSDOS\ #endif -/^#undef COPYRIGHT *$/s/^.*$/#define COPYRIGHT "Copyright (C) 2025 Free Software Foundation, Inc."/ +/^#undef COPYRIGHT *$/s/^.*$/#define COPYRIGHT "Copyright (C) 2026 Free Software Foundation, Inc."/ /^#undef DIRECTORY_SEP *$/s!^.*$!#define DIRECTORY_SEP '/'! /^#undef DOS_NT *$/s/^.*$/#define DOS_NT/ /^#undef FLOAT_CHECK_DOMAIN *$/s/^.*$/#define FLOAT_CHECK_DOMAIN/ diff --git a/msdos/sed2x.inp b/msdos/sed2x.inp index 5214cfe19f9..05b3faf881e 100644 --- a/msdos/sed2x.inp +++ b/msdos/sed2x.inp @@ -2,7 +2,7 @@ # Extra configuration script for src/config.h for DesqView/X # ---------------------------------------------------------------------- # -# Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sed3v2.inp b/msdos/sed3v2.inp index 47c2e3755f3..1170e97a4d0 100644 --- a/msdos/sed3v2.inp +++ b/msdos/sed3v2.inp @@ -2,7 +2,7 @@ # Configuration script for lib-src/makefile under DJGPP v2 # ---------------------------------------------------------------------- # -# Copyright (C) 1996, 1998, 2000-2025 Free Software Foundation, Inc. +# Copyright (C) 1996, 1998, 2000-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sed4.inp b/msdos/sed4.inp index 20f674d1338..3d99a320feb 100644 --- a/msdos/sed4.inp +++ b/msdos/sed4.inp @@ -2,7 +2,7 @@ # Configuration script for src/paths.h # ---------------------------------------------------------------------- # -# Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sed5x.inp b/msdos/sed5x.inp index 637a71ed176..516bcbb700d 100644 --- a/msdos/sed5x.inp +++ b/msdos/sed5x.inp @@ -2,7 +2,7 @@ # Configuration script for oldxmenu/makefile for DesqView/X # ---------------------------------------------------------------------- # -# Copyright (C) 1994, 2001-2025 Free Software Foundation, Inc. +# Copyright (C) 1994, 2001-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sed6.inp b/msdos/sed6.inp index 687ece9d8ee..603f8449189 100644 --- a/msdos/sed6.inp +++ b/msdos/sed6.inp @@ -3,7 +3,7 @@ # doc/lispintro/Makefile, and doc/misc/Makefile under DJGPP v2.x # --------------------------------------------------------------------------- # -# Copyright (C) 1997, 2000-2025 Free Software Foundation, Inc. +# Copyright (C) 1997, 2000-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sedadmin.inp b/msdos/sedadmin.inp index 958d568b18b..59d7edb6dbc 100644 --- a/msdos/sedadmin.inp +++ b/msdos/sedadmin.inp @@ -2,7 +2,7 @@ # Configuration script for admin/unidata/Makefile under DJGPP v2.x # ---------------------------------------------------------------------- # -# Copyright (C) 2014-2025 Free Software Foundation, Inc. +# Copyright (C) 2014-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sedalloc.inp b/msdos/sedalloc.inp index 329dad6daa6..616087c15b7 100644 --- a/msdos/sedalloc.inp +++ b/msdos/sedalloc.inp @@ -2,7 +2,7 @@ # Configuration script for SYSTEM_MALLOC/REL_ALLOC in src/config.h # ---------------------------------------------------------------------- # -# Copyright (C) 2008-2025 Free Software Foundation, Inc. +# Copyright (C) 2008-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sedleim.inp b/msdos/sedleim.inp index b73128daafa..e0bf9e95beb 100644 --- a/msdos/sedleim.inp +++ b/msdos/sedleim.inp @@ -2,7 +2,7 @@ # Configuration script for leim/Makefile under DJGPP v2.x # ---------------------------------------------------------------------- # -# Copyright (C) 1999-2025 Free Software Foundation, Inc. +# Copyright (C) 1999-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sedlibcf.inp b/msdos/sedlibcf.inp index f000e148a6d..0de694c9d52 100644 --- a/msdos/sedlibcf.inp +++ b/msdos/sedlibcf.inp @@ -5,7 +5,7 @@ # files whose names are invalid on DOS 8+3 filesystems. # ---------------------------------------------------------------------- # -# Copyright (C) 2011-2025 Free Software Foundation, Inc. +# Copyright (C) 2011-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sedlibmk.inp b/msdos/sedlibmk.inp index 551786ed050..d29fc6ebca7 100644 --- a/msdos/sedlibmk.inp +++ b/msdos/sedlibmk.inp @@ -2,7 +2,7 @@ # Configuration script for lib/Makefile under DJGPP v2.x # ---------------------------------------------------------------------- # -# Copyright (C) 2011-2025 Free Software Foundation, Inc. +# Copyright (C) 2011-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/msdos/sedlisp.inp b/msdos/sedlisp.inp index 0c316eaa57b..45c2a20c5f3 100644 --- a/msdos/sedlisp.inp +++ b/msdos/sedlisp.inp @@ -2,7 +2,7 @@ # Configuration script for lisp/Makefile under DJGPP v2.x # ---------------------------------------------------------------------- # -# Copyright (C) 2000-2025 Free Software Foundation, Inc. +# Copyright (C) 2000-2026 Free Software Foundation, Inc. # # This file is part of GNU Emacs. # diff --git a/nextstep/ChangeLog.1 b/nextstep/ChangeLog.1 index 2e783e1428d..ba20c6293d5 100644 --- a/nextstep/ChangeLog.1 +++ b/nextstep/ChangeLog.1 @@ -312,7 +312,7 @@ ;; coding: utf-8 ;; End: - Copyright (C) 2008-2025 Free Software Foundation, Inc. + Copyright (C) 2008-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/nextstep/INSTALL b/nextstep/INSTALL index fc93589e874..b8d92206eb2 100644 --- a/nextstep/INSTALL +++ b/nextstep/INSTALL @@ -1,4 +1,4 @@ -Copyright (C) 2008-2025 Free Software Foundation, Inc. +Copyright (C) 2008-2026 Free Software Foundation, Inc. See the end of the file for license conditions. diff --git a/nextstep/Makefile.in b/nextstep/Makefile.in index b64aacbf24f..59201b1468b 100644 --- a/nextstep/Makefile.in +++ b/nextstep/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -## Copyright (C) 2012-2025 Free Software Foundation, Inc. +## Copyright (C) 2012-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/nextstep/README b/nextstep/README index 853d6bcda35..79a2404c79a 100644 --- a/nextstep/README +++ b/nextstep/README @@ -105,7 +105,7 @@ future development. ---------------------------------------------------------------------- -Copyright 2008-2025 Free Software Foundation, Inc. +Copyright 2008-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/nextstep/templates/Info.plist.in b/nextstep/templates/Info.plist.in index 9338ea7f288..09db8dd0b55 100644 --- a/nextstep/templates/Info.plist.in +++ b/nextstep/templates/Info.plist.in @@ -1,6 +1,6 @@ ['&'], keyvalseq(KeyVals/ +AND y-src/cccp.c 11 an_extern_linkage c-src/h.h 44 an_extern_linkage c-src/h.h 56 an_extern_linkage_ptr c-src/h.h 43 -analyze_regex c-src/etags.c /^analyze_regex (char *regex_arg)$/ -andkeyvalseq prol-src/natded.prolog /^andkeyvalseq(KeyVals) --> ['&'], keyvalseq(KeyVals/ -animals c-src/h.h 81 animals cp-src/c.C 126 animals cp-src/c.C 130 +animals c-src/h.h 81 +(another-forth-word) forth-src/test-forth.fth /^: (another-forth-word) ( -- )$/ +ANSIC c-src/h.h 84 +ANSIC c-src/h.h 85 any_kboard_state c-src/emacs/src/keyboard.c /^any_kboard_state ()$/ appDidInit objcpp-src/SimpleCalc.M /^- appDidInit:sender$/ -append prol-src/natded.prolog /^append([],Xs,Xs).$/ -appendToDisplay objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char *)theDigit$/ -append_list prol-src/natded.prolog /^append_list([],[]).$/ -append_string pas-src/common.pas /^procedure append_string;(*($/ -append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/ -appendix perl-src/htlmify-cystic 24 -appendix tex-src/texinfo.tex /^\\let\\appendix=\\relax$/ -appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/ -appendix_name perl-src/htlmify-cystic 13 -appendix_toc perl-src/htlmify-cystic 16 appendixletter tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/ +appendix_name perl-src/htlmify-cystic 13 appendixnoderef tex-src/texinfo.tex /^\\def\\appendixnoderef{\\ifx\\lastnode\\relax\\else$/ +appendix perl-src/htlmify-cystic 24 appendixsec tex-src/texinfo.tex /^\\let\\appendixsec=\\relax$/ appendixsec tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/ appendixsection tex-src/texinfo.tex /^\\let\\appendixsection=\\relax$/ @@ -1914,15 +218,25 @@ appendixsubsubsec tex-src/texinfo.tex /^\\let\\appendixsubsubsec=\\relax$/ appendixsubsubsec tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/ appendixsubsubsection tex-src/texinfo.tex /^\\let\\appendixsubsubsection=\\relax$/ appendixsubsubseczzz tex-src/texinfo.tex /^\\def\\appendixsubsubseczzz #1{\\seccheck{appendixsub/ +appendix tex-src/texinfo.tex /^\\let\\appendix=\\relax$/ +appendix tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/ +appendix_toc perl-src/htlmify-cystic 16 appendixzzz tex-src/texinfo.tex /^\\def\\appendixzzz #1{\\seccheck{appendix}%$/ +append_list prol-src/natded.prolog /^append_list([],[]).$/ +append prol-src/natded.prolog /^append([],Xs,Xs).$/ +append_string pas-src/common.pas /^procedure append_string;(*($/ +AppendTextString pas-src/common.pas /^function AppendTextString;(*($/ +appendToDisplay objcpp-src/SimpleCalc.M /^- appendToDisplay:(const char *)theDigit$/ +append_tool_bar_item c-src/emacs/src/keyboard.c /^append_tool_bar_item (void)$/ apply_modifiers c-src/emacs/src/keyboard.c /^apply_modifiers (int modifiers, Lisp_Object base)$/ apply_modifiers_uncached c-src/emacs/src/keyboard.c /^apply_modifiers_uncached (int modifiers, char *bas/ +/A ps-src/rfc1245.ps /^\/A { $/ aref_addr c-src/emacs/src/lisp.h /^aref_addr (Lisp_Object array, ptrdiff_t idx)$/ +AREF c-src/emacs/src/lisp.h /^AREF (Lisp_Object array, ptrdiff_t idx)$/ arg c-src/emacs/src/lisp.h 2961 arg c-src/emacs/src/lisp.h 2966 arg c-src/emacs/src/lisp.h 2971 arg c-src/h.h 13 -arg_type c-src/etags.c 250 arglist y-src/cccp.y 41 argno y-src/cccp.y 45 args c-src/emacs/src/lisp.h 2986 @@ -1930,88 +244,165 @@ args c-src/h.h 30 argsindent tex-src/texinfo.tex /^\\dimen1=\\hsize \\advance \\dimen1 by -\\defargsindent/ argsindent tex-src/texinfo.tex /^\\newskip\\defargsindent \\defargsindent=50pt$/ argsindent tex-src/texinfo.tex /^\\parshape 2 0in \\dimen0 \\defargsindent \\dimen1 / +ARGS make-src/Makefile /^ARGS=- < srclist$/ +arg_type c-src/etags.c 250 argument c-src/etags.c 253 argvals prol-src/natded.prolog /^argvals([]) --> [].$/ +Arith_Comparison c-src/emacs/src/lisp.h 3497 +ARITH_EQUAL c-src/emacs/src/lisp.h 3498 +ARITH_GRTR c-src/emacs/src/lisp.h 3501 +ARITH_GRTR_OR_EQUAL c-src/emacs/src/lisp.h 3503 +ARITH_LESS c-src/emacs/src/lisp.h 3500 +ARITH_LESS_OR_EQUAL c-src/emacs/src/lisp.h 3502 +ARITH_NOTEQUAL c-src/emacs/src/lisp.h 3499 array c.c 190 +ARRAYELTS c-src/emacs/src/lisp.h /^#define ARRAYELTS(arr) (sizeof (arr) \/ sizeof (arr/ +ARRAY_MARK_FLAG c-src/emacs/src/lisp.h 768 +ARRAYP c-src/emacs/src/lisp.h /^ARRAYP (Lisp_Object x)$/ +A ruby-src/test1.ru /^class A$/ +a ruby-src/test1.ru /^ def a()$/ +A ruby-src/test1.ru /^module A$/ +ASCII_CHAR_P c-src/emacs/src/lisp.h /^#define ASCII_CHAR_P(c) UNSIGNED_CMP (c, <, 0x80)$/ ascii c-src/emacs/src/lisp.h 1598 +ASET c-src/emacs/src/lisp.h /^ASET (Lisp_Object array, ptrdiff_t idx, Lisp_Objec/ asis tex-src/texinfo.tex /^\\def\\asis#1{#1}$/ +ASIZE c-src/emacs/src/lisp.h /^ASIZE (Lisp_Object array)$/ +Asm_help c-src/etags.c 504 +Asm_labels c-src/etags.c /^Asm_labels (FILE *inf)$/ +Asm_suffixes c-src/etags.c 493 asort cp-src/functions.cpp /^void asort(int *a, int num){$/ +ASRC make-src/Makefile /^ASRC=empty.zz empty.zz.gz$/ assemby-code-word forth-src/test-forth.fth /^code assemby-code-word ( dunno what it does )$/ -assert c-src/etags.c /^# define assert(x) ((void) 0)$/ assert c-src/etags.c 135 +assert c-src/etags.c /^# define assert(x) ((void) 0)$/ assign_neighbor cp-src/clheir.hpp /^ void assign_neighbor(int direction, location */ -assoc_list merc-src/accumulator.m /^:- import_module assoc_list.$/ associativity_assertion merc-src/accumulator.m /^:- pred associativity_assertion(module_info::in, l/ +assoc_list merc-src/accumulator.m /^:- import_module assoc_list.$/ +AST_Array::AST_Array cp-src/c.C /^AST_Array::AST_Array(UTL_ScopedName *n, unsigned l/ +AST_ConcreteType::AST_ConcreteType cp-src/c.C /^AST_ConcreteType::AST_ConcreteType(AST_Decl::NodeT/ +AST_Root cp-src/c.C 92 +AT cp-src/c.C 52 at_end c-src/etags.c 249 at_filename c-src/etags.c 247 +/atilde ps-src/rfc1245.ps /^\/atilde \/aring \/ccedilla \/eacute \/egrave \/ecircumf/ at_language c-src/etags.c 245 at_least_one_member prol-src/natded.prolog /^at_least_one_member(X,[X|_]):-!.$/ -at_regexp c-src/etags.c 246 -at_stdin c-src/etags.c 248 atom prol-src/natded.prolog /^atom(X) --> [X], {atomic(X)}.$/ atomval prol-src/natded.prolog /^atomval(X) --> atom(X).$/ +at_regexp c-src/etags.c 246 +at_stdin c-src/etags.c 248 +AU cp-src/c.C 53 +aultparindent\hang tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/ aultparindent tex-src/texinfo.tex /^\\newdimen\\defaultparindent \\defaultparindent = 15p/ aultparindent tex-src/texinfo.tex /^\\parindent = \\defaultparindent$/ -aultparindent\hang tex-src/texinfo.tex /^\\footstrut\\parindent=\\defaultparindent\\hang\\textin/ -author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/ +aUNEVALLED c-src/emacs/src/lisp.h /^ Lisp_Object (*aUNEVALLED) (Lisp_Object args)/ authorfont tex-src/texinfo.tex /^ \\def\\authorfont{\\authorrm \\normalbaselineskip =/ authorrm tex-src/texinfo.tex /^\\let\\authorrm = \\secrm$/ +author tex-src/texinfo.tex /^ \\def\\author{\\parsearg\\authorzzz}%$/ authorzzz tex-src/texinfo.tex /^ \\def\\authorzzz##1{\\ifseenauthor\\else\\vskip 0pt / +AUTO_CONS c-src/emacs/src/lisp.h /^#define AUTO_CONS(name, a, b) Lisp_Object name = A/ +AUTO_CONS_EXPR c-src/emacs/src/lisp.h /^#define AUTO_CONS_EXPR(a, b) \\$/ auto_help c-src/etags.c 699 -b c-src/h.h 103 -b c-src/h.h 104 -b c-src/h.h 41 -b c.c /^b ()$/ +AUTO_LIST1 c-src/emacs/src/lisp.h /^#define AUTO_LIST1(name, a) \\$/ +AUTO_LIST2 c-src/emacs/src/lisp.h /^#define AUTO_LIST2(name, a, b) \\$/ +AUTO_LIST3 c-src/emacs/src/lisp.h /^#define AUTO_LIST3(name, a, b, c) \\$/ +AUTO_LIST4 c-src/emacs/src/lisp.h /^#define AUTO_LIST4(name, a, b, c, d) \\$/ +AUTOLOADP c-src/emacs/src/lisp.h /^AUTOLOADP (Lisp_Object x)$/ +AUTO_STRING c-src/emacs/src/lisp.h /^#define AUTO_STRING(name, str) \\$/ +AVAIL_ALLOCA c-src/emacs/src/lisp.h /^#define AVAIL_ALLOCA(size) (sa_avail -= (size), al/ +backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/ +backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/ +balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/ +bar1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/ +bar c.c 143 +bar cp-src/x.cc /^XX::bar()$/ +bar c-src/c.c /^void bar() {while(0) {}}$/ +bar c-src/h.h 19 +Bar lua-src/test.lua /^function Square.something:Bar ()$/ +Bar perl-src/kai-test.pl /^package Bar;$/ +Barrier_Function_Pointer/t ada-src/etags-test-for.ada /^ type Barrier_Function_Pointer is access$/ +bar= ruby-src/test1.ru /^ attr_writer :bar,$/ +_bar? ruby-src/test1.ru /^ def self._bar?(abc)$/ +base_case_ids merc-src/accumulator.m /^:- func base_case_ids(accu_goal_store) = list(accu/ +base_case_ids_set merc-src/accumulator.m /^:- func base_case_ids_set(accu_goal_store) = set(a/ +base cp-src/c.C /^double base (void) const { return rng_base; }$/ +base cp-src/Range.h /^ double base (void) const { return rng_base; }$/ +base c-src/emacs/src/lisp.h 2188 +bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/ +baz= ruby-src/test1.ru /^ :baz,$/ +bbbbbb c-src/h.h 113 +bbb c.c 251 +bb c.c 275 b c.c 180 b c.c 259 b c.c 260 b c.c 262 +b c.c /^b ()$/ +B cp-src/c.C 122 b cp-src/c.C 132 -b ruby-src/test1.ru /^ def b()$/ -b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/ -b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/ -b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/ -b tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/ -b tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ -backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/ -backslash tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/ -balancecolumns tex-src/texinfo.tex /^\\def\\balancecolumns{%$/ -bar c-src/c.c /^void bar() {while(0) {}}$/ -bar c-src/h.h 19 -bar c.c 143 -bar cp-src/x.cc /^XX::bar()$/ -bar1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/ -bar= ruby-src/test1.ru /^ attr_writer :bar,$/ -bas_syn prol-src/natded.prolog /^bas_syn(n(_)).$/ -base c-src/emacs/src/lisp.h 2188 -base cp-src/Range.h /^ double base (void) const { return rng_base; }$/ -base cp-src/c.C /^double base (void) const { return rng_base; }$/ -base_case_ids merc-src/accumulator.m /^:- func base_case_ids(accu_goal_store) = list(accu/ -base_case_ids_set merc-src/accumulator.m /^:- func base_case_ids_set(accu_goal_store) = set(a/ -baz= ruby-src/test1.ru /^ :baz,$/ -bb c.c 275 -bbb c.c 251 -bbbbbb c-src/h.h 113 +B cp-src/c.C 54 +B cp-src/c.C 56 +B cp-src/c.C 74 +~B cp-src/c.C /^ ~B() {};$/ +B cp-src/c.C /^void B::B() {}$/ +B cp-src/fail.C 24 +B cp-src/fail.C 8 +b c-src/h.h 103 +b c-src/h.h 104 +b c-src/h.h 41 been_warned c-src/etags.c 222 before_command_echo_length c-src/emacs/src/keyboard.c 130 before_command_key_count c-src/emacs/src/keyboard.c 129 -begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/ +/BEGINBITMAP2BITc ps-src/rfc1245.ps /^\/BEGINBITMAP2BITc { $/ +/BEGINBITMAP2BIT ps-src/rfc1245.ps /^\/BEGINBITMAP2BIT { $/ +/BEGINBITMAPBWc ps-src/rfc1245.ps /^\/BEGINBITMAPBWc { $/ +/BEGINBITMAPBW ps-src/rfc1245.ps /^\/BEGINBITMAPBW { $/ +/BEGINBITMAPGRAYc ps-src/rfc1245.ps /^\/BEGINBITMAPGRAYc { $/ +/BEGINBITMAPGRAY ps-src/rfc1245.ps /^\/BEGINBITMAPGRAY { $/ begindoublecolumns tex-src/texinfo.tex /^\\def\\begindoublecolumns{\\begingroup$/ +/BEGINPRINTCODE ps-src/rfc1245.ps /^\/BEGINPRINTCODE { $/ +begin tex-src/texinfo.tex /^\\outer\\def\\begin{\\parsearg\\beginxxx}$/ beginxxx tex-src/texinfo.tex /^\\def\\beginxxx #1{%$/ begtoken c-src/etags.c /^#define begtoken(c) (_btk[CHAR (c)]) \/* c can star/ behaviour_info erl-src/gs_dialog.erl /^behaviour_info(callbacks) ->$/ -bf tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/ -bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/ +BE_Node cp-src/c.C 77 +BE_Node cp-src/c.C /^void BE_Node::BE_Node() {}$/ +/BF ps-src/rfc1245.ps /^\/BF { $/ bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }%$/ +bf tex-src/texinfo.tex /^\\def\\bf{\\realbackslash bf }$/ bf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ bf tex-src/texinfo.tex /^\\font\\defbf=cmbx10 scaled \\magstep1 %was 1314$/ -bind pyt-src/server.py /^ def bind(self, key, action):$/ +bf tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/ +Bidule/b ada-src/etags-test-for.ada /^ protected body Bidule is$/ +Bidule/b ada-src/waroquiers.ada /^ protected body Bidule is$/ +Bidule/t ada-src/etags-test-for.ada /^ protected Bidule is$/ +Bidule/t ada-src/waroquiers.ada /^ protected Bidule is$/ bind_polling_period c-src/emacs/src/keyboard.c /^bind_polling_period (int n)$/ +bind pyt-src/server.py /^ def bind(self, key, action):$/ +/BITMAPCOLORc ps-src/rfc1245.ps /^\/BITMAPCOLORc { $/ +/BITMAPCOLOR ps-src/rfc1245.ps /^\/BITMAPCOLOR { $/ +/BITMAPGRAYc ps-src/rfc1245.ps /^\/BITMAPGRAYc { $/ +/BITMAPGRAY ps-src/rfc1245.ps /^\/BITMAPGRAY { $/ +BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 125 +BITS_PER_BITS_WORD c-src/emacs/src/lisp.h 129 +BITS_PER_CHAR c-src/emacs/src/lisp.h 136 +BITS_PER_EMACS_INT c-src/emacs/src/lisp.h 139 +BITS_PER_LONG c-src/emacs/src/lisp.h 138 +BITS_PER_SHORT c-src/emacs/src/lisp.h 137 bits_word c-src/emacs/src/lisp.h 123 bits_word c-src/emacs/src/lisp.h 127 +BITS_WORD_MAX c-src/emacs/src/lisp.h 124 +BITS_WORD_MAX c-src/emacs/src/lisp.h 128 bla c.c /^int bla ()$/ +BLACK cp-src/screen.hpp 12 blah tex-src/testenv.tex /^\\section{blah}$/ bletch el-src/TAGTEST.EL /^(foo::defmumble bletch beuarghh)$/ +BLOCK c-src/emacs/src/gmalloc.c /^#define BLOCK(A) (((char *) (A) - _heapbase) \/ BLO/ +BLOCKIFY c-src/emacs/src/gmalloc.c /^#define BLOCKIFY(SIZE) (((SIZE) + BLOCKSIZE - 1) \// +BLOCKLOG c-src/emacs/src/gmalloc.c 125 +BLOCKSIZE c-src/emacs/src/gmalloc.c 126 +/bl ps-src/rfc1245.ps /^\/bl { $/ +BLUE cp-src/screen.hpp 13 blv c-src/emacs/src/lisp.h 689 blv_found c-src/emacs/src/lisp.h /^blv_found (struct Lisp_Buffer_Local_Value *blv)$/ bodyindent tex-src/texinfo.tex /^\\advance\\dimen2 by -\\defbodyindent$/ @@ -2020,141 +411,261 @@ bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by -\\defbodyindent$/ bodyindent tex-src/texinfo.tex /^\\advance\\leftskip by \\defbodyindent \\advance \\righ/ bodyindent tex-src/texinfo.tex /^\\exdentamount=\\defbodyindent$/ bodyindent tex-src/texinfo.tex /^\\newskip\\defbodyindent \\defbodyindent=.4in$/ +Body_Required/f ada-src/etags-test-for.ada /^ function Body_Required$/ boldbrax tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/ +Boo::Boo cp-src/c.C /^Boo::Boo(Boo) :$/ +Boo cp-src/c.C 129 +Boo cp-src/c.C /^ Boo(int _i, int _a, int _b) : i(_i), a(_a), b(/ bool c.c 222 -bool merc-src/accumulator.m /^:- import_module bool.$/ bool_header_size c-src/emacs/src/lisp.h 1472 +bool merc-src/accumulator.m /^:- import_module bool.$/ +boolvar c-src/emacs/src/lisp.h 2287 bool_vector_bitref c-src/emacs/src/lisp.h /^bool_vector_bitref (Lisp_Object a, EMACS_INT i)$/ +BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 114 +BOOL_VECTOR_BITS_PER_CHAR c-src/emacs/src/lisp.h 115 bool_vector_bytes c-src/emacs/src/lisp.h /^bool_vector_bytes (EMACS_INT size)$/ bool_vector_data c-src/emacs/src/lisp.h /^bool_vector_data (Lisp_Object a)$/ +BOOL_VECTOR_P c-src/emacs/src/lisp.h /^BOOL_VECTOR_P (Lisp_Object a)$/ bool_vector_ref c-src/emacs/src/lisp.h /^bool_vector_ref (Lisp_Object a, EMACS_INT i)$/ bool_vector_set c-src/emacs/src/lisp.h /^bool_vector_set (Lisp_Object a, EMACS_INT i, bool / bool_vector_size c-src/emacs/src/lisp.h /^bool_vector_size (Lisp_Object a)$/ bool_vector_uchar_data c-src/emacs/src/lisp.h /^bool_vector_uchar_data (Lisp_Object a)$/ bool_vector_words c-src/emacs/src/lisp.h /^bool_vector_words (EMACS_INT size)$/ -boolvar c-src/emacs/src/lisp.h 2287 -br tex-src/texinfo.tex /^\\let\\br = \\par$/ +/B ps-src/rfc1245.ps /^\/B { $/ bracelev c-src/etags.c 2520 +/braceright ps-src/rfc1245.ps /^\/braceright \/asciitilde \/.notdef \/Adieresis \/Aring/ +/bracketright ps-src/rfc1245.ps /^\/bracketright \/asciicircum \/underscore \/grave \/a \// +/breve ps-src/rfc1245.ps /^\/breve \/dotaccent \/ring \/cedilla \/hungarumlaut \/og/ +BROWN cp-src/screen.hpp 18 +br tex-src/texinfo.tex /^\\let\\br = \\par$/ +B ruby-src/test1.ru /^ class B$/ +b ruby-src/test1.ru /^ def b()$/ bsp_DevId c-src/h.h 25 bt c-src/emacs/src/lisp.h 2988 +b tex-src/texinfo.tex /^\\def\\b#1{{\\bf #1}}$/ +b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}%$/ +b tex-src/texinfo.tex /^\\def\\b##1{\\realbackslash b {##1}}$/ +b tex-src/texinfo.tex /^\\let\\b=\\indexdummyfont$/ +b tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ btowc c-src/emacs/src/regex.h /^# define btowc(c) c$/ buffer c-src/emacs/src/lisp.h 2000 buffer c-src/emacs/src/regex.h 341 buffer c-src/etags.c 238 buffer c-src/h.h 119 +BUFFER_OBJFWDP c-src/emacs/src/lisp.h /^BUFFER_OBJFWDP (union Lisp_Fwd *a)$/ +BUFFERP c-src/emacs/src/lisp.h /^BUFFERP (Lisp_Object a)$/ +BUFFERSIZE objc-src/Subprocess.h 43 +buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/ build prol-src/natded.prolog /^build([],Left,Left).$/ build_pure_c_string c-src/emacs/src/lisp.h /^build_pure_c_string (const char *str)$/ build_string c-src/emacs/src/lisp.h /^build_string (const char *str)$/ -buildact prol-src/natded.prolog /^buildact([SynIn],Right,RightPlus1):-$/ builtin_lisp_symbol c-src/emacs/src/lisp.h /^builtin_lisp_symbol (int index)$/ bullet tex-src/texinfo.tex /^\\def\\bullet{$\\ptexbullet$}$/ bullet tex-src/texinfo.tex /^\\let\\bullet=\\ptexbullet$/ burst c-src/h.h 28 busy c-src/emacs/src/gmalloc.c 158 +ButtonBar pyt-src/server.py /^def ButtonBar(frame, legend, ref, alternatives, co/ button_down_location c-src/emacs/src/keyboard.c 5210 button_down_time c-src/emacs/src/keyboard.c 5218 bye tex-src/texinfo.tex /^\\outer\\def\\bye{\\pagealignmacro\\tracingstats=1\\ptex/ -byte_stack c-src/emacs/src/lisp.h 3049 bytecode_dest c-src/emacs/src/lisp.h 3037 bytecode_top c-src/emacs/src/lisp.h 3036 +BYTE_MARK_STACK c-src/emacs/src/lisp.h 3181 bytepos c-src/emacs/src/lisp.h 2016 bytes_free c-src/emacs/src/gmalloc.c 314 +_bytes_free c-src/emacs/src/gmalloc.c 377 +byte_stack c-src/emacs/src/lisp.h 3049 bytes_total c-src/emacs/src/gmalloc.c 310 bytes_used c-src/emacs/src/gmalloc.c 312 -c c-src/h.h /^#define c() d$/ -c c-src/h.h 106 -c c.c 180 -c tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ -c tex-src/texinfo.tex /^\\let\\c=\\comment$/ -c_ext c-src/etags.c 2271 +_bytes_used c-src/emacs/src/gmalloc.c 375 caccacacca c.c /^caccacacca (a,b,c,d,e,f,g)$/ cacheLRUEntry_s c.c 172 cacheLRUEntry_t c.c 177 calculate_goal_info merc-src/accumulator.m /^:- pred calculate_goal_info(hlds_goal_expr::in, hl/ -calloc c-src/emacs/src/gmalloc.c /^calloc (size_t nmemb, size_t size)$/ -calloc c-src/emacs/src/gmalloc.c 1721 +CALLMANY c-src/emacs/src/lisp.h /^#define CALLMANY(f, array) (f) (ARRAYELTS (array),/ +CALLN c-src/emacs/src/lisp.h /^#define CALLN(f, ...) CALLMANY (f, ((Lisp_Object [/ +calloc c-src/emacs/src/gmalloc.c 1724 calloc c-src/emacs/src/gmalloc.c 66 calloc c-src/emacs/src/gmalloc.c 70 +calloc c-src/emacs/src/gmalloc.c /^calloc (size_t nmemb, size_t size)$/ can_be_null c-src/emacs/src/regex.h 370 cancel_echoing c-src/emacs/src/keyboard.c /^cancel_echoing (void)$/ canonicalize_filename c-src/etags.c /^canonicalize_filename (register char *fn)$/ capsenumerate tex-src/texinfo.tex /^\\def\\capsenumerate{\\enumerate{A}}$/ +CAR c-src/emacs/src/lisp.h /^CAR (Lisp_Object c)$/ +CAR_SAFE c-src/emacs/src/lisp.h /^CAR_SAFE (Lisp_Object c)$/ cartbot tex-src/texinfo.tex /^\\def\\cartbot{\\hbox to \\cartouter{\\hskip\\lskip$/ cartouche tex-src/texinfo.tex /^\\long\\def\\cartouche{%$/ carttop tex-src/texinfo.tex /^\\def\\carttop{\\hbox to \\cartouter{\\hskip\\lskip$/ case_Lisp_Int c-src/emacs/src/lisp.h 438 -cat c-src/h.h 81 +cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/ +CATCHER c-src/emacs/src/lisp.h 3021 cat cp-src/c.C 126 cat cp-src/c.C 130 +cat c-src/h.h 81 cat prol-src/natded.prolog /^cat(A, Alpha@Beta, Ass3, Qs3, tree(fe,A:Alpha@Beta/ -cat_atoms prol-src/natded.prolog /^cat_atoms(A1,A2,A3):-$/ +C_AUTO c-src/etags.c 2198 cbl tex-src/texinfo.tex /^\\def\\cbl{{\\circle\\char'012\\hskip -6pt}}$/ cbr tex-src/texinfo.tex /^\\def\\cbr{{\\hskip 6pt\\circle\\char'011}}$/ +c c.c 180 cccccccccc c-src/h.h 115 +C cp-src/fail.C 25 +C cp-src/fail.C 9 +C cp-src/fail.C /^ C(int i) {x = i;}$/ +c c-src/h.h 106 +c c-src/h.h /^#define c() d$/ +%cdiff make-src/Makefile /^%cdiff: CTAGS% CTAGS ${infiles}$/ cdr c-src/emacs/src/lisp.h 1159 +CDR c-src/emacs/src/lisp.h /^CDR (Lisp_Object c)$/ +CDR_SAFE c-src/emacs/src/lisp.h /^CDR_SAFE (Lisp_Object c)$/ cell y-src/parse.y 279 center tex-src/texinfo.tex /^\\def\\center{\\parsearg\\centerzzz}$/ centerzzz tex-src/texinfo.tex /^\\def\\centerzzz #1{{\\advance\\hsize by -\\leftskip$/ +C_entries c-src/etags.c /^C_entries (int c_ext, FILE *inf)$/ +C_EXT c-src/etags.c 2193 +c_ext c-src/etags.c 2271 +CFLAGS make-src/Makefile /^CFLAGS=${WARNINGS} -ansi -g3 # -pg -O$/ +/cfs ps-src/rfc1245.ps /^\/cfs { $/ cgrep html-src/software.html /^cgrep$/ chain c-src/emacs/src/lisp.h 1162 chain c-src/emacs/src/lisp.h 2206 chain c-src/emacs/src/lisp.h 2396 -chain_subst merc-src/accumulator.m /^:- func chain_subst(accu_subst, accu_subst) = accu/ chain_subst_2 merc-src/accumulator.m /^:- pred chain_subst_2(list(A)::in, map(A, B)::in, / +chain_subst merc-src/accumulator.m /^:- func chain_subst(accu_subst, accu_subst) = accu/ +ChangeFileType pas-src/common.pas /^function ChangeFileType; (*(FileName : NameString;/ chapbf tex-src/texinfo.tex /^\\let\\chapbf=\\chaprm$/ chapbreak tex-src/texinfo.tex /^\\def\\chapbreak{\\dobreak \\chapheadingskip {-4000}}$/ -chapentry tex-src/texinfo.tex /^ \\let\\chapentry = \\shortchapentry$/ -chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/ chapentryfonts tex-src/texinfo.tex /^\\def\\chapentryfonts{\\secfonts \\rm}$/ +chapentry tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/ +chapentry tex-src/texinfo.tex /^ \\let\\chapentry = \\shortchapentry$/ chapfonts tex-src/texinfo.tex /^\\def\\chapfonts{%$/ +CHAPFopen tex-src/texinfo.tex /^\\def\\CHAPFopen{$/ +CHAPFplain tex-src/texinfo.tex /^\\def\\CHAPFplain{$/ chapheading tex-src/texinfo.tex /^\\def\\chapheading{\\parsearg\\chapheadingzzz}$/ chapheadingzzz tex-src/texinfo.tex /^\\def\\chapheadingzzz #1{\\chapbreak %$/ chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfopen$/ chapmacro tex-src/texinfo.tex /^\\global\\let\\chapmacro=\\chfplain$/ chapoddpage tex-src/texinfo.tex /^\\def\\chapoddpage{\\chappager \\ifodd\\pageno \\else \\h/ chappager tex-src/texinfo.tex /^\\def\\chappager{\\par\\vfill\\supereject}$/ +CHAPPAGodd tex-src/texinfo.tex /^\\def\\CHAPPAGodd{$/ +CHAPPAGoff tex-src/texinfo.tex /^\\def\\CHAPPAGoff{$/ +CHAPPAGon tex-src/texinfo.tex /^\\def\\CHAPPAGon{$/ +chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/ chapter tex-src/texinfo.tex /^\\let\\chapter=\\relax$/ chapter tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/ -chapternofonts tex-src/texinfo.tex /^\\def\\chapternofonts{%$/ chapterzzz tex-src/texinfo.tex /^\\def\\chapterzzz #1{\\seccheck{chapter}%$/ -char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/ -char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/ +CHARACTERBITS c-src/emacs/src/lisp.h 2457 +CHAR_ALT c-src/emacs/src/lisp.h 2445 +CHAR_BIT c-src/emacs/src/lisp.h 2957 +CHAR_BIT c-src/emacs/src/lisp.h 2959 +CHAR_BIT c-src/emacs/src/lisp.h 2964 +CHAR_BIT c-src/emacs/src/lisp.h 2969 +CHAR_BIT c-src/emacs/src/lisp.h 2974 +CHAR_BIT c-src/emacs/src/lisp.h 2978 +CHAR_BIT c-src/emacs/src/lisp.h 2983 char_bits c-src/emacs/src/lisp.h 2443 -char_table_specials c-src/emacs/src/lisp.h 1692 +CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 593 +CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 597 +CHAR_CLASS_MAX_LENGTH c-src/emacs/src/regex.h 605 +CHAR c-src/etags.c /^#define CHAR(x) ((unsigned int)(x) & (CHARS - 1))/ +CHAR_CTL c-src/emacs/src/lisp.h 2449 +CHAR_HYPER c-src/emacs/src/lisp.h 2447 +CHAR_META c-src/emacs/src/lisp.h 2450 +CHAR_MODIFIER_MASK c-src/emacs/src/lisp.h 2452 charpos c-src/emacs/src/lisp.h 2011 +CHARS c-src/etags.c 157 charset_unibyte c-src/emacs/src/regex.h 410 +CHAR_SHIFT c-src/emacs/src/lisp.h 2448 +CHAR_SUPER c-src/emacs/src/lisp.h 2446 +CHAR_TABLE_EXTRA_SLOTS c-src/emacs/src/lisp.h /^CHAR_TABLE_EXTRA_SLOTS (struct Lisp_Char_Table *ct/ +CHAR_TABLE_P c-src/emacs/src/lisp.h /^CHAR_TABLE_P (Lisp_Object a)$/ +CHAR_TABLE_REF_ASCII c-src/emacs/src/lisp.h /^CHAR_TABLE_REF_ASCII (Lisp_Object ct, ptrdiff_t id/ +CHAR_TABLE_REF c-src/emacs/src/lisp.h /^CHAR_TABLE_REF (Lisp_Object ct, int idx)$/ +CHAR_TABLE_SET c-src/emacs/src/lisp.h /^CHAR_TABLE_SET (Lisp_Object ct, int idx, Lisp_Obje/ +char_table_specials c-src/emacs/src/lisp.h 1692 +CHAR_TABLE_STANDARD_SLOTS c-src/emacs/src/lisp.h 1697 +CHARTAB_SIZE_BITS_0 c-src/emacs/src/lisp.h 1567 +CHARTAB_SIZE_BITS_1 c-src/emacs/src/lisp.h 1568 +CHARTAB_SIZE_BITS_2 c-src/emacs/src/lisp.h 1569 +CHARTAB_SIZE_BITS_3 c-src/emacs/src/lisp.h 1570 +CHARTAB_SIZE_BITS c-src/emacs/src/lisp.h 1565 +char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}%$/ +char tex-src/texinfo.tex /^\\def\\char{\\realbackslash char}$/ chartonmstr pas-src/common.pas /^function chartonmstr; (*($/ -checkQuotation php-src/lce_functions.php /^ function checkQuotation($str)$/ +CHAR_TYPE_SIZE y-src/cccp.y 87 +CHAR y-src/cccp.c 7 +CHECK_ARRAY c-src/emacs/src/lisp.h /^CHECK_ARRAY (Lisp_Object x, Lisp_Object predicate)/ +CHECK_BOOL_VECTOR c-src/emacs/src/lisp.h /^CHECK_BOOL_VECTOR (Lisp_Object x)$/ +CHECK_BUFFER c-src/emacs/src/lisp.h /^CHECK_BUFFER (Lisp_Object x)$/ +CHECK_CONS c-src/emacs/src/lisp.h /^CHECK_CONS (Lisp_Object x)$/ check_cons_list c-src/emacs/src/lisp.h /^# define check_cons_list() lisp_h_check_cons_list/ checker make-src/Makefile /^checker:$/ +CHECKFLAGS make-src/Makefile /^CHECKFLAGS=-DDEBUG -Wno-unused-function$/ checkhdr c-src/emacs/src/gmalloc.c /^checkhdr (const struct hdr *hdr)$/ checkiso html-src/software.html /^checkiso$/ +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 571 +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 572 +CHECK_LISP_OBJECT_TYPE c-src/emacs/src/lisp.h 579 +CHECK_LIST_CONS c-src/emacs/src/lisp.h /^# define CHECK_LIST_CONS(x, y) lisp_h_CHECK_LIST_C/ +CHECK_LIST c-src/emacs/src/lisp.h /^CHECK_LIST (Lisp_Object x)$/ +CHECK_NATNUM c-src/emacs/src/lisp.h /^CHECK_NATNUM (Lisp_Object x)$/ +CHECK_NUMBER_CAR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CAR (Lisp_Object x)$/ +CHECK_NUMBER_CDR c-src/emacs/src/lisp.h /^CHECK_NUMBER_CDR (Lisp_Object x)$/ +CHECK_NUMBER_COERCE_MARKER c-src/emacs/src/lisp.h /^#define CHECK_NUMBER_COERCE_MARKER(x) \\$/ +CHECK_NUMBER c-src/emacs/src/lisp.h /^# define CHECK_NUMBER(x) lisp_h_CHECK_NUMBER (x)$/ +CHECK_NUMBER_OR_FLOAT_COERCE_MARKER c-src/emacs/src/lisp.h /^#define CHECK_NUMBER_OR_FLOAT_COERCE_MARKER(x) / +CHECK_NUMBER_OR_FLOAT c-src/emacs/src/lisp.h /^CHECK_NUMBER_OR_FLOAT (Lisp_Object x)$/ +CHECKOBJS make-src/Makefile /^CHECKOBJS=chkmalloc.o chkxm.o$/ +CHECK_PROCESS c-src/emacs/src/lisp.h /^CHECK_PROCESS (Lisp_Object x)$/ +checkQuotation php-src/lce_functions.php /^ function checkQuotation($str)$/ +CHECK_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define CHECK_RANGED_INTEGER(x, lo, hi) \\$/ +CHECK_STRING_CAR c-src/emacs/src/lisp.h /^CHECK_STRING_CAR (Lisp_Object x)$/ +CHECK_SYMBOL c-src/emacs/src/lisp.h /^# define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x)$/ +CHECK_TYPE c-src/emacs/src/lisp.h /^# define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK/ +CHECK_TYPE_RANGED_INTEGER c-src/emacs/src/lisp.h /^#define CHECK_TYPE_RANGED_INTEGER(type, x) \\$/ +CHECK_VECTOR c-src/emacs/src/lisp.h /^CHECK_VECTOR (Lisp_Object x)$/ +CHECK_VECTOR_OR_STRING c-src/emacs/src/lisp.h /^CHECK_VECTOR_OR_STRING (Lisp_Object x)$/ +CHECK_WINDOW c-src/emacs/src/lisp.h /^CHECK_WINDOW (Lisp_Object x)$/ chfopen tex-src/texinfo.tex /^\\def\\chfopen #1#2{\\chapoddpage {\\chapfonts$/ chfplain tex-src/texinfo.tex /^\\def\\chfplain #1#2{%$/ childDidExit objc-src/Subprocess.m /^- childDidExit$/ chunks_free c-src/emacs/src/gmalloc.c 313 +_chunks_free c-src/emacs/src/gmalloc.c 376 chunks_used c-src/emacs/src/gmalloc.c 311 -cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/ +_chunks_used c-src/emacs/src/gmalloc.c 374 cindexsub tex-src/texinfo.tex /^\\def\\cindexsub {\\begingroup\\obeylines\\cindexsub}$/ cindexsub tex-src/texinfo.tex /^\\gdef\\cindexsub "#1" #2^^M{\\endgroup %$/ -cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/ +cindex tex-src/texinfo.tex /^\\def\\cindex {\\cpindex}$/ +Circle.getPos lua-src/test.lua /^function Circle.getPos ()$/ cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}%$/ +cite tex-src/texinfo.tex /^\\def\\cite##1{\\realbackslash cite {##1}}$/ cite tex-src/texinfo.tex /^\\let\\cite=\\indexdummyfont$/ cite tex-src/texinfo.tex /^\\let\\cite=\\smartitalic$/ +C_JAVA c-src/etags.c 2197 cjava c-src/etags.c 2936 -class_method ruby-src/test.rb /^ def ClassExample.class_method$/ +Cjava_entries c-src/etags.c /^Cjava_entries (FILE *inf)$/ +Cjava_help c-src/etags.c 551 +Cjava_suffixes c-src/etags.c 549 +CK_ABS_C y-src/parse.y /^#define CK_ABS_C(x) if((x)MAX_COL)/ +CK_ABS_R y-src/parse.y /^#define CK_ABS_R(x) if((x)MAX_ROW)/ +CK_REL_C y-src/parse.y /^#define CK_REL_C(x) if( ((x)>0 && MAX_COL-(x)0 && MAX_ROW-(x)/ +/dieresis ps-src/rfc1245.ps /^\/dieresis \/.notdef \/AE \/Oslash \/.notdef \/.notdef \// dignorerest c-src/etags.c 2463 direntry tex-src/texinfo.tex /^\\def\\direntry{\\begingroup\\direntryxxx}$/ direntryxxx tex-src/texinfo.tex /^\\long\\def\\direntryxxx #1\\end direntry{\\endgroup\\ig/ discard-input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/ discard_mouse_events c-src/emacs/src/keyboard.c /^discard_mouse_events (void)$/ -discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/ discrete_location cp-src/clheir.hpp 56 +discrete_location cp-src/clheir.hpp /^ discrete_location(int xi, int yi, int zi):$/ display cp-src/conway.cpp /^void display(void)$/ display tex-src/texinfo.tex /^\\def\\display{\\begingroup\\inENV %This group ends at/ +DisposeANameList pas-src/common.pas /^procedure DisposeANameList( $/ +DisposeNameList pas-src/common.pas /^procedure DisposeNameList;$/ disposetextstring pas-src/common.pas /^procedure disposetextstring;(*($/ +/dmatrix ps-src/rfc1245.ps /^\/dmatrix matrix def$/ dmn tex-src/texinfo.tex /^\\def\\dmn#1{\\thinspace #1}$/ dnone c-src/etags.c 2460 +/dnormalize ps-src/rfc1245.ps /^\/dnormalize {$/ dobreak tex-src/texinfo.tex /^\\def\\dobreak#1#2{\\par\\ifdim\\lastskip<#1\\removelast/ doc c-src/emacs/src/lisp.h 1689 dochapentry tex-src/texinfo.tex /^\\def\\dochapentry#1#2{%$/ docodeindex tex-src/texinfo.tex /^\\def\\docodeindex#1{\\edef\\indexname{#1}\\parsearg\\si/ -dog c-src/h.h 81 dog cp-src/c.C 126 dog cp-src/c.C 130 -doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/ +dog c-src/h.h 81 doindex tex-src/texinfo.tex /^\\def\\doindex#1{\\edef\\indexname{#1}\\parsearg\\single/ +doind tex-src/texinfo.tex /^\\def\\doind #1#2{%$/ donoderef tex-src/texinfo.tex /^\\def\\donoderef{\\ifx\\lastnode\\relax\\else$/ dontindex tex-src/texinfo.tex /^\\def\\dontindex #1{}$/ dopageno tex-src/texinfo.tex /^\\def\\dopageno#1{{\\rm #1}}$/ @@ -2392,11 +1027,13 @@ doprintindex tex-src/texinfo.tex /^\\def\\doprintindex#1{%$/ dosecentry tex-src/texinfo.tex /^\\def\\dosecentry#1#2{%$/ dosetq tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/ doshortpageno tex-src/texinfo.tex /^\\def\\doshortpageno#1{{\\rm #1}}$/ +DOS_NT c-src/etags.c 117 +DOS_NT c-src/etags.c 118 dosubind tex-src/texinfo.tex /^\\def\\dosubind #1#2#3{%$/ dosubsecentry tex-src/texinfo.tex /^\\def\\dosubsecentry#1#2{%$/ dosubsubsecentry tex-src/texinfo.tex /^\\def\\dosubsubsecentry#1#2{%$/ -dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/ dotfill tex-src/texinfo.tex /^\\noindent\\hskip\\secondaryindent\\hbox{#1}\\indexdotf/ +dotfill tex-src/texinfo.tex /^ \\null\\nobreak\\indexdotfill % Have leaders before/ dots tex-src/texinfo.tex /^\\def\\dots{$\\ldots$}$/ dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots }%$/ dots tex-src/texinfo.tex /^\\def\\dots{\\realbackslash dots}$/ @@ -2404,8 +1041,11 @@ dots tex-src/texinfo.tex /^\\let\\dots=\\indexdummydots$/ dots tex-src/texinfo.tex /^\\let\\dots=\\ptexdots$/ double_click_count c-src/emacs/src/keyboard.c 5222 doublecolumnout tex-src/texinfo.tex /^\\def\\doublecolumnout{\\splittopskip=\\topskip \\split/ +/dpi ps-src/rfc1245.ps /^\/dpi 72 0 dmatrix defaultmatrix dtransform$/ +/D ps-src/rfc1245.ps /^\/D {curveto} bind def$/ drag_n_drop_syms c-src/emacs/src/keyboard.c 4629 dribble c-src/emacs/src/keyboard.c 236 +D ruby-src/test1.ru /^class ::D; end$/ dsharpseen c-src/etags.c 2461 dummies tex-src/texinfo.tex /^{\\indexdummies % Must do this here, since \\bf, etc/ dummy1 cp-src/burton.cpp /^::dummy::dummy test::dummy1(void)$/ @@ -2424,45 +1064,79 @@ dummyfont tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/ dummyfont tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/ dummyfont tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/ dummyfont tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/ -dummyfont tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/ dummyfont tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/ +dummyfont tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/ dummyfont tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/ dummyfont tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/ dummytex tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/ +DUMPED c-src/emacs/src/gmalloc.c 80 dump pyt-src/server.py /^ def dump(self, folded):$/ eabs c-src/emacs/src/lisp.h /^#define eabs(x) ((x) < 0 ? -(x) : (x))$/ +Ealphaenumerate tex-src/texinfo.tex /^\\def\\Ealphaenumerate{\\Eenumerate}$/ eassert c-src/emacs/src/lisp.h /^# define eassert(cond) \\$/ eassert c-src/emacs/src/lisp.h /^# define eassert(cond) ((void) (false && (cond))) / eassume c-src/emacs/src/lisp.h /^# define eassume(cond) \\$/ eassume c-src/emacs/src/lisp.h /^# define eassume(cond) assume (cond)$/ eax c-src/sysdep.h 31 eax c-src/sysdep.h 33 +Ecapsenumerate tex-src/texinfo.tex /^\\def\\Ecapsenumerate{\\Eenumerate}$/ +Ecartouche tex-src/texinfo.tex /^\\def\\Ecartouche{%$/ echo_add_key c-src/emacs/src/keyboard.c /^echo_add_key (Lisp_Object c)$/ echo_char c-src/emacs/src/keyboard.c /^echo_char (Lisp_Object c)$/ echo_dash c-src/emacs/src/keyboard.c /^echo_dash (void)$/ +echoing c-src/emacs/src/keyboard.c 154 echo_kboard c-src/emacs/src/keyboard.c 166 echo_keystrokes_p c-src/emacs/src/keyboard.c /^echo_keystrokes_p (void)$/ echo_length c-src/emacs/src/keyboard.c /^echo_length (void)$/ echo_message_buffer c-src/emacs/src/keyboard.c 171 echo_now c-src/emacs/src/keyboard.c /^echo_now (void)$/ echo_truncate c-src/emacs/src/keyboard.c /^echo_truncate (ptrdiff_t nchars)$/ -echoing c-src/emacs/src/keyboard.c 154 +Edescription tex-src/texinfo.tex /^\\def\\Edescription{\\Etable}% Necessary kludge.$/ +%ediff make-src/Makefile /^%ediff: ETAGS% ETAGS ${infiles}$/ +Edisplay tex-src/texinfo.tex /^\\def\\Edisplay{\\endgroup\\afterenvbreak}%$/ editItem pyt-src/server.py /^ def editItem(self):$/ editsite pyt-src/server.py /^ def editsite(self, site):$/ edituser pyt-src/server.py /^ def edituser(self, user):$/ +Eexample tex-src/texinfo.tex /^\\def\\Eexample{\\Elisp}$/ +Eflushleft tex-src/texinfo.tex /^\\def\\Eflushleft{\\endgroup\\afterenvbreak}%$/ +Eflushright tex-src/texinfo.tex /^\\def\\Eflushright{\\endgroup\\afterenvbreak}%$/ +Eformat tex-src/texinfo.tex /^\\def\\Eformat{\\endgroup\\afterenvbreak}$/ +Eftable tex-src/texinfo.tex /^\\def\\Eftable{\\endgraf\\endgroup\\afterenvbreak}%$/ egetenv c-src/emacs/src/lisp.h /^egetenv (const char *var)$/ +Egroup tex-src/texinfo.tex /^ \\def\\Egroup{\\egroup\\endgroup}%$/ +Eifclear tex-src/texinfo.tex /^\\def\\Eifclear{}$/ +Eifset tex-src/texinfo.tex /^\\def\\Eifset{}$/ +Eiftex tex-src/texinfo.tex /^\\def\\Eiftex{}$/ +ELEM_I c-src/h.h 3 +Elisp tex-src/texinfo.tex /^\\def\\Elisp{\\endgroup\\afterenvbreak}%$/ +ELSRC make-src/Makefile /^ELSRC=TAGTEST.EL emacs\/lisp\/progmodes\/etags.el$/ emacs_abort c-src/emacs/src/lisp.h /^extern _Noreturn void emacs_abort (void) NO_INLINE/ +EMACS_INT c-src/emacs/src/lisp.h 103 +EMACS_INT c-src/emacs/src/lisp.h 91 +EMACS_INT c-src/emacs/src/lisp.h 96 +EMACS_INT_MAX c-src/emacs/src/lisp.h 105 +EMACS_INT_MAX c-src/emacs/src/lisp.h 93 +EMACS_INT_MAX c-src/emacs/src/lisp.h 98 +EMACS_LISP_H c-src/emacs/src/lisp.h 22 +EMACS_NAME c-src/etags.c 786 +EMACS_UINT c-src/emacs/src/lisp.h 104 +EMACS_UINT c-src/emacs/src/lisp.h 92 +EMACS_UINT c-src/emacs/src/lisp.h 97 emph tex-src/texinfo.tex /^\\def\\emph##1{\\realbackslash emph {##1}}$/ emph tex-src/texinfo.tex /^\\let\\emph=\\indexdummyfont$/ emph tex-src/texinfo.tex /^\\let\\emph=\\smartitalic$/ +EmptyNmStr pas-src/common.pas /^function EmptyNmStr(* : NameString*);$/ +/ENDBITMAP ps-src/rfc1245.ps /^\/ENDBITMAP {$/ end c-src/emacs/src/keyboard.c 8753 end c-src/emacs/src/lisp.h 2039 end c-src/emacs/src/regex.h 432 -end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/ enddoublecolumns tex-src/texinfo.tex /^\\def\\enddoublecolumns{\\output={\\balancecolumns}\\ej/ +/ENDPRINTCODE ps-src/rfc1245.ps /^\/ENDPRINTCODE {$/ +end tex-src/texinfo.tex /^\\def\\end{\\parsearg\\endxxx}$/ endtoken c-src/etags.c /^#define endtoken(c) (_etk[CHAR (c)]) \/* c ends tok/ endxxx tex-src/texinfo.tex /^\\def\\endxxx #1{%$/ enter_critical_section c-src/h.h 116 +ENTRY c-src/sysdep.h /^#define ENTRY(name) \\$/ entry perl-src/htlmify-cystic 218 entry perl-src/htlmify-cystic 234 entry perl-src/htlmify-cystic 245 @@ -2472,42 +1146,69 @@ entry perl-src/htlmify-cystic 276 entry perl-src/htlmify-cystic 281 entry perl-src/htlmify-cystic 296 entry tex-src/texinfo.tex /^\\def\\entry #1#2{\\begingroup$/ +ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) enum TYPE$/ +ENUM_BF c-src/emacs/src/lisp.h /^#define ENUM_BF(TYPE) unsigned int$/ enumerate tex-src/texinfo.tex /^\\def\\enumerate{\\parsearg\\enumeratezzz}$/ enumeratey tex-src/texinfo.tex /^\\def\\enumeratey #1 #2\\endenumeratey{%$/ enumeratezzz tex-src/texinfo.tex /^\\def\\enumeratezzz #1{\\enumeratey #1 \\endenumerate/ +ENVcheck tex-src/texinfo.tex /^\\def\\ENVcheck{%$/ +Environment tex-src/gzip.texi /^@node Environment, Tapes, Advanced usage, Top$/ +/E ps-src/rfc1245.ps /^\/E {lineto} bind def$/ +EQ c-src/emacs/src/lisp.h /^# define EQ(x, y) lisp_h_EQ (x, y)$/ equalsKey objcpp-src/SimpleCalc.M /^- equalsKey:sender$/ +EQUAL y-src/cccp.c 12 equiv tex-src/texinfo.tex /^\\def\\equiv{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/ equiv tex-src/texinfo.tex /^\\def\\equiv{\\realbackslash equiv}$/ +Equotation tex-src/texinfo.tex /^\\def\\Equotation{\\par\\endgroup\\afterenvbreak}%$/ erlang_atom c-src/etags.c /^erlang_atom (char *s)$/ erlang_attribute c-src/etags.c /^erlang_attribute (char *s)$/ erlang_func c-src/etags.c /^erlang_func (char *s, char *last)$/ +Erlang_functions c-src/etags.c /^Erlang_functions (FILE *inf)$/ +Erlang_help c-src/etags.c 567 +Erlang_suffixes c-src/etags.c 565 +ERLSRC make-src/Makefile /^ERLSRC=gs_dialog.erl lines.erl lists.erl$/ error c-src/emacs/src/lisp.h /^extern _Noreturn void error (const char *, ...) AT/ error c-src/etags.c /^error (const char *format, ...)$/ error c-src/etags.c /^static void error (const char *, ...) ATTRIBUTE_FO/ -error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/ -error y-src/cccp.y /^error (msg)$/ errorE tex-src/texinfo.tex /^\\def\\errorE#1{$/ +Error_Information/t ada-src/2ataspri.ads /^ type Error_Information is new Interfaces.C.POSI/ error_signaled c-src/etags.c 264 +error tex-src/texinfo.tex /^\\def\\error{\\leavevmode\\lower.7ex\\copy\\errorbox}$/ +ERROR y-src/cccp.c 9 +error y-src/cccp.y /^error (msg)$/ +ERROR y-src/parse.y 304 +ErrStrToNmStr pas-src/common.pas /^function ErrStrToNmStr;(*($/ +Esmallexample tex-src/texinfo.tex /^\\def\\Esmallexample{\\Elisp}$/ +Esmallexample tex-src/texinfo.tex /^\\global\\def\\Esmallexample{\\Esmalllisp}$/ +Esmalllisp tex-src/texinfo.tex /^\\def\\Esmalllisp{\\endgroup\\afterenvbreak}%$/ +Etable tex-src/texinfo.tex /^\\def\\Etable{\\endgraf\\endgroup\\afterenvbreak}%$/ +Etable tex-src/texinfo.tex /^\\let\\Etable=\\relax}}$/ +ETAGS12 make-src/Makefile /^ETAGS12: etags12 ${infiles}$/ +ETAGS13 ETAGS14 ETAGS15 make-src/Makefile /^ETAGS13 ETAGS14 ETAGS15: etags% ${infiles}$/ +etags.1.man make-src/Makefile /^etags.1.man: etags.1$/ etags el-src/emacs/lisp/progmodes/etags.el /^(defgroup etags nil "Tags tables."$/ -etags html-src/software.html /^Etags$/ -etags make-src/Makefile /^etags: etags.c ${OBJS}$/ -etags--xref-find-definitions el-src/emacs/lisp/progmodes/etags.el /^(defun etags--xref-find-definitions (pattern &opti/ -etags--xref-limit el-src/emacs/lisp/progmodes/etags.el /^(defconst etags--xref-limit 1000)$/ etags-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun etags-file-of-tag (&optional relative) ; Do/ +etags_getcwd c-src/etags.c /^etags_getcwd (void)$/ etags-goto-tag-location el-src/emacs/lisp/progmodes/etags.el /^(defun etags-goto-tag-location (tag-info)$/ +etags html-src/software.html /^Etags$/ etags-list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun etags-list-tags (file) ; Doc string?$/ +etags make-src/Makefile /^etags: etags.c ${OBJS}$/ +ETAGS make-src/Makefile /^ETAGS: FRC etags ${infiles}$/ +ETAGS% make-src/Makefile /^ETAGS%: FRC etags% ${infiles}$/ etags-recognize-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-recognize-tags-table ()$/ etags-snarf-tag el-src/emacs/lisp/progmodes/etags.el /^(defun etags-snarf-tag (&optional use-explicit) ; / -etags-tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos (string) ; Doc string?$/ etags-tags-apropos-additional el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos-additional (regexp)$/ +etags-tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-apropos (string) ; Doc string?$/ etags-tags-completion-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-completion-table () ; Doc string/ etags-tags-included-tables el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-included-tables () ; Doc string?/ etags-tags-table-files el-src/emacs/lisp/progmodes/etags.el /^(defun etags-tags-table-files () ; Doc string?$/ etags-verify-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun etags-verify-tags-table ()$/ -etags-xref-find el-src/emacs/lisp/progmodes/etags.el /^(defun etags-xref-find (action id)$/ +etags--xref-find-definitions el-src/emacs/lisp/progmodes/etags.el /^(defun etags--xref-find-definitions (pattern &opti/ etags-xref-find-definitions-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar etags-xref-find-definitions-tag-order '(ta/ -etags.1.man make-src/Makefile /^etags.1.man: etags.1$/ -etags_getcwd c-src/etags.c /^etags_getcwd (void)$/ +etags-xref-find el-src/emacs/lisp/progmodes/etags.el /^(defun etags-xref-find (action id)$/ +etags--xref-limit el-src/emacs/lisp/progmodes/etags.el /^(defconst etags--xref-limit 1000)$/ +Etex tex-src/texinfo.tex /^\\let\\Etex=\\endgroup}$/ +Etitlepage tex-src/texinfo.tex /^\\def\\Etitlepage{%$/ eval_dyn c-src/emacs/src/keyboard.c /^eval_dyn (Lisp_Object form)$/ evenfooting tex-src/texinfo.tex /^\\def\\evenfooting{\\parsearg\\evenfootingxxx}$/ evenfootingxxx tex-src/texinfo.tex /^\\gdef\\evenfootingxxx #1{\\evenfootingyyy #1@|@|@|@|/ @@ -2516,8 +1217,8 @@ evenheading tex-src/texinfo.tex /^\\def\\evenheading{\\parsearg\\evenheadingxxx} evenheadingxxx tex-src/texinfo.tex /^\\gdef\\evenheadingxxx #1{\\evenheadingyyy #1@|@|@|@|/ evenheadingyyy tex-src/texinfo.tex /^\\gdef\\evenheadingyyy #1@|#2@|#3@|#4\\finish{%$/ event-convert-list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, / -event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/ event_head c-src/emacs/src/keyboard.c 11021 +event-symbol-parse-modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/ event_to_kboard c-src/emacs/src/keyboard.c /^event_to_kboard (struct input_event *event)$/ everyfooting tex-src/texinfo.tex /^\\def\\everyfooting{\\parsearg\\everyfootingxxx}$/ everyfootingxxx tex-src/texinfo.tex /^\\gdef\\everyfootingxxx #1{\\everyfootingyyy #1@|@|@|/ @@ -2525,24 +1226,24 @@ everyfootingyyy tex-src/texinfo.tex /^\\gdef\\everyfootingyyy #1@|#2@|#3@|#4\\fi everyheading tex-src/texinfo.tex /^\\def\\everyheading{\\parsearg\\everyheadingxxx}$/ everyheadingxxx tex-src/texinfo.tex /^\\gdef\\everyheadingxxx #1{\\everyheadingyyy #1@|@|@|/ everyheadingyyy tex-src/texinfo.tex /^\\gdef\\everyheadingyyy #1@|#2@|#3@|#4\\finish{%$/ +Evtable tex-src/texinfo.tex /^\\def\\Evtable{\\endgraf\\endgroup\\afterenvbreak}%$/ ewbot tex-src/texinfo.tex /^\\def\\ewbot{\\vrule height0pt depth\\cornerthick widt/ ewtop tex-src/texinfo.tex /^\\def\\ewtop{\\vrule height\\cornerthick depth0pt widt/ exact c-src/emacs/src/gmalloc.c 200 example tex-src/texinfo.tex /^\\let\\example=\\lisp$/ +/exclamdown ps-src/rfc1245.ps /^\/exclamdown \/logicalnot \/.notdef \/florin \/.notdef / exdent tex-src/texinfo.tex /^\\def\\exdent{\\parsearg\\exdentyyy}$/ exdent tex-src/texinfo.tex /^\\let\\exdent=\\nofillexdent$/ exdentyyy tex-src/texinfo.tex /^\\def\\exdentyyy #1{{\\hfil\\break\\hbox{\\kern -\\exdent/ execute cp-src/c.C /^ void execute(CPluginCSCState& p, int w, in/ +EXFUN c-src/emacs/src/lisp.h /^#define EXFUN(fnname, maxargs) \\$/ +exit_critical_to_previous c-src/h.h 117 exit c-src/exit.c /^DEFUN(exit, (status), int status)$/ exit c-src/exit.strange_suffix /^DEFUN(exit, (status), int status)$/ +Exit_LL_Task/p ada-src/2ataspri.adb /^ procedure Exit_LL_Task is$/ +Exit_LL_Task/p ada-src/2ataspri.ads /^ procedure Exit_LL_Task;$/ exit-recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("exit-recursive-edit", Fexit_recursive_edit/ -exit_critical_to_previous c-src/h.h 117 -exp y-src/atest.y 2 -exp y-src/cccp.y 156 -exp y-src/cccp.y 185 -exp y-src/parse.y 95 exp1 y-src/cccp.y 148 -exp_list y-src/parse.y 263 expand-abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/ expandafter tex-src/texinfo.tex /^\\expandafter\\let\\expandafter\\synindexfoo\\expandaft/ expandmng prol-src/natded.prolog /^expandmng(var(V),var(V)).$/ @@ -2552,24 +1253,18 @@ expandsyn prol-src/natded.prolog /^expandsyn(Syn,Syn):-$/ expansion tex-src/texinfo.tex /^\\def\\expansion{\\leavevmode\\raise.1ex\\hbox to 1em{\\/ expansion tex-src/texinfo.tex /^\\def\\expansion{\\realbackslash expansion}$/ explicitly-quoted-pending-delete-mode el-src/TAGTEST.EL /^(defalias (quote explicitly-quoted-pending-delete-/ +exp_list y-src/parse.y 263 expression_value y-src/cccp.y 68 +exp y-src/atest.y 2 +exp y-src/cccp.y 156 +exp y-src/cccp.y 185 +exp y-src/parse.y 95 +EXTAGS make-src/Makefile /^EXTAGS: extags ${infiles} Makefile$/ +EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 3497 +EXTERNALLY_VISIBLE c-src/emacs/src/keyboard.c 4372 +ExtractCommentInfo pas-src/common.pas /^procedure ExtractCommentInfo; (*($/ extras c-src/emacs/src/lisp.h 1603 extvar c-src/h.h 109 -f c-src/c.c /^T f(){if(x){}$/ -f c-src/h.h 89 -f c.c /^int f$/ -f c.c 145 -f c.c 156 -f c.c 168 -f cp-src/c.C /^ void f() {}$/ -f cp-src/c.C /^ int f(){return 0;}; \/\/ first comment$/ -f cp-src/c.C /^A > A,int>::f(A* x) {}$/ -f cp-src/c.C /^A* f() {}$/ -f cp-src/c.C /^class B { void f() {} };$/ -f cp-src/c.C /^int A::f(A* x) {}$/ -f cp-src/c.C /^int f(A x) {}$/ -f cp-src/fail.C /^ int f() { return 5; }$/ -f cp-src/fail.C /^int A::B::f() { return 2; }$/ f1 c.c /^ f1 () { \/* Do something. *\/; }$/ f1 perl-src/kai-test.pl /^sub f1 {$/ f2 c.c /^void f2 () { \/* Do something. *\/; }$/ @@ -2579,39 +1274,92 @@ f4 perl-src/kai-test.pl /^sub Bar::f4 {$/ f5 perl-src/kai-test.pl /^sub f5 {$/ f6 perl-src/kai-test.pl /^sub f6 {$/ f7 perl-src/kai-test.pl /^sub f7 {$/ -fast_string_match_ignore_case c-src/emacs/src/lisp.h /^fast_string_match_ignore_case (Lisp_Object regexp,/ +Fabbrev_expansion c-src/abbrev.c /^DEFUN ("abbrev-expansion", Fabbrev_expansion, Sabb/ +Fabbrev_symbol c-src/abbrev.c /^DEFUN ("abbrev-symbol", Fabbrev_symbol, Sabbrev_sy/ +Fabort_recursive_edit c-src/emacs/src/keyboard.c /^DEFUN ("abort-recursive-edit", Fabort_recursive_ed/ +=/f ada-src/etags-test-for.ada /^ function "=" (L, R : System.Address) return Boo/ +Fails_t c-src/h.h 5 +/fakecolorsetup ps-src/rfc1245.ps /^\/fakecolorsetup {$/ +FASTCFLAGS make-src/Makefile /^FASTCFLAGS=-O3 -finline-functions -ffast-math -fun/ +FASTCFLAGSWARN make-src/Makefile /^FASTCFLAGSWARN=${WARNINGS} -Werror ${FASTCFLAGS}$/ fastctags make-src/Makefile /^fastctags:$/ fastetags make-src/Makefile /^fastetags:$/ -fastmap c-src/emacs/src/regex.h 355 fastmap_accurate c-src/emacs/src/regex.h 383 -fatal c-src/etags.c /^fatal (const char *s1, const char *s2)$/ +fastmap c-src/emacs/src/regex.h 355 +fast_string_match_ignore_case c-src/emacs/src/lisp.h /^fast_string_match_ignore_case (Lisp_Object regexp,/ fatala c.c /^void fatala () __attribute__ ((noreturn));$/ +fatal c-src/etags.c /^fatal (const char *s1, const char *s2)$/ +f c.c 145 +f c.c 156 +f c.c 168 +f c.c /^int f$/ +Fclear_abbrev_table c-src/abbrev.c /^DEFUN ("clear-abbrev-table", Fclear_abbrev_table, / +Fclear_this_command_keys c-src/emacs/src/keyboard.c /^DEFUN ("clear-this-command-keys", Fclear_this_comm/ +Fcommand_error_default_function c-src/emacs/src/keyboard.c /^DEFUN ("command-error-default-function", Fcommand_/ fconst forth-src/test-forth.fth /^3.1415e fconstant fconst$/ -fdHandler objc-src/Subprocess.m /^- fdHandler:(int)theFd$/ -fdHandler objc-src/Subprocess.m /^fdHandler (int theFd, id self)$/ +f cp-src/c.C /^A > A,int>::f(A* x) {}$/ +f cp-src/c.C /^A* f() {}$/ +f cp-src/c.C /^class B { void f() {} };$/ +f cp-src/c.C /^int A::f(A* x) {}$/ +f cp-src/c.C /^int f(A x) {}$/ +f cp-src/c.C /^ int f(){return 0;}; \/\/ first comment$/ +f cp-src/c.C /^ void f() {}$/ +f cp-src/fail.C /^int A::B::f() { return 2; }$/ +f cp-src/fail.C /^ int f() { return 5; }$/ +f c-src/c.c /^T f(){if(x){}$/ +f c-src/h.h 89 +Fcurrent_idle_time c-src/emacs/src/keyboard.c /^DEFUN ("current-idle-time", Fcurrent_idle_time, Sc/ +Fcurrent_input_mode c-src/emacs/src/keyboard.c /^DEFUN ("current-input-mode", Fcurrent_input_mode, / +Fdefine_abbrev c-src/abbrev.c /^DEFUN ("define-abbrev", Fdefine_abbrev, Sdefine_ab/ +Fdefine_abbrev_table c-src/abbrev.c /^DEFUN ("define-abbrev-table", Fdefine_abbrev_table/ +Fdefine_global_abbrev c-src/abbrev.c /^DEFUN ("define-global-abbrev", Fdefine_global_abbr/ +Fdefine_mode_abbrev c-src/abbrev.c /^DEFUN ("define-mode-abbrev", Fdefine_mode_abbrev, / fdefunkey c-src/etags.c 2409 fdefunname c-src/etags.c 2410 fdesc c-src/etags.c 201 fdesc c-src/etags.c 212 +fdHandler objc-src/Subprocess.m /^- fdHandler:(int)theFd$/ +fdHandler objc-src/Subprocess.m /^fdHandler (int theFd, id self)$/ +Fdiscard_input c-src/emacs/src/keyboard.c /^DEFUN ("discard-input", Fdiscard_input, Sdiscard_i/ fdp c-src/etags.c 217 +Fevent_convert_list c-src/emacs/src/keyboard.c /^DEFUN ("event-convert-list", Fevent_convert_list, / +Fevent_symbol_parse_modifiers c-src/emacs/src/keyboard.c /^DEFUN ("internal-event-symbol-parse-modifiers", Fe/ +Fexit_recursive_edit c-src/emacs/src/keyboard.c /^DEFUN ("exit-recursive-edit", Fexit_recursive_edit/ +Fexpand_abbrev c-src/abbrev.c /^DEFUN ("expand-abbrev", Fexpand_abbrev, Sexpand_ab/ ff cp-src/c.C /^ int ff(){return 1;};$/ +F_getit c-src/etags.c /^F_getit (FILE *inf)$/ +>field1 forth-src/test-forth.fth /^ 9 field >field1$/ +>field2 forth-src/test-forth.fth /^ 5 field >field2$/ field_of_play cp-src/conway.cpp 18 fignore c-src/etags.c 2416 -file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/ -file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/ -file tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/ -file tex-src/texinfo.tex /^\\let\\file=\\samp$/ -file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/ -file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/ -fileJoin php-src/lce_functions.php /^ function fileJoin()$/ file_end perl-src/htlmify-cystic /^sub file_end ()$/ file_index perl-src/htlmify-cystic 33 -file_tocs perl-src/htlmify-cystic 30 +fileJoin php-src/lce_functions.php /^ function fileJoin()$/ filename_is_absolute c-src/etags.c /^filename_is_absolute (char *fn)$/ filenames c-src/etags.c 196 +file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun file-of-tag (&optional relative)$/ +file-of-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar file-of-tag-function nil$/ +file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}%$/ +file tex-src/texinfo.tex /^\\def\\file##1{\\realbackslash file {##1}}$/ +file tex-src/texinfo.tex /^\\let\\file=\\indexdummyfont$/ +file tex-src/texinfo.tex /^\\let\\file=\\samp$/ +file_tocs perl-src/htlmify-cystic 30 +/fillprocs ps-src/rfc1245.ps /^\/fillprocs 32 array def$/ +FILTER make-src/Makefile /^FILTER=grep -v '\\.[Cchefy][lor]*,[1-9][0-9]*' || t/ +FINAL_FREE_BLOCKS c-src/emacs/src/gmalloc.c 135 +Finalize_Cond/p ada-src/2ataspri.adb /^ procedure Finalize_Cond (Cond : in out Conditio/ +Finalize_Cond/p ada-src/2ataspri.ads /^ procedure Finalize_Cond (Cond : in out Conditio/ +Finalize_Lock/p ada-src/2ataspri.adb /^ procedure Finalize_Lock (L : in out Lock) is$/ +Finalize_Lock/p ada-src/2ataspri.ads /^ procedure Finalize_Lock (L : in out Lock);$/ +FINALIZERP c-src/emacs/src/lisp.h /^FINALIZERP (Lisp_Object x)$/ +Finalize_TAS_Cell/p ada-src/2ataspri.adb /^ procedure Finalize_TAS_Cell (Cell : in out TAS_/ +Finalize_TAS_Cell/p ada-src/2ataspri.ads /^ procedure Finalize_TAS_Cell (Cell : in out TA/ finalout tex-src/texinfo.tex /^\\def\\finalout{\\overfullrule=0pt}$/ -find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/ +findcats prol-src/natded.prolog /^findcats([],Left,Left).$/ +find_entries c-src/etags.c /^find_entries (FILE *inf)$/ +findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/ find-tag-default-function el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-default-function nil$/ +find-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag (tagname &optional next-p regexp-p/ find-tag-history el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-history nil) ; Doc string?$/ find-tag-hook el-src/emacs/lisp/progmodes/etags.el /^(defcustom find-tag-hook nil$/ find-tag-in-order el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-in-order (pattern$/ @@ -2629,26 +1377,44 @@ find-tag-regexp-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-ta find-tag-search-function el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-search-function nil$/ find-tag-tag el-src/emacs/lisp/progmodes/etags.el /^(defun find-tag-tag (string)$/ find-tag-tag-order el-src/emacs/lisp/progmodes/etags.el /^(defvar find-tag-tag-order nil$/ -find_entries c-src/etags.c /^find_entries (FILE *inf)$/ find_user_signal_name c-src/emacs/src/keyboard.c /^find_user_signal_name (int sig)$/ -findcats prol-src/natded.prolog /^findcats([],Left,Left).$/ -findex tex-src/texinfo.tex /^\\def\\findex {\\fnindex}$/ finish_appendices perl-src/htlmify-cystic /^sub finish_appendices ()$/ finish_sections perl-src/htlmify-cystic /^sub finish_sections ()$/ finish_subsections perl-src/htlmify-cystic /^sub finish_subsections ()$/ finish_subsubsections perl-src/htlmify-cystic /^sub finish_subsubsections ()$/ finishtitlepage tex-src/texinfo.tex /^\\def\\finishtitlepage{%$/ finlist c-src/etags.c 2414 +Finput_pending_p c-src/emacs/src/keyboard.c /^DEFUN ("input-pending-p", Finput_pending_p, Sinput/ +Finsert_abbrev_table_description c-src/abbrev.c /^DEFUN ("insert-abbrev-table-description", Finsert_/ +First100Chars pas-src/common.pas /^procedure First100Chars; (*($/ first c-src/emacs/src/gmalloc.c 151 first tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/ fitchtreelist prol-src/natded.prolog /^fitchtreelist([]).$/ +FIXNUM_BITS c-src/emacs/src/lisp.h 252 +FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^#define FIXNUM_OVERFLOW_P(i) \\$/ +FIXNUM_OVERFLOW_P c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (EQ, bool, (Lisp_Object x, Lisp_O/ fixup_locale c-src/emacs/src/lisp.h /^INLINE void fixup_locale (void) {}$/ -flag c-src/getopt.h 83 flag2str pyt-src/server.py /^def flag2str(value, string):$/ +flag c-src/getopt.h 83 flistseen c-src/etags.c 2415 +FLOATP c-src/emacs/src/lisp.h /^# define FLOATP(x) lisp_h_FLOATP (x)$/ +FLOAT_TO_STRING_BUFSIZE c-src/emacs/src/lisp.h 3927 +/fl ps-src/rfc1245.ps /^\/fl { $/ flushcr tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else / flushleft tex-src/texinfo.tex /^\\def\\flushleft{%$/ flushright tex-src/texinfo.tex /^\\def\\flushright{%$/ +Fmake_abbrev_table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/ +/FMBEGINEPSF ps-src/rfc1245.ps /^\/FMBEGINEPSF { $/ +/FMBEGINPAGE ps-src/rfc1245.ps /^\/FMBEGINPAGE { $/ +/Fmcc ps-src/rfc1245.ps /^\/Fmcc {$/ +/FMDEFINEFONT ps-src/rfc1245.ps /^\/FMDEFINEFONT { $/ +/FMDOCUMENT ps-src/rfc1245.ps /^\/FMDOCUMENT { $/ +/FMENDEPSF ps-src/rfc1245.ps /^\/FMENDEPSF {$/ +/FMENDPAGE ps-src/rfc1245.ps /^\/FMENDPAGE {$/ +/FMLOCAL ps-src/rfc1245.ps /^\/FMLOCAL {$/ +/FMNORMALIZEGRAPHICS ps-src/rfc1245.ps /^\/FMNORMALIZEGRAPHICS { $/ +/FMVERSION ps-src/rfc1245.ps /^\/FMVERSION {$/ +/FMversion ps-src/rfc1245.ps /^\/FMversion (2.0) def $/ fn c-src/exit.c /^ void EXFUN((*fn[1]), (NOARGS));$/ fn c-src/exit.strange_suffix /^ void EXFUN((*fn[1]), (NOARGS));$/ fnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/ @@ -2657,74 +1423,125 @@ fnitemindex tex-src/texinfo.tex /^\\def\\fnitemindex #1{\\doind {fn}{\\code{#1}} fnx\deffnheader tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/ focus_set pyt-src/server.py /^ def focus_set(self):$/ folio tex-src/texinfo.tex /^\\def\\dosetq #1#2{{\\let\\folio=0 \\turnoffactive%$/ -folio tex-src/texinfo.tex /^{\\let\\folio=0% Expand all macros now EXCEPT \\folio/ folio tex-src/texinfo.tex /^{\\let\\folio=0%$/ +folio tex-src/texinfo.tex /^{\\let\\folio=0% Expand all macros now EXCEPT \\folio/ follow_key c-src/emacs/src/keyboard.c /^follow_key (Lisp_Object keymap, Lisp_Object key)$/ -fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/ fonts\rm tex-src/texinfo.tex /^ \\indexfonts\\rm \\tolerance=9500 \\advance\\baseline/ -foo c-src/h.h 18 +fonts tex-src/texinfo.tex /^\\obeyspaces \\obeylines \\ninett \\indexfonts \\rawbac/ +foo1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/ +foo2 ruby-src/test1.ru /^ alias_method ( :foo2, #cmmt$/ +foobar2_ c-src/h.h 16 +foobar2 c-src/h.h 20 +foobar c.c /^extern void foobar (void) __attribute__ ((section / +foobar c-src/c.c /^int foobar() {;}$/ +foo==bar el-src/TAGTEST.EL /^(defun foo==bar () (message "hi")) ; Bug#5624$/ +Foo::Bar perl-src/kai-test.pl /^package Foo::Bar;$/ foo c.c 150 foo c.c 166 foo c.c 167 foo c.c 178 foo c.c 189 -foo cp-src/c.C /^ foo() {$/ foo cp-src/c.C 68 foo cp-src/c.C 79 +foo cp-src/c.C /^ foo() {$/ foo cp-src/x.cc /^XX::foo()$/ +foo c-src/h.h 18 +(foo) forth-src/test-forth.fth /^: (foo) 1 ;$/ +foo forth-src/test-forth.fth /^: foo (foo) ;$/ foo f-src/entry.for /^ character*(*) function foo()$/ foo f-src/entry.strange /^ character*(*) function foo()$/ foo f-src/entry.strange_suffix /^ character*(*) function foo()$/ -foo forth-src/test-forth.fth /^: foo (foo) ;$/ +Foo perl-src/kai-test.pl /^package Foo;$/ foo php-src/ptest.php /^foo()$/ foo ruby-src/test1.ru /^ attr_reader :foo$/ foo! ruby-src/test1.ru /^ def foo!$/ -foo1 ruby-src/test1.ru /^ attr_reader(:foo1, :bar1, # comment$/ -foo2 ruby-src/test1.ru /^ alias_method ( :foo2, #cmmt$/ -foo==bar el-src/TAGTEST.EL /^(defun foo==bar () (message "hi")) ; Bug#5624$/ -foobar c-src/c.c /^int foobar() {;}$/ -foobar c.c /^extern void foobar (void) __attribute__ ((section / -foobar2 c-src/h.h 20 -foobar2_ c-src/h.h 16 -footnote tex-src/texinfo.tex /^\\long\\gdef\\footnote #1{\\global\\advance \\footnoteno/ footnotestyle tex-src/texinfo.tex /^\\let\\footnotestyle=\\comment$/ +footnote tex-src/texinfo.tex /^\\long\\gdef\\footnote #1{\\global\\advance \\footnoteno/ footnotezzz tex-src/texinfo.tex /^\\long\\gdef\\footnotezzz #1{\\insert\\footins{$/ +Fopen_dribble_file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/ foperator c-src/etags.c 2411 force_auto_save_soon c-src/emacs/src/keyboard.c /^force_auto_save_soon (void)$/ force_explicit_name c-src/etags.c 265 force_quit_count c-src/emacs/src/keyboard.c 10387 +FOR_EACH_ALIST_VALUE c-src/emacs/src/lisp.h /^#define FOR_EACH_ALIST_VALUE(head_var, list_var, v/ +FOR_EACH_TAIL c-src/emacs/src/lisp.h /^#define FOR_EACH_TAIL(hare, list, tortoise, n) \\$/ foreign_export merc-src/accumulator.m /^:- pragma foreign_export("C", unravel_univ(in, out/ -format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at / formatSize objc-src/PackInsp.m /^-(const char *)formatSize:(const char *)size inBuf/ +format tex-src/texinfo.tex /^\\def\\format{\\begingroup\\inENV %This group ends at / +Forth_help c-src/etags.c 573 +FORTHSRC make-src/Makefile /^FORTHSRC=test-forth.fth$/ +Forth_suffixes c-src/etags.c 571 +Forth_words c-src/etags.c /^Forth_words (FILE *inf)$/ +Fortran_functions c-src/etags.c /^Fortran_functions (FILE *inf)$/ +Fortran_help c-src/etags.c 579 +Fortran_suffixes c-src/etags.c 577 found c-src/emacs/src/lisp.h 2344 +Fposn_at_point c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-point", Fposn_at_point, Sposn_at_p/ +Fposn_at_x_y c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-x-y", Fposn_at_x_y, Sposn_at_x_y, / +/F ps-src/rfc1245.ps /^\/F { $/ fracas html-src/software.html /^Fracas$/ +/fraction ps-src/rfc1245.ps /^\/fraction \/currency \/guilsinglleft \/guilsinglright/ frag c-src/emacs/src/gmalloc.c 152 +_fraghead c-src/emacs/src/gmalloc.c 371 +/FrameDict ps-src/rfc1245.ps /^\/FrameDict 190 dict def $/ frame_local c-src/emacs/src/lisp.h 2341 -free c-src/emacs/src/gmalloc.c /^free (void *ptr)$/ +FRAMEP c-src/emacs/src/lisp.h /^FRAMEP (Lisp_Object a)$/ +FRC make-src/Makefile /^FRC:;$/ +Fread_key_sequence c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence", Fread_key_sequence, Sr/ +Fread_key_sequence_vector c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence-vector", Fread_key_seque/ +Frecent_keys c-src/emacs/src/keyboard.c /^DEFUN ("recent-keys", Frecent_keys, Srecent_keys, / +Frecursion_depth c-src/emacs/src/keyboard.c /^DEFUN ("recursion-depth", Frecursion_depth, Srecur/ +Frecursive_edit c-src/emacs/src/keyboard.c /^DEFUN ("recursive-edit", Frecursive_edit, Srecursi/ free c-src/emacs/src/gmalloc.c 166 -free c-src/emacs/src/gmalloc.c 1723 +free c-src/emacs/src/gmalloc.c 1726 free c-src/emacs/src/gmalloc.c 67 free c-src/emacs/src/gmalloc.c 72 +_free c-src/emacs/src/gmalloc.c /^_free (void *ptr)$/ +free c-src/emacs/src/gmalloc.c /^free (void *ptr)$/ free_fdesc c-src/etags.c /^free_fdesc (register fdesc *fdp)$/ +FREEFLOOD c-src/emacs/src/gmalloc.c 1866 free_for prol-src/natded.prolog /^free_for(var(_),_,_).$/ +freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/ +_free_internal c-src/emacs/src/gmalloc.c /^_free_internal (void *ptr)$/ +_free_internal_nolock c-src/emacs/src/gmalloc.c /^_free_internal_nolock (void *ptr)$/ free_regexps c-src/etags.c /^free_regexps (void)$/ free_tree c-src/etags.c /^free_tree (register node *np)$/ free_var prol-src/natded.prolog /^free_var(var(V),var(V)).$/ -freehook c-src/emacs/src/gmalloc.c /^freehook (void *ptr)$/ frenchspacing tex-src/texinfo.tex /^\\def\\frenchspacing{\\sfcode46=1000 \\sfcode63=1000 \\/ frenchspacing tex-src/texinfo.tex /^\\let\\frenchspacing=\\relax%$/ +/freq ps-src/rfc1245.ps /^\/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} i/ +Freset_this_command_lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/ fresh_vars prol-src/natded.prolog /^fresh_vars(var(V),var(V)).$/ +Fset_input_interrupt_mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/ +Fset_input_meta_mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/ +Fset_input_mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/ +Fset_output_flow_control c-src/emacs/src/keyboard.c /^DEFUN ("set-output-flow-control", Fset_output_flow/ +Fset_quit_char c-src/emacs/src/keyboard.c /^DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_/ +FSRC make-src/Makefile /^FSRC=entry.for entry.strange_suffix entry.strange$/ fstartlist c-src/etags.c 2413 +Fsuspend_emacs c-src/emacs/src/keyboard.c /^DEFUN ("suspend-emacs", Fsuspend_emacs, Ssuspend_e/ ftable tex-src/texinfo.tex /^\\def\\ftable{\\begingroup\\inENV\\obeylines\\obeyspaces/ ftablex tex-src/texinfo.tex /^\\gdef\\ftablex #1^^M{%$/ -func c-src/emacs/src/lisp.h /^ void (*func) (Lisp_Object);$/ -func c-src/emacs/src/lisp.h /^ void (*func) (int);$/ -func c-src/emacs/src/lisp.h /^ void (*func) (void *);$/ -func c-src/emacs/src/lisp.h /^ void (*func) (void);$/ +F_takeprec c-src/etags.c /^F_takeprec (void)$/ +Fthis_command_keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/ +Fthis_command_keys_vector c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys-vector", Fthis_command_k/ +Fthis_single_command_keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-keys", Fthis_single_co/ +Fthis_single_command_raw_keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-raw-keys", Fthis_singl/ +Ftop_level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, / +Ftrack_mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/ +FUN0 y-src/parse.y /^yylex FUN0()$/ +FUN1 y-src/parse.y /^str_to_col FUN1(char **,str)$/ +FUN1 y-src/parse.y /^yyerror FUN1(char *, s)$/ +FUN2 y-src/parse.y /^make_list FUN2(YYSTYPE, car, YYSTYPE, cdr)$/ +FUN2 y-src/parse.y /^parse_cell_or_range FUN2(char **,ptr, struct rng */ func1 c.c /^int func1$/ func2 c.c /^int func2 (a,b$/ -func_key_syms c-src/emacs/src/keyboard.c 4626 funcboo c.c /^bool funcboo ()$/ +func c-src/emacs/src/lisp.h /^ void (*func) (int);$/ +func c-src/emacs/src/lisp.h /^ void (*func) (Lisp_Object);$/ +func c-src/emacs/src/lisp.h /^ void (*func) (void *);$/ +func c-src/emacs/src/lisp.h /^ void (*func) (void);$/ +func_key_syms c-src/emacs/src/keyboard.c 4626 funcpointer c-src/emacs/src/lisp.h 2126 funcptr c-src/h.h /^ fu int (*funcptr) (void *ptr);$/ function c-src/emacs/src/lisp.h 1685 @@ -2732,8 +1549,12 @@ function c-src/emacs/src/lisp.h 2197 function c-src/emacs/src/lisp.h 2985 function c-src/emacs/src/lisp.h 694 function c-src/etags.c 194 -functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/ +FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 4766 +FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 5061 functionparens tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/ +FUNCTIONP c-src/emacs/src/lisp.h /^FUNCTIONP (Lisp_Object obj)$/ +functionp c-src/emacs/src/lisp.h /^functionp (Lisp_Object object)$/ +Funexpand_abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/ fval forth-src/test-forth.fth /^fconst fvalue fval$/ fvar forth-src/test-forth.fth /^fvariable fvar$/ fvdef c-src/etags.c 2418 @@ -2742,79 +1563,138 @@ fvnameseen c-src/etags.c 2412 fvnone c-src/etags.c 2408 fwd c-src/emacs/src/lisp.h 2346 fwd c-src/emacs/src/lisp.h 690 -g cp-src/c.C /^ int g(){return 2;};$/ +Fx_get_selection_internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selectio/ +Fx_get_selection_internal c.c /^ Fx_get_selection_internal, Sx_get_selection/ +Fy_get_selection_internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/ galileo html-src/software.html /^GaliLEO$/ +GatherControls pyt-src/server.py /^ def GatherControls(self):$/ gather pyt-src/server.py /^ def gather(self):$/ +GCALIGNED c-src/emacs/src/lisp.h 288 +GCALIGNED c-src/emacs/src/lisp.h 290 +GCALIGNMENT c-src/emacs/src/lisp.h 243 gc_aset c-src/emacs/src/lisp.h /^gc_aset (Lisp_Object array, ptrdiff_t idx, Lisp_Ob/ +GC_MAKE_GCPROS_NOOPS c-src/emacs/src/lisp.h 3172 gcmarkbit c-src/emacs/src/lisp.h 1974 gcmarkbit c-src/emacs/src/lisp.h 1981 gcmarkbit c-src/emacs/src/lisp.h 2035 gcmarkbit c-src/emacs/src/lisp.h 2113 gcmarkbit c-src/emacs/src/lisp.h 2204 gcmarkbit c-src/emacs/src/lisp.h 656 +GC_MARK_STACK_CHECK_GCPROS c-src/emacs/src/lisp.h 3173 +GC_MARK_STACK c-src/emacs/src/lisp.h 3177 +GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(a) \\$/ +GCPRO1 c-src/emacs/src/lisp.h /^#define GCPRO1(varname) ((void) gcpro1)$/ +GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(a, b) \\$/ +GCPRO2 c-src/emacs/src/lisp.h /^#define GCPRO2(varname1, varname2) ((void) gcpro2,/ +GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(a, b, c) \\$/ +GCPRO3 c-src/emacs/src/lisp.h /^#define GCPRO3(varname1, varname2, varname3) \\$/ +GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(a, b, c, d) \\$/ +GCPRO4 c-src/emacs/src/lisp.h /^#define GCPRO4(varname1, varname2, varname3, varna/ +GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(a, b, c, d, e) \\$/ +GCPRO5 c-src/emacs/src/lisp.h /^#define GCPRO5(varname1, varname2, varname3, varna/ +GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(a, b, c, d, e, f) \\$/ +GCPRO6 c-src/emacs/src/lisp.h /^#define GCPRO6(varname1, varname2, varname3, varna/ +GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g) \\$/ +GCPRO7 c-src/emacs/src/lisp.h /^#define GCPRO7(a, b, c, d, e, f, g) (GCPRO6 (a, b,/ gcpro c-src/emacs/src/lisp.h 3042 gcpro c-src/emacs/src/lisp.h 3132 -gen_help_event c-src/emacs/src/keyboard.c /^gen_help_event (Lisp_Object help, Lisp_Object fram/ +g cp-src/c.C /^ int g(){return 2;};$/ +GCTYPEBITS c-src/emacs/src/lisp.h 67 +GCTYPEBITS c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (int, GCTYPEBITS)$/ +GC_USE_GCPROS_AS_BEFORE c-src/emacs/src/lisp.h 3171 +GC_USE_GCPROS_CHECK_ZOMBIES c-src/emacs/src/lisp.h 3174 genalgorithm html-src/algrthms.html /^Generating the Data<\/font><\/i><\/b>$/ generate_warning merc-src/accumulator.m /^:- pred generate_warning(module_info::in, prog_var/ generate_warnings merc-src/accumulator.m /^:- pred generate_warnings(module_info::in, prog_va/ +~generic_object cp-src/clheir.cpp /^generic_object::~generic_object(void)$/ generic_object cp-src/clheir.cpp /^generic_object::generic_object(void)$/ generic_object cp-src/clheir.hpp 13 +GENERIC_PTR y-src/cccp.y 56 +GENERIC_PTR y-src/cccp.y 58 +gen_help_event c-src/emacs/src/keyboard.c /^gen_help_event (Lisp_Object help, Lisp_Object fram/ +GEQ y-src/cccp.c 15 getArchs objc-src/PackInsp.m /^-(void)getArchs$/ -getDomainNames php-src/lce_functions.php /^ function getDomainNames()$/ -getFoo lua-src/test.lua /^function Cube.data.getFoo ()$/ -getPOReader php-src/lce_functions.php /^ function &getPOReader($domain)$/ -getPath objc-src/PackInsp.m /^-(const char *)getPath:(char *)buf forType:(const / -getPos lua-src/test.lua /^function Circle.getPos ()$/ -getPos lua-src/test.lua /^function Rectangle.getPos ()$/ -getTextDomains php-src/lce_functions.php /^ function getTextDomains($lines)$/ +getcjmp c-src/emacs/src/keyboard.c 147 get_compressor_from_suffix c-src/etags.c /^get_compressor_from_suffix (char *file, char **ext/ get_contiguous_space c-src/emacs/src/gmalloc.c /^get_contiguous_space (ptrdiff_t size, void *positi/ get_current_dir_name c-src/emacs/src/gmalloc.c 33 +getDomainNames php-src/lce_functions.php /^ function getDomainNames()$/ +getFoo lua-src/test.lua /^function Cube.data.getFoo ()$/ get_input_pending c-src/emacs/src/keyboard.c /^get_input_pending (int flags)$/ get_language_from_filename c-src/etags.c /^get_language_from_filename (char *file, int case_s/ get_language_from_interpreter c-src/etags.c /^get_language_from_interpreter (char *interpreter)$/ get_language_from_langname c-src/etags.c /^get_language_from_langname (const char *name)$/ +GetLayerByName lua-src/allegro.lua /^function GetLayerByName (name)$/ get_layer_by_name lua-src/allegro.lua /^local function get_layer_by_name (sprite, layer, n/ -get_tag c-src/etags.c /^get_tag (register char *bp, char **namepp)$/ -get_word c-src/tab.c /^static char *get_word(char **str, char delim)$/ -getcjmp c-src/emacs/src/keyboard.c 147 -getopt perl-src/yagrip.pl /^sub getopt {$/ -getopt.o make-src/Makefile /^getopt.o: emacs\/lib-src\/getopt.c$/ +GetNameList pas-src/common.pas /^function GetNameList; (* : BinNodePointer;*)$/ +GetNewNameListNode pas-src/common.pas /^function GetNewNameListNode;(*($/ getopt1.o make-src/Makefile /^getopt1.o: emacs\/lib-src\/getopt1.c$/ +_GETOPT_H c-src/getopt.h 19 +GETOPTOBJS make-src/Makefile /^GETOPTOBJS= #getopt.o getopt1.o$/ +getopt.o make-src/Makefile /^getopt.o: emacs\/lib-src\/getopt.c$/ +getopt perl-src/yagrip.pl /^sub getopt {$/ +Get_Own_Priority/f ada-src/2ataspri.adb /^ function Get_Own_Priority return System.Any_Pri/ +Get_Own_Priority/f ada-src/2ataspri.ads /^ function Get_Own_Priority return System.Any_Pri/ +getPath objc-src/PackInsp.m /^-(const char *)getPath:(char *)buf forType:(const / +getPOReader php-src/lce_functions.php /^ function &getPOReader($domain)$/ +getPos lua-src/test.lua /^function Circle.getPos ()$/ +getPos lua-src/test.lua /^function Rectangle.getPos ()$/ +Get_Priority/f ada-src/2ataspri.adb /^ function Get_Priority (T : TCB_Ptr) return Syst/ +Get_Priority/f ada-src/2ataspri.ads /^ function Get_Priority (T : TCB_Ptr) return Syst/ getptys objc-src/Subprocess.m /^getptys (int *master, int *slave)$/ +get_tag c-src/etags.c /^get_tag (register char *bp, char **namepp)$/ +getTextDomains php-src/lce_functions.php /^ function getTextDomains($lines)$/ gettext php-src/lce_functions.php /^ function gettext($msgid)$/ +GetTextRef pas-src/common.pas /^function GetTextRef;(*($/ +GetUniqueLayerName lua-src/allegro.lua /^function GetUniqueLayerName ()$/ +get_word c-src/tab.c /^static char *get_word(char **str, char delim)$/ +GE y-src/parse.c 8 ggg c-src/h.h 10 ghi1 c-src/h.h 36 ghi2 c-src/h.h 39 giallo cp-src/c.C 40 glider cp-src/conway.cpp /^void glider(int x, int y)$/ gloggingall tex-src/texinfo.tex /^\\def\\gloggingall{\\begingroup \\globaldefs = 1 \\logg/ +/gn ps-src/rfc1245.ps /^\/gn { $/ gnu html-src/software.html /^Free software that I wrote for the GNU project or / +_GNU_SOURCE c-src/etags.c 94 gobble_input c-src/emacs/src/keyboard.c /^gobble_input (void)$/ goto-tag-location-function el-src/emacs/lisp/progmodes/etags.el /^(defvar goto-tag-location-function nil$/ goto_xy cp-src/screen.cpp /^void goto_xy(unsigned char x, unsigned char y)$/ +/G ps-src/rfc1245.ps /^\/G { $/ +/graymode ps-src/rfc1245.ps /^\/graymode true def$/ +/grayness ps-src/rfc1245.ps /^\/grayness {$/ +GREEN cp-src/screen.hpp 14 group tex-src/texinfo.tex /^\\def\\group{\\begingroup$/ -gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/ +GROW_RAW_KEYBUF c-src/emacs/src/keyboard.c 119 gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}%$/ -handleList pyt-src/server.py /^ def handleList(self, event):$/ -handleNew pyt-src/server.py /^ def handleNew(self, event):$/ +gtr tex-src/texinfo.tex /^\\def\\gtr{\\realbackslash gtr}$/ +/guillemotleft ps-src/rfc1245.ps /^\/guillemotleft \/guillemotright \/ellipsis \/.notdef / handle_async_input c-src/emacs/src/keyboard.c /^handle_async_input (void)$/ handle_input_available_signal c-src/emacs/src/keyboard.c /^handle_input_available_signal (int sig)$/ handle_interrupt c-src/emacs/src/keyboard.c /^handle_interrupt (bool in_signal_handler)$/ handle_interrupt_signal c-src/emacs/src/keyboard.c /^handle_interrupt_signal (int sig)$/ -handle_user_signal c-src/emacs/src/keyboard.c /^handle_user_signal (int sig)$/ +handleList pyt-src/server.py /^ def handleList(self, event):$/ +handleNew pyt-src/server.py /^ def handleNew(self, event):$/ handler c-src/emacs/src/lisp.h 3023 handlertype c-src/emacs/src/lisp.h 3021 +handle_user_signal c-src/emacs/src/keyboard.c /^handle_user_signal (int sig)$/ has_arg c-src/getopt.h 82 hash c-src/emacs/src/lisp.h 1843 hash c-src/etags.c /^hash (const char *str, int len)$/ -hash_table_test c-src/emacs/src/lisp.h 1805 hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/ -hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/ +HASH_HASH c-src/emacs/src/lisp.h /^HASH_HASH (struct Lisp_Hash_Table *h, ptrdiff_t id/ +HASH_INDEX c-src/emacs/src/lisp.h /^HASH_INDEX (struct Lisp_Hash_Table *h, ptrdiff_t i/ +HASH_KEY c-src/emacs/src/lisp.h /^HASH_KEY (struct Lisp_Hash_Table *h, ptrdiff_t idx/ +HASH_NEXT c-src/emacs/src/lisp.h /^HASH_NEXT (struct Lisp_Hash_Table *h, ptrdiff_t id/ +HASH_TABLE_P c-src/emacs/src/lisp.h /^HASH_TABLE_P (Lisp_Object a)$/ +HASH_TABLE_SIZE c-src/emacs/src/lisp.h /^HASH_TABLE_SIZE (struct Lisp_Hash_Table *h)$/ +hash_table_test c-src/emacs/src/lisp.h 1805 +HASH_VALUE c-src/emacs/src/lisp.h /^HASH_VALUE (struct Lisp_Hash_Table *h, ptrdiff_t i/ hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/ -hdr c-src/emacs/src/gmalloc.c 1865 -head_table c-src/emacs/src/keyboard.c 11027 +hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/ +HAVE_NTGUI c-src/etags.c 116 +hdr c-src/emacs/src/gmalloc.c 1868 header c-src/emacs/src/lisp.h 1371 header c-src/emacs/src/lisp.h 1388 header c-src/emacs/src/lisp.h 1581 @@ -2822,24 +1702,52 @@ header c-src/emacs/src/lisp.h 1610 header c-src/emacs/src/lisp.h 1672 header c-src/emacs/src/lisp.h 1826 header_size c-src/emacs/src/lisp.h 1471 -heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/ +HEADINGSafter tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/ +HEADINGSdoubleafter tex-src/texinfo.tex /^\\let\\HEADINGSdoubleafter=\\HEADINGSafter$/ +HEADINGSdouble tex-src/texinfo.tex /^\\def\\HEADINGSdouble{$/ +HEADINGSdoublex tex-src/texinfo.tex /^\\def\\HEADINGSdoublex{%$/ +HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSafter{\\let\\HEADINGShook=\\HEADINGSdoub/ +HEADINGShook tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/ +HEADINGShook tex-src/texinfo.tex /^\\let\\HEADINGShook=\\relax$/ +HEADINGSoff tex-src/texinfo.tex /^\\def\\HEADINGSoff{$/ +HEADINGSon tex-src/texinfo.tex /^\\def\\HEADINGSon{\\HEADINGSdouble}$/ +HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSdouble}}$/ +HEADINGSon tex-src/texinfo.tex /^\\global\\def\\HEADINGSon{\\HEADINGSsingle}}$/ +HEADINGSsingleafter tex-src/texinfo.tex /^\\def\\HEADINGSsingleafter{\\let\\HEADINGShook=\\HEADIN/ +HEADINGSsingle tex-src/texinfo.tex /^\\def\\HEADINGSsingle{$/ +HEADINGSsinglex tex-src/texinfo.tex /^\\def\\HEADINGSsinglex{%$/ headings tex-src/texinfo.tex /^\\def\\headings #1 {\\csname HEADINGS#1\\endcsname}$/ +heading tex-src/texinfo.tex /^\\def\\heading{\\parsearg\\secheadingi}$/ +head_table c-src/emacs/src/keyboard.c 11027 +_heapbase c-src/emacs/src/gmalloc.c 356 +HEAP c-src/emacs/src/gmalloc.c 131 +_heapindex c-src/emacs/src/gmalloc.c 365 +_heapinfo c-src/emacs/src/gmalloc.c 359 +_heaplimit c-src/emacs/src/gmalloc.c 368 heapsize c-src/emacs/src/gmalloc.c 362 hello scm-src/test.scm /^(define hello "Hello, Emacs!")$/ hello scm-src/test.scm /^(set! hello "Hello, world!")$/ hello-world scm-src/test.scm /^(define (hello-world)$/ -help c-src/etags.c 193 -helpPanel objcpp-src/SimpleCalc.M /^- helpPanel:sender$/ help_char_p c-src/emacs/src/keyboard.c /^help_char_p (Lisp_Object c)$/ +help c-src/etags.c 193 help_form_saved_window_configs c-src/emacs/src/keyboard.c 2156 +helpPanel objcpp-src/SimpleCalc.M /^- helpPanel:sender$/ helpwin pyt-src/server.py /^def helpwin(helpdict):$/ hide_cursor cp-src/screen.cpp /^void hide_cursor(void)$/ hlds merc-src/accumulator.m /^:- import_module hlds.$/ +/home/www/pub/etags.c.gz make-src/Makefile /^\/home\/www\/pub\/etags.c.gz: etags.c$/ +/home/www/pub/software/unix/etags.tar.gz make-src/Makefile /^\/home\/www\/pub\/software\/unix\/etags.tar.gz: Makefile/ +/H ps-src/rfc1245.ps /^\/H { $/ hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makefootline}}$/ +hsize tex-src/texinfo.tex /^{\\let\\hsize=\\pagewidth \\makefootline}}}%$/ hsize tex-src/texinfo.tex /^ {\\let\\hsize=\\pagewidth \\makeheadline}$/ hsize tex-src/texinfo.tex /^\\shipout\\vbox{{\\let\\hsize=\\pagewidth \\makeheadline/ -hsize tex-src/texinfo.tex /^{\\let\\hsize=\\pagewidth \\makefootline}}}%$/ +HTML_help c-src/etags.c 584 +HTML_labels c-src/etags.c /^HTML_labels (FILE *inf)$/ +HTMLSRC make-src/Makefile /^HTMLSRC=softwarelibero.html index.shtml algrthms.h/ +HTML_suffixes c-src/etags.c 582 htmltreelist prol-src/natded.prolog /^htmltreelist([]).$/ +/hx ps-src/rfc1245.ps /^\/hx { $/ hybrid_aligned_alloc c-src/emacs/src/gmalloc.c /^hybrid_aligned_alloc (size_t alignment, size_t siz/ hybrid_calloc c-src/emacs/src/gmalloc.c /^hybrid_calloc (size_t nmemb, size_t size)$/ hybrid_free c-src/emacs/src/gmalloc.c /^hybrid_free (void *ptr)$/ @@ -2847,59 +1755,58 @@ hybrid_get_current_dir_name c-src/emacs/src/gmalloc.c /^hybrid_get_current_dir_n hybrid_malloc c-src/emacs/src/gmalloc.c /^hybrid_malloc (size_t size)$/ hybrid_realloc c-src/emacs/src/gmalloc.c /^hybrid_realloc (void *ptr, size_t size)$/ hypothetical_mem prol-src/natded.prolog /^hypothetical_mem(fi(N),Ass,_):-$/ +/iacute ps-src/rfc1245.ps /^\/iacute \/igrave \/icircumflex \/idieresis \/ntilde \/o/ +ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/ +ialpage tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/ +ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/ +ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/ +ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/ +ialpage tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/ +i c.c 169 +/Icircumflex ps-src/rfc1245.ps /^\/Icircumflex \/Idieresis \/Igrave \/Oacute \/Ocircumfl/ +i cp-src/c.C 132 +/ic ps-src/rfc1245.ps /^\/ic [ $/ i c-src/c.c 2 i c-src/emacs/src/lisp.h 4673 i c-src/emacs/src/lisp.h 4679 i c-src/emacs/src/lisp.h 567 -i c.c 169 -i cp-src/c.C 132 -i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/ -i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/ -i tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ -i tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/ -i tex-src/texinfo.tex /^\\let\\i=\\smartitalic$/ -ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\pa/ -ialpage tex-src/texinfo.tex /^ \\availdimen@=\\pageheight \\advance\\availdimen@ by/ -ialpage tex-src/texinfo.tex /^ \\dimen@=\\pageheight \\advance\\dimen@ by-\\ht\\parti/ -ialpage tex-src/texinfo.tex /^ \\output={\\global\\setbox\\partialpage=$/ -ialpage tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/ -ialpage tex-src/texinfo.tex /^\\newbox\\partialpage$/ identify_goal_type merc-src/accumulator.m /^:- pred identify_goal_type(pred_id::in, proc_id::i/ identify_out_and_out_prime merc-src/accumulator.m /^:- pred identify_out_and_out_prime(module_info::in/ identify_recursive_calls merc-src/accumulator.m /^:- pred identify_recursive_calls(pred_id::in, proc/ idx c-src/emacs/src/lisp.h 3150 -ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/ +IEEE_FLOATING_POINT c-src/emacs/src/lisp.h 2415 ifclearfail tex-src/texinfo.tex /^\\def\\ifclearfail{\\begingroup\\ignoresections\\ifclea/ ifclearfailxxx tex-src/texinfo.tex /^\\long\\def\\ifclearfailxxx #1\\end ifclear{\\endgroup\\/ +ifclear tex-src/texinfo.tex /^\\def\\ifclear{\\begingroup\\ignoresections\\parsearg\\i/ ifclearxxx tex-src/texinfo.tex /^\\def\\ifclearxxx #1{\\endgroup$/ ifinfo tex-src/texinfo.tex /^\\def\\ifinfo{\\begingroup\\ignoresections\\ifinfoxxx}$/ ifinfoxxx tex-src/texinfo.tex /^\\long\\def\\ifinfoxxx #1\\end ifinfo{\\endgroup\\ignore/ -ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/ ifsetfail tex-src/texinfo.tex /^\\def\\ifsetfail{\\begingroup\\ignoresections\\ifsetfai/ ifsetfailxxx tex-src/texinfo.tex /^\\long\\def\\ifsetfailxxx #1\\end ifset{\\endgroup\\igno/ +ifset tex-src/texinfo.tex /^\\def\\ifset{\\begingroup\\ignoresections\\parsearg\\ifs/ ifsetxxx tex-src/texinfo.tex /^\\def\\ifsetxxx #1{\\endgroup$/ iftex tex-src/texinfo.tex /^\\def\\iftex{}$/ ifusingtt tex-src/texinfo.tex /^\\def\\ifusingtt#1#2{\\ifdim \\fontdimen3\\the\\font=0pt/ -ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/ ignore_case c-src/etags.c 266 ignore_mouse_drag_p c-src/emacs/src/keyboard.c 1256 ignoresections tex-src/texinfo.tex /^\\def\\ignoresections{%$/ +ignore tex-src/texinfo.tex /^\\def\\ignore{\\begingroup\\ignoresections$/ ignorexxx tex-src/texinfo.tex /^\\long\\def\\ignorexxx #1\\end ignore{\\endgroup\\ignore/ ii tex-src/texinfo.tex /^\\def\\ii#1{{\\it #1}} % italic font$/ +IMAGEP c-src/emacs/src/lisp.h /^IMAGEP (Lisp_Object x)$/ immediate_quit c-src/emacs/src/keyboard.c 174 impatto html-src/softwarelibero.html /^Impatto pratico del software libero$/ implementation merc-src/accumulator.m /^:- implementation.$/ implicitmath tex-src/texinfo.tex /^\\let\\implicitmath = $$/ -inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/ -in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/ inattribute c-src/etags.c 2400 inc cp-src/Range.h /^ double inc (void) const { return rng_inc; }$/ +/inch ps-src/rfc1245.ps /^\/inch {72 mul} def$/ include tex-src/texinfo.tex /^\\def\\include{\\parsearg\\includezzz}$/ includezzz tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/ indbf tex-src/texinfo.tex /^\\let\\indbf=\\indrm$/ -index c-src/emacs/src/lisp.h 1856 indexbackslash tex-src/texinfo.tex /^ \\def\\indexbackslash{\\rawbackslashxx}$/ indexbackslash tex-src/texinfo.tex /^\\let\\indexbackslash=0 %overridden during \\printin/ +index c-src/emacs/src/lisp.h 1856 indexdotfill tex-src/texinfo.tex /^\\def\\indexdotfill{\\cleaders$/ indexdummies tex-src/texinfo.tex /^\\def\\indexdummies{%$/ indexdummydots tex-src/texinfo.tex /^\\def\\indexdummydots{...}$/ @@ -2913,70 +1820,104 @@ indsc tex-src/texinfo.tex /^\\let\\indsc=\\indrm$/ indsf tex-src/texinfo.tex /^\\let\\indsf=\\indrm$/ indsl tex-src/texinfo.tex /^\\let\\indsl=\\indit$/ indtt tex-src/texinfo.tex /^\\let\\indtt=\\ninett$/ +inENV tex-src/texinfo.tex /^\\newif\\ifENV \\ENVfalse \\def\\inENV{\\ifENV\\relax\\els/ infabsdir c-src/etags.c 206 infabsname c-src/etags.c 205 infiles make-src/Makefile /^infiles = $(filter-out ${NONSRCS},${SRCS}) srclist/ infname c-src/etags.c 204 -info c-src/emacs/src/gmalloc.c 157 -infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/ -infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/ infoappendixsec tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/ infoappendixsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/ infoappendixsubsubsec tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/ +infoappendix tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/ infochapter tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/ +info c-src/emacs/src/gmalloc.c 157 +infoPanel objcpp-src/SimpleCalc.M /^- infoPanel:sender$/ inforef tex-src/texinfo.tex /^\\def\\inforef #1{\\inforefzzz #1,,,,**}$/ inforefzzz tex-src/texinfo.tex /^\\def\\inforefzzz #1,#2,#3,#4**{See Info file \\file{/ infosection tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/ infosubsection tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/ infosubsubsection tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/ infotop tex-src/texinfo.tex /^\\def\\infotop{\\parsearg\\unnumberedzzz}$/ -infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/ infounnumberedsec tex-src/texinfo.tex /^\\def\\infounnumberedsec{\\parsearg\\unnumberedseczzz}/ infounnumberedsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsec{\\parsearg\\unnumberedsubs/ infounnumberedsubsubsec tex-src/texinfo.tex /^\\def\\infounnumberedsubsubsec{\\parsearg\\unnumbereds/ -init c-src/etags.c /^init (void)$/ -init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/ -init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/ -init objcpp-src/SimpleCalc.M /^- init$/ -init_control c.c 239 -init_kboard c-src/emacs/src/keyboard.c /^init_kboard (KBOARD *kb, Lisp_Object type)$/ -init_keyboard c-src/emacs/src/keyboard.c /^init_keyboard (void)$/ -init_registry cp-src/clheir.cpp /^void init_registry(void)$/ -init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/ +infounnumbered tex-src/texinfo.tex /^\\def\\infounnumbered{\\parsearg\\unnumberedzzz}$/ inita c.c /^static void inita () {}$/ initb c.c /^static void initb () {}$/ -initial tex-src/texinfo.tex /^\\def\\initial #1{%$/ -initial_kboard c-src/emacs/src/keyboard.c 84 -initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/ +init_control c.c 239 +init c-src/etags.c /^init (void)$/ +Initialize_Cond/p ada-src/2ataspri.adb /^ procedure Initialize_Cond (Cond : in out Condit/ +Initialize_Cond/p ada-src/2ataspri.ads /^ procedure Initialize_Cond (Cond : in out Condit/ initialize_goal_store merc-src/accumulator.m /^:- func initialize_goal_store(list(hlds_goal), ins/ +Initialize_LL_Tasks/p ada-src/2ataspri.adb /^ procedure Initialize_LL_Tasks (T : TCB_Ptr) is$/ +Initialize_LL_Tasks/p ada-src/2ataspri.ads /^ procedure Initialize_LL_Tasks (T : TCB_Ptr);$/ +Initialize_Lock/p ada-src/2ataspri.adb /^ procedure Initialize_Lock$/ +Initialize_Lock/p ada-src/2ataspri.ads /^ procedure Initialize_Lock (Prio : System.Any_Pr/ +initialize-new-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun initialize-new-tags-table ()$/ initialize_random_junk y-src/cccp.y /^initialize_random_junk ()$/ -input-pending-p c-src/emacs/src/keyboard.c /^DEFUN ("input-pending-p", Finput_pending_p, Sinput/ +InitializeStringPackage pas-src/common.pas /^procedure InitializeStringPackage;$/ +Initialize_TAS_Cell/p ada-src/2ataspri.adb /^ procedure Initialize_TAS_Cell (Cell : out TAS_C/ +Initialize_TAS_Cell/p ada-src/2ataspri.ads /^ procedure Initialize_TAS_Cell (Cell : out TA/ +initial_kboard c-src/emacs/src/keyboard.c 84 +initial tex-src/texinfo.tex /^\\def\\initial #1{%$/ +init_kboard c-src/emacs/src/keyboard.c /^init_kboard (KBOARD *kb, Lisp_Object type)$/ +init_keyboard c-src/emacs/src/keyboard.c /^init_keyboard (void)$/ +InitNameList pas-src/common.pas /^procedure InitNameList;$/ +InitNameStringPool pas-src/common.pas /^procedure InitNameStringPool;$/ +init objcpp-src/SimpleCalc.M /^- init$/ +init objc-src/Subprocess.m /^ andStdErr:(BOOL)wantsStdErr$/ +init objc-src/Subprocess.m /^- init:(const char *)subprocessString$/ +__init__ pyt-src/server.py /^ def __init__(self):$/ +__init__ pyt-src/server.py /^ def __init__(self, host, sitelist, master=None/ +__init__ pyt-src/server.py /^ def __init__(self, master=None):$/ +__init__ pyt-src/server.py /^ def __init__(self, Master, text, textvar, widt/ +__init__ pyt-src/server.py /^ def __init__(self, newlegend, list, editor, ma/ +__init__ pyt-src/server.py /^ def __init__(self, user, userlist, master=None/ +init_registry cp-src/clheir.cpp /^void init_registry(void)$/ +init_tool_bar_items c-src/emacs/src/keyboard.c /^init_tool_bar_items (Lisp_Object reuse)$/ +Inner1/b ada-src/etags-test-for.ada /^ package body Inner1 is$/ +Inner1/b ada-src/waroquiers.ada /^ package body Inner1 is$/ +Inner1/s ada-src/etags-test-for.ada /^ package Inner1 is$/ +Inner1/s ada-src/waroquiers.ada /^ package Inner1 is$/ +Inner2/b ada-src/etags-test-for.ada /^ package body Inner2 is$/ +Inner2/b ada-src/waroquiers.ada /^ package body Inner2 is$/ +Inner2/s ada-src/etags-test-for.ada /^ package Inner2 is$/ +Inner2/s ada-src/waroquiers.ada /^ package Inner2 is$/ input_available_clear_time c-src/emacs/src/keyboard.c 324 +INPUT_EVENT_POS_MAX c-src/emacs/src/keyboard.c 3698 +INPUT_EVENT_POS_MIN c-src/emacs/src/keyboard.c 3701 input_pending c-src/emacs/src/keyboard.c 239 +input-pending-p c-src/emacs/src/keyboard.c /^DEFUN ("input-pending-p", Finput_pending_p, Sinput/ input_polling_used c-src/emacs/src/keyboard.c /^input_polling_used (void)$/ input_was_pending c-src/emacs/src/keyboard.c 287 insert-abbrev-table-description c-src/abbrev.c /^DEFUN ("insert-abbrev-table-description", Finsert_/ insertion_type c-src/emacs/src/lisp.h 1989 insertname pas-src/common.pas /^function insertname;(*($/ -instance_method ruby-src/test.rb /^ def instance_method$/ +INSERT_TREE_NODE pas-src/common.pas /^procedure INSERT_TREE_NODE;(*( $/ +Install_Abort_Handler/p ada-src/2ataspri.adb /^ procedure Install_Abort_Handler (Handler : Abor/ +Install_Abort_Handler/p ada-src/2ataspri.ads /^ procedure Install_Abort_Handler (Handler : Abor/ +Install_Error_Handler/p ada-src/2ataspri.adb /^ procedure Install_Error_Handler (Handler : Syst/ +Install_Error_Handler/p ada-src/2ataspri.ads /^ procedure Install_Error_Handler (Handler : Syst/ instance_method_equals= ruby-src/test.rb /^ def instance_method_equals=$/ instance_method_exclamation! ruby-src/test.rb /^ def instance_method_exclamation!$/ instance_method_question? ruby-src/test.rb /^ def instance_method_question?$/ -instr y-src/parse.y 81 +instance_method ruby-src/test.rb /^ def instance_method$/ +INSTANTIATE_MDIAGARRAY_FRIENDS cp-src/MDiagArray2.h /^#define INSTANTIATE_MDIAGARRAY_FRIENDS(T) \\$/ instruct c-src/etags.c 2527 -int merc-src/accumulator.m /^:- import_module int.$/ -intNumber go-src/test1.go 13 +instr y-src/parse.y 81 +INT_BIT c-src/emacs/src/gmalloc.c 124 +INT c-src/h.h 32 integer c-src/emacs/src/lisp.h 2127 -integer y-src/cccp.y 112 integer_overflow y-src/cccp.y /^integer_overflow ()$/ +INTEGERP c-src/emacs/src/lisp.h /^# define INTEGERP(x) lisp_h_INTEGERP (x)$/ +INTEGER_TO_CONS c-src/emacs/src/lisp.h /^#define INTEGER_TO_CONS(i) \\$/ integertonmstr pas-src/common.pas /^function integertonmstr; (* (TheInteger : integer)/ +integer y-src/cccp.y 112 intensity1 f-src/entry.for /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ intensity1 f-src/entry.strange /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ intensity1 f-src/entry.strange_suffix /^ & intensity1(efv,fv,svin,svquad,sfpv,maxp,val/ -interface merc-src/accumulator.m /^:- interface.$/ interface_locate c-src/c.c /^interface_locate(void)$/ -intern c-src/emacs/src/lisp.h /^intern (const char *str)$/ -intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/ +interface merc-src/accumulator.m /^:- interface.$/ internalBitem tex-src/texinfo.tex /^\\def\\internalBitem{\\smallbreak \\parsearg\\itemzzz}$/ internalBitemx tex-src/texinfo.tex /^\\def\\internalBitemx{\\par \\parsearg\\itemzzz}$/ internalBkitem tex-src/texinfo.tex /^\\def\\internalBkitem{\\smallbreak \\parsearg\\kitemzzz/ @@ -2985,87 +1926,123 @@ internalBxitem tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubt internalBxitemx tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/ internal_last_event_frame c-src/emacs/src/keyboard.c 228 internalsetq tex-src/texinfo.tex /^\\def\\internalsetq #1#2{'xrdef {#1}{\\csname #2\\endc/ +intern c-src/emacs/src/lisp.h /^intern (const char *str)$/ +intern_c_string c-src/emacs/src/lisp.h /^intern_c_string (const char *str)$/ interned c-src/emacs/src/lisp.h 672 interpreters c-src/etags.c 197 -interrupt_input c-src/emacs/src/keyboard.c 328 interrupt_input_blocked c-src/emacs/src/keyboard.c 76 interrupt_input_blocked c-src/emacs/src/lisp.h 3048 +interrupt_input c-src/emacs/src/keyboard.c 328 interrupts_deferred c-src/emacs/src/keyboard.c 331 +INTERVAL c-src/emacs/src/lisp.h 1149 +INTMASK c-src/emacs/src/lisp.h 437 +int merc-src/accumulator.m /^:- import_module int.$/ +intNumber go-src/test1.go 13 intoken c-src/etags.c /^#define intoken(c) (_itk[CHAR (c)]) \/* c can be in/ intspec c-src/emacs/src/lisp.h 1688 +INTTYPEBITS c-src/emacs/src/lisp.h 249 +INT_TYPE_SIZE y-src/cccp.y 91 intvar c-src/emacs/src/lisp.h 2277 +INT y-src/cccp.c 6 invalidate_nodes c-src/etags.c /^invalidate_nodes (fdesc *badfdp, node **npp)$/ +Invoking gzip tex-src/gzip.texi /^@node Invoking gzip, Advanced usage, Sample, Top$/ +in_word_set c-src/etags.c /^in_word_set (register const char *str, register un/ io merc-src/accumulator.m /^:- import_module io.$/ -ipc3dCSC19 cp-src/c.C 6 +IpAddrKind rs-src/test.rs 3 ipc3dChannelType cp-src/c.C 1 +ipc3dCSC19 cp-src/c.C 6 ipc3dIslandHierarchy cp-src/c.C 1 ipc3dLinkControl cp-src/c.C 1 -irregular_location cp-src/clheir.hpp /^ irregular_location(double xi, double yi, doubl/ +__ip c.c 159 +/ip ps-src/rfc1245.ps /^\/ip { $/ +/i ps-src/rfc1245.ps /^\/i \/j \/k \/l \/m \/n \/o \/p \/q \/r \/s \/t \/u \/v \/w \/x \/y/ irregular_location cp-src/clheir.hpp 47 -isComment php-src/lce_functions.php /^ function isComment($class)$/ -isHoliday cp-src/functions.cpp /^bool isHoliday ( Date d ){$/ -isLeap cp-src/functions.cpp /^bool isLeap ( int year ){$/ +irregular_location cp-src/clheir.hpp /^ irregular_location(double xi, double yi, doubl/ +ISALNUM c-src/etags.c /^#define ISALNUM(c) isalnum (CHAR (c))$/ +ISALPHA c-src/etags.c /^#define ISALPHA(c) isalpha (CHAR (c))$/ is_associative_construction merc-src/accumulator.m /^:- pred is_associative_construction(module_info::i/ +isComment php-src/lce_functions.php /^ function isComment($class)$/ +IsControlCharName pas-src/common.pas /^function IsControlCharName($/ +IsControlChar pas-src/common.pas /^function IsControlChar; (*($/ is_curly_brace_form c-src/h.h 54 +IS_DAEMON c-src/emacs/src/lisp.h 4257 +IS_DAEMON c-src/emacs/src/lisp.h 4261 +ISDIGIT c-src/etags.c /^#define ISDIGIT(c) isdigit (CHAR (c))$/ is_explicit c-src/h.h 49 is_func c-src/etags.c 221 +isHoliday cp-src/functions.cpp /^bool isHoliday ( Date d ){$/ is_hor_space y-src/cccp.y 953 is_idchar y-src/cccp.y 948 is_idstart y-src/cccp.y 950 +isLeap cp-src/functions.cpp /^bool isLeap ( int year ){$/ +ISLOWER c-src/etags.c /^#define ISLOWER(c) islower (CHAR (c))$/ is_muldiv_operation cp-src/c.C /^is_muldiv_operation(pc)$/ -is_ordset prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/ -is_recursive_case merc-src/accumulator.m /^:- pred is_recursive_case(list(hlds_goal)::in, pre/ +ISO_FUNCTION_KEY_OFFSET c-src/emacs/src/keyboard.c 5149 iso_lispy_function_keys c-src/emacs/src/keyboard.c 5151 isoperator prol-src/natded.prolog /^isoperator(Char):-$/ isoptab prol-src/natded.prolog /^isoptab('%').$/ +is_ordset prol-src/ordsets.prolog /^is_ordset(X) :- var(X), !, fail.$/ +is_recursive_case merc-src/accumulator.m /^:- pred is_recursive_case(list(hlds_goal)::in, pre/ +Is_Set/f ada-src/2ataspri.adb /^ function Is_Set (Cell : in TAS_Cell) return Bo/ +Is_Set/f ada-src/2ataspri.ads /^ function Is_Set (Cell : in TAS_Cell)/ +ISUPPER c-src/etags.c /^# define ISUPPER(c) isupper (CHAR (c))$/ iswhite c-src/etags.c /^#define iswhite(c) (_wht[CHAR (c)]) \/* c is white / -item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/ -item tex-src/texinfo.tex /^\\let\\item = \\internalBitem %$/ -item tex-src/texinfo.tex /^\\let\\item=\\itemizeitem}$/ -item_properties c-src/emacs/src/keyboard.c 7568 itemcontents tex-src/texinfo.tex /^\\def\\itemcontents{#1}%$/ itemfont tex-src/texinfo.tex /^\\def\\itemfont{#2}%$/ itemindex tex-src/texinfo.tex /^\\let\\itemindex=#1%$/ -itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/ itemizeitem tex-src/texinfo.tex /^\\def\\itemizeitem{%$/ +itemize tex-src/texinfo.tex /^\\def\\itemize{\\parsearg\\itemizezzz}$/ itemizey tex-src/texinfo.tex /^\\def\\itemizey #1#2{%$/ itemizezzz tex-src/texinfo.tex /^\\def\\itemizezzz #1{%$/ +item_properties c-src/emacs/src/keyboard.c 7568 +item tex-src/texinfo.tex /^\\def\\item{\\errmessage{@item while not in a table}}/ +item tex-src/texinfo.tex /^\\let\\item = \\internalBitem %$/ +item tex-src/texinfo.tex /^\\let\\item=\\itemizeitem}$/ itemx tex-src/texinfo.tex /^\\def\\itemx{\\errmessage{@itemx while not in a table/ itemx tex-src/texinfo.tex /^\\let\\itemx = \\internalBitemx %$/ itemzzz tex-src/texinfo.tex /^\\def\\itemzzz #1{\\begingroup %$/ +i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}%$/ +i tex-src/texinfo.tex /^\\def\\i##1{\\realbackslash i {##1}}$/ +i tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ +i tex-src/texinfo.tex /^\\let\\i=\\indexdummyfont$/ +i tex-src/texinfo.tex /^\\let\\i=\\smartitalic$/ ivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/ ivarx\defivarheader tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/ +JAVASRC make-src/Makefile /^JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol./ jmp c-src/emacs/src/lisp.h 3044 just_read_file c-src/etags.c /^just_read_file (FILE *inf)$/ -kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/ -kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/ -kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/ -kbd tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/ kbd_buffer c-src/emacs/src/keyboard.c 291 kbd_buffer_events_waiting c-src/emacs/src/keyboard.c /^kbd_buffer_events_waiting (void)$/ kbd_buffer_get_event c-src/emacs/src/keyboard.c /^kbd_buffer_get_event (KBOARD **kbp,$/ kbd_buffer_nr_stored c-src/emacs/src/keyboard.c /^kbd_buffer_nr_stored (void)$/ +KBD_BUFFER_SIZE c-src/emacs/src/keyboard.c 82 kbd_buffer_store_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_event (register struct input_even/ kbd_buffer_store_event_hold c-src/emacs/src/keyboard.c /^kbd_buffer_store_event_hold (register struct input/ kbd_buffer_store_help_event c-src/emacs/src/keyboard.c /^kbd_buffer_store_help_event (Lisp_Object frame, Li/ kbd_buffer_unget_event c-src/emacs/src/keyboard.c /^kbd_buffer_unget_event (register struct input_even/ kbd_fetch_ptr c-src/emacs/src/keyboard.c 297 -kbd_store_ptr c-src/emacs/src/keyboard.c 302 kbdfoo tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/ +kbd_store_ptr c-src/emacs/src/keyboard.c 302 +kbd tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/ +kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}%$/ +kbd tex-src/texinfo.tex /^\\def\\kbd##1{\\realbackslash kbd {##1}}$/ +kbd tex-src/texinfo.tex /^\\let\\kbd=\\indexdummyfont$/ kboard c-src/emacs/src/keyboard.c 860 kboard_stack c-src/emacs/src/keyboard.c 858 kboard_stack c-src/emacs/src/keyboard.c 864 -key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/ -key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/ -key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/ -key tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/ +KBYTES objc-src/PackInsp.m 58 key_and_value c-src/emacs/src/lisp.h 1868 keyremap c-src/emacs/src/keyboard.c 8742 keyremap c-src/emacs/src/keyboard.c 8754 keyremap_step c-src/emacs/src/keyboard.c /^keyremap_step (Lisp_Object *keybuf, int bufsize, v/ keys_of_keyboard c-src/emacs/src/keyboard.c /^keys_of_keyboard (void)$/ -keyval prol-src/natded.prolog /^keyval(key(Key,Val)) --> [Key,'='], valseq(Val).$/ +key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}%$/ +key tex-src/texinfo.tex /^\\def\\key##1{\\realbackslash key {##1}}$/ +key tex-src/texinfo.tex /^\\def\\key #1{{\\tt \\exhyphenpenalty=10000\\uppercase{/ +key tex-src/texinfo.tex /^\\let\\key=\\indexdummyfont$/ +KEY_TO_CHAR c-src/emacs/src/keyboard.c /^#define KEY_TO_CHAR(k) (XINT (k) & ((1 << CHARACTE/ keyvalcgi prol-src/natded.prolog /^keyvalcgi(Key,Val):-$/ +keyval prol-src/natded.prolog /^keyval(key(Key,Val)) --> [Key,'='], valseq(Val).$/ keyvalscgi prol-src/natded.prolog /^keyvalscgi(KeyVals),$/ keyvalseq prol-src/natded.prolog /^keyvalseq([KeyVal|KeyVals]) --> $/ keyword_parsing y-src/cccp.y 73 @@ -3088,42 +2065,56 @@ kset_local_function_key_map c-src/emacs/src/keyboard.c /^kset_local_function_key kset_overriding_terminal_local_map c-src/emacs/src/keyboard.c /^kset_overriding_terminal_local_map (struct kboard / kset_real_last_command c-src/emacs/src/keyboard.c /^kset_real_last_command (struct kboard *kb, Lisp_Ob/ kset_system_key_syms c-src/emacs/src/keyboard.c /^kset_system_key_syms (struct kboard *kb, Lisp_Obje/ -l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/ -l tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ +LabeledEntry pyt-src/server.py /^class LabeledEntry(Frame):$/ labelspace tex-src/texinfo.tex /^\\def\\labelspace{\\hskip1em \\relax}$/ lang c-src/etags.c 208 lang c-src/etags.c 251 lang c-src/etags.c 259 +Lang_function c-src/etags.c 182 +Lang_function c-src/h.h 6 lang_names c-src/etags.c 718 language c-src/etags.c 199 -last-tag el-src/emacs/lisp/progmodes/etags.el /^(defvar last-tag nil$/ last_abbrev_point c-src/abbrev.c 79 +lasta c.c 272 +lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/ +lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/ last_auto_save c-src/emacs/src/keyboard.c 214 +lastb c.c 278 last_heapinfo c-src/emacs/src/gmalloc.c 403 last_mouse_button c-src/emacs/src/keyboard.c 5215 last_mouse_x c-src/emacs/src/keyboard.c 5216 last_mouse_y c-src/emacs/src/keyboard.c 5217 +lastnode tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/ +lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/ +lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax$/ last_non_minibuf_size c-src/emacs/src/keyboard.c 207 last_point_position c-src/emacs/src/keyboard.c 217 last_state_size c-src/emacs/src/gmalloc.c 402 +last-tag el-src/emacs/lisp/progmodes/etags.el /^(defvar last-tag nil$/ last_undo_boundary c-src/emacs/src/keyboard.c 1287 -lasta c.c 272 -lastargmargin tex-src/texinfo.tex /^\\newskip\\deflastargmargin \\deflastargmargin=18pt$/ -lastargmargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/ -lastb c.c 278 -lastnode tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/ -lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax$/ -lastnode tex-src/texinfo.tex /^\\let\\lastnode=\\relax}$/ +LATEST make-src/Makefile /^LATEST=17$/ lb c-src/etags.c 2923 lbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/ lbs c-src/etags.c 2924 -lce php-src/lce_functions.php /^ function lce()$/ lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($d_name, $d_path/ lce_bindtextdomain php-src/lce_functions.php /^ function lce_bindtextdomain($domain, $path)$/ +LCE_COMMENT php-src/lce_functions.php 13 +LCE_COMMENT_TOOL php-src/lce_functions.php 17 +LCE_COMMENT_USER php-src/lce_functions.php 15 lce_dgettext php-src/lce_functions.php /^ function lce_dgettext($domain, $msgid)$/ +LCE_FUNCTIONS php-src/lce_functions.php 4 lce_geteditcode php-src/lce_functions.php /^ function lce_geteditcode($type, $name, $text, $r/ lce_gettext php-src/lce_functions.php /^ function lce_gettext($msgid)$/ +L_CELL y-src/parse.c 10 +LCE_MSGID php-src/lce_functions.php 19 +LCE_MSGSTR php-src/lce_functions.php 21 +lce php-src/lce_functions.php /^ function lce()$/ lce_textdomain php-src/lce_functions.php /^ function lce_textdomain($domain)$/ +LCE_TEXT php-src/lce_functions.php 23 +LCE_UNKNOWN php-src/lce_functions.php 9 +LCE_WS php-src/lce_functions.php 11 +L_CONST y-src/parse.c 13 +LDFLAGS make-src/Makefile /^LDFLAGS=#-static -lc_p$/ leasqr html-src/software.html /^Leasqr$/ left c-src/etags.c 216 left_shift y-src/cccp.y /^left_shift (a, b)$/ @@ -3131,56 +2122,102 @@ len c-src/etags.c 237 length c-src/etags.c 2495 length y-src/cccp.y 113 length y-src/cccp.y 44 -less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/ +LEQ y-src/cccp.c 14 +/less ps-src/rfc1245.ps /^\/less \/equal \/greater \/question \/at \/A \/B \/C \/D \/E/ less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}%$/ +less tex-src/texinfo.tex /^\\def\\less{\\realbackslash less}$/ let c-src/emacs/src/lisp.h 2981 letter tex-src/texinfo.tex /^ {#1}{Appendix \\appendixletter}{\\noexpand\\folio}}/ +letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/ +letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/ letter tex-src/texinfo.tex /^ {\\appendixletter}$/ letter tex-src/texinfo.tex /^ {\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\th/ letter tex-src/texinfo.tex /^\\chapmacro {#1}{Appendix \\appendixletter}%$/ letter tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\appendixlet/ letter tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/ letter tex-src/texinfo.tex /^\\subsecheading {#1}{\\appendixletter}{\\the\\secno}{\\/ -letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\noexpand\\folio}/ -letter tex-src/texinfo.tex /^{#1}{\\appendixletter}{\\the\\secno}{\\the\\subsecno}{\\/ letter: tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/ level c-src/emacs/src/lisp.h 3153 lex prol-src/natded.prolog /^lex(W,SynOut,Sem):-$/ lexptr y-src/cccp.y 332 -li tex-src/texinfo.tex /^\\let\\li = \\sf % Sometimes we call it \\li, not \\sf./ +LE y-src/parse.c 7 +L_FN0 y-src/parse.c 14 +L_FN1R y-src/parse.c 20 +L_FN1 y-src/parse.c 15 +L_FN2R y-src/parse.c 21 +L_FN2 y-src/parse.c 16 +L_FN3R y-src/parse.c 22 +L_FN3 y-src/parse.c 17 +L_FN4R y-src/parse.c 23 +L_FN4 y-src/parse.c 18 +L_FNNR y-src/parse.c 24 +L_FNN y-src/parse.c 19 +L_getit c-src/etags.c /^L_getit (void)$/ +L_GE y-src/parse.c 27 +__libc_atexit c-src/exit.c 30 +__libc_atexit c-src/exit.strange_suffix 30 libs merc-src/accumulator.m /^:- import_module libs.$/ licenze html-src/softwarelibero.html /^Licenze d'uso di un programma$/ +LIGHTBLUE cp-src/screen.hpp 21 +LIGHTCYAN cp-src/screen.hpp 23 +LIGHTGRAY cp-src/screen.hpp 19 +LIGHTGREEN cp-src/screen.hpp 22 +LIGHTMAGENTA cp-src/screen.hpp 25 +LIGHTRED cp-src/screen.hpp 24 limit cp-src/Range.h /^ double limit (void) const { return rng_limit; }$/ -line c-src/etags.c 2493 -line perl-src/htlmify-cystic 37 -line y-src/parse.y 87 -lineCount php-src/lce_functions.php /^ function lineCount($entry)$/ linebuffer c-src/etags.c 239 linebuffer_init c-src/etags.c /^linebuffer_init (linebuffer *lbp)$/ linebuffer_setlen c-src/etags.c /^linebuffer_setlen (linebuffer *lbp, int toksize)$/ +lineCount php-src/lce_functions.php /^ function lineCount($entry)$/ +line c-src/etags.c 2493 lineno c-src/emacs/src/lisp.h 3147 lineno c-src/etags.c 2506 linenumber tex-src/texinfo.tex /^ \\def\\linenumber{\\the\\inputlineno:\\space}$/ linenumber tex-src/texinfo.tex /^ \\let\\linenumber = \\empty % Non-3.0.$/ +line perl-src/htlmify-cystic 37 linepos c-src/etags.c 2507 linepos c-src/etags.c 2922 +line y-src/parse.y 87 links html-src/software.html /^Links to interesting software$/ -lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/ +Lisp_Bits c-src/emacs/src/lisp.h 239 +Lisp_Boolfwd c-src/emacs/src/lisp.h 2284 +Lisp_Bool_Vector c-src/emacs/src/lisp.h 1384 +Lisp_Buffer_Local_Value c-src/emacs/src/lisp.h 2334 +Lisp_Buffer_Objfwd c-src/emacs/src/lisp.h 2302 +Lisp_Char_Table c-src/emacs/src/lisp.h 1575 +Lisp_Compiled c-src/emacs/src/lisp.h 2429 +Lisp_Cons c-src/emacs/src/lisp.h 475 lisp_eval_depth c-src/emacs/src/lisp.h 3045 +Lisp_Finalizer c-src/emacs/src/lisp.h 2186 +Lisp_Float c-src/emacs/src/lisp.h 2391 +Lisp_Float c-src/emacs/src/lisp.h 477 +Lisp_Free c-src/emacs/src/lisp.h 2201 +Lisp_functions c-src/etags.c /^Lisp_functions (FILE *inf)$/ +Lisp_Fwd_Bool c-src/emacs/src/lisp.h 505 +Lisp_Fwd_Buffer_Obj c-src/emacs/src/lisp.h 507 +Lisp_Fwd c-src/emacs/src/lisp.h 2368 +Lisp_Fwd_Int c-src/emacs/src/lisp.h 504 +Lisp_Fwd_Kboard_Obj c-src/emacs/src/lisp.h 508 +Lisp_Fwd_Obj c-src/emacs/src/lisp.h 506 +Lisp_Fwd_Type c-src/emacs/src/lisp.h 502 +Lisp_Hash_Table c-src/emacs/src/lisp.h 1823 +lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/ lisp_h_CHECK_LIST_CONS c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_LIST_CONS(x, y) CHECK_TYPE (C/ lisp_h_CHECK_NUMBER c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_NUMBER(x) CHECK_TYPE (INTEGER/ lisp_h_CHECK_SYMBOL c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_SYMBOL(x) CHECK_TYPE (SYMBOLP/ lisp_h_CHECK_TYPE c-src/emacs/src/lisp.h /^#define lisp_h_CHECK_TYPE(ok, predicate, x) \\$/ lisp_h_CONSP c-src/emacs/src/lisp.h /^#define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons)$/ +Lisp_help c-src/etags.c 591 lisp_h_EQ c-src/emacs/src/lisp.h /^#define lisp_h_EQ(x, y) (XLI (x) == XLI (y))$/ lisp_h_FLOATP c-src/emacs/src/lisp.h /^#define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float)/ lisp_h_INTEGERP c-src/emacs/src/lisp.h /^#define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int/ +lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/ lisp_h_MARKERP c-src/emacs/src/lisp.h /^#define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE / lisp_h_MISCP c-src/emacs/src/lisp.h /^#define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc)$/ lisp_h_NILP c-src/emacs/src/lisp.h /^#define lisp_h_NILP(x) EQ (x, Qnil)$/ lisp_h_SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define lisp_h_SET_SYMBOL_VAL(sym, v) \\$/ -lisp_h_SYMBOLP c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbo/ lisp_h_SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOL_CONSTANT_P(sym) (XSYMBOL (sy/ +lisp_h_SYMBOLP c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOLP(x) (XTYPE (x) == Lisp_Symbo/ lisp_h_SYMBOL_VAL c-src/emacs/src/lisp.h /^#define lisp_h_SYMBOL_VAL(sym) \\$/ lisp_h_VECTORLIKEP c-src/emacs/src/lisp.h /^#define lisp_h_VECTORLIKEP(x) (XTYPE (x) == Lisp_V/ lisp_h_XCAR c-src/emacs/src/lisp.h /^#define lisp_h_XCAR(c) XCONS (c)->car$/ @@ -3188,18 +2225,64 @@ lisp_h_XCDR c-src/emacs/src/lisp.h /^#define lisp_h_XCDR(c) XCONS (c)->u.cdr$/ lisp_h_XCONS c-src/emacs/src/lisp.h /^#define lisp_h_XCONS(a) \\$/ lisp_h_XFASTINT c-src/emacs/src/lisp.h /^# define lisp_h_XFASTINT(a) XINT (a)$/ lisp_h_XHASH c-src/emacs/src/lisp.h /^#define lisp_h_XHASH(a) XUINT (a)$/ -lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) ((Lisp_Object) { i })$/ lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) (i)$/ +lisp_h_XIL c-src/emacs/src/lisp.h /^# define lisp_h_XIL(i) ((Lisp_Object) { i })$/ lisp_h_XINT c-src/emacs/src/lisp.h /^# define lisp_h_XINT(a) (XLI (a) >> INTTYPEBITS)$/ -lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) ((o).i)$/ lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) (o)$/ +lisp_h_XLI c-src/emacs/src/lisp.h /^# define lisp_h_XLI(o) ((o).i)$/ lisp_h_XPNTR c-src/emacs/src/lisp.h /^#define lisp_h_XPNTR(a) \\$/ lisp_h_XSYMBOL c-src/emacs/src/lisp.h /^# define lisp_h_XSYMBOL(a) \\$/ lisp_h_XTYPE c-src/emacs/src/lisp.h /^# define lisp_h_XTYPE(a) ((enum Lisp_Type) (XLI (a/ lisp_h_XUNTAG c-src/emacs/src/lisp.h /^# define lisp_h_XUNTAG(a, type) ((void *) (intptr_/ -lisp_h_check_cons_list c-src/emacs/src/lisp.h /^# define lisp_h_check_cons_list() ((void) 0)$/ -lisp_h_make_number c-src/emacs/src/lisp.h /^# define lisp_h_make_number(n) \\$/ +LISP_INITIALLY c-src/emacs/src/lisp.h /^#define LISP_INITIALLY(i) (i)$/ +LISP_INITIALLY c-src/emacs/src/lisp.h /^#define LISP_INITIALLY(i) {i}$/ +LISP_INITIALLY_ZERO c-src/emacs/src/lisp.h 582 +Lisp_Int0 c-src/emacs/src/lisp.h 461 +Lisp_Int1 c-src/emacs/src/lisp.h 462 +Lisp_Intfwd c-src/emacs/src/lisp.h 2274 +Lisp_Kboard_Objfwd c-src/emacs/src/lisp.h 2362 +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^#define LISP_MACRO_DEFUN(name, type, argdecls, arg/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (CONSP, bool, (Lisp_Object x), (x/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (NILP, bool, (Lisp_Object x), (x)/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (SYMBOL_VAL, Lisp_Object, (struct/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XCAR, Lisp_Object, (Lisp_Object / +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XCONS, struct Lisp_Cons *, (Lisp/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XHASH, EMACS_INT, (Lisp_Object a/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XLI, EMACS_INT, (Lisp_Object o),/ +LISP_MACRO_DEFUN c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN (XPNTR, void *, (Lisp_Object a), / +LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^#define LISP_MACRO_DEFUN_VOID(name, argdecls, args/ +LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID (CHECK_LIST_CONS, (Lisp_Obje/ +LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID (CHECK_TYPE,$/ +LISP_MACRO_DEFUN_VOID c-src/emacs/src/lisp.h /^LISP_MACRO_DEFUN_VOID (SET_SYMBOL_VAL,$/ +Lisp_Marker c-src/emacs/src/lisp.h 1978 +Lisp_Misc_Any c-src/emacs/src/lisp.h 1971 +Lisp_Misc c-src/emacs/src/lisp.h 2212 +Lisp_Misc c-src/emacs/src/lisp.h 458 +Lisp_Misc_Finalizer c-src/emacs/src/lisp.h 491 +Lisp_Misc_Float c-src/emacs/src/lisp.h 494 +Lisp_Misc_Free c-src/emacs/src/lisp.h 487 +Lisp_Misc_Limit c-src/emacs/src/lisp.h 496 +Lisp_Misc_Marker c-src/emacs/src/lisp.h 488 +Lisp_Misc_Overlay c-src/emacs/src/lisp.h 489 +Lisp_Misc_Save_Value c-src/emacs/src/lisp.h 490 +Lisp_Misc_Type c-src/emacs/src/lisp.h 485 +Lisp_Object c-src/emacs/src/lisp.h 567 +Lisp_Object c-src/emacs/src/lisp.h 577 +Lisp_Objfwd c-src/emacs/src/lisp.h 2294 +Lisp_Overlay c-src/emacs/src/lisp.h 2021 lisppar tex-src/texinfo.tex /^\\gdef\\lisppar{\\null\\endgraf}}$/ +Lisp_Save_Type c-src/emacs/src/lisp.h 2064 +Lisp_Save_Value c-src/emacs/src/lisp.h 2110 +Lisp_String c-src/emacs/src/lisp.h 466 +Lisp_Sub_Char_Table c-src/emacs/src/lisp.h 1606 +Lisp_Subr c-src/emacs/src/lisp.h 1670 +Lisp_suffixes c-src/etags.c 589 +Lisp_Symbol c-src/emacs/src/lisp.h 454 +Lisp_Symbol c-src/emacs/src/lisp.h 654 +lisp tex-src/texinfo.tex /^\\def\\lisp{\\aboveenvbreak$/ +Lisp_Type c-src/emacs/src/lisp.h 451 +Lisp_Vector c-src/emacs/src/lisp.h 1369 +Lisp_Vectorlike c-src/emacs/src/lisp.h 472 lispy_accent_codes c-src/emacs/src/keyboard.c 4634 lispy_accent_keys c-src/emacs/src/keyboard.c 4741 lispy_drag_n_drop_names c-src/emacs/src/keyboard.c 5181 @@ -3209,50 +2292,110 @@ lispy_kana_keys c-src/emacs/src/keyboard.c 5026 lispy_modifier_list c-src/emacs/src/keyboard.c /^lispy_modifier_list (int modifiers)$/ lispy_multimedia_keys c-src/emacs/src/keyboard.c 4962 lispy_wheel_names c-src/emacs/src/keyboard.c 5174 -list c-src/emacs/src/gmalloc.c 186 -list merc-src/accumulator.m /^:- import_module list.$/ -list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun list-tags (file &optional _next-match)$/ -list-tags-function el-src/emacs/lisp/progmodes/etags.el /^(defvar list-tags-function nil$/ list2i c-src/emacs/src/lisp.h /^list2i (EMACS_INT x, EMACS_INT y)$/ list3i c-src/emacs/src/lisp.h /^list3i (EMACS_INT x, EMACS_INT y, EMACS_INT w)$/ list4i c-src/emacs/src/lisp.h /^list4i (EMACS_INT x, EMACS_INT y, EMACS_INT w, EMA/ +LISTCONTENTSBUTTON objc-src/PackInsp.m 48 +LISTCONTENTS objc-src/PackInsp.m 39 +list c-src/emacs/src/gmalloc.c 186 +LISTDESCRIPTIONBUTTON objc-src/PackInsp.m 49 +ListEdit pyt-src/server.py /^class ListEdit(Frame):$/ +list merc-src/accumulator.m /^:- import_module list.$/ +list-tags el-src/emacs/lisp/progmodes/etags.el /^(defun list-tags (file &optional _next-match)$/ +list-tags-function el-src/emacs/lisp/progmodes/etags.el /^(defvar list-tags-function nil$/ list_to_ord_set prol-src/ordsets.prolog /^list_to_ord_set(List, Set) :-$/ +li tex-src/texinfo.tex /^\\let\\li = \\sf % Sometimes we call it \\li, not \\sf./ +LL_Assert/p ada-src/2ataspri.adb /^ procedure LL_Assert (B : Boolean; M : String) i/ +LL_Assert/p ada-src/2ataspri.ads /^ procedure LL_Assert (B : Boolean; M : String);$/ +L_LE y-src/parse.c 25 +LL_Task_Procedure_Access/t ada-src/2ataspri.ads /^ type LL_Task_Procedure_Access is access procedu/ +LL_Task_Procedure_Access/t ada-src/etags-test-for.ada /^ type LL_Task_Procedure_Access is access procedu/ +LL_Wrapper/p ada-src/2ataspri.adb /^ procedure LL_Wrapper (T : TCB_Ptr);$/ +LL_Wrapper/p ada-src/2ataspri.adb /^ procedure LL_Wrapper (T : TCB_Ptr) is$/ +LL_Wrapper/p ada-src/etags-test-for.ada /^ procedure LL_Wrapper (T : TCB_Ptr);$/ +L_NE y-src/parse.c 26 lno c-src/etags.c 223 -load objc-src/PackInsp.m /^-load$/ +/lnormalize ps-src/rfc1245.ps /^\/lnormalize { $/ loadContentsOf objc-src/PackInsp.m /^-loadContentsOf:(const char *)type inTable:(HashTa/ loadImage objc-src/PackInsp.m /^-loadImage$/ loadKeyValuesFrom objc-src/PackInsp.m /^-loadKeyValuesFrom:(const char *)type inTable:(Has/ +load objc-src/PackInsp.m /^-load$/ loadPORManager php-src/lce_functions.php /^ function &loadPORManager()$/ local_if_set c-src/emacs/src/lisp.h 2338 -location cp-src/clheir.hpp /^ location() { }$/ +LOCALIZE_ARCH objc-src/PackInsp.m /^#define LOCALIZE_ARCH(s) NXLoadLocalizedStringFrom/ +LOCALIZE objc-src/PackInsp.m /^#define LOCALIZE(s) NXLoadLocalizedStringFromTabl/ +Locate pas-src/common.pas /^function Locate; (*($/ location cp-src/clheir.hpp 33 +location cp-src/clheir.hpp /^ location() { }$/ +LOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define LOCK_ALIGNED_BLOCKS() \\$/ +LOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define LOCK_ALIGNED_BLOCKS()$/ +LOCK c-src/emacs/src/gmalloc.c /^#define LOCK() \\$/ +LOCK c-src/emacs/src/gmalloc.c /^#define LOCK()$/ +Lock/t ada-src/2ataspri.ads /^ type Lock is$/ +Lock/t ada-src/2ataspri.ads /^ type Lock is private;$/ loggingall tex-src/texinfo.tex /^\\def\\loggingall{\\tracingcommands2 \\tracingstats2 $/ +LONG_TYPE_SIZE y-src/cccp.y 95 +LOOKING_AT c-src/etags.c /^#define LOOKING_AT(cp, kw) \/* kw is the keyword, / +LOOKING_AT_NOCASE c-src/etags.c /^#define LOOKING_AT_NOCASE(cp, kw) \/* the keyword i/ look tex-src/texinfo.tex /^\\def\\kbd#1{\\def\\look{#1}\\expandafter\\kbdfoo\\look??/ -lookup y-src/cccp.y /^lookup (name, len, hash)$/ lookup_call merc-src/accumulator.m /^:- pred lookup_call(accu_goal_store::in, accu_goal/ +LOOKUP objc-src/PackInsp.m 176 +LOOKUP objc-src/PackInsp.m /^#define LOOKUP(key, notfound) ([table isKey:key] ?/ +lookup y-src/cccp.y /^lookup (name, len, hash)$/ +LOOP_ON_INPUT_LINES c-src/etags.c /^#define LOOP_ON_INPUT_LINES(file_pointer, line_buf/ losespace tex-src/texinfo.tex /^\\def\\losespace #1{#1}$/ lowcase c-src/etags.c /^#define lowcase(c) tolower (CHAR (c))$/ lowercaseenumerate tex-src/texinfo.tex /^\\def\\lowercaseenumerate{%$/ +LowerCaseNmStr pas-src/common.pas /^function LowerCaseNmStr; (*($/ +/L ps-src/rfc1245.ps /^\/L { $/ +/L ps-src/rfc1245.ps /^\/L \/M \/N \/O \/P \/Q \/R \/S \/T \/U \/V \/W \/X \/Y \/Z \/brac/ +L_RANGE y-src/parse.c 11 +LSH y-src/cccp.c 16 +l tex-src/texinfo.tex /^\\def\\l#1{{\\li #1}\\null} % $/ +l tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ +L tex-src/texinfo.tex /^\\let\\L=\\ptexL$/ +LTGT cp-src/MDiagArray2.h 144 +LTGT cp-src/MDiagArray2.h 35 +LTGT cp-src/MDiagArray2.h 39 +LTGT cp-src/MDiagArray2.h 42 +Lua_functions c-src/etags.c /^Lua_functions (FILE *inf)$/ +Lua_help c-src/etags.c 600 +LUASRC make-src/Makefile /^LUASRC=allegro.lua$/ +Lua_suffixes c-src/etags.c 598 lucid_event_type_list_p c-src/emacs/src/keyboard.c /^lucid_event_type_list_p (Lisp_Object object)$/ +L_VAR y-src/parse.c 12 lvvmode tex-src/texinfo.tex /^\\def\\lvvmode{\\vbox to 0pt{}}$/ mabort c-src/emacs/src/gmalloc.c /^mabort (enum mcheck_status status)$/ +macheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ mach_host_self c-src/machsyscalls.h /^SYSCALL (mach_host_self, -29,$/ +Machine_Exceptions/t ada-src/2ataspri.ads /^ type Machine_Exceptions is new Interfaces.C.POS/ +Machin_T/b ada-src/waroquiers.ada /^ protected body Machin_T is$/ +Machin_T/t ada-src/etags-test-for.ada /^ protected Machin_T is$/ +Machin_T/t ada-src/etags-test-for.ada /^ protected type Machin_T is$/ +Machin_T/t ada-src/waroquiers.ada /^ protected type Machin_T is$/ mach_msg_trap c-src/machsyscalls.h /^SYSCALL (mach_msg_trap, -25,$/ mach_reply_port c-src/machsyscalls.h /^SYSCALL (mach_reply_port, -26,$/ mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/ mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/ -macheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ macx\defmacheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ -magic c-src/emacs/src/gmalloc.c 1868 +MAGENTA cp-src/screen.hpp 17 +MAGICBYTE c-src/emacs/src/gmalloc.c 1864 +magic c-src/emacs/src/gmalloc.c 1871 +MAGICFREE c-src/emacs/src/gmalloc.c 1863 +MAGICWORD c-src/emacs/src/gmalloc.c 1862 mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstep1$/ mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstephalf$/ maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/ majorheading tex-src/texinfo.tex /^\\def\\majorheading{\\parsearg\\majorheadingzzz}$/ majorheadingzzz tex-src/texinfo.tex /^\\def\\majorheadingzzz #1{%$/ make-abbrev-table c-src/abbrev.c /^DEFUN ("make-abbrev-table", Fmake_abbrev_table, Sm/ -make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/ make_coor prol-src/natded.prolog /^make_coor(s(_),Alpha,Sem1,Sem2,Alpha@Sem1@Sem2).$/ +make_C_tag c-src/etags.c /^make_C_tag (bool isfun)$/ make_ctrl_char c-src/emacs/src/keyboard.c /^make_ctrl_char (int c)$/ +MakeDispose pyt-src/server.py /^ def MakeDispose(self):$/ +Makefile_filenames c-src/etags.c 603 +Makefile_help c-src/etags.c 605 +Makefile_targets c-src/etags.c /^Makefile_targets (FILE *inf)$/ make_fixnum_or_float c-src/emacs/src/lisp.h /^#define make_fixnum_or_float(val) \\$/ make_formatted_string c-src/emacs/src/lisp.h /^extern Lisp_Object make_formatted_string (char *, / make_lisp_ptr c-src/emacs/src/lisp.h /^make_lisp_ptr (void *ptr, enum Lisp_Type type)$/ @@ -3263,108 +2406,182 @@ make_lispy_focus_out c-src/emacs/src/keyboard.c /^make_lispy_focus_out (Lisp_Obj make_lispy_movement c-src/emacs/src/keyboard.c /^make_lispy_movement (struct frame *frame, Lisp_Obj/ make_lispy_position c-src/emacs/src/keyboard.c /^make_lispy_position (struct frame *f, Lisp_Object / make_lispy_switch_frame c-src/emacs/src/keyboard.c /^make_lispy_switch_frame (Lisp_Object frame)$/ +MAKE make-src/Makefile /^MAKE:=$(MAKE) --no-print-directory$/ make_number c-src/emacs/src/lisp.h /^# define make_number(n) lisp_h_make_number (n)$/ make_pointer_integer c-src/emacs/src/lisp.h /^make_pointer_integer (void *p)$/ make_scroll_bar_position c-src/emacs/src/keyboard.c /^make_scroll_bar_position (struct input_event *ev, / +MakeSitelist pyt-src/server.py /^ def MakeSitelist(self, master):$/ +MAKESRC make-src/Makefile /^MAKESRC=Makefile$/ make_tag c-src/etags.c /^make_tag (const char *name, \/* tag name, or NULL / make_uninit_sub_char_table c-src/emacs/src/lisp.h /^make_uninit_sub_char_table (int depth, int min_cha/ make_uninit_vector c-src/emacs/src/lisp.h /^make_uninit_vector (ptrdiff_t size)$/ -malloc c-src/emacs/src/gmalloc.c /^extern void *malloc (size_t size) ATTRIBUTE_MALLOC/ -malloc c-src/emacs/src/gmalloc.c /^malloc (size_t size)$/ -malloc c-src/emacs/src/gmalloc.c 1719 -malloc c-src/emacs/src/gmalloc.c 64 -malloc c-src/emacs/src/gmalloc.c 68 malloc_atfork_handler_child c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_child (void)$/ malloc_atfork_handler_parent c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_parent (void)$/ malloc_atfork_handler_prepare c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_prepare (void)$/ +malloc c-src/emacs/src/gmalloc.c 1722 +malloc c-src/emacs/src/gmalloc.c 64 +malloc c-src/emacs/src/gmalloc.c 68 +malloc c-src/emacs/src/gmalloc.c /^extern void *malloc (size_t size) ATTRIBUTE_MALLOC/ +_malloc c-src/emacs/src/gmalloc.c /^_malloc (size_t size)$/ +malloc c-src/emacs/src/gmalloc.c /^malloc (size_t size)$/ malloc_enable_thread c-src/emacs/src/gmalloc.c /^malloc_enable_thread (void)$/ +__malloc_extra_blocks c-src/emacs/src/gmalloc.c 382 +MALLOCFLOOD c-src/emacs/src/gmalloc.c 1865 +mallochook c-src/emacs/src/gmalloc.c /^mallochook (size_t size)$/ malloc_info c-src/emacs/src/gmalloc.c 167 malloc_initialize_1 c-src/emacs/src/gmalloc.c /^malloc_initialize_1 (void)$/ -mallochook c-src/emacs/src/gmalloc.c /^mallochook (size_t size)$/ +__malloc_initialize c-src/emacs/src/gmalloc.c /^__malloc_initialize (void)$/ +__malloc_initialized c-src/emacs/src/gmalloc.c 380 +_malloc_internal c-src/emacs/src/gmalloc.c /^_malloc_internal (size_t size)$/ +_malloc_internal_nolock c-src/emacs/src/gmalloc.c /^_malloc_internal_nolock (size_t size)$/ +_malloc_mutex c-src/emacs/src/gmalloc.c 518 +_malloc_thread_enabled_p c-src/emacs/src/gmalloc.c 520 man manpage make-src/Makefile /^man manpage: etags.1.man$/ +/manualpapersize ps-src/rfc1245.ps /^\/manualpapersize {$/ +MANY c-src/emacs/src/lisp.h 2833 mao c-src/h.h 101 map c-src/emacs/src/keyboard.c 8748 map merc-src/accumulator.m /^:- import_module map.$/ -map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/ mapping html-src/algrthms.html /^Mapping the Channel Symbols$/ mapsyn prol-src/natded.prolog /^mapsyn(A\/B,AM\/BM):-$/ +map_word prol-src/natded.prolog /^map_word([[_]|Ws],Exp):-$/ +MARKERP c-src/emacs/src/lisp.h /^# define MARKERP(x) lisp_h_MARKERP (x)$/ mark_kboards c-src/emacs/src/keyboard.c /^mark_kboards (void)$/ math tex-src/texinfo.tex /^\\def\\math#1{\\implicitmath #1\\implicitmath}$/ -max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/ -max c-src/emacs/src/lisp.h 58 +MAX_ALLOCA c-src/emacs/src/lisp.h 4556 +max_args c-src/emacs/src/lisp.h 1686 +maxargs c-src/emacs/src/lisp.h 2831 max c.c /^__attribute__ ((always_inline)) max (int a, int b)/ max c.c /^max (int a, int b)$/ max cp-src/conway.cpp /^#define max(x,y) ((x > y) ? x : y)$/ -max_args c-src/emacs/src/lisp.h 1686 +max c-src/emacs/src/lisp.h 58 +max c-src/emacs/src/lisp.h /^#define max(a, b) ((a) > (b) ? (a) : (b))$/ +MAX_ENCODED_BYTES c-src/emacs/src/keyboard.c 2254 +MAX_HASH_VALUE c-src/etags.c 2329 max_num_directions cp-src/clheir.hpp 31 max_num_generic_objects cp-src/clheir.cpp 9 -maxargs c-src/emacs/src/lisp.h 2831 -maybe merc-src/accumulator.m /^:- import_module maybe.$/ +MAXPATHLEN c-src/etags.c 115 +/max ps-src/rfc1245.ps /^\/max {2 copy lt {exch} if pop} bind def$/ +MAX_WORD_LENGTH c-src/etags.c 2327 maybe_gc c-src/emacs/src/lisp.h /^maybe_gc (void)$/ +maybe merc-src/accumulator.m /^:- import_module maybe.$/ +MAYBEREL y-src/parse.y /^#define MAYBEREL(p) (*(p)=='[' && (isdigit((p)[1])/ +MBYTES objc-src/PackInsp.m 59 +Mcccp y-src/cccp.y /^main ()$/ +Mc cp-src/c.C /^int main (void) { my_function0(0); my_function1(1)/ mcCSC cp-src/c.C 6 mcheck c-src/emacs/src/gmalloc.c /^mcheck (void (*func) (enum mcheck_status))$/ +MCHECK_DISABLED c-src/emacs/src/gmalloc.c 285 +MCHECK_FREE c-src/emacs/src/gmalloc.c 287 +MCHECK_HEAD c-src/emacs/src/gmalloc.c 288 +MCHECK_OK c-src/emacs/src/gmalloc.c 286 mcheck_status c-src/emacs/src/gmalloc.c 283 -mcheck_used c-src/emacs/src/gmalloc.c 2017 +MCHECK_TAIL c-src/emacs/src/gmalloc.c 289 +mcheck_used c-src/emacs/src/gmalloc.c 2020 +Mconway.cpp cp-src/conway.cpp /^void main(void)$/ mdbcomp merc-src/accumulator.m /^:- import_module mdbcomp.$/ -me22b lua-src/test.lua /^ local function test.me22b (one)$/ +MDiagArray2 cp-src/MDiagArray2.h 78 +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const Array& a) : DiagArray2 / +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const DiagArray2& a) : DiagArray/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (const MDiagArray2& a) : DiagArra/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r, int c, const T& val) : DiagA/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (int r, int c) : DiagArray2 (r, c/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (T *d, int r, int c) : DiagArray2/ +~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/ +MDiagArray2 cp-src/MDiagArray2.h /^ MDiagArray2 (void) : DiagArray2 () { }$/ me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/ +me22b lua-src/test.lua /^ local function test.me22b (one)$/ memalign c-src/emacs/src/gmalloc.c /^memalign (size_t alignment, size_t size)$/ -member prol-src/natded.prolog /^member(X,[X|_]).$/ member_lessthan_goalid merc-src/accumulator.m /^:- pred member_lessthan_goalid(accu_goal_store::in/ +member prol-src/natded.prolog /^member(X,[X|_]).$/ memclear c-src/emacs/src/lisp.h /^memclear (void *p, ptrdiff_t nbytes)$/ -menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/ menu_bar_item c-src/emacs/src/keyboard.c /^menu_bar_item (Lisp_Object key, Lisp_Object item, / menu_bar_items c-src/emacs/src/keyboard.c /^menu_bar_items (Lisp_Object old)$/ menu_bar_items_index c-src/emacs/src/keyboard.c 7369 menu_bar_items_vector c-src/emacs/src/keyboard.c 7368 menu_bar_one_keymap_changed_items c-src/emacs/src/keyboard.c 7363 -menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Lisp_Object sexpr)$/ menu_item_eval_property_1 c-src/emacs/src/keyboard.c /^menu_item_eval_property_1 (Lisp_Object arg)$/ +menu_item_eval_property c-src/emacs/src/keyboard.c /^menu_item_eval_property (Lisp_Object sexpr)$/ menu_separator_name_p c-src/emacs/src/keyboard.c /^menu_separator_name_p (const char *label)$/ +menu tex-src/texinfo.tex /^\\long\\def\\menu #1\\end menu{}$/ +Metags c-src/etags.c /^main (int argc, char **argv)$/ metasource c-src/etags.c 198 methodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/ methodx\defmethodheader tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/ methparsebody\Edeffn tex-src/texinfo.tex /^\\def\\deffn{\\defmethparsebody\\Edeffn\\deffnx\\deffnhe/ methparsebody\Edefmethod tex-src/texinfo.tex /^\\def\\defmethod{\\defmethparsebody\\Edefmethod\\defmet/ methparsebody\Edeftypefn tex-src/texinfo.tex /^\\def\\deftypefn{\\defmethparsebody\\Edeftypefn\\deftyp/ -min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/ -min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/ -min c-src/emacs/src/lisp.h 57 -min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/ +Mfail cp-src/fail.C /^main()$/ min_args c-src/emacs/src/lisp.h 1686 min_char c-src/emacs/src/lisp.h 1621 +min cp-src/conway.cpp /^#define min(x,y) ((x > y) ? y : x)$/ +min c-src/emacs/src/gmalloc.c /^#define min(a, b) ((a) < (b) ? (a) : (b))$/ +min c-src/emacs/src/lisp.h 57 +min c-src/emacs/src/lisp.h /^#define min(a, b) ((a) < (b) ? (a) : (b))$/ +MIN_HASH_VALUE c-src/etags.c 2328 +/min ps-src/rfc1245.ps /^\/min {2 copy gt {exch} if pop} bind def$/ minus cp-src/functions.cpp /^void Date::minus ( int days , int month , int year/ minus tex-src/texinfo.tex /^\\def\\minus{$-$}$/ +MIN_WORD_LENGTH c-src/etags.c 2326 +MISCP c-src/emacs/src/lisp.h /^# define MISCP(x) lisp_h_MISCP (x)$/ miti html-src/softwarelibero.html /^Sfatiamo alcuni miti$/ +Mkai-test.pl perl-src/kai-test.pl /^package main;$/ modifier_names c-src/emacs/src/keyboard.c 6319 modifier_symbols c-src/emacs/src/keyboard.c 6327 modify_event_symbol c-src/emacs/src/keyboard.c /^modify_event_symbol (ptrdiff_t symbol_num, int mod/ module_class_method ruby-src/test.rb /^ def ModuleExample.module_class_method$/ +ModuleExample ruby-src/test.rb /^module ModuleExample$/ module_instance_method ruby-src/test.rb /^ def module_instance_method$/ -more= ruby-src/test1.ru /^ :more$/ more_aligned_int c.c 165 morecore_nolock c-src/emacs/src/gmalloc.c /^morecore_nolock (size_t size)$/ morecore_recursing c-src/emacs/src/gmalloc.c 605 +More_Lisp_Bits c-src/emacs/src/lisp.h 801 +more= ruby-src/test1.ru /^ :more$/ +MOST_NEGATIVE_FIXNUM c-src/emacs/src/lisp.h 835 +MOST_POSITIVE_FIXNUM c-src/emacs/src/lisp.h 834 mouse_syms c-src/emacs/src/keyboard.c 4627 move cp-src/clheir.cpp /^void agent::move(int direction)$/ +MOVE c-src/sysdep.h /^#define MOVE(x,y) movl x, y$/ +MoveLayerAfter lua-src/allegro.lua /^function MoveLayerAfter (this_one)$/ +MoveLayerBefore lua-src/allegro.lua /^function MoveLayerBefore (this_one)$/ +MoveLayerBottom lua-src/allegro.lua /^function MoveLayerBottom ()$/ +MoveLayerTop lua-src/allegro.lua /^function MoveLayerTop ()$/ mprobe c-src/emacs/src/gmalloc.c /^mprobe (void *ptr)$/ +/M ps-src/rfc1245.ps /^\/M {newpath moveto} bind def$/ +M ruby-src/test1.ru /^module A::M; end$/ +MSDOS c-src/etags.c 100 +MSDOS c-src/etags.c 106 +MSDOS c-src/etags.c 107 +MSDOS c-src/etags.c 110 msgid php-src/lce_functions.php /^ function msgid($line, $class)$/ +MSGSEL f-src/entry.for /^ ENTRY MSGSEL ( TYPE )$/ +MSGSEL f-src/entry.strange /^ ENTRY MSGSEL ( TYPE )$/ +MSGSEL f-src/entry.strange_suffix /^ ENTRY MSGSEL ( TYPE )$/ msgstr php-src/lce_functions.php /^ function msgstr($line, $class)$/ +/ms ps-src/rfc1245.ps /^\/ms { $/ mstats c-src/emacs/src/gmalloc.c 308 -mt prol-src/natded.prolog /^mt:-$/ +Mtest1.go go-src/test1.go 1 +Mtest1.go go-src/test1.go /^func main() {$/ +Mtest.go go-src/test.go 1 +Mtest.go go-src/test.go /^func main() {$/ +Mtest.rs rs-src/test.rs /^fn main() {$/ mtg html-src/software.html /^MTG$/ -multi_line c-src/etags.c 267 +mt prol-src/natded.prolog /^mt:-$/ multibyte c-src/emacs/src/regex.h 403 -my_printf c.c /^my_printf (void *my_object, const char *my_format,/ -my_struct c-src/h.h 91 -my_struct c.c 226 -my_typedef c-src/h.h 93 -my_typedef c.c 228 +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6231 +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c 6764 +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/ +MULTI_LETTER_MOD c-src/emacs/src/keyboard.c /^#define MULTI_LETTER_MOD(BIT, NAME, LEN) \\$/ +multi_line c-src/etags.c 267 +Mx.cc cp-src/x.cc /^main(int argc, char *argv[])$/ mylbrace tex-src/texinfo.tex /^\\def\\mylbrace {{\\tt \\char '173}}$/ mypi forth-src/test-forth.fth /^synonym mypi fconst$/ +my_printf c.c /^my_printf (void *my_object, const char *my_format,/ myrbrace tex-src/texinfo.tex /^\\def\\myrbrace {{\\tt \\char '175}}$/ -n c-src/exit.c 28 -n c-src/exit.strange_suffix 28 +my_struct c.c 226 +my_struct c-src/h.h 91 +my_typedef c.c 228 +my_typedef c-src/h.h 93 name c-src/emacs/src/keyboard.c 7241 name c-src/emacs/src/lisp.h 1808 name c-src/emacs/src/lisp.h 3144 @@ -3375,7 +2592,11 @@ name c-src/etags.c 2271 name c-src/etags.c 261 name c-src/getopt.h 76 name c-src/getopt.h 78 +named c-src/etags.c 2505 +NameHasChar pas-src/common.pas /^function NameHasChar; (* (TheName : NameString; Th/ name perl-src/htlmify-cystic 357 +namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/ +NameStringLess pas-src/common.pas /^function NameStringLess;(*(var Name1,Name2 : NameS/ name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Function}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Macro}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Special Form}%$/ @@ -3384,36 +2605,48 @@ name tex-src/texinfo.tex /^\\begingroup\\defname {#1}{Variable}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/ name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/ name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/ -name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Instance Variable of #1}%/ -name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Method on #1}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defcvtype{} of #1}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Instance Variable of #1}%/ +name tex-src/texinfo.tex /^\\begingroup\\defname {#2}{Method on #1}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Function}%$/ name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#1} #2}{Variable}%$/ -name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/ name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}%$/ +name tex-src/texinfo.tex /^\\begingroup\\defname {\\code{#2} #3}{#1}$/ name tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/ name tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/ +NAME y-src/cccp.c 8 name y-src/cccp.y 113 name y-src/cccp.y 43 -named c-src/etags.c 2505 -namestringequal pas-src/common.pas /^function namestringequal;(*(var Name1,Name2 : Name/ nargs c-src/emacs/src/lisp.h 2987 -need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/ +NATNUMP c-src/emacs/src/lisp.h /^NATNUMP (Lisp_Object x)$/ +/nbluet ps-src/rfc1245.ps /^\/nbluet 256 array def$/ +n c-src/exit.c 28 +n c-src/exit.strange_suffix 28 +NDEBUG c-src/etags.c 88 need_adjustment c-src/emacs/src/lisp.h 1986 +need tex-src/texinfo.tex /^\\def\\need{\\parsearg\\needx}$/ needx tex-src/texinfo.tex /^\\def\\needx#1{%$/ +NEG y-src/parse.c 9 neighbors cp-src/clheir.hpp 59 nelem cp-src/Range.h /^ int nelem (void) const { return rng_nelem; }$/ nestlev c-src/etags.c 2525 +newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/ +newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/ +NewLayer lua-src/allegro.lua /^function NewLayer (name, x, y, w, h)$/ +NewLayerSet lua-src/allegro.lua /^function NewLayerSet (name)$/ +newlb c-src/etags.c 2930 +newlinepos c-src/etags.c 2932 +NewNameString pas-src/common.pas /^procedure NewNameString; (* (var NSP: NameStringPo/ new objc-src/PackInsp.m /^+new$/ new perl-src/htlmify-cystic 163 new_tag perl-src/htlmify-cystic 18 -newcodeindex tex-src/texinfo.tex /^\\def\\newcodeindex #1{$/ -newindex tex-src/texinfo.tex /^\\def\\newindex #1{$/ -newlb c-src/etags.c 2930 -newlinepos c-src/etags.c 2932 newtextstring pas-src/common.pas /^function newtextstring; (*: TextString;*)$/ newwrite tex-src/texinfo.tex /^\\gdef\\newwrite{\\alloc@7\\write\\chardef\\sixt@@n}}$/ +next_alive cp-src/conway.hpp 7 +next_almost_prime c-src/emacs/src/lisp.h /^extern EMACS_INT next_almost_prime (EMACS_INT) ATT/ +NEXT_ALMOST_PRIME_LIMIT c-src/emacs/src/lisp.h 3573 +next c.c 174 next c-src/emacs/src/gmalloc.c 164 next c-src/emacs/src/gmalloc.c 188 next c-src/emacs/src/gmalloc.c 198 @@ -3427,51 +2660,52 @@ next c-src/emacs/src/lisp.h 3028 next c-src/emacs/src/lisp.h 3134 next c-src/emacs/src/lisp.h 700 next c-src/etags.c 203 -next c.c 174 +next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/ +next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/ +next_free c-src/emacs/src/lisp.h 1851 +nextfree c-src/emacs/src/lisp.h 3029 next tex-src/texinfo.tex /^\\def\\flushcr{\\ifx\\par\\lisppar \\def\\next##1{}\\else / next tex-src/texinfo.tex /^\\def\\next##1{}\\next}$/ next tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/ next tex-src/texinfo.tex /^\\edef\\next{\\write\\auxfile{\\internalsetq {#1}{#2}}}/ -next y-src/cccp.y 42 -next-file el-src/emacs/lisp/progmodes/etags.el /^(defun next-file (&optional initialize novisit)$/ -next-file-list el-src/emacs/lisp/progmodes/etags.el /^(defvar next-file-list nil$/ -next_alive cp-src/conway.hpp 7 -next_almost_prime c-src/emacs/src/lisp.h /^extern EMACS_INT next_almost_prime (EMACS_INT) ATT/ -next_free c-src/emacs/src/lisp.h 1851 next_weak c-src/emacs/src/lisp.h 1875 -nextfree c-src/emacs/src/lisp.h 3029 +next y-src/cccp.y 42 +NE y-src/parse.c 6 nfree c-src/emacs/src/gmalloc.c 150 +/ngrayt ps-src/rfc1245.ps /^\/ngrayt 256 array def$/ +/ngreent ps-src/rfc1245.ps /^\/ngreent 256 array def$/ +NIL_IS_ZERO c-src/emacs/src/lisp.h 1515 +NILP c-src/emacs/src/lisp.h /^# define NILP(x) lisp_h_NILP (x)$/ nl c-src/etags.c 2521 +NmStrToErrStr pas-src/common.pas /^function NmStrToErrStr;(*($/ +NmStrToInteger pas-src/common.pas /^function NmStrToInteger; (* (Str : NameString) : i/ nm tex-src/testenv.tex /^\\newcommand{\\nm}[2]{\\nomenclature{#1}{#2}}$/ -no tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/ -no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/ -no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/ -no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/ -no.\the tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/ -no.\the tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/ no_argument c-src/getopt.h 89 -no_lang_help c-src/etags.c 707 -no_sub c-src/emacs/src/regex.h 387 nocase_tail c-src/etags.c /^nocase_tail (const char *cp)$/ node c-src/etags.c 225 -node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/ -node_st c-src/etags.c 214 noderef tex-src/texinfo.tex /^\\appendixnoderef %$/ +node_st c-src/etags.c 214 +node tex-src/texinfo.tex /^\\def\\node{\\ENVcheck\\parsearg\\nodezzz}$/ nodexxx tex-src/texinfo.tex /^\\def\\nodexxx[#1,#2]{\\gdef\\lastnode{#1}}$/ nodezzz tex-src/texinfo.tex /^\\def\\nodezzz#1{\\nodexxx [#1,]}$/ nofillexdent tex-src/texinfo.tex /^\\def\\nofillexdent{\\parsearg\\nofillexdentyyy}$/ nofillexdentyyy tex-src/texinfo.tex /^\\def\\nofillexdentyyy #1{{\\advance \\leftskip by -\\e/ nofonts tex-src/texinfo.tex /^{\\chapternofonts%$/ nofonts tex-src/texinfo.tex /^{\\indexnofonts$/ +no_lang_help c-src/etags.c 707 nonarrowing tex-src/texinfo.tex /^ \\let\\nonarrowing=\\comment$/ nonarrowing tex-src/texinfo.tex /^\\let\\nonarrowing=\\relax$/ none_help c-src/etags.c 703 +NONPOINTER_BITS c-src/emacs/src/lisp.h 78 +NONPOINTER_BITS c-src/emacs/src/lisp.h 80 +NONSRCS make-src/Makefile /^NONSRCS=entry.strange lists.erl clheir.hpp.gz$/ normalbackslash tex-src/texinfo.tex /^\\def\\normalbackslash{{\\tt\\rawbackslashxx}}$/ normalcaret tex-src/texinfo.tex /^\\def\\normalcaret{^}$/ normaldoublequote tex-src/texinfo.tex /^\\def\\normaldoublequote{"}$/ normalgreater tex-src/texinfo.tex /^\\def\\normalgreater{>}$/ -normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/ normalize_fresh prol-src/natded.prolog /^normalize_fresh(M,N):-$/ +normalize prol-src/natded.prolog /^normalize(M,MNorm):-$/ +/normalize ps-src/rfc1245.ps /^\/normalize {$/ normalize_tree prol-src/natded.prolog /^normalize_tree(tree(Rule,Syn:Sem,Trees),$/ normalize_trees prol-src/natded.prolog /^normalize_trees([],[]).$/ normalless tex-src/texinfo.tex /^\\def\\normalless{<}$/ @@ -3481,42 +2715,67 @@ normaltilde tex-src/texinfo.tex /^\\def\\normaltilde{~}$/ normalunderscore tex-src/texinfo.tex /^\\def\\normalunderscore{_}$/ normalverticalbar tex-src/texinfo.tex /^\\def\\normalverticalbar{|}$/ nosave pyt-src/server.py /^ def nosave(self):$/ -not_bol c-src/emacs/src/regex.h 391 -not_eol c-src/emacs/src/regex.h 394 -not_single_kboard_state c-src/emacs/src/keyboard.c /^not_single_kboard_state (KBOARD *kboard)$/ +no_sub c-src/emacs/src/regex.h 387 notag2 c-src/dostorture.c 26 notag2 c-src/torture.c 26 notag4 c-src/dostorture.c 45 notag4 c-src/torture.c 45 +not_bol c-src/emacs/src/regex.h 391 +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/.notdef \/.not/ +/.notdef ps-src/rfc1245.ps /^\/.notdef \/.notdef \/.notdef \/.notdef \/space \/exclam/ +not_eol c-src/emacs/src/regex.h 394 +NOTEQUAL y-src/cccp.c 13 +no tex-src/texinfo.tex /^\\def\\appendixletter{\\char\\the\\appendixno}$/ +no tex-src/texinfo.tex /^\\global\\advance \\appendixno by 1 \\message{Appendix/ +no tex-src/texinfo.tex /^\\ifnum\\secno=0 Appendix\\xreftie'char\\the\\appendixn/ +no tex-src/texinfo.tex /^\\newcount \\appendixno \\appendixno = `\\@$/ +no.\the tex-src/texinfo.tex /^\\else \\ifnum \\subsecno=0 Section\\xreftie'char\\the\\/ +no.\the tex-src/texinfo.tex /^Section\\xreftie'char\\the\\appendixno.\\the\\secno.\\th/ notinname c-src/etags.c /^#define notinname(c) (_nin[CHAR (c)]) \/* c is not / +not_single_kboard_state c-src/emacs/src/keyboard.c /^not_single_kboard_state (KBOARD *kboard)$/ npending c-src/emacs/src/keyboard.c 7244 +/N ps-src/rfc1245.ps /^\/N { $/ +/nredt ps-src/rfc1245.ps /^\/nredt 256 array def$/ nsbot tex-src/texinfo.tex /^\\def\\nsbot{\\vbox$/ nstop tex-src/texinfo.tex /^\\def\\nstop{\\vbox$/ +/Ntilde ps-src/rfc1245.ps /^\/Ntilde \/Odieresis \/Udieresis \/aacute \/agrave \/aci/ ntool_bar_items c-src/emacs/src/keyboard.c 7974 -numOfChannels cp-src/c.C 1 -num_columns cp-src/conway.cpp 16 -num_input_events c-src/emacs/src/keyboard.c 210 -num_regs c-src/emacs/src/regex.h 430 -num_rows cp-src/conway.cpp 15 -numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/ -number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/ +NULL_PTR y-src/cccp.y 63 +NULL y-src/cccp.y 51 numberedsec tex-src/texinfo.tex /^\\outer\\def\\numberedsec{\\parsearg\\seczzz}$/ numberedsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsec{\\parsearg\\numberedsubsec/ numberedsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubseczzz #1{\\seccheck{subsection}%$/ numberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\numberedsubsubsec{\\parsearg\\numberedsub/ numberedsubsubseczzz tex-src/texinfo.tex /^\\def\\numberedsubsubseczzz #1{\\seccheck{subsubsecti/ +numberKeys objcpp-src/SimpleCalc.M /^- numberKeys:sender$/ +number_len c-src/etags.c /^static int number_len (long) ATTRIBUTE_CONST;$/ +/numbersign ps-src/rfc1245.ps /^\/numbersign \/dollar \/percent \/ampersand \/quotesing/ numbervars prol-src/natded.prolog /^numbervars(X):-$/ +num_columns cp-src/conway.cpp 16 numericenumerate tex-src/texinfo.tex /^\\def\\numericenumerate{%$/ +num_input_events c-src/emacs/src/keyboard.c 210 +NUM_MOD_NAMES c-src/emacs/src/keyboard.c 6325 +numOfChannels cp-src/c.C 1 +NUM_RECENT_KEYS c-src/emacs/src/keyboard.c 91 +num_regs c-src/emacs/src/regex.h 430 +num_rows cp-src/conway.cpp 15 +NUMSTATS objc-src/PackInsp.h 36 nvars c-src/emacs/src/lisp.h 3140 obeyedspace tex-src/texinfo.tex /^\\gdef\\obeyedspace{\\ }$/ +Objc_help c-src/etags.c 613 +OBJCPPSRC make-src/Makefile /^OBJCPPSRC=SimpleCalc.H SimpleCalc.M$/ +OBJCSRC make-src/Makefile /^OBJCSRC=Subprocess.h Subprocess.m PackInsp.h PackI/ +Objc_suffixes c-src/etags.c 609 objdef c-src/etags.c 2484 object c-src/emacs/src/lisp.h 2128 object_registry cp-src/clheir.cpp 10 +OBJS make-src/Makefile /^OBJS=${GETOPTOBJS} ${REGEXOBJS} ${CHECKOBJS}$/ objtag c-src/etags.c 2453 objvar c-src/emacs/src/lisp.h 2297 obstack_chunk_alloc y-src/parse.y 47 obstack_chunk_free y-src/parse.y 48 ocatseen c-src/etags.c 2477 +/ocircumflex ps-src/rfc1245.ps /^\/ocircumflex \/odieresis \/otilde \/uacute \/ugrave \/u/ octave_MDiagArray2_h cp-src/MDiagArray2.h 29 octave_Range_h cp-src/Range.h 24 oddfooting tex-src/texinfo.tex /^\\def\\oddfooting{\\parsearg\\oddfootingxxx}$/ @@ -3534,52 +2793,56 @@ oimplementation c-src/etags.c 2474 oinbody c-src/etags.c 2478 ok objc-src/PackInsp.m /^-ok:sender$/ ok_to_echo_at_next_pause c-src/emacs/src/keyboard.c 159 -old_value c-src/emacs/src/lisp.h 2980 oldpage tex-src/texinfo.tex /^ \\let\\oldpage = \\page$/ +old_value c-src/emacs/src/lisp.h 2980 omethodcolon c-src/etags.c 2481 omethodparm c-src/etags.c 2482 omethodsign c-src/etags.c 2479 omethodtag c-src/etags.c 2480 -one tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/ onepageout tex-src/texinfo.tex /^\\def\\cropmarks{\\let\\onepageout=\\croppageout }$/ onepageout tex-src/texinfo.tex /^\\def\\onepageout#1{\\hoffset=\\normaloffset$/ +one tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/ onone c-src/etags.c 2472 oparenseen c-src/etags.c 2476 -open objc-src/PackInsp.m /^-open:sender$/ -open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/ -openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/ +OPENBUTTON objc-src/PackInsp.m 47 opencontents tex-src/texinfo.tex /^\\def\\opencontents{\\openout \\contentsfile = \\jobnam/ +open-dribble-file c-src/emacs/src/keyboard.c /^DEFUN ("open-dribble-file", Fopen_dribble_file, So/ openindices tex-src/texinfo.tex /^\\def\\openindices{%$/ +openInWorkspace objc-src/PackInsp.m /^static void openInWorkspace(const char *filename)$/ +open objc-src/PackInsp.m /^-open:sender$/ operationKeys objcpp-src/SimpleCalc.M /^- operationKeys:sender$/ -operator y-src/cccp.y 438 -operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/ -operator += cp-src/functions.cpp /^Date & Date::operator += ( int days ){$/ +operator+ cp-src/c.C /^ A operator+(A& a) {};$/ +operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/ operator - cp-src/c.C /^void operator -(int, int) {}$/ -operator - cp-src/functions.cpp /^int Date::operator - ( Date d ){$/ -operator -- cp-src/functions.cpp /^Date & Date::operator -- ( void ){$/ -operator -= cp-src/functions.cpp /^Date & Date::operator -= ( int days ){$/ -operator < cp-src/functions.cpp /^int Date::operator < ( Date d ) {$/ -operator << cp-src/functions.cpp /^ostream& operator << ( ostream &c, Date d ) {$/ -operator = cp-src/MDiagArray2.h /^ MDiagArray2& operator = (const MDiagArray2/ +operator+ cp-src/c.C /^void operator+(int, int) {}$/ operator = cp-src/functions.cpp /^Date & Date::operator = ( Date d ){$/ +operator += cp-src/functions.cpp /^Date & Date::operator += ( int days ){$/ +operator -= cp-src/functions.cpp /^Date & Date::operator -= ( int days ){$/ +operator ++ cp-src/functions.cpp /^Date & Date::operator ++ ( void ){$/ +operator -- cp-src/functions.cpp /^Date & Date::operator -- ( void ){$/ +operator - cp-src/functions.cpp /^int Date::operator - ( Date d ){$/ +operator < cp-src/functions.cpp /^int Date::operator < ( Date d ) {$/ operator == cp-src/functions.cpp /^int Date::operator == ( Date d ) {$/ operator > cp-src/functions.cpp /^int Date::operator > ( Date d ) {$/ operator >> cp-src/functions.cpp /^istream& operator >> ( istream &i, Date & dd ){$/ -operator MArray2 cp-src/MDiagArray2.h /^ operator MArray2 () const$/ +operator << cp-src/functions.cpp /^ostream& operator << ( ostream &c, Date d ) {$/ +operator = cp-src/MDiagArray2.h /^ MDiagArray2& operator = (const MDiagArray2/ +OperatorFun c-src/h.h 88 operator int cp-src/c.C /^void operator int(int, int) {}$/ operator int cp-src/fail.C /^ operator int() const {return x;}$/ -operator+ cp-src/c.C /^ A operator+(A& a) {};$/ -operator+ cp-src/c.C /^const A& A::operator+(const A&) { }$/ -operator+ cp-src/c.C /^void operator+(int, int) {}$/ +operator MArray2 cp-src/MDiagArray2.h /^ operator MArray2 () const$/ +operator y-src/cccp.y 438 opheader\defoptype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/ opnested tex-src/texinfo.tex /^\\gdef\\opnested{\\char`\\(\\global\\advance\\parencount / opnr tex-src/texinfo.tex /^\\def\\opnr{{\\sf\\char`\\(}} \\def\\clnr{{\\sf\\char`\\)}} / opparsebody\Edefop tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/ oprm tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested / oprotocol c-src/etags.c 2473 +/O ps-src/rfc1245.ps /^\/O {closepath} bind def$/ optheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/ -option c-src/getopt.h 73 optional_argument c-src/getopt.h 91 +option c-src/getopt.h 73 +OPTIONS make-src/Makefile /^OPTIONS=--members --declarations --regex=@regexfil/ optx\defoptheader tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/ optype tex-src/texinfo.tex /^\\begingroup\\defname {#2}{\\defoptype{} on #1}%$/ optype tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defopheader\\defoptyp/ @@ -3588,129 +2851,193 @@ opx\defopheader tex-src/texinfo.tex /^\\defopparsebody\\Edefop\\defopx\\defophea ord_add_element prol-src/ordsets.prolog /^ord_add_element([], Element, [Element]).$/ ord_del_element prol-src/ordsets.prolog /^ord_del_element([], _, []).$/ ord_disjoint prol-src/ordsets.prolog /^ord_disjoint(Set1, Set2) :-$/ -ord_intersect prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1], [Head2|Tail2]) :-$/ -ord_intersection prol-src/ordsets.prolog /^ord_intersection(Sets, Intersection) :- $/ -ord_intersection prol-src/ordsets.prolog /^ord_intersection([], Set2, [], Set2).$/ -ord_intersection prol-src/ordsets.prolog /^ord_intersection([], _, []).$/ +/ordfeminine ps-src/rfc1245.ps /^\/ordfeminine \/ordmasculine \/.notdef \/ae \/oslash \/q/ ord_intersection2 prol-src/ordsets.prolog /^ord_intersection2(1, [Set|Sets], Set0, Sets0) :- !/ ord_intersection3 prol-src/ordsets.prolog /^ord_intersection3(<, _, Set1, Head2, Tail2, Inters/ ord_intersection4 prol-src/ordsets.prolog /^ord_intersection4(<, _, Set1, Head2, Tail2, Inters/ +ord_intersection prol-src/ordsets.prolog /^ord_intersection([], _, []).$/ +ord_intersection prol-src/ordsets.prolog /^ord_intersection([], Set2, [], Set2).$/ +ord_intersection prol-src/ordsets.prolog /^ord_intersection(Sets, Intersection) :- $/ +ord_intersect prol-src/ordsets.prolog /^ord_intersect([Head1|Tail1], [Head2|Tail2]) :-$/ ord_member prol-src/ordsets.prolog /^ord_member(X, [E|Es]) :-$/ ord_seteq prol-src/ordsets.prolog /^ord_seteq(Set1, Set2) :-$/ ord_setproduct prol-src/ordsets.prolog /^ord_setproduct([], _, []).$/ ord_subset prol-src/ordsets.prolog /^ord_subset([], _).$/ ord_subtract prol-src/ordsets.prolog /^ord_subtract(Set1, Set2, Union) :-$/ ord_symdiff prol-src/ordsets.prolog /^ord_symdiff([], Set2, Set2).$/ -ord_union prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/ -ord_union prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union = [].$/ ord_union4 prol-src/ordsets.prolog /^ord_union4(<, Head, Set1, Head2, Tail2, [Head|Unio/ ord_union_all prol-src/ordsets.prolog /^ord_union_all(1, [Set|Sets], Set, Sets) :- !.$/ +ord_union prol-src/ordsets.prolog /^ord_union(Set1, Set2, Union) :-$/ +ord_union prol-src/ordsets.prolog /^ord_union([], Union) :- !, Union = [].$/ +OR y-src/cccp.c 10 oss html-src/softwarelibero.html /^Il movimento open source$/ otagseen c-src/etags.c 2475 -outputTime cp-src/c.C 9 +OTAGS make-src/Makefile /^OTAGS: oetags ${SRCS} srclist$/ +/Otilde ps-src/rfc1245.ps /^\/Otilde \/OE \/oe \/endash \/emdash \/quotedblleft \/quo/ output_file perl-src/htlmify-cystic 35 output_files perl-src/htlmify-cystic 32 outputtable html-src/algrthms.html /^Output$/ +outputTime cp-src/c.C 9 outsyn prol-src/natded.prolog /^outsyn(['Any'],_).$/ -p c-src/emacs/src/lisp.h 4673 -p c-src/emacs/src/lisp.h 4679 -p.x forth-src/test-forth.fth /^ 1 CELLS +FIELD p.x \\ A single cell filed name/ -p.y forth-src/test-forth.fth /^ 1 CELLS +FIELD p.y \\ A single cell field name/ -p/f ada-src/etags-test-for.ada /^ function p pragma Import (C,$/ -p/f ada-src/etags-test-for.ada /^function p ("p");$/ -pD c-src/emacs/src/lisp.h 165 -pD c-src/emacs/src/lisp.h 167 -pD c-src/emacs/src/lisp.h 169 -pD c-src/emacs/src/lisp.h 171 -pI c-src/emacs/src/lisp.h 106 -pI c-src/emacs/src/lisp.h 94 -pI c-src/emacs/src/lisp.h 99 -pMd c-src/emacs/src/lisp.h 150 -pMd c-src/emacs/src/lisp.h 155 -pMu c-src/emacs/src/lisp.h 151 -pMu c-src/emacs/src/lisp.h 156 -p_next c-src/etags.c 258 -page tex-src/texinfo.tex /^ \\let\\page = \\oldpage$/ -page tex-src/texinfo.tex /^ \\def\\page{%$/ -page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/ +OVERLAYP c-src/emacs/src/lisp.h /^OVERLAYP (Lisp_Object x)$/ +Overview tex-src/gzip.texi /^@node Overview, Sample, Copying, Top$/ +PackageInspector objc-src/PackInsp.h /^@interface PackageInspector:WMInspector$/ pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chapoddpage$/ -pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager$/ pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager}$/ +pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager$/ pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/ pagecontents tex-src/texinfo.tex /^\\gdef\\pagecontents#1{\\ifvoid\\topins\\else\\unvbox\\to/ -pagesize c-src/emacs/src/gmalloc.c 1707 +/pagedimen ps-src/rfc1245.ps /^\/pagedimen { $/ +pagesize c-src/emacs/src/gmalloc.c 1710 pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/ +page tex-src/texinfo.tex /^ \\def\\page{%$/ +page tex-src/texinfo.tex /^\\def\\page{\\par\\vfill\\supereject}$/ +page tex-src/texinfo.tex /^ \\let\\page = \\oldpage$/ pair merc-src/accumulator.m /^:- import_module pair.$/ -par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/ -par tex-src/texinfo.tex /^{\\let\\par=\\endgraf \\smallbreak}%$/ +/papersize ps-src/rfc1245.ps /^\/papersize {$/ paragraphindent tex-src/texinfo.tex /^\\let\\paragraphindent=\\comment$/ +/paragraph ps-src/rfc1245.ps /^\/paragraph \/germandbls \/registered \/copyright \/tra/ +/parenright ps-src/rfc1245.ps /^\/parenright \/asterisk \/plus \/comma \/hyphen \/period/ parent c-src/emacs/src/keyboard.c 8745 parent c-src/emacs/src/lisp.h 1590 -parse prol-src/natded.prolog /^parse(Ws,Cat):-$/ -parseFromVars php-src/lce_functions.php /^ function parseFromVars($prefix)$/ -parse_c_expression y-src/cccp.y /^parse_c_expression (string)$/ -parse_cgi prol-src/natded.prolog /^parse_cgi(TokenList,KeyVals):-$/ -parse_error y-src/parse.y 82 -parse_escape y-src/cccp.y /^parse_escape (string_ptr)$/ -parse_hash y-src/parse.y 64 -parse_menu_item c-src/emacs/src/keyboard.c /^parse_menu_item (Lisp_Object item, int inmenubar)$/ -parse_modifiers c-src/emacs/src/keyboard.c /^parse_modifiers (Lisp_Object symbol)$/ -parse_modifiers_uncached c-src/emacs/src/keyboard.c /^parse_modifiers_uncached (Lisp_Object symbol, ptrd/ -parse_number y-src/cccp.y /^parse_number (olen)$/ -parse_return y-src/parse.y 74 -parse_return_error y-src/cccp.y 70 -parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/ -parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object / -parse_tree merc-src/accumulator.m /^:- import_module parse_tree.$/ -parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/ parseargdiscardspace tex-src/texinfo.tex /^\\gdef\\parseargdiscardspace {\\begingroup\\obeylines\\/ parseargline tex-src/texinfo.tex /^\\def\\parseargline{\\begingroup \\obeylines \\parsearg/ parsearglinex tex-src/texinfo.tex /^\\gdef\\parsearglinex #1^^M{\\endgroup \\next {#1}}}$/ +parsearg tex-src/texinfo.tex /^\\def\\parsearg #1{\\let\\next=#1\\begingroup\\obeylines/ parseargx tex-src/texinfo.tex /^\\def\\parseargx{%$/ parsebody\Edefmac tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ parsebody\Edefspec tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/ parsebody\Edeftypefun tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody\\Edeftypefun\\deftypef/ parsebody\Edefun tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/ +parse_c_expression y-src/cccp.y /^parse_c_expression (string)$/ +parse_cgi prol-src/natded.prolog /^parse_cgi(TokenList,KeyVals):-$/ +parse_error y-src/parse.y 82 +parse_escape y-src/cccp.y /^parse_escape (string_ptr)$/ +parseFromVars php-src/lce_functions.php /^ function parseFromVars($prefix)$/ +parse_hash y-src/parse.y 64 +parse_menu_item c-src/emacs/src/keyboard.c /^parse_menu_item (Lisp_Object item, int inmenubar)$/ +parse_modifiers c-src/emacs/src/keyboard.c /^parse_modifiers (Lisp_Object symbol)$/ +parse_modifiers_uncached c-src/emacs/src/keyboard.c /^parse_modifiers_uncached (Lisp_Object symbol, ptrd/ +parse_number y-src/cccp.y /^parse_number (olen)$/ +parse prol-src/natded.prolog /^parse(Ws,Cat):-$/ +parse_return_error y-src/cccp.y 70 +parse_return y-src/parse.y 74 +parse_solitary_modifier c-src/emacs/src/keyboard.c /^parse_solitary_modifier (Lisp_Object symbol)$/ +parse_tool_bar_item c-src/emacs/src/keyboard.c /^parse_tool_bar_item (Lisp_Object key, Lisp_Object / +parse_tree merc-src/accumulator.m /^:- import_module parse_tree.$/ +par tex-src/texinfo.tex /^{\\let\\par=\\endgraf \\smallbreak}%$/ +par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/ +Pascal_functions c-src/etags.c /^Pascal_functions (FILE *inf)$/ +Pascal_help c-src/etags.c 621 +Pascal_suffixes c-src/etags.c 619 +PASSRC make-src/Makefile /^PASSRC=common.pas$/ pat c-src/etags.c 262 pattern c-src/etags.c 260 pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapbreak$/ pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chapoddpage$/ pchapsepmacro tex-src/texinfo.tex /^\\global\\let\\pchapsepmacro=\\chappager$/ +p c-src/emacs/src/lisp.h 4673 +p c-src/emacs/src/lisp.h 4679 +pD c-src/emacs/src/lisp.h 165 +pD c-src/emacs/src/lisp.h 167 +pD c-src/emacs/src/lisp.h 169 +pD c-src/emacs/src/lisp.h 171 pdlcount c-src/emacs/src/lisp.h 3046 +PDT c-src/h.h /^ Date 04 May 87 235311 PDT (Mon)$/ pending-delete-mode el-src/TAGTEST.EL /^(defalias 'pending-delete-mode 'delete-selection-m/ pending_funcalls c-src/emacs/src/keyboard.c 4377 pending_signals c-src/emacs/src/keyboard.c 80 +/periodcentered ps-src/rfc1245.ps /^\/periodcentered \/quotesinglbase \/quotedblbase \/per/ +Perl_functions c-src/etags.c /^Perl_functions (FILE *inf)$/ +Perl_help c-src/etags.c 630 +Perl_interpreters c-src/etags.c 628 +PERLSRC make-src/Makefile /^PERLSRC=htlmify-cystic yagrip.pl kai-test.pl mirro/ +Perl_suffixes c-src/etags.c 626 +p/f ada-src/etags-test-for.ada /^function p ("p");$/ +p/f ada-src/etags-test-for.ada /^ function p pragma Import (C,$/ pfatal c-src/etags.c /^pfatal (const char *s1)$/ pfdset c-src/h.h 57 pfnote c-src/etags.c /^pfnote (char *name, bool is_func, char *linestart,/ +/PF ps-src/rfc1245.ps /^\/PF { $/ +PHP_functions c-src/etags.c /^PHP_functions (FILE *inf)$/ +PHP_help c-src/etags.c 639 +PHPSRC make-src/Makefile /^PHPSRC=lce_functions.php ptest.php sendmail.php$/ +PHP_suffixes c-src/etags.c 637 +pI c-src/emacs/src/lisp.h 106 +pI c-src/emacs/src/lisp.h 94 +pI c-src/emacs/src/lisp.h 99 pindex tex-src/texinfo.tex /^\\def\\pindex {\\pgindex}$/ pinned c-src/emacs/src/lisp.h 679 +Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1 is$/ +Pkg1/b ada-src/waroquiers.ada /^package body Pkg1 is$/ +Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return Boolean;$/ +Pkg1_Func1/f ada-src/etags-test-for.ada /^function Pkg1_Func1 return Boolean is$/ +Pkg1_Func1/f ada-src/etags-test-for.ada /^ function Pkg1_Func1 return Boolean is separate;$/ +Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean;$/ +Pkg1_Func1/f ada-src/waroquiers.ada /^function Pkg1_Func1 return Boolean is$/ +Pkg1_Func1/f ada-src/waroquiers.ada /^ function Pkg1_Func1 return Boolean is separate;$/ +Pkg1_Func2/f ada-src/etags-test-for.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/ +Pkg1_Func2/f ada-src/waroquiers.ada /^ function Pkg1_Func2 (Ijk : Integer; Z : Integer)/ +Pkg1_Pkg1/b ada-src/etags-test-for.ada /^package body Pkg1_Pkg1 is$/ +Pkg1_Pkg1/b ada-src/etags-test-for.ada /^ package body Pkg1_Pkg1 is separate;$/ +Pkg1_Pkg1/b ada-src/waroquiers.ada /^package body Pkg1_Pkg1 is$/ +Pkg1_Pkg1/b ada-src/waroquiers.ada /^ package body Pkg1_Pkg1 is separate;$/ +Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Pkg1_Proc1;$/ +Pkg1_Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Pkg1_Proc1 is$/ +Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1;$/ +Pkg1_Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Pkg1_Proc1 is$/ +Pkg1_Pkg1/s ada-src/etags-test-for.ada /^ package Pkg1_Pkg1 is$/ +Pkg1_Pkg1/s ada-src/waroquiers.ada /^ package Pkg1_Pkg1 is$/ +Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1;$/ +Pkg1_Proc1/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc1 is$/ +Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1;$/ +Pkg1_Proc1/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc1 is$/ +Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I : Integer);$/ +Pkg1_Proc2/p ada-src/etags-test-for.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/ +Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer);$/ +Pkg1_Proc2/p ada-src/waroquiers.ada /^ procedure Pkg1_Proc2 (I : Integer) is$/ +Pkg1/s ada-src/etags-test-for.ada /^package Pkg1 is$/ +Pkg1/s ada-src/waroquiers.ada /^package Pkg1 is$/ +plainc c-src/etags.c 2934 plain_C_entries c-src/etags.c /^plain_C_entries (FILE *inf)$/ plain_C_suffixes c-src/etags.c 643 -plainc c-src/etags.c 2934 plainsecheading tex-src/texinfo.tex /^\\def\\plainsecheading #1{\\secheadingi {#1}}$/ plist c-src/emacs/src/lisp.h 2040 plist c-src/emacs/src/lisp.h 697 plus cp-src/functions.cpp /^void Date::plus ( int days , int month , int year / plus go-src/test1.go 5 plusvalseq prol-src/natded.prolog /^plusvalseq([]) --> [].$/ +pMd c-src/emacs/src/lisp.h 150 +pMd c-src/emacs/src/lisp.h 155 +pMu c-src/emacs/src/lisp.h 151 +pMu c-src/emacs/src/lisp.h 156 +p_next c-src/etags.c 258 +POEntryAD php-src/lce_functions.php 29 +POEntry php-src/lce_functions.php 105 +POEntry php-src/lce_functions.php /^ function POEntry()$/ +pointer c-src/emacs/src/lisp.h 2125 point forth-src/test-forth.fth /^BEGIN-STRUCTURE point \\ create the named structure/ point tex-src/texinfo.tex /^\\def\\point{$\\star$}$/ -pointer c-src/emacs/src/lisp.h 2125 -poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/ poll_for_input_1 c-src/emacs/src/keyboard.c /^poll_for_input_1 (void)$/ +poll_for_input c-src/emacs/src/keyboard.c /^poll_for_input (struct atimer *timer)$/ poll_suppress_count c-src/emacs/src/keyboard.c 1908 poll_suppress_count c-src/emacs/src/lisp.h 3047 poll_timer c-src/emacs/src/keyboard.c 1915 -pop-tag-mark el-src/emacs/lisp/progmodes/etags.el /^(defalias 'pop-tag-mark 'xref-pop-marker-stack)$/ -pop_kboard c-src/emacs/src/keyboard.c /^pop_kboard (void)$/ popclass_above c-src/etags.c /^popclass_above (int bracelev)$/ +pop_kboard c-src/emacs/src/keyboard.c /^pop_kboard (void)$/ +pop-tag-mark el-src/emacs/lisp/progmodes/etags.el /^(defalias 'pop-tag-mark 'xref-pop-marker-stack)$/ +POReader php-src/lce_functions.php 163 +POReader php-src/lce_functions.php /^ function POReader($domain, $filename)$/ +PORManager php-src/lce_functions.php 498 +PORManager php-src/lce_functions.php /^ function PORManager()$/ position_to_Time c-src/emacs/src/keyboard.c /^position_to_Time (ptrdiff_t pos)$/ posix_memalign c-src/emacs/src/gmalloc.c /^posix_memalign (void **memptr, size_t alignment, s/ posn-at-point c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-point", Fposn_at_point, Sposn_at_p/ posn-at-x-y c-src/emacs/src/keyboard.c /^DEFUN ("posn-at-x-y", Fposn_at_x_y, Sposn_at_x_y, / possible_sum_sign y-src/cccp.y /^#define possible_sum_sign(a, b, sum) ((((a) ^ (b))/ +PostControls pyt-src/server.py /^ def PostControls(self):$/ post pyt-src/server.py /^ def post(self):$/ +POSTSCRIPTFLAGS make-src/Makefile /^POSTSCRIPTFLAGS=--language=none --regex='#\/[^ \\t{]/ pot_etags_version c-src/etags.c 81 pp1 c-src/dostorture.c /^int pp1($/ pp1 c-src/torture.c /^int pp1($/ @@ -3727,139 +3054,243 @@ pp_html_table_fitch_tree prol-src/natded.prolog /^pp_html_table_fitch_tree(T):-$ pp_html_table_tree prol-src/natded.prolog /^pp_html_table_tree(T):-$/ pp_html_tree prol-src/natded.prolog /^pp_html_tree(ass(Syn,V,'$VAR'(N))):-$/ pp_html_trees prol-src/natded.prolog /^pp_html_trees([T|Ts],N,M):-$/ -pp_lam prol-src/natded.prolog /^pp_lam(Var^Alpha):-$/ pp_lam_bracket prol-src/natded.prolog /^pp_lam_bracket(A^B):-$/ pp_lam_paren prol-src/natded.prolog /^pp_lam_paren(Var^Alpha):-$/ +pp_lam prol-src/natded.prolog /^pp_lam(Var^Alpha):-$/ pp_paren prol-src/natded.prolog /^pp_paren(C):-$/ pp_rule prol-src/natded.prolog /^pp_rule(fe):-write('\/E').$/ -pp_syn prol-src/natded.prolog /^pp_syn(A\/B):-$/ +/P ps-src/rfc1245.ps /^\/P { $/ pp_syn_back prol-src/natded.prolog /^pp_syn_back(A\/B):-$/ pp_syn_paren prol-src/natded.prolog /^pp_syn_paren(A\/B):-$/ +pp_syn prol-src/natded.prolog /^pp_syn(A\/B):-$/ pp_tree prol-src/natded.prolog /^pp_tree(T):-$/ pp_trees prol-src/natded.prolog /^pp_trees([T|Ts],Column):-$/ -pp_word prol-src/natded.prolog /^pp_word(W):-$/ pp_word_list prol-src/natded.prolog /^pp_word_list([]).$/ pp_word_list_rest prol-src/natded.prolog /^pp_word_list_rest([]).$/ +pp_word prol-src/natded.prolog /^pp_word(W):-$/ +Pre_Call_State/t ada-src/2ataspri.ads /^ type Pre_Call_State is new System.Address;$/ +.PRECIOUS make-src/Makefile /^.PRECIOUS: ETAGS CTAGS ETAGS16 CTAGS16 ETAGS17 CTA/ predicate c-src/emacs/src/lisp.h 2307 +prev c.c 175 prev c-src/emacs/src/gmalloc.c 165 prev c-src/emacs/src/gmalloc.c 189 prev c-src/emacs/src/lisp.h 2191 -prev c.c 175 primary tex-src/texinfo.tex /^\\def\\primary #1{\\line{#1\\hfil}}$/ -print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/ -print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/ +PrintAdd go-src/test1.go /^func (n intNumber) PrintAdd() {$/ +PrintAdd go-src/test1.go /^func (s str) PrintAdd() {$/ printClassification php-src/lce_functions.php /^ function printClassification()$/ -print_help c-src/etags.c /^print_help (argument *argbuffer)$/ -print_language_names c-src/etags.c /^print_language_names (void)$/ -print_version c-src/etags.c /^print_version (void)$/ printedmanual tex-src/texinfo.tex /^\\def\\printedmanual{\\ignorespaces #5}%$/ printedmanual tex-src/texinfo.tex /^section ``\\printednodename'' in \\cite{\\printedmanu/ printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #1}%$/ printednodename tex-src/texinfo.tex /^\\def\\printednodename{\\ignorespaces #3}%$/ +print_help c-src/etags.c /^print_help (argument *argbuffer)$/ printindex tex-src/texinfo.tex /^\\def\\printindex{\\parsearg\\doprintindex}$/ +print_language_names c-src/etags.c /^print_language_names (void)$/ printmax_t c-src/emacs/src/lisp.h 148 printmax_t c-src/emacs/src/lisp.h 153 +print tex-src/texinfo.tex /^\\def\\print{\\leavevmode\\lower.1ex\\hbox to 1em{\\hfil/ +print tex-src/texinfo.tex /^\\def\\print{\\realbackslash print}$/ +PRINT_UNDOCUMENTED_OPTIONS_HELP c-src/etags.c 804 +print_version c-src/etags.c /^print_version (void)$/ +Private objc-src/Subprocess.m /^@interface Subprocess(Private)$/ +Private_T/b ada-src/etags-test-for.ada /^ task body Private_T is$/ +Private_T/b ada-src/waroquiers.ada /^ task body Private_T is$/ +Private_T/k ada-src/etags-test-for.ada /^ task Private_T;$/ +Private_T/k ada-src/waroquiers.ada /^ task Private_T;$/ +Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T;$/ +Private_T/p ada-src/etags-test-for.ada /^ procedure Private_T is$/ +Private_T/p ada-src/waroquiers.ada /^ procedure Private_T;$/ +Private_T/p ada-src/waroquiers.ada /^ procedure Private_T is$/ +Private_T/t ada-src/etags-test-for.ada /^ type Private_T is$/ +Private_T/t ada-src/etags-test-for.ada /^ type Private_T is private;$/ +Private_T/t ada-src/waroquiers.ada /^ type Private_T is$/ +Private_T/t ada-src/waroquiers.ada /^ type Private_T is private;$/ +Problems tex-src/gzip.texi /^@node Problems, Concept Index, Tapes, Top$/ proc c-src/h.h 87 process_file c-src/etags.c /^process_file (FILE *fh, char *fn, language *lang)$/ process_file_name c-src/etags.c /^process_file_name (char *file, language *lang)$/ +PROCESSP c-src/emacs/src/lisp.h /^PROCESSP (Lisp_Object a)$/ process_pending_signals c-src/emacs/src/keyboard.c /^process_pending_signals (void)$/ process_special_events c-src/emacs/src/keyboard.c /^process_special_events (void)$/ process_tool_bar_item c-src/emacs/src/keyboard.c /^process_tool_bar_item (Lisp_Object key, Lisp_Objec/ +Proc/t ada-src/2ataspri.ads /^ type Proc is access procedure (Addr : System.Ad/ prof make-src/Makefile /^prof: ETAGS$/ prolog_atom c-src/etags.c /^prolog_atom (char *s, size_t pos)$/ +Prolog_functions c-src/etags.c /^Prolog_functions (FILE *inf)$/ +Prolog_help c-src/etags.c 654 prolog_pr c-src/etags.c /^prolog_pr (char *s, char *last)$/ prolog_skip_comment c-src/etags.c /^prolog_skip_comment (linebuffer *plb, FILE *inf)$/ +Prolog_suffixes c-src/etags.c 652 +PROLSRC make-src/Makefile /^PROLSRC=ordsets.prolog natded.prolog$/ +PROP c-src/emacs/src/keyboard.c 8379 +PROP c-src/emacs/src/keyboard.c /^#define PROP(IDX) AREF (tool_bar_item_properties, / prop c-src/etags.c 209 +PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) \/* empty *\/$/ +PROTECT_MALLOC_STATE c-src/emacs/src/gmalloc.c /^#define PROTECT_MALLOC_STATE(PROT) protect_malloc_/ protect_malloc_state c-src/emacs/src/gmalloc.c /^protect_malloc_state (int protect_p)$/ -ptexL tex-src/texinfo.tex /^\\let\\ptexL=\\L$/ +PRTPKG f-src/entry.for /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ +PRTPKG f-src/entry.strange /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ +PRTPKG f-src/entry.strange_suffix /^ LOGICAL FUNCTION PRTPKG ( SHORT, LONG, EXPL,/ +PSEUDO c-src/sysdep.h /^#define PSEUDO(name, syscall_name, args) / +PSEUDOVECSIZE c-src/emacs/src/lisp.h /^#define PSEUDOVECSIZE(type, nonlispfield) \\$/ +PSEUDOVECTOR_AREA_BITS c-src/emacs/src/lisp.h 818 +PSEUDOVECTOR_FLAG c-src/emacs/src/lisp.h 774 +PSEUDOVECTORP c-src/emacs/src/lisp.h /^PSEUDOVECTORP (Lisp_Object a, int code)$/ +PSEUDOVECTOR_REST_BITS c-src/emacs/src/lisp.h 813 +PSEUDOVECTOR_REST_MASK c-src/emacs/src/lisp.h 814 +PSEUDOVECTOR_SIZE_BITS c-src/emacs/src/lisp.h 808 +PSEUDOVECTOR_SIZE_MASK c-src/emacs/src/lisp.h 809 +PSEUDOVECTOR_TYPEP c-src/emacs/src/lisp.h /^PSEUDOVECTOR_TYPEP (struct vectorlike_header *a, i/ +PS_functions c-src/etags.c /^PS_functions (FILE *inf)$/ +PS_help c-src/etags.c 649 +PSSRC make-src/Makefile /^PSSRC=rfc1245.ps$/ +PS_suffixes c-src/etags.c 647 ptexb tex-src/texinfo.tex /^\\let\\ptexb=\\b$/ ptexbullet tex-src/texinfo.tex /^\\let\\ptexbullet=\\bullet$/ ptexc tex-src/texinfo.tex /^\\let\\ptexc=\\c$/ -ptexdot tex-src/texinfo.tex /^\\let\\ptexdot=\\.$/ ptexdots tex-src/texinfo.tex /^\\let\\ptexdots=\\dots$/ +ptexdot tex-src/texinfo.tex /^\\let\\ptexdot=\\.$/ ptexend tex-src/texinfo.tex /^\\let\\ptexend=\\end$/ ptexequiv tex-src/texinfo.tex /^\\let\\ptexequiv = \\equiv$/ ptexfootnote tex-src/texinfo.tex /^\\let\\ptexfootnote=\\footnote$/ ptexi tex-src/texinfo.tex /^\\let\\ptexi=\\i$/ -ptexl tex-src/texinfo.tex /^\\let\\ptexl=\\l$/ ptexlbrace tex-src/texinfo.tex /^\\let\\ptexlbrace=\\{$/ +ptexl tex-src/texinfo.tex /^\\let\\ptexl=\\l$/ +ptexL tex-src/texinfo.tex /^\\let\\ptexL=\\L$/ ptexrbrace tex-src/texinfo.tex /^\\let\\ptexrbrace=\\}$/ ptexstar tex-src/texinfo.tex /^\\let\\ptexstar=\\*$/ ptext tex-src/texinfo.tex /^\\let\\ptext=\\t$/ pthread_mutexattr_setprio_ceiling/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprio_ceiling$/ pthread_mutexattr_setprotocol/f ada-src/2ataspri.adb /^ function pthread_mutexattr_setprotocol$/ +PTY_LENGTH objc-src/Subprocess.m 21 +PTY_TEMPLATE objc-src/Subprocess.m 20 +Public_T/t ada-src/etags-test-for.ada /^ type Public_T is$/ +Public_T/t ada-src/waroquiers.ada /^ type Public_T is$/ purpose c-src/emacs/src/lisp.h 1594 -push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/ pushclass_above c-src/etags.c /^pushclass_above (int bracelev, char *str, int len)/ +PUSH_C_STR c-src/emacs/src/keyboard.c /^#define PUSH_C_STR(str, listvar) \\$/ +PUSH_HANDLER c-src/emacs/src/lisp.h /^#define PUSH_HANDLER(c, tag_ch_val, handlertype) \\/ +push_kboard c-src/emacs/src/keyboard.c /^push_kboard (struct kboard *k)$/ put_entries c-src/etags.c /^put_entries (register node *np)$/ +PVEC_BOOL_VECTOR c-src/emacs/src/lisp.h 787 +PVEC_BUFFER c-src/emacs/src/lisp.h 788 +PVEC_CHAR_TABLE c-src/emacs/src/lisp.h 796 +PVEC_COMPILED c-src/emacs/src/lisp.h 795 +PVEC_FONT c-src/emacs/src/lisp.h 798 +PVEC_FRAME c-src/emacs/src/lisp.h 785 +PVEC_FREE c-src/emacs/src/lisp.h 783 +PVEC_HASH_TABLE c-src/emacs/src/lisp.h 789 +PVEC_NORMAL_VECTOR c-src/emacs/src/lisp.h 782 +PVEC_OTHER c-src/emacs/src/lisp.h 793 +PVEC_PROCESS c-src/emacs/src/lisp.h 784 +PVEC_SUB_CHAR_TABLE c-src/emacs/src/lisp.h 797 +PVEC_SUBR c-src/emacs/src/lisp.h 792 +PVEC_TERMINAL c-src/emacs/src/lisp.h 790 pvec_type c-src/emacs/src/lisp.h 780 +PVEC_TYPE_MASK c-src/emacs/src/lisp.h 819 +PVEC_WINDOW_CONFIGURATION c-src/emacs/src/lisp.h 791 +PVEC_WINDOW c-src/emacs/src/lisp.h 786 +p.x forth-src/test-forth.fth /^ 1 CELLS +FIELD p.x \\ A single cell filed name/ pxref tex-src/texinfo.tex /^\\def\\pxref#1{see \\xrefX[#1,,,,,,,]}$/ +p.y forth-src/test-forth.fth /^ 1 CELLS +FIELD p.y \\ A single cell field name/ +Python_functions c-src/etags.c /^Python_functions (FILE *inf)$/ +Python_help c-src/etags.c 660 +Python_suffixes c-src/etags.c 658 +PYTSRC make-src/Makefile /^PYTSRC=server.py$/ quantizing html-src/algrthms.html /^Quantizing the Received$/ questo ../c/c.web 34 quiettest make-src/Makefile /^quiettest:$/ quit_char c-src/emacs/src/keyboard.c 192 +QUIT c-src/emacs/src/lisp.h 3101 +QUITP c-src/emacs/src/lisp.h 3112 quit_throw_to_read_char c-src/emacs/src/keyboard.c /^quit_throw_to_read_char (bool from_signal)$/ quotation tex-src/texinfo.tex /^\\def\\quotation{%$/ -qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/ +/quoteleft ps-src/rfc1245.ps /^\/quoteleft \/quoteright \/.notdef \/.notdef \/ydieresi/ qux1 ruby-src/test1.ru /^ :qux1)$/ +qux ruby-src/test1.ru /^ alias_method :qux, :tee, attr_accessor(:bogus)/ qux= ruby-src/test1.ru /^ def qux=(tee)$/ -r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/ -r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/ -r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/ -r tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/ r0 c-src/sysdep.h 54 r1 c-src/sysdep.h 55 r_alloc c-src/emacs/src/lisp.h /^extern void *r_alloc (void **, size_t) ATTRIBUTE_A/ -range_exp y-src/parse.y 269 +Range cp-src/Range.h 35 +Range cp-src/Range.h /^ Range (const Range& r)$/ +Range cp-src/Range.h /^ Range (double b, double l)$/ +Range cp-src/Range.h /^ Range (double b, double l, double i)$/ +Range cp-src/Range.h /^ Range (void)$/ +RANGED_INTEGERP c-src/emacs/src/lisp.h /^RANGED_INTEGERP (intmax_t lo, Lisp_Object x, intma/ range_exp_list y-src/parse.y 273 -raw_keybuf c-src/emacs/src/keyboard.c 116 -raw_keybuf_count c-src/emacs/src/keyboard.c 117 +range_exp y-src/parse.y 269 rawbackslash tex-src/texinfo.tex /^\\let\\rawbackslash=\\relax%$/ -rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/ rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}%$/ +rawbackslashxx tex-src/texinfo.tex /^\\def\\rawbackslashxx{\\indexbackslash}% \\indexbacksl/ +raw_keybuf_count c-src/emacs/src/keyboard.c 117 +raw_keybuf c-src/emacs/src/keyboard.c 116 rbrb tex-src/texinfo.tex /^\\def\\lbrb{{\\bf\\char`\\[}} \\def\\rbrb{{\\bf\\char`\\]}}$/ rbtp c.c 240 -re_iswctype c-src/emacs/src/regex.h 602 -re_nsub c-src/emacs/src/regex.h 364 -re_pattern_buffer c-src/emacs/src/regex.h 335 -re_pattern_buffer c-src/h.h 119 -re_registers c-src/emacs/src/regex.h 428 -re_wchar_t c-src/emacs/src/regex.h 600 -re_wchar_t c-src/emacs/src/regex.h 623 -re_wctype c-src/emacs/src/regex.h 601 -re_wctype_t c-src/emacs/src/regex.h 599 -re_wctype_t c-src/emacs/src/regex.h 618 -re_wctype_to_bit c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc) 0$/ -read cp-src/conway.hpp /^ char read() { return alive; }$/ -read php-src/lce_functions.php /^ function read()$/ -read-key-sequence c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence", Fread_key_sequence, Sr/ -read-key-sequence-vector c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence-vector", Fread_key_seque/ +RCSid objc-src/PackInsp.m 30 read1 ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ read2 ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ +readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/ +READABLE_EVENTS_DO_TIMERS_NOW c-src/emacs/src/keyboard.c 346 +READABLE_EVENTS_FILTER_EVENTS c-src/emacs/src/keyboard.c 347 +READABLE_EVENTS_IGNORE_SQUEEZABLES c-src/emacs/src/keyboard.c 348 +readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/ read_char c-src/emacs/src/keyboard.c /^read_char (int commandflag, Lisp_Object map,$/ read_char_help_form_unwind c-src/emacs/src/keyboard.c /^read_char_help_form_unwind (void)$/ read_char_minibuf_menu_prompt c-src/emacs/src/keyboard.c /^read_char_minibuf_menu_prompt (int commandflag,$/ read_char_x_menu_prompt c-src/emacs/src/keyboard.c /^read_char_x_menu_prompt (Lisp_Object map,$/ +read cp-src/conway.hpp /^ char read() { return alive; }$/ read_decoded_event_from_main_queue c-src/emacs/src/keyboard.c /^read_decoded_event_from_main_queue (struct timespe/ read_event_from_main_queue c-src/emacs/src/keyboard.c /^read_event_from_main_queue (struct timespec *end_t/ -read_key_sequence c-src/emacs/src/keyboard.c /^read_key_sequence (Lisp_Object *keybuf, int bufsiz/ read_key_sequence_cmd c-src/emacs/src/keyboard.c 232 +read-key-sequence c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence", Fread_key_sequence, Sr/ +read_key_sequence c-src/emacs/src/keyboard.c /^read_key_sequence (Lisp_Object *keybuf, int bufsiz/ read_key_sequence_remapped c-src/emacs/src/keyboard.c 233 +read-key-sequence-vector c-src/emacs/src/keyboard.c /^DEFUN ("read-key-sequence-vector", Fread_key_seque/ read_key_sequence_vs c-src/emacs/src/keyboard.c /^read_key_sequence_vs (Lisp_Object prompt, Lisp_Obj/ -read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/ -read_toc perl-src/htlmify-cystic /^sub read_toc ()$/ -readable_events c-src/emacs/src/keyboard.c /^readable_events (int flags)$/ -readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/ readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/ readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE / -realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/ -realloc c-src/emacs/src/gmalloc.c 1720 +Read_Lock/p ada-src/2ataspri.adb /^ procedure Read_Lock (L : in out Lock; Ceiling_V/ +Read_Lock/p ada-src/2ataspri.ads /^ procedure Read_Lock (L : in out Lock; Ceiling_V/ +read_menu_command c-src/emacs/src/keyboard.c /^read_menu_command (void)$/ +read php-src/lce_functions.php /^ function read()$/ +read_toc perl-src/htlmify-cystic /^sub read_toc ()$/ +ReadVacation cp-src/functions.cpp /^void ReadVacation ( char *filename ) {$/ +realloc c-src/emacs/src/gmalloc.c 1723 realloc c-src/emacs/src/gmalloc.c 65 realloc c-src/emacs/src/gmalloc.c 69 +_realloc c-src/emacs/src/gmalloc.c /^_realloc (void *ptr, size_t size)$/ +realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/ reallochook c-src/emacs/src/gmalloc.c /^reallochook (void *ptr, size_t size)$/ -recent-keys c-src/emacs/src/keyboard.c /^DEFUN ("recent-keys", Frecent_keys, Srecent_keys, / +_realloc_internal c-src/emacs/src/gmalloc.c /^_realloc_internal (void *ptr, size_t size)$/ +_realloc_internal_nolock c-src/emacs/src/gmalloc.c /^_realloc_internal_nolock (void *ptr, size_t size)$/ +RE_BACKSLASH_ESCAPE_IN_LISTS c-src/emacs/src/regex.h 47 +RE_BK_PLUS_QM c-src/emacs/src/regex.h 52 +RECC_ALNUM c-src/emacs/src/regex.h 610 +RECC_ALPHA c-src/emacs/src/regex.h 610 +RECC_ASCII c-src/emacs/src/regex.h 617 +RECC_BLANK c-src/emacs/src/regex.h 615 +RECC_CNTRL c-src/emacs/src/regex.h 613 +RECC_DIGIT c-src/emacs/src/regex.h 614 +RECC_ERROR c-src/emacs/src/regex.h 609 +RECC_GRAPH c-src/emacs/src/regex.h 611 +RECC_LOWER c-src/emacs/src/regex.h 612 +RECC_MULTIBYTE c-src/emacs/src/regex.h 616 +RECC_NONASCII c-src/emacs/src/regex.h 616 +RECC_PRINT c-src/emacs/src/regex.h 611 +RECC_PUNCT c-src/emacs/src/regex.h 613 +RECC_SPACE c-src/emacs/src/regex.h 615 +RECC_UNIBYTE c-src/emacs/src/regex.h 617 +RECC_UPPER c-src/emacs/src/regex.h 612 +RECC_WORD c-src/emacs/src/regex.h 610 +RECC_XDIGIT c-src/emacs/src/regex.h 614 recent_keys c-src/emacs/src/keyboard.c 100 +recent-keys c-src/emacs/src/keyboard.c /^DEFUN ("recent-keys", Frecent_keys, Srecent_keys, / recent_keys_index c-src/emacs/src/keyboard.c 94 +RE_CHAR_CLASSES c-src/emacs/src/regex.h 58 +RE_CONTEXT_INDEP_ANCHORS c-src/emacs/src/regex.h 72 +RE_CONTEXT_INDEP_OPS c-src/emacs/src/regex.h 80 +RE_CONTEXT_INVALID_OPS c-src/emacs/src/regex.h 84 record_asynch_buffer_change c-src/emacs/src/keyboard.c /^record_asynch_buffer_change (void)$/ record_auto_save c-src/emacs/src/keyboard.c /^record_auto_save (void)$/ record_char c-src/emacs/src/keyboard.c /^record_char (Lisp_Object c)$/ @@ -3867,71 +3298,176 @@ record_menu_key c-src/emacs/src/keyboard.c /^record_menu_key (Lisp_Object c)$/ record_single_kboard_state c-src/emacs/src/keyboard.c /^record_single_kboard_state ()$/ record_xmalloc c-src/emacs/src/lisp.h /^extern void *record_xmalloc (size_t) ATTRIBUTE_ALL/ recover_top_level_message c-src/emacs/src/keyboard.c 138 +Rectangle.getPos lua-src/test.lua /^function Rectangle.getPos ()$/ recursion-depth c-src/emacs/src/keyboard.c /^DEFUN ("recursion-depth", Frecursion_depth, Srecur/ -recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("recursive-edit", Frecursive_edit, Srecursi/ recursive_edit_1 c-src/emacs/src/keyboard.c /^recursive_edit_1 (void)$/ +recursive-edit c-src/emacs/src/keyboard.c /^DEFUN ("recursive-edit", Frecursive_edit, Srecursi/ recursive_edit_unwind c-src/emacs/src/keyboard.c /^recursive_edit_unwind (Lisp_Object buffer)$/ +RED cp-src/screen.hpp 16 +RE_DEBUG c-src/emacs/src/regex.h 161 redirect c-src/emacs/src/lisp.h 663 +RE_DOT_NEWLINE c-src/emacs/src/regex.h 88 +RE_DOT_NOT_NULL c-src/emacs/src/regex.h 92 reduce prol-src/natded.prolog /^reduce((X^M)@N,L):- % beta reduction$/ reduce_subterm prol-src/natded.prolog /^reduce_subterm(M,M2):-$/ -ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/ +RE_DUP_MAX c-src/emacs/src/regex.h 253 +RE_DUP_MAX c-src/emacs/src/regex.h 256 +/ReEncode ps-src/rfc1245.ps /^\/ReEncode { $/ refill tex-src/texinfo.tex /^\\let\\refill=\\relax$/ refreshPort pyt-src/server.py /^ def refreshPort(self):$/ +RE_FRUGAL c-src/emacs/src/regex.h 147 +ref tex-src/texinfo.tex /^\\def\\ref#1{\\xrefX[#1,,,,,,,]}$/ refx tex-src/texinfo.tex /^\\def\\refx#1#2{%$/ -reg_errcode_t c-src/emacs/src/regex.h 323 +REG_BADBR c-src/emacs/src/regex.h 313 +REG_BADPAT c-src/emacs/src/regex.h 305 +REG_BADRPT c-src/emacs/src/regex.h 316 +REG_EBRACE c-src/emacs/src/regex.h 312 +REG_EBRACK c-src/emacs/src/regex.h 310 +REG_ECOLLATE c-src/emacs/src/regex.h 306 +REG_ECTYPE c-src/emacs/src/regex.h 307 +REG_EEND c-src/emacs/src/regex.h 319 +REG_EESCAPE c-src/emacs/src/regex.h 308 +REG_ENOSYS c.c 279 +REG_ENOSYS c-src/emacs/src/regex.h 297 +REG_EPAREN c-src/emacs/src/regex.h 311 +REG_ERANGE c-src/emacs/src/regex.h 314 +REG_ERANGEX c-src/emacs/src/regex.h 322 +REG_ERPAREN c-src/emacs/src/regex.h 321 reg_errcode_t c.c 279 -reg_syntax_t c-src/emacs/src/regex.h 43 +reg_errcode_t c-src/emacs/src/regex.h 323 +REG_ESIZE c-src/emacs/src/regex.h 320 +REG_ESPACE c-src/emacs/src/regex.h 315 +REG_ESUBREG c-src/emacs/src/regex.h 309 regex c-src/etags.c 219 -regex.o make-src/Makefile /^regex.o: emacs\/src\/regex.c$/ -regex_t c-src/emacs/src/regex.h 416 -regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/ regexfile make-src/Makefile /^regexfile: Makefile$/ +_REGEX_H c-src/emacs/src/regex.h 21 +REGEX make-src/Makefile /^REGEX=\/[ \\t]*DEFVAR_[A-Z_ \\t\\n(]+"\\([^"]+\\)"\/$/ +REGEXOBJS make-src/Makefile /^REGEXOBJS=regex.o$/ +regex.o make-src/Makefile /^regex.o: emacs\/src\/regex.c$/ regexp c-src/etags.c 256 regexp c-src/etags.c 268 +regex_tag_multiline c-src/etags.c /^regex_tag_multiline (void)$/ +regex_t c-src/emacs/src/regex.h 416 +REG_EXTENDED c-src/emacs/src/regex.h 263 +REG_ICASE c-src/emacs/src/regex.h 267 registerAction objcpp-src/SimpleCalc.M /^- registerAction:(SEL)action$/ register_heapinfo c-src/emacs/src/gmalloc.c /^register_heapinfo (void)$/ regmatch_t c-src/emacs/src/regex.h 451 +REG_NEWLINE c-src/emacs/src/regex.h 272 +REG_NOERROR c-src/emacs/src/regex.h 300 +REG_NOMATCH c-src/emacs/src/regex.h 301 +REG_NOSUB c-src/emacs/src/regex.h 276 +REG_NOTBOL c-src/emacs/src/regex.h 286 +REG_NOTEOL c-src/emacs/src/regex.h 289 regoff_t c-src/emacs/src/regex.h 423 -regs c-src/etags.c 263 -regs cp-src/screen.cpp 16 regs_allocated c-src/emacs/src/regex.h 379 +regs cp-src/screen.cpp 16 +regs c-src/etags.c 263 regset c-src/h.h 31 +REGS_FIXED c-src/emacs/src/regex.h 378 +REGS_REALLOCATE c-src/emacs/src/regex.h 377 +REGS_UNALLOCATED c-src/emacs/src/regex.h 376 +reg_syntax_t c-src/emacs/src/regex.h 43 regular_top_level_message c-src/emacs/src/keyboard.c 143 rehash_size c-src/emacs/src/lisp.h 1835 rehash_threshold c-src/emacs/src/lisp.h 1839 +RE_HAT_LISTS_NOT_NEWLINE c-src/emacs/src/regex.h 96 +RE_INTERVALS c-src/emacs/src/regex.h 101 +re_iswctype c-src/emacs/src/regex.h 602 relative_filename c-src/etags.c /^relative_filename (char *file, char *dir)$/ release distrib make-src/Makefile /^release distrib: web$/ +RELEASELIST make-src/Makefile /^RELEASELIST=pot@gnu.org xemacs-review@xemacs.org j/ +ReleaseNameString pas-src/common.pas /^procedure ReleaseNameString; (* (var NSP: NameStri/ +RE_LIMITED_OPS c-src/emacs/src/regex.h 105 removeexp prol-src/natded.prolog /^removeexp(E,E,'NIL'):-!.$/ +RemoveLayer lua-src/allegro.lua /^function RemoveLayer ()$/ +RemoveUnderlineControl pas-src/common.pas /^function RemoveUnderlineControl; (*($/ +RE_NEWLINE_ALT c-src/emacs/src/regex.h 109 +RE_NO_BK_BRACES c-src/emacs/src/regex.h 114 +RE_NO_BK_PARENS c-src/emacs/src/regex.h 118 +RE_NO_BK_REFS c-src/emacs/src/regex.h 122 +RE_NO_BK_VBAR c-src/emacs/src/regex.h 126 +RE_NO_EMPTY_RANGES c-src/emacs/src/regex.h 132 +RE_NO_GNU_OPS c-src/emacs/src/regex.h 144 +RE_NO_NEWLINE_ANCHOR c-src/emacs/src/regex.h 153 +RE_NO_POSIX_BACKTRACKING c-src/emacs/src/regex.h 140 +RE_NREGS c-src/emacs/src/regex.h 440 +re_nsub c-src/emacs/src/regex.h 364 reorder_modifiers c-src/emacs/src/keyboard.c /^reorder_modifiers (Lisp_Object symbol)$/ +re_pattern_buffer c-src/emacs/src/regex.h 335 +re_pattern_buffer c-src/h.h 119 +ReprOfChar pas-src/common.pas /^function ReprOfChar; (*( ch : char) : NameString;*/ +__repr__ pyt-src/server.py /^ def __repr__(self):$/ request c.c /^request request (a, b)$/ requeued_events_pending_p c-src/emacs/src/keyboard.c /^requeued_events_pending_p (void)$/ -require merc-src/accumulator.m /^:- import_module require.$/ required_argument c-src/getopt.h 90 -reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/ +require merc-src/accumulator.m /^:- import_module require.$/ +re_registers c-src/emacs/src/regex.h 428 resetmathfonts tex-src/texinfo.tex /^\\def\\resetmathfonts{%$/ -rest tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/ +reset-this-command-lengths c-src/emacs/src/keyboard.c /^DEFUN ("reset-this-command-lengths", Freset_this_c/ +RE_SHY_GROUPS c-src/emacs/src/regex.h 150 restore_getcjmp c-src/emacs/src/keyboard.c /^restore_getcjmp (sys_jmp_buf temp)$/ restore_kboard_configuration c-src/emacs/src/keyboard.c /^restore_kboard_configuration (int was_locked)$/ +/restorematrix ps-src/rfc1245.ps /^\/restorematrix {$/ +_Restrict_arr_ c-src/emacs/src/regex.h 555 +_Restrict_arr_ c-src/emacs/src/regex.h 557 +_Restrict_ c-src/emacs/src/regex.h 540 +_Restrict_ c-src/emacs/src/regex.h 542 +_Restrict_ c-src/emacs/src/regex.h 544 +rest tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/ result tex-src/texinfo.tex /^\\def\\result{\\leavevmode\\raise.15ex\\hbox to 1em{\\hf/ result tex-src/texinfo.tex /^\\def\\result{\\realbackslash result}$/ +RESUME_POLLING c-src/emacs/src/keyboard.c 2170 +RE_SYNTAX_AWK c-src/emacs/src/regex.h 186 +RE_SYNTAX_ED c-src/emacs/src/regex.h 216 +RE_SYNTAX_EGREP c-src/emacs/src/regex.h 206 +RE_SYNTAX_EMACS c-src/emacs/src/regex.h 183 +RE_SYNTAX_GNU_AWK c-src/emacs/src/regex.h 193 +RE_SYNTAX_GREP c-src/emacs/src/regex.h 201 +RE_SYNTAX_POSIX_AWK c-src/emacs/src/regex.h 197 +RE_SYNTAX_POSIX_BASIC c-src/emacs/src/regex.h 225 +_RE_SYNTAX_POSIX_COMMON c-src/emacs/src/regex.h 221 +RE_SYNTAX_POSIX_EGREP c-src/emacs/src/regex.h 212 +RE_SYNTAX_POSIX_EXTENDED c-src/emacs/src/regex.h 234 +RE_SYNTAX_POSIX_MINIMAL_BASIC c-src/emacs/src/regex.h 231 +RE_SYNTAX_POSIX_MINIMAL_EXTENDED c-src/emacs/src/regex.h 242 +RE_SYNTAX_SED c-src/emacs/src/regex.h 218 +RE_TRANSLATE_TYPE c-src/emacs/src/regex.h 332 return_to_command_loop c-src/emacs/src/keyboard.c 135 +RETURN_UNGCPRO c-src/emacs/src/lisp.h /^#define RETURN_UNGCPRO(expr) \\$/ +RE_UNMATCHED_RIGHT_PAREN_ORD c-src/emacs/src/regex.h 136 reverse prol-src/natded.prolog /^reverse([],Ws,Ws).$/ revert objc-src/PackInsp.m /^-revert:sender$/ +re_wchar_t c-src/emacs/src/regex.h 600 +re_wchar_t c-src/emacs/src/regex.h 623 +re_wctype c-src/emacs/src/regex.h 601 +re_wctype_t c-src/emacs/src/regex.h 599 +re_wctype_t c-src/emacs/src/regex.h 618 +re_wctype_to_bit c-src/emacs/src/regex.h /^# define re_wctype_to_bit(cc) 0$/ +/RF ps-src/rfc1245.ps /^\/RF { $/ right c-src/etags.c 216 right_shift y-src/cccp.y /^right_shift (a, b)$/ ring1 c.c 241 ring2 c.c 242 -rm tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/ -rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/ rm_eo c-src/emacs/src/regex.h 450 rm_so c-src/emacs/src/regex.h 449 +rm tex-src/texinfo.tex /^\\def\\rm{\\realbackslash rm }%$/ +rm tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/ rng_base cp-src/Range.h 79 rng_inc cp-src/Range.h 81 rng_limit cp-src/Range.h 80 rng_nelem cp-src/Range.h 83 rosso cp-src/c.C 40 +/R ps-src/rfc1245.ps /^\/R { $/ +/RR ps-src/rfc1245.ps /^\/RR { $/ +RSH y-src/cccp.c 17 rsyncfromfly make-src/Makefile /^rsyncfromfly:$/ rsynctofly make-src/Makefile /^rsynctofly:$/ +RTE/s ada-src/2ataspri.adb /^ package RTE renames Interfaces.C.POSIX_RTE;$/ +r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}%$/ +r tex-src/texinfo.tex /^\\def\\r##1{\\realbackslash r {##1}}$/ +r tex-src/texinfo.tex /^\\def\\r#1{{\\rm #1}} % roman font$/ +r tex-src/texinfo.tex /^\\let\\r=\\indexdummyfont$/ rtint c-src/h.h 60 rtint c-src/h.h 68 rtstr c-src/h.h 61 @@ -3941,153 +3477,239 @@ rtunion_def c-src/h.h 64 rtx c-src/h.h 62 rtxnp c-src/h.h 71 rtxp c-src/h.h 70 -s c-src/emacs/src/lisp.h 4672 -s c-src/emacs/src/lisp.h 4678 +` ruby-src/test.rb /^ def `(command)$/ ++ ruby-src/test.rb /^ def +(y)$/ +<< ruby-src/test.rb /^ def <<(y)$/ +<= ruby-src/test.rb /^ def <=(y)$/ +<=> ruby-src/test.rb /^ def <=>(y)$/ +== ruby-src/test.rb /^ def ==(y)$/ +=== ruby-src/test.rb /^ def ===(y)$/ +[] ruby-src/test.rb /^ def [](y)$/ +[]= ruby-src/test.rb /^ def []=(y, val)$/ +RUN make-src/Makefile /^RUN=$/ +RUN make-src/Makefile /^RUN=time --quiet --format '%U + %S: %E'$/ +RXINCLUDE make-src/Makefile /^RXINCLUDE=-Iemacs\/src$/ s1 cp-src/c.C 32 +/s1 ps-src/rfc1245.ps /^\/s1 1 string def$/ s2 cp-src/c.C 35 +SAFE_ALLOCA c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA(size) ((size) <= sa_avail \\/ +SAFE_ALLOCA_LISP c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_LISP(buf, nelt) \\$/ +SAFE_ALLOCA_STRING c-src/emacs/src/lisp.h /^#define SAFE_ALLOCA_STRING(ptr, string) \\$/ +SAFE_FREE c-src/emacs/src/lisp.h /^#define SAFE_FREE() \\$/ +SAFE_NALLOCA c-src/emacs/src/lisp.h /^#define SAFE_NALLOCA(buf, multiplier, nitems) \\/ safe_run_hook_funcall c-src/emacs/src/keyboard.c /^safe_run_hook_funcall (ptrdiff_t nargs, Lisp_Objec/ -safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/ safe_run_hooks_1 c-src/emacs/src/keyboard.c /^safe_run_hooks_1 (ptrdiff_t nargs, Lisp_Object *ar/ +safe_run_hooks c-src/emacs/src/keyboard.c /^safe_run_hooks (Lisp_Object hook)$/ safe_run_hooks_error c-src/emacs/src/keyboard.c /^safe_run_hooks_error (Lisp_Object error, ptrdiff_t/ -samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/ -samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/ +Sample tex-src/gzip.texi /^@node Sample, Invoking gzip, Overview, Top$/ samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}%$/ +samp tex-src/texinfo.tex /^\\def\\samp##1{\\realbackslash samp {##1}}$/ +samp tex-src/texinfo.tex /^\\def\\samp #1{`\\tclose{#1}'\\null}$/ samp tex-src/texinfo.tex /^\\let\\samp=\\indexdummyfont$/ -save pyt-src/server.py /^ def save(self):$/ +/sangle ps-src/rfc1245.ps /^\/sangle 1 0 dmatrix defaultmatrix dtransform exch / +SAVE_FUNCPOINTER c-src/emacs/src/lisp.h 2049 save_getcjmp c-src/emacs/src/keyboard.c /^save_getcjmp (sys_jmp_buf temp)$/ -save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/ +SAVE_INTEGER c-src/emacs/src/lisp.h 2048 +/savematrix ps-src/rfc1245.ps /^\/savematrix {$/ savenstr c-src/etags.c /^savenstr (const char *cp, int len)$/ +SAVE_OBJECT c-src/emacs/src/lisp.h 2051 +SAVE_POINTER c-src/emacs/src/lisp.h 2050 +save pyt-src/server.py /^ def save(self):$/ +SAVE_SLOT_BITS c-src/emacs/src/lisp.h 2055 savestr c-src/etags.c /^savestr (const char *cp)$/ +SAVE_TYPE_BITS c-src/emacs/src/lisp.h 2062 +SAVE_TYPE_BITS c-src/emacs/src/lisp.h 2114 +SAVE_TYPE_BITS c-src/emacs/src/lisp.h 2123 +save_type c-src/emacs/src/lisp.h /^save_type (struct Lisp_Save_Value *v, int n)$/ +SAVE_TYPE_FUNCPTR_PTR_OBJ c-src/emacs/src/lisp.h 2076 +SAVE_TYPE_INT_INT c-src/emacs/src/lisp.h 2066 +SAVE_TYPE_INT_INT_INT c-src/emacs/src/lisp.h 2067 +SAVE_TYPE_MEMORY c-src/emacs/src/lisp.h 2080 +SAVE_TYPE_OBJ_OBJ c-src/emacs/src/lisp.h 2069 +SAVE_TYPE_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2070 +SAVE_TYPE_OBJ_OBJ_OBJ_OBJ c-src/emacs/src/lisp.h 2071 +SAVE_TYPE_PTR_INT c-src/emacs/src/lisp.h 2073 +SAVE_TYPE_PTR_OBJ c-src/emacs/src/lisp.h 2074 +SAVE_TYPE_PTR_PTR c-src/emacs/src/lisp.h 2075 +SAVE_UNUSED c-src/emacs/src/lisp.h 2047 +SAVE_VALUEP c-src/emacs/src/lisp.h /^SAVE_VALUEP (Lisp_Object x)$/ +SAVE_VALUE_SLOTS c-src/emacs/src/lisp.h 2058 say go-src/test.go /^func say(msg string) {$/ -sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/ -sc tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/ +__sbrk c-src/emacs/src/gmalloc.c 1518 +SBYTES c-src/emacs/src/lisp.h /^SBYTES (Lisp_Object string)$/ scan_separators c-src/etags.c /^scan_separators (char *name)$/ +S c.c 156 +SCHARS c-src/emacs/src/lisp.h /^SCHARS (Lisp_Object string)$/ +Scheme_functions c-src/etags.c /^Scheme_functions (FILE *inf)$/ +Scheme_help c-src/etags.c 667 +Scheme_suffixes c-src/etags.c 665 scolonseen c-src/etags.c 2447 scratch c-src/sysdep.h 56 +SCREEN_FP cp-src/screen.hpp /^#define SCREEN_FP(x,y) \\$/ +SCREEN_START cp-src/screen.hpp 33 scroll_bar_parts c-src/emacs/src/keyboard.c 5189 -sec tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/ +s c-src/emacs/src/lisp.h 4672 +s c-src/emacs/src/lisp.h 4678 +sc tex-src/texinfo.tex /^\\def\\sc#1{{\\smallcaps#1}} % smallcaps font$/ +sc tex-src/texinfo.tex /^\\let\\sc=\\indexdummyfont$/ +SDATA c-src/emacs/src/lisp.h /^SDATA (Lisp_Object string)$/ +SDTrefGetInteger pas-src/common.pas /^function SDTrefGetInteger : integer;$/ +SDTrefIsEnd pas-src/common.pas /^function SDTrefIsEnd : Boolean;$/ +SDTrefRecToString pas-src/common.pas /^procedure SDTrefRecToString (* ($/ +SDTrefSkipSpaces pas-src/common.pas /^procedure SDTrefSkipSpaces;$/ +SDTrefStringToRec pas-src/common.pas /^procedure SDTrefStringToRec (* ($/ seccheck tex-src/texinfo.tex /^\\def\\seccheck#1{\\if \\pageno<0 %$/ +secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/ secentry tex-src/texinfo.tex /^ \\def\\secentry ##1##2##3##4{}$/ secentry tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/ -secentryfonts tex-src/texinfo.tex /^\\def\\secentryfonts{\\textfonts}$/ secfonts tex-src/texinfo.tex /^\\def\\secfonts{%$/ -secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/ secheadingbreak tex-src/texinfo.tex /^\\def\\secheadingbreak{\\dobreak \\secheadingskip {-10/ secheadingi tex-src/texinfo.tex /^\\def\\secheadingi #1{{\\advance \\secheadingskip by \\/ +secheading tex-src/texinfo.tex /^\\def\\secheading #1#2#3{\\secheadingi {#2.#3\\enspace/ secondary tex-src/texinfo.tex /^\\def\\secondary #1#2{$/ +sec tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/ +section_href perl-src/htlmify-cystic /^sub section_href ($)$/ +section_name perl-src/htlmify-cystic 12 +section_name perl-src/htlmify-cystic /^sub section_name ($)$/ section perl-src/htlmify-cystic 25 section tex-src/texinfo.tex /^\\global\\let\\section = \\appendixsec$/ section tex-src/texinfo.tex /^\\global\\let\\section = \\numberedsec$/ section tex-src/texinfo.tex /^\\global\\let\\section = \\unnumberedsec$/ section tex-src/texinfo.tex /^\\let\\section=\\relax$/ -section_href perl-src/htlmify-cystic /^sub section_href ($)$/ -section_name perl-src/htlmify-cystic /^sub section_name ($)$/ -section_name perl-src/htlmify-cystic 12 section_toc perl-src/htlmify-cystic 15 -section_url perl-src/htlmify-cystic /^sub section_url ()$/ section_url_base perl-src/htlmify-cystic /^sub section_url_base ()$/ section_url_name perl-src/htlmify-cystic /^sub section_url_name ()$/ -sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/ +section_url perl-src/htlmify-cystic /^sub section_url ()$/ sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsec{\\parsearg\\appendixsectionzz/ +sectionzzz tex-src/texinfo.tex /^\\outer\\def\\appendixsection{\\parsearg\\appendixsecti/ seczzz tex-src/texinfo.tex /^\\def\\infoappendixsec{\\parsearg\\appendixseczzz}$/ seczzz tex-src/texinfo.tex /^\\def\\seczzz #1{\\seccheck{section}%$/ +select_last prol-src/natded.prolog /^select_last([X],X,[]).$/ +SelectLayer lua-src/allegro.lua /^function SelectLayer (layer)$/ select prol-src/natded.prolog /^select(X,[X|Xs],Xs).$/ select-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table ()$/ select-tags-table-mode el-src/emacs/lisp/progmodes/etags.el /^(define-derived-mode select-tags-table-mode specia/ select-tags-table-mode-map el-src/emacs/lisp/progmodes/etags.el /^(defvar select-tags-table-mode-map ; Doc string?$/ select-tags-table-quit el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table-quit ()$/ select-tags-table-select el-src/emacs/lisp/progmodes/etags.el /^(defun select-tags-table-select (button)$/ -select_last prol-src/natded.prolog /^select_last([X],X,[]).$/ -send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/ +Self/f ada-src/2ataspri.adb /^ function Self return TCB_Ptr is$/ +Self/f ada-src/2ataspri.ads /^ function Self return TCB_Ptr;$/ send objc-src/Subprocess.m /^- send:(const char *)string$/ +send objc-src/Subprocess.m /^- send:(const char *)string withNewline:(BOOL)want/ separator_names c-src/emacs/src/keyboard.c 7372 sepspaces tex-src/texinfo.tex /^\\gdef\\sepspaces{\\def {\\ }}}$/ serializeToVars php-src/lce_functions.php /^ function serializeToVars($prefix)$/ -set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/ -set merc-src/accumulator.m /^:- import_module set.$/ -set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/ -set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/ -set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/ -set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/ -set-output-flow-control c-src/emacs/src/keyboard.c /^DEFUN ("set-output-flow-control", Fset_output_flow/ -set-quit-char c-src/emacs/src/keyboard.c /^DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_/ -setDate cp-src/functions.cpp /^void Date::setDate ( int d , int m , int y ){$/ -setDelegate objc-src/Subprocess.m /^- setDelegate:anObject$/ -setRevertButtonTitle objc-src/PackInsp.m /^-setRevertButtonTitle$/ +ServerEdit pyt-src/server.py /^class ServerEdit(Frame):$/ +Server pyt-src/server.py /^class Server:$/ set_base cp-src/Range.h /^ void set_base (double b) { rng_base = b; }$/ +setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/ +setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/ set_char_table_contents c-src/emacs/src/lisp.h /^set_char_table_contents (Lisp_Object table, ptrdif/ set_char_table_defalt c-src/emacs/src/lisp.h /^set_char_table_defalt (Lisp_Object table, Lisp_Obj/ set_char_table_extras c-src/emacs/src/lisp.h /^set_char_table_extras (Lisp_Object table, ptrdiff_/ set_char_table_purpose c-src/emacs/src/lisp.h /^set_char_table_purpose (Lisp_Object table, Lisp_Ob/ +set cp-src/conway.hpp /^ void set(void) { alive = 1; }$/ +setDate cp-src/functions.cpp /^void Date::setDate ( int d , int m , int y ){$/ +setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/ +setDelegate objc-src/Subprocess.m /^- setDelegate:anObject$/ +setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/ +setfilename tex-src/texinfo.tex /^ \\global\\let\\setfilename=\\comment % Ignore extra/ set_hash_key_slot c-src/emacs/src/lisp.h /^set_hash_key_slot (struct Lisp_Hash_Table *h, ptrd/ set_hash_value_slot c-src/emacs/src/lisp.h /^set_hash_value_slot (struct Lisp_Hash_Table *h, pt/ set_inc cp-src/Range.h /^ void set_inc (double i) { rng_inc = i; }$/ +set-input-interrupt-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-interrupt-mode", Fset_input_inte/ +set-input-meta-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-meta-mode", Fset_input_meta_mode/ +set-input-mode c-src/emacs/src/keyboard.c /^DEFUN ("set-input-mode", Fset_input_mode, Sset_inp/ set_limit cp-src/Range.h /^ void set_limit (double l) { rng_limit = l; }$/ +/setmanualfeed ps-src/rfc1245.ps /^\/setmanualfeed {$/ +set merc-src/accumulator.m /^:- import_module set.$/ +set-output-flow-control c-src/emacs/src/keyboard.c /^DEFUN ("set-output-flow-control", Fset_output_flow/ set_overlay_plist c-src/emacs/src/lisp.h /^set_overlay_plist (Lisp_Object overlay, Lisp_Objec/ +Set_Own_Priority/p ada-src/2ataspri.adb /^ procedure Set_Own_Priority (Prio : System.Any_P/ +Set_Own_Priority/p ada-src/2ataspri.ads /^ procedure Set_Own_Priority (Prio : System.Any_P/ +/setpapername ps-src/rfc1245.ps /^\/setpapername { $/ +/setpattern ps-src/rfc1245.ps /^\/setpattern {$/ set_poll_suppress_count c-src/emacs/src/keyboard.c /^set_poll_suppress_count (int count)$/ +Set_Priority/p ada-src/2ataspri.adb /^ procedure Set_Priority$/ +Set_Priority/p ada-src/2ataspri.ads /^ procedure Set_Priority (T : TCB_Ptr; Prio : Sys/ set_prop c-src/emacs/src/keyboard.c /^set_prop (ptrdiff_t idx, Lisp_Object val)$/ +SETPRT f-src/entry.for /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ +SETPRT f-src/entry.strange /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ +SETPRT f-src/entry.strange_suffix /^ ENTRY SETPRT ( SHORT, EXPL, LONG, TRACE, D/ +set-quit-char c-src/emacs/src/keyboard.c /^DEFUN ("set-quit-char", Fset_quit_char, Sset_quit_/ +setref tex-src/texinfo.tex /^\\def\\setref#1{%$/ +setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/ +setRevertButtonTitle objc-src/PackInsp.m /^-setRevertButtonTitle$/ set_save_integer c-src/emacs/src/lisp.h /^set_save_integer (Lisp_Object obj, int n, ptrdiff_/ set_save_pointer c-src/emacs/src/lisp.h /^set_save_pointer (Lisp_Object obj, int n, void *va/ set_string_intervals c-src/emacs/src/lisp.h /^set_string_intervals (Lisp_Object s, INTERVAL i)$/ set_sub_char_table_contents c-src/emacs/src/lisp.h /^set_sub_char_table_contents (Lisp_Object table, pt/ +SET_SYMBOL_BLV c-src/emacs/src/lisp.h /^SET_SYMBOL_BLV (struct Lisp_Symbol *sym, struct Li/ set_symbol_function c-src/emacs/src/lisp.h /^set_symbol_function (Lisp_Object sym, Lisp_Object / +SET_SYMBOL_FWD c-src/emacs/src/lisp.h /^SET_SYMBOL_FWD (struct Lisp_Symbol *sym, union Lis/ set_symbol_next c-src/emacs/src/lisp.h /^set_symbol_next (Lisp_Object sym, struct Lisp_Symb/ set_symbol_plist c-src/emacs/src/lisp.h /^set_symbol_plist (Lisp_Object sym, Lisp_Object pli/ -set_upto merc-src/accumulator.m /^:- func set_upto(accu_case, int) = set(accu_goal_i/ -set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/ -setchapternewpage tex-src/texinfo.tex /^\\def\\setchapternewpage #1 {\\csname CHAPPAG#1\\endcs/ -setchapterstyle tex-src/texinfo.tex /^\\def\\setchapterstyle #1 {\\csname CHAPF#1\\endcsname/ -setdeffont tex-src/texinfo.tex /^\\def\\setdeffont #1 {\\csname DEF#1\\endcsname}$/ -setfilename tex-src/texinfo.tex /^ \\global\\let\\setfilename=\\comment % Ignore extra/ -setfilename tex-src/texinfo.tex /^\\def\\setfilename{%$/ -setref tex-src/texinfo.tex /^\\def\\setref#1{%$/ -setref tex-src/texinfo.tex /^\\expandafter\\expandafter\\expandafter\\appendixsetre/ +SET_SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_/ +set tex-src/texinfo.tex /^\\def\\set{\\parsearg\\setxxx}$/ settitle tex-src/texinfo.tex /^\\def\\settitle{\\parsearg\\settitlezzz}$/ settitlezzz tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/ setup cp-src/c.C 5 +set_upto merc-src/accumulator.m /^:- func set_upto(accu_case, int) = set(accu_goal_i/ +set_waiting_for_input c-src/emacs/src/keyboard.c /^set_waiting_for_input (struct timespec *time_to_cl/ setxxx tex-src/texinfo.tex /^\\def\\setxxx #1{$/ +/SF ps-src/rfc1245.ps /^\/SF { $/ sf tex-src/texinfo.tex /^\\def\\sf{\\fam=\\sffam \\tensf}$/ sf tex-src/texinfo.tex /^\\def\\sf{\\realbackslash sf}%$/ +@sf tex-src/texinfo.tex /^\\ifhmode\\edef\\@sf{\\spacefactor\\the\\spacefactor}\\\/\\/ +@sf tex-src/texinfo.tex /^\\let\\@sf\\empty$/ sf tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/ shift cp-src/functions.cpp /^void Date::shift ( void ){\/\/Shift this date to pre/ shortchapentry tex-src/texinfo.tex /^\\def\\shortchapentry#1#2#3{%$/ shortcontents tex-src/texinfo.tex /^\\let\\shortcontents = \\summarycontents$/ shortunnumberedentry tex-src/texinfo.tex /^\\def\\shortunnumberedentry#1#2{%$/ -shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/ -should_attempt_accu_transform merc-src/accumulator.m /^:- pred should_attempt_accu_transform(module_info:/ should_attempt_accu_transform_2 merc-src/accumulator.m /^:- pred should_attempt_accu_transform_2(module_inf/ +should_attempt_accu_transform merc-src/accumulator.m /^:- pred should_attempt_accu_transform(module_info:/ +shouldLoad objc-src/PackInsp.m /^-(BOOL)shouldLoad$/ should_see_this_array_type cp-src/c.C 156 should_see_this_function_pointer cp-src/c.C 153 should_see_this_one_enclosed_in_extern_C cp-src/c.C 149 show erl-src/gs_dialog.erl /^show(Module, Title, Message, Args) ->$/ showError objc-src/Subprocess.m /^showError (const char *errorString, id theDelegate/ -showInfo objc-src/PackInsp.m /^-showInfo:sender$/ show_help_echo c-src/emacs/src/keyboard.c /^show_help_echo (Lisp_Object help, Lisp_Object wind/ +showInfo objc-src/PackInsp.m /^-showInfo:sender$/ sig c-src/emacs/src/keyboard.c 7238 -signal_handler c-src/h.h 82 signal_handler1 c-src/h.h 83 +signal_handler c-src/h.h 82 signal_handler_t c-src/h.h 94 +SimpleCalc objcpp-src/SimpleCalc.H /^@interface SimpleCalc:Object$/ simulation html-src/software.html /^Software that I wrote for supporting my research a/ -single_kboard c-src/emacs/src/keyboard.c 89 -single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/ singlecodeindexer tex-src/texinfo.tex /^\\def\\singlecodeindexer #1{\\doind{\\indexname}{\\code/ singleindexer tex-src/texinfo.tex /^\\def\\singleindexer #1{\\doind{\\indexname}{#1}}$/ +single_kboard c-src/emacs/src/keyboard.c 89 +single_kboard_state c-src/emacs/src/keyboard.c /^single_kboard_state ()$/ +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6212 +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c 6763 +SINGLE_LETTER_MOD c-src/emacs/src/keyboard.c /^#define SINGLE_LETTER_MOD(BIT) \\$/ singlespace tex-src/texinfo.tex /^\\def\\singlespace{%$/ -site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/ site cp-src/conway.hpp 5 +site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/ size c-src/emacs/src/gmalloc.c 156 size c-src/emacs/src/gmalloc.c 163 -size c-src/emacs/src/gmalloc.c 1867 +size c-src/emacs/src/gmalloc.c 1870 size c-src/emacs/src/lisp.h 1364 size c-src/emacs/src/lisp.h 1390 size c-src/etags.c 236 size c-src/etags.c 2522 +SIZEFORMAT objc-src/PackInsp.m 57 skeyseen c-src/etags.c 2445 +SkipBlanks pas-src/common.pas /^function SkipBlanks; (*($/ +SkipChars pas-src/common.pas /^function SkipChars; (*($/ skip_name c-src/etags.c /^skip_name (char *cp)$/ skip_non_spaces c-src/etags.c /^skip_non_spaces (char *cp)$/ skip_spaces c-src/etags.c /^skip_spaces (char *cp)$/ -sl tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/ +SkipSpaces pas-src/common.pas /^procedure SkipSpaces; (* (Str : NameString; var I / sl tex-src/texinfo.tex /^\\def\\sl{\\realbackslash sl }%$/ +sl tex-src/texinfo.tex /^ \\let\\rm=\\shortcontrm \\let\\bf=\\shortcontbf \\l/ smallbook tex-src/texinfo.tex /^\\def\\smallbook{$/ smallbook tex-src/texinfo.tex /^\\let\\smallbook=\\relax$/ smallcaps tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/ @@ -4105,31 +3727,72 @@ snarf-tag-function el-src/emacs/lisp/progmodes/etags.el /^(defvar snarf-tag-func snone c-src/etags.c 2443 solutions merc-src/accumulator.m /^:- import_module solutions.$/ some_mouse_moved c-src/emacs/src/keyboard.c /^some_mouse_moved (void)$/ -sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/ -space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/ -space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/ -space tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/ -space tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/ -space tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/ +#some-storage forth-src/test-forth.fth /^2000 buffer: #some-storage$/ spacer c-src/emacs/src/lisp.h 1975 spacer c-src/emacs/src/lisp.h 1982 spacer c-src/emacs/src/lisp.h 2036 spacer c-src/emacs/src/lisp.h 2205 -spacesplit tex-src/texinfo.tex /^\\gdef\\spacesplit#1#2^^M{\\endgroup\\spacesplitfoo{#1/ spacesplitfoo tex-src/texinfo.tex /^\\long\\gdef\\spacesplitfoo#1#2 #3#4\\spacesplitfoo{%$/ -specbind_tag c-src/emacs/src/lisp.h 2943 +spacesplit tex-src/texinfo.tex /^\\gdef\\spacesplit#1#2^^M{\\endgroup\\spacesplitfoo{#1/ +space tex-src/texinfo.tex /^ {#2\\labelspace #1}\\dotfill\\doshortpageno{#3}}%/ +space tex-src/texinfo.tex /^\\def\\chapentry#1#2#3{\\dochapentry{#2\\labelspace#1}/ +space tex-src/texinfo.tex /^\\def\\secentry#1#2#3#4{\\dosecentry{#2.#3\\labelspace/ +space tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/ +space tex-src/texinfo.tex /^ \\dosubsubsecentry{#2.#3.#4.#5\\labelspace#1}{#6}}/ specbinding c-src/emacs/src/lisp.h 2955 +specbind_tag c-src/emacs/src/lisp.h 2943 specheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/ specialsymbol prol-src/natded.prolog /^specialsymbol(C1,C2,S):-$/ +SPECPDL_BACKTRACE c-src/emacs/src/lisp.h 2948 +SPECPDL_INDEX c-src/emacs/src/lisp.h /^SPECPDL_INDEX (void)$/ +SPECPDL_LET c-src/emacs/src/lisp.h 2949 +SPECPDL_LET_DEFAULT c-src/emacs/src/lisp.h 2952 +SPECPDL_LET_LOCAL c-src/emacs/src/lisp.h 2951 +SPECPDL_UNWIND c-src/emacs/src/lisp.h 2944 +SPECPDL_UNWIND_INT c-src/emacs/src/lisp.h 2946 +SPECPDL_UNWIND_PTR c-src/emacs/src/lisp.h 2945 +SPECPDL_UNWIND_VOID c-src/emacs/src/lisp.h 2947 specx\defspecheader tex-src/texinfo.tex /^\\def\\defspec{\\defparsebody\\Edefspec\\defspecx\\defsp/ splitexp prol-src/natded.prolog /^splitexp(E,E,('NIL','NIL')):-!.$/ splitoff tex-src/texinfo.tex /^\\def\\splitoff#1#2\\endmark{\\def\\first{#1}\\def\\rest{/ +/S ps-src/rfc1245.ps /^\/S { $/ +sp tex-src/texinfo.tex /^\\def\\sp{\\parsearg\\spxxx}$/ spxxx tex-src/texinfo.tex /^\\def\\spxxx #1{\\par \\vskip #1\\baselineskip}$/ +Square.something:Bar lua-src/test.lua /^function Square.something:Bar ()$/ srclist make-src/Makefile /^srclist: Makefile$/ +SRCS make-src/Makefile /^SRCS=Makefile ${ADASRC} ${ASRC} ${CSRC} ${CPSRC} $/ +SREF c-src/emacs/src/lisp.h /^SREF (Lisp_Object string, ptrdiff_t index)$/ ss3 c.c 255 +SSDATA c-src/emacs/src/lisp.h /^SSDATA (Lisp_Object string)$/ +SSET c-src/emacs/src/lisp.h /^SSET (Lisp_Object string, ptrdiff_t index, unsigne/ sss1 c.c 252 sss2 c.c 253 sstab prol-src/natded.prolog /^sstab(2,'C',',').$/ +stack c.c 155 +STACK_CONS c-src/emacs/src/lisp.h /^#define STACK_CONS(a, b) \\$/ +stagseen c-src/etags.c 2446 +standalone make-src/Makefile /^standalone:$/ +startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/ +start c-src/emacs/src/keyboard.c 8753 +start c-src/emacs/src/lisp.h 2038 +start c-src/emacs/src/regex.h 431 +StartDay cp-src/functions.cpp /^Date StartDay(Date a,int days){\/\/Function to calcu/ +startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/ +start php-src/lce_functions.php /^ function start($line, $class)$/ +start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/ +=starts-with-equals! scm-src/test.scm /^(define =starts-with-equals! #t)$/ +start_up prol-src/natded.prolog /^start_up:-$/ +start y-src/cccp.y 143 +STATE_ABORT php-src/lce_functions.php 25 +STATE_COMPRESSD objc-src/PackInsp.m 54 +STATE_INSTALLED objc-src/PackInsp.m 53 +STATE_LOOP php-src/lce_functions.php 27 +STATE_OK php-src/lce_functions.php 26 +state_protected_p c-src/emacs/src/gmalloc.c 401 +STAT_EQ objc-src/PackInsp.m /^#define STAT_EQ(s1, s2) ((s1)->st_ino == (s2)->st_/ +statetable html-src/algrthms.html /^Next$/ +STATE_UNINSTALLED objc-src/PackInsp.m 52 +staticetags make-src/Makefile /^staticetags:$/ st_C_attribute c-src/etags.c 2209 st_C_class c-src/etags.c 2212 st_C_define c-src/etags.c 2213 @@ -4145,73 +3808,75 @@ st_C_operator c-src/etags.c 2211 st_C_struct c-src/etags.c 2213 st_C_template c-src/etags.c 2212 st_C_typedef c-src/etags.c 2213 -st_none c-src/etags.c 2206 -stack c.c 155 -stagseen c-src/etags.c 2446 -standalone make-src/Makefile /^standalone:$/ -start c-src/emacs/src/keyboard.c 8753 -start c-src/emacs/src/lisp.h 2038 -start c-src/emacs/src/regex.h 431 -start php-src/lce_functions.php /^ function start($line, $class)$/ -start y-src/cccp.y 143 -start_polling c-src/emacs/src/keyboard.c /^start_polling (void)$/ -start_up prol-src/natded.prolog /^start_up:-$/ -startcontents tex-src/texinfo.tex /^\\def\\startcontents#1{%$/ -startenumeration tex-src/texinfo.tex /^\\def\\startenumeration#1{%$/ -state_protected_p c-src/emacs/src/gmalloc.c 401 -statetable html-src/algrthms.html /^Next$/ -staticetags make-src/Makefile /^staticetags:$/ +STDIN c-src/etags.c 408 +STDIN c-src/etags.c 411 step cp-src/clheir.hpp /^ virtual void step(void) { }$/ step cp-src/conway.hpp /^ void step(void) { alive = next_alive; }$/ step_everybody cp-src/clheir.cpp /^void step_everybody(void)$/ +st_none c-src/etags.c 2206 +STOP_POLLING c-src/emacs/src/keyboard.c 2166 stop_polling c-src/emacs/src/keyboard.c /^stop_polling (void)$/ +stored_goal_plain_call merc-src/accumulator.m /^:- inst stored_goal_plain_call for goal_store.stor/ store_info merc-src/accumulator.m /^:- type store_info$/ store_user_signal_events c-src/emacs/src/keyboard.c /^store_user_signal_events (void)$/ -stored_goal_plain_call merc-src/accumulator.m /^:- inst stored_goal_plain_call for goal_store.stor/ -str go-src/test1.go 9 strcaseeq c-src/etags.c /^#define strcaseeq(s,t) (assert ((s)!=NULL && (t)!=/ streq c-src/etags.c /^#define streq(s,t) (assert ((s)!=NULL || (t)!=NULL/ -string merc-src/accumulator.m /^:- import_module string.$/ +str go-src/test1.go 9 +STRING_BYTES_BOUND c-src/emacs/src/lisp.h 1261 +STRING_BYTES c-src/emacs/src/lisp.h /^STRING_BYTES (struct Lisp_String *s)$/ string_intervals c-src/emacs/src/lisp.h /^string_intervals (Lisp_Object s)$/ +string merc-src/accumulator.m /^:- import_module string.$/ +STRING_MULTIBYTE c-src/emacs/src/lisp.h /^STRING_MULTIBYTE (Lisp_Object str)$/ +STRING_SET_CHARS c-src/emacs/src/lisp.h /^STRING_SET_CHARS (Lisp_Object string, ptrdiff_t ne/ +STRING_SET_MULTIBYTE c-src/emacs/src/lisp.h /^#define STRING_SET_MULTIBYTE(STR) \\$/ +STRING_SET_UNIBYTE c-src/emacs/src/lisp.h /^#define STRING_SET_UNIBYTE(STR) \\$/ stripLine php-src/lce_functions.php /^ function stripLine($line, $class)$/ stripname pas-src/common.pas /^function stripname; (* ($/ +StripPath pas-src/common.pas /^function StripPath; (*($/ strncaseeq c-src/etags.c /^#define strncaseeq(s,t,n) (assert ((s)!=NULL && (t/ strneq c-src/etags.c /^#define strneq(s,t,n) (assert ((s)!=NULL || (t)!=N/ strong tex-src/texinfo.tex /^\\let\\strong=\\b$/ strong tex-src/texinfo.tex /^\\let\\strong=\\indexdummyfont$/ +__str__ pyt-src/server.py /^ def __str__(self):$/ structdef c-src/etags.c 2448 stuff_buffered_input c-src/emacs/src/keyboard.c /^stuff_buffered_input (Lisp_Object stuffstring)$/ +SUB_CHAR_TABLE_OFFSET c-src/emacs/src/lisp.h 1701 +SUB_CHAR_TABLE_P c-src/emacs/src/lisp.h /^SUB_CHAR_TABLE_P (Lisp_Object a)$/ subheading tex-src/texinfo.tex /^\\def\\subheading{\\parsearg\\subsecheadingi}$/ -subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/ subprocessDone objc-src/PackInsp.m /^-subprocessDone:(Subprocess *)sender$/ -subsec tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/ -subsec tex-src/texinfo.tex /^\\let\\subsec=\\relax$/ +subprocess objc-src/PackInsp.m /^-subprocess:(Subprocess *)sender output:(char *)bu/ +Subprocess objc-src/Subprocess.h 41 +Subprocess objc-src/Subprocess.h /^@interface Subprocess:Object$/ +SUBRP c-src/emacs/src/lisp.h /^SUBRP (Lisp_Object a)$/ +subsecentryfonts tex-src/texinfo.tex /^\\let\\subsecentryfonts = \\textfonts$/ subsecentry tex-src/texinfo.tex /^ \\def\\subsecentry ##1##2##3##4##5{}$/ subsecentry tex-src/texinfo.tex /^\\def\\subsecentry#1#2#3#4#5{\\dosubsecentry{#2.#3.#4/ -subsecentryfonts tex-src/texinfo.tex /^\\let\\subsecentryfonts = \\textfonts$/ subsecfonts tex-src/texinfo.tex /^\\def\\subsecfonts{%$/ -subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/ subsecheadingbreak tex-src/texinfo.tex /^\\def\\subsecheadingbreak{\\dobreak \\subsecheadingski/ subsecheadingi tex-src/texinfo.tex /^\\def\\subsecheadingi #1{{\\advance \\subsecheadingski/ +subsecheading tex-src/texinfo.tex /^\\def\\subsecheading #1#2#3#4{\\subsecheadingi {#2.#3/ +subsec tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/ +subsec tex-src/texinfo.tex /^\\let\\subsec=\\relax$/ +subsection_marker perl-src/htlmify-cystic 161 subsection perl-src/htlmify-cystic 26 subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\appendixsubsec$/ subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\numberedsubsec$/ subsection tex-src/texinfo.tex /^\\global\\let\\subsection = \\unnumberedsubsec$/ subsection tex-src/texinfo.tex /^\\let\\subsection=\\relax$/ -subsection_marker perl-src/htlmify-cystic 161 subseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsec{\\parsearg\\appendixsubseczz/ subseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsec{\\parsearg\\appendixsubsec/ -subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/ substitute c-src/etags.c /^substitute (char *in, char *out, struct re_registe/ +subst prol-src/natded.prolog /^subst(var(Y),var(X),M,N):-$/ +SubString pas-src/common.pas /^function SubString; (*($/ subsubheading tex-src/texinfo.tex /^\\def\\subsubheading{\\parsearg\\subsubsecheadingi}$/ -subsubsec tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/ -subsubsec tex-src/texinfo.tex /^\\let\\subsubsec=\\relax$/ +subsubsecentryfonts tex-src/texinfo.tex /^\\let\\subsubsecentryfonts = \\textfonts$/ subsubsecentry tex-src/texinfo.tex /^ \\def\\subsubsecentry ##1##2##3##4##5##6{}$/ subsubsecentry tex-src/texinfo.tex /^\\def\\subsubsecentry#1#2#3#4#5#6{%$/ -subsubsecentryfonts tex-src/texinfo.tex /^\\let\\subsubsecentryfonts = \\textfonts$/ subsubsecfonts tex-src/texinfo.tex /^\\def\\subsubsecfonts{\\subsecfonts} % Maybe this sho/ -subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/ subsubsecheadingi tex-src/texinfo.tex /^\\def\\subsubsecheadingi #1{{\\advance \\subsecheading/ +subsubsecheading tex-src/texinfo.tex /^\\def\\subsubsecheading #1#2#3#4#5{\\subsubsecheading/ +subsubsec tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/ +subsubsec tex-src/texinfo.tex /^\\let\\subsubsec=\\relax$/ subsubsection perl-src/htlmify-cystic 27 subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\appendixsubsubsec$/ subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\numberedsubsubsec$/ @@ -4219,9 +3884,9 @@ subsubsection tex-src/texinfo.tex /^\\global\\let\\subsubsection = \\unnumbereds subsubsection tex-src/texinfo.tex /^\\let\\subsubsection=\\relax$/ subsubseczzz tex-src/texinfo.tex /^\\def\\infoappendixsubsubsec{\\parsearg\\appendixsubsu/ subsubseczzz tex-src/texinfo.tex /^\\outer\\def\\appendixsubsubsec{\\parsearg\\appendixsub/ -subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/ subtitlefont tex-src/texinfo.tex /^ \\def\\subtitlefont{\\subtitlerm \\normalbaselinesk/ subtitlerm tex-src/texinfo.tex /^ \\let\\subtitlerm=\\tenrm$/ +subtitle tex-src/texinfo.tex /^ \\def\\subtitle{\\parsearg\\subtitlezzz}%$/ subtitlezzz tex-src/texinfo.tex /^ \\def\\subtitlezzz##1{{\\subtitlefont \\rightline{#/ subtle ruby-src/test1.ru /^ :tee ; attr_reader :subtle$/ subtree prol-src/natded.prolog /^subtree(T,T).$/ @@ -4235,18 +3900,37 @@ sval y-src/cccp.y 116 swallow_events c-src/emacs/src/keyboard.c /^swallow_events (bool do_display)$/ switch_line_buffers c-src/etags.c /^#define switch_line_buffers() (curndx = 1 - curndx/ sxhash_combine c-src/emacs/src/lisp.h /^sxhash_combine (EMACS_UINT x, EMACS_UINT y)$/ -sym_type c-src/etags.c 2204 +SXHASH_REDUCE c-src/emacs/src/lisp.h /^SXHASH_REDUCE (EMACS_UINT x)$/ +SYMBOL_BLV c-src/emacs/src/lisp.h /^SYMBOL_BLV (struct Lisp_Symbol *sym)$/ +SYMBOL_CONSTANT_P c-src/emacs/src/lisp.h /^# define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONS/ symbol c-src/emacs/src/lisp.h 2980 +SYMBOL_FORWARDED c-src/emacs/src/lisp.h 651 +SYMBOL_FWD c-src/emacs/src/lisp.h /^SYMBOL_FWD (struct Lisp_Symbol *sym)$/ +SYMBOL_INDEX c-src/emacs/src/lisp.h /^#define SYMBOL_INDEX(sym) i##sym$/ symbol_interned c-src/emacs/src/lisp.h 639 +SYMBOL_INTERNED c-src/emacs/src/lisp.h 642 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY c-src/emacs/src/lisp.h 643 +SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_IN_INITIAL_OBARRAY_P (Lisp_Object / +SYMBOL_INTERNED_P c-src/emacs/src/lisp.h /^SYMBOL_INTERNED_P (Lisp_Object sym)$/ +SYMBOL_LOCALIZED c-src/emacs/src/lisp.h 650 symbol_name c-src/emacs/src/lisp.h 1687 +SYMBOL_NAME c-src/emacs/src/lisp.h /^SYMBOL_NAME (Lisp_Object sym)$/ +SYMBOLP c-src/emacs/src/lisp.h /^# define SYMBOLP(x) lisp_h_SYMBOLP (x)$/ +SYMBOL_PLAINVAL c-src/emacs/src/lisp.h 648 symbol_redirect c-src/emacs/src/lisp.h 646 +SYMBOL_UNINTERNED c-src/emacs/src/lisp.h 641 +SYMBOL_VAL c-src/emacs/src/lisp.h /^# define SYMBOL_VAL(sym) lisp_h_SYMBOL_VAL (sym)$/ +SYMBOL_VARALIAS c-src/emacs/src/lisp.h 649 syms_of_abbrev c-src/abbrev.c /^syms_of_abbrev ()$/ syms_of_keyboard c-src/emacs/src/keyboard.c /^syms_of_keyboard (void)$/ +sym_type c-src/etags.c 2204 synchronize_system_messages_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_messages_locale (vo/ synchronize_system_time_locale c-src/emacs/src/lisp.h /^INLINE void synchronize_system_time_locale (void) / syncodeindex tex-src/texinfo.tex /^\\def\\syncodeindex #1 #2 {%$/ synindex tex-src/texinfo.tex /^\\def\\synindex #1 #2 {%$/ syntax c-src/emacs/src/regex.h 350 +SYSCALL c-src/machsyscalls.c /^#define SYSCALL(name, number, type, args, typed_ar/ +syscall_error c-src/sysdep.h 34 sys_jmp_buf c-src/emacs/src/lisp.h 2906 sys_jmp_buf c-src/emacs/src/lisp.h 2910 sys_jmp_buf c-src/emacs/src/lisp.h 2916 @@ -4256,14 +3940,12 @@ sys_longjmp c-src/emacs/src/lisp.h /^# define sys_longjmp(j, v) siglongjmp (j, v sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) _setjmp (j)$/ sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) setjmp (j)$/ sys_setjmp c-src/emacs/src/lisp.h /^# define sys_setjmp(j) sigsetjmp (j, 0)$/ -syscall_error c-src/sysdep.h 34 -t cp-src/c.C 52 -t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/ -t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash / -t tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ -t tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/ +System.Task_Primitives/b ada-src/2ataspri.adb /^package body System.Task_Primitives is$/ +System.Task_Primitives/s ada-src/2ataspri.ads /^package System.Task_Primitives is$/ t1 cp-src/c.C 34 t2 cp-src/c.C 38 +T2 cp-src/fail.C 16 +T3 c.c 163 tab_count_words c-src/tab.c /^int tab_count_words(char **tab)$/ tab_delete_first c-src/tab.c /^int tab_delete_first(char **tab)$/ tab_fill c-src/tab.c /^char **tab_fill(char *str, char delim)$/ @@ -4272,18 +3954,6 @@ table tex-src/texinfo.tex /^\\def\\table{\\begingroup\\inENV\\obeylines\\obeyspa tablex tex-src/texinfo.tex /^\\gdef\\tablex #1^^M{%$/ tabley tex-src/texinfo.tex /^\\gdef\\tabley#1#2 #3 #4 #5 #6 #7\\endtabley{\\endgrou/ tablez tex-src/texinfo.tex /^\\def\\tablez #1#2#3#4#5#6{%$/ -tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/ -tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/ -tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/ -tag-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-file-name-match-p (tag)$/ -tag-find-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag (file) ; Doc string?$/ -tag-find-file-of-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag-noselect (file)$/ -tag-implicit-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-implicit-name-match-p (tag)$/ -tag-lines-already-matched el-src/emacs/lisp/progmodes/etags.el /^(defvar tag-lines-already-matched nil$/ -tag-partial-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-partial-file-name-match-p (_tag)$/ -tag-re-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-re-match-p (re)$/ -tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-symbol-match-p (tag)$/ -tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-word-match-p (tag)$/ tag1 c-src/dostorture.c /^(*tag1 (sig, handler)) ()$/ tag1 c-src/h.h 110 tag1 c-src/torture.c /^(*tag1 (sig, handler)) ()$/ @@ -4297,12 +3967,22 @@ tag5 c-src/dostorture.c /^tag5 (handler, arg)$/ tag5 c-src/torture.c /^tag5 (handler, arg)$/ tag6 c-src/dostorture.c /^tag6 (void (*handler) (void *), void *arg)$/ tag6 c-src/torture.c /^tag6 (void (*handler) (void *), void *arg)$/ -tag_or_ch c-src/emacs/src/lisp.h 3026 +tag-any-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-any-match-p (_tag)$/ +tag-exact-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-file-name-match-p (tag)$/ +tag-exact-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-exact-match-p (tag)$/ +tag-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-file-name-match-p (tag)$/ +tag-find-file-of-tag el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag (file) ; Doc string?$/ +tag-find-file-of-tag-noselect el-src/emacs/lisp/progmodes/etags.el /^(defun tag-find-file-of-tag-noselect (file)$/ taggedfname c-src/etags.c 207 -tags make-src/Makefile /^tags: TAGS$/ +tag-implicit-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-implicit-name-match-p (tag)$/ +tag-lines-already-matched el-src/emacs/lisp/progmodes/etags.el /^(defvar tag-lines-already-matched nil$/ +tag_or_ch c-src/emacs/src/lisp.h 3026 +tag-partial-file-name-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-partial-file-name-match-p (_tag)$/ +TAG_PTR c-src/emacs/src/lisp.h /^#define TAG_PTR(tag, ptr) \\$/ +tag-re-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-re-match-p (re)$/ tags-add-tables el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-add-tables 'ask-user$/ -tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun tags-apropos (regexp)$/ tags-apropos-additional-actions el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-apropos-additional-actions nil$/ +tags-apropos el-src/emacs/lisp/progmodes/etags.el /^(defun tags-apropos (regexp)$/ tags-apropos-function el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-apropos-function nil$/ tags-apropos-verbose el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-apropos-verbose nil$/ tags-case-fold-search el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-case-fold-search 'default$/ @@ -4324,6 +4004,8 @@ tags-loop-eval el-src/emacs/lisp/progmodes/etags.el /^(defun tags-loop-eval (for tags-loop-operate el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-loop-operate nil$/ tags-loop-revert-buffers el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-loop-revert-buffers nil$/ tags-loop-scan el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-loop-scan$/ +TAGS make-src/Makefile /^TAGS: etags.c$/ +tags make-src/Makefile /^tags: TAGS$/ tags-next-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-next-table ()$/ tags-query-replace el-src/emacs/lisp/progmodes/etags.el /^(defun tags-query-replace (from to &optional delim/ tags-recognize-empty-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-recognize-empty-tags-table ()$/ @@ -4349,15 +4031,34 @@ tags-table-set-list el-src/emacs/lisp/progmodes/etags.el /^(defvar tags-table-se tags-tag-face el-src/emacs/lisp/progmodes/etags.el /^(defcustom tags-tag-face 'default$/ tags-verify-table el-src/emacs/lisp/progmodes/etags.el /^(defun tags-verify-table (file)$/ tags-with-face el-src/emacs/lisp/progmodes/etags.el /^(defmacro tags-with-face (face &rest body)$/ +tag-symbol-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-symbol-match-p (tag)$/ +TAG_SYMOFFSET c-src/emacs/src/lisp.h /^#define TAG_SYMOFFSET(offset) \\$/ +tag-word-match-p el-src/emacs/lisp/progmodes/etags.el /^(defun tag-word-match-p (tag)$/ +Tapes tex-src/gzip.texi /^@node Tapes, Problems, Environment, Top$/ target_multibyte c-src/emacs/src/regex.h 407 -tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/ +TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is$/ +TAS_Cell/t ada-src/2ataspri.ads /^ type TAS_Cell is private;$/ +Task_Control_Block/t ada-src/2ataspri.ads /^ type Task_Control_Block is record$/ +Task_Storage_Size/t ada-src/2ataspri.ads /^ type Task_Storage_Size is new Interfaces.C.size/ +Task_Type/b ada-src/etags-test-for.ada /^ task body Task_Type is$/ +Task_Type/b ada-src/waroquiers.ada /^ task body Task_Type is$/ +Task_Type/k ada-src/etags-test-for.ada /^ task type Task_Type is$/ +Task_Type/k ada-src/waroquiers.ada /^ task type Task_Type is$/ +TCB_Ptr/t ada-src/2ataspri.ads /^ type TCB_Ptr is access all Task_Control_Block;$/ +TCLFLAGS make-src/Makefile /^TCLFLAGS=--lang=none --regex='\/proc[ \\t]+\\([^ \\t]+/ tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}%$/ +tclose tex-src/texinfo.tex /^\\def\\tclose##1{\\realbackslash tclose {##1}}$/ tclose tex-src/texinfo.tex /^\\def\\tclose#1{{\\rm \\tcloserm=\\fontdimen2\\font \\tt / tclose tex-src/texinfo.tex /^\\let\\tclose=\\indexdummyfont$/ tcpdump html-src/software.html /^tcpdump$/ +t cp-src/c.C 52 +T cp-src/fail.C 14 teats cp-src/c.C 127 tee ruby-src/test1.ru /^ attr_accessor :tee$/ tee= ruby-src/test1.ru /^ attr_accessor :tee$/ +temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2}%$/ +temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2 #3}%$/ +temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame / temp tex-src/texinfo.tex /^\\edef\\temp{%$/ temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry $/ temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash chapentry {#1}{\\the\\cha/ @@ -4372,15 +4073,12 @@ temp tex-src/texinfo.tex /^\\edef\\temp{{\\realbackslash unnumbsubsubsecentry{#1 temp tex-src/texinfo.tex /^\\else \\let\\temp=\\ifclearfail \\fi$/ temp tex-src/texinfo.tex /^\\else \\let\\temp=\\relax \\fi$/ temp tex-src/texinfo.tex /^\\expandafter\\ifx\\csname IF#1\\endcsname\\relax \\let\\/ -temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2 #3}%$/ -temp1 tex-src/texinfo.tex /^\\xdef\\temp1{#2}%$/ -temporarily_switch_to_single_kboard c-src/emacs/src/keyboard.c /^temporarily_switch_to_single_kboard (struct frame / +tenbf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/ tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/ tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/ tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/ tenbf tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/ -tenbf tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ tend c-src/etags.c 2432 teni tex-src/texinfo.tex /^ \\let\\tensf=\\chapsf \\let\\teni=\\chapi \\let\\tensy=\\/ teni tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\tensy=\\in/ @@ -4412,55 +4110,121 @@ tensy tex-src/texinfo.tex /^ \\let\\tensf=\\indsf \\let\\teni=\\indi \\let\\ten tensy tex-src/texinfo.tex /^ \\let\\tensf=\\secsf \\let\\teni=\\seci \\let\\tensy=\\se/ tensy tex-src/texinfo.tex /^ \\let\\tensf=\\ssecsf \\let\\teni=\\sseci \\let\\tensy=\\/ tensy tex-src/texinfo.tex /^ \\let\\tensf=\\textsf \\let\\teni=\\texti \\let\\tensy=\\/ +tentt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\chapbf \\let\\tentt=\\chaptt \\let\\small/ tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\indbf \\let\\tentt=\\indtt \\let\\smallca/ tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\secbf \\let\\tentt=\\sectt \\let\\smallca/ tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\ssecbf \\let\\tentt=\\ssectt \\let\\small/ tentt tex-src/texinfo.tex /^ \\let\\tenbf=\\textbf \\let\\tentt=\\texttt \\let\\small/ -tentt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ tentt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/ -term merc-src/accumulator.m /^:- import_module term.$/ -terminate objc-src/Subprocess.m /^- terminate:sender$/ +TERMINALP c-src/emacs/src/lisp.h /^TERMINALP (Lisp_Object a)$/ terminateInput objc-src/Subprocess.m /^- terminateInput$/ -test c-src/emacs/src/lisp.h 1871 +terminate objc-src/Subprocess.m /^- terminate:sender$/ +term merc-src/accumulator.m /^:- import_module term.$/ +test1 rs-src/test.rs /^fn test1() {$/ +Test_Abort/p ada-src/2ataspri.adb /^ procedure Test_Abort is$/ +Test_Abort/p ada-src/2ataspri.ads /^ procedure Test_Abort;$/ +Test_And_Set/p ada-src/2ataspri.adb /^ procedure Test_And_Set (Cell : in out TAS_Cell;/ +Test_And_Set/p ada-src/2ataspri.ads /^ procedure Test_And_Set (Cell : in out TAS_Cell;/ +test-begin scm-src/test.scm /^(define-syntax test-begin$/ test cp-src/c.C 86 +test_crlf1 test_crlf.c /^void test_crlf1()$/ +test_crlf2 tset_crlf.c /^void test_crlf2()$/ +test c-src/emacs/src/lisp.h 1871 test erl-src/gs_dialog.erl /^test() ->$/ test go-src/test1.go /^func test(p plus) {$/ test make-src/Makefile /^test:$/ -test php-src/ptest.php /^test $/ -test-begin scm-src/test.scm /^(define-syntax test-begin$/ -test.me22b lua-src/test.lua /^ local function test.me22b (one)$/ test.me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/ -test1 rs-src/test.rs /^fn test1() {$/ -test_crlf1 test_crlf.c /^void test_crlf1()$/ -test_crlf2 tset_crlf.c /^void test_crlf2()$/ +test.me22b lua-src/test.lua /^ local function test.me22b (one)$/ +TEST php-src/ptest.php 1 +test php-src/ptest.php /^test $/ test_undefined c-src/emacs/src/keyboard.c /^test_undefined (Lisp_Object binding)$/ -tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/ +TEX_clgrp c-src/etags.c 4922 +TeX_commands c-src/etags.c /^TeX_commands (FILE *inf)$/ +TEX_decode_env c-src/etags.c /^TEX_decode_env (const char *evarname, const char */ +TEX_defenv c-src/etags.c 4912 +TEX_esc c-src/etags.c 4920 +TeX_help c-src/etags.c 674 +Texinfo_help c-src/etags.c 688 +Texinfo_nodes c-src/etags.c /^Texinfo_nodes (FILE *inf)$/ +Texinfo_suffixes c-src/etags.c 686 texinfoversion tex-src/texinfo.tex /^\\def\\texinfoversion{2.73}$/ +TEX_LESC c-src/etags.c 4986 +TEX_mode c-src/etags.c /^TEX_mode (FILE *inf)$/ +TEX_opgrp c-src/etags.c 4921 +TEX_SESC c-src/etags.c 4987 +TEXSRC make-src/Makefile /^TEXSRC=testenv.tex gzip.texi texinfo.tex nonewline/ +~ tex-src/texinfo.tex /^\\catcode `\\^=7 \\catcode `\\_=8 \\catcode `\\~=13 \\let/ +' tex-src/texinfo.tex /^\\def\\'{{'}}$/ +@ tex-src/texinfo.tex /^\\def\\@{@}%$/ +` tex-src/texinfo.tex /^\\def\\`{{`}}$/ +* tex-src/texinfo.tex /^\\def\\*{\\hfil\\break\\hbox{}\\ignorespaces}$/ +_ tex-src/texinfo.tex /^\\def_{\\ifusingtt\\normalunderscore\\_}$/ +_ tex-src/texinfo.tex /^\\def\\_{\\lvvmode \\kern.06em \\vbox{\\hrule width.3em / +_ tex-src/texinfo.tex /^\\def\\_{{\\realbackslash _}}%$/ +: tex-src/texinfo.tex /^\\def\\:{\\spacefactor=1000 }$/ +. tex-src/texinfo.tex /^\\def\\.{.\\spacefactor=3000 }$/ +@ tex-src/texinfo.tex /^\\def\\@{{\\tt \\char '100}}$/ +| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/ +~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/ ++ tex-src/texinfo.tex /^\\def+{{\\tt \\char 43}}$/ +> tex-src/texinfo.tex /^\\def>{{\\tt \\gtr}}$/ +^ tex-src/texinfo.tex /^\\def^{{\\tt \\hat}}$/ +< tex-src/texinfo.tex /^\\def<{{\\tt \\less}}$/ +" tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/ +( tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/ +) tex-src/texinfo.tex /^\\gdef\\amprm#1 {{\\rm\\}\\let(=\\oprm \\let)=\\clrm\\ }/ +( tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/ +) tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/ +[ tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/ +] tex-src/texinfo.tex /^\\gdef\\boldbrax{\\let(=\\opnr\\let)=\\clnr\\let[=\\lbrb\\l/ +& tex-src/texinfo.tex /^\\gdef\\functionparens{\\boldbrax\\let&=\\amprm\\parenco/ +& tex-src/texinfo.tex /^\\gdef\\normalparens{\\boldbrax\\let&=\\ampnr}$/ +( tex-src/texinfo.tex /^\\gdef\\oprm#1 {{\\rm\\char`\\(}#1 \\bf \\let(=\\opnested / += tex-src/texinfo.tex /^\\global\\def={{\\tt \\char 61}}}$/ +( tex-src/texinfo.tex /^\\ifnum \\parencount=1 {\\rm \\char `\\)}\\sl \\let(=\\opr/ +" tex-src/texinfo.tex /^\\let"=\\activedoublequote$/ +{ tex-src/texinfo.tex /^\\let\\{=\\mylbrace$/ +} tex-src/texinfo.tex /^\\let\\}=\\myrbrace$/ +^ tex-src/texinfo.tex /^\\let^=\\normalcaret$/ +> tex-src/texinfo.tex /^\\let>=\\normalgreater$/ +< tex-src/texinfo.tex /^\\let<=\\normalless$/ ++ tex-src/texinfo.tex /^\\let+=\\normalplus}$/ +~ tex-src/texinfo.tex /^\\let~=\\normaltilde$/ +_ tex-src/texinfo.tex /^\\let_=\\normalunderscore$/ +| tex-src/texinfo.tex /^\\let|=\\normalverticalbar$/ +. tex-src/texinfo.tex /^\\let\\.=\\ptexdot$/ +{ tex-src/texinfo.tex /^\\let\\{=\\ptexlbrace$/ +} tex-src/texinfo.tex /^\\let\\}=\\ptexrbrace$/ +* tex-src/texinfo.tex /^\\let\\*=\\ptexstar$/ +TeX_suffixes c-src/etags.c 672 +tex tex-src/texinfo.tex /^\\def\\tex{\\begingroup$/ +TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}%$/ +TeX tex-src/texinfo.tex /^\\def\\TeX{\\realbackslash TeX}$/ +TeX tex-src/texinfo.tex /^\\let\\TeX=\\indexdummytex$/ textfonts tex-src/texinfo.tex /^\\def\\textfonts{%$/ +TEX_toktab c-src/etags.c 4908 texttreelist prol-src/natded.prolog /^texttreelist([]).$/ +/TF ps-src/rfc1245.ps /^\/TF { $/ thearg tex-src/texinfo.tex /^ \\def\\thearg{#1}%$/ thearg tex-src/texinfo.tex /^ \\ifx\\thearg\\empty \\def\\thearg{1}\\fi$/ there-is-a-=-in-the-middle! scm-src/test.scm /^(define (there-is-a-=-in-the-middle!) #t)$/ -this c-src/a/b/b.c 1 -this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/ -this-command-keys-vector c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys-vector", Fthis_command_k/ -this-single-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-keys", Fthis_single_co/ -this-single-command-raw-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-raw-keys", Fthis_singl/ +thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/ +thischaptername tex-src/texinfo.tex /^\\gdef\\thischaptername{#1}%$/ +thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/ +thischapter tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/ +thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/ +thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/ +thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Chapter \\the\\chapno: \\noexpand\\t/ this_command_key_count c-src/emacs/src/keyboard.c 108 this_command_key_count_reset c-src/emacs/src/keyboard.c 112 this_command_keys c-src/emacs/src/keyboard.c 107 -this_file_toc perl-src/htlmify-cystic 29 -this_single_command_key_start c-src/emacs/src/keyboard.c 125 -thischapter tex-src/texinfo.tex /^ \\unnumbchapmacro{#1}\\def\\thischapter{}%$/ -thischapter tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/ -thischapter tex-src/texinfo.tex /^\\gdef\\thischapter{#1}\\gdef\\thissection{#1}%$/ -thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Appendix \\appendixletter: \\noexp/ -thischapter tex-src/texinfo.tex /^\\xdef\\thischapter{Chapter \\the\\chapno: \\noexpand\\t/ -thischaptername tex-src/texinfo.tex /^\\def\\thischaptername{No Chapter Title}$/ -thischaptername tex-src/texinfo.tex /^\\gdef\\thischaptername{#1}%$/ +this-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys", Fthis_command_keys, St/ +this-command-keys-vector c-src/emacs/src/keyboard.c /^DEFUN ("this-command-keys-vector", Fthis_command_k/ +this c-src/a/b/b.c 1 thisfile tex-src/texinfo.tex /^\\def\\includezzz #1{{\\def\\thisfile{#1}\\input #1$/ thisfile tex-src/texinfo.tex /^\\def\\thisfile{}$/ +this_file_toc perl-src/htlmify-cystic 29 thisfootno tex-src/texinfo.tex /^\\edef\\thisfootno{$^{\\the\\footnoteno}$}%$/ thispage tex-src/texinfo.tex /^\\let\\thispage=\\folio$/ thissection tex-src/texinfo.tex /^\\def\\thischapter{} \\def\\thissection{}$/ @@ -4471,26 +4235,30 @@ thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\app thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\secheading {#1}{\\the\\chapno}/ thissection tex-src/texinfo.tex /^\\gdef\\thissection{#1}\\subsubsecno=0 \\global\\advanc/ thissection tex-src/texinfo.tex /^\\plainsecheading {#1}\\gdef\\thissection{#1}%$/ +this-single-command-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-keys", Fthis_single_co/ +this_single_command_key_start c-src/emacs/src/keyboard.c 125 +this-single-command-raw-keys c-src/emacs/src/keyboard.c /^DEFUN ("this-single-command-raw-keys", Fthis_singl/ thistitle tex-src/texinfo.tex /^\\def\\settitlezzz #1{\\gdef\\thistitle{#1}}$/ thistitle tex-src/texinfo.tex /^\\def\\thistitle{No Title}$/ three tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/ threex tex-src/texinfo.tex /^\\def\\kbdfoo#1#2#3\\par{\\def\\one{#1}\\def\\three{#3}\\d/ tie tex-src/texinfo.tex /^\\def\\tie{\\penalty 10000\\ } % Save plain tex de/ tignore c-src/etags.c 2433 -timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/ timer_check_2 c-src/emacs/src/keyboard.c /^timer_check_2 (Lisp_Object timers, Lisp_Object idl/ +timer_check c-src/emacs/src/keyboard.c /^timer_check (void)$/ timer_idleness_start_time c-src/emacs/src/keyboard.c 335 timer_last_idleness_start_time c-src/emacs/src/keyboard.c 340 timer_resume_idle c-src/emacs/src/keyboard.c /^timer_resume_idle (void)$/ +timers_run c-src/emacs/src/keyboard.c 320 timer_start_idle c-src/emacs/src/keyboard.c /^timer_start_idle (void)$/ timer_stop_idle c-src/emacs/src/keyboard.c /^timer_stop_idle (void)$/ -timers_run c-src/emacs/src/keyboard.c 320 +Time_to_position c-src/emacs/src/keyboard.c /^Time_to_position (Time encoded_pos)$/ tinbody c-src/etags.c 2431 tindex tex-src/texinfo.tex /^\\def\\tindex {\\tpindex}$/ -title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/ titlefont tex-src/texinfo.tex /^\\def\\titlefont#1{{\\titlerm #1}}$/ titlepage tex-src/texinfo.tex /^\\def\\titlepage{\\begingroup \\parindent=0pt \\textfon/ titlepage tex-src/texinfo.tex /^\\let\\titlepage=\\relax$/ +title tex-src/texinfo.tex /^ \\def\\title{\\parsearg\\titlezzz}%$/ titlezzz tex-src/texinfo.tex /^ \\def\\titlezzz##1{\\leftline{\\titlefont{##1}}$/ tkeyseen c-src/etags.c 2429 tnone c-src/etags.c 2428 @@ -4499,45 +4267,65 @@ today tex-src/texinfo.tex /^\\def\\today{\\number\\day\\space$/ toggleDescription objc-src/PackInsp.m /^-toggleDescription$/ tok c-src/etags.c 2491 token c-src/etags.c 2508 +tokenizeatom prol-src/natded.prolog /^tokenizeatom(Atom,Ws):-$/ +tokenize prol-src/natded.prolog /^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):- % spe/ +tokentab2 y-src/cccp.y 442 token y-src/cccp.y 437 token y-src/cccp.y 439 -tokenize prol-src/natded.prolog /^tokenize([C1,C2,C3|Cs],Xs-Ys,TsResult):- % spe/ -tokenizeatom prol-src/natded.prolog /^tokenizeatom(Atom,Ws):-$/ -tokentab2 y-src/cccp.y 442 +To_Lower pas-src/common.pas /^function To_Lower;(*(ch:char) : char;*)$/ tool_bar_item_properties c-src/emacs/src/keyboard.c 7970 tool_bar_items c-src/emacs/src/keyboard.c /^tool_bar_items (Lisp_Object reuse, int *nitems)$/ tool_bar_items_vector c-src/emacs/src/keyboard.c 7965 toolkit_menubar_in_use c-src/emacs/src/keyboard.c /^toolkit_menubar_in_use (struct frame *f)$/ -top tex-src/texinfo.tex /^\\let\\top=\\relax$/ -top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/ -top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, / -top_level merc-src/accumulator.m /^:- type top_level$/ top_level_1 c-src/emacs/src/keyboard.c /^top_level_1 (Lisp_Object ignore)$/ top_level_2 c-src/emacs/src/keyboard.c /^top_level_2 (void)$/ +top-level c-src/emacs/src/keyboard.c /^DEFUN ("top-level", Ftop_level, Stop_level, 0, 0, / +top_level merc-src/accumulator.m /^:- type top_level$/ +Top tex-src/gzip.texi /^@node Top, , , (dir)$/ +top tex-src/texinfo.tex /^\\let\\top=\\relax$/ +top tex-src/texinfo.tex /^\\outer\\def\\top{\\parsearg\\unnumberedzzz}$/ +To_Start_Addr/f ada-src/2ataspri.adb /^ function To_Start_Addr is new$/ total_keys c-src/emacs/src/keyboard.c 97 +TOTAL_KEYWORDS c-src/etags.c 2325 +totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/ total_size_of_entries c-src/etags.c /^total_size_of_entries (register node *np)$/ total_surrounding cp-src/conway.cpp /^int site::total_surrounding(void)$/ -totally_unblock_input c-src/emacs/src/keyboard.c /^totally_unblock_input (void)$/ +To_TCB_Ptr/f ada-src/2ataspri.adb /^ function To_TCB_Ptr is new$/ +To_Upper pas-src/common.pas /^function To_Upper;(*(ch:char) : char;*)$/ +To_void_ptr/f ada-src/2ataspri.adb /^ function To_void_ptr is new$/ tpargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\deftpargs{#3}\\endgrou/ tpcmd c-src/h.h 15 tpcmd c-src/h.h 8 tpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/ +/T ps-src/rfc1245.ps /^\/T { $/ tpx\deftpheader tex-src/texinfo.tex /^\\def\\deftp{\\defvrparsebody\\Edeftp\\deftpx\\deftphead/ -track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/ tracking_off c-src/emacs/src/keyboard.c /^tracking_off (Lisp_Object old_value)$/ +track-mouse c-src/emacs/src/keyboard.c /^DEFUN ("internal--track-mouse", Ftrack_mouse, Stra/ traffic_light cp-src/conway.cpp /^void traffic_light(int x, int y)$/ translate c-src/emacs/src/regex.h 361 treats cp-src/c.C 131 +Truc.Bidule/b ada-src/etags-test-for.ada /^package body Truc.Bidule is$/ +Truc.Bidule/b ada-src/waroquiers.ada /^package body Truc.Bidule is$/ +Truc.Bidule/s ada-src/etags-test-for.ada /^package Truc.Bidule is$/ +Truc.Bidule/s ada-src/waroquiers.ada /^package Truc.Bidule is$/ +Truc/s ada-src/etags-test-for.ada /^package Truc is$/ +Truc/s ada-src/waroquiers.ada /^package Truc is$/ +TSL/s ada-src/2ataspri.adb /^ package TSL renames System.Tasking_Soft_Links;$/ +t tex-src/texinfo.tex /^\\def\\t##1{\\realbackslash r {##1}}%$/ +t tex-src/texinfo.tex /^\\def\\t#1{{\\tt \\exhyphenpenalty=10000\\rawbackslash / +t tex-src/texinfo.tex /^\\let\\b=\\ptexb \\let\\c=\\ptexc \\let\\i=\\ptexi \\let\\t=\\/ +t tex-src/texinfo.tex /^\\let\\t=\\indexdummyfont$/ +ttfont tex-src/texinfo.tex /^\\let\\ttfont = \\t$/ tt prol-src/natded.prolog /^tt:-$/ tt tex-src/texinfo.tex /^\\def\\df{\\let\\tentt=\\deftt \\let\\tenbf = \\defbf \\bf}/ -tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/ tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}%$/ +tt tex-src/texinfo.tex /^\\def\\tt{\\realbackslash tt}$/ tt tex-src/texinfo.tex /^\\font\\deftt=cmtt10 scaled \\magstep1$/ tt tex-src/texinfo.tex /^{\\let\\tentt=\\sectt \\let\\tt=\\sectt \\let\\sf=\\sectt$/ -ttfont tex-src/texinfo.tex /^\\let\\ttfont = \\t$/ -tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/ ttypeseen c-src/etags.c 2430 +tty_read_avail_input c-src/emacs/src/keyboard.c /^tty_read_avail_input (struct terminal *terminal,$/ turnoffactive tex-src/texinfo.tex /^\\def\\turnoffactive{\\let"=\\normaldoublequote$/ +/two ps-src/rfc1245.ps /^\/two \/three \/four \/five \/six \/seven \/eight \/nine \// typdef c-src/etags.c 2434 type c-src/emacs/src/gmalloc.c 145 type c-src/emacs/src/lisp.h 1973 @@ -4563,39 +4351,54 @@ typefunx\deftypefunheader tex-src/texinfo.tex /^\\def\\deftypefun{\\defparsebody typemargin tex-src/texinfo.tex /^\\newskip\\deftypemargin \\deftypemargin=12pt$/ typemargin tex-src/texinfo.tex /^\\rlap{\\rightline{{\\rm #2}\\hskip \\deftypemargin}}}%/ typemargin tex-src/texinfo.tex /^\\setbox0=\\hbox{\\hskip \\deflastargmargin{\\rm #2}\\hs/ +TYPE_RANGED_INTEGERP c-src/emacs/src/lisp.h /^#define TYPE_RANGED_INTEGERP(type, x) \\$/ +Type_Specific_Data/t ada-src/etags-test-for.ada /^ type Type_Specific_Data is record$/ +TYPESTOSTAT objc-src/PackInsp.h 37 typevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/ typevarx\deftypevarheader tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/ typevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/ typevrx\deftypevrheader tex-src/texinfo.tex /^\\def\\deftypevr{\\defvrparsebody\\Edeftypevr\\deftypev/ -u c-src/emacs/src/lisp.h 2397 +/Uacute ps-src/rfc1245.ps /^\/Uacute \/Ucircumflex \/Ugrave \/dotlessi \/circumflex/ u_any c-src/emacs/src/lisp.h 2214 u_boolfwd c-src/emacs/src/lisp.h 2371 u_buffer_objfwd c-src/emacs/src/lisp.h 2373 +UCHAR c-src/emacs/src/lisp.h 2424 +_UCHAR_T c-src/emacs/src/lisp.h 2423 +U_CHAR y-src/cccp.y 38 +u c-src/emacs/src/lisp.h 2397 +/udieresis ps-src/rfc1245.ps /^\/udieresis \/dagger \/.notdef \/cent \/sterling \/secti/ u_finalizer c-src/emacs/src/lisp.h 2219 u_free c-src/emacs/src/lisp.h 2215 u_intfwd c-src/emacs/src/lisp.h 2370 u_kboard_objfwd c-src/emacs/src/lisp.h 2374 u_marker c-src/emacs/src/lisp.h 2216 -u_objfwd c-src/emacs/src/lisp.h 2372 -u_overlay c-src/emacs/src/lisp.h 2217 -u_save_value c-src/emacs/src/lisp.h 2218 unargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defunargs{#3}\\endgrou/ unargs tex-src/texinfo.tex /^\\defunargs {#2}\\endgroup %$/ unargs tex-src/texinfo.tex /^\\defunargs {#3}\\endgroup %$/ +UNARY y-src/cccp.c 18 unblock_input c-src/emacs/src/keyboard.c /^unblock_input (void)$/ unblock_input_to c-src/emacs/src/keyboard.c /^unblock_input_to (int level)$/ unchar c-src/h.h 99 +UNDEFINED c-src/h.h 118 +UNEVALLED c-src/emacs/src/lisp.h 2834 unexpand-abbrev c-src/abbrev.c /^DEFUN ("unexpand-abbrev", Funexpand_abbrev, Sunexp/ +UNGCPRO c-src/emacs/src/lisp.h 3202 +UNGCPRO c-src/emacs/src/lisp.h 3257 +UNGCPRO c-src/emacs/src/lisp.h 3353 unheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/ univ merc-src/accumulator.m /^:- import_module univ.$/ +UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define UNLOCK_ALIGNED_BLOCKS() \\$/ +UNLOCK_ALIGNED_BLOCKS c-src/emacs/src/gmalloc.c /^#define UNLOCK_ALIGNED_BLOCKS()$/ +UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK() \\$/ +UNLOCK c-src/emacs/src/gmalloc.c /^#define UNLOCK()$/ +Unlock/p ada-src/2ataspri.adb /^ procedure Unlock (L : in out Lock) is$/ +Unlock/p ada-src/2ataspri.ads /^ procedure Unlock (L : in out Lock);$/ unnchfopen tex-src/texinfo.tex /^\\def\\unnchfopen #1{%$/ unnchfplain tex-src/texinfo.tex /^\\def\\unnchfplain #1{%$/ -unnumbchapentry tex-src/texinfo.tex /^ \\let\\unnumbchapentry = \\shortunnumberedentry/ unnumbchapentry tex-src/texinfo.tex /^\\def\\unnumbchapentry#1#2{\\dochapentry{#1}{#2}}$/ +unnumbchapentry tex-src/texinfo.tex /^ \\let\\unnumbchapentry = \\shortunnumberedentry/ unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfopen}$/ unnumbchapmacro tex-src/texinfo.tex /^\\global\\let\\unnumbchapmacro=\\unnchfplain}$/ -unnumbered tex-src/texinfo.tex /^\\let\\unnumbered=\\relax$/ -unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/ unnumberedsec tex-src/texinfo.tex /^\\let\\unnumberedsec=\\relax$/ unnumberedsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsec{\\parsearg\\unnumberedseczz/ unnumberedsection tex-src/texinfo.tex /^\\let\\unnumberedsection=\\relax$/ @@ -4608,6 +4411,8 @@ unnumberedsubsubsec tex-src/texinfo.tex /^\\let\\unnumberedsubsubsec=\\relax$/ unnumberedsubsubsec tex-src/texinfo.tex /^\\outer\\def\\unnumberedsubsubsec{\\parsearg\\unnumbere/ unnumberedsubsubsection tex-src/texinfo.tex /^\\let\\unnumberedsubsubsection=\\relax$/ unnumberedsubsubseczzz tex-src/texinfo.tex /^\\def\\unnumberedsubsubseczzz #1{\\seccheck{unnumbere/ +unnumbered tex-src/texinfo.tex /^\\let\\unnumbered=\\relax$/ +unnumbered tex-src/texinfo.tex /^\\outer\\def\\unnumbered{\\parsearg\\unnumberedzzz}$/ unnumberedzzz tex-src/texinfo.tex /^\\def\\unnumberedzzz #1{\\seccheck{unnumbered}%$/ unnumbnoderef tex-src/texinfo.tex /^\\def\\unnumbnoderef{\\ifx\\lastnode\\relax\\else$/ unnumbsecentry tex-src/texinfo.tex /^ \\def\\unnumbsecentry ##1##2{}$/ @@ -4619,66 +4424,104 @@ unnumbsubsubsecentry tex-src/texinfo.tex /^ \\def\\unnumbsubsubsecentry ##1 unnumbsubsubsecentry tex-src/texinfo.tex /^\\def\\unnumbsubsubsecentry#1#2{\\dosubsubsecentry{#1/ unravel_univ merc-src/accumulator.m /^:- some [T] pred unravel_univ(univ::in, T::out) is/ unread_switch_frame c-src/emacs/src/keyboard.c 204 +UNSIGNED_CMP c-src/emacs/src/lisp.h /^#define UNSIGNED_CMP(a, op, b) \\$/ unsignedp y-src/cccp.y 112 unwind c-src/emacs/src/lisp.h 2962 unwind_int c-src/emacs/src/lisp.h 2972 unwind_ptr c-src/emacs/src/lisp.h 2967 unwind_void c-src/emacs/src/lisp.h 2976 unx\defunheader tex-src/texinfo.tex /^\\def\\defun{\\defparsebody\\Edefun\\defunx\\defunheader/ +u_objfwd c-src/emacs/src/lisp.h 2372 +u_overlay c-src/emacs/src/lisp.h 2217 +__up c.c 160 update_accumulator_pred merc-src/accumulator.m /^:- pred update_accumulator_pred(pred_id::in, proc_/ uppercaseenumerate tex-src/texinfo.tex /^\\def\\uppercaseenumerate{%$/ uprintmax_t c-src/emacs/src/lisp.h 149 uprintmax_t c-src/emacs/src/lisp.h 154 +/U ps-src/rfc1245.ps /^\/U { $/ usage perl-src/yagrip.pl /^sub usage {$/ +u_save_value c-src/emacs/src/lisp.h 2218 usecharno c-src/etags.c 210 used c-src/emacs/src/regex.h 347 used_syntax c-src/emacs/src/regex.h 398 +USE_LSB_TAG c-src/emacs/src/lisp.h 271 +USE_LSB_TAG c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (bool, USE_LSB_TAG)$/ +USE_PTHREAD c-src/emacs/src/gmalloc.c 25 user_cmp_function c-src/emacs/src/lisp.h 1814 +UserEdit pyt-src/server.py /^class UserEdit(Frame):$/ user_error c-src/emacs/src/keyboard.c /^user_error (const char *msg)$/ user_hash_function c-src/emacs/src/lisp.h 1811 +User pyt-src/server.py /^class User:$/ user_signal_info c-src/emacs/src/keyboard.c 7235 user_signals c-src/emacs/src/keyboard.c 7250 +USE_SAFE_ALLOCA c-src/emacs/src/lisp.h 4560 +USE_STACK_CONS c-src/emacs/src/lisp.h 4689 +USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4652 +USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4658 +USE_STACK_LISP_OBJECTS c-src/emacs/src/lisp.h 4659 +USE_STACK_STRING c-src/emacs/src/lisp.h 4691 usfreelock_ptr/t ada-src/etags-test-for.ada /^ type usfreelock_ptr is access$/ +Vabbrev_start_location_buffer c-src/abbrev.c 66 +Vabbrev_start_location c-src/abbrev.c 63 +Vabbrev_table_name_list c-src/abbrev.c 43 +VALBITS c-src/emacs/src/lisp.h 246 +valcell c-src/emacs/src/lisp.h 2357 val c-src/emacs/src/lisp.h 3027 val c-src/emacs/src/lisp.h 691 val c-src/getopt.h 84 -val prol-src/natded.prolog /^val(X) --> ['['], valseq(X), [']'].$/ -valcell c-src/emacs/src/lisp.h 2357 +validate php-src/lce_functions.php /^ function validate($value)$/ valid c-src/etags.c 220 valid c-src/etags.c 2502 -validate php-src/lce_functions.php /^ function validate($value)$/ valloc c-src/emacs/src/gmalloc.c /^valloc (size_t size)$/ +VALMASK c-src/emacs/src/lisp.h 829 +VALMASK c-src/emacs/src/lisp.h /^DEFINE_GDB_SYMBOL_BEGIN (EMACS_INT, VALMASK)$/ +VAL_MAX c-src/emacs/src/lisp.h 263 +val prol-src/natded.prolog /^val(X) --> ['['], valseq(X), [']'].$/ valseq prol-src/natded.prolog /^valseq([Val|Vals]) --> val(Val), plusvalseq(Vals)./ +ValToNmStr pas-src/common.pas /^function ValToNmStr; (*($/ value c-src/emacs/src/lisp.h 687 value y-src/cccp.y 112 -var c-src/emacs/src/keyboard.c 11023 -var c-src/emacs/src/lisp.h 3137 -var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/ -var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/ -var tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/ -var tex-src/texinfo.tex /^\\let\\var=\\smartitalic$/ varargs tex-src/texinfo.tex /^\\begingroup\\defname {#2}{#1}\\defvarargs{#3}\\endgro/ varargs tex-src/texinfo.tex /^\\def\\deftpargs #1{\\bf \\defvarargs{#1}}$/ varargs tex-src/texinfo.tex /^\\defvarargs {#2}\\endgroup %$/ varargs tex-src/texinfo.tex /^\\defvarargs {#3}\\endgroup %$/ +var c-src/emacs/src/keyboard.c 11023 +var c-src/emacs/src/lisp.h 3137 varheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/ varparsebody\Edefopt tex-src/texinfo.tex /^\\def\\defopt{\\defvarparsebody\\Edefopt\\defoptx\\defop/ varparsebody\Edeftypevar tex-src/texinfo.tex /^\\def\\deftypevar{\\defvarparsebody\\Edeftypevar\\defty/ varparsebody\Edefvar tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/ varset merc-src/accumulator.m /^:- import_module varset.$/ +var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}%$/ +var tex-src/texinfo.tex /^\\def\\var##1{\\realbackslash var {##1}}$/ +var tex-src/texinfo.tex /^\\let\\var=\\indexdummyfont$/ +var tex-src/texinfo.tex /^\\let\\var=\\smartitalic$/ varx\defvarheader tex-src/texinfo.tex /^\\def\\defvar{\\defvarparsebody\\Edefvar\\defvarx\\defva/ vcopy c-src/emacs/src/lisp.h /^vcopy (Lisp_Object v, ptrdiff_t offset, Lisp_Objec/ +VECSIZE c-src/emacs/src/lisp.h /^#define VECSIZE(type) \\$/ vectorlike_header c-src/emacs/src/lisp.h 1343 +VECTORLIKEP c-src/emacs/src/lisp.h /^# define VECTORLIKEP(x) lisp_h_VECTORLIKEP (x)$/ +VECTORP c-src/emacs/src/lisp.h /^VECTORP (Lisp_Object x)$/ verde cp-src/c.C 40 -verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/ verify_ascii c-src/emacs/src/lisp.h /^# define verify_ascii(str) (str)$/ +verify-tags-table-function el-src/emacs/lisp/progmodes/etags.el /^(defvar verify-tags-table-function nil$/ +VERSION c-src/etags.c 789 +VERSION erl-src/gs_dialog.erl /^-define(VERSION, '2001.1101').$/ +VERSION objc-src/PackInsp.m 34 +Vfundamental_mode_abbrev_table c-src/abbrev.c 52 +Vglobal_abbrev_table c-src/abbrev.c 48 +VHDLFLAGS make-src/Makefile /^VHDLFLAGS=--language=none --regex='\/[ \\t]*\\(ARCHIT/ vignore c-src/etags.c 2417 vindex tex-src/texinfo.tex /^\\def\\vindex {\\vrindex}$/ -visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/ visit-tags-table-buffer el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table-buffer (&optional cont)$/ +visit-tags-table el-src/emacs/lisp/progmodes/etags.el /^(defun visit-tags-table (file &optional local)$/ +Vlast_abbrev c-src/abbrev.c 70 +Vlast_abbrev_text c-src/abbrev.c 75 +Vlispy_mouse_stem c-src/emacs/src/keyboard.c 5172 void c-src/emacs/src/lisp.h /^INLINE void (check_cons_list) (void) { lisp_h_chec/ voidfuncptr c-src/emacs/src/lisp.h 2108 voidval y-src/cccp.y 115 +/V ps-src/rfc1245.ps /^\/V { $/ vrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/ vritemindex tex-src/texinfo.tex /^\\def\\vritemindex #1{\\doind {vr}{\\code{#1}}}%$/ vrparsebody\Edefivar tex-src/texinfo.tex /^\\def\\defivar{\\defvrparsebody\\Edefivar\\defivarx\\def/ @@ -4688,49 +4531,80 @@ vrparsebody\Edefvr tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\ vrx\defvrheader tex-src/texinfo.tex /^\\def\\defvr{\\defvrparsebody\\Edefvr\\defvrx\\defvrhead/ vtable tex-src/texinfo.tex /^\\def\\vtable{\\begingroup\\inENV\\obeylines\\obeyspaces/ vtablex tex-src/texinfo.tex /^\\gdef\\vtablex #1^^M{%$/ -w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/ -w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/ -w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/ -w tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/ -wait_status_ptr_t c.c 161 waiting_for_input c-src/emacs/src/keyboard.c 150 +WAIT_READING_MAX c-src/emacs/src/lisp.h 4281 +WAIT_READING_MAX c-src/emacs/src/lisp.h 4283 +wait_status_ptr_t c.c 161 +WARNINGS make-src/Makefile /^WARNINGS=-pedantic -Wall -Wpointer-arith -Winline / warning y-src/cccp.y /^warning (msg)$/ -weak c-src/emacs/src/lisp.h 1830 +/wbytes ps-src/rfc1245.ps /^\/wbytes { $/ +WCHAR_TYPE_SIZE y-src/cccp.y 99 weak_alias c-src/emacs/src/gmalloc.c /^weak_alias (free, cfree)$/ +weak c-src/emacs/src/lisp.h 1830 web ftp publish make-src/Makefile /^web ftp publish:$/ what c-src/etags.c 252 wheel_syms c-src/emacs/src/keyboard.c 4628 +where cp-src/clheir.hpp 77 where c-src/emacs/src/lisp.h 2348 where c-src/emacs/src/lisp.h 2980 -where cp-src/clheir.hpp 77 where_in_registry cp-src/clheir.hpp 15 +WHITE cp-src/screen.hpp 27 +/wh ps-src/rfc1245.ps /^\/wh { $/ +WINDOW_CONFIGURATIONP c-src/emacs/src/lisp.h /^WINDOW_CONFIGURATIONP (Lisp_Object a)$/ +WINDOWP c-src/emacs/src/lisp.h /^WINDOWP (Lisp_Object a)$/ +WINDOWSNT c-src/etags.c 101 +WINDOWSNT c-src/etags.c 102 windowWillClose objcpp-src/SimpleCalc.M /^- windowWillClose:sender$/ wipe_kboard c-src/emacs/src/keyboard.c /^wipe_kboard (KBOARD *kb)$/ womboid c-src/h.h 63 womboid c-src/h.h 75 word_size c-src/emacs/src/lisp.h 1473 -write php-src/lce_functions.php /^ function write($save="yes")$/ -write php-src/lce_functions.php /^ function write()$/ +WorkingDays cp-src/functions.cpp /^int WorkingDays(Date a, Date b){$/ +WORKING objc-src/PackInsp.m 368 +/W ps-src/rfc1245.ps /^\/W { $/ write1= ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ write2= ruby-src/test1.ru /^ attr_reader :read1 , :read2; attr_writer :writ/ write_abbrev c-src/abbrev.c /^write_abbrev (sym, stream)$/ -write_classname c-src/etags.c /^write_classname (linebuffer *cn, const char *quali/ -write_lex prol-src/natded.prolog /^write_lex(File):-$/ -write_lex_cat prol-src/natded.prolog /^write_lex_cat(File):-$/ -write_xyc cp-src/screen.cpp /^void write_xyc(int x, int y, char c)$/ -writebreak prol-src/natded.prolog /^writebreak([]).$/ writebreaklex prol-src/natded.prolog /^writebreaklex([]).$/ +writebreak prol-src/natded.prolog /^writebreak([]).$/ writecat prol-src/natded.prolog /^writecat(np(ind(sng),nm(_)),np,[],[]):-!.$/ +write_classname c-src/etags.c /^write_classname (linebuffer *cn, const char *quali/ +write_lex_cat prol-src/natded.prolog /^write_lex_cat(File):-$/ +write_lex prol-src/natded.prolog /^write_lex(File):-$/ writelist prol-src/natded.prolog /^writelist([der(Ws)|Ws2]):-$/ writelistsubs prol-src/natded.prolog /^writelistsubs([],X):-$/ +Write_Lock/p ada-src/2ataspri.adb /^ procedure Write_Lock (L : in out Lock; Ceiling_/ +Write_Lock/p ada-src/2ataspri.ads /^ procedure Write_Lock (L : in out Lock; Ceiling_/ writenamestring pas-src/common.pas /^procedure writenamestring;(*($/ +write php-src/lce_functions.php /^ function write()$/ +write php-src/lce_functions.php /^ function write($save="yes")$/ writesubs prol-src/natded.prolog /^writesubs([]).$/ writesups prol-src/natded.prolog /^writesups([]).$/ +write_xyc cp-src/screen.cpp /^void write_xyc(int x, int y, char c)$/ written c-src/etags.c 211 +w tex-src/texinfo.tex /^\\def\\w#1{\\leavevmode\\hbox{#1}}$/ +w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w }%$/ +w tex-src/texinfo.tex /^\\def\\w{\\realbackslash w}$/ +w tex-src/texinfo.tex /^\\let\\w=\\indexdummyfont$/ +XBOOL_VECTOR c-src/emacs/src/lisp.h /^XBOOL_VECTOR (Lisp_Object a)$/ +XBUFFER c-src/emacs/src/lisp.h /^XBUFFER (Lisp_Object a)$/ +XBUFFER_OBJFWD c-src/emacs/src/lisp.h /^XBUFFER_OBJFWD (union Lisp_Fwd *a)$/ +xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/ +XCAR c-src/emacs/src/lisp.h /^# define XCAR(c) lisp_h_XCAR (c)$/ x c.c 153 x c.c 179 x c.c 188 x c.c 189 +xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/ +XCDR c-src/emacs/src/lisp.h /^# define XCDR(c) lisp_h_XCDR (c)$/ +XCHAR_TABLE c-src/emacs/src/lisp.h /^XCHAR_TABLE (Lisp_Object a)$/ +XCHG_0 c-src/sysdep.h 47 +XCHG_1 c-src/sysdep.h 48 +XCHG_2 c-src/sysdep.h 49 +XCHG_3 c-src/sysdep.h 50 +XCHG_4 c-src/sysdep.h 51 +XCHG_5 c-src/sysdep.h 52 +XCONS c-src/emacs/src/lisp.h /^# define XCONS(a) lisp_h_XCONS (a)$/ x cp-src/c.C 53 x cp-src/c.C 80 x cp-src/clheir.hpp 49 @@ -4738,80 +4612,219 @@ x cp-src/clheir.hpp 58 x cp-src/conway.hpp 7 x cp-src/fail.C 10 x cp-src/fail.C 44 -x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename], page\\tie\\refx{/ -x-get-selection-internal c.c /^ Fx_get_selection_internal, Sx_get_selection/ -x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selectio/ -xcar_addr c-src/emacs/src/lisp.h /^xcar_addr (Lisp_Object c)$/ -xcdr_addr c-src/emacs/src/lisp.h /^xcdr_addr (Lisp_Object c)$/ +X c-src/h.h 100 +XDEFUN c.c /^XDEFUN ("x-get-selection-internal", Fx_get_selecti/ xdiff make-src/Makefile /^xdiff: ETAGS EXTAGS ${infiles}$/ -xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/ -xitem tex-src/texinfo.tex /^\\let\\xitem = \\internalBxitem %$/ +XFASTINT c-src/emacs/src/lisp.h /^# define XFASTINT(a) lisp_h_XFASTINT (a)$/ +XFASTINT c-src/emacs/src/lisp.h /^XFASTINT (Lisp_Object a)$/ +XFINALIZER c-src/emacs/src/lisp.h /^XFINALIZER (Lisp_Object a)$/ +XFLOAT c-src/emacs/src/lisp.h /^XFLOAT (Lisp_Object a)$/ +XFLOAT_DATA c-src/emacs/src/lisp.h /^XFLOAT_DATA (Lisp_Object f)$/ +XFLOATINT c-src/emacs/src/lisp.h /^XFLOATINT (Lisp_Object n)$/ +XFWDTYPE c-src/emacs/src/lisp.h /^XFWDTYPE (union Lisp_Fwd *a)$/ +x-get-selection-internal c.c /^DEFUN ("x-get-selection-internal", Fx_get_selectio/ +x-get-selection-internal c.c /^ Fx_get_selection_internal, Sx_get_selection/ +XHASH c-src/emacs/src/lisp.h /^# define XHASH(a) lisp_h_XHASH (a)$/ +XHASH_TABLE c-src/emacs/src/lisp.h /^XHASH_TABLE (Lisp_Object a)$/ +XIL c-src/emacs/src/lisp.h /^# define XIL(i) lisp_h_XIL (i)$/ +XINT c-src/emacs/src/lisp.h /^# define XINT(a) lisp_h_XINT (a)$/ +XINT c-src/emacs/src/lisp.h /^XINT (Lisp_Object a)$/ +XINTPTR c-src/emacs/src/lisp.h /^XINTPTR (Lisp_Object a)$/ xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitem "#1"{\\def\\xitemsubtopix{#1} \\s/ xitemsubtopix tex-src/texinfo.tex /^\\def\\internalBxitemx "#1"{\\def\\xitemsubtopix{#1} \\/ +xitem tex-src/texinfo.tex /^\\def\\xitem{\\errmessage{@xitem while not in a table/ +xitem tex-src/texinfo.tex /^\\let\\xitem = \\internalBxitem %$/ xitemx tex-src/texinfo.tex /^\\def\\xitemx{\\errmessage{@xitemx while not in a tab/ xitemx tex-src/texinfo.tex /^\\let\\xitemx = \\internalBxitemx %$/ xitemzzz tex-src/texinfo.tex /^\\def\\xitemzzz #1{\\dosubind {kw}{\\code{#1}}{for {\\b/ xkey tex-src/texinfo.tex /^\\def\\xkey{\\key}$/ +XLI_BUILTIN_LISPSYM c-src/emacs/src/lisp.h /^#define XLI_BUILTIN_LISPSYM(iname) TAG_SYMOFFSET (/ +XLI c-src/emacs/src/lisp.h /^# define XLI(o) lisp_h_XLI (o)$/ xmalloc c-src/etags.c /^xmalloc (size_t size)$/ +XMARKER c-src/emacs/src/lisp.h /^XMARKER (Lisp_Object a)$/ +XMISCANY c-src/emacs/src/lisp.h /^XMISCANY (Lisp_Object a)$/ +XMISC c-src/emacs/src/lisp.h /^XMISC (Lisp_Object a)$/ +XMISCTYPE c-src/emacs/src/lisp.h /^XMISCTYPE (Lisp_Object a)$/ xnew c-src/etags.c /^#define xnew(n, Type) ((Type *) xmalloc ((n) / +XOVERLAY c-src/emacs/src/lisp.h /^XOVERLAY (Lisp_Object a)$/ +XPNTR c-src/emacs/src/lisp.h /^# define XPNTR(a) lisp_h_XPNTR (a)$/ +XPROCESS c-src/emacs/src/lisp.h /^XPROCESS (Lisp_Object a)$/ +/X ps-src/rfc1245.ps /^\/X { $/ xrdef tex-src/texinfo.tex /^\\def\\xrdef #1#2{$/ xrealloc c-src/etags.c /^xrealloc (void *ptr, size_t size)$/ -xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/ xref-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defclass xref-etags-location (xref-location)$/ xref-location-line el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-line ((l xref-etags-lo/ xref-location-marker el-src/emacs/lisp/progmodes/etags.el /^(cl-defmethod xref-location-marker ((l xref-etags-/ xref-make-etags-location el-src/emacs/lisp/progmodes/etags.el /^(defun xref-make-etags-location (tag-info file)$/ -xrefX tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/ +xref tex-src/texinfo.tex /^\\def\\xref#1{See \\xrefX[#1,,,,,,,]}$/ xreftie tex-src/texinfo.tex /^\\gdef\\xreftie{'tie}$/ +xrefX tex-src/texinfo.tex /^\\def\\xrefX[#1,#2,#3,#4,#5,#6]{\\begingroup%$/ xrnew c-src/etags.c /^#define xrnew(op, n, Type) ((op) = (Type *) xreall/ +XSAVE_FUNCPOINTER c-src/emacs/src/lisp.h /^XSAVE_FUNCPOINTER (Lisp_Object obj, int n)$/ +XSAVE_INTEGER c-src/emacs/src/lisp.h /^XSAVE_INTEGER (Lisp_Object obj, int n)$/ +XSAVE_OBJECT c-src/emacs/src/lisp.h /^XSAVE_OBJECT (Lisp_Object obj, int n)$/ +XSAVE_POINTER c-src/emacs/src/lisp.h /^XSAVE_POINTER (Lisp_Object obj, int n)$/ +XSAVE_VALUE c-src/emacs/src/lisp.h /^XSAVE_VALUE (Lisp_Object a)$/ +XSETBOOL_VECTOR c-src/emacs/src/lisp.h /^#define XSETBOOL_VECTOR(a, b) (XSETPSEUDOVECTOR (a/ +XSETBUFFER c-src/emacs/src/lisp.h /^#define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, / +XSETCDR c-src/emacs/src/lisp.h /^XSETCDR (Lisp_Object c, Lisp_Object n)$/ +XSETCHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETCHAR_TABLE(a, b) (XSETPSEUDOVECTOR (a,/ +XSETCOMPILED c-src/emacs/src/lisp.h /^#define XSETCOMPILED(a, b) (XSETPSEUDOVECTOR (a, b/ +XSETCONS c-src/emacs/src/lisp.h /^#define XSETCONS(a, b) ((a) = make_lisp_ptr (b, Li/ +XSETFASTINT c-src/emacs/src/lisp.h /^#define XSETFASTINT(a, b) ((a) = make_natnum (b))$/ +XSETFLOAT c-src/emacs/src/lisp.h /^#define XSETFLOAT(a, b) ((a) = make_lisp_ptr (b, L/ +XSET_HASH_TABLE c-src/emacs/src/lisp.h /^#define XSET_HASH_TABLE(VAR, PTR) \\$/ +XSETINT c-src/emacs/src/lisp.h /^#define XSETINT(a, b) ((a) = make_number (b))$/ +XSETMISC c-src/emacs/src/lisp.h /^#define XSETMISC(a, b) ((a) = make_lisp_ptr (b, Li/ +XSETPROCESS c-src/emacs/src/lisp.h /^#define XSETPROCESS(a, b) (XSETPSEUDOVECTOR (a, b,/ +XSETPSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETPSEUDOVECTOR(a, b, code) \\$/ +XSETPVECTYPE c-src/emacs/src/lisp.h /^#define XSETPVECTYPE(v, code) \\$/ +XSETPVECTYPESIZE c-src/emacs/src/lisp.h /^#define XSETPVECTYPESIZE(v, code, lispsize, restsi/ +XSETSTRING c-src/emacs/src/lisp.h /^#define XSETSTRING(a, b) ((a) = make_lisp_ptr (b, / +XSETSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^#define XSETSUB_CHAR_TABLE(a, b) (XSETPSEUDOVECTOR/ +XSETSUBR c-src/emacs/src/lisp.h /^#define XSETSUBR(a, b) (XSETPSEUDOVECTOR (a, b, PV/ +XSETSYMBOL c-src/emacs/src/lisp.h /^#define XSETSYMBOL(a, b) ((a) = make_lisp_symbol (/ +XSETTERMINAL c-src/emacs/src/lisp.h /^#define XSETTERMINAL(a, b) (XSETPSEUDOVECTOR (a, b/ +XSETTYPED_PSEUDOVECTOR c-src/emacs/src/lisp.h /^#define XSETTYPED_PSEUDOVECTOR(a, b, size, code) / +XSETVECTOR c-src/emacs/src/lisp.h /^#define XSETVECTOR(a, b) ((a) = make_lisp_ptr (b, / +XSETWINDOW_CONFIGURATION c-src/emacs/src/lisp.h /^#define XSETWINDOW_CONFIGURATION(a, b) \\$/ +XSETWINDOW c-src/emacs/src/lisp.h /^#define XSETWINDOW(a, b) (XSETPSEUDOVECTOR (a, b, / +XSTRING c-src/emacs/src/lisp.h /^XSTRING (Lisp_Object a)$/ +XSUB_CHAR_TABLE c-src/emacs/src/lisp.h /^XSUB_CHAR_TABLE (Lisp_Object a)$/ +XSUBR c-src/emacs/src/lisp.h /^XSUBR (Lisp_Object a)$/ +XSYMBOL c-src/emacs/src/lisp.h /^# define XSYMBOL(a) lisp_h_XSYMBOL (a)$/ +XSYMBOL c-src/emacs/src/lisp.h /^XSYMBOL (Lisp_Object a)$/ +XTERMINAL c-src/emacs/src/lisp.h /^XTERMINAL (Lisp_Object a)$/ +x tex-src/texinfo.tex /^\\refx{#1-snt}{} [\\printednodename], page\\tie\\refx{/ +XTYPE c-src/emacs/src/lisp.h /^# define XTYPE(a) lisp_h_XTYPE (a)$/ +XTYPE c-src/emacs/src/lisp.h /^XTYPE (Lisp_Object a)$/ +XUNTAG c-src/emacs/src/lisp.h /^# define XUNTAG(a, type) lisp_h_XUNTAG (a, type)$/ +XUNTAG c-src/emacs/src/lisp.h /^XUNTAG (Lisp_Object a, int type)$/ +XWINDOW c-src/emacs/src/lisp.h /^XWINDOW (Lisp_Object a)$/ +XX cp-src/x.cc 1 xx make-src/Makefile /^xx="this line is here because of a fontlock bug$/ xyz ruby-src/test1.ru /^ alias_method :xyz,$/ +Xyzzy ruby-src/test1.ru 13 +YACC c-src/etags.c 2199 +Yacc_entries c-src/etags.c /^Yacc_entries (FILE *inf)$/ +Yacc_help c-src/etags.c 693 +Yacc_suffixes c-src/etags.c 691 +Yappendixletterandtype tex-src/texinfo.tex /^\\def\\Yappendixletterandtype{%$/ y cp-src/clheir.hpp 49 y cp-src/clheir.hpp 58 y cp-src/conway.hpp 7 +Y c-src/h.h 100 +YELLOW cp-src/screen.hpp 26 +/yen ps-src/rfc1245.ps /^\/yen \/.notdef \/.notdef \/.notdef \/.notdef \/.notdef / y-get-selection-internal c.c /^ Fy_get_selection_internal, Sy_get_selection_/ +Ynothing tex-src/texinfo.tex /^\\def\\Ynothing{}$/ +Ypagenumber tex-src/texinfo.tex /^\\def\\Ypagenumber{\\folio}$/ +/Y ps-src/rfc1245.ps /^\/Y { $/ +Ysectionnumberandtype tex-src/texinfo.tex /^\\def\\Ysectionnumberandtype{%$/ +YSRC make-src/Makefile /^YSRC=parse.y parse.c atest.y cccp.c cccp.y$/ +Ytitle tex-src/texinfo.tex /^\\def\\Ytitle{\\thischapter}$/ +YYABORT /usr/share/bison/bison.simple 154 +YYACCEPT /usr/share/bison/bison.simple 153 yyalloc /usr/share/bison/bison.simple 84 +YYBACKUP /usr/share/bison/bison.simple /^#define YYBACKUP(Token, Value) \\$/ +YYBISON y-src/cccp.c 4 +YYBISON y-src/parse.c 4 yyclearin /usr/share/bison/bison.simple 150 yydebug /usr/share/bison/bison.simple 238 +YY_DECL_NON_LSP_VARIABLES /usr/share/bison/bison.simple 374 +YY_DECL_VARIABLES /usr/share/bison/bison.simple 385 +YY_DECL_VARIABLES /usr/share/bison/bison.simple 391 +YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args) \\$/ +YYDPRINTF /usr/share/bison/bison.simple /^# define YYDPRINTF(Args)$/ +YYEMPTY /usr/share/bison/bison.simple 151 +YYEOF /usr/share/bison/bison.simple 152 +YYERRCODE /usr/share/bison/bison.simple 179 yyerrhandle /usr/share/bison/bison.simple 848 yyerrlab1 /usr/share/bison/bison.simple 823 yyerrok /usr/share/bison/bison.simple 149 +YYERROR /usr/share/bison/bison.simple 155 yyerror y-src/cccp.y /^yyerror (s)$/ yyerrstatus /usr/share/bison/bison.simple 846 +YYFAIL /usr/share/bison/bison.simple 159 +YYFPRINTF /usr/share/bison/bison.simple 226 +YYINITDEPTH /usr/share/bison/bison.simple 245 +YYLEX /usr/share/bison/bison.simple 201 +YYLEX /usr/share/bison/bison.simple 203 +YYLEX /usr/share/bison/bison.simple 207 +YYLEX /usr/share/bison/bison.simple 209 +YYLEX /usr/share/bison/bison.simple 213 yylex y-src/cccp.y /^yylex ()$/ -yyls /usr/share/bison/bison.simple 89 +YYLLOC_DEFAULT /usr/share/bison/bison.simple /^# define YYLLOC_DEFAULT(Current, Rhs, N) \\$/ yylsp /usr/share/bison/bison.simple 748 yylsp /usr/share/bison/bison.simple 921 -yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/ +yyls /usr/share/bison/bison.simple 89 +YYMAXDEPTH /usr/share/bison/bison.simple 256 +YYMAXDEPTH /usr/share/bison/bison.simple 260 yymemcpy /usr/share/bison/bison.simple 265 +yymemcpy /usr/share/bison/bison.simple /^yymemcpy (char *yyto, const char *yyfrom, YYSIZE_T/ +yynewstate /usr/share/bison/bison.simple 763 +yynewstate /usr/share/bison/bison.simple 925 yyn /usr/share/bison/bison.simple 755 yyn /usr/share/bison/bison.simple 861 yyn /usr/share/bison/bison.simple 895 yyn /usr/share/bison/bison.simple 903 -yynewstate /usr/share/bison/bison.simple 763 -yynewstate /usr/share/bison/bison.simple 925 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 351 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 354 +YYPARSE_PARAM_ARG /usr/share/bison/bison.simple 358 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 352 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 355 +YYPARSE_PARAM_DECL /usr/share/bison/bison.simple 359 yyparse /usr/share/bison/bison.simple /^yyparse (YYPARSE_PARAM_ARG)$/ +YYPOPSTACK /usr/share/bison/bison.simple 445 +YYPOPSTACK /usr/share/bison/bison.simple 447 +YYRECOVERING /usr/share/bison/bison.simple /^#define YYRECOVERING() (!!yyerrstatus)$/ yyresult /usr/share/bison/bison.simple 932 yyresult /usr/share/bison/bison.simple 939 yyresult /usr/share/bison/bison.simple 947 yyreturn /usr/share/bison/bison.simple 933 yyreturn /usr/share/bison/bison.simple 940 +YYSIZE_T /usr/share/bison/bison.simple 129 +YYSIZE_T /usr/share/bison/bison.simple 132 +YYSIZE_T /usr/share/bison/bison.simple 137 +YYSIZE_T /usr/share/bison/bison.simple 141 +YYSIZE_T /usr/share/bison/bison.simple 146 +YYSIZE_T /usr/share/bison/bison.simple 52 +YYSIZE_T /usr/share/bison/bison.simple 57 +YYSIZE_T /usr/share/bison/bison.simple 72 +YYSIZE_T /usr/share/bison/bison.simple 76 yyss /usr/share/bison/bison.simple 86 +YYSTACK_ALLOC /usr/share/bison/bison.simple 51 +YYSTACK_ALLOC /usr/share/bison/bison.simple 56 +YYSTACK_ALLOC /usr/share/bison/bison.simple 60 +YYSTACK_ALLOC /usr/share/bison/bison.simple 79 +YYSTACK_BYTES /usr/share/bison/bison.simple /^# define YYSTACK_BYTES(N) \\$/ +YYSTACK_FREE /usr/share/bison/bison.simple 80 +YYSTACK_FREE /usr/share/bison/bison.simple /^# define YYSTACK_FREE(Ptr) do { \/* empty *\/; } wh/ +YYSTACK_GAP_MAX /usr/share/bison/bison.simple 94 +YYSTACK_RELOCATE /usr/share/bison/bison.simple 548 +YYSTACK_RELOCATE /usr/share/bison/bison.simple /^# define YYSTACK_RELOCATE(Type, Stack) \\$/ yystate /usr/share/bison/bison.simple 757 yystate /usr/share/bison/bison.simple 761 yystate /usr/share/bison/bison.simple 875 yystate /usr/share/bison/bison.simple 924 -yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/ +YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) std::x$/ +YYSTD /usr/share/bison/bison.simple /^# define YYSTD(x) x$/ yystpcpy /usr/share/bison/bison.simple 317 -yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/ +yystpcpy /usr/share/bison/bison.simple /^yystpcpy (char *yydest, const char *yysrc)$/ yystrlen /usr/share/bison/bison.simple 294 -yyvs /usr/share/bison/bison.simple 87 +yystrlen /usr/share/bison/bison.simple /^yystrlen (const char *yystr)$/ +YYSTYPE y-src/parse.y 72 +YYSTYPE y-src/parse.y 73 +YYTERROR /usr/share/bison/bison.simple 178 yyvsp /usr/share/bison/bison.simple 746 yyvsp /usr/share/bison/bison.simple 919 +yyvs /usr/share/bison/bison.simple 87 z c.c 144 z c.c 164 z cp-src/clheir.hpp 49 z cp-src/clheir.hpp 58 +Z c-src/h.h 100 +/Z ps-src/rfc1245.ps /^\/Z {$/ zzz tex-src/texinfo.tex /^\\def\\infoappendix{\\parsearg\\appendixzzz}$/ zzz tex-src/texinfo.tex /^\\def\\infochapter{\\parsearg\\chapterzzz}$/ zzz tex-src/texinfo.tex /^\\def\\infosection{\\parsearg\\sectionzzz}$/ @@ -4819,16 +4832,3 @@ zzz tex-src/texinfo.tex /^\\def\\infosubsection{\\parsearg\\subsectionzzz}$/ zzz tex-src/texinfo.tex /^\\def\\infosubsubsection{\\parsearg\\subsubsectionzzz}/ zzz tex-src/texinfo.tex /^\\outer\\def\\appendix{\\parsearg\\appendixzzz}$/ zzz tex-src/texinfo.tex /^\\outer\\def\\chapter{\\parsearg\\chapterzzz}$/ -{ tex-src/texinfo.tex /^\\let\\{=\\mylbrace$/ -{ tex-src/texinfo.tex /^\\let\\{=\\ptexlbrace$/ -| tex-src/texinfo.tex /^\\def|{{\\tt \\char '174}}$/ -| tex-src/texinfo.tex /^\\let|=\\normalverticalbar$/ -} tex-src/texinfo.tex /^\\let\\}=\\myrbrace$/ -} tex-src/texinfo.tex /^\\let\\}=\\ptexrbrace$/ -~ tex-src/texinfo.tex /^\\catcode `\\^=7 \\catcode `\\_=8 \\catcode `\\~=13 \\let/ -~ tex-src/texinfo.tex /^\\def~{{\\tt \\char '176}}$/ -~ tex-src/texinfo.tex /^\\let~=\\normaltilde$/ -~A cp-src/c.C /^A::~A() {}$/ -~B cp-src/c.C /^ ~B() {};$/ -~MDiagArray2 cp-src/MDiagArray2.h /^ ~MDiagArray2 (void) { }$/ -~generic_object cp-src/clheir.cpp /^generic_object::~generic_object(void)$/ diff --git a/test/manual/etags/CTAGS.good_update b/test/manual/etags/CTAGS.good_update index 22f7a4421e3..2e29a2cb93e 100644 --- a/test/manual/etags/CTAGS.good_update +++ b/test/manual/etags/CTAGS.good_update @@ -607,7 +607,7 @@ FOR_EACH_ALIST_VALUE c-src/emacs/src/lisp.h /^#define FOR_EACH_ALIST_VALUE(head_ FOR_EACH_TAIL c-src/emacs/src/lisp.h /^#define FOR_EACH_TAIL(hare, list, tortoise, n) \\$/ FRAMEP c-src/emacs/src/lisp.h /^FRAMEP (Lisp_Object a)$/ FRC make-src/Makefile /^FRC:;$/ -FREEFLOOD c-src/emacs/src/gmalloc.c 1863 +FREEFLOOD c-src/emacs/src/gmalloc.c 1866 FSRC make-src/Makefile /^FSRC=entry.for entry.strange_suffix entry.strange$/ FUN0 y-src/parse.y /^yylex FUN0()$/ FUN1 y-src/parse.y /^str_to_col FUN1(char **,str)$/ @@ -953,12 +953,12 @@ Lua_help c-src/etags.c 600 Lua_suffixes c-src/etags.c 598 M ruby-src/test1.ru /^module A::M; end$/ MAGENTA cp-src/screen.hpp 17 -MAGICBYTE c-src/emacs/src/gmalloc.c 1861 -MAGICFREE c-src/emacs/src/gmalloc.c 1860 -MAGICWORD c-src/emacs/src/gmalloc.c 1859 +MAGICBYTE c-src/emacs/src/gmalloc.c 1864 +MAGICFREE c-src/emacs/src/gmalloc.c 1863 +MAGICWORD c-src/emacs/src/gmalloc.c 1862 MAKE make-src/Makefile /^MAKE:=$(MAKE) --no-print-directory$/ MAKESRC make-src/Makefile /^MAKESRC=Makefile$/ -MALLOCFLOOD c-src/emacs/src/gmalloc.c 1862 +MALLOCFLOOD c-src/emacs/src/gmalloc.c 1865 MANY c-src/emacs/src/lisp.h 2833 MARKERP c-src/emacs/src/lisp.h /^# define MARKERP(x) lisp_h_MARKERP (x)$/ MAXPATHLEN c-src/etags.c 115 @@ -1734,7 +1734,7 @@ __malloc_extra_blocks c-src/emacs/src/gmalloc.c 382 __malloc_initialize c-src/emacs/src/gmalloc.c /^__malloc_initialize (void)$/ __malloc_initialized c-src/emacs/src/gmalloc.c 380 __repr__ pyt-src/server.py /^ def __repr__(self):$/ -__sbrk c-src/emacs/src/gmalloc.c 1516 +__sbrk c-src/emacs/src/gmalloc.c 1518 __str__ pyt-src/server.py /^ def __str__(self):$/ __up c.c 160 _aligned_blocks c-src/emacs/src/gmalloc.c 1006 @@ -1869,7 +1869,7 @@ align c-src/emacs/src/gmalloc.c /^align (size_t size)$/ alignas c-src/emacs/src/lisp.h /^# define alignas(alignment) \/* empty *\/$/ aligned c-src/emacs/src/gmalloc.c 199 aligned_alloc c-src/emacs/src/gmalloc.c /^aligned_alloc (size_t alignment, size_t size)$/ -aligned_alloc c-src/emacs/src/gmalloc.c 1722 +aligned_alloc c-src/emacs/src/gmalloc.c 1725 aligned_alloc c-src/emacs/src/gmalloc.c 71 alignlist c-src/emacs/src/gmalloc.c 196 alive cp-src/conway.hpp 7 @@ -2073,7 +2073,7 @@ cacheLRUEntry_s c.c 172 cacheLRUEntry_t c.c 177 calculate_goal_info merc-src/accumulator.m /^:- pred calculate_goal_info(hlds_goal_expr::in, hl/ calloc c-src/emacs/src/gmalloc.c /^calloc (size_t nmemb, size_t size)$/ -calloc c-src/emacs/src/gmalloc.c 1721 +calloc c-src/emacs/src/gmalloc.c 1724 calloc c-src/emacs/src/gmalloc.c 66 calloc c-src/emacs/src/gmalloc.c 70 can_be_null c-src/emacs/src/regex.h 370 @@ -2703,7 +2703,7 @@ frag c-src/emacs/src/gmalloc.c 152 frame_local c-src/emacs/src/lisp.h 2341 free c-src/emacs/src/gmalloc.c /^free (void *ptr)$/ free c-src/emacs/src/gmalloc.c 166 -free c-src/emacs/src/gmalloc.c 1723 +free c-src/emacs/src/gmalloc.c 1726 free c-src/emacs/src/gmalloc.c 67 free c-src/emacs/src/gmalloc.c 72 free_fdesc c-src/etags.c /^free_fdesc (register fdesc *fdp)$/ @@ -2814,7 +2814,7 @@ hash_table_test c-src/emacs/src/lisp.h 1805 hashfn c-src/emacs/src/lisp.h /^ EMACS_UINT (*hashfn) (struct hash_table_test *t,/ hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}$/ hat tex-src/texinfo.tex /^\\def\\hat{\\realbackslash hat}%$/ -hdr c-src/emacs/src/gmalloc.c 1865 +hdr c-src/emacs/src/gmalloc.c 1868 head_table c-src/emacs/src/keyboard.c 11027 header c-src/emacs/src/lisp.h 1371 header c-src/emacs/src/lisp.h 1388 @@ -3244,7 +3244,7 @@ mach_task_self c-src/machsyscalls.h /^SYSCALL (mach_task_self, -28,$/ mach_thread_self c-src/machsyscalls.h /^SYSCALL (mach_thread_self, -27,$/ macheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ macx\defmacheader tex-src/texinfo.tex /^\\def\\defmac{\\defparsebody\\Edefmac\\defmacx\\defmache/ -magic c-src/emacs/src/gmalloc.c 1868 +magic c-src/emacs/src/gmalloc.c 1871 mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstep1$/ mainmagstep tex-src/texinfo.tex /^\\let\\mainmagstep=\\magstephalf$/ maintaining.info make-src/Makefile /^maintaining.info: maintaining.texi$/ @@ -3272,7 +3272,7 @@ make_uninit_sub_char_table c-src/emacs/src/lisp.h /^make_uninit_sub_char_table ( make_uninit_vector c-src/emacs/src/lisp.h /^make_uninit_vector (ptrdiff_t size)$/ malloc c-src/emacs/src/gmalloc.c /^extern void *malloc (size_t size) ATTRIBUTE_MALLOC/ malloc c-src/emacs/src/gmalloc.c /^malloc (size_t size)$/ -malloc c-src/emacs/src/gmalloc.c 1719 +malloc c-src/emacs/src/gmalloc.c 1722 malloc c-src/emacs/src/gmalloc.c 64 malloc c-src/emacs/src/gmalloc.c 68 malloc_atfork_handler_child c-src/emacs/src/gmalloc.c /^malloc_atfork_handler_child (void)$/ @@ -3305,7 +3305,7 @@ maybe_gc c-src/emacs/src/lisp.h /^maybe_gc (void)$/ mcCSC cp-src/c.C 6 mcheck c-src/emacs/src/gmalloc.c /^mcheck (void (*func) (enum mcheck_status))$/ mcheck_status c-src/emacs/src/gmalloc.c 283 -mcheck_used c-src/emacs/src/gmalloc.c 2017 +mcheck_used c-src/emacs/src/gmalloc.c 2020 mdbcomp merc-src/accumulator.m /^:- import_module mdbcomp.$/ me22b lua-src/test.lua /^ local function test.me22b (one)$/ me_22a lua-src/test.lua /^ function test.me_22a(one, two)$/ @@ -3639,7 +3639,7 @@ pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager$/ pagealignmacro tex-src/texinfo.tex /^\\global\\let\\pagealignmacro=\\chappager}$/ pagebody tex-src/texinfo.tex /^\\def\\pagebody#1{\\vbox to\\pageheight{\\boxmaxdepth=\\/ pagecontents tex-src/texinfo.tex /^\\gdef\\pagecontents#1{\\ifvoid\\topins\\else\\unvbox\\to/ -pagesize c-src/emacs/src/gmalloc.c 1707 +pagesize c-src/emacs/src/gmalloc.c 1710 pagesofar tex-src/texinfo.tex /^\\def\\pagesofar{\\unvbox\\partialpage %$/ pair merc-src/accumulator.m /^:- import_module pair.$/ par tex-src/texinfo.tex /^\\let\\par=\\lisppar$/ @@ -3854,7 +3854,7 @@ readauxfile tex-src/texinfo.tex /^\\def\\readauxfile{%$/ readline c-src/etags.c /^readline (linebuffer *lbp, FILE *stream)$/ readline_internal c-src/etags.c /^readline_internal (linebuffer *lbp, register FILE / realloc c-src/emacs/src/gmalloc.c /^realloc (void *ptr, size_t size)$/ -realloc c-src/emacs/src/gmalloc.c 1720 +realloc c-src/emacs/src/gmalloc.c 1723 realloc c-src/emacs/src/gmalloc.c 65 realloc c-src/emacs/src/gmalloc.c 69 reallochook c-src/emacs/src/gmalloc.c /^reallochook (void *ptr, size_t size)$/ @@ -4078,7 +4078,7 @@ site cp-src/conway.hpp /^ site(int xi, int yi): x(xi), y(yi), alive(0) {/ site cp-src/conway.hpp 5 size c-src/emacs/src/gmalloc.c 156 size c-src/emacs/src/gmalloc.c 163 -size c-src/emacs/src/gmalloc.c 1867 +size c-src/emacs/src/gmalloc.c 1870 size c-src/emacs/src/lisp.h 1364 size c-src/emacs/src/lisp.h 1390 size c-src/etags.c 236 diff --git a/test/manual/etags/ETAGS.good_1 b/test/manual/etags/ETAGS.good_1 index 92eb72523dc..9ed4ac0477c 100644 --- a/test/manual/etags/ETAGS.good_1 +++ b/test/manual/etags/ETAGS.good_1 @@ -689,39 +689,39 @@ weak_alias 1279,38850 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -__default_morecore 1528,46584 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -hybrid_get_current_dir_name 1815,53898 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +__default_morecore 1530,46600 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +hybrid_get_current_dir_name 1818,53922 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,3761 #define _REGEX_H 21,837 diff --git a/test/manual/etags/ETAGS.good_2 b/test/manual/etags/ETAGS.good_2 index efda990e2eb..85b9503c035 100644 --- a/test/manual/etags/ETAGS.good_2 +++ b/test/manual/etags/ETAGS.good_2 @@ -806,54 +806,54 @@ void *(*__realloc_hook)__realloc_hook1313,39971 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -extern void *__sbrk __sbrk1521,46320 -__default_morecore 1528,46584 -void *(*__memalign_hook)__memalign_hook1557,47527 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -extern void *valloc valloc1699,51243 -extern int getpagesize 1704,51381 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -extern void *malloc malloc1726,51712 -extern void *realloc realloc1727,51747 -extern void *calloc calloc1728,51794 -extern void free 1729,51843 -extern void *aligned_alloc aligned_alloc1731,51899 -extern int posix_memalign 1733,51993 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -char *gget_current_dir_name gget_current_dir_name1812,53854 -hybrid_get_current_dir_name 1815,53898 -static void (*old_free_hook)old_free_hook1851,55050 -static void *(*old_malloc_hook)old_malloc_hook1852,55092 -static void *(*old_realloc_hook)old_realloc_hook1853,55139 -static void (*abortfunc)abortfunc1856,55253 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +extern void *__sbrk __sbrk1523,46336 +__default_morecore 1530,46600 +void *(*__memalign_hook)__memalign_hook1560,47551 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +extern void *valloc valloc1702,51267 +extern int getpagesize 1707,51405 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +extern void *malloc malloc1729,51736 +extern void *realloc realloc1730,51771 +extern void *calloc calloc1731,51818 +extern void free 1732,51867 +extern void *aligned_alloc aligned_alloc1734,51923 +extern int posix_memalign 1736,52017 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +char *gget_current_dir_name gget_current_dir_name1815,53878 +hybrid_get_current_dir_name 1818,53922 +static void (*old_free_hook)old_free_hook1854,55074 +static void *(*old_malloc_hook)old_malloc_hook1855,55116 +static void *(*old_realloc_hook)old_realloc_hook1856,55163 +static void (*abortfunc)abortfunc1859,55277 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,4576 #define _REGEX_H 21,837 diff --git a/test/manual/etags/ETAGS.good_3 b/test/manual/etags/ETAGS.good_3 index 34d2fea1765..e34aab88d4b 100644 --- a/test/manual/etags/ETAGS.good_3 +++ b/test/manual/etags/ETAGS.good_3 @@ -779,41 +779,41 @@ weak_alias 1279,38850 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -__default_morecore 1528,46584 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -hybrid_get_current_dir_name 1815,53898 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 - size_t size;1867,55559 - size_t magic;1868,55613 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +__default_morecore 1530,46600 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +hybrid_get_current_dir_name 1818,53922 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 + size_t size;1870,55583 + size_t magic;1871,55637 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,4485 #define _REGEX_H 21,837 diff --git a/test/manual/etags/ETAGS.good_4 b/test/manual/etags/ETAGS.good_4 index 35417fa5b83..4c2283fccfb 100644 --- a/test/manual/etags/ETAGS.good_4 +++ b/test/manual/etags/ETAGS.good_4 @@ -711,39 +711,39 @@ weak_alias 1279,38850 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -__default_morecore 1528,46584 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -hybrid_get_current_dir_name 1815,53898 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +__default_morecore 1530,46600 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +hybrid_get_current_dir_name 1818,53922 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,3761 #define _REGEX_H 21,837 diff --git a/test/manual/etags/ETAGS.good_5 b/test/manual/etags/ETAGS.good_5 index 405c18abafd..aee69816ece 100644 --- a/test/manual/etags/ETAGS.good_5 +++ b/test/manual/etags/ETAGS.good_5 @@ -918,56 +918,56 @@ void *(*__realloc_hook)__realloc_hook1313,39971 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -extern void *__sbrk __sbrk1521,46320 -__default_morecore 1528,46584 -void *(*__memalign_hook)__memalign_hook1557,47527 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -extern void *valloc valloc1699,51243 -extern int getpagesize 1704,51381 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -extern void *malloc malloc1726,51712 -extern void *realloc realloc1727,51747 -extern void *calloc calloc1728,51794 -extern void free 1729,51843 -extern void *aligned_alloc aligned_alloc1731,51899 -extern int posix_memalign 1733,51993 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -char *gget_current_dir_name gget_current_dir_name1812,53854 -hybrid_get_current_dir_name 1815,53898 -static void (*old_free_hook)old_free_hook1851,55050 -static void *(*old_malloc_hook)old_malloc_hook1852,55092 -static void *(*old_realloc_hook)old_realloc_hook1853,55139 -static void (*abortfunc)abortfunc1856,55253 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 - size_t size;1867,55559 - size_t magic;1868,55613 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +extern void *__sbrk __sbrk1523,46336 +__default_morecore 1530,46600 +void *(*__memalign_hook)__memalign_hook1560,47551 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +extern void *valloc valloc1702,51267 +extern int getpagesize 1707,51405 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +extern void *malloc malloc1729,51736 +extern void *realloc realloc1730,51771 +extern void *calloc calloc1731,51818 +extern void free 1732,51867 +extern void *aligned_alloc aligned_alloc1734,51923 +extern int posix_memalign 1736,52017 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +char *gget_current_dir_name gget_current_dir_name1815,53878 +hybrid_get_current_dir_name 1818,53922 +static void (*old_free_hook)old_free_hook1854,55074 +static void *(*old_malloc_hook)old_malloc_hook1855,55116 +static void *(*old_realloc_hook)old_realloc_hook1856,55163 +static void (*abortfunc)abortfunc1859,55277 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 + size_t size;1870,55583 + size_t magic;1871,55637 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,5300 #define _REGEX_H 21,837 diff --git a/test/manual/etags/ETAGS.good_6 b/test/manual/etags/ETAGS.good_6 index f72b63ded92..f482a5d77ee 100644 --- a/test/manual/etags/ETAGS.good_6 +++ b/test/manual/etags/ETAGS.good_6 @@ -918,56 +918,56 @@ void *(*__realloc_hook)__realloc_hook1313,39971 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -extern void *__sbrk __sbrk1521,46320 -__default_morecore 1528,46584 -void *(*__memalign_hook)__memalign_hook1557,47527 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -extern void *valloc valloc1699,51243 -extern int getpagesize 1704,51381 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -extern void *malloc malloc1726,51712 -extern void *realloc realloc1727,51747 -extern void *calloc calloc1728,51794 -extern void free 1729,51843 -extern void *aligned_alloc aligned_alloc1731,51899 -extern int posix_memalign 1733,51993 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -char *gget_current_dir_name gget_current_dir_name1812,53854 -hybrid_get_current_dir_name 1815,53898 -static void (*old_free_hook)old_free_hook1851,55050 -static void *(*old_malloc_hook)old_malloc_hook1852,55092 -static void *(*old_realloc_hook)old_realloc_hook1853,55139 -static void (*abortfunc)abortfunc1856,55253 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 - size_t size;1867,55559 - size_t magic;1868,55613 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +extern void *__sbrk __sbrk1523,46336 +__default_morecore 1530,46600 +void *(*__memalign_hook)__memalign_hook1560,47551 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +extern void *valloc valloc1702,51267 +extern int getpagesize 1707,51405 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +extern void *malloc malloc1729,51736 +extern void *realloc realloc1730,51771 +extern void *calloc calloc1731,51818 +extern void free 1732,51867 +extern void *aligned_alloc aligned_alloc1734,51923 +extern int posix_memalign 1736,52017 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +char *gget_current_dir_name gget_current_dir_name1815,53878 +hybrid_get_current_dir_name 1818,53922 +static void (*old_free_hook)old_free_hook1854,55074 +static void *(*old_malloc_hook)old_malloc_hook1855,55116 +static void *(*old_realloc_hook)old_realloc_hook1856,55163 +static void (*abortfunc)abortfunc1859,55277 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 + size_t size;1870,55583 + size_t magic;1871,55637 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,5300 #define _REGEX_H 21,837 diff --git a/test/manual/etags/ETAGS.good_7 b/test/manual/etags/ETAGS.good_7 index 1e3e4a93bc1..24874ff46f9 100644 --- a/test/manual/etags/ETAGS.good_7 +++ b/test/manual/etags/ETAGS.good_7 @@ -685,39 +685,39 @@ weak_alias 1279,38850 _realloc_internal_nolock 1322,40382 _realloc_internal 1438,43636 realloc 1450,43799 -calloc 1481,44973 -#define __sbrk 1516,46115 -__default_morecore 1528,46584 -aligned_alloc 1560,47593 -memalign 1650,49775 -posix_memalign 1659,49980 -static size_t pagesize;1707,51420 -valloc 1710,51452 -#undef malloc1719,51593 -#undef realloc1720,51607 -#undef calloc1721,51622 -#undef aligned_alloc1722,51636 -#undef free1723,51657 -hybrid_malloc 1740,52186 -hybrid_calloc 1748,52291 -hybrid_free 1756,52422 -hybrid_aligned_alloc 1769,52729 -hybrid_realloc 1784,53085 -hybrid_get_current_dir_name 1815,53898 -#define MAGICWORD 1859,55335 -#define MAGICFREE 1860,55390 -#define MAGICBYTE 1861,55445 -#define MALLOCFLOOD 1862,55477 -#define FREEFLOOD 1863,55511 -struct hdr1865,55544 -checkhdr 1872,55710 -freehook 1896,56151 -mallochook 1932,56933 -reallochook 1949,57272 -mabort 1983,58030 -static int mcheck_used 2017,58715 -mcheck 2020,58748 -mprobe 2040,59267 +calloc 1482,44981 +#define __sbrk 1518,46131 +__default_morecore 1530,46600 +aligned_alloc 1563,47617 +memalign 1653,49799 +posix_memalign 1662,50004 +static size_t pagesize;1710,51444 +valloc 1713,51476 +#undef malloc1722,51617 +#undef realloc1723,51631 +#undef calloc1724,51646 +#undef aligned_alloc1725,51660 +#undef free1726,51681 +hybrid_malloc 1743,52210 +hybrid_calloc 1751,52315 +hybrid_free 1759,52446 +hybrid_aligned_alloc 1772,52753 +hybrid_realloc 1787,53109 +hybrid_get_current_dir_name 1818,53922 +#define MAGICWORD 1862,55359 +#define MAGICFREE 1863,55414 +#define MAGICBYTE 1864,55469 +#define MALLOCFLOOD 1865,55501 +#define FREEFLOOD 1866,55535 +struct hdr1868,55568 +checkhdr 1875,55734 +freehook 1899,56175 +mallochook 1935,56957 +reallochook 1952,57296 +mabort 1986,58054 +static int mcheck_used 2020,58739 +mcheck 2023,58772 +mprobe 2043,59291 c-src/emacs/src/regex.h,3761 #define _REGEX_H 21,837 diff --git a/test/manual/etags/README b/test/manual/etags/README index f198e584da3..8493794c01c 100644 --- a/test/manual/etags/README +++ b/test/manual/etags/README @@ -51,7 +51,9 @@ corresponding "good" files, one by one. Like this: $ cp ETAGS ETAGS.good_7 $ make check $ cp CTAGS CTAGS.good - $ make check + $ head -n 100 CTAGS.good_update > CTAGS + $ tail -n 100 CTAGS.good_update >> CTAGS + $ ../../../lib-src/etags --ctags -o CTAGS -u - < srclist $ cp CTAGS CTAGS.good_update $ make check $ cp CTAGS CTAGS.good_crlf diff --git a/test/manual/etags/c-src/abbrev.c b/test/manual/etags/c-src/abbrev.c index ca891eea6d1..4b38f7f90b7 100644 --- a/test/manual/etags/c-src/abbrev.c +++ b/test/manual/etags/c-src/abbrev.c @@ -1,5 +1,5 @@ /* Primitives for word-abbrev mode. - Copyright (C) 1985-1986, 1993, 1996, 1998, 2016-2025 Free Software + Copyright (C) 1985-1986, 1993, 1996, 1998, 2016-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/test/manual/etags/c-src/emacs/src/gmalloc.c b/test/manual/etags/c-src/emacs/src/gmalloc.c index 2c192d3907e..43bd77ede6d 100644 --- a/test/manual/etags/c-src/emacs/src/gmalloc.c +++ b/test/manual/etags/c-src/emacs/src/gmalloc.c @@ -1,5 +1,5 @@ /* Declarations for `malloc' and friends. - Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2025 Free + Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2026 Free Software Foundation, Inc. Written May 1989 by Mike Haertel. @@ -325,7 +325,7 @@ extern void memory_warnings (void *start, void (*warnfun) (const char *)); #endif /* Memory allocator `malloc'. - Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2025 Free + Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2026 Free Software Foundation, Inc. Written May 1989 by Mike Haertel. @@ -978,7 +978,7 @@ _realloc (void *ptr, size_t size) #endif /* Free a block of memory allocated by `malloc'. - Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2025 Free + Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2026 Free Software Foundation, Inc. Written May 1989 by Mike Haertel. @@ -1285,7 +1285,7 @@ cfree (void *ptr) } #endif /* Change the size of a block allocated by `malloc'. - Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2025 Free + Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2026 Free Software Foundation, Inc. Written May 1989 by Mike Haertel. @@ -1457,7 +1457,8 @@ realloc (void *ptr, size_t size) hook = __realloc_hook; return (hook != NULL ? *hook : _realloc_internal) (ptr, size); } -/* Copyright (C) 1991-1992, 1994, 2025 Free Software Foundation, Inc. +/* Copyright (C) 1991-1992, 1994, 2025-2026 Free Software Foundation, + * Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -1494,7 +1495,8 @@ calloc (size_t nmemb, size_t size) return memset (result, 0, bytes); return result; } -/* Copyright (C) 1991-1992, 1994, 2025 Free Software Foundation, Inc. +/* Copyright (C) 1991-1992, 1994, 2025-2026 Free Software Foundation, + * Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or modify @@ -1539,7 +1541,8 @@ __default_morecore (ptrdiff_t increment) return NULL; return result; } -/* Copyright (C) 1991-1992, 1994, 2025 Free Software Foundation, Inc. +/* Copyright (C) 1991-1992, 1994, 2025-2026 Free Software Foundation, + * Inc. This library is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -1676,7 +1679,7 @@ posix_memalign (void **memptr, size_t alignment, size_t size) #endif /* Allocate memory on a page boundary. - Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2025 Free + Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2026 Free Software Foundation, Inc. This library is free software; you can redistribute it and/or @@ -1825,7 +1828,7 @@ hybrid_get_current_dir_name (void) #ifdef GC_MCHECK /* Standard debugging hooks for `malloc'. - Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2025 Free + Copyright (C) 1990-1993, 1995-1996, 1999, 2002-2007, 2013-2026 Free Software Foundation, Inc. Written May 1989 by Mike Haertel. diff --git a/test/manual/etags/c-src/emacs/src/keyboard.c b/test/manual/etags/c-src/emacs/src/keyboard.c index feb2baef4b3..38b8db6b339 100644 --- a/test/manual/etags/c-src/emacs/src/keyboard.c +++ b/test/manual/etags/c-src/emacs/src/keyboard.c @@ -1,6 +1,6 @@ /* Keyboard and mouse input; editor command loop. -Copyright (C) 1985-1989, 1993-1997, 1999-2025 Free Software Foundation, +Copyright (C) 1985-1989, 1993-1997, 1999-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/test/manual/etags/c-src/emacs/src/lisp.h b/test/manual/etags/c-src/emacs/src/lisp.h index fadcef65752..fedb81d162f 100644 --- a/test/manual/etags/c-src/emacs/src/lisp.h +++ b/test/manual/etags/c-src/emacs/src/lisp.h @@ -1,6 +1,6 @@ /* Fundamental definitions for GNU Emacs Lisp interpreter. -Copyright (C) 1985-1987, 1993-1995, 1997-2025 Free Software Foundation, +Copyright (C) 1985-1987, 1993-1995, 1997-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/test/manual/etags/c-src/emacs/src/regex.h b/test/manual/etags/c-src/emacs/src/regex.h index 78cbe90f1ba..d5515743250 100644 --- a/test/manual/etags/c-src/emacs/src/regex.h +++ b/test/manual/etags/c-src/emacs/src/regex.h @@ -1,7 +1,7 @@ /* Definitions for data structures and routines for the regular expression library, version 0.12. - Copyright (C) 1985, 1989-1993, 1995, 2000-2025 Free Software + Copyright (C) 1985, 1989-1993, 1995, 2000-2026 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/test/manual/etags/c-src/etags.c b/test/manual/etags/c-src/etags.c index 772ef08bf40..4c297c221fd 100644 --- a/test/manual/etags/c-src/etags.c +++ b/test/manual/etags/c-src/etags.c @@ -28,7 +28,7 @@ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2025 Free Software +Copyright (C) 1984, 1987-1989, 1993-1995, 1998-2026 Free Software Foundation, Inc. This file is not considered part of GNU Emacs. diff --git a/test/manual/etags/c-src/exit.c b/test/manual/etags/c-src/exit.c index 0ef5a18892c..09a4b2424c8 100644 --- a/test/manual/etags/c-src/exit.c +++ b/test/manual/etags/c-src/exit.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 2016-2025 Free Software Foundation, Inc. +/* Copyright (C) 1991, 2016-2026 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/test/manual/etags/c-src/exit.strange_suffix b/test/manual/etags/c-src/exit.strange_suffix index 0ef5a18892c..09a4b2424c8 100644 --- a/test/manual/etags/c-src/exit.strange_suffix +++ b/test/manual/etags/c-src/exit.strange_suffix @@ -1,4 +1,4 @@ -/* Copyright (C) 1991, 2016-2025 Free Software Foundation, Inc. +/* Copyright (C) 1991, 2016-2026 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/test/manual/etags/c-src/getopt.h b/test/manual/etags/c-src/getopt.h index 4cf5a5140ae..9d39c9b5c84 100644 --- a/test/manual/etags/c-src/getopt.h +++ b/test/manual/etags/c-src/getopt.h @@ -1,5 +1,5 @@ /* Declarations for getopt. - Copyright (C) 1989-1992, 2016-2025 Free Software Foundation, Inc. + Copyright (C) 1989-1992, 2016-2026 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 the diff --git a/test/manual/etags/c-src/sysdep.h b/test/manual/etags/c-src/sysdep.h index 3685bf48d3e..3d7282b8a0e 100644 --- a/test/manual/etags/c-src/sysdep.h +++ b/test/manual/etags/c-src/sysdep.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1992-1993, 2016-2025 Free Software Foundation, Inc. +/* Copyright (C) 1992-1993, 2016-2026 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or diff --git a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el index 3c9b709e538..fda743e3170 100644 --- a/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el +++ b/test/manual/etags/el-src/emacs/lisp/progmodes/etags.el @@ -1,6 +1,6 @@ ;;; etags.el --- etags facility for Emacs -*- lexical-binding: t -*- -;; Copyright (C) 1985-1986, 1988-1989, 1992-1996, 1998, 2000-2025 Free +;; Copyright (C) 1985-1986, 1988-1989, 1992-1996, 1998, 2000-2026 Free ;; Software Foundation, Inc. ;; Author: Roland McGrath diff --git a/test/manual/etags/merc-src/accumulator.m b/test/manual/etags/merc-src/accumulator.m index 0ee41216c11..2bfe142a935 100644 --- a/test/manual/etags/merc-src/accumulator.m +++ b/test/manual/etags/merc-src/accumulator.m @@ -53,7 +53,7 @@ % in CVS papers archive in the directory update, but has been submitted % to PPDP '00. % -% The transformation recognises predicates in the form +% The transformation recognizes predicates in the form % % p(In, OutUpdate, OutAssoc) :- % minimal(In), diff --git a/test/manual/etags/tex-src/texinfo.tex b/test/manual/etags/tex-src/texinfo.tex index c4779fb70fd..e893f05d365 100644 --- a/test/manual/etags/tex-src/texinfo.tex +++ b/test/manual/etags/tex-src/texinfo.tex @@ -1,6 +1,6 @@ %% TeX macros to handle texinfo files -% Copyright (C) 1985--1986, 1988, 1990--1991, 2016--2025 Free Software +% Copyright (C) 1985--1986, 1988, 1990--1991, 2016--2026 Free Software % Foundation, Inc. %This texinfo.tex file is free software; you can redistribute it and/or diff --git a/test/manual/etags/y-src/cccp.c b/test/manual/etags/y-src/cccp.c index 0eebaf0fbdf..d898187f03c 100644 --- a/test/manual/etags/y-src/cccp.c +++ b/test/manual/etags/y-src/cccp.c @@ -320,7 +320,7 @@ static const short yycheck[] = #line 3 "/usr/share/bison/bison.simple" /* Skeleton output parser for bison, - Copyright (C) 1984, 1989-1990, 2000-2001, 2016-2025 Free Software + Copyright (C) 1984, 1989-1990, 2000-2001, 2016-2026 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/test/manual/etags/y-src/parse.c b/test/manual/etags/y-src/parse.c index 661da048218..067dbd5cc0a 100644 --- a/test/manual/etags/y-src/parse.c +++ b/test/manual/etags/y-src/parse.c @@ -28,7 +28,7 @@ #line 1 "y-src/parse.y" -/* Copyright (C) 1990, 1992-1993, 2016-2025 Free Software Foundation, +/* Copyright (C) 1990, 1992-1993, 2016-2026 Free Software Foundation, * Inc. This file is part of Oleo, the GNU Spreadsheet. @@ -400,7 +400,7 @@ static const short yycheck[] = #line 3 "/usr/share/bison/bison.simple" /* Skeleton output parser for bison, - Copyright (C) 1984, 1989-1990, 2000-2001, 2025 Free Software + Copyright (C) 1984, 1989-1990, 2000-2001, 2025-2026 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify diff --git a/test/manual/etags/y-src/parse.y b/test/manual/etags/y-src/parse.y index fa04deea702..c82fb66b07c 100644 --- a/test/manual/etags/y-src/parse.y +++ b/test/manual/etags/y-src/parse.y @@ -1,5 +1,5 @@ %{ -/* Copyright (C) 1990, 1992-1993, 2016-2025 Free Software Foundation, +/* Copyright (C) 1990, 1992-1993, 2016-2026 Free Software Foundation, * Inc. This file is part of Oleo, the GNU Spreadsheet. diff --git a/test/manual/image-circular-tests.el b/test/manual/image-circular-tests.el index 04fbbb02264..d5c368fb004 100644 --- a/test/manual/image-circular-tests.el +++ b/test/manual/image-circular-tests.el @@ -1,6 +1,6 @@ ;;; image-circular-tests.el --- test image functions with circular objects -*- lexical-binding: t; -*- -;; Copyright (C) 2019, 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019, 2021-2026 Free Software Foundation, Inc. ;; Author: Pip Cet ;; Keywords: internal diff --git a/test/manual/image-size-tests.el b/test/manual/image-size-tests.el index ae7d6015ca3..40c46a1a30b 100644 --- a/test/manual/image-size-tests.el +++ b/test/manual/image-size-tests.el @@ -1,6 +1,6 @@ ;;; image-size-tests.el --- tests for image scaling -*- lexical-binding: t; -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/manual/image-tests.el b/test/manual/image-tests.el index d764da635fc..33656cdbcc3 100644 --- a/test/manual/image-tests.el +++ b/test/manual/image-tests.el @@ -1,6 +1,6 @@ ;;; image-tests.el --- tests for image.c -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Stefan Kangas ;; Keywords: internal diff --git a/test/manual/image-transforms-tests.el b/test/manual/image-transforms-tests.el index 631932d93f7..8ec22d041f8 100644 --- a/test/manual/image-transforms-tests.el +++ b/test/manual/image-transforms-tests.el @@ -1,6 +1,6 @@ ;;; image-transforms-tests.el --- Test suite for image transforms. -*- lexical-binding: t -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Alan Third ;; Keywords: internal diff --git a/test/manual/indent/pascal.pas b/test/manual/indent/pascal.pas index 235d51e78a5..b7a645e82d4 100644 --- a/test/manual/indent/pascal.pas +++ b/test/manual/indent/pascal.pas @@ -1,6 +1,6 @@ { GPC demo program for the CRT unit. -Copyright (C) 1999-2006, 2013-2025 Free Software Foundation, Inc. +Copyright (C) 1999-2006, 2013-2026 Free Software Foundation, Inc. Author: Frank Heckenbach diff --git a/test/manual/noverlay/Makefile.in b/test/manual/noverlay/Makefile.in index 2634d036a3c..1ecdf2480fc 100644 --- a/test/manual/noverlay/Makefile.in +++ b/test/manual/noverlay/Makefile.in @@ -1,6 +1,6 @@ ### @configure_input@ -# Copyright (C) 2017-2025 Free Software Foundation, Inc. +# Copyright (C) 2017-2026 Free Software Foundation, Inc. # This file is part of GNU Emacs. diff --git a/test/manual/noverlay/check-sanitize.sh b/test/manual/noverlay/check-sanitize.sh index 47ab001c580..0705dd64d0f 100755 --- a/test/manual/noverlay/check-sanitize.sh +++ b/test/manual/noverlay/check-sanitize.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash ### check-sanitize.sh - strip confusing parts of Check error output -## Copyright (C) 2017-2025 Free Software Foundation, Inc. +## Copyright (C) 2017-2026 Free Software Foundation, Inc. ## This file is part of GNU Emacs. diff --git a/test/manual/noverlay/emacs-compat.h b/test/manual/noverlay/emacs-compat.h index 0d949548436..c119c456d60 100644 --- a/test/manual/noverlay/emacs-compat.h +++ b/test/manual/noverlay/emacs-compat.h @@ -1,6 +1,6 @@ /* Mock necessary parts of lisp.h. -Copyright (C) 2017-2025 Free Software Foundation, Inc. +Copyright (C) 2017-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/test/manual/noverlay/itree-tests.c b/test/manual/noverlay/itree-tests.c index 2ddba6d8567..334f1de8162 100644 --- a/test/manual/noverlay/itree-tests.c +++ b/test/manual/noverlay/itree-tests.c @@ -1,6 +1,6 @@ /* Test the interval data-structure in itree.c. -Copyright (c) 2017-2025 Free Software Foundation, Inc. +Copyright (c) 2017-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/test/manual/noverlay/overlay-perf.el b/test/manual/noverlay/overlay-perf.el index fc74efd045b..4ea238a2187 100644 --- a/test/manual/noverlay/overlay-perf.el +++ b/test/manual/noverlay/overlay-perf.el @@ -1,6 +1,6 @@ ;; -*- lexical-binding:t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/manual/process-callout-tests.el b/test/manual/process-callout-tests.el index 512b9eb8424..600f598771e 100644 --- a/test/manual/process-callout-tests.el +++ b/test/manual/process-callout-tests.el @@ -1,6 +1,6 @@ ;;; process-callout-tests.el --- Testing the process facilities -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/manual/redisplay-testsuite.el b/test/manual/redisplay-testsuite.el index 68836e07a4d..911e015e309 100644 --- a/test/manual/redisplay-testsuite.el +++ b/test/manual/redisplay-testsuite.el @@ -1,6 +1,6 @@ ;;; redisplay-testsuite.el --- Test suite for redisplay. -*- lexical-binding: t; -*- -;; Copyright (C) 2009-2025 Free Software Foundation, Inc. +;; Copyright (C) 2009-2026 Free Software Foundation, Inc. ;; Author: Chong Yidong ;; Keywords: internal diff --git a/test/manual/scroll-tests.el b/test/manual/scroll-tests.el index f5537b831ec..dd1df000226 100644 --- a/test/manual/scroll-tests.el +++ b/test/manual/scroll-tests.el @@ -1,6 +1,6 @@ ;;; scroll-tests.el --- tests for scrolling -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/misc/test-custom-deps.el b/test/misc/test-custom-deps.el index 26e0e7bf59f..1a8061e09a7 100644 --- a/test/misc/test-custom-deps.el +++ b/test/misc/test-custom-deps.el @@ -1,6 +1,6 @@ ;;; test-custom-deps.el --- Test custom deps -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/misc/test-custom-libs.el b/test/misc/test-custom-libs.el index 0d1a1af033e..0aaf117e1e9 100644 --- a/test/misc/test-custom-libs.el +++ b/test/misc/test-custom-libs.el @@ -1,6 +1,6 @@ ;;; test-custom-libs.el --- Test custom loads -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/misc/test-custom-noloads.el b/test/misc/test-custom-noloads.el index a2722a965dd..e90e50132a6 100644 --- a/test/misc/test-custom-noloads.el +++ b/test/misc/test-custom-noloads.el @@ -1,6 +1,6 @@ ;;; test-custom-noloads.el --- Test custom noloads -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/misc/test-custom-opts.el b/test/misc/test-custom-opts.el index bc930860f9e..14985f97874 100644 --- a/test/misc/test-custom-opts.el +++ b/test/misc/test-custom-opts.el @@ -1,6 +1,6 @@ ;;; test-custom-opts.el --- Test custom opts -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/alloc-tests.el b/test/src/alloc-tests.el index cf7d1ca1cd3..022cc174d8c 100644 --- a/test/src/alloc-tests.el +++ b/test/src/alloc-tests.el @@ -1,6 +1,6 @@ ;;; alloc-tests.el --- alloc tests -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Daniel Colascione ;; Keywords: diff --git a/test/src/buffer-tests.el b/test/src/buffer-tests.el index 2349e63ac33..5f534ed513a 100644 --- a/test/src/buffer-tests.el +++ b/test/src/buffer-tests.el @@ -1,6 +1,6 @@ ;;; buffer-tests.el --- tests for buffer.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -8650,4 +8650,22 @@ Finally, kill the buffer and its temporary file." (should (= (point-min) 1)) (should (= (point-max) 5001)))) +(ert-deftest test-line-spacing () + "Test `line-spacing' impact on text size" + (skip-unless (display-graphic-p)) + (let* + ((size-with-text (lambda (ls) + (with-temp-buffer + (setq-local line-spacing ls) + (insert "X\nX") + (cdr (buffer-text-pixel-size)))))) + (cl-loop for x from 0 to 50 + for y from 0 to 50 + do + (ert-info ((format "((linespacing '(%d . %d)) == (linespacing %d)" x y (+ x y)) + :prefix "Linespace check: ") + (should (= + (funcall size-with-text (+ x y)) + (funcall size-with-text (cons x y)))))))) + ;;; buffer-tests.el ends here diff --git a/test/src/callint-tests.el b/test/src/callint-tests.el index f819a969528..a09fb40b3f8 100644 --- a/test/src/callint-tests.el +++ b/test/src/callint-tests.el @@ -1,6 +1,6 @@ ;;; callint-tests.el --- unit tests for callint.c -*- lexical-binding: t; -*- -;; Copyright (C) 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2018-2026 Free Software Foundation, Inc. ;; Author: Philipp Stephani diff --git a/test/src/callproc-tests.el b/test/src/callproc-tests.el index acffece5c1d..8e0cf6eb6fd 100644 --- a/test/src/callproc-tests.el +++ b/test/src/callproc-tests.el @@ -1,6 +1,6 @@ ;;; callproc-tests.el --- callproc.c tests -*- lexical-binding: t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/casefiddle-tests.el b/test/src/casefiddle-tests.el index 6cf9f98f6ca..dcbe2e32c22 100644 --- a/test/src/casefiddle-tests.el +++ b/test/src/casefiddle-tests.el @@ -1,6 +1,6 @@ ;;; casefiddle-tests.el --- tests for casefiddle.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2015-2016, 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2016, 2018-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/character-tests.el b/test/src/character-tests.el index f40547da8f8..9c3dac24637 100644 --- a/test/src/character-tests.el +++ b/test/src/character-tests.el @@ -1,6 +1,6 @@ ;;; character-tests.el --- tests for character.c -*- lexical-binding:t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/charset-tests.el b/test/src/charset-tests.el index 427162125c1..7545a907f5f 100644 --- a/test/src/charset-tests.el +++ b/test/src/charset-tests.el @@ -1,6 +1,6 @@ ;;; charset-tests.el --- Tests for charset.c -*- lexical-binding: t -*- -;; Copyright 2017-2025 Free Software Foundation, Inc. +;; Copyright 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/chartab-tests.el b/test/src/chartab-tests.el index ffdd46159cd..0f2e65b89a0 100644 --- a/test/src/chartab-tests.el +++ b/test/src/chartab-tests.el @@ -1,6 +1,6 @@ ;;; chartab-tests.el --- Tests for char-tab.c -*- lexical-binding: t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Author: Eli Zaretskii diff --git a/test/src/cmds-tests.el b/test/src/cmds-tests.el index 8389c03434d..a02c36868ca 100644 --- a/test/src/cmds-tests.el +++ b/test/src/cmds-tests.el @@ -1,6 +1,6 @@ ;;; cmds-tests.el --- Testing some Emacs commands -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Nicolas Richard ;; Keywords: diff --git a/test/src/coding-tests.el b/test/src/coding-tests.el index 9fcb44c87c7..dc1abec2d58 100644 --- a/test/src/coding-tests.el +++ b/test/src/coding-tests.el @@ -1,6 +1,6 @@ ;;; coding-tests.el --- tests for text encoding and decoding -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Eli Zaretskii ;; Author: Kenichi Handa diff --git a/test/src/comp-resources/comp-test-funcs-dyn.el b/test/src/comp-resources/comp-test-funcs-dyn.el index 10a11b20687..7342b8be449 100644 --- a/test/src/comp-resources/comp-test-funcs-dyn.el +++ b/test/src/comp-resources/comp-test-funcs-dyn.el @@ -1,6 +1,6 @@ ;;; comp-test-funcs-dyn.el --- compilation unit tested by comp-tests.el -*- lexical-binding: nil; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo diff --git a/test/src/comp-resources/comp-test-funcs-dyn2.el b/test/src/comp-resources/comp-test-funcs-dyn2.el index e3cad6c272f..23b8a46af39 100644 --- a/test/src/comp-resources/comp-test-funcs-dyn2.el +++ b/test/src/comp-resources/comp-test-funcs-dyn2.el @@ -1,6 +1,6 @@ ;;; comp-test-funcs-dyn2.el -*- lexical-binding: nil; no-byte-compile: t; -*- -;; Copyright (C) 2023-2025 Free Software Foundation, Inc. +;; Copyright (C) 2023-2026 Free Software Foundation, Inc. ;; Author: Alan Mackenzie diff --git a/test/src/comp-resources/comp-test-funcs.el b/test/src/comp-resources/comp-test-funcs.el index 04e3afe49fa..200d3f6793d 100644 --- a/test/src/comp-resources/comp-test-funcs.el +++ b/test/src/comp-resources/comp-test-funcs.el @@ -1,6 +1,6 @@ ;;; comp-test-funcs.el --- compilation unit tested by comp-tests.el -*- lexical-binding: t; -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo diff --git a/test/src/comp-resources/comp-test-pure.el b/test/src/comp-resources/comp-test-pure.el index cbcfc89733b..7795a668fa6 100644 --- a/test/src/comp-resources/comp-test-pure.el +++ b/test/src/comp-resources/comp-test-pure.el @@ -1,6 +1,6 @@ ;;; comp-test-pure.el --- compilation unit tested by comp-tests.el -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el index e9f4b1ad508..28418cc9b86 100644 --- a/test/src/comp-tests.el +++ b/test/src/comp-tests.el @@ -1,6 +1,6 @@ ;;; comp-tests.el --- unit tests for src/comp.c -*- lexical-binding: t; -*- -;; Copyright (C) 2019-2025 Free Software Foundation, Inc. +;; Copyright (C) 2019-2026 Free Software Foundation, Inc. ;; Author: Andrea Corallo diff --git a/test/src/data-tests.el b/test/src/data-tests.el index 1499be015b5..0540a99f4c3 100644 --- a/test/src/data-tests.el +++ b/test/src/data-tests.el @@ -1,6 +1,6 @@ ;;; data-tests.el --- tests for src/data.c -*- lexical-binding:t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/decompress-tests.el b/test/src/decompress-tests.el index 14bbd108eda..411d472c774 100644 --- a/test/src/decompress-tests.el +++ b/test/src/decompress-tests.el @@ -1,6 +1,6 @@ ;;; decompress-tests.el --- Test suite for decompress. -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; Author: Lars Ingebrigtsen diff --git a/test/src/doc-tests.el b/test/src/doc-tests.el index 87d9bd963e0..fbf3a91002a 100644 --- a/test/src/doc-tests.el +++ b/test/src/doc-tests.el @@ -1,6 +1,6 @@ ;;; doc-tests.el --- tests for doc.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2022-2025 Free Software Foundation, Inc. +;; Copyright (C) 2022-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/editfns-tests.el b/test/src/editfns-tests.el index 4e0ca4c9d2a..9bdd5cf5db6 100644 --- a/test/src/editfns-tests.el +++ b/test/src/editfns-tests.el @@ -1,6 +1,6 @@ ;;; editfns-tests.el --- tests for editfns.c -*- lexical-binding:t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -368,7 +368,7 @@ Execute tests as described by `editfns-tests--transpose-regions-tests'." (should (equal (mapcar #'marker-position pmarkers) pmpos)) ;; Meh. This more or less blindly duplicates function ;; transpose_markers, since I have been too lazy to - ;; reproduce the arithmetics myself. + ;; reproduce the arithmetic myself. (setq pmpos (mapcar (lambda (pos) @@ -397,6 +397,82 @@ Execute tests as described by `editfns-tests--transpose-regions-tests'." (ert-deftest format-c-float () (should-error (format "%c" 0.5))) +(ert-deftest format-binary-zero () + "Check that `%#b' and `%#B' are simplified for zero values." + (should (string-equal (format "%#b" 0) "0")) + (should (string-equal (format "%#B" 0) "0"))) + +(ert-deftest format-binary-floats () + "Check that `%b' and `%B' drop the fractional part of floats." + (let* ((n 5) (N 10) + (fracs (mapcar #'(lambda (d) (/ d N 1.0)) (number-sequence 0 (1- N))))) + (dolist (f fracs) + (should (string-equal (format "%b" (+ n f)) (format "%b" n))) + (should (string-equal (format "%B" (+ n f)) (format "%B" n)))))) + +(ert-deftest format-binary-nonzero-integers () + "Check `%b' and `%B' for non-zero integers. +For numbers of both signs, check each flag (`0' padding, signs `+' & +space, left alignment `-') with and without the alternative display +format `#'. Include both fixed and big numbers. The widths are chosen +sufficiently large to avoid truncation." + (dolist (nbits `((#x-5A . "1011010") + (#x5A . "1011010") + (#x-E97 . "111010010111") + (#xE97 . "111010010111") + (#xFFFFFFFFFFFFFFFFF . ,(make-string 68 ?1)) + (#x-FFFFFFFFFFFFFFFFF . ,(make-string 68 ?1)))) + (let* ((n (car nbits)) (bits (cdr nbits)) + (extra (+ 1 2 2)) ; 1 (sign) + 2 (0b prefix) + 2 (pad) + (w (+ (length bits) extra)) + (Npad (- extra (if (< n 0) 1 0))) ; 0 & space padding w/ prefix + (Nsgn (- extra 1)) ; padding w/o sign + (sgn- (if (< n 0) "-" "")) (sgn (if (< n 0) "-" "+")) + (0pad (make-string Npad ?0)) (0padalt (make-string (- Npad 2) ?0)) + (spad (make-string Npad ? )) (spadalt (make-string (- Npad 2) ? )) + (+pad (make-string Nsgn ? )) (+padalt (make-string (- Nsgn 2) ? ))) + ;; %b + (should (string-equal (format "%b" n) (concat sgn- bits))) + (should (string-equal (format "%B" n) (concat sgn- bits))) + (should (string-equal (format "%#b" n) (concat sgn- "0b" bits))) + (should (string-equal (format "%#B" n) (concat sgn- "0B" bits))) + ;; %0wb + (should (string-equal (format (format "%%0%db" w) n) + (concat sgn- 0pad bits))) + (should (string-equal (format (format "%%0%dB" w) n) + (concat sgn- 0pad bits))) + (should (string-equal (format (format "%%#0%db" w) n) + (concat sgn- "0b" 0padalt bits))) + (should (string-equal (format (format "%%#0%dB" w) n) + (concat sgn- "0B" 0padalt bits))) + ;; %-wb + (should (string-equal (format (format "%%-%db" w) n) + (concat sgn- bits spad))) + (should (string-equal (format (format "%%-%dB" w) n) + (concat sgn- bits spad))) + (should (string-equal (format (format "%%#-%db" w) n) + (concat sgn- "0b" bits spadalt))) + (should (string-equal (format (format "%%#-%dB" w) n) + (concat sgn- "0B" bits spadalt))) + ;; %+wb + (should (string-equal (format (format "%%+%db" w) n) + (concat +pad sgn bits))) + (should (string-equal (format (format "%%+%dB" w) n) + (concat +pad sgn bits))) + (should (string-equal (format (format "%%#+%db" w) n) + (concat +padalt sgn "0b" bits))) + (should (string-equal (format (format "%%#+%dB" w) n) + (concat +padalt sgn "0B" bits))) + ;; % wb + (should (string-equal (format (format "%% %db" w) n) + (concat spad sgn- bits))) + (should (string-equal (format (format "%% %dB" w) n) + (concat spad sgn- bits))) + (should (string-equal (format (format "%%# %db" w) n) + (concat spadalt sgn- "0b" bits))) + (should (string-equal (format (format "%%# %dB" w) n) + (concat spadalt sgn- "0B" bits)))))) + ;;; Test for Bug#29609. (ert-deftest format-sharp-0-x () (should (string-equal (format "%#08x" #x10) "0x000010")) @@ -415,19 +491,22 @@ Execute tests as described by `editfns-tests--transpose-regions-tests'." (ert-deftest format-%x-large-float () (should (string-equal (format "%x" 18446744073709551616.0) "10000000000000000"))) + (ert-deftest read-large-integer () (should (eq (type-of (read (format "%d0" most-negative-fixnum))) 'integer)) (should (eq (type-of (read (format "%+d" (* -8.0 most-negative-fixnum)))) 'integer)) (should (eq (type-of (read (substring (format "%d" most-negative-fixnum) 1))) 'integer)) - (should (eq (type-of (read (format "#x%x" most-negative-fixnum))) + (should (eq (type-of (read (format "#b%b" most-negative-fixnum))) 'integer)) (should (eq (type-of (read (format "#o%o" most-negative-fixnum))) 'integer)) + (should (eq (type-of (read (format "#x%x" most-negative-fixnum))) + 'integer)) (should (eq (type-of (read (format "#32rG%x" most-positive-fixnum))) 'integer)) - (dolist (fmt '("%d" "%s" "#o%o" "#x%x")) + (dolist (fmt '("%d" "%s" "#b%b" "#o%o" "#x%x")) (dolist (val (list most-negative-fixnum (1+ most-negative-fixnum) -1 0 1 (1- most-positive-fixnum) most-positive-fixnum)) diff --git a/test/src/emacs-module-resources/mod-test.c b/test/src/emacs-module-resources/mod-test.c index 2c690457161..7e68d32883e 100644 --- a/test/src/emacs-module-resources/mod-test.c +++ b/test/src/emacs-module-resources/mod-test.c @@ -1,6 +1,6 @@ /* Test GNU Emacs modules. -Copyright 2015-2025 Free Software Foundation, Inc. +Copyright 2015-2026 Free Software Foundation, Inc. This file is part of GNU Emacs. diff --git a/test/src/emacs-module-tests.el b/test/src/emacs-module-tests.el index fa585b48df7..7a8bcd4779d 100644 --- a/test/src/emacs-module-tests.el +++ b/test/src/emacs-module-tests.el @@ -1,6 +1,6 @@ ;;; emacs-module-tests.el --- Test GNU Emacs modules. -*- lexical-binding: t; -*- -;; Copyright 2015-2025 Free Software Foundation, Inc. +;; Copyright 2015-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/emacs-tests.el b/test/src/emacs-tests.el index 2196c22ac3c..66b914f62ea 100644 --- a/test/src/emacs-tests.el +++ b/test/src/emacs-tests.el @@ -1,6 +1,6 @@ ;;; emacs-tests.el --- unit tests for emacs.c -*- lexical-binding: t; -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/eval-tests.el b/test/src/eval-tests.el index 64a108f8744..1e7c33069a7 100644 --- a/test/src/eval-tests.el +++ b/test/src/eval-tests.el @@ -1,6 +1,6 @@ ;;; eval-tests.el --- unit tests for src/eval.c -*- lexical-binding: t; -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Author: Philipp Stephani diff --git a/test/src/fileio-tests.el b/test/src/fileio-tests.el index 211536f415a..1a4d0423b89 100644 --- a/test/src/fileio-tests.el +++ b/test/src/fileio-tests.el @@ -1,6 +1,6 @@ ;;; fileio-tests.el --- unit tests for src/fileio.c -*- lexical-binding: t; -*- -;; Copyright 2017-2025 Free Software Foundation, Inc. +;; Copyright 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/filelock-tests.el b/test/src/filelock-tests.el index 330b7879371..795039cd9cb 100644 --- a/test/src/filelock-tests.el +++ b/test/src/filelock-tests.el @@ -1,6 +1,6 @@ ;;; filelock-tests.el --- test file locking -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/floatfns-tests.el b/test/src/floatfns-tests.el index 04ee97a6137..49e76b809a3 100644 --- a/test/src/floatfns-tests.el +++ b/test/src/floatfns-tests.el @@ -1,6 +1,6 @@ ;;; floatfns-tests.el --- tests for floating point operations -*- lexical-binding: t -*- -;; Copyright 2017-2025 Free Software Foundation, Inc. +;; Copyright 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/fns-tests.el b/test/src/fns-tests.el index 7e9286a4251..fa00cec6118 100644 --- a/test/src/fns-tests.el +++ b/test/src/fns-tests.el @@ -1,6 +1,6 @@ ;;; fns-tests.el --- tests for src/fns.c -*- lexical-binding:t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -38,10 +38,9 @@ (should (= (random 1) 0)) (should (>= (random 10) 0)) (should (< (random 10) 10)) - ;; On OpenBSD random is non-deterministic. - (if (and (eq system-type 'berkeley-unix) - (string-match-p "openbsd" system-configuration)) - (should (not (equal (random "seed") (random "seed")))) + ;; On OpenBSD random is always non-deterministic. + (unless (and (eq system-type 'berkeley-unix) + (string-match-p "openbsd" system-configuration)) (should (equal (random "seed") (random "seed")))) ;; The probability of four calls being the same is low. ;; This makes sure that the value isn't constant. diff --git a/test/src/font-tests.el b/test/src/font-tests.el index cc370429557..532b04c66a7 100644 --- a/test/src/font-tests.el +++ b/test/src/font-tests.el @@ -1,6 +1,6 @@ ;;; font-tests.el --- Test suite for font-related functions. -*- lexical-binding: t -*- -;; Copyright (C) 2011-2025 Free Software Foundation, Inc. +;; Copyright (C) 2011-2026 Free Software Foundation, Inc. ;; Author: Chong Yidong ;; Keywords: internal diff --git a/test/src/image-tests.el b/test/src/image-tests.el index 6ebf54689b4..8527b2b2fa4 100644 --- a/test/src/image-tests.el +++ b/test/src/image-tests.el @@ -1,6 +1,6 @@ ;;; image-tests.el --- Tests for image.c -*- lexical-binding: t -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; Author: Stefan Kangas diff --git a/test/src/indent-tests.el b/test/src/indent-tests.el index 0edc65e3876..5c6e25868f8 100644 --- a/test/src/indent-tests.el +++ b/test/src/indent-tests.el @@ -1,6 +1,6 @@ ;;; indent-tests.el --- tests for src/indent.c -*- lexical-binding:t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/inotify-tests.el b/test/src/inotify-tests.el index aa7801d1e2c..da186aab72f 100644 --- a/test/src/inotify-tests.el +++ b/test/src/inotify-tests.el @@ -1,6 +1,6 @@ ;;; inotify-tests.el --- Test suite for inotify. -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Rüdiger Sonderfeld ;; Keywords: internal diff --git a/test/src/json-tests.el b/test/src/json-tests.el index 30cf32039f9..ec079f020bd 100644 --- a/test/src/json-tests.el +++ b/test/src/json-tests.el @@ -1,6 +1,6 @@ ;;; json-tests.el --- unit tests for json.c -*- lexical-binding: t; -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/keyboard-tests.el b/test/src/keyboard-tests.el index 3a36446ac83..d3787090794 100644 --- a/test/src/keyboard-tests.el +++ b/test/src/keyboard-tests.el @@ -1,6 +1,6 @@ ;;; keyboard-tests.el --- Tests for keyboard.c -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/keymap-tests.el b/test/src/keymap-tests.el index 0d203f6fcb0..c53ab7871c3 100644 --- a/test/src/keymap-tests.el +++ b/test/src/keymap-tests.el @@ -1,6 +1,6 @@ ;;; keymap-tests.el --- Test suite for src/keymap.c -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Juanma Barranquero ;; Stefan Kangas diff --git a/test/src/lcms-tests.el b/test/src/lcms-tests.el index 773f7c02fb2..74de139f0a1 100644 --- a/test/src/lcms-tests.el +++ b/test/src/lcms-tests.el @@ -1,6 +1,6 @@ ;;; lcms-tests.el --- tests for Little CMS interface -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; Maintainer: emacs-devel@gnu.org diff --git a/test/src/lread-tests.el b/test/src/lread-tests.el index d1320a665a5..e621a9d58b9 100644 --- a/test/src/lread-tests.el +++ b/test/src/lread-tests.el @@ -1,6 +1,6 @@ ;;; lread-tests.el --- tests for lread.c -*- lexical-binding: t; -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; Author: Philipp Stephani diff --git a/test/src/marker-tests.el b/test/src/marker-tests.el index ac319dd4c32..ddd8bc702e4 100644 --- a/test/src/marker-tests.el +++ b/test/src/marker-tests.el @@ -1,6 +1,6 @@ ;;; marker-tests.el --- tests for marker.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/minibuf-tests.el b/test/src/minibuf-tests.el index 2f932eacc4a..5bfbe710b10 100644 --- a/test/src/minibuf-tests.el +++ b/test/src/minibuf-tests.el @@ -1,6 +1,6 @@ ;;; minibuf-tests.el --- tests for minibuf.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/print-tests.el b/test/src/print-tests.el index 0ef47a1d9d8..1485e063ab3 100644 --- a/test/src/print-tests.el +++ b/test/src/print-tests.el @@ -1,6 +1,6 @@ ;;; print-tests.el --- tests for src/print.c -*- lexical-binding: t; -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/process-tests.el b/test/src/process-tests.el index b8ceb931533..2cc5b37b187 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -1,6 +1,6 @@ ;;; process-tests.el --- Testing the process facilities -*- lexical-binding: t -*- -;; Copyright (C) 2013-2025 Free Software Foundation, Inc. +;; Copyright (C) 2013-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -106,6 +106,9 @@ process to complete." (looking-at "hello stdout!"))) (should (with-current-buffer stderr-buffer (goto-char (point-min)) + ;; Instrument for bug#80166. + (when (getenv "EMACS_EMBA_CI") + (message "stderr\n%s" (buffer-string))) (looking-at "hello stderr!")))))) (ert-deftest process-test-stderr-filter () diff --git a/test/src/profiler-tests.el b/test/src/profiler-tests.el index fe50de713e2..555a579f21c 100644 --- a/test/src/profiler-tests.el +++ b/test/src/profiler-tests.el @@ -1,6 +1,6 @@ ;;; profiler-tests.el --- tests for src/profiler.c -*- lexical-binding:t -*- -;; Copyright (C) 2025 Free Software Foundation, Inc. +;; Copyright (C) 2025-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/regex-emacs-tests.el b/test/src/regex-emacs-tests.el index 3b69f1a808f..061fb73ba8f 100644 --- a/test/src/regex-emacs-tests.el +++ b/test/src/regex-emacs-tests.el @@ -1,6 +1,6 @@ ;;; regex-emacs-tests.el --- tests for regex-emacs.c -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/search-tests.el b/test/src/search-tests.el index 2af6f4fb933..74d36204e3a 100644 --- a/test/src/search-tests.el +++ b/test/src/search-tests.el @@ -1,6 +1,6 @@ ;;; search-tests.el --- tests for search.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2015-2016, 2018-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2016, 2018-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/sqlite-tests.el b/test/src/sqlite-tests.el index a835fea7632..a9fab7da681 100644 --- a/test/src/sqlite-tests.el +++ b/test/src/sqlite-tests.el @@ -1,6 +1,6 @@ ;;; sqlite-tests.el --- Tests for sqlite.el -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/syntax-tests.el b/test/src/syntax-tests.el index 8b8cbee1948..9e0246f5338 100644 --- a/test/src/syntax-tests.el +++ b/test/src/syntax-tests.el @@ -1,6 +1,6 @@ ;;; syntax-tests.el --- tests for syntax.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2017-2025 Free Software Foundation, Inc. +;; Copyright (C) 2017-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/textprop-tests.el b/test/src/textprop-tests.el index d29a644e96d..ee795914905 100644 --- a/test/src/textprop-tests.el +++ b/test/src/textprop-tests.el @@ -1,6 +1,6 @@ ;;; textprop-tests.el --- Test suite for text properties. -*- lexical-binding: t -*- -;; Copyright (C) 2015-2025 Free Software Foundation, Inc. +;; Copyright (C) 2015-2026 Free Software Foundation, Inc. ;; Author: Wolfgang Jenkner ;; Keywords: internal diff --git a/test/src/thread-tests.el b/test/src/thread-tests.el index 51408de80cc..9cbe1f3a1aa 100644 --- a/test/src/thread-tests.el +++ b/test/src/thread-tests.el @@ -1,6 +1,6 @@ ;;; thread-tests.el --- tests for threads. -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/timefns-tests.el b/test/src/timefns-tests.el index 89a199f37fc..20c18f989e2 100644 --- a/test/src/timefns-tests.el +++ b/test/src/timefns-tests.el @@ -1,6 +1,6 @@ ;;; timefns-tests.el --- tests for timefns.c -*- lexical-binding: t -*- -;; Copyright (C) 2016-2025 Free Software Foundation, Inc. +;; Copyright (C) 2016-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/treesit-tests.el b/test/src/treesit-tests.el index 89303114735..5492a45b1de 100644 --- a/test/src/treesit-tests.el +++ b/test/src/treesit-tests.el @@ -1,6 +1,6 @@ ;;; treesit-tests.el --- tests for src/treesit.c -*- lexical-binding: t; -*- -;; Copyright (C) 2021-2025 Free Software Foundation, Inc. +;; Copyright (C) 2021-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. @@ -235,7 +235,7 @@ ;;; Linecol (ert-deftest treesit-linecol-basic () - "Tests for basic lincol synchronization." + "Tests for basic linecol synchronization." (skip-unless (fboundp 'treesit--linecol-cache)) (with-temp-buffer (should (equal (treesit--linecol-cache) diff --git a/test/src/undo-tests.el b/test/src/undo-tests.el index c0984c13ea6..55d3bfe8930 100644 --- a/test/src/undo-tests.el +++ b/test/src/undo-tests.el @@ -1,6 +1,6 @@ ;;; undo-tests.el --- Tests of primitive-undo -*- lexical-binding: t -*- -;; Copyright (C) 2012-2025 Free Software Foundation, Inc. +;; Copyright (C) 2012-2026 Free Software Foundation, Inc. ;; Author: Aaron S. Hawley diff --git a/test/src/xdisp-tests.el b/test/src/xdisp-tests.el index 62f98928720..3b5ab902cc2 100644 --- a/test/src/xdisp-tests.el +++ b/test/src/xdisp-tests.el @@ -1,6 +1,6 @@ ;;; xdisp-tests.el --- tests for xdisp.c functions -*- lexical-binding: t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/xfaces-tests.el b/test/src/xfaces-tests.el index 6129018262c..ae57909a664 100644 --- a/test/src/xfaces-tests.el +++ b/test/src/xfaces-tests.el @@ -1,6 +1,6 @@ ;;; xfaces-tests.el --- tests for xfaces.c -*- lexical-binding: t -*- -;; Copyright (C) 2020-2025 Free Software Foundation, Inc. +;; Copyright (C) 2020-2026 Free Software Foundation, Inc. ;; This file is part of GNU Emacs. diff --git a/test/src/xml-tests.el b/test/src/xml-tests.el index 0add563b3fe..d8729e9cfd0 100644 --- a/test/src/xml-tests.el +++ b/test/src/xml-tests.el @@ -1,6 +1,6 @@ ;;; xml-tests.el --- Test suite for libxml parsing. -*- lexical-binding: t -*- -;; Copyright (C) 2014-2025 Free Software Foundation, Inc. +;; Copyright (C) 2014-2026 Free Software Foundation, Inc. ;; Author: Ulf Jasper ;; Keywords: internal