X-Git-Url: http://git.kpe.io/?p=cl-readline.git;a=blobdiff_plain;f=readline.lisp;fp=readline.lisp;h=18b48c08e1a9240ba576cace714238999c1b5ed2;hp=ea2dedef0de5c5794710d9691403208eba6608ce;hb=b8a4296ea50f31577fa6ee695ef900a4637ee0c9;hpb=044e8c98d9b11b20a62d6a3ea31bfb6458a6c2f7 diff --git a/readline.lisp b/readline.lisp index ea2dede..18b48c0 100644 --- a/readline.lisp +++ b/readline.lisp @@ -1,5 +1,5 @@ ;; Copyright (c) 2003 Nikodemus Siivola -;; +;; ;; Permission is hereby granted, free of charge, to any person obtaining ;; a copy of this software and associated documentation files (the ;; "Software"), to deal in the Software without restriction, including @@ -7,10 +7,10 @@ ;; distribute, sublicense, and/or sell copies of the Software, and to ;; permit persons to whom the Software is furnished to do so, subject to ;; the following conditions: -;; +;; ;; The above copyright notice and this permission notice shall be included ;; in all copies or substantial portions of the Software. -;; +;; ;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -18,7 +18,7 @@ ;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + (in-package readline) (defvar *whitespace* (list #\Space #\Tab)) @@ -31,8 +31,8 @@ (defmacro ignore-end-of-file (&body forms) `(catch 'end-of-file (handler-bind ((end-of-file (lambda (e) - (declare (ignore e)) - (throw 'end-of-file nil)))) + (declare (ignore e)) + (throw 'end-of-file nil)))) ,@forms))) (def-function ("readline" c-readline) @@ -66,7 +66,7 @@ :returning :void) (let (pkg) - + (defun add-completion (string) "Add STRING as a custom-completion." (setq pkg nil) @@ -77,14 +77,14 @@ "Clear all custom-completions." (setq pkg nil) (c-clear-completions)) - + (defun use-package-complete (package) "Load symbols in package CL-USER as custom-completions." (unless (eql pkg package) (setq pkg package) (clear-completions) (do-symbols (sym (find-package package)) - (add-completion (string-downcase (string sym))))) + (add-completion (string-downcase (string sym))))) (use-custom-complete) nil)) @@ -97,29 +97,29 @@ (with-cstring (c-string string) (c-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 (convert-and-free-foreign-string (c-readline c-prompt))) - (str2 (string-trim *whitespace* str))) + (str2 (string-trim *whitespace* str))) (when (and history (not (string= "" str2))) - (add-history str2)) + (add-history str2)) str))) (defun readexpr (&key - (primary-prompt "=> ") - (secondary-prompt "| ") - (history t)) + (primary-prompt "=> ") + (secondary-prompt "| ") + (history t)) "Read an expression from current TTY with line-editing." (let (expr) (do* ((str (readline :prompt primary-prompt :history history) - (readline :prompt secondary-prompt :history history)) - (input str (concatenate 'string input " " str))) - ((ignore-end-of-file - (setq expr (with-input-from-string (in input) - (read in nil nil)))) - expr)))) + (readline :prompt secondary-prompt :history history)) + (input str (concatenate 'string input " " str))) + ((ignore-end-of-file + (setq expr (with-input-from-string (in input) + (read in nil nil)))) + expr)))) ;; ;; Termios