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 }