This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [RFA] Improve completion of locations


Eli Zaretskii writes:
 > > From: Elena Zannoni <ezannoni@cygnus.com>
 > > Date: Sat, 12 May 2001 00:17:54 -0400
 > > 
 > > I was wondering how readline would get this right in case of
 > > completion on filenames. I had a closer look, and also in that case it
 > > gets it wrong. '.' is a word-break character, but not a filename-break
 > > character. The first time rl_complete() is invoked by pressing TAB,
 > > readline has the set of work-break characters installed. So it ends up
 > > calling line_completion_function() with an empty string, just like
 > > above.  But line completion function switches the set of break chars
 > > from under readline's nose, installing the file-break ones, and
 > > basically redoing what readline got wrong before. So later on, gdb
 > > will try to complete on 'symtab.' and get it right. Fascinating.
 > 
 > Indeed.  What this means is the the M-TAB completion, which doesn't
 > get the second chance, sometimes gets its act wrong.  This problem was
 > there since day one.

Ah. Not nice.

 > 
 > > BTW, I was playing with an older gdb, and a TAB after 'symtab.'
 > > wasn't doing anything. Somehow the behavior has changed in the last
 > > year.
 > 
 > What version of GDB was that?  I tried all the way down to 4.18, and
 > it still offers all the possible symbols given "symtab.<TAB>".  It
 > just that older versions take about forever to grind through all the
 > symbols, so you might think GDB is just sitting there idling.  Dan's
 > patch about a month ago made that code much, much faster.
 > 

It was an internal version, so it may have been different.

 > >  > I'd be glad to make this more smart, but it's not simple.  By far the
 > >  > nastiest problem is that Readline decides what is the word which is
 > >  > being completed on _before_ our completion function is called.  This
 > >  > defeats many nifty tricks we could do using the context of the
 > >  > completion.
 > > 
 > > Yes. If we could decide what set of break characters to install before the
 > > tab is hit, it would be already a step in the right direction.
 > > Or make readline's find_completion_word() a hook for a gdb function.
 > 
 > Something like that.  Readline must cooperate with GDB better, for our
 > completion to be less error prone.  Right now, Readline does not
 > support the kind of mode that GDB needs, where it completes on
 > different types of objects and therefore needs to change the
 > word-constituent characters.  Bash completes only on file names, so it
 > never needs these complications.
 > 
 > I think we need to ask Readline maintainers to add a couple of
 > features in the next releases.
 > 

Definitely. 

 > > Anyway, now that I've looked stuff over more in detail, I think this
 > > can go in. (With the fix for the ':').  But Fernando is the
 > > completer.c maintainer, so we must give him a chance to go over the
 > > patch as well.
 > 
 > Yes, I'm waiting for Fernando's approval.
 > 

Elena


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]