emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 34a97f045a: Merge from origin/emacs-28


From: Stefan Kangas
Subject: master 34a97f045a: Merge from origin/emacs-28
Date: Sat, 17 Sep 2022 00:44:46 -0400 (EDT)

branch: master
commit 34a97f045a13fe6ad279f57ecdc6f7a3bee7caa2
Merge: 637cf3ba49 320f0cac80
Author: Stefan Kangas <stefankangas@gmail.com>
Commit: Stefan Kangas <stefankangas@gmail.com>

    Merge from origin/emacs-28
    
    320f0cac80 ; * etc/NEWS: Fix typo.
    5dbe4fa64a Simplify regexp in make-news-html-file
    069ffbda09 * admin/admin.el (make-news-html-file): Set id on correct ...
    bcc84ac7fe Add version headlines to HTML NEWS export
    5d227ae83e ; * etc/NEWS: Fix formatting.
    
    # Conflicts:
    #       etc/NEWS
---
 admin/admin.el | 87 +++++++++++++++++++++++++++++++++++-----------------------
 etc/NEWS.28    | 26 +++++++++---------
 2 files changed, 66 insertions(+), 47 deletions(-)

diff --git a/admin/admin.el b/admin/admin.el
index 60073f103b..247bbd5f4e 100644
--- a/admin/admin.el
+++ b/admin/admin.el
@@ -781,7 +781,7 @@ Optional argument TYPE is type of output (nil means all)."
 (defvar admin--org-export-headers-format "\
 #+title: GNU Emacs %s NEWS -- history of user-visible changes
 #+author:
-#+options: author:nil creator:nil toc:1 num:2 *:nil \\n:t ^:nil tex:nil
+#+options: author:nil creator:nil toc:2 num:3 *:nil \\n:t ^:nil tex:nil
 #+language: en
 #+HTML_LINK_HOME: /software/emacs
 #+HTML_LINK_UP: /software/emacs
@@ -859,12 +859,13 @@ $Date: %s $
   (unless (file-exists-p (expand-file-name "src/emacs.c" root))
     (user-error "%s doesn't seem to be the root of an Emacs source tree" root))
   (admin--require-external-package 'htmlize)
-  (let* ((orig (expand-file-name "etc/NEWS" root))
-         (new (expand-file-name (format "etc/NEWS.%s.org" version) root))
-         (html-file (format "%s.html" (file-name-base new)))
+  (let* ((newsfile (expand-file-name "etc/NEWS" root))
+         (orgfile (expand-file-name (format "etc/NEWS.%s.org" version) root))
+         (html (format "%s.html" (file-name-base orgfile)))
          (copyright-years (format-time-string "%Y")))
-    (copy-file orig new t)
-    (find-file new)
+    (delete-file orgfile)
+    (copy-file newsfile orgfile t)
+    (find-file orgfile)
 
     ;; Find the copyright range.
     (goto-char (point-min))
@@ -890,30 +891,17 @@ $Date: %s $
 
     ;; Use Org-mode markers for 'symbols', 'C-x k', etc.
     (replace-regexp-in-region
-     (rx-let ((key (seq
-                    ;; Modifier (optional)
-                    (? (any "ACHMSs") "-")
-                    (or
-                     ;; single key
-                     (not (any " \n"))
-                     ;; "<return>" and "<remap> <foo>"
-                     (seq "<"
-                          (+ (any "A-Za-z-"))
-                          (+ (seq " " (+ (any "A-Za-z-"))))
-                          ">")
-                     "NUL" "RET" "LFD" "TAB"
-                     "ESC" "SPC" "DEL")))
-              (email (seq (+ (not (any " @\n")))
-                          "@"
-                          (+ (not (any " @\n")))))
-              (lisp-symbol (regexp lisp-mode-symbol-regexp)))
-       (rx "'" (group
-                (or lisp-symbol
-                    email
-                    (seq "M-x " lisp-symbol)
-                    (seq key (+ " " key))))
-           "'"))
-     "~\\1~" (point-min) (point-max))
+     (rx (or (: (group (in " \t\n("))
+                "'"
+                (group (+ (or (not (in "'\n"))
+                              (: "'" (not (in " .,\t\n)"))))))
+                "'"
+                (group (in ",.;:!? \t\n)")))
+             ;; Buffer names, e.g. "*scratch*".
+             (: "\""
+                (group-n 2 "*" (+ (not (in "*\""))) "*")
+                "\"")))
+     "\\1~\\2~\\3" (point-min) (point-max))
 
     ;; Format code blocks.
     (while (re-search-forward "^    " nil t)
@@ -939,6 +927,37 @@ $Date: %s $
     (org-mode)
     (save-buffer)
 
+    ;; Make everything one level lower.
+    (goto-char (point-min))
+    (while (re-search-forward (rx bol (group (+ "*")) " ") nil t)
+      (replace-match "*\\1" nil nil nil 1))
+
+    ;; Insert anchors for different versions.
+    (goto-char (point-min))
+    (let (last-major last-minor)
+      (while (re-search-forward (rx bol "** " (+ (not "\n")) "in Emacs "
+                                    (group digit digit) "." (group digit)
+                                    eol)
+                                nil t)
+        (unless (and (equal (match-string 1) last-major)
+                     (equal (match-string 2) last-minor))
+          (setq last-major (match-string 1))
+          (setq last-minor (match-string 2))
+          (forward-line -1)
+          (insert (format
+                   (concat
+                    "#+HTML: <p>&nbsp;</p>\n"
+                    "* Changes in Emacs %s.%s\n"
+                    ;; Add anchor to allow linking to
+                    ;; e.g. "NEWS.28.html#28.1".
+                    ":PROPERTIES:\n"
+                    ":CUSTOM_ID: %s.%s\n"
+                    ":END:\n")
+                   last-major last-minor
+                   last-major last-minor)))))
+
+    (save-buffer)
+
     ;; Make the HTML export.
     (let* ((org-html-postamble
             (format admin--org-html-postamble
@@ -950,12 +969,12 @@ $Date: %s $
       (org-html-export-as-html))
 
     ;; Write HTML to file.
-    (let ((new (expand-file-name html-file (expand-file-name "etc" root))))
-      (write-file new)
+    (let ((html (expand-file-name html (expand-file-name "etc" root))))
+      (write-file html)
       (unless noninteractive
-        (find-file new)
+        (find-file html)
         (html-mode))
-      (message "Successfully exported HTML to %s" new))))
+      (message "Successfully exported HTML to %s" html))))
 
 
 ;; Stuff to check new `defcustom's got :version tags.
diff --git a/etc/NEWS.28 b/etc/NEWS.28
index 47e82a96e6..8694b575a7 100644
--- a/etc/NEWS.28
+++ b/etc/NEWS.28
@@ -1319,18 +1319,18 @@ comma-separated list.
 *** New commands to filter the package list.
 The filter commands are bound to the following keys:
 
-key             binding
----             -------
-/ a             package-menu-filter-by-archive
-/ d             package-menu-filter-by-description
-/ k             package-menu-filter-by-keyword
-/ N             package-menu-filter-by-name-or-description
-/ n             package-menu-filter-by-name
-/ s             package-menu-filter-by-status
-/ v             package-menu-filter-by-version
-/ m             package-menu-filter-marked
-/ u             package-menu-filter-upgradable
-/ /             package-menu-clear-filter
+    key             binding
+    ---             -------
+    / a             package-menu-filter-by-archive
+    / d             package-menu-filter-by-description
+    / k             package-menu-filter-by-keyword
+    / N             package-menu-filter-by-name-or-description
+    / n             package-menu-filter-by-name
+    / s             package-menu-filter-by-status
+    / v             package-menu-filter-by-version
+    / m             package-menu-filter-marked
+    / u             package-menu-filter-upgradable
+    / /             package-menu-clear-filter
 
 *** Option to automatically native-compile packages upon installation.
 Customize the user option 'package-native-compile' to enable automatic
@@ -2623,7 +2623,7 @@ non-nil.
 
 ** ERC
 
-*** Starting with Emacs 28.1 and ERC 5.4, see the ERC-NEWS file for
+Starting with Emacs 28.1 and ERC 5.4, see the ERC-NEWS file for
 user-visible changes in ERC.
 
 ** Xwidget Webkit mode



reply via email to

[Prev in Thread] Current Thread [Next in Thread]