123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- (require 'ede)
- (require 'cedet-files)
- (add-to-list 'ede-project-class-files
- (ede-project-autoload "simple-overlay"
- :name "Simple" :file 'ede/simple
- :proj-file 'ede-simple-projectfile-for-dir
- :load-type 'ede-simple-load
- :class-sym 'ede-simple-project
- :safe-p nil)
- t)
- (defcustom ede-simple-save-directory "~/.ede"
- "*Directory where simple EDE project overlays are saved."
- :group 'ede
- :type 'directory)
- (defcustom ede-simple-save-file-name "ProjSimple.ede"
- "*File name used for simple project wrappers."
- :group 'ede
- :type 'string)
- (defun ede-simple-projectfile-for-dir (&optional dir)
- "Return a full file name to the project file stored in the current directory.
- The directory has three parts:
- <STORAGE ROOT>/<PROJ DIR AS FILE>/ProjSimple.ede"
- (let ((d (or dir default-directory)))
- (concat
-
- (file-name-as-directory (expand-file-name ede-simple-save-directory))
-
- (cedet-directory-name-to-file-name d)
-
- ede-simple-save-file-name)
- ))
- (defun ede-simple-load (dir &optional rootproj)
- "Load a project of type `Simple' for the directory DIR.
- Return nil if there isn't one.
- ROOTPROJ is nil, since we will only create a single EDE project here."
- (let ((pf (ede-simple-projectfile-for-dir dir))
- (obj nil))
- (when pf
- (setq obj (eieio-persistent-read pf))
- (oset obj :directory dir)
- )
- obj))
- (defclass ede-simple-target (ede-target)
- ()
- "EDE Simple project target.
- All directories need at least one target.")
- (defclass ede-simple-project (ede-project eieio-persistent)
- ((extension :initform ".ede")
- (file-header-line :initform ";; EDE Simple Project")
- )
- "EDE Simple project class.
- Each directory needs a project file to control it.")
- (defmethod ede-commit-project ((proj ede-simple-project))
- "Commit any change to PROJ to its file."
- (when (not (file-exists-p ede-simple-save-directory))
- (if (y-or-n-p (concat ede-simple-save-directory
- " doesn't exist. Create? "))
- (make-directory ede-simple-save-directory)
- (error "No save directory for new project")))
- (eieio-persistent-save proj))
- (defmethod ede-find-subproject-for-directory ((proj ede-simple-project)
- dir)
- "Return PROJ, for handling all subdirs below DIR."
- proj)
- (provide 'ede/simple)
|