emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/emacs-lisp/lisp-mnt.el [lexbind]


From: Miles Bader
Subject: [Emacs-diffs] Changes to emacs/lisp/emacs-lisp/lisp-mnt.el [lexbind]
Date: Tue, 14 Oct 2003 19:32:26 -0400

Index: emacs/lisp/emacs-lisp/lisp-mnt.el
diff -c emacs/lisp/emacs-lisp/lisp-mnt.el:1.36.4.1 
emacs/lisp/emacs-lisp/lisp-mnt.el:1.36.4.2
*** emacs/lisp/emacs-lisp/lisp-mnt.el:1.36.4.1  Fri Apr  4 01:20:16 2003
--- emacs/lisp/emacs-lisp/lisp-mnt.el   Tue Oct 14 19:32:21 2003
***************
*** 1,6 ****
! ;;; lisp-mnt.el --- minor mode for Emacs Lisp maintainers
  
! ;; Copyright (C) 1992, 1994, 1997, 2000, 2001 Free Software Foundation, Inc.
  
  ;; Author: Eric S. Raymond <address@hidden>
  ;; Maintainer: FSF
--- 1,6 ----
! ;;; lisp-mnt.el --- utility functions for Emacs Lisp maintainers
  
! ;; Copyright (C) 1992, 1994, 1997, 2000, 2001, 2003 Free Software Foundation, 
Inc.
  
  ;; Author: Eric S. Raymond <address@hidden>
  ;; Maintainer: FSF
***************
*** 27,33 ****
  
  ;;; Commentary:
  
! ;; This minor mode adds some services to Emacs-Lisp editing mode.
  ;;
  ;; First, it knows about the header conventions for library packages.
  ;; One entry point supports generating synopses from a library directory.
--- 27,33 ----
  
  ;;; Commentary:
  
! ;; This library adds some services to Emacs-Lisp editing mode.
  ;;
  ;; First, it knows about the header conventions for library packages.
  ;; One entry point supports generating synopses from a library directory.
***************
*** 79,85 ****
  ;; in this file is mildly bogus because the maintainer line is redundant.
  ;;    The idea behind these two fields is to be able to write a Lisp function
  ;; that does "send mail to the author" without having to mine the name out by
! ;; hand. Please be careful about surrounding the network address with <> if
  ;; there's also a name in the field.
  ;;
  ;;    * Created line --- optional, gives the original creation date of the
--- 79,85 ----
  ;; in this file is mildly bogus because the maintainer line is redundant.
  ;;    The idea behind these two fields is to be able to write a Lisp function
  ;; that does "send mail to the author" without having to mine the name out by
! ;; hand.  Please be careful about surrounding the network address with <> if
  ;; there's also a name in the field.
  ;;
  ;;    * Created line --- optional, gives the original creation date of the
***************
*** 124,130 ****
  ;;; Variables:
  
  (defgroup lisp-mnt nil
!   "Minor mode for Emacs Lisp maintainers."
    :prefix "lm-"
    :group 'maint)
  
--- 124,130 ----
  ;;; Variables:
  
  (defgroup lisp-mnt nil
!   "Utility functions for Emacs Lisp maintainers."
    :prefix "lm-"
    :group 'maint)
  
***************
*** 156,161 ****
--- 156,166 ----
    :type 'integer
    :group 'lisp-mnt)
  
+ (defcustom lm-any-header ".*"
+   "Regexp which matches start of any section."
+   :type 'regexp
+   :group 'lisp-mnt)
+ 
  (defcustom lm-commentary-header "Commentary\\|Documentation"
    "Regexp which matches start of documentation section."
    :type 'regexp
***************
*** 175,182 ****
  If called with optional MODE and with value `section',
  return section regexp instead."
    (if (eq mode 'section)
!       (concat "^;;;;* " header ":[ \t]*$")
!     (concat lm-header-prefix header "[ \t]*:[ \t]*")))
  
  (defun lm-get-package-name ()
    "Return package name by looking at the first line."
--- 180,187 ----
  If called with optional MODE and with value `section',
  return section regexp instead."
    (if (eq mode 'section)
!       (concat "^;;;;* \\(" header "\\):[ \t]*$")
!     (concat lm-header-prefix "\\(" header "\\)[ \t]*:[ \t]*")))
  
  (defun lm-get-package-name ()
    "Return package name by looking at the first line."
***************
*** 188,217 ****
                    (match-end 1)))
        (match-string-no-properties 1))))
  
