Mercurial > emacs
diff lisp/cedet/ede/dired.el @ 108210:5143700578d0
Use define-minor-mode in CEDET where applicable.
* cedet/srecode/mode.el (srecode-minor-mode,global-srecode-minor-mode):
Use define-minor-mode.
* cedet/semantic/util-modes.el (semantic-add-minor-mode):
Remove unused arg `keymap' and code redundant with define-minor-mode.
(semantic-toggle-minor-mode-globally): Only handle arg -1 and 1.
(semantic-stickyfunc-mode, global-semantic-show-unmatched-syntax-mode)
(semantic-highlight-func-mode, global-semantic-show-parser-state-mode)
(global-semantic-highlight-edits-mode, semantic-highlight-edits-mode)
(semantic-show-unmatched-syntax-mode, semantic-show-parser-state-mode)
(global-semantic-stickyfunc-mode, global-semantic-highlight-func-mode):
Use define-minor-mode.
(semantic-stickyfunc-mode-setup, semantic-highlight-edits-mode-setup)
(semantic-show-unmatched-syntax-mode-setup)
(semantic-show-parser-state-mode-setup)
(semantic-highlight-func-mode-setup): Inline into sole caller.
* cedet/semantic/mru-bookmark.el (global-semantic-mru-bookmark-mode)
(semantic-mru-bookmark-mode): Use define-minor-mode.
(semantic-mru-bookmark-mode-setup): Inline into sole caller.
* cedet/semantic/idle.el (define-semantic-idle-service):
Use define-minor-mode and inline setup function into its sole caller.
(semantic-idle-scheduler-mode-setup)
(semantic-idle-summary-mode-setup): Inline into sole caller.
(global-semantic-idle-scheduler-mode, semantic-idle-scheduler-mode):
Use define-minor-mode.
* cedet/semantic/decorate/mode.el (global-semantic-decoration-mode)
(semantic-decoration-mode): Use define-minor-mode.
(semantic-decoration-mode-setup): Inline into sole caller.
* cedet/ede/dired.el (ede-dired-minor-mode): Initialize in declaration.
(ede-dired-minor-mode): Use define-minor-mode and derived-mode-p.
(ede-dired-add-to-target): Use dolist.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 01 May 2010 23:38:19 -0400 |
parents | 1d1d5d9bd884 |
children | b799d38f522a |
line wrap: on
line diff
--- a/lisp/cedet/ede/dired.el Sat May 01 22:39:50 2010 -0400 +++ b/lisp/cedet/ede/dired.el Sat May 01 23:38:19 2010 -0400 @@ -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 + (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) -(defvar ede-dired-keymap nil + (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 @@ (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)