bug-readline
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Readline-8.2 patch 10


From: Chet Ramey
Subject: Readline-8.2 patch 10
Date: Sun, 14 Jan 2024 15:40:53 -0500

                           READLINE PATCH REPORT
                           =====================

Readline-Release: 8.2
Patch-ID: readline82-010

Bug-Reported-by:        Martin Castillo <castilma@uni-bremen.de>
Bug-Reference-ID:       <2d42153b-cf65-caba-dff1-cd3bc6268c7e@uni-bremen.de>
Bug-Reference-URL:      
https://lists.gnu.org/archive/html/bug-readline/2023-01/msg00000.html

Bug-Description:

Fix the case where text to be completed from the line buffer (quoted) is
compared to the common prefix of the possible matches (unquoted) and the
quoting makes the former appear to be longer than the latter. Readline
assumes the match doesn't add any characters to the word and doesn't display
multiple matches.

Patch (apply with `patch -p0'):

*** ../readline-8.2-patched/complete.c  Tue Apr  5 10:47:06 2022
--- complete.c  Sat Jan  7 14:19:45 2023
***************
*** 2032,2038 ****
    text = rl_copy_text (start, end);
    matches = gen_completion_matches (text, start, end, our_func, found_quote, 
quote_char);
    /* nontrivial_lcd is set if the common prefix adds something to the word
       being completed. */
!   nontrivial_lcd = matches && compare_match (text, matches[0]) != 0;
    if (what_to_do == '!' || what_to_do == '@')
      tlen = strlen (text);
--- 2038,2060 ----
    text = rl_copy_text (start, end);
    matches = gen_completion_matches (text, start, end, our_func, found_quote, 
quote_char);
+   /* If TEXT contains quote characters, it will be dequoted as part of
+      generating the matches, and the matches will not contain any quote
+      characters. We need to dequote TEXT before performing the comparison.
+      Since compare_match performs the dequoting, and we only want to do it
+      once, we don't call compare_matches after dequoting TEXT; we call
+      strcmp directly. */
    /* nontrivial_lcd is set if the common prefix adds something to the word
       being completed. */
!   if (rl_filename_completion_desired && rl_filename_quoting_desired &&
!       rl_completion_found_quote && rl_filename_dequoting_function)
!     {
!       char *t;
!       t = (*rl_filename_dequoting_function) (text, 
rl_completion_quote_character);
!       xfree (text);
!       text = t;
!       nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
!     }
!   else
!     nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
    if (what_to_do == '!' || what_to_do == '@')
      tlen = strlen (text);

*** ../readline-8.2/patchlevel  2013-11-15 08:11:11.000000000 -0500
--- patchlevel  2014-03-21 08:28:40.000000000 -0400
***************
*** 1,3 ****
  # Do not edit -- exists only for use by patch
  
! 9
--- 1,3 ----
  # Do not edit -- exists only for use by patch
  
! 10

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU    chet@case.edu    http://tiswww.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]