[Anjuta-list] TagManager/Symbol browser plans [long]



Hi all

Below are some random ramblings on what I think are the current
limitations of Anjuta's source code browsing functionality and what I'm
planning/hoping to do in the medium term (in decreasing order of
importance):

1) Make the code completion more intelligent, i.e, if you type 'x->', it
should be able to find out the data type of 'x' and should members of
the corresponding struct/class in the drop down list. Similarly, if you
type 'gtk_', it should only show global functions and macros, not member
functions. This is the toughest one and is likely to take a while to
stabilize. As with the symbol browser, this functionality will only be
available for C and C++, and maybe Java (if someone helps me).

2) There should be a context menu item 'Show Usage' (after 'Goto
Definition' and 'Goto Declaration') in the symbol browser, which will
search for the use of the highlited symbol in the project. We should
also add this feature to the editor context menu.

3) More flexible handling of global tags. Currently, there is a
system.tags file installed along with anjuta containing a hardcoded list
of symbols. What I'd like to do is remove this entirely and get the user
to specify the directories that should be searched for global tags. We
can probably do this at three levels:
    - Global (These directories should always be searched - /usr/include
comes to mind)
    - Project Type dependent (These directories should be included for
GTK+/GNOME projects)
    - Individual project level (These directories should be included for
this particular level)

Of course, there should be reasonable defaults:
   - Global: /usr/include, /usr/include/sys, etc. (ask user on first run
and allow him to rebuild occasionally)
   - Project Type dependent: Output of gnome-config, pkgconfig,
wx-config, etc. (depending on project type - may not be applicable to
all project types)
   - Individual project level - Ask user at project initiation/import
and allow him to rebuild.

The above would, of course, mean removal of the global system.tags file
and creation of a subdirectory in .anjuta for each user (and some disk
space overhead) - but I think the benifits will far outweigh the
limitations.

Another thing I would like to do is maintain a list of files included
from each source file and force code completion to act accordingly (this
is difficult and I'll probably not be able to complete it in time for
1.0)

4) Associate shortcut keys to the tag browsing and navigation functions
(e.g., goto Definition, Goto declaration, Go Back, Go forward, etc.) -
we should probably see what other IDEs use and just copy them sensibly.

5) Sanitize the parsers and lexers (this is controvertial). My opinion
is that Anjuta should stick to what it is supposed to do - i.e. being a
'C/C++ IDE for GNOME' - IMO, we should remove all unnecessary bloat from
SciLexers and TagManager and keep only the following lexers/parsers:
   1) C/C++/Lex/Yacc/Java
   2) IDL (for Orbit/Bonobo) and GOB
   3)  Shell Script, Perl, Makefiles
   4) SQL and PL/SQL
This will considerably reduce the number of files and code size. Please
comment on this.

Also, the SciLexers should be segregated from Scintilla upgrades and
modified to suit Anjuta (for example, I would like LexCPP to search the
current tags database and highlight tags accordingly - obviously, this
can only be done by making Scintilla-incompatible modifications. I would
also like to have proper highliting and completion for IDL files for
Bonobo and support GOB files. If we restrict the numbers of languages we
handle, then we can provide good quality lexers for them and maintain
them seperately from ctags and scintilla.

6) If anyone has other suggestions, please feel free to add them here.

I'm not sure how much I'll be able to do - it all depends on when we're
planning to freeze for 1.0. Andy, Naba ?

That's about it - please comment now, or forever hold your peace ;-)

Rgds,
Biswa.






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