dim-an / cod

cod is a completion daemon for bash/fish/zsh
Apache License 2.0
517 stars 23 forks source link

Why does it work even after removing the binary? #34

Closed maniac-en closed 3 years ago

maniac-en commented 3 years ago

Hi,

I installed cod by building it using go build. It was working fine for me, I just wanted to try the software, and so for uninstalling, I removed:

But for some reason, it's still shows the args on pressing tab, even though the binary cod itself is removed. For the trial, I used it on fdfind command and below is the output for above scenario. Also, I'd like to point out, I don't have any cod folder in $HOME/.config.

How can I get back my normal commands tab-completion?

Screenshot from 2020-11-04 03-29-07

dim-an commented 3 years ago

Hey!

  1. To disable cod it's enough to remove init line (source <(cod init $$ ...)) from your .bashrc / .zshrc. Once you did it new instances of shell will not use cod.

  2. It's strange to hear that once you removed cod from $PATH it continued to provide completions since running cod binary is required to get completions. Are you sure you removed all instances? Maybe some instance remained in ~/go/bin/? What is the output of which cod?

  3. I also would like to mention that if you somewhat liked cod but don't want it to learn you programs in /usr/bin you can create config file for this purpose. Example of my own configuration is here:

    
    » cat ~/.config/cod/config.toml 
    # ...

[[rule]] executable = "/usr/bin/*" policy = 'ignore'

[[rule]] executable = "arc" policy = 'ignore'

[[rule]] executable = "~/bin/*" policy = 'trust'



4. You can also remove learned completions for `fdfind` using `cod remove fdfind` it should get your completions back without need of removing `cod`.
maniac-en commented 3 years ago

Hi, Thanks for your reply!

Try: sudo apt install

- `which cod` gives me no output
- I think `cod` binary itself is definitely not running but it somehow boinked my original commands I made it learn! (`fdfind` and `ripgrep`)
- I tried re-installing the effected commands as follows but the issues still persists!
```bash
sudo apt remove --purge fd-find ripgrep
sudo apt install fd-find ripgrep
dim-an commented 3 years ago

cod doesn't modify any shell files and once you have removed source <(cod init $$ bash) from .bashrc it doesn't affect completion in any way.

dim-an commented 3 years ago

You use bash, don't you?

Can you show output of complete -p?

maniac-en commented 3 years ago

complete -p

complete -F _fzf_path_completion mv
complete -F _root_command gksudo
complete -F _command nice
complete -F _longopt tr
complete -o bashdefault -o default -F _fzf_path_completion diff3
complete -F _fzf_path_completion head
complete -F _service /etc/init.d/rsync
complete -F _longopt sha256sum
complete -F _service /etc/init.d/nfs-kernel-server
complete -F _fzf_path_completion uniq
complete -F _command else
complete -F _root_command gksu
complete -F _service /etc/init.d/unattended-upgrades
complete -F _service /etc/init.d/cups-browsed
complete -F _service /etc/init.d/pppd-dns
complete -o bashdefault -o default -F _fzf_path_completion basename
complete -F _longopt ptx
complete -F _service /etc/init.d/avahi-daemon
complete -F _longopt mkfifo
complete -o bashdefault -o default -F _fzf_path_completion svn
complete -F _fzf_path_completion tee
complete -F _known_hosts traceroute
complete -o bashdefault -o default -F _fzf_path_completion bzip2
complete -j -P '"%' -S '"' fg
complete -F _longopt who
complete -F _service /etc/init.d/acpid
complete -F _service /etc/init.d/x11-common
complete -F _fzf_path_completion grep
complete -F _complete compgen
complete -o bashdefault -o default -F _fzf_path_completion vi
complete -F _service /etc/init.d/lvm2
complete -F _complete complete
complete -o bashdefault -o default -F _fzf_path_completion mvim
complete -F _longopt objdump
complete -F _fzf_path_completion less
complete -F _longopt sha1sum
complete -F _longopt cut
complete -F _longopt mknod
complete -F _command padsp
complete -F _service /etc/init.d/plymouth
complete -F _service /etc/init.d/console-setup.sh
complete -o bashdefault -o default -F _fzf_path_completion file
complete -o bashdefault -o default -F _fzf_path_completion view
complete -o bashdefault -o default -F _fzf_path_completion dirname
complete -o bashdefault -o default -F _fzf_path_completion hg
complete -F _longopt bison
complete -F _command nohup
complete -F _longopt od
complete -F _service /etc/init.d/rpcbind
complete -a -F _fzf_alias_completion unalias
complete -o bashdefault -o default -F _fzf_path_completion bunzip2
complete -F _service /etc/init.d/kmod
complete -u groups
complete -F _longopt texindex
complete -F _fzf_host_completion telnet
complete -F _service /etc/init.d/gdm3
complete -F _completion_loader -D
complete -F _service /etc/init.d/neo4j
complete -o bashdefault -o default -F _fzf_host_completion ssh
complete -F _command vsound
complete -o default -o nospace -v -F _fzf_var_completion export
complete -F _service /etc/init.d/cups
complete -c which
complete -o bashdefault -o default -F _fzf_path_completion tar
complete -F _longopt m4
complete -o bashdefault -o default -F _fzf_path_completion gvim
complete -F _fzf_path_completion cp
complete -F _longopt base64
complete -o bashdefault -o default -F _fzf_path_completion find
complete -F _longopt strip
complete -F _longopt split
complete -v readonly
complete -o bashdefault -o default -F _fzf_path_completion rsync
complete -o nospace -F _fzf_dir_completion cd
complete -F _known_hosts showmount
complete -o bashdefault -o default -F _fzf_path_completion zip
complete -F _longopt tac
complete -F _longopt fold
complete -F _known_hosts mtr
complete -o bashdefault -o default -F _fzf_path_completion scp
complete -o bashdefault -o default -F _fzf_path_completion ruby
complete -F _known_hosts fping
complete -F _longopt env
complete -o bashdefault -o default -F _fzf_path_completion chmod
complete -F _user_at_host finger
complete -c type
complete -o dirnames -o filenames -F _apport-unpack apport-unpack
complete -F _service /etc/init.d/apport
complete -F _known_hosts ssh-installkeys
complete -o filenames -F _gmic gmic
complete -o bashdefault -o default -F _fzf_path_completion perl
complete -F _root_command kdesudo
complete -o bashdefault -o default -F _fzf_path_completion unzip
complete -F _longopt expand
complete -o bashdefault -o default -F _fzf_path_completion git
complete -F _fzf_path_completion ln
complete -F _command aoss
complete -u w
complete -F _service /etc/init.d/samba-ad-dc
complete -F _service /etc/init.d/kerneloops
complete -F _service /etc/init.d/alsa-utils
complete -F _service /etc/init.d/ufw
complete -F _fzf_path_completion ld
complete -o bashdefault -o default -F _fzf_path_completion gunzip
complete -F _service /etc/init.d/apparmor
complete -F _longopt enscript
complete -F _service /etc/init.d/nmbd
complete -F _longopt irb
complete -F _command xargs
complete -F _autojump j
complete -j -P '"%' -S '"' jobs
complete -o bashdefault -o default -F _fzf_path_completion ex
complete -F _service service
complete -o bashdefault -o default -F _fzf_path_completion emacsclient
complete -F _fzf_path_completion tail
complete -F _longopt unexpand
complete -F _longopt netstat
complete -o dirnames -o filenames -F _apport-cli apport-cli
complete -F _fzf_path_completion ls
complete -F _command tsocks
complete -F _fzf_path_completion diff
complete -F _service /etc/init.d/postgresql
complete -F _service /etc/init.d/mongodb
complete -o bashdefault -o default -F _fzf_path_completion nvim
complete -o nospace -F _fzf_dir_completion pushd
complete -o default -F __start_gh gh
complete -F _service /etc/init.d/openvpn
complete -o default -o nospace -v -F _fzf_var_completion unset
complete -F _service /etc/init.d/whoopsie
complete -F _longopt csplit
complete -F _known_hosts rsh
complete -F _command exec
complete -F _service /etc/init.d/cgroupfs-mount
complete -F _service /etc/init.d/tor
complete -F _service /etc/init.d/docker
complete -F _longopt shar
complete -W '$(gf -list)' gf
complete -F _longopt vdir
complete -F _longopt sum
complete -F _longopt nm
complete -F _longopt nl
complete -F _user_at_host ytalk
complete -o bashdefault -o default -F _fzf_complete_kill kill
complete -o bashdefault -o default -F _fzf_path_completion java
complete -F _service /etc/init.d/plymouth-log
complete -F _service /etc/init.d/vmware
complete -j -P '"%' -S '"' disown
complete -o dirnames -o filenames -F _apport-bug apport-bug
complete -F _longopt bash
complete -F _service /etc/init.d/procps
complete -F _service /etc/init.d/nfs-common
complete -u sux
complete -F _longopt md5sum
complete -o bashdefault -o default -F _fzf_path_completion source
complete -o bashdefault -o default -F _fzf_path_completion curl
complete -A stopped -P '"%' -S '"' bg
complete _a
complete -F _longopt objcopy
complete -F _longopt bc
complete -F _longopt paste
complete -F _service /etc/init.d/grub-common
complete -F _service /etc/init.d/sysstat
complete -F _longopt dir
complete -b builtin
complete -F _longopt a2ps
complete -F _root_command really
complete -F _longopt shasum
complete -F _command ltrace
complete -F _service /etc/init.d/hwclock.sh
complete -o bashdefault -o default -F _fzf_path_completion open
complete -F _service /etc/init.d/rsyslog
complete -o bashdefault -o default -F _fzf_path_completion gcc
complete -o bashdefault -o default -F _fzf_path_completion xdg-open
complete _v
complete -F _service /etc/init.d/ssh
complete -F _service /etc/init.d/irqbalance
complete -F _known_hosts traceroute6
complete -o bashdefault -o default -F _fzf_path_completion jar
complete -F _longopt date
complete -F _service /etc/init.d/anacron
complete -F _fzf_path_completion cat
complete -F _longopt readelf
complete -F _fzf_path_completion awk
complete -F _service /etc/init.d/smbd
complete -F _known_hosts dig
complete -F _user_at_host talk
complete -F _service /etc/init.d/postfix
complete -F _longopt sha512sum
complete -F _longopt seq
complete -F _longopt mkdir
complete -F _longopt sha224sum
complete -F _service /etc/init.d/speech-dispatcher
complete -F _service /etc/init.d/pulseaudio-enable-autospawn
complete -A helptopic help
complete -F _minimal 
complete -F _rbenv rbenv
complete -o bashdefault -o default -F _fzf_path_completion sftp
complete -F _service /etc/init.d/keyboard-setup.sh
complete -F _longopt df
complete -F _command eval
complete -A setopt set
complete -o bashdefault -o default -F _fzf_path_completion chown
complete -F _longopt chroot
complete -F _fzf_path_completion sort
complete -F _command do
complete -F _service /etc/init.d/dbus
complete -F _longopt pr
complete -F _longopt colordiff
complete -o bashdefault -o default -F _fzf_path_completion patch
complete -F _service /etc/init.d/saned
complete -o bashdefault -o default -F _fzf_path_completion g++
complete -o bashdefault -o default -F _fzf_path_completion python
complete -F _fzf_path_completion du
complete -F _longopt fmt
complete -F _service /etc/init.d/bluetooth
complete -F _fzf_path_completion sed
complete -F _service /etc/init.d/spice-vdagent
complete -F _longopt gperf
complete -F _service /etc/init.d/vmware-USBArbitrator
complete -F _command time
complete -F _service /etc/init.d/udev
complete -F _fzf_path_completion wc
complete -o bashdefault -o default -F _fzf_path_completion gzip
complete -F _root_command fakeroot
complete -F _service /etc/init.d/xrdp
complete -o bashdefault -o default -F _fzf_path_completion emacs
complete -F _service /etc/init.d/mysql
complete -u slay
complete -F _longopt grub
complete -F _service /etc/init.d/cron
complete -F _fzf_dir_completion rmdir
complete -F _service /etc/init.d/uuidd
complete -A shopt shopt
complete -F _apport-collect apport-collect
complete -o bashdefault -o default -F _fzf_path_completion vim
complete -o bashdefault -o default -F _fzf_path_completion javac
complete -o dirnames -o filenames -F _apport-bug ubuntu-bug
complete -F _fzf_path_completion ftp
complete -F _service /etc/init.d/acct
complete -o bashdefault -o default -F _fzf_path_completion more
complete -F _longopt units
complete -F _longopt uname
complete -F _service /etc/init.d/network-manager
complete -F _longopt touch
complete -F _longopt ldd
complete -F _command then
complete -F _known_hosts rlogin
complete -F _service /etc/init.d/lvm2-lvmpolld
complete -F _command command
complete -o default -F _fzf_opts_completion fzf
complete -F _longopt sha384sum
complete -F _known_hosts fping6
complete -F _fzf_path_completion rm
complete -F _service /etc/init.d/binfmt-support
complete -F _service /etc/init.d/mono-xsp4
dim-an commented 3 years ago

I can't see any cod related stuff in this output. Examples of cod related stuff from my environment

> complete -p | grep _cod
complete -o bashdefault -o filenames -F __cod_complete_bash yt
complete -o bashdefault -o filenames -F __cod_complete_bash rsync
complete -o bashdefault -o filenames -F __cod_complete_bash du
complete -o bashdefault -o filenames -F __cod_complete_bash unittester-client
...

I cannot say how did your completion work before you had installed cod. But I would suggest you to check out this official instruction form rg authors and try it.

maniac-en commented 3 years ago

Thanks for you help, I was able to solve my problems by building fd-find and ripgrep from source! Official instructions on either of the repo's weren't helpful for me!

dim-an commented 3 years ago

Glad you solved your issue.

If you ever decide to try cod again and find a reproducible way you can corrupt completion with installing / uninstalling cod, please tell me. I just can't imagine what can go wrong here. cod never touches anything on your system except its own folders that described in README.

maniac-en commented 3 years ago

Sure, I'll try to reproduce the issue in a virtual environment, and I'll Reopen the issue if I'm successful!