Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!bert From: bert@cs.utexas.edu (Herbert Kay) Newsgroups: comp.lang.lisp Subject: ilisp bug fixes for akcl Keywords: ilisp akcl Message-ID: <1328@tokio.cs.utexas.edu> Date: 15 Apr 91 21:04:26 GMT Organization: U. Texas CS Dept., Austin, Texas Lines: 107 Mike Christiansen has mentioned to me that he has gotten a bunch of requests for my ilisp fixes for the akcl dialect. So, without further ado, here are the fixes >In article you write: >>I am having problems getting ilisp to works with akcl. (ilisp is >>gnu's interactive lisp interface for several CL implementations >>includeing kcl/akcl). Has anyone been able to make this work?. >> >>thanks. >> >>-- >> >>Mike Christiansen >>Superconducting Super Collider Laboratory >>Dallas, TX. >>christia@carob.ssc.gov I had the same problem. Here is my copy of the fix that I sent to the ilisp people. It involves changing a variable and a function definition in the file ilisp-src.el. Even with these fixes, there still seem to be some bugs, but at least it turns over. Good luck, - Bert Kay bert@cs.utexas.edu ----------------------------- I am running gnuemacs version 18.54.17, ilisp version 4.10, and akcl version 1.473. 1) The akcl dialect definition should change the comint-prompt-regexp to "^>+". Ilisp version 4.10 had this prompt default to the kcl prompt which is "^>+ ". 2) In ilisp-src.el, the function edit-definitions-lisp has a bug such that when the 'source' local variable is not set, its value is set to nil rather than "nil". This causes lisp-last-line to bomb. Here is my version of edit-definitions-lisp : (defun edit-definitions-lisp (symbol type &optional stay search locator) "Find the source files for the TYPE definitions of SYMBOL. If STAY, use the same window. If SEARCH, do not look for symbol in inferior LISP. The definition will be searched for through the inferior LISP and if not found it will be searched for in the current tags file and if not found in the files in lisp-edit-files set up by \(\\[lisp-directory]) or the buffers in one of lisp-source-modes if lisp-edit-files is T. If lisp-edit-files is nil, no search will be done if not found through the inferior LISP. TYPES are from ilisp-source-types which is an alist of symbol strings or list strings. With a negative prefix, look for the current symbol as the first type in ilisp-source-types." (interactive (let* ((types (ilisp-value 'ilisp-source-types t)) (default (if types (car (car types)))) (function (lisp-function-name)) (symbol (lisp-buffer-symbol function))) (if (lisp-minus-prefix) (list function default) (list (ilisp-read-symbol (format "Edit Definition [%s]: " symbol) function nil t) (if types (ilisp-completing-read (format "Type [%s]: " default) types default)))))) (let* ((name (lisp-buffer-symbol symbol)) (symbol-name (lisp-symbol-name symbol)) (command (ilisp-value 'ilisp-find-source-command t)) (source (if (and command (not search)) (ilisp-send (format command symbol-name (lisp-symbol-package symbol) type) (concat "Finding " type " " name " definitions") 'source) ;; Added next line because the string "nil" rather than the ;; atom nil is needed here so that lisp-last-line works OK. ;; BKay 23Mar91 (format "nil"))) (result (lisp-last-line source)) (case-fold-search t) (source-ok (not (or (ilisp-value 'comint-errorp t) (string-match "nil" (car result))))) (tagged nil)) (unwind-protect (if (and tags-file-name (not source-ok)) (progn (setq lisp-using-tags t) (find-tag symbol-name nil stay) (setq tagged t))) (if (not tagged) (progn (setq lisp-last-definition (cons symbol type) lisp-last-file nil lisp-last-locator (or locator (ilisp-value 'ilisp-locator))) (insert "OK to here") (lisp-setup-edit-definitions (format "%s %s definitions:" type name) (if source-ok (cdr result) lisp-edit-files)) (next-definition-lisp nil t))))))