summaryrefslogtreecommitdiffstats
path: root/.vim/doc/csupport.txt
diff options
context:
space:
mode:
authorbnewbold <bnewbold@robocracy.org>2010-03-25 06:29:54 -0400
committerbnewbold <bnewbold@robocracy.org>2010-03-25 06:29:54 -0400
commit0bf28391b00b1e28c44324bcd7647df416314667 (patch)
tree6dda90e70218861975deb408eb21b2ff00eb5ef6 /.vim/doc/csupport.txt
parent564a2d0d39c8e1fb79ee800973848b2442833356 (diff)
downloadopenwrt-repro-0bf28391b00b1e28c44324bcd7647df416314667.tar.gz
openwrt-repro-0bf28391b00b1e28c44324bcd7647df416314667.zip
lots and lots of vim stuff for c development...
Diffstat (limited to '.vim/doc/csupport.txt')
-rw-r--r--.vim/doc/csupport.txt2152
1 files changed, 2152 insertions, 0 deletions
diff --git a/.vim/doc/csupport.txt b/.vim/doc/csupport.txt
new file mode 100644
index 0000000..615279e
--- /dev/null
+++ b/.vim/doc/csupport.txt
@@ -0,0 +1,2152 @@
+*csupport.txt* C/C++ Support February 05 2010
+
+C/C++ Support *c-support* *csupport*
+ Plugin version 5.10
+ for Vim version 7.0 and above
+ Fritz Mehner <mehner@fh-swf.de>
+
+C/C++-IDE for Vim/gVim. It is written to considerably speed up writing code in
+a consistent style. This is done by inserting complete statements,idioms,
+code snippets, templates, and comments. Syntax checking, compiling, running
+a program, running a code checker or a reformatter can be done with a
+keystroke.
+
+ 1. Usage |csupport-usage-gvim|
+ 1.1 Menu 'Comments' |csupport-comm|
+ 1.1.1 Append aligned comments |csupport-comm-aligned|
+ 1.1.2 Adjust end-of-line comments |csupport-comm-realign|
+ 1.1.3 Code to comment |csupport-code-to-comm|
+ 1.1.4 Comment to code |csupport-comm-to-code|
+ 1.1.5 Frame comments, file header, ... |csupport-comm-frame|
+ 1.1.6 File section comments .. |csupport-comm-sections|
+ 1.1.7 Keyword comment, special comment |csupport-comm-keyword|
+ 1.1.8 Tags (plugin) |csupport-comm-tags|
+ 1.1.9 Date and date+time |csupport-comm-date|
+ 1.1.10 C to C++ comments and vice versa |csupport-comm-c-cpp|
+ 1.2 Menu 'Statements' |csupport-stat|
+ 1.2.1 Normal mode, insert mode. |csupport-stat-normal-mode|
+ 1.2.2 Visual mode. |csupport-stat-visual-mode|
+ 1.3 Menu 'Preprocessor' |csupport-prep|
+ 1.3.1 Normal mode, insert mode. |csupport-prep-normal-mode|
+ 1.3.2 Visual mode. |csupport-prep-visual-mode|
+ 1.3.3 Block out code with #if 0 .. #endif |csupport-prep-if0|
+ 1.3.4 Ex-commands |csupport-prep-ex|
+ 1.4 Menu 'Idioms' |csupport-idioms|
+ 1.4.1 Item 'function' |csupport-idioms-function|
+ 1.4.2 for-loop control |csupport-idioms-for-loop|
+ 1.4.3 Item 'open input file' |csupport-idioms-input|
+ 1.4.4 Item 'open output file' |csupport-idioms-output|
+ 1.5 Menu 'Snippets' |csupport-snippets|
+ 1.5.1 Code snippets |csupport-snippets|
+ 1.5.2 Picking up prototypes |csupport-proto|
+ 1.5.3 Code templates |csupport-templates-menu|
+ 1.6 Menu 'C++' |csupport-c++|
+ 1.6.1 Normal mode, insert mode. |csupport-c++-normal-mode|
+ 1.6.2 Visual mode. |csupport-c++-visual-mode|
+ 1.6.3 Method implementation |csupport-c++-method-impl|
+ 1.6.4 Ex commands |csupport-c++-ex|
+ 1.7 Menu 'Run' |csupport-run|
+ 1.7.1 Minimal make functionality |csupport-run-buffer|
+ 1.7.2 Command line arguments |csupport-run-cmdline-args|
+ 1.7.3 Run make |csupport-run-make|
+ 1.7.4 Command line arguments for make |csupport-run-make-args|
+ 1.7.5 Splint |csupport-run-splint|
+ 1.7.6 CodeCheck |csupport-run-codecheck|
+ 1.7.7 Indent |csupport-run-indent|
+ 1.7.8 Hardcopy |csupport-run-hardcopy|
+ 1.7.9 Rebuild templates |csupport-run-templates|
+ 1.7.10 Xterm size |csupport-run-xterm|
+ 1.7.11 Output redirection |csupport-run-output|
+ 1.8 Help |csupport-help|
+
+ 2. Usage without GUI |csupport-usage-vim|
+ 3. Hotkeys |csupport-hotkeys|
+ 4. Customization and configuration |csupport-custom|
+ 4.1 Global variables |csupport-custom-glob-vars|
+ 4.2 The root menu |csupport-custom-root-menu|
+ 4.3 System-wide installation |csupport-system-wide|
+ 5. Template files and tags |csupport-templates|
+ 5.1 Template files |csupport-templates-files|
+ 5.2 Macros |csupport-templates-macros|
+ 5.2.1 User defined formats for date and time |csupport-templates-date|
+ 5.3 Templates |csupport-templates-names|
+ 5.3.1 Template names |csupport-templates-names|
+ 5.3.2 Template definition |csupport-templates-definition|
+ 5.3.3 Template expansion |csupport-templates-expansion|
+ 5.3.4 The macros <+text+> etc. |csupport-templates-jump|
+ 5.3.5 Command Ctrl-j |csupport-Ctrl-j|
+ 5.4 Switching between template sets |csupport-templates-sets|
+ 5.5 Binding a style to a file extension |csupport-templates-bind|
+ 6. C/C++ Dictionaries |csupport-dictionary|
+ 7. Extend ctags |csupport-ctags|
+ 7.1 Make and qmake |csupport-ctags-make|
+ 7.2 Templates |csupport-ctags-templates|
+ 8. Folding |csupport-folding|
+ 9 Additional Mappings |csupport-ad-mappings|
+ 10. Windows particularities |csupport-windows|
+ 11. Additional tips |csupport-tips|
+ 12. Troubleshooting |csupport-troubleshooting|
+ 13. Release Notes /Change Log |csupport-release-notes|
+
+ How to add this help file to Vim's help |add-local-help|
+
+
+==============================================================================
+1. USAGE WITH GUI (gVim) *csupport-usage-gvim*
+==============================================================================
+
+If the root menu 'C/C++' is not visible call it with the item "Load C Support"
+from the standard Tools-menu.
+The item "Load C Support" can also be used to unload the C/C++-root menu.
+
+Nearly all menu entries insert code snippets or comments. All these stuff is
+taken from template files and can be changed by the user to meet his
+requirements (see|csupport-templates|).
+
+------------------------------------------------------------------------------
+1.1 MENU 'Comments' *csupport-comm*
+------------------------------------------------------------------------------
+
+1.1.1 APPEND ALIGNED COMMENTS TO CONSECUTIVE LINES *csupport-comm-aligned*
+
+In NORMAL MODE the menu items 'end-of-line comment' will append an comment to
+the current line.
+In VISUAL MODE these item will append aligned comments to all marked lines.
+Marking the first 4 lines
+
+ print_double_array ( double array[],
+ int n,
+ int columns,
+ char* arrayname
+ )
+
+and choosing 'end-of-line com. /**/' will yield.
+
+ print_double_array ( double array[], /* */
+ int n, /* */
+ int columns, /* */
+ char* arrayname /* */
+ ) /* */
+
+If one ore more lines go beyond the starting column (s.below) the comments
+will start at the 2. column after the longest line. The cursor will be
+positioned inside the first comment.
+
+The default starting column is 49 ( = (multiple of 2,4, or 8) + 1 ). This can
+be changed by setting a global variable in the file ~/.vimrc , e.g. :
+
+ let g:C_LineEndCommColDefault = 45
+
+The starting column can also be set by the menu item
+'Comments->set end-of-line com. col' . Just position the cursor in an
+arbitrary column (column number is shown in the Vim status line) and choose
+this menu item. This setting is buffer related.
+
+If the cursor was at the end of a line you will be asked for a column number
+because this position is most likely not the desired starting column.
+Your choice will be confirmed.
+
+------------------------------------------------------------------------------
+
+1.1.2 ADJUST END-OF-LINE COMMENTS *csupport-comm-realign*
+
+After some changes end-of-line comments may be no longer aligned:
+
+ print_double_array ( double array[], /* */
+ long int n, /* */
+ unsigned int columns, /* */
+ char* a_name /* */
+ ) /* */
+
+Realignment can be achieved with the menu item 'adjust end-of-line com.' In
+normal mode the comment (if any) in the current line will be aligned to the
+end-of-line comment column (see above) if possible. In visual mode the
+comments in the marked block will be aligned:
+
+ print_double_array ( double array[], /* */
+ long int n, /* */
+ unsigned int columns, /* */
+ char* a_name /* */
+ ) /* */
+
+The realignment will not be done for comments with nothing else than leading
+whitespaces. These comments are usually captions:
+
+ max = other.max; /* the maximum value */
+ len = other.len; /* the length */
+ /* ===== the next section ===== */
+ pos = (x+y+z)/3.0; /* the next position */
+
+After the alignment we have:
+
+ max = other.max; /* the maximum value */
+ len = other.len; /* the length */
+ /* ===== the next section ===== */
+ pos = (x+y+z)/3.0; /* the next position */
+
+------------------------------------------------------------------------------
+
+1.1.3 CODE TO COMMENT *csupport-code-to-comm*
+
+The marked block
+
+xxxxxxxx
+xxxxxxxx
+xxxxxxxx
+
+will be changed by the menu item 'code->comment /**/' into the multiline
+comment (all (partially) marked lines):
+
+/* xxxxxxxx
+ * xxxxxxxx
+ * xxxxxxxx
+ */
+
+The marked block will be changed by the menu item 'code->comment //' into the
+multiline comment
+
+//xxxxxxxx
+//xxxxxxxx
+//xxxxxxxx
+
+The menu items works also for a single line. A single line needs not to be
+marked.
+
+------------------------------------------------------------------------------
+
+1.1.4 COMMENT TO CODE *csupport-comm-to-code*
+
+If one (or more) complete comment (i.e. all lines belonging to the comment) is
+marked the item 'comment->code' will uncomment it. If the following lines
+are marked
+
+ * printf ("\n");
+ */
+
+ printf ("\n");
+
+ // printf ("\n");
+ //
+
+ /*
+ * printf ("\n");
+ */
+
+uncommenting will yield
+
+ * printf ("\n");
+ */
+
+ printf ("\n");
+
+ printf ("\n");
+
+
+
+ printf ("\n");
+
+The first 2 lines are only a part of a C-comment and remain unchanged.
+A C-comment can start with /* , /** or /*! .
+
+The menu item works also for a single line with a leading // . A single line
+needs not to be marked.
+
+------------------------------------------------------------------------------
+
+1.1.5 FRAME COMMENTS, FILE HEADER, ... *csupport-comm-frame*
+
+Frame comments, file header comments and function, methods, class descriptions
+are read as templates from the appropriate files (see |csupport-templates|).
+
+There are to file description templates (menu items 'file description (impl.)'
+and 'file description (header)', see also |csupport-templates|):
+
+ comment.file-description : files *.c *.cc *.cp *.cxx *.cpp *.CPP *.c++
+ *.C *.i *.ii
+
+ comment.file-description-header : everything else with filetype 'c' or 'cpp'
+
+The appropriate template will also be included into a new file. The plugin
+decides on the basis of the file extension. The default is shown above. You
+can change the list by setting a global variable in '~/.vimrc':
+
+ au BufRead,BufNewFile *.XYZ set filetype=c
+
+ let g:C_SourceCodeExtensions = 'XYZ c cc cp cxx cpp CPP c++ C i ii'
+
+A new file named 'test.XYZ' will now be considered a C implementation file.
+
+------------------------------------------------------------------------------
+
+1.1.6 FILE SECTION COMMENTS *csupport-comm-sections*
+
+File section comments can be uses to separate typical C- and H-file sections
+with comments of similar appearance, e.g.
+
+/* ##### HEADER FILE INCLUDES ################################################### */
+
+/* ##### MACROS - LOCAL TO THIS SOURCE FILE ################################### */
+
+/* ##### TYPE DEFINITIONS - LOCAL TO THIS SOURCE FILE ######################### */
+
+These section comments can also be inserted using the hotkey \ccs for C/C++
+files, or \chs for H-files. These hotkeys will start the command
+'CFileSection' or 'HFileSection' on the command line:
+
+ :CFileSection
+ :HFileSection
+
+Now type a <Tab> to start the selection menu to choose from.
+
+------------------------------------------------------------------------------
+
+1.1.7 KEYWORD COMMENT, SPECIAL COMMENT *csupport-comm-keyword*
+
+Keword comments are end-of-line comments:
+
+ /* :<keyword>:<date+time>:<author reference>: <arbitrary comment text> */
+
+Keywords are
+
+ BUG COMPILER TODO TRICKY WARNING WORKAROUND user-defined-keyword
+
+These are preliminary comments to document places where works will be resumed
+shortly. They are usually not meant for the final documentation. These
+comments are easily found by searching for the keyword.
+The keyword comments can also be inserted using the hotkey \ckc . This hotkey
+starts the command 'KeywordComment' on the command line:
+
+ :KeywordComment
+
+Now type a <Tab> to start the selection menu to choose from.
+
+Special comments are occasionally used to mark special features of a code
+construct (e.g. a fall through cases in a switch statement, an empty loop):
+
+ /* EMPTY */
+ /* NOT REACHED */
+ /* REMAINS TO BE IMPLEMENTED */
+ ....
+
+The special comments can also be inserted using the hotkey \csc . This hotkey
+starts the command 'SpecialComment' on the command line:
+
+ :SpecialComment
+
+Now type a <Tab> to start the selection menu to choose from.
+
+------------------------------------------------------------------------------
+
+1.1.8 TAGS (PLUGIN) *csupport-comm-tags*
+
+The submenu 'tags (plugin)' let you insert the predefined macros from the
+template system (see|csupport-templates-macros|). In visual mode the marked
+string will be replaced by the macro.
+
+------------------------------------------------------------------------------
+
+1.1.9 DATE AND DATE+TIME *csupport-comm-date*
+
+The format for 'date' and 'date time' can be defined by the user (see
+|csupport-templates-date|). In visual mode the marked string will be replaced
+by the macro (e.g. to update date and time).
+
+------------------------------------------------------------------------------
+
+1.1.10 C TO C++ COMMENTS AND VICE VERSA *csupport-comm-c-cpp*
+
+The menu item '// xxx -> /* xxx */' changes a C++ comment into an C comment.
+This is done for the current line in normal or insert mode and for a marked
+area of lines in visual mode.
+If there are multiple C comments only the first one will be changed:
+ printf ("\n"); /* one */ /* two */ /* three */
+will be changed into
+ printf ("\n"); // one /* two */ /* three */
+
+The menu item '/* xxx */ -> // xxx' changes a C comment into an C++ comment.
+
+------------------------------------------------------------------------------
+1.2 MENU 'Statements' *csupport-stat*
+------------------------------------------------------------------------------
+
+1.2.1 NORMAL MODE, INSERT MODE. *csupport-stat-normal-mode*
+
+An empty statement will be inserted and properly indented. The item 'if{}'
+will insert an if-statement:
+
+if ( )
+{
+}
+
+
+1.2.2 VISUAL MODE. *csupport-stat-visual-mode*
+
+STATEMENTS WITH BLOCKS AND CASE LABEL.
+--------------------------------------
+The highlighted area
+
+xxxxx
+xxxxx
+
+can be surrounded by one of the following statements:
+
+ +----------------------------+-----------------------------+
+ | if ( ) | if ( ) |
+ | { | { |
+ | xxxxx | xxxxx |
+ | xxxxx | xxxxx |
+ | } | } |
+ | | else |
+ | | { |
+ | | } |
+ +----------------------------+-----------------------------+
+ | for ( ; ; ) | while ( ) |
+ | { | { |
+ | xxxxx | xxxxx |
+ | xxxxx | xxxxx |
+ | } | } |
+ +----------------------------+-----------------------------+
+ | do | |
+ | { | { |
+ | xxxxx | xxxxx |
+ | xxxxx | xxxxx |
+ | } | } |
+ | while ( ); | |
+ +----------------------------+-----------------------------+
+ | switch ( ) { |
+ | case : |
+ | break; |
+ | |
+ | case : |
+ | break; |
+ | |
+ | case : |
+ | break; |
+ | |
+ | case : |
+ | break; |
+ | |
+ | default: |
+ | break; |
+ | } |
+ +----------------------------+-----------------------------+
+
+The whole statement will be indented after insertion.
+
+
+STATEMENTS WITHOUT BLOCKS.
+--------------------------
+One of the following statements can be inserted:
+
+ +-------------------------------+--------------------------+
+ | if ( ) | for ( ; ; ) |
+ +-------------------------------+--------------------------+
+ | if ( ) | while ( ) |
+ | else | |
+ +-------------------------------+--------------------------+
+ | case : | |
+ | break; | |
+ +-------------------------------+--------------------------+
+
+
+------------------------------------------------------------------------------
+1.3 MENU 'Preprocessor' *csupport-prep*
+------------------------------------------------------------------------------
+
+1.3.1 NORMAL MODE, INSERT MODE. *csupport-prep-normal-mode*
+
+The preprocessor statements will be inserted and properly indented.
+
+1.3.2 VISUAL MODE. *csupport-prep-visual-mode*
+
+STATEMENTS WITH BLOCKS
+----------------------
+The highlighted area
+
+xxxxx
+xxxxx
+
+can be surrounded by one of the following statements:
+
+ +----------------------------+-----------------------------+
+ | #if CONDITION |
+ | xxxxx |
+ | xxxxx |
+ | #else /* ----- #if CONDITION ----- */ |
+ | |
+ | #endif /* ----- #if CONDITION ----- */ |
+ +----------------------------------------------------------+
+ | #ifdef CONDITION |
+ | xxxxx |
+ | xxxxx |
+ | #else /* ----- #ifdef CONDITION ----- */ |
+ | |
+ | #endif /* ----- #ifdef CONDITION ----- */ |
+ +----------------------------------------------------------+
+ | #ifndef CONDITION |
+ | xxxxx |
+ | xxxxx |
+ | #else /* ----- #ifndef CONDITION ----- */ |
+ | |
+ | #endif /* ----- #ifndef CONDITION ----- */ |
+ +----------------------------------------------------------+
+ | #ifndef INC_TEST |
+ | #define INC_TEST |
+ | xxxxx |
+ | xxxxx |
+ | #endif /* ----- #ifndef INC_TEST ----- */ |
+ +----------------------------------------------------------+
+ | #if 0 /* ----- #if 0 : If0Label_1 ----- */ |
+ | |
+ | #endif /* ----- #if 0 : If0Label_1 ----- */ |
+ +----------------------------------------------------------+
+
+The macro name for an include guard (e.g. INC_TEST above) will be derived as a
+suggestion from the file name.
+
+1.3.3 BLOCK OUT CODE WITH #if 0 ... #endif *csupport-prep-if0*
+
+The menu item #if 0 #endif inserts the lines
+
+ #if 0 /* ----- #if 0 : If0Label_1 ----- */
+
+ #endif /* ----- #if 0 : If0Label_1 ----- */
+
+In visual mode the marked block of lines will be surrounded by these lines.
+
+This is usually done to temporarily block out some code. The label names like
+If0Label_1 are automatically inserted into the comments. The trailing numbers
+are automatically incremented. These numbers can be changed by the user. The
+next number will be one above the highest number found in the current buffer.
+
+A corresponding label can be found by searching with the vim star command (*).
+All labels can be found with a global search like :g/If0Label_/ or
+:g/If0Label_\d\+/. All corresponding lines can be deleted with :g/If0Label_/d .
+
+
+REMOVE THE ENCLOSING #if 0 ... #endif -CONSTRUCT.
+
+The menu item 'remove #if #endif' removes such a construct if the cursor is
+in the middle of such a section or on one of the two enclosing lines. Nested
+constructs will be untouched.
+
+1.3.4 EX-COMMANDS *csupport-prep-ex*
+
+There are 4 additional Ex command which can be used to insert include
+statements:
+
+ Ex command hotkey includes
+ -------------------------------------------------------------------------
+ :IncludeStdLibrary \ps C standard library
+ :IncludeC99Library \pc C99 library
+ :IncludeCppLibrary \+ps C++ standard library
+ :IncludeCppCLibrary \+pc C standard library ( #include <c...> )
+
+Type :Inc<Tab> and choose one of the commands. Now type an additional space
+and a <Tab> to show the whole list list or type a space and a few leading
+characters to reduce this list.
+
+------------------------------------------------------------------------------
+1.4 MENU 'Idioms' *csupport-idioms*
+------------------------------------------------------------------------------
+
+1.4.1 Item 'function' *csupport-idioms-function*
+
+NORMAL MODE, INSERT MODE:
+The name of the function is asked for and the following lines (for function
+name "f") will be inserted:
+
+ void
+ f ( )
+ {
+ return ;
+ } /* ---------- end of function f ---------- */
+
+VISUAL MODE:
+Main or [static] function: the highlighted lines will go inside the new
+function or main.
+for-loops: the highlighted lines will be set in braces.
+
+1.4.2 for-loop control *csupport-idioms-for-loop*
+
+The menu items 'for( x=0; ... )' and 'for( x=n-1; ... )' can be used to write
+the control statement for a for-loop counting upward or downward. These items
+start an input dialog
+
+ [TYPE (expand)] VARIABLE [START [END [INCR.]]] :
+
+asking for at least the name of the loop variable. The other parameters are
+optional. The type is restricted to the following integral data types:
+
+ char
+ int
+ long int
+ long
+ short int
+ short
+ size_t
+ unsigned char
+ unsigned int
+ unsigned long int
+ unsigned long
+ unsigned short int
+ unsigned short
+ unsigned
+
+One of these types can be specified by typing it completely or by typing zero
+or more characters of its name and completing them to the full name by using
+the tab key (tab completion). If the start of the type name is ambiguous (e.g.
+'uns') a list of completion candidates is provided to choose from.
+
+1.4.3 Item 'open input file' *csupport-idioms-input*
+
+The item 'open input file' will create the statements to open and close an
+input file (e.g. with the file pointer 'infile').
+
+1.4.4 Item 'open output file' *csupport-idioms-output*
+
+The item 'open output file' will create the statements to open and close an
+output file (e.g. with the file pointer 'outfile').
+
+------------------------------------------------------------------------------
+1.5 MENU 'Snippets' *csupport-snippets*
+------------------------------------------------------------------------------
+
+1.5.1 CODE SNIPPETS
+
+Code snippets are pieces of code which are kept in separate files in a special
+directory (e.g. a few lines of code or a complete template for a Makefile).
+File names are used to identify the snippets. The snippet directory will be
+created during the installation ( $HOME/.vim/codesnippets-c is the default).
+Snippets are managed with the 3 items
+
+ C/C++ -> Snippets -> read code snippet
+ C/C++ -> Snippets -> write code snippet
+ C/C++ -> Snippets -> edit code snippet
+
+from the Snippets submenu.
+
+CREATING A NEW SNIPPET
+When nothing is marked, "write code snippet" will write the whole buffer
+to a snippet file, otherwise the marked area will be written to a file.
+
+INSERT A SNIPPET
+Select the appropriate file from the snippet directory ("read code snippet").
+The inserted lines will be indented.
+
+EDIT A SNIPPET
+This is a normal edit.
+
+INDENTATION / NO INDENTATION
+Code snippets are normally indented after insertion. To suppress indentation
+add the file extension "ni" or "noindent" to the snippet file name, e.g.
+
+ parameter_handling.c.noindent
+
+Snippet browser
+---------------
+Under a GUI a file requester will be put up. Without GUI the filename will be
+read from the command line. You can change this behavior by setting a global
+variable in your ~/.vimrc :
+
+ let g:C_GuiSnippetBrowser = 'commandline'
+
+The default value is 'gui'.
+
+
+1.5.2 PICKING UP PROTOTYPES *csupport-proto*
+
+PICK UP PROTOTYPES.
+To make a prototype from a function head mark the function head and choose
+'Snippets -> pick up prototype'. From the first six lines of
+
+ void
+ print_double_array ( double array[], /* array to print */
+ int n, /* number of elements to print */
+ int columns, /* number of elements per column */
+ char* arrayname /* array name */
+ )
+ {
+ ...
+ } /* ---------- end of function print_double_array ---------- */
+
+the prototype
+
+ void print_double_array ( double array[], int n, int columns, char* arrayname );
+
+is produced and put in an internal buffer.
+- Leading and trailing whitespaces are removed.
+- All inner whitespaces are squeezed.
+- All comments will be discarded.
+- Trailing parts of the function body (e.g a '{' ) will also be removed.
+- The class name and the scope resolution operator will be removed (C++ method
+ implementations).
+Further prototypes can be picked up and gathered in the buffer.
+
+For C++ methods namespace names and class names will be removed
+(exception: 'std::' ). The first two lines of
+
+ std::string
+ ROBOT::Robot::get_name ( void )
+ {
+ return type_name;
+ } /* ----- end of method Robot::get_name ----- */
+
+result in the prototype
+
+ std::string get_name ( void );
+
+Folding may help picking up prototypes (see |csupport-folding|).
+
+
+INSERT PROTOTYPES
+With 'Snippets -> insert prototype(s)' all picked up prototypes currently in
+the buffer will be inserted below the cursor.
+The prototype buffer will be cleared after insertion.
+
+
+DISCARD PROTOTYPES
+The prototype buffer can be cleared with 'Snippets -> clear prototype(s)' .
+
+
+SHOW PROTOTYPES
+The list of gathered prototypes can be shown with
+'Snippets -> show prototype(s)'. The number and the filename are shown, e.g.
+
+ (1) matrix.c # double** calloc_double_matrix ( int rows, int columns );
+ (2) matrix.c # void free_double_matrix ( double **m );
+ (3) foomain.c # void foo ( );
+
+
+REMARK. Generating prototypes this way is nice in a small project. You may
+want to use an extractor like cextract or something else.
+
+
+1.5.3 Code Templates *csupport-templates-menu*
+---------------------
+Nearly all menu entries insert code snippets or comments. All these stuff is
+taken from template files and can be changed by the user to meet his
+requirements (see|csupport-templates|on how to use the template system).
+
+The menu item 'edit local templates' opens the main template file in a local
+plugin installation. This is usually the file
+'~/.vim/c-support/templates/Templates'. There may be dependent files
+loaded from the main file. Now change whatever file you want, save it, and
+click on the menu item 'reread templates' to read in the file(s) and to
+rebuild the internal representation of the templates.
+
+The menu item 'edit global templates' opens the main template file in a
+system-wide plugin installation (see |csupport-system-wide|). This is
+usually the file '$VIM./vimfiles/c-support/templates/Templates'.
+
+Template browser
+----------------
+Under a GUI a file requester will be put up. Without GUI the filename will be
+read from the command line. You can change this behavior by setting a global
+variable in your ~/.vimrc :
+
+ let g:C_GuiTemplateBrowser = 'explorer'
+
+The default value is 'gui'. 'explorer' will start the file explorer
+(see help|:Explore|). To use the commandline asign 'commandline'.
+
+------------------------------------------------------------------------------
+1.6 MENU 'C++' *csupport-c++*
+------------------------------------------------------------------------------
+
+1.6.1 NORMAL MODE, INSERT MODE. *csupport-c++-normal-mode*
+
+An empty statement will be inserted and in some cases properly indented. The
+item 'try .. catch' will insert the following lines:
+
+ try {
+ }
+ catch ( const &ExceptObj ) { // handle exception:
+ }
+ catch (...) { // handle exception: unspecified
+ }
+
+The cursor will go into the try block.
+
+1.6.2 VISUAL MODE. *csupport-c++-visual-mode*
+
+The highlighted area can be surrounded by one of the following statements:
+
+ try - catch
+ catch
+ catch(...)
+ namespace { }
+ extern "C" { }
+
+The whole statement will be indented after insertion.
+
+1.6.3 METHOD IMPLEMENTATION *csupport-c++-method-impl*
+
+The menu item 'method implement.' asks for a method name. If this item is
+called the first time you will see just an scope resolution operator. If you
+specify the scope this is used the next time you call this item. If you use
+one of the menu items to generate a class (see |csupport-templates|) the
+scope will be extracted and used for the next method.
+
+1.6.4 EX COMMANDS *csupport-c++-ex*
+
+There are 4 additional Ex command which can be used to insert include
+statements. Please see |csupport-prep-ex|.
+
+------------------------------------------------------------------------------
+1.7 MENU 'Run' *csupport-run*
+------------------------------------------------------------------------------
+
+1.7.1 MINIMAL MAKE FUNCTIONALITY *csupport-run-buffer*
+
+The 'Run' menu provides a minimal make functionality for single file projects
+(e.g. in education) :
+
+SAVE AND COMPILE
+'save and compile' saves the buffer and run the compiler with the given
+options (see |csupport-custom-glob-vars|).
+
+An error window will be opened if the compiler reports errors and/or warnings.
+Quickfix commands can now be used to jump to an error location.
+
+Consider using maps like
+ map <silent> <F7> <Esc>:cprevious<CR>
+ map <silent> <F8> <Esc>:cnext<CR>
+in your ~/.vimrc file to jump over the error locations and make navigation
+easier. The error list and the error locations in your source buffer will be
+synchronized.
+
+
+LINK
+'link' makes an executable from the current buffer. If the buffer is not
+saved, or no object is available or the object is older then the source step
+'save and compile' is executed first.
+
+The behavior of the compiler / linker is determined by the options assigned to
+the variables described in |csupport-custom-glob-vars| (4.group).
+
+RUN
+'run' runs the executable with the same name (extension .e) as the current
+buffer. If the buffer is not saved, or no executable is available or the
+executable is older then the source steps 'save and compile' and 'link' are
+executed first.
+
+
+1.7.2 COMMAND LINE ARGUMENTS *csupport-run-cmdline-args*
+
+The item 'command line arguments' calls an input dialog which asks for command
+line arguments. These arguments are forwarded to the program which is run by
+the 'run' item. The arguments are kept until you change them.
+For the first and only the first argument file name expansion will work (use
+the Tab-key). Only the first string of the input can be expanded due to a
+restriction of the Vim input function. To expand two or more filenames
+specify them in reverse order: type the first characters of the last filename
+and expand them. Go to the start of the input and type the beginning of the
+last but one filename and expand it.
+
+The arguments belong to the current buffer (that is, each buffer can have its
+own arguments).
+If the buffer gets a new name with "save as" the arguments will now belong to
+the buffer with the new name.
+
+The command line arguments can be followed by pipes and redirections:
+
+ 11 22 | sort -rn | head -10 > out
+
+Caveat: If you look for the current arguments by calling this menu item again
+be sure to leave it with a CR (not Esc !). Due to a limitation of an internal
+Vim function CR will keep the arguments, Esc will discard them.
+
+
+1.7.3 RUN make *csupport-run-make*
+
+The item 'make' runs the external make program.
+
+
+1.7.4 COMMAND LINE ARGUMENTS FOR make *csupport-run-make-args*
+
+The item 'command line arguments for make' calls an input dialog which asks
+for command line arguments for make. These arguments are forwarded to make
+when called by the item 'make'.
+
+
+1.7.5 SPLINT *csupport-run-splint*
+
+Splint is a tool for statically checking C programs (see http://www.splint.org).
+Of course it has to be installed in order to be used within Vim. The menu
+item 'Run->splint' will run the current buffer through splint.
+
+An error window will be opened if splint has something to complain about.
+Quickfix commands can now be used to jump to an error location. For easier
+navigation see tip under 'SAVE AND COMPILE' |csupport-run-buffer|.
+
+Splint has many options. Presumably the best way is to keep the options in an
+option file (~/.splintrc). For a quick try you can use the menu item
+'Run->cmd. line arg. for splint' to specify some buffer related options.
+
+When vim is started this plugin will check whether splint is executable. If
+not, the menu item will *NOT' be visible.
+
+
+1.7.6 CODECHECK *csupport-run-codecheck*
+
+CodeCheck (TM) is a commercial code analyzing tool produced by Abraxas
+Software, Inc. (www.abraxas-software.com).
+Of course it has to be installed in order to be used within Vim. The menu
+item 'Run->CodeCheck' will run the current buffer through CodeCheck.
+
+An error window will be opened if CodeCheck has something to complain about.
+Quickfix commands can now be used to jump to an error location. For easier
+navigation see tip under 'SAVE AND COMPILE' |csupport-run-buffer|.
+
+CodeCheck has many options. For a quick try you can use the menu item
+'Run->cmd. line arg. for CodeCheck' to specify some buffer related options.
+
+CodeCheck will be run with default options (see |csupport-custom-glob-vars|).
+The default options can be overwritten by placing a global variable in
+~/.vimrc , e.g.
+
+ let g:C_CodeCheckOptions = "-K13 -Rmeyers"
+
+The default name for the executable is 'check'. There are other names in use
+on different platforms. The name can be changed by placing a global variable
+in ~/.vimrc , e.g.
+
+ let g:C_CodeCheckExeName = "chknt.exe"
+
+When vim is started this plugin will check whether CodeCheck is executable. If
+not, the menu item will *NOT' be visible.
+
+
+1.7.7 INDENT *csupport-run-indent*
+
+The formatter 'indent' can be run over the whole buffer. Before formatting a
+buffer this buffer will be saved to disk and you will be asked for a
+confirmation.
+
+Indent has many options. These are kept in the file '.indent.pro' in your home
+directory. See the indent manual for more information.
+
+
+1.7.8 HARDCOPY *csupport-run-hardcopy*
+
+Generates a PostScript file from the whole buffer or from a marked region.
+On a Windows system a printer dialog is displayed.
+The hardcopy goes to the current working directory. If the buffer contains
+documentation or other material from non-writable directories the hardcopy
+goes to the HOME directory. The output destination will be shown in a message.
+
+The print header contains date and time for the current locale. The definition
+used is
+
+ let s:C_Printheader = "%<%f%h%m%< %=%{strftime('%x %X')} Page %N"
+
+The current locale can be overwritten by changing the language, e.g.
+
+ :language C
+
+or by setting a global variable in the file ~/.vimrc , e.g. :
+
+ let g:C_Printheader = "%<%f%h%m%< %=%{strftime('%x %X')} SEITE %N"
+
+See :h printheader and :h strftime() for more details.
+
+
+1.7.9 REBUILD TEMPLATES *csupport-run-templates*
+
+After editing one or more template files a click on this item rereads the
+template files and rebuilds all templates.
+
+
+1.7.10 XTERM SIZE *csupport-run-xterm*
+
+The size of the xterm used for running a program (below) can be set by this
+menu item. The default is 80 columns with 24 lines.
+This feature is not available under Windows.
+
+
+1.7.11 OUTPUT REDIRECTION *csupport-run-output*
+
+Running a program can be done in one of three ways:
+(1) Run the program from the gVim command line.
+ This is for interactive programs with little input and output.
+(2) Run the program and direct the output into a window with name "C-Output".
+ The buffer and its content will disappear when the window is closed and
+ reused otherwise.
+ This is for non-interactive programs with little to very much output.
+ You have unlimited line length, regex search, navigation, ...
+ The tabstop value will be set to 8 for "C-Output".
+(3) Run the program in an xterm.
+
+The output method can be chosen from the menu item 'Run->output: ...'.
+This menu has three states:
+
+ output: VIM->buffer->xterm
+ output: BUFFER->xterm->vim
+ output: XTERM->vim->buffer
+
+The first (uppercase) item shows the current method. The default is 'vim'.
+This can be changed by setting the variable g:C_OutputGvim to another value.
+Possible values are 'vim', 'buffer' and 'xterm' .
+
+The xterm defaults can be set in ~/.vimrc by the variable g:C_XtermDefaults .
+The default is "-fa courier -fs 12 -geometry 80x24" :
+ font name : -fa courier
+ font size : -fs 12
+ terminal size : -geometry 80x24
+See 'xterm -help' for more options. Xterms are not available under Windows.
+
+------------------------------------------------------------------------------
+1.8 'help' *csupport-help*
+------------------------------------------------------------------------------
+Plugin help
+-----------
+The root menu item 'help (plugin)' shows this plugin help in a help window.
+The help tags must have been generated with
+ :helptags ~/.vim/doc
+The hotkey is \hp (for "help plugin").
+
+Displaying a manual
+-------------------
+The root menu item 'show manual' shows the manual for the word under the
+cursor. If there is more than one manual a selection list will be presented.
+If there is no word under the cursor you can type in a name. An interface to
+the on-line reference manuals must be installed (usually man(1) for
+Linux/Unix, see|csupport-custom-glob-vars|).
+The hotkey is \hm (for "help manual").
+
+==============================================================================
+2. USAGE WITHOUT GUI (Vim) *csupport-usage-vim*
+==============================================================================
+
+The frequently used constructs can be inserted with key mappings. The
+mappings are also described in the document c-hot-keys.pdf (reference card,
+part of this package).
+Hint: Typing speed matters. The combination of a leader ('\') and the
+following character(s) will only be recognized for a short time.
+The insert mode mappings start with ` (backtick).
+
+Legend: (i) insert mode, (n) normal mode, (v) visual mode
+
+ -- Help ---------------------------------------------------------------
+
+ \hm show manual for word under the cursor (n,i)
+ \hp show plugin help (n,i)
+
+ -- Comments -----------------------------------------------------------
+
+ \cl end-of-line comment (n,v,i)
+ \cj adjust end-of-line comment(s) (n,v,i)
+ \cs set end-of-line comment column (n)
+ \c* code -> comment /* */ (n,v)
+ \cc code -> comment // (n,v)
+ \co comment -> code (n,v)
+ \cfr frame comment (n,i)
+ \cfu function comment (n,i)
+ \cme method description (n,i)
+ \ccl class description (n,i)
+ \cfdi file description (implementation) (n,i)
+ \cfdh file description (header) (n,i)
+ \ccs C/C++-file section (tab. compl.) (n,i)
+ \chs H-file section (tab. compl.) (n,i)
+ \ckc keyword comment (tab. compl.) (n,i)
+ \csc special comment (tab. compl.) (n,i)
+ \cd date (n,v,i)
+ \ct date \& time (n,v,i)
+
+ -- Statements ---------------------------------------------------------
+
+ \sd do { } while (n,v,i)
+ \sf for (n,i)
+ \sfo for { } (n,v,i)
+ \si if (n,i)
+ \sif if { } (n,v,i)
+ \sie if else (n,v,i)
+ \sife if { } else { } (n,v,i)
+ \se else { } (n,v,i)
+ \sw while (n,i)
+ \swh while { } (n,v,i)
+ \ss switch (n,v,i)
+ \sc case (n,i)
+ \s{ \sb { } (n,v,i)
+
+ -- Preprocessor -------------------------------------------------------
+
+ \ps choose a standard library include (n,i)
+ \pc choose a C99 include (n,i)
+ \p< #include <> (n,i)
+ \p" #include "" (n,i)
+ \pd #define (n,i)
+ \pu #undef (n,i)
+ \pie #if #else #endif (n,v,i)
+ \pid #ifdef #else #endif (n,v,i)
+ \pin #ifndef #else #endif (n,v,i)
+ \pind #ifndef #def #endif (n,v,i)
+ \pi0 #if 0 #endif (n,v,i)
+ \pr0 remove #if 0 #endif (n,i)
+ \pe #error (n,i)
+ \pl #line (n,i)
+ \pp #pragma (n,i)
+
+ -- Idioms -------------------------------------------------------------
+
+ \if function (n,v,i)
+ \isf static function (n,v,i)
+ \im main() (n,v,i)
+ \i0 for( x=0; x<n; x+=1 ) (n,v,i)
+ \in for( x=n-1; x>=0; x-=1 ) (n,v,i)
+ \ie enum + typedef (n,i)
+ \is struct + typedef (n,i)
+ \iu union + typedef (n,i)
+ \ip printf() (n,i)
+ \isc scanf() (n,i)
+ \ica p=calloc() (n,i)
+ \ima p=malloc() (n,i)
+ \isi sizeof() (n,v,i)
+ \ias assert() (n,v)
+ \ii open input file (n,i)
+ \io open output file (n,i)
+
+ -- Snippets -----------------------------------------------------------
+
+ \nr read code snippet (n,i)
+ \nw write code snippet (n,v,i)
+ \ne edit code snippet (n,i)
+ \np pick up prototype (n,v,i)
+ \ni insert prototype(s) (n,i)
+ \nc clear prototype(s) (n,i)
+ \ns show prototype(s) (n,i)
+ \ntl edit local templates (n,i)
+ \ntg edit global templates (n,i)
+ \ntr rebuild templates (n,i)
+
+ -- C++ ----------------------------------------------------------------
+
+ \+co cout << << endl; (n,i)
+ \+c class (n,i)
+ \+ps #include <...> STL (n,i)
+ \+pc #include <c..> C (n,i)
+ \+cn class (using new) (n,i)
+ \+ci class implementation (n,i)
+ \+cni class (using new) implementation (n,i)
+ \+mi method implementation (n,i)
+ \+ai accessor implementation (n,i)
+
+ \+tc template class (n,i)
+ \+tcn template class (using new) (n,i)
+ \+tci template class implementation (n,i)
+ \+tcni template class (using new) impl. (n,i)
+ \+tmi template method implementation (n,i)
+ \+tai template accessor implementation (n,i)
+
+ \+tf template function (n,i)
+ \+ec error class (n,i)
+ \+tr try ... catch (n,v,i)
+ \+ca catch (n,v,i)
+ \+c. catch(...) (n,v,i)
+
+ -- Run ----------------------------------------------------------------
+
+ \rc save and compile (n,i)
+ \rl link (n,i)
+ \rr run (n,i)
+ \ra set comand line arguments (n,i)
+ \rm run make (n,i)
+ \rg cmd. line arg. for make (n,i)
+ \rp run splint (n,i)
+ \ri cmd. line arg. for splint (n,i)
+ \rk run CodeCheck (TM) (n,i)
+ \re cmd. line arg. for CodeCheck (TM) (n,i)
+ \rd run indent (n,v,i)
+ \rh hardcopy buffer (n,v,i)
+ \rs show plugin settings (n,i)
+ \rx set xterm size (n, only Linux/UNIX & GUI)
+ \ro change output destination (n,i)
+
+ -- Load / Unload C/C++ Support ----------------------------------------
+
+ \lcs Load C/C++ Support Menus (n, GUI only)
+ \ucs Unload C/C++ Support Menus (n, GUI only)
+
+The hotkeys are defined in the file type plugin c.vim (part of this csupport
+plugin package) and described in the document c-hot-keys.pdf
+
+Changing the default map leader '\'
+-----------------------------------
+The map leader can be changed by the user by setting a global variable in the
+file .vimrc
+
+ let g:C_MapLeader = ','
+
+The map leader is now a comma. The 'line end comment' command is now defined
+as ',cl'. This setting will be used as a so called local leader and influences
+only files with filetype 'c' and 'cpp'.
+
+==============================================================================
+3. HOTKEYS *csupport-hotkeys*
+==============================================================================
+
+The following hotkeys are defined in normal, visual and insert mode:
+
+ F9 compile and link
+ Alt-F9 write buffer and compile
+ Ctrl-F9 run executable
+ Shift-F9 set command line arguments
+
+ Shift-F2 switch between source files and header files
+
+The hotkeys are defined in the file type plugin c.vim. All hotkeys from the
+non-GUI mode also work for gVim (see |csupport-usage-vim|).
+
+Shift-F2 can be used to switch between source files and header files if the
+plugin a.vim (http://vim.sourceforge.net/scripts/script.php?script_id=31) is
+present. To suppress the creation of a new header file when switching from a
+source file the file ~/.vimrc should contain a line
+
+ let g:alternateNoDefaultAlternate = 1
+
+A header file will only be opened if it already exists.
+
+The Shift-key is dead when you are working with Vim in a console terminal
+(non-Gui). You could add
+
+ noremap \a :A<CR>
+ inoremap \a <C-C>:A<CR>
+
+to get a hot key for this case.
+
+==============================================================================
+4. CUSTOMIZATION *csupport-custom*
+==============================================================================
+
+------------------------------------------------------------------------------
+4.1 GLOBAL VARIABLES *csupport-custom-glob-vars*
+------------------------------------------------------------------------------
+
+Several global variables are checked by the script to customize it:
+
+ ----------------------------------------------------------------------------
+ GLOBAL VARIABLE DEFAULT VALUE TAG (see below)
+ ----------------------------------------------------------------------------
+ g:C_GlobalTemplateFile plugin_dir.'c-support/templates/Templates'
+ g:C_LocalTemplateFile $HOME.'/.vim/c-support/templates/Templates'
+ g:C_TemplateOverwrittenMsg 'yes'
+ g:C_Ctrl_j 'on'
+
+ g:C_CodeSnippets plugin_dir."/c-support/codesnippets/"
+ g:C_Dictionary_File ""
+ g:C_LoadMenus "yes"
+ g:C_MenuHeader "yes"
+ g:C_OutputGvim "vim"
+ g:C_XtermDefaults "-fa courier -fs 12 -geometry 80x24"
+ g:C_Printheader "%<%f%h%m%< %=%{strftime('%x %X')} Page %N"
+ g:C_MapLeader '\'
+ g:C_GuiSnippetBrowser 'gui'
+ g:C_GuiTemplateBrowser 'gui'
+
+ Linux/UNIX:
+ g:C_ObjExtension ".o"
+ g:C_ExeExtension ""
+ g:C_CCompiler "gcc"
+ g:C_CplusCompiler "g++"
+ g:C_Man "man"
+ Windows:
+ g:C_ObjExtension ".obj"
+ g:C_ExeExtension ".exe"
+ g:C_CCompiler "gcc.exe"
+ g:C_CplusCompiler "g++.exe"
+ g:C_Man "man.exe"
+ g:C_CFlags "-Wall -g -O0 -c"
+ g:C_LFlags "-Wall -g -O0"
+ g:C_Libs "-lm"
+ g:C_LineEndCommColDefault 49
+ g:C_CExtension "c"
+ g:C_TypeOfH "cpp"
+ g:C_SourceCodeExtensions "c cc cp cxx cpp CPP c++ C i ii"
+
+ g:C_CodeCheckExeName "check"
+ g:C_CodeCheckOptions "-K13"
+
+The variable plugin_dir will automatically be set to one of the following values:
+ $HOME.'/.vim/' for Linux/Unix
+ $VIM.'/vimfiles/' for Windows
+
+ ----------------------------------------------------------------------------
+
+ 1. group: g:C_GlobalTemplateFile : Sets the master template file (see|csupport-templates|)
+ g:C_LocalTemplateFile : Sets the local template file (see|csupport-templates|)
+ g:C_TemplateOverwrittenMsg : message if template is overwritten
+ g:C_Ctrl_j : hotkey Ctrl-j 'on'/'off' (see|csupport-Ctrl-j|)
+
+ 2. group: g:C_CodeSnippets : The name of the code snippet directory
+ (see |csupport-snippets|).
+ g:C_Dictionary_File : The name(s) of the dictionary file(s) used for
+ word completion (see also |csupport-dictionary|)
+ g:C_Root : the name of the root menu of this plugin
+ g:C_LoadMenus : Load menus and mappings ("yes", "no") at startup.
+ g:C_MenuHeader : Switch the submenu header on/off.
+ g:C_OutputGvim : when program is running output goes to the vim
+ command line ("vim"), to a buffer ("buffer") or to
+ an xterm ("xterm").
+ g:C_XtermDefaults : the xterm defaults
+ g:C_Printheader : hardcopy: definition of the page header
+ g:C_MapLeader : the map leader for hotkeys (see|csupport-usage-vim|)
+ g:C_GuiSnippetBrowser : code snippet browser: 'gui', 'commandline'
+ g:C_GuiTemplateBrowser : code template browser: 'gui', 'explorer', 'commandline'
+
+ 3. group: g:C_CExtension : Extension of C files. Everything else is C++.
+ g:C_TypeOfH : filetype of header files with extension 'h' (c,cpp)
+ g:C_SourceCodeExtensions : filename extensions for C/C++
+ implementation files
+ g:C_CCompiler : The name of the C compiler.
+ g:C_CplusCompiler : The name of the C++ compiler.
+ g:C_Man : The name of the man utility.
+ g:C_CFlags : Compiler flags used for a compilation.
+ g:C_LFlags : Compiler flags used for linkage.
+ g:C_Libs : Libraries to link with.
+ g:C_ObjExtension : C/C+ file extension for objects
+ (leading point required if not empty)
+ g:C_ExeExtension : C/C+ file extension for executables
+ (leading point required if not empty)
+ g:C_LineEndCommColDefault : Default starting column for end-of-line comments.
+ g:C_CodeCheckExeName : The name of the CodeCheck (TM) executable
+ (the default is 'check')
+ g:C_CodeCheckOptions : Default options for CodeCheck (TM)
+ (see |csupport-run-codecheck|).
+
+To override the default add appropriate assignments to ~/.vimrc .
+
+------------------------------------------------------------------------------
+4.2 THE ROOT MENU *csupport-custom-root-menu*
+------------------------------------------------------------------------------
+
+The variable g:C_Root, if set (in ~/.vimrc or in ~/.gvimrc), gives the name of
+the single Vim root menu item in which the C/C++ submenus will be put. The
+default is
+ '&C\/C\+\+.'
+Note the terminating dot. A single root menu can be used if the screen is
+limited or several plugins are used in parallel.
+
+If set to "", this single root menu item will not appear. Now all submenus
+are put into the Vim root menu. This is nice for beginners in a lab
+installation or for C-only programmers.
+
+------------------------------------------------------------------------------
+4.3 SYSTEM-WIDE INSTALLATION *csupport-system-wide*
+------------------------------------------------------------------------------
+
+A system-wide installation (one installation for all users) is done as
+follows.
+
+As *** SUPERUSER *** :
+
+(1) Find the Vim installation directory.
+The Vim Ex command ':echo $VIM' gives '/usr/local/share/vim' or something like
+that. Beyond this directory you will find the Vim installation, e.g. in
+'/usr/local/share/vim/vim71' if Vim version 7.1 has been installed.
+
+(2) Create a new subdirectory 'vimfiles', e.g. '/usr/local/share/vim/vimfiles'.
+
+(3) Install C/C++ Support
+Copy the archive cvim.zip to this new directory and unpack it:
+ unzip cvim.zip
+
+(4) Generate the help tags:
+ :helptags $VIM/vimfiles/doc
+
+
+As *** USER *** :
+
+Create your private snippet directory:
+
+ mkdir --parents ~/.vim/c-support/codesnippets
+
+You may want to copy the snippets coming with this plugin (in
+$VIM/vimfiles/c-support/codesnippets) into the new directory or to set a
+link to the global directory.
+
+Create your private template directory:
+
+ mkdir --parents ~/.vim/c-support/template
+
+Create a private template file 'Templates' in this directory to overwrite some
+macros, e.g.
+
+ *|AUTHOR|* = your name
+ *|AUTHORREF|* = ...
+ *|EMAIL|* = ...
+ *|COMPANY|* = ...
+ *|COPYRIGHT|* = ...
+
+You can also have local templates which overwrite the global ones. To suppress
+the messages in this case set a global variable in '~/.vimrc' :
+
+ let g:C_TemplateOverwrittenMsg= 'no'
+
+The default is 'yes'.
+
+==============================================================================
+5. TEMPLATE FILES AND TAGS *csupport-templates*
+==============================================================================
+
+------------------------------------------------------------------------------
+5.1 TEMPLATE FILES *csupport-templates-files*
+------------------------------------------------------------------------------
+
+Nearly all menu entries insert code snippets or comments. All these stuff is
+taken from template files and can be changed by the user to meet his
+requirements.
+
+The master template file is '$HOME/.vim/c-support/templates/Templates' for a
+user installation and '$VIM/vimfiles/c-support/templates/Templates' for a
+system-wide installation (see|csupport-system-wide|).
+
+The master template file starts with a macro section followed by templates for
+single menu items or better by including other template files grouping the
+templates according to the menu structure of this plugin. The master file
+could look like this:
+
+ $
+ $ =============================================================
+ $ ========== USER MACROS ======================================
+ $ =============================================================
+ $
+ *|AUTHOR|* = Dr. Fritz Mehner
+ *|AUTHORREF|* = mn
+ *|EMAIL|* = mehner@fh-swf.de
+ *|COMPANY|* = FH Südwestfalen, Iserlohn
+ *|COPYRIGHT|* = Copyright (c)*|YEAR|,|AUTHOR|*
+ $
+ $ =============================================================
+ $ ========== FILE INCLUDES ====================================
+ $ =============================================================
+ $
+ *|includefile|* = c.comments.template
+ *|includefile|* = c.cpp.template
+ *|includefile|* = c.idioms.template
+ *|includefile|* = c.preprocessor.template
+ *|includefile|* = c.statements.template
+
+Lines starting with a dollar sign are comments. The section starting
+with *|AUTHOR|* assigns values to predefined tags
+(see|csupport-templates-macros|) to personalize some templates. Other
+predefined tags with given default values can be used (e.g. *|YEAR|* ).
+
+User defined tags are possible. They have the following syntax:
+
+ *|macroname|* = replacement
+
+A macroname starts with a letter (uppercase or lowercase) followed by zero or
+more letters, digits or underscores.
+
+------------------------------------------------------------------------------
+5.2 MACROS *csupport-templates-macros*
+------------------------------------------------------------------------------
+
+The following macro names are predefined. The first group is used to
+personalize templates.
+
+ ----------------------------------------------------------------------------
+ PREDEFINED MACROS DEFAULT VALUE
+ ----------------------------------------------------------------------------
+*|AUTHOR|* ""
+*|AUTHORREF|* ""
+*|EMAIL|* ""
+*|COMPANY|* ""
+*|PROJECT|* ""
+*|COPYRIGHTHOLDER|* ""
+*|STYLE|* ""
+*|includefile|* ""
+
+*|BASENAME|* filename without path and suffix
+*|DATE|* the preferred date representation for the current locale
+ without the time
+*|FILENAME|* filename without path
+*|PATH|* path without filename
+*|SUFFIX|* filename suffix
+*|TIME|* the preferred time representation for the current locale
+ without the date and the time zone or name or abbreviation
+*|YEAR|* the year as a decimal number including the century
+
+The macro *|includefile|* can be used to include an additional template file.
+A file will be included only once. Commenting and uncommenting include macros
+is a simple way to switch between several sets of templates (see also
+|csupport-run-templates|). Overwriting existing macros and templates is
+possible.
+
+ ----------------------------------------------------------------------------
+ PREDEFINED TAGS
+ ----------------------------------------------------------------------------
+ <CURSOR> The cursor position after insertion of a template
+ <+text+>,<-text->, Jump targets in templates. Jump with Ctrl-j.
+ {+text+},{-text-} See |csupport-templates-jump|.
+
+ <SPLIT> The split point when inserting in visual mode
+ (see|csupport-templates-definition|)
+
+A dependent template file can start with its own macro section. There is no
+need to have all user defined macros in the master file.
+When the first template definition is found (see below) macro definitions are
+no longer recognized.
+
+------------------------------------------------------------------------------
+5.2.1 USER DEFINED FORMATS FOR DATE AND TIME *csupport-templates-date*
+------------------------------------------------------------------------------
+The format for *|DATE|* ,*|TIME|* , and*|YEAR|* can be set by the user. The
+defaults are
+ *|DATE|* '%x'
+ *|TIME|* '%X'
+ *|YEAR|* '%Y'
+See the manual page of the C function strftime() for the format. The accepted
+format depends on your system, thus this is not portable! The maximum length
+of the result is 80 characters.
+
+User defined formats can be set using the following global variables in
+~/.vimrc , e.g.
+ let g:C_FormatDate = '%D'
+ let g:C_FormatTime = '%H:%M'
+ let g:C_FormatYear = 'year %Y'
+
+------------------------------------------------------------------------------
+5.3 TEMPLATES *csupport-templates-names*
+------------------------------------------------------------------------------
+
+5.3.1 Template names
+
+The template behind a menu entry is identified by a given name. The first part
+of the name identifies the menu, the second part identifies the item. The
+modes are also hard coded (see|csupport-templates-definition|for the use of
+<SPLIT>).
+
+ TEMPLATE NAME MODES
+ --------------------------------------------------------------------------
+
+ comment.class normal
+ comment.end-of-line-comment normal
+ comment.file-description normal
+ comment.file-description-header normal
+ comment.file-section-cpp-class-defs normal
+ comment.file-section-cpp-class-implementations-exported normal
+ comment.file-section-cpp-class-implementations-local normal
+ comment.file-section-cpp-data-types normal
+ comment.file-section-cpp-function-defs-exported normal
+ comment.file-section-cpp-function-defs-local normal
+ comment.file-section-cpp-header-includes normal
+ comment.file-section-cpp-local-variables normal
+ comment.file-section-cpp-macros normal
+ comment.file-section-cpp-prototypes normal
+ comment.file-section-cpp-typedefs normal
+ comment.file-section-hpp-exported-class-defs normal
+ comment.file-section-hpp-exported-data-types normal
+ comment.file-section-hpp-exported-function-declarations normal
+ comment.file-section-hpp-exported-typedefs normal
+ comment.file-section-hpp-exported-variables normal
+ comment.file-section-hpp-header-includes normal
+ comment.file-section-hpp-macros normal
+ comment.frame normal
+ comment.function normal
+ comment.keyword-bug normal
+ comment.keyword-compiler normal
+ comment.keyword-keyword normal
+ comment.keyword-todo normal
+ comment.keyword-tricky normal
+ comment.keyword-warning normal
+ comment.keyword-workaround normal
+ comment.method normal
+ comment.special-constant-type-is-long normal
+ comment.special-constant-type-is-unsigned-long normal
+ comment.special-constant-type-is-unsigned normal
+ comment.special-empty normal
+ comment.special-fall-through normal
+ comment.special-implicit-type-conversion normal
+ comment.special-no-return normal
+ comment.special-not-reached normal
+ comment.special-remains-to-be-implemented normal
+
+ cpp.accessor-implementation normal
+ cpp.catch normal, visual
+ cpp.catch-points normal, visual
+ cpp.cin normal
+ cpp.class-definition normal
+ cpp.class-implementation normal
+ cpp.class-using-new-definition normal
+ cpp.class-using-new-implementation normal
+ cpp.cout-operator normal
+ cpp.cout normal
+ cpp.error-class normal
+ cpp.extern normal, visual
+ cpp.method-implementation normal
+ cpp.namespace-block normal, visual
+ cpp.namespace normal
+ cpp.namespace-std normal
+ cpp.open-input-file normal
+ cpp.open-output-file normal
+ cpp.operator-in normal
+ cpp.operator-out normal
+ cpp.output-manipulator-boolalpha normal
+ cpp.output-manipulator-dec normal
+ cpp.output-manipulator-endl normal
+ cpp.output-manipulator-fixed normal
+ cpp.output-manipulator-flush normal
+ cpp.output-manipulator-hex normal
+ cpp.output-manipulator-internal normal
+ cpp.output-manipulator-left normal
+ cpp.output-manipulator-oct normal
+ cpp.output-manipulator-right normal
+ cpp.output-manipulator-scientific normal
+ cpp.output-manipulator-setbase normal
+ cpp.output-manipulator-setfill normal
+ cpp.output-manipulator-setiosflag normal
+ cpp.output-manipulator-setprecision normal
+ cpp.output-manipulator-setw normal
+ cpp.output-manipulator-showbase normal
+ cpp.output-manipulator-showpoint normal
+ cpp.output-manipulator-showpos normal
+ cpp.output-manipulator-uppercase normal
+ cpp.rtti-const-cast normal
+ cpp.rtti-dynamic-cast normal
+ cpp.rtti-reinterpret-cast normal
+ cpp.rtti-static-cast normal
+ cpp.rtti-typeid normal
+ cpp.template-accessor-implementation normal
+ cpp.template-class-definition normal
+ cpp.template-class-implementation normal
+ cpp.template-class-using-new-definition normal
+ cpp.template-class-using-new-implementation normal
+ cpp.template-function normal
+ cpp.template-method-implementation normal
+ cpp.try-catch normal, visual
+
+ idioms.assert normal
+ idioms.calloc normal
+ idioms.enum normal, visual
+ idioms.fprintf normal
+ idioms.fscanf normal
+ idioms.function normal, visual
+ idioms.function-static normal, visual
+ idioms.main normal, visual
+ idioms.malloc normal
+ idioms.open-input-file normal
+ idioms.open-output-file normal
+ idioms.printf normal
+ idioms.scanf normal
+ idioms.sizeof normal
+ idioms.struct normal, visual
+ idioms.union normal, visual
+
+ preprocessor.define normal
+ preprocessor.ifdef-else-endif normal, visual
+ preprocessor.if-else-endif normal, visual
+ preprocessor.ifndef-def-endif normal, visual
+ preprocessor.ifndef-else-endif normal, visual
+ preprocessor.include-global normal
+ preprocessor.include-local normal
+ preprocessor.undefine normal
+
+ statements.block normal, visual
+ statements.case normal
+ statements.do-while normal, visual
+ statements.for-block normal
+ statements.for normal
+ statements.if-block-else normal, visual
+ statements.if-block normal, visual
+ statements.if-else normal, visual
+ statements.if normal
+ statements.switch normal, visual
+ statements.while-block normal, visual
+ statements.while normal
+
+
+5.3.2 Template definition *csupport-templates-definition*
+
+A template definition starts with a template head line with the following
+syntax:
+
+ == templatename == [ position == ]
+
+The templatename is one of the above template identifiers. The position
+attribute is optional. Possible attribute values are:
+
+ above insert the template before the current line
+ append append the template to the current line
+ below insert the template below the current line
+ insert insert the template at the cursor position
+ start insert the template before the first line of the buffer
+
+An example:
+
+ == comment.function ==
+ /*
+ * === FUNCTION =======================================================
+ * Name: <CURSOR>
+ * Description:
+ * ======================================================================
+ */
+
+The definition of a template ends at the next head line or at the end of the
+file.
+
+Templates for the visual mode can use <SPLIT>. The text before <SPLIT> will
+than be inserted above the marked area, the text after <SPLIT> will be
+inserted behind the marked area. An example:
+
+ == statements.if-block-else ==
+ if ( <CURSOR> ) {
+ <SPLIT>} else {
+ }
+
+If applied to the marked block
+
+ xxxxxxxxxxx
+ xxxxxxxxxxx
+
+this template yields
+
+ if ( ) {
+ xxxxxxxxxxx
+ xxxxxxxxxxx
+ } else {
+ }
+
+The templates with a visual mode are shown in the table under
+|csupport-templates-names|.
+
+5.3.3 Template expansion *csupport-templates-expansion*
+
+There are additional ways to control the expansion of a template.
+
+USER INPUT
+----------
+If the usage of a yet undefined user macro starts with a question mark the
+user will be asked for the replacement first, e.g. with the following template
+
+ == idioms.function ==
+ void<CURSOR>
+ *|?FUNCTION_NAME|* ( )
+ {
+ <SPLIT> return ;
+ } /* ----- end of function*|FUNCTION_NAME|* ----- */
+
+The user can specify the function name which then will be applied twice. If
+the macro was already in use the old value will be suggested as default.
+
+MACRO MANIPULATION
+------------------
+
+A macro expansion can be controlled by the following attributes
+
+ :l change macro text to lowercase
+ :u change macro text to uppercase
+ :c capitalize macro text
+ :L legalize name
+
+The include guard template is an example for the use of ':L' :
+
+ == preprocessor.ifndef-def-endif ==
+ #ifndef *|?BASENAME:L|_INC*
+ #define *|BASENAME|_INC*
+ <CURSOR><SPLIT>
+ #endif // ----- #ifndef*|BASENAME|_INC* -----
+
+The base name of the file shall be used as part of the include guard name.
+The predefined macro*|BASENAME|* is used to ask for this part because this
+macro has already a defined value. That value can accepted or replaced by the
+user. For the filename 'test test++test.h' the legalized base name
+'TEST_TEST_TEST' will be suggested.
+
+Legalization means:
+ - replace all whitespaces by underscores
+ - replace all non-word characters by underscores
+ - replace '+' and '-' by underscore
+
+5.3.4 The macros <+text+> etc. *csupport-templates-jump*
+
+There are four macro types which can be used as jump targets in templates:
+
+ <+text+> Can be jumped to by hitting Ctrl-j.
+ {+text+} Same as <+text+>. Used in cases where indentation gives unwanted
+ results with the first one.
+
+ <-text-> Same as the two above. Will be removed if the template is used
+ {-text-} in visual mode.
+
+The text inside the brackets is userdefined and can be empty. The text
+can be composed from letters (uppercase and lowercase), digits, underscores
+and blanks. After the insertion of an template these jump targets will be
+highlighted.
+
+5.3.5 Command Ctrl-j *csupport-Ctrl-j*
+
+Use the command Ctrl-j to jump to the next target. The target will be removed
+and the mode will switched to insertion. Ctrl-j works in normal and in insert
+mode.
+
+The template for a function can be written as follows:
+
+ == idioms.function ==
+ void<CURSOR>
+ |?FUNCTION_NAME| ( <+argument list+> )
+ {
+ <SPLIT> return <+return value+>;
+ } /* ----- end of function |FUNCTION_NAME| ----- */
+
+The cursor will be set behind 'void'. You can remove 'void' easily with
+Ctrl-w (delete word before cursor) and insert a new type. A Ctrl-j leads you
+to the argument list. The target disappears and you can type on. When the
+function body is written a final Ctrl-j brings you to the return statement.
+
+The following example shows the usage of the type {-text-}. The idiom for the
+opening of a file marks the line before the file is closed. This is also the
+line where the template will be split to surround a marked area. In this case
+(visual mode) the target is not needed and therefore removed (minus signs as
+mnemonic). In normal and insert mode the target is meaningful and will be
+therefore be present. The form <-...-> would result in a wrong indentation of
+the file close statement. The brace type will be handled as a block and the
+indentation will be correct.
+
+ == cpp.open-input-file ==
+ char *ifs_file_name = "<CURSOR>"; /* input file name */
+ ifstream ifs; /* create ifstream object */
+
+ ifs.open (ifs_file_name); /* open ifstream */
+ if (!ifs) {
+ cerr << "\nERROR : failed to open input file " << ifs_file_name << endl;
+ exit (EXIT_FAILURE);
+ }
+ <SPLIT>{-continue here-}
+ ifs.close (); /* close ifstream */
+
+Extra feature of Ctrl-j
+-----------------------
+If none of the above described targets is left Ctrl-j can be used to jump
+behind closing brackets, parenthesis, braces, or string terminators ('"`).
+This feature is limited to the current line. Ctrl-j does not jump behind the
+last character in a line.
+
+
+How to switch the mapping for Ctrl-j off
+----------------------------------------
+The original meaning of Ctrl-j is 'move [n] lines downward' (see |CTRL-j|).
+If you are accustomed to use the deafult and don't like these jump targets you
+can switch them off. Put the following line in the file .vimrc :
+
+ let g:C_Ctrl_j = 'off'
+
+The default value of g:C_Ctrl_j is 'on'. You do not have to change the
+template files. All jump targets will be removed before a template will be
+inserted.
+
+==============================================================================
+5.4 SWITCHING BETWEEN TEMPLATE SETS *csupport-templates-sets*
+==============================================================================
+
+This plugin comes with two sets of templates. These are suggestions. You may
+want to have additional sets for different projects or occasionally want to
+use doxygen style comments. To facilitate switching use the macro*|STYLE|*
+(|csupport-templates-files|) to define a unique name and the
+IF-ENDIF-construct to choose a particular set of files for example:
+
+ ...
+
+ *|STYLE|* = C
+ $
+ $ =============================================================
+ $ ========== FILE INCLUDES ====================================
+ $ =============================================================
+ $
+ == IF *|STYLE|* IS C ==
+ $
+ |includefile| = c.comments.template
+ |includefile| = c.cpp.template
+ |includefile| = c.idioms.template
+ |includefile| = c.preprocessor.template
+ |includefile| = c.statements.template
+ $
+ == ENDIF ==
+
+ ...
+
+The syntax is as follows:
+
+ == IF macro_name IS macro_value ==
+
+ == ENDIF ==
+
+Includes outside an IF-ENDIF construct are associated with the default style
+'default'. A style set does not have to a complete set of templates. For an
+incomplete set the other templates are taken from the default style.
+
+IF, IS, and ENDIF are keywords.
+
+HINT. Use these constructs to avoid overwriting your templates when updating
+csupport. Copy and rename the set of files you want to change and surround the
+includes with an appropriate IF-construct:
+
+ *|STYLE|* = MY_C
+ $
+ ...
+ $
+ == IF *|STYLE|* IS MY_C ==
+ |includefile| = my_c.comments.template
+ |includefile| = my_c.cpp.template
+ |includefile| = my_c.idioms.template
+ |includefile| = my_c.preprocessor.template
+ |includefile| = my_c.statements.template
+ == ENDIF ==
+
+Keep a copy of the main template file 'Templates' because this file will be
+overwritten if you do not update manually.
+
+==============================================================================
+5.5 BINDING A STYLE TO A FILE EXTENSION *csupport-templates-bind*
+==============================================================================
+
+You can bind the existing styles to one or more filename extensions. To do so
+assign a Dictionary to the global variable g:C_Styles in '~/.vimrc' :
+
+let g:C_Styles = { '*.c,*.h' : 'default', '*.cc,*.cpp,*.hh' : 'CPP' }
+
+A Dictionary is created with a comma separated list of entries in curly
+braces. Each entry has a key and a value, separated by a colon. Each key can
+only appear once. The keys are themselves a comma separated list of filename
+pattern. The values are existing styles defined in the template files.
+The given style will be set automatically when switching to a buffer or
+opening a new buffer with the associated filename pattern and supersedes the
+macro *|STYLE|* .
+
+==============================================================================
+6. C/C++ DICTIONARY *csupport-dictionary*
+==============================================================================
+
+The files
+
+ c-c++-keywords.list
+ k+r.list
+ stl_index.list
+
+are a part of this plugin and can be used (together with your own lists) as
+dictionaries for automatic word completion. This feature is enabled by
+default. The default word lists are
+
+ plugin_dir/c-support/wordlists/c-c++-keywords.list
+ plugin_dir/c-support/wordlists/k+r.list
+ plugin_dir/c-support/wordlists/stl_index.list
+
+The variable plugin_dir will automatically be set by the plugin to one of the
+following values:
+ $HOME.'/.vim/' for Linux/Unix
+ $VIM.'/vimfiles/' for Windows
+If you want to use an additional list MyC.list put the following lines into
+ ~/.vimrc :
+
+ let g:C_Dictionary_File = PLUGIN_DIR.'/c-support/wordlists/c-c++-keywords.list,'.
+ \ PLUGIN_DIR.'/c-support/wordlists/k+r.list,'.
+ \ PLUGIN_DIR.'/c-support/wordlists/stl_index.list,'.
+ \ PLUGIN_DIR.'/c-support/wordlists/MyC.list'
+
+When in file ~/.vimrc the name PLUGIN_DIR has to be replaced by $HOME or
+$VIM (see above). Whitespaces in the pathnames have to be escaped with a
+backslash.
+The right side is a comma separated list of files. Note the point at the end
+of the first line (string concatenation) and the backslash in front of the
+second line (continuation line).
+You can use Vim's dictionary feature CTRL-X, CTRL-K (and CTRL-P, CTRL-N).
+
+==============================================================================
+7. EXTENDING ctags *csupport-ctags*
+==============================================================================
+
+------------------------------------------------------------------------------
+7.1 make AND qmake *csupport-ctags-make*
+------------------------------------------------------------------------------
+
+The use of the Vim plugin taglist.vim (Author: Yegappan Lakshmanan) is highly
+recommended. It uses the program ctags which generates tag files for 3 dozen
+languages (Exuberant Ctags, Darren Hiebert, http://ctags.sourceforge.net).
+With the following extensions the list of targets in a makefile can be shown
+in the taglist window.
+
+ 1) Append the file customization.ctags to the file $HOME/.ctags .
+
+ 2) Add the following lines (from customization.vimrc) to $HOME/.vimrc :
+
+ "
+ "-------------------------------------------------------------------
+ " taglist.vim : toggle the taglist window
+ " taglist.vim : define the title texts for make
+ " taglist.vim : define the title texts for qmake
+ "-------------------------------------------------------------------
+ noremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+ inoremap <silent> <F11> <Esc><Esc>:Tlist<CR>
+
+ let tlist_make_settings = 'make;m:makros;t:targets;i:includes'
+ let tlist_qmake_settings = 'qmake;t:SystemVariables'
+
+ if has("autocmd")
+ " ---------- qmake : set file type for *.pro ----------
+ autocmd BufNewFile,BufRead *.pro set filetype=qmake
+ endif " has("autocmd")
+
+ 3) restart vim/gvim
+
+The two maps will toggle the taglist window (hotkey F11) in all editing modes.
+The two assignments define the headings for the (q)make sections in the
+taglist window. The autocmd set the file type 'qmake' for the filename
+extension 'pro' (ctags needs this).
+
+------------------------------------------------------------------------------
+7.2 TEMPLATES *csupport-ctags-templates*
+------------------------------------------------------------------------------
+
+If you frequently change the plugin templates and you are using the taglist
+plugin (section above) you may want to use this plugin for navigation. This is
+achieved in two steps. First add a new language definition to the file
+$HOME/.ctags :
+
+ --langdef=template
+ --langmap=template:.template,TEMPLATE
+ --regex-template=/^==\s+([^=]+)\s+==\s*(\s+==\s+([^=]+)\s+==)?/\1/t,template/
+
+Now add the following lines to the file $HOME/.vimrc :
+
+ let tlist_template_settings = 'template;t:template'
+ "---------------------------------------------------------------
+ " plugin templates : set filetype for *.template
+ "---------------------------------------------------------------
+ if has("autocmd")
+ autocmd BufNewFile,BufRead Templates set filetype=template
+ autocmd BufNewFile,BufRead *.template set filetype=template
+ endif " has("autocmd")
+
+The assignment defines the heading for the template section in the taglist
+window. The autocmds set the file type 'template' for the main template file
+'Templates' and the includefiles '*.template' (if any).
+
+==============================================================================
+8. FOLDING *csupport-folding*
+==============================================================================
+
+This plugin can be used together with folding.
+
+There are a few peculiarities when the cursor is on a closed fold before
+inserting a template:
+
+Normal mode
+-----------
+Inserting blocks of complete lines below and above a fold (e.g. frame
+comments) and inserting at the top of a buffer (e.g. file description) works
+as usual.
+Insertions which go to the end of a line (e.g. end-of-line comments) and
+insertions which go to the cursor position (e.g. 'sizeof()') will be suppressed
+and a warning will be shown.
+
+Visual mode
+-----------
+A range of lines containing closed folds can be surrounded by constructs which
+have a visual mode, e.g. a for-loop:
+
+ for ( ; ; ) {
+ +--- 4 lines: {------------------------------------------------------------
+ }
+
+See |folding| for more information on folding.
+
+==============================================================================
+9. Additional Mappings *csupport-ad-mappings*
+==============================================================================
+
+There are a few additional filetype specific key mappings defined in
+'~/.vim/ftplugin/c.vim'.
+
+Complete a classical C comment: '/*' => '/* | */' (modes: i,v).
+
+Complete a classical C multi-line comment (mode: i):
+ '/*<CR>' => /*
+ * |
+ */
+
+Open a block (modes: i,v):
+ '{<CR>' => {
+ |
+ }
+In visual mode the content of the new block will be indented.
+
+==============================================================================
+10. WINDOWS PARTICULARITIES *csupport-windows*
+==============================================================================
+
+The plugin should go into the directory structure below the local
+installation directory $HOME/.vim/ for LINUX/UNIX and $VIM/vimfiles/ for
+Windows.
+The values of the two variables can be found from inside Vim:
+ :echo $VIM
+or
+ :echo $HOME
+
+Configuration files:
+
+ LINUX/UNIX : $HOME/.vimrc and $HOME/.gvimrc
+ Windows : $VIM/_vimrc and $VIM/_gvimrc
+
+Compiler settings:
+
+It could be necessary to add further settings for your compiler. To compile
+C++-programs using a Dev-C++ installation (http://www.bloodshed.net) the
+following item in $VIM/_vimrc is needed (depends on the Dev-C++ install
+directory):
+
+ let g:C_CFlags = '-Wall -g -o0 -c -I c:\programs\dev-c++\include\g++'
+
+==============================================================================
+11. ADDITIONAL TIPS *csupport-tips*
+==============================================================================
+
+(1) gVim. Toggle 'insert mode' <--> 'normal mode' with the right mouse button
+ (see mapping in file costumization.gvimrc).
+
+(2) gVim. Use tear off menus.
+
+(3) Try 'Focus under mouse' as window behavior (No mouse click when the mouse
+ pointer is back from the menu item).
+
+(4) Use Emulate3Buttons "on" (X11) even for a 3-button mouse. Pressing left
+ and right button at the same time without moving your fingers is faster
+ then moving a finger to the middle button (often a wheel).
+
+==============================================================================
+12. TROUBLESHOOTING *csupport-troubleshooting*
+==============================================================================
+
+* I do not see any new main menu item.
+ - Was the archive extracted into the right directory?
+
+* How can I see what was loaded?
+ - Use ':scriptnames' from the Vim command line.
+
+* No main menu item.
+ - Loading of plugin files must be enabled. If not use
+ :filetype plugin on
+ This is the minimal content of the file '$HOME/.vimrc'. Create one if there
+ is none, or better use customization.vimrc.
+
+* Most key mappings do not work.
+ - They are defined in a filetype plugin in '$HOME/.vim/ftplugin/'. Use
+ ':filetype' to check if filetype plugins are enabled. If not, add the line
+ filetype plugin on
+ to the file '~/.vimrc'.
+
+* Some hotkeys do not work.
+ - The hotkeys might be in use by your graphical desktop environment. Under
+ KDE Ctrl-F9 is the hotkey which let you switch to the 9. desktop. The key
+ settings can usually be redefined.
+
+* Splint and/or CodeCheck menu item not visible.
+ - The program is not installed or not found (path not set) or not executable.
+
+==============================================================================
+13. RELEASE NOTES *csupport-release-notes*
+==============================================================================
+See file c-support/doc/ChangeLog .
+
+==============================================================================
+vim:tw=78:noet:ts=2:ft=help:norl: