diff options
Diffstat (limited to 'lisp/cedet/ede/dired.el')
-rw-r--r-- | lisp/cedet/ede/dired.el | 98 |
1 files changed, 38 insertions, 60 deletions
diff --git a/lisp/cedet/ede/dired.el b/lisp/cedet/ede/dired.el index ede30287723..82784740615 100644 --- a/lisp/cedet/ede/dired.el +++ b/lisp/cedet/ede/dired.el @@ -27,57 +27,46 @@ ;; This provides a dired interface to EDE, allowing users to modify ;; their project file by adding files (or whatever) directly from a ;; dired buffer. - +(eval-when-compile (require 'cl)) (require 'easymenu) (require 'dired) (require 'ede) ;;; Code: -(defvar ede-dired-minor-mode nil - "Non-nil when in ede dired minor mode.") -(make-variable-buffer-local 'ede-dired-minor-mode) - -(defvar ede-dired-keymap nil +(defvar ede-dired-keymap + (let ((map (make-sparse-keymap))) + (define-key map ".a" 'ede-dired-add-to-target) + (define-key map ".t" 'ede-new-target) + (define-key map ".s" 'ede-speedbar) + (define-key map ".C" 'ede-compile-project) + (define-key map ".d" 'ede-make-dist) + + (easy-menu-define + ede-dired-menu map "EDE Dired Minor Mode Menu" + '("Project" + [ "Add files to target" ede-dired-add-to-target (ede-current-project) ] + ( "Build" :filter ede-build-forms-menu) + "-" + [ "Create Project" ede-new (not (ede-current-project)) ] + [ "Create Target" ede-new-target (ede-current-project) ] + "-" + ( "Customize Project" :filter ede-customize-forms-menu ) + [ "View Project Tree" ede-speedbar (ede-current-project) ] + )) + map) "Keymap used for ede dired minor mode.") -(if ede-dired-keymap - nil - (setq ede-dired-keymap (make-sparse-keymap)) - (define-key ede-dired-keymap ".a" 'ede-dired-add-to-target) - (define-key ede-dired-keymap ".t" 'ede-new-target) - (define-key ede-dired-keymap ".s" 'ede-speedbar) - (define-key ede-dired-keymap ".C" 'ede-compile-project) - (define-key ede-dired-keymap ".d" 'ede-make-dist) - - (easy-menu-define - ede-dired-menu ede-dired-keymap "EDE Dired Minor Mode Menu" - '("Project" - [ "Add files to target" ede-dired-add-to-target (ede-current-project) ] - ( "Build" :filter ede-build-forms-menu) - "-" - [ "Create Project" ede-new (not (ede-current-project)) ] - [ "Create Target" ede-new-target (ede-current-project) ] - "-" - ( "Customize Project" :filter ede-customize-forms-menu ) - [ "View Project Tree" ede-speedbar (ede-current-project) ] - )) - ) - -(defun ede-dired-minor-mode (&optional arg) +(define-minor-mode ede-dired-minor-mode "A minor mode that should only be activated in DIRED buffers. -If ARG is nil, toggle, if it is a positive number, force on, if +If ARG is nil or a positive number, force on, if negative, force off." - (interactive "P") - (if (not (or (eq major-mode 'dired-mode) - (eq major-mode 'vc-dired-mode))) - (error "Not in DIRED mode")) - (setq ede-dired-minor-mode - (not (or (and (null arg) ede-dired-minor-mode) - (<= (prefix-numeric-value arg) 0)))) - (if (and (not (ede-directory-project-p default-directory)) - (not (interactive-p))) - (setq ede-dired-minor-mode nil)) - ) + :lighter " EDE" :keymap ede-dired-keymap + (unless (derived-mode-p 'dired-mode) + (setq ede-dired-minor-mode nil) + (error "Not in DIRED mode")) + (unless (or (ede-directory-project-p default-directory) + (interactive-p)) + (setq ede-dired-minor-mode nil))) (defun ede-dired-add-to-target (target) "Add a file, or all marked files into a TARGET." @@ -85,24 +74,13 @@ negative, force off." (let ((ede-object (ede-current-project))) (ede-invoke-method 'project-interactive-select-target "Add files to Target: ")))) - (let ((files (dired-get-marked-files t))) - (while files - (project-add-file target (car files)) - ;; Find the buffer for this files, and set it's ede-object - (if (get-file-buffer (car files)) - (with-current-buffer (get-file-buffer (car files)) - (setq ede-object nil) - (setq ede-object (ede-buffer-object (current-buffer))))) - ;; Increment. - (setq files (cdr files))))) - -;; Minor mode management. -(add-to-list 'minor-mode-alist '(ede-dired-minor-mode " EDE")) -(let ((a (assoc 'ede-dired-minor-mode minor-mode-map-alist))) - (if a - (setcdr a ede-dired-keymap) - (add-to-list 'minor-mode-map-alist (cons 'ede-dired-minor-mode - ede-dired-keymap)))) + (dolist (file (dired-get-marked-files t)) + (project-add-file target file) + ;; Find the buffer for this files, and set it's ede-object + (if (get-file-buffer file) + (with-current-buffer (get-file-buffer file) + (setq ede-object nil) + (setq ede-object (ede-buffer-object (current-buffer))))))) (provide 'ede/dired) |