diff options
| author | Stephen Leake | 2015-08-31 10:32:26 -0500 |
|---|---|---|
| committer | Stephen Leake | 2015-08-31 10:35:34 -0500 |
| commit | 0ff60ec82f98032375e8569a98c08b72d879bce4 (patch) | |
| tree | c909654f1073053ef4f160c739e021ef08196dbd | |
| parent | e634dacce7ee3bcb4d8aba9e6ad125b6b875c179 (diff) | |
| download | emacs-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.el | 32 | ||||
| -rw-r--r-- | lisp/cedet/ede/generic.el | 42 |
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.") | |||
| 155 | Specifying this matcher object will allow EDE to perform a complex | 155 | Specifying this matcher object will allow EDE to perform a complex |
| 156 | check without loading the project. | 156 | check without loading the project. |
| 157 | 157 | ||
| 158 | NOTE: If you use dirmatch, you may need to set :root-only to nil. | 158 | NOTE: If you use dirmatch, you may need to set :root-only to `nil'. |
| 159 | While it may be a root based project, all subdirs will happen to return | 159 | While it may be a root based project, all subdirs will happen to return |
| 160 | true for the dirmatch, so for scanning purposes, set it to nil.") | 160 | true 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'. |
| 230 | Optional argument FLAG indicates how this autoload should be | 240 | Optional 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 | ||
| 297 | NOTE: Do not call this - it should only be called from `ede-load-project-file'." | 307 | NOTE: 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. |
| 258 | INTERNAL-NAME is a long name that identifies this project type. | 258 | INTERNAL-NAME is obsolete and ignored. |
| 259 | EXTERNAL-NAME is a shorter human readable name to describe the project. | 259 | EXTERNAL-NAME is a human readable name to describe the project; it |
| 260 | must be unique among all autoloaded projects. | ||
| 260 | PROJECTFILE is a file name that identifies a project of this type to EDE, such as | 261 | PROJECTFILE is a file name that identifies a project of this type to EDE, such as |
| 261 | a Makefile, or SConstruct file. | 262 | a Makefile, or SConstruct file. |
| 262 | CLASS is the EIEIO class that is used to track this project. It should subclass | 263 | CLASS is the EIEIO class that is used to track this project. It should subclass |
| 263 | the 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 | ) |