aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Leake2015-08-31 10:32:26 -0500
committerStephen Leake2015-08-31 10:35:34 -0500
commit0ff60ec82f98032375e8569a98c08b72d879bce4 (patch)
treec909654f1073053ef4f160c739e021ef08196dbd
parente634dacce7ee3bcb4d8aba9e6ad125b6b875c179 (diff)
downloademacs-0ff60ec82f98032375e8569a98c08b72d879bce4.tar.gz
emacs-0ff60ec82f98032375e8569a98c08b72d879bce4.zip
Fix some byte-compiler warnings in EDE
This fixes a bug that caused ede-generic-new-autoloader to overwrite the existing autoloader list, rather than add to it. * lisp/cedet/ede/auto.el (ede-project-class-files): Delete obsolete name argument to eieio class constructor. (ede-show-supported-projects): New. (ede-add-project-autoload): Replace obsolete `eieio-object-name-string' with (oref ... name). (ede-auto-load-project): Use slot name, not initarg key. * lisp/cedet/ede/generic.el (ede-generic-load, ede-generic-find-matching-target): Use slot name, not initarg key. (ede-find-target): Use oref-default on class name. (ede-generic-new-autoloader): Delete obsolete name argument to eieio class constructor. (ede-enable-generic-projects): Make project type names unique.
-rw-r--r--lisp/cedet/ede/auto.el32
-rw-r--r--lisp/cedet/ede/generic.el42
2 files changed, 42 insertions, 32 deletions
diff --git a/lisp/cedet/ede/auto.el b/lisp/cedet/ede/auto.el
index 482632f294a..51459fa7e74 100644
--- a/lisp/cedet/ede/auto.el
+++ b/lisp/cedet/ede/auto.el
@@ -155,9 +155,9 @@ into memory.")
155Specifying this matcher object will allow EDE to perform a complex 155Specifying this matcher object will allow EDE to perform a complex
156check without loading the project. 156check without loading the project.
157 157
158NOTE: If you use dirmatch, you may need to set :root-only to nil. 158NOTE: If you use dirmatch, you may need to set :root-only to `nil'.
159While it may be a root based project, all subdirs will happen to return 159While it may be a root based project, all subdirs will happen to return
160true for the dirmatch, so for scanning purposes, set it to nil.") 160true for the dirmatch, so for scanning purposes, set it to `nil'.")
161 (proj-root :initarg :proj-root 161 (proj-root :initarg :proj-root
162 :type function 162 :type function
163 :documentation "A function symbol to call for the project root. 163 :documentation "A function symbol to call for the project root.
@@ -197,23 +197,20 @@ type is required and the load function used.")
197 197
198(defvar ede-project-class-files 198(defvar ede-project-class-files
199 (list 199 (list
200 (ede-project-autoload "edeproject-makefile" 200 (ede-project-autoload :name "Make" :file 'ede/proj
201 :name "Make" :file 'ede/proj
202 :proj-file "Project.ede" 201 :proj-file "Project.ede"
203 :root-only nil 202 :root-only nil
204 :load-type 'ede-proj-load 203 :load-type 'ede-proj-load
205 :class-sym 'ede-proj-project 204 :class-sym 'ede-proj-project
206 :safe-p nil) 205 :safe-p nil)
207 (ede-project-autoload "edeproject-automake" 206 (ede-project-autoload :name "Automake" :file 'ede/proj
208 :name "Automake" :file 'ede/proj
209 :proj-file "Project.ede" 207 :proj-file "Project.ede"
210 :root-only nil 208 :root-only nil
211 :initializers '(:makefile-type Makefile.am) 209 :initializers '(:makefile-type Makefile.am)
212 :load-type 'ede-proj-load 210 :load-type 'ede-proj-load
213 :class-sym 'ede-proj-project 211 :class-sym 'ede-proj-project
214 :safe-p nil) 212 :safe-p nil)
215 (ede-project-autoload "automake" 213 (ede-project-autoload :name "automake" :file 'ede/project-am
216 :name "automake" :file 'ede/project-am
217 :proj-file "Makefile.am" 214 :proj-file "Makefile.am"
218 :root-only nil 215 :root-only nil
219 :load-type 'project-am-load 216 :load-type 'project-am-load
@@ -225,6 +222,19 @@ type is required and the load function used.")
225 222
226(put 'ede-project-class-files 'risky-local-variable t) 223(put 'ede-project-class-files 'risky-local-variable t)
227 224
225(defun ede-show-supported-projects ()
226 "Display all the project types registered with EDE."
227 (interactive)
228 (let ((b (get-buffer-create "*EDE Autodetect Projects*")))
229 (set-buffer b)
230 (setq buffer-read-only nil)
231 (erase-buffer)
232 (dolist (prj ede-project-class-files)
233 (insert (oref prj name))
234 (newline))
235 (display-buffer b)
236 ))
237
228(defun ede-add-project-autoload (projauto &optional flag) 238(defun ede-add-project-autoload (projauto &optional flag)
229 "Add PROJAUTO, an EDE autoload definition to `ede-project-class-files'. 239 "Add PROJAUTO, an EDE autoload definition to `ede-project-class-files'.
230Optional argument FLAG indicates how this autoload should be 240Optional argument FLAG indicates how this autoload should be
@@ -234,8 +244,8 @@ added. Possible values are:
234 front of the list so more generic projects don't get priority." 244 front of the list so more generic projects don't get priority."
235 ;; First, can we identify PROJAUTO as already in the list? If so, replace. 245 ;; First, can we identify PROJAUTO as already in the list? If so, replace.
236 (let ((projlist ede-project-class-files) 246 (let ((projlist ede-project-class-files)
237 (projname (eieio-object-name-string projauto))) 247 (projname (oref projauto name)))
238 (while (and projlist (not (string= (eieio-object-name-string (car projlist)) projname))) 248 (while (and projlist (not (string= (oref (car projlist) name) projname)))
239 (setq projlist (cdr projlist))) 249 (setq projlist (cdr projlist)))
240 250
241 (if projlist 251 (if projlist
@@ -296,7 +306,7 @@ be loaded.
296 306
297NOTE: Do not call this - it should only be called from `ede-load-project-file'." 307NOTE: Do not call this - it should only be called from `ede-load-project-file'."
298 ;; Last line of defense: don't load unsafe projects. 308 ;; Last line of defense: don't load unsafe projects.
299 (when (not (or (oref this :safe-p) 309 (when (not (or (oref this safe-p)
300 (ede-directory-safe-p dir))) 310 (ede-directory-safe-p dir)))
301 (error "Attempt to load an unsafe project (bug elsewhere in EDE)")) 311 (error "Attempt to load an unsafe project (bug elsewhere in EDE)"))
302 ;; Things are good - so load the project. 312 ;; Things are good - so load the project.
diff --git a/lisp/cedet/ede/generic.el b/lisp/cedet/ede/generic.el
index 9e6fc978376..8d013245bb6 100644
--- a/lisp/cedet/ede/generic.el
+++ b/lisp/cedet/ede/generic.el
@@ -74,7 +74,7 @@
74;; The ede-generic-target-c-cpp has some example methods setting up 74;; The ede-generic-target-c-cpp has some example methods setting up
75;; the pre-processor map and system include path. 75;; the pre-processor map and system include path.
76;; 76;;
77;; NOTE: It is not necessary to modify ede-generic.el to add any of 77;; NOTE: It is not necessary to modify ede/generic.el to add any of
78;; the above described support features. 78;; the above described support features.
79 79
80(require 'eieio-opt) 80(require 'eieio-opt)
@@ -102,14 +102,14 @@ ROOTPROJ is nil, since there is only one project."
102 (let* ((alobj ede-constructing)) 102 (let* ((alobj ede-constructing))
103 (when (not alobj) (error "Cannot load generic project without the autoload instance")) 103 (when (not alobj) (error "Cannot load generic project without the autoload instance"))
104 ;;; 104 ;;;
105 ;; TODO - find the root dir. 105 ;; TODO - find the root dir.
106 (let ((rootdir dir)) 106 (let ((rootdir dir))
107 (funcall (oref alobj class-sym) 107 (funcall (oref alobj class-sym)
108 (symbol-name (oref alobj class-sym)) 108 (symbol-name (oref alobj class-sym))
109 :name (file-name-nondirectory (directory-file-name dir)) 109 :name (file-name-nondirectory (directory-file-name dir))
110 :version "1.0" 110 :version "1.0"
111 :directory (file-name-as-directory rootdir) 111 :directory (file-name-as-directory rootdir)
112 :file (expand-file-name (oref alobj :proj-file) 112 :file (expand-file-name (oref alobj proj-file)
113 rootdir))) 113 rootdir)))
114 )) 114 ))
115 115
@@ -211,7 +211,7 @@ All directories need at least one target.")
211 (let ((match nil)) 211 (let ((match nil))
212 (dolist (T targets) 212 (dolist (T targets)
213 (when (and (object-of-class-p T class) 213 (when (and (object-of-class-p T class)
214 (string= (oref T :path) dir)) 214 (string= (oref T path) dir))
215 (setq match T) 215 (setq match T)
216 )) 216 ))
217 match)) 217 match))
@@ -241,7 +241,7 @@ If one doesn't exist, create a new one for this directory."
241 (when (not ans) 241 (when (not ans)
242 (setq ans (make-instance 242 (setq ans (make-instance
243 cls 243 cls
244 :name (oref cls shortname) 244 :name (oref-default cls shortname)
245 :path dir 245 :path dir
246 :source nil)) 246 :source nil))
247 (object-add-to-list proj :targets ans) 247 (object-add-to-list proj :targets ans)
@@ -252,18 +252,18 @@ If one doesn't exist, create a new one for this directory."
252;; 252;;
253;; Derived projects need an autoloader so that EDE can find the 253;; Derived projects need an autoloader so that EDE can find the
254;; different projects on disk. 254;; different projects on disk.
255(defun ede-generic-new-autoloader (internal-name external-name 255(defun ede-generic-new-autoloader (_internal-name external-name
256 projectfile class) 256 projectfile class)
257 "Add a new EDE Autoload instance for identifying a generic project. 257 "Add a new EDE Autoload instance for identifying a generic project.
258INTERNAL-NAME is a long name that identifies this project type. 258INTERNAL-NAME is obsolete and ignored.
259EXTERNAL-NAME is a shorter human readable name to describe the project. 259EXTERNAL-NAME is a human readable name to describe the project; it
260must be unique among all autoloaded projects.
260PROJECTFILE is a file name that identifies a project of this type to EDE, such as 261PROJECTFILE is a file name that identifies a project of this type to EDE, such as
261a Makefile, or SConstruct file. 262a Makefile, or SConstruct file.
262CLASS is the EIEIO class that is used to track this project. It should subclass 263CLASS is the EIEIO class that is used to track this project. It should subclass
263the class `ede-generic-project' project." 264`ede-generic-project'."
264 (ede-add-project-autoload 265 (ede-add-project-autoload
265 (ede-project-autoload internal-name 266 (ede-project-autoload :name external-name
266 :name external-name
267 :file 'ede/generic 267 :file 'ede/generic
268 :proj-file projectfile 268 :proj-file projectfile
269 :root-only nil 269 :root-only nil
@@ -284,29 +284,29 @@ the class `ede-generic-project' project."
284(defun ede-enable-generic-projects () 284(defun ede-enable-generic-projects ()
285 "Enable generic project loaders." 285 "Enable generic project loaders."
286 (interactive) 286 (interactive)
287 (ede-generic-new-autoloader "generic-makefile" "Make" 287 (ede-generic-new-autoloader "generic-makefile" "Generic Make"
288 "Makefile" 'ede-generic-makefile-project) 288 "Makefile" 'ede-generic-makefile-project)
289 (ede-generic-new-autoloader "generic-scons" "SCons" 289 (ede-generic-new-autoloader "generic-scons" "Generic SCons"
290 "SConstruct" 'ede-generic-scons-project) 290 "SConstruct" 'ede-generic-scons-project)
291 (ede-generic-new-autoloader "generic-cmake" "CMake" 291 (ede-generic-new-autoloader "generic-cmake" "Generic CMake"
292 "CMakeLists" 'ede-generic-cmake-project) 292 "CMakeLists" 'ede-generic-cmake-project)
293 293
294 ;; Super Generic found via revision control tags. 294 ;; Super Generic found via revision control tags.
295 (ede-generic-new-autoloader "generic-git" "Git" 295 (ede-generic-new-autoloader "generic-git" "Generic Git"
296 ".git" 'ede-generic-vc-project) 296 ".git" 'ede-generic-vc-project)
297 (ede-generic-new-autoloader "generic-bzr" "Bazaar" 297 (ede-generic-new-autoloader "generic-bzr" "Generic Bazaar"
298 ".bzr" 'ede-generic-vc-project) 298 ".bzr" 'ede-generic-vc-project)
299 (ede-generic-new-autoloader "generic-hg" "Mercurial" 299 (ede-generic-new-autoloader "generic-hg" "Generic Mercurial"
300 ".hg" 'ede-generic-vc-project) 300 ".hg" 'ede-generic-vc-project)
301 (ede-generic-new-autoloader "generic-svn" "Subversions" 301 (ede-generic-new-autoloader "generic-svn" "Generic Subversions"
302 ".svn" 'ede-generic-vc-project) 302 ".svn" 'ede-generic-vc-project)
303 (ede-generic-new-autoloader "generic-cvs" "CVS" 303 (ede-generic-new-autoloader "generic-cvs" "Generic CVS"
304 "CVS" 'ede-generic-vc-project) 304 "CVS" 'ede-generic-vc-project)
305 305
306 ;; Take advantage of existing 'projectile' based projects. 306 ;; Take advantage of existing 'projectile' based projects.
307 ;; @TODO - if projectile supports compile commands etc, can we 307 ;; @TODO - if projectile supports compile commands etc, can we
308 ;; read that out? Howto if projectile is not part of core emacs. 308 ;; read that out? Howto if projectile is not part of core emacs.
309 (ede-generic-new-autoloader "generic-projectile" ".projectile" 309 (ede-generic-new-autoloader "generic-projectile" "Generic .projectile"
310 ".projectile" 'ede-generic-vc-project) 310 ".projectile" 'ede-generic-vc-project)
311 311
312 ) 312 )