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> <<a href=\"mailto:" user-mail-address
; "\">" user-mail-address "</a>>")
;
; 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> <<a href=\"mailto:" user-mail-address
"\">" user-mail-address "</a>>")
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)