commit 3b34b85cc88667a7d1f13e6c82cf478a5009fb3f (HEAD, refs/remotes/origin/master) Author: Po Lu Date: Wed Aug 9 14:23:25 2023 +0800 Fix crashes runninging android-emacs with bad LD_LIBRARY_PATH * doc/emacs/input.texi (Touchscreens, On-Screen Keyboards): Fix section titles. * src/android-emacs.c (main): If EMACS_LD_LIBRARY_PATH is set, make it LD_LIBRARY_PATH. * src/android.c (JNICALL): Set LD_LIBRARY_PATH as well as EMACS_LD_LIBRARY_PATH. diff --git a/doc/emacs/input.texi b/doc/emacs/input.texi index 671901fea88..4f49ca3cece 100644 --- a/doc/emacs/input.texi +++ b/doc/emacs/input.texi @@ -20,7 +20,7 @@ Other Input Devices @end menu @node Touchscreens -@section Using Emacs on touchscreens +@section Using Emacs on Touchscreens @cindex touchscreen input Touchscreen input works by pressing and moving tools (which include @@ -97,7 +97,7 @@ Touchscreens @code{touch-screen-delay}. @node On-Screen Keyboards -@section Using Emacs with virtual keyboards +@section Using Emacs with Virtual Keyboards @cindex virtual keyboards @cindex on-screen keyboards diff --git a/src/android-emacs.c b/src/android-emacs.c index e64caf9a9d4..2c405795860 100644 --- a/src/android-emacs.c +++ b/src/android-emacs.c @@ -37,7 +37,7 @@ main (int argc, char **argv) { char **args; int i; - char *bootclasspath, *emacs_class_path; + char *bootclasspath, *emacs_class_path, *ld_library_path; /* Allocate enough to hold the arguments to app_process. */ args = alloca ((10 + argc) * sizeof *args); @@ -46,11 +46,11 @@ main (int argc, char **argv) memset (args, 0, (10 + argc) * sizeof *args); /* First, figure out what program to start. */ -#if defined __x86_64__ || defined __aarch64__ +#if defined __x86_64__ || defined __aarch64__ || defined __mips64 args[0] = (char *) "/system/bin/app_process64"; -#else +#else /* i386 || regular mips || arm */ args[0] = (char *) "/system/bin/app_process"; -#endif +#endif /* __x86_64__ || __aarch64__ || __mips64 */ /* Machines with ART require the boot classpath to be manually specified. Machines with Dalvik however refuse to do so, as they @@ -72,13 +72,13 @@ main (int argc, char **argv) bootclasspath = NULL; goto skip_setup; } -#else +#else /* !HAVE_DECL_ANDROID_GET_DEVICE_API_LEVEL */ if (__ANDROID_API__ < 21) { bootclasspath = NULL; goto skip_setup; } -#endif +#endif /* HAVE_DECL_ANDROID_GET_DEVICE_API_LEVEL */ /* Next, obtain the boot class path. */ bootclasspath = getenv ("BOOTCLASSPATH"); @@ -106,6 +106,15 @@ main (int argc, char **argv) return 1; } + /* Restore LD_LIBRARY_PATH to its original value, the app library + directory, to guarantee that it is possible for Java to find the + Emacs C code later. */ + + ld_library_path = getenv ("EMACS_LD_LIBRARY_PATH"); + + if (ld_library_path) + setenv ("LD_LIBRARY_PATH", ld_library_path, 1); + if (bootclasspath) { if (asprintf (&bootclasspath, "-Djava.class.path=%s:%s", @@ -146,7 +155,7 @@ main (int argc, char **argv) } else { -#endif +#endif /* HAVE_DECL_ANDROID_GET_DEVICE_API_LEVEL */ args[3] = (char *) "org.gnu.emacs.EmacsNoninteractive"; /* Arguments from here on are passed to main in @@ -158,7 +167,7 @@ main (int argc, char **argv) args[4 + i] = argv[i]; #if HAVE_DECL_ANDROID_GET_DEVICE_API_LEVEL } -#endif +#endif /* HAVE_DECL_ANDROID_GET_DEVICE_API_LEVEL */ /* Finally, try to start the app_process. */ execvp (args[0], args); diff --git a/src/android.c b/src/android.c index 705ef227df3..b5b4359dcd3 100644 --- a/src/android.c +++ b/src/android.c @@ -1424,6 +1424,12 @@ NATIVE_NAME (setEmacsParams) (JNIEnv *env, jobject object, /* Set LD_LIBRARY_PATH to an appropriate value. */ setenv ("LD_LIBRARY_PATH", android_lib_dir, 1); + /* EMACS_LD_LIBRARY_PATH records the location of the app library + directory. android-emacs refers to this, since users have valid + reasons for changing LD_LIBRARY_PATH to a value that precludes + the possibility of Java locating libemacs later. */ + setenv ("EMACS_LD_LIBRARY_PATH", android_lib_dir, 1); + /* Make a reference to the Emacs service. */ if (emacs_service_object) commit 82a67d227e52c70f438ced4b5ee260bb7d8be02d Author: Po Lu Date: Wed Aug 9 12:21:03 2023 +0800 Improve Emacsbug output * lisp/mail/emacsbug.el (report-emacs-bug--os-description): Handle `android'. (emacs-build-description): Don't print the Android build fingerprint here. diff --git a/lisp/mail/emacsbug.el b/lisp/mail/emacsbug.el index 3893e93238f..bebaad720db 100644 --- a/lisp/mail/emacsbug.el +++ b/lisp/mail/emacsbug.el @@ -144,6 +144,10 @@ report-emacs-bug--os-description (goto-char (point-min)) (buffer-substring (line-beginning-position) (line-end-position)))))) + ((eq system-type 'android) + ;; This is a short string containing the Android version, + ;; build number, and window system distributor. + (symbol-value 'android-build-fingerprint)) ;; TODO Cygwin, Solaris (usg-unix-v). (t (or (let ((file "/etc/os-release")) @@ -408,12 +412,6 @@ emacs-build-description "', version " (mapconcat #'number-to-string (x-server-version) ".") "\n") (error t))) - (when (and (boundp 'android-build-fingerprint) - (symbol-value 'android-build-fingerprint)) - ;; This is used on Android. - (insert "Android version and manufacturer: " - (symbol-value 'android-build-fingerprint) - "\n")) (let ((os (ignore-errors (report-emacs-bug--os-description)))) (if (stringp os) (insert "System Description: " os "\n\n"))) commit dbca2e797abeaedb54a85c22ca004cc041ffec4d Author: Eric S. Raymond Date: Wed Aug 9 00:02:22 2023 -0400 Add a string check to delete-file-internal. * src/fileio.c (delete-file-internal): Argument should be a string. diff --git a/src/fileio.c b/src/fileio.c index 4c00f1e5ff4..14e39445efa 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -2592,6 +2592,7 @@ DEFUN ("delete-file-internal", Fdelete_file_internal, Sdelete_file_internal, 1, { Lisp_Object encoded_file; + CHECK_STRING (filename); filename = Fexpand_file_name (filename, Qnil); encoded_file = ENCODE_FILE (filename); commit 5af838769d3edd11697319754b8d341957d8786d Author: Po Lu Date: Wed Aug 9 09:50:35 2023 +0800 * lisp/ldefs-boot.el: Restore no-byte-compile cookie. diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 5b6bcc065eb..f062f3bf8de 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -37363,6 +37363,7 @@ "zone" ;; Local Variables: ;; version-control: never ;; no-update-autoloads: t +;; no-byte-compile: t ;; no-native-compile: t ;; coding: utf-8-emacs-unix ;; End: commit 391ff93f763228fb62a8d658a190a60e4a0a1791 Author: Po Lu Date: Wed Aug 9 09:21:36 2023 +0800 * doc/misc/calc.texi (Musical Notes): Fix build with Texinfo 4.13. diff --git a/doc/misc/calc.texi b/doc/misc/calc.texi index 00c0fa6001a..5064f76e7b8 100644 --- a/doc/misc/calc.texi +++ b/doc/misc/calc.texi @@ -28476,12 +28476,12 @@ Musical Notes the octave numbered 0 was chosen to correspond to the lowest audible frequency. Using this system, middle C (about 261.625 Hz) corresponds to the note @slanted{C} in octave 4 and is denoted -@slanted{C@sub{4}}. Any frequency can be described by giving a note plus an +@slanted{C4}. Any frequency can be described by giving a note plus an offset in cents (where a cent is a ratio of frequencies so that a semitone consists of 100 cents). The midi note number system assigns numbers to notes so that -@slanted{C@sub{-1}} corresponds to the midi note number 0 and @slanted{G@sub{9}} +@slanted{C-1} corresponds to the midi note number 0 and @slanted{G9} corresponds to the midi note number 127. A midi controller can have up to 128 keys and each midi note number from 0 to 127 corresponds to a possible key. commit 8c607783b973271a4b794f4b963d2a44f38cf11d Author: Po Lu Date: Wed Aug 9 09:20:15 2023 +0800 Run Git hooks within xcu4 * build-aux/git-hooks/pre-commit (LC_ALL): * build-aux/git-hooks/prepare-commit-msg (SHA1): Run using xcu4 tools. diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit index f89d9ca8f8c..12b08d2c25f 100755 --- a/build-aux/git-hooks/pre-commit +++ b/build-aux/git-hooks/pre-commit @@ -21,6 +21,14 @@ LC_ALL=C export LC_ALL +# If this is a system where /bin/sh isn't sufficient to +# run git-sh-setup, use a working shell as a recourse. +if test -x "/usr/xpg4/bin/sh" && test -z "$POSIX_SHELL"; then + POSIX_SHELL=1 + export POSIX_SHELL + exec "/usr/xpg4/bin/sh" `dirname $0`/pre-commit +fi + exec >&2 . git-sh-setup diff --git a/build-aux/git-hooks/prepare-commit-msg b/build-aux/git-hooks/prepare-commit-msg index 7802dffda43..1520ef3f5f8 100755 --- a/build-aux/git-hooks/prepare-commit-msg +++ b/build-aux/git-hooks/prepare-commit-msg @@ -25,6 +25,10 @@ SHA1=$3 # Prefer gawk if available, as it handles NUL bytes properly. if type gawk >/dev/null 2>&1; then awk="gawk" +# Next use /usr/xpg4/bin/awk if available, since the script +# doesn't support Unix awk. +elif test -x /usr/xpg4/bin/awk; then + awk="/usr/xpg4/bin/awk" else awk="awk" fi commit 3f2e009ac3352f9384a3f560bf2505223f607913 Author: Po Lu Date: Wed Aug 9 09:19:11 2023 +0800 ; Minor adjustments to configury, loaddefs and gitignore * .gitignore: Add exec/aclocal.m4. * configure.ac (bitmapdirs): Circumvent shell substitution that isn't supported by the Bourne shell. * lisp/ldefs-boot.el: Update from loaddefs.el. diff --git a/.gitignore b/.gitignore index 1cf83b049de..0a68121009d 100644 --- a/.gitignore +++ b/.gitignore @@ -380,6 +380,7 @@ exec/loader exec/test exec/exec1 exec/deps/* +exec/aclocal.m4 exec/autom4te.cache exec/config.h exec/config.h.in diff --git a/configure.ac b/configure.ac index de602371f7b..6e080c1c666 100644 --- a/configure.ac +++ b/configure.ac @@ -2762,16 +2762,16 @@ AC_DEFUN bitmapdir=/usr/include/X11/bitmaps else # accumulate include directories that have X11 bitmap subdirectories - bmd_acc= + AS_UNSET([bmd_acc]) for bmd in `AS_ECHO(["$x_includes"]) | sed -e 's/:/ /g'`; do if test -d "${bmd}/X11/bitmaps"; then - bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps" + bmd_acc="${bmd_acc+$bmd_acc:}${bmd}/X11/bitmaps" fi if test -d "${bmd}/bitmaps"; then - bmd_acc="${bmd_acc}:${bmd}/bitmaps" + bmd_acc="${bmd_acc+$bmd_acc:}${bmd}/bitmaps" fi done - bitmapdir=${bmd_acc#:} + bitmapdir=$bmd_acc fi NATIVE_IMAGE_API=no diff --git a/lisp/ldefs-boot.el b/lisp/ldefs-boot.el index 898dcd55f58..5b6bcc065eb 100644 --- a/lisp/ldefs-boot.el +++ b/lisp/ldefs-boot.el @@ -302,6 +302,7 @@ ad-default-compilation-action (fn FUNCTION ARGS &rest BODY)" nil t) (function-put 'defadvice 'doc-string-elt 3) (function-put 'defadvice 'lisp-indent-function 2) +(make-obsolete 'defadvice '"use advice-add or define-advice" "30.1") (register-definition-prefixes "advice" '("ad-")) @@ -2544,6 +2545,13 @@ browse-url-default-handlers Browse URL with the system default browser. Default to the URL around or before point. +(fn URL &optional NEW-WINDOW)" t) +(autoload 'browse-url-default-android-browser "browse-url" "\ +Browse URL with the system default browser. +If `browse-url-android-share' is non-nil, try to share URL using +an external program instead. Default to the URL around or before +point. + (fn URL &optional NEW-WINDOW)" t) (autoload 'browse-url-emacs "browse-url" "\ Ask Emacs to load URL into a buffer and show it in another window. @@ -4645,12 +4653,6 @@ "cl-macs" call other entry points instead, such as `cl-prin1'. (fn OBJECT STREAM)") -(autoload 'cl-print-expand-ellipsis "cl-print" "\ -Print the expansion of an ellipsis to STREAM. -VALUE should be the value of the `cl-print-ellipsis' text property -which was attached to the ellipsis by `cl-prin1'. - -(fn VALUE STREAM)") (autoload 'cl-prin1 "cl-print" "\ Print OBJECT on STREAM according to its type. Output is further controlled by the variables @@ -4671,13 +4673,12 @@ "cl-macs" the arguments VALUE and STREAM and which should respect `print-length' and `print-level'. LIMIT may be nil or zero in which case PRINT-FUNCTION will be called with `print-level' and -`print-length' bound to nil. +`print-length' bound to nil, and it can also be t in which case +PRINT-FUNCTION will be called with the current values of `print-level' +and `print-length'. Use this function with `cl-prin1' to print an object, -abbreviating it with ellipses to fit within a size limit. Use -this function with `cl-prin1-expand-ellipsis' to expand an -ellipsis, abbreviating the expansion to stay within a size -limit. +abbreviating it with ellipses to fit within a size limit. (fn PRINT-FUNCTION VALUE LIMIT)") (register-definition-prefixes "cl-print" '("cl-print-" "help-byte-code")) @@ -4873,6 +4874,36 @@ "comint" filename (including FILE). (fn FILE)") +(autoload 'native--compile-async "comp" "\ +Compile FILES asynchronously. +FILES is one filename or a list of filenames or directories. + +If optional argument RECURSIVELY is non-nil, recurse into +subdirectories of given directories. + +If optional argument LOAD is non-nil, request to load the file +after compiling. + +The optional argument SELECTOR has the following valid values: + +nil -- Select all files. +a string -- A regular expression selecting files with matching names. +a function -- A function selecting files with matching names. + +The variable `native-comp-async-jobs-number' specifies the number +of (commands) to run simultaneously. + +LOAD can also be the symbol `late'. This is used internally if +the byte code has already been loaded when this function is +called. It means that we request the special kind of load +necessary in that situation, called \"late\" loading. + +During a \"late\" load, instead of executing all top-level forms +of the original files, only function definitions are +loaded (paying attention to have these effective only if the +bytecode definition was not changed in the meantime). + +(fn FILES &optional RECURSIVELY LOAD SELECTOR)") (autoload 'comp-lookup-eln "comp" "\ Given a Lisp source FILENAME return the corresponding .eln file if found. Search happens in `native-comp-eln-load-path'. @@ -4939,7 +4970,7 @@ "comint" `know', the type specifier comes from `comp-known-type-specifiers'. (fn FUNCTION)") -(register-definition-prefixes "comp" '("comp-" "make-comp-edge" "native-" "no-native-compile")) +(register-definition-prefixes "comp" '("comp-" "make-comp-edge" "native-comp" "no-native-compile")) ;;; Generated autoloads from cedet/semantic/wisent/comp.el @@ -5638,7 +5669,7 @@ "copyright" (fn WORD)" t) (autoload 'cperl-perldoc-at-point "cperl-mode" "\ Run a `perldoc' on the word around point." t) -(register-definition-prefixes "cperl-mode" '("cperl-")) +(register-definition-prefixes "cperl-mode" '("cperl-" "imenu-max-items")) ;;; Generated autoloads from progmodes/cpp.el @@ -8171,7 +8202,6 @@ "dynamic-setting" ;;; Generated autoloads from emacs-lisp/easy-mmode.el -(defalias 'easy-mmode-define-minor-mode #'define-minor-mode) (autoload 'define-minor-mode "easy-mmode" "\ Define a new minor mode MODE. This defines the toggle command MODE and (by default) a control variable @@ -8246,7 +8276,6 @@ 'easy-mmode-define-minor-mode (fn MODE DOC [KEYWORD VAL ... &rest BODY])" nil t) (function-put 'define-minor-mode 'doc-string-elt 2) (function-put 'define-minor-mode 'lisp-indent-function 'defun) -(defalias 'easy-mmode-define-global-mode #'define-globalized-minor-mode) (defalias 'define-global-minor-mode #'define-globalized-minor-mode) (autoload 'define-globalized-minor-mode "easy-mmode" "\ Make a global mode GLOBAL-MODE corresponding to buffer-local minor MODE. @@ -8254,14 +8283,17 @@ 'define-global-minor-mode and that should try to turn MODE on if applicable for that buffer. Each of KEY VALUE is a pair of CL-style keyword arguments. -The :predicate argument specifies in which major modes should the +The :predicate key specifies in which major modes should the globalized minor mode be switched on. The value should be t (meaning switch on the minor mode in all major modes), nil (meaning don't switch on in any major mode), a list of modes (meaning switch on only in those modes and their descendants), or a list (not MODES...), meaning switch on in any major mode except MODES. The value can also mix all of these forms, see the info node `Defining Minor Modes' for -details. +details. The :predicate key causes the macro to create a user option +named the same as MODE, but ending with \"-modes\" instead of \"-mode\". +That user option can then be used to customize in which modes this +globalized minor mode will be switched on. As the minor mode defined by this function is always global, any :global keyword is ignored. Other keywords have the same meaning as in `define-minor-mode', @@ -8325,6 +8357,8 @@ 'define-global-minor-mode (fn ST CSS DOC &rest ARGS)" nil t) (function-put 'easy-mmode-defsyntax 'doc-string-elt 3) (function-put 'easy-mmode-defsyntax 'lisp-indent-function 1) +(define-obsolete-function-alias 'easy-mmode-define-minor-mode #'define-minor-mode "30.1") +(define-obsolete-function-alias 'easy-mmode-define-global-mode #'define-globalized-minor-mode "30.1") (register-definition-prefixes "easy-mmode" '("easy-mmode-")) @@ -8633,7 +8667,7 @@ "ebnf2ps" A call with prefix PREFIX reads the symbol to insert from the minibuffer with completion. -(fn PREFIX)" '("P")) +(fn PREFIX)" t) (autoload 'ebrowse-tags-loop-continue "ebrowse" "\ Repeat last operation on files in tree. FIRST-TIME non-nil means this is not a repetition, but the first time. @@ -10234,6 +10268,9 @@ "epg-config" (autoload 'erc-select-read-args "erc" "\ Prompt the user for values of nick, server, port, and password. With prefix arg, also prompt for user and full name.") +(autoload 'erc-server-select "erc" "\ +Interactively connect to a server from `erc-server-alist'." t) +(make-obsolete 'erc-server-select 'erc-tls "30.1") (autoload 'erc "erc" "\ ERC is a powerful, modular, and extensible IRC client. This function is the main entry point for ERC. @@ -10259,7 +10296,7 @@ "epg-config" See `erc-tls' for the meaning of ID. -(fn &key SERVER PORT NICK USER PASSWORD FULL-NAME ID)" '((erc-select-read-args))) +(fn &key SERVER PORT NICK USER PASSWORD FULL-NAME ID)" t) (defalias 'erc-select #'erc) (autoload 'erc-tls "erc" "\ ERC is a powerful, modular, and extensible IRC client. @@ -10307,7 +10344,7 @@ 'erc-select CLIENT-CERTIFICATE, this parameter cannot be specified interactively. -(fn &key SERVER PORT NICK USER PASSWORD FULL-NAME CLIENT-CERTIFICATE ID)" '((let ((erc-default-port erc-default-port-tls)) (erc-select-read-args)))) +(fn &key SERVER PORT NICK USER PASSWORD FULL-NAME CLIENT-CERTIFICATE ID)" t) (autoload 'erc-handle-irc-url "erc" "\ Use ERC to IRC on HOST:PORT in CHANNEL. If ERC is already connected to HOST:PORT, simply /join CHANNEL. @@ -10432,10 +10469,13 @@ "erc-netsplit" Use the server parameter NETWORK if provided, otherwise parse the server name and search for a match in `erc-networks-alist'.") (make-obsolete 'erc-determine-network '"maybe see `erc-networks--determine'" "29.1") -(autoload 'erc-server-select "erc-networks" "\ -Interactively select a server to connect to using `erc-server-alist'." t) (register-definition-prefixes "erc-networks" '("erc-")) + +;;; Generated autoloads from erc/erc-nicks.el + +(register-definition-prefixes "erc-nicks" '("erc-nicks-")) + ;;; Generated autoloads from erc/erc-notify.el @@ -10536,7 +10576,9 @@ "erc-xdcc" If NAME is already defined as a test and Emacs is running in batch mode, an error is signaled. -(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] BODY...)" nil 'macro) +(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags \\='(TAG...)] BODY...)" nil t) +(function-put 'ert-deftest 'doc-string-elt 3) +(function-put 'ert-deftest 'lisp-indent-function 2) (autoload 'ert-run-tests-batch "ert" "\ Run the tests specified by SELECTOR, printing results to the terminal. @@ -14830,9 +14872,8 @@ 'find-grep If CONFIRM is non-nil, the user will be given an opportunity to edit the command before it's run. -Interactively, the user can use the \\`M-c' command while entering -the regexp to indicate whether the grep should be case sensitive -or not. +Interactively, the user can use \\\\[read-regexp-toggle-case-fold] while entering the regexp +to indicate whether the grep should be case sensitive or not. (fn REGEXP &optional FILES DIR CONFIRM)" t) (autoload 'zrgrep "grep" "\ @@ -16409,7 +16450,8 @@ "ibuf-ext" change its definition, you should explicitly call `ibuffer-recompile-formats'. -(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil 'macro) +(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil t) +(function-put 'define-ibuffer-column 'lisp-indent-function 'defun) (autoload 'define-ibuffer-sorter "ibuf-macs" "\ Define a method of sorting named NAME. DOCUMENTATION is the documentation of the function, which will be called @@ -16420,7 +16462,9 @@ "ibuf-ext" buffer object, and `b' bound to another. BODY should return a non-nil value if and only if `a' is \"less than\" `b'. -(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil 'macro) +(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil t) +(function-put 'define-ibuffer-sorter 'lisp-indent-function 1) +(function-put 'define-ibuffer-sorter 'doc-string-elt 2) (autoload 'define-ibuffer-op "ibuf-macs" "\ Generate a function which operates on a buffer. OP becomes the name of the function; if it doesn't begin with @@ -16459,7 +16503,9 @@ "ibuf-ext" marked buffer. BODY is evaluated with `buf' bound to the buffer object. -(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING BEFORE AFTER COMPLEX) &rest BODY)" nil 'macro) +(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING BEFORE AFTER COMPLEX) &rest BODY)" nil t) +(function-put 'define-ibuffer-op 'lisp-indent-function 2) +(function-put 'define-ibuffer-op 'doc-string-elt 3) (autoload 'define-ibuffer-filter "ibuf-macs" "\ Define a filter named NAME. DOCUMENTATION is the documentation of the function. @@ -16474,7 +16520,9 @@ "ibuf-ext" will be evaluated with BUF bound to the buffer object, and QUALIFIER bound to the current value of the filter. -(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil 'macro) +(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil t) +(function-put 'define-ibuffer-filter 'lisp-indent-function 2) +(function-put 'define-ibuffer-filter 'doc-string-elt 2) (register-definition-prefixes "ibuf-macs" '("ibuffer-")) @@ -18954,7 +19002,7 @@ 'kmacro-exec-ring-item or it can be given a name with \\[kmacro-name-last-macro] and then invoked under that name. -With numeric arg, repeat macro now that many times, +With numeric ARG, repeat the macro that many times, counting the definition just completed as the first repetition. An argument of zero means repeat until error. @@ -19179,7 +19227,7 @@ "legacy-gnus-agent" (put 'less-css-input-file-name 'safe-local-variable #'stringp) (add-to-list 'auto-mode-alist '("\\.less\\'" . less-css-mode)) (autoload 'less-css-mode "less-css-mode" "\ -Major mode for editing Less files (http://lesscss.org/). +Major mode for editing Less files (https://lesscss.org/). Special commands: \\{less-css-mode-map} @@ -20706,6 +20754,8 @@ "minibuf-eldef" (autoload 'duplicate-line "misc" "\ Duplicate the current line N times. Interactively, N is the prefix numeric argument, and defaults to 1. +The user option `duplicate-line-final-position' specifies where to +move point after duplicating the line. Also see the `copy-from-above-command' command. (fn &optional N)" t) @@ -20715,6 +20765,9 @@ "minibuf-eldef" Otherwise, duplicate the region, which remains active afterwards. If the region is rectangular, duplicate on its right-hand side. Interactively, N is the prefix numeric argument, and defaults to 1. +The variables `duplicate-line-final-position' and +`duplicate-region-final-position' control the position of point +and the region after the duplication. (fn &optional N)" t) (autoload 'zap-up-to-char "misc" "\ @@ -20766,7 +20819,7 @@ "minibuf-eldef" The return value is always nil. (fn &optional LOADED-ONLY-P BUFFER)" t) -(register-definition-prefixes "misc" '("list-dynamic-libraries--")) +(register-definition-prefixes "misc" '("duplicate-" "list-dynamic-libraries--")) ;;; Generated autoloads from misearch.el @@ -22508,7 +22561,7 @@ "opascal" ;;; Generated autoloads from org/org.el -(push (purecopy '(org 9 6 6)) package--builtin-versions) +(push (purecopy '(org 9 6 7)) package--builtin-versions) (autoload 'org-babel-do-load-languages "org" "\ Load the languages defined in `org-babel-load-languages'. @@ -24488,11 +24541,6 @@ "pgtk-dnd" (defalias 'edit-picture 'picture-mode) (register-definition-prefixes "picture" '("picture-")) - -;;; Generated autoloads from language/pinyin.el - -(register-definition-prefixes "pinyin" '("pinyin-character-map")) - ;;; Generated autoloads from textmodes/pixel-fill.el @@ -24527,6 +24575,18 @@ pixel-scroll-mode it is disabled. (fn &optional ARG)" t) +(autoload 'pixel-scroll-precision-scroll-down-page "pixel-scroll" "\ +Scroll the current window down by DELTA pixels. +Note that this function doesn't work if DELTA is larger than +the height of the current window. + +(fn DELTA)") +(autoload 'pixel-scroll-precision-scroll-up-page "pixel-scroll" "\ +Scroll the current window up by DELTA pixels. +Note that this function doesn't work if DELTA is larger than +the height of the current window. + +(fn DELTA)") (defvar pixel-scroll-precision-mode nil "\ Non-nil if Pixel-Scroll-Precision mode is enabled. See the `pixel-scroll-precision-mode' command @@ -24618,8 +24678,9 @@ "pop3" Return a string containing the pretty-printed representation of OBJECT. OBJECT can be any Lisp object. Quoting characters are used as needed to make output that `read' can handle, whenever this is possible. +Optional argument PP-FUNCTION overrides `pp-default-function'. -(fn OBJECT)") +(fn OBJECT &optional PP-FUNCTION)") (autoload 'pp-buffer "pp" "\ Prettify the current buffer with printed representation of a Lisp object." t) (autoload 'pp "pp" "\ @@ -24627,11 +24688,7 @@ "pop3" Quoting characters are printed as needed to make output that `read' can handle, whenever this is possible. -This function does not apply special formatting rules for Emacs -Lisp code. See `pp-emacs-lisp-code' instead. - -By default, this function won't limit the line length of lists -and vectors. Bind `pp-use-max-width' to a non-nil value to do so. +Uses the pretty-printing code specified in `pp-default-function'. Output stream is STREAM, or value of `standard-output' (which see). @@ -24669,8 +24726,10 @@ "pop3" Insert SEXP into the current buffer, formatted as Emacs Lisp code. Use the `pp-max-width' variable to control the desired line length. Note that this could be slow for large SEXPs. +Can also be called with two arguments, in which case they're taken to be +the bounds of a region containing Lisp code to pretty-print. -(fn SEXP)") +(fn SEXP &optional END)") (register-definition-prefixes "pp" '("pp-")) @@ -25261,8 +25320,10 @@ "ede/proj-shared" When no project is found in that directory, the result depends on the value of MAYBE-PROMPT: if it is nil or omitted, return nil, -else ask the user for a directory in which to look for the -project, and if no project is found there, return a \"transient\" +else prompt the user for the project to use. To prompt for a +project, call the function specified by `project-prompter', which +returns the directory in which to look for the project. If no +project is found in that directory, return a \"transient\" project instance. The \"transient\" project instance is a special kind of value @@ -25468,6 +25529,15 @@ project-prefix-map to directory DIR. (fn DIR)" t) +(autoload 'project-uniquify-dirname-transform "project" "\ +Uniquify name of directory DIRNAME using `project-name', if in a project. + +If you set `uniquify-dirname-transform' to this function, +slash-separated components from `project-name' will be appended to +the buffer's directory name when buffers from two different projects +would otherwise have the same name. + +(fn DIRNAME)") (register-definition-prefixes "project" '("project-")) @@ -25832,6 +25902,7 @@ "puny" \\{python-ts-mode-map} (fn)" t) +(add-to-list 'auto-mode-alist '("/\\(?:Pipfile\\|\\.?flake8\\)\\'" . conf-mode)) (register-definition-prefixes "python" '("inferior-python-mode" "python-" "run-python-internal")) @@ -27501,8 +27572,8 @@ "rtree" Major mode for editing Ruby code. (fn)" t) -(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\.\\(?:" "rbw?\\|ru\\|rake\\|thor" "\\|jbuilder\\|rabl\\|gemspec\\|podspec" "\\)" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Puppet\\|Berks\\|Brew" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode)) -(dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode))) +(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\.\\(?:" "rbw?\\|ru\\|rake\\|thor\\|axlsx" "\\|jbuilder\\|rabl\\|gemspec\\|podspec" "\\)" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Puppet\\|Berks\\|Brew\\|Fast" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode)) +(dolist (name (list "ruby" "rbx" "jruby" "j?ruby\\(?:[0-9.]+\\)")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode))) (register-definition-prefixes "ruby-mode" '("ruby-")) @@ -30433,7 +30504,7 @@ string-blank-p Query the user for a process and return the process object. (fn PROMPT)") -(register-definition-prefixes "subr-x" '("emacs-etc--hide-local-variables" "eval-command-interactive-spec" "hash-table-" "internal--thread-argument" "replace-region-contents" "string-" "thread-" "with-buffer-unmodified-if-unchanged")) +(register-definition-prefixes "subr-x" '("emacs-etc--hide-local-variables" "hash-table-" "internal--thread-argument" "replace-region-contents" "string-" "thread-" "with-buffer-unmodified-if-unchanged")) ;;; Generated autoloads from progmodes/subword.el @@ -31307,7 +31378,7 @@ "talk" \\{tar-mode-map} (fn)" t) -(register-definition-prefixes "tar-mode" '("tar-")) +(register-definition-prefixes "tar-mode" '("pax-" "tar-")) ;;; Generated autoloads from progmodes/tcl.el @@ -32670,7 +32741,7 @@ "toml-ts-mode" holds a keymap. (fn COMMAND ICON IN-MAP &optional FROM-MAP &rest PROPS)") -(register-definition-prefixes "tool-bar" '("toggle-tool-bar-mode-from-frame" "tool-bar-")) +(register-definition-prefixes "tool-bar" '("modifier-bar-" "secondary-tool-bar-map" "toggle-tool-bar-mode-from-frame" "tool-bar-")) ;;; Generated autoloads from tooltip.el @@ -32771,6 +32842,11 @@ tramp-register-autoload-file-name-handlers (tramp-register-autoload-file-name-handlers) (defun tramp-unload-file-name-handlers nil "\ Unload Tramp file name handlers from `file-name-handler-alist'." (dolist (fnh file-name-handler-alist) (when (and (symbolp (cdr fnh)) (string-prefix-p "tramp-" (symbol-name (cdr fnh)))) (setq file-name-handler-alist (delq fnh file-name-handler-alist))))) +(defun inhibit-remote-files nil "\ +Deactivate remote file names." (interactive) (when (fboundp 'tramp-cleanup-all-connections) (funcall 'tramp-cleanup-all-connections)) (tramp-unload-file-name-handlers) (setq tramp-mode nil)) +(defmacro without-remote-files (&rest body) "\ +Deactivate remote file names temporarily. +Run BODY." (declare (indent 0) (debug ((form body) body))) `(let ((file-name-handler-alist (copy-tree file-name-handler-alist)) tramp-mode) (tramp-unload-file-name-handlers) ,@body)) (defun tramp-unload-tramp nil "\ Discard Tramp from loading remote files." (interactive) (ignore-errors (unload-feature 'tramp 'force))) (register-definition-prefixes "tramp" '("tramp-" "with-")) @@ -32846,6 +32922,11 @@ "tramp-gvfs" (register-definition-prefixes "tramp-integration" '("tramp-")) + +;;; Generated autoloads from net/tramp-message.el + +(register-definition-prefixes "tramp-message" '("tramp-" "with-tramp-debug-message")) + ;;; Generated autoloads from net/tramp-rclone.el @@ -33245,7 +33326,7 @@ "type-break" at least 3 (which is the default value). (fn)" t) -(register-definition-prefixes "typescript-ts-mode" '("typescript-ts-mode-")) +(register-definition-prefixes "typescript-ts-mode" '("tsx-ts-mode--" "typescript-ts-mode-")) ;;; Generated autoloads from international/ucs-normalize.el @@ -36636,7 +36717,7 @@ "wid-browse" Call `insert' with ARGS even if surrounding text is read only. (fn &rest ARGS)") -(defvar widget-keymap (let ((map (make-sparse-keymap))) (define-key map "\11" 'widget-forward) (define-key map "\33\11" 'widget-backward) (define-key map [(shift tab)] 'widget-backward) (put 'widget-backward :advertised-binding [(shift tab)]) (define-key map [backtab] 'widget-backward) (define-key map [down-mouse-2] 'widget-button-click) (define-key map [down-mouse-1] 'widget-button-click) (define-key map [(control 109)] 'widget-button-press) map) "\ +(defvar widget-keymap (let ((map (make-sparse-keymap))) (define-key map "\11" 'widget-forward) (define-key map "\33\11" 'widget-backward) (define-key map [(shift tab)] 'widget-backward) (put 'widget-backward :advertised-binding [(shift tab)]) (define-key map [backtab] 'widget-backward) (define-key map [down-mouse-2] 'widget-button-click) (define-key map [down-mouse-1] 'widget-button-click) (define-key map [touchscreen-begin] 'widget-button-click) (define-key map [(control 109)] 'widget-button-press) map) "\ Keymap containing useful binding for buffers containing widgets. Recommended as a parent keymap for modes using widgets. Note that such modes will need to require wid-edit.") @@ -37282,7 +37363,6 @@ "zone" ;; Local Variables: ;; version-control: never ;; no-update-autoloads: t -;; no-byte-compile: t ;; no-native-compile: t ;; coding: utf-8-emacs-unix ;; End: commit af907c060a08e6eb87de595552e0fb4ca6aeed83 Author: Stefan Kangas Date: Wed Aug 9 03:35:18 2023 +0200 ; * .gitignore: Add exec/aclocal.m4. diff --git a/.gitignore b/.gitignore index 75e46ce20d5..1cf83b049de 100644 --- a/.gitignore +++ b/.gitignore @@ -374,6 +374,7 @@ lib-src/seccomp-filter-exec.pfc _gdb_history # Files ignored in exec/. +exec/aclocal.m4 exec/config.status exec/loader exec/test commit 08c5cba2e4637cfe79a0ebf1bf2a07a304c277b6 Author: Stefan Kangas Date: Wed Aug 9 03:30:56 2023 +0200 Add calling convention to face-attr-construct * lisp/faces.el (face-attr-construct): Add advertised-calling-convention declaration. diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el index f5143bdb53f..9b73a72b238 100644 --- a/lisp/cus-edit.el +++ b/lisp/cus-edit.el @@ -3751,7 +3751,7 @@ custom-face-get-current-spec-unfiltered ;; If the user has changed this face in some other way, ;; edit it as the user has specified it. (if (not (face-spec-match-p face spec (selected-frame))) - (setq spec `((t ,(face-attr-construct face (selected-frame)))))) + (setq spec `((t ,(face-attr-construct face))))) spec)) (defun custom-face-get-current-spec (face) diff --git a/lisp/faces.el b/lisp/faces.el index 8017f5fa65e..1a446aacacd 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -1540,15 +1540,12 @@ list-faces-display ;;; Face specifications (defface). ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Parameter FRAME Is kept for call compatibility to with previous -;; face implementation. - (defun face-attr-construct (face &optional _frame) "Return a `defface'-style attribute list for FACE. Value is a property list of pairs ATTRIBUTE VALUE for all specified face attributes of FACE where ATTRIBUTE is the attribute name and -VALUE is the specified value of that attribute. -Argument FRAME is ignored and retained for compatibility." +VALUE is the specified value of that attribute." + (declare (advertised-calling-convention (face) "30.1")) (let (result) (dolist (entry face-attribute-name-alist result) (let* ((attribute (car entry)) commit 6f2e48bc52d85a3914d4b9e919dedf609289bdf5 Author: Po Lu Date: Wed Aug 9 08:26:45 2023 +0800 Don't depend on Automake to generate exec/aclocal.m4 * autogen.sh (do_git): Generate exec/aclocal.m4 by hand. (bug#65160) diff --git a/autogen.sh b/autogen.sh index 3cb77afedb3..0d89b7cfc9a 100755 --- a/autogen.sh +++ b/autogen.sh @@ -257,6 +257,13 @@ do_git= ## Use autoreconf's -f option in case autoreconf itself has changed. autoreconf -fi -I m4 || exit + echo "Building 'aclocal.m4' in exec ..." + + # Create a placeholder aclocal.m4 in exec, preventing autoreconf + # from running aclocal. + + echo "" > exec/aclocal.m4 + echo "Running 'autoreconf -fi' in exec ..." # Now, run autoreconf inside the exec directory to generate its commit fce3815921c845798d87bebb5423f19fd7141a11 Author: Eric S. Raymond Date: Tue Aug 8 20:02:17 2023 -0400 Fix all my attributions to be correct and consistent... ...in case people are trying to track me down for questions. .mailmap, ChangeLog.1, admin/notes/copyright, doc/emacs/ChangeLog.1, doc/emacs/ack.texi, doc/lispref/ChangeLog.1, doc/misc/gnus.texi, etc/ChangeLog.1, lib-src/ChangeLog.1, lisp/ChangeLog.13, lisp/ChangeLog.14, lisp/ChangeLog.15, lisp/ChangeLog.17, lisp/ChangeLog.3, lisp/ChangeLog.4, lisp/ChangeLog.5, lisp/ChangeLog.6, lisp/ChangeLog.7, lisp/emacs-lisp/lisp-mnt.el, lisp/finder.el, lisp/loadhist.el, lisp/play/cookie1.el, lisp/progmodes/asm-mode.el, lisp/progmodes/gud.el, lisp/progmodes/make-mode.el, lisp/term/AT386.el, src/ChangeLog.3 diff --git a/.mailmap b/.mailmap index 0531cc0c290..f14f086b2e5 100644 --- a/.mailmap +++ b/.mailmap @@ -60,7 +60,7 @@ Era Eriksson Eric Ludlam Eric Ludlam Eric Ludlam -Eric S. Raymond +Eric S. Raymond Etienne Prud’homme Fabián Ezequiel Gallina Fabián Ezequiel Gallina diff --git a/ChangeLog.1 b/ChangeLog.1 index fcfae7c3883..654cb43d4dc 100644 --- a/ChangeLog.1 +++ b/ChangeLog.1 @@ -7582,7 +7582,7 @@ * INSTALL.CVS: Clarify why `make bootstrap' sometimes fails. -2008-06-08 Eric S. Raymond +2008-06-08 Eric S. Raymond * INSTALL.CVS: Indicate when "cvs update -d" may be needed. @@ -9672,7 +9672,7 @@ * configure.in: New entry for HP/UX-11. * Makefile.in (SOURCES): Replace GETTING.GNU.SOFTWARE with FTP. - From Eric S. Raymond . + From Eric S. Raymond . 2001-10-28 Eli Zaretskii @@ -13896,7 +13896,7 @@ places. Implement them by setting C_SWITCH_X_SITE and LD_SWITCH_X_SITE in src/config.h. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * make-dist: Don't distribute etc/Old files. @@ -13907,7 +13907,7 @@ * make-dist: Fix typo. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * make-dist: Corrected typo, fixed it to discard = and TAGS files in some cases where it should but didn't seen to. @@ -13924,11 +13924,11 @@ * configure: Recognize rs6000-ibm-aix32 and rs6000-ibm-aix, and make rs6000-ibm-aix default to -aix32. -1993-03-17 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * Makefile.in: Added `Developer's configuration' section. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * Makefile.in: Add commented-out variable settings for developer's configuration. @@ -14299,7 +14299,7 @@ return handler, make a copy of it, not a symbolic link to it; that way, it will work on systems that don't have symbolic links. -1992-08-14 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-08-14 Eric S. Raymond (esr@thyrsus.com) * make-dist: Taught it about vcdiff and rcs2log, added --newer option for generating incremental distributions. Stopped it from diff --git a/admin/notes/copyright b/admin/notes/copyright index ae09707bac8..a06d92a2c5f 100644 --- a/admin/notes/copyright +++ b/admin/notes/copyright @@ -381,7 +381,7 @@ conclude it was written by me." lisp/term/README - had no copyright notice till Feb 2007. ChangeLog.3 suggests it was - written by Eric Raymond. When asked by rms on 14 Feb 2007 he said: + written by Eric S. Raymond. When asked by rms on 14 Feb 2007 he said: I don't remember writing it, but it reads like my prose and I believe I wrote the feature(s) it's describing. So I would have been the diff --git a/doc/emacs/ChangeLog.1 b/doc/emacs/ChangeLog.1 index 16afa073169..1cf26aeff06 100644 --- a/doc/emacs/ChangeLog.1 +++ b/doc/emacs/ChangeLog.1 @@ -81,7 +81,7 @@ * misc.texi (Network Security): Mention the new protocol-level `high' NSM checks. -2014-12-08 Eric S. Raymond +2014-12-08 Eric S. Raymond * maintaining.texi: Support for Arch has been moved to obsolete, remove references that imply otherwise. @@ -128,7 +128,7 @@ * maintaining.texi (Version Control Systems): Fix a typo. -2014-11-20 Eric S. Raymond +2014-11-20 Eric S. Raymond * maintaining.texi: Document SRC support. @@ -5616,11 +5616,11 @@ * custom.texi (Variables): Add Directory Variables to menu. (Directory Variables): New node. -2008-05-16 Eric S. Raymond +2008-05-16 Eric S. Raymond * vc2-xtra.texi: Modify an example so it reflects what vc.el now does. -2008-05-15 Eric S. Raymond +2008-05-15 Eric S. Raymond * vc2-xtra.texi, emacs.texi, files.texi: Snapshots node renamed to Revision Tags and rewritten. Section now uses modern terminology, @@ -5632,7 +5632,7 @@ * msdog.texi (Windows Files): Update documentation of w32-get-true-file-attributes. -2008-05-09 Eric S. Raymond +2008-05-09 Eric S. Raymond * files.texi, vc-xtra.texi, vc1-xtra.texi: Document the new VC directory mode. @@ -5642,11 +5642,11 @@ * killing.texi (Appending Kills): Remove a strangely off-topic index entry "television". -2008-05-07 Eric S. Raymond +2008-05-07 Eric S. Raymond * ack.texi, files.texi, vc2-xtra.texi: Meta-CVS is no longer supported. -2008-05-02 Eric S. Raymond +2008-05-02 Eric S. Raymond * buffers.texi, files.texi (Version-control): vc-toggle-read-only is no longer a good idea... @@ -5923,7 +5923,7 @@ * mini.texi (Minibuffer History): Add text about a list of minibuffer default values. -2007-10-20 Eric S. Raymond +2007-10-20 Eric S. Raymond * files.texi: Disambiguate two slightly different uses of the term 'filesets'. @@ -5963,7 +5963,7 @@ * calendar.texi (Diary): Clarify text about diary file example. -2007-10-13 Eric S. Raymond +2007-10-13 Eric S. Raymond * files.texi: Capitalize node names according to convention. @@ -5971,13 +5971,13 @@ * misc.texi (Interactive Shell): Correct INSIDE_EMACS reference. -2007-10-11 Eric S. Raymond +2007-10-11 Eric S. Raymond * emacs.texi: * files.texi (Version Systems): Minor fixes to version-control material suggested by RMS and Robert J. Chassell. -2007-10-10 Eric S. Raymond +2007-10-10 Eric S. Raymond * files.texi (Version Systems): * vc-xtra.texi: @@ -5987,7 +5987,7 @@ Revise text for adequate description of VCSes with monotonic IDs. * emacs.texi: Change of terminology from `version' to `revision'. -2007-10-09 Eric S. Raymond +2007-10-09 Eric S. Raymond * files.texi (Version Systems): Describe newer VCses. Reorder the descriptions to be chronological. @@ -6015,7 +6015,7 @@ * basic.texi (Arguments): Replace fill-paragraph with fill-paragraph-or-region. -2007-10-06 Eric S. Raymond +2007-10-06 Eric S. Raymond * files.texi: Update the section on version control for 2007 conditions. None of these changes are new-VC-specific; that @@ -6128,7 +6128,7 @@ * files.texi (Why Version Control?): Improve previous change. -2007-07-18 Eric S. Raymond +2007-07-18 Eric S. Raymond * files.texi (Why Version Control?): New node. @@ -10860,7 +10860,7 @@ * emacs.texi: Add a sentence to the top menu mentioning the specific version of Emacs this manual applies to. -1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-25 Eric S. Raymond (esr@thyrsus.com) * basic.texi: Document next-line-add-lines variable used to implement down-arrow. @@ -10871,17 +10871,17 @@ * text.texi: Update unix TeX ordering information. -1993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-26 Eric S. Raymond (esr@thyrsus.com) * news.texi: Mention fill-rectangle in keybinding list. * killing.texi: Document fill-rectangle. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * vc.texi: Bring the docs up to date with VC 5.2. -1992-01-10 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-01-10 Eric S. Raymond (esr@thyrsus.com) * emacs.tex: Mention blackbox and gomoku under Amusements. Assembler mode is now mentioned and appropriately indexed diff --git a/doc/emacs/ack.texi b/doc/emacs/ack.texi index d61809fa58f..4a8a2a24377 100644 --- a/doc/emacs/ack.texi +++ b/doc/emacs/ack.texi @@ -899,7 +899,7 @@ Acknowledgments @file{robin.el}, another input method. @item -Thomas Neumann and Eric Raymond wrote @file{make-mode.el}, +Thomas Neumann and Eric S. Raymond wrote @file{make-mode.el}, a mode for editing makefiles. @item diff --git a/doc/lispref/ChangeLog.1 b/doc/lispref/ChangeLog.1 index dd6a220398f..c96ba40dbe5 100644 --- a/doc/lispref/ChangeLog.1 +++ b/doc/lispref/ChangeLog.1 @@ -7394,7 +7394,7 @@ * tips.texi (Coding Conventions): Do not encourage the use of "-flag" variable names. -2008-05-03 Eric S. Raymond +2008-05-03 Eric S. Raymond * keymaps.texi: Clarify that (current-local-map) and (current-global-map) return references, not copies. @@ -13889,17 +13889,17 @@ * Makefile (dist): Change to use Gzip instead of compress. -1993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-23 Eric S. Raymond (esr@thyrsus.com) * loading.texi (Unloading): define-function changed back to defalias. It may not stay this way, but at least it's consistent with the known-good version of the code patch. -1993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-26 Eric S. Raymond (esr@thyrsus.com) * modes.texi (Hooks): Document new optional arg of add-hook. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * variables.texi: Document nil initial value of buffer-local variables. diff --git a/doc/misc/gnus.texi b/doc/misc/gnus.texi index 8d25e868c8a..f017b011d71 100644 --- a/doc/misc/gnus.texi +++ b/doc/misc/gnus.texi @@ -25476,7 +25476,7 @@ Bogofilter @defvar spam-use-bogofilter -Set this variable if you want @code{spam-split} to use Eric Raymond's +Set this variable if you want @code{spam-split} to use Eric S. Raymond's speedy Bogofilter. With a minimum of care for associating the @samp{$} mark for spam @@ -25508,7 +25508,7 @@ Bogofilter @defvar spam-use-bogofilter-headers -Set this variable if you want @code{spam-split} to use Eric Raymond's +Set this variable if you want @code{spam-split} to use Eric S. Raymond's speedy Bogofilter, looking only at the message headers. It works similarly to @code{spam-use-bogofilter}, but the @code{X-Bogosity} header must be in the message already. Normally you would do this with a diff --git a/etc/ChangeLog.1 b/etc/ChangeLog.1 index de6abff2881..68c15fc6e69 100644 --- a/etc/ChangeLog.1 +++ b/etc/ChangeLog.1 @@ -2624,7 +2624,7 @@ * images/custom/right.xpm: * images/custom/right-pushed.xpm: New files. -2008-05-07 Eric S. Raymond +2008-05-07 Eric S. Raymond * NEWS: Support for Meta-CVS removed. @@ -3015,7 +3015,7 @@ * NEWS: Mention desktop locking. -2007-10-10 Eric S. Raymond +2007-10-10 Eric S. Raymond * NEWS: Explain the VC fileset changes a bit better. @@ -6019,7 +6019,7 @@ * Rename termcap to termcap.src, the historical name for an uninstalled termcap file. -1995-06-28 Eric S. Raymond +1995-06-28 Eric S. Raymond * termcap.dat, termcap.ucb: Deleted and replaced. @@ -6147,11 +6147,11 @@ * MACHINES: Add section for NeXT, from Thorsten Ohl. -1993-04-28 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-28 Eric S. Raymond (esr@thyrsus.com) * NEWS: Documented picture-mode improvements. -1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-25 Eric S. Raymond (esr@thyrsus.com) * NEWS: Described the new properties of arrow keys and next-line-add-newlines. Fixed up the GUD description, it was @@ -6160,23 +6160,23 @@ * news.texi: invocation-name now exists. -1993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-27 Eric S. Raymond (esr@thyrsus.com) * MORE.STUFF: Added. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * NEWS: Preserved jimb's last change (documenting kill on read-only buffers). Added documentation on new info features. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * spook.lines: Alpha-sorted this, and added some new hot buttons for the 1990s. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * MACHINES: Deleted some VMS caveats. If the src and lisp ChangeLogs are correct, dired and mail and process control are now @@ -6188,13 +6188,13 @@ * NEWS: Changed. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * sex.6: Added 900-line support. * NEWS: Added news about the package finder. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * MACHINES: `Last updated 10 Feb 1992.' was obviously wrong, so I nuked it. Let the file mod date serve. Merged in APOLLO and @@ -6205,7 +6205,7 @@ * Makefile (relock, unlock): New productions. -1993-03-18 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-18 Eric S. Raymond (esr@thyrsus.com) Augean-stable cleaning time. Partly to save space, but mostly to reduce the dizzying amount of *stuff* confronting someone exploring @@ -6245,7 +6245,7 @@ names as per convention. Originals of all files merged still exist with =-names. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * XENIX: Nuked (moved to =XENIX). The hackery it describes is no longer necessary in the presence of 19's function-key-map @@ -6254,7 +6254,7 @@ 1993-03-10 Jim Blandy (jimb@totoro.cs.oberlin.edu) * MACHINES: Update description of SYSVr3 and r4 support, due to - Eric Raymond's changes. + Eric S. Raymond's changes. 1993-03-09 Jim Blandy (jimb@totoro.cs.oberlin.edu) @@ -6272,7 +6272,7 @@ * NEWS: Document included tags tables. -1992-07-22 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-22 Eric S. Raymond (esr@thyrsus.com) * Corrected the news about VC to reflect reality. diff --git a/lib-src/ChangeLog.1 b/lib-src/ChangeLog.1 index 84f566262c4..136e8917d50 100644 --- a/lib-src/ChangeLog.1 +++ b/lib-src/ChangeLog.1 @@ -8281,7 +8281,7 @@ * etags.c (C_entries): Save the definedef status even when a newline is met inside a string. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * Makefile.in (EXECUTABLES): Add rcs-checkin. @@ -8482,7 +8482,7 @@ 1992-08-07 Jim Blandy (jimb@pogo.cs.oberlin.edu) - * timer.c: Installed new version from Eric Raymond; this is more + * timer.c: Installed new version from Eric S. Raymond; this is more portable, since it doesn't try to use SIGIO. 1992-07-17 Jim Blandy (jimb@wookumz.gnu.ai.mit.edu) diff --git a/lisp/ChangeLog.13 b/lisp/ChangeLog.13 index 820110e2fba..49ff87f464c 100644 --- a/lisp/ChangeLog.13 +++ b/lisp/ChangeLog.13 @@ -4251,7 +4251,7 @@ * doc-view.el (doc-view-mode): Support tramp, compressed files and files inside archives uniformly. -2008-01-09 Eric S. Raymond +2008-01-09 Eric S. Raymond * textmodes/sgml-mode.el (sgml-tag-syntax-table): Initialize this constant with a computation on sgml-specials rather than a literal @@ -4656,7 +4656,7 @@ (vc-git-dir-state): Use it instead of processing the status results here. -2008-01-02 Eric S. Raymond +2008-01-02 Eric S. Raymond * progmodes/grep.el (grep-find-ignored-directories): Initialize from the value of vc-directory-exclusion-list. @@ -4718,7 +4718,7 @@ MS-Windows and MS-DOS. (ispell-grep-options): Use "-Ei" on MS-Windows and MS-DOS. -2008-01-02 Eric S. Raymond +2008-01-02 Eric S. Raymond * vc-svn.el (vc-svn-modify-change comment): New function. @@ -4727,7 +4727,7 @@ * vc-git.el (vc-git-dir-state): Set the vc-backend property. Do not disable undo, with-temp-buffer does it by default. -2008-01-01 Eric S. Raymond +2008-01-01 Eric S. Raymond * vc-svn.el (vc-svn-parse-status): Set the `unregistered' property correctly. @@ -4802,7 +4802,7 @@ * vc-hg.el (vc-hg-dir-state): Set the vc-backend property. -2007-12-29 Eric S. Raymond +2007-12-29 Eric S. Raymond * vc-svn.el (vc-svn-parse-status): Recognize 'unregistered, 'added, 'removed. @@ -4943,7 +4943,7 @@ * menu-bar.el (menu-bar-describe-menu): Remove dots from menu text. -2007-12-28 Eric S. Raymond +2007-12-28 Eric S. Raymond * vc-hooks.el, vc.el: Move vc-directory-exclusion-list from vc.el to vc-hooks.el so it will be available to other modes, such as @@ -4997,7 +4997,7 @@ * calc/calccomp.el (math-to-percentsigns): Change placeholder for percent signs. -2007-12-27 Eric S. Raymond +2007-12-27 Eric S. Raymond * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization; use completion-ignored-extensions to detect files that should be @@ -5015,7 +5015,7 @@ (ps-print-preprint-region): Use `ps-mark-active-p' instead of `region-active-p' for error checking. -2007-12-27 Eric S. Raymond +2007-12-27 Eric S. Raymond * vc.el, vc-sccs.el, vc-rcs.el, vc-cvs.el, vc-mcvs.el: Put new machinery in place to support editing of change comments @@ -5029,7 +5029,7 @@ * international/mule-cmds.el (select-safe-coding-system): When a buffer is modified, cancel the writing. -2007-12-26 Eric S. Raymond +2007-12-26 Eric S. Raymond * log-view.el: Add Subversion and Mercurial log format samples. @@ -9147,7 +9147,7 @@ don't try other `or' branches regardless of the value returned by fill-region; just return t. -2007-10-20 Eric S. Raymond +2007-10-20 Eric S. Raymond * vc.el (vc-do-command): Condition out a misleading message when running asynchronously. @@ -9197,7 +9197,7 @@ * vc-hg.el: Require log-view at compile time. -2007-10-20 Eric S. Raymond +2007-10-20 Eric S. Raymond * log-view.el (log-view-diff): Adapt log-view-diff for new VC API. @@ -9812,7 +9812,7 @@ * bs.el (bs--mark-unmark): New function. (bs-mark-current, bs-unmark-current): Use it. -2007-10-11 Eric S. Raymond +2007-10-11 Eric S. Raymond * vc.el (vc-diff): (vc-diff-internal): Merge a patch by Juanma Barranquero. Also, @@ -9830,7 +9830,7 @@ Use `follow-call-process-filter' rather than `process-filter'. Simplify. -2007-10-11 Eric S. Raymond +2007-10-11 Eric S. Raymond * vc-hooks.el (vc-registered): Robustify this function a bit against filenames with no directory component. @@ -9919,7 +9919,7 @@ * help-fns.el (describe-variable): Add missing " " for multiline obsolescence info and missing EOL after global value. -2007-10-10 Eric S. Raymond +2007-10-10 Eric S. Raymond * add-log.el: * ediff-vers.el: @@ -9950,7 +9950,7 @@ mode" in docstrings and messages. (follow-menu-filter): Fix arg passed to `bound-and-true-p'. -2007-10-10 Eric S. Raymond +2007-10-10 Eric S. Raymond * vc.el (vc-next-action): Rewrite completely; this principal entry point now operates on a current fileset selected either @@ -10329,7 +10329,7 @@ (smerge-refine-subst): New function holding most of smerge-refine. (smerge-refine): Use it. -2007-10-08 Eric S. Raymond +2007-10-08 Eric S. Raymond * vc.el (vc-default-wash-log): Remove unused code, the log washers all live in the backends now. @@ -10390,7 +10390,7 @@ * net/tramp-fish.el (tramp-fish-handle-process-file): Rewrite temporary file handling. -2007-10-06 Eric S. Raymond +2007-10-06 Eric S. Raymond * vc.el: Workfile version -> focus version change. Port various comments from new VC to reduce the noise in the diff. @@ -12758,7 +12758,7 @@ 2007-08-20 Thien-Thi Nguyen * vc-rcs.el (vc-rcs-annotate-command): - Fix bug introduced 2007-07-18T16:32:40Z!esr@snark.thyrsus.com: + Fix bug introduced 2007-07-18T16:32:40Z!esr@thyrsus.com: Add back :vc-annotate-prefix propertization. 2007-08-20 Andreas Schwab @@ -14226,7 +14226,7 @@ * vc-hooks.el (vc-find-root): Walk up the tree to find an existing `file' from which to start the search. -2007-07-19 Eric S. Raymond +2007-07-19 Eric S. Raymond * vc-cvs.el (vc-cvs-checkin, vc-cvs-diff): Finish transition from having a single file argument to having a list of files as the @@ -14245,7 +14245,7 @@ * uniquify.el: Docstring fixes. -2007-07-18 Eric S. Raymond +2007-07-18 Eric S. Raymond * vc.el (revision-granularity, create-repo): Document new vc backend properties. diff --git a/lisp/ChangeLog.14 b/lisp/ChangeLog.14 index 09bc4f6c4eb..129621791c0 100644 --- a/lisp/ChangeLog.14 +++ b/lisp/ChangeLog.14 @@ -12125,7 +12125,7 @@ * vc-dispatcher.el (top-level): Revert previous change: require cl when compiling. -2008-05-16 Eric S. Raymond +2008-05-16 Eric S. Raymond * vc.el (vc-default-status-printer) (vc-default-prettify-state-info): Enhance the state prettyprinter @@ -12143,7 +12143,7 @@ * net/tramp.el (tramp-handle-write-region): Fix check for short track. Reported by Glenn Morris . -2008-05-16 Eric S. Raymond +2008-05-16 Eric S. Raymond * vc.el: Remove my analysis of SCCS/RCS concurrency issues from the end of the file, it was good work at one time but has been @@ -12179,7 +12179,7 @@ (ses-mode): Set indent-tabs-mode to nil. (ses-center): Use string-width rather than length. -2008-05-15 Eric S. Raymond +2008-05-15 Eric S. Raymond * vc-cvs.el, vc-git.el, vc-hg.el, vc-hooks.el, vc-mcvs.el, * vc-rcs.el, vc-sccs.el, vc-svn.el, vc.el: @@ -12204,7 +12204,7 @@ * progmodes/cc-mode.el (declare-function): Add compat definition. (awk-mode-syntax-table, c-awk-unstick-NL-prop): Declare for compiler. -2008-05-14 Eric S. Raymond +2008-05-14 Eric S. Raymond * vc-dispatcher.el (vc-dispatcher-selection): Change the returned list to a cons so the caller can get back both expanded and @@ -12251,7 +12251,7 @@ (tramp-echo-mark-marker): New defconst. (tramp-check-for-regexp): Use it. -2008-05-14 Eric S. Raymond +2008-05-14 Eric S. Raymond * vc.el (vc-deduce-fileset): Do the right thing when visiting a buffer (say, a log buffer or diff buffer) with a vc-dir buffer @@ -12343,7 +12343,7 @@ (dired-toggle-marks, dired-change-marks, dired-unmark-all-files): buffer-read-only -> inhibit-read-only. -2008-05-12 Eric S. Raymond +2008-05-12 Eric S. Raymond * vc.el (vc-expand-dirs): Stop this function from tossing out explicitly specified files. @@ -12395,7 +12395,7 @@ * emulation/cua-base.el: Put isearch-scroll property on cua-scroll-up and cua-scroll-down. -2008-05-11 Eric S. Raymond +2008-05-11 Eric S. Raymond * vc-hooks.el (vc-recompute-state): Remove (dead code). @@ -12416,7 +12416,7 @@ * smerge-mode.el (smerge-command-prefix): Fix custom type. -2008-05-10 Eric S. Raymond +2008-05-10 Eric S. Raymond * vc-dispatcher.el (vc-dir-next-directory, vc-dir-prev-directory): New functions implementing motion to next and previous directory. @@ -12449,7 +12449,7 @@ * vc-hooks.el (vc-prefix-map): Remove duplicate binding. -2008-05-09 Eric S. Raymond +2008-05-09 Eric S. Raymond * vc.el (vc-dir): * vc-hooks.el: Tweak the VC directory bindings. These are now @@ -12466,7 +12466,7 @@ * simple.el (start-file-process): Clarify docstring. -2008-05-09 Eric S. Raymond +2008-05-09 Eric S. Raymond * vc-sccs.el, vc-svn.el, vc-git.el, vc-hg.el, vc-mtn.el: Remove stub implementations of, and references to, wash-log. @@ -12515,7 +12515,7 @@ * vc.el (vc-version-diff, vc-print-log, vc-revert, vc-rollback) (vc-update): Remove unused let bindings. -2008-05-09 Eric S. Raymond +2008-05-09 Eric S. Raymond * vc.el (vc-deduce-fileset, vc-next-action, vc-version-diff) (vc-diff, vc-revert, vc-rollback, vc-update): @@ -12609,7 +12609,7 @@ (robin-current-package-name): Doc fix. (robin-activate): Don't use `iff' in docstring. -2008-05-07 Eric S. Raymond +2008-05-07 Eric S. Raymond * vc.el, vc-dispatcher.el: VC-Dired support removed. The code uses a ewoc-based implementation now. @@ -12639,7 +12639,7 @@ * progmodes/fortran.el (fortran-mode): Fix font-lock-syntactic-keywords oddness. -2008-05-06 Eric S. Raymond +2008-05-06 Eric S. Raymond * vc-hooks.el (vc-find-file-hook): * vc-dispatcher.el (vc-resynch-window): Decouple vc-dispatcher @@ -12692,7 +12692,7 @@ * dired.el (dired-read-dir-and-switches): Fix up last change. -2008-05-05 Eric S. Raymond +2008-05-05 Eric S. Raymond * vc.el (vc-deduce-fileset): Lift all the policy and UI stuff out of this function, move it to vc-dispatcher-selection-set. @@ -12770,7 +12770,7 @@ * ls-lisp.el (ls-lisp-insert-directory): Use `string-width' instead of `length' for comparing length of user and group names. -2008-05-03 Eric S. Raymond +2008-05-03 Eric S. Raymond * vc-dispatcher.el: New file, separates out the UI and command execution machinery from VCS-specific logic left in vc.el. @@ -12789,7 +12789,7 @@ * progmodes/grep.el (grep-mode-map): Bind "g" to recompile (like in dired &c). -2008-05-02 Eric S. Raymond +2008-05-02 Eric S. Raymond * vc-arch.el, vc-bzr.el, vc-cvs.el, vc-git.el, vc-hg.el, * vc-hooks.el, vc-mcvs.el, vc-mtn.el, vc-rcs.el, vc-sccs.el, @@ -12846,7 +12846,7 @@ function that is no longer there. (hilit-chg-set): Remove running of highlight-changes-enable-hook. -2008-05-02 Eric S. Raymond +2008-05-02 Eric S. Raymond * vc.el (vc-default-dired-state-info): Change name of primitive to prettify-state-info, in preparation for ripping out dired mode. @@ -12879,7 +12879,7 @@ * progmodes/compile.el (compilation-auto-jump): Set window point to `pos' explicitly. -2008-05-01 Eric S. Raymond +2008-05-01 Eric S. Raymond * vc-bzr.el (vc-bzr-state): Allow this to return 'ignored when appropriate. diff --git a/lisp/ChangeLog.15 b/lisp/ChangeLog.15 index af3203444ae..6bd61211d47 100644 --- a/lisp/ChangeLog.15 +++ b/lisp/ChangeLog.15 @@ -11888,7 +11888,7 @@ (log-edit-mode, log-edit-extra-flags, log-edit-mode): New declarations. -2010-04-09 Eric Raymond +2010-04-09 Eric S. Raymond * vc-hooks.el, vc-git.el: Improve documentation comments. diff --git a/lisp/ChangeLog.17 b/lisp/ChangeLog.17 index 5036eabf0fd..3377da7c54d 100644 --- a/lisp/ChangeLog.17 +++ b/lisp/ChangeLog.17 @@ -4218,7 +4218,7 @@ (package-activate-1): Reload files given by `package--list-loaded-files'. Fix bug#10125, bug#18443, and bug#18448. -2014-12-13 Eric S. Raymond +2014-12-13 Eric S. Raymond * vc/vc-svn.el (vc-svn-diff): Fix bug #19312. @@ -4253,7 +4253,7 @@ * files.el (directory-files-recursively): Don't follow symlinks to other directories. -2014-12-12 Eric S. Raymond +2014-12-12 Eric S. Raymond * vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el: * vc/vc.el: latest-on-branch-p is no longer a public method. @@ -4276,7 +4276,7 @@ * emacs-lisp/let-alist.el: Add new package and macro. -2014-12-10 Eric S. Raymond +2014-12-10 Eric S. Raymond * vc/vc-dispatcher.el, vc/vc-hooks.el, vc/vc-rcs.el: * vc/vc-sccs.el, vc/vc.el: Righteous featurectomy of vc-keep-workfiles, @@ -4308,7 +4308,7 @@ (ruby-toggle-string-quotes): New command that allows you to quickly toggle between single-quoted and double-quoted string literals. -2014-12-09 Eric S. Raymond +2014-12-09 Eric S. Raymond * vc/vc-src.el (vc-src-do-comand): Prepend -- to file argument list, avoids problems witt names containing hyphens. @@ -4429,7 +4429,7 @@ * vc/vc-hg.el (vc-hg-dir-status-files): Only include ignores files when FILES is non-nil (bug#19304). -2014-12-08 Eric S. Raymond +2014-12-08 Eric S. Raymond * vc/vc-arch.el: Move to obsolete directory so a test framework won't trip over bit-rot in it. There has been no Arch snapshot @@ -4593,7 +4593,7 @@ more extensions when generating includes (programs) (bug#19254). -2014-12-03 Eric S. Raymond +2014-12-03 Eric S. Raymond * files.el (file-tree-walk): Fix docstring. @@ -4636,7 +4636,7 @@ * whitespace.el (whitespace-big-indent-regexp): Add :version. -2014-12-02 Eric S. Raymond +2014-12-02 Eric S. Raymond * subr.el (filter): New macro. Because it's just silly for a Lisp not to have this in 2014. And VC needs it. @@ -4659,7 +4659,7 @@ is no longer a public method. It is now local to the one place it's used, in the RCS steal-lock method. -2014-12-01 Eric S. Raymond +2014-12-01 Eric S. Raymond * vc/vc.el: In all backends: API simplification; could-register is no longer a public method. (vc-cvs.el still has a private @@ -4772,7 +4772,7 @@ * net/eww.el (eww): Leave point in a place that doesn't cause scrolling when displaying "Loading...". -2014-12-01 Eric S. Raymond +2014-12-01 Eric S. Raymond * vc/vc.el, vc/vc-cvs.el, vc/vc-rcs.el, vc/vc-svn.el: The 'merge' backend method of RCS/CVS/SVN is now 'merge-file', to contrast with @@ -4791,7 +4791,7 @@ * emacs-lisp/inline.el: New file. -2014-12-01 Eric S. Raymond +2014-12-01 Eric S. Raymond * vc/vc.el, vc-hooks.el: All backends: API simplification; vc-state-heuristic is no longer a public method, having been @@ -5226,7 +5226,7 @@ * vc/vc.el: Fix a typo in the commentary. -2014-11-20 Eric S. Raymond +2014-11-20 Eric S. Raymond * vc/vc-src.el, vc/vc.el: Added support for SRC. Needs more testing and a real log-view mode. diff --git a/lisp/ChangeLog.3 b/lisp/ChangeLog.3 index 5c4d1e7a82a..29585129a8a 100644 --- a/lisp/ChangeLog.3 +++ b/lisp/ChangeLog.3 @@ -990,7 +990,7 @@ (compilation-minor-mode): New function to toggle compilation-minor-mode; if setting it, call compilation-setup. -1993-04-28 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-28 Eric S. Raymond (esr@thyrsus.com) * bibtex.el: Installed Aaron Larson's new bibtex.el. See the header comment for details. @@ -1004,7 +1004,7 @@ * files.el (file-truename): Undo last change. -1993-04-27 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-27 Eric S. Raymond (esr@thyrsus.com) * files.el (file-truename): Do the right thing when $HOME = "". @@ -1058,7 +1058,7 @@ (find-tag-noselect): If NEXT-P is '-, pop location off tags-location-stack. -1993-04-26 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-26 Eric S. Raymond (esr@thyrsus.com) * cmacexp.el: Installed Francesco Potortì's enhanced and cleaned-up version, see its commentary for details. @@ -1070,13 +1070,13 @@ Defvars added for many variables. (te-stty-string): Specify the characters explicitly--not `stty dec'. -1993-04-26 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-26 Eric S. Raymond (esr@thyrsus.com) * files.el (cd): Handle leading "~" like an absolute filename. * dired.el: Changed fsets to defaliases. -1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-25 Eric S. Raymond (esr@thyrsus.com) * comint.el (comint-mod): Nuked. A call to ring-mod replaces it. (comint-mem): Nuked. A call to member replaces it. @@ -1099,7 +1099,7 @@ (vc-finish-logentry, vc-next-comment, vc-previous-comment): Replace *VC-comment-buffer* with a ring vector. -1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-25 Eric S. Raymond (esr@thyrsus.com) * simple.el (down-arrow): New function. Uses next-line-add-newlines to suppress addition of new lines at end of @@ -1138,11 +1138,11 @@ * shell.el (shell-prompt-pattern): Add `;' as potential prompt delimiter (for `es' and `rc' shells most particularly). -1993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-23 Eric S. Raymond (esr@thyrsus.com) * isearch.el: Replaced all fsets with defaliases. -1993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-23 Eric S. Raymond (esr@thyrsus.com) * bytecomp.el (define-function): Change name back to defaliases to get things in a known-good state. The unload patch had been @@ -1190,7 +1190,7 @@ * ange-ftp.el (ange-ftp-binary-file-name-regexp): Match .z and .z-part-?? files. -1993-04-21 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-21 Eric S. Raymond (esr@thyrsus.com) * makefile.el: Rewritten and simplified, commentary added. It now will usually detect when the makefile target or macro lists need @@ -1223,7 +1223,7 @@ * sendmail.el (mail-do-fcc): Make a numeric time zone indicator with current-time-zone--don't run `date'. -1993-04-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-16 Eric S. Raymond (esr@thyrsus.com) * bytecomp.el (byte-compile, byte-compile-keep-pending) (byte-compile-file-form-defmumble): Generate define-function @@ -1237,7 +1237,7 @@ * diff.el (diff-parse-differences): Small robustification --- don't lose if we call this with compilation-parsing-end nil -1993-04-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-16 Eric S. Raymond (esr@thyrsus.com) * electric.el (shrink-window-if-larger-than-buffer): Move to window.el. @@ -1286,14 +1286,14 @@ * isearch.el: Doc fixes. -1993-04-14 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-14 Eric S. Raymond (esr@thyrsus.com) * gud.el (gud-mode): Created C-c synonym bindings in the GUD buffer's local map. (gud-key-prefix): Change to C-x C-a. -1993-04-14 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-14 Eric S. Raymond (esr@thyrsus.com) * help-macro.el: Name changed from help-screen.el to fit in a 14-character limit. @@ -1301,7 +1301,7 @@ * sun-curs.el: Name changed from sun-cursors.el to protect the innocents. -1993-04-14 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-14 Eric S. Raymond (esr@thyrsus.com) * finder.el: Rewritten. The Finder is now a major mode with the ability to browse package commentary sections and a completely @@ -1352,7 +1352,7 @@ * rot13.el (rot13-other-window): Add autoload. (rot13-display-table): Use `vector', not `make-rope'. -1993-04-10 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-10 Eric S. Raymond (esr@thyrsus.com) * gud.el (gdb, sdb, dbx): Improve prompting a la grep. @@ -1369,7 +1369,7 @@ empty string in response to the keyword prompt, restore the old window configuration properly. -1993-04-09 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-04-09 Eric S. Raymond (esr@thyrsus.com) * emerge.el (emerge-with-ancestor): Applied Donald Erway's fix patch, which included the following explanatory comment: "D.Erway @@ -1394,7 +1394,7 @@ * autoload.el (generate-file-autoloads): Doc fix. -1993-04-08 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-04-08 Eric S. Raymond (esr@thyrsus.com) * gud.el: Massive changes, amounting nearly to a rewrite. The new features include auto-configuring support for SVr4, more commands, @@ -1508,7 +1508,7 @@ Change MIPS RISC CC regexp (last one) to be anchored at bol, and to never match multiple lines. -1993-04-03 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-04-03 Eric S. Raymond (esr@thyrsus.com) * man.el, assoc.el: Installed Barry Warsaw's new and much more featureful man page browser. @@ -1520,7 +1520,7 @@ * comint.el: New comint-read-noecho. -1993-04-02 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-04-02 Eric S. Raymond (esr@thyrsus.com) * chistory.el (repeat-history-command): Bug fix. Someone forgot a car. @@ -1595,7 +1595,7 @@ editing ability and be able to abort when called from a process filter. Re-arranged and updated docstring. -1993-03-30 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-30 Eric S. Raymond (esr@thyrsus.com) * ring.el: Changed summary line. @@ -1611,7 +1611,7 @@ * buff-menu.el: Put back removed years in copyright notice. -1993-03-29 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-29 Eric S. Raymond (esr@thyrsus.com) * vc.el (vc-next-action, vc-print-log, vc-diff, vc-revert-buffer): Improve logic for parent buffer finding. @@ -1652,7 +1652,7 @@ rlogin-password-paranoia is set. (rlogin-with-args, rlogin-password): New functions. -1993-03-28 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-28 Eric S. Raymond (esr@thyrsus.com) * vc.el (vc-comment-to-changelog): A useful vc-checkin hook, added. (vc-checkout): Now rejects attempts to check out files via FTP. @@ -1674,7 +1674,7 @@ * ebuff-menu.el (electric-buffer-menu-mode-map): fillarray isn't a valid operation on maps any more. -1993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-27 Eric S. Raymond (esr@thyrsus.com) * refer.el: Installed. @@ -1682,7 +1682,7 @@ * lucid.el (try-face-font, find-face, get-face): New aliases. -1993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-27 Eric S. Raymond (esr@thyrsus.com) * abbrevlist.el, old-inf-lisp.el, old-screen.el, old-shell.el, * oshell.el: Removed. @@ -1702,13 +1702,13 @@ (set-case-syntax-delims, set-case-syntax-pair, set-case-syntax): Rename arg STRING to TABLE. Do not set the standard case table. -1993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-26 Eric S. Raymond (esr@thyrsus.com) * loaddefs.el: Commented out function-key-error definition and uses in the global keymaps. RMS and jimb objected to the amount of space these took up in the keybinding listings. -1993-03-27 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-27 Eric S. Raymond (esr@thyrsus.com) * lpr.el (printify-buffer): Add, debugged from Roland McGrath's printify-buffer code in LCD. @@ -1739,7 +1739,7 @@ (set-visited-file-name): Kill local-write-file-hooks as local var. (basic-save-buffer): Use local-write-file-hooks. -1993-03-26 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-26 Eric S. Raymond (esr@thyrsus.com) * yow.el (psychoanalyze-pinhead): Needed a prefrontal lobotomy. I gave it one. @@ -1752,7 +1752,7 @@ * uncompress.el: Add provide call. -1993-03-25 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-25 Eric S. Raymond (esr@thyrsus.com) * lisp-mnt.el (lm-last-modified-date): Fix return bug. @@ -1784,7 +1784,7 @@ * term/x-win.el: Bind M-next to an alias scroll-other-window-1 to get better doc string output. -1993-03-23 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-23 Eric S. Raymond (esr@thyrsus.com) * compile.el: Fix library headers. @@ -1793,7 +1793,7 @@ * files.el (insert-directory): Do chase symlinks before passing the directory name to ls. -1993-03-23 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-23 Eric S. Raymond (esr@thyrsus.com) * buff-menu.el: Incorporated changes from Bob Weiner's enhanced buff-menu from the LCD archive. @@ -1802,7 +1802,7 @@ * replace.el (query-replace-map): Define backspace like delete. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * cookie.el: Created. This file contains what was formerly the guts of spook.el, lightly hacked to support more than one @@ -1822,7 +1822,7 @@ * term/x-win.el (x-win-suspend-error): suspend-hook renamed from suspend-hooks. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * help.el, register.el, replace.el, reposition.el, rfc822.el, * rlogin.el, rot13.el, scribe.el, scroll-bar.el, sendmail.el, @@ -1835,14 +1835,14 @@ * diary-insert.el: Change the name to diary-ins.el. * calendar.el: Change all autoload references to diary-ins. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * man.el, mlconvert.el, mlsupport.el, modula2.el, mouse.el, * mpuz.el, netunam.el, novice.el, nroff-mode.el, options.el, * outline.el, page.el, paragraphs.el, picture.el, prolog.el, * rect.el: Add or correct Commentary sections. -1993-03-22 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-22 Eric S. Raymond (esr@thyrsus.com) * abbrev.el, ada.el, add-log.el, array.el, autoinsert.el, * autoload.el, awk-mode.el, bib-mode.el, bibtex.el, buff-menu.el, @@ -1889,19 +1889,19 @@ * lucid.el: Alias lower-screen and raise-screen to lower-frame and raise-frame, the new names for those functions. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * bush.el: Deleted. * finder.el: Make sure that when new keywords are compiled, we see them immediately. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * vt100-led.el, bg-mouse.el, sup-mouse.el, sun-mouse.el: Moved to term directory. -1993-03-18 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-18 Eric S. Raymond (esr@thyrsus.com) * Makefile: Created. This exists mainly so developers elsewhere can unlock the lisp files to accept an update tar, then relock @@ -1916,7 +1916,7 @@ * solar.el (solar-time-string): Round the time properly. -1993-03-18 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-18 Eric S. Raymond (esr@thyrsus.com) * abbrev.el, abbrevlist.el, add-log.el, apropos.el, array.el, * autoload.el, awk-mode.el, cal-french.el, cal-mayan.el, @@ -1938,7 +1938,7 @@ * tex-mode.el (tex-send-command): Fix the command sent so that no blank is inserted when replacing the asterisk with the file name. -1993-03-18 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-18 Eric S. Raymond (esr@thyrsus.com) * term/wyse50.el (function-key-map): Nuke code no longer bound to keys. @@ -1949,7 +1949,7 @@ Fix things so that bindings are added to the keymap already created by terminal initialization. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * help-screen.el: Installed, following release. Now package writers can easily implement help screens resembling Emacs's @@ -1961,7 +1961,7 @@ * finder-inf.el: Deleted the RCS file. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * isearch.el, lselect.el, select.el, scroll-bar.el, texinfo.el, * pending-del.el, profile.el, texinfmt.el, ls-lisp.el, meese.el, @@ -1974,14 +1974,14 @@ * case-table.el, byte-run.el, ange-ftp.el, backquote.el: Add or correct library header comments. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * finder.el (finder-compile-keywords): Treat nil in a path argument as $PWD. (finder-by-keyword): Handle LFD as input gracefully. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * vc-hooks.el: Increment version number to match vc.el's. @@ -2017,7 +2017,7 @@ * loaddefs.el (minor-mode-alist): Make the mode line element for overwrite-mode be the symbol `overwrite-mode'. -1993-03-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-16 Eric S. Raymond (esr@thyrsus.com) * vc.el, vc-hooks.el: The macro vc-error-occurred has to move from vc.el to vc-hooks.el for C-x C-f of a nonexistent file to work. @@ -2074,11 +2074,11 @@ (rmail-summary-rmail-update): Do nothing if rmail buffer not visible. (rmail-summary-mode-map): Don't bind C-n, C-p. Use ordinary move cmds. -1993-03-12 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-12 Eric S. Raymond (esr@thyrsus.com) * term/x-win.el: Added library headers. -1993-03-12 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-12 Eric S. Raymond (esr@thyrsus.com) * loaddefs.el (global-map): Fix a typo in the binding of [kp-backtab]. @@ -2092,7 +2092,7 @@ * term/x-win.el: Cancel previous change, since it discarded earlier necessary changes. -1993-03-11 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-11 Eric S. Raymond (esr@thyrsus.com) * term/vt100.el: Added headers, commented out code the duplicates startup effects. @@ -2115,7 +2115,7 @@ suspend-hooks, not suspend-hook. The latter is an obsolete name. Use add-hook instead of setting suspend-hooks directly. -1993-03-11 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-11 Eric S. Raymond (esr@thyrsus.com) A boatload of changes to terminal support and terminal capability initialization that make it a lot smarter, with a more uniform @@ -2197,7 +2197,7 @@ Likewise their Meta versions. Also add `ascii-character' properties. -1993-03-09 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-09 Eric S. Raymond (esr@thyrsus.com) * term/at386.el: Removed. The new terminal initialization stuff makes it superfluous. I wrote it, so I should know. :-) @@ -3300,7 +3300,7 @@ (ange-ftp-read-passwd, ange-ftp-process-filter): Uncomment out the calls to ange-ftp-repaint-buffer. -1992-11-11 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-11-11 Eric S. Raymond (esr@thyrsus.com) * c-mode.el (c-style-alist): Add quotes around C++ style name. @@ -4680,7 +4680,7 @@ * compile.el (compilation-parse-errors): Write progress messages on all regexp matches, not just errors. -1992-08-04 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-08-04 Eric S. Raymond (esr@thyrsus.com) * view.el (view-mode): Teach this how to use help-char. @@ -4727,7 +4727,7 @@ * etags.el (complete-tag): Error if no tags table loaded. -1992-08-03 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-08-03 Eric S. Raymond (esr@thyrsus.com) * ebuff-menu.el, echistory.el, help.el, hexl.el: Teach these packages to use help-char, and add the appropriate magic to doc strings. @@ -5085,7 +5085,7 @@ * diff.el (diff-rcs, diff-sccs): Delete. -1992-07-27 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-27 Eric S. Raymond (esr@thyrsus.com) * tar-mode.el (tar-subfile-save-buffer): Whoever changed current-time forgot to check for breakage. Added code to print @@ -5201,7 +5201,7 @@ * c++-mode.el (indent-c++-exp): Fix typo "innerloop-done". Make last-depth local. -1992-07-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-23 Eric S. Raymond (esr@thyrsus.com) * flow-ctrl.el: Fixed set-input-mode call broken by new third arg for meta control. @@ -5266,11 +5266,11 @@ * byte-opt.el (disassemble-offset, byte-decompile-bytecode-1): Support for relative jumps removed. -1992-07-22 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-22 Eric S. Raymond (esr@thyrsus.com) * Removed all Last-Modified headers. -1992-07-21 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-21 Eric S. Raymond (esr@thyrsus.com) * files.el (trim-versions-without-asking): Non-nil, non-t value suppresses all trimming of excess backups. This is so we can make @@ -5335,7 +5335,7 @@ Modified the remaining version by adding new argument GLOBAL and setting the parameters locally if GLOBAL is nil. -1992-07-21 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-21 Eric S. Raymond (esr@thyrsus.com) * Turfed r2bibtex.el. Refbib.el turns out to be a newer version of the same package. @@ -5484,7 +5484,7 @@ (find-file-noselect): Don't remove the automount prefix here; let abbreviate-file-name take care of it. -1992-07-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-17 Eric S. Raymond (esr@thyrsus.com) * Keywords added for [n-z]*.el. Finder now under construction. @@ -5495,7 +5495,7 @@ ending with the latter may be deleted accidentally when space is low. -1992-07-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-17 Eric S. Raymond (esr@thyrsus.com) * Keywords added for [a-m]*.el. The keyword categories will probably need some tuning, but at least this will suffice @@ -5508,7 +5508,7 @@ * Changed all copying notices to GPL version 2. -1992-07-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-16 Eric S. Raymond (esr@thyrsus.com) * Finished decorating the library files with new standard headers. @@ -5537,14 +5537,14 @@ * byte-run.el (defsubst): Remove extra closing paren at the end of this function. -1992-07-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-16 Eric S. Raymond (esr@thyrsus.com) * At RMS's request, all occurrences of `elisp' changed to `Emacs Lisp'. * New library headers for [fghijklmn]*.el. First steps towards keyword-based code finder via Keywords header. -1992-07-15 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-15 Eric S. Raymond (esr@thyrsus.com) * New library headers for [opqrst]*.el. Ghod, this is boring. @@ -5594,7 +5594,7 @@ (set-frame-height, set-frame-width): Functions deleted; they are defined in frame.c. -1992-07-14 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-14 Eric S. Raymond (esr@thyrsus.com) * [uvwxy]*.el: Added headers for new Emacs Lisp documentation conventions. @@ -5604,7 +5604,7 @@ * calendar.el (calendar-mode): Change key bindings for all functions to make them consistent with Version 19 requirements. -1992-07-13 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-13 Eric S. Raymond (esr@thyrsus.com) * comint.el: Minor changes to comments to reflect the fact that comint has won its war and replaced shell mode. @@ -5750,7 +5750,7 @@ * etags.el (visit-tags-table): Remove automounter prefixes before setting tags-file-name. -1992-07-06 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-07-06 Eric S. Raymond (esr@thyrsus.com) * Moved gdb.el to =gdb.el. The autoload generation for loaddefs.el was getting screwed up by the conflicting autoloads @@ -6157,7 +6157,7 @@ * info.el (Info-enable-edit): Now a user option. -1992-06-03 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-06-03 Eric S. Raymond (esr@thyrsus.com) * sendmail.el (mail-signature): Suppress move to end of buffer if we gave a prefix argument (requested by Bob Chassell). @@ -6250,7 +6250,7 @@ * flow-ctrl.el (evade-flow-control-memstr=): Rename from memstr=. -1992-05-31 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-05-31 Eric S. Raymond (esr@thyrsus.com) * bibtex.el: Merged in alarson's changes. @@ -6261,7 +6261,7 @@ * subr.el (lambda): Add docstring. -1992-05-31 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-05-31 Eric S. Raymond (esr@thyrsus.com) * gdb.el: Nuked --- subsumed by gdb entry point of gud.el. @@ -6275,7 +6275,7 @@ old version still exists in the ~n~ files if this loses, but the code looks good. -1992-05-30 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-05-30 Eric S. Raymond (esr@thyrsus.com) * profile.el: Installed. @@ -6715,7 +6715,7 @@ * term/new-at386.el: Rewritten to use function-key-map. -1992-01-10 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1992-01-10 Eric S. Raymond (esr@thyrsus.com) * flow-ctrl.el: Installed. @@ -6751,14 +6751,14 @@ (sendmail-send-it): Delete code for mail-aliases. (build-mail-aliases, expand-mail-aliases): Autoloads deleted. -1991-12-14 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1991-12-14 Eric S. Raymond (esr@thyrsus.com) * etags.el (find-tag-noselect): Fix subtle bug due to save-excursion. (tags-tag-match): New function, made smarter about exact matches. -1991-12-13 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1991-12-13 Eric S. Raymond (esr@thyrsus.com) * perl-mode.el: Installed. @@ -6767,7 +6767,7 @@ * sendmail.el (mail-default-headers): New user variable. (mail-setup): Insert value of that variable. -1991-12-11 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1991-12-11 Eric S. Raymond (esr@thyrsus.com) * c-mode.el: Added C++ style to c-style-alist. @@ -6777,7 +6777,7 @@ * man.el (nuke-nroff-bs): Simplify o^H+. Delete "reformatting" msg. -1991-12-08 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1991-12-08 Eric S. Raymond (esr@thyrsus.com) * blackbox.el: Applied doc patch. No functions affected. @@ -12032,7 +12032,7 @@ 1988-12-22 Richard Stallman (rms@mole.ai.mit.edu) - * term/at386.el: Eric Raymond's changes to work with keypad.el. + * term/at386.el: Eric S. Raymond's changes to work with keypad.el. * loaddefs.el (completion-ignored-extensions): Add .a and .ln. diff --git a/lisp/ChangeLog.4 b/lisp/ChangeLog.4 index ecadb4a30d5..f0dd1295dd7 100644 --- a/lisp/ChangeLog.4 +++ b/lisp/ChangeLog.4 @@ -3384,7 +3384,7 @@ * font-lock.el (shell-font-lock-keywords): Doc fix. -1994-02-02 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1994-02-02 Eric S. Raymond (esr@thyrsus.com) * vc-hooks.el (vc-mode-line): Use force-mode-line-update instead of the Emacs 18 kluge. @@ -3402,7 +3402,7 @@ * files.el (file-relative-name): Allow for ancestors as well as descendants. -1994-02-02 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1994-02-02 Eric S. Raymond (esr@thyrsus.com) * vc.el (vc-parse-buffer): Arrange for old properties to get cleared when their match string is not found in the master file. @@ -4811,7 +4811,7 @@ (add-new-page): Insert new page in specified location. (original-page-delimiter): Set default value to "^^L". -1993-11-15 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-11-15 Eric S. Raymond (esr@thyrsus.com) * vc.el: vc-static-header-alist shouldn't have been declared const. @@ -5535,7 +5535,7 @@ * rmail.el (rmail-convert-to-babyl-format): Protect against nonsensical content-length values. -1993-10-04 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-10-04 Eric S. Raymond (esr@thyrsus.com) * vc.el (vc-next-action): Fix (throw ... ) invocation to work with 19; allows vc-next-action on all marked files in a dired buffer to work. diff --git a/lisp/ChangeLog.5 b/lisp/ChangeLog.5 index 63cf5db94c4..96bda7650e2 100644 --- a/lisp/ChangeLog.5 +++ b/lisp/ChangeLog.5 @@ -4253,7 +4253,7 @@ the autogenerated label in the minibuffer caused the killed text to appear in front of the bibtex entry. -1995-01-05 Eric S. Raymond +1995-01-05 Eric S. Raymond * vc.el (vc-do-command): Change RCS handling so rcsdiff won't strip away relative-pathname information. This function no longer sets the diff --git a/lisp/ChangeLog.6 b/lisp/ChangeLog.6 index 4e7366c80a8..0fc8ffcf591 100644 --- a/lisp/ChangeLog.6 +++ b/lisp/ChangeLog.6 @@ -7910,7 +7910,7 @@ * paths.el (remote-shell-program): Fix typo checking /usr/bin/remsh. -1995-06-26 Eric S. Raymond +1995-06-26 Eric S. Raymond * vc.el (vc-start-entry): Prevent lossage when doing a mass checkin from a VC-dired buffer. diff --git a/lisp/ChangeLog.7 b/lisp/ChangeLog.7 index 667cd5e850a..17464042b76 100644 --- a/lisp/ChangeLog.7 +++ b/lisp/ChangeLog.7 @@ -3825,7 +3825,7 @@ * progmodes/perl-mode.el (perl-mode): Add autoload cookie. -1998-04-29 Eric S. Raymond +1998-04-29 Eric S. Raymond Many small changes that mostly eliminate the explicit mail separator variable and use the new rfc822-goto-eoh primitive instead: @@ -13054,7 +13054,7 @@ * mail/sendmail.el (mail-mode): Make adaptive-fill-regexp match more values. Bind adaptive-fill-first-line-regexp too. -1997-07-26 Eric S. Raymond +1997-07-26 Eric S. Raymond * telnet.el (telnet): Handle multiple telnet programs better. (telnet-host-properties): New variable. diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index 51d9f928ef5..cb7cff43555 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1992-2023 Free Software Foundation, Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org ;; Created: 14 Jul 1992 ;; Keywords: docs @@ -67,7 +67,7 @@ ;; ;; Noah Friedman ;; ;; Joe Wells ;; ;; Dave Brennan -;; ;; Eric Raymond +;; ;; Eric S. Raymond ;; ;; * Maintainer line --- should be a single name/address as in the Author ;; line, or an address only. If there is no maintainer diff --git a/lisp/finder.el b/lisp/finder.el index 5aec0149b89..f5bf2641537 100644 --- a/lisp/finder.el +++ b/lisp/finder.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1992-2023 Free Software Foundation, Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Created: 16 Jun 1992 ;; Keywords: help diff --git a/lisp/loadhist.el b/lisp/loadhist.el index 1609542e5fa..eb87016695c 100644 --- a/lisp/loadhist.el +++ b/lisp/loadhist.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1995, 1998, 2000-2023 Free Software Foundation, Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org ;; Keywords: internal diff --git a/lisp/play/cookie1.el b/lisp/play/cookie1.el index 559b74084e1..e5c0d6a14d2 100644 --- a/lisp/play/cookie1.el +++ b/lisp/play/cookie1.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1993, 2001-2023 Free Software Foundation, Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org ;; Keywords: games, extensions ;; Created: Mon Mar 22 17:06:26 1993 diff --git a/lisp/progmodes/asm-mode.el b/lisp/progmodes/asm-mode.el index 2a5105fe164..0f5af9803a5 100644 --- a/lisp/progmodes/asm-mode.el +++ b/lisp/progmodes/asm-mode.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1991, 2001-2023 Free Software Foundation, Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org ;; Keywords: languages @@ -23,7 +23,7 @@ ;;; Commentary: -;; This mode was written by Eric S. Raymond , +;; This mode was written by Eric S. Raymond , ;; inspired by an earlier `asm-mode' by Martin Neitzel. ;; This major mode is based on `prog-mode'. It defines a private diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 2b178e50684..09860a4cbde 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1992-1996, 1998, 2000-2023 Free Software Foundation, ;; Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org ;; Keywords: unix, tools diff --git a/lisp/progmodes/make-mode.el b/lisp/progmodes/make-mode.el index 308ba69cb9a..017a551bc05 100644 --- a/lisp/progmodes/make-mode.el +++ b/lisp/progmodes/make-mode.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1992-2023 Free Software Foundation, Inc. ;; Author: Thomas Neumann -;; Eric S. Raymond +;; Eric S. Raymond ;; Maintainer: emacs-devel@gnu.org ;; Adapted-By: ESR ;; Keywords: unix, tools diff --git a/lisp/term/AT386.el b/lisp/term/AT386.el index 27065b73591..541b7c5aad0 100644 --- a/lisp/term/AT386.el +++ b/lisp/term/AT386.el @@ -2,7 +2,7 @@ ;; Copyright (C) 1992, 2001-2023 Free Software Foundation, Inc. -;; Author: Eric S. Raymond +;; Author: Eric S. Raymond ;; Keywords: terminals ;; This file is part of GNU Emacs. diff --git a/src/ChangeLog.3 b/src/ChangeLog.3 index 31fb11b06d7..fbfb36fdb2a 100644 --- a/src/ChangeLog.3 +++ b/src/ChangeLog.3 @@ -1250,7 +1250,7 @@ * data.c (Fdefine_function): New function (same code as Fdefalias). -1993-04-28 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-28 Eric S. Raymond (esr@thyrsus.com) * eval.c (do_autoload): Fixed the bug in the autoload-saving code. @@ -1258,7 +1258,7 @@ * keyboard.c (Fcurrent_input_mode): New function. -1993-04-27 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-27 Eric S. Raymond (esr@thyrsus.com) * eval.c (un_autoload): Don't try to save old autoload forms when we load something in. Something about the code now conditioned @@ -1311,7 +1311,7 @@ * dispnew.c (Fsleep_for, Fsit_for): Allow SECONDS to be a floating point value. -1993-04-26 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-26 Eric S. Raymond (esr@thyrsus.com) * sysdep.c (read_pending_input): Fix the garbaged-modifiers bug under System Vs previous @@ -1330,7 +1330,7 @@ beginning or end of the original text to float to the corresponding position in the replacement text. -1993-04-25 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-25 Eric S. Raymond (esr@thyrsus.com) * window.c (Fset-window-buffer): Set horizontal-scrolling on a window to zero when @@ -1351,7 +1351,7 @@ (apply_modifiers): Don't abort if you see extra modifier bits, just remove them. -1993-04-23 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-23 Eric S. Raymond (esr@thyrsus.com) * data.c (Fdefine_function): Changed name back to Fdefalias, so we get things @@ -1386,7 +1386,7 @@ (eval_region, eval_buffer): Call readevalloop with new arg. (load_history): New variable. -1993-04-16 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-04-16 Eric S. Raymond (esr@thyrsus.com) * lread.c (readevalloop): New argument is the source file name (or nil if none). All calls changed. Do the two-step @@ -1928,7 +1928,7 @@ * xfns.c (Fx_display_color_p): Renamed from Fx_color_display_p. (syms_of_xfns): Use new name in defsubr. -1993-03-19 Eric S. Raymond (eric@geech.gnu.ai.mit.edu) +1993-03-19 Eric S. Raymond (esr@thyrsus.com) * Makefile.in (unlock, relock): New productions to assist with version control. @@ -1960,7 +1960,7 @@ * xfns.c (x_screen): Make this var file scope. (Fx_server_version): Use Fcons, not list3. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * xterm.c (term_get_fkeys): Less klugey version of the last fix. @@ -1976,7 +1976,7 @@ * xterm.c (x_display_box_cursor, x_display_bar_cursor): Don't display the cursor on garbaged frames. -1993-03-17 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-17 Eric S. Raymond (esr@thyrsus.com) * term.c (term_get_fkeys) Supply second args for all tgetstr calls. @@ -2182,7 +2182,7 @@ * cmd.c (internal_self_insert): Check that tab_width does not exceed 20, to be consistent with indent.c and xdisp.c. -1993-03-12 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-12 Eric S. Raymond (esr@thyrsus.com) * term.c (CONDITIONAL_REASSIGN): Fixed reference to tigetstr. This should have been tgetstr, but I typoed and tigetstr happens @@ -2215,7 +2215,7 @@ (make_lispy_event): Handle menu bar events. (read_key_sequence): Make dummy prefix `menu-bar' for menu bar events. -1993-03-11 Eric S. Raymond (eric@mole.gnu.ai.mit.edu) +1993-03-11 Eric S. Raymond (esr@thyrsus.com) * term.c (fkey_table): Added many more keycap cookies to the fkey_table; it now supports the full intersection of the set of X @@ -2289,7 +2289,7 @@ have the data_start symbol defined, so we'll just use the address of environ. - * s/usg5-4.h: Changes from Eric Raymond: + * s/usg5-4.h: Changes from Eric S. Raymond: If we're doing ordinary linking, define LIB_STANDARD appropriately. Give LIBS_DEBUG a null definition; usg5-4 has no -lg. #define LIBS_STANDARD as "-lc"; usg5-4 has no -lPW. @@ -2297,7 +2297,7 @@ #define HAVE_TERMIOS instead of HAVE_TCATTR. Provide our own definition of LIB_X11_LIB. - * s/usg5-3.h (LIBX11_SYSTEM): Eric Raymond says the libraries here + * s/usg5-3.h (LIBX11_SYSTEM): Eric S. Raymond says the libraries here were slightly wrong. * m/intel386.h (LIB_STANDARD): If USG5_4 is #defined, there's no @@ -4335,7 +4335,7 @@ * Makefile.in: Rearrange dependencies to make sure that xmakefile is built before we try to use it, even using a parallel make. - Changes for SYSV from Eric Raymond: + Changes for SYSV from Eric S. Raymond: * process.c [SYSV]: Don't include , , or . (process_send_signal): Don't try to send SIGTSTP @@ -6187,7 +6187,7 @@ * xterm.c: Doc fixes. - More SYSV portability changes from Eric Raymond: + More SYSV portability changes from Eric S. Raymond: * xterm.c [USG5]: Don't include . @@ -6222,7 +6222,7 @@ 1992-08-14 Jim Blandy (jimb@pogo.cs.oberlin.edu) - Applied SYSV portability changes from Eric Raymond: + Applied SYSV portability changes from Eric S. Raymond: * xrdb.c [USG5]: Define SYSV, and then include . Apparently, Xlib.h include string.h if SYSV is defined, and @@ -6279,7 +6279,7 @@ * sysdep.c [USG5]: Don't include fcntl.h. - * s/usg5-3.h: Eric Raymond writes: + * s/usg5-3.h: Eric S. Raymond writes: Define HAVE_SELECT and BSTRINGS only if HAVE_X_WINDOWS is on, because that means we'll be linking in the shared libraries containing the BSD emulations. Teach the file about the shared @@ -6333,7 +6333,7 @@ wasn't written portably, and it should probably go somewhere else anyway - say, funcall or eval. - End of changes from Eric Raymond. + End of changes from Eric S. Raymond. * xfns.c (Fx_create_frame): Make the default for the icon-type parameter nil, not t. It seems to cause problems with some X commit 66a3bb36f940d2f2a712d20aadaeda20b8792cff Author: Alan Third Date: Sat Aug 5 10:39:31 2023 +0100 Fix percentage sizes in SVG display (bug#64908) * src/image.c (svg_css_length_to_pixels): Make percent units always return zero and handle font size based units better. (svg_load_image): Don't rely on the width and height values from the SVG actually having any useful data, even if they're explicitly set. diff --git a/src/image.c b/src/image.c index 06fc44b5abd..29e88f0d752 100644 --- a/src/image.c +++ b/src/image.c @@ -11740,6 +11740,12 @@ svg_css_length_to_pixels (RsvgLength length, double dpi, int font_size) { double value = length.length; +#if ! LIBRSVG_CHECK_VERSION (2, 48, 0) + /* librsvg 2.48 lets us define the font size, but earlier versions + default to 12 pixels. */ + font_size = 12; +#endif + switch (length.unit) { case RSVG_UNIT_PX: @@ -11764,16 +11770,31 @@ svg_css_length_to_pixels (RsvgLength length, double dpi, int font_size) case RSVG_UNIT_IN: value *= dpi; break; -#if LIBRSVG_CHECK_VERSION (2, 48, 0) - /* We don't know exactly what font size is used on older librsvg - versions. */ case RSVG_UNIT_EM: value *= font_size; break; -#endif + case RSVG_UNIT_EX: + /* librsvg uses an ex height of half the em height, so we match + that here. */ + value = value * font_size / 2.0; + break; + case RSVG_UNIT_PERCENT: + /* Percent is a ratio of the containing "viewport". We don't + have a viewport, as such, as we try to draw the image to it's + 'natural' size rather than dictate the size as if we were + drawing icons on a toolbar or similar. This means that + percent values are useless to us and we are best off just + drawing the image according to whatever other sizes we can + derive. + + If we do set explicit width and height values in the image + spec, this will work out correctly as librsvg will still + honour the percentage sizes in its final rendering no matter + what size we make the image. */ + value = 0; + break; default: - /* Probably ex or %. We can't know what the pixel value is - without more information. */ + /* We should never reach this. */ value = 0; } @@ -11904,7 +11925,8 @@ svg_load_image (struct frame *f, struct image *img, char *contents, } else { - RsvgRectangle zero_rect, viewbox, out_logical_rect; + RsvgRectangle viewbox; + double explicit_width = 0, explicit_height = 0; /* Try the intrinsic dimensions first. */ gboolean has_width, has_height; @@ -11916,34 +11938,27 @@ svg_load_image (struct frame *f, struct image *img, char *contents, &has_height, &iheight, &has_viewbox, &viewbox); - if (has_width && has_height) - { - /* Success! We can use these values directly. */ - viewbox_width = svg_css_length_to_pixels (iwidth, dpi, + if (has_width) + explicit_width = svg_css_length_to_pixels (iwidth, dpi, + img->face_font_size); + if (has_height) + explicit_height = svg_css_length_to_pixels (iheight, dpi, img->face_font_size); - viewbox_height = svg_css_length_to_pixels (iheight, dpi, - img->face_font_size); - /* Here one dimension could be zero because in percent unit. - So calculate this dimension with the other. */ - if (! (0 < viewbox_width) && (iwidth.unit == RSVG_UNIT_PERCENT)) - viewbox_width = (viewbox_height * viewbox.width / viewbox.height) - * iwidth.length; - else if (! (0 < viewbox_height) && (iheight.unit == RSVG_UNIT_PERCENT)) - viewbox_height = (viewbox_width * viewbox.height / viewbox.width) - * iheight.length; + if (explicit_width > 0 && explicit_height > 0) + { + viewbox_width = explicit_width; + viewbox_height = explicit_height; } - else if (has_width && has_viewbox) + else if (explicit_width > 0 && has_viewbox) { - viewbox_width = svg_css_length_to_pixels (iwidth, dpi, - img->face_font_size); - viewbox_height = viewbox_width * viewbox.height / viewbox.width; + viewbox_width = explicit_width; + viewbox_height = explicit_width * viewbox.height / viewbox.width; } - else if (has_height && has_viewbox) + else if (explicit_height > 0 && has_viewbox) { - viewbox_height = svg_css_length_to_pixels (iheight, dpi, - img->face_font_size); - viewbox_width = viewbox_height * viewbox.width / viewbox.height; + viewbox_height = explicit_height; + viewbox_width = explicit_height * viewbox.width / viewbox.height; } else if (has_viewbox) { @@ -11957,8 +11972,15 @@ svg_load_image (struct frame *f, struct image *img, char *contents, { /* We haven't found a usable set of sizes, so try working out the visible area. */ + + /* FIXME: I'm not sure exactly how librsvg uses this + viewport input here, so I'm not sure what values I should + set. */ + RsvgRectangle max_viewport_rect = {0, 0, UINT_MAX, UINT_MAX}; + RsvgRectangle out_logical_rect; + rsvg_handle_get_geometry_for_layer (rsvg_handle, NULL, - &zero_rect, &viewbox, + &max_viewport_rect, &viewbox, &out_logical_rect, NULL); viewbox_width = viewbox.x + viewbox.width; viewbox_height = viewbox.y + viewbox.height; commit 72e24ed0316542184f40c05eda2bf7c77808ec0c Author: Stefan Kangas Date: Tue Aug 8 19:53:22 2023 +0200 ; Fix thinko diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index c21b67ed37e..51d9f928ef5 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -563,7 +563,7 @@ lm-verify (goto-char (point-max)) (not (re-search-backward - (rx bol ";;; " (eval name) " ends here") + (rx bol ";;; " (regexp name) " ends here") nil t))) "Can't find the footer line") ((not (and (lm-copyright-mark) (lm-crack-copyright))) commit 2752573dfb76873dbe783e89a1fbf01d157c54e3 Author: Stefan Kangas Date: Tue Aug 8 19:16:23 2023 +0200 Make news-path variable obsolete * lisp/gnus/nnspool.el (news-path): Make obsolete. (nnspool-spool-directory): Don't use above obsolete variable. diff --git a/lisp/gnus/nnspool.el b/lisp/gnus/nnspool.el index 3508c388897..ca97afcb7f1 100644 --- a/lisp/gnus/nnspool.el +++ b/lisp/gnus/nnspool.el @@ -35,7 +35,7 @@ ;; It's only used to init nnspool-spool-directory, so why not just ;; set that variable's default directly? (eval-and-compile - (defvaralias 'news-path 'news-directory) + (define-obsolete-variable-alias 'news-path 'news-directory "30.1") (defvar news-directory (if (file-exists-p "/usr/spool/news/") "/usr/spool/news/" "/var/spool/news/") @@ -62,9 +62,7 @@ nnspool-inews-switches If you are using Cnews, you probably should set this variable to nil.") (defvoo nnspool-spool-directory - (file-name-as-directory (if (boundp 'news-directory) - (symbol-value 'news-directory) - news-path)) + (file-name-as-directory news-directory) "Local news spool directory.") (defvoo nnspool-nov-directory (concat nnspool-spool-directory "over.view/") commit b8c05636ca4b28a7adc62e82a5fed528b402396d Author: Stefan Kangas Date: Tue Aug 8 19:08:56 2023 +0200 ; Fix typo diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 9f1940f3210..4b940b3f13b 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -6913,7 +6913,7 @@ python-ts-mode ;;;###autoload (add-to-list 'auto-mode-alist - '('"/\\(?:Pipfile\\|\\.?flake8\\)\\'" . conf-mode)) + '("/\\(?:Pipfile\\|\\.?flake8\\)\\'" . conf-mode)) (provide 'python) commit 62e990db7a2fad16756e019b331c28ad5a5a89fe Author: Stefan Kangas Date: Tue Aug 8 19:07:00 2023 +0200 Make ffap compat aliases obsolete * lisp/ffap.el (ffap-newsgroup-regexp, ffap-newsgroup-heads) (ffap-newsgroup-p): Make compatibility aliases obsolete. diff --git a/lisp/ffap.el b/lisp/ffap.el index 57f5271708b..907f56763ff 100644 --- a/lisp/ffap.el +++ b/lisp/ffap.el @@ -558,10 +558,6 @@ ffap-fixup-machine (ffap-ftp-regexp (ffap-host-to-filename mach)) )) -(defvaralias 'ffap-newsgroup-regexp 'thing-at-point-newsgroup-regexp) -(defvaralias 'ffap-newsgroup-heads 'thing-at-point-newsgroup-heads) -(defalias 'ffap-newsgroup-p 'thing-at-point-newsgroup-p) - (defun ffap-url-p (string) "If STRING looks like an URL, return it (maybe improved), else nil." (when (and (stringp string) ffap-url-regexp) @@ -2144,6 +2140,10 @@ ffap-bindings (interactive) (eval (cons 'progn ffap-bindings))) +(define-obsolete-variable-alias 'ffap-newsgroup-regexp 'thing-at-point-newsgroup-regexp "30.1") +(define-obsolete-variable-alias 'ffap-newsgroup-heads 'thing-at-point-newsgroup-heads "30.1") +(define-obsolete-function-alias 'ffap-newsgroup-p #'thing-at-point-newsgroup-p "30.1") + (provide 'ffap) commit dabb713eb05aff62deb6872a3498327934f18c8d Author: Stefan Kangas Date: Tue Aug 8 19:04:48 2023 +0200 Make lm-verify footer checking more strict * lisp/emacs-lisp/lisp-mnt.el (lm-verify): Make file footer regexp more strict to match requirement in old versions of package.el (now only a warning). diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el index 67c9db29b7f..c21b67ed37e 100644 --- a/lisp/emacs-lisp/lisp-mnt.el +++ b/lisp/emacs-lisp/lisp-mnt.el @@ -519,6 +519,7 @@ lm-verify Optional argument VERBOSE specifies verbosity level. Optional argument NON-FSF-OK if non-nil means a non-FSF copyright notice is allowed." + ;; FIXME: Make obsolete in favor of checkdoc? (interactive (list nil nil t)) (let* ((ret (and verbose "Ok")) name) @@ -562,9 +563,8 @@ lm-verify (goto-char (point-max)) (not (re-search-backward - (concat "^;;;[ \t]+" name "[ \t]+ends here[ \t]*$" - "\\|^;;;[ \t]+ End of file[ \t]+" name) - nil t))) + (rx bol ";;; " (eval name) " ends here") + nil t))) "Can't find the footer line") ((not (and (lm-copyright-mark) (lm-crack-copyright))) "Can't find a valid copyright notice") commit 10e4be740d2870fb06eb5ab929b44e7453e93a96 Author: Stefan Kangas Date: Tue Aug 8 19:01:18 2023 +0200 Open Pipfile and flake8 config files in conf-mode * lisp/progmodes/python.el (auto-mode-alist): Open Pipfile and flake8 configuration files in conf-mode. diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 1930f68617c..9f1940f3210 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -6911,6 +6911,10 @@ python-ts-mode python-shell-completion-complete-or-indent)) (function-put sym 'command-modes '(python-base-mode inferior-python-mode))) +;;;###autoload +(add-to-list 'auto-mode-alist + '('"/\\(?:Pipfile\\|\\.?flake8\\)\\'" . conf-mode)) + (provide 'python) ;;; python.el ends here commit 41e766b449f3f5b546331b7a3c10f647ad421327 Author: Mattias Engdegård Date: Tue Aug 8 18:33:50 2023 +0200 Check keyword args of make-pipe-process (bug#65030) * lisp/emacs-lisp/bytecomp.el (make-pipe-process): Add check. diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 0df7b0bfe2a..4ee9922302b 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -5831,6 +5831,13 @@ bytecomp--check-keyword-args :filter :sentinel :stderr :file-handler) '(:name :command)))) +(put 'make-pipe-process 'compiler-macro + #'(lambda (form &rest args) + (bytecomp--check-keyword-args + form args + '(:name :buffer :coding :noquery :stop :filter :sentinel) + '(:name)))) + (put 'make-network-process 'compiler-macro #'(lambda (form &rest args) (bytecomp--check-keyword-args commit 516736cfa6ce59a47709862daaebe066fa134b4a Author: Mattias Engdegård Date: Tue Aug 8 18:09:08 2023 +0200 Better error for missing or bad :name arg in make-process etc Improve on the famously bad error message given when the :name keyword parameter is missing or of the wrong type in calls to make-process, make-pipe-process and make-network-process (bug#65030). * src/process.c (get_required_string_keyword_param): New function. (Fmake_process, Fmake_pipe_process, Fmake_network_process): Use it. diff --git a/src/process.c b/src/process.c index 7738f1e4bcc..08cb810ec13 100644 --- a/src/process.c +++ b/src/process.c @@ -1737,6 +1737,18 @@ DEFUN ("process-list", Fprocess_list, Sprocess_list, 0, 0, 0, } +static Lisp_Object +get_required_string_keyword_param (Lisp_Object kwargs, Lisp_Object keyword) +{ + Lisp_Object arg = plist_member (kwargs, keyword); + if (NILP (arg) || !CONSP (arg) || !CONSP (XCDR (arg))) + error ("Missing %s keyword parameter", SSDATA (SYMBOL_NAME (keyword))); + Lisp_Object val = XCAR (XCDR (arg)); + if (!STRINGP (val)) + error ("%s value not a string", SSDATA (SYMBOL_NAME (keyword))); + return val; +} + /* Starting asynchronous inferior processes. */ DEFUN ("make-process", Fmake_process, Smake_process, 0, MANY, 0, @@ -1801,7 +1813,7 @@ DEFUN ("make-process", Fmake_process, Smake_process, 0, MANY, 0, usage: (make-process &rest ARGS) */) (ptrdiff_t nargs, Lisp_Object *args) { - Lisp_Object buffer, name, command, program, proc, contact, current_dir, tem; + Lisp_Object buffer, command, program, proc, contact, current_dir, tem; Lisp_Object xstderr, stderrproc; specpdl_ref count = SPECPDL_INDEX (); @@ -1830,8 +1842,7 @@ DEFUN ("make-process", Fmake_process, Smake_process, 0, MANY, 0, chdir, since it's in a vfork. */ current_dir = get_current_directory (true); - name = plist_get (contact, QCname); - CHECK_STRING (name); + Lisp_Object name = get_required_string_keyword_param (contact, QCname); command = plist_get (contact, QCcommand); if (CONSP (command)) @@ -2408,7 +2419,7 @@ DEFUN ("make-pipe-process", Fmake_pipe_process, Smake_pipe_process, { Lisp_Object proc, contact; struct Lisp_Process *p; - Lisp_Object name, buffer; + Lisp_Object buffer; Lisp_Object tem; int inchannel, outchannel; @@ -2417,8 +2428,7 @@ DEFUN ("make-pipe-process", Fmake_pipe_process, Smake_pipe_process, contact = Flist (nargs, args); - name = plist_get (contact, QCname); - CHECK_STRING (name); + Lisp_Object name = get_required_string_keyword_param (contact, QCname); proc = make_process (name); specpdl_ref specpdl_count = SPECPDL_INDEX (); record_unwind_protect (remove_process, proc); @@ -3938,7 +3948,7 @@ DEFUN ("make-network-process", Fmake_network_process, Smake_network_process, #endif EMACS_INT port = 0; Lisp_Object tem; - Lisp_Object name, buffer, host, service, address; + Lisp_Object buffer, host, service, address; Lisp_Object filter, sentinel, use_external_socket_p; Lisp_Object addrinfos = Qnil; int socktype; @@ -3975,7 +3985,7 @@ DEFUN ("make-network-process", Fmake_network_process, Smake_network_process, else error ("Unsupported connection type"); - name = plist_get (contact, QCname); + Lisp_Object name = get_required_string_keyword_param (contact, QCname); buffer = plist_get (contact, QCbuffer); filter = plist_get (contact, QCfilter); sentinel = plist_get (contact, QCsentinel); @@ -3985,7 +3995,6 @@ DEFUN ("make-network-process", Fmake_network_process, Smake_network_process, if (!NILP (server) && nowait) error ("`:server' is incompatible with `:nowait'"); - CHECK_STRING (name); /* :local ADDRESS or :remote ADDRESS */ if (NILP (server)) commit 3e79fd3d4e810c2ef4cf9925a747c93e036fddca Author: Helmut Eller Date: Thu Aug 3 08:33:40 2023 +0200 Check keyword args of make-process The functions make-process and make-network-process have many keyword args and it's easy to misspell some of them. Use a compiler macro to warn about some possible mistakes. * lisp/emacs-lisp/bytecomp.el (bytecomp--check-keyword-args): New helper. (make-process, make-network-process): Define a compiler macro that performs some checks but doesn't anything else. * test/lisp/emacs-lisp/bytecomp-tests.el: Add some tests. * test/lisp/emacs-lisp/bytecomp-resources/: (warn-make-process-missing-keyword-arg.el, warn-make-process-missing-keyword-value.el, warn-make-process-repeated-keyword-arg.el, warn-make-process-unknown-keyword-arg.el): New test files diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index f6ba6ff9ea0..0df7b0bfe2a 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -5782,6 +5782,67 @@ bytecomp--backward-word form ; arity error `(forward-word (- (or ,arg 1))))) +(defun bytecomp--check-keyword-args (form arglist allowed-keys required-keys) + (let ((fun (car form))) + (cl-flet ((missing (form keyword) + (byte-compile-warn-x + form + "`%S´ called without required keyword argument %S" + fun keyword)) + (unrecognized (form keyword) + (byte-compile-warn-x + form + "`%S´ called with unknown keyword argument %S" + fun keyword)) + (duplicate (form keyword) + (byte-compile-warn-x + form + "`%S´ called with repeated keyword argument %S" + fun keyword)) + (missing-val (form keyword) + (byte-compile-warn-x + form + "missing value for keyword argument %S" + keyword))) + (let* ((seen '()) + (l arglist)) + (while (consp l) + (let ((key (car l))) + (cond ((and (keywordp key) (memq key allowed-keys)) + (cond ((memq key seen) + (duplicate l key)) + (t + (push key seen)))) + (t (unrecognized l key))) + (when (null (cdr l)) + (missing-val l key))) + (setq l (cddr l))) + (dolist (key required-keys) + (unless (memq key seen) + (missing form key)))))) + form) + +(put 'make-process 'compiler-macro + #'(lambda (form &rest args) + (bytecomp--check-keyword-args + form args + '(:name + :buffer :command :coding :noquery :stop :connection-type + :filter :sentinel :stderr :file-handler) + '(:name :command)))) + +(put 'make-network-process 'compiler-macro + #'(lambda (form &rest args) + (bytecomp--check-keyword-args + form args + '(:name + :buffer :host :service :type :family :local :remote :coding + :nowait :noquery :stop :filter :filter-multibyte :sentinel + :log :plist :tls-parameters :server :broadcast :dontroute + :keepalive :linger :oobinline :priority :reuseaddr :bindtodevice + :use-external-socket) + '(:name :service)))) + (provide 'byte-compile) (provide 'bytecomp) diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-arg.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-arg.el new file mode 100644 index 00000000000..9369e78ff54 --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-arg.el @@ -0,0 +1,3 @@ +;;; -*- lexical-binding: t -*- +(defun foo () + (make-process :name "ls")) diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-value.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-value.el new file mode 100644 index 00000000000..4226349afef --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-missing-keyword-value.el @@ -0,0 +1,3 @@ +;;; -*- lexical-binding: t -*- +(defun foo () + (make-process :name "ls" :command)) diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-repeated-keyword-arg.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-repeated-keyword-arg.el new file mode 100644 index 00000000000..18250f14ee9 --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-repeated-keyword-arg.el @@ -0,0 +1,3 @@ +;;; -*- lexical-binding: t -*- +(defun foo () + (make-process :name "ls" :command "ls" :name "ls")) diff --git a/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-unknown-keyword-arg.el b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-unknown-keyword-arg.el new file mode 100644 index 00000000000..4721035780b --- /dev/null +++ b/test/lisp/emacs-lisp/bytecomp-resources/warn-make-process-unknown-keyword-arg.el @@ -0,0 +1,4 @@ +;;; -*- lexical-binding: t -*- +(defun foo () + (make-process :name "ls" :command "ls" + :coding-system 'binary)) diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index 19e08e8d199..26325c1ef11 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -1204,6 +1204,22 @@ "warn-variable-setq-odd.el" "nowarn-inline-after-defvar.el" "Lexical argument shadows" 'reverse) +(bytecomp--define-warning-file-test + "warn-make-process-missing-keyword-arg.el" + "called without required keyword argument :command") + +(bytecomp--define-warning-file-test + "warn-make-process-unknown-keyword-arg.el" + "called with unknown keyword argument :coding-system") + +(bytecomp--define-warning-file-test + "warn-make-process-repeated-keyword-arg.el" + "called with repeated keyword argument :name") + +(bytecomp--define-warning-file-test + "warn-make-process-missing-keyword-value.el" + "missing value for keyword argument :command") + ;;;; Macro expansion. commit efb3ef0fe07a1fe8c713921ceba74f476c8aa40b Author: Ulrich Müller Date: Tue Aug 8 08:34:43 2023 +0200 Disable json and tree-sitter with --without-all * configure.ac (OPTION_DEFAULT_IFAVAILABLE): Disable the option if --without-all was specified. (Bug#65142) diff --git a/configure.ac b/configure.ac index e01465c2af0..de602371f7b 100644 --- a/configure.ac +++ b/configure.ac @@ -305,7 +305,8 @@ AC_DEFUN ])dnl dnl OPTION_DEFAULT_IFAVAILABLE(NAME, HELP-STRING) -dnl Create a new --with option that defaults to 'ifavailable'. +dnl Create a new --with option that defaults to 'ifavailable', +dnl unless it is overriden by $with_features being equal to 'no'. dnl NAME is the base name of the option. The shell variable with_NAME dnl will be set to either the user's value (if the option is dnl specified; 'yes' for a plain --with-NAME) or to 'ifavailable' (if the @@ -315,10 +316,12 @@ AC_DEFUN dnl HELP-STRING is the help text for the option. AC_DEFUN([OPTION_DEFAULT_IFAVAILABLE], [dnl AC_ARG_WITH([$1],[AS_HELP_STRING([--with-$1],[$2])],[],[dnl - m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=ifavailable])dnl + AS_IF([test "$with_features" != no], + [m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=ifavailable], + [m4_bpatsubst([with_$1], [[^0-9a-z]], [_])=no])dnl + ])dnl ])dnl - dnl OPTION_DEFAULT_ON(NAME, HELP-STRING) dnl Create a new --with option that defaults to $with_features. dnl NAME is the base name of the option. The shell variable with_NAME commit d2f29bd3ce77a39a29626982fdd82cd26a19111c Author: Basil L. Contovounesios Date: Tue Aug 8 14:57:34 2023 +0200 ; Update pdumper dump_buffer hash (bug#65146). diff --git a/src/pdumper.c b/src/pdumper.c index 7e6047e6a95..85adf4147f9 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -2747,7 +2747,7 @@ dump_hash_table (struct dump_context *ctx, static dump_off dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer) { -#if CHECK_STRUCTS && !defined HASH_buffer_85D317CE74 +#if CHECK_STRUCTS && !defined HASH_buffer_6C25F9C3BC # error "buffer changed. See CHECK_STRUCTS comment in config.h." #endif struct buffer munged_buffer = *in_buffer; commit 91854ceaee383f15016768699e73bdd67104b81e Author: Basil L. Contovounesios Date: Tue Aug 8 14:43:22 2023 +0200 ; .mailmap: Flip entry. Earl Hyatt's canonical info was the wrong way around (bug#49407). diff --git a/.mailmap b/.mailmap index 8454eb9154c..0531cc0c290 100644 --- a/.mailmap +++ b/.mailmap @@ -51,8 +51,7 @@ David M. Koppelman Deniz Dogan Dick R. Chiang Dick R. Chiang dickmao -Earl Hyatt -Earl Hyatt +Earl Hyatt Edward M. Reingold Eli Zaretskii Emilio C. Lopes commit 22ebef12e9099b7bd6ebaf7424f3e11b2ba10a82 Author: David Ponce Date: Tue Aug 8 12:47:13 2023 +0200 * lisp/tooltip.el (tooltip-cancel-delayed-tip): Fix missing argument. This resurrects tooltips, see bug#65147. diff --git a/lisp/tooltip.el b/lisp/tooltip.el index 0881a7c7bf9..6f8a489e60c 100644 --- a/lisp/tooltip.el +++ b/lisp/tooltip.el @@ -200,7 +200,7 @@ tooltip-cancel-delayed-tip (defun tooltip-start-delayed-tip () "Add a one-shot timeout to call function `tooltip-timeout'." (setq tooltip-timeout-id - (run-with-timer (tooltip-delay) 'tooltip-timeout nil))) + (run-with-timer (tooltip-delay) nil 'tooltip-timeout nil))) (defun tooltip-timeout (_object) "Function called when timer with id `tooltip-timeout-id' fires." commit 2b67609c34051ceb0359675342f54e3ac9719840 Author: Po Lu Date: Tue Aug 8 20:20:02 2023 +0800 Repair test failures stemming from Android merge * lisp/kmacro.el (kmacro-step-edit-query) (kmacro-step-edit-pre-command): Use `dummy-event' instead of [nil] to continue a kbd macro; this is because nil now has a function key map. * src/androidfns.c (Fx_hide_tip): Allow calling this as a stub. * src/fileio.c (Finsert_file_contents): In adherence to the documentation, forbid supplying a BEG offset even for seekable files, i.e. /dev/urandom on Linux kernel based systems. diff --git a/lisp/kmacro.el b/lisp/kmacro.el index 7489076ea2e..588b2d14943 100644 --- a/lisp/kmacro.el +++ b/lisp/kmacro.el @@ -1189,7 +1189,10 @@ kmacro-step-edit-query (setq act (lookup-key kmacro-step-edit-map (vector (with-current-buffer (current-buffer) (read-event)))))))) - ;; Resume macro execution and perform the action + ;; Resume macro execution and perform the action. + ;; Suffixing executing-kbd-macro with `dummy-event' + ;; is done when pre-command-hook must be called + ;; again as part of this keyboard macro's execution. (cond ((cond ((eq act 'act) @@ -1220,18 +1223,21 @@ kmacro-step-edit-query ((member act '(replace-1 replace)) (setq kmacro-step-edit-inserting (if (eq act 'replace-1) 1 t)) (if (= executing-kbd-macro-index (length executing-kbd-macro)) - (setq executing-kbd-macro (vconcat executing-kbd-macro [nil]) + (setq executing-kbd-macro (vconcat executing-kbd-macro + [dummy-event]) kmacro-step-edit-appending t)) nil) ((eq act 'append) (setq kmacro-step-edit-inserting t) (if (= executing-kbd-macro-index (length executing-kbd-macro)) - (setq executing-kbd-macro (vconcat executing-kbd-macro [nil]) + (setq executing-kbd-macro (vconcat executing-kbd-macro + [dummy-event]) kmacro-step-edit-appending t)) t) ((eq act 'append-end) (if (= executing-kbd-macro-index (length executing-kbd-macro)) - (setq executing-kbd-macro (vconcat executing-kbd-macro [nil]) + (setq executing-kbd-macro (vconcat executing-kbd-macro + [dummy-event]) kmacro-step-edit-inserting t kmacro-step-edit-appending t) (setq kmacro-step-edit-active 'append-end)) @@ -1314,7 +1320,8 @@ kmacro-step-edit-pre-command (setq this-command #'ignore)) ((eq kmacro-step-edit-active 'append-end) (if (= executing-kbd-macro-index (length executing-kbd-macro)) - (setq executing-kbd-macro (vconcat executing-kbd-macro [nil]) + (setq executing-kbd-macro (vconcat executing-kbd-macro + [dummy-event]) kmacro-step-edit-inserting t kmacro-step-edit-appending t kmacro-step-edit-active t))) diff --git a/src/androidfns.c b/src/androidfns.c index 0270f58b6b9..9e8372f524b 100644 --- a/src/androidfns.c +++ b/src/androidfns.c @@ -2410,11 +2410,16 @@ DEFUN ("x-hide-tip", Fx_hide_tip, Sx_hide_tip, 0, 0, 0, (void) { #ifdef ANDROID_STUBIFY + /* Fx_hide_tip is called from pre-command-hook (in turn called from + the tests.) Since signaling here prevents any tests from being + run, refrain from protesting if this stub is called. */ +#if 0 error ("Android cross-compilation stub called!"); +#endif /* 0 */ return Qnil; -#else +#else /* !ANDROID_STUBIFY */ return android_hide_tip (true); -#endif +#endif /* ANDROID_STUBIFY */ } DEFUN ("android-detect-mouse", Fandroid_detect_mouse, diff --git a/src/fileio.c b/src/fileio.c index b2186a027d4..4c00f1e5ff4 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -4177,11 +4177,18 @@ because (1) it preserves some marker positions (in unchanged portions replace = Qunbound; } - seekable = emacs_fd_lseek (fd, 0, SEEK_CUR) != (off_t) -1; - if (!NILP (beg) && !seekable) + /* Forbid specifying BEG together with a special file, as per + the doc string. */ + + if (!NILP (beg)) xsignal2 (Qfile_error, build_string ("cannot use a start position in a non-seekable file/device"), orig_filename); + + /* Now ascertain if this file is seekable, by detecting if + seeking leads to -1 being returned. */ + seekable + = emacs_fd_lseek (fd, 0, SEEK_CUR) != (off_t) -1; } if (end_offset < 0) commit 0c58350b310da6c3bff90aa0bbab7f5bb6efd456 Author: Mattias Engdegård Date: Tue Aug 8 12:24:27 2023 +0200 ; Fix dired-aux-tests failure (bug#65143) * lisp/dired-aux.el (dired-do-create-files): Preserve the return value that isn't documented but used by dired-test-bug30624 in dired-aux-tests. Change suggested by Po Lu. diff --git a/lisp/dired-aux.el b/lisp/dired-aux.el index 3e8b4c3c8fc..28513a2c61a 100644 --- a/lisp/dired-aux.el +++ b/lisp/dired-aux.el @@ -2480,87 +2480,97 @@ dired-do-create-files For any other return value, TARGET is treated as a directory." (or op1 (setq op1 operation)) - (let* ((fn-list (dired-get-marked-files nil arg nil nil t)) - (rfn-list (mapcar #'dired-make-relative fn-list)) - (dired-one-file ; fluid variable inside dired-create-files - (and (consp fn-list) (null (cdr fn-list)) (car fn-list))) - (target-dir (dired-dwim-target-directory)) - (default (and dired-one-file - (not dired-dwim-target) ; Bug#25609 - (expand-file-name (file-name-nondirectory (car fn-list)) - target-dir))) - (defaults (dired-dwim-target-defaults fn-list target-dir)) - (target (expand-file-name ; fluid variable inside dired-create-files - (minibuffer-with-setup-hook - (lambda () - (setq-local minibuffer-default-add-function nil) - (setq minibuffer-default defaults)) - (dired-mark-read-file-name - (format "%s %%s %s: " - (if dired-one-file op1 operation) - (if (memq op-symbol '(symlink hardlink)) - ;; Linking operations create links - ;; from the prompted file name; the - ;; other operations copy (etc) to the - ;; prompted file name. - "from" "to")) - target-dir op-symbol arg rfn-list default)))) - (into-dir - (progn - (when - (or - (not dired-one-file) - (and dired-create-destination-dirs-on-trailing-dirsep - (directory-name-p target))) - (dired-maybe-create-dirs target)) - (cond ((null how-to) - ;; Allow users to change the letter case of - ;; a directory on a case-insensitive - ;; filesystem. If we don't test these - ;; conditions up front, file-directory-p - ;; below will return t on a case-insensitive - ;; filesystem, and Emacs will try to move - ;; foo -> foo/foo, which fails. - (if (and (file-name-case-insensitive-p (car fn-list)) - (eq op-symbol 'move) - dired-one-file - (string= (downcase - (expand-file-name (car fn-list))) - (downcase - (expand-file-name target))) - (not (string= - (file-name-nondirectory (car fn-list)) - (file-name-nondirectory target)))) - nil - (file-directory-p target))) - ((eq how-to t) nil) - (t (funcall how-to target)))))) - (if (and (consp into-dir) (functionp (car into-dir))) - (apply (car into-dir) operation rfn-list fn-list target (cdr into-dir)) - (if (not (or dired-one-file into-dir)) - (error "Marked %s: target must be a directory: %s" operation target)) - (if (and (not (file-directory-p (car fn-list))) - (not (file-directory-p target)) - (directory-name-p target)) - (error "%s: Target directory does not exist: %s" operation target)) - ;; rename-file bombs when moving directories unless we do this: - (or into-dir (setq target (directory-file-name target))) - (prog1 - (dired-create-files - file-creator operation fn-list - (if into-dir ; target is a directory - ;; This function uses fluid variable target when called - ;; inside dired-create-files: - (lambda (from) - (expand-file-name (file-name-nondirectory from) target)) - (lambda (_from) target)) - marker-char) - (when (or (eq dired-do-revert-buffer t) - (and (functionp dired-do-revert-buffer) - (funcall dired-do-revert-buffer target))) - (dired-fun-in-all-buffers (file-name-directory target) nil - #'revert-buffer))))) - (dired-post-do-command)) + (let ((ret nil)) + (let* ((fn-list (dired-get-marked-files nil arg nil nil t)) + (rfn-list (mapcar #'dired-make-relative fn-list)) + (dired-one-file ; fluid variable inside dired-create-files + (and (consp fn-list) (null (cdr fn-list)) (car fn-list))) + (target-dir (dired-dwim-target-directory)) + (default (and dired-one-file + (not dired-dwim-target) ; Bug#25609 + (expand-file-name (file-name-nondirectory + (car fn-list)) + target-dir))) + (defaults (dired-dwim-target-defaults fn-list target-dir)) + (target (expand-file-name ; fluid variable inside dired-create-files + (minibuffer-with-setup-hook + (lambda () + (setq-local minibuffer-default-add-function nil) + (setq minibuffer-default defaults)) + (dired-mark-read-file-name + (format "%s %%s %s: " + (if dired-one-file op1 operation) + (if (memq op-symbol '(symlink hardlink)) + ;; Linking operations create links + ;; from the prompted file name; the + ;; other operations copy (etc) to the + ;; prompted file name. + "from" "to")) + target-dir op-symbol arg rfn-list default)))) + (into-dir + (progn + (when + (or + (not dired-one-file) + (and dired-create-destination-dirs-on-trailing-dirsep + (directory-name-p target))) + (dired-maybe-create-dirs target)) + (cond ((null how-to) + ;; Allow users to change the letter case of + ;; a directory on a case-insensitive + ;; filesystem. If we don't test these + ;; conditions up front, file-directory-p + ;; below will return t on a case-insensitive + ;; filesystem, and Emacs will try to move + ;; foo -> foo/foo, which fails. + (if (and (file-name-case-insensitive-p (car fn-list)) + (eq op-symbol 'move) + dired-one-file + (string= (downcase + (expand-file-name (car fn-list))) + (downcase + (expand-file-name target))) + (not (string= + (file-name-nondirectory (car fn-list)) + (file-name-nondirectory target)))) + nil + (file-directory-p target))) + ((eq how-to t) nil) + (t (funcall how-to target)))))) + (setq ret + (if (and (consp into-dir) (functionp (car into-dir))) + (apply (car into-dir) operation rfn-list fn-list target + (cdr into-dir)) + (if (not (or dired-one-file into-dir)) + (error "Marked %s: target must be a directory: %s" + operation target)) + (if (and (not (file-directory-p (car fn-list))) + (not (file-directory-p target)) + (directory-name-p target)) + (error "%s: Target directory does not exist: %s" + operation target)) + ;; rename-file bombs when moving directories unless we do this: + (or into-dir (setq target (directory-file-name target))) + (prog1 + (dired-create-files + file-creator operation fn-list + (if into-dir ; target is a directory + ;; This function uses fluid variable target when called + ;; inside dired-create-files: + (lambda (from) + (expand-file-name (file-name-nondirectory from) + target)) + (lambda (_from) target)) + marker-char) + (when (or (eq dired-do-revert-buffer t) + (and (functionp dired-do-revert-buffer) + (funcall dired-do-revert-buffer target))) + (dired-fun-in-all-buffers (file-name-directory target) nil + #'revert-buffer)))))) + (dired-post-do-command) + ;; The return value isn't very well defined but is used by + ;; `dired-test-bug30624'. + ret)) ;; Read arguments for a marked-files command that wants a file name, ;; perhaps popping up the list of marked files. commit 5ab53729df6ec0829536af4a7130e22b3b05ea15 Author: Mattias Engdegård Date: Tue Aug 8 12:05:48 2023 +0200 ; Fix bad bytecomp-tests cases * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): Repair broken test cases. diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index dd0c1fe91a0..19e08e8d199 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -677,16 +677,18 @@ bytecomp-tests--test-cases (list x (funcall g)))))))) (funcall (funcall f 'b))) (let ((f (lambda (x) - (let ((g (lambda () x)) - (h (lambda () (setq x (list x x))))) - (let ((x 'a)) - (list x (funcall g) (funcall h))))))) + (lambda () + (let ((g (lambda () x)) + (h (lambda () (setq x (list x x))))) + (let ((x 'a)) + (list x (funcall g) (funcall h)))))))) (funcall (funcall f 'b))) (let ((f (lambda (x) - (let ((g (lambda () x)) - (h (lambda () (setq x (list x x))))) - (let* ((x 'a)) - (list x (funcall g) (funcall h))))))) + (lambda () + (let ((g (lambda () x)) + (h (lambda () (setq x (list x x))))) + (let* ((x 'a)) + (list x (funcall g) (funcall h)))))))) (funcall (funcall f 'b))) ;; Test constant-propagation of access to captured variables. commit 89bd65197642e4700b36c270d3abf8e4a2dffbf8 Author: Mattias Engdegård Date: Mon Aug 7 18:14:42 2023 +0200 Teach byte-compiler about Aristotelian identity * lisp/emacs-lisp/byte-opt.el (byte-optimize-equal, byte-optimize-eq): Optimise (eq X X) -> t where X is a variable; idem for eql and equal. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases): Add test case. diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 12c2bc51b92..456b3891bfe 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -1052,23 +1052,26 @@ byte-optimize--fixnump (and (integerp o) (<= -536870912 o 536870911))) (defun byte-optimize-equal (form) - ;; Replace `equal' or `eql' with `eq' if at least one arg is a - ;; symbol or fixnum. - (byte-optimize-binary-predicate - (if (= (length (cdr form)) 2) - (if (or (byte-optimize--constant-symbol-p (nth 1 form)) - (byte-optimize--constant-symbol-p (nth 2 form)) - (byte-optimize--fixnump (nth 1 form)) - (byte-optimize--fixnump (nth 2 form))) - (cons 'eq (cdr form)) - form) - ;; Arity errors reported elsewhere. - form))) + (cond ((/= (length (cdr form)) 2) form) ; Arity errors reported elsewhere. + ;; Anything is identical to itself. + ((and (eq (nth 1 form) (nth 2 form)) (symbolp (nth 1 form))) t) + ;; Replace `equal' or `eql' with `eq' if at least one arg is a + ;; symbol or fixnum. + ((or (byte-optimize--constant-symbol-p (nth 1 form)) + (byte-optimize--constant-symbol-p (nth 2 form)) + (byte-optimize--fixnump (nth 1 form)) + (byte-optimize--fixnump (nth 2 form))) + (byte-optimize-binary-predicate (cons 'eq (cdr form)))) + (t (byte-optimize-binary-predicate form)))) (defun byte-optimize-eq (form) - (pcase (cdr form) - ((or `(,x nil) `(nil ,x)) `(not ,x)) - (_ (byte-optimize-binary-predicate form)))) + (cond ((/= (length (cdr form)) 2) form) ; arity error + ;; Anything is identical to itself. + ((and (eq (nth 1 form) (nth 2 form)) (symbolp (nth 1 form))) t) + ;; Strength-reduce comparison with `nil'. + ((null (nth 1 form)) `(not ,(nth 2 form))) + ((null (nth 2 form)) `(not ,(nth 1 form))) + (t (byte-optimize-binary-predicate form)))) (defun byte-optimize-member (form) (cond diff --git a/test/lisp/emacs-lisp/bytecomp-tests.el b/test/lisp/emacs-lisp/bytecomp-tests.el index 246ffff532f..dd0c1fe91a0 100644 --- a/test/lisp/emacs-lisp/bytecomp-tests.el +++ b/test/lisp/emacs-lisp/bytecomp-tests.el @@ -785,6 +785,9 @@ bytecomp-tests--test-cases (let ((x 0)) (list (= (setq x 1)) x)) + ;; Aristotelian identity optimisation + (let ((x (bytecomp-test-identity 1))) + (list (eq x x) (eql x x) (equal x x))) ) "List of expressions for cross-testing interpreted and compiled code.") commit eeda9eff1aa1ad973851d6589c5bcf6020a090e8 Author: Po Lu Date: Tue Aug 8 16:21:45 2023 +0800 ; * src/fileio.c (Ffile_selinux_context): Avoid unused variable. diff --git a/src/fileio.c b/src/fileio.c index 5d01e10f0ef..b2186a027d4 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -3372,7 +3372,9 @@ Return (nil nil nil nil) if the file is nonexistent, { Lisp_Object user = Qnil, role = Qnil, type = Qnil, range = Qnil; Lisp_Object absname = expand_and_dir_to_file (filename); +#ifdef HAVE_LIBSELINUX const char *file; +#endif /* HAVE_LIBSELINUX */ /* If the file name has special constructs in it, call the corresponding file name handler. */ @@ -3381,9 +3383,9 @@ Return (nil nil nil nil) if the file is nonexistent, if (!NILP (handler)) return call2 (handler, Qfile_selinux_context, absname); +#ifdef HAVE_LIBSELINUX file = SSDATA (ENCODE_FILE (absname)); -#if HAVE_LIBSELINUX if (selinux_enabled_p (file)) { char *con; commit 440f017658aabe90668c9f6afbd38c1d892c1f6d Author: Po Lu Date: Tue Aug 8 16:17:10 2023 +0800 Avoid caching file status when they are about to change * java/org/gnu/emacs/EmacsSafThread.java (EmacsSafThread) (cacheFileStatus): New argument NO_CACHE. (cacheDirectoryFromCursor, statDocument1): * java/org/gnu/emacs/EmacsService.java (EmacsService) (statDocument): Plumb that argument through each of these wrapper functions. * src/android.c (android_init_emacs_service): Adjust JNI function signatures to agree with statDocument1. * src/androidvfs.c (android_saf_stat): Plumb that argument through here. (android_saf_tree_stat, android_saf_file_open): And don't cache file status if a write is imminent. diff --git a/java/org/gnu/emacs/EmacsSafThread.java b/java/org/gnu/emacs/EmacsSafThread.java index 421e82c5759..1b62662b4fc 100644 --- a/java/org/gnu/emacs/EmacsSafThread.java +++ b/java/org/gnu/emacs/EmacsSafThread.java @@ -437,11 +437,14 @@ private static final class CacheEntry /* Cache file status for DOCUMENTID within TOPLEVEL. Value is the new cache entry. CURSOR is the cursor from where to retrieve the file status, in the form of the columns COLUMN_FLAGS, - COLUMN_SIZE, COLUMN_MIME_TYPE and COLUMN_LAST_MODIFIED. */ + COLUMN_SIZE, COLUMN_MIME_TYPE and COLUMN_LAST_MODIFIED. + + If NO_CACHE, don't cache the file status; just return the + entry. */ private StatCacheEntry cacheFileStatus (String documentId, CacheToplevel toplevel, - Cursor cursor) + Cursor cursor, boolean no_cache) { StatCacheEntry entry; int flagsIndex, columnIndex, typeIndex; @@ -482,7 +485,8 @@ private static final class CacheEntry entry.mtime = cursor.getLong (mtimeIndex); /* Finally, add this entry to the cache and return. */ - toplevel.statCache.put (documentId, entry); + if (!no_cache) + toplevel.statCache.put (documentId, entry); return entry; } @@ -546,7 +550,7 @@ private static final class CacheEntry directory listing is being requested, it's very likely that a series of calls for file status will follow. */ - cacheFileStatus (id, toplevel, cursor); + cacheFileStatus (id, toplevel, cursor, false); /* If this constituent is a directory, don't cache any information about it. It cannot be cached without @@ -1217,7 +1221,7 @@ type is either NULL (in which case id should also be NULL) or private long[] statDocument1 (String uri, String documentId, - CancellationSignal signal) + CancellationSignal signal, boolean noCache) { Uri uriObject, tree; String[] projection; @@ -1266,7 +1270,8 @@ type is either NULL (in which case id should also be NULL) or if (!cursor.moveToFirst ()) return null; - cache = cacheFileStatus (documentId, toplevel, cursor); + cache = cacheFileStatus (documentId, toplevel, cursor, + noCache); } finally { @@ -1332,18 +1337,22 @@ type is either NULL (in which case id should also be NULL) or last modification to this file in milliseconds since 00:00, January 1st, 1970. + If NOCACHE, refrain from placing the file status within the + status cache. + OperationCanceledException and other typical exceptions may be signaled upon receiving async input or other errors. */ public long[] - statDocument (final String uri, final String documentId) + statDocument (final String uri, final String documentId, + final boolean noCache) { return (long[]) runObjectFunction (new SafObjectFunction () { @Override public Object runObject (CancellationSignal signal) { - return statDocument1 (uri, documentId, signal); + return statDocument1 (uri, documentId, signal, noCache); } }); } diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java index 14ff2cce98f..379b1d30eda 100644 --- a/java/org/gnu/emacs/EmacsService.java +++ b/java/org/gnu/emacs/EmacsService.java @@ -1389,11 +1389,14 @@ else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) last modification to this file in milliseconds since 00:00, January 1st, 1970. + If NOCACHE, refrain from placing the file status within the + status cache. + OperationCanceledException and other typical exceptions may be signaled upon receiving async input or other errors. */ public long[] - statDocument (String uri, String documentId) + statDocument (String uri, String documentId, boolean noCache) { /* Start the thread used to run SAF requests if it isn't already running. */ @@ -1404,7 +1407,7 @@ else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) storageThread.start (); } - return storageThread.statDocument (uri, documentId); + return storageThread.statDocument (uri, documentId, noCache); } /* Find out whether Emacs has access to the document designated by diff --git a/src/android.c b/src/android.c index 7f263bc83d1..705ef227df3 100644 --- a/src/android.c +++ b/src/android.c @@ -1564,7 +1564,7 @@ #define FIND_METHOD(c_name, name, signature) \ "(Ljava/lang/String;Ljava/lang/String;)" "Ljava/lang/String;"); FIND_METHOD (stat_document, "statDocument", - "(Ljava/lang/String;Ljava/lang/String;)[J"); + "(Ljava/lang/String;Ljava/lang/String;Z)[J"); FIND_METHOD (access_document, "accessDocument", "(Ljava/lang/String;Ljava/lang/String;Z)I"); FIND_METHOD (open_document_directory, "openDocumentDirectory", diff --git a/src/androidvfs.c b/src/androidvfs.c index 8e742f8b26f..0385e7348c6 100644 --- a/src/androidvfs.c +++ b/src/androidvfs.c @@ -3932,12 +3932,15 @@ android_saf_exception_check (int n, ...) /* Return file status for the document designated by ID_NAME within the document tree identified by URI_NAME. + If NO_CACHE, don't cache the resulting file status. Enable this + option if the file status is subject to imminent change. + If the file status is available, place it within *STATB and return 0. If not, return -1 and set errno to EPERM. */ static int android_saf_stat (const char *uri_name, const char *id_name, - struct stat *statb) + struct stat *statb, bool no_cache) { jmethodID method; jstring uri, id; @@ -3969,10 +3972,12 @@ android_saf_stat (const char *uri_name, const char *id_name, /* Try to retrieve the file status. */ method = service_class.stat_document; inside_saf_critical_section = true; - status = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env, - emacs_service, - service_class.class, - method, uri, id); + status + = (*android_java_env)->CallNonvirtualObjectMethod (android_java_env, + emacs_service, + service_class.class, + method, uri, id, + (jboolean) no_cache); inside_saf_critical_section = false; /* Check for exceptions and release unneeded local references. */ @@ -5076,7 +5081,7 @@ android_saf_tree_stat (struct android_vnode *vnode, vp = (struct android_saf_tree_vnode *) vnode; return android_saf_stat (vp->tree_uri, vp->document_id, - statb); + statb, false); } static int @@ -5716,10 +5721,15 @@ android_saf_file_open (struct android_vnode *vnode, int flags, ANDROID_DELETE_LOCAL_REF (descriptor); /* Try to retrieve the modification time of this file from the - content provider. */ + content provider. + + Refrain from introducing the file status into the file status + cache if FLAGS & O_RDWR or FLAGS & O_WRONLY: the cached file + status will contain a size and modification time inconsistent + with the result of any modifications that later transpire. */ if (!android_saf_stat (vp->tree_uri, vp->document_id, - &statb)) + &statb, write)) info->mtime = get_stat_mtime (&statb); else info->mtime = invalid_timespec (); commit 27113c22f77b7a409c33b956a1a8d8be2d5bc673 Author: Po Lu Date: Tue Aug 8 16:02:49 2023 +0800 Minor improvements to write-region heuristic * src/androidvfs.c (android_saf_stat): Set STATB->st_dev. (android_fstat): Likewise. (NATIVE_NAME): Seek to start of file after truncation. * src/fileio.c (write_region): Use stat instead of open+fstat to obtain updated mtime. diff --git a/src/androidvfs.c b/src/androidvfs.c index 93927ccc86b..8e742f8b26f 100644 --- a/src/androidvfs.c +++ b/src/androidvfs.c @@ -4013,6 +4013,7 @@ android_saf_stat (const char *uri_name, const char *id_name, memset (statb, 0, sizeof *statb); statb->st_size = MAX (0, MIN (TYPE_MAXIMUM (off_t), size)); statb->st_mode = mode; + statb->st_dev = -4; #ifdef STAT_TIMESPEC STAT_TIMESPEC (statb, st_mtim).tv_sec = mtim / 1000; STAT_TIMESPEC (statb, st_mtim).tv_nsec = (mtim % 1000) * 1000000; @@ -6169,7 +6170,14 @@ NATIVE_NAME (safPostRequest) (JNIEnv *env, jobject object) JNIEXPORT jboolean JNICALL NATIVE_NAME (ftruncate) (JNIEnv *env, jobject object, jint fd) { - return ftruncate (fd, 0) != -1; + if (ftruncate (fd, 0) < 0) + return false; + + /* Reset the file pointer. */ + if (lseek (fd, 0, SEEK_SET) < 0) + return false; + + return true; } #ifdef __clang__ @@ -6722,6 +6730,11 @@ android_fstat (int fd, struct stat *statb) parcel_fd = open_parcel_fds; for (; parcel_fd; parcel_fd = parcel_fd->next) { + if (parcel_fd->fd == fd) + /* Set STATB->st_dev to a negative device number, signifying + that it's contained within a content provider. */ + statb->st_dev = -4; + if (parcel_fd->fd == fd && timespec_valid_p (parcel_fd->mtime)) { diff --git a/src/fileio.c b/src/fileio.c index 26b7e193f0a..5d01e10f0ef 100644 --- a/src/fileio.c +++ b/src/fileio.c @@ -5582,42 +5582,44 @@ write_region (Lisp_Object start, Lisp_Object end, Lisp_Object filename, if (timespec_valid_p (modtime) && ! (valid_timestamp_file_system && st.st_dev == timestamp_file_system)) { - int desc1 = emacs_open (fn, O_WRONLY, 0); - if (desc1 >= 0) + struct stat st1; + + /* The code below previously tried to open FN O_WRONLY, + subsequently calling fstat on the opened file descriptor. + This proved inefficient and resulted in FN being truncated + under several Android filesystems, and as such has been + changed to a call to `stat'. */ + + if (emacs_fstatat (AT_FDCWD, fn, &st1, 0) == 0 + && st.st_dev == st1.st_dev && st.st_ino == st1.st_ino) { - struct stat st1; - if (sys_fstat (desc1, &st1) == 0 - && st.st_dev == st1.st_dev && st.st_ino == st1.st_ino) + /* Use the heuristic if it appears to be valid. With neither + O_EXCL nor O_TRUNC, if Emacs happened to write nothing to the + file, the time stamp won't change. Also, some non-POSIX + systems don't update an empty file's time stamp when + truncating it. Finally, file systems with 100 ns or worse + resolution sometimes seem to have bugs: on a system with ns + resolution, checking ns % 100 incorrectly avoids the heuristic + 1% of the time, but the problem should be temporary as we will + try again on the next time stamp. */ + bool use_heuristic + = ((open_flags & (O_EXCL | O_TRUNC)) != 0 + && st.st_size != 0 + && modtime.tv_nsec % 100 != 0); + + struct timespec modtime1 = get_stat_mtime (&st1); + if (use_heuristic + && timespec_cmp (modtime, modtime1) == 0 + && st.st_size == st1.st_size) { - /* Use the heuristic if it appears to be valid. With neither - O_EXCL nor O_TRUNC, if Emacs happened to write nothing to the - file, the time stamp won't change. Also, some non-POSIX - systems don't update an empty file's time stamp when - truncating it. Finally, file systems with 100 ns or worse - resolution sometimes seem to have bugs: on a system with ns - resolution, checking ns % 100 incorrectly avoids the heuristic - 1% of the time, but the problem should be temporary as we will - try again on the next time stamp. */ - bool use_heuristic - = ((open_flags & (O_EXCL | O_TRUNC)) != 0 - && st.st_size != 0 - && modtime.tv_nsec % 100 != 0); - - struct timespec modtime1 = get_stat_mtime (&st1); - if (use_heuristic - && timespec_cmp (modtime, modtime1) == 0 - && st.st_size == st1.st_size) - { - timestamp_file_system = st.st_dev; - valid_timestamp_file_system = 1; - } - else - { - st.st_size = st1.st_size; - modtime = modtime1; - } + timestamp_file_system = st.st_dev; + valid_timestamp_file_system = 1; + } + else + { + st.st_size = st1.st_size; + modtime = modtime1; } - emacs_close (desc1); } }