-
Notifications
You must be signed in to change notification settings - Fork 382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
_filedir: remove . and .. from suggestions #364
Conversation
Any chance that this gets merged some day? This is easy to review. |
c0e9459
to
09307f8
Compare
Easy to review, hard to decide. The goal makes sense to me, but then again I'm not convinced we want to do that. It feels just so weird not be able to start to complete a longer path that way. I don't follow what you mean by Ctrl+J though, I thought the offending completions would be there just by entering them, i.e. the periods, as is, then tab as usual etc. There's a bunch of stylistic issues in the patch, some of which would likely be fixed by shfmt. But I'll point them out if/once we know that + the fixing work wouldn't be a waste of your and my time. |
I’m not sure I get your concern about longer paths. Which kind of paths this patch would prevent you from completing? Unless I’ve overlooked something, it only removes paths which are equal to (About Ctrl+J: I was simply saying that, currently, someone who would want to enter |
It will break for example |
I see now. Then, what about removing By the way, I realize that the behavior I originally proposed and implemented lacks generality, we should do this instead: when the word being completed is |
For the For the ends with |
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: scop#364 scop#1230
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: scop#364 scop#1230
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: scop#364 scop#1230 Co-authored-by: Koichi Murase <myoga.murase@gmail.com>
…t . and .. (#1230) * 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> Co-authored-by: Yedaya Katsman <yedaya.ka@gmail.com>
The title says it all. This is a breaking change, but I would be surprised if anyone entered e.g. the text
..
by typing Ctrl+j twice. This change allows to fully complete a hidden file name when there is only one hidden file besides.
and..
(or at least, to benefit from prefix completion, such as with.git
and.gitignore
).