[CEDET-devel] cpp-root project related fixes
Brought to you by:
zappo
From: Tomasz G. <to...@wp...> - 2012-12-29 22:12:26
|
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 |