--- /dev/null 2015-04-26 06:51:08.003313989 -0700 +++ new/jdk/src/jdk.jline/share/classes/jdk/internal/jline/console/completer/Completer.java 2015-06-18 03:05:18.898911619 -0700 @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2002-2012, the original author or authors. + * + * This software is distributable under the BSD license. See the terms of the + * BSD license in the documentation provided with this software. + * + * http://www.opensource.org/licenses/bsd-license.php + */ +package jline.console.completer; + +import java.util.List; + +/** + * A completer is the mechanism by which tab-completion candidates will be resolved. + * + * @author Marc Prud'hommeaux + * @author Jason Dillon + * @since 2.3 + */ +public interface Completer +{ + // + // FIXME: Check if we can use CharSequece for buffer? + // + + /** + * Populates candidates with a list of possible completions for the buffer. + * + * The candidates list will not be sorted before being displayed to the user: thus, the + * complete method should sort the {@link List} before returning. + * + * @param buffer The buffer + * @param cursor The current position of the cursor in the buffer + * @param candidates The {@link List} of candidates to populate + * @return The index of the buffer for which the completion will be relative + */ + int complete(String buffer, int cursor, List candidates); +}