Changeset 3868


Ignore:
Timestamp:
09/18/03 18:56:25 (20 years ago)
Author:
piso
Message:

Support :ap command.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Interpreter.java

    r3538 r3868  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Interpreter.java,v 1.29 2003-08-27 17:28:26 piso Exp $
     5 * $Id: Interpreter.java,v 1.30 2003-09-18 18:56:25 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    346346            return true;
    347347        }
     348        if (command.equals("apropos")) {
     349            if (args != null && args.length() > 0) {
     350                if (args.length() > 1 && args.charAt(0) == '"' &&
     351                    args.charAt(args.length()-1) == '"') {
     352                    ;
     353                } else {
     354                    StringBuffer sb = new StringBuffer();
     355                    sb.append('"');
     356                    int i = args.indexOf(' ');
     357                    if (i < 0) {
     358                        sb.append(args);
     359                        sb.append('"');
     360                    } else {
     361                        // Two args to APROPOS.
     362                        String arg1 = args.substring(0, i);
     363                        String arg2 = args.substring(i + 1).trim();
     364                        sb.append(arg1);
     365                        sb.append('"');
     366                        sb.append(' ');
     367                        sb.append(arg2);
     368                    }
     369                    args = sb.toString();
     370                }
     371                getStandardOutput().setCharPos(0);
     372                StringInputStream stream =
     373                    new StringInputStream("(apropos " + args + ")");
     374                LispObject obj = stream.read(false, EOF, false);
     375                if (obj == EOF)
     376                    throw new EndOfFileException();
     377                eval(obj, new Environment(), LispThread.currentThread());
     378                getStandardOutput().freshLine();
     379                return true;
     380            }
     381            return false;
     382        }
    348383        if (command.equals("describe")) {
    349384            if (args != null && args.length() > 0) {
     
    423458        }
    424459        if (command.length() >= 2) {
     460            if ("apropos".startsWith(command))
     461                return "apropos";
    425462            if ("describe".startsWith(command))
    426463                return "describe";
Note: See TracChangeset for help on using the changeset viewer.