I find jde-help-class works perfectly for classes in the java.*
hierarchy.  (It's an awesome feature, BTW!)  For classes *outside* that
hierarchy, however (e.g., javax.vecmath.*), it doesn't work at all.  A
little work with edebug in jde-help.el shows that the bsh-eval-r near
the top of jde-help-class is returning nothing for classes outside
java.*; it returns the Right Thing for classes in the java.* hierarchy,
of course.  Importing the relevant classes into the bsh process (in the
*bsh* buffer) makes no difference.  (I have little-to-no experience with
the bsh, though.)

I've attached my .emacs and a Java file which demonstrates the problem. 
I'd be happy to try to provide a more minimal example (my .emacs is
distinctly crufty by now, I'm afraid) if that would be helpful; just let
me know.

Peace,
--Peter

JDE 2.1.6beta4, NTEmacs 20.4.1, Windows 98, JavaSoft JDK 1.2.2

BeanShell 0.96 beta - by Pat Niemeyer ([EMAIL PROTECTED])
bsh % print(System.getProperty("java.class.path"));
c:/PHB/public/phb-lisp/jde-2.1.6beta4/java/lib/jde.jar;c:/PHB/public/phb-lisp/jde-2.1.6beta4/java/lib/bsh.jar;c:/PHB/public/java;.

(The Java3D .jar file is installed as an extension in the jre/lib/ext
directory; it *is* on the classpath.)

/**
 * CubeVert.java
 *
 *
 * Created: Mon Aug 10 11:35:24 1998
 *
 * @author Peter Brown
 * @version
 */

package org.acm.phbrown.mtops.surface;
import org.acm.phbrown.Assert;

import javax.vecmath.Point3d;
import javax.vecmath.Vector3d;
import org.acm.phbrown.FnR3toR;

public class CubeVert extends Point3d {
    protected double fval;
    
    public CubeVert(double x, double y, double z, FnR3toR f, 
                    Vector3d offset, Vector3d scaleFactor, Double value) {
        super(x, y, z);
        if (scaleFactor != null) {
            x *= scaleFactor.x;
            y *= scaleFactor.y;
            z *= scaleFactor.z;
        }
        if (offset != null) {
            this.add(offset);
        }
        if (value != null) fval = value.doubleValue();
        else fval = f.eval(this);
    }

    public CubeVert(double x, double y, double z, FnR3toR f) {
        super(x, y, z);
        fval = f.eval(x, y, z);
    }

    public CubeVert(double x, double y, double z, double value) {
        super(x, y, z);
        fval = value;
    }

    public double getVal() { return fval; }

    public String toString() { return super.toString() + ": " + fval; }
} // CubeVert
;;To debug this file, invoke emacs with -debug-init
;(setq debug-on-error t)

;; CONSTANTS

(defconst phb-home (file-name-as-directory (expand-file-name "~"))
  "My home directory.  Not every OS recognizes ~; e.g., DOS doesn't.")

(defconst phb-domain
  (cond
   ((and (eq system-type 'windows-nt)
         (getenv "REMOVABLE_DRIVE"))
         ;(file-exists-p (expand-file-name "removable" phb-home)))
    'removable)
   ((and (eq system-type 'windows-nt)
         (string= system-name "LBROWN"))
    'converse)
   ((or (eq system-type 'gnu/linux)
        (eq system-type 'windows-nt))
;       (string= system-name "GLORIA-DEO")
;       (string= (downcase system-name) "yesu-tu"))
    'home)
   (t 'cs))
  "Tells where I am.")

(defvar started-from-windows (eq system-type 'windows-nt)
  "Flag is non-nil if emacs was invoked from within Windows.")

(defconst x-display-type
  (if (and (fboundp 'x-server-vendor)        ; Only under 19
           (string-equal window-system "x"))
      (cond
       ((string-match "Digital" (x-server-vendor)) 'dec)
       ((string-match "Silicon Graphics" (x-server-vendor)) 'sgi)
       ((string-match "Hewlett-Packard" (x-server-vendor)) 'hp)
       ((string-match "StarNet Communications" (x-server-vendor)) 'pc-win)
       ((string-match "XFree86" (x-server-vendor)) 'xfree86)
       (t 'sun))
    nil)
  "Tells what vendor made the machine we're displaying on under X.")

(defun expand-existing-file-name (name default-dir &optional dir-p)
  "Like expand-file-name, but returns nil if the file doesn't exist.
Second arg DEFAULT-DIR is required; if it is not a string, or if it does not
specify an existing directory, the function returns nil.
Third arg DIR-P, if non-nil, causes the file's existence to be checked using
file-directory-p rather than file-exists-p."
  (let (filename)
    (and (stringp name)
         (stringp default-dir)
         (file-directory-p default-dir)
         (setq filename (expand-file-name name default-dir))
         (if dir-p (file-directory-p filename)
           (file-exists-p filename))
         (file-truename filename))))

(defun phb-require (feature &optional filename)
  "Like require, but does not error if the file can't be loaded.
Instead, prints a warning and returns nil."
  (if (featurep feature) t
    (setq filename (or filename (prin1-to-string feature)))
    (if (load filename t t)
        (or (featurep feature) ; Yup, it worked
            ;; Feature wasn't provided: print a warning and return nil
            (progn (message (concat "WARNING: loading file " filename
                                    "did not provide "
                                    (prin1-to-string feature)))
                   (sleep-for 2)
                   nil))
      ;; Failed to load: print a warning and return nil
      (progn (message (concat "WARNING: file " filename
                              " could not be loaded"))
             (sleep-for 2)
             nil))))


(defconst phb-pub-dir (expand-existing-file-name "public" phb-home 'dir)
  "Directory for public files.")
(defconst phb-zangu (expand-existing-file-name "zangu" phb-home 'dir))
(defconst phb-folder-dir (expand-existing-file-name "mail" phb-home 'dir)
  "Directory for mail and news folders.")
(defconst phb-info-dir (expand-existing-file-name "info/" phb-pub-dir 'dir)
  "Directory for my own info files.")
(defconst phb-lisp-dir 
  (or (expand-existing-file-name "phb-lisp" phb-pub-dir 'dir)
      (and (eq phb-domain 'cs)
           (expand-existing-file-name "/afs/unc/aux/brownp" "" 'dir)))
  "Directory for my emacs lisp code.")
(defconst contrib-lisp-dir
  (expand-existing-file-name "/usr/local/lib/emacs/common/contrib-lisp" 
                             "" 'dir)
;  "/afs/cs.unc.edu/proj/contrib/mod/common/contrib-lisp"
  "Directory for contrib emacs lisp code.")


(defconst cdk-dir
  (expand-existing-file-name (getenv "CYGROOT") "" 'dir)
;  (let ((dir (expand-file-name "f:/gnuwin32/b18/")))
;    (if (file-directory-p dir) dir))
  "Directory for Cygnus CDK.")

(defconst cdk-doc-dir ;(expand-existing-file-name "cdk-man" cdk-dir 'dir)
  (expand-existing-file-name "full-man" (getenv "CYGFS") 'dir)
  "Parent directory of Cygnus info and man dirs.")

(defconst mingw32-dir
  (expand-existing-file-name (getenv "MINGWROOT") "" 'dir)
;  (let ((mingw32root (getenv "MINGWROOT")))
;    (if mingw32root (expand-file-name mingw32root)))
;  (let ((dir (expand-file-name "f:/gnuwin32/b18/")))
;    (if (file-directory-p dir) dir))
  "Directory for mingw32 compiler.")



;; Why up here?
(setq user-full-name "Peter Brown"
      user-mail-address "[EMAIL PROTECTED]")

;; PACKAGES

;; ange-ftp
(setq ange-ftp-default-user     "anonymous")
(if (and (eq phb-domain 'home) (eq system-type 'windows-nt))
    (setq ange-ftp-tmp-name-template "C:/tmp"))
;(if (eq phb-domain 'home)
;    (setq ange-ftp-ftp-program-name    "\"C:/Program Files/ftp/ftp\""))

;; arc-mode
(setq archive-zip-use-pkzip nil)        ; I don't have pkzip anywhere

;; AUC-TeX
(setq TeX-auto-local nil)

;; BBDB
(defconst bbdb-lisp-dir 
  (if (eq phb-domain 'cs)
      (expand-existing-file-name "bbdb-1.50" contrib-lisp-dir 'dir)
    (expand-existing-file-name "bbdb-1.51" phb-lisp-dir 'dir))
  "Directory for BBDB lisp files.")
(if (not bbdb-lisp-dir) ()
  (setq load-path                       (nconc load-path (list bbdb-lisp-dir))
                                        ;(cons bbdb-lisp-dir load-path)
        bbdb-default-area-code          864
        bbdb-dial-local-prefix          "9"
        bbdb-dial-long-distance-prefix  "1"
        bbdb-electric-p                 nil
        bbdb-file                       (if (eq phb-domain 'removable)
                                            (expand-file-name ".bbdb" phb-home)
                                          (expand-file-name ".bbdb" phb-zangu))
        bbdb-north-american-phone-numbers-p     nil
        bbdb/mail-auto-create-p         nil
        bbdb-user-mail-names            
"\\(\\bphbrown\\b\\)\\|\\(\\(\\bbrownp\\b\\)\\|\\(\\[EMAIL PROTECTED]\\b\\)\\)"
        )
  (if (not window-system) 
      (setq bbdb-north-american-phone-numbers-p nil
            bbdb-use-pop-up                     nil
            bbdb/mail-auto-create-p             nil))
  (autoload 'bbdb         "bbdb-com" "Insidious Big Brother Database" t)
  (autoload 'bbdb-name    "bbdb-com" "Insidious Big Brother Database" t)
  (autoload 'bbdb-company "bbdb-com" "Insidious Big Brother Database" t)
  (autoload 'bbdb-net     "bbdb-com" "Insidious Big Brother Database" t)
  (autoload 'bbdb-notes   "bbdb-com" "Insidious Big Brother Database" t)
  (autoload 'bbdb-insinuate-gnus     "bbdb-gnus"  "Hook BBDB into GNUS")
  (autoload 'bbdb-insinuate-rmail    "bbdb-rmail" "Hook BBDB into RMAIL")
  (autoload 'bbdb-insinuate-sendmail "bbdb"       "Hook BBDB into sendmail")
  ;;(autoload 'bbdb-insinuate-vm       "bbdb-vm"    "Hook BBDB into VM")

  (add-hook 'bbdb-create-hook     'bbdb-creation-date-hook)
  (add-hook 'bbdb-change-hook     'bbdb-timestamp-hook)
  (add-hook 'gnus-startup-hook    'bbdb-insinuate-gnus)
  (add-hook 'mail-setup-hook      'bbdb-insinuate-sendmail)
  (add-hook 'mail-setup-hook      'mail-abbrevs-setup)
  (add-hook 'mail-setup-hook      'bbdb-define-all-aliases t)
  (add-hook 'rmail-mode-hook      'bbdb-insinuate-rmail)

  (add-hook 'sc-attribs-preselect-hook 'phb-set-attrib)
  )

;; Calc
(defvar calc-lisp-dir 
  (if (eq phb-domain 'cs) 
      (expand-existing-file-name "calc-2.02a" contrib-lisp-dir 'dir)
    (expand-existing-file-name "calc-2.02f" phb-lisp-dir 'dir))
  "Lisp directory for calc files.")
(if (not calc-lisp-dir)  ()
  (setq load-path (nconc load-path (list calc-lisp-dir)))
  (autoload 'calc-dispatch "calc" "Calculator Options" t)
  )


;; calendar
(eval-after-load "calendar" '(phb-require 'phb-cal))

;; cc-mode
(if (string< emacs-version "19.29")
    (progn
      (fmakunbound    'c-mode)
      (makunbound     'c-mode-map)
      (fmakunbound    'c++-mode)
      (makunbound     'c++-mode-map)
      (makunbound     'c-style-alist)

      (autoload 'c++-mode "cc-mode" "C++ Editing Mode" t)
      (autoload 'c-mode   "cc-mode" "C Editing Mode" t)
      ))

(defconst cc-mode-lisp-dir (if (string< emacs-version "20.0")
                               (expand-existing-file-name 
                                "cc-mode-5.21" phb-lisp-dir 'dir))
  "Lisp directory for cc-mode files.")
;; This one has to go in front
(if cc-mode-lisp-dir (add-to-list 'load-path cc-mode-lisp-dir))

;(eval-after-load "cc-mode" '(c-set-offset 'block-open 'c-adaptive-block-open))
(eval-after-load "cc-mode" '(setq-default c-basic-offset 4))
(eval-after-load "cc-mode" '(c-set-offset 'case-label '+))
(eval-after-load "cc-mode" '(c-set-offset 'substatement-open 0))
;(eval-after-load "cc-mode" '(if window-system
                                ;(require 'andersl-java-font-lock)))

(eval-after-load "cc-mode"
 '(add-hook 'c-mode-common-hook '(lambda ()
                                   (setq time-stamp-start "Last modified: "
                                         time-stamp-end "$"))))


;; comint
(setq-default   comint-input-ignoredups t)
(eval-after-load "comint" '(define-key comint-mode-map "\M-p"
                             'comint-previous-matching-input-from-input))
(eval-after-load "comint" '(define-key comint-mode-map "\M-n"
                             'comint-next-matching-input-from-input))
(if (eq system-type 'windows-nt)
    (progn
      (setq explicit-command.com-args   nil
            ;;comint-process-echoes     t       ; Suppress command echoes
            explicit-COMMAND.COM-args   nil)
      ;; For tcsh and bash; breakage is in winnt.el
      (if (eq phb-domain 'home)
          (add-hook 'shell-mode-hook
                    '(lambda () (setq comint-completion-addsuffix t)) t)))
      )
  

;; custom
(if (string< "20.0" emacs-version)
    () ; custom is there by default in emacs 20
  (defconst custom-lisp-dir (expand-existing-file-name "custom-1.9962" 
                                                       phb-lisp-dir 'dir)
    "Lisp directory for custom library.")
  ; This has to go in front
  (if custom-lisp-dir (add-to-list 'load-path custom-lisp-dir))
  ; Go ahead and load it up
  (phb-require 'custom))

          
;; dired
(eval-after-load "dired" '(define-key dired-mode-map "q" 'kill-this-buffer))

;; hippie-expand
(setq  hippie-expand-try-functions-list '(try-complete-file-name-partially
                                          try-complete-file-name
                                          try-complete-lisp-symbol-partially
                                          try-complete-lisp-symbol
                                          try-expand-dabbrev
                                          try-expand-dabbrev-all-buffers))

;; font-lock
(global-font-lock-mode 1)
(setq font-lock-global-modes (list 'not 'sh-mode))

;; GNUS/Gnus
(eval-after-load 
 "gnus"
 '(if (string< "19.30" emacs-version) ;;; Gnus only
      (progn
        (setq ;gnus-asynchronous                        t
              ;gnus-auto-expirable-newsgroups   
              ;"mail\\.\\(ntemacs\\)\\|\\(cygwin32\\)"
              gnus-check-new-newsgroups         nil
              ;gnus-default-nntp-server         nil
              gnus-read-active-file             (if (eq phb-domain 'home) 
                                                    'some
                                                  t)
              gnus-save-killed-list             nil
              gnus-secondary-select-methods     '((nnmbox ""))
                                        ;(if (eq phb-domain 'home)
                                                ;    '((nnfolder ""))
                                                ;  '((nnmbox "")))
              gnus-select-method
              '(nntp "news.prodigy.net")                
              ;'(nntp "news1.lig.bellsouth.net")
              ;'(nntp "news_server.cs.unc.edu")
              ;'(nntp "news_server")
              gnus-thread-hide-subtree          nil
                                        ;gnus-thread-sort-functions     
'(gnus-thread-sort-by-subject)

              ;nnfolder-directory               phb-folder-dir
              ;nnfolder-active-file             (expand-file-name 
                ;                                ".nnfolder-active"
                ;                                phb-folder-dir)
              ;nnfolder-get-new-mail            nil ;(eq phb-domain 'home)

              ;nnmbox-get-new-mail              nil ;(eq phb-domain 'cs)
              nnmbox-active-file                (expand-file-name
                                                 ".mbox-active"
                                                 phb-folder-dir)
              ;nnmail-crosspost                 nil
              nnmail-delete-incoming            t
              ;nnmail-expiry-wait               1
              nnmbox-mbox-file                  (expand-file-name 
                                                "mbox"
                                                phb-folder-dir)
              ;nnmail-split-methods             
              ;'(("mail.ntemacs"        "^To:.*ntemacs")
        ;       ("mail.ntemacs"         "^C[Cc]:.*ntemacs")
        ;       ("mail.cygwin32"        "^To:.*win32@cygnus")
        ;       ("mail.cygwin32"        "^C[Cc]:.*win32@cygnus")
        ;       ("mail.misc"            ""))
              ;;nnmail-spool-file                       (or (getenv "MAIL")
              ;;                                    "/usr/spool/mail/brownp")
              phb-mail-sort-functions           '(gnus-thread-sort-by-number)
              phb-news-sort-functions           '(gnus-thread-sort-by-number
                                                  gnus-thread-sort-by-subject)
              )

        (if (eq phb-domain 'home)
            (progn
              (setenv "MAILHOST"                        "mail.lig.bellsouth.net")
              (setq message-send-mail-function          'smtpmail-send-it
                    nnmail-spool-file                   "po:phbrown"
                    nnmail-pop-password-required        t)))

        (add-hook 'gnus-select-group-hook
                  '(lambda ()
                     (if (save-match-data 
                           (string-match ":mail" gnus-newsgroup-name))
                         (setq gnus-thread-sort-functions 
                               phb-mail-sort-functions)
                       (setq gnus-thread-sort-functions 
                             phb-news-sort-functions))))
        (add-hook 'gnus-suspend-gnus-hook 'gnus-group-save-newsrc)
        (add-hook 'nnmail-read-incoming-hook 
                  '(lambda ()
                     ;; Update the displayed time, since that will clear out
                     ;; the flag that says you have mail.
                     (if (eq (process-status "display-time") 'run)
                         (display-time-filter display-time-process ""))))
        ;(add-hook 'nntp-server-opened-hook 'nntp-send-authinfo)
        )
    ;;; GNUS only
    (add-hook 'gnus-select-group-hook       'phb-init-group t)
    (setq gnus-required-headers   (delq 'Organization gnus-required-headers)
          gnus-show-threads               nil
          gnus-subscribe-newsgroup-method '(lambda (newsgroup) nil)
          )
    ))

  ;;; Both GNUS and Gnus
(eval-after-load "gnus" 
                 '(define-key gnus-group-mode-map "x" 'gnus-group-quit))
(eval-after-load 
 "gnus"
 '(setq gnus-article-save-directory     phb-folder-dir
        gnus-auto-select-first          nil
        ;;gnus-default-article-saver     'gnus-summary-save-in-mail
        gnus-mail-save-name             (function phb-gnus-save-name)
        gnus-rmail-save-name            (function phb-gnus-save-name)
        gnus-novice-user                nil
        gnus-startup-file               (expand-file-name ".newsrc" 
                                                          phb-folder-dir)
        gnus-use-full-window            nil
        gnus-use-generic-from           t
        ))

;; html-helper-mode
;(setq ;auto-mode-alist   (cons '("\\.html?$" . html-helper-mode) 
;                             auto-mode-alist)
;      html-helper-address-string 
;      (concat "<a href=\"http://www.cs.unc.edu/~brownp/\">Peter"
;             " Brown</a> &lt;<a href=\"mailto:" user-mail-address
;             "\">" user-mail-address "</a>&gt;")
;
;      html-helper-new-buffer-template
;      '("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">\n"
;       "<html> <head>\n"
;       "<title>" p "</title>\n</head>\n\n"
;       "<body>\n"
;       "<h1>" p "</h1>\n\n"
;       p
;       "\n\n<hr>\n"
;       "<address>" html-helper-address-string "</address>\n"
;       html-helper-timestamp-start
;       html-helper-timestamp-end
;       "\n</body> </html>\n")
;      html-helper-build-new-buffer     t
;      html-helper-do-write-file-hooks  t
;      )
;;(eval-after-load "html-helper-mode" '(require 'phb-bib))
;(eval-after-load "html-helper-mode" 
;                '(add-hook 'html-helper-mode-hook 'turn-on-auto-fill))
;(autoload 'html-helper-mode "html-helper-mode" nil t)
;(autoload 'html-helper-update-timestamp "html-helper-mode" nil t)
;(autoload 'html-helper-insert-new-buffer-strings "html-helper-mode" nil t)

;; info

(defconst cdk-info-dir (expand-existing-file-name "info/" cdk-doc-dir 'dir)
  "Directory for Cygnus info files.")

(defconst mingw32-info-dir (expand-existing-file-name "info/" mingw32-dir 'dir)
  "Directory for Mingw32 info files.")


(if (and (eq system-type 'windows-nt)
         (getenv "emacs_dir") ; Means this was started from EMACS.BAT
         (getenv "INFOPATH"))
    (progn
      (setenv "INFOPATH" nil)
      (setq Info-default-directory-list 
            (list (expand-file-name "info/" (getenv "emacs_dir"))))
      ))

(if (eq system-type 'msdos) (add-hook 'Info-mode-hook 'phb-info-set-faces))

(if cdk-info-dir (add-to-list 'Info-default-directory-list cdk-info-dir))
(if mingw32-info-dir 
    (add-to-list 'Info-default-directory-list mingw32-info-dir))
(if phb-info-dir (add-to-list 'Info-default-directory-list phb-info-dir))

;; jde
(defconst jde-lisp-dir (expand-existing-file-name "jde-2.1.6beta4" 
                                                  phb-lisp-dir 'dir) 
  "Directory for JDE's files.")
(defconst jdk-dir (expand-existing-file-name (getenv "JAVA_HOME") "" 'dir)
  "Directory for the JDK files.")
(defconst java-dir (expand-existing-file-name ".." jdk-dir 'dir))
(defconst jre-dir (expand-existing-file-name "jre" jdk-dir 'dir))
(defconst jdk-bootstrap-class-dir 
  (expand-existing-file-name "lib" jre-dir 'dir))
(defconst jdk-ext-class-dir (expand-existing-file-name "lib/ext" jre-dir 'dir))
;(defconst jdk-classpath (expand-existing-file-name "lib/classes.zip" jdk-dir)
;  "Location of JDK's default classes.")
(defconst jdk-bootclasspath 
  (list
   (expand-existing-file-name "rt.jar" jdk-bootstrap-class-dir)
   (expand-existing-file-name "i18n.jar" jdk-bootstrap-class-dir))
  "Path for JDK's bootstrap classes.")
(defconst jdk-extclasspath (if jdk-ext-class-dir
                               (directory-files jdk-ext-class-dir t "\\.jar$"))
  "Path for JDK's extension classes.")
(defconst phb-classpath (list
                         (expand-existing-file-name "java" phb-pub-dir 'dir)
                         ;(expand-existing-file-name "classes" java-dir 'dir)
                         ".")
  "CLASSPATH for local Java files.")
(defconst jikes-executable (expand-existing-file-name "jikes0.47/jikes.exe" 
                                                      java-dir)
  "Location for the jikes executable.")

(if (or (not (eq phb-domain 'home)) (not jde-lisp-dir)) ()
  (setq load-path                 (nconc load-path (list jde-lisp-dir))
      ;jde-compile-options      "-deprecation -verbose"
      ;jde-classpath            (concat phb-classpath ";" jdk-classpath)
      ;jde-db-source-directories (list (expand-file-name "java/" phb-pub-dir))
      ;jde-doc-dir              (if jdk-dir (expand-file-name "docs/" jdk-dir))
      ;jde-web-browser "c:/PROGRA~1/Netscape/Communicator/Program/netscape"
        )
  ;(eval-after-load "jde" (load "jde-cflow"))
  ;; Overkill, but I rarely edit any C-like language that *isn't* Java,
  ;; so it's not horrible overkill
  ;;(eval-after-load "cc-mode" '(require 'jde))
  ;;(eval-after-load "jde-db" '(jde-db-set-source-paths phb-classpath))
  )

;; jdok
(defun phb-jdok-load-hook ()
  (define-key java-mode-map "\C-c\C-vd"  'jdok-generate-javadoc-template)
  )

;; jtelnet

; (setq jtelnet-java-path       (if jdk-dir (expand-file-name "bin/jre.exe" jdk-dir))
;       jtelnet-class-arg "-cp"
;       jtelnet-class-path (if jdk-dir 
;                            (expand-file-name "classes/jtelnet" jdk-dir)))

;; mail
(setq mail-default-reply-to             user-mail-address
      mail-self-blind                   t)

;; PSGML

;;;;;; Mostly replaced by psgml-site.el

;(autoload 'sgml-mode "psgml.el" "Major mode for editing SGML." t)
;(defvar psgml-lisp-dir (if (eq phb-domain 'home)
;                         (expand-file-name "psgml-1.0.1" phb-lisp-dir)
;                       (expand-file-name "psgml-1.0.1" contrib-lisp-dir)))
;(defvar dtd-dir (expand-file-name "SGML" phb-pub-dir))
(setq auto-mode-alist           (cons '("\\.s?html?\\'" . sgml-mode)
                                      (cons '("\\.xml\\'" . xml-mode)
                                            auto-mode-alist))
      ;load-path                        (nconc load-path (list psgml-lisp-dir))

      phb-html-address-string
      (concat "<a href=\"http://www.cwix.com/~[EMAIL PROTECTED]/\">Peter"
              " Brown</a> &lt;<a href=\"mailto:" user-mail-address
              "\">" user-mail-address "</a>&gt;")

      phb-html-timestamp-start "<!-- hhmts start -->"
      phb-html-timestamp-end "<!-- hhmts end -->"
      phb-html-helper-before-timestamp-string "\nLast modified: "

      ;;Until I get my own timestamping up
      ;html-helper-timestamp-start phb-html-timestamp-start
      ;html-helper-timestamp-end phb-html-timestamp-end

      phb-html-new-buffer-string
      (concat
       "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n"
       "<html lang=\"en-US\"> <head>\n"
       "<title>" "</title>\n</head>\n\n"
        "<body bgcolor=\"White\">\n"
        "<h1 align=\"center\">" "</h1>\n\n"
        "\n\n<hr>\n"
        "<address>" phb-html-address-string "</address>\n"
        "Last modified: " 
        phb-html-timestamp-start
        ;"\n" 
        ;phb-html-timestamp-end
        "\n</body> </html>\n")

      sgml-auto-activate-dtd    t
      ;sgml-catalog-files       (list
        ;                        (expand-file-name "HTML32.cat" dtd-dir)
        ;                        (expand-file-name "local.cat" dtd-dir))
      ;sgml-custom-dtd          
      ;'(("HTML 3.2"
;        "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2 Final//EN\">"))
 ;     sgml-default-doctype-name "html" ; Don't ask me why it has to be
                                       ; lower-case
      )

(eval-after-load 
 "psgml-mode"
 (progn
   (add-hook
    'sgml-mode-hook
    '(lambda ()
       ;(require 'time-stamp) ; Done standard, below
       (setq time-stamp-line-limit      -8
             time-stamp-start   (concat
                                 (regexp-quote phb-html-timestamp-start)
                                 "\\("
                                 (regexp-quote 
                                  phb-html-helper-before-timestamp-string)
                                 "\\)?")
             time-stamp-end     (concat (regexp-quote phb-html-timestamp-end) 
                                        "\\|$"))
             
       ;(add-hook 'local-write-file-hooks 'time-stamp)

       ;; Initialize an empty buffer (just assumes it's HTML)
       (if (zerop (buffer-size))
           (progn
             (insert phb-html-new-buffer-string)
             (goto-char (point-min))
             (sgml-next-data-field))
         )))))
                 

;; shell
(if (and (eq phb-domain 'home) (eq system-type 'windows-nt))
    (progn
      (setq explicit-shell-file-name 
            (concat (getenv "CYG_PATH") "\\bash.exe")
            shell-command-switch "-c")
;;      win32-quote-process-args t)
      (if (getenv "PID") (setenv "PID" nil))
      (eval-after-load 
       "comint"
       '(progn
          (fset 'original-comint-exec-1 (symbol-function 'comint-exec-1))
          (defun comint-exec-1 (name buffer command switches)
            (let ((binary-process-input t)
                  (binary-process-output nil))
              (original-comint-exec-1 name buffer command switches)))))

      )
  )
;    (setq explicit-shell-file-name "c:\\bin\\LOCAL\\tcsh.exe"))

(eval-after-load 
 "shell"
 '(setq shell-popd-regexp (concat "po\\|" shell-popd-regexp)
        shell-pushd-regexp (concat "pu\\|" shell-pushd-regexp)
        shell-pushd-dunique t
        ))

;; supercite
(setq sc-auto-fill-region-p             nil
      sc-preferred-attribution-list 
      '("sc-lastchoice" "x-attribution" "phb-attrib"
        "firstname" "initials" "lastname"))
(add-hook 'mail-citation-hook           'sc-cite-original)

;; text-mode
(setq   default-major-mode              'text-mode)
(add-hook 'text-mode-hook               'turn-on-auto-fill)


;; time
(setq   display-time-24hr-format        t)
(if (not (or (eq system-type 'windows-nt)
             (eq system-type 'gnu/linux)))
    (add-hook 'display-time-hook 'phb-time-stuff))
(if (or (not (eq phb-domain 'home)) (string< "19.31" emacs-version))
    (display-time))

;; time-stamp
(autoload 'time-stamp-strftime "time-stamp")
(add-hook 'write-file-hooks 'time-stamp)
(setq phb-date-format "%02d %3b %:y"
      time-stamp-format (concat phb-date-format " %02H:%02M:%02S"))
(eval-after-load "time-stamp"
                 '(progn
                    ;(make-variable-buffer-local 'time-stamp-format)
                    (make-variable-buffer-local 'time-stamp-line-limit)
                    (make-variable-buffer-local 'time-stamp-start)
                    (make-variable-buffer-local 'time-stamp-end)
                    ))

;; timecard-mode
(autoload 'timecard-checkin             "timecard-mode" nil t)
(autoload 'timecard-find-timecard       "timecard-mode" nil t)
(autoload 'timecard-mode                "timecard-mode" nil t)
(autoload 'insert-todo                  "diary-lib" nil t)
(autoload 'update-todo                  "diary-lib" nil t)
(defalias 'todo                         'timecard-find-timecard)
(defalias 'log-time                     'timecard-checkin)
(setq  timecard-checkin-command         nil
       timecard-checkout-command        nil
       timecard-define-menus            t
       timecard-file                    (file-truename
                                         (if (eq phb-domain 'removable)
                                             (expand-file-name "log" phb-home)
                                           (expand-file-name "log" phb-zangu)))
       timecard-mode-hook               '(lambda ()
                                           (setq default-directory phb-home))
       )
(eval-after-load "timecard-mode" 
                 '(define-key global-map [menu-bar timecard] nil))

;; VC
(setq vc-initial-comment        t
      vc-make-backup-files      t)

;; view
(defun view-buffer-if-read-only ()
  (if buffer-read-only (view-buffer (current-buffer))))

(defalias 'find-file-read-only  'view-file)
(add-hook 'find-file-hooks      'view-buffer-if-read-only t)
(eval-after-load "view" '(define-key view-mode-map "q" 'kill-this-buffer))

(if (eq phb-domain 'home) 
    (progn
      (if (eq system-type 'windows-nt)
          (progn
            ;; WoMan
            (defconst cdk-man-dirs
              (if cdk-doc-dir (directory-files 
                               (expand-file-name "man" cdk-doc-dir)
                               t "man[1-9ln]"))
              "List of CDK man directories.")
            (setq woman-manpath (expand-existing-file-name "man" 
                                                           cdk-doc-dir 'dir)
                  woman-path (list "f:/pbmplus/man")
                  woman-cache-filename nil)

            (autoload 'woman "woman"
              "Decode and browse a UN*X man page." t)
            (autoload 'woman-find-file "woman"
              "Find, decode and browse a specific UN*X man-page file." t)
            ))
      ;; smtpmail
      (setq smtpmail-default-smtp-server        "smtp.prodigy.net"
            ;;"mailrelay.cwix.com"
            ;;"mail.lig.bellsouth.net"
            smtpmail-local-domain               nil
            send-mail-function                  'smtpmail-send-it
            )
      (load-library "smtpmail")

      ;; rsl-mode
      (autoload 'rsl-mode "rsl-mode" 
        "RenderMan Shading Language Editing Mode" t)
      (setq auto-mode-alist (append auto-mode-alist '(("\\.sl$" . rsl-mode))))
      )
    ;(progn
    ;  (load-library "tcp")
    ;  (setq tcp-program-name "nttcp"))

  ;; ispell
  (setq  ispell-program-name              "ispell.new"
         ispell-personal-dictionary       (expand-file-name ".ispell_words" 
                                                            phb-zangu)
         )

  ;; lispdir
  (autoload 'lisp-dir-apropos     "lispdir" nil t)
  (autoload 'lisp-dir-retrieve    "lispdir" nil t)

  ;; rmail
  (setq rmail-default-rmail-file  (expand-file-name "XMAIL" phb-folder-dir)
        rmail-file-name           (expand-file-name "RMAIL" phb-folder-dir)
        rmail-ignored-headers     (concat "^X-VM\\|" rmail-ignored-headers)
        rmail-output-file-alist   '(("[EMAIL PROTECTED]"
                                     . (expand-file-name "emacs/ntemacs.gz" 
                                                         phb-folder-dir))
                                    ("[EMAIL PROTECTED]"
                                     . (expand-file-name "win95/gnu-win32.gz"
                                                         phb-folder-dir))
                                    (".*" . (phb-rmail-suggest-file)))
        )
  (eval-after-load "rmail"        '(defun phb-rmail-reply (CC-flag)
                                     (interactive "P")
                                     (rmail-reply (not CC-flag))))
  (eval-after-load "rmail"        '(define-key rmail-mode-map "r"
                                     'phb-rmail-reply))

  ;; term
  (autoload 'term                         "term" nil t)

  ;; W3
  (setq w3-hotlist-file (expand-file-name ".mosaic-hotlist-default" phb-zangu))
  (phb-require 'w3-site)
  )

;; VARIABLE SETTINGS

(setq
 auto-mode-alist                (append
                                 (list
                                  '("\\.t[ag]z\\'" . tar-mode))
                                 (if (not (fboundp 'archive-mode))
                                     (list 
                                      '("\\.zip\\'" . phb-unzip-while-visiting)))
                                 auto-mode-alist)
 blink-matching-paren-distance  8000000         ;;Far beyond my needs
 enable-local-eval              t
 enable-local-variables         'maybe
 enable-recusive-minibuffers    t
 find-file-visit-truename      t
 find-file-existing-other-name  (not (eq system-type 'windows-nt))
 kill-emacs-query-functions
 (cons (lambda () (yes-or-no-p "Really kill Emacs? "))
       kill-emacs-query-functions)
 inhibit-startup-message        t
 load-path                      (cons phb-lisp-dir load-path)
 mark-even-if-inactive          t
 next-line-add-newlines         nil
 require-final-newline          t   ; Nice for shell scripts, doesn't hurt else
 )

;; LOAD FILES

(require 'phb-funs) ; First load, so that if any of the others fail
                    ; I'm not as badly hosed

(load "cua-mode" t)
(phb-require 'filladapt)
(if (and (not (eq system-type 'windows-nt))
         (not (fboundp 'auto-compression-mode)))
    (require 'jka-compr))
;(if (eq system-type 'windows-nt) (require 'phb-bak))
(phb-require 'tex-site)
(require 'time-stamp)   ; no phb-require because in standard distribution
(phb-require 'psgml-site)
;(require 'jtelnet)
(phb-require 'jde)  ;; should be able to autoload this, grumble, grumble...
(load "java-font-lock20.el" t nil t)
(phb-require 'gnuserv)

;;HOOKS

;; These functions should be defined by now, if they ever will be
(if (fboundp 'turn-on-filladapt-mode)
    (add-hook 'text-mode-hook   'turn-on-filladapt-mode))
(add-hook 'suspend-hook         '(lambda () (not (save-some-buffers))))
(if (fboundp 'phb-key-setup) (add-hook 'term-setup-hook 'phb-key-setup t))



;; ASSORTED FUTZES

(transient-mark-mode 1)
(if (fboundp 'auto-compression-mode) (auto-compression-mode 1))
(if (fboundp 'CUA-mode) (CUA-mode t))
;(if (featurep 'gnuserv) (gnuserv-start))

;(if (fboundp 'pc-selection-mode) (pc-selection-mode)
;  (if (fboundp 'pc-bindings-mode) (pc-bindings-mode)))

;(if (eq phb-domain 'home)
;    (setq win32-num-mouse-buttons 2))

(put 'eval-expression 'disabled nil)
(put 'narrow-to-region 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)

(custom-set-variables
 '(jde-compile-option-command-line-args "+P")
 '(jde-compile-option-depend t)
 '(jde-help-docsets (quote (("javadoc" "c:/java/jdk1.2.2/docs/api" nil) ("javadoc" 
"c:/java/jdk1.2.2/docs/java3d" nil) ("javadoc" "c:/java/xml4j_2_0_4/apiDocs" nil) 
("javadoc" "c:/java/OROInc/PerlTools-1.2/doc/api" nil))))
 '(jde-run-read-vm-args t)
 '(jde-compile-option-debug (quote ("all" (t nil nil))))
 '(jde-compile-option-target (quote ("1.1")))
 '(jde-compile-option-depend-switch (quote ("+F")))
 '(jde-compile-option-deprecation nil)
 '(jde-compile-option-classpath (append jdk-bootclasspath jdk-extclasspath 
phb-classpath))
 '(jde-run-read-app-args t)
 '(jde-compiler jikes-executable)
 '(jde-jdk-doc-url "file:/c:/java/jdk1.2.2/docs/api/overview-summary.html")
 '(jde-global-classpath phb-classpath)
 '(jde-enable-abbrev-mode t)
 '(jde-db-read-app-args t)
 '(jde-read-compile-args t)
 '(tempo-interactive t)
 '(jde-mode-abbreviations (quote (("ab" . "abstract") ("bo" . "boolean") ("br" . 
"break") ("byv" . "byvalue") ("ca" . "catch") ("ch" . "char") ("cl" . "class") ("co" . 
"const") ("con" . "continue") ("de" . "default") ("dou" . "double") ("el" . "else") 
("ex" . "extends") ("fa" . "false") ("fi" . "final") ("fin" . "finally") ("fl" . 
"float") ("fu" . "future") ("ge" . "generic") ("impl" . "implements") ("impo" . 
"import") ("ins" . "instanceof") ("inte" . "interface") ("lo" . "long") ("na" . 
"native") ("nu" . "null") ("pa" . "package") ("pri" . "private") ("pro" . "protected") 
("pu" . "public") ("re" . "return") ("sh" . "short") ("st" . "static") ("su" . 
"super") ("sw" . "switch") ("sy" . "synchronized") ("th" . "this") ("thr" . "throw") 
("tra" . "transient") ("tr" . "true") ("vo" . "void") ("vol" . "volatile") ("wh" . 
"while"))))
 '(jdok-load-hook (quote (phb-jdok-load-hook))))
(custom-set-faces)

(load "jde-cflow")  ;; Why can't this be eval-after-loaded?
(phb-require 'jpack)
(phb-require 'jdok)

Reply via email to