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]
Other format: [Raw text]

Re: [RFC]: Java tab completion


Ping.

Jeff Johnston wrote:
The attached patch adds support for tab completion for java symbols. There were two changes required. First of all, a set of special symbol characters was added. This is needed because java symbol entries are fully prototyped and make_symbol_completion_list is not prepared for this.

For example, ptype java.l<tab> should complete the various java.l* symbols. In the current model, make_symbol_completion_list backs up to the "." and tries to complete l*. This is completely meaningless as things that start with l like long etc.. are not valid. The same things applies when you try to set the breakpoint for main: e.g. b jmisc.m<tab> won't expand to jmisc.main(java.lang.String[]) which is needed to set the java main breakpoint. With the new patch, this is easy to do and saves a lot of hassle to start debugging the program. The same applies to expanding the myriad of system classes that begin with java.lang, etc..

The second part of the fix is that I had to remove "." from the list of word break characters for java. I do not know if there is any hidden repercussions of doing this, but there are no testsuite regressions. I think a similar thing should be done for C++ concerning ":" so completion of namespaces will work.

I don't know if I should also remove "(", or "," from the word-break characters. These characters also appear in prototypes in the symbol table and one could easily tab after them when dealing with member names having multiple prototypes.

I have added a new scenario to jmisc.exp to test completion of b jmisc.m<tab>
I noticed that the jmisc test-cases were failing on my RHEL3 system because they are currently expecting <init> to be found in the ptype of jmisc, but gdb appears to be doing the right thing and showing the constructor (jmisc()) so I included a fix for that in my gdb.java testsuite patch.


Ok to commit?

-- Jeff J.

2004-05-21 Jeff Johnston <jjohnstn@redhat.com>

    * language.h (language_special_symbol_chars): New prototype.
    (struct language_defn): Add new la_special_symbol_chars field.
    * language.c (language_special_symbol_chars): New function.
    (unknown_language_defn): Default NULL for special symbol chars.
    (auto_language_defn): Ditto.
    (local_language_defn): Ditto.
    * jv-lang.c (java_special_symbol_chars): New function.
    (java_word_break_characters): Ditto.
    (java_language_defn): Add java_special_symbol_chars and
    java_word_break_characters.
    * ada-lang.c (ada_language_defn): Default NULL for special
    symbol chars.
    * c-lang.c (c_language_defn): Ditto.
    (cplus_language_defn): Ditto.
    (asm_language_defn, minimal_language_defn): Ditto.
    * f-lang.c (f_language_defn): Ditto.
    * m2-lang.c (m2_language_defn): Ditto.
    * objc-lang.c (objc_language_defn): Ditto.
    * p-lang.c (pascal_language_defn): Ditto.
    * scm-lang.c (scm_language_defn): Ditto.
    * symtab.c (make_symbol_completion_list): Account for language
    specific special chars that may occur in symbols.

gdb/testsuite/ChangeLog:

2004-05-21 Jeff Johnston <jjohnstn@redhat.com>

    * gdb.java/jmisc.exp: Add java completion test for breaking at java
    main.  Also fix ptype jmisc test to expect the jmisc() constructor.
    * gdb.java/jmisc1.exp: Fix ptype jmisc test to expect constructor.
    * gdb.java/jmisc2.exp: Ditto.


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