[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> </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