commit bef514de4d3c88f60ad23115ec10f0ec064e9ae7 (HEAD, refs/remotes/origin/master) Author: Stefan Kangas Date: Fri Jun 7 23:42:42 2024 +0200 ; Fix typos diff --git a/ChangeLog.3 b/ChangeLog.3 index ef63f674b59..46fc57cd0c0 100644 --- a/ChangeLog.3 +++ b/ChangeLog.3 @@ -229133,7 +229133,7 @@ ee9a1f7 Support safe navigation operator in non-SMIE indentation code c3ed95b Move xsd:base64Binary decoding fix to debbugs.el 0.9.1 2036be4 Fix Ruby's operator precedence - 1d686c2 (ruby-interpolation-inside-another-interpolation): New failin... + 1d686c2 (ruby-interpolation-inside-another-interpolation): New failing... 7950e1d Port to clang 3.7.0 on x86-64 218ae59 * test/automated/package-test.el (package-test-signed): Tweak... ba33b7c Sync with gnulib diff --git a/ChangeLog.4 b/ChangeLog.4 index 3eb2c16d6b1..a9450fdba6c 100644 --- a/ChangeLog.4 +++ b/ChangeLog.4 @@ -4268,7 +4268,7 @@ 2023-07-20 Po Lu - Fix typos and ommissions in cus-edit.el + Fix typos and omissions in cus-edit.el * lisp/cus-edit.el (custom-display): Add missing display types. diff --git a/INSTALL b/INSTALL index 59a8063ba19..d5ce16db147 100644 --- a/INSTALL +++ b/INSTALL @@ -65,7 +65,7 @@ sections if you need to. ./configure --prefix=/SOME/OTHER/DIRECTORY - where /SOME/OTHER/DIRECTORY is a directory writeable by your user, + where /SOME/OTHER/DIRECTORY is a directory writable by your user, for example, a subdirectory of your home directory. 3. When 'configure' finishes, it prints several lines of details @@ -470,7 +470,7 @@ should put emacs and its data files. This defaults to '/usr/local'. If you don't have write access to the default '/usr/local' tree, and cannot have root access (without which "make install" will fail), -specify '--prefix=PREFIXDIR' where PREFIXDIR is a directyory writeable +specify '--prefix=PREFIXDIR' where PREFIXDIR is a directory writable by your user, for example your HOME directory or some subdirectory of it. diff --git a/admin/codespell/codespell.dictionary b/admin/codespell/codespell.dictionary index b082a48fe99..59065fbf8e2 100644 --- a/admin/codespell/codespell.dictionary +++ b/admin/codespell/codespell.dictionary @@ -6,9 +6,9 @@ defalises->defaliases ecmacs->emacs ehsell->eshell emcs->emacs +file-writeable-p->file-writable-p finis->finish firs->first -file-writeable-p->file-writable-p hep->help least-favourite->least-favorite lien->line diff --git a/admin/codespell/codespell.exclude b/admin/codespell/codespell.exclude index 6413a73701b..0fe6e0ea8f8 100644 --- a/admin/codespell/codespell.exclude +++ b/admin/codespell/codespell.exclude @@ -1585,3 +1585,16 @@ VERY VERY LONG STRIN | VERY VERY LONG STRIN .UE . (0.03 ":bob!~u@euegh6mj3y8r2.irc PRIVMSG #chan :alice: See, by good hap, yonder's my lord; I have sweat to see his honour.") (0.05 ":bob!~u@euegh6mj3y8r2.irc PRIVMSG #chan :alice: But, in defence, by mercy, 'tis most just.") + "n" "nu" "nul" "nulL" "nulll" + rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, + (ede-load-project-file): Add new input DETECTIN. +(defun ede-load-project-file (dir &optional detectin rootreturn) +Optional DETECTIN is an autoload cons from `ede-detect-directory-for-project' + (detect (or detectin (ede-directory-project-cons path))) + ;; Postpone readin hook till we map + ;; Don't make undo entries for readin. + :nicky!uhuser@host212223.dialin.fnordisp.net PRIVMSG #lazybastards :Hello! + (skipp (or (bound-and-true-p erc-stamp--display-margin-mode) + (erc--msg-prop-overrides `(,@(and skipp `((erc--skip stamp))) + ("\\.\\(flc\\|fli\\|rle\\|iff\\|pfx\\|avi\\|sme\\|rpza\\|dl\\|qt\\|rsrc\\|mov\\)$" "xanim") + ("\\.sme$" "video/sme") diff --git a/admin/codespell/codespell.ignore b/admin/codespell/codespell.ignore index 34de02e969b..4f6135ca39a 100644 --- a/admin/codespell/codespell.ignore +++ b/admin/codespell/codespell.ignore @@ -6,6 +6,7 @@ ans bloc blocs callint +checkin clen crossreference crossreferences diff --git a/admin/run-codespell b/admin/run-codespell index 991b72073b2..c61bd47d451 100755 --- a/admin/run-codespell +++ b/admin/run-codespell @@ -43,6 +43,7 @@ emacs_run_codespell () grep -v -E -e '^(lib|m4)/.*' |\ grep -v -E -e '^admin/(charsets|codespell|unidata)/.*' |\ grep -v -E -e '^doc/misc/texinfo.tex$' |\ + grep -v -E -e '^doc/translations/.*' |\ grep -v -E -e '^etc/(AUTHORS|HELLO|publicsuffix.txt)$' |\ grep -v -E -e '^etc/refcards/(cs|de|fr|pl|pt|sk)-.+.tex$' |\ grep -v -E -e '^etc/tutorials/TUTORIAL\..+' |\ @@ -50,6 +51,7 @@ emacs_run_codespell () grep -v -E -e '^lisp/language/ethio-util.el' |\ grep -v -E -e '^lisp/ldefs-boot.el' |\ grep -v -E -e '^lisp/leim/.*' |\ + grep -v -E -e '^test/lisp/erc/resources/.*' |\ grep -v -E -e '^test/lisp/net/puny-resources/IdnaTestV2.txt' |\ grep -v -E -e '^test/manual/(etags|indent)/.*' |\ grep -v -E -e '^test/src/regex-resources/.*' |\ diff --git a/doc/lispref/sequences.texi b/doc/lispref/sequences.texi index 4c5525f10c5..d5695e4c83d 100644 --- a/doc/lispref/sequences.texi +++ b/doc/lispref/sequences.texi @@ -397,7 +397,7 @@ remains unmodified. In-place sorting is slightly faster, but the original sequence is lost. @end table -If the default behaviour is not suitable for your needs, it is usually +If the default behavior is not suitable for your needs, it is usually easier and faster to supply a new @code{:key} function than a different @code{:lessp} predicate. For example, consider sorting these strings: diff --git a/doc/misc/modus-themes.org b/doc/misc/modus-themes.org index 33443487066..3e353dc356d 100644 --- a/doc/misc/modus-themes.org +++ b/doc/misc/modus-themes.org @@ -88,7 +88,7 @@ The Modus themes consist of eight themes, divided into four subgroups. are variants of the two main themes. They slightly tone down the intensity of the background and provide a bit more color variety. ~modus-operandi-tinted~ has a set of base tones that are shades of - light ochre (earthly colors), while ~modus-vivendi-tinted~ gives a + light ocher (earthly colors), while ~modus-vivendi-tinted~ gives a night sky impression. - Deuteranopia themes :: ~modus-operandi-deuteranopia~ and its @@ -4442,7 +4442,7 @@ advanced customization options of the themes. [[#h:f4651d55-8c07-46aa-b52b-bed1e53463bb][Advanced customization]]. In the following example, we are assuming that the user wants to (i) -re-use color variables provided by the themes, (ii) be able to retain +reuse color variables provided by the themes, (ii) be able to retain their tweaks while switching between ~modus-operandi~ and ~modus-vivendi~, and (iii) have the option to highlight either the foreground of the parentheses or the background as well. @@ -4462,7 +4462,7 @@ Then we can update our preference with this: (setq my-highlight-parentheses-use-background nil) #+end_src -To re-use colors from the themes, we must wrap our code in the +To reuse colors from the themes, we must wrap our code in the ~modus-themes-with-colors~ macro. Our implementation must interface with the variables ~highlight-parentheses-background-colors~ and/or ~highlight-parentheses-colors~. diff --git a/doc/translations/README b/doc/translations/README index 02edb829dcf..d9d11bfcc02 100644 --- a/doc/translations/README +++ b/doc/translations/README @@ -194,7 +194,7 @@ Such tools include: etc. -* Licence of this document +* License of this document Copyright (C) 2024 Free Software Foundation, Inc. diff --git a/etc/themes/modus-operandi-tinted-theme.el b/etc/themes/modus-operandi-tinted-theme.el index f112456034b..d906715e44c 100644 --- a/etc/themes/modus-operandi-tinted-theme.el +++ b/etc/themes/modus-operandi-tinted-theme.el @@ -1,4 +1,4 @@ -;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ochre background -*- lexical-binding:t -*- +;;; modus-operandi-tinted-theme.el --- Elegant, highly legible theme with a light ocher background -*- lexical-binding:t -*- ;; Copyright (C) 2019-2024 Free Software Foundation, Inc. @@ -44,7 +44,7 @@ ;;;###theme-autoload (deftheme modus-operandi-tinted - "Elegant, highly legible theme with a light ochre background. + "Elegant, highly legible theme with a light ocher background. Conforms with the highest legibility standard for color contrast between background and foreground in any given piece of text, which corresponds to a minimum contrast in relative luminance of diff --git a/lisp/cedet/semantic/complete.el b/lisp/cedet/semantic/complete.el index 7adf9abfdcb..3249f64cc6f 100644 --- a/lisp/cedet/semantic/complete.el +++ b/lisp/cedet/semantic/complete.el @@ -1407,7 +1407,7 @@ This object type doesn't do focus, so will never have a focus object." () "Display options in *Completions* buffer. Traditional display mechanism for a list of possible completions. -Completions are showin in a new buffer and listed with the ability +Completions are shown in a new buffer and listed with the ability to click on the items to aid in completion.") (define-obsolete-function-alias 'semantic-displayor-show-request diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index d4895f3c5f8..a9caa83b15c 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -8958,7 +8958,7 @@ The difference between N and the number of articles fetched is returned." (widen)) (setq ref ;; It's not the current article, or we altered the header, - ;; so we use whats in the header vector. + ;; so we use what's in the header vector. (mail-header-references header))) (if (and ref (not (equal ref ""))) diff --git a/lisp/subr.el b/lisp/subr.el index e2e211369c9..e478c0e3349 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -5700,7 +5700,7 @@ Unless optional argument INPLACE is non-nil, return a new string." (if (multibyte-string-p string) (> (max fromchar tochar) 127) (> tochar 255))) - ;; Avoid quadratic behaviour from resizing replacement. + ;; Avoid quadratic behavior from resizing replacement. (let ((res (string-replace (string fromchar) (string tochar) string))) (unless (eq res string) ;; Mend properties broken by the replacement. diff --git a/src/fns.c b/src/fns.c index 371d2ae3a3a..e9242e4c8ba 100644 --- a/src/fns.c +++ b/src/fns.c @@ -3058,7 +3058,7 @@ value_cmp (Lisp_Object a, Lisp_Object b, int maxdepth) goto type_mismatch; case Lisp_Cons: - /* FIXME: Optimise for difference in the first element? */ + /* FIXME: Optimize for difference in the first element? */ FOR_EACH_TAIL (b) { int cmp = value_cmp (XCAR (a), XCAR (b), maxdepth - 1); commit e99a821f978530b4c397f88de145ff7ba9d31040 Author: Eli Zaretskii Date: Fri Jun 7 22:30:41 2024 +0300 Avoid crashes in half-baked emacsclient frames If a client connection comes in while we handle a Lisp error, the new frame creation could signal an error before the new frame is ready for display. * src/xdisp.c (redisplay_internal): Don't redisplay windows on frames that were not completely set up. (Bug#71224) diff --git a/src/xdisp.c b/src/xdisp.c index 4df76baf92b..0148cd76ada 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -17360,10 +17360,13 @@ redisplay_internal (void) = f->redisplay || !REDISPLAY_SOME_P (); bool f_redisplay_flag = f->redisplay; - /* The X error handler may have deleted that frame - before we went back to retry_frame. This must come + /* The X error handler may have deleted that frame before + we went back to retry_frame. Or this could be a TTY + frame that is not completely made, in which case we + cannot safely redisplay its windows. This must come before any accesses to f->terminal. */ - if (!FRAME_LIVE_P (f)) + if (!FRAME_LIVE_P (f) + || (FRAME_TERMCAP_P (f) && !f->after_make_frame)) continue; /* Mark all the scroll bars to be removed; we'll redeem commit 9cd182dae8822e810b73b2c1c1c41955096bb2de Author: Juri Linkov Date: Fri Jun 7 19:57:07 2024 +0300 * lisp/buff-menu.el (Buffer-menu-group-sort-by): New defcustom. (list-buffers--refresh): Use Buffer-menu-group-sort-by instead of the hard-coded function (bug#70150). (Buffer-menu-group-sort-alphabetically): New function as an option for 'Buffer-menu-group-sort-by'. (list-buffers-noselect): Remove setting outline-minor-mode-use-buttons to 'in-margins' that it not required for this feature to work correctly. * lisp/emacs-lisp/tabulated-list.el (tabulated-list-groups-sort): Add optional argument 'level'. diff --git a/lisp/buff-menu.el b/lisp/buff-menu.el index c35fa42934c..fa706a4e1a7 100644 --- a/lisp/buff-menu.el +++ b/lisp/buff-menu.el @@ -119,6 +119,19 @@ If this is nil, buffers are not divided into groups." :group 'Buffer-menu :version "30.1") +(defcustom Buffer-menu-group-sort-by nil + "If non-nil, function to sort buffer-menu groups by name. +Each function is called with two arguments: an alist of groups +where an alist key is a group name and also the level as a number, +and should return the same alist where groups are sorted. +If this is nil, group names are unsorted." + :type '(choice (const :tag "No group sorting" nil) + (const :tag "Sort groups alphabetically" + Buffer-menu-group-sort-alphabetically) + (function :tag "Custom function")) + :group 'Buffer-menu + :version "30.1") + (defvar-local Buffer-menu-files-only nil "Non-nil if the current Buffer Menu lists only file buffers. This is set by the prefix argument to `buffer-menu' and related @@ -759,8 +772,7 @@ See more at `Buffer-menu-filter-predicate'." (tabulated-list-print) (when tabulated-list-groups (setq-local outline-minor-mode-cycle t - outline-minor-mode-highlight t - outline-minor-mode-use-buttons 'in-margins) + outline-minor-mode-highlight t) (outline-minor-mode 1))) buffer)) @@ -845,10 +857,7 @@ See more at `Buffer-menu-filter-predicate'." ,(lambda (entry) (list (mapcar (lambda (f) (funcall f entry)) Buffer-menu-group-by))) - :sort-function - ,(lambda (groups) - ;; Sort groups by name - (sort groups :key #'car :in-place t)))))) + :sort-function ,Buffer-menu-group-sort-by)))) (tabulated-list-init-header)) (defun tabulated-list-entry-size-> (entry1 entry2) @@ -881,4 +890,7 @@ See more at `Buffer-menu-filter-predicate'." (project-root project) default-directory))) +(defun Buffer-menu-group-sort-alphabetically (groups _level) + (sort groups :in-place t :key #'car)) + ;;; buff-menu.el ends here diff --git a/lisp/emacs-lisp/tabulated-list.el b/lisp/emacs-lisp/tabulated-list.el index a0a58bf8b42..30397137efb 100644 --- a/lisp/emacs-lisp/tabulated-list.el +++ b/lisp/emacs-lisp/tabulated-list.el @@ -929,14 +929,15 @@ where every string is an outline heading at increasing level of deepness." (cl-pushnew entry (gethash path hash)))) (trie-get tree nil)))) -(defun tabulated-list-groups-sort (tree sort-function) +(defun tabulated-list-groups-sort (tree sort-function &optional level) "Sort TREE using the sort function SORT-FUN." + (unless level (setq level 1)) (mapcar (lambda (elt) (if (vectorp (cdr elt)) elt (cons (car elt) (tabulated-list-groups-sort - (cdr elt) sort-function)))) - (funcall sort-function tree))) + (cdr elt) sort-function (1+ level))))) + (funcall sort-function tree level))) (defun tabulated-list-groups-flatten (tree) "Flatten multi-level TREE to single level." commit 979365eef2f09e2c9d21cbf5ff0d350b210d4127 Author: Juri Linkov Date: Fri Jun 7 19:45:06 2024 +0300 Add new alist entry 'some-window' for 'display-buffer-use-some-window' * doc/lispref/windows.texi (Buffer Display Action Functions): Add details of using the alist entry 'some-window' in 'display-buffer-use-some-window'. (Buffer Display Action Alists): Add 'some-window'. * lisp/window.el (display-buffer-use-some-window): Handle the alist entry 'some-window' (bug#70949). Extend docstring with its description. diff --git a/doc/lispref/windows.texi b/doc/lispref/windows.texi index 61e72eae680..ef61e2780c1 100644 --- a/doc/lispref/windows.texi +++ b/doc/lispref/windows.texi @@ -2805,6 +2805,21 @@ If no less recently used window is found, this function will try to use some other window, preferably a large window on some visible frame. It can fail if all windows are dedicated to other buffers (@pxref{Dedicated Windows}). + +The above describes the behavior when @code{some-window} @var{alist} +entry is @code{lru} or @code{nil} which is the default. But when, +for example, @code{display-buffer-base-action} is customized to +@w{@code{(nil . ((some-window . mru)))}}, then the value @code{mru} +means that this function will prefer the most recently used window +that is useful to display several buffers from the consecutive calls +of @code{display-buffer} in the same window. Consider a configuration +of three or more windows where a user wants to consult, in +a non-selected window, one after the other, the results of a query +spread among several buffers. With the @code{lru} strategy, Emacs might +continuously choose another window because the least recently used +window changes with every call of @code{display-buffer-use-some-window}. +With the @code{mru} strategy, the window chosen would always remain the +same, resulting in a predictable user experience. @end defun @defun display-buffer-use-least-recent-window buffer alist @@ -3358,6 +3373,16 @@ since there is no guarantee that an arbitrary caller of will display the buffer. @code{display-buffer-no-window} is the only action function that cares about this entry. +@vindex some-window@r{, a buffer display action alist entry} +@item some-window +If the value is @code{nil} or @code{lru}, @code{display-buffer-use-some-window} +prefers the least recently used window while avoiding selecting windows +that are not full-width and windows on another frame. If the value is +@code{mru}, it prefers the most recently used window not considering the +selected window and windows on any frame but the selected one. If the +value is a function, it is called with two arguments: a buffer and an +alist, and should return the window where to display the buffer. + @vindex body-function@r{, a buffer display action alist entry} @item body-function The value must be a function taking one argument (a displayed window). diff --git a/etc/NEWS b/etc/NEWS index 5fb1625a76c..d6a8fa7122b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -323,6 +323,14 @@ right-aligned to is controlled by the new user option ** Windows ++++ +*** New action alist entry 'some-window' for 'display-buffer'. +It defines which window 'display-buffer-use-some-window' should prefer. +For example, when 'display-buffer-base-action' is customized to +'(nil . ((some-window . mru)))' then a buffer will be displayed +in the same most recently used window from the consecutive calls +display-buffer' (on a configuration with more than two windows). + +++ *** New action alist entry 'category' for 'display-buffer'. If the caller of 'display-buffer' passes '(category . symbol)' diff --git a/lisp/window.el b/lisp/window.el index b014be6a7cf..16aee6a306a 100644 --- a/lisp/window.el +++ b/lisp/window.el @@ -7849,6 +7849,18 @@ Action alist entries are: parameters to give the chosen window. `allow-no-window' -- A non-nil value means that `display-buffer' may not display the buffer and return nil immediately. + `some-window' -- This entry defines which window + `display-buffer-use-some-window' should choose. The possible choices + are `lru' or nil (the default) to select the least recently used window, + and `mru' to select the most recently used window. It can also be + a function that takes two arguments: a buffer and an alist, and should + return the window where to display the buffer. If the value is `lru', + it avoids selecting windows that are not full-width and windows on + another frame. If the value is `mru', it does not consider the + selected window and windows on any frame but the selected one. + It's useful to customize `display-buffer-base-action' to + `(nil . ((some-window . mru))) when you want to display buffers in the + same non-selected window in a configuration with more than two windows. `body-function' -- A function called with one argument - the displayed window. It is called after the buffer is displayed, and before `window-height', `window-width' @@ -8738,20 +8750,33 @@ If ALIST has a non-nil `inhibit-switch-frame' entry, then in the event that a window on another frame is chosen, avoid raising that frame. +If ALIST contains a non-nil `some-window' entry, then prefer the least +recently used window if the entry's value is `lru' or nil, or the most +recently used window if it's `mru'. If the value is a function, it is +called with two arguments: a buffer and an alist, and should return +the window where to display the buffer. + This is an action function for buffer display, see Info node `(elisp) Buffer Display Action Functions'. It should be called only by `display-buffer' or a function directly or indirectly called by the latter." (let* ((not-this-window (cdr (assq 'inhibit-same-window alist))) + (some-window-method (cdr (assq 'some-window alist))) (frame (or (window--frame-usable-p (selected-frame)) (window--frame-usable-p (last-nonminibuffer-frame)))) (window ;; Reuse an existing window. - (or (display-buffer--lru-window - ;; If ALIST specifies 'lru-frames' or 'window-min-width' - ;; let them prevail. - (append alist `((lru-frames . ,frame) - (window-min-width . full-width)))) + (or (cond + ((memq some-window-method '(nil lru)) + (display-buffer--lru-window + ;; If ALIST specifies 'lru-frames' or 'window-min-width' + ;; let them prevail. + (append alist `((lru-frames . ,frame) + (window-min-width . full-width))))) + ((eq some-window-method 'mru) + (get-mru-window nil nil t)) + ((functionp some-window-method) + (funcall some-window-method buffer alist))) (let ((window (get-buffer-window buffer 'visible))) (unless (and not-this-window (eq window (selected-window))) commit 24082fc3c3c779dc9ac9e27135feb0fe1166f796 Author: Stefan Monnier Date: Fri Jun 7 10:57:11 2024 -0400 * lisp/subr.el (with-silent-modifications): Minor simplification diff --git a/lisp/subr.el b/lisp/subr.el index 57c6f8a528f..e2e211369c9 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -5082,8 +5082,7 @@ of that nature." (unwind-protect (progn ,@body) - (when (or (not ,modified) - (eq ,modified 'autosaved)) + (when (memq ,modified '(nil autosaved)) (restore-buffer-modified-p ,modified)))))) (defmacro with-output-to-string (&rest body) commit 6a9a5f59b956d52c4c6c9abdde6bd4270b635e64 Merge: f1c9a32a234 b4b4c0fec4c Author: Po Lu Date: Fri Jun 7 21:40:16 2024 +0800 Merge remote-tracking branch 'savannah/master' into master-android-1 commit f1c9a32a234085683f5f713ac91fed5ecf768095 Author: Po Lu Date: Fri Jun 7 21:39:01 2024 +0800 Eliminate Makefile race * java/Makefile.in (cf-stamp): Don't separately depend on NDK_BUILD_SHARED, as this renders make liable to descend into cross/ndk-build twice in different processes. (clean): Don't remove nonexistent file. diff --git a/java/Makefile.in b/java/Makefile.in index 35d2637837c..802da0b9e36 100644 --- a/java/Makefile.in +++ b/java/Makefile.in @@ -359,7 +359,11 @@ public static final String[] EMACS_SHARED_LIBRARIES\ # all shared libraries are compiled, because the computation of # ALL_DEPENDENCIES in this instance of Make cannot be postponed until # that stage. -cf-stamp: $(NDK_BUILD_SHARED) $(CROSS_LIBS) +# +# This recipe needs no dependency on $(NDK_BUILD_LIBS), since +# $(CROSS_LIBS) is a phony target that itself guarantees that they are +# up to date. +cf-stamp: $(CROSS_LIBS) $(AM_V_EMACSCONFIG) $(MAKE) cf-stamp-1 $(AM_V_at) touch $@ $(CONFIG_FILE): cf-stamp; @true @@ -433,4 +437,4 @@ clean: find . -name '*.class' $(FIND_DELETE) maintainer-clean distclean bootstrap-clean: clean - rm -f Makefile ndk-build.mk + rm -f Makefile commit b4b4c0fec4c52a8f9b067d1cca53fa8ddbf03799 Author: Eli Zaretskii Date: Fri Jun 7 16:34:53 2024 +0300 Unbreak the Cygw32 build It was broken by latest changes to w32image.c. * src/emacs.c (main): Call 'syms_of_w32image' and 'globals_of_w32image' only if native image APIs are enabled. (Bug#71412) diff --git a/src/emacs.c b/src/emacs.c index 036bc1864e6..64f850c58a7 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -2359,7 +2359,9 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem syms_of_fringe (); syms_of_image (); #ifdef HAVE_NTGUI +# if HAVE_NATIVE_IMAGE_API syms_of_w32image (); +# endif #endif /* HAVE_NTGUI */ #endif /* HAVE_WINDOW_SYSTEM */ #ifdef HAVE_X_WINDOWS @@ -2498,7 +2500,9 @@ Using an Emacs configured with --with-x-toolkit=lucid does not have this problem globals_of_w32font (); globals_of_w32fns (); globals_of_w32menu (); +# if HAVE_NATIVE_IMAGE_API globals_of_w32image (); +# endif #endif /* HAVE_NTGUI */ #if defined WINDOWSNT || defined HAVE_NTGUI commit 43826a9109a97546602de8e18f12723359e49640 Author: Po Lu Date: Fri Jun 7 20:39:42 2024 +0800 ; * java/INSTALL (LIBRSVG): Typo. diff --git a/java/INSTALL b/java/INSTALL index 21b61270c7f..1d6f1535647 100644 --- a/java/INSTALL +++ b/java/INSTALL @@ -405,7 +405,7 @@ interested third-party developers, and librsvg is addressed below. LIBRSVG -Librsvg 2.40.21, the final release of the librsvg 2.40.x series, the +Librsvg 2.40.21, the final release in the librsvg 2.40.x series, the last to be implemented in C, is provided as: librsvg-2.40.21-emacs.tar.gz commit 7052654515d4131ffa4b478c302a152a2602c1d8 Author: Po Lu Date: Fri Jun 7 20:38:56 2024 +0800 Document compilation of librsvg on Android * java/INSTALL (LIBRSVG): New section. (BUILDING WITH OLD NDK VERSIONS): Update recommended invocation of configure in the case of a combined toolchain. diff --git a/java/INSTALL b/java/INSTALL index a4cc97e7710..21b61270c7f 100644 --- a/java/INSTALL +++ b/java/INSTALL @@ -139,10 +139,10 @@ compiler. For example: ./configure [...] \ ANDROID_CC="i686-linux-android-gcc \ - --sysroot=/path/to/ndk/platforms/android-14/arch-x86/" - ANDROID_CFLAGS="-isystem /path/to/ndk/sysroot/usr/include \ - -isystem /path/to/ndk/sysroot/usr/include/i686-linux-android \ - -D__ANDROID_API__=14" + --sysroot=/path/to/ndk/platforms/android-14/arch-x86/ + -isystem /path/to/ndk/sysroot/usr/include \ + -isystem /path/to/ndk/sysroot/usr/include/i686-linux-android \ + -D__ANDROID_API__=14" Where __ANDROID_API__ and the version identifier in "platforms/android-14" defines the version of Android you are building @@ -391,7 +391,7 @@ provided as: giflib-5.2.1-emacs.tar.gz libjpeg-turbo-3.0.2-emacs.tar.gz libpng-1.6.41-emacs.tar.gz - tiff-4.5.0-emacs.tar.gz + tiff-4.5.1-emacs.tar.gz Of which all but libjpeg-turbo-3.0.2-emacs.tar.gz should compile on every supported Android system and toolchain; where the latter does not @@ -400,14 +400,46 @@ substitute. Of the three remaining image-related dependencies, libwebp provides upstream support for ndk-build, ImageMagick has been ported by -interested third-party developers, while librsvg2, with its numerous and -unnavigable web of dependencies and toolchains for non-C languages, -would be such a great undertaking to port that we do not anticipate its -ever becoming available. - -We are actively searching for alternatives to librsvg2 that are feasible -to port, or better yet, natively support Android. Please send -suggestions or patches to emacs-devel@gnu.org. +interested third-party developers, and librsvg is addressed below. + + +LIBRSVG + +Librsvg 2.40.21, the final release of the librsvg 2.40.x series, the +last to be implemented in C, is provided as: + + librsvg-2.40.21-emacs.tar.gz + +and has been lightly edited for compatibility with environments where +Pango cannot provide fonts, with the obvious caveat that text cannot be +displayed with the resulting librsvg binary. Among numerous +dependencies are PCRE, and: + + libiconv-1.17-emacs.tar.gz + libffi-3.4.5-emacs.tar.gz + pango-1.38.1-emacs.tar.gz + glib-2.33.14-emacs.tar.gz + libcroco-0.6.13-emacs.tar.gz + pixman-0.38.4-emacs.tar.gz + libxml2-2.12.4-emacs.tar.gz + gdk-pixbuf-2.22.1-emacs.tar.gz + giflib-5.2.1-emacs.tar.gz + libjpeg-turbo-3.0.2-emacs.tar.gz + libpng-1.6.41-emacs.tar.gz + tiff-4.5.1-emacs.tar.gz + cairo-1.16.0-emacs.tar.gz + +which must be individually unpacked and their contents provided on the +command line, as with other dependencies. They will introduce +approximately 8 MiB's worth of shared libraries into the finished +application package. It is unlikely that later releases of librsvg will +ever be ported, as they have migrated to a different implementation +language. + +No effort has been expended on providing the latest and greatest of +these dependencies either; rather, the versions chosen are often the +earliest versions required by their dependents, these being the smaller +of all available versions, and generally more straightforward to port. SELINUX commit 57c0549c4f99703589279f426a50ae8acab17905 Author: Arash Esbati Date: Wed Jun 5 21:37:43 2024 +0200 Fix names of TeX-related major-modes * lisp/ffap.el (ffap-alist, ffap-string-at-point-mode-alist): Add entries for mode names introduced in AUCTeX v14. Use `plain-tex-mode' for built-in mode. (bug#71376) diff --git a/lisp/ffap.el b/lisp/ffap.el index b2b681b7c44..9fd753fc0e5 100644 --- a/lisp/ffap.el +++ b/lisp/ffap.el @@ -751,8 +751,10 @@ This uses `ffap-file-exists-string', which may try adding suffixes from ("\\.\\([chCH]\\|cc\\|hh\\)\\'" . ffap-c-mode) ; stdio.h (fortran-mode . ffap-fortran-mode) ("\\.[fF]\\'" . ffap-fortran-mode) - (tex-mode . ffap-tex-mode) ; search ffap-tex-path + (plain-tex-mode . ffap-tex-mode) ; search ffap-tex-path (latex-mode . ffap-latex-mode) ; similar + (plain-TeX-mode . ffap-tex-mode) ; AUCTeX v14 counterpart + (LaTeX-mode . ffap-latex-mode) ; ditto ("\\.\\(tex\\|sty\\|doc\\|cls\\)\\'" . ffap-tex) ("\\.bib\\'" . ffap-bib) ; search ffap-bib-path ("\\`\\." . ffap-home) ; .emacs, .bashrc, .profile @@ -1064,7 +1066,10 @@ If a given RFC isn't in these then `ffap-rfc-path' is offered." (math-mode ",-:$+<>@-Z_[:lower:]~`" "<" "@>;.,!?`:") ;; (La)TeX: don't allow braces (latex-mode "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") - (tex-mode "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") + (plain-tex-mode "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") + ;; AUCTeX v14 counterparts: + (LaTeX-mode "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") + (plain-TeX-mode "--:\\\\$+<>@-Z_[:alpha:]~*?" "<@" "@>;.,!:") ;; XML: don't allow angle brackets (xml-mode "--:\\\\${}+@-Z_[:alpha:]~*?#" "{<@" "@>;.,!:}") (nxml-mode "--:\\\\${}+@-Z_[:alpha:]~*?#" "{<@" "@>;.,!:}") commit 6dd3c6023e53779035161ef71d342163d8c8a47a Author: Basil L. Contovounesios Date: Fri Jun 7 11:05:19 2024 +0200 Fix tree-sitter markup in Elisp manual * doc/lispref/parsing.texi (Retrieving Nodes, User-defined Things) (Multiple Languages): Mark up variable names as @code, not metasyntactic @var. diff --git a/doc/lispref/parsing.texi b/doc/lispref/parsing.texi index 1e91100e0d4..21e14b4632c 100644 --- a/doc/lispref/parsing.texi +++ b/doc/lispref/parsing.texi @@ -932,7 +932,7 @@ This function repeatedly finds the parents of @var{node}, and returns the parent that satisfies @var{predicate}. @var{predicate} can be either a function that takes a node as argument and returns @code{t} or @code{nil}, or a regexp matching node type names, or other valid -predicates described in @var{treesit-thing-settings}. If no parent +predicates described in @code{treesit-thing-settings}. If no parent satisfies @var{predicates}, this function returns @code{nil}. Normally this function only looks at the parents of @var{node} but not @@ -1536,7 +1536,7 @@ The ``things'' feature in Emacs is independent of the pattern matching feature of tree-sitter, and comparatively less powerful, but more suitable for navigation and traversing the parse tree. -You can define things with @var{treesit-thing-settings}. +You can define things with @code{treesit-thing-settings}. @defvar treesit-thing-settings This is an alist of thing definitions for each language. The key of @@ -1564,7 +1564,7 @@ list. For example, @w{@code{(or sexp sentence)}} defines something that's either a @code{sexp} thing or a @code{sentence} thing, as defined by some other rule in the alist. -Here's an example @var{treesit-thing-settings} for C and C++: +Here's an example @code{treesit-thing-settings} for C and C++: @example @group @@ -1624,7 +1624,7 @@ A positive @var{arg} means moving forward that many instances of @code{end}, stop at the end of @var{thing}. Like in @code{treesit-thing-prev}, @var{thing} can be a thing symbol -defined in @var{treesit-thing-settings}, or a thing definition. +defined in @code{treesit-thing-settings}, or a thing definition. @var{tactic} determines how this function moves between things. It can be @code{nested}, @code{top-level}, @code{restricted}, or @code{nil}. @@ -1651,7 +1651,7 @@ i.e., start position must be strictly greater than @var{position}, and end position must be strictly less than @var{position}. @var{thing} can be either a thing symbol defined in -@var{treesit-thing-settings}, or a thing definition. +@code{treesit-thing-settings}, or a thing definition. @end defun @findex treesit-beginning-of-thing @@ -1663,11 +1663,12 @@ thing, @code{treesit-end-of-thing} moves to the end of a thing, and @code{treesit-thing-at-point} returns the thing at point. There are also defun commands that specifically use the @code{defun} -definition (as a fallback of @var{treesit-defun-type-regexp}), like +definition (as a fallback of @code{treesit-defun-type-regexp}), like @code{treesit-beginning-of-defun}, @code{treesit-end-of-defun}, and @code{treesit-defun-at-point}. In addition, these functions use -@var{treesit-defun-tactic} as the navigation tactic. They are described -in more detail in other sections (@pxref{Tree-sitter Major Modes}). +@code{treesit-defun-tactic} as the navigation tactic. They are +described in more detail in other sections (@pxref{Tree-sitter Major +Modes}). @node Multiple Languages @section Parsing Text in Multiple Languages @@ -1692,23 +1693,22 @@ of the buffer. The parse tree of the primary parser is usually used to determine the ranges in which the embedded parsers operate. @vindex treesit-primary-parser -Major modes should set @var{treesit-primary-parser} to the primary +Major modes should set @code{treesit-primary-parser} to the primary parser before calling @code{treesit-major-mode-setup}, so that Emacs can configure the primary parser correctly for font-lock and other features. -Lisp programs should call @code{treesit-update-ranges} to make sure -the ranges for each parser are correct before using parsers in a -buffer, and call @code{treesit-language-at} to figure out the language -responsible for the text at some position. These two functions don't -work by themselves, they need major modes to set -@var{treesit-range-settings} and -@var{treesit-language-at-point-function}, which do the actual work. +Lisp programs should call @code{treesit-update-ranges} to make sure the +ranges for each parser are correct before using parsers in a buffer, and +call @code{treesit-language-at} to figure out the language responsible +for the text at some position. These two functions don't work by +themselves; they need major modes to set @code{treesit-range-settings} +and @code{treesit-language-at-point-function}, which do the actual work. These functions and variables are explained in more detail towards the end of the section. -@b{In short}, multi-language major modes should set -@var{treesit-primary-parser}, @var{treesit-range-settings}, and -@var{treesit-language-at-point-function} before calling +In short, multi-language major modes should set +@code{treesit-primary-parser}, @code{treesit-range-settings}, and +@code{treesit-language-at-point-function} before calling @code{treesit-major-mode-setup}. @heading Getting and setting ranges commit 025c3eaf9cc9956ff5a10a7bf09a26f176919a28 Author: Basil L. Contovounesios Date: Fri Jun 7 10:47:14 2024 +0200 Fix user-error usage in sgml-mode.el * lisp/textmodes/sgml-mode.el (html-mode--image-yank-handler): Address recent byte-compiler format string warnings (bug#71379). diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 1f440ebf7d0..5c744374128 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -2470,10 +2470,10 @@ To work around that, do: (defun html-mode--image-yank-handler (type image) (let ((file (read-file-name (format "Save %s image to: " type)))) (when (file-directory-p file) - (user-error "%s is a directory")) + (user-error "%s is a directory" file)) (when (and (file-exists-p file) (not (yes-or-no-p (format "%s exists; overwrite?" file)))) - (user-error "%s exists")) + (user-error "%s exists" file)) (with-temp-buffer (set-buffer-multibyte nil) (insert image)