View Javadoc

1   /*
2    * Copyright (c) 2002-2012, the original author or authors.
3    *
4    * This software is distributable under the BSD license. See the terms of the
5    * BSD license in the documentation provided with this software.
6    *
7    * http://www.opensource.org/licenses/bsd-license.php
8    */
9   package jline.console.completer;
10  
11  import java.util.List;
12  
13  /**
14   * A completer is the mechanism by which tab-completion candidates will be resolved.
15   *
16   * @author <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
17   * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
18   * @since 2.3
19   */
20  public interface Completer
21  {
22      //
23      // FIXME: Check if we can use CharSequece for buffer?
24      //
25  
26      /**
27       * Populates <i>candidates</i> with a list of possible completions for the <i>buffer</i>.
28       *
29       * The <i>candidates</i> list will not be sorted before being displayed to the user: thus, the
30       * complete method should sort the {@link List} before returning.
31       *
32       * @param buffer        The buffer
33       * @param cursor        The current position of the cursor in the <i>buffer</i>
34       * @param candidates    The {@link List} of candidates to populate
35       * @return              The index of the <i>buffer</i> for which the completion will be relative
36       */
37      int complete(String buffer, int cursor, List<CharSequence> candidates);
38  }