Re: [CEDET-devel] cpp-root project related fixes
Brought to you by:
zappo
From: Tomasz G. <to...@wp...> - 2013-01-01 13:04:35
|
"Eric M. Ludlam" <er...@si...> writes: > The ede-rescan-toplevel function is for projects that load their > configuration out of a file. cpp-root doesn't have a config file, and > thus nothing to load. What I really wanted to do is to force reparse of all source files in a project (project big enough to not load all files into emacs at once). I expected that ede project (even cpp-root project) will "know" about all source files. Having all files I would be looking for a way to reparse them. I know about 'semanticdb.sh' script but it doesn't work with cpp root projects well. Definition for projects is in .emacs but it is not loaded. What is worse is that semantic customizations are not read by this script so my setting for 'semanticdb-default-save-directory' was not honoured. And even more surprising misliding docstring for 'semanticdb-default-save-directory' which doesn't mention default value at all (which is ~/.emacs.d/semanticdb or ~/.semanticdb if it exists). Coming back to main topic. How should I reparse files in cpp root project? > The patch you've made fixing the symbol names is something I'm going > to do even though they aren't used. Better to be right. You have commited only cpp-root project changes. Java-root left unchanged. Was it on purpose or you've just overlooked them? > Your second lower patch is more complex. There was a problem where > EDE was loading all of it's project types when you load up your first > file, so the 'dirmatch' option was added for some projects so that EDE > could detect the project without having to load the project type. > > Anyway, I found that fcn tricky enough that I wouldn't trust my > ability to know by inspection if it is good. We'd need to devise a > test to poke at the key aspects that matter, and since it is a "when > emacs starts up" test, there is no infrastructure for it, and no > automated tests yet. Said test would probably be in the tests > directory with the other integration tests. Possibly we can augment > the existing test to just make sure no other EDE project types pass > featurep'. I'm certain some will fail. > > Hmmm. That's a good idea. I'll have to add that to my todo list. As you mention your todo list is there any public place for storing cedet related bugs and wishlist items? Bugzilla, trac, launchpad, etc.? I've seen discussion on emacs-devel about tags for cedet bugs on debbugs and even checked list of bugs but I don't think it contains any todos. If it is supposed to be a forum for discussing cedet related issues IMHO cedet should become a project on debbugs becase user tags are not intuitive and AFAIK there is no web interface for them. I'm still looking around the code and only trying to understand general ideas but during that I find some things which are missing or not working and would like to have a place where such issues could be entered, listed, monitored, discussed. And it would be good if it is linked from cedet web pages somewhere (I hope it is not there now and I it's not me who just missed it :-) ). Regards Tomasz Gajewski > On 12/29/2012 05:12 PM, Tomasz Gajewski wrote: >> >> I've been trying to run 'ede-rescan-toplevel' on a cpp-root project >> and experienced some errors. I've managed to fix them just to find >> out that this method is not implemented for this project type. Sadly, >> even now, I don't know what this method is supposed to do (I thought >> that this will make ede to scan for files inside cpp root project >> directory and allow me to use 'ede-find-file' to open them). >> >> Anyway I think those fixes (at least first part of them) are ok so I >> share them with you. >> >> Following part changes :file and :class-sym for cpp-root and >> java-root (not tested but seems to be cloned from cpp-root earlier) >> to make them consistent with other projects. >> >> :file change makes the test: >> >> (when (and (featurep (oref this file)) >> >> in 'ede-dir-to-projectfile' in lisp/cedet/ede/auto.el pass (I think >> there is an assumption that project files should 'provide' exactly >> what is in autoload :file field). >> >> :class-sym change fixes test: >> >> (and (object-of-class-p ;; Same as class for this dir? >> ans (oref thisdir :class-sym))) >> >> in 'ede-toplevel-project' in lisp/cedet/ede/files.el. >> >> >> === modified file 'lisp/cedet/ede/cpp-root.el' >> --- lisp/cedet/ede/cpp-root.el 2012-12-10 15:52:10 +0000 >> +++ lisp/cedet/ede/cpp-root.el 2012-12-29 21:39:35 +0000 >> @@ -242,11 +242,11 @@ >> (ede-add-project-autoload >> (ede-project-autoload "cpp-root" >> :name "CPP ROOT" >> - :file 'ede-cpp-root >> + :file 'ede/cpp-root >> :proj-file 'ede-cpp-root-project-file-for-dir >> :proj-root 'ede-cpp-root-project-root >> :load-type 'ede-cpp-root-load >> - :class-sym 'ede-cpp-root >> + :class-sym 'ede-cpp-root-project >> :new-p nil >> :safe-p t) >> ;; When a user creates one of these, it should override any other project >> @@ -377,7 +377,7 @@ >> (when (or (not (file-exists-p f)) >> (file-directory-p f)) >> (delete-instance this) >> - (error ":file for ede-cpp-root must be a file")) >> + (error ":file for ede-cpp-root-project must be a file")) >> (oset this :file f) >> (oset this :directory (file-name-directory f)) >> (ede-project-directory-remove-hash (file-name-directory f)) >> >> === modified file 'lisp/cedet/ede/java-root.el' >> --- lisp/cedet/ede/java-root.el 2012-12-17 12:32:52 +0000 >> +++ lisp/cedet/ede/java-root.el 2012-12-29 21:39:42 +0000 >> @@ -199,11 +199,11 @@ >> (ede-add-project-autoload >> (ede-project-autoload "java-root" >> :name "JAVA ROOT" >> - :file 'ede-java-root >> + :file 'ede/java-root >> :proj-file 'ede-java-root-project-file-for-dir >> :proj-root 'ede-java-root-project-root >> :load-type 'ede-java-root-load >> - :class-sym 'ede-java-root >> + :class-sym 'ede-java-root-project >> :new-p nil >> :safe-p t) >> ;; When a user creates one of these, it should override any other project >> @@ -296,7 +296,7 @@ >> (when (or (not (file-exists-p f)) >> (file-directory-p f)) >> (delete-instance this) >> - (error ":file for ede-java-root must be a file")) >> + (error ":file for ede-java-root-project must be a file")) >> (oset this :file f) >> (oset this :directory (file-name-directory f)) >> (ede-project-directory-remove-hash (file-name-directory f)) >> >> >> >> I've made another change of which I'm not so confident of. I've changed >> condition to match more the description and my version worked ok for >> cpp-root project. I've found out that dirmatch initial value was changed >> to "" (empty string) in almost the same time as this condition was added >> and comment by two different persons (IIRC Alex and Eric) and probably >> this condition assumed that for projects that do not set dirmatch the >> default value is nil. What I don't understand is the presence of 'root' >> in condition so I didn't know where to move it. >> >> >> === modified file 'lisp/cedet/ede/auto.el' >> --- lisp/cedet/ede/auto.el 2012-10-07 12:07:12 +0000 >> +++ lisp/cedet/ede/auto.el 2012-12-29 20:33:50 +0000 >> @@ -311,10 +311,10 @@ >> ;; other EDE projects. This happens if the file is >> ;; already loaded, or if there is a dirmatch, but >> ;; root is empty. >> - (when (and (featurep (oref this file)) >> - (or (not (stringp dm)) >> - (not (string= dm ""))) >> - root) >> + (when (or (featurep (oref this file)) >> + (and (or (not (stringp dm)) >> + (not (string= dm ""))) >> + root)) >> (funcall pf (or root d)))))) >> ) >> (when (and f (file-exists-p f)) >> >> >> Regards >> Tomasz Gajewski >> >> ------------------------------------------------------------------------------ >> Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >> MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current >> with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >> MVPs and experts. SALE $99.99 this month only -- learn more at: >> http://p.sf.net/sfu/learnmore_122912 >> _______________________________________________ >> Cedet-devel mailing list >> Ced...@li... >> https://lists.sourceforge.net/lists/listinfo/cedet-devel >> > > -- Tomasz Gajewski |