Changeset 4963


Ignore:
Timestamp:
12/04/03 14:56:42 (18 years ago)
Author:
piso
Message:

shellPreviousPrompt(), shellNextPrompt()

File:
1 edited

Legend:

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

    r4885 r4963  
    33 *
    44 * Copyright (C) 1998-2003 Peter Graves
    5  * $Id: CommandInterpreter.java,v 1.21 2003-11-24 16:05:33 piso Exp $
     5 * $Id: CommandInterpreter.java,v 1.22 2003-12-04 14:56:42 piso Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    541541    public static void shellPreviousPrompt()
    542542    {
     543        findPrompt(-1);
     544    }
     545
     546    public static void shellNextPrompt()
     547    {
     548        findPrompt(1);
     549    }
     550
     551    private static final void findPrompt(int direction)
     552    {
    543553        final Editor editor = Editor.currentEditor();
    544554        final Buffer buffer = editor.getBuffer();
    545555        if (buffer instanceof CommandInterpreter) {
    546             RE promptRE = ((CommandInterpreter)buffer).getPromptRE();
    547             if (promptRE != null) {
    548                 Position dot = editor.getDot();
    549                 if (dot != null) {
    550                     Line line = dot.getLine().previous();
    551                     while (line != null) {
    552                         final REMatch match = promptRE.getMatch(line.getText());
    553                         if (match != null && match.getStartIndex() == 0) {
    554                             // Found it.
    555                             Position pos = new Position(line, match.getEndIndex());
    556                             editor.moveDotTo(pos);
    557                             return;
     556            Position dot = editor.getDot();
     557            if (dot != null) {
     558                Line line =
     559                    direction > 0 ? dot.getLine().next() : dot.getLine().previous();
     560                while (line != null) {
     561                    int flags = line.flags();
     562                    if (flags == STATE_PROMPT || flags == STATE_INPUT) {
     563                        RE promptRE = ((CommandInterpreter)buffer).getPromptRE();
     564                        if (promptRE != null) {
     565                            final REMatch match = promptRE.getMatch(line.getText());
     566                            if (match != null && match.getStartIndex() == 0) {
     567                                Position pos = new Position(line, match.getEndIndex());
     568                                editor.moveDotTo(pos);
     569                                return;
     570                            }
    558571                        }
    559                         line = line.previous();
    560572                    }
     573                    line = direction > 0 ? line.next() : line.previous();
    561574                }
    562575            }
    563576        }
    564577    }
    565 
    566     public static void shellNextPrompt()
    567     {
    568         final Editor editor = Editor.currentEditor();
    569         final Buffer buffer = editor.getBuffer();
    570         if (buffer instanceof CommandInterpreter) {
    571             RE promptRE = ((CommandInterpreter)buffer).getPromptRE();
    572             if (promptRE != null) {
    573                 Position dot = editor.getDot();
    574                 if (dot != null) {
    575                     Line line = dot.getLine().next();
    576                     while (line != null) {
    577                         final REMatch match = promptRE.getMatch(line.getText());
    578                         if (match != null && match.getStartIndex() == 0) {
    579                             // Found it.
    580                             Position pos = new Position(line, match.getEndIndex());
    581                             editor.moveDotTo(pos);
    582                             return;
    583                         }
    584                         line = line.next();
    585                     }
    586                 }
    587             }
    588         }
    589     }
    590578}
Note: See TracChangeset for help on using the changeset viewer.