! (defun lm-section-mark (header &optional after)
    "Return the buffer location of a given section start marker.
  The HEADER is the section mark string to search for.
! If AFTER is non-nil, return the location of the next line."
    (save-excursion
      (let ((case-fold-search t))
        (goto-char (point-min))
        (if (re-search-forward (lm-get-header-re header 'section) nil t)
!         (progn
!           (beginning-of-line)
!           (if after (forward-line 1))
!           (point))))))
  
! (defsubst lm-code-mark ()
    "Return the buffer location of the `Code' start marker."
!   (lm-section-mark "Code"))
  
! (defsubst lm-commentary-mark ()
    "Return the buffer location of the `Commentary' start marker."
!   (lm-section-mark lm-commentary-header))
  
! (defsubst lm-history-mark ()
    "Return the buffer location of the `History' start marker."
!   (lm-section-mark lm-history-header))
  
  (defsubst lm-copyright-mark ()
    "Return the buffer location of the `Copyright' line."
--- 193,257 ----
                    (match-end 1)))
        (match-string-no-properties 1))))
  
! (defun lm-section-start (header &optional after)
    "Return the buffer location of a given section start marker.
  The HEADER is the section mark string to search for.
! If AFTER is non-nil, return the location of the next line.
! If the given section does not exist, return nil."
    (save-excursion
      (let ((case-fold-search t))
        (goto-char (point-min))
        (if (re-search-forward (lm-get-header-re header 'section) nil t)
!           (line-beginning-position (if after 2))))))
! (defalias 'lm-section-mark 'lm-section-start)
  
! (defun lm-section-end (header)
!   "Return the buffer location of the end of a given section.
! The HEADER is the section string marking the beginning of the
! section.  If the given section does not exist, return nil.
! 
! The end of the section is defined as the beginning of the next
! section of the same level or lower.  The function
! `lisp-outline-level' is used to compute the level of a section.
! If no such section exists, return the end of the buffer."
!   (let ((start (lm-section-start header)))
!     (when start
!       (save-excursion
!         (goto-char start)
!         (let ((level (lisp-outline-level))
!               (case-fold-search t)
!               next-section-found)
!           (beginning-of-line 2)
!           (while (and (setq next-section-found
!                             (re-search-forward
!                              (lm-get-header-re lm-any-header 'section)
!                              nil t))
!                       (> (save-excursion
!                            (beginning-of-line)
!                            (lisp-outline-level))
!                          level)))
!           (if next-section-found
!               (line-beginning-position)
!             (point-max)))))))
! 
! (defsubst lm-code-start ()
    "Return the buffer location of the `Code' start marker."
!   (lm-section-start "Code"))
! (defalias 'lm-code-mark 'lm-code-start)
  
! (defsubst lm-commentary-start ()
    "Return the buffer location of the `Commentary' start marker."
!   (lm-section-start lm-commentary-header))
! (defalias 'lm-commentary-mark 'lm-commentary-start)
! 
! (defsubst lm-commentary-end ()
!   "Return the buffer location of the `Commentary' section end."
!   (lm-section-end lm-commentary-header))
  
! (defsubst lm-history-start ()
    "Return the buffer location of the `History' start marker."
!   (lm-section-start lm-history-header))
! (defalias 'lm-history-mark 'lm-history-start)
  
  (defsubst lm-copyright-mark ()
    "Return the buffer location of the `Copyright' line."
***************
*** 219,226 ****
      (let ((case-fold-search t))
        (goto-char (point-min))
        (if (re-search-forward lm-copyright-prefix nil t)
!         (point))))
!   )
  
  (defun lm-header (header)
    "Return the contents of the header named HEADER."
--- 259,265 ----
      (let ((case-fold-search t))
        (goto-char (point-min))
        (if (re-search-forward lm-copyright-prefix nil t)
!         (point)))))
  
  (defun lm-header (header)
    "Return the contents of the header named HEADER."
***************
*** 257,271 ****
  ;; These give us smart access to the header fields and commentary
  
  (defmacro lm-with-file (file &rest body)
!   "Make a buffer with FILE current, and execute BODY.
! If FILE isn't in a buffer, load it in, and kill it after BODY is executed."
    (let ((filesym (make-symbol "file")))
!     `(save-excursion
!        (let ((,filesym ,file))
!        (if ,filesym (set-buffer (find-file-noselect ,filesym)))
!        (prog1 (progn ,@body)
!          (if (and ,filesym (not (get-buffer-window (current-buffer) t)))
!              (kill-buffer (current-buffer))))))))
  (put 'lm-with-file 'lisp-indent-function 1)
  (put 'lm-with-file 'edebug-form-spec t)
  
--- 296,311 ----
  ;; These give us smart access to the header fields and commentary
  
  (defmacro lm-with-file (file &rest body)
!   "Execute BODY in a buffer containing the contents of FILE.
! If FILE is nil, execute BODY in the current buffer."
    (let ((filesym (make-symbol "file")))
!     `(let ((,filesym ,file))
!        (if ,filesym
!          (with-temp-buffer
!            (insert-file-contents ,filesym)
!            ,@body)
!        (save-excursion 
!          ,@body)))))
  (put 'lm-with-file 'lisp-indent-function 1)
  (put 'lm-with-file 'edebug-form-spec t)
  
***************
*** 417,423 ****
    (let ((keys (lm-keywords-list file)))
      (catch 'keyword-found
        (while keys
!       (if (assoc (intern (car keys)) finder-known-keywords)
            (throw 'keyword-found t))
        (setq keys (cdr keys)))
        nil)))
--- 457,464 ----
    (let ((keys (lm-keywords-list file)))
      (catch 'keyword-found
        (while keys
!       (if (assoc (intern (car keys)) 
!                  (with-no-warnings finder-known-keywords))
            (throw 'keyword-found t))
        (setq keys (cdr keys)))
        nil)))
***************
*** 431,448 ****
  
  (defun lm-commentary (&optional file)
    "Return the commentary in file FILE, or current buffer if FILE is nil.
! The value is returned as a string.  In the file, the commentary starts
! with the tag `Commentary' or `Documentation' and ends with one of the
! tags `Code', `Change Log' or `History'."
    (lm-with-file file
!     (let ((commentary (lm-commentary-mark))
!         (change-log (lm-history-mark))
!         (code (lm-code-mark)))
!       (cond
!        ((and commentary change-log)
!       (buffer-substring-no-properties commentary change-log))
!        ((and commentary code)
!       (buffer-substring-no-properties commentary code))))))
  
  ;;; Verification and synopses
  
--- 472,485 ----
  
  (defun lm-commentary (&optional file)
    "Return the commentary in file FILE, or current buffer if FILE is nil.
! Return the value as a string.  In the file, the commentary
! section starts with the tag `Commentary' or `Documentation' and
! ends just before the next section.  If the commentary section is
! absent, return nil."
    (lm-with-file file
!     (let ((start (lm-commentary-start)))
!       (when start
!         (buffer-substring-no-properties start (lm-commentary-end))))))
  
  ;;; Verification and synopses
  
***************
*** 531,556 ****
      (read-file-name "Synopsis for (file or dir): ")))
  
    (if (and file (file-directory-p file))
!       (with-temp-buffer
!       (mapcar
!        (lambda (f)
!          (if (string-match "\\.el\\'" f)
!              (let ((syn (lm-synopsis f)))
!                (if syn
!                    (progn
!                      (insert f ":")
!                      (lm-insert-at-column lm-comment-column syn "\n"))
!                  (when showall
!                    (insert f ":")
!                    (lm-insert-at-column lm-comment-column "NA\n"))))))
!        (directory-files file)))
      (save-excursion
!       (if file
!         (find-file file))
!       (prog1
!         (lm-summary)
!       (if file
!           (kill-buffer (current-buffer)))))))
  
  (eval-when-compile (defvar report-emacs-bug-address))
  
--- 568,588 ----
      (read-file-name "Synopsis for (file or dir): ")))
  
    (if (and file (file-directory-p file))
!       (with-output-to-temp-buffer "*Synopsis*"
!         (set-buffer standard-output)
!         (dolist (f (directory-files file nil ".*\\.el\\'"))
!           (let ((syn (lm-synopsis (expand-file-name f file))))
!             (when (or syn showall)
!               (insert f ":")
!               (lm-insert-at-column lm-comment-column (or syn "NA") "\n")))))
      (save-excursion
!       (let ((must-kill (and file (not (get-file-buffer file)))))
!         (when file (find-file file))
!         (prog1
!             (if (interactive-p)
!                 (message "%s" (lm-summary))
!               (lm-summary))
!           (when must-kill (kill-buffer (current-buffer))))))))
  
  (eval-when-compile (defvar report-emacs-bug-address))
  
***************
*** 576,579 ****
--- 608,612 ----
  
  (provide 'lisp-mnt)
  
+ ;;; arch-tag: fa3c5ab4-a37b-4e46-b7cf-b6d78b90e69e
  ;;; lisp-mnt.el ends here




reply via email to

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