Source

xemacs-packages / hack-package-index.el

steveb f854b38 



martinb 16d1412 
steveb f854b38 
































steveb 852c066 


steveb f854b38 




scop c095682 






steveb f854b38 
scop f26c3b4 

youngs b4e770f 
steveb f854b38 



youngs b4e770f 
steveb f854b38 
youngs b4e770f 
steveb f854b38 
steveb 852c066 
steveb f854b38 
steveb 852c066 

scop c095682 




steveb f854b38 



;;; hack-package-index.el --- Update package-get-base package index file

;; Copyright (C) 1998 by Free Software Foundation, Inc.

;; Author: SL Baur <steve@xemacs.org>
;; Keywords: internal

;; This file is part of XEmacs.

;; XEmacs is free software; you can redistribute it and/or modify it
;; under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; XEmacs is distributed in the hope that it will be useful, but
;; WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with XEmacs; see the file COPYING.  If not, write to the Free
;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
;; 02111-1307, USA.

;;; Synched up with: Not in FSF

;;; Commentary:

;; usage xemacs -batch -l hack-package-index.el -f batch-hack-package-index \
;;  package-name /path/to/package-info /path/to/package-get-base.el

;;; Code:

(defvar end-of-package-marker ";;;@@@"
  "Marker in between entries.")

(defun locate-package-entry (name)
  (goto-char (point-min))
  (if (re-search-forward
       (concat "^(package-get-update-base-entry (quote\n(" name "$") nil t)
      (let ((from (match-beginning 0)))
	(re-search-forward (concat "^" end-of-package-marker "$"))
	(delete-region from (1+ (point-at-eol))))
    (re-search-forward (concat "^" end-of-package-marker "$"))
    (forward-char)))

(defun convert-crlf ()
  "Convert CRLF to LF."
  (save-excursion
    (goto-char (point-min))
    (while (search-forward "\r\n" nil t)
      (replace-match "\n" t t))))

(defun batch-hack-package-index ()
  (let* ((package-name (pop command-line-args-left))
	 (package-info (pop command-line-args-left))
	 (package-get-base (pop command-line-args-left)))
    (set-buffer (get-buffer-create "*package index*"))
    (when (file-exists-p package-get-base)
      (insert-file-contents-literally package-get-base))
    (when (eq (point-min) (point-max))
      (insert ";; Package Index file -- Do not edit manually.\n")
      (insert end-of-package-marker "\n")
      (insert ";; Package Index file ends here\n"))
    (locate-package-entry package-name)
    (insert "))\n")
    (insert end-of-package-marker "\n")
    (forward-line -2)
    (insert "(package-get-update-base-entry (quote\n")
    (let ((length
           (second (insert-file-contents-literally package-info))))
      (save-restriction
        (narrow-to-region (point) (+ (point) length))
        (convert-crlf)))
    (write-file package-get-base)))

(provide 'hack-package-index)

;;; hack-package-index.el ends here
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.