7 Bug-Reported-by: Martin Castillo <castilma@uni-bremen.de>
8 Bug-Reference-ID: <2d42153b-cf65-caba-dff1-cd3bc6268c7e@uni-bremen.de>
9 Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2023-01/msg00000.html
13 Fix the case where text to be completed from the line buffer (quoted) is
14 compared to the common prefix of the possible matches (unquoted) and the
15 quoting makes the former appear to be longer than the latter. Readline
16 assumes the match doesn't add any characters to the word and doesn't display
19 Patch (apply with `patch -p0'):
21 *** ../bash-5.2-patched/lib/readline/complete.c Tue Apr 5 10:47:06 2022
22 --- lib/readline/complete.c Sat Jan 7 14:19:45 2023
25 text = rl_copy_text (start, end);
26 matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
27 /* nontrivial_lcd is set if the common prefix adds something to the word
29 ! nontrivial_lcd = matches && compare_match (text, matches[0]) != 0;
30 if (what_to_do == '!' || what_to_do == '@')
33 text = rl_copy_text (start, end);
34 matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
35 + /* If TEXT contains quote characters, it will be dequoted as part of
36 + generating the matches, and the matches will not contain any quote
37 + characters. We need to dequote TEXT before performing the comparison.
38 + Since compare_match performs the dequoting, and we only want to do it
39 + once, we don't call compare_matches after dequoting TEXT; we call
41 /* nontrivial_lcd is set if the common prefix adds something to the word
43 ! if (rl_filename_completion_desired && rl_filename_quoting_desired &&
44 ! rl_completion_found_quote && rl_filename_dequoting_function)
47 ! t = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
50 ! nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
53 ! nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
54 if (what_to_do == '!' || what_to_do == '@')
57 *** ../bash-5.2/patchlevel.h 2020-06-22 14:51:03.000000000 -0400
58 --- patchlevel.h 2020-10-01 11:01:28.000000000 -0400
61 looks for to find the patch level (for the sccs version string). */
63 ! #define PATCHLEVEL 36
65 #endif /* _PATCHLEVEL_H_ */
67 looks for to find the patch level (for the sccs version string). */
69 ! #define PATCHLEVEL 37
71 #endif /* _PATCHLEVEL_H_ */