Subject: bug#60464: 29.0.60; Regression - pcomplete-arg fails with argument 'last

From: Daniel Mendler <[email-masked]>
Date: Wed, 4 Jan 2023 15:35:42 +0100

On 1/4/23 15:25, Stefan Monnier wrote:
>>  (defun pcomplete-arg (&optional index offset)
>>    (let ((arg
>>           (nth (+ (pcase index
>>  	           ('first 0)
>>  	           ('last  pcomplete-last)
>>  	           (_      (- pcomplete-index (or index 0))))
>>  	         (or offset 0))
>>                pcomplete-args)))
>> -    arg
>> +    (if (or (stringp arg)
>> +            (eq index 'last))
>> +        arg
>> +      (propertize
>> +       (car (split-string (pcomplete-actual-arg index offset)))
>> +       'pcomplete-arg-value arg))))
>>
>> IOW, instead of unconditionally returning arg, we now sometimes (when arg is
>> not already a string and when index is not last) return the textual
>> representation of that argument (what the user typed in) with the value of
>> arg attached to it.
> 
> I don't understand the `last` condition.
> Could you explain it (e.g. with a concrete example that breaks if you
> don't include it)?

This seems like its opening the door for yet another bug. Gregory, could
you please take a look at the version of pcomplete-arg that I've sent?

Daniel