115 lines
4.8 KiB
EmacsLisp
115 lines
4.8 KiB
EmacsLisp
;;; prv-install.el --- Complicated install-time magic for preview-latex.
|
|
|
|
;; Copyright (C) 2002, 2005, 2014 Free Software Foundation, Inc.
|
|
|
|
;; Author: David Kastrup
|
|
;; Keywords: convenience, tex, wp
|
|
|
|
;; This file 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 3, or (at your option)
|
|
;; any later version.
|
|
|
|
;; This file 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 GNU Emacs; see the file COPYING. If not, write to
|
|
;; the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
|
|
;; Boston, MA 02110-1301, USA.
|
|
|
|
;;; Commentary:
|
|
|
|
;; This contains package-building stuff and other install-time magic.
|
|
;; It may well contain Emacs-version-specific code, but certain
|
|
;; functions here should be *callable* from any Emacs version.
|
|
|
|
;;; Code:
|
|
|
|
(defun preview-make-package ()
|
|
"Do anything required to make a package in this version of Emacs,
|
|
other than actually copying the Lisp files.
|
|
|
|
Takes arguments on the comamnd line: the package directory and any
|
|
number of Lisp files to generate autoloads from.
|
|
|
|
Does nothing in Emacsen that do not support a package system."
|
|
(if (featurep 'xemacs)
|
|
(preview-make-package-xemacs))
|
|
(setq command-line-args-left nil))
|
|
|
|
(defun preview-make-package-xemacs ()
|
|
"Do anything required to make a package in XEmacs,
|
|
other than actually copying the Lisp files.
|
|
|
|
Generates auto-autoloads, custom-loads, and package metadata file
|
|
in the right locations. Takes from the command line the package directory,
|
|
package name, and version (to be evaluated), followed by a file to append."
|
|
(let* ((package-dir (pop command-line-args-left))
|
|
(package-name (pop command-line-args-left))
|
|
(release-version (eval (read (pop command-line-args-left))))
|
|
(author-version (eval (read (pop command-line-args-left))))
|
|
append-file
|
|
(lisp-dir (expand-file-name (format "lisp/%s/" package-name)
|
|
package-dir))
|
|
(metadata (expand-file-name "_pkg.el" lisp-dir))
|
|
(custom-load (expand-file-name "custom-load.el" lisp-dir))
|
|
(generated-autoload-file (expand-file-name "auto-autoloads.el"
|
|
lisp-dir))
|
|
(si:message (symbol-function 'message))
|
|
make-backup-files noninteractive)
|
|
;; Delete and regenerate the custom-load file.
|
|
(when (file-exists-p custom-load)
|
|
(delete-file custom-load))
|
|
(when (file-exists-p (concat custom-load "c"))
|
|
(delete-file (concat custom-load "c")))
|
|
(Custom-make-dependencies lisp-dir)
|
|
(when (file-exists-p custom-load)
|
|
(require 'cus-load)
|
|
(byte-compile-file custom-load))
|
|
; Delete and regenerate the package metadata file.
|
|
; There is no compiled form of this file.
|
|
(message "Updating metadata for the directory %s..." lisp-dir)
|
|
(with-temp-file metadata
|
|
(insert
|
|
(concat ";;;###autoload\n"
|
|
"(package-provide '" package-name "\n"
|
|
" :version "
|
|
release-version "\n"
|
|
" :author-version "
|
|
"\"" author-version "\"\n"
|
|
" :type 'regular)\n")))
|
|
; Delete and regenerate the auto-autoloads file.
|
|
(message "Updating autoloads for the directory %s..." lisp-dir)
|
|
(when (file-exists-p generated-autoload-file)
|
|
(delete-file generated-autoload-file))
|
|
(when (file-exists-p (concat generated-autoload-file "c"))
|
|
(delete-file (concat generated-autoload-file "c")))
|
|
(defun message (fmt &rest args)
|
|
"Ignore useless messages while generating autoloads."
|
|
(cond ((and (string-equal "Generating autoloads for %s..." fmt)
|
|
(file-exists-p (file-name-nondirectory (car args))))
|
|
(funcall si:message
|
|
fmt (file-name-nondirectory (car args))))
|
|
((string-equal "No autoloads found in %s" fmt))
|
|
((string-equal "Generating autoloads for %s...done" fmt))
|
|
(t (apply si:message fmt args))))
|
|
(unwind-protect
|
|
(cond ((fboundp 'update-autoloads-from-directory)
|
|
(update-autoloads-from-directory lisp-dir))
|
|
((fboundp 'update-autoload-files)
|
|
(update-autoload-files (list lisp-dir) "auctex"))
|
|
(t (error "Failed to generate autoloads.")))
|
|
(fset 'message si:message))
|
|
(while (setq append-file (pop command-line-args-left))
|
|
(when (file-exists-p generated-autoload-file)
|
|
(with-temp-buffer (insert-file-contents append-file)
|
|
(append-to-file (point-min) (point-max)
|
|
generated-autoload-file))))
|
|
(byte-compile-file generated-autoload-file)))
|
|
|
|
|
|
;;; prv-install.el ends here
|