I waited for such questions to come up
And now they did.
To clarify how the new system works and why did I do those changes
First, the previous system had one major drawback: if you needed a single file from /usr/include, you needed to parse the entire /usr/include with all its files. More, if a file was just a redirection to another file the actual tags were not generated - since codelite did not follow 'includes' (e.g. in QT it is often common to include <QString> but QString is just a one-line-file which does something like "include "../qtcore/qstring.h").
Trying to use more than one or two paths for the external database resulted in major performance degradation (e.g. if a user needed /usr/include + wx + boost the code-completion was almost useless since the database was huge and symbols searching was too slow).
The new parser:
The code-completion itself did not change, only the way codelite stores and generates the tags. A new 'file crawler' was added which accepts as input a single file and starts crawling into all the 'include' statements until it finishes, the result is a list of files to be parsed. Those files are then passed to codelite for processing.
Advantages: you only need to add 'include' statement to your file and codelite will find and parse this file - this is done when the file is
saved(assuming the file can be found in the parser search path)
Retagging workspace - previously, retag workspace, only retagged the workspace files. Now, it will parse the workspace files AND all the include files it can find
jfouche wrote:1 - About parsing, the new system doesn't allow to select which sub directories are parsed
Indeed, I will add such mechanism - should be fairly easy
jfouche wrote:2 - MinGW isn't auto detected at startup ? I added it in settings -> tags settings, and everything is fine
CodeLite detects MinGW only if it was installed using the codelite installer (if you installed it manually it wont detect it), if you have a suggestion for how to detect such installations - please bring it up (or patch the class IncludePathLocator class)
jfouche wrote:3 - no more [parse file without extensions] ?
This is enabled from 'Settings > Tags Settings > Parse files without extension' ( i tried it by including <set> to my code and it worked)
marfi wrote:please, is there any way how to determine which include paths defined in Settings->Tags Settings->Parser dialog have been really processed?
codelite searches (similar to a compiler) from first to last. If a file can be found in the first path given, it wont search the other paths.
All of the paths are used to locate a file
marfi wrote:And where are the tags from these paths stored now?
There is a single database, the workspace database. Since *not* all the files in the paths are scanned. Only files which are included by the workspace files.
marfi wrote:if I add include path for wxWidgets to common parser paths dialog in one project, the wxWidgets tags work well only in this one project, but in other workspace even wxString class cannot be recognized
Retag your workspace and it will work for it as well
marfi wrote:Also some of my libraries' includes which was parsed without any problem by previous tags system are not processed correctly now
Add the path to your library to the parser and retag the workspace. The way files are parsed
was not changed only which files should be scanned was modified.
If you got more questions, please ask them here or join channel #codelite at irc.freenode.net, where we can solve any problem and make suggestion 'live'
Eran