diff options
Diffstat (limited to 'elisp/erbot/erball.el')
-rw-r--r-- | elisp/erbot/erball.el | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/elisp/erbot/erball.el b/elisp/erbot/erball.el new file mode 100644 index 0000000..e5e48ae --- /dev/null +++ b/elisp/erbot/erball.el @@ -0,0 +1,209 @@ +;;; erball.el --- Functions on all files. +;; Time-stamp: <2006-04-24 13:43:38 deego> +;; Copyright (C) 2002 D. Goel +;; Emacs Lisp Archive entry +;; Filename: erbc.el +;; Package: erbc +;; Author: D. Goel <deego@gnufans.org> +;; Version: + + + +;; Usually maintenance +;; not all of these may be required depending on how you use erbot.. +(require 'cl) + +;; Compilation + +(defvar erball-compilation-paths-rel-to + (let (args ret) + (while command-line-args-left + (if (string= "--paths-rel-to" (car command-line-args-left)) + (progn + (setq ret (cadr command-line-args-left)) + (setq command-line-args-left (cddr command-line-args-left))) + (add-to-list 'args (car command-line-args-left) t) + (setq command-line-args-left (cdr command-line-args-left)))) + (setq command-line-args-left args) + ret) + "Text to be prepended to each element in `erball-compilation-paths'. +Can be specified by passing \"--paths-rel-to ARG\" on the emacs +command line. +This value is also added to the load-path. +A trailing backslash is required.") + +(defun erball-assoc-string (key list) + "Like `assoc' but specifically for strings." + (if (fboundp 'assoc-string) + (assoc-string key list) + (catch 'found + (dolist (el list) + (when (string= key el) + (throw 'found el)))))) + +(defvar erball-compiling-p + (if (erball-assoc-string "--compile-erbot" command-line-args-left) + (progn + (message "%s" (concat "\nCompiling source in " + (file-name-nondirectory (expand-file-name ".")) + " ...\n")) + (setq command-line-args-left + (delete "--compile-erbot" command-line-args-left)) + t) + nil) + "Determine whether erbot is currently being compiled.") + +(defcustom erball-compilation-paths + '("contrib" + ".." + "../erc" + "../bbdb/lisp") + "Elements to add to the load path during compilation. +If `erball-compilation-paths-rel-to' is specified, it is +prepended to each element and also added verbatim to the path. +The current directory is automatically added to the path." + :group 'erball + ) + +(when erball-compiling-p + (add-to-list 'load-path ".") + (when erball-compilation-paths-rel-to + (add-to-list 'load-path erball-compilation-paths-rel-to)) + (dolist (dir erball-compilation-paths) + (add-to-list 'load-path + (concat erball-compilation-paths-rel-to dir)))) + +;; Load all erbot files + +(defmacro erball-ignore-errors-loudly (&rest body) + "Like ignore-errors, but tells the error.. + +Copied from deego's `ignore-errors-my', which owes some of its work +to: Kalle on 7/3/01: + * used backquote: something i was too lazy to convert my macro to.. + * removed the progn: condition-case automatically has one.. + * made sure that the return is nil.. just as it is in ignore-errors. " + (let ((err (gensym))) + `(condition-case ,err (progn ,@body) + (error + (ding t) + (ding t) + (ding t) + (message "IGNORED ERROR: %s" (error-message-string ,err)) + (sit-for 1) + nil)))) + + + +(erball-ignore-errors-loudly (require 'bbdb)) +(erball-ignore-errors-loudly (require 'doctor)) +(erball-ignore-errors-loudly (require 'erc)) +(erball-ignore-errors-loudly (require 'erc-stamp)) + + + +(unless noninteractive (erball-ignore-errors-loudly (require 'dunnet))) +(erball-ignore-errors-loudly (require 'erbot)) +(erball-ignore-errors-loudly (require 'erbcountry)) +(erball-ignore-errors-loudly (require 'erbutils)) +(erball-ignore-errors-loudly (require 'erblog)) +(erball-ignore-errors-loudly (require 'erbeng)) +(erball-ignore-errors-loudly (require 'erbdata)) +(erball-ignore-errors-loudly (require 'erbkarma)) +(erball-ignore-errors-loudly (require 'erblisp)) +(erball-ignore-errors-loudly (require 'erbc)) +(erball-ignore-errors-loudly (require 'erbc2)) +(erball-ignore-errors-loudly (require 'erbc3)) +(erball-ignore-errors-loudly (require 'erbc4)) +(erball-ignore-errors-loudly (require 'erbc5)) +(erball-ignore-errors-loudly (require 'erbc6)) +(erball-ignore-errors-loudly (require 'erbcspecial)) +(erball-ignore-errors-loudly (require 'erbbdb)) +(erball-ignore-errors-loudly (require 'erbforget)) +(erball-ignore-errors-loudly (require 'erbedit)) +(erball-ignore-errors-loudly (require 'erbtrain)) +(erball-ignore-errors-loudly (require 'erbwiki)) +(erball-ignore-errors-loudly (require 'erbunlisp)) +(erball-ignore-errors-loudly (require 'erbcompat)) + +(erball-ignore-errors-loudly (require 'erbmsg)) +(erball-ignore-errors-loudly (require 'erbtranslate)) +(erball-ignore-errors-loudly (require 'erbim)) + +(erball-ignore-errors-loudly (require 'flame)) + +(erball-ignore-errors-loudly (require 'mkback)) +(erball-ignore-errors-loudly (require 'lines)) +(erball-ignore-errors-loudly (require 'google)) +(erball-ignore-errors-loudly (require 'oct)) + +;; the rest of the commands here are useful to the author when editing erbot. + +(defcustom erball-files + (if erball-compiling-p + (directory-files "." nil "\.el$") + '("erbot.el" + "erbutils.el" + "erblog.el" + "erbeng.el" + "erbcountry.el" + "erbdata.el" + "erbedit.el" + "erbforget.el" + "erbkarma.el" + "erblisp.el" + "erbunlisp.el" + "erbtrain.el" + "erbwiki.el" + "erbc.el" + "erbc2.el" + "erbc3.el" + "erbc4.el" + "erbc5.el" + "erbc6.el" + )) + + "" + :group 'erball + ) + +(defun erball-reload () + (interactive) + (mapcar + 'load + erball-files)) + +(defun erball-visit () + (interactive) + (mapcar + (lambda (a) + (find-file (locate-library a)) + (auto-revert-mode 1)) + erball-files)) + +;;;###autoload +(defun erball-compile () + (interactive) + (if erball-compiling-p + (progn + (ignore-errors (erball-reload)) + (mapcar + (lambda (arg) + (erball-ignore-errors-loudly + (byte-compile-file arg))) + erball-files) + (message "\nCompilation complete!\n")) + (ignore-errors (kill-buffer "*Compile-Log*")) + (erball-visit) + (erball-reload) + (mapcar + (lambda (arg) + (erball-ignore-errors-loudly + (byte-compile-file (locate-library arg)))) + erball-files) + (switch-to-buffer "*Compile-Log*") + (delete-other-windows) + (goto-char (point-min)))) + + +(provide 'erball) |