Index: abcl.asd =================================================================== --- abcl.asd (revision 12900) +++ abcl.asd (working copy) @@ -46,7 +46,8 @@ (:file "math-tests") (:file "misc-tests") (:file "bugs" :depends-on ("file-system-tests")) - (:file "pathname-tests"))))) + (:file "pathname-tests") + (:file "repl-tests"))))) (defmethod perform ((o test-op) (c (eql (find-system 'abcl-test-lisp)))) "Invoke tests with (asdf:oos 'asdf:test-op :abcl-test-lisp)." Index: src/org/armedbear/lisp/top-level.lisp =================================================================== --- src/org/armedbear/lisp/top-level.lisp (revision 12900) +++ src/org/armedbear/lisp/top-level.lisp (working copy) @@ -348,8 +348,8 @@ (setf string (subseq string 1) len (1- len))) (dolist (entry *command-table*) - (when (or (string= string (entry-abbreviation entry)) - (string= string (entry-name entry))) + (when (or (string-equal string (entry-abbreviation entry)) + (string-equal string (entry-name entry))) (return (entry-command entry)))))) (defun process-cmd (form) @@ -376,13 +376,17 @@ (defun read-cmd (stream) (let ((c (peek-char-non-whitespace stream))) - (cond ((eql c *command-char*) - (read-line stream)) - ((eql c #\newline) - (read-line stream) - *null-cmd*) - (t - (read stream nil))))) + (if (eql c #\Newline) + (progn + (read-line stream) + *null-cmd*) + (let ((input (read stream nil))) + (if (not (keywordp input)) + input + (let ((name (string-downcase (symbol-name input)))) + (if (find-command name) + (concatenate 'string ":" name) + input))))))) (defun repl-read-form-fun (in out) (loop Index: test/lisp/abcl/repl-tests.lisp =================================================================== --- test/lisp/abcl/repl-tests.lisp (revision 0) +++ test/lisp/abcl/repl-tests.lisp (revision 0) @@ -0,0 +1,31 @@ +(in-package #:abcl.test.lisp) + +;; repl keyword +(deftest repl.keyword.1 + (with-input-from-string (input ":hello") + (top-level::repl input)) + :hello) + +;; repl string +(deftest repl.string.2 + (with-input-from-string (input "\"help\"") + (top-level::repl input)) + "help") + +;; repl command +(deftest repl.command.3 + (with-input-from-string (input ":help") + (top-level::repl input)) + nil) + +;; repl case-insensitive-command +(deftest repl.command.case-ignore.4 + (with-input-from-string (input ":HELP") + (top-level::repl input)) + nil) + +;; repl case-insensitive-keyword +(deftest repl.keyword.case-ignore.5 + (with-input-from-string (input ":HELLO") + (top-level::repl input)) + :hello)