bamarni / symfony-console-autocomplete

Shell autocompletion for Symfony Console based scripts
Other
496 stars 32 forks source link

Autocompletion doesn't works #18

Closed Invis1ble closed 8 years ago

Invis1ble commented 8 years ago

I've installed this package globally and added $HOME/.composer/vendor/bin to my PATH. My ~/.profile file looks now:

# set PATH so it includes composer's bin if it exists
if [ -d "$HOME/.composer/vendor/bin" ] ; then
    PATH="$HOME/.composer/vendor/bin:$PATH"
fi

# see https://github.com/bamarni/symfony-console-autocomplete
eval "$(symfony-autocomplete)"

Then I've re-checked my PATH by echo $PATH and it looks properly. Command symfony-autocomplete is now available. I have two projects that are using Symfony2 and Symfony3 and autocompletion doesn't works.

symfony-2$ app/console [TAB] # only lists me subdirectories
symfony-3$ bin/console [TAB] # only lists me subdirectories

Environment: Ubuntu 16.04

$ composer --version
Composer version 1.1.2 2016-05-31 19:48:11
$ php --version
PHP 7.0.4-7ubuntu2.1 (cli) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies
bamarni commented 8 years ago

Do you have /etc/bash_completion getting sourced during bash initialisation? I think it should be done by default on ubuntu but maybe it's disabled. If you source it manually and try again maybe it'll work.

Invis1ble commented 8 years ago

Do you have /etc/bash_completion getting sourced during bash initialisation?

Yes, I have the following code in ~/.profile:

if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

and

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

in ~/.bashrc.

I've manually dumped the output to /etc/bash_completion.d/symfony-autocomplete. Now completion works. Thanks.

bamarni commented 8 years ago

Your solution is cleaner 👍 The eval thing is just something that should be compatible with most OS.

I'm still curious to know what was the issue. I've tried with eval on a ubuntu server and it worked (for bin/console [TAB] but not ./bin/console [TAB]). Please send an update if you find out what was wrong.

Invis1ble commented 8 years ago

BTW, before I've dumped to /etc/bash_completion.d/symfony-autocomplete I've tried to manually execute eval "$(symfony-autocomplete)" in the terminal and completion also works during that terminal session.