emacs-diffs
[Top][All Lists]
Advanced

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

master 963a9ff: Globally sanitize single-file package long descriptions


From: Stefan Kangas
Subject: master 963a9ff: Globally sanitize single-file package long descriptions (Bug#37548)
Date: Thu, 23 Jan 2020 17:08:19 -0500 (EST)

branch: master
commit 963a9ffd66cb29f0370e9a4b854dddda242c54a6
Author: Bruno Félix Rezende Ribeiro <address@hidden>
Commit: Stefan Kangas <address@hidden>

    Globally sanitize single-file package long descriptions (Bug#37548)
    
    Consistent with multi-file package descriptions which don’t have
    commentary sections nor double semicolon prefixes.
    * lisp/emacs-lisp/lisp-mnt.el (lm-commentary): Remove commentary
    header, double semicolon prefixes of each line, trailing new-lines and
    trailing white-space from commentary.
    * lisp/emacs-lisp/package.el (package--get-description)
    (describe-package-1):
    * lisp/finder.el (finder-commentary):
    * lisp/info.el (Info-finder-find-node): Remove ad-hoc sanitation.
---
 lisp/emacs-lisp/lisp-mnt.el | 13 ++++++++++++-
 lisp/emacs-lisp/package.el  | 29 +++++++----------------------
 lisp/finder.el              |  7 -------
 lisp/info.el                | 16 ++--------------
 4 files changed, 21 insertions(+), 44 deletions(-)

diff --git a/lisp/emacs-lisp/lisp-mnt.el b/lisp/emacs-lisp/lisp-mnt.el
index ceb9b6b..0d57bc1 100644
--- a/lisp/emacs-lisp/lisp-mnt.el
+++ b/lisp/emacs-lisp/lisp-mnt.el
@@ -485,7 +485,18 @@ absent, return nil."
   (lm-with-file file
     (let ((start (lm-commentary-start)))
       (when start
-        (buffer-substring-no-properties start (lm-commentary-end))))))
+        (replace-regexp-in-string       ; Get rid of...
+         "[[:blank:]]*$" ""             ; trailing white-space
+         (replace-regexp-in-string
+          (format "%s\\|%s\\|%s"
+                  ;; commentary header
+                  (concat "^;;;[[:blank:]]*\\("
+                          lm-commentary-header
+                          "\\):[[:blank:]\n]*")
+                  "^;;[[:blank:]]*"     ; double semicolon prefix
+                  "[[:blank:]\n]*\\'")  ; trailing new-lines
+          "" (buffer-substring-no-properties
+              start (lm-commentary-end))))))))
 
 (defun lm-homepage (&optional file)
   "Return the homepage in file FILE, or current buffer if FILE is nil."
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 4f182fd..a9508c1 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -2376,18 +2376,9 @@ The description is read from the installed package 
files."
      result
 
      ;; Look for Commentary header.
-     (let ((mainsrcfile (expand-file-name (format "%s.el" (package-desc-name 
desc))
-                                          srcdir)))
-       (when (file-readable-p mainsrcfile)
-         (with-temp-buffer
-           (insert (or (lm-commentary mainsrcfile) ""))
-           (goto-char (point-min))
-           (when (re-search-forward "^;;; Commentary:\n" nil t)
-             (replace-match ""))
-           (while (re-search-forward "^\\(;+ ?\\)" nil t)
-             (replace-match ""))
-           (buffer-string))))
-     )))
+     (lm-commentary (expand-file-name
+                     (format "%s.el" (package-desc-name desc)) srcdir))
+     "")))
 
 (defun describe-package-1 (pkg)
   "Insert the package description for PKG.
@@ -2582,16 +2573,10 @@ Helper function for `describe-package'."
       (if built-in
           ;; For built-in packages, get the description from the
           ;; Commentary header.
-          (let ((fn (locate-file (format "%s.el" name) load-path
-                                 load-file-rep-suffixes))
-                (opoint (point)))
-            (insert (or (lm-commentary fn) ""))
-            (save-excursion
-              (goto-char opoint)
-              (when (re-search-forward "^;;; Commentary:\n" nil t)
-                (replace-match ""))
-              (while (re-search-forward "^\\(;+ ?\\)" nil t)
-                (replace-match ""))))
+          (insert (or (lm-commentary (locate-file (format "%s.el" name)
+                                                  load-path
+                                                  load-file-rep-suffixes))
+                      ""))
 
         (if (package-installed-p desc)
             ;; For installed packages, get the description from the
diff --git a/lisp/finder.el b/lisp/finder.el
index 96359b0..dc14b27 100644
--- a/lisp/finder.el
+++ b/lisp/finder.el
@@ -394,13 +394,6 @@ FILE should be in a form suitable for passing to 
`locate-library'."
     (erase-buffer)
     (insert str)
     (goto-char (point-min))
-    (delete-blank-lines)
-    (goto-char (point-max))
-    (delete-blank-lines)
-    (goto-char (point-min))
-    (while (re-search-forward "^;+ ?" nil t)
-      (replace-match "" nil nil))
-    (goto-char (point-min))
     (while (re-search-forward "\\<\\([-[:alnum:]]+\\.el\\)\\>" nil t)
       (if (locate-library (match-string 1))
           (make-text-button (match-beginning 1) (match-end 1)
diff --git a/lisp/info.el b/lisp/info.el
index 3d4bdb9..3015e60 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3780,20 +3780,8 @@ Build a menu of the possible matches."
     ;; there is no "nxml.el" (it's nxml-mode.el).
     ;; But package.el makes the same assumption.
     ;; I think nxml is the only exception - maybe it should be just be renamed.
-    (let ((str (ignore-errors (lm-commentary (find-library-name nodename)))))
-      (if (null str)
-         (insert "Can’t find package description.\n\n")
-       (insert
-        (with-temp-buffer
-          (insert str)
-          (goto-char (point-min))
-          (delete-blank-lines)
-          (goto-char (point-max))
-          (delete-blank-lines)
-          (goto-char (point-min))
-          (while (re-search-forward "^;+ ?" nil t)
-            (replace-match "" nil nil))
-          (buffer-string))))))))
+    (insert (or (ignore-errors (lm-commentary (find-library-name nodename)))
+                (insert "Can’t find package description.\n\n"))))))
 
 ;;;###autoload
 (defun info-finder (&optional keywords)



reply via email to

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