-CL-READLINE 0.1
+CL-READLINE 0.1.1
CL-READLINE is a simple UFFI-based wrapper for the GNU Readline
library.
and CMUCL. Other platforms and UFFI compatible implementations should
work, but may require tweaking.
- To use:
+ To load:
- (asdf:oos 'asdf:load-op 'readline)
- (rl:readline :prompt "> ")
+ (asdf:oos 'asdf:load-op 'readline)
+ The interface exported by the package READLINE (nicknamed RL).
+
+Functions:
+
+ READLINE &key prompt history
+
+ prompt -- a string (default "")
+ history -- a boolean (default t)
+
+ Prompt is the prompt displayed to user.
+
+ History controls whether the string read is added to history, or
+ not. Note that history is available in any case. Currently there
+ is no way to erase history.
+
+ ADD-HISTORY string
+
+ Adds the given string to history.
+
+ USE-FILENAME-COMPLETE
+
+ Use the Readline's default filename-completion system.
+
+ USE-CL-COMPLETE
+
+ Insert symbols in CL-USER to the custom completion pool,
+ and start using the custom completion system.
+
+ USE-CUSTOM-COMPLETE
+
+ Use the custom completion system.
+
+ ADD-COMPLETION
+
+ Add a completion to the custom completion pool.
+
+ CLEAR-COMPLETIONS
+
+ Empty the custom completion pool.
Package: cl-readline
Architecture: any
-Depends: ${shlibs:Depends}, common-lisp-controller, cl-uffi, libreadline4
+Depends: ${shlibs:Depends}, common-lisp-controller, cl-uffi
Description: Common Lisp interface to the GNU readline library
This package uses UFFI to provide an interface to the GNU readline
library for Common Lisp programs.
(setq cl-complete nil)
(libreadline::clear-completions))
- (defun use-custom-complete ()
- "Use custom-competions."
- (libreadline::use-custom-complete)
- nil)
-
- (defun use-filename-complete ()
- "Use default completion system. (filename)"
- (libreadline::use-filename-complete)
- nil)
-
(defun use-cl-complete ()
"Load symbols in package CL-USER as custom-completions."
(unless cl-complete
(do-symbols (sym (find-package :cl-user))
(add-completion (string-downcase (string sym)))))
(use-custom-complete)
- nil)
+ nil))
+
+;;; Everything that affects the custom-completion collection goes
+;;; above.
+
+(defun use-custom-complete ()
+ "Use custom-competions."
+ (libreadline::use-custom-complete)
+ nil)
+
+(defun use-filename-complete ()
+ "Use default completion system. (filename)"
+ (libreadline::use-filename-complete)
+ nil)
- (defun add-history (string)
- "Add STRING to history."
- (with-cstring (c-string string)
- (libreadline::add-history c-string))
- string)
+(defun add-history (string)
+ "Add STRING to history."
+ (with-cstring (c-string string)
+ (libreadline::add-history c-string))
+ string)
- (defun readline (&key (prompt "") (history t))
- "Read a line from current TTY with line-editing."
- (with-cstring (c-prompt prompt)
- (let ((str (string-trim
- *whitespace*
- (convert-from-cstring (libreadline::readline c-prompt)))))
- (when (and history (not (string= "" str)))
- (add-history str))))))
+(defun readline (&key (prompt "") (history t))
+ "Read a line from current TTY with line-editing."
+ (with-cstring (c-prompt prompt)
+ (let* ((char* (libreadline::readline c-prompt))
+ (str (string-trim *whitespace*
+ (convert-from-foreign-string char*))))
+ (free-foreign-object char*)
+ (when (and history (not (string= "" str)))
+ (add-history str))
+ str)))