summaryrefslogtreecommitdiffstats
path: root/emacs.d/nxhtml/nxhtmlmaint.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d/nxhtml/nxhtmlmaint.el')
-rw-r--r--emacs.d/nxhtml/nxhtmlmaint.el439
1 files changed, 0 insertions, 439 deletions
diff --git a/emacs.d/nxhtml/nxhtmlmaint.el b/emacs.d/nxhtml/nxhtmlmaint.el
deleted file mode 100644
index 68c03b7..0000000
--- a/emacs.d/nxhtml/nxhtmlmaint.el
+++ /dev/null
@@ -1,439 +0,0 @@
-;;; nxhtmlmaint.el --- Some maintenance helpers
-;;
-;; Author: Lennart Borgman (lennart O borgman A gmail O com)
-;; Created: 2008-09-27T15:29:35+0200 Sat
-;; Version: 0.6
-;; Last-Updated: 2010-01-18 Mon
-;; URL:
-;; Keywords:
-;; Compatibility:
-;;
-;; Features that might be required by this library:
-;;
-;; None
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Commentary:
-;;
-;; This module contains maintenance functions:
-;;
-;; `nxhtmlmaint-get-all-autoloads' (nxhtmlmaint-get-all-autoloads)
-;;
-;; `nxhtmlmaint-start-byte-compilation'
-;; `nxhtmlmaint-byte-uncompile-all'
-;;
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Change log:
-;;
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; This program 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.
-;;
-;; This program 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 this program; see the file COPYING. If not, write to
-;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth
-;; Floor, Boston, MA 02110-1301, USA.
-;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;;; Code:
-
-(eval-when-compile (require 'advice))
-(eval-when-compile (require 'nxhtml-base))
-(eval-when-compile (require 'nxhtml-web-vcs nil t))
-(eval-when-compile (require 'web-vcs nil t))
-(eval-when-compile (require 'ourcomments-util))
-
-(defvar nxhtmlmaint-dir
- ;;(file-name-directory (if load-file-name load-file-name buffer-file-name))
- (file-name-directory (or load-file-name
- (when (boundp 'bytecomp-filename) bytecomp-filename)
- buffer-file-name))
- "Maintenance directory for nXhtml.")
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;; Autoload helpers
-
-(defun nxhtmlmaint-autoloads-file ()
- "Return autoload file name for nXhtml."
- (file-truename (expand-file-name "nxhtml-loaddefs.el" nxhtmlmaint-dir)))
-
-(defun nxhtmlmaint-util-dir ()
- "Return nXhtml util directory."
- (file-truename (file-name-as-directory
- (expand-file-name "util" nxhtmlmaint-dir))))
-
-(defvar nxhtmlmaint-autoload-default-directory (nxhtmlmaint-util-dir))
-
-(defvar generated-autoload-file)
-
-(defun nxhtmlmaint-initialize-autoloads-file ()
- "Initialize nXhtml autoload file."
- (with-current-buffer (find-file-noselect generated-autoload-file)
- (when (= 0 (buffer-size))
- (insert ";; Autoloads for nXthml
-;;
-;; This file should be updated by `nxhtmlmaint-get-file-autoloads',
-;; `nxhtmlmaint-get-dir-autoloads' or `nxhtmlmaint-get-all-autoloads'.
-\(eval-when-compile (require 'nxhtml-base))
-\(eval-when-compile (require 'web-vcs))")
- (basic-save-buffer))))
-
-(defun nxmtmlmaint-advice-autoload (on)
- "Activate advices if ON, otherwise turn them off."
- (if on
- (progn
- (ad-activate 'autoload-file-load-name)
- (ad-activate 'make-autoload))
- (ad-deactivate 'autoload-file-load-name)
- (ad-deactivate 'make-autoload)))
-
-(defun nxhtmlmaint-get-file-autoloads (file)
- "Get autoloads for file FILE.
-Update nXhtml autoload file with them."
- (interactive (list (buffer-file-name)))
- (let* ((generated-autoload-file (nxhtmlmaint-autoloads-file))
- (emacs-lisp-mode-hook nil)
- (default-directory (nxhtmlmaint-util-dir)))
- (nxhtmlmaint-initialize-autoloads-file)
- ;; Get the autoloads using advice
- (nxmtmlmaint-advice-autoload t)
- (update-file-autoloads file nil)
- (nxmtmlmaint-advice-autoload nil)
- ;; Display
- (display-buffer (find-file-noselect generated-autoload-file))))
-
-(defun nxhtmlmaint-get-dir-autoloads (dir)
- "Get autoloads for directory DIR.
-Update nXhtml autoload file with them."
- (interactive (list (or (when (buffer-file-name)
- (file-name-directory (buffer-file-name)))
- default-directory)))
- (let* ((generated-autoload-file (nxhtmlmaint-autoloads-file))
- (emacs-lisp-mode-hook nil)
- (auto-buf (find-file-noselect generated-autoload-file)))
- (nxhtmlmaint-initialize-autoloads-file)
- ;; Get the autoloads using advice
- (nxmtmlmaint-advice-autoload t)
- ;; Fix-me: Loop instead, some files must be avoided.
- (update-directory-autoloads dir)
- (nxmtmlmaint-advice-autoload nil)
- ;; Display
- (display-buffer (find-file-noselect generated-autoload-file))))
-
-(defun nxhtmlmaint-get-tree-autoloads (root)
- "Get autoloads for directory tree ROOT.
-Update nXhtml autoload file with them."
- (interactive (list (or (when (buffer-file-name)
- (file-name-directory (buffer-file-name)))
- default-directory)))
- (message "Getting autoloads in %s" root)
- (nxhtmlmaint-get-dir-autoloads root)
- (let* ((files (directory-files root))
- (sub-dirs (mapcar (lambda (file)
- (when (and (not (member file '("." "..")))
- (not (member file '("nxml-mode-20041004" "old")))
- (not (member file '("nxhtml-company-mode")))
- (not (member file '("in")))
- (file-directory-p (expand-file-name file root)))
- file))
- files)))
- (setq sub-dirs (delq nil sub-dirs))
- ;;(message "sub-dirs=%s" sub-dirs)
- (dolist (dir sub-dirs)
- (let ((full-dir (expand-file-name dir root)))
- (unless (or (string= full-dir nxhtmlmaint-dir)
- (string= dir "alts"))
- (nxhtmlmaint-get-tree-autoloads full-dir))))))
-
-;;(nxhtmlmaint-get-all-autoloads)
-(defun nxhtmlmaint-get-all-autoloads ()
- "Get all autoloads for nXhtml.
-Update nXhtml autoload file with them."
- ;;(interactive)
- (if nxhtml-autoload-web
- (message "Skipping rebuilding autoloads, not possible when autoloading from web")
- (let ((auto-buf (find-file-noselect (nxhtmlmaint-autoloads-file))))
- (with-current-buffer auto-buf
- (erase-buffer)
- (basic-save-buffer))
- (nxhtmlmaint-get-tree-autoloads nxhtmlmaint-dir)
- ;; `nxhtml-mode' and `nxhtml-validation-header-mode' should only be
- ;; autoloaded if nxml-mode if available.
- (with-current-buffer auto-buf
- (message "Fixing nxml autoloads")
- (let ((frmt (if (= emacs-major-version 22)
- "^(autoload (quote %s) "
- "^(autoload '%s ")))
- (dolist (nxmode '(nxhtml-mode nxhtml-validation-header-mode))
- (goto-char (point-min))
- (when (re-search-forward (format frmt nxmode) nil t)
- (forward-line 0)
- (insert "(when (fboundp 'nxml-mode)\n")
- (forward-sexp)
- (insert ")"))))
- ;; Fix defcustom autoloads
- (goto-char (point-min))
- (let ((cus-auto "(\\(custom-autoload\\) +'.* +\\(\".*?\"\\)"))
- (while (re-search-forward cus-auto nil t)
- ;;(backward-char (1- (length cus-auto)))
- ;;(insert "nxhtml-")
- (let ((lib (match-string 2)))
- ;; Change to symbol to fix autoloading. This works because
- ;; custom-load-symbol does require on symbols.
- (setq lib (concat "'" (substring lib 1 -1)))
- (replace-match "nxhtml-custom-autoload" t t nil 1)
- (replace-match lib t t nil 2))))
- ;; Fix autoload calls
- (goto-char (point-min))
- (let ((auto "(autoload "))
- (while (search-forward auto nil t)
- (backward-char (1- (length auto)))
- (insert "nxhtml-")))
- ;; Fix autoload source
- (goto-char (point-min))
- (let* ((patt-src "^;;; Generated autoloads from \\(.*\\)$")
- (patt-auto "^(nxhtml-autoload '[^ ]+ \\(\"[^\"]+\"\\)")
- (patt-cust "^(nxhtml-custom-autoload '[^ ]+ \\(\"[^\"]+\"\\)")
- (patt (concat "\\(?:" patt-src "\\)\\|\\(?:" patt-auto "\\)\\|\\(?:" patt-cust "\\)"))
- curr-src)
- (while (re-search-forward patt nil t)
- (cond
- ( (match-string 1)
- (setq curr-src (match-string-no-properties 1))
- ;; Remove .el
- (setq curr-src (substring curr-src 0 -3))
- ;; Setup up for web autoload
- (let* ((src-name (file-name-nondirectory curr-src))
- (feature (make-symbol src-name))
- )
- (end-of-line)
- (insert "\n"
- "(web-autoload-require '"
- (symbol-name feature)
- " 'lp"
- " '(nxhtml-download-root-url nil)"
- " \"" curr-src "\""
- " nxhtml-install-dir"
- " 'nxhtml-byte-compile-file"
- ")\n"))
- )
- ( (match-string 3)
- ;; (custom-autoload 'sym "lib" nil) is will give a
- ;; (require 'lib) so everything is ok here.
- nil)
- ( (or (match-string 2)
- (match-string 3)
- )
- (let* ((subexp (if (match-string 2) 2 3))
- (file (match-string-no-properties subexp)))
- (replace-match (concat "`(lp '(nxhtml-download-root-url nil)"
- " \"" curr-src "\""
- " nxhtml-install-dir)")
- nil ;; fixedcase
- nil ;; literal
- nil ;; string
- subexp ;; subexp
- ))
- )
- (t (error "No match???")))))
- ;; Save
- (basic-save-buffer)))))
-
-
-(defun nxhtmlmaint-autoload-file-load-name (file)
- "Return relative file name for FILE to autoload file directory."
- (let ((name (if (and nxhtmlmaint-autoload-default-directory
- (file-name-absolute-p file))
- (file-relative-name
- file nxhtmlmaint-autoload-default-directory)
- (file-name-nondirectory file))))
- (if (string-match "\\.elc?\\(\\.\\|\\'\\)" name)
- (substring name 0 (match-beginning 0))
- name)))
-
-(defadvice autoload-file-load-name (around
- nxhtmlmaint-advice-autoload-file-load-name
- ;;activate
- compile)
- "Advice to return relative file name."
- (setq ad-return-value (nxhtmlmaint-autoload-file-load-name (ad-get-arg 0))))
-
-(defun nxhtmlmaint-make-autoload (form file)
- "Make autoload for multi major modes."
- ;;(message "form=%S" form)
- (if (or (not (listp form))
- (not (eq 'define-mumamo-multi-major-mode (car form))))
- ad-return-value
- (if ad-return-value
- ad-return-value
- ;; Fix-me: Maybe expand??
- (let ((name (nth 1 form))
- (doc (nth 2 form)))
- `(autoload ',name ,file ,doc t)
- ))))
-
-(defadvice make-autoload (after
- nxhtmlmaint-advice-make-autoload
- ;;activate
- compile)
- "Make autoload for multi major modes."
- (setq ad-return-value
- (nxhtmlmaint-make-autoload (ad-get-arg 0)
- (ad-get-arg 1))))
-
-;; (defun nxhtmlmaint-generate-library-autoloads (library)
-;; "Insert at point autoloads for Emacs library LIBRARY.
-;; Works like `generate-file-autoloads', but for a library."
-;; (interactive
-;; (list (completing-read "Generate autoloads for library: "
-;; 'locate-file-completion
-;; (cons load-path (get-load-suffixes)))))
-;; (let ((file (locate-library library)))
-;; ;; Fix-me: wasn't this defined???
-;; (generate-file-autoloads file)))
-
-;;;###autoload
-(defun nxhtmlmaint-start-byte-compilation ()
- "Start byte compilation of nXhtml in new Emacs instance.
-Byte compiling in general makes elisp code run 5-10 times faster
-which is quite noticeable when you use nXhtml.
-
-This will also update the file nxhtml-loaddefs.el.
-
-You must restart Emacs to use the byte compiled files.
-
-If for some reason the byte compiled files does not work you can
-remove then with `nxhtmlmaint-byte-uncompile-all'."
- (interactive)
- ;; Fix-me: This message and redisplay seems only necessary sometimes.
- (message "Preparing byte compilation of nXhtml ...") (redisplay t)
- (let* ((this-file (expand-file-name "nxhtmlmaint.el" nxhtmlmaint-dir))
- (auto-file (expand-file-name "autostart.el" nxhtmlmaint-dir))
- (web-vcs-file (expand-file-name "nxhtml-web-vcs.el" nxhtmlmaint-dir))
- (this-emacs (locate-file invocation-name
- (list invocation-directory)
- exec-suffixes))
- (process-args `(,this-emacs nil 0 nil "-Q")))
- (nxhtmlmaint-byte-uncompile-all)
- (if (or noninteractive
- (not window-system))
- (nxhtmlmaint-byte-compile-all)
- ;;(when noninteractive (setq process-args (append process-args '("-batch"))))
- (setq process-args (append process-args
- (list "-l" auto-file
- "-l" web-vcs-file
- "-l" this-file
- "-f" "nxhtmlmaint-byte-compile-all")))
- (message "process-args=%S" process-args)
- (message "Starting new Emacs instance for byte compiling ...")
- (apply 'call-process process-args))))
-
-;;(nxhtmlmaint-byte-compile-all)
-(defun nxhtmlmaint-byte-compile-all ()
- "Byte recompile all files in nXhtml that needs it."
- (message "nxhtmlmaint-byte-compile-all: nxhtmlmaint-dir=%S, exists=%s" nxhtmlmaint-dir (file-directory-p nxhtmlmaint-dir))
- (let* ((load-path load-path)
- (nxhtml-dir (file-name-as-directory
- (expand-file-name "nxhtml"
- nxhtmlmaint-dir)))
- (util-dir (file-name-as-directory
- (expand-file-name "util"
- nxhtmlmaint-dir)))
- ;; (nxhtml-company-dir (file-name-as-directory
- ;; (expand-file-name "nxhtml-company-mode"
- ;; util-dir)))
- (related-dir (file-name-as-directory
- (expand-file-name "related"
- nxhtmlmaint-dir)))
- (tests-dir (file-name-as-directory
- (expand-file-name "tests"
- nxhtmlmaint-dir)))
- (emacsw32-dir (file-name-as-directory
- (expand-file-name "../lisp"
- nxhtmlmaint-dir)))
- (default-dir nxhtml-dir)
- )
- (message "nxhtmlmaint-byte-compile-all: nxhtml-dir=%S, exists=%s" nxhtml-dir (file-directory-p nxhtml-dir))
- (message "nxhtmlmaint-byte-compile-all: util-dir=%S, exists=%s" util-dir (file-directory-p util-dir))
- (message "nxhtmlmaint-byte-compile-all: related-dir=%S, exists=%s" related-dir (file-directory-p related-dir))
- (message "nxhtmlmaint-byte-compile-all: tests-dir=%S, exists=%s" tests-dir (file-directory-p tests-dir))
- (add-to-list 'load-path nxhtml-dir)
- (add-to-list 'load-path util-dir)
- ;;(add-to-list 'load-path nxhtml-company-dir)
- (add-to-list 'load-path related-dir)
- (add-to-list 'load-path tests-dir)
- (when (file-directory-p emacsw32-dir)
- (add-to-list 'load-path emacsw32-dir))
- (require 'cl) ;; This is run in a new Emacs. Fix-me: This might not be true any more.
- (message "load-path=%s" load-path)
- (let ((dummy-debug-on-error t))
- (nxhtmlmaint-byte-compile-dir nxhtmlmaint-dir nil nil nil))
- (web-vcs-message-with-face 'web-vcs-gold "Byte compiling nXhtml is ready, restart Emacs to use the compiled files")))
-
-;;;###autoload
-(defun nxhtmlmaint-byte-recompile ()
- "Recompile or compile all nXhtml files in current Emacs."
- (interactive)
- (nxhtmlmaint-byte-compile-dir nxhtmlmaint-dir nil nil t)
- (web-vcs-message-with-face 'web-vcs-gold "Byte recompiling nXhtml ready"))
-
-;;;###autoload
-(defun nxhtmlmaint-byte-uncompile-all ()
- "Delete byte compiled files in nXhtml.
-This will also update the file nxhtml-loaddefs.el.
-
-See `nxhtmlmaint-start-byte-compilation' for byte compiling."
- (interactive)
- (nxhtmlmaint-get-all-autoloads)
- (let ((dummy-debug-on-error t))
- (nxhtmlmaint-byte-compile-dir nxhtmlmaint-dir t t nil))
- (message "Byte uncompiling is ready, restart Emacs to use the elisp files"))
-
-(defconst nxhtmlmaint-nonbyte-compile-dirs
- '("." ".." "alts" "nxml-mode-20041004" "old" "tests" "nxhtml-company-mode"))
-
-;; Fix-me: simplify this now that nxml is not included
-(defun nxhtmlmaint-byte-compile-dir (dir force del-elc load)
- "Byte compile or uncompile directory tree DIR.
-If FORCE is non-nil byte recompile the elisp file even if the
-compiled file is newer.
-
-If DEL-ELC is nil then byte compile files. If DEL-ELC is non-nil
-then instead delete the compiled files."
- ;;(directory-files (file-name-directory buffer-file-name) t "\.el\\'")
- (dolist (el-src (directory-files dir t "\.el\\'"))
- (let ((elc-dst (concat el-src "c")))
- (if del-elc
- (when (file-exists-p elc-dst)
- (delete-file elc-dst)
- (message "Deleted %s" elc-dst))
- (setq debug-on-error t)
- (when (or force (file-newer-than-file-p el-src elc-dst))
- ;;(message "fn=%s" (file-name-nondirectory el-src))
- (when t ;;(string= "nxhtml-menu.el" (file-name-nondirectory el-src))
- ;;(message "(nxhtml-byte-compile-file %s)" el-src)
- (unless (nxhtml-byte-compile-file el-src load)
- (message "Couldn't compile %s" el-src)))))))
- (dolist (f (directory-files dir t))
- (when (file-directory-p f)
- ;; Fix-me: Avoid some dirs
- (let ((name (file-name-nondirectory f)))
- (unless (member name nxhtmlmaint-nonbyte-compile-dirs)
- (nxhtmlmaint-byte-compile-dir f force del-elc load))))))
-
-(provide 'nxhtmlmaint)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; nxhtmlmaint.el ends here