Semantic comes with a wide range of minor-modes which use various features of semantic.  These modes vary widly in utility.

There are some core modes that are required for smooth operations. Some of these are discussed in other chapters, such as Idle Scheduler, and semanticdb

Code Helpers
============

Code Helpers are minor modes that augment basic Emacs behavior in ways that can assist in programming Semantic supported langauges.

Senator is another mode which can assist in programming senator.

Development Modes
=================

Sticky Function Headers
-----------------------

 -- Command: 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 Emacs 21 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.

 -- Variable: semantic-stickyfunc-sticky-classes
     List of tag classes which sticky func will display in the header line.

Tag Decoration Mode
-------------------

Decoration mode is a harness that allows any parsed tag to be highlighted based on some arbitrary feature of that tag.  Decoration mode is actually a full harness for providing any kind of decoration on a tag based on a prefix function.

 -- Command: 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.

To enable or disable specific decorations, you can use this function:

 -- Command: semantic-toggle-decoration-style name &optional arg
     Turn on/off the decoration style with NAME. Decorations are specified in semantic-decoration-styles. With prefix argument ARG, turn on if positive, otherwise off. Return non-nil if the decoration style is enabled.

You can create new types of decorations using the following function:

 -- Function: define-semantic-decoration-style name doc &rest flags
     Define a new decoration style with NAME. DOC is a documentation string describing the decoration style NAME. It is appended to auto-generated doc strings. An Optional list of FLAGS can also be specified.  Flags are: :enabled <value>  - specify the default enabled value for NAME.

     This defines two new overload functions respectively called NAME-p and NAME-highlight, for which you must provide a default implementation in respectively the functions NAME-p-default and NAME-highlight-default.  Those functions are passed a tag.  NAME-p must return non-nil to indicate that the tag should be decorated by NAME-highlight.

     To put primary decorations on a tag NAME-highlight must use functions like semantic-set-tag-face, semantic-set-tag-intangible, etc., found in the semantic-decorate library.

     To add other kind of decorations on a tag, NAME-highlight must use semantic-decorate-tag, and other functions of the semantic decoration API found in this library.

MRU Bookmarks Mode
------------------

MRU stands for Most Recently Used.  Semantic MRU Bookmarks track the tags you edit and maintain a ring of things you've been working on. You can then switch back to tags you've worked on recently by name.

 -- Command: semantic-mru-bookmark-mode &optional arg
     Minor mode for tracking tag-based bookmarks automatically. Tag based bookmarks a tracked based on editing and viewing habits and can then be navigated via the MRU bookmark keymap.

     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.

Once this mode is enbled, any edit, or mark setting will add the current tag to your MRU bookmark ring.

C-x B
     This keysequence is like switch-to-buffer, but uses a capital B instead of lower case.  This lets you type in a tag name, or use M-p and M-n to cycle through the bookmark list in MRU order.

Highlight Edits Mode
--------------------

Highlight edits mode is useful mostly for debugging the incremental parser.  As you change text, that effected text is highlighted, and you can visual predict what actions the incremental parser will need to make.

 -- Command: semantic-highlight-edits-mode &optional arg
     Minor mode for highlighting changes made in a buffer. Changes are tracked by semantic so that the incremental parser can work properly. 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.

 -- Face: semantic-highlight-edits-face
     Face used to show dirty tokens in semantic-highlight-edits-mode.

Parser State
------------

 -- Command: 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 reprase 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 buffer is not lexically 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.

Unmatched Syntax Highlighting
-----------------------------

 -- Command: semantic-show-unmatched-syntax-mode &optional arg
     Minor mode to highlight unmatched 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.

     C-c , `		semantic-show-unmatched-syntax-next

 -- Option: semantic-unmatched-syntax-face
     Face used to show unmatched-syntax in. The face is used in  semantic-show-unmatched-syntax-mode.