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.
This commit is contained in:
parent
a5a1e2ef82
commit
cb7f3653c8
7 changed files with 313 additions and 715 deletions
|
@ -1,3 +1,43 @@
|
|||
2010-05-02 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
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.
|
||||
|
||||
2010-05-01 Toru TSUNEYOSHI <t_tuneyosi@hotmail.com>
|
||||
Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
|
@ -8,8 +48,8 @@
|
|||
(tramp-inline-compress-commands): New defconst.
|
||||
(tramp-find-inline-compress, tramp-get-inline-compress)
|
||||
(tramp-get-inline-coding): New defuns.
|
||||
(tramp-get-remote-coding, tramp-get-local-coding): Removed,
|
||||
replaced by `tramp-get-inline-coding'.
|
||||
(tramp-get-remote-coding, tramp-get-local-coding): Remove,
|
||||
replace by `tramp-get-inline-coding'.
|
||||
(tramp-handle-file-local-copy, tramp-handle-write-region)
|
||||
(tramp-method-out-of-band-p): Use `tramp-get-inline-coding'.
|
||||
|
||||
|
@ -41,8 +81,7 @@
|
|||
|
||||
2010-04-30 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* minibuffer.el (tags-completion-at-point-function): Fix return
|
||||
value.
|
||||
* minibuffer.el (tags-completion-at-point-function): Fix return value.
|
||||
|
||||
2010-04-30 Eli Zaretskii <eliz@gnu.org>
|
||||
|
||||
|
|
|
@ -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 @@ 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)
|
||||
|
||||
|
|
|
@ -224,46 +224,34 @@ Flush functions from `semantic-decorate-pending-decoration-hook'."
|
|||
;; Generic mode for handling basic highlighting and decorations.
|
||||
;;
|
||||
|
||||
(defcustom global-semantic-decoration-mode nil
|
||||
"*If non-nil, enable global use of command `semantic-decoration-mode'.
|
||||
When this mode is activated, decorations specified by
|
||||
`semantic-decoration-styles'."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/decorate/mode
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-decoration-mode (if val 1 -1))))
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-decoration-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-decoration-mode
|
||||
"Toggle global use of option `semantic-decoration-mode'.
|
||||
Decoration mode turns on all active decorations as specified
|
||||
by `semantic-decoration-styles'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-decoration-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-decoration-mode arg)))
|
||||
by `semantic-decoration-styles'."
|
||||
:global t :group 'semantic :group 'semantic-modes
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'semantic/decorate/mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-decoration-mode (if global-semantic-decoration-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-decoration-mode-hook nil
|
||||
"Hook run at the end of function `semantic-decoration-mode'."
|
||||
:group 'semantic
|
||||
:type 'hook)
|
||||
|
||||
;;;;###autoload
|
||||
(defvar semantic-decoration-mode nil
|
||||
"Non-nil if command `semantic-decoration-mode' is enabled.
|
||||
Use the command `semantic-decoration-mode' to change this variable.")
|
||||
(make-variable-buffer-local 'semantic-decoration-mode)
|
||||
|
||||
(defun semantic-decoration-mode-setup ()
|
||||
"Setup the `semantic-decoration-mode' minor mode.
|
||||
The minor mode can be turned on only if the semantic feature is available
|
||||
and the current buffer was set up for parsing. Return non-nil if the
|
||||
(define-minor-mode semantic-decoration-mode
|
||||
"Minor mode for decorating tags.
|
||||
Decorations are specified in `semantic-decoration-styles'.
|
||||
You can define new decoration styles with
|
||||
`define-semantic-decoration-style'.
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
;;
|
||||
;;\\{semantic-decoration-map}"
|
||||
nil nil nil
|
||||
(if semantic-decoration-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
|
@ -280,8 +268,7 @@ minor mode is enabled."
|
|||
'semantic-decorate-tags-after-full-reparse nil t)
|
||||
;; Add decorations to available tags. The above hooks ensure
|
||||
;; that new tags will be decorated when they become available.
|
||||
(semantic-decorate-add-decorations (semantic-fetch-available-tags))
|
||||
)
|
||||
(semantic-decorate-add-decorations (semantic-fetch-available-tags)))
|
||||
;; Remove decorations from available tags.
|
||||
(semantic-decorate-clear-decorations (semantic-fetch-available-tags))
|
||||
;; Cleanup any leftover crap too.
|
||||
|
@ -290,41 +277,11 @@ minor mode is enabled."
|
|||
(remove-hook 'semantic-after-partial-cache-change-hook
|
||||
'semantic-decorate-tags-after-partial-reparse t)
|
||||
(remove-hook 'semantic-after-toplevel-cache-change-hook
|
||||
'semantic-decorate-tags-after-full-reparse t)
|
||||
)
|
||||
semantic-decoration-mode)
|
||||
|
||||
(defun semantic-decoration-mode (&optional arg)
|
||||
"Minor mode for decorating tags.
|
||||
Decorations are specified in `semantic-decoration-styles'.
|
||||
You can define new decoration styles with
|
||||
`define-semantic-decoration-style'.
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
;;
|
||||
;;\\{semantic-decoration-map}"
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-decoration-mode 0 1))))
|
||||
(setq semantic-decoration-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-decoration-mode)))
|
||||
(semantic-decoration-mode-setup)
|
||||
(run-hooks 'semantic-decoration-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "decoration-mode minor mode %sabled"
|
||||
(if semantic-decoration-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-decoration-mode)
|
||||
'semantic-decorate-tags-after-full-reparse t))
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-decoration-mode
|
||||
""
|
||||
nil)
|
||||
"")
|
||||
|
||||
(defun semantic-decorate-tags-after-full-reparse (tag-list)
|
||||
"Add decorations after a complete reparse of the current buffer.
|
||||
|
|
|
@ -128,16 +128,6 @@ unlikely the user would be ready to type again right away."
|
|||
;; The minor mode portion of this code just sets up the minor mode
|
||||
;; which does the initial scheduling of the idle timers.
|
||||
;;
|
||||
;;;###autoload
|
||||
(defcustom global-semantic-idle-scheduler-mode nil
|
||||
"*If non-nil, enable global use of idle-scheduler mode."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/idle
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-idle-scheduler-mode (if val 1 -1))))
|
||||
|
||||
(defcustom semantic-idle-scheduler-mode-hook nil
|
||||
"Hook run at the end of the function `semantic-idle-scheduler-mode'."
|
||||
|
@ -167,24 +157,8 @@ exceeds the `semantic-idle-scheduler-max-buffer-size' threshold."
|
|||
(or (<= semantic-idle-scheduler-max-buffer-size 0)
|
||||
(< (buffer-size) semantic-idle-scheduler-max-buffer-size))))
|
||||
|
||||
(defun semantic-idle-scheduler-mode-setup ()
|
||||
"Setup option `semantic-idle-scheduler-mode'.
|
||||
The minor mode can be turned on only if semantic feature is available
|
||||
and the current buffer was set up for parsing. When minor mode is
|
||||
enabled parse the current buffer if needed. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(if semantic-idle-scheduler-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
;; Disable minor mode if semantic stuff not available
|
||||
(setq semantic-idle-scheduler-mode nil)
|
||||
(error "Buffer %s was not set up idle time scheduling"
|
||||
(buffer-name)))
|
||||
(semantic-idle-scheduler-setup-timers)))
|
||||
semantic-idle-scheduler-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defun semantic-idle-scheduler-mode (&optional arg)
|
||||
(define-minor-mode semantic-idle-scheduler-mode
|
||||
"Minor mode to auto parse buffer following a change.
|
||||
When this mode is off, a buffer is only rescanned for tokens when
|
||||
some command requests the list of available tokens. When idle-scheduler
|
||||
|
@ -195,26 +169,19 @@ With prefix argument ARG, turn on if positive, otherwise off. The
|
|||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-idle-scheduler-mode 0 1))))
|
||||
(setq semantic-idle-scheduler-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-idle-scheduler-mode)))
|
||||
(semantic-idle-scheduler-mode-setup)
|
||||
(run-hooks 'semantic-idle-scheduler-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "idle-scheduler minor mode %sabled"
|
||||
(if semantic-idle-scheduler-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-idle-scheduler-mode)
|
||||
nil nil nil
|
||||
(if semantic-idle-scheduler-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
;; Disable minor mode if semantic stuff not available
|
||||
(setq semantic-idle-scheduler-mode nil)
|
||||
(error "Buffer %s was not set up idle time scheduling"
|
||||
(buffer-name)))
|
||||
(semantic-idle-scheduler-setup-timers)))
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-idle-scheduler-mode
|
||||
"ARP"
|
||||
nil)
|
||||
"ARP")
|
||||
|
||||
;;; SERVICES services
|
||||
;;
|
||||
|
@ -582,31 +549,23 @@ This routine creates the following functions and variables:"
|
|||
(mode (intern (concat (symbol-name name) "-mode")))
|
||||
(hook (intern (concat (symbol-name name) "-mode-hook")))
|
||||
(map (intern (concat (symbol-name name) "-mode-map")))
|
||||
(setup (intern (concat (symbol-name name) "-mode-setup")))
|
||||
(func (intern (concat (symbol-name name) "-idle-function"))))
|
||||
|
||||
`(eval-and-compile
|
||||
(defun ,global (&optional arg)
|
||||
(define-minor-mode ,global
|
||||
,(concat "Toggle " (symbol-name global) ".
|
||||
With ARG, turn the minor mode on if ARG is positive, off otherwise.
|
||||
|
||||
When this minor mode is enabled, `" (symbol-name mode) "' is
|
||||
turned on in every Semantic-supported buffer.")
|
||||
(interactive "P")
|
||||
(setq ,global
|
||||
(semantic-toggle-minor-mode-globally
|
||||
',mode arg)))
|
||||
|
||||
(defcustom ,global nil
|
||||
,(concat "Non-nil if `" (symbol-name mode) "' is enabled.")
|
||||
:global t
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/idle
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(,global (if val 1 -1))))
|
||||
(semantic-toggle-minor-mode-globally
|
||||
',mode (if ,global 1 -1)))
|
||||
|
||||
;; FIXME: Get rid of this when define-minor-mode does it for us.
|
||||
(defcustom ,hook nil
|
||||
,(concat "Hook run at the end of function `" (symbol-name mode) "'.")
|
||||
:group 'semantic
|
||||
|
@ -617,14 +576,9 @@ turned on in every Semantic-supported buffer.")
|
|||
km)
|
||||
,(concat "Keymap for `" (symbol-name mode) "'."))
|
||||
|
||||
(defvar ,mode nil
|
||||
,(concat "Non-nil if the minor mode `" (symbol-name mode) "' is enabled.
|
||||
Use the command `" (symbol-name mode) "' to change this variable."))
|
||||
(make-variable-buffer-local ',mode)
|
||||
|
||||
(defun ,setup ()
|
||||
,(concat "Set up `" (symbol-name mode) "'.
|
||||
Return non-nil if the minor mode is enabled.")
|
||||
(define-minor-mode ,mode
|
||||
,doc
|
||||
:keymap ,map
|
||||
(if ,mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
|
@ -633,36 +587,13 @@ Return non-nil if the minor mode is enabled.")
|
|||
(error "Buffer %s was not set up for parsing"
|
||||
(buffer-name)))
|
||||
;; Enable the mode mode
|
||||
(semantic-idle-scheduler-add #',func)
|
||||
)
|
||||
(semantic-idle-scheduler-add #',func))
|
||||
;; Disable the mode mode
|
||||
(semantic-idle-scheduler-remove #',func)
|
||||
)
|
||||
,mode)
|
||||
|
||||
(defun ,mode (&optional arg)
|
||||
,doc
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if ,mode 0 1))))
|
||||
(setq ,mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not ,mode)))
|
||||
(,setup)
|
||||
(run-hooks ,hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "%s %sabled"
|
||||
(symbol-name ',mode)
|
||||
(if ,mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
,mode)
|
||||
(semantic-idle-scheduler-remove #',func))
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode ',mode
|
||||
"" ; idle schedulers are quiet?
|
||||
,map)
|
||||
"") ; idle schedulers are quiet?
|
||||
|
||||
(defun ,func ()
|
||||
,(concat "Perform idle activity for the minor mode `"
|
||||
|
@ -814,21 +745,6 @@ When this minor mode is enabled, the echo area displays a summary
|
|||
of the lexical token at point whenever Emacs is idle."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
(semantic-idle-summary-mode-setup)
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(defun semantic-idle-summary-refresh-echo-area ()
|
||||
(and semantic-idle-summary-mode
|
||||
eldoc-last-message
|
||||
(if (and (not executing-kbd-macro)
|
||||
(not (and (boundp 'edebug-active) edebug-active))
|
||||
(not cursor-in-echo-area)
|
||||
(not (eq (selected-window) (minibuffer-window))))
|
||||
(eldoc-message eldoc-last-message)
|
||||
(setq eldoc-last-message nil))))
|
||||
|
||||
(defun semantic-idle-summary-mode-setup ()
|
||||
"Set up `semantic-idle-summary-mode'."
|
||||
(if semantic-idle-summary-mode
|
||||
;; Enable the mode
|
||||
(progn
|
||||
|
@ -843,7 +759,17 @@ of the lexical token at point whenever Emacs is idle."
|
|||
;; Disable the mode
|
||||
(semantic-idle-scheduler-remove 'semantic-idle-summary-idle-function)
|
||||
(remove-hook 'pre-command-hook 'semantic-idle-summary-refresh-echo-area t))
|
||||
semantic-idle-summary-mode)
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(defun semantic-idle-summary-refresh-echo-area ()
|
||||
(and semantic-idle-summary-mode
|
||||
eldoc-last-message
|
||||
(if (and (not executing-kbd-macro)
|
||||
(not (and (boundp 'edebug-active) edebug-active))
|
||||
(not cursor-in-echo-area)
|
||||
(not (eq (selected-window) (minibuffer-window))))
|
||||
(eldoc-message eldoc-last-message)
|
||||
(setq eldoc-last-message nil))))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-idle-summary-mode "")
|
||||
|
||||
|
@ -957,22 +883,22 @@ Call `semantic-symref-hits-in-region' to identify local references."
|
|||
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-idle-scheduler-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-idle-scheduler-mode
|
||||
"Toggle global use of option `semantic-idle-scheduler-mode'.
|
||||
The idle scheduler will automatically reparse buffers in idle time,
|
||||
and then schedule other jobs setup with `semantic-idle-scheduler-add'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
;; When turning off, disable other idle modes.
|
||||
(when (or (and (numberp arg) (< arg 0))
|
||||
(and (null arg) global-semantic-idle-scheduler-mode))
|
||||
(when (null global-semantic-idle-scheduler-mode)
|
||||
(global-semantic-idle-summary-mode -1)
|
||||
(global-semantic-idle-tag-highlight-mode -1)
|
||||
(global-semantic-idle-completions-mode -1))
|
||||
(setq global-semantic-idle-scheduler-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-idle-scheduler-mode arg)))
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-idle-scheduler-mode
|
||||
(if global-semantic-idle-scheduler-mode 1 -1)))
|
||||
|
||||
|
||||
;;; Completion Popup Mode
|
||||
|
|
|
@ -239,27 +239,15 @@ This function pushes tags onto the tag ring."
|
|||
;;
|
||||
;; Tracking minor mode.
|
||||
|
||||
(defcustom global-semantic-mru-bookmark-mode nil
|
||||
"If non-nil, enable `semantic-mru-bookmark-mode' globally.
|
||||
When this mode is enabled, Emacs keeps track of which tags have
|
||||
been edited, and you can re-visit them with \\[semantic-mrub-switch-tags]."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic-util-modes
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-mru-bookmark-mode (if val 1 -1))))
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-mru-bookmark-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-mru-bookmark-mode
|
||||
"Toggle global use of option `semantic-mru-bookmark-mode'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-mru-bookmark-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-mru-bookmark-mode arg)))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'semantic :group 'semantic-modes
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'semantic-util-modes
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-mru-bookmark-mode (if global-semantic-mru-bookmark-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-mru-bookmark-mode-hook nil
|
||||
"*Hook run at the end of function `semantic-mru-bookmark-mode'."
|
||||
|
@ -272,17 +260,18 @@ If ARG is nil, then toggle."
|
|||
km)
|
||||
"Keymap for mru-bookmark minor mode.")
|
||||
|
||||
(defvar semantic-mru-bookmark-mode nil
|
||||
"Non-nil if mru-bookmark minor mode is enabled.
|
||||
Use the command `semantic-mru-bookmark-mode' to change this variable.")
|
||||
(make-variable-buffer-local 'semantic-mru-bookmark-mode)
|
||||
(define-minor-mode semantic-mru-bookmark-mode
|
||||
"Minor mode for tracking tag-based bookmarks automatically.
|
||||
When this mode is enabled, Emacs keeps track of which tags have
|
||||
been edited, and you can re-visit them with \\[semantic-mrub-switch-tags].
|
||||
|
||||
(defun semantic-mru-bookmark-mode-setup ()
|
||||
"Setup option `semantic-mru-bookmark-mode'.
|
||||
The minor mode can be turned on only if semantic feature is available
|
||||
and the current buffer was set up for parsing. When minor mode is
|
||||
enabled parse the current buffer if needed. Return non-nil if the
|
||||
\\{semantic-mru-bookmark-mode-map}
|
||||
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
:keymap semantic-mru-bookmark-mode-map
|
||||
(if semantic-mru-bookmark-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
|
@ -294,47 +283,16 @@ minor mode is enabled."
|
|||
(add-hook 'semantic-edits-new-change-hooks
|
||||
'semantic-mru-bookmark-change-hook-fcn nil t)
|
||||
(add-hook 'semantic-edits-move-change-hooks
|
||||
'semantic-mru-bookmark-change-hook-fcn nil t)
|
||||
)
|
||||
'semantic-mru-bookmark-change-hook-fcn nil t))
|
||||
;; Remove hooks
|
||||
(remove-hook 'semantic-edits-new-change-hooks
|
||||
'semantic-mru-bookmark-change-hook-fcn t)
|
||||
(remove-hook 'semantic-edits-move-change-hooks
|
||||
'semantic-mru-bookmark-change-hook-fcn t)
|
||||
)
|
||||
semantic-mru-bookmark-mode)
|
||||
|
||||
(defun semantic-mru-bookmark-mode (&optional arg)
|
||||
"Minor mode for tracking tag-based bookmarks automatically.
|
||||
When this mode is enabled, Emacs keeps track of which tags have
|
||||
been edited, and you can re-visit them with \\[semantic-mrub-switch-tags].
|
||||
|
||||
\\{semantic-mru-bookmark-mode-map}
|
||||
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-mru-bookmark-mode 0 1))))
|
||||
(setq semantic-mru-bookmark-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-mru-bookmark-mode)))
|
||||
(semantic-mru-bookmark-mode-setup)
|
||||
(run-hooks 'semantic-mru-bookmark-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "mru-bookmark minor mode %sabled"
|
||||
(if semantic-mru-bookmark-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-mru-bookmark-mode)
|
||||
'semantic-mru-bookmark-change-hook-fcn t))
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-mru-bookmark-mode
|
||||
"k"
|
||||
semantic-mru-bookmark-mode-map)
|
||||
"k")
|
||||
|
||||
;;; COMPLETING READ
|
||||
;;
|
||||
|
|
|
@ -112,7 +112,7 @@ Only minor modes that are locally enabled are shown in the mode line."
|
|||
BUFFER is the buffer to not initialize a Semantic minor mode in."
|
||||
nil)
|
||||
|
||||
(defun semantic-add-minor-mode (toggle name &optional keymap)
|
||||
(defun semantic-add-minor-mode (toggle name)
|
||||
"Register a new Semantic minor mode.
|
||||
TOGGLE is a symbol which is the name of a buffer-local variable that
|
||||
is toggled on or off to say whether the minor mode is active or not.
|
||||
|
@ -120,25 +120,12 @@ It is also an interactive function to toggle the mode.
|
|||
|
||||
NAME specifies what will appear in the mode line when the minor mode
|
||||
is active. NAME should be either a string starting with a space, or a
|
||||
symbol whose value is such a string.
|
||||
|
||||
Optional KEYMAP is the keymap for the minor mode that will be added to
|
||||
`minor-mode-map-alist'."
|
||||
symbol whose value is such a string."
|
||||
;; Add a dymmy semantic minor mode to display the status
|
||||
(or (assq 'semantic-minor-modes-status minor-mode-alist)
|
||||
(setq minor-mode-alist (cons (list 'semantic-minor-modes-status
|
||||
'semantic-minor-modes-status)
|
||||
minor-mode-alist)))
|
||||
(if (fboundp 'add-minor-mode)
|
||||
;; Emacs 21 & XEmacs
|
||||
(add-minor-mode toggle "" keymap)
|
||||
;; Emacs 20
|
||||
(or (assq toggle minor-mode-alist)
|
||||
(setq minor-mode-alist (cons (list toggle "") minor-mode-alist)))
|
||||
(or (not keymap)
|
||||
(assq toggle minor-mode-map-alist)
|
||||
(setq minor-mode-map-alist (cons (cons toggle keymap)
|
||||
minor-mode-map-alist))))
|
||||
;; Record how to display this minor mode in the mode line
|
||||
(let ((mm (assq toggle semantic-minor-mode-alist)))
|
||||
(if mm
|
||||
|
@ -157,61 +144,36 @@ Optional KEYMAP is the keymap for the minor mode that will be added to
|
|||
(defun semantic-toggle-minor-mode-globally (mode &optional arg)
|
||||
"Toggle minor mode MODE in every Semantic enabled buffer.
|
||||
Return non-nil if MODE is turned on in every Semantic enabled buffer.
|
||||
If ARG is positive, enable, if it is negative, disable. If ARG is
|
||||
nil, then toggle. Otherwise do nothing. MODE must be a valid minor
|
||||
mode defined in `minor-mode-alist' and must be too an interactive
|
||||
function used to toggle the mode."
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
MODE must be a valid minor mode defined in `minor-mode-alist' and must be
|
||||
too an interactive function used to toggle the mode."
|
||||
;; FIXME: All callers should pass a -1 or +1 argument.
|
||||
(or (and (fboundp mode) (assq mode minor-mode-alist))
|
||||
(error "Semantic minor mode %s not found" mode))
|
||||
(if (not arg)
|
||||
(if (memq mode semantic-init-hook)
|
||||
(setq arg -1)
|
||||
(setq arg 1)))
|
||||
;; Add or remove the MODE toggle function from
|
||||
;; `semantic-init-hook'. Then turn MODE on or off in every
|
||||
;; Semantic enabled buffer.
|
||||
;; Add or remove the MODE toggle function from `semantic-init-hook'.
|
||||
(cond
|
||||
;; Turn off if ARG < 0
|
||||
((< arg 0)
|
||||
(remove-hook 'semantic-init-hook mode)
|
||||
(semantic-map-buffers #'(lambda () (funcall mode -1)))
|
||||
nil)
|
||||
((< arg 0) (remove-hook 'semantic-init-hook mode))
|
||||
;; Turn on if ARG > 0
|
||||
((> arg 0)
|
||||
(add-hook 'semantic-init-hook mode)
|
||||
(semantic-map-buffers #'(lambda () (funcall mode 1)))
|
||||
t)
|
||||
((> arg 0) (add-hook 'semantic-init-hook mode))
|
||||
;; Otherwise just check MODE state
|
||||
(t
|
||||
(memq mode semantic-init-hook))
|
||||
))
|
||||
(error "semantic-toggle-minor-mode-globally: arg should be -1 or 1")))
|
||||
;; Then turn MODE on or off in every Semantic enabled buffer.
|
||||
(semantic-map-buffers #'(lambda () (funcall mode arg))))
|
||||
|
||||
;;;;
|
||||
;;;; Minor mode to highlight areas that a user edits.
|
||||
;;;;
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-highlight-edits-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-highlight-edits-mode
|
||||
"Toggle global use of option `semantic-highlight-edits-mode'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-highlight-edits-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-highlight-edits-mode arg)))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom global-semantic-highlight-edits-mode nil
|
||||
"If non-nil enable global use of variable `semantic-highlight-edits-mode'.
|
||||
When this mode is enabled, changes made to a buffer are highlighted
|
||||
until the buffer is reparsed."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/util-modes
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-highlight-edits-mode (if val 1 -1))))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'semantic :group 'semantic-modes
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-highlight-edits-mode
|
||||
(if global-semantic-highlight-edits-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-highlight-edits-mode-hook nil
|
||||
"Hook run at the end of function `semantic-highlight-edits-mode'."
|
||||
|
@ -238,36 +200,8 @@ This function will set the face property on this overlay."
|
|||
km)
|
||||
"Keymap for highlight-edits minor mode.")
|
||||
|
||||
(defvar semantic-highlight-edits-mode nil
|
||||
"Non-nil if highlight-edits minor mode is enabled.
|
||||
Use the command `semantic-highlight-edits-mode' to change this variable.")
|
||||
(make-variable-buffer-local 'semantic-highlight-edits-mode)
|
||||
|
||||
(defun semantic-highlight-edits-mode-setup ()
|
||||
"Setup option `semantic-highlight-edits-mode'.
|
||||
The minor mode can be turned on only if semantic feature is available
|
||||
and the current buffer was set up for parsing. When minor mode is
|
||||
enabled parse the current buffer if needed. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(if semantic-highlight-edits-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
;; Disable minor mode if semantic stuff not available
|
||||
(setq semantic-highlight-edits-mode nil)
|
||||
(error "Buffer %s was not set up for parsing"
|
||||
(buffer-name)))
|
||||
(semantic-make-local-hook 'semantic-edits-new-change-hooks)
|
||||
(add-hook 'semantic-edits-new-change-hooks
|
||||
'semantic-highlight-edits-new-change-hook-fcn nil t)
|
||||
)
|
||||
;; Remove hooks
|
||||
(remove-hook 'semantic-edits-new-change-hooks
|
||||
'semantic-highlight-edits-new-change-hook-fcn t)
|
||||
)
|
||||
semantic-highlight-edits-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defun semantic-highlight-edits-mode (&optional arg)
|
||||
(define-minor-mode semantic-highlight-edits-mode
|
||||
"Minor mode for highlighting changes made in a buffer.
|
||||
Changes are tracked by semantic so that the incremental parser can work
|
||||
properly.
|
||||
|
@ -277,54 +211,39 @@ With prefix argument ARG, turn on if positive, otherwise off. The
|
|||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-highlight-edits-mode 0 1))))
|
||||
(setq semantic-highlight-edits-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-highlight-edits-mode)))
|
||||
(semantic-highlight-edits-mode-setup)
|
||||
(run-hooks 'semantic-highlight-edits-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "highlight-edits minor mode %sabled"
|
||||
(if semantic-highlight-edits-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-highlight-edits-mode)
|
||||
:keymap semantic-highlight-edits-mode-map
|
||||
(if semantic-highlight-edits-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
;; Disable minor mode if semantic stuff not available
|
||||
(setq semantic-highlight-edits-mode nil)
|
||||
(error "Buffer %s was not set up for parsing"
|
||||
(buffer-name)))
|
||||
(semantic-make-local-hook 'semantic-edits-new-change-hooks)
|
||||
(add-hook 'semantic-edits-new-change-hooks
|
||||
'semantic-highlight-edits-new-change-hook-fcn nil t))
|
||||
;; Remove hooks
|
||||
(remove-hook 'semantic-edits-new-change-hooks
|
||||
'semantic-highlight-edits-new-change-hook-fcn t))
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-highlight-edits-mode
|
||||
"e"
|
||||
semantic-highlight-edits-mode-map)
|
||||
|
||||
"e")
|
||||
|
||||
;;;;
|
||||
;;;; Minor mode to show unmatched-syntax elements
|
||||
;;;;
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-show-unmatched-syntax-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-show-unmatched-syntax-mode
|
||||
"Toggle global use of option `semantic-show-unmatched-syntax-mode'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-show-unmatched-syntax-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-show-unmatched-syntax-mode arg)))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom global-semantic-show-unmatched-syntax-mode nil
|
||||
"If non-nil, enable global use of `semantic-show-unmatched-syntax-mode'.
|
||||
When this mode is enabled, syntax in the current buffer which the
|
||||
semantic parser cannot match is highlighted with a red underline."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/util-modes
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-show-unmatched-syntax-mode (if val 1 -1))))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'semantic :group 'semantic-modes
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'semantic/util-modes
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-show-unmatched-syntax-mode
|
||||
(if global-semantic-show-unmatched-syntax-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-show-unmatched-syntax-mode-hook nil
|
||||
"Hook run at the end of function `semantic-show-unmatched-syntax-mode'."
|
||||
|
@ -432,18 +351,21 @@ Do not search past BOUND if non-nil."
|
|||
km)
|
||||
"Keymap for command `semantic-show-unmatched-syntax-mode'.")
|
||||
|
||||
(defvar semantic-show-unmatched-syntax-mode nil
|
||||
"Non-nil if show-unmatched-syntax minor mode is enabled.
|
||||
Use the command `semantic-show-unmatched-syntax-mode' to change this
|
||||
variable.")
|
||||
(make-variable-buffer-local 'semantic-show-unmatched-syntax-mode)
|
||||
;;;###autoload
|
||||
(define-minor-mode semantic-show-unmatched-syntax-mode
|
||||
"Minor mode to highlight unmatched lexical syntax tokens.
|
||||
When a parser executes, some elements in the buffer may not match any
|
||||
parser rules. These text characters are considered unmatched syntax.
|
||||
Often time, the display of unmatched syntax can expose coding
|
||||
problems before the compiler is run.
|
||||
|
||||
(defun semantic-show-unmatched-syntax-mode-setup ()
|
||||
"Setup the `semantic-show-unmatched-syntax' minor mode.
|
||||
The minor mode can be turned on only if semantic feature is available
|
||||
and the current buffer was set up for parsing. When minor mode is
|
||||
enabled parse the current buffer if needed. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled.
|
||||
|
||||
\\{semantic-show-unmatched-syntax-mode-map}"
|
||||
:keymap semantic-show-unmatched-syntax-mode-map
|
||||
(if semantic-show-unmatched-syntax-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
|
@ -469,42 +391,10 @@ minor mode is enabled."
|
|||
'semantic-clean-token-of-unmatched-syntax t)
|
||||
;; Cleanup unmatched-syntax highlighting
|
||||
(semantic-clean-unmatched-syntax-in-buffer))
|
||||
semantic-show-unmatched-syntax-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defun semantic-show-unmatched-syntax-mode (&optional arg)
|
||||
"Minor mode to highlight unmatched lexical syntax tokens.
|
||||
When a parser executes, some elements in the buffer may not match any
|
||||
parser rules. These text characters are considered unmatched syntax.
|
||||
Often time, the display of unmatched syntax can expose coding
|
||||
problems before the compiler is run.
|
||||
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled.
|
||||
|
||||
\\{semantic-show-unmatched-syntax-mode-map}"
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-show-unmatched-syntax-mode 0 1))))
|
||||
(setq semantic-show-unmatched-syntax-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-show-unmatched-syntax-mode)))
|
||||
(semantic-show-unmatched-syntax-mode-setup)
|
||||
(run-hooks 'semantic-show-unmatched-syntax-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "show-unmatched-syntax minor mode %sabled"
|
||||
(if semantic-show-unmatched-syntax-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-show-unmatched-syntax-mode)
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-show-unmatched-syntax-mode
|
||||
"u"
|
||||
semantic-show-unmatched-syntax-mode-map)
|
||||
"u")
|
||||
|
||||
(defun semantic-show-unmatched-syntax-next ()
|
||||
"Move forward to the next occurrence of unmatched syntax."
|
||||
|
@ -519,27 +409,15 @@ minor mode is enabled.
|
|||
;;;;
|
||||
|
||||
;;;###autoload
|
||||
(defcustom global-semantic-show-parser-state-mode nil
|
||||
"If non-nil enable global use of `semantic-show-parser-state-mode'.
|
||||
When enabled, the current parse state of the current buffer is displayed
|
||||
in the mode line. See `semantic-show-parser-state-marker' for details
|
||||
on what is displayed."
|
||||
:group 'semantic
|
||||
:type 'boolean
|
||||
:require 'semantic/util-modes
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-show-parser-state-mode (if val 1 -1))))
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-show-parser-state-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-show-parser-state-mode
|
||||
"Toggle global use of option `semantic-show-parser-state-mode'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-show-parser-state-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-show-parser-state-mode arg)))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'semantic
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'semantic/util-modes
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-show-parser-state-mode
|
||||
(if global-semantic-show-parser-state-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-show-parser-state-mode-hook nil
|
||||
"Hook run at the end of function `semantic-show-parser-state-mode'."
|
||||
|
@ -551,17 +429,22 @@ If ARG is nil, then toggle."
|
|||
km)
|
||||
"Keymap for show-parser-state minor mode.")
|
||||
|
||||
(defvar semantic-show-parser-state-mode nil
|
||||
"Non-nil if show-parser-state minor mode is enabled.
|
||||
Use the command `semantic-show-parser-state-mode' to change this variable.")
|
||||
(make-variable-buffer-local 'semantic-show-parser-state-mode)
|
||||
|
||||
(defun semantic-show-parser-state-mode-setup ()
|
||||
"Setup option `semantic-show-parser-state-mode'.
|
||||
The minor mode can be turned on only if semantic feature is available
|
||||
and the current buffer was set up for parsing. When minor mode is
|
||||
enabled parse the current buffer if needed. Return non-nil if the
|
||||
;;;###autoload
|
||||
(define-minor-mode semantic-show-parser-state-mode
|
||||
"Minor mode for displaying parser cache state in the modeline.
|
||||
The cache can be in one of three states. They are
|
||||
Up to date, Partial reparse needed, and Full reparse needed.
|
||||
The state is indicated in the modeline with the following characters:
|
||||
`-' -> The cache is up to date.
|
||||
`!' -> The cache requires a full update.
|
||||
`~' -> The cache needs to be incrementally parsed.
|
||||
`%' -> The cache is not currently parseable.
|
||||
`@' -> Auto-parse in progress (not set here.)
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
:keymap semantic-show-parser-state-mode-map
|
||||
(if semantic-show-parser-state-mode
|
||||
(if (not (and (featurep 'semantic) (semantic-active-p)))
|
||||
(progn
|
||||
|
@ -603,8 +486,7 @@ minor mode is enabled."
|
|||
'semantic-show-parser-state-auto-marker nil t)
|
||||
(semantic-make-local-hook 'semantic-after-idle-scheduler-reparse-hook)
|
||||
(add-hook 'semantic-after-idle-scheduler-reparse-hook
|
||||
'semantic-show-parser-state-marker nil t)
|
||||
)
|
||||
'semantic-show-parser-state-marker nil t))
|
||||
;; Remove parts of mode line
|
||||
(setq mode-line-modified
|
||||
(delq 'semantic-show-parser-state-string mode-line-modified))
|
||||
|
@ -626,45 +508,11 @@ minor mode is enabled."
|
|||
(remove-hook 'semantic-before-idle-scheduler-reparse-hook
|
||||
'semantic-show-parser-state-auto-marker t)
|
||||
(remove-hook 'semantic-after-idle-scheduler-reparse-hook
|
||||
'semantic-show-parser-state-marker t)
|
||||
)
|
||||
semantic-show-parser-state-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defun semantic-show-parser-state-mode (&optional arg)
|
||||
"Minor mode for displaying parser cache state in the modeline.
|
||||
The cache can be in one of three states. They are
|
||||
Up to date, Partial reparse needed, and Full reparse needed.
|
||||
The state is indicated in the modeline with the following characters:
|
||||
`-' -> The cache is up to date.
|
||||
`!' -> The cache requires a full update.
|
||||
`~' -> The cache needs to be incrementally parsed.
|
||||
`%' -> The cache is not currently parseable.
|
||||
`@' -> Auto-parse in progress (not set here.)
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-show-parser-state-mode 0 1))))
|
||||
(setq semantic-show-parser-state-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-show-parser-state-mode)))
|
||||
(semantic-show-parser-state-mode-setup)
|
||||
(run-hooks 'semantic-show-parser-state-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "show-parser-state minor mode %sabled"
|
||||
(if semantic-show-parser-state-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-show-parser-state-mode)
|
||||
'semantic-show-parser-state-marker t))
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(semantic-add-minor-mode 'semantic-show-parser-state-mode
|
||||
""
|
||||
semantic-show-parser-state-mode-map)
|
||||
"")
|
||||
|
||||
(defvar semantic-show-parser-state-string nil
|
||||
"String showing the parser state for this buffer.
|
||||
|
@ -710,30 +558,14 @@ to indicate a parse in progress."
|
|||
;;;;
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-stickyfunc-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-stickyfunc-mode
|
||||
"Toggle global use of option `semantic-stickyfunc-mode'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-stickyfunc-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-stickyfunc-mode arg)))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom global-semantic-stickyfunc-mode nil
|
||||
"If non-nil, enable global use of `semantic-stickyfunc-mode'.
|
||||
This minor mode only works for Emacs 21 or later.
|
||||
When enabled, the header line is enabled, and the first line
|
||||
of the current function or method is displayed in it.
|
||||
This makes it appear that the first line of that tag is
|
||||
`sticky' to the top of the window."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/util-modes
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-stickyfunc-mode (if val 1 -1))))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'semantic :group 'semantic-modes
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'semantic/util-modes
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-stickyfunc-mode (if global-semantic-stickyfunc-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-stickyfunc-mode-hook nil
|
||||
"Hook run at the end of function `semantic-stickyfunc-mode'."
|
||||
|
@ -781,11 +613,6 @@ This makes it appear that the first line of that tag is
|
|||
(describe-function 'semantic-stickyfunc-mode)) t])
|
||||
)
|
||||
|
||||
(defvar semantic-stickyfunc-mode nil
|
||||
"Non-nil if stickyfunc minor mode is enabled.
|
||||
Use the command `semantic-stickyfunc-mode' to change this variable.")
|
||||
(make-variable-buffer-local 'semantic-stickyfunc-mode)
|
||||
|
||||
(defcustom semantic-stickyfunc-indent-string
|
||||
(if (and window-system (not (featurep 'xemacs)))
|
||||
(concat
|
||||
|
@ -870,11 +697,21 @@ when it lands in the sticky line."
|
|||
(t nil))
|
||||
"The header line format used by stickyfunc mode.")
|
||||
|
||||
(defun semantic-stickyfunc-mode-setup ()
|
||||
"Setup option `semantic-stickyfunc-mode'.
|
||||
For semantic enabled buffers, make the function declaration for the top most
|
||||
function \"sticky\". This is accomplished by putting the first line of
|
||||
text for that function in the header line."
|
||||
;;;###autoload
|
||||
(define-minor-mode semantic-stickyfunc-mode
|
||||
"Minor mode to show the title of a tag in the header line.
|
||||
Enables/disables making the header line of functions sticky.
|
||||
A function (or other tag class specified by
|
||||
`semantic-stickyfunc-sticky-classes') has a header line, meaning the
|
||||
first line which describes the rest of the construct. This first
|
||||
line is what is displayed in the header line.
|
||||
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
;; Don't need indicator. It's quite visible
|
||||
:keymap semantic-stickyfunc-mode-map
|
||||
(if semantic-stickyfunc-mode
|
||||
(progn
|
||||
(unless (and (featurep 'semantic) (semantic-active-p))
|
||||
|
@ -892,8 +729,7 @@ text for that function in the header line."
|
|||
semantic-stickyfunc-header-line-format)))
|
||||
(set (make-local-variable 'semantic-stickyfunc-old-hlf)
|
||||
header-line-format))
|
||||
(setq header-line-format semantic-stickyfunc-header-line-format)
|
||||
)
|
||||
(setq header-line-format semantic-stickyfunc-header-line-format))
|
||||
;; Disable sticky func mode
|
||||
;; Restore previous buffer local value of header line format if
|
||||
;; the current one is the sticky func one.
|
||||
|
@ -902,37 +738,7 @@ text for that function in the header line."
|
|||
(when (local-variable-p 'semantic-stickyfunc-old-hlf (current-buffer))
|
||||
(setq header-line-format semantic-stickyfunc-old-hlf)
|
||||
(kill-local-variable 'semantic-stickyfunc-old-hlf))))
|
||||
semantic-stickyfunc-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defun semantic-stickyfunc-mode (&optional arg)
|
||||
"Minor mode to show the title of a tag in the header line.
|
||||
Enables/disables making the header line of functions sticky.
|
||||
A function (or other tag class specified by
|
||||
`semantic-stickyfunc-sticky-classes') has a header line, meaning the
|
||||
first line which describes the rest of the construct. This first
|
||||
line is what is displayed in the header line.
|
||||
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-stickyfunc-mode 0 1))))
|
||||
(setq semantic-stickyfunc-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-stickyfunc-mode)))
|
||||
(semantic-stickyfunc-mode-setup)
|
||||
(run-hooks 'semantic-stickyfunc-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "Stickyfunc minor mode %sabled"
|
||||
(if semantic-stickyfunc-mode "en" "dis")))
|
||||
(semantic-mode-line-update)
|
||||
semantic-stickyfunc-mode)
|
||||
(semantic-mode-line-update))
|
||||
|
||||
(defvar semantic-stickyfunc-sticky-classes
|
||||
'(function type)
|
||||
|
@ -1012,8 +818,7 @@ Argument EVENT describes the event that caused this function to be called."
|
|||
|
||||
|
||||
(semantic-add-minor-mode 'semantic-stickyfunc-mode
|
||||
"" ;; Don't need indicator. It's quite visible
|
||||
semantic-stickyfunc-mode-map)
|
||||
"") ;; Don't need indicator. It's quite visible
|
||||
|
||||
|
||||
|
||||
|
@ -1025,26 +830,15 @@ Argument EVENT describes the event that caused this function to be called."
|
|||
;; from the tag going off the top of the screen.
|
||||
|
||||
;;;###autoload
|
||||
(defun global-semantic-highlight-func-mode (&optional arg)
|
||||
(define-minor-mode global-semantic-highlight-func-mode
|
||||
"Toggle global use of option `semantic-highlight-func-mode'.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-semantic-highlight-func-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-highlight-func-mode arg)))
|
||||
|
||||
;;;###autoload
|
||||
(defcustom global-semantic-highlight-func-mode nil
|
||||
"If non-nil, enable global use of `semantic-highlight-func-mode'.
|
||||
When enabled, the first line of the current tag is highlighted."
|
||||
:group 'semantic
|
||||
:group 'semantic-modes
|
||||
:type 'boolean
|
||||
:require 'semantic/util-modes
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-semantic-highlight-func-mode (if val 1 -1))))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'semantic :group 'semantic-modes
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'semantic/util-modes
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'semantic-highlight-func-mode
|
||||
(if global-semantic-highlight-func-mode 1 -1)))
|
||||
|
||||
(defcustom semantic-highlight-func-mode-hook nil
|
||||
"Hook run at the end of function `semantic-highlight-func-mode'."
|
||||
|
@ -1108,11 +902,6 @@ Argument EVENT describes the event that caused this function to be called."
|
|||
)
|
||||
(select-window startwin)))
|
||||
|
||||
(defvar semantic-highlight-func-mode nil
|
||||
"Non-nil if highlight-func minor mode is enabled.
|
||||
Use the command `semantic-highlight-func-mode' to change this variable.")
|
||||
(make-variable-buffer-local 'semantic-highlight-func-mode)
|
||||
|
||||
(defvar semantic-highlight-func-ct-overlay nil
|
||||
"Overlay used to highlight the tag the cursor is in.")
|
||||
(make-variable-buffer-local 'semantic-highlight-func-ct-overlay)
|
||||
|
@ -1126,28 +915,8 @@ Use the command `semantic-highlight-func-mode' to change this variable.")
|
|||
"Face used to show the top of current function."
|
||||
:group 'semantic-faces)
|
||||
|
||||
|
||||
(defun semantic-highlight-func-mode-setup ()
|
||||
"Setup option `semantic-highlight-func-mode'.
|
||||
For Semantic enabled buffers, highlight the first line of the
|
||||
current tag declaration."
|
||||
(if semantic-highlight-func-mode
|
||||
(progn
|
||||
(unless (and (featurep 'semantic) (semantic-active-p))
|
||||
;; Disable minor mode if semantic stuff not available
|
||||
(setq semantic-highlight-func-mode nil)
|
||||
(error "Buffer %s was not set up for parsing" (buffer-name)))
|
||||
;; Setup our hook
|
||||
(add-hook 'post-command-hook 'semantic-highlight-func-highlight-current-tag nil t)
|
||||
)
|
||||
;; Disable highlight func mode
|
||||
(remove-hook 'post-command-hook 'semantic-highlight-func-highlight-current-tag t)
|
||||
(semantic-highlight-func-highlight-current-tag t)
|
||||
)
|
||||
semantic-highlight-func-mode)
|
||||
|
||||
;;;###autoload
|
||||
(defun semantic-highlight-func-mode (&optional arg)
|
||||
(define-minor-mode semantic-highlight-func-mode
|
||||
"Minor mode to highlight the first line of the current tag.
|
||||
Enables/disables making the current function's first line light up.
|
||||
A function (or other tag class specified by
|
||||
|
@ -1162,21 +931,20 @@ With prefix argument ARG, turn on if positive, otherwise off. The
|
|||
minor mode can be turned on only if semantic feature is available and
|
||||
the current buffer was set up for parsing. Return non-nil if the
|
||||
minor mode is enabled."
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if semantic-highlight-func-mode 0 1))))
|
||||
(setq semantic-highlight-func-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not semantic-highlight-func-mode)))
|
||||
(semantic-highlight-func-mode-setup)
|
||||
(run-hooks 'semantic-highlight-func-mode-hook)
|
||||
(if (called-interactively-p 'interactive)
|
||||
(message "Highlight-Func minor mode %sabled"
|
||||
(if semantic-highlight-func-mode "en" "dis")))
|
||||
semantic-highlight-func-mode)
|
||||
:lighter nil ;; Don't need indicator. It's quite visible.
|
||||
(if semantic-highlight-func-mode
|
||||
(progn
|
||||
(unless (and (featurep 'semantic) (semantic-active-p))
|
||||
;; Disable minor mode if semantic stuff not available
|
||||
(setq semantic-highlight-func-mode nil)
|
||||
(error "Buffer %s was not set up for parsing" (buffer-name)))
|
||||
;; Setup our hook
|
||||
(add-hook 'post-command-hook
|
||||
'semantic-highlight-func-highlight-current-tag nil t))
|
||||
;; Disable highlight func mode
|
||||
(remove-hook 'post-command-hook
|
||||
'semantic-highlight-func-highlight-current-tag t)
|
||||
(semantic-highlight-func-highlight-current-tag t)))
|
||||
|
||||
(defun semantic-highlight-func-highlight-current-tag (&optional disable)
|
||||
"Highlight the current tag under point.
|
||||
|
@ -1223,8 +991,7 @@ function was called, move the overlay."
|
|||
nil)
|
||||
|
||||
(semantic-add-minor-mode 'semantic-highlight-func-mode
|
||||
"" ;; Don't need indicator. It's quite visible
|
||||
nil)
|
||||
"") ;; Don't need indicator. It's quite visible
|
||||
|
||||
(provide 'semantic/util-modes)
|
||||
|
||||
|
|
|
@ -37,19 +37,6 @@
|
|||
|
||||
;;; Code:
|
||||
|
||||
(defcustom global-srecode-minor-mode nil
|
||||
"Non-nil in buffers with Semantic Recoder macro keybindings."
|
||||
:group 'srecode
|
||||
:type 'boolean
|
||||
:require 'srecode/mode
|
||||
:initialize 'custom-initialize-default
|
||||
:set (lambda (sym val)
|
||||
(global-srecode-minor-mode (if val 1 -1))))
|
||||
|
||||
(defvar srecode-minor-mode nil
|
||||
"Non-nil in buffers with Semantic Recoder macro keybindings.")
|
||||
(make-variable-buffer-local 'srecode-minor-mode)
|
||||
|
||||
(defcustom srecode-minor-mode-hook nil
|
||||
"Hook run at the end of the function `srecode-minor-mode'."
|
||||
:group 'srecode
|
||||
|
@ -150,7 +137,7 @@
|
|||
"Keymap for srecode minor mode.")
|
||||
|
||||
;;;###autoload
|
||||
(defun srecode-minor-mode (&optional arg)
|
||||
(define-minor-mode srecode-minor-mode
|
||||
"Toggle srecode minor mode.
|
||||
With prefix argument ARG, turn on if positive, otherwise off. The
|
||||
minor mode can be turned on only if semantic feature is available and
|
||||
|
@ -158,16 +145,7 @@ the current buffer was set up for parsing. Return non-nil if the
|
|||
minor mode is enabled.
|
||||
|
||||
\\{srecode-mode-map}"
|
||||
(interactive
|
||||
(list (or current-prefix-arg
|
||||
(if srecode-minor-mode 0 1))))
|
||||
;; Flip the bits.
|
||||
(setq srecode-minor-mode
|
||||
(if arg
|
||||
(>
|
||||
(prefix-numeric-value arg)
|
||||
0)
|
||||
(not srecode-minor-mode)))
|
||||
:keymap srecode-mode-map
|
||||
;; If we are turning things on, make sure we have templates for
|
||||
;; this mode first.
|
||||
(when srecode-minor-mode
|
||||
|
@ -176,25 +154,20 @@ minor mode is enabled.
|
|||
(mapcar (lambda (map)
|
||||
(srecode-map-entries-for-mode map major-mode))
|
||||
(srecode-get-maps))))
|
||||
(setq srecode-minor-mode nil))
|
||||
)
|
||||
;; Run hooks if we are turning this on.
|
||||
(when srecode-minor-mode
|
||||
(run-hooks 'srecode-minor-mode-hook))
|
||||
srecode-minor-mode)
|
||||
(setq srecode-minor-mode nil))))
|
||||
|
||||
;;;###autoload
|
||||
(defun global-srecode-minor-mode (&optional arg)
|
||||
(define-minor-mode global-srecode-minor-mode
|
||||
"Toggle global use of srecode minor mode.
|
||||
If ARG is positive, enable, if it is negative, disable.
|
||||
If ARG is nil, then toggle."
|
||||
(interactive "P")
|
||||
(setq global-srecode-minor-mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'srecode-minor-mode arg)))
|
||||
If ARG is positive or nil, enable, if it is negative, disable."
|
||||
:global t :group 'srecode
|
||||
;; Not needed because it's autoloaded instead.
|
||||
;; :require 'srecode/mode
|
||||
(semantic-toggle-minor-mode-globally
|
||||
'srecode-minor-mode (if global-srecode-minor-mode 1 -1)))
|
||||
|
||||
;; Use the semantic minor mode magic stuff.
|
||||
(semantic-add-minor-mode 'srecode-minor-mode "" srecode-mode-map)
|
||||
(semantic-add-minor-mode 'srecode-minor-mode "")
|
||||
|
||||
;;; Menu Filters
|
||||
;;
|
||||
|
|
Loading…
Add table
Reference in a new issue