[Ecls-list] readline
Carlo Capocasa
capocasa at gmx.net
Thu Sep 20 08:16:25 UTC 2007
> Is there a way to add GNU readline support to the Ecls interpreter?
rlwrap is a pretty nice alternative.
When you've got it built or a package installed, you can add the
following to your .bashrc:
alias sbcl="rlwrap -b \$BREAK_CHARS sbcl"
and then create a file ~/.ecl_completions with the following content:
(with-open-file (!!!-stream "~/.ecl_completions"
:direction :output
:if-exists :supersede)
(let ((!!!-seen (make-hash-table :size 6000 :test #'equal))
(!!!-cl-package (find-package "CL"))
(!!!-cl-user-package (find-package "CL-USER")))
(loop for !!!-package in (list-all-packages)
do (let ((!!!-prefixes
(if (or (eq !!!-package !!!-cl-package)
(eq !!!-package !!!-cl-user-package))
(list "")
(mapcar #'(lambda (!!!-prefix)
(concatenate 'string
(string-downcase !!!-prefix)
":"))
(if (package-nicknames !!!-package)
(package-nicknames !!!-package)
(list (package-name !!!-package)))))))
(loop for !!!-symbol being the symbols of !!!-package
for !!!-symbol-name = (symbol-name !!!-symbol)
when (or (eq (nth-value 1
(find-symbol !!!-symbol-name
!!!-package))
:external)
(eq !!!-package !!!-cl-user-package))
do (loop for !!!-prefix in !!!-prefixes
do (let ((!!!-completion
(format nil
"~A~A~%"
!!!-prefix
(string-downcase !!!-symbol))))
(unless (or (gethash !!!-completion !!!-seen)
(string= "!!!-"
!!!-symbol-name
:end2 (min
(length !!!-symbol-name)
4)))
(setf (gethash !!!-completion !!!-seen)
t)
(princ !!!-completion !!!-stream)))))))))
Carlo
More information about the ecl-devel
mailing list