I was just bringing up ILISP to work with CMULISP (18d) on Linux, and
having some problems. I apologise for the slightly off-topic post, but
there doesn't seem to be an ilisp newsgroup:
1. I just can't seem to figure out how to get the ilisp menu in a lisp
buffer. When I fire up cmulisp, I get menus in the comint buffer, but
not in the lisp source file directories. Before loading ilisp, I eval
the following forms, which I believe to be the right thing to do, from
reading ilisp-cl-easy-menu:
;; I think I might need this to get the menu..
(setq ilisp-*use-hyperspec-interface-p* t)
(setq ilisp-*enable-ild-support-p* t)
(load-library "ilisp-cl-easy-menu")
2. When I try to find definitions, ILISP yields errors for ill-formed
regular expressions. This has something to do with the regexp that
ILISP uses to try to find class accessors:
"\\(:accessor\\|:writer\\|:reader\\)\\([ \t\n]+\\(.\\)?+[ \t\n]*\\|[ \t\n]*.[
\t\n]+\\)%s[ \t\n)]"
(what shows up as a box on my screen is a ^F).
Here's a backtrace when I try to find the definition of the DEFSTRUCTURE
macro:
Signaling: (invalid-regexp "Invalid preceding regular expression")
re-search-forward("\\(:accessor\\|:writer\\|:reader\\)\\([ \n]+\\(.\\)?+[
\n]*\\|[ \n]*.[
\n]+\\)defstructure[ \n)]" nil t)
(if back (re-search-backward regexp nil t) (re-search-forward regexp
nil t))
)
(let ((regexp ...)) (if back (re-search-backward regexp nil t)
(re-search-forward regexp nil t)))
)
lisp-re(nil "\\(:accessor\\|:writer\\|:reader\\)\\([ \n]+\\(.\\)?+[
\n]*\\|[ \n]*.[ \n]+\\)%s[ \n)]"
"defstructure")
(or (if (equal type "any") (lisp-re back ... name name))
(ilisp-locate-clos-method name type back) (ilisp-locate-clisp-defn name
type back) (when first (lisp-locate-ilisp symbol type first back)) (when
(and first prefix) (lisp-re back prefix)) (lisp-re back class name))
)
(let* ((name ...) (prefix ...) (class
"\\(:accessor\\|:writer\\|:reader\\)\\([ \n]+\\(.\\)?+[ \n]*\\|[
\n]*.[ \n]+\\)%s[ \n)]")) (or (if ... ...)
(ilisp-locate-clos-method name type back) (ilisp-locate-clisp-defn name
type back) (when first ...) (when ... ...) (lisp-re back class name)))
)
lisp-locate-clisp((nil nil "defstructure") "function" t nil)
funcall(lisp-locate-clisp (nil nil "defstructure") "function" t nil)
(if (funcall locator symbol type first back) (progn (setq
lisp-last-file file lisp-last-point ...) (if ... ... ...) (recenter 0)
(if name ... ...) t) (if first (goto-char lisp-first-point) (set-buffer
buffer) (goto-char point)) nil)
)
(let* ((symbol ...) (type ...) (first ...) (buffer ...) name)
(lisp-find-file file pop) (if first (setq lisp-first-point ...)) (if
back (if first ... ... ... ...) (goto-char point) (if ... ...)) (if (eq
type ...) (message "Search %s for %s" file symbol) (message "Searching
%s for %s %s" file type ...)) (if (funcall locator symbol type first
back) (progn ... ... ... ... t) (if first ... ... ...) nil))
)
(if (not (file-exists-p file)) (progn (message "File %s doesn't
exist!" file) (sit-for 1) nil) (let* (... ... ... ... name)
(lisp-find-file file pop) (if first ...) (if back ... ... ...) (if ...
... ...) (if ... ... ... nil)))
)
(if file (if (not ...) (progn ... ... nil) (let* ... ... ... ... ...
...)))
)
lisp-locate-definition(lisp-locate-clisp ((nil nil "defstructure") .
"function") "/home/rpg/lisp/aima/aima.lisp" 1 nil t)
(if (lisp-locate-definition lisp-last-locator lisp-last-definition
file 1 back (prog1 pop ...)) (setq result (quote first)) (setq result
(if ... ...)))
)
(if file (if (lisp-locate-definition lisp-last-locator
lisp-last-definition file 1 back ...) (setq result ...) (setq result
...)) t)
)
(let ((file ...)) (if file (if ... ... ...) t))
)
(or (setq result (lisp-locate-definition lisp-last-locator
lisp-last-definition lisp-last-file lisp-last-point back)) (let (...)
(if file ... t)))
)
(not (or (setq result ...) (let ... ...)))
)
(while (not (or ... ...)))
)
(let ((done nil) (result nil)) (while (not ...)) (set-buffer
(window-buffer ...)) result)
)
lisp-next-definition(nil t)
(let* ((result ...) (symbol ...) (type ...) (name ...)) (cond (...
...) (... ...) (t ...)))
)
(if lisp-using-tags (tags-loop-continue) (let* (... ... ... ...)
(cond ... ... ...)))
)
next-definition-lisp(nil t)
(progn (setq lisp-last-definition (cons symbol type) lisp-last-file
nil lisp-last-locator (or locator ...)) (lisp-setup-edit-definitions
(format "%s %s definitions:" type name) (if source-ok ...
lisp-edit-files)) (next-definition-lisp nil t))
)
(if (not tagged) (progn (setq lisp-last-definition ... lisp-last-file
nil lisp-last-locator ...) (lisp-setup-edit-definitions ... ...)
(next-definition-lisp nil t)))
)
(unwind-protect (if (and tags-file-name ...) (progn ... ... ...)) (if
(not tagged) (progn ... ... ...)))
)
(let* ((name ...) (symbol-name ...) (command ...) (source ...)
(result ...) (source-ok ...) (case-fold-search t) (tagged nil))
(unwind-protect (if ... ...) (if ... ...)))
)
(lambda (symbol type &optional stay search locator) "Find the source
files for the TYPE definitions of SYMBOL.\nIf STAY, use the same window.
If SEARCH, do not look for symbol in\ninferior LISP. The definition
will be searched for through the\ninferior LISP and if not found it will
be searched for in the current\ntags file and if not found in the files
in lisp-edit-files set up by\n(\\[lisp-directory]) or the buffers in one
of lisp-source-modes if\nlisp-edit-files is T. If lisp-edit-files is
nil, no search will be\ndone if not found through the inferior LISP.
TYPES are from\nilisp-source-types which is an alist of symbol strings
or list\nstrings. With a negative prefix, look for the current symbol
as the\nfirst type in ilisp-source-types." (interactive (let* ... ...))
(let* (... ... ... ... ... ... ... ...) (unwind-protect ... ...)))((nil
nil "defstructure") "function")
call-interactively(edit-definitions-lisp)
3. For some reason, every time I type "(load " in the cmulisp buffer,
it fires up the Arglist window for LOAD, grabbing my cursor, and putting
it there, so the filename I'm typing goes into the darned
*Arglist-Output* window. Since I didn't want the window to begin with,
this is very irritating.