[Bug 261728] If sh became a usable interactive shell, then why can't it tab-autocomplete file.(mine).1.txt and file.(mine).2.txt?
Date: Tue, 08 Feb 2022 16:34:37 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=261728 Daniel Tameling <tamelingdaniel@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |tamelingdaniel@gmail.com --- Comment #6 from Daniel Tameling <tamelingdaniel@gmail.com> --- Created attachment 231647 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=231647&action=edit Add ')' and '}' to the word delimiters for the completion. They were missing. I had a look at what is going on and this looks like a bug. The word delimiters passed to libedit are L" \t\n\"\\'`@$><=;|&{(". This is missing ')' and '}'. So when it is going backwards through file.\(mine\). it recognizes the ')' as a normal character, but the '\' is actually a word delimiter and it then thinks that the ')' starts a new word. So when trying to complete the expression it looks for files starting with ")." and if there is, for example, a file ").test", one gets file.\(mine\\).test, which isn't the right thing to do. What it should do is recognize the ')' as a word delimiter, realize that the '\' before that means that it's escaped and use the whole string for the completion. So one has to add ')' and '}' to the word delimiters. The attached patched fixed the issue in my experiments. -- You are receiving this mail because: You are the assignee for the bug.