/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.sonatype.gshell.core.completer;

import jline.console.Completer;
import org.sonatype.gshell.ShellHolder;
import org.sonatype.gshell.VariableNames;
import org.sonatype.gshell.Variables;

import java.io.File;

/**
 * {@link Completor} for file names.
 *
 * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
 *
 * @since 2.0
 */
public class FileNameCompleter
    extends jline.console.completers.FileNameCompleter
    implements Completer, VariableNames
{
    @Override
    protected File getUserHome() {
        Variables vars = ShellHolder.get().getVariables();
        return vars.get(SHELL_USER_HOME, File.class);
    }

    @Override
    protected File getUserDir() {
        Variables vars = ShellHolder.get().getVariables();
        return new File(vars.get(SHELL_USER_DIR, String.class));
    }

    @Override
    protected String render(final File file, final String name) {
        assert file != null;
        assert name != null;

        // FIXME: This causes all sorts of problems :-(
        
        /*
        if (file.isDirectory()) {
            return Ansi.ansi().fg(Ansi.Color.BLUE).a(name).reset().toString();
        }
        else if (file.isHidden()) {
            return Ansi.ansi().a(Ansi.Attribute.INTENSITY_FAINT).a(name).reset().toString();
        }
        else if (file.canExecute()) {
            return Ansi.ansi().fg(Ansi.Color.GREEN).a(name).reset().toString();
        }
        */

        return name;
    }
}
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.sonatype.gshell.core.completer;

import jline.console.Completer;
import org.sonatype.gshell.ShellHolder;
import org.sonatype.gshell.VariableNames;
import org.sonatype.gshell.Variables;

import java.io.File;

/**
 * {@link Completor} for file names.
 *
 * @author <a href="mailto:jason@planet57.com">Jason Dillon</a>
 *
 * @since 2.0
 */
public class FileNameCompleter
    extends jline.console.completers.FileNameCompleter
    implements Completer, VariableNames
{
    @Override
    protected File getUserHome() {
        Variables vars = ShellHolder.get().getVariables();
        return vars.get(SHELL_USER_HOME, File.class);
    }

    @Override
    protected File getUserDir() {
        Variables vars = ShellHolder.get().getVariables();
        return new File(vars.get(SHELL_USER_DIR, String.class));
    }

    @Override
    protected String render(final File file, final String name) {
        assert file != null;
        assert name != null;

        // FIXME: This causes all sorts of problems... probably due to the ConsoleReader.printColumns() impl
        
        /*
        if (file.isDirectory()) {
            return Ansi.ansi().fg(Ansi.Color.BLUE).a(name).reset().toString();
        }
        else if (file.isHidden()) {
            return Ansi.ansi().a(Ansi.Attribute.INTENSITY_FAINT).a(name).reset().toString();
        }
        else if (file.canExecute()) {
            return Ansi.ansi().fg(Ansi.Color.GREEN).a(name).reset().toString();
        }
        */

        return name;
    }
}
Update comment