szermatt / emacs-bash-completion

Add programmable bash completion to Emacs shell-mode
GNU General Public License v2.0
279 stars 33 forks source link

bash-completion erroring out #44

Open cajeffery opened 3 years ago

cajeffery commented 3 years ago

Hello, This is what bash-completion-debug shows:

This buffer contains information about the last completion command and the BASH process it was sent to. This can help you figure out what's happening.

If it doesn't, go to https://github.com/szermatt/emacs-bash-completion/issues/new to create a new issue that describes:

Then add a copy of the information below:

commandline: <<EOF emacs_complete_pre_command; echo -n "pwd=${PWD}";__EMACS_COMPLETE_WRAPPER='COMP_LINE='\''source(get'\''; COMP_POINT=$(( 1 + ${#COMP_LINE} )); COMP_CWORD=1; COMP_WORDS=( source '\''(get'\'' ); _completion_loader source '\''(get'\'' source' compgen -F emacs_complete_wrapper -- '(get' 2>/dev/null EOF

error: "timeout" buffer-string: <<EOF Error: unexpected input in "_"

EOF

process: # output-buffer: <<EOF Error: unexpected input in "_"

EOF

bash-major-version: 4 emacs-version: "24.3.1" context: [cl-struct-completion "source(get" ("source" "(get") 1 "(\"get" 9695 "(get" 34 ("-F" "_completion_loader") "\"'><=;|&(:" nil]

complete-p: (("createrepo" "-o" "filenames" "-F" "_cr_createrepo") ("_minimal" "-F") ("oodraw" "-F" "_filedir_xspec") ("elinks" "-F" "_filedir_xspec") ("freeamp" "-F" "_filedir_xspec") ("split" "-F" "_longopt") ("sed" "-F" "_longopt") ("ld" "-F" "_longopt") ("grep" "-F" "_longopt") ("jobs" "-j" "-P" "\"%" "-S" "\"") ("pushd" "-d") ("subscription-manager" "-F" "_subscription_manager") ("fcoemon" "-F" "_fcoemon_options") ("playmidi" "-F" "_filedir_xspec") ("mv" "-F" "_longopt") ("rlogin" "-F" "_known_hosts") ("service" "-F" "_service") ("help" "-b") ("bg" "-A" "stopped" "-P" "\"%" "-S" "\"") ("genpkgmetadata.py" "-o" "filenames" "-F" "_cr_createrepo") ("cdiff" "-F" "_filedir_xspec") ("bibtex" "-F" "_filedir_xspec") ("rgview" "-F" "_filedir_xspec") ("realplay" "-F" "_filedir_xspec") ("xine" "-F" "_filedir_xspec") ("xpdf" "-F" "_filedir_xspec") ("strip" "-F" "_longopt") ("pr" "-F" "_longopt") ("grub" "-F" "_longopt") ("gperf" "-F" "_longopt") ("ftp" "-F" "_known_hosts") ("yum-debug-dump.py" "-o" "filenames" "-F" "_yu_debug_dump") ("yum-builddep" "-o" "filenames" "-F" "_yu_builddep") ("repoclosure" "-o" "filenames" "-F" "_yu_repoclosure") ("repo-rss" "-o" "filenames" "-F" "_yu_repo_rss") ("oowriter" "-F" "_filedir_xspec") ("chromium-browser" "-F" "_filedir_xspec") ("gqmpeg" "-F" "_filedir_xspec") ("tex" "-F" "_filedir_xspec") ("zathura" "-F" "_filedir_xspec") ("lzegrep" "-F" "_filedir_xspec") ("m4" "-F" "_longopt") ("time" "-F" "_command") ("exec" "-F" "_command") ("do" "-F" "_command") ("finger" "-o" "nospace" "-F" "_user_at_host") ("ytalk" "-o" "nospace" "-F" "_user_at_host") ("/etc/rc.d/init.d/netconsole" "-F" "_service") ("which" "-c") ("slay" "-u") ("repodiff.py" "-F" "_yu_repodiff") ("aviplay" "-F" "_filedir_xspec") ("latex" "-F" "_filedir_xspec") ("uname" "-F" "_longopt") ("tac" "-F" "_longopt") ("shar" "-F" "_longopt") ("ldd" "-F" "_longopt") ("tracepath6" "-F" "_known_hosts") ("netscape" "-F" "_filedir_xspec") ("acroread" "-o" "filenames" "-o" "nospace" "-F" "_acroread") ("bc" "-F" "_longopt") ("gksudo" "-F" "_root_command") ("/etc/init.d/netconsole" "-F" "_service") ("yumdownloader" "-o" "filenames" "-F" "_yu_yumdownloader") ("yum-builddep.py" "-o" "filenames" "-F" "_yu_builddep") ("repoclosure.py" "-o" "filenames" "-F" "_yu_repoclosure") ("repo-rss.py" "-o" "filenames" "-F" "_yu_repo_rss") ("rhn-migrate-classic-to-rhsm" "-F" "_rhn_migrate_classic_to_rhsm") ("modifyrepo" "-o" "filenames" "-F" "_cr_modifyrepo") ("rvim" "-F" "_filedir_xspec") ("makeinfo" "-F" "_filedir_xspec") ("bunzip2" "-F" "_filedir_xspec") ("tail" "-F" "_longopt") ("nl" "-F" "_longopt") ("tracepath" "-F" "_known_hosts") ("yum" "-o" "filenames" "-F" "_yum") ("ogg123" "-F" "_filedir_xspec") ("sha224sum" "-F" "_longopt") ("nm" "-F" "_longopt") ("awk" "-F" "_longopt") ("xargs" "-F" "_command") ("/etc/init.d/ledger2_svc" "-F" "_service") ("repoquery" "-o" "filenames" "-F" "_yu_repoquery") ("kwrite" "-F" "_filedir_xspec") ("gview" "-F" "_filedir_xspec") ("ps2pdfwr" "-F" "_filedir_xspec") ("qiv" "-F" "_filedir_xspec") ("lrunzip" "-F" "_filedir_xspec") ("znew" "-F" "_filedir_xspec") ("bzcat" "-F" "_filedir_xspec") ("who" "-F" "_longopt") ("expand" "-F" "_longopt") ("repodiff" "-F" "_yu_repodiff") (nil "-F" "_completion_loader") ("harbour" "-F" "_filedir_xspec") ("lokalize" "-F" "_filedir_xspec") ("amaya" "-F" "_filedir_xspec") ("kate" "-F" "_filedir_xspec") ("xemacs" "-F" "_filedir_xspec") ("dragon" "-F" "_filedir_xspec") ("pdftex" "-F" "_filedir_xspec") ("unlzma" "-F" "_filedir_xspec") ("paste" "-F" "_longopt") ("mkdir" "-F" "_longopt") ("cp" "-F" "_longopt") ("really" "-F" "_root_command") ("kdesudo" "-F" "_root_command") ("/etc/init.d/network" "-F" "_service") ("gluster" "-F" "_gluster_completion") ("hbpp" "-F" "_filedir_xspec") ("rpm2cpio" "-F" "_filedir_xspec") ("pdflatex" "-F" "_filedir_xspec") ("ln" "-F" "_longopt") ("df" "-F" "_longopt") ("bash" "-F" "_longopt") ("a2ps" "-F" "_longopt") ("repo-graph" "-o" "filenames" "-F" "_yu_repo_graph") ("view" "-F" "_filedir_xspec") ("vi" "-F" "_filedir_xspec") ("unxz" "-F" "_filedir_xspec") ("sha512sum" "-F" "_longopt") ("nice" "-F" "_command") ("else" "-F" "_command") ("mtr" "-F" "_known_hosts") ("unset" "-v") ("ly2dvi" "-F" "_filedir_xspec") ("mozilla-firefox" "-F" "_filedir_xspec") ("mozilla" "-F" "_filedir_xspec") ("objcopy" "-F" "_longopt") ("enscript" "-F" "_longopt") ("traceroute6" "-F" "_known_hosts") ("sux" "-u") ("ooimpress" "-F" "_filedir_xspec") ("gvim" "-F" "_filedir_xspec") ("uncompress" "-F" "_filedir_xspec") ("dir" "-F" "_longopt") ("bind" "-A" "binding") ("package-cleanup.py" "-o" "filenames" "-F" "_yu_package_cleanup") ("modplugplay" "-F" "_filedir_xspec") ("lzgrep" "-F" "_filedir_xspec") ("tr" "-F" "_longopt") ("gksu" "-F" "_root_command") ("fping" "-F" "_known_hosts") ("repoquery.py" "-o" "filenames" "-F" "_yu_repoquery") ("pyflakes" "-F" "_filedir_xspec") ("kid3-qt" "-F" "_filedir_xspec") ("xanim" "-F" "_filedir_xspec") ("unpigz" "-F" "_filedir_xspec") ("rhsm-debug" "-o" "default" "-F" "_rhsm_debug") ("git" "-o" "bashdefault" "-o" "default" "-o" "nospace" "-F" "git_wrapgit_main") ("portecle" "-F" "_filedir_xspec") ("dillo" "-F" "_filedir_xspec") ("aaxine" "-F" "_filedir_xspec") ("dvipdfmx" "-F" "_filedir_xspec") ("advi" "-F" "_filedir_xspec") ("ggv" "-F" "_filedir_xspec") ("rmdir" "-F" "_longopt") ("cut" "-F" "_longopt") ("nohup" "-F" "_command") ("set" "-A" "setopt") ("groups" "-u") ("yumdb" "-o" "filenames" "-F" "_yu_yumdb") ("repomanage" "-o" "filenames" "-F" "_yu_repomanage") ("oocalc" "-F" "_filedir_xspec") ("emacs" "-F" "_filedir_xspec") ("lzmore" "-F" "_filedir_xspec") ("lzless" "-F" "_filedir_xspec") ("bison" "-F" "_longopt") ("verifytree.py" "-o" "filenames" "-F" "_yu_verifytree") ("scl" "-F" "_scl") ("lldptool" "-F" "_lldptool_options") ("bpftool" "-F" "_bpftool") ("fbxine" "-F" "_filedir_xspec") ("kdvi" "-F" "_filedir_xspec") ("sha384sum" "-F" "_longopt") ("indent" "-F" "_longopt") ("padsp" "-F" "_command") ("eval" "-F" "_command") ("debuginfo-install" "-F" "_yu_debuginfo_install") ("lldpad" "-F" "_lldpad_options") ("poedit" "-F" "_filedir_xspec") ("firefox" "-F" "_filedir_xspec") ("lynx" "-F" "_filedir_xspec") ("ps2pdf" "-F" "_filedir_xspec") ("kpdf" "-F" "_filedir_xspec") ("gv" "-F" "_filedir_xspec") ("vdir" "-F" "_longopt") ("shasum" "-F" "_longopt") ("less" "-F" "_longopt") ("vsound" "-F" "_command") ("command" "-F" "_command") ("oomath" "-F" "_filedir_xspec") ("madplay" "-F" "_filedir_xspec") ("compress" "-F" "_filedir_xspec") ("lbzcat" "-F" "_filedir_xspec") ("sort" "-F" "_longopt") ("ptx" "-F" "_longopt") ("colordiff" "-F" "_longopt") ("ssh-installkeys" "-F" "_known_hosts") ("/etc/rc.d/init.d/rhnsd" "-F" "_service") ("yumdownloader.py" "-o" "filenames" "-F" "_yu_yumdownloader") ("modifyrepo.py" "-o" "filenames" "-F" "_cr_modifyrepo") ("lilypond" "-F" "_filedir_xspec") ("gtranslator" "-F" "_filedir_xspec") ("jadetex" "-F" "_filedir_xspec") ("texindex" "-F" "_longopt") ("seq" "-F" "_longopt") ("fold" "-F" "_longopt") ("env" "-F" "_longopt") ("csplit" "-F" "_longopt") ("then" "-F" "_command") ("builtin" "-b") ("fg" "-j" "-P" "\"%" "-S" "\"") ("debuginfo-install.py" "-F" "_yu_debuginfo_install") ("iceweasel" "-F" "_filedir_xspec") ("sxemacs" "-F" "_filedir_xspec") ("mpg321" "-F" "_filedir_xspec") ("mpg123" "-F" "_filedir_xspec") ("epdfview" "-F" "_filedir_xspec") ("zcat" "-F" "_filedir_xspec") ("unzip" "-F" "_filedir_xspec") ("pbunzip2" "-F" "_filedir_xspec") ("wc" "-F" "_longopt") ("sha256sum" "-F" "_longopt") ("head" "-F" "_longopt") ("aoss" "-F" "_command") ("syspurpose" "-F" "_syspurpose") ("kid3" "-F" "_filedir_xspec") ("pdfjadetex" "-F" "_filedir_xspec") ("gpdf" "-F" "_filedir_xspec") ("dvipdf" "-F" "_filedir_xspec") ("kghostview" "-F" "_filedir_xspec") ("mknod" "-F" "_longopt") ("ls" "-F" "_longopt") ("ltrace" "-F" "_command") ("rsh" "-F" "_known_hosts") ("w" "-u") ("module" "-o" "default" "-F" "_module") ("rhsmcertd" "-F" "_rhsmcertd") ("rhsm-icon" "-F" "_rhsm_icon") ("mergerepo" "-o" "filenames" "-F" "_cr_mergerepo") ("gharbour" "-F" "_filedir_xspec") ("modplug123" "-F" "_filedir_xspec") ("dvipdfm" "-F" "_filedir_xspec") ("pbzcat" "-F" "_filedir_xspec") ("sha1sum" "-F" "_longopt") ("dig" "-F" "_known_hosts") ("telnet" "-F" "_known_hosts") ("type" "-c") ("shopt" "-A" "shopt") ("iprconfig" "-F" "_comp_iprconfig") ("oobase" "-F" "_filedir_xspec") ("texi2dvi" "-F" "_filedir_xspec") ("texi2html" "-F" "_filedir_xspec") ("zipinfo" "-F" "_filedir_xspec") ("unexpand" "-F" "_longopt") ("sum" "-F" "_longopt") ("od" "-F" "_longopt") ("irb" "-F" "_longopt") ("fmt" "-F" "_longopt") ("du" "-F" "_longopt") ("module2" "-o" "nospace" "-F" "_compl_module") ("epiphany" "-F" "_filedir_xspec") ("ps2pdf12" "-F" "_filedir_xspec") ("ee" "-F" "_filedir_xspec") ("lzcat" "-F" "_filedir_xspec") ("lbunzip2" "-F" "_filedir_xspec") ("showmount" "-F" "_known_hosts") ("talk" "-o" "nospace" "-F" "_user_at_host") ("readonly" "-v") ("package-cleanup" "-o" "filenames" "-F" "_yu_package_cleanup") ("rct" "-o" "default" "-F" "_rct") ("gitk" "-o" "bashdefault" "-o" "default" "-o" "nospace" "-F" "git_wrapgitk_main") ("fcoeadm" "-F" "_fcoeadm_options") ("ps2pdf13" "-F" "_filedir_xspec") ("gunzip" "-F" "_filedir_xspec") ("rm" "-F" "_longopt") ("readelf" "-F" "_longopt") ("netstat" "-F" "_longopt") ("fakeroot" "-F" "_root_command") ("/etc/init.d/cfengine3" "-F" "_service") ("yum-debug-dump" "-o" "filenames" "-F" "_yu_debug_dump") ("yumdb.py" "-o" "filenames" "-F" "_yu_yumdb") ("repomanage.py" "-o" "filenames" "-F" "_yu_repomanage") ("google-chrome" "-F" "_filedir_xspec") ("vim" "-F" "_filedir_xspec") ("ps2pdf14" "-F" "_filedir_xspec") ("okular" "-F" "_filedir_xspec") ("dvips" "-F" "_filedir_xspec") ("lzfgrep" "-F" "_filedir_xspec") ("date" "-F" "_longopt") ("cat" "-F" "_longopt") ("fping6" "-F" "_known_hosts") ("disown" "-j" "-P" "\"%" "-S" "\"") ("hbrun" "-F" "_filedir_xspec") ("kbabel" "-F" "_filedir_xspec") ("rview" "-F" "_filedir_xspec") ("kaffeine" "-F" "_filedir_xspec") ("slitex" "-F" "_filedir_xspec") ("units" "-F" "_longopt") ("touch" "-F" "_longopt") ("objdump" "-F" "_longopt") ("md5sum" "-F" "_longopt") ("diff" "-F" "_longopt") ("base64" "-F" "_longopt") ("cd" "-o" "nospace" "-F" "_cd") ("/etc/rc.d/init.d/ledger2_svc" "-F" "_service") ("/etc/rc.d/init.d/cfengine3" "-F" "_service") ("repo-graph.py" "-o" "filenames" "-F" "_yu_repo_graph") ("galeon" "-F" "_filedir_xspec") ("bzme" "-F" "_filedir_xspec") ("xfig" "-F" "_filedir_xspec") ("xv" "-F" "_filedir_xspec") ("xzcat" "-F" "_filedir_xspec") ("tee" "-F" "_longopt") ("mkfifo" "-F" "_longopt") ("traceroute" "-F" "_known_hosts") ("/etc/init.d/rhnsd" "-F" "_service") ("verifytree" "-o" "filenames" "-F" "_yu_verifytree") ("yummain.py" "-o" "filenames" "-F" "_yum") ("subscription-manager-gui" "-F" "_subscription_manager_gui") ("mergerepo.py" "-o" "filenames" "-F" "_cr_mergerepo") ("rgvim" "-F" "_filedir_xspec") ("timidity" "-F" "_filedir_xspec") ("dvitype" "-F" "_filedir_xspec") ("dviselect" "-F" "_filedir_xspec") ("xdvi" "-F" "_filedir_xspec") ("uniq" "-F" "_longopt") ("tsocks" "-F" "_command") ("/etc/rc.d/init.d/network" "-F" "_service") ("unalias" "-a"))

szermatt commented 3 years ago

Thank you for filing the bug report!

If I understood the situation correctly, you started another interpreter from bash, then pressed TAB while in the prompt for that interpreter, Emacs froze and eventually you got an error message. This is wrong: bash-completion.el should detect quickly that it's not talking to bash anymore and fall back to a default completion.

I'll find a way of fixing that.

In the meantime, to avoid this issue if it annoys you, I'd suggest adding the following to your .emacs as a workaround:

(setq bash-completion-use-separate-processes t)

This tells bash-completion.el to always start a separate bash process to communicate with, so the situation just doesn't arise. The drawback is that, since completion happens on a different bash process, any function you added or any variable you set in your shell process will not be completed.

Kyrremann commented 2 years ago

I think I have the same problem. When I ssh/exec into a Kubernetes pod with bash I have the same problem where the commands times out. And when I check the debug-commando I get some escape signs in the command line that is called.

commandline: <<EOF
__emacs_complete_pre_command;  echo -n "^[^[pwd=${PWD}^[^[";compgen -b -c -a -A function -- expo 2>/dev/null
EOF

error: "timeout"
buffer-string: <<EOF
__emacs_complete_pre_command;  echo -n "testapp" pwd=${PWD}^G";compgen -b -c -a -A function -- expo 2>/dev/nulll
> EOF

process: #<process shell>
output-buffer: <<EOF
__emacs_complete_pre_command;  echo -n "testapp" pwd=${PWD}^G";compgen -b -c -a -A function -- expo 2>/dev/nulll
> EOF

bash-major-version: 5
emacs-version: "27.2"
context: #s(completion "expo"
              ("expo")
              0 "expo" 1003170 "expo" nil nil "\"'><=;|&(:" nil)
Kyrremann commented 2 years ago

Using a remote shell to a pod gives me this error:

commandline: <<EOF
__emacs_complete_pre_command; function __emacs_complete_pre_command {  if [[ -z "$__emacs_complete_ps1" ]]; then    __emacs_complete_ps1="$PS1";    __emacs_complete_pc="$PROMPT_COMMAND";  fi;  PROMPT_COMMAND=__emacs_complete_prompt;  history &>/dev/null -d $((HISTCMD - 1)) || true;} &&function __emacs_complete_prompt {  PS1=' $?';  PROMPT_COMMAND=__emacs_complete_recover_prompt;} &&function __emacs_complete_recover_prompt {  local r=$?;  PS1="${__emacs_complete_ps1}";  PROMPT_COMMAND="${__emacs_complete_pc}";  unset __emacs_complete_ps1 __emacs_complete_pc;  if [[ -n "$PROMPT_COMMAND" ]]; then    (exit $r); eval "$PROMPT_COMMAND";  fi;} &&__emacs_complete_pre_command
EOF

error: "timeout"
buffer-string: <<EOF
/bin/sh: set: illegal option +o emacs
EOF

process: #<process shell<1>>
output-buffer: <<EOF
/bin/sh: set: illegal option +o emacs
EOF

emacs-version: "27.2"