Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(_comp_compgen_filedir{,_xspec}): do not generate "." and ".."
Currently, "." and ".." are generated as completions when the current path segment starts with a dot. However, this impedes the completion of any dotfiles when the current path segments is "." because the word "." already matches the generated ".". When the user attempts the completion after inputting ".", the user is likely to intend to complete a dotfile name as ".dotfile" (rather than to complete just a slash as "./" because the user could just press "/" in such a case). In this patch, we do not generate "." and ".." unless the user has explicitly input "..". The behavioral changes are summarized below. Other possibilities of the detailed behaviors are commented in the "[ Note: ... ]" sections. If necessary, they can be reconsidered and adjusted in later commits. * cmd .[TAB] When the current directory has no dotfiles (i.e., filenames starting with "."), it completed a slash. Nothing will happen after this patch. [ Note: as another option, we might generate "." only when no dotfiles are found. However, that might be annoying when the user tries to probe the existence of the dotfiles by pressing TAB, where the user does not expect the insertion of a slash. ] When the current directory has dotfiles, nothing happened. After this patch, this will insert the common prefix of the dotfiles. Note that both "." and ".." are ignored in determining the common prefix. * cmd ..[TAB] When the current directory has no files starting with "..", this completes a slash to form "../". The behavior will not be changed by this patch. [ Note: as another option, we might disable ".." at all to be consistent with the case of ".". However, the files starting with ".." are unlikely, and the user is less likely to probe the existence of the files starting with ".." by pressing TAB after "..". For this reason, we generate ".." even if it would prevent completion of the common prefix of the files. ] When the current directory has files starting with "..", nothing happens with this. The behavior will not be changed by this patch. [ Note: as another option, we might generate ".." only when there are no files starting with "..", but we here assume that the user may want to complete a slash as ".." even when there are files starting with "..". ] References: #364 #1230 Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
- Loading branch